Math::GSL::BLAS - Basic Linear Algebra Subprograms
use Math::GSL::QRNG qw/:all/;
The functions of this module are divised into 3 levels:
gsl_blas_sdsdot
gsl_blas_dsdot
gsl_blas_sdot
gsl_blas_ddot($x, $y)
gsl_blas_cdotu
gsl_blas_cdotc
gsl_blas_zdotu($x, $y, $dotu)
gsl_blas_zdotc($x, $y, $dotc)
gsl_blas_snrm2
gsl_blas_sasum
gsl_blas_dnrm2($x)
gsl_blas_dasum($x)
gsl_blas_scnrm2
gsl_blas_scasum
gsl_blas_dznrm2($x)
gsl_blas_dzasum($x)
gsl_blas_isamax
gsl_blas_idamax
gsl_blas_icamax
gsl_blas_izamax
gsl_blas_sswap
gsl_blas_scopy
gsl_blas_saxpy
gsl_blas_dswap($x, $y)
gsl_blas_dcopy($x, $y)
gsl_blas_daxpy($alpha, $x, $y)
gsl_blas_cswap
gsl_blas_ccopy
gsl_blas_caxpy
gsl_blas_zswap
gsl_blas_zcopy
gsl_blas_zaxpy
gsl_blas_srotg
gsl_blas_srotmg
gsl_blas_srot
gsl_blas_srotm
gsl_blas_drotg
gsl_blas_drotmg
gsl_blas_drot($x, $y, $c, $s)
gsl_blas_drotm
gsl_blas_sscal
gsl_blas_dscal($alpha, $x)
gsl_blas_cscal
gsl_blas_zscal
gsl_blas_csscal
gsl_blas_zdscal
gsl_blas_sgemv
gsl_blas_strmv
gsl_blas_strsv
gsl_blas_dgemv($TransA, $alpha, $A, $x, $beta, $y)
gsl_blas_dtrmv($Uplo, $TransA, $Diag, $A, $x)
gsl_blas_dtrsv($Uplo, $TransA, $Diag, $A, $x)
gsl_blas_cgemv
gsl_blas_ctrmv
gsl_blas_ctrsv
gsl_blas_zgemv
gsl_blas_ztrmv
gsl_blas_ztrsv
gsl_blas_ssymv
gsl_blas_sger
gsl_blas_ssyr
gsl_blas_ssyr2
gsl_blas_dsymv
gsl_blas_dger($alpha, $x, $y, $A)
gsl_blas_dsyr($Uplo, $alpha, $x, $A)
gsl_blas_dsyr2($Uplo, $alpha, $x, $y, $A)
gsl_blas_chemv
gsl_blas_cgeru
gsl_blas_cgerc
gsl_blas_cher
gsl_blas_cher2
gsl_blas_zhemv
gsl_blas_zgeru($alpha, $x, $y, $A)
gsl_blas_zgerc
gsl_blas_zher($Uplo, $alpha, $x, $A)
gsl_blas_zher2
gsl_blas_sgemm
gsl_blas_ssymm
gsl_blas_ssyrk
gsl_blas_ssyr2k
gsl_blas_strmm
gsl_blas_strsm
gsl_blas_dgemm($TransA, $TransB, $alpha, $A, $B, $beta, $C)
gsl_blas_dsymm($Side, $Uplo, $alpha, $A, $B, $beta, $C)
gsl_blas_dsyrk($Uplo, $Trans, $alpha, $A, $beta, $C)
gsl_blas_dsyr2k($Uplo, $Trans, $alpha, $A, $B, $beta, $C)
gsl_blas_dtrmm($Side, $Uplo, $TransA, $Diag, $alpha, $A, $B)
gsl_blas_dtrsm($Side, $Uplo, $TransA, $Diag, $alpha, $A, $B)
gsl_blas_cgemm
gsl_blas_csymm
gsl_blas_csyrk
gsl_blas_csyr2k
gsl_blas_ctrmm
gsl_blas_ctrsm
gsl_blas_zgemm($TransA, $TransB, $alpha, $A, $B, $beta, $C)
gsl_blas_zsymm($Side, $Uplo, $alpha, $A, $B, $beta, $C)
gsl_blas_zsyrk($Uplo, $Trans, $alpha, $A, $beta, $C)
gsl_blas_zsyr2k($Uplo, $Trans, $alpha, $A, $B, $beta, $C)
gsl_blas_ztrmm($Side, $Uplo, $TransA, $Diag, $alpha, $A, $B)
gsl_blas_ztrsm($Side, $Uplo, $TransA, $Diag, $alpha, $A, $B)
gsl_blas_chemm
gsl_blas_cherk
gsl_blas_cher2k
gsl_blas_zhemm($Side, $Uplo, $alpha, $A, $B, $beta, $C)
gsl_blas_zherk($Uplo, $Trans, $alpha, $A, $beta, $C)
gsl_blas_zher2k($Uplo, $Trans, $alpha, $A, $B, $beta, $C)
You have to add the functions you want to use inside the qw /put_funtion_here /. You can also write use Math::GSL::PowInt qw/:all/ to use all avaible functions of the module. Other tags are also avaible, here is a complete list of all tags for this module :
level1
level2
level3
For more informations on the functions, we refer you to the GSL offcial documentation: http://www.gnu.org/software/gsl/manual/html_node/
Tip : search on google: site:http://www.gnu.org/software/gsl/manual/html_node/ name_of_the_function_you_want
This example shows how to do a matrix-matrix product of double numbers : use Math::GSL::Matrix qw/:all/; use Math::GSL::BLAS qw/:all/; my $A = Math::GSL::Matrix->new(2,2); $A->set_row(0, [1, 4]); ->set_row(1, [3, 2]); my $B = Math::GSL::Matrix->new(2,2); $B->set_row(0, [2, 1]); ->set_row(1, [5,3]); my $C = Math::GSL::Matrix->new(2,2); gsl_matrix_set_zero($C->raw); gsl_blas_dgemm($CblasNoTrans, $CblasNoTrans, 1, $A->raw, $B->raw, 1, $C->raw); my @got = $C->row(0)->as_list; print "The resulting matrix is: \n["; print "$got[0] $got[1]\n"; @got = $C->row(1)->as_list; print "$got[0] $got[1] ]\n"; This example shows how to compute the scalar product of two vectors : use Math::GSL::Vector qw/:all/; use Math::GSL::CBLAS qw/:all/; use Math::GSL::BLAS qw/:all/; my $vec1 = Math::GSL::Vector->new([1,2,3,4,5]); my $vec2 = Math::GSL::Vector->new([5,4,3,2,1]); my ($status, $result) = gsl_blas_ddot($vec1->raw, $vec2->raw); if($status == 0) { print "The function has succeeded. \n"; } print "The result of the vector multiplication is $result. \n";
Jonathan Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>
Copyright (C) 2008 Jonathan Leto and Thierry Moisan
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Math::GSL, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Math::GSL
CPAN shell
perl -MCPAN -e shell install Math::GSL
For more information on module installation, please visit the detailed CPAN module installation guide.