| #include <stdio.h> |
| #include <string.h> |
|
|
| #include "util/matrix.h" |
| #include "util/ckd_alloc.h" |
|
|
| const float32 foo[3][3] = { |
| {2, 1, 1}, |
| {1, 2, 1}, |
| {1, 1, 2} |
| }; |
| const float32 bar[3][3] = { |
| {2, 0.5, 1}, |
| {0.5, 2, 1}, |
| {1, 1, 2} |
| }; |
|
|
| int |
| main(int argc, char *argv[]) |
| { |
| float32 **a, **ainv, **ii; |
| int i, j; |
|
|
| (void)argc; |
| (void)argv; |
| a = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32)); |
| ainv = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32)); |
| ii = (float32 **)ckd_calloc_2d(3, 3, sizeof(float32)); |
|
|
| memcpy(a[0], foo, sizeof(float32) * 3 * 3); |
| printf("%d\n", invert(ainv, a, 3)); |
| |
| |
| |
| |
| |
| for (i = 0; i < 3; ++i) { |
| for (j = 0; j < 3; ++j) { |
| printf("%.2f ", ainv[i][j]); |
| } |
| printf("\n"); |
| } |
| |
| |
| |
| |
| |
| matrixmultiply(ii, ainv, a, 3); |
| for (i = 0; i < 3; ++i) { |
| for (j = 0; j < 3; ++j) { |
| printf("%.2f ", ii[i][j]); |
| } |
| printf("\n"); |
| } |
|
|
| memcpy(a[0], bar, sizeof(float32) * 3 * 3); |
| printf("%d\n", invert(ainv, a, 3)); |
| |
| |
| for (i = 0; i < 3; ++i) { |
| for (j = 0; j < 3; ++j) { |
| printf("%.2f ", ainv[i][j]); |
| } |
| printf("\n"); |
| } |
| |
| |
| |
| |
| |
| memset(ii[0], 0, sizeof(float32) * 3 * 3); |
| matrixmultiply(ii, ainv, a, 3); |
| for (i = 0; i < 3; ++i) { |
| for (j = 0; j < 3; ++j) { |
| printf("%.2f ", ii[i][j]); |
| } |
| printf("\n"); |
| } |
|
|
| |
| |
| |
| a[0][0] = 1.0; |
| printf("%d\n", invert(ainv, a, 3)); |
|
|
|
|
| memcpy(a[0], foo, sizeof(float32) * 3 * 3); |
| printf("%d\n", invert(a, a, 3)); |
| |
| |
| |
| |
| |
| for (i = 0; i < 3; ++i) { |
| for (j = 0; j < 3; ++j) { |
| printf("%.2f ", a[i][j]); |
| } |
| printf("\n"); |
| } |
|
|
| ckd_free_2d((void **)a); |
| ckd_free_2d((void **)ainv); |
| ckd_free_2d((void **)ii); |
|
|
| return 0; |
| } |
|
|