#define M 3 #define N 3 int main() { /* singular matrix rank(a) == 1 */ array double a[M][N] = {1, 2, 3, 1, 2, 3, 2, 4, 6}; int r = rank(a); array double null[M][N-r]; nullspace(a, null); printf("rank(a) = %d\n", r); printf("null from nullspace(a, null) = \n%f\n", null); printf("transpose(null)*null = \n%f\n", transpose(null)*null); }
rank(a) = 1 null from nullspace(a, null) = -0.872872 0.408248 -0.218218 -0.816497 0.436436 0.408248 transpose(null)*null = 1.000000 -0.000000 -0.000000 1.000000