Math::...omplex(3pm)

🌸 Math::...omplex(3pm) β€” a.k.a. Math::GSL::MatrixComplex πŸ’…

okay so bestie, welcome to the User Contributed Perl Documentation corner of the universe. this is where we talk about Complex Matrices for GSL and honestly? it's giving ✨structured math✨. sit down, grab a strawberry πŸ“, let's go.


✨ NAME ✨

Math::GSL::MatrixComplex β€” Complex Matrices. yes girl, matrices. but complex. πŸ¦‹


✨ SYNOPSIS ✨

two ways to live your life: the OO interface, or the standard interface. pick your fighter πŸ‘‘

use Math::GSL::MatrixComplex qw/:all/;
my $matrix1 = Math::GSL::MatrixComplex->new(5,5);  # OO interface
my $matrix3 = $matrix1 + $matrix1;
my $matrix4 = $matrix1 - $matrix1;
if($matrix1 == $matrix4) ...
if($matrix1 != $matrix3) ...

my $matrix2 = gsl_matrix_complex_alloc(5,5);        # standard interface

like hello?? you can literally just + and - matrices and do == / != comparisons on them. obsessed. πŸ’–


✨ Objected Oriented Interface to GSL Math::GSL::MatrixComplex ✨

this is the main character section. every method, no skips. periodt.

new()

Creates a new MatrixComplex object of the given size.

my $matrix = Math::GSL::MatrixComplex->new(10,10);

raw()

Get the underlying GSL matrix object created by SWIG, useful for using gsl_matrix_* functions which do not have an OO counterpart.

my $matrix     = Math::GSL::MatrixComplex->new(3,3);
my $gsl_matrix = $matrix->raw;
my $stuff      = gsl_matrix_complex_get($gsl_matrix, 1, 2);

it's the backstage pass πŸŽ€ β€” when the OO wrapper doesn't cover something, you dip into the raw SWIG object.

rows()

Returns the number of rows in the matrix.

my $rows = $matrix->rows;

cols()

Returns the number of columns in the matrix.

my $cols = $matrix->cols;

as_vector()

Returns a 1xN or Nx1 matrix as a Math::GSL::VectorComplex object. Dies if called on a matrix that is not a single row or column. Useful for turning the output of col() or row() into a vector, like so:

my $vector1 = $matrix->col(0)->as_vector;
my $vector2 = $matrix->row(1)->as_vector;
⚠️ careful bestie: if your matrix is not a single row or a single column, this dies. it said what it said. πŸ’€

as_list()

Get the contents of a Math::GSL::Matrix object as a Perl list.

my $matrix = Math::GSL::MatrixComplex->new(3,3);
...
my @matrix = $matrix->as_list;

row()

Returns a row matrix of the row you enter.

my $matrix = Math::GSL::MatrixComplex->new(3,3);
...
my $matrix_row = $matrix->row(0);

col()

Returns a col matrix of the column you enter.

my $matrix = Math::GSL::MatrixComplex->new(3,3);
...
my $matrix_col = $matrix->col(0);

set_row()

Sets a the values of a row with the elements of an array.

my $matrix = Math::GSL::MatrixComplex->new(3,3);
$matrix->set_row(0, [8, 6, 2]);

You can also set multiple rows at once with chained calls:

my $matrix = Math::GSL::MatrixComplex->new(3,3);
$matrix->set_row(0, [8, 6, 2])
       ->set_row(1, [2, 4, 1]);
...

chained calls?? we love a method that hands you back the vibe so you can keep going. 🌈

set_col()

Sets a the values of a column with the elements of an array.

my $matrix = Math::GSL::MatrixComplex->new(3,3);
$matrix->set_col(0, [8, 6, 2]);

You can also set multiple columns at once with chained calls:

my $matrix = Math::GSL::MatrixComplex->new(3,3);
$matrix->set_col(0, [8, 6, 2])
       ->set_col(1, [2, 4, 1]);
...

is_square()

Returns true if a matrix is square, i.e. it has the same number of rows as columns, false otherwise.

det()

Returns the determinant of a matrix (computed by LU decomposition) or dies if called on a non-square matrix.

my $det = $matrix->det();
⚠️ non-square matrix? it dies. LU decomposition said no thank you. 😭

zero()

Set a matrix to the zero matrix.

$matrix->zero;

identity()

Set a matrix to the identity matrix, i.e. one on the diagonal and zero elsewhere.

my $I = $matrix->identity;

inverse()

