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::Multifit;
8use base qw(Exporter);
9use base qw(DynaLoader);
10package Math::GSL::Multifitc;
11bootstrap Math::GSL::Multifit;
12package Math::GSL::Multifit;
13@EXPORT = qw();
14
15# ---------- BASE METHODS -------------
16
17package Math::GSL::Multifit;
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::Multifit;
51
52*gsl_error = *Math::GSL::Multifitc::gsl_error;
53*gsl_stream_printf = *Math::GSL::Multifitc::gsl_stream_printf;
54*gsl_strerror = *Math::GSL::Multifitc::gsl_strerror;
55*gsl_set_error_handler = *Math::GSL::Multifitc::gsl_set_error_handler;
56*gsl_set_error_handler_off = *Math::GSL::Multifitc::gsl_set_error_handler_off;
57*gsl_set_stream_handler = *Math::GSL::Multifitc::gsl_set_stream_handler;
58*gsl_set_stream = *Math::GSL::Multifitc::gsl_set_stream;
59*gsl_permutation_alloc = *Math::GSL::Multifitc::gsl_permutation_alloc;
60*gsl_permutation_calloc = *Math::GSL::Multifitc::gsl_permutation_calloc;
61*gsl_permutation_init = *Math::GSL::Multifitc::gsl_permutation_init;
62*gsl_permutation_free = *Math::GSL::Multifitc::gsl_permutation_free;
63*gsl_permutation_memcpy = *Math::GSL::Multifitc::gsl_permutation_memcpy;
64*gsl_permutation_fread = *Math::GSL::Multifitc::gsl_permutation_fread;
65*gsl_permutation_fwrite = *Math::GSL::Multifitc::gsl_permutation_fwrite;
66*gsl_permutation_fscanf = *Math::GSL::Multifitc::gsl_permutation_fscanf;
67*gsl_permutation_fprintf = *Math::GSL::Multifitc::gsl_permutation_fprintf;
68*gsl_permutation_size = *Math::GSL::Multifitc::gsl_permutation_size;
69*gsl_permutation_data = *Math::GSL::Multifitc::gsl_permutation_data;
70*gsl_permutation_swap = *Math::GSL::Multifitc::gsl_permutation_swap;
71*gsl_permutation_valid = *Math::GSL::Multifitc::gsl_permutation_valid;
72*gsl_permutation_reverse = *Math::GSL::Multifitc::gsl_permutation_reverse;
73*gsl_permutation_inverse = *Math::GSL::Multifitc::gsl_permutation_inverse;
74*gsl_permutation_next = *Math::GSL::Multifitc::gsl_permutation_next;
75*gsl_permutation_prev = *Math::GSL::Multifitc::gsl_permutation_prev;
76*gsl_permutation_mul = *Math::GSL::Multifitc::gsl_permutation_mul;
77*gsl_permutation_linear_to_canonical = *Math::GSL::Multifitc::gsl_permutation_linear_to_canonical;
78*gsl_permutation_canonical_to_linear = *Math::GSL::Multifitc::gsl_permutation_canonical_to_linear;
79*gsl_permutation_inversions = *Math::GSL::Multifitc::gsl_permutation_inversions;
80*gsl_permutation_linear_cycles = *Math::GSL::Multifitc::gsl_permutation_linear_cycles;
81*gsl_permutation_canonical_cycles = *Math::GSL::Multifitc::gsl_permutation_canonical_cycles;
82*gsl_permutation_get = *Math::GSL::Multifitc::gsl_permutation_get;
83*gsl_multifit_linear_alloc = *Math::GSL::Multifitc::gsl_multifit_linear_alloc;
84*gsl_multifit_linear_free = *Math::GSL::Multifitc::gsl_multifit_linear_free;
85*gsl_multifit_linear = *Math::GSL::Multifitc::gsl_multifit_linear;
86*gsl_multifit_linear_svd = *Math::GSL::Multifitc::gsl_multifit_linear_svd;
87*gsl_multifit_linear_bsvd = *Math::GSL::Multifitc::gsl_multifit_linear_bsvd;
88*gsl_multifit_linear_solve = *Math::GSL::Multifitc::gsl_multifit_linear_solve;
89*gsl_multifit_linear_applyW = *Math::GSL::Multifitc::gsl_multifit_linear_applyW;
90*gsl_multifit_linear_stdform1 = *Math::GSL::Multifitc::gsl_multifit_linear_stdform1;
91*gsl_multifit_linear_wstdform1 = *Math::GSL::Multifitc::gsl_multifit_linear_wstdform1;
92*gsl_multifit_linear_L_decomp = *Math::GSL::Multifitc::gsl_multifit_linear_L_decomp;
93*gsl_multifit_linear_stdform2 = *Math::GSL::Multifitc::gsl_multifit_linear_stdform2;
94*gsl_multifit_linear_wstdform2 = *Math::GSL::Multifitc::gsl_multifit_linear_wstdform2;
95*gsl_multifit_linear_genform1 = *Math::GSL::Multifitc::gsl_multifit_linear_genform1;
96*gsl_multifit_linear_genform2 = *Math::GSL::Multifitc::gsl_multifit_linear_genform2;
97*gsl_multifit_linear_wgenform2 = *Math::GSL::Multifitc::gsl_multifit_linear_wgenform2;
98*gsl_multifit_linear_lreg = *Math::GSL::Multifitc::gsl_multifit_linear_lreg;
99*gsl_multifit_linear_lcurve = *Math::GSL::Multifitc::gsl_multifit_linear_lcurve;
100*gsl_multifit_linear_lcorner = *Math::GSL::Multifitc::gsl_multifit_linear_lcorner;
101*gsl_multifit_linear_lcorner2 = *Math::GSL::Multifitc::gsl_multifit_linear_lcorner2;
102*gsl_multifit_linear_Lk = *Math::GSL::Multifitc::gsl_multifit_linear_Lk;
103*gsl_multifit_linear_Lsobolev = *Math::GSL::Multifitc::gsl_multifit_linear_Lsobolev;
104*gsl_multifit_wlinear = *Math::GSL::Multifitc::gsl_multifit_wlinear;
105*gsl_multifit_wlinear_svd = *Math::GSL::Multifitc::gsl_multifit_wlinear_svd;
106*gsl_multifit_wlinear_usvd = *Math::GSL::Multifitc::gsl_multifit_wlinear_usvd;
107*gsl_multifit_linear_est = *Math::GSL::Multifitc::gsl_multifit_linear_est;
108*gsl_multifit_linear_rcond = *Math::GSL::Multifitc::gsl_multifit_linear_rcond;
109*gsl_multifit_linear_residuals = *Math::GSL::Multifitc::gsl_multifit_linear_residuals;
110*gsl_multifit_robust_alloc = *Math::GSL::Multifitc::gsl_multifit_robust_alloc;
111*gsl_multifit_robust_free = *Math::GSL::Multifitc::gsl_multifit_robust_free;
112*gsl_multifit_robust_tune = *Math::GSL::Multifitc::gsl_multifit_robust_tune;
113*gsl_multifit_robust_maxiter = *Math::GSL::Multifitc::gsl_multifit_robust_maxiter;
114*gsl_multifit_robust_name = *Math::GSL::Multifitc::gsl_multifit_robust_name;
115*gsl_multifit_robust_statistics = *Math::GSL::Multifitc::gsl_multifit_robust_statistics;
116*gsl_multifit_robust_weights = *Math::GSL::Multifitc::gsl_multifit_robust_weights;
117*gsl_multifit_robust = *Math::GSL::Multifitc::gsl_multifit_robust;
118*gsl_multifit_robust_est = *Math::GSL::Multifitc::gsl_multifit_robust_est;
119*gsl_multifit_robust_residuals = *Math::GSL::Multifitc::gsl_multifit_robust_residuals;
120*gsl_multifit_gradient = *Math::GSL::Multifitc::gsl_multifit_gradient;
121*gsl_multifit_covar = *Math::GSL::Multifitc::gsl_multifit_covar;
122*gsl_multifit_covar_QRPT = *Math::GSL::Multifitc::gsl_multifit_covar_QRPT;
123*gsl_multifit_fsolver_alloc = *Math::GSL::Multifitc::gsl_multifit_fsolver_alloc;
124*gsl_multifit_fsolver_free = *Math::GSL::Multifitc::gsl_multifit_fsolver_free;
125*gsl_multifit_fsolver_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_set;
126*gsl_multifit_fsolver_iterate = *Math::GSL::Multifitc::gsl_multifit_fsolver_iterate;
127*gsl_multifit_fsolver_driver = *Math::GSL::Multifitc::gsl_multifit_fsolver_driver;
128*gsl_multifit_fsolver_name = *Math::GSL::Multifitc::gsl_multifit_fsolver_name;
129*gsl_multifit_fsolver_position = *Math::GSL::Multifitc::gsl_multifit_fsolver_position;
130*gsl_multifit_fdfsolver_alloc = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_alloc;
131*gsl_multifit_fdfsolver_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_set;
132*gsl_multifit_fdfsolver_wset = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_wset;
133*gsl_multifit_fdfsolver_iterate = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_iterate;
134*gsl_multifit_fdfsolver_driver = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_driver;
135*gsl_multifit_fdfsolver_jac = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_jac;
136*gsl_multifit_fdfsolver_free = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_free;
137*gsl_multifit_fdfsolver_name = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_name;
138*gsl_multifit_fdfsolver_position = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_position;
139*gsl_multifit_fdfsolver_residual = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_residual;
140*gsl_multifit_fdfsolver_niter = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_niter;
141*gsl_multifit_eval_wf = *Math::GSL::Multifitc::gsl_multifit_eval_wf;
142*gsl_multifit_eval_wdf = *Math::GSL::Multifitc::gsl_multifit_eval_wdf;
143*gsl_multifit_fdfsolver_test = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_test;
144*gsl_multifit_test_delta = *Math::GSL::Multifitc::gsl_multifit_test_delta;
145*gsl_multifit_test_gradient = *Math::GSL::Multifitc::gsl_multifit_test_gradient;
146*gsl_multifit_fdfsolver_dif_df = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_dif_df;
147*gsl_multifit_fdfridge_alloc = *Math::GSL::Multifitc::gsl_multifit_fdfridge_alloc;
148*gsl_multifit_fdfridge_free = *Math::GSL::Multifitc::gsl_multifit_fdfridge_free;
149*gsl_multifit_fdfridge_name = *Math::GSL::Multifitc::gsl_multifit_fdfridge_name;
150*gsl_multifit_fdfridge_position = *Math::GSL::Multifitc::gsl_multifit_fdfridge_position;
151*gsl_multifit_fdfridge_residual = *Math::GSL::Multifitc::gsl_multifit_fdfridge_residual;
152*gsl_multifit_fdfridge_niter = *Math::GSL::Multifitc::gsl_multifit_fdfridge_niter;
153*gsl_multifit_fdfridge_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_set;
154*gsl_multifit_fdfridge_wset = *Math::GSL::Multifitc::gsl_multifit_fdfridge_wset;
155*gsl_multifit_fdfridge_set2 = *Math::GSL::Multifitc::gsl_multifit_fdfridge_set2;
156*gsl_multifit_fdfridge_wset2 = *Math::GSL::Multifitc::gsl_multifit_fdfridge_wset2;
157*gsl_multifit_fdfridge_set3 = *Math::GSL::Multifitc::gsl_multifit_fdfridge_set3;
158*gsl_multifit_fdfridge_wset3 = *Math::GSL::Multifitc::gsl_multifit_fdfridge_wset3;
159*gsl_multifit_fdfridge_iterate = *Math::GSL::Multifitc::gsl_multifit_fdfridge_iterate;
160*gsl_multifit_fdfridge_driver = *Math::GSL::Multifitc::gsl_multifit_fdfridge_driver;
161
162############# Class : Math::GSL::Multifit::gsl_function_struct ##############
163
164package Math::GSL::Multifit::gsl_function_struct;
165use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
166@ISA = qw( Math::GSL::Multifit );
167%OWNER = ();
168%ITERATORS = ();
169*swig_function_get = *Math::GSL::Multifitc::gsl_function_struct_function_get;
170*swig_function_set = *Math::GSL::Multifitc::gsl_function_struct_function_set;
171*swig_params_get = *Math::GSL::Multifitc::gsl_function_struct_params_get;
172*swig_params_set = *Math::GSL::Multifitc::gsl_function_struct_params_set;
173sub new {
174    my $pkg = shift;
175    my $self = Math::GSL::Multifitc::new_gsl_function_struct(@_);
176    bless $self, $pkg if defined($self);
177}
178
179sub DESTROY {
180    return unless $_[0]->isa('HASH');
181    my $self = tied(%{$_[0]});
182    return unless defined $self;
183    delete $ITERATORS{$self};
184    if (exists $OWNER{$self}) {
185        Math::GSL::Multifitc::delete_gsl_function_struct($self);
186        delete $OWNER{$self};
187    }
188}
189
190sub DISOWN {
191    my $self = shift;
192    my $ptr = tied(%$self);
193    delete $OWNER{$ptr};
194}
195
196sub ACQUIRE {
197    my $self = shift;
198    my $ptr = tied(%$self);
199    $OWNER{$ptr} = 1;
200}
201
202
203############# Class : Math::GSL::Multifit::gsl_function_fdf_struct ##############
204
205package Math::GSL::Multifit::gsl_function_fdf_struct;
206use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
207@ISA = qw( Math::GSL::Multifit );
208%OWNER = ();
209%ITERATORS = ();
210*swig_f_get = *Math::GSL::Multifitc::gsl_function_fdf_struct_f_get;
211*swig_f_set = *Math::GSL::Multifitc::gsl_function_fdf_struct_f_set;
212*swig_df_get = *Math::GSL::Multifitc::gsl_function_fdf_struct_df_get;
213*swig_df_set = *Math::GSL::Multifitc::gsl_function_fdf_struct_df_set;
214*swig_fdf_get = *Math::GSL::Multifitc::gsl_function_fdf_struct_fdf_get;
215*swig_fdf_set = *Math::GSL::Multifitc::gsl_function_fdf_struct_fdf_set;
216*swig_params_get = *Math::GSL::Multifitc::gsl_function_fdf_struct_params_get;
217*swig_params_set = *Math::GSL::Multifitc::gsl_function_fdf_struct_params_set;
218sub new {
219    my $pkg = shift;
220    my $self = Math::GSL::Multifitc::new_gsl_function_fdf_struct(@_);
221    bless $self, $pkg if defined($self);
222}
223
224sub DESTROY {
225    return unless $_[0]->isa('HASH');
226    my $self = tied(%{$_[0]});
227    return unless defined $self;
228    delete $ITERATORS{$self};
229    if (exists $OWNER{$self}) {
230        Math::GSL::Multifitc::delete_gsl_function_fdf_struct($self);
231        delete $OWNER{$self};
232    }
233}
234
235sub DISOWN {
236    my $self = shift;
237    my $ptr = tied(%$self);
238    delete $OWNER{$ptr};
239}
240
241sub ACQUIRE {
242    my $self = shift;
243    my $ptr = tied(%$self);
244    $OWNER{$ptr} = 1;
245}
246
247
248############# Class : Math::GSL::Multifit::gsl_function_vec_struct ##############
249
250package Math::GSL::Multifit::gsl_function_vec_struct;
251use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
252@ISA = qw( Math::GSL::Multifit );
253%OWNER = ();
254%ITERATORS = ();
255*swig_function_get = *Math::GSL::Multifitc::gsl_function_vec_struct_function_get;
256*swig_function_set = *Math::GSL::Multifitc::gsl_function_vec_struct_function_set;
257*swig_params_get = *Math::GSL::Multifitc::gsl_function_vec_struct_params_get;
258*swig_params_set = *Math::GSL::Multifitc::gsl_function_vec_struct_params_set;
259sub new {
260    my $pkg = shift;
261    my $self = Math::GSL::Multifitc::new_gsl_function_vec_struct(@_);
262    bless $self, $pkg if defined($self);
263}
264
265sub DESTROY {
266    return unless $_[0]->isa('HASH');
267    my $self = tied(%{$_[0]});
268    return unless defined $self;
269    delete $ITERATORS{$self};
270    if (exists $OWNER{$self}) {
271        Math::GSL::Multifitc::delete_gsl_function_vec_struct($self);
272        delete $OWNER{$self};
273    }
274}
275
276sub DISOWN {
277    my $self = shift;
278    my $ptr = tied(%$self);
279    delete $OWNER{$ptr};
280}
281
282sub ACQUIRE {
283    my $self = shift;
284    my $ptr = tied(%$self);
285    $OWNER{$ptr} = 1;
286}
287
288
289############# Class : Math::GSL::Multifit::gsl_permutation_struct ##############
290
291package Math::GSL::Multifit::gsl_permutation_struct;
292use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
293@ISA = qw( Math::GSL::Multifit );
294%OWNER = ();
295%ITERATORS = ();
296*swig_size_get = *Math::GSL::Multifitc::gsl_permutation_struct_size_get;
297*swig_size_set = *Math::GSL::Multifitc::gsl_permutation_struct_size_set;
298*swig_data_get = *Math::GSL::Multifitc::gsl_permutation_struct_data_get;
299*swig_data_set = *Math::GSL::Multifitc::gsl_permutation_struct_data_set;
300sub new {
301    my $pkg = shift;
302    my $self = Math::GSL::Multifitc::new_gsl_permutation_struct(@_);
303    bless $self, $pkg if defined($self);
304}
305
306sub DESTROY {
307    return unless $_[0]->isa('HASH');
308    my $self = tied(%{$_[0]});
309    return unless defined $self;
310    delete $ITERATORS{$self};
311    if (exists $OWNER{$self}) {
312        Math::GSL::Multifitc::delete_gsl_permutation_struct($self);
313        delete $OWNER{$self};
314    }
315}
316
317sub DISOWN {
318    my $self = shift;
319    my $ptr = tied(%$self);
320    delete $OWNER{$ptr};
321}
322
323sub ACQUIRE {
324    my $self = shift;
325    my $ptr = tied(%$self);
326    $OWNER{$ptr} = 1;
327}
328
329
330############# Class : Math::GSL::Multifit::gsl_multifit_linear_workspace ##############
331
332package Math::GSL::Multifit::gsl_multifit_linear_workspace;
333use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
334@ISA = qw( Math::GSL::Multifit );
335%OWNER = ();
336%ITERATORS = ();
337*swig_nmax_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_nmax_get;
338*swig_nmax_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_nmax_set;
339*swig_pmax_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_pmax_get;
340*swig_pmax_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_pmax_set;
341*swig_n_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_n_get;
342*swig_n_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_n_set;
343*swig_p_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_p_get;
344*swig_p_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_p_set;
345*swig_A_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_A_get;
346*swig_A_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_A_set;
347*swig_Q_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_Q_get;
348*swig_Q_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_Q_set;
349*swig_QSI_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_QSI_get;
350*swig_QSI_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_QSI_set;
351*swig_S_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_S_get;
352*swig_S_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_S_set;
353*swig_t_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_t_get;
354*swig_t_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_t_set;
355*swig_xt_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_xt_get;
356*swig_xt_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_xt_set;
357*swig_D_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_D_get;
358*swig_D_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_D_set;
359*swig_rcond_get = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_rcond_get;
360*swig_rcond_set = *Math::GSL::Multifitc::gsl_multifit_linear_workspace_rcond_set;
361sub new {
362    my $pkg = shift;
363    my $self = Math::GSL::Multifitc::new_gsl_multifit_linear_workspace(@_);
364    bless $self, $pkg if defined($self);
365}
366
367sub DESTROY {
368    return unless $_[0]->isa('HASH');
369    my $self = tied(%{$_[0]});
370    return unless defined $self;
371    delete $ITERATORS{$self};
372    if (exists $OWNER{$self}) {
373        Math::GSL::Multifitc::delete_gsl_multifit_linear_workspace($self);
374        delete $OWNER{$self};
375    }
376}
377
378sub DISOWN {
379    my $self = shift;
380    my $ptr = tied(%$self);
381    delete $OWNER{$ptr};
382}
383
384sub ACQUIRE {
385    my $self = shift;
386    my $ptr = tied(%$self);
387    $OWNER{$ptr} = 1;
388}
389
390
391############# Class : Math::GSL::Multifit::gsl_multifit_robust_type ##############
392
393package Math::GSL::Multifit::gsl_multifit_robust_type;
394use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
395@ISA = qw( Math::GSL::Multifit );
396%OWNER = ();
397%ITERATORS = ();
398*swig_name_get = *Math::GSL::Multifitc::gsl_multifit_robust_type_name_get;
399*swig_name_set = *Math::GSL::Multifitc::gsl_multifit_robust_type_name_set;
400*swig_wfun_get = *Math::GSL::Multifitc::gsl_multifit_robust_type_wfun_get;
401*swig_wfun_set = *Math::GSL::Multifitc::gsl_multifit_robust_type_wfun_set;
402*swig_psi_deriv_get = *Math::GSL::Multifitc::gsl_multifit_robust_type_psi_deriv_get;
403*swig_psi_deriv_set = *Math::GSL::Multifitc::gsl_multifit_robust_type_psi_deriv_set;
404*swig_tuning_default_get = *Math::GSL::Multifitc::gsl_multifit_robust_type_tuning_default_get;
405*swig_tuning_default_set = *Math::GSL::Multifitc::gsl_multifit_robust_type_tuning_default_set;
406sub new {
407    my $pkg = shift;
408    my $self = Math::GSL::Multifitc::new_gsl_multifit_robust_type(@_);
409    bless $self, $pkg if defined($self);
410}
411
412sub DESTROY {
413    return unless $_[0]->isa('HASH');
414    my $self = tied(%{$_[0]});
415    return unless defined $self;
416    delete $ITERATORS{$self};
417    if (exists $OWNER{$self}) {
418        Math::GSL::Multifitc::delete_gsl_multifit_robust_type($self);
419        delete $OWNER{$self};
420    }
421}
422
423sub DISOWN {
424    my $self = shift;
425    my $ptr = tied(%$self);
426    delete $OWNER{$ptr};
427}
428
429sub ACQUIRE {
430    my $self = shift;
431    my $ptr = tied(%$self);
432    $OWNER{$ptr} = 1;
433}
434
435
436############# Class : Math::GSL::Multifit::gsl_multifit_robust_stats ##############
437
438package Math::GSL::Multifit::gsl_multifit_robust_stats;
439use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
440@ISA = qw( Math::GSL::Multifit );
441%OWNER = ();
442%ITERATORS = ();
443*swig_sigma_ols_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_ols_get;
444*swig_sigma_ols_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_ols_set;
445*swig_sigma_mad_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_mad_get;
446*swig_sigma_mad_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_mad_set;
447*swig_sigma_rob_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_rob_get;
448*swig_sigma_rob_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_rob_set;
449*swig_sigma_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_get;
450*swig_sigma_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sigma_set;
451*swig_Rsq_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_Rsq_get;
452*swig_Rsq_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_Rsq_set;
453*swig_adj_Rsq_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_adj_Rsq_get;
454*swig_adj_Rsq_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_adj_Rsq_set;
455*swig_rmse_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_rmse_get;
456*swig_rmse_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_rmse_set;
457*swig_sse_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sse_get;
458*swig_sse_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_sse_set;
459*swig_dof_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_dof_get;
460*swig_dof_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_dof_set;
461*swig_numit_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_numit_get;
462*swig_numit_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_numit_set;
463*swig_weights_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_weights_get;
464*swig_weights_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_weights_set;
465*swig_r_get = *Math::GSL::Multifitc::gsl_multifit_robust_stats_r_get;
466*swig_r_set = *Math::GSL::Multifitc::gsl_multifit_robust_stats_r_set;
467sub new {
468    my $pkg = shift;
469    my $self = Math::GSL::Multifitc::new_gsl_multifit_robust_stats(@_);
470    bless $self, $pkg if defined($self);
471}
472
473sub DESTROY {
474    return unless $_[0]->isa('HASH');
475    my $self = tied(%{$_[0]});
476    return unless defined $self;
477    delete $ITERATORS{$self};
478    if (exists $OWNER{$self}) {
479        Math::GSL::Multifitc::delete_gsl_multifit_robust_stats($self);
480        delete $OWNER{$self};
481    }
482}
483
484sub DISOWN {
485    my $self = shift;
486    my $ptr = tied(%$self);
487    delete $OWNER{$ptr};
488}
489
490sub ACQUIRE {
491    my $self = shift;
492    my $ptr = tied(%$self);
493    $OWNER{$ptr} = 1;
494}
495
496
497############# Class : Math::GSL::Multifit::gsl_multifit_robust_workspace ##############
498
499package Math::GSL::Multifit::gsl_multifit_robust_workspace;
500use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
501@ISA = qw( Math::GSL::Multifit );
502%OWNER = ();
503%ITERATORS = ();
504*swig_n_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_n_get;
505*swig_n_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_n_set;
506*swig_p_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_p_get;
507*swig_p_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_p_set;
508*swig_numit_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_numit_get;
509*swig_numit_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_numit_set;
510*swig_maxiter_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_maxiter_get;
511*swig_maxiter_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_maxiter_set;
512*swig_type_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_type_get;
513*swig_type_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_type_set;
514*swig_tune_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_tune_get;
515*swig_tune_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_tune_set;
516*swig_r_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_r_get;
517*swig_r_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_r_set;
518*swig_weights_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_weights_get;
519*swig_weights_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_weights_set;
520*swig_c_prev_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_c_prev_get;
521*swig_c_prev_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_c_prev_set;
522*swig_resfac_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_resfac_get;
523*swig_resfac_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_resfac_set;
524*swig_psi_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_psi_get;
525*swig_psi_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_psi_set;
526*swig_dpsi_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_dpsi_get;
527*swig_dpsi_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_dpsi_set;
528*swig_QSI_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_QSI_get;
529*swig_QSI_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_QSI_set;
530*swig_D_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_D_get;
531*swig_D_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_D_set;
532*swig_workn_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_workn_get;
533*swig_workn_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_workn_set;
534*swig_stats_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_stats_get;
535*swig_stats_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_stats_set;
536*swig_multifit_p_get = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_multifit_p_get;
537*swig_multifit_p_set = *Math::GSL::Multifitc::gsl_multifit_robust_workspace_multifit_p_set;
538sub new {
539    my $pkg = shift;
540    my $self = Math::GSL::Multifitc::new_gsl_multifit_robust_workspace(@_);
541    bless $self, $pkg if defined($self);
542}
543
544sub DESTROY {
545    return unless $_[0]->isa('HASH');
546    my $self = tied(%{$_[0]});
547    return unless defined $self;
548    delete $ITERATORS{$self};
549    if (exists $OWNER{$self}) {
550        Math::GSL::Multifitc::delete_gsl_multifit_robust_workspace($self);
551        delete $OWNER{$self};
552    }
553}
554
555sub DISOWN {
556    my $self = shift;
557    my $ptr = tied(%$self);
558    delete $OWNER{$ptr};
559}
560
561sub ACQUIRE {
562    my $self = shift;
563    my $ptr = tied(%$self);
564    $OWNER{$ptr} = 1;
565}
566
567
568############# Class : Math::GSL::Multifit::gsl_multifit_function_struct ##############
569
570package Math::GSL::Multifit::gsl_multifit_function_struct;
571use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
572@ISA = qw( Math::GSL::Multifit );
573%OWNER = ();
574%ITERATORS = ();
575*swig_f_get = *Math::GSL::Multifitc::gsl_multifit_function_struct_f_get;
576*swig_f_set = *Math::GSL::Multifitc::gsl_multifit_function_struct_f_set;
577*swig_n_get = *Math::GSL::Multifitc::gsl_multifit_function_struct_n_get;
578*swig_n_set = *Math::GSL::Multifitc::gsl_multifit_function_struct_n_set;
579*swig_p_get = *Math::GSL::Multifitc::gsl_multifit_function_struct_p_get;
580*swig_p_set = *Math::GSL::Multifitc::gsl_multifit_function_struct_p_set;
581*swig_params_get = *Math::GSL::Multifitc::gsl_multifit_function_struct_params_get;
582*swig_params_set = *Math::GSL::Multifitc::gsl_multifit_function_struct_params_set;
583sub new {
584    my $pkg = shift;
585    my $self = Math::GSL::Multifitc::new_gsl_multifit_function_struct(@_);
586    bless $self, $pkg if defined($self);
587}
588
589sub DESTROY {
590    return unless $_[0]->isa('HASH');
591    my $self = tied(%{$_[0]});
592    return unless defined $self;
593    delete $ITERATORS{$self};
594    if (exists $OWNER{$self}) {
595        Math::GSL::Multifitc::delete_gsl_multifit_function_struct($self);
596        delete $OWNER{$self};
597    }
598}
599
600sub DISOWN {
601    my $self = shift;
602    my $ptr = tied(%$self);
603    delete $OWNER{$ptr};
604}
605
606sub ACQUIRE {
607    my $self = shift;
608    my $ptr = tied(%$self);
609    $OWNER{$ptr} = 1;
610}
611
612
613############# Class : Math::GSL::Multifit::gsl_multifit_fsolver_type ##############
614
615package Math::GSL::Multifit::gsl_multifit_fsolver_type;
616use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
617@ISA = qw( Math::GSL::Multifit );
618%OWNER = ();
619%ITERATORS = ();
620*swig_name_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_name_get;
621*swig_name_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_name_set;
622*swig_size_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_size_get;
623*swig_size_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_size_set;
624*swig_alloc_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_alloc_get;
625*swig_alloc_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_alloc_set;
626*swig_set_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_set_get;
627*swig_set_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_set_set;
628*swig_iterate_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_iterate_get;
629*swig_iterate_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_iterate_set;
630*swig_free_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_free_get;
631*swig_free_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_free_set;
632sub new {
633    my $pkg = shift;
634    my $self = Math::GSL::Multifitc::new_gsl_multifit_fsolver_type(@_);
635    bless $self, $pkg if defined($self);
636}
637
638sub DESTROY {
639    return unless $_[0]->isa('HASH');
640    my $self = tied(%{$_[0]});
641    return unless defined $self;
642    delete $ITERATORS{$self};
643    if (exists $OWNER{$self}) {
644        Math::GSL::Multifitc::delete_gsl_multifit_fsolver_type($self);
645        delete $OWNER{$self};
646    }
647}
648
649sub DISOWN {
650    my $self = shift;
651    my $ptr = tied(%$self);
652    delete $OWNER{$ptr};
653}
654
655sub ACQUIRE {
656    my $self = shift;
657    my $ptr = tied(%$self);
658    $OWNER{$ptr} = 1;
659}
660
661
662############# Class : Math::GSL::Multifit::gsl_multifit_fsolver ##############
663
664package Math::GSL::Multifit::gsl_multifit_fsolver;
665use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
666@ISA = qw( Math::GSL::Multifit );
667%OWNER = ();
668%ITERATORS = ();
669*swig_type_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_get;
670*swig_type_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_type_set;
671*swig_function_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_function_get;
672*swig_function_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_function_set;
673*swig_x_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_x_get;
674*swig_x_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_x_set;
675*swig_f_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_f_get;
676*swig_f_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_f_set;
677*swig_dx_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_dx_get;
678*swig_dx_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_dx_set;
679*swig_state_get = *Math::GSL::Multifitc::gsl_multifit_fsolver_state_get;
680*swig_state_set = *Math::GSL::Multifitc::gsl_multifit_fsolver_state_set;
681sub new {
682    my $pkg = shift;
683    my $self = Math::GSL::Multifitc::new_gsl_multifit_fsolver(@_);
684    bless $self, $pkg if defined($self);
685}
686
687sub DESTROY {
688    return unless $_[0]->isa('HASH');
689    my $self = tied(%{$_[0]});
690    return unless defined $self;
691    delete $ITERATORS{$self};
692    if (exists $OWNER{$self}) {
693        Math::GSL::Multifitc::delete_gsl_multifit_fsolver($self);
694        delete $OWNER{$self};
695    }
696}
697
698sub DISOWN {
699    my $self = shift;
700    my $ptr = tied(%$self);
701    delete $OWNER{$ptr};
702}
703
704sub ACQUIRE {
705    my $self = shift;
706    my $ptr = tied(%$self);
707    $OWNER{$ptr} = 1;
708}
709
710
711############# Class : Math::GSL::Multifit::gsl_multifit_function_fdf_struct ##############
712
713package Math::GSL::Multifit::gsl_multifit_function_fdf_struct;
714use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
715@ISA = qw( Math::GSL::Multifit );
716%OWNER = ();
717%ITERATORS = ();
718*swig_f_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_f_get;
719*swig_f_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_f_set;
720*swig_df_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_df_get;
721*swig_df_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_df_set;
722*swig_fdf_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_fdf_get;
723*swig_fdf_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_fdf_set;
724*swig_n_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_n_get;
725*swig_n_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_n_set;
726*swig_p_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_p_get;
727*swig_p_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_p_set;
728*swig_params_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_params_get;
729*swig_params_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_params_set;
730*swig_nevalf_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_nevalf_get;
731*swig_nevalf_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_nevalf_set;
732*swig_nevaldf_get = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_nevaldf_get;
733*swig_nevaldf_set = *Math::GSL::Multifitc::gsl_multifit_function_fdf_struct_nevaldf_set;
734sub new {
735    my $pkg = shift;
736    my $self = Math::GSL::Multifitc::new_gsl_multifit_function_fdf_struct(@_);
737    bless $self, $pkg if defined($self);
738}
739
740sub DESTROY {
741    return unless $_[0]->isa('HASH');
742    my $self = tied(%{$_[0]});
743    return unless defined $self;
744    delete $ITERATORS{$self};
745    if (exists $OWNER{$self}) {
746        Math::GSL::Multifitc::delete_gsl_multifit_function_fdf_struct($self);
747        delete $OWNER{$self};
748    }
749}
750
751sub DISOWN {
752    my $self = shift;
753    my $ptr = tied(%$self);
754    delete $OWNER{$ptr};
755}
756
757sub ACQUIRE {
758    my $self = shift;
759    my $ptr = tied(%$self);
760    $OWNER{$ptr} = 1;
761}
762
763
764############# Class : Math::GSL::Multifit::gsl_multifit_fdfsolver_type ##############
765
766package Math::GSL::Multifit::gsl_multifit_fdfsolver_type;
767use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
768@ISA = qw( Math::GSL::Multifit );
769%OWNER = ();
770%ITERATORS = ();
771*swig_name_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_name_get;
772*swig_name_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_name_set;
773*swig_size_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_size_get;
774*swig_size_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_size_set;
775*swig_alloc_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_alloc_get;
776*swig_alloc_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_alloc_set;
777*swig_set_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_set_get;
778*swig_set_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_set_set;
779*swig_iterate_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_iterate_get;
780*swig_iterate_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_iterate_set;
781*swig_gradient_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_gradient_get;
782*swig_gradient_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_gradient_set;
783*swig_jac_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_jac_get;
784*swig_jac_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_jac_set;
785*swig_free_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_free_get;
786*swig_free_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_free_set;
787sub new {
788    my $pkg = shift;
789    my $self = Math::GSL::Multifitc::new_gsl_multifit_fdfsolver_type(@_);
790    bless $self, $pkg if defined($self);
791}
792
793sub DESTROY {
794    return unless $_[0]->isa('HASH');
795    my $self = tied(%{$_[0]});
796    return unless defined $self;
797    delete $ITERATORS{$self};
798    if (exists $OWNER{$self}) {
799        Math::GSL::Multifitc::delete_gsl_multifit_fdfsolver_type($self);
800        delete $OWNER{$self};
801    }
802}
803
804sub DISOWN {
805    my $self = shift;
806    my $ptr = tied(%$self);
807    delete $OWNER{$ptr};
808}
809
810sub ACQUIRE {
811    my $self = shift;
812    my $ptr = tied(%$self);
813    $OWNER{$ptr} = 1;
814}
815
816
817############# Class : Math::GSL::Multifit::gsl_multifit_fdfsolver ##############
818
819package Math::GSL::Multifit::gsl_multifit_fdfsolver;
820use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
821@ISA = qw( Math::GSL::Multifit );
822%OWNER = ();
823%ITERATORS = ();
824*swig_type_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_get;
825*swig_type_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_type_set;
826*swig_fdf_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_fdf_get;
827*swig_fdf_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_fdf_set;
828*swig_x_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_x_get;
829*swig_x_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_x_set;
830*swig_f_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_f_get;
831*swig_f_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_f_set;
832*swig_dx_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_dx_get;
833*swig_dx_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_dx_set;
834*swig_g_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_g_get;
835*swig_g_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_g_set;
836*swig_sqrt_wts_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_sqrt_wts_get;
837*swig_sqrt_wts_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_sqrt_wts_set;
838*swig_niter_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_niter_get;
839*swig_niter_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_niter_set;
840*swig_state_get = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_state_get;
841*swig_state_set = *Math::GSL::Multifitc::gsl_multifit_fdfsolver_state_set;
842sub new {
843    my $pkg = shift;
844    my $self = Math::GSL::Multifitc::new_gsl_multifit_fdfsolver(@_);
845    bless $self, $pkg if defined($self);
846}
847
848sub DESTROY {
849    return unless $_[0]->isa('HASH');
850    my $self = tied(%{$_[0]});
851    return unless defined $self;
852    delete $ITERATORS{$self};
853    if (exists $OWNER{$self}) {
854        Math::GSL::Multifitc::delete_gsl_multifit_fdfsolver($self);
855        delete $OWNER{$self};
856    }
857}
858
859sub DISOWN {
860    my $self = shift;
861    my $ptr = tied(%$self);
862    delete $OWNER{$ptr};
863}
864
865sub ACQUIRE {
866    my $self = shift;
867    my $ptr = tied(%$self);
868    $OWNER{$ptr} = 1;
869}
870
871
872############# Class : Math::GSL::Multifit::gsl_multifit_fdfridge ##############
873
874package Math::GSL::Multifit::gsl_multifit_fdfridge;
875use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
876@ISA = qw( Math::GSL::Multifit );
877%OWNER = ();
878%ITERATORS = ();
879*swig_n_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_n_get;
880*swig_n_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_n_set;
881*swig_p_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_p_get;
882*swig_p_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_p_set;
883*swig_lambda_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_lambda_get;
884*swig_lambda_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_lambda_set;
885*swig_L_diag_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_L_diag_get;
886*swig_L_diag_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_L_diag_set;
887*swig_L_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_L_get;
888*swig_L_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_L_set;
889*swig_f_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_f_get;
890*swig_f_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_f_set;
891*swig_wts_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_wts_get;
892*swig_wts_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_wts_set;
893*swig_s_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_s_get;
894*swig_s_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_s_set;
895*swig_fdf_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_fdf_get;
896*swig_fdf_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_fdf_set;
897*swig_fdftik_get = *Math::GSL::Multifitc::gsl_multifit_fdfridge_fdftik_get;
898*swig_fdftik_set = *Math::GSL::Multifitc::gsl_multifit_fdfridge_fdftik_set;
899sub new {
900    my $pkg = shift;
901    my $self = Math::GSL::Multifitc::new_gsl_multifit_fdfridge(@_);
902    bless $self, $pkg if defined($self);
903}
904
905sub DESTROY {
906    return unless $_[0]->isa('HASH');
907    my $self = tied(%{$_[0]});
908    return unless defined $self;
909    delete $ITERATORS{$self};
910    if (exists $OWNER{$self}) {
911        Math::GSL::Multifitc::delete_gsl_multifit_fdfridge($self);
912        delete $OWNER{$self};
913    }
914}
915
916sub DISOWN {
917    my $self = shift;
918    my $ptr = tied(%$self);
919    delete $OWNER{$ptr};
920}
921
922sub ACQUIRE {
923    my $self = shift;
924    my $ptr = tied(%$self);
925    $OWNER{$ptr} = 1;
926}
927
928
929# ------- VARIABLE STUBS --------
930
931package Math::GSL::Multifit;
932
933*GSL_VERSION = *Math::GSL::Multifitc::GSL_VERSION;
934*GSL_MAJOR_VERSION = *Math::GSL::Multifitc::GSL_MAJOR_VERSION;
935*GSL_MINOR_VERSION = *Math::GSL::Multifitc::GSL_MINOR_VERSION;
936*GSL_POSZERO = *Math::GSL::Multifitc::GSL_POSZERO;
937*GSL_NEGZERO = *Math::GSL::Multifitc::GSL_NEGZERO;
938*GSL_SUCCESS = *Math::GSL::Multifitc::GSL_SUCCESS;
939*GSL_FAILURE = *Math::GSL::Multifitc::GSL_FAILURE;
940*GSL_CONTINUE = *Math::GSL::Multifitc::GSL_CONTINUE;
941*GSL_EDOM = *Math::GSL::Multifitc::GSL_EDOM;
942*GSL_ERANGE = *Math::GSL::Multifitc::GSL_ERANGE;
943*GSL_EFAULT = *Math::GSL::Multifitc::GSL_EFAULT;
944*GSL_EINVAL = *Math::GSL::Multifitc::GSL_EINVAL;
945*GSL_EFAILED = *Math::GSL::Multifitc::GSL_EFAILED;
946*GSL_EFACTOR = *Math::GSL::Multifitc::GSL_EFACTOR;
947*GSL_ESANITY = *Math::GSL::Multifitc::GSL_ESANITY;
948*GSL_ENOMEM = *Math::GSL::Multifitc::GSL_ENOMEM;
949*GSL_EBADFUNC = *Math::GSL::Multifitc::GSL_EBADFUNC;
950*GSL_ERUNAWAY = *Math::GSL::Multifitc::GSL_ERUNAWAY;
951*GSL_EMAXITER = *Math::GSL::Multifitc::GSL_EMAXITER;
952*GSL_EZERODIV = *Math::GSL::Multifitc::GSL_EZERODIV;
953*GSL_EBADTOL = *Math::GSL::Multifitc::GSL_EBADTOL;
954*GSL_ETOL = *Math::GSL::Multifitc::GSL_ETOL;
955*GSL_EUNDRFLW = *Math::GSL::Multifitc::GSL_EUNDRFLW;
956*GSL_EOVRFLW = *Math::GSL::Multifitc::GSL_EOVRFLW;
957*GSL_ELOSS = *Math::GSL::Multifitc::GSL_ELOSS;
958*GSL_EROUND = *Math::GSL::Multifitc::GSL_EROUND;
959*GSL_EBADLEN = *Math::GSL::Multifitc::GSL_EBADLEN;
960*GSL_ENOTSQR = *Math::GSL::Multifitc::GSL_ENOTSQR;
961*GSL_ESING = *Math::GSL::Multifitc::GSL_ESING;
962*GSL_EDIVERGE = *Math::GSL::Multifitc::GSL_EDIVERGE;
963*GSL_EUNSUP = *Math::GSL::Multifitc::GSL_EUNSUP;
964*GSL_EUNIMPL = *Math::GSL::Multifitc::GSL_EUNIMPL;
965*GSL_ECACHE = *Math::GSL::Multifitc::GSL_ECACHE;
966*GSL_ETABLE = *Math::GSL::Multifitc::GSL_ETABLE;
967*GSL_ENOPROG = *Math::GSL::Multifitc::GSL_ENOPROG;
968*GSL_ENOPROGJ = *Math::GSL::Multifitc::GSL_ENOPROGJ;
969*GSL_ETOLF = *Math::GSL::Multifitc::GSL_ETOLF;
970*GSL_ETOLX = *Math::GSL::Multifitc::GSL_ETOLX;
971*GSL_ETOLG = *Math::GSL::Multifitc::GSL_ETOLG;
972*GSL_EOF = *Math::GSL::Multifitc::GSL_EOF;
973*M_E = *Math::GSL::Multifitc::M_E;
974*M_LOG2E = *Math::GSL::Multifitc::M_LOG2E;
975*M_LOG10E = *Math::GSL::Multifitc::M_LOG10E;
976*M_SQRT2 = *Math::GSL::Multifitc::M_SQRT2;
977*M_SQRT1_2 = *Math::GSL::Multifitc::M_SQRT1_2;
978*M_SQRT3 = *Math::GSL::Multifitc::M_SQRT3;
979*M_PI = *Math::GSL::Multifitc::M_PI;
980*M_PI_2 = *Math::GSL::Multifitc::M_PI_2;
981*M_PI_4 = *Math::GSL::Multifitc::M_PI_4;
982*M_SQRTPI = *Math::GSL::Multifitc::M_SQRTPI;
983*M_2_SQRTPI = *Math::GSL::Multifitc::M_2_SQRTPI;
984*M_1_PI = *Math::GSL::Multifitc::M_1_PI;
985*M_2_PI = *Math::GSL::Multifitc::M_2_PI;
986*M_LN10 = *Math::GSL::Multifitc::M_LN10;
987*M_LN2 = *Math::GSL::Multifitc::M_LN2;
988*M_LNPI = *Math::GSL::Multifitc::M_LNPI;
989*M_EULER = *Math::GSL::Multifitc::M_EULER;
990
991my %__gsl_multifit_robust_default_hash;
992tie %__gsl_multifit_robust_default_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_default;
993$gsl_multifit_robust_default= \%__gsl_multifit_robust_default_hash;
994bless $gsl_multifit_robust_default, Math::GSL::Multifit::gsl_multifit_robust_type;
995
996my %__gsl_multifit_robust_bisquare_hash;
997tie %__gsl_multifit_robust_bisquare_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_bisquare;
998$gsl_multifit_robust_bisquare= \%__gsl_multifit_robust_bisquare_hash;
999bless $gsl_multifit_robust_bisquare, Math::GSL::Multifit::gsl_multifit_robust_type;
1000
1001my %__gsl_multifit_robust_cauchy_hash;
1002tie %__gsl_multifit_robust_cauchy_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_cauchy;
1003$gsl_multifit_robust_cauchy= \%__gsl_multifit_robust_cauchy_hash;
1004bless $gsl_multifit_robust_cauchy, Math::GSL::Multifit::gsl_multifit_robust_type;
1005
1006my %__gsl_multifit_robust_fair_hash;
1007tie %__gsl_multifit_robust_fair_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_fair;
1008$gsl_multifit_robust_fair= \%__gsl_multifit_robust_fair_hash;
1009bless $gsl_multifit_robust_fair, Math::GSL::Multifit::gsl_multifit_robust_type;
1010
1011my %__gsl_multifit_robust_huber_hash;
1012tie %__gsl_multifit_robust_huber_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_huber;
1013$gsl_multifit_robust_huber= \%__gsl_multifit_robust_huber_hash;
1014bless $gsl_multifit_robust_huber, Math::GSL::Multifit::gsl_multifit_robust_type;
1015
1016my %__gsl_multifit_robust_ols_hash;
1017tie %__gsl_multifit_robust_ols_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_ols;
1018$gsl_multifit_robust_ols= \%__gsl_multifit_robust_ols_hash;
1019bless $gsl_multifit_robust_ols, Math::GSL::Multifit::gsl_multifit_robust_type;
1020
1021my %__gsl_multifit_robust_welsch_hash;
1022tie %__gsl_multifit_robust_welsch_hash,"Math::GSL::Multifit::gsl_multifit_robust_type", $Math::GSL::Multifitc::gsl_multifit_robust_welsch;
1023$gsl_multifit_robust_welsch= \%__gsl_multifit_robust_welsch_hash;
1024bless $gsl_multifit_robust_welsch, Math::GSL::Multifit::gsl_multifit_robust_type;
1025
1026my %__gsl_multifit_fdfsolver_lmsder_hash;
1027tie %__gsl_multifit_fdfsolver_lmsder_hash,"Math::GSL::Multifit::gsl_multifit_fdfsolver_type", $Math::GSL::Multifitc::gsl_multifit_fdfsolver_lmsder;
1028$gsl_multifit_fdfsolver_lmsder= \%__gsl_multifit_fdfsolver_lmsder_hash;
1029bless $gsl_multifit_fdfsolver_lmsder, Math::GSL::Multifit::gsl_multifit_fdfsolver_type;
1030
1031my %__gsl_multifit_fdfsolver_lmder_hash;
1032tie %__gsl_multifit_fdfsolver_lmder_hash,"Math::GSL::Multifit::gsl_multifit_fdfsolver_type", $Math::GSL::Multifitc::gsl_multifit_fdfsolver_lmder;
1033$gsl_multifit_fdfsolver_lmder= \%__gsl_multifit_fdfsolver_lmder_hash;
1034bless $gsl_multifit_fdfsolver_lmder, Math::GSL::Multifit::gsl_multifit_fdfsolver_type;
1035
1036my %__gsl_multifit_fdfsolver_lmniel_hash;
1037tie %__gsl_multifit_fdfsolver_lmniel_hash,"Math::GSL::Multifit::gsl_multifit_fdfsolver_type", $Math::GSL::Multifitc::gsl_multifit_fdfsolver_lmniel;
1038$gsl_multifit_fdfsolver_lmniel= \%__gsl_multifit_fdfsolver_lmniel_hash;
1039bless $gsl_multifit_fdfsolver_lmniel, Math::GSL::Multifit::gsl_multifit_fdfsolver_type;
1040
1041@EXPORT_OK = qw/
1042               gsl_multifit_linear_alloc
1043               gsl_multifit_linear_free
1044               gsl_multifit_linear
1045               gsl_multifit_linear_svd
1046               gsl_multifit_wlinear
1047               gsl_multifit_wlinear_svd
1048               gsl_multifit_linear_est
1049               gsl_multifit_linear_residuals
1050               gsl_multifit_gradient
1051               gsl_multifit_covar
1052               gsl_multifit_fsolver_alloc
1053               gsl_multifit_fsolver_free
1054               gsl_multifit_fsolver_set
1055               gsl_multifit_fsolver_iterate
1056               gsl_multifit_fsolver_name
1057               gsl_multifit_fsolver_position
1058               gsl_multifit_fdfsolver_alloc
1059               gsl_multifit_fdfsolver_set
1060               gsl_multifit_fdfsolver_iterate
1061               gsl_multifit_fdfsolver_free
1062               gsl_multifit_fdfsolver_name
1063               gsl_multifit_fdfsolver_position
1064               gsl_multifit_test_delta
1065               gsl_multifit_test_gradient
1066               $gsl_multifit_fdfsolver_lmder
1067               $gsl_multifit_fdfsolver_lmsder;
1068             /;
1069%EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
1070
1071__END__
1072
1073=encoding utf8
1074
1075=head1 NAME
1076
1077Math::GSL::Multifit - Least-squares functions for a general linear model with multiple parameters
1078
1079=head1 SYNOPSIS
1080
1081    use Math::GSL::Multifit qw /:all/;
1082
1083=head1 DESCRIPTION
1084
1085NOTE: This module requires GSL 2.1 or higher.
1086
1087The functions in this module perform least-squares fits to a general linear model, y = X c where y is a vector of n observations, X is an n by p matrix of predictor variables, and the elements of the vector c are the p unknown best-fit parameters which are to be estimated.
1088
1089Here is a list of all the functions in this module :
1090
1091=over
1092
1093=item C<gsl_multifit_linear_alloc($n, $p)> - This function allocates a workspace for fitting a model to $n observations using $p parameters.
1094
1095=item C<gsl_multifit_linear_free($work)> - This function frees the memory associated with the workspace w.
1096
1097=item C<gsl_multifit_linear($X, $y, $c, $cov, $work)> - This function computes the best-fit parameters vector $c of the model y = X c for the observations vector $y and the matrix of predictor variables $X. The variance-covariance matrix of the model parameters vector $cov is estimated from the scatter of the observations about the best-fit. The sum of squares of the residuals from the best-fit, \chi^2, is returned after 0 if the operation succeeded, 1 otherwise. If the coefficient of determination is desired, it can be computed from the expression R^2 = 1 - \chi^2 / TSS, where the total sum of squares (TSS) of the observations y may be computed from gsl_stats_tss. The best-fit is found by singular value decomposition of the matrix $X using the preallocated workspace provided in $work. The modified Golub-Reinsch SVD algorithm is used, with column scaling to improve the accuracy of the singular values. Any components which have zero singular value (to machine precision) are discarded from the fit.
1098
1099=item C<gsl_multifit_linear_svd($X, $y, $tol, $c, $cov, $work)> - This function computes the best-fit parameters c of the model y = X c for the observations vector $y and the matrix of predictor variables $X. The variance-covariance matrix of the model parameters vector $cov is estimated from the scatter of the observations about the best-fit. The sum of squares of the residuals from the best-fit, \chi^2, is returned after 0 if the operation succeeded, 1 otherwise. If the coefficient of determination is desired, it can be computed from the expression R^2 = 1 - \chi^2 / TSS, where the total sum of squares (TSS) of the observations y may be computed from gsl_stats_tss. In this second form of the function the components are discarded if the ratio of singular values s_i/s_0 falls below the user-specified tolerance $tol, and the effective rank is returned after the sum of squares of the residuals from the best-fit.
1100
1101=item C<gsl_multifit_wlinear($X, $w, $y, $c, $cov, $work> - This function computes the best-fit parameters vector $c of the weighted model y = X c for the observations y with weights $w and the matrix of predictor variables $X. The covariance matrix of the model parameters $cov is computed with the given weights. The weighted sum of squares of the residuals from the best-fit, \chi^2, is returned after 0 if the operation succeeded, 1 otherwise. If the coefficient of determination is desired, it can be computed from the expression R^2 = 1 - \chi^2 / WTSS, where the weighted total sum of squares (WTSS) of the observations y may be computed from gsl_stats_wtss. The best-fit is found by singular value decomposition of the matrix $X using the preallocated workspace provided in $work. Any components which have zero singular value (to machine precision) are discarded from the fit.
1102
1103=item C<gsl_multifit_wlinear_svd($X, $w, $y, $tol, $rank, $c, $cov, $work) > This function computes the best-fit parameters vector $c of the weighted model y = X c for the observations y with weights $w and the matrix of predictor variables $X. The covariance matrix of the model parameters $cov is computed with the given weights. The weighted sum of squares of the residuals from the best-fit, \chi^2, is returned after 0 if the operation succeeded, 1 otherwise. If the coefficient of determination is desired, it can be computed from the expression R^2 = 1 - \chi^2 / WTSS, where the weighted total sum of squares (WTSS) of the observations y may be computed from gsl_stats_wtss. The best-fit is found by singular value decomposition of the matrix $X using the preallocated workspace provided in $work. In this second form of the function the components are discarded if the ratio of singular values s_i/s_0 falls below the user-specified tolerance $tol, and the effective rank is returned after the sum of squares of the residuals from the best-fit..
1104
1105=item C<gsl_multifit_linear_est($x, $c, $cov)> - This function uses the best-fit multilinear regression coefficients vector $c and their covariance matrix $cov to compute the fitted function value $y and its standard deviation $y_err for the model y = x.c at the point $x, in the form of a vector. The functions returns 3 values in this order : 0 if the operation succeeded, 1 otherwise, the fittes function value and its standard deviation.
1106
1107=item C<gsl_multifit_linear_residuals($X, $y, $c, $r)> - This function computes the vector of residuals r = y - X c for the observations vector $y, coefficients vector $c and matrix of predictor variables $X. $r is also a vector.
1108
1109=item C<gsl_multifit_gradient($J, $f, $g)> - This function computes the gradient $g of \Phi(x) = (1/2) ||F(x)||^2 from the Jacobian matrix $J and the function values $f, using the formula $g = $J^T $f. $g and $f are vectors.
1110
1111=item C<gsl_multifit_test_gradient($g, $epsabas)> - This function tests the residual gradient vector $g against the absolute error bound $epsabs. Mathematically, the gradient should be exactly zero at the minimum. The test returns $GSL_SUCCESS if the following condition is achieved, \sum_i |g_i| < $epsabs and returns $GSL_CONTINUE otherwise. This criterion is suitable for situations where the precise location of the minimum, x, is unimportant provided a value can be found where the gradient is small enough.
1112
1113=item C<gsl_multifit_test_delta($dx, $x, $epsabs, $epsrel)> - This function tests for the convergence of the sequence by comparing the last step vector $dx with the absolute error $epsabs and relative error $epsrel to the current position x. The test returns $GSL_SUCCESS if the following condition is achieved, |dx_i| < epsabs + epsrel |x_i| for each component of x and returns $GSL_CONTINUE otherwise.
1114
1115=back
1116
1117The following functions are not yet implemented. Patches Welcome!
1118
1119=over
1120
1121=item C<gsl_multifit_covar >
1122
1123=item C<gsl_multifit_fsolver_alloc($T, $n, $p)>
1124
1125=item C<gsl_multifit_fsolver_free >
1126
1127=item C<gsl_multifit_fsolver_set >
1128
1129=item C<gsl_multifit_fsolver_iterate >
1130
1131=item C<gsl_multifit_fsolver_name >
1132
1133=item C<gsl_multifit_fsolver_position >
1134
1135=item C<gsl_multifit_fdfsolver_alloc >
1136
1137=item C<gsl_multifit_fdfsolver_set >
1138
1139=item C<gsl_multifit_fdfsolver_iterate >
1140
1141=item C<gsl_multifit_fdfsolver_free >
1142
1143=item C<gsl_multifit_fdfsolver_name >
1144
1145=item C<gsl_multifit_fdfsolver_position >
1146
1147
1148=back
1149
1150For more informations on the functions, we refer you to the GSL official
1151documentation: L<http://www.gnu.org/software/gsl/manual/html_node/>
1152
1153
1154
1155=head1 EXAMPLES
1156
1157
1158
1159=head1 AUTHORS
1160
1161Jonathan "Duke" Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>
1162
1163=head1 COPYRIGHT AND LICENSE
1164
1165Copyright (C) 2008-2021 Jonathan "Duke" Leto and Thierry Moisan
1166
1167This program is free software; you can redistribute it and/or modify it
1168under the same terms as Perl itself.
1169
1170=cut
1171
11721;
1173