# This file was automatically generated by SWIG (http://www.swig.org). # Version 1.3.37 # # Don't modify this file, modify the SWIG interface instead. package Math::GSL::Matrix; use base qw(Exporter); use base qw(DynaLoader); package Math::GSL::Matrixc; bootstrap Math::GSL::Matrix; package Math::GSL::Matrix; @EXPORT = qw(); # ---------- BASE METHODS ------------- package Math::GSL::Matrix; sub TIEHASH { my ($classname,$obj) = @_; return bless $obj, $classname; } sub CLEAR { } sub FIRSTKEY { } sub NEXTKEY { } sub FETCH { my ($self,$field) = @_; my $member_func = "swig_${field}_get"; $self->$member_func(); } sub STORE { my ($self,$field,$newval) = @_; my $member_func = "swig_${field}_set"; $self->$member_func($newval); } sub this { my $ptr = shift; return tied(%$ptr); } # ------- FUNCTION WRAPPERS -------- package Math::GSL::Matrix; *gsl_vector_alloc = *Math::GSL::Matrixc::gsl_vector_alloc; *gsl_vector_calloc = *Math::GSL::Matrixc::gsl_vector_calloc; *gsl_vector_alloc_from_block = *Math::GSL::Matrixc::gsl_vector_alloc_from_block; *gsl_vector_alloc_from_vector = *Math::GSL::Matrixc::gsl_vector_alloc_from_vector; *gsl_vector_free = *Math::GSL::Matrixc::gsl_vector_free; *gsl_vector_view_array = *Math::GSL::Matrixc::gsl_vector_view_array; *gsl_vector_view_array_with_stride = *Math::GSL::Matrixc::gsl_vector_view_array_with_stride; *gsl_vector_const_view_array = *Math::GSL::Matrixc::gsl_vector_const_view_array; *gsl_vector_const_view_array_with_stride = *Math::GSL::Matrixc::gsl_vector_const_view_array_with_stride; *gsl_vector_subvector = *Math::GSL::Matrixc::gsl_vector_subvector; *gsl_vector_subvector_with_stride = *Math::GSL::Matrixc::gsl_vector_subvector_with_stride; *gsl_vector_const_subvector = *Math::GSL::Matrixc::gsl_vector_const_subvector; *gsl_vector_const_subvector_with_stride = *Math::GSL::Matrixc::gsl_vector_const_subvector_with_stride; *gsl_vector_get = *Math::GSL::Matrixc::gsl_vector_get; *gsl_vector_set = *Math::GSL::Matrixc::gsl_vector_set; *gsl_vector_ptr = *Math::GSL::Matrixc::gsl_vector_ptr; *gsl_vector_const_ptr = *Math::GSL::Matrixc::gsl_vector_const_ptr; *gsl_vector_set_zero = *Math::GSL::Matrixc::gsl_vector_set_zero; *gsl_vector_set_all = *Math::GSL::Matrixc::gsl_vector_set_all; *gsl_vector_set_basis = *Math::GSL::Matrixc::gsl_vector_set_basis; *gsl_vector_fread = *Math::GSL::Matrixc::gsl_vector_fread; *gsl_vector_fwrite = *Math::GSL::Matrixc::gsl_vector_fwrite; *gsl_vector_fscanf = *Math::GSL::Matrixc::gsl_vector_fscanf; *gsl_vector_fprintf = *Math::GSL::Matrixc::gsl_vector_fprintf; *gsl_vector_memcpy = *Math::GSL::Matrixc::gsl_vector_memcpy; *gsl_vector_reverse = *Math::GSL::Matrixc::gsl_vector_reverse; *gsl_vector_swap = *Math::GSL::Matrixc::gsl_vector_swap; *gsl_vector_swap_elements = *Math::GSL::Matrixc::gsl_vector_swap_elements; *gsl_vector_max = *Math::GSL::Matrixc::gsl_vector_max; *gsl_vector_min = *Math::GSL::Matrixc::gsl_vector_min; *gsl_vector_minmax = *Math::GSL::Matrixc::gsl_vector_minmax; *gsl_vector_max_index = *Math::GSL::Matrixc::gsl_vector_max_index; *gsl_vector_min_index = *Math::GSL::Matrixc::gsl_vector_min_index; *gsl_vector_minmax_index = *Math::GSL::Matrixc::gsl_vector_minmax_index; *gsl_vector_add = *Math::GSL::Matrixc::gsl_vector_add; *gsl_vector_sub = *Math::GSL::Matrixc::gsl_vector_sub; *gsl_vector_mul = *Math::GSL::Matrixc::gsl_vector_mul; *gsl_vector_div = *Math::GSL::Matrixc::gsl_vector_div; *gsl_vector_scale = *Math::GSL::Matrixc::gsl_vector_scale; *gsl_vector_add_constant = *Math::GSL::Matrixc::gsl_vector_add_constant; *gsl_vector_isnull = *Math::GSL::Matrixc::gsl_vector_isnull; *gsl_vector_ispos = *Math::GSL::Matrixc::gsl_vector_ispos; *gsl_vector_isneg = *Math::GSL::Matrixc::gsl_vector_isneg; *gsl_vector_isnonneg = *Math::GSL::Matrixc::gsl_vector_isnonneg; *gsl_matrix_alloc = *Math::GSL::Matrixc::gsl_matrix_alloc; *gsl_matrix_calloc = *Math::GSL::Matrixc::gsl_matrix_calloc; *gsl_matrix_alloc_from_block = *Math::GSL::Matrixc::gsl_matrix_alloc_from_block; *gsl_matrix_alloc_from_matrix = *Math::GSL::Matrixc::gsl_matrix_alloc_from_matrix; *gsl_vector_alloc_row_from_matrix = *Math::GSL::Matrixc::gsl_vector_alloc_row_from_matrix; *gsl_vector_alloc_col_from_matrix = *Math::GSL::Matrixc::gsl_vector_alloc_col_from_matrix; *gsl_matrix_free = *Math::GSL::Matrixc::gsl_matrix_free; *gsl_matrix_submatrix = *Math::GSL::Matrixc::gsl_matrix_submatrix; *gsl_matrix_row = *Math::GSL::Matrixc::gsl_matrix_row; *gsl_matrix_column = *Math::GSL::Matrixc::gsl_matrix_column; *gsl_matrix_diagonal = *Math::GSL::Matrixc::gsl_matrix_diagonal; *gsl_matrix_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_subdiagonal; *gsl_matrix_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_superdiagonal; *gsl_matrix_subrow = *Math::GSL::Matrixc::gsl_matrix_subrow; *gsl_matrix_subcolumn = *Math::GSL::Matrixc::gsl_matrix_subcolumn; *gsl_matrix_view_array = *Math::GSL::Matrixc::gsl_matrix_view_array; *gsl_matrix_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_view_array_with_tda; *gsl_matrix_view_vector = *Math::GSL::Matrixc::gsl_matrix_view_vector; *gsl_matrix_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_view_vector_with_tda; *gsl_matrix_const_submatrix = *Math::GSL::Matrixc::gsl_matrix_const_submatrix; *gsl_matrix_const_row = *Math::GSL::Matrixc::gsl_matrix_const_row; *gsl_matrix_const_column = *Math::GSL::Matrixc::gsl_matrix_const_column; *gsl_matrix_const_diagonal = *Math::GSL::Matrixc::gsl_matrix_const_diagonal; *gsl_matrix_const_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_const_subdiagonal; *gsl_matrix_const_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_const_superdiagonal; *gsl_matrix_const_subrow = *Math::GSL::Matrixc::gsl_matrix_const_subrow; *gsl_matrix_const_subcolumn = *Math::GSL::Matrixc::gsl_matrix_const_subcolumn; *gsl_matrix_const_view_array = *Math::GSL::Matrixc::gsl_matrix_const_view_array; *gsl_matrix_const_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_const_view_array_with_tda; *gsl_matrix_const_view_vector = *Math::GSL::Matrixc::gsl_matrix_const_view_vector; *gsl_matrix_const_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_const_view_vector_with_tda; *gsl_matrix_get = *Math::GSL::Matrixc::gsl_matrix_get; *gsl_matrix_set = *Math::GSL::Matrixc::gsl_matrix_set; *gsl_matrix_ptr = *Math::GSL::Matrixc::gsl_matrix_ptr; *gsl_matrix_const_ptr = *Math::GSL::Matrixc::gsl_matrix_const_ptr; *gsl_matrix_set_zero = *Math::GSL::Matrixc::gsl_matrix_set_zero; *gsl_matrix_set_identity = *Math::GSL::Matrixc::gsl_matrix_set_identity; *gsl_matrix_set_all = *Math::GSL::Matrixc::gsl_matrix_set_all; *gsl_matrix_fread = *Math::GSL::Matrixc::gsl_matrix_fread; *gsl_matrix_fwrite = *Math::GSL::Matrixc::gsl_matrix_fwrite; *gsl_matrix_fscanf = *Math::GSL::Matrixc::gsl_matrix_fscanf; *gsl_matrix_fprintf = *Math::GSL::Matrixc::gsl_matrix_fprintf; *gsl_matrix_memcpy = *Math::GSL::Matrixc::gsl_matrix_memcpy; *gsl_matrix_swap = *Math::GSL::Matrixc::gsl_matrix_swap; *gsl_matrix_swap_rows = *Math::GSL::Matrixc::gsl_matrix_swap_rows; *gsl_matrix_swap_columns = *Math::GSL::Matrixc::gsl_matrix_swap_columns; *gsl_matrix_swap_rowcol = *Math::GSL::Matrixc::gsl_matrix_swap_rowcol; *gsl_matrix_transpose = *Math::GSL::Matrixc::gsl_matrix_transpose; *gsl_matrix_transpose_memcpy = *Math::GSL::Matrixc::gsl_matrix_transpose_memcpy; *gsl_matrix_max = *Math::GSL::Matrixc::gsl_matrix_max; *gsl_matrix_min = *Math::GSL::Matrixc::gsl_matrix_min; *gsl_matrix_minmax = *Math::GSL::Matrixc::gsl_matrix_minmax; *gsl_matrix_max_index = *Math::GSL::Matrixc::gsl_matrix_max_index; *gsl_matrix_min_index = *Math::GSL::Matrixc::gsl_matrix_min_index; *gsl_matrix_minmax_index = *Math::GSL::Matrixc::gsl_matrix_minmax_index; *gsl_matrix_isnull = *Math::GSL::Matrixc::gsl_matrix_isnull; *gsl_matrix_ispos = *Math::GSL::Matrixc::gsl_matrix_ispos; *gsl_matrix_isneg = *Math::GSL::Matrixc::gsl_matrix_isneg; *gsl_matrix_isnonneg = *Math::GSL::Matrixc::gsl_matrix_isnonneg; *gsl_matrix_add = *Math::GSL::Matrixc::gsl_matrix_add; *gsl_matrix_sub = *Math::GSL::Matrixc::gsl_matrix_sub; *gsl_matrix_mul_elements = *Math::GSL::Matrixc::gsl_matrix_mul_elements; *gsl_matrix_div_elements = *Math::GSL::Matrixc::gsl_matrix_div_elements; *gsl_matrix_scale = *Math::GSL::Matrixc::gsl_matrix_scale; *gsl_matrix_add_constant = *Math::GSL::Matrixc::gsl_matrix_add_constant; *gsl_matrix_add_diagonal = *Math::GSL::Matrixc::gsl_matrix_add_diagonal; *gsl_matrix_get_row = *Math::GSL::Matrixc::gsl_matrix_get_row; *gsl_matrix_get_col = *Math::GSL::Matrixc::gsl_matrix_get_col; *gsl_matrix_set_row = *Math::GSL::Matrixc::gsl_matrix_set_row; *gsl_matrix_set_col = *Math::GSL::Matrixc::gsl_matrix_set_col; *gsl_matrix_int_alloc = *Math::GSL::Matrixc::gsl_matrix_int_alloc; *gsl_matrix_int_calloc = *Math::GSL::Matrixc::gsl_matrix_int_calloc; *gsl_matrix_int_alloc_from_block = *Math::GSL::Matrixc::gsl_matrix_int_alloc_from_block; *gsl_matrix_int_alloc_from_matrix = *Math::GSL::Matrixc::gsl_matrix_int_alloc_from_matrix; *gsl_vector_int_alloc_row_from_matrix = *Math::GSL::Matrixc::gsl_vector_int_alloc_row_from_matrix; *gsl_vector_int_alloc_col_from_matrix = *Math::GSL::Matrixc::gsl_vector_int_alloc_col_from_matrix; *gsl_matrix_int_free = *Math::GSL::Matrixc::gsl_matrix_int_free; *gsl_matrix_int_submatrix = *Math::GSL::Matrixc::gsl_matrix_int_submatrix; *gsl_matrix_int_row = *Math::GSL::Matrixc::gsl_matrix_int_row; *gsl_matrix_int_column = *Math::GSL::Matrixc::gsl_matrix_int_column; *gsl_matrix_int_diagonal = *Math::GSL::Matrixc::gsl_matrix_int_diagonal; *gsl_matrix_int_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_int_subdiagonal; *gsl_matrix_int_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_int_superdiagonal; *gsl_matrix_int_subrow = *Math::GSL::Matrixc::gsl_matrix_int_subrow; *gsl_matrix_int_subcolumn = *Math::GSL::Matrixc::gsl_matrix_int_subcolumn; *gsl_matrix_int_view_array = *Math::GSL::Matrixc::gsl_matrix_int_view_array; *gsl_matrix_int_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_int_view_array_with_tda; *gsl_matrix_int_view_vector = *Math::GSL::Matrixc::gsl_matrix_int_view_vector; *gsl_matrix_int_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_int_view_vector_with_tda; *gsl_matrix_int_const_submatrix = *Math::GSL::Matrixc::gsl_matrix_int_const_submatrix; *gsl_matrix_int_const_row = *Math::GSL::Matrixc::gsl_matrix_int_const_row; *gsl_matrix_int_const_column = *Math::GSL::Matrixc::gsl_matrix_int_const_column; *gsl_matrix_int_const_diagonal = *Math::GSL::Matrixc::gsl_matrix_int_const_diagonal; *gsl_matrix_int_const_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_int_const_subdiagonal; *gsl_matrix_int_const_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_int_const_superdiagonal; *gsl_matrix_int_const_subrow = *Math::GSL::Matrixc::gsl_matrix_int_const_subrow; *gsl_matrix_int_const_subcolumn = *Math::GSL::Matrixc::gsl_matrix_int_const_subcolumn; *gsl_matrix_int_const_view_array = *Math::GSL::Matrixc::gsl_matrix_int_const_view_array; *gsl_matrix_int_const_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_int_const_view_array_with_tda; *gsl_matrix_int_const_view_vector = *Math::GSL::Matrixc::gsl_matrix_int_const_view_vector; *gsl_matrix_int_const_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_int_const_view_vector_with_tda; *gsl_matrix_int_get = *Math::GSL::Matrixc::gsl_matrix_int_get; *gsl_matrix_int_set = *Math::GSL::Matrixc::gsl_matrix_int_set; *gsl_matrix_int_ptr = *Math::GSL::Matrixc::gsl_matrix_int_ptr; *gsl_matrix_int_const_ptr = *Math::GSL::Matrixc::gsl_matrix_int_const_ptr; *gsl_matrix_int_set_zero = *Math::GSL::Matrixc::gsl_matrix_int_set_zero; *gsl_matrix_int_set_identity = *Math::GSL::Matrixc::gsl_matrix_int_set_identity; *gsl_matrix_int_set_all = *Math::GSL::Matrixc::gsl_matrix_int_set_all; *gsl_matrix_int_fread = *Math::GSL::Matrixc::gsl_matrix_int_fread; *gsl_matrix_int_fwrite = *Math::GSL::Matrixc::gsl_matrix_int_fwrite; *gsl_matrix_int_fscanf = *Math::GSL::Matrixc::gsl_matrix_int_fscanf; *gsl_matrix_int_fprintf = *Math::GSL::Matrixc::gsl_matrix_int_fprintf; *gsl_matrix_int_memcpy = *Math::GSL::Matrixc::gsl_matrix_int_memcpy; *gsl_matrix_int_swap = *Math::GSL::Matrixc::gsl_matrix_int_swap; *gsl_matrix_int_swap_rows = *Math::GSL::Matrixc::gsl_matrix_int_swap_rows; *gsl_matrix_int_swap_columns = *Math::GSL::Matrixc::gsl_matrix_int_swap_columns; *gsl_matrix_int_swap_rowcol = *Math::GSL::Matrixc::gsl_matrix_int_swap_rowcol; *gsl_matrix_int_transpose = *Math::GSL::Matrixc::gsl_matrix_int_transpose; *gsl_matrix_int_transpose_memcpy = *Math::GSL::Matrixc::gsl_matrix_int_transpose_memcpy; *gsl_matrix_int_max = *Math::GSL::Matrixc::gsl_matrix_int_max; *gsl_matrix_int_min = *Math::GSL::Matrixc::gsl_matrix_int_min; *gsl_matrix_int_minmax = *Math::GSL::Matrixc::gsl_matrix_int_minmax; *gsl_matrix_int_max_index = *Math::GSL::Matrixc::gsl_matrix_int_max_index; *gsl_matrix_int_min_index = *Math::GSL::Matrixc::gsl_matrix_int_min_index; *gsl_matrix_int_minmax_index = *Math::GSL::Matrixc::gsl_matrix_int_minmax_index; *gsl_matrix_int_isnull = *Math::GSL::Matrixc::gsl_matrix_int_isnull; *gsl_matrix_int_ispos = *Math::GSL::Matrixc::gsl_matrix_int_ispos; *gsl_matrix_int_isneg = *Math::GSL::Matrixc::gsl_matrix_int_isneg; *gsl_matrix_int_isnonneg = *Math::GSL::Matrixc::gsl_matrix_int_isnonneg; *gsl_matrix_int_add = *Math::GSL::Matrixc::gsl_matrix_int_add; *gsl_matrix_int_sub = *Math::GSL::Matrixc::gsl_matrix_int_sub; *gsl_matrix_int_mul_elements = *Math::GSL::Matrixc::gsl_matrix_int_mul_elements; *gsl_matrix_int_div_elements = *Math::GSL::Matrixc::gsl_matrix_int_div_elements; *gsl_matrix_int_scale = *Math::GSL::Matrixc::gsl_matrix_int_scale; *gsl_matrix_int_add_constant = *Math::GSL::Matrixc::gsl_matrix_int_add_constant; *gsl_matrix_int_add_diagonal = *Math::GSL::Matrixc::gsl_matrix_int_add_diagonal; *gsl_matrix_int_get_row = *Math::GSL::Matrixc::gsl_matrix_int_get_row; *gsl_matrix_int_get_col = *Math::GSL::Matrixc::gsl_matrix_int_get_col; *gsl_matrix_int_set_row = *Math::GSL::Matrixc::gsl_matrix_int_set_row; *gsl_matrix_int_set_col = *Math::GSL::Matrixc::gsl_matrix_int_set_col; *gsl_matrix_complex_alloc = *Math::GSL::Matrixc::gsl_matrix_complex_alloc; *gsl_matrix_complex_calloc = *Math::GSL::Matrixc::gsl_matrix_complex_calloc; *gsl_matrix_complex_alloc_from_block = *Math::GSL::Matrixc::gsl_matrix_complex_alloc_from_block; *gsl_matrix_complex_alloc_from_matrix = *Math::GSL::Matrixc::gsl_matrix_complex_alloc_from_matrix; *gsl_vector_complex_alloc_row_from_matrix = *Math::GSL::Matrixc::gsl_vector_complex_alloc_row_from_matrix; *gsl_vector_complex_alloc_col_from_matrix = *Math::GSL::Matrixc::gsl_vector_complex_alloc_col_from_matrix; *gsl_matrix_complex_free = *Math::GSL::Matrixc::gsl_matrix_complex_free; *gsl_matrix_complex_submatrix = *Math::GSL::Matrixc::gsl_matrix_complex_submatrix; *gsl_matrix_complex_row = *Math::GSL::Matrixc::gsl_matrix_complex_row; *gsl_matrix_complex_column = *Math::GSL::Matrixc::gsl_matrix_complex_column; *gsl_matrix_complex_diagonal = *Math::GSL::Matrixc::gsl_matrix_complex_diagonal; *gsl_matrix_complex_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_complex_subdiagonal; *gsl_matrix_complex_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_complex_superdiagonal; *gsl_matrix_complex_subrow = *Math::GSL::Matrixc::gsl_matrix_complex_subrow; *gsl_matrix_complex_subcolumn = *Math::GSL::Matrixc::gsl_matrix_complex_subcolumn; *gsl_matrix_complex_view_array = *Math::GSL::Matrixc::gsl_matrix_complex_view_array; *gsl_matrix_complex_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_complex_view_array_with_tda; *gsl_matrix_complex_view_vector = *Math::GSL::Matrixc::gsl_matrix_complex_view_vector; *gsl_matrix_complex_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_complex_view_vector_with_tda; *gsl_matrix_complex_const_submatrix = *Math::GSL::Matrixc::gsl_matrix_complex_const_submatrix; *gsl_matrix_complex_const_row = *Math::GSL::Matrixc::gsl_matrix_complex_const_row; *gsl_matrix_complex_const_column = *Math::GSL::Matrixc::gsl_matrix_complex_const_column; *gsl_matrix_complex_const_diagonal = *Math::GSL::Matrixc::gsl_matrix_complex_const_diagonal; *gsl_matrix_complex_const_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_complex_const_subdiagonal; *gsl_matrix_complex_const_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_complex_const_superdiagonal; *gsl_matrix_complex_const_subrow = *Math::GSL::Matrixc::gsl_matrix_complex_const_subrow; *gsl_matrix_complex_const_subcolumn = *Math::GSL::Matrixc::gsl_matrix_complex_const_subcolumn; *gsl_matrix_complex_const_view_array = *Math::GSL::Matrixc::gsl_matrix_complex_const_view_array; *gsl_matrix_complex_const_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_complex_const_view_array_with_tda; *gsl_matrix_complex_const_view_vector = *Math::GSL::Matrixc::gsl_matrix_complex_const_view_vector; *gsl_matrix_complex_const_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_complex_const_view_vector_with_tda; *gsl_matrix_complex_get = *Math::GSL::Matrixc::gsl_matrix_complex_get; *gsl_matrix_complex_set = *Math::GSL::Matrixc::gsl_matrix_complex_set; *gsl_matrix_complex_ptr = *Math::GSL::Matrixc::gsl_matrix_complex_ptr; *gsl_matrix_complex_const_ptr = *Math::GSL::Matrixc::gsl_matrix_complex_const_ptr; *gsl_matrix_complex_set_zero = *Math::GSL::Matrixc::gsl_matrix_complex_set_zero; *gsl_matrix_complex_set_identity = *Math::GSL::Matrixc::gsl_matrix_complex_set_identity; *gsl_matrix_complex_set_all = *Math::GSL::Matrixc::gsl_matrix_complex_set_all; *gsl_matrix_complex_fread = *Math::GSL::Matrixc::gsl_matrix_complex_fread; *gsl_matrix_complex_fwrite = *Math::GSL::Matrixc::gsl_matrix_complex_fwrite; *gsl_matrix_complex_fscanf = *Math::GSL::Matrixc::gsl_matrix_complex_fscanf; *gsl_matrix_complex_fprintf = *Math::GSL::Matrixc::gsl_matrix_complex_fprintf; *gsl_matrix_complex_memcpy = *Math::GSL::Matrixc::gsl_matrix_complex_memcpy; *gsl_matrix_complex_swap = *Math::GSL::Matrixc::gsl_matrix_complex_swap; *gsl_matrix_complex_swap_rows = *Math::GSL::Matrixc::gsl_matrix_complex_swap_rows; *gsl_matrix_complex_swap_columns = *Math::GSL::Matrixc::gsl_matrix_complex_swap_columns; *gsl_matrix_complex_swap_rowcol = *Math::GSL::Matrixc::gsl_matrix_complex_swap_rowcol; *gsl_matrix_complex_transpose = *Math::GSL::Matrixc::gsl_matrix_complex_transpose; *gsl_matrix_complex_transpose_memcpy = *Math::GSL::Matrixc::gsl_matrix_complex_transpose_memcpy; *gsl_matrix_complex_isnull = *Math::GSL::Matrixc::gsl_matrix_complex_isnull; *gsl_matrix_complex_ispos = *Math::GSL::Matrixc::gsl_matrix_complex_ispos; *gsl_matrix_complex_isneg = *Math::GSL::Matrixc::gsl_matrix_complex_isneg; *gsl_matrix_complex_add = *Math::GSL::Matrixc::gsl_matrix_complex_add; *gsl_matrix_complex_sub = *Math::GSL::Matrixc::gsl_matrix_complex_sub; *gsl_matrix_complex_mul_elements = *Math::GSL::Matrixc::gsl_matrix_complex_mul_elements; *gsl_matrix_complex_div_elements = *Math::GSL::Matrixc::gsl_matrix_complex_div_elements; *gsl_matrix_complex_scale = *Math::GSL::Matrixc::gsl_matrix_complex_scale; *gsl_matrix_complex_add_constant = *Math::GSL::Matrixc::gsl_matrix_complex_add_constant; *gsl_matrix_complex_add_diagonal = *Math::GSL::Matrixc::gsl_matrix_complex_add_diagonal; *gsl_matrix_complex_get_row = *Math::GSL::Matrixc::gsl_matrix_complex_get_row; *gsl_matrix_complex_get_col = *Math::GSL::Matrixc::gsl_matrix_complex_get_col; *gsl_matrix_complex_set_row = *Math::GSL::Matrixc::gsl_matrix_complex_set_row; *gsl_matrix_complex_set_col = *Math::GSL::Matrixc::gsl_matrix_complex_set_col; *gsl_matrix_char_alloc = *Math::GSL::Matrixc::gsl_matrix_char_alloc; *gsl_matrix_char_calloc = *Math::GSL::Matrixc::gsl_matrix_char_calloc; *gsl_matrix_char_alloc_from_block = *Math::GSL::Matrixc::gsl_matrix_char_alloc_from_block; *gsl_matrix_char_alloc_from_matrix = *Math::GSL::Matrixc::gsl_matrix_char_alloc_from_matrix; *gsl_vector_char_alloc_row_from_matrix = *Math::GSL::Matrixc::gsl_vector_char_alloc_row_from_matrix; *gsl_vector_char_alloc_col_from_matrix = *Math::GSL::Matrixc::gsl_vector_char_alloc_col_from_matrix; *gsl_matrix_char_free = *Math::GSL::Matrixc::gsl_matrix_char_free; *gsl_matrix_char_submatrix = *Math::GSL::Matrixc::gsl_matrix_char_submatrix; *gsl_matrix_char_row = *Math::GSL::Matrixc::gsl_matrix_char_row; *gsl_matrix_char_column = *Math::GSL::Matrixc::gsl_matrix_char_column; *gsl_matrix_char_diagonal = *Math::GSL::Matrixc::gsl_matrix_char_diagonal; *gsl_matrix_char_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_char_subdiagonal; *gsl_matrix_char_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_char_superdiagonal; *gsl_matrix_char_subrow = *Math::GSL::Matrixc::gsl_matrix_char_subrow; *gsl_matrix_char_subcolumn = *Math::GSL::Matrixc::gsl_matrix_char_subcolumn; *gsl_matrix_char_view_array = *Math::GSL::Matrixc::gsl_matrix_char_view_array; *gsl_matrix_char_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_char_view_array_with_tda; *gsl_matrix_char_view_vector = *Math::GSL::Matrixc::gsl_matrix_char_view_vector; *gsl_matrix_char_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_char_view_vector_with_tda; *gsl_matrix_char_const_submatrix = *Math::GSL::Matrixc::gsl_matrix_char_const_submatrix; *gsl_matrix_char_const_row = *Math::GSL::Matrixc::gsl_matrix_char_const_row; *gsl_matrix_char_const_column = *Math::GSL::Matrixc::gsl_matrix_char_const_column; *gsl_matrix_char_const_diagonal = *Math::GSL::Matrixc::gsl_matrix_char_const_diagonal; *gsl_matrix_char_const_subdiagonal = *Math::GSL::Matrixc::gsl_matrix_char_const_subdiagonal; *gsl_matrix_char_const_superdiagonal = *Math::GSL::Matrixc::gsl_matrix_char_const_superdiagonal; *gsl_matrix_char_const_subrow = *Math::GSL::Matrixc::gsl_matrix_char_const_subrow; *gsl_matrix_char_const_subcolumn = *Math::GSL::Matrixc::gsl_matrix_char_const_subcolumn; *gsl_matrix_char_const_view_array = *Math::GSL::Matrixc::gsl_matrix_char_const_view_array; *gsl_matrix_char_const_view_array_with_tda = *Math::GSL::Matrixc::gsl_matrix_char_const_view_array_with_tda; *gsl_matrix_char_const_view_vector = *Math::GSL::Matrixc::gsl_matrix_char_const_view_vector; *gsl_matrix_char_const_view_vector_with_tda = *Math::GSL::Matrixc::gsl_matrix_char_const_view_vector_with_tda; *gsl_matrix_char_get = *Math::GSL::Matrixc::gsl_matrix_char_get; *gsl_matrix_char_set = *Math::GSL::Matrixc::gsl_matrix_char_set; *gsl_matrix_char_ptr = *Math::GSL::Matrixc::gsl_matrix_char_ptr; *gsl_matrix_char_const_ptr = *Math::GSL::Matrixc::gsl_matrix_char_const_ptr; *gsl_matrix_char_set_zero = *Math::GSL::Matrixc::gsl_matrix_char_set_zero; *gsl_matrix_char_set_identity = *Math::GSL::Matrixc::gsl_matrix_char_set_identity; *gsl_matrix_char_set_all = *Math::GSL::Matrixc::gsl_matrix_char_set_all; *gsl_matrix_char_fread = *Math::GSL::Matrixc::gsl_matrix_char_fread; *gsl_matrix_char_fwrite = *Math::GSL::Matrixc::gsl_matrix_char_fwrite; *gsl_matrix_char_fscanf = *Math::GSL::Matrixc::gsl_matrix_char_fscanf; *gsl_matrix_char_fprintf = *Math::GSL::Matrixc::gsl_matrix_char_fprintf; *gsl_matrix_char_memcpy = *Math::GSL::Matrixc::gsl_matrix_char_memcpy; *gsl_matrix_char_swap = *Math::GSL::Matrixc::gsl_matrix_char_swap; *gsl_matrix_char_swap_rows = *Math::GSL::Matrixc::gsl_matrix_char_swap_rows; *gsl_matrix_char_swap_columns = *Math::GSL::Matrixc::gsl_matrix_char_swap_columns; *gsl_matrix_char_swap_rowcol = *Math::GSL::Matrixc::gsl_matrix_char_swap_rowcol; *gsl_matrix_char_transpose = *Math::GSL::Matrixc::gsl_matrix_char_transpose; *gsl_matrix_char_transpose_memcpy = *Math::GSL::Matrixc::gsl_matrix_char_transpose_memcpy; *gsl_matrix_char_max = *Math::GSL::Matrixc::gsl_matrix_char_max; *gsl_matrix_char_min = *Math::GSL::Matrixc::gsl_matrix_char_min; *gsl_matrix_char_minmax = *Math::GSL::Matrixc::gsl_matrix_char_minmax; *gsl_matrix_char_max_index = *Math::GSL::Matrixc::gsl_matrix_char_max_index; *gsl_matrix_char_min_index = *Math::GSL::Matrixc::gsl_matrix_char_min_index; *gsl_matrix_char_minmax_index = *Math::GSL::Matrixc::gsl_matrix_char_minmax_index; *gsl_matrix_char_isnull = *Math::GSL::Matrixc::gsl_matrix_char_isnull; *gsl_matrix_char_ispos = *Math::GSL::Matrixc::gsl_matrix_char_ispos; *gsl_matrix_char_isneg = *Math::GSL::Matrixc::gsl_matrix_char_isneg; *gsl_matrix_char_isnonneg = *Math::GSL::Matrixc::gsl_matrix_char_isnonneg; *gsl_matrix_char_add = *Math::GSL::Matrixc::gsl_matrix_char_add; *gsl_matrix_char_sub = *Math::GSL::Matrixc::gsl_matrix_char_sub; *gsl_matrix_char_mul_elements = *Math::GSL::Matrixc::gsl_matrix_char_mul_elements; *gsl_matrix_char_div_elements = *Math::GSL::Matrixc::gsl_matrix_char_div_elements; *gsl_matrix_char_scale = *Math::GSL::Matrixc::gsl_matrix_char_scale; *gsl_matrix_char_add_constant = *Math::GSL::Matrixc::gsl_matrix_char_add_constant; *gsl_matrix_char_add_diagonal = *Math::GSL::Matrixc::gsl_matrix_char_add_diagonal; *gsl_matrix_char_get_row = *Math::GSL::Matrixc::gsl_matrix_char_get_row; *gsl_matrix_char_get_col = *Math::GSL::Matrixc::gsl_matrix_char_get_col; *gsl_matrix_char_set_row = *Math::GSL::Matrixc::gsl_matrix_char_set_row; *gsl_matrix_char_set_col = *Math::GSL::Matrixc::gsl_matrix_char_set_col; ############# Class : Math::GSL::Matrix::gsl_complex_long_double ############## package Math::GSL::Matrix::gsl_complex_long_double; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_dat_get = *Math::GSL::Matrixc::gsl_complex_long_double_dat_get; *swig_dat_set = *Math::GSL::Matrixc::gsl_complex_long_double_dat_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_complex_long_double(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_complex_long_double($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_complex ############## package Math::GSL::Matrix::gsl_complex; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_dat_get = *Math::GSL::Matrixc::gsl_complex_dat_get; *swig_dat_set = *Math::GSL::Matrixc::gsl_complex_dat_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_complex(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_complex($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_complex_float ############## package Math::GSL::Matrix::gsl_complex_float; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_dat_get = *Math::GSL::Matrixc::gsl_complex_float_dat_get; *swig_dat_set = *Math::GSL::Matrixc::gsl_complex_float_dat_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_complex_float(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_complex_float($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_vector ############## package Math::GSL::Matrix::gsl_vector; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_size_get = *Math::GSL::Matrixc::gsl_vector_size_get; *swig_size_set = *Math::GSL::Matrixc::gsl_vector_size_set; *swig_stride_get = *Math::GSL::Matrixc::gsl_vector_stride_get; *swig_stride_set = *Math::GSL::Matrixc::gsl_vector_stride_set; *swig_data_get = *Math::GSL::Matrixc::gsl_vector_data_get; *swig_data_set = *Math::GSL::Matrixc::gsl_vector_data_set; *swig_block_get = *Math::GSL::Matrixc::gsl_vector_block_get; *swig_block_set = *Math::GSL::Matrixc::gsl_vector_block_set; *swig_owner_get = *Math::GSL::Matrixc::gsl_vector_owner_get; *swig_owner_set = *Math::GSL::Matrixc::gsl_vector_owner_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_vector(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_vector($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_vector_view ############## package Math::GSL::Matrix::_gsl_vector_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_vector_get = *Math::GSL::Matrixc::_gsl_vector_view_vector_get; *swig_vector_set = *Math::GSL::Matrixc::_gsl_vector_view_vector_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_vector_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_vector_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_vector_const_view ############## package Math::GSL::Matrix::_gsl_vector_const_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_vector_get = *Math::GSL::Matrixc::_gsl_vector_const_view_vector_get; *swig_vector_set = *Math::GSL::Matrixc::_gsl_vector_const_view_vector_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_vector_const_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_vector_const_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_matrix ############## package Math::GSL::Matrix::gsl_matrix; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_size1_get = *Math::GSL::Matrixc::gsl_matrix_size1_get; *swig_size1_set = *Math::GSL::Matrixc::gsl_matrix_size1_set; *swig_size2_get = *Math::GSL::Matrixc::gsl_matrix_size2_get; *swig_size2_set = *Math::GSL::Matrixc::gsl_matrix_size2_set; *swig_tda_get = *Math::GSL::Matrixc::gsl_matrix_tda_get; *swig_tda_set = *Math::GSL::Matrixc::gsl_matrix_tda_set; *swig_data_get = *Math::GSL::Matrixc::gsl_matrix_data_get; *swig_data_set = *Math::GSL::Matrixc::gsl_matrix_data_set; *swig_block_get = *Math::GSL::Matrixc::gsl_matrix_block_get; *swig_block_set = *Math::GSL::Matrixc::gsl_matrix_block_set; *swig_owner_get = *Math::GSL::Matrixc::gsl_matrix_owner_get; *swig_owner_set = *Math::GSL::Matrixc::gsl_matrix_owner_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_matrix(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_matrix($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_view ############## package Math::GSL::Matrix::_gsl_matrix_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_const_view ############## package Math::GSL::Matrix::_gsl_matrix_const_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_const_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_const_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_const_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_const_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_matrix_int ############## package Math::GSL::Matrix::gsl_matrix_int; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_size1_get = *Math::GSL::Matrixc::gsl_matrix_int_size1_get; *swig_size1_set = *Math::GSL::Matrixc::gsl_matrix_int_size1_set; *swig_size2_get = *Math::GSL::Matrixc::gsl_matrix_int_size2_get; *swig_size2_set = *Math::GSL::Matrixc::gsl_matrix_int_size2_set; *swig_tda_get = *Math::GSL::Matrixc::gsl_matrix_int_tda_get; *swig_tda_set = *Math::GSL::Matrixc::gsl_matrix_int_tda_set; *swig_data_get = *Math::GSL::Matrixc::gsl_matrix_int_data_get; *swig_data_set = *Math::GSL::Matrixc::gsl_matrix_int_data_set; *swig_block_get = *Math::GSL::Matrixc::gsl_matrix_int_block_get; *swig_block_set = *Math::GSL::Matrixc::gsl_matrix_int_block_set; *swig_owner_get = *Math::GSL::Matrixc::gsl_matrix_int_owner_get; *swig_owner_set = *Math::GSL::Matrixc::gsl_matrix_int_owner_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_matrix_int(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_matrix_int($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_int_view ############## package Math::GSL::Matrix::_gsl_matrix_int_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_int_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_int_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_int_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_int_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_int_const_view ############## package Math::GSL::Matrix::_gsl_matrix_int_const_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_int_const_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_int_const_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_int_const_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_int_const_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_matrix_complex ############## package Math::GSL::Matrix::gsl_matrix_complex; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_size1_get = *Math::GSL::Matrixc::gsl_matrix_complex_size1_get; *swig_size1_set = *Math::GSL::Matrixc::gsl_matrix_complex_size1_set; *swig_size2_get = *Math::GSL::Matrixc::gsl_matrix_complex_size2_get; *swig_size2_set = *Math::GSL::Matrixc::gsl_matrix_complex_size2_set; *swig_tda_get = *Math::GSL::Matrixc::gsl_matrix_complex_tda_get; *swig_tda_set = *Math::GSL::Matrixc::gsl_matrix_complex_tda_set; *swig_data_get = *Math::GSL::Matrixc::gsl_matrix_complex_data_get; *swig_data_set = *Math::GSL::Matrixc::gsl_matrix_complex_data_set; *swig_block_get = *Math::GSL::Matrixc::gsl_matrix_complex_block_get; *swig_block_set = *Math::GSL::Matrixc::gsl_matrix_complex_block_set; *swig_owner_get = *Math::GSL::Matrixc::gsl_matrix_complex_owner_get; *swig_owner_set = *Math::GSL::Matrixc::gsl_matrix_complex_owner_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_matrix_complex(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_matrix_complex($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_complex_view ############## package Math::GSL::Matrix::_gsl_matrix_complex_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_complex_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_complex_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_complex_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_complex_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_complex_const_view ############## package Math::GSL::Matrix::_gsl_matrix_complex_const_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_complex_const_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_complex_const_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_complex_const_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_complex_const_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::gsl_matrix_char ############## package Math::GSL::Matrix::gsl_matrix_char; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_size1_get = *Math::GSL::Matrixc::gsl_matrix_char_size1_get; *swig_size1_set = *Math::GSL::Matrixc::gsl_matrix_char_size1_set; *swig_size2_get = *Math::GSL::Matrixc::gsl_matrix_char_size2_get; *swig_size2_set = *Math::GSL::Matrixc::gsl_matrix_char_size2_set; *swig_tda_get = *Math::GSL::Matrixc::gsl_matrix_char_tda_get; *swig_tda_set = *Math::GSL::Matrixc::gsl_matrix_char_tda_set; *swig_data_get = *Math::GSL::Matrixc::gsl_matrix_char_data_get; *swig_data_set = *Math::GSL::Matrixc::gsl_matrix_char_data_set; *swig_block_get = *Math::GSL::Matrixc::gsl_matrix_char_block_get; *swig_block_set = *Math::GSL::Matrixc::gsl_matrix_char_block_set; *swig_owner_get = *Math::GSL::Matrixc::gsl_matrix_char_owner_get; *swig_owner_set = *Math::GSL::Matrixc::gsl_matrix_char_owner_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new_gsl_matrix_char(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete_gsl_matrix_char($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_char_view ############## package Math::GSL::Matrix::_gsl_matrix_char_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_char_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_char_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_char_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_char_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } ############# Class : Math::GSL::Matrix::_gsl_matrix_char_const_view ############## package Math::GSL::Matrix::_gsl_matrix_char_const_view; use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); @ISA = qw( Math::GSL::Matrix ); %OWNER = (); %ITERATORS = (); *swig_matrix_get = *Math::GSL::Matrixc::_gsl_matrix_char_const_view_matrix_get; *swig_matrix_set = *Math::GSL::Matrixc::_gsl_matrix_char_const_view_matrix_set; sub new { my $pkg = shift; my $self = Math::GSL::Matrixc::new__gsl_matrix_char_const_view(@_); bless $self, $pkg if defined($self); } sub DESTROY { return unless $_[0]->isa('HASH'); my $self = tied(%{$_[0]}); return unless defined $self; delete $ITERATORS{$self}; if (exists $OWNER{$self}) { Math::GSL::Matrixc::delete__gsl_matrix_char_const_view($self); delete $OWNER{$self}; } } sub DISOWN { my $self = shift; my $ptr = tied(%$self); delete $OWNER{$ptr}; } sub ACQUIRE { my $self = shift; my $ptr = tied(%$self); $OWNER{$ptr} = 1; } # ------- VARIABLE STUBS -------- package Math::GSL::Matrix; *GSL_MAJOR_VERSION = *Math::GSL::Matrixc::GSL_MAJOR_VERSION; *GSL_MINOR_VERSION = *Math::GSL::Matrixc::GSL_MINOR_VERSION; *GSL_POSZERO = *Math::GSL::Matrixc::GSL_POSZERO; *GSL_NEGZERO = *Math::GSL::Matrixc::GSL_NEGZERO; use strict; use warnings; use Carp qw/croak/; use Scalar::Util 'blessed'; use Math::GSL qw/:all/; use Math::GSL::Errno qw/:all/; use Math::GSL::Eigen qw/:all/; use Math::GSL::Vector qw/:all/; use Math::GSL::Complex qw/:all/; use Math::GSL::Test qw/is_similar/; use Math::GSL::BLAS qw/gsl_blas_dgemm/; use Math::GSL::CBLAS qw/$CblasNoTrans/; use Math::GSL::Permutation; use Math::GSL::Linalg qw/ gsl_linalg_LU_decomp gsl_linalg_LU_det gsl_linalg_LU_lndet gsl_linalg_LU_invert /; # should only include needed methods use Math::GSL::MatrixComplex qw/:all/; use Math::GSL::VectorComplex qw/:all/; use Data::Dumper; use overload '*' => \&_multiplication, '+' => \&_addition, '-' => \&_subtract, '==' => \&_equal, '!=' => \&_not_equal, fallback => 1; our @EXPORT_OK = qw/ gsl_matrix_alloc gsl_matrix_calloc gsl_matrix_alloc_from_block gsl_matrix_alloc_from_matrix gsl_vector_alloc_row_from_matrix gsl_vector_alloc_col_from_matrix gsl_matrix_free gsl_matrix_submatrix gsl_matrix_row gsl_matrix_column gsl_matrix_diagonal gsl_matrix_subdiagonal gsl_matrix_superdiagonal gsl_matrix_subrow gsl_matrix_subcolumn gsl_matrix_view_array gsl_matrix_view_array_with_tda gsl_matrix_view_vector gsl_matrix_view_vector_with_tda gsl_matrix_const_submatrix gsl_matrix_const_row gsl_matrix_const_column gsl_matrix_const_diagonal gsl_matrix_const_subdiagonal gsl_matrix_const_superdiagonal gsl_matrix_const_subrow gsl_matrix_const_subcolumn gsl_matrix_const_view_array gsl_matrix_const_view_array_with_tda gsl_matrix_const_view_vector gsl_matrix_const_view_vector_with_tda gsl_matrix_get gsl_matrix_set gsl_matrix_ptr gsl_matrix_const_ptr gsl_matrix_set_zero gsl_matrix_set_identity gsl_matrix_set_all gsl_matrix_fread gsl_matrix_fwrite gsl_matrix_fscanf gsl_matrix_fprintf gsl_matrix_memcpy gsl_matrix_swap gsl_matrix_swap_rows gsl_matrix_swap_columns gsl_matrix_swap_rowcol gsl_matrix_transpose gsl_matrix_transpose_memcpy gsl_matrix_max gsl_matrix_min gsl_matrix_minmax gsl_matrix_max_index gsl_matrix_min_index gsl_matrix_minmax_index gsl_matrix_isnull gsl_matrix_ispos gsl_matrix_isneg gsl_matrix_isnonneg gsl_matrix_add gsl_matrix_sub gsl_matrix_mul_elements gsl_matrix_div_elements gsl_matrix_scale gsl_matrix_add_constant gsl_matrix_add_diagonal gsl_matrix_char_alloc gsl_matrix_char_calloc gsl_matrix_char_alloc_from_block gsl_matrix_char_alloc_from_matrix gsl_vector_char_alloc_row_from_matrix gsl_vector_char_alloc_col_from_matrix gsl_matrix_char_free gsl_matrix_char_submatrix gsl_matrix_char_row gsl_matrix_char_column gsl_matrix_char_diagonal gsl_matrix_char_subdiagonal gsl_matrix_char_superdiagonal gsl_matrix_char_subrow gsl_matrix_char_subcolumn gsl_matrix_char_view_array gsl_matrix_char_view_array_with_tda gsl_matrix_char_view_vector gsl_matrix_char_view_vector_with_tda gsl_matrix_char_const_submatrix gsl_matrix_char_const_row gsl_matrix_char_const_column gsl_matrix_char_const_diagonal gsl_matrix_char_const_subdiagonal gsl_matrix_char_const_superdiagonal gsl_matrix_char_const_subrow gsl_matrix_char_const_subcolumn gsl_matrix_char_const_view_array gsl_matrix_char_const_view_array_with_tda gsl_matrix_char_const_view_vector gsl_matrix_char_const_view_vector_with_tda gsl_matrix_char_get gsl_matrix_char_set gsl_matrix_char_ptr gsl_matrix_char_const_ptr gsl_matrix_char_set_zero gsl_matrix_char_set_identity gsl_matrix_char_set_all gsl_matrix_char_fread gsl_matrix_char_fwrite gsl_matrix_char_fscanf gsl_matrix_char_fprintf gsl_matrix_char_memcpy gsl_matrix_char_swap gsl_matrix_char_swap_rows gsl_matrix_char_swap_columns gsl_matrix_char_swap_rowcol gsl_matrix_char_transpose gsl_matrix_char_transpose_memcpy gsl_matrix_char_max gsl_matrix_char_min gsl_matrix_char_minmax gsl_matrix_char_max_index gsl_matrix_char_min_index gsl_matrix_char_minmax_index gsl_matrix_char_isnull gsl_matrix_char_ispos gsl_matrix_char_isneg gsl_matrix_char_isnonneg gsl_matrix_char_add gsl_matrix_char_sub gsl_matrix_char_mul_elements gsl_matrix_char_div_elements gsl_matrix_char_scale gsl_matrix_char_add_constant gsl_matrix_char_add_diagonal gsl_matrix_int_alloc gsl_matrix_int_calloc gsl_matrix_int_alloc_from_block gsl_matrix_int_alloc_from_matrix gsl_vector_int_alloc_row_from_matrix gsl_vector_int_alloc_col_from_matrix gsl_matrix_int_free gsl_matrix_int_submatrix gsl_matrix_int_row gsl_matrix_int_column gsl_matrix_int_diagonal gsl_matrix_int_subdiagonal gsl_matrix_int_superdiagonal gsl_matrix_int_subrow gsl_matrix_int_subcolumn gsl_matrix_int_view_array gsl_matrix_int_view_array_with_tda gsl_matrix_int_view_vector gsl_matrix_int_view_vector_with_tda gsl_matrix_int_const_submatrix gsl_matrix_int_const_row gsl_matrix_int_const_column gsl_matrix_int_const_diagonal gsl_matrix_int_const_subdiagonal gsl_matrix_int_const_superdiagonal gsl_matrix_int_const_subrow gsl_matrix_int_const_subcolumn gsl_matrix_int_const_view_array gsl_matrix_int_const_view_array_with_tda gsl_matrix_int_const_view_vector gsl_matrix_int_const_view_vector_with_tda gsl_matrix_int_get gsl_matrix_int_set gsl_matrix_int_ptr gsl_matrix_int_const_ptr gsl_matrix_int_set_zero gsl_matrix_int_set_identity gsl_matrix_int_set_all gsl_matrix_int_fread gsl_matrix_int_fwrite gsl_matrix_int_fscanf gsl_matrix_int_fprintf gsl_matrix_int_memcpy gsl_matrix_int_swap gsl_matrix_int_swap_rows gsl_matrix_int_swap_columns gsl_matrix_int_swap_rowcol gsl_matrix_int_transpose gsl_matrix_int_transpose_memcpy gsl_matrix_int_max gsl_matrix_int_min gsl_matrix_int_minmax gsl_matrix_int_max_index gsl_matrix_int_min_index gsl_matrix_int_minmax_index gsl_matrix_int_isnull gsl_matrix_int_ispos gsl_matrix_int_isneg gsl_matrix_int_isnonneg gsl_matrix_int_add gsl_matrix_int_sub gsl_matrix_int_mul_elements gsl_matrix_int_div_elements gsl_matrix_int_scale gsl_matrix_int_add_constant gsl_matrix_int_add_diagonal gsl_matrix_get_row gsl_matrix_get_col gsl_matrix_set_row gsl_matrix_set_col /; our %EXPORT_TAGS = ( all => [ @EXPORT_OK ], char => [ qw/ gsl_matrix_char_alloc gsl_matrix_char_calloc gsl_matrix_char_alloc_from_block gsl_matrix_char_alloc_from_matrix gsl_vector_char_alloc_row_from_matrix gsl_vector_char_alloc_col_from_matrix gsl_matrix_char_free gsl_matrix_char_submatrix gsl_matrix_char_row gsl_matrix_char_column gsl_matrix_char_diagonal gsl_matrix_char_subdiagonal gsl_matrix_char_superdiagonal gsl_matrix_char_subrow gsl_matrix_char_subcolumn gsl_matrix_char_view_array gsl_matrix_char_view_array_with_tda gsl_matrix_char_view_vector gsl_matrix_char_view_vector_with_tda gsl_matrix_char_const_submatrix gsl_matrix_char_const_row gsl_matrix_char_const_column gsl_matrix_char_const_diagonal gsl_matrix_char_const_subdiagonal gsl_matrix_char_const_superdiagonal gsl_matrix_char_const_subrow gsl_matrix_char_const_subcolumn gsl_matrix_char_const_view_array gsl_matrix_char_const_view_array_with_tda gsl_matrix_char_const_view_vector gsl_matrix_char_const_view_vector_with_tda gsl_matrix_char_get gsl_matrix_char_set gsl_matrix_char_ptr gsl_matrix_char_const_ptr gsl_matrix_char_set_zero gsl_matrix_char_set_identity gsl_matrix_char_set_all gsl_matrix_char_fread gsl_matrix_char_fwrite gsl_matrix_char_fscanf gsl_matrix_char_fprintf gsl_matrix_char_memcpy gsl_matrix_char_swap gsl_matrix_char_swap_rows gsl_matrix_char_swap_columns gsl_matrix_char_swap_rowcol gsl_matrix_char_transpose gsl_matrix_char_transpose_memcpy gsl_matrix_char_max gsl_matrix_char_min gsl_matrix_char_minmax gsl_matrix_char_max_index gsl_matrix_char_min_index gsl_matrix_char_minmax_index gsl_matrix_char_isnull gsl_matrix_char_ispos gsl_matrix_char_isneg gsl_matrix_char_isnonneg gsl_matrix_char_add gsl_matrix_char_sub gsl_matrix_char_mul_elements gsl_matrix_char_div_elements gsl_matrix_char_scale gsl_matrix_char_add_constant gsl_matrix_char_add_diagonal /], double => [ qw/ gsl_matrix_alloc gsl_matrix_calloc gsl_matrix_alloc_from_block gsl_matrix_alloc_from_matrix gsl_vector_alloc_row_from_matrix gsl_vector_alloc_col_from_matrix gsl_matrix_free gsl_matrix_submatrix gsl_matrix_row gsl_matrix_column gsl_matrix_diagonal gsl_matrix_subdiagonal gsl_matrix_superdiagonal gsl_matrix_subrow gsl_matrix_subcolumn gsl_matrix_view_array gsl_matrix_view_array_with_tda gsl_matrix_view_vector gsl_matrix_view_vector_with_tda gsl_matrix_const_submatrix gsl_matrix_const_row gsl_matrix_const_column gsl_matrix_const_diagonal gsl_matrix_const_subdiagonal gsl_matrix_const_superdiagonal gsl_matrix_const_subrow gsl_matrix_const_subcolumn gsl_matrix_const_view_array gsl_matrix_const_view_array_with_tda gsl_matrix_const_view_vector gsl_matrix_const_view_vector_with_tda gsl_matrix_get gsl_matrix_set gsl_matrix_ptr gsl_matrix_const_ptr gsl_matrix_set_zero gsl_matrix_set_identity gsl_matrix_set_all gsl_matrix_fread gsl_matrix_fwrite gsl_matrix_fscanf gsl_matrix_fprintf gsl_matrix_memcpy gsl_matrix_swap gsl_matrix_swap_rows gsl_matrix_swap_columns gsl_matrix_swap_rowcol gsl_matrix_transpose gsl_matrix_transpose_memcpy gsl_matrix_max gsl_matrix_minmax gsl_matrix_max_index gsl_matrix_min_index gsl_matrix_minmax_index gsl_matrix_isnull gsl_matrix_ispos gsl_matrix_isneg gsl_matrix_isnonneg gsl_matrix_add gsl_matrix_mul_elements gsl_matrix_div_elements gsl_matrix_scale gsl_matrix_add_constant gsl_matrix_add_diagonal /], int => [ qw/ gsl_matrix_int_alloc gsl_matrix_int_alloc_from_matrix gsl_matrix_int_free gsl_matrix_int_column gsl_matrix_int_superdiagonal gsl_matrix_int_view_array_with_tda gsl_matrix_int_const_submatrix gsl_matrix_int_const_diagonal gsl_matrix_int_const_subrow gsl_matrix_int_const_view_array_with_tda gsl_matrix_int_get gsl_matrix_int_ptr gsl_matrix_int_set_zero gsl_matrix_int_fread gsl_matrix_int_fscanf gsl_matrix_int_memcpy gsl_matrix_int_swap_rows gsl_matrix_int_transpose gsl_matrix_int_max gsl_matrix_int_max_index gsl_matrix_int_minmax_index gsl_matrix_int_ispos gsl_matrix_int_add gsl_matrix_int_mul_elements gsl_matrix_int_add_constant /], ); =head1 NAME Math::GSL::Matrix - Mathematical functions concerning Matrices =head1 SYNOPSIS use Math::GSL::Matrix qw/:all/; my $matrix1 = Math::GSL::Matrix->new(5,5); # OO interface my $matrix2 = $matrix1 + 4; # You can add or substract values or matrices to OO matrices my $matrix3 = $matrix1 - 4; my $matrix4 = $matrix2 + $matrix1; my $matrix5 = $matrix2 . $matrix1; # This is a scalar product, it simply multiply each element # with the element of $matrix1 that have the same position # See Math::GSL::BLAS if you want scalar product my $matrix6 = $matrix2 . 8; # Multiply every elements of $matrix2 by 8 my $matrix7 = $matrix2 * $matrix1; # scalar product of two matrices if($matrix1 == $matrix4) ... if($matrix1 != $matrix3) ... my $matrix8 = gsl_matrix_alloc(5,5); # standard interface =head1 Objected Oriented Interface to GSL Math::GSL::Matrix =head2 Math::GSL::Matrix->new() Creates a new Matrix of the given size. my $matrix = Math::GSL::Matrix->new(10,10); =cut sub new { my ($class, $rows, $cols) = @_; my $this = {}; my $matrix; if ( defined $rows && defined $cols && $rows > 0 && $cols > 0 && (int $rows == $rows) && (int $cols == $cols)){ $matrix = gsl_matrix_alloc($rows,$cols); } else { croak( __PACKAGE__.'::new($x,$y) - $x and $y must be positive integers'); } gsl_matrix_set_zero($matrix); $this->{_matrix} = $matrix; ($this->{_rows}, $this->{_cols}) = ($rows,$cols); bless $this, $class; } =head2 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::Matrix->new(3,3); my $gsl_matrix = $matrix->raw; my $stuff = gsl_matrix_get($gsl_matrix, 1, 2); =cut sub raw { (shift)->{_matrix} } =head2 identity() Set a matrix to the identity matrix, i.e. one on the diagonal and zero elsewhere. my $I = $matrix->identity; =cut sub identity { my $self=shift; gsl_matrix_set_identity($self->raw); return $self; } =head2 zero() Set a matrix to the zero matrix. $matrix->zero; =cut sub zero # brrr! { my $self=shift; gsl_matrix_set_zero($self->raw); return $self; } =head2 copy() Returns a copy of the matrix, which has the same size and values but resides at a different location in memory. my $matrix = Math::GSL::Matrix->new(5,5); my $copy = $matrix->copy; =cut sub copy { my $self = shift; my $copy = Math::GSL::Matrix->new( $self->rows, $self->cols ); if ( gsl_matrix_memcpy($copy->raw, $self->raw) != $GSL_SUCCESS ) { croak "Math::GSL - error copying memory, aborting"; } return $copy; } =head2 rows() Returns the number of rows in the matrix. my $rows = $matrix->rows; =cut sub rows { (shift)->{_rows} } =head2 cols() Returns the number of columns in the matrix. my $cols = $matrix->cols; =cut sub cols { (shift)->{_cols} } =head2 as_list() Get the contents of a Math::GSL::Matrix object as a Perl list. my $matrix = Math::GSL::Matrix->new(3,3); ... my @matrix = $matrix->as_list; =cut =head2 is_square() Returns true if a matrix is square, i.e. it has the same number of rows as columns, false otherwise. =cut sub is_square($) { my $self = shift; return ($self->rows == $self->cols) ? 1 : 0 ; } =head2 det() Returns the determinant of a matrix (computed by LU decomposition) or dies if called on a non-square matrix. my $det = $matrix->det(); =cut sub det($) { my $self = shift; croak(__PACKAGE__."- determinant only exists for square matrices") unless $self->is_square; my $p = Math::GSL::Permutation->new( $self->rows ); my $LU = $self->copy; my ($result, $s) = gsl_linalg_LU_decomp($LU->raw, $p->raw); return gsl_linalg_LU_det($LU->raw, $s ); } =head2 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(); =cut sub lndet($) { my $self = shift; croak(__PACKAGE__."- log determinant only exists for square matrices") unless $self->is_square; my $p = Math::GSL::Permutation->new( $self->rows ); my $LU = $self->copy; gsl_linalg_LU_decomp($LU->raw, $p->raw); return gsl_linalg_LU_lndet($LU->raw); } =head2 inverse() Returns the inverse of a matrix or dies when called on a non-square matrix. my $inverse = $matrix->inverse; =cut sub inverse($) { my $self = shift; croak(__PACKAGE__."- inverse only exists for square matrices") unless $self->is_square; my $p = Math::GSL::Permutation->new( $self->rows ); my $LU = $self->copy; my $inverse = $self->copy; # should check return status gsl_linalg_LU_decomp($LU->raw, $p->raw); gsl_linalg_LU_invert($LU->raw, $p->raw,$inverse->raw); return $inverse; } =head2 eigenvalues() =cut sub eigenvalues($) { my $self=shift; my ($r,$c) = ($self->rows,$self->cols); croak "Math::GSL::Matrix : \$matrix->eigenvalues - \$matrix must be square" unless ($r == $c); my $evec = gsl_matrix_complex_alloc($r,$c); my $eigen = gsl_eigen_nonsymmv_alloc($r); my $vector = gsl_vector_complex_alloc($r); gsl_eigen_nonsymmv($self->raw, $vector, $evec, $eigen); my $x = gsl_vector_complex_real($vector); # vector of real components my $y = gsl_vector_complex_imag($vector); # vector of imaginary components return map { _as_complex( gsl_vector_get($x->{vector}, $_) , gsl_vector_get($y->{vector}, $_) ) } (0 .. $r-1); } sub eigenpair($) { my $self=shift; my ($r,$c) = ($self->rows,$self->cols); croak "Math::GSL::Matrix : \$matrix->eigenvalues - \$matrix must be square" unless ($r == $c); my $evec = Math::GSL::MatrixComplex->new($r,$c); my $eigen = gsl_eigen_nonsymmv_alloc($r); my $vector = Math::GSL::VectorComplex->new($r); gsl_eigen_nonsymmv($self->raw, $vector->raw, $evec->raw, $eigen); my $eigenvectors = [ map { $evec->col($_)->as_vector } (0 .. $r-1) ]; my $x = gsl_vector_complex_real($vector->raw); # vector of real components my $y = gsl_vector_complex_imag($vector->raw); # vector of imaginary components my $eigenvalues = [ map { _as_complex( gsl_vector_get($x->{vector}, $_) , gsl_vector_get($y->{vector}, $_) ) } (0 .. $r-1) ]; return ($eigenvalues, $eigenvectors); } sub _as_complex { my ($w,$v) = @_; my ($x,$y) = ($w,$v); if( ref $w eq 'Math::GSL::Complex') { ($x,$y) = (gsl_real($w),gsl_imag($w)); } my $z = Math::Complex->make( $x, $y); } =head2 as_vector() Returns a 1xN or Nx1 matrix as a Math::GSL::Vector object. Dies if called on a matrix that is not a single row or column. Useful for turning the output of C