#N canvas 335 118 632 583 10; #X obj 0 0 doc_h cv/; #X obj 0 549 doc_f; #X text 88 75 just convert to grid; #X obj 55 157 cv/#Invert; #X obj 61 178 display; #X obj 22 75 # + (f #); #X msg 22 56 3 3 f # 1 2 0 3 0 4 5 6 0; #X obj 29 96 display; #X obj 3 366 doc_i 1; #X obj 3 428 doc_o 1; #X obj 3 529 doc_also; #X obj 103 529 cv/#SVD; #X obj 22 157 #t; #X obj 23 259 display; #X obj 14 396 doc_ii 0; #X obj 14 458 doc_oo 0; #X obj 3 326 doc_c; #X obj 97 396 doc_m i0 grid; #X obj 97 458 doc_m o0 grid; #X obj 22 239 #inner \, seed (f #); #X text 224 105 finds the float matrix that would cancel a given float matrix \, if both were to be put in [#inner] together.; #X obj 22 37 loadbang; #X text 232 396 dim(n \, n): a two-dimensional square grid. floats only (f \, d).; #X text 232 458 a same-sized grid \, which would give an identity matrix if you multiplied it with the input matrix using [#inner] (regardless of the choice of inlets : this is a case where A*B = B*A \, which is not usually the case with [#inner]).; #X connect 3 0 4 0; #X connect 3 0 19 1; #X connect 5 0 7 0; #X connect 5 0 12 0; #X connect 6 0 5 0; #X connect 10 1 11 0; #X connect 12 0 19 0; #X connect 12 1 3 0; #X connect 17 1 22 0; #X connect 18 1 23 0; #X connect 19 0 13 0; #X connect 21 0 6 0;