1# This file was automatically generated by SWIG (http://www.swig.org). 2# Version 4.0.1 3# 4# Do not make changes to this file unless you know what you are doing--modify 5# the SWIG interface file instead. 6 7package Math::GSL::Linalg; 8use base qw(Exporter); 9use base qw(DynaLoader); 10package Math::GSL::Linalgc; 11bootstrap Math::GSL::Linalg; 12package Math::GSL::Linalg; 13@EXPORT = qw(); 14 15# ---------- BASE METHODS ------------- 16 17package Math::GSL::Linalg; 18 19sub TIEHASH { 20 my ($classname,$obj) = @_; 21 return bless $obj, $classname; 22} 23 24sub CLEAR { } 25 26sub FIRSTKEY { } 27 28sub NEXTKEY { } 29 30sub FETCH { 31 my ($self,$field) = @_; 32 my $member_func = "swig_${field}_get"; 33 $self->$member_func(); 34} 35 36sub STORE { 37 my ($self,$field,$newval) = @_; 38 my $member_func = "swig_${field}_set"; 39 $self->$member_func($newval); 40} 41 42sub this { 43 my $ptr = shift; 44 return tied(%$ptr); 45} 46 47 48# ------- FUNCTION WRAPPERS -------- 49 50package Math::GSL::Linalg; 51 52*gsl_error = *Math::GSL::Linalgc::gsl_error; 53*gsl_stream_printf = *Math::GSL::Linalgc::gsl_stream_printf; 54*gsl_strerror = *Math::GSL::Linalgc::gsl_strerror; 55*gsl_set_error_handler = *Math::GSL::Linalgc::gsl_set_error_handler; 56*gsl_set_error_handler_off = *Math::GSL::Linalgc::gsl_set_error_handler_off; 57*gsl_set_stream_handler = *Math::GSL::Linalgc::gsl_set_stream_handler; 58*gsl_set_stream = *Math::GSL::Linalgc::gsl_set_stream; 59*gsl_linalg_matmult = *Math::GSL::Linalgc::gsl_linalg_matmult; 60*gsl_linalg_matmult_mod = *Math::GSL::Linalgc::gsl_linalg_matmult_mod; 61*gsl_linalg_exponential_ss = *Math::GSL::Linalgc::gsl_linalg_exponential_ss; 62*gsl_linalg_householder_transform = *Math::GSL::Linalgc::gsl_linalg_householder_transform; 63*gsl_linalg_householder_transform2 = *Math::GSL::Linalgc::gsl_linalg_householder_transform2; 64*gsl_linalg_complex_householder_transform = *Math::GSL::Linalgc::gsl_linalg_complex_householder_transform; 65*gsl_linalg_householder_hm = *Math::GSL::Linalgc::gsl_linalg_householder_hm; 66*gsl_linalg_householder_mh = *Math::GSL::Linalgc::gsl_linalg_householder_mh; 67*gsl_linalg_householder_hv = *Math::GSL::Linalgc::gsl_linalg_householder_hv; 68*gsl_linalg_householder_left = *Math::GSL::Linalgc::gsl_linalg_householder_left; 69*gsl_linalg_householder_right = *Math::GSL::Linalgc::gsl_linalg_householder_right; 70*gsl_linalg_householder_hm1 = *Math::GSL::Linalgc::gsl_linalg_householder_hm1; 71*gsl_linalg_complex_householder_hm = *Math::GSL::Linalgc::gsl_linalg_complex_householder_hm; 72*gsl_linalg_complex_householder_mh = *Math::GSL::Linalgc::gsl_linalg_complex_householder_mh; 73*gsl_linalg_complex_householder_hv = *Math::GSL::Linalgc::gsl_linalg_complex_householder_hv; 74*gsl_linalg_complex_householder_left = *Math::GSL::Linalgc::gsl_linalg_complex_householder_left; 75*gsl_linalg_hessenberg_decomp = *Math::GSL::Linalgc::gsl_linalg_hessenberg_decomp; 76*gsl_linalg_hessenberg_unpack = *Math::GSL::Linalgc::gsl_linalg_hessenberg_unpack; 77*gsl_linalg_hessenberg_unpack_accum = *Math::GSL::Linalgc::gsl_linalg_hessenberg_unpack_accum; 78*gsl_linalg_hessenberg_set_zero = *Math::GSL::Linalgc::gsl_linalg_hessenberg_set_zero; 79*gsl_linalg_hessenberg_submatrix = *Math::GSL::Linalgc::gsl_linalg_hessenberg_submatrix; 80*gsl_linalg_hesstri_decomp = *Math::GSL::Linalgc::gsl_linalg_hesstri_decomp; 81*gsl_linalg_SV_decomp = *Math::GSL::Linalgc::gsl_linalg_SV_decomp; 82*gsl_linalg_SV_decomp_mod = *Math::GSL::Linalgc::gsl_linalg_SV_decomp_mod; 83*gsl_linalg_SV_decomp_jacobi = *Math::GSL::Linalgc::gsl_linalg_SV_decomp_jacobi; 84*gsl_linalg_SV_solve = *Math::GSL::Linalgc::gsl_linalg_SV_solve; 85*gsl_linalg_SV_leverage = *Math::GSL::Linalgc::gsl_linalg_SV_leverage; 86*gsl_linalg_LU_decomp = *Math::GSL::Linalgc::gsl_linalg_LU_decomp; 87*gsl_linalg_LU_solve = *Math::GSL::Linalgc::gsl_linalg_LU_solve; 88*gsl_linalg_LU_svx = *Math::GSL::Linalgc::gsl_linalg_LU_svx; 89*gsl_linalg_LU_refine = *Math::GSL::Linalgc::gsl_linalg_LU_refine; 90*gsl_linalg_LU_invert = *Math::GSL::Linalgc::gsl_linalg_LU_invert; 91*gsl_linalg_LU_invx = *Math::GSL::Linalgc::gsl_linalg_LU_invx; 92*gsl_linalg_LU_det = *Math::GSL::Linalgc::gsl_linalg_LU_det; 93*gsl_linalg_LU_lndet = *Math::GSL::Linalgc::gsl_linalg_LU_lndet; 94*gsl_linalg_LU_sgndet = *Math::GSL::Linalgc::gsl_linalg_LU_sgndet; 95*gsl_linalg_LU_band_decomp = *Math::GSL::Linalgc::gsl_linalg_LU_band_decomp; 96*gsl_linalg_LU_band_solve = *Math::GSL::Linalgc::gsl_linalg_LU_band_solve; 97*gsl_linalg_LU_band_svx = *Math::GSL::Linalgc::gsl_linalg_LU_band_svx; 98*gsl_linalg_LU_band_unpack = *Math::GSL::Linalgc::gsl_linalg_LU_band_unpack; 99*gsl_linalg_complex_LU_decomp = *Math::GSL::Linalgc::gsl_linalg_complex_LU_decomp; 100*gsl_linalg_complex_LU_solve = *Math::GSL::Linalgc::gsl_linalg_complex_LU_solve; 101*gsl_linalg_complex_LU_svx = *Math::GSL::Linalgc::gsl_linalg_complex_LU_svx; 102*gsl_linalg_complex_LU_refine = *Math::GSL::Linalgc::gsl_linalg_complex_LU_refine; 103*gsl_linalg_complex_LU_invert = *Math::GSL::Linalgc::gsl_linalg_complex_LU_invert; 104*gsl_linalg_complex_LU_invx = *Math::GSL::Linalgc::gsl_linalg_complex_LU_invx; 105*gsl_linalg_complex_LU_det = *Math::GSL::Linalgc::gsl_linalg_complex_LU_det; 106*gsl_linalg_complex_LU_lndet = *Math::GSL::Linalgc::gsl_linalg_complex_LU_lndet; 107*gsl_linalg_complex_LU_sgndet = *Math::GSL::Linalgc::gsl_linalg_complex_LU_sgndet; 108*gsl_linalg_QR_decomp = *Math::GSL::Linalgc::gsl_linalg_QR_decomp; 109*gsl_linalg_QR_decomp_old = *Math::GSL::Linalgc::gsl_linalg_QR_decomp_old; 110*gsl_linalg_QR_decomp_r = *Math::GSL::Linalgc::gsl_linalg_QR_decomp_r; 111*gsl_linalg_QR_solve = *Math::GSL::Linalgc::gsl_linalg_QR_solve; 112*gsl_linalg_QR_solve_r = *Math::GSL::Linalgc::gsl_linalg_QR_solve_r; 113*gsl_linalg_QR_svx = *Math::GSL::Linalgc::gsl_linalg_QR_svx; 114*gsl_linalg_QR_lssolve = *Math::GSL::Linalgc::gsl_linalg_QR_lssolve; 115*gsl_linalg_QR_lssolve_r = *Math::GSL::Linalgc::gsl_linalg_QR_lssolve_r; 116*gsl_linalg_QR_QRsolve = *Math::GSL::Linalgc::gsl_linalg_QR_QRsolve; 117*gsl_linalg_QR_Rsolve = *Math::GSL::Linalgc::gsl_linalg_QR_Rsolve; 118*gsl_linalg_QR_Rsvx = *Math::GSL::Linalgc::gsl_linalg_QR_Rsvx; 119*gsl_linalg_QR_update = *Math::GSL::Linalgc::gsl_linalg_QR_update; 120*gsl_linalg_QR_QTvec = *Math::GSL::Linalgc::gsl_linalg_QR_QTvec; 121*gsl_linalg_QR_QTvec_r = *Math::GSL::Linalgc::gsl_linalg_QR_QTvec_r; 122*gsl_linalg_QR_Qvec = *Math::GSL::Linalgc::gsl_linalg_QR_Qvec; 123*gsl_linalg_QR_QTmat = *Math::GSL::Linalgc::gsl_linalg_QR_QTmat; 124*gsl_linalg_QR_QTmat_r = *Math::GSL::Linalgc::gsl_linalg_QR_QTmat_r; 125*gsl_linalg_QR_matQ = *Math::GSL::Linalgc::gsl_linalg_QR_matQ; 126*gsl_linalg_QR_unpack = *Math::GSL::Linalgc::gsl_linalg_QR_unpack; 127*gsl_linalg_QR_unpack_r = *Math::GSL::Linalgc::gsl_linalg_QR_unpack_r; 128*gsl_linalg_R_solve = *Math::GSL::Linalgc::gsl_linalg_R_solve; 129*gsl_linalg_R_svx = *Math::GSL::Linalgc::gsl_linalg_R_svx; 130*gsl_linalg_QR_rcond = *Math::GSL::Linalgc::gsl_linalg_QR_rcond; 131*gsl_linalg_complex_QR_decomp = *Math::GSL::Linalgc::gsl_linalg_complex_QR_decomp; 132*gsl_linalg_complex_QR_decomp_r = *Math::GSL::Linalgc::gsl_linalg_complex_QR_decomp_r; 133*gsl_linalg_complex_QR_solve = *Math::GSL::Linalgc::gsl_linalg_complex_QR_solve; 134*gsl_linalg_complex_QR_solve_r = *Math::GSL::Linalgc::gsl_linalg_complex_QR_solve_r; 135*gsl_linalg_complex_QR_svx = *Math::GSL::Linalgc::gsl_linalg_complex_QR_svx; 136*gsl_linalg_complex_QR_lssolve = *Math::GSL::Linalgc::gsl_linalg_complex_QR_lssolve; 137*gsl_linalg_complex_QR_lssolve_r = *Math::GSL::Linalgc::gsl_linalg_complex_QR_lssolve_r; 138*gsl_linalg_complex_QR_QHvec = *Math::GSL::Linalgc::gsl_linalg_complex_QR_QHvec; 139*gsl_linalg_complex_QR_QHvec_r = *Math::GSL::Linalgc::gsl_linalg_complex_QR_QHvec_r; 140*gsl_linalg_complex_QR_Qvec = *Math::GSL::Linalgc::gsl_linalg_complex_QR_Qvec; 141*gsl_linalg_complex_QR_unpack = *Math::GSL::Linalgc::gsl_linalg_complex_QR_unpack; 142*gsl_linalg_complex_QR_unpack_r = *Math::GSL::Linalgc::gsl_linalg_complex_QR_unpack_r; 143*gsl_linalg_QR_band_decomp_L2 = *Math::GSL::Linalgc::gsl_linalg_QR_band_decomp_L2; 144*gsl_linalg_QR_band_unpack_L2 = *Math::GSL::Linalgc::gsl_linalg_QR_band_unpack_L2; 145*gsl_linalg_QRPT_decomp = *Math::GSL::Linalgc::gsl_linalg_QRPT_decomp; 146*gsl_linalg_QRPT_decomp2 = *Math::GSL::Linalgc::gsl_linalg_QRPT_decomp2; 147*gsl_linalg_QRPT_solve = *Math::GSL::Linalgc::gsl_linalg_QRPT_solve; 148*gsl_linalg_QRPT_lssolve = *Math::GSL::Linalgc::gsl_linalg_QRPT_lssolve; 149*gsl_linalg_QRPT_lssolve2 = *Math::GSL::Linalgc::gsl_linalg_QRPT_lssolve2; 150*gsl_linalg_QRPT_svx = *Math::GSL::Linalgc::gsl_linalg_QRPT_svx; 151*gsl_linalg_QRPT_QRsolve = *Math::GSL::Linalgc::gsl_linalg_QRPT_QRsolve; 152*gsl_linalg_QRPT_Rsolve = *Math::GSL::Linalgc::gsl_linalg_QRPT_Rsolve; 153*gsl_linalg_QRPT_Rsvx = *Math::GSL::Linalgc::gsl_linalg_QRPT_Rsvx; 154*gsl_linalg_QRPT_update = *Math::GSL::Linalgc::gsl_linalg_QRPT_update; 155*gsl_linalg_QRPT_rank = *Math::GSL::Linalgc::gsl_linalg_QRPT_rank; 156*gsl_linalg_QRPT_rcond = *Math::GSL::Linalgc::gsl_linalg_QRPT_rcond; 157*gsl_linalg_QR_UD_decomp = *Math::GSL::Linalgc::gsl_linalg_QR_UD_decomp; 158*gsl_linalg_QR_UD_lssolve = *Math::GSL::Linalgc::gsl_linalg_QR_UD_lssolve; 159*gsl_linalg_QR_UR_decomp = *Math::GSL::Linalgc::gsl_linalg_QR_UR_decomp; 160*gsl_linalg_QR_UU_decomp = *Math::GSL::Linalgc::gsl_linalg_QR_UU_decomp; 161*gsl_linalg_QR_UU_lssolve = *Math::GSL::Linalgc::gsl_linalg_QR_UU_lssolve; 162*gsl_linalg_QR_UU_QTvec = *Math::GSL::Linalgc::gsl_linalg_QR_UU_QTvec; 163*gsl_linalg_QR_UZ_decomp = *Math::GSL::Linalgc::gsl_linalg_QR_UZ_decomp; 164*gsl_linalg_QL_decomp = *Math::GSL::Linalgc::gsl_linalg_QL_decomp; 165*gsl_linalg_QL_unpack = *Math::GSL::Linalgc::gsl_linalg_QL_unpack; 166*gsl_linalg_COD_decomp = *Math::GSL::Linalgc::gsl_linalg_COD_decomp; 167*gsl_linalg_COD_decomp_e = *Math::GSL::Linalgc::gsl_linalg_COD_decomp_e; 168*gsl_linalg_COD_lssolve = *Math::GSL::Linalgc::gsl_linalg_COD_lssolve; 169*gsl_linalg_COD_lssolve2 = *Math::GSL::Linalgc::gsl_linalg_COD_lssolve2; 170*gsl_linalg_COD_unpack = *Math::GSL::Linalgc::gsl_linalg_COD_unpack; 171*gsl_linalg_COD_matZ = *Math::GSL::Linalgc::gsl_linalg_COD_matZ; 172*gsl_linalg_LQ_decomp = *Math::GSL::Linalgc::gsl_linalg_LQ_decomp; 173*gsl_linalg_LQ_lssolve = *Math::GSL::Linalgc::gsl_linalg_LQ_lssolve; 174*gsl_linalg_LQ_QTvec = *Math::GSL::Linalgc::gsl_linalg_LQ_QTvec; 175*gsl_linalg_LQ_solve_T = *Math::GSL::Linalgc::gsl_linalg_LQ_solve_T; 176*gsl_linalg_LQ_svx_T = *Math::GSL::Linalgc::gsl_linalg_LQ_svx_T; 177*gsl_linalg_LQ_lssolve_T = *Math::GSL::Linalgc::gsl_linalg_LQ_lssolve_T; 178*gsl_linalg_LQ_Lsolve_T = *Math::GSL::Linalgc::gsl_linalg_LQ_Lsolve_T; 179*gsl_linalg_LQ_Lsvx_T = *Math::GSL::Linalgc::gsl_linalg_LQ_Lsvx_T; 180*gsl_linalg_L_solve_T = *Math::GSL::Linalgc::gsl_linalg_L_solve_T; 181*gsl_linalg_LQ_vecQ = *Math::GSL::Linalgc::gsl_linalg_LQ_vecQ; 182*gsl_linalg_LQ_vecQT = *Math::GSL::Linalgc::gsl_linalg_LQ_vecQT; 183*gsl_linalg_LQ_unpack = *Math::GSL::Linalgc::gsl_linalg_LQ_unpack; 184*gsl_linalg_LQ_update = *Math::GSL::Linalgc::gsl_linalg_LQ_update; 185*gsl_linalg_LQ_LQsolve = *Math::GSL::Linalgc::gsl_linalg_LQ_LQsolve; 186*gsl_linalg_PTLQ_decomp = *Math::GSL::Linalgc::gsl_linalg_PTLQ_decomp; 187*gsl_linalg_PTLQ_decomp2 = *Math::GSL::Linalgc::gsl_linalg_PTLQ_decomp2; 188*gsl_linalg_PTLQ_solve_T = *Math::GSL::Linalgc::gsl_linalg_PTLQ_solve_T; 189*gsl_linalg_PTLQ_svx_T = *Math::GSL::Linalgc::gsl_linalg_PTLQ_svx_T; 190*gsl_linalg_PTLQ_LQsolve_T = *Math::GSL::Linalgc::gsl_linalg_PTLQ_LQsolve_T; 191*gsl_linalg_PTLQ_Lsolve_T = *Math::GSL::Linalgc::gsl_linalg_PTLQ_Lsolve_T; 192*gsl_linalg_PTLQ_Lsvx_T = *Math::GSL::Linalgc::gsl_linalg_PTLQ_Lsvx_T; 193*gsl_linalg_PTLQ_update = *Math::GSL::Linalgc::gsl_linalg_PTLQ_update; 194*gsl_linalg_cholesky_decomp = *Math::GSL::Linalgc::gsl_linalg_cholesky_decomp; 195*gsl_linalg_cholesky_decomp1 = *Math::GSL::Linalgc::gsl_linalg_cholesky_decomp1; 196*gsl_linalg_cholesky_solve = *Math::GSL::Linalgc::gsl_linalg_cholesky_solve; 197*gsl_linalg_cholesky_solve_mat = *Math::GSL::Linalgc::gsl_linalg_cholesky_solve_mat; 198*gsl_linalg_cholesky_svx = *Math::GSL::Linalgc::gsl_linalg_cholesky_svx; 199*gsl_linalg_cholesky_svx_mat = *Math::GSL::Linalgc::gsl_linalg_cholesky_svx_mat; 200*gsl_linalg_cholesky_invert = *Math::GSL::Linalgc::gsl_linalg_cholesky_invert; 201*gsl_linalg_cholesky_decomp_unit = *Math::GSL::Linalgc::gsl_linalg_cholesky_decomp_unit; 202*gsl_linalg_cholesky_scale = *Math::GSL::Linalgc::gsl_linalg_cholesky_scale; 203*gsl_linalg_cholesky_scale_apply = *Math::GSL::Linalgc::gsl_linalg_cholesky_scale_apply; 204*gsl_linalg_cholesky_decomp2 = *Math::GSL::Linalgc::gsl_linalg_cholesky_decomp2; 205*gsl_linalg_cholesky_svx2 = *Math::GSL::Linalgc::gsl_linalg_cholesky_svx2; 206*gsl_linalg_cholesky_solve2 = *Math::GSL::Linalgc::gsl_linalg_cholesky_solve2; 207*gsl_linalg_cholesky_rcond = *Math::GSL::Linalgc::gsl_linalg_cholesky_rcond; 208*gsl_linalg_complex_cholesky_decomp = *Math::GSL::Linalgc::gsl_linalg_complex_cholesky_decomp; 209*gsl_linalg_complex_cholesky_solve = *Math::GSL::Linalgc::gsl_linalg_complex_cholesky_solve; 210*gsl_linalg_complex_cholesky_svx = *Math::GSL::Linalgc::gsl_linalg_complex_cholesky_svx; 211*gsl_linalg_complex_cholesky_invert = *Math::GSL::Linalgc::gsl_linalg_complex_cholesky_invert; 212*gsl_linalg_pcholesky_decomp = *Math::GSL::Linalgc::gsl_linalg_pcholesky_decomp; 213*gsl_linalg_pcholesky_solve = *Math::GSL::Linalgc::gsl_linalg_pcholesky_solve; 214*gsl_linalg_pcholesky_svx = *Math::GSL::Linalgc::gsl_linalg_pcholesky_svx; 215*gsl_linalg_pcholesky_decomp2 = *Math::GSL::Linalgc::gsl_linalg_pcholesky_decomp2; 216*gsl_linalg_pcholesky_solve2 = *Math::GSL::Linalgc::gsl_linalg_pcholesky_solve2; 217*gsl_linalg_pcholesky_svx2 = *Math::GSL::Linalgc::gsl_linalg_pcholesky_svx2; 218*gsl_linalg_pcholesky_invert = *Math::GSL::Linalgc::gsl_linalg_pcholesky_invert; 219*gsl_linalg_pcholesky_rcond = *Math::GSL::Linalgc::gsl_linalg_pcholesky_rcond; 220*gsl_linalg_mcholesky_decomp = *Math::GSL::Linalgc::gsl_linalg_mcholesky_decomp; 221*gsl_linalg_mcholesky_solve = *Math::GSL::Linalgc::gsl_linalg_mcholesky_solve; 222*gsl_linalg_mcholesky_svx = *Math::GSL::Linalgc::gsl_linalg_mcholesky_svx; 223*gsl_linalg_mcholesky_rcond = *Math::GSL::Linalgc::gsl_linalg_mcholesky_rcond; 224*gsl_linalg_mcholesky_invert = *Math::GSL::Linalgc::gsl_linalg_mcholesky_invert; 225*gsl_linalg_cholesky_band_decomp = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_decomp; 226*gsl_linalg_cholesky_band_solve = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_solve; 227*gsl_linalg_cholesky_band_svx = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_svx; 228*gsl_linalg_cholesky_band_solvem = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_solvem; 229*gsl_linalg_cholesky_band_svxm = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_svxm; 230*gsl_linalg_cholesky_band_invert = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_invert; 231*gsl_linalg_cholesky_band_unpack = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_unpack; 232*gsl_linalg_cholesky_band_scale = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_scale; 233*gsl_linalg_cholesky_band_scale_apply = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_scale_apply; 234*gsl_linalg_cholesky_band_rcond = *Math::GSL::Linalgc::gsl_linalg_cholesky_band_rcond; 235*gsl_linalg_ldlt_decomp = *Math::GSL::Linalgc::gsl_linalg_ldlt_decomp; 236*gsl_linalg_ldlt_solve = *Math::GSL::Linalgc::gsl_linalg_ldlt_solve; 237*gsl_linalg_ldlt_svx = *Math::GSL::Linalgc::gsl_linalg_ldlt_svx; 238*gsl_linalg_ldlt_rcond = *Math::GSL::Linalgc::gsl_linalg_ldlt_rcond; 239*gsl_linalg_ldlt_band_decomp = *Math::GSL::Linalgc::gsl_linalg_ldlt_band_decomp; 240*gsl_linalg_ldlt_band_solve = *Math::GSL::Linalgc::gsl_linalg_ldlt_band_solve; 241*gsl_linalg_ldlt_band_svx = *Math::GSL::Linalgc::gsl_linalg_ldlt_band_svx; 242*gsl_linalg_ldlt_band_unpack = *Math::GSL::Linalgc::gsl_linalg_ldlt_band_unpack; 243*gsl_linalg_ldlt_band_rcond = *Math::GSL::Linalgc::gsl_linalg_ldlt_band_rcond; 244*gsl_linalg_symmtd_decomp = *Math::GSL::Linalgc::gsl_linalg_symmtd_decomp; 245*gsl_linalg_symmtd_unpack = *Math::GSL::Linalgc::gsl_linalg_symmtd_unpack; 246*gsl_linalg_symmtd_unpack_T = *Math::GSL::Linalgc::gsl_linalg_symmtd_unpack_T; 247*gsl_linalg_hermtd_decomp = *Math::GSL::Linalgc::gsl_linalg_hermtd_decomp; 248*gsl_linalg_hermtd_unpack = *Math::GSL::Linalgc::gsl_linalg_hermtd_unpack; 249*gsl_linalg_hermtd_unpack_T = *Math::GSL::Linalgc::gsl_linalg_hermtd_unpack_T; 250*gsl_linalg_HH_solve = *Math::GSL::Linalgc::gsl_linalg_HH_solve; 251*gsl_linalg_HH_svx = *Math::GSL::Linalgc::gsl_linalg_HH_svx; 252*gsl_linalg_solve_symm_tridiag = *Math::GSL::Linalgc::gsl_linalg_solve_symm_tridiag; 253*gsl_linalg_solve_tridiag = *Math::GSL::Linalgc::gsl_linalg_solve_tridiag; 254*gsl_linalg_solve_symm_cyc_tridiag = *Math::GSL::Linalgc::gsl_linalg_solve_symm_cyc_tridiag; 255*gsl_linalg_solve_cyc_tridiag = *Math::GSL::Linalgc::gsl_linalg_solve_cyc_tridiag; 256*gsl_linalg_bidiag_decomp = *Math::GSL::Linalgc::gsl_linalg_bidiag_decomp; 257*gsl_linalg_bidiag_unpack = *Math::GSL::Linalgc::gsl_linalg_bidiag_unpack; 258*gsl_linalg_bidiag_unpack2 = *Math::GSL::Linalgc::gsl_linalg_bidiag_unpack2; 259*gsl_linalg_bidiag_unpack_B = *Math::GSL::Linalgc::gsl_linalg_bidiag_unpack_B; 260*gsl_linalg_balance_matrix = *Math::GSL::Linalgc::gsl_linalg_balance_matrix; 261*gsl_linalg_balance_accum = *Math::GSL::Linalgc::gsl_linalg_balance_accum; 262*gsl_linalg_balance_columns = *Math::GSL::Linalgc::gsl_linalg_balance_columns; 263*gsl_linalg_tri_rcond = *Math::GSL::Linalgc::gsl_linalg_tri_rcond; 264*gsl_linalg_tri_upper_rcond = *Math::GSL::Linalgc::gsl_linalg_tri_upper_rcond; 265*gsl_linalg_tri_lower_rcond = *Math::GSL::Linalgc::gsl_linalg_tri_lower_rcond; 266*gsl_linalg_invnorm1 = *Math::GSL::Linalgc::gsl_linalg_invnorm1; 267*gsl_linalg_tri_upper_invert = *Math::GSL::Linalgc::gsl_linalg_tri_upper_invert; 268*gsl_linalg_tri_lower_invert = *Math::GSL::Linalgc::gsl_linalg_tri_lower_invert; 269*gsl_linalg_tri_upper_unit_invert = *Math::GSL::Linalgc::gsl_linalg_tri_upper_unit_invert; 270*gsl_linalg_tri_lower_unit_invert = *Math::GSL::Linalgc::gsl_linalg_tri_lower_unit_invert; 271*gsl_linalg_tri_invert = *Math::GSL::Linalgc::gsl_linalg_tri_invert; 272*gsl_linalg_complex_tri_invert = *Math::GSL::Linalgc::gsl_linalg_complex_tri_invert; 273*gsl_linalg_tri_LTL = *Math::GSL::Linalgc::gsl_linalg_tri_LTL; 274*gsl_linalg_tri_UL = *Math::GSL::Linalgc::gsl_linalg_tri_UL; 275*gsl_linalg_complex_tri_LHL = *Math::GSL::Linalgc::gsl_linalg_complex_tri_LHL; 276*gsl_linalg_complex_tri_UL = *Math::GSL::Linalgc::gsl_linalg_complex_tri_UL; 277*gsl_linalg_givens = *Math::GSL::Linalgc::gsl_linalg_givens; 278*gsl_linalg_givens_gv = *Math::GSL::Linalgc::gsl_linalg_givens_gv; 279*gsl_permutation_alloc = *Math::GSL::Linalgc::gsl_permutation_alloc; 280*gsl_permutation_calloc = *Math::GSL::Linalgc::gsl_permutation_calloc; 281*gsl_permutation_init = *Math::GSL::Linalgc::gsl_permutation_init; 282*gsl_permutation_free = *Math::GSL::Linalgc::gsl_permutation_free; 283*gsl_permutation_memcpy = *Math::GSL::Linalgc::gsl_permutation_memcpy; 284*gsl_permutation_fread = *Math::GSL::Linalgc::gsl_permutation_fread; 285*gsl_permutation_fwrite = *Math::GSL::Linalgc::gsl_permutation_fwrite; 286*gsl_permutation_fscanf = *Math::GSL::Linalgc::gsl_permutation_fscanf; 287*gsl_permutation_fprintf = *Math::GSL::Linalgc::gsl_permutation_fprintf; 288*gsl_permutation_size = *Math::GSL::Linalgc::gsl_permutation_size; 289*gsl_permutation_data = *Math::GSL::Linalgc::gsl_permutation_data; 290*gsl_permutation_swap = *Math::GSL::Linalgc::gsl_permutation_swap; 291*gsl_permutation_valid = *Math::GSL::Linalgc::gsl_permutation_valid; 292*gsl_permutation_reverse = *Math::GSL::Linalgc::gsl_permutation_reverse; 293*gsl_permutation_inverse = *Math::GSL::Linalgc::gsl_permutation_inverse; 294*gsl_permutation_next = *Math::GSL::Linalgc::gsl_permutation_next; 295*gsl_permutation_prev = *Math::GSL::Linalgc::gsl_permutation_prev; 296*gsl_permutation_mul = *Math::GSL::Linalgc::gsl_permutation_mul; 297*gsl_permutation_linear_to_canonical = *Math::GSL::Linalgc::gsl_permutation_linear_to_canonical; 298*gsl_permutation_canonical_to_linear = *Math::GSL::Linalgc::gsl_permutation_canonical_to_linear; 299*gsl_permutation_inversions = *Math::GSL::Linalgc::gsl_permutation_inversions; 300*gsl_permutation_linear_cycles = *Math::GSL::Linalgc::gsl_permutation_linear_cycles; 301*gsl_permutation_canonical_cycles = *Math::GSL::Linalgc::gsl_permutation_canonical_cycles; 302*gsl_permutation_get = *Math::GSL::Linalgc::gsl_permutation_get; 303*gsl_complex_polar = *Math::GSL::Linalgc::gsl_complex_polar; 304*gsl_complex_rect = *Math::GSL::Linalgc::gsl_complex_rect; 305*gsl_complex_arg = *Math::GSL::Linalgc::gsl_complex_arg; 306*gsl_complex_abs = *Math::GSL::Linalgc::gsl_complex_abs; 307*gsl_complex_abs2 = *Math::GSL::Linalgc::gsl_complex_abs2; 308*gsl_complex_logabs = *Math::GSL::Linalgc::gsl_complex_logabs; 309*gsl_complex_add = *Math::GSL::Linalgc::gsl_complex_add; 310*gsl_complex_sub = *Math::GSL::Linalgc::gsl_complex_sub; 311*gsl_complex_mul = *Math::GSL::Linalgc::gsl_complex_mul; 312*gsl_complex_div = *Math::GSL::Linalgc::gsl_complex_div; 313*gsl_complex_add_real = *Math::GSL::Linalgc::gsl_complex_add_real; 314*gsl_complex_sub_real = *Math::GSL::Linalgc::gsl_complex_sub_real; 315*gsl_complex_mul_real = *Math::GSL::Linalgc::gsl_complex_mul_real; 316*gsl_complex_div_real = *Math::GSL::Linalgc::gsl_complex_div_real; 317*gsl_complex_add_imag = *Math::GSL::Linalgc::gsl_complex_add_imag; 318*gsl_complex_sub_imag = *Math::GSL::Linalgc::gsl_complex_sub_imag; 319*gsl_complex_mul_imag = *Math::GSL::Linalgc::gsl_complex_mul_imag; 320*gsl_complex_div_imag = *Math::GSL::Linalgc::gsl_complex_div_imag; 321*gsl_complex_conjugate = *Math::GSL::Linalgc::gsl_complex_conjugate; 322*gsl_complex_inverse = *Math::GSL::Linalgc::gsl_complex_inverse; 323*gsl_complex_negative = *Math::GSL::Linalgc::gsl_complex_negative; 324*gsl_complex_sqrt = *Math::GSL::Linalgc::gsl_complex_sqrt; 325*gsl_complex_sqrt_real = *Math::GSL::Linalgc::gsl_complex_sqrt_real; 326*gsl_complex_pow = *Math::GSL::Linalgc::gsl_complex_pow; 327*gsl_complex_pow_real = *Math::GSL::Linalgc::gsl_complex_pow_real; 328*gsl_complex_exp = *Math::GSL::Linalgc::gsl_complex_exp; 329*gsl_complex_log = *Math::GSL::Linalgc::gsl_complex_log; 330*gsl_complex_log10 = *Math::GSL::Linalgc::gsl_complex_log10; 331*gsl_complex_log_b = *Math::GSL::Linalgc::gsl_complex_log_b; 332*gsl_complex_sin = *Math::GSL::Linalgc::gsl_complex_sin; 333*gsl_complex_cos = *Math::GSL::Linalgc::gsl_complex_cos; 334*gsl_complex_sec = *Math::GSL::Linalgc::gsl_complex_sec; 335*gsl_complex_csc = *Math::GSL::Linalgc::gsl_complex_csc; 336*gsl_complex_tan = *Math::GSL::Linalgc::gsl_complex_tan; 337*gsl_complex_cot = *Math::GSL::Linalgc::gsl_complex_cot; 338*gsl_complex_arcsin = *Math::GSL::Linalgc::gsl_complex_arcsin; 339*gsl_complex_arcsin_real = *Math::GSL::Linalgc::gsl_complex_arcsin_real; 340*gsl_complex_arccos = *Math::GSL::Linalgc::gsl_complex_arccos; 341*gsl_complex_arccos_real = *Math::GSL::Linalgc::gsl_complex_arccos_real; 342*gsl_complex_arcsec = *Math::GSL::Linalgc::gsl_complex_arcsec; 343*gsl_complex_arcsec_real = *Math::GSL::Linalgc::gsl_complex_arcsec_real; 344*gsl_complex_arccsc = *Math::GSL::Linalgc::gsl_complex_arccsc; 345*gsl_complex_arccsc_real = *Math::GSL::Linalgc::gsl_complex_arccsc_real; 346*gsl_complex_arctan = *Math::GSL::Linalgc::gsl_complex_arctan; 347*gsl_complex_arccot = *Math::GSL::Linalgc::gsl_complex_arccot; 348*gsl_complex_sinh = *Math::GSL::Linalgc::gsl_complex_sinh; 349*gsl_complex_cosh = *Math::GSL::Linalgc::gsl_complex_cosh; 350*gsl_complex_sech = *Math::GSL::Linalgc::gsl_complex_sech; 351*gsl_complex_csch = *Math::GSL::Linalgc::gsl_complex_csch; 352*gsl_complex_tanh = *Math::GSL::Linalgc::gsl_complex_tanh; 353*gsl_complex_coth = *Math::GSL::Linalgc::gsl_complex_coth; 354*gsl_complex_arcsinh = *Math::GSL::Linalgc::gsl_complex_arcsinh; 355*gsl_complex_arccosh = *Math::GSL::Linalgc::gsl_complex_arccosh; 356*gsl_complex_arccosh_real = *Math::GSL::Linalgc::gsl_complex_arccosh_real; 357*gsl_complex_arcsech = *Math::GSL::Linalgc::gsl_complex_arcsech; 358*gsl_complex_arccsch = *Math::GSL::Linalgc::gsl_complex_arccsch; 359*gsl_complex_arctanh = *Math::GSL::Linalgc::gsl_complex_arctanh; 360*gsl_complex_arctanh_real = *Math::GSL::Linalgc::gsl_complex_arctanh_real; 361*gsl_complex_arccoth = *Math::GSL::Linalgc::gsl_complex_arccoth; 362 363############# Class : Math::GSL::Linalg::gsl_permutation_struct ############## 364 365package Math::GSL::Linalg::gsl_permutation_struct; 366use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 367@ISA = qw( Math::GSL::Linalg ); 368%OWNER = (); 369%ITERATORS = (); 370*swig_size_get = *Math::GSL::Linalgc::gsl_permutation_struct_size_get; 371*swig_size_set = *Math::GSL::Linalgc::gsl_permutation_struct_size_set; 372*swig_data_get = *Math::GSL::Linalgc::gsl_permutation_struct_data_get; 373*swig_data_set = *Math::GSL::Linalgc::gsl_permutation_struct_data_set; 374sub new { 375 my $pkg = shift; 376 my $self = Math::GSL::Linalgc::new_gsl_permutation_struct(@_); 377 bless $self, $pkg if defined($self); 378} 379 380sub DESTROY { 381 return unless $_[0]->isa('HASH'); 382 my $self = tied(%{$_[0]}); 383 return unless defined $self; 384 delete $ITERATORS{$self}; 385 if (exists $OWNER{$self}) { 386 Math::GSL::Linalgc::delete_gsl_permutation_struct($self); 387 delete $OWNER{$self}; 388 } 389} 390 391sub DISOWN { 392 my $self = shift; 393 my $ptr = tied(%$self); 394 delete $OWNER{$ptr}; 395} 396 397sub ACQUIRE { 398 my $self = shift; 399 my $ptr = tied(%$self); 400 $OWNER{$ptr} = 1; 401} 402 403 404############# Class : Math::GSL::Linalg::gsl_complex ############## 405 406package Math::GSL::Linalg::gsl_complex; 407use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 408@ISA = qw( Math::GSL::Linalg ); 409%OWNER = (); 410%ITERATORS = (); 411*swig_dat_get = *Math::GSL::Linalgc::gsl_complex_dat_get; 412*swig_dat_set = *Math::GSL::Linalgc::gsl_complex_dat_set; 413sub new { 414 my $pkg = shift; 415 my $self = Math::GSL::Linalgc::new_gsl_complex(@_); 416 bless $self, $pkg if defined($self); 417} 418 419sub DESTROY { 420 return unless $_[0]->isa('HASH'); 421 my $self = tied(%{$_[0]}); 422 return unless defined $self; 423 delete $ITERATORS{$self}; 424 if (exists $OWNER{$self}) { 425 Math::GSL::Linalgc::delete_gsl_complex($self); 426 delete $OWNER{$self}; 427 } 428} 429 430sub DISOWN { 431 my $self = shift; 432 my $ptr = tied(%$self); 433 delete $OWNER{$ptr}; 434} 435 436sub ACQUIRE { 437 my $self = shift; 438 my $ptr = tied(%$self); 439 $OWNER{$ptr} = 1; 440} 441 442 443############# Class : Math::GSL::Linalg::gsl_complex_long_double ############## 444 445package Math::GSL::Linalg::gsl_complex_long_double; 446use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 447@ISA = qw( Math::GSL::Linalg ); 448%OWNER = (); 449%ITERATORS = (); 450*swig_dat_get = *Math::GSL::Linalgc::gsl_complex_long_double_dat_get; 451*swig_dat_set = *Math::GSL::Linalgc::gsl_complex_long_double_dat_set; 452sub new { 453 my $pkg = shift; 454 my $self = Math::GSL::Linalgc::new_gsl_complex_long_double(@_); 455 bless $self, $pkg if defined($self); 456} 457 458sub DESTROY { 459 return unless $_[0]->isa('HASH'); 460 my $self = tied(%{$_[0]}); 461 return unless defined $self; 462 delete $ITERATORS{$self}; 463 if (exists $OWNER{$self}) { 464 Math::GSL::Linalgc::delete_gsl_complex_long_double($self); 465 delete $OWNER{$self}; 466 } 467} 468 469sub DISOWN { 470 my $self = shift; 471 my $ptr = tied(%$self); 472 delete $OWNER{$ptr}; 473} 474 475sub ACQUIRE { 476 my $self = shift; 477 my $ptr = tied(%$self); 478 $OWNER{$ptr} = 1; 479} 480 481 482############# Class : Math::GSL::Linalg::gsl_complex_float ############## 483 484package Math::GSL::Linalg::gsl_complex_float; 485use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 486@ISA = qw( Math::GSL::Linalg ); 487%OWNER = (); 488%ITERATORS = (); 489*swig_dat_get = *Math::GSL::Linalgc::gsl_complex_float_dat_get; 490*swig_dat_set = *Math::GSL::Linalgc::gsl_complex_float_dat_set; 491sub new { 492 my $pkg = shift; 493 my $self = Math::GSL::Linalgc::new_gsl_complex_float(@_); 494 bless $self, $pkg if defined($self); 495} 496 497sub DESTROY { 498 return unless $_[0]->isa('HASH'); 499 my $self = tied(%{$_[0]}); 500 return unless defined $self; 501 delete $ITERATORS{$self}; 502 if (exists $OWNER{$self}) { 503 Math::GSL::Linalgc::delete_gsl_complex_float($self); 504 delete $OWNER{$self}; 505 } 506} 507 508sub DISOWN { 509 my $self = shift; 510 my $ptr = tied(%$self); 511 delete $OWNER{$ptr}; 512} 513 514sub ACQUIRE { 515 my $self = shift; 516 my $ptr = tied(%$self); 517 $OWNER{$ptr} = 1; 518} 519 520 521# ------- VARIABLE STUBS -------- 522 523package Math::GSL::Linalg; 524 525*GSL_VERSION = *Math::GSL::Linalgc::GSL_VERSION; 526*GSL_MAJOR_VERSION = *Math::GSL::Linalgc::GSL_MAJOR_VERSION; 527*GSL_MINOR_VERSION = *Math::GSL::Linalgc::GSL_MINOR_VERSION; 528*GSL_POSZERO = *Math::GSL::Linalgc::GSL_POSZERO; 529*GSL_NEGZERO = *Math::GSL::Linalgc::GSL_NEGZERO; 530*GSL_SUCCESS = *Math::GSL::Linalgc::GSL_SUCCESS; 531*GSL_FAILURE = *Math::GSL::Linalgc::GSL_FAILURE; 532*GSL_CONTINUE = *Math::GSL::Linalgc::GSL_CONTINUE; 533*GSL_EDOM = *Math::GSL::Linalgc::GSL_EDOM; 534*GSL_ERANGE = *Math::GSL::Linalgc::GSL_ERANGE; 535*GSL_EFAULT = *Math::GSL::Linalgc::GSL_EFAULT; 536*GSL_EINVAL = *Math::GSL::Linalgc::GSL_EINVAL; 537*GSL_EFAILED = *Math::GSL::Linalgc::GSL_EFAILED; 538*GSL_EFACTOR = *Math::GSL::Linalgc::GSL_EFACTOR; 539*GSL_ESANITY = *Math::GSL::Linalgc::GSL_ESANITY; 540*GSL_ENOMEM = *Math::GSL::Linalgc::GSL_ENOMEM; 541*GSL_EBADFUNC = *Math::GSL::Linalgc::GSL_EBADFUNC; 542*GSL_ERUNAWAY = *Math::GSL::Linalgc::GSL_ERUNAWAY; 543*GSL_EMAXITER = *Math::GSL::Linalgc::GSL_EMAXITER; 544*GSL_EZERODIV = *Math::GSL::Linalgc::GSL_EZERODIV; 545*GSL_EBADTOL = *Math::GSL::Linalgc::GSL_EBADTOL; 546*GSL_ETOL = *Math::GSL::Linalgc::GSL_ETOL; 547*GSL_EUNDRFLW = *Math::GSL::Linalgc::GSL_EUNDRFLW; 548*GSL_EOVRFLW = *Math::GSL::Linalgc::GSL_EOVRFLW; 549*GSL_ELOSS = *Math::GSL::Linalgc::GSL_ELOSS; 550*GSL_EROUND = *Math::GSL::Linalgc::GSL_EROUND; 551*GSL_EBADLEN = *Math::GSL::Linalgc::GSL_EBADLEN; 552*GSL_ENOTSQR = *Math::GSL::Linalgc::GSL_ENOTSQR; 553*GSL_ESING = *Math::GSL::Linalgc::GSL_ESING; 554*GSL_EDIVERGE = *Math::GSL::Linalgc::GSL_EDIVERGE; 555*GSL_EUNSUP = *Math::GSL::Linalgc::GSL_EUNSUP; 556*GSL_EUNIMPL = *Math::GSL::Linalgc::GSL_EUNIMPL; 557*GSL_ECACHE = *Math::GSL::Linalgc::GSL_ECACHE; 558*GSL_ETABLE = *Math::GSL::Linalgc::GSL_ETABLE; 559*GSL_ENOPROG = *Math::GSL::Linalgc::GSL_ENOPROG; 560*GSL_ENOPROGJ = *Math::GSL::Linalgc::GSL_ENOPROGJ; 561*GSL_ETOLF = *Math::GSL::Linalgc::GSL_ETOLF; 562*GSL_ETOLX = *Math::GSL::Linalgc::GSL_ETOLX; 563*GSL_ETOLG = *Math::GSL::Linalgc::GSL_ETOLG; 564*GSL_EOF = *Math::GSL::Linalgc::GSL_EOF; 565*GSL_LINALG_MOD_NONE = *Math::GSL::Linalgc::GSL_LINALG_MOD_NONE; 566*GSL_LINALG_MOD_TRANSPOSE = *Math::GSL::Linalgc::GSL_LINALG_MOD_TRANSPOSE; 567*GSL_LINALG_MOD_CONJUGATE = *Math::GSL::Linalgc::GSL_LINALG_MOD_CONJUGATE; 568 569@EXPORT_OK = qw/$GSL_LINALG_MOD_NONE $GSL_LINALG_MOD_TRANSPOSE $GSL_LINALG_MOD_CONJUGATE 570 gsl_linalg_matmult gsl_linalg_matmult_mod 571 gsl_linalg_exponential_ss 572 gsl_linalg_householder_transform 573 gsl_linalg_complex_householder_transform 574 gsl_linalg_householder_hm 575 gsl_linalg_householder_mh 576 gsl_linalg_householder_hv 577 gsl_linalg_householder_hm1 578 gsl_linalg_complex_householder_hm 579 gsl_linalg_complex_householder_mh 580 gsl_linalg_complex_householder_hv 581 gsl_linalg_hessenberg_decomp 582 gsl_linalg_hessenberg_unpack 583 gsl_linalg_hessenberg_unpack_accum 584 gsl_linalg_hessenberg_set_zero 585 gsl_linalg_hessenberg_submatrix 586 gsl_linalg_hessenberg 587 gsl_linalg_hesstri_decomp 588 gsl_linalg_SV_decomp 589 gsl_linalg_SV_decomp_mod 590 gsl_linalg_SV_decomp_jacobi 591 gsl_linalg_SV_solve 592 gsl_linalg_LU_decomp 593 gsl_linalg_LU_solve 594 gsl_linalg_LU_svx 595 gsl_linalg_LU_refine 596 gsl_linalg_LU_invert 597 gsl_linalg_LU_det 598 gsl_linalg_LU_lndet 599 gsl_linalg_LU_sgndet 600 gsl_linalg_complex_LU_decomp 601 gsl_linalg_complex_LU_solve 602 gsl_linalg_complex_LU_svx 603 gsl_linalg_complex_LU_refine 604 gsl_linalg_complex_LU_invert 605 gsl_linalg_complex_LU_det 606 gsl_linalg_complex_LU_lndet 607 gsl_linalg_complex_LU_sgndet 608 gsl_linalg_QR_decomp 609 gsl_linalg_QR_solve 610 gsl_linalg_QR_svx 611 gsl_linalg_QR_lssolve 612 gsl_linalg_QR_QRsolve 613 gsl_linalg_QR_Rsolve 614 gsl_linalg_QR_Rsvx 615 gsl_linalg_QR_update 616 gsl_linalg_QR_QTvec 617 gsl_linalg_QR_Qvec 618 gsl_linalg_QR_QTmat 619 gsl_linalg_QR_unpack 620 gsl_linalg_R_solve 621 gsl_linalg_R_svx 622 gsl_linalg_QRPT_decomp 623 gsl_linalg_QRPT_decomp2 624 gsl_linalg_QRPT_solve 625 gsl_linalg_QRPT_svx 626 gsl_linalg_QRPT_QRsolve 627 gsl_linalg_QRPT_Rsolve 628 gsl_linalg_QRPT_Rsvx 629 gsl_linalg_QRPT_update 630 gsl_linalg_LQ_decomp 631 gsl_linalg_LQ_solve_T 632 gsl_linalg_LQ_svx_T 633 gsl_linalg_LQ_lssolve_T 634 gsl_linalg_LQ_Lsolve_T 635 gsl_linalg_LQ_Lsvx_T 636 gsl_linalg_L_solve_T 637 gsl_linalg_LQ_vecQ 638 gsl_linalg_LQ_vecQT 639 gsl_linalg_LQ_unpack 640 gsl_linalg_LQ_update 641 gsl_linalg_LQ_LQsolve 642 gsl_linalg_PTLQ_decomp 643 gsl_linalg_PTLQ_decomp2 644 gsl_linalg_PTLQ_solve_T 645 gsl_linalg_PTLQ_svx_T 646 gsl_linalg_PTLQ_LQsolve_T 647 gsl_linalg_PTLQ_Lsolve_T 648 gsl_linalg_PTLQ_Lsvx_T 649 gsl_linalg_PTLQ_update 650 gsl_linalg_cholesky_decomp 651 gsl_linalg_cholesky_solve 652 gsl_linalg_cholesky_svx 653 gsl_linalg_cholesky_decomp_unit 654 gsl_linalg_complex_cholesky_decomp 655 gsl_linalg_complex_cholesky_solve 656 gsl_linalg_complex_cholesky_svx 657 gsl_linalg_symmtd_decomp 658 gsl_linalg_symmtd_unpack 659 gsl_linalg_symmtd_unpack_T 660 gsl_linalg_hermtd_decomp 661 gsl_linalg_hermtd_unpack 662 gsl_linalg_hermtd_unpack_T 663 gsl_linalg_HH_solve 664 gsl_linalg_HH_svx 665 gsl_linalg_solve_symm_tridiag 666 gsl_linalg_solve_tridiag 667 gsl_linalg_solve_symm_cyc_tridiag 668 gsl_linalg_solve_cyc_tridiag 669 gsl_linalg_bidiag_decomp 670 gsl_linalg_bidiag_unpack 671 gsl_linalg_bidiag_unpack2 672 gsl_linalg_bidiag_unpack_B 673 gsl_linalg_balance_matrix 674 gsl_linalg_balance_accum 675 gsl_linalg_balance_columns 676 gsl_linalg_givens gsl_linalg_givens_gv 677 /; 678%EXPORT_TAGS = ( all =>[ @EXPORT_OK ] ); 679 680__END__ 681 682=encoding utf8 683 684=head1 NAME 685 686Math::GSL::Linalg - Functions for solving linear systems 687 688=head1 SYNOPSIS 689 690 use Math::GSL::Linalg qw/:all/; 691 692=head1 DESCRIPTION 693 694 695Here is a list of all the functions included in this module : 696 697=over 698 699=item gsl_linalg_matmult 700 701=item gsl_linalg_matmult_mod 702 703=item gsl_linalg_exponential_ss 704 705=item gsl_linalg_householder_transform 706 707=item gsl_linalg_complex_householder_transform 708 709=item gsl_linalg_householder_hm($tau, $v, $A) - This function applies the Householder matrix P defined by the scalar $tau and the vector $v to the left-hand side of the matrix $A. On output the result P A is stored in $A. The function returns 0 if it succeded, 1 otherwise. 710 711=item gsl_linalg_householder_mh($tau, $v, $A) - This function applies the Householder matrix P defined by the scalar $tau and the vector $v to the right-hand side of the matrix $A. On output the result A P is stored in $A. 712 713=item gsl_linalg_householder_hv($tau, $v, $w) - This function applies the Householder transformation P defined by the scalar $tau and the vector $v to the vector $w. On output the result P w is stored in $w. 714 715=item gsl_linalg_householder_hm1 716 717=item gsl_linalg_givens($a,$b,$c,$s) 718 719Performs a Givens rotation on the vector ($a,$b) and stores the answer in $c and $s. 720 721=item gsl_linalg_givens_gv($v, $i,$j, $c, $s) 722 723Performs a Givens rotation on the $i and $j-th elements of $v, storing them in $c and $s. 724 725=item gsl_linalg_complex_householder_hm($tau, $v, $A) - Does the same operation than gsl_linalg_householder_hm but with the complex matrix $A, the complex value $tau and the complex vector $v. 726 727=item gsl_linalg_complex_householder_mh($tau, $v, $A) - Does the same operation than gsl_linalg_householder_mh but with the complex matrix $A, the complex value $tau and the complex vector $v. 728 729=item gsl_linalg_complex_householder_hv($tau, $v, $w) - Does the same operation than gsl_linalg_householder_hv but with the complex value $tau and the complex vectors $v and $w. 730 731=item gsl_linalg_hessenberg_decomp($A, $tau) - This function computes the Hessenberg decomposition of the matrix $A by applying the similarity transformation H = U^T A U. On output, H is stored in the upper portion of $A. The information required to construct the matrix U is stored in the lower triangular portion of $A. U is a product of N - 2 Householder matrices. The Householder vectors are stored in the lower portion of $A (below the subdiagonal) and the Householder coefficients are stored in the vector $tau. tau must be of length N. The function returns 0 if it succeded, 1 otherwise. 732 733=item gsl_linalg_hessenberg_unpack($H, $tau, $U) - This function constructs the orthogonal matrix $U from the information stored in the Hessenberg matrix $H along with the vector $tau. $H and $tau are outputs from gsl_linalg_hessenberg_decomp. 734 735=item gsl_linalg_hessenberg_unpack_accum($H, $tau, $V) - This function is similar to gsl_linalg_hessenberg_unpack, except it accumulates the matrix U into $V, so that V' = VU. The matrix $V must be initialized prior to calling this function. Setting $V to the identity matrix provides the same result as gsl_linalg_hessenberg_unpack. If $H is order N, then $V must have N columns but may have any number of rows. 736 737=item gsl_linalg_hessenberg_set_zero($H) - This function sets the lower triangular portion of $H, below the subdiagonal, to zero. It is useful for clearing out the Householder vectors after calling gsl_linalg_hessenberg_decomp. 738 739=item gsl_linalg_hessenberg_submatrix 740 741=item gsl_linalg_hessenberg 742 743=item gsl_linalg_hesstri_decomp($A, $B, $U, $V, $work) - This function computes the Hessenberg-Triangular decomposition of the matrix pair ($A, $B). On output, H is stored in $A, and R is stored in $B. If $U and $V are provided (they may be null), the similarity transformations are stored in them. Additional workspace of length N is needed in the vector $work. 744 745=item gsl_linalg_SV_decomp($A, $V, $S, $work) - This function factorizes the M-by-N matrix $A into the singular value decomposition A = U S V^T for M >= N. On output the matrix $A is replaced by U. The diagonal elements of the singular value matrix S are stored in the vector $S. The singular values are non-negative and form a non-increasing sequence from S_1 to S_N. The matrix $V contains the elements of V in untransposed form. To form the product U S V^T it is necessary to take the transpose of V. A workspace of length N is required in vector $work. This routine uses the Golub-Reinsch SVD algorithm. 746 747=item gsl_linalg_SV_decomp_mod($A, $X, $V, $S, $work) - This function computes the SVD using the modified Golub-Reinsch algorithm, which is faster for M>>N. It requires the vector $work of length N and the N-by-N matrix $X as additional working space. $A and $V are matrices while $S is a vector. 748 749=item gsl_linalg_SV_decomp_jacobi($A, $V, $S) - This function computes the SVD of the M-by-N matrix $A using one-sided Jacobi orthogonalization for M >= N. The Jacobi method can compute singular values to higher relative accuracy than Golub-Reinsch algorithms. $V is a matrix while $S is a vector. 750 751=item gsl_linalg_SV_solve($U, $V, $S, $b, $x) - This function solves the system A x = b using the singular value decomposition ($U, $S, $V) of A given by gsl_linalg_SV_decomp. Only non-zero singular values are used in computing the solution. The parts of the solution corresponding to singular values of zero are ignored. Other singular values can be edited out by setting them to zero before calling this function. In the over-determined case where A has more rows than columns the system is solved in the least squares sense, returning the solution x which minimizes ||A x - b||_2. 752 753=item gsl_linalg_LU_decomp($a, $p) - factorize the matrix $a into the LU decomposition PA = LU. On output the diagonal and upper triangular part of the input matrix A contain the matrix U. The lower triangular part of the input matrix (excluding the diagonal) contains L. The diagonal elements of L are unity, and are not stored. The function returns two value, the first is 0 if the operation succeeded, 1 otherwise, and the second is the sign of the permutation. 754 755=item gsl_linalg_LU_solve($LU, $p, $b, $x) - This function solves the square system A x = b using the LU decomposition of the matrix A into (LU, p) given by gsl_linalg_LU_decomp. $LU is a matrix, $p a permutation and $b and $x are vectors. The function returns 1 if the operation succeded, 0 otherwise. 756 757=item gsl_linalg_LU_svx($LU, $p, $x) - This function solves the square system A x = b in-place using the LU decomposition of A into (LU,p). On input $x should contain the right-hand side b, which is replaced by the solution on output. $LU is a matrix, $p a permutation and $x is a vector. The function returns 1 if the operation succeded, 0 otherwise. 758 759=item gsl_linalg_LU_refine($A, $LU, $p, $b, $x, $residual) - This function apply an iterative improvement to $x, the solution of $A $x = $b, using the LU decomposition of $A into ($LU,$p). The initial residual $r = $A $x - $b (where $x and $b are vectors) is also computed and stored in the vector $residual. 760 761=item gsl_linalg_LU_invert($LU, $p, $inverse) - This function computes the inverse of a matrix A from its LU decomposition stored in the matrix $LU and the permutation $p, storing the result in the matrix $inverse. 762 763=item gsl_linalg_LU_det($LU, $signum) - This function returns the determinant of a matrix A from its LU decomposition stored in the $LU matrix. It needs the integer $signum which is the sign of the permutation returned by gsl_linalg_LU_decomp. 764 765=item gsl_linalg_LU_lndet($LU) - This function returns the logarithm of the absolute value of the determinant of a matrix A, from its LU decomposition stored in the $LU matrix. 766 767=item gsl_linalg_LU_sgndet($LU, $signum) - This functions computes the sign or phase factor of the determinant of a matrix A, det(A)/|det(A)|, from its LU decomposition, $LU. 768 769=item gsl_linalg_complex_LU_decomp($A, $p) - Does the same operation than gsl_linalg_LU_decomp but on the complex matrix $A. 770 771=item gsl_linalg_complex_LU_solve($LU, $p, $b, $x) - This functions solve the square system A x = b using the LU decomposition of A into ($LU, $p) given by gsl_linalg_complex_LU_decomp. 772 773=item gsl_linalg_complex_LU_svx($LU, $p, $x) - Does the same operation than gsl_linalg_LU_svx but on the complex matrix $LU and the complex vector $x. 774 775=item gsl_linalg_complex_LU_refine($A, $LU, $p, $b, $x, $residual) - Does the same operation than gsl_linalg_LU_refine but on the complex matrices $A and $LU and with the complex vectors $b, $x and $residual. 776 777=item gsl_linalg_complex_LU_invert($LU, $p, $inverse) - Does the same operation than gsl_linalg_LU_invert but on the complex matrces $LU and $inverse. 778 779=item gsl_linalg_complex_LU_det($LU, $signum) - Does the same operation than gsl_linalg_LU_det but on the complex matrix $LU. 780 781=item gsl_linalg_complex_LU_lndet($LU) - Does the same operation than gsl_linalg_LU_det but on the complex matrix $LU. 782 783=item gsl_linalg_complex_LU_sgndet($LU, $signum) - Does the same operation than gsl_linalg_LU_sgndet but on the complex matrix $LU. 784 785=item gsl_linalg_QR_decomp($a, $tau) - factorize the M-by-N matrix A into the QR decomposition A = Q R. On output the diagonal and upper triangular part of the input matrix $a contain the matrix R. The vector $tau and the columns of the lower triangular part of the matrix $a contain the Householder coefficients and Householder vectors which encode the orthogonal matrix Q. The vector tau must be of length k= min(M,N). 786 787=item gsl_linalg_QR_solve($QR, $tau, $b, $x) - This function solves the square system A x = b using the QR decomposition of A into (QR, tau) given by gsl_linalg_QR_decomp. $QR is matrix, and $tau, $b and $x are vectors. 788 789=item gsl_linalg_QR_svx($QR, $tau, $x) - This function solves the square system A x = b in-place using the QR decomposition of A into the matrix $QR and the vector $tau given by gsl_linalg_QR_decomp. On input, the vector $x should contain the right-hand side b, which is replaced by the solution on output. 790 791=item gsl_linalg_QR_lssolve($QR, $tau, $b, $x, $residual) - This function finds the least squares solution to the overdetermined system $A $x = $b where the matrix $A has more rows than columns. The least squares solution minimizes the Euclidean norm of the residual, ||Ax - b||.The routine uses the $QR decomposition of $A into ($QR, $tau) given by gsl_linalg_QR_decomp. The solution is returned in $x. The residual is computed as a by-product and stored in residual. The function returns 0 if it succeded, 1 otherwise. 792 793=item gsl_linalg_QR_QRsolve($Q, $R, $b, $x) - This function solves the system $R $x = $Q**T $b for $x. It can be used when the $QR decomposition of a matrix is available in unpacked form as ($Q, $R). The function returns 0 if it succeded, 1 otherwise. 794 795=item gsl_linalg_QR_Rsolve($QR, $b, $x) - This function solves the triangular system R $x = $b for $x. It may be useful if the product b' = Q^T b has already been computed using gsl_linalg_QR_QTvec. 796 797=item gsl_linalg_QR_Rsvx($QR, $x) - This function solves the triangular system R $x = b for $x in-place. On input $x should contain the right-hand side b and is replaced by the solution on output. This function may be useful if the product b' = Q^T b has already been computed using gsl_linalg_QR_QTvec. The function returns 0 if it succeded, 1 otherwise. 798 799=item gsl_linalg_QR_update($Q, $R, $b, $x) - This function performs a rank-1 update $w $v**T of the QR decomposition ($Q, $R). The update is given by Q'R' = Q R + w v^T where the output matrices Q' and R' are also orthogonal and right triangular. Note that w is destroyed by the update. The function returns 0 if it succeded, 1 otherwise. 800 801=item gsl_linalg_QR_QTvec($QR, $tau, $v) - This function applies the matrix Q^T encoded in the decomposition ($QR,$tau) to the vector $v, storing the result Q^T v in $v. The matrix multiplication is carried out directly using the encoding of the Householder vectors without needing to form the full matrix Q^T. The function returns 0 if it succeded, 1 otherwise. 802 803=item gsl_linalg_QR_Qvec($QR, $tau, $v) - This function applies the matrix Q encoded in the decomposition ($QR,$tau) to the vector $v, storing the result Q v in $v. The matrix multiplication is carried out directly using the encoding of the Householder vectors without needing to form the full matrix Q. The function returns 0 if it succeded, 1 otherwise. 804 805=item gsl_linalg_QR_QTmat($QR, $tau, $A) - This function applies the matrix Q^T encoded in the decomposition ($QR,$tau) to the matrix $A, storing the result Q^T A in $A. The matrix multiplication is carried out directly using the encoding of the Householder vectors without needing to form the full matrix Q^T. The function returns 0 if it succeded, 1 otherwise. 806 807=item gsl_linalg_QR_unpack($QR, $tau, $Q, $R) - This function unpacks the encoded QR decomposition ($QR,$tau) into the matrices $Q and $R, where $Q is M-by-M and $R is M-by-N. The function returns 0 if it succeded, 1 otherwise. 808 809=item gsl_linalg_R_solve($R, $b, $x) - This function solves the triangular system $R $x = $b for the N-by-N matrix $R. The function returns 0 if it succeded, 1 otherwise. 810 811=item gsl_linalg_R_svx($R, $x) - This function solves the triangular system $R $x = b in-place. On input $x should contain the right-hand side b, which is replaced by the solution on output. The function returns 0 if it succeded, 1 otherwise. 812 813=item gsl_linalg_QRPT_decomp($A, $tau, $p, $norm) - This function factorizes the M-by-N matrix $A into the QRP^T decomposition A = Q R P^T. On output the diagonal and upper triangular part of the input matrix contain the matrix R. The permutation matrix P is stored in the permutation $p. There's two value returned by this function : the first is 0 if the operation succeeded, 1 otherwise. The second is sign of the permutation. It has the value (-1)^n, where n is the number of interchanges in the permutation. The vector $tau and the columns of the lower triangular part of the matrix $A contain the Householder coefficients and vectors which encode the orthogonal matrix Q. The vector tau must be of length k=\min(M,N). The matrix Q is related to these components by, Q = Q_k ... Q_2 Q_1 where Q_i = I - \tau_i v_i v_i^T and v_i is the Householder vector v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)). This is the same storage scheme as used by lapack. The vector norm is a workspace of length N used for column pivoting. The algorithm used to perform the decomposition is Householder QR with column pivoting (Golub & Van Loan, Matrix Computations, Algorithm 5.4.1). 814 815=item gsl_linalg_QRPT_decomp2($A, $q, $r, $tau, $p, $norm) - This function factorizes the matrix $A into the decomposition A = Q R P^T without modifying $A itself and storing the output in the separate matrices $q and $r. For the rest, it operates exactly like gsl_linalg_QRPT_decomp 816 817=item gsl_linalg_QRPT_solve 818 819=item gsl_linalg_QRPT_svx 820 821=item gsl_linalg_QRPT_QRsolve 822 823=item gsl_linalg_QRPT_Rsolve 824 825=item gsl_linalg_QRPT_Rsvx 826 827=item gsl_linalg_QRPT_update 828 829=item gsl_linalg_LQ_decomp 830 831=item gsl_linalg_LQ_solve_T 832 833=item gsl_linalg_LQ_svx_T 834 835=item gsl_linalg_LQ_lssolve_T 836 837=item gsl_linalg_LQ_Lsolve_T 838 839=item gsl_linalg_LQ_Lsvx_T 840 841=item gsl_linalg_L_solve_T 842 843=item gsl_linalg_LQ_vecQ 844 845=item gsl_linalg_LQ_vecQT 846 847=item gsl_linalg_LQ_unpack 848 849=item gsl_linalg_LQ_update 850 851=item gsl_linalg_LQ_LQsolve 852 853=item gsl_linalg_PTLQ_decomp 854 855=item gsl_linalg_PTLQ_decomp2 856 857=item gsl_linalg_PTLQ_solve_T 858 859=item gsl_linalg_PTLQ_svx_T 860 861=item gsl_linalg_PTLQ_LQsolve_T 862 863=item gsl_linalg_PTLQ_Lsolve_T 864 865=item gsl_linalg_PTLQ_Lsvx_T 866 867=item gsl_linalg_PTLQ_update 868 869=item gsl_linalg_cholesky_decomp($A) - Factorize the symmetric, positive-definite square matrix $A into the Cholesky decomposition A = L L^T and stores it into the matrix $A. The function returns 0 if the operation succeeded, 0 otherwise. 870 871=item gsl_linalg_cholesky_solve($cholesky, $b, $x) - This function solves the system A x = b using the Cholesky decomposition of A into the matrix $cholesky given by gsl_linalg_cholesky_decomp. $b and $x are vectors. The function returns 0 if the operation succeeded, 0 otherwise. 872 873=item gsl_linalg_cholesky_svx($cholesky, $x) - This function solves the system A x = b in-place using the Cholesky decomposition of A into the matrix $cholesky given by gsl_linalg_cholesky_decomp. On input the vector $x should contain the right-hand side b, which is replaced by the solution on output. The function returns 0 if the operation succeeded, 0 otherwise. 874 875=item gsl_linalg_cholesky_decomp_unit 876 877=item gsl_linalg_complex_cholesky_decomp($A) - Factorize the symmetric, positive-definite square matrix $A which contains complex numbers into the Cholesky decomposition A = L L^T and stores it into the matrix $A. The function returns 0 if the operation succeeded, 0 otherwise. 878 879=item gsl_linalg_complex_cholesky_solve($cholesky, $b, $x) - This function solves the system A x = b using the Cholesky decomposition of A into the matrix $cholesky given by gsl_linalg_complex_cholesky_decomp. $b and $x are vectors. The function returns 0 if the operation succeeded, 0 otherwise. 880 881=item gsl_linalg_complex_cholesky_svx($cholesky, $x) - This function solves the system A x = b in-place using the Cholesky decomposition of A into the matrix $cholesky given by gsl_linalg_complex_cholesky_decomp. On input the vector $x should contain the right-hand side b, which is replaced by the solution on output. The function returns 0 if the operation succeeded, 0 otherwise. 882 883=item gsl_linalg_symmtd_decomp($A, $tau) - This function factorizes the symmetric square matrix $A into the symmetric tridiagonal decomposition Q T Q^T. On output the diagonal and subdiagonal part of the input matrix $A contain the tridiagonal matrix T. The remaining lower triangular part of the input matrix contains the Householder vectors which, together with the Householder coefficients $tau, encode the orthogonal matrix Q. This storage scheme is the same as used by lapack. The upper triangular part of $A is not referenced. $tau is a vector. 884 885=item gsl_linalg_symmtd_unpack($A, $tau, $Q, $diag, $subdiag) - This function unpacks the encoded symmetric tridiagonal decomposition ($A, $tau) obtained from gsl_linalg_symmtd_decomp into the orthogonal matrix $Q, the vector of diagonal elements $diag and the vector of subdiagonal elements $subdiag. 886 887=item gsl_linalg_symmtd_unpack_T($A, $diag, $subdiag) - This function unpacks the diagonal and subdiagonal of the encoded symmetric tridiagonal decomposition ($A, $tau) obtained from gsl_linalg_symmtd_decomp into the vectors $diag and $subdiag. 888 889=item gsl_linalg_hermtd_decomp($A, $tau) - This function factorizes the hermitian matrix $A into the symmetric tridiagonal decomposition U T U^T. On output the real parts of the diagonal and subdiagonal part of the input matrix $A contain the tridiagonal matrix T. The remaining lower triangular part of the input matrix contains the Householder vectors which, together with the Householder coefficients $tau, encode the orthogonal matrix Q. This storage scheme is the same as used by lapack. The upper triangular part of $A and imaginary parts of the diagonal are not referenced. $A is a complex matrix and $tau a complex vector. 890 891=item gsl_linalg_hermtd_unpack($A, $tau, $U, $diag, $subdiag) - This function unpacks the encoded tridiagonal decomposition ($A, $tau) obtained from gsl_linalg_hermtd_decomp into the unitary complex matrix $U, the real vector of diagonal elements $diag and the real vector of subdiagonal elements $subdiag. 892 893=item gsl_linalg_hermtd_unpack_T($A, $diag, $subdiag) - This function unpacks the diagonal and subdiagonal of the encoded tridiagonal decomposition (A, tau) obtained from the gsl_linalg_hermtd_decomp into the real vectors $diag and $subdiag. 894 895=item gsl_linalg_HH_solve($a, $b, $x) - This function solves the system $A $x = $b directly using Householder transformations where $A is a matrix, $b and $x vectors. On output the solution is stored in $x and $b is not modified. $A is destroyed by the Householder transformations. 896 897=item gsl_linalg_HH_svx($A, $x) - This function solves the system $A $x = b in-place using Householder transformations where $A is a matrix, $b is a vector. On input $x should contain the right-hand side b, which is replaced by the solution on output. The matrix $A is destroyed by the Householder transformations. 898 899=item gsl_linalg_solve_symm_tridiag 900 901=item gsl_linalg_solve_tridiag 902 903=item gsl_linalg_solve_symm_cyc_tridiag 904 905=item gsl_linalg_solve_cyc_tridiag 906 907=item gsl_linalg_bidiag_decomp 908 909=item gsl_linalg_bidiag_unpack 910 911=item gsl_linalg_bidiag_unpack2 912 913=item gsl_linalg_bidiag_unpack_B 914 915=item gsl_linalg_balance_matrix 916 917=item gsl_linalg_balance_accum 918 919=item gsl_linalg_balance_columns 920 921 922 You have to add the functions you want to use inside the qw /put_function_here / with spaces between each function. You can also write use Math::GSL::Complex qw/:all/ to use all available functions of the module. 923 924For more informations on the functions, we refer you to the GSL official documentation: L<http://www.gnu.org/software/gsl/manual/html_node/> 925 926 927=back 928 929=head1 EXAMPLES 930 931This example shows how to compute the determinant of a matrix with the LU decomposition: 932 933 use Math::GSL::Matrix qw/:all/; 934 use Math::GSL::Permutation qw/:all/; 935 use Math::GSL::Linalg qw/:all/; 936 937 my $Matrix = gsl_matrix_alloc(4,4); 938 map { gsl_matrix_set($Matrix, 0, $_, $_+1) } (0..3); 939 940 gsl_matrix_set($Matrix,1, 0, 2); 941 gsl_matrix_set($Matrix, 1, 1, 3); 942 gsl_matrix_set($Matrix, 1, 2, 4); 943 gsl_matrix_set($Matrix, 1, 3, 1); 944 945 gsl_matrix_set($Matrix, 2, 0, 3); 946 gsl_matrix_set($Matrix, 2, 1, 4); 947 gsl_matrix_set($Matrix, 2, 2, 1); 948 gsl_matrix_set($Matrix, 2, 3, 2); 949 950 gsl_matrix_set($Matrix, 3, 0, 4); 951 gsl_matrix_set($Matrix, 3, 1, 1); 952 gsl_matrix_set($Matrix, 3, 2, 2); 953 gsl_matrix_set($Matrix, 3, 3, 3); 954 955 my $permutation = gsl_permutation_alloc(4); 956 gsl_permutation_init($permutation); 957 my ($result, $signum) = gsl_linalg_LU_decomp($Matrix, $permutation); 958 my $det = gsl_linalg_LU_det($Matrix, $signum); 959 print "The value of the determinant of the matrix is $det \n"; 960 961=head1 AUTHORS 962 963Jonathan "Duke" Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com> 964 965=head1 COPYRIGHT AND LICENSE 966 967Copyright (C) 2008-2021 Jonathan "Duke" Leto and Thierry Moisan 968 969This program is free software; you can redistribute it and/or modify it 970under the same terms as Perl itself. 971 972=cut 9731; 974