logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

PDL::GSL::LINALG - PDL interface to linear algebra routines in GSL

Description

       This is an interface to the linear algebra package present in the GNU Scientific Library. Functions are
       named as in GSL, but with the initial "gsl_linalg_" removed. They are provided in both real and complex
       double precision.

       Currently only LU decomposition interfaces here. Pull requests welcome!  #line 58 "LINALG.pm"

Functions

LU_decomp
         Signature: ([io,phys]A(n,m); indx [o,phys]ipiv(p); int [o,phys]signum())

       LU decomposition of the given (real or complex) matrix.

       LU_decomp ignores the bad-value flag of the input ndarrays.  It will set the bad-value flag of all output
       ndarrays if the flag is set for any of the input ndarrays.

   LU_solve
         Signature: ([phys]LU(n,m); indx [phys]ipiv(p); [phys]B(n); [o,phys]x(n))

       Solve "A x = B" using the LU and permutation from "LU_decomp", real or complex.

       LU_solve ignores the bad-value flag of the input ndarrays.  It will set the bad-value flag of all output
       ndarrays if the flag is set for any of the input ndarrays.

   LU_det
         Signature: ([phys]LU(n,m); int [phys]signum(); [o]det())

       Find the determinant from the LU decomp.

       LU_det ignores the bad-value flag of the input ndarrays.  It will set the bad-value flag of all output
       ndarrays if the flag is set for any of the input ndarrays.

   solve_tridiag
         Signature: ([phys]diag(n); [phys]superdiag(n); [phys]subdiag(n); [phys]B(n); [o,phys]x(n))

       Solve "A x = B" where A is a tridiagonal system. Real only, because GSL does not have a complex function.

       solve_tridiag ignores the bad-value flag of the input ndarrays.  It will set the bad-value flag of all
       output ndarrays if the flag is set for any of the input ndarrays.

Name

       PDL::GSL::LINALG - PDL interface to linear algebra routines in GSL

See Also

       PDL

       The GSL documentation for linear algebra is online at
       <https://www.gnu.org/software/gsl/doc/html/linalg.html>

perl v5.34.0                                       2022-02-08                                        LINALG(3pm)

Synopsis

         use PDL::LiteF;
         use PDL::MatrixOps; # for 'x'
         use PDL::GSL::LINALG;
         my $A = pdl [
           [0.18, 0.60, 0.57, 0.96],
           [0.41, 0.24, 0.99, 0.58],
           [0.14, 0.30, 0.97, 0.66],
           [0.51, 0.13, 0.19, 0.85],
         ];
         my $B = sequence(2,4); # column vectors
         LU_decomp(my $lu=$A->copy, my $p=null, my $signum=null);
         # transpose so first dim means is vector, higher dims thread
         LU_solve($lu, $p, $B->transpose, my $x=null);
         $x = $x->inplace->transpose; # now can be matrix-multiplied

See Also