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