.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "LINALG 3pm" .TH LINALG 3pm 2024-04-25 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME PDL::GSL::LINALG \- PDL interface to linear algebra routines in GSL .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 10 \& use PDL::LiteF; \& use PDL::MatrixOps; # for \*(Aqx\*(Aq \& 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 broadcast \& LU_solve($lu, $p, $B\->transpose, my $x=null); \& $x = $x\->inplace\->transpose; # now can be matrix\-multiplied .Ve .SH DESCRIPTION .IX Header "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 \f(CW\*(C`gsl_linalg_\*(C'\fR removed. They are provided in both real and complex double precision. .PP Currently only LU decomposition interfaces here. Pull requests welcome! #line 60 "LINALG.pm" .SH FUNCTIONS .IX Header "FUNCTIONS" .SS LU_decomp .IX Subsection "LU_decomp" .Vb 1 \& Signature: ([io,phys]A(n,m); indx [o,phys]ipiv(p=CALC($PDL(A)\->ndims > 1 ? PDLMIN($PDL(A)\->dims[0], $PDL(A)\->dims[1]) : 1)); int [o,phys]signum()) .Ve .PP LU decomposition of the given (real or complex) matrix. .PP 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. .SS LU_solve .IX Subsection "LU_solve" .Vb 1 \& Signature: ([phys]LU(n,m); indx [phys]ipiv(p); [phys]B(n); [o,phys]x(n)) .Ve .PP Solve \f(CW\*(C`A x = B\*(C'\fR using the LU and permutation from "LU_decomp", real or complex. .PP 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. .SS LU_det .IX Subsection "LU_det" .Vb 1 \& Signature: ([phys]LU(n,m); int [phys]signum(); [o]det()) .Ve .PP Find the determinant from the LU decomp. .PP 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. .SS solve_tridiag .IX Subsection "solve_tridiag" .Vb 1 \& Signature: ([phys]diag(n); [phys]superdiag(n); [phys]subdiag(n); [phys]B(n); [o,phys]x(n)) .Ve .PP Solve \f(CW\*(C`A x = B\*(C'\fR where A is a tridiagonal system. Real only, because GSL does not have a complex function. .PP 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. .SH "SEE ALSO" .IX Header "SEE ALSO" PDL .PP The GSL documentation for linear algebra is online at