nl_tokens: pinv_svd computes the pseudo - inverse using SVD
pl_tokens: function ( A ) { var z = numeric . svd ( A ) , foo = z . S [ 0 ] ; var U = z . U , S = z . S , V = z . V ; var m = A . length , n = A [ 0 ] . length , tol = Math . max ( m , n ) * numeric . epsilon * foo , M = S . length ; var Sinv = <mask> Array ( M ) ; for ( var i = M - 1 ; i !== - 1 ; i -- ) { if ( S [ i ] > tol ) Sinv [ i ] = 1 / S [ i ] ; else Sinv [ i ] = 0 ; } return numeric . dot ( numeric . dot ( V , numeric . diag ( Sinv ) ) , numeric . transpose ( U ) ) }