require '~system/packages/math/svd.ijs' NB. * mp_inv |: >: i. 3 3 NB. ----------------------------------- mp_inv=: 3 : 0 NB. moore penrose generalized inverse matrix 'U0 W0 V0'=: svd y if. 0= */ IND0=. | 1e_2 < W0 do. NB. small number -> 0 W0=. (0) ( (-.IND0) # i. # W0)} W0 end. W1=. % W0 NB. not %. if. 0=*/ IND1=. W1 e. _ do. NB. infty -> 0 W1=. (0) (IND1 # i. # W1)}W1 end. V0 +/ . * W1 * |: U0 )