```{index} single: PDL::MatrixOps; Perl module ``` # PDL::MatrixOps ```{pperl-module-badges} PDL::MatrixOps ``` ## Synopsis use PDL; use PDL::MatrixOps; my $m = pdl [[1,2],[3,4]]; my $d = det($m); my $inv = inv($m); ## Functions ### Other Functions #### `identity` `identity($n_or_pdl)` — create an NxN identity matrix. If given a PDL, uses its first dim; if given a scalar, uses it directly. #### `trace` `trace($matrix)` — sum of diagonal elements of a square matrix #### `norm` `norm($matrix)` — Frobenius norm of a matrix #### `det` `det($matrix)` — determinant of a square matrix (via LU decomposition). Supports broadcasting: if input has dims [N,N,...], computes determinant for each NxN slice, returning a PDL of shape [...]. #### `inv` `inv($matrix [, {s=>1}])` — inverse of a square matrix (via Gauss-Jordan elimination). With {s=>1} option, returns undef instead of croaking on singular matrix. #### `lu_decomp` `lu_decomp($matrix)` — LU decomposition, returns (`$LU`, `$perm`, `$sign`) #### `lu_backsub` `lu_backsub($LU, $perm, $b)` — solve Ax=b from LU decomposition #### `simq` `simq($a, $b)` — solve simultaneous linear equations Ax=b #### `eigens_sym` `eigens_sym($matrix)` — eigenvalues and eigenvectors of a real symmetric matrix. Uses the Jacobi eigenvalue algorithm. Returns (`$eigenvectors`, `$eigenvalues`). #### `eigens` `eigens($matrix)` — eigenvalues and eigenvectors of a general real matrix. For symmetric matrices delegates to eigens_sym logic. For non-symmetric, uses QR algorithm (simplified). Returns (`$eigenvectors`, `$eigenvalues`). #### `stretcher` `stretcher($diag_pdl)` — create diagonal matrix(es) from a PDL. 1D input [a,b] → 2x2 diagonal. 2D input [N,M] → NxNxM broadcasted diagonals. #### `svd` `svd($matrix)` — Singular Value Decomposition. Returns (`$U`, `$S`, `$V`) where `$matrix` = `$U` * `diag($S)` * `$V`^T. Uses one-sided Jacobi SVD algorithm.