#define M 3 #define N 3 int main() { /* singular matrix rank(a) == 2 */ array double a[M][N] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 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) = 2 null from nullspace(a, null) = -0.408248 0.816497 -0.408248 transpose(null)*null = 1.000000