_SaveMatrix
9/7/2007
Stores the extended floating-point register bank into a 4x4 matrix.
Syntax
float* _SaveMatrix(
float* matrix
);
Parameters
- matrix
[out] Pointer to an array of float values arranged such that the indices of the array are the [row][column] values of the 4x4 matrix.
Return Values
Pointer to the 4x4 matrix that has been stored.
Remarks
The following code example shows how to use _SaveMatrix.
void main()
{
int i,j;
float result[4][4];
float m1[4][4] = {1.0,1.0,1.0,1.0,
2.0,2.0,2.0,2.0,
3.0,3.0,3.0,3.0,
4.0,4.0,4.0,4.0};
float m2[4][4] = {2.0,2.0,2.0,2.0,
2.0,2.0,2.0,2.0,
2.0,2.0,2.0,2.0,
2.0,2.0,2.0,2.0};
_LoadMatrix((float *)m1); //Load m1 matrix into XD bank regs
_XDMultMatrix((float *)m2); //[m1]x[m2] —> result saved into XD bank regs
_SaveMatrix((float *)result); //Load XD bank regs into result buffer
//
// Print out the result
//
printf("Result of [m1]x[m2] = \n");
for (i = 0; i < 4; i++)
{
printf("| ");
for (j = 0; j < 4; j++)
printf("%8.4f ",result[i][j]);
printf(" |\n");
}
_XDMultMatrix((float *)m2); //[m1]x[m2]x[m2]->saved results into XD bank
_SaveMatrix((float *)result); //Load XD bank regs into result buffer
//
// Print out the result
//
printf("\nResult of [m1]x[m2]x[m2] = \n");
for (i = 0; i < 4; i++)
{
printf("| ");
for (j = 0; j < 4; j++)
printf("%8.4f ",result[i][j]);
printf(" |\n");
}
}
Output
Result of [m1]x[m2] =
| 8.0000 8.0000 8.0000 8.0000 |
| 16.0000 16.0000 16.0000 16.0000 |
| 24.0000 24.0000 24.0000 24.0000 |
| 32.0000 32.0000 32.0000 32.0000 |
Result of [m1]x[m2]x[m2] =
| 64.0000 64.0000 64.0000 64.0000 |
| 128.0000 128.0000 128.0000 128.0000 |
| 192.0000 192.0000 192.0000 192.0000 |
| 256.0000 256.0000 256.0000 256.0000 |
Requirements
Routine | Required header | Architecture |
---|---|---|
_SaveMatrix |
<shintr.h> |
SH-4 |