Returns the inverse of a matrix or dies when called on a non-square matrix.

my $inverse = $matrix->inverse;
⚠️ again with the dying β€” non-square input gets the boot. only squares get inverted around here πŸ’…

is_hermitian()

Returns true if the matrix is hermitian, false otherwise

my $test = $matrix->is_hermitian;

eigenvalues()

okay so this one literally just... exists. no description was given. it's an icon, it's a mystery, it's eigenvalues(). πŸ™ˆ

lndet()

Returns the natural log of the absolute value of the determinant of a matrix (computed by LU decomposition) or dies if called on a non-square matrix.

my $lndet = $matrix->lndet();
⚠️ yes, non-square = dies. the LU decomposition clique is exclusive fr fr.

✨ DESCRIPTION ✨

so this section is a whole roster of the raw GSL functions that are in the building. lineup goes crazy:

  • gsl_matrix_complex_alloc
  • gsl_matrix_complex_calloc
  • gsl_matrix_complex_alloc_from_block
  • gsl_matrix_complex_alloc_from_matrix
  • gsl_vector_complex_alloc_row_from_matrix
  • gsl_vector_complex_alloc_col_from_matrix
  • gsl_matrix_complex_free
  • gsl_matrix_complex_submatrix
  • gsl_matrix_complex_row
  • gsl_matrix_complex_column
  • gsl_matrix_complex_diagonal
  • gsl_matrix_complex_subdiagonal
  • gsl_matrix_complex_superdiagonal
  • gsl_matrix_complex_subrow
  • gsl_matrix_complex_subcolumn
  • gsl_matrix_complex_view_array
  • gsl_matrix_complex_view_array_with_tda
  • gsl_matrix_complex_view_vector
  • gsl_matrix_complex_view_vector_with_tda
  • gsl_matrix_complex_const_submatrix
  • gsl_matrix_complex_const_row
  • gsl_matrix_complex_const_column
  • gsl_matrix_complex_const_diagonal
  • gsl_matrix_complex_const_subdiagonal
  • gsl_matrix_complex_const_superdiagonal
  • gsl_matrix_complex_const_subrow
  • gsl_matrix_complex_const_subcolumn
  • gsl_matrix_complex_const_view_array
  • gsl_matrix_complex_const_view_array_with_tda
  • gsl_matrix_complex_const_view_vector
  • gsl_matrix_complex_const_view_vector_with_tda
  • gsl_matrix_complex_get
  • gsl_matrix_complex_set
  • gsl_matrix_complex_ptr
  • gsl_matrix_complex_const_ptr
  • gsl_matrix_complex_set_zero
  • gsl_matrix_complex_set_identity
  • gsl_matrix_complex_set_all
  • gsl_matrix_complex_fread
  • gsl_matrix_complex_fwrite
  • gsl_matrix_complex_fscanf
  • gsl_matrix_complex_fprintf
  • gsl_matrix_complex_memcpy
  • gsl_matrix_complex_swap
  • gsl_matrix_complex_swap_rows
  • gsl_matrix_complex_swap_columns
  • gsl_matrix_complex_swap_rowcol
  • gsl_matrix_complex_transpose
  • gsl_matrix_complex_transpose_memcpy
  • gsl_matrix_complex_isnull
  • gsl_matrix_complex_ispos
  • gsl_matrix_complex_isneg
  • gsl_matrix_complex_add
  • gsl_matrix_complex_sub
  • gsl_matrix_complex_mul_elements
  • gsl_matrix_complex_div_elements
  • gsl_matrix_complex_scale
  • gsl_matrix_complex_add_constant
  • gsl_matrix_complex_add_diagonal
  • gsl_matrix_complex_get_row
  • gsl_matrix_complex_get_col
  • gsl_matrix_complex_set_row
  • gsl_matrix_complex_set_col

For more information on the functions, we refer you to the GSL official documentation <http://www.gnu.org/software/gsl/manual/html_node/>

🫢 that's the deep lore link right there. if you want the real tea on any of those functions, that's where you go. iykyk.

✨ AUTHORS ✨

Jonathan "Duke" Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>


Copyright (C) 2008-2024 Jonathan "Duke" Leto and Thierry Moisan

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


and that's the whole page bestie πŸŽ€ this one's running on perl v5.42.3, stamped 2026-08-20, and it's <rainbow>Math::...omplex(3pm)</rainbow> from the User Contributed Perl Documentation collection. slay, floss, and always check is_square() before you det(). πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from