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::Eigen; 8use base qw(Exporter); 9use base qw(DynaLoader); 10package Math::GSL::Eigenc; 11bootstrap Math::GSL::Eigen; 12package Math::GSL::Eigen; 13@EXPORT = qw(); 14 15# ---------- BASE METHODS ------------- 16 17package Math::GSL::Eigen; 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::Eigen; 51 52*gsl_error = *Math::GSL::Eigenc::gsl_error; 53*gsl_stream_printf = *Math::GSL::Eigenc::gsl_stream_printf; 54*gsl_strerror = *Math::GSL::Eigenc::gsl_strerror; 55*gsl_set_error_handler = *Math::GSL::Eigenc::gsl_set_error_handler; 56*gsl_set_error_handler_off = *Math::GSL::Eigenc::gsl_set_error_handler_off; 57*gsl_set_stream_handler = *Math::GSL::Eigenc::gsl_set_stream_handler; 58*gsl_set_stream = *Math::GSL::Eigenc::gsl_set_stream; 59*gsl_eigen_symm_alloc = *Math::GSL::Eigenc::gsl_eigen_symm_alloc; 60*gsl_eigen_symm_free = *Math::GSL::Eigenc::gsl_eigen_symm_free; 61*gsl_eigen_symm = *Math::GSL::Eigenc::gsl_eigen_symm; 62*gsl_eigen_symmv_alloc = *Math::GSL::Eigenc::gsl_eigen_symmv_alloc; 63*gsl_eigen_symmv_free = *Math::GSL::Eigenc::gsl_eigen_symmv_free; 64*gsl_eigen_symmv = *Math::GSL::Eigenc::gsl_eigen_symmv; 65*gsl_eigen_herm_alloc = *Math::GSL::Eigenc::gsl_eigen_herm_alloc; 66*gsl_eigen_herm_free = *Math::GSL::Eigenc::gsl_eigen_herm_free; 67*gsl_eigen_herm = *Math::GSL::Eigenc::gsl_eigen_herm; 68*gsl_eigen_hermv_alloc = *Math::GSL::Eigenc::gsl_eigen_hermv_alloc; 69*gsl_eigen_hermv_free = *Math::GSL::Eigenc::gsl_eigen_hermv_free; 70*gsl_eigen_hermv = *Math::GSL::Eigenc::gsl_eigen_hermv; 71*gsl_eigen_francis_alloc = *Math::GSL::Eigenc::gsl_eigen_francis_alloc; 72*gsl_eigen_francis_free = *Math::GSL::Eigenc::gsl_eigen_francis_free; 73*gsl_eigen_francis_T = *Math::GSL::Eigenc::gsl_eigen_francis_T; 74*gsl_eigen_francis = *Math::GSL::Eigenc::gsl_eigen_francis; 75*gsl_eigen_francis_Z = *Math::GSL::Eigenc::gsl_eigen_francis_Z; 76*gsl_eigen_nonsymm_alloc = *Math::GSL::Eigenc::gsl_eigen_nonsymm_alloc; 77*gsl_eigen_nonsymm_free = *Math::GSL::Eigenc::gsl_eigen_nonsymm_free; 78*gsl_eigen_nonsymm_params = *Math::GSL::Eigenc::gsl_eigen_nonsymm_params; 79*gsl_eigen_nonsymm = *Math::GSL::Eigenc::gsl_eigen_nonsymm; 80*gsl_eigen_nonsymm_Z = *Math::GSL::Eigenc::gsl_eigen_nonsymm_Z; 81*gsl_eigen_nonsymmv_alloc = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_alloc; 82*gsl_eigen_nonsymmv_free = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_free; 83*gsl_eigen_nonsymmv_params = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_params; 84*gsl_eigen_nonsymmv = *Math::GSL::Eigenc::gsl_eigen_nonsymmv; 85*gsl_eigen_nonsymmv_Z = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_Z; 86*gsl_eigen_gensymm_alloc = *Math::GSL::Eigenc::gsl_eigen_gensymm_alloc; 87*gsl_eigen_gensymm_free = *Math::GSL::Eigenc::gsl_eigen_gensymm_free; 88*gsl_eigen_gensymm = *Math::GSL::Eigenc::gsl_eigen_gensymm; 89*gsl_eigen_gensymm_standardize = *Math::GSL::Eigenc::gsl_eigen_gensymm_standardize; 90*gsl_eigen_gensymmv_alloc = *Math::GSL::Eigenc::gsl_eigen_gensymmv_alloc; 91*gsl_eigen_gensymmv_free = *Math::GSL::Eigenc::gsl_eigen_gensymmv_free; 92*gsl_eigen_gensymmv = *Math::GSL::Eigenc::gsl_eigen_gensymmv; 93*gsl_eigen_genherm_alloc = *Math::GSL::Eigenc::gsl_eigen_genherm_alloc; 94*gsl_eigen_genherm_free = *Math::GSL::Eigenc::gsl_eigen_genherm_free; 95*gsl_eigen_genherm = *Math::GSL::Eigenc::gsl_eigen_genherm; 96*gsl_eigen_genherm_standardize = *Math::GSL::Eigenc::gsl_eigen_genherm_standardize; 97*gsl_eigen_genhermv_alloc = *Math::GSL::Eigenc::gsl_eigen_genhermv_alloc; 98*gsl_eigen_genhermv_free = *Math::GSL::Eigenc::gsl_eigen_genhermv_free; 99*gsl_eigen_genhermv = *Math::GSL::Eigenc::gsl_eigen_genhermv; 100*gsl_eigen_gen_alloc = *Math::GSL::Eigenc::gsl_eigen_gen_alloc; 101*gsl_eigen_gen_free = *Math::GSL::Eigenc::gsl_eigen_gen_free; 102*gsl_eigen_gen_params = *Math::GSL::Eigenc::gsl_eigen_gen_params; 103*gsl_eigen_gen = *Math::GSL::Eigenc::gsl_eigen_gen; 104*gsl_eigen_gen_QZ = *Math::GSL::Eigenc::gsl_eigen_gen_QZ; 105*gsl_eigen_genv_alloc = *Math::GSL::Eigenc::gsl_eigen_genv_alloc; 106*gsl_eigen_genv_free = *Math::GSL::Eigenc::gsl_eigen_genv_free; 107*gsl_eigen_genv = *Math::GSL::Eigenc::gsl_eigen_genv; 108*gsl_eigen_genv_QZ = *Math::GSL::Eigenc::gsl_eigen_genv_QZ; 109*gsl_eigen_symmv_sort = *Math::GSL::Eigenc::gsl_eigen_symmv_sort; 110*gsl_eigen_hermv_sort = *Math::GSL::Eigenc::gsl_eigen_hermv_sort; 111*gsl_eigen_nonsymmv_sort = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_sort; 112*gsl_eigen_gensymmv_sort = *Math::GSL::Eigenc::gsl_eigen_gensymmv_sort; 113*gsl_eigen_genhermv_sort = *Math::GSL::Eigenc::gsl_eigen_genhermv_sort; 114*gsl_eigen_genv_sort = *Math::GSL::Eigenc::gsl_eigen_genv_sort; 115*gsl_schur_gen_eigvals = *Math::GSL::Eigenc::gsl_schur_gen_eigvals; 116*gsl_schur_solve_equation = *Math::GSL::Eigenc::gsl_schur_solve_equation; 117*gsl_schur_solve_equation_z = *Math::GSL::Eigenc::gsl_schur_solve_equation_z; 118*gsl_eigen_jacobi = *Math::GSL::Eigenc::gsl_eigen_jacobi; 119*gsl_eigen_invert_jacobi = *Math::GSL::Eigenc::gsl_eigen_invert_jacobi; 120 121############# Class : Math::GSL::Eigen::gsl_eigen_symm_workspace ############## 122 123package Math::GSL::Eigen::gsl_eigen_symm_workspace; 124use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 125@ISA = qw( Math::GSL::Eigen ); 126%OWNER = (); 127%ITERATORS = (); 128*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_size_get; 129*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_size_set; 130*swig_d_get = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_d_get; 131*swig_d_set = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_d_set; 132*swig_sd_get = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_sd_get; 133*swig_sd_set = *Math::GSL::Eigenc::gsl_eigen_symm_workspace_sd_set; 134sub new { 135 my $pkg = shift; 136 my $self = Math::GSL::Eigenc::new_gsl_eigen_symm_workspace(@_); 137 bless $self, $pkg if defined($self); 138} 139 140sub DESTROY { 141 return unless $_[0]->isa('HASH'); 142 my $self = tied(%{$_[0]}); 143 return unless defined $self; 144 delete $ITERATORS{$self}; 145 if (exists $OWNER{$self}) { 146 Math::GSL::Eigenc::delete_gsl_eigen_symm_workspace($self); 147 delete $OWNER{$self}; 148 } 149} 150 151sub DISOWN { 152 my $self = shift; 153 my $ptr = tied(%$self); 154 delete $OWNER{$ptr}; 155} 156 157sub ACQUIRE { 158 my $self = shift; 159 my $ptr = tied(%$self); 160 $OWNER{$ptr} = 1; 161} 162 163 164############# Class : Math::GSL::Eigen::gsl_eigen_symmv_workspace ############## 165 166package Math::GSL::Eigen::gsl_eigen_symmv_workspace; 167use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 168@ISA = qw( Math::GSL::Eigen ); 169%OWNER = (); 170%ITERATORS = (); 171*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_size_get; 172*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_size_set; 173*swig_d_get = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_d_get; 174*swig_d_set = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_d_set; 175*swig_sd_get = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_sd_get; 176*swig_sd_set = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_sd_set; 177*swig_gc_get = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_gc_get; 178*swig_gc_set = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_gc_set; 179*swig_gs_get = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_gs_get; 180*swig_gs_set = *Math::GSL::Eigenc::gsl_eigen_symmv_workspace_gs_set; 181sub new { 182 my $pkg = shift; 183 my $self = Math::GSL::Eigenc::new_gsl_eigen_symmv_workspace(@_); 184 bless $self, $pkg if defined($self); 185} 186 187sub DESTROY { 188 return unless $_[0]->isa('HASH'); 189 my $self = tied(%{$_[0]}); 190 return unless defined $self; 191 delete $ITERATORS{$self}; 192 if (exists $OWNER{$self}) { 193 Math::GSL::Eigenc::delete_gsl_eigen_symmv_workspace($self); 194 delete $OWNER{$self}; 195 } 196} 197 198sub DISOWN { 199 my $self = shift; 200 my $ptr = tied(%$self); 201 delete $OWNER{$ptr}; 202} 203 204sub ACQUIRE { 205 my $self = shift; 206 my $ptr = tied(%$self); 207 $OWNER{$ptr} = 1; 208} 209 210 211############# Class : Math::GSL::Eigen::gsl_eigen_herm_workspace ############## 212 213package Math::GSL::Eigen::gsl_eigen_herm_workspace; 214use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 215@ISA = qw( Math::GSL::Eigen ); 216%OWNER = (); 217%ITERATORS = (); 218*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_size_get; 219*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_size_set; 220*swig_d_get = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_d_get; 221*swig_d_set = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_d_set; 222*swig_sd_get = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_sd_get; 223*swig_sd_set = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_sd_set; 224*swig_tau_get = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_tau_get; 225*swig_tau_set = *Math::GSL::Eigenc::gsl_eigen_herm_workspace_tau_set; 226sub new { 227 my $pkg = shift; 228 my $self = Math::GSL::Eigenc::new_gsl_eigen_herm_workspace(@_); 229 bless $self, $pkg if defined($self); 230} 231 232sub DESTROY { 233 return unless $_[0]->isa('HASH'); 234 my $self = tied(%{$_[0]}); 235 return unless defined $self; 236 delete $ITERATORS{$self}; 237 if (exists $OWNER{$self}) { 238 Math::GSL::Eigenc::delete_gsl_eigen_herm_workspace($self); 239 delete $OWNER{$self}; 240 } 241} 242 243sub DISOWN { 244 my $self = shift; 245 my $ptr = tied(%$self); 246 delete $OWNER{$ptr}; 247} 248 249sub ACQUIRE { 250 my $self = shift; 251 my $ptr = tied(%$self); 252 $OWNER{$ptr} = 1; 253} 254 255 256############# Class : Math::GSL::Eigen::gsl_eigen_hermv_workspace ############## 257 258package Math::GSL::Eigen::gsl_eigen_hermv_workspace; 259use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 260@ISA = qw( Math::GSL::Eigen ); 261%OWNER = (); 262%ITERATORS = (); 263*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_size_get; 264*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_size_set; 265*swig_d_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_d_get; 266*swig_d_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_d_set; 267*swig_sd_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_sd_get; 268*swig_sd_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_sd_set; 269*swig_tau_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_tau_get; 270*swig_tau_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_tau_set; 271*swig_gc_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_gc_get; 272*swig_gc_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_gc_set; 273*swig_gs_get = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_gs_get; 274*swig_gs_set = *Math::GSL::Eigenc::gsl_eigen_hermv_workspace_gs_set; 275sub new { 276 my $pkg = shift; 277 my $self = Math::GSL::Eigenc::new_gsl_eigen_hermv_workspace(@_); 278 bless $self, $pkg if defined($self); 279} 280 281sub DESTROY { 282 return unless $_[0]->isa('HASH'); 283 my $self = tied(%{$_[0]}); 284 return unless defined $self; 285 delete $ITERATORS{$self}; 286 if (exists $OWNER{$self}) { 287 Math::GSL::Eigenc::delete_gsl_eigen_hermv_workspace($self); 288 delete $OWNER{$self}; 289 } 290} 291 292sub DISOWN { 293 my $self = shift; 294 my $ptr = tied(%$self); 295 delete $OWNER{$ptr}; 296} 297 298sub ACQUIRE { 299 my $self = shift; 300 my $ptr = tied(%$self); 301 $OWNER{$ptr} = 1; 302} 303 304 305############# Class : Math::GSL::Eigen::gsl_eigen_francis_workspace ############## 306 307package Math::GSL::Eigen::gsl_eigen_francis_workspace; 308use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 309@ISA = qw( Math::GSL::Eigen ); 310%OWNER = (); 311%ITERATORS = (); 312*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_size_get; 313*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_size_set; 314*swig_max_iterations_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_max_iterations_get; 315*swig_max_iterations_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_max_iterations_set; 316*swig_n_iter_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_n_iter_get; 317*swig_n_iter_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_n_iter_set; 318*swig_n_evals_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_n_evals_get; 319*swig_n_evals_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_n_evals_set; 320*swig_compute_t_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_compute_t_get; 321*swig_compute_t_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_compute_t_set; 322*swig_H_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_H_get; 323*swig_H_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_H_set; 324*swig_Z_get = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_Z_get; 325*swig_Z_set = *Math::GSL::Eigenc::gsl_eigen_francis_workspace_Z_set; 326sub new { 327 my $pkg = shift; 328 my $self = Math::GSL::Eigenc::new_gsl_eigen_francis_workspace(@_); 329 bless $self, $pkg if defined($self); 330} 331 332sub DESTROY { 333 return unless $_[0]->isa('HASH'); 334 my $self = tied(%{$_[0]}); 335 return unless defined $self; 336 delete $ITERATORS{$self}; 337 if (exists $OWNER{$self}) { 338 Math::GSL::Eigenc::delete_gsl_eigen_francis_workspace($self); 339 delete $OWNER{$self}; 340 } 341} 342 343sub DISOWN { 344 my $self = shift; 345 my $ptr = tied(%$self); 346 delete $OWNER{$ptr}; 347} 348 349sub ACQUIRE { 350 my $self = shift; 351 my $ptr = tied(%$self); 352 $OWNER{$ptr} = 1; 353} 354 355 356############# Class : Math::GSL::Eigen::gsl_eigen_nonsymm_workspace ############## 357 358package Math::GSL::Eigen::gsl_eigen_nonsymm_workspace; 359use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 360@ISA = qw( Math::GSL::Eigen ); 361%OWNER = (); 362%ITERATORS = (); 363*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_size_get; 364*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_size_set; 365*swig_diag_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_diag_get; 366*swig_diag_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_diag_set; 367*swig_tau_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_tau_get; 368*swig_tau_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_tau_set; 369*swig_Z_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_Z_get; 370*swig_Z_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_Z_set; 371*swig_do_balance_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_do_balance_get; 372*swig_do_balance_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_do_balance_set; 373*swig_n_evals_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_n_evals_get; 374*swig_n_evals_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_n_evals_set; 375*swig_francis_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_francis_workspace_p_get; 376*swig_francis_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_nonsymm_workspace_francis_workspace_p_set; 377sub new { 378 my $pkg = shift; 379 my $self = Math::GSL::Eigenc::new_gsl_eigen_nonsymm_workspace(@_); 380 bless $self, $pkg if defined($self); 381} 382 383sub DESTROY { 384 return unless $_[0]->isa('HASH'); 385 my $self = tied(%{$_[0]}); 386 return unless defined $self; 387 delete $ITERATORS{$self}; 388 if (exists $OWNER{$self}) { 389 Math::GSL::Eigenc::delete_gsl_eigen_nonsymm_workspace($self); 390 delete $OWNER{$self}; 391 } 392} 393 394sub DISOWN { 395 my $self = shift; 396 my $ptr = tied(%$self); 397 delete $OWNER{$ptr}; 398} 399 400sub ACQUIRE { 401 my $self = shift; 402 my $ptr = tied(%$self); 403 $OWNER{$ptr} = 1; 404} 405 406 407############# Class : Math::GSL::Eigen::gsl_eigen_nonsymmv_workspace ############## 408 409package Math::GSL::Eigen::gsl_eigen_nonsymmv_workspace; 410use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 411@ISA = qw( Math::GSL::Eigen ); 412%OWNER = (); 413%ITERATORS = (); 414*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_size_get; 415*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_size_set; 416*swig_work_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work_get; 417*swig_work_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work_set; 418*swig_work2_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work2_get; 419*swig_work2_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work2_set; 420*swig_work3_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work3_get; 421*swig_work3_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_work3_set; 422*swig_Z_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_Z_get; 423*swig_Z_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_Z_set; 424*swig_nonsymm_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_nonsymm_workspace_p_get; 425*swig_nonsymm_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_nonsymmv_workspace_nonsymm_workspace_p_set; 426sub new { 427 my $pkg = shift; 428 my $self = Math::GSL::Eigenc::new_gsl_eigen_nonsymmv_workspace(@_); 429 bless $self, $pkg if defined($self); 430} 431 432sub DESTROY { 433 return unless $_[0]->isa('HASH'); 434 my $self = tied(%{$_[0]}); 435 return unless defined $self; 436 delete $ITERATORS{$self}; 437 if (exists $OWNER{$self}) { 438 Math::GSL::Eigenc::delete_gsl_eigen_nonsymmv_workspace($self); 439 delete $OWNER{$self}; 440 } 441} 442 443sub DISOWN { 444 my $self = shift; 445 my $ptr = tied(%$self); 446 delete $OWNER{$ptr}; 447} 448 449sub ACQUIRE { 450 my $self = shift; 451 my $ptr = tied(%$self); 452 $OWNER{$ptr} = 1; 453} 454 455 456############# Class : Math::GSL::Eigen::gsl_eigen_gensymm_workspace ############## 457 458package Math::GSL::Eigen::gsl_eigen_gensymm_workspace; 459use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 460@ISA = qw( Math::GSL::Eigen ); 461%OWNER = (); 462%ITERATORS = (); 463*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_gensymm_workspace_size_get; 464*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_gensymm_workspace_size_set; 465*swig_symm_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_gensymm_workspace_symm_workspace_p_get; 466*swig_symm_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_gensymm_workspace_symm_workspace_p_set; 467sub new { 468 my $pkg = shift; 469 my $self = Math::GSL::Eigenc::new_gsl_eigen_gensymm_workspace(@_); 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::Eigenc::delete_gsl_eigen_gensymm_workspace($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::Eigen::gsl_eigen_gensymmv_workspace ############## 498 499package Math::GSL::Eigen::gsl_eigen_gensymmv_workspace; 500use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 501@ISA = qw( Math::GSL::Eigen ); 502%OWNER = (); 503%ITERATORS = (); 504*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_gensymmv_workspace_size_get; 505*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_gensymmv_workspace_size_set; 506*swig_symmv_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_gensymmv_workspace_symmv_workspace_p_get; 507*swig_symmv_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_gensymmv_workspace_symmv_workspace_p_set; 508sub new { 509 my $pkg = shift; 510 my $self = Math::GSL::Eigenc::new_gsl_eigen_gensymmv_workspace(@_); 511 bless $self, $pkg if defined($self); 512} 513 514sub DESTROY { 515 return unless $_[0]->isa('HASH'); 516 my $self = tied(%{$_[0]}); 517 return unless defined $self; 518 delete $ITERATORS{$self}; 519 if (exists $OWNER{$self}) { 520 Math::GSL::Eigenc::delete_gsl_eigen_gensymmv_workspace($self); 521 delete $OWNER{$self}; 522 } 523} 524 525sub DISOWN { 526 my $self = shift; 527 my $ptr = tied(%$self); 528 delete $OWNER{$ptr}; 529} 530 531sub ACQUIRE { 532 my $self = shift; 533 my $ptr = tied(%$self); 534 $OWNER{$ptr} = 1; 535} 536 537 538############# Class : Math::GSL::Eigen::gsl_eigen_genherm_workspace ############## 539 540package Math::GSL::Eigen::gsl_eigen_genherm_workspace; 541use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 542@ISA = qw( Math::GSL::Eigen ); 543%OWNER = (); 544%ITERATORS = (); 545*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_genherm_workspace_size_get; 546*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_genherm_workspace_size_set; 547*swig_herm_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_genherm_workspace_herm_workspace_p_get; 548*swig_herm_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_genherm_workspace_herm_workspace_p_set; 549sub new { 550 my $pkg = shift; 551 my $self = Math::GSL::Eigenc::new_gsl_eigen_genherm_workspace(@_); 552 bless $self, $pkg if defined($self); 553} 554 555sub DESTROY { 556 return unless $_[0]->isa('HASH'); 557 my $self = tied(%{$_[0]}); 558 return unless defined $self; 559 delete $ITERATORS{$self}; 560 if (exists $OWNER{$self}) { 561 Math::GSL::Eigenc::delete_gsl_eigen_genherm_workspace($self); 562 delete $OWNER{$self}; 563 } 564} 565 566sub DISOWN { 567 my $self = shift; 568 my $ptr = tied(%$self); 569 delete $OWNER{$ptr}; 570} 571 572sub ACQUIRE { 573 my $self = shift; 574 my $ptr = tied(%$self); 575 $OWNER{$ptr} = 1; 576} 577 578 579############# Class : Math::GSL::Eigen::gsl_eigen_genhermv_workspace ############## 580 581package Math::GSL::Eigen::gsl_eigen_genhermv_workspace; 582use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 583@ISA = qw( Math::GSL::Eigen ); 584%OWNER = (); 585%ITERATORS = (); 586*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_genhermv_workspace_size_get; 587*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_genhermv_workspace_size_set; 588*swig_hermv_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_genhermv_workspace_hermv_workspace_p_get; 589*swig_hermv_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_genhermv_workspace_hermv_workspace_p_set; 590sub new { 591 my $pkg = shift; 592 my $self = Math::GSL::Eigenc::new_gsl_eigen_genhermv_workspace(@_); 593 bless $self, $pkg if defined($self); 594} 595 596sub DESTROY { 597 return unless $_[0]->isa('HASH'); 598 my $self = tied(%{$_[0]}); 599 return unless defined $self; 600 delete $ITERATORS{$self}; 601 if (exists $OWNER{$self}) { 602 Math::GSL::Eigenc::delete_gsl_eigen_genhermv_workspace($self); 603 delete $OWNER{$self}; 604 } 605} 606 607sub DISOWN { 608 my $self = shift; 609 my $ptr = tied(%$self); 610 delete $OWNER{$ptr}; 611} 612 613sub ACQUIRE { 614 my $self = shift; 615 my $ptr = tied(%$self); 616 $OWNER{$ptr} = 1; 617} 618 619 620############# Class : Math::GSL::Eigen::gsl_eigen_gen_workspace ############## 621 622package Math::GSL::Eigen::gsl_eigen_gen_workspace; 623use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 624@ISA = qw( Math::GSL::Eigen ); 625%OWNER = (); 626%ITERATORS = (); 627*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_size_get; 628*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_size_set; 629*swig_work_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_work_get; 630*swig_work_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_work_set; 631*swig_n_evals_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_n_evals_get; 632*swig_n_evals_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_n_evals_set; 633*swig_max_iterations_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_max_iterations_get; 634*swig_max_iterations_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_max_iterations_set; 635*swig_n_iter_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_n_iter_get; 636*swig_n_iter_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_n_iter_set; 637*swig_eshift_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_eshift_get; 638*swig_eshift_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_eshift_set; 639*swig_needtop_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_needtop_get; 640*swig_needtop_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_needtop_set; 641*swig_atol_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_atol_get; 642*swig_atol_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_atol_set; 643*swig_btol_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_btol_get; 644*swig_btol_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_btol_set; 645*swig_ascale_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_ascale_get; 646*swig_ascale_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_ascale_set; 647*swig_bscale_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_bscale_get; 648*swig_bscale_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_bscale_set; 649*swig_H_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_H_get; 650*swig_H_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_H_set; 651*swig_R_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_R_get; 652*swig_R_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_R_set; 653*swig_compute_s_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_compute_s_get; 654*swig_compute_s_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_compute_s_set; 655*swig_compute_t_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_compute_t_get; 656*swig_compute_t_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_compute_t_set; 657*swig_Q_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_Q_get; 658*swig_Q_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_Q_set; 659*swig_Z_get = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_Z_get; 660*swig_Z_set = *Math::GSL::Eigenc::gsl_eigen_gen_workspace_Z_set; 661sub new { 662 my $pkg = shift; 663 my $self = Math::GSL::Eigenc::new_gsl_eigen_gen_workspace(@_); 664 bless $self, $pkg if defined($self); 665} 666 667sub DESTROY { 668 return unless $_[0]->isa('HASH'); 669 my $self = tied(%{$_[0]}); 670 return unless defined $self; 671 delete $ITERATORS{$self}; 672 if (exists $OWNER{$self}) { 673 Math::GSL::Eigenc::delete_gsl_eigen_gen_workspace($self); 674 delete $OWNER{$self}; 675 } 676} 677 678sub DISOWN { 679 my $self = shift; 680 my $ptr = tied(%$self); 681 delete $OWNER{$ptr}; 682} 683 684sub ACQUIRE { 685 my $self = shift; 686 my $ptr = tied(%$self); 687 $OWNER{$ptr} = 1; 688} 689 690 691############# Class : Math::GSL::Eigen::gsl_eigen_genv_workspace ############## 692 693package Math::GSL::Eigen::gsl_eigen_genv_workspace; 694use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 695@ISA = qw( Math::GSL::Eigen ); 696%OWNER = (); 697%ITERATORS = (); 698*swig_size_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_size_get; 699*swig_size_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_size_set; 700*swig_work1_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work1_get; 701*swig_work1_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work1_set; 702*swig_work2_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work2_get; 703*swig_work2_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work2_set; 704*swig_work3_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work3_get; 705*swig_work3_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work3_set; 706*swig_work4_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work4_get; 707*swig_work4_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work4_set; 708*swig_work5_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work5_get; 709*swig_work5_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work5_set; 710*swig_work6_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work6_get; 711*swig_work6_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_work6_set; 712*swig_Q_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_Q_get; 713*swig_Q_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_Q_set; 714*swig_Z_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_Z_get; 715*swig_Z_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_Z_set; 716*swig_gen_workspace_p_get = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_gen_workspace_p_get; 717*swig_gen_workspace_p_set = *Math::GSL::Eigenc::gsl_eigen_genv_workspace_gen_workspace_p_set; 718sub new { 719 my $pkg = shift; 720 my $self = Math::GSL::Eigenc::new_gsl_eigen_genv_workspace(@_); 721 bless $self, $pkg if defined($self); 722} 723 724sub DESTROY { 725 return unless $_[0]->isa('HASH'); 726 my $self = tied(%{$_[0]}); 727 return unless defined $self; 728 delete $ITERATORS{$self}; 729 if (exists $OWNER{$self}) { 730 Math::GSL::Eigenc::delete_gsl_eigen_genv_workspace($self); 731 delete $OWNER{$self}; 732 } 733} 734 735sub DISOWN { 736 my $self = shift; 737 my $ptr = tied(%$self); 738 delete $OWNER{$ptr}; 739} 740 741sub ACQUIRE { 742 my $self = shift; 743 my $ptr = tied(%$self); 744 $OWNER{$ptr} = 1; 745} 746 747 748############# Class : Math::GSL::Eigen::gsl_complex ############## 749 750package Math::GSL::Eigen::gsl_complex; 751use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 752@ISA = qw( Math::GSL::Eigen ); 753%OWNER = (); 754%ITERATORS = (); 755*swig_dat_get = *Math::GSL::Eigenc::gsl_complex_dat_get; 756*swig_dat_set = *Math::GSL::Eigenc::gsl_complex_dat_set; 757sub new { 758 my $pkg = shift; 759 my $self = Math::GSL::Eigenc::new_gsl_complex(@_); 760 bless $self, $pkg if defined($self); 761} 762 763sub DESTROY { 764 return unless $_[0]->isa('HASH'); 765 my $self = tied(%{$_[0]}); 766 return unless defined $self; 767 delete $ITERATORS{$self}; 768 if (exists $OWNER{$self}) { 769 Math::GSL::Eigenc::delete_gsl_complex($self); 770 delete $OWNER{$self}; 771 } 772} 773 774sub DISOWN { 775 my $self = shift; 776 my $ptr = tied(%$self); 777 delete $OWNER{$ptr}; 778} 779 780sub ACQUIRE { 781 my $self = shift; 782 my $ptr = tied(%$self); 783 $OWNER{$ptr} = 1; 784} 785 786 787############# Class : Math::GSL::Eigen::gsl_complex_long_double ############## 788 789package Math::GSL::Eigen::gsl_complex_long_double; 790use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 791@ISA = qw( Math::GSL::Eigen ); 792%OWNER = (); 793%ITERATORS = (); 794*swig_dat_get = *Math::GSL::Eigenc::gsl_complex_long_double_dat_get; 795*swig_dat_set = *Math::GSL::Eigenc::gsl_complex_long_double_dat_set; 796sub new { 797 my $pkg = shift; 798 my $self = Math::GSL::Eigenc::new_gsl_complex_long_double(@_); 799 bless $self, $pkg if defined($self); 800} 801 802sub DESTROY { 803 return unless $_[0]->isa('HASH'); 804 my $self = tied(%{$_[0]}); 805 return unless defined $self; 806 delete $ITERATORS{$self}; 807 if (exists $OWNER{$self}) { 808 Math::GSL::Eigenc::delete_gsl_complex_long_double($self); 809 delete $OWNER{$self}; 810 } 811} 812 813sub DISOWN { 814 my $self = shift; 815 my $ptr = tied(%$self); 816 delete $OWNER{$ptr}; 817} 818 819sub ACQUIRE { 820 my $self = shift; 821 my $ptr = tied(%$self); 822 $OWNER{$ptr} = 1; 823} 824 825 826############# Class : Math::GSL::Eigen::gsl_complex_float ############## 827 828package Math::GSL::Eigen::gsl_complex_float; 829use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); 830@ISA = qw( Math::GSL::Eigen ); 831%OWNER = (); 832%ITERATORS = (); 833*swig_dat_get = *Math::GSL::Eigenc::gsl_complex_float_dat_get; 834*swig_dat_set = *Math::GSL::Eigenc::gsl_complex_float_dat_set; 835sub new { 836 my $pkg = shift; 837 my $self = Math::GSL::Eigenc::new_gsl_complex_float(@_); 838 bless $self, $pkg if defined($self); 839} 840 841sub DESTROY { 842 return unless $_[0]->isa('HASH'); 843 my $self = tied(%{$_[0]}); 844 return unless defined $self; 845 delete $ITERATORS{$self}; 846 if (exists $OWNER{$self}) { 847 Math::GSL::Eigenc::delete_gsl_complex_float($self); 848 delete $OWNER{$self}; 849 } 850} 851 852sub DISOWN { 853 my $self = shift; 854 my $ptr = tied(%$self); 855 delete $OWNER{$ptr}; 856} 857 858sub ACQUIRE { 859 my $self = shift; 860 my $ptr = tied(%$self); 861 $OWNER{$ptr} = 1; 862} 863 864 865# ------- VARIABLE STUBS -------- 866 867package Math::GSL::Eigen; 868 869*GSL_VERSION = *Math::GSL::Eigenc::GSL_VERSION; 870*GSL_MAJOR_VERSION = *Math::GSL::Eigenc::GSL_MAJOR_VERSION; 871*GSL_MINOR_VERSION = *Math::GSL::Eigenc::GSL_MINOR_VERSION; 872*GSL_POSZERO = *Math::GSL::Eigenc::GSL_POSZERO; 873*GSL_NEGZERO = *Math::GSL::Eigenc::GSL_NEGZERO; 874*GSL_SUCCESS = *Math::GSL::Eigenc::GSL_SUCCESS; 875*GSL_FAILURE = *Math::GSL::Eigenc::GSL_FAILURE; 876*GSL_CONTINUE = *Math::GSL::Eigenc::GSL_CONTINUE; 877*GSL_EDOM = *Math::GSL::Eigenc::GSL_EDOM; 878*GSL_ERANGE = *Math::GSL::Eigenc::GSL_ERANGE; 879*GSL_EFAULT = *Math::GSL::Eigenc::GSL_EFAULT; 880*GSL_EINVAL = *Math::GSL::Eigenc::GSL_EINVAL; 881*GSL_EFAILED = *Math::GSL::Eigenc::GSL_EFAILED; 882*GSL_EFACTOR = *Math::GSL::Eigenc::GSL_EFACTOR; 883*GSL_ESANITY = *Math::GSL::Eigenc::GSL_ESANITY; 884*GSL_ENOMEM = *Math::GSL::Eigenc::GSL_ENOMEM; 885*GSL_EBADFUNC = *Math::GSL::Eigenc::GSL_EBADFUNC; 886*GSL_ERUNAWAY = *Math::GSL::Eigenc::GSL_ERUNAWAY; 887*GSL_EMAXITER = *Math::GSL::Eigenc::GSL_EMAXITER; 888*GSL_EZERODIV = *Math::GSL::Eigenc::GSL_EZERODIV; 889*GSL_EBADTOL = *Math::GSL::Eigenc::GSL_EBADTOL; 890*GSL_ETOL = *Math::GSL::Eigenc::GSL_ETOL; 891*GSL_EUNDRFLW = *Math::GSL::Eigenc::GSL_EUNDRFLW; 892*GSL_EOVRFLW = *Math::GSL::Eigenc::GSL_EOVRFLW; 893*GSL_ELOSS = *Math::GSL::Eigenc::GSL_ELOSS; 894*GSL_EROUND = *Math::GSL::Eigenc::GSL_EROUND; 895*GSL_EBADLEN = *Math::GSL::Eigenc::GSL_EBADLEN; 896*GSL_ENOTSQR = *Math::GSL::Eigenc::GSL_ENOTSQR; 897*GSL_ESING = *Math::GSL::Eigenc::GSL_ESING; 898*GSL_EDIVERGE = *Math::GSL::Eigenc::GSL_EDIVERGE; 899*GSL_EUNSUP = *Math::GSL::Eigenc::GSL_EUNSUP; 900*GSL_EUNIMPL = *Math::GSL::Eigenc::GSL_EUNIMPL; 901*GSL_ECACHE = *Math::GSL::Eigenc::GSL_ECACHE; 902*GSL_ETABLE = *Math::GSL::Eigenc::GSL_ETABLE; 903*GSL_ENOPROG = *Math::GSL::Eigenc::GSL_ENOPROG; 904*GSL_ENOPROGJ = *Math::GSL::Eigenc::GSL_ENOPROGJ; 905*GSL_ETOLF = *Math::GSL::Eigenc::GSL_ETOLF; 906*GSL_ETOLX = *Math::GSL::Eigenc::GSL_ETOLX; 907*GSL_ETOLG = *Math::GSL::Eigenc::GSL_ETOLG; 908*GSL_EOF = *Math::GSL::Eigenc::GSL_EOF; 909*GSL_EIGEN_SORT_VAL_ASC = *Math::GSL::Eigenc::GSL_EIGEN_SORT_VAL_ASC; 910*GSL_EIGEN_SORT_VAL_DESC = *Math::GSL::Eigenc::GSL_EIGEN_SORT_VAL_DESC; 911*GSL_EIGEN_SORT_ABS_ASC = *Math::GSL::Eigenc::GSL_EIGEN_SORT_ABS_ASC; 912*GSL_EIGEN_SORT_ABS_DESC = *Math::GSL::Eigenc::GSL_EIGEN_SORT_ABS_DESC; 913 914 915@EXPORT_OK = qw/ 916 gsl_eigen_symm_alloc gsl_eigen_symm_free 917 gsl_eigen_symm gsl_eigen_symmv_alloc gsl_eigen_symmv_free gsl_eigen_symmv 918 gsl_eigen_herm_alloc gsl_eigen_herm_free gsl_eigen_herm gsl_eigen_hermv_alloc 919 gsl_eigen_hermv_free gsl_eigen_hermv gsl_eigen_francis_alloc gsl_eigen_francis_free 920 gsl_eigen_francis_T gsl_eigen_francis gsl_eigen_francis_Z gsl_eigen_nonsymm_alloc 921 gsl_eigen_nonsymm_free gsl_eigen_nonsymm_params gsl_eigen_nonsymm 922 gsl_eigen_nonsymm_Z gsl_eigen_nonsymmv_alloc gsl_eigen_nonsymmv_free 923 gsl_eigen_nonsymmv gsl_eigen_nonsymmv_Z gsl_eigen_gensymm_alloc 924 gsl_eigen_gensymm_free gsl_eigen_gensymm gsl_eigen_gensymm_standardize 925 gsl_eigen_gensymmv_alloc gsl_eigen_gensymmv_free gsl_eigen_gensymmv 926 gsl_eigen_genherm_alloc gsl_eigen_genherm_free gsl_eigen_genherm 927 gsl_eigen_genherm_standardize gsl_eigen_genhermv_alloc gsl_eigen_genhermv_free 928 gsl_eigen_genhermv gsl_eigen_gen_alloc gsl_eigen_gen_free 929 gsl_eigen_gen_params gsl_eigen_gen gsl_eigen_gen_QZ 930 gsl_eigen_genv_alloc gsl_eigen_genv_free gsl_eigen_genv 931 gsl_eigen_genv_QZ gsl_eigen_symmv_sort gsl_eigen_hermv_sort 932 gsl_eigen_nonsymmv_sort gsl_eigen_gensymmv_sort gsl_eigen_genhermv_sort 933 gsl_eigen_genv_sort gsl_schur_gen_eigvals gsl_schur_solve_equation 934 gsl_schur_solve_equation_z gsl_eigen_jacobi gsl_eigen_invert_jacobi 935 $GSL_EIGEN_SORT_VAL_ASC $GSL_EIGEN_SORT_VAL_DESC 936 $GSL_EIGEN_SORT_ABS_ASC $GSL_EIGEN_SORT_ABS_DESC 937 /; 938%EXPORT_TAGS = ( all => [ @EXPORT_OK ] ); 939 940__END__ 941 942=encoding utf8 943 944=head1 NAME 945 946Math::GSL::Eigen - Functions for computing eigenvalues and eigenvectors of matrices 947 948=head1 SYNOPSIS 949 950use Math::GSL::Eigen qw/:all/; 951 952=head1 DESCRIPTION 953 954Here is a list of all the functions included in this module : 955 956=over 957 958=item gsl_eigen_symm_alloc($n) - This function returns a workspace for computing eigenvalues of n-by-n real symmetric matrices. 959 960=item gsl_eigen_symm_free($w) - This function frees the memory associated with the workspace $w. 961 962=item gsl_eigen_symm($A, $eval, $w) - This function computes the eigenvalues of the real symmetric matrix $A. Additional workspace of the appropriate size must be provided in $w. The diagonal and lower triangular part of $A are destroyed during the computation, but the strict upper triangular part is not referenced. The eigenvalues are stored in the vector $eval and are unordered. 963 964=item gsl_eigen_symmv_alloc($n) - This function returns a workspace for computing eigenvalues and eigenvectors of n-by-n real symmetric matrices. 965 966=item gsl_eigen_symmv_free($w) - This function frees the memory associated with the workspace $w. 967 968=item gsl_eigen_symmv($A, $eval, $evec, $w) - This function computes the eigenvalues and eigenvectors of the real symmetric matrix $A. Additional workspace of the appropriate size must be provided in $w. The diagonal and lower triangular part of $A are destroyed during the computation, but the strict upper triangular part is not referenced. The eigenvalues are stored in the vector $eval and are unordered. The corresponding eigenvectors are stored in the columns of the matrix $evec. 969 970=item gsl_eigen_herm_alloc($n) - This function returns a workspace for computing eigenvalues of n-by-n complex hermitian matrices. 971 972=item gsl_eigen_herm_free($w) - This function frees the memory associated with the workspace $w. 973 974=item gsl_eigen_herm($A, $eval, $w) - This function computes the eigenvalues of the complex hermitian matrix $A. Additional workspace of the appropriate size must be provided in $w. The diagonal and lower triangular part of $A are destroyed during the computation, but the strict upper triangular part is not referenced. The imaginary parts of the diagonal are assumed to be zero and are not referenced. The eigenvalues are stored in the vector $eval and are unordered. 975 976=item gsl_eigen_hermv_alloc($n) - This function returns a workspace for computing eigenvalues and eigenvectors of n-by-n complex hermitian matrices. 977 978=item gsl_eigen_hermv_free($w) - This function frees the memory associated with the workspace $w. 979 980=item gsl_eigen_hermv($A, $eval, $evec, $w) - This function computes the eigenvalues and eigenvectors of the complex hermitian matrix $A. Additional workspace of the appropriate size must be provided in $w. The diagonal and lower triangular part of $A are destroyed during the computation, but the strict upper triangular part is not referenced. The imaginary parts of the diagonal are assumed to be zero and are not referenced. The eigenvalues are stored in the vector $eval and are unordered. The corresponding complex eigenvectors are stored in the columns of the matrix $evec. 981 982=item gsl_eigen_francis_alloc($n) - 983 984=item gsl_eigen_francis_free($w) - This function frees the memory associated with the workspace $w. 985 986=item gsl_eigen_francis_T 987 988=item gsl_eigen_francis 989 990=item gsl_eigen_francis_Z 991 992=item gsl_eigen_nonsymm_alloc($n) - This function returns a workspace for computing eigenvalues of n-by-n real nonsymmetric matrices. 993 994=item gsl_eigen_nonsymm_free($w) - This function frees the memory associated with the workspace $w. 995 996=item gsl_eigen_nonsymm_params($compute_t, $balance, $w) - This function sets some parameters which determine how the eigenvalue problem is solved in subsequent calls to gsl_eigen_nonsymm. If $compute_t is set to 1, the full Schur form T will be computed by gsl_eigen_nonsymm. If it is set to 0, T will not be computed (this is the default setting). If balance is set to 1, a balancing transformation is applied to the matrix prior to computing eigenvalues. This transformation is designed to make the rows and columns of the matrix have comparable norms, and can result in more accurate eigenvalues for matrices whose entries vary widely in magnitude. 997 998=item gsl_eigen_nonsymm($A, $eval, $w) - This function computes the eigenvalues of the real nonsymmetric matrix $A and stores them in the vector $eval. If T is desired, it is stored in the upper portion of $A on output. Otherwise, on output, the diagonal of $A will contain the 1-by-1 real eigenvalues and 2-by-2 complex conjugate eigenvalue systems, and the rest of $A is destroyed. In rare cases, this function may fail to find all eigenvalues. If this happens, an error code is returned (1) and the number of converged eigenvalues is stored in $w->{n_evals}. The converged eigenvalues are stored in the beginning of $eval. 999 1000=item gsl_eigen_nonsymm_Z($A, $eval, $Z, $w) - This function is identical to gsl_eigen_nonsymm except it also computes the Schur vectors and stores them into the $Z matrix. 1001 1002=item gsl_eigen_nonsymmv_alloc($n) - This function allocates a workspace for computing eigenvalues and eigenvectors of n-by-n real nonsymmetric matrices. 1003 1004=item gsl_eigen_nonsymmv_free($w) - This function frees the memory associated with the workspace $w. 1005 1006=item gsl_eigen_nonsymmv($A, $eval, $evec, $w) - This function computes eigenvalues and right eigenvectors of the n-by-n real nonsymmetric matrix $A. It first calls gsl_eigen_nonsymm to compute the eigenvalues, Schur form T, and Schur vectors. Then it finds eigenvectors of T and backtransforms them using the Schur vectors. The Schur vectors are destroyed in the process, but can be saved by using gsl_eigen_nonsymmv_Z. The computed eigenvectors are normalized to have unit magnitude. On output, the upper portion of $A contains the Schur form T. If gsl_eigen_nonsymm fails, no eigenvectors are computed, and an error code is returned (1). $eval is a complex vector and $evec is a complex matrix. 1007 1008=item gsl_eigen_nonsymmv_Z($A, $eval, $evec, $Z, $w) - This function is identical to gsl_eigen_nonsymmv except it also saves the Schur vectors into the $Z matrix. 1009 1010=item gsl_eigen_gensymm_alloc($n) - This function allocates a workspace for computing eigenvalues of n-by-n real generalized symmetric-definite eigensystems. 1011 1012=item gsl_eigen_gensymm_free($w) - This function frees the memory associated with the workspace $w. 1013 1014=item gsl_eigen_gensymm($A, $B, $eval, $w) - This function computes the eigenvalues of the real generalized symmetric-definite matrix pair ($A, $B), and stores them in the vector $eval. On output, $B contains its Cholesky decomposition and $A is destroyed. 1015 1016=item gsl_eigen_gensymm_standardize 1017 1018=item gsl_eigen_gensymmv_alloc($n) - This function allocates a workspace for computing eigenvalues and eigenvectors of n-by-n real generalized symmetric-definite eigensystems. 1019 1020=item gsl_eigen_gensymmv_free($w) - This function frees the memory associated with the workspace $w. 1021 1022=item gsl_eigen_gensymmv($A, $B, $eval, $evec, $w) - This function computes the eigenvalues and eigenvectors of the real generalized symmetric-definite matrix pair ($A, $B), and stores them in $eval vector and $evec matrix respectively. The computed eigenvectors are normalized to have unit magnitude. On output, $B contains its Cholesky decomposition and A is destroyed. 1023 1024=item gsl_eigen_genherm_alloc($n) - This function allocates a workspace for computing eigenvalues of n-by-n complex generalized hermitian-definite eigensystems. 1025 1026=item gsl_eigen_genherm_free($w) - This function frees the memory associated with the workspace $w. 1027 1028=item gsl_eigen_genherm($A, $B, $eval, $w) - This function computes the eigenvalues of the complex generalized hermitian-definite matrix pair ($A, $B), and stores them in the $eval vector. On output, $B contains its Cholesky decomposition and $A is destroyed. 1029 1030=item gsl_eigen_genherm_standardize 1031 1032=item gsl_eigen_genhermv_alloc($n) - This function allocates a workspace for computing eigenvalues and eigenvectors of n-by-n complex generalized hermitian-definite eigensystems. 1033 1034=item gsl_eigen_genhermv_free($w) - This function frees the memory associated with the workspace $w. 1035 1036=item gsl_eigen_genhermv($A, $B, $eval, $evec, $w) - This function computes the eigenvalues and eigenvectors of the complex generalized hermitian-definite matrix pair ($A, $B), and stores them in $eval vector and $evec matrix respectively. The computed eigenvectors are normalized to have unit magnitude. On output, $B contains its Cholesky decomposition and $A is destroyed. 1037 1038=item gsl_eigen_gen_alloc($n) - This function allocates a workspace for computing eigenvalues of n-by-n real generalized nonsymmetric eigensystems. 1039 1040=item gsl_eigen_gen_free($w) - This function frees the memory associated with the workspace $w. 1041 1042=item gsl_eigen_gen_params($compute_s, $compute_t, $balance, $w) - This function sets some parameters which determine how the eigenvalue problem is solved in subsequent calls to gsl_eigen_gen. If $compute_s is set to 1, the full Schur form S will be computed by gsl_eigen_gen. If it is set to 0, S will not be computed (this is the default setting). S is a quasi upper triangular matrix with 1-by-1 and 2-by-2 blocks on its diagonal. 1-by-1 blocks correspond to real eigenvalues, and 2-by-2 blocks correspond to complex eigenvalues. If $compute_t is set to 1, the full Schur form T will be computed by gsl_eigen_gen. If it is set to 0, T will not be computed (this is the default setting). T is an upper triangular matrix with non-negative elements on its diagonal. Any 2-by-2 blocks in S will correspond to a 2-by-2 diagonal block in T. The $balance parameter is currently ignored, since generalized balancing is not yet implemented. 1043 1044=item gsl_eigen_gen($A, $B, $alpha, $beta, $w) - This function computes the eigenvalues of the real generalized nonsymmetric matrix pair ($A, $B), and stores them as pairs in ($alpha, $beta), where $alpha is complex and $beta is real, both are vectors. The elements of $beta are normalized to be non-negative. If S is desired, it is stored in $A on output. If T is desired, it is stored in $B on output. The ordering of eigenvalues in ($alpha, $beta) follows the ordering of the diagonal blocks in the Schur forms S and T. In rare cases, this function may fail to find all eigenvalues. If this occurs, an error code is returned (1). 1045 1046=item gsl_eigen_gen_QZ($A, $B, $alpha, $beta, $Q, $Z, $w) - This function is identical to gsl_eigen_gen except it also computes the left and right Schur vectors and stores them into $Q matrix and $Z matrix respectively. 1047 1048=item gsl_eigen_genv_alloc($n) - This function allocates a workspace for computing eigenvalues and eigenvectors of n-by-n real generalized nonsymmetric eigensystems. 1049 1050=item gsl_eigen_genv_free($w) - This function frees the memory associated with the workspace $w. 1051 1052=item gsl_eigen_genv($A, $B, $alpha, $beta, $evec, $w) - This function computes eigenvalues and right eigenvectors of the n-by-n real generalized nonsymmetric matrix pair ($A, $B). The eigenvalues are stored in ($alpha, $beta) where $alpha is a complex vector and $beta a real vector and the eigenvectors are stored in $evec complex matrix. It first calls gsl_eigen_gen to compute the eigenvalues, Schur forms, and Schur vectors. Then it finds eigenvectors of the Schur forms and backtransforms them using the Schur vectors. The Schur vectors are destroyed in the process, but can be saved by using gsl_eigen_genv_QZ. The computed eigenvectors are normalized to have unit magnitude. On output, ($A, $B) contains the generalized Schur form (S, T). If gsl_eigen_gen fails, no eigenvectors are computed, and an error code is returned (1). 1053 1054=item gsl_eigen_genv_QZ($A, $B, $alpha, $beta, $evec, $Q, $Z, $w) - This function is identical to gsl_eigen_genv except it also computes the left and right Schur vectors and stores them into $Q and $Z matrices respectively. 1055 1056=item gsl_eigen_symmv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding real eigenvectors stored in the columns of the matrix $evec according to the value of the parameter $sort_type which is one of the constant included in this module. 1057 1058=item gsl_eigen_hermv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding real eigenvectors stored in the columns of the matrix $evec according to the value of the parameter $sort_type which is one of the constant included in this module. 1059 1060=item gsl_eigen_nonsymmv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding complex eigenvectors stored in the columns of the complex matrix $evec into ascending or descending order according to the value of the parameter $sort_type. Only $GSL_EIGEN_SORT_ABS_ASC and $GSL_EIGEN_SORT_ABS_DESC are supported due to the eigenvalues being complex. 1061 1062=item gsl_eigen_gensymmv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding real eigenvectors stored in the columns of the matrix $evec according to the value of the parameter $sort_type which is one of the constant included in this module. 1063 1064=item gsl_eigen_genhermv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding real eigenvectors stored in the columns of the matrix $evec according to the value of the parameter $sort_type which is one of the constant included in this module. 1065 1066=item gsl_eigen_genv_sort($eval, $evec, $sort_type) - This function simultaneously sorts the eigenvalues stored in the vector $eval and the corresponding complex eigenvectors stored in the columns of the complex matrix $evec into ascending or descending order according to the value of the parameter $sort_type. Only $GSL_EIGEN_SORT_ABS_ASC and $GSL_EIGEN_SORT_ABS_DESC are supported due to the eigenvalues being complex. 1067 1068=item gsl_schur_gen_eigvals 1069 1070=item gsl_schur_solve_equation 1071 1072=item gsl_schur_solve_equation_z 1073 1074=item gsl_eigen_jacobi 1075 1076=item gsl_eigen_invert_jacobi 1077 1078=back 1079 1080This module also includes these constants : 1081 1082=over 1083 1084=item $GSL_EIGEN_SORT_VAL_ASC - ascending order in numerical value 1085 1086=item $GSL_EIGEN_SORT_VAL_DESC - descending order in numerical value 1087 1088=item $GSL_EIGEN_SORT_ABS_ASC - ascending order in magnitude 1089 1090=item $GSL_EIGEN_SORT_ABS_DESC - descending order in magnitude 1091 1092=back 1093 1094For more informations on the functions, we refer you to the GSL official documentation: 1095L<http://www.gnu.org/software/gsl/manual/html_node/> 1096 1097 1098 1099=head1 EXAMPLES 1100 1101This example shows how to use the gsl_eigen_symmv functions to find the eigenvalues and eigenvectors of a matrix. 1102 1103 use Math::GSL::Vector qw/:all/; 1104 use Math::GSL::Matrix qw/:all/; 1105 use Math::GSL::Eigen qw/:all/; 1106 my $w = gsl_eigen_symmv_alloc(2); 1107 my $m = gsl_matrix_alloc(2,2); 1108 gsl_matrix_set($m, 0, 0, 2); 1109 gsl_matrix_set($m, 0, 1, 1); 1110 gsl_matrix_set($m, 1, 0, 1); 1111 gsl_matrix_set($m, 1, 1, 2); 1112 my $eval = gsl_vector_alloc(2); 1113 my $evec = gsl_matrix_alloc(2,2); 1114 gsl_eigen_symmv($m, $eval, $evec, $w); 1115 gsl_eigen_gensymmv_sort($eval, $evec, $GSL_EIGEN_SORT_ABS_ASC); 1116 print "The first eigenvalue is : " . gsl_vector_get($eval, 0) . "\n"; 1117 print "The second eigenvalue is : " . gsl_vector_get($eval, 1) . "\n"; 1118 my $x = gsl_matrix_get($evec, 0, 0); 1119 my $y = gsl_matrix_get($evec, 0, 1); 1120 print "The first eigenvector is [$x, $y] \n"; 1121 $x = gsl_matrix_get($evec, 1, 0); 1122 $y = gsl_matrix_get($evec, 1, 1); 1123 print "The second eigenvector is [$x, $y] \n"; 1124 1125=head1 AUTHORS 1126 1127Jonathan "Duke" Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com> 1128 1129=head1 COPYRIGHT AND LICENSE 1130 1131Copyright (C) 2008-2021 Jonathan "Duke" Leto and Thierry Moisan 1132 1133This program is free software; you can redistribute it and/or modify it 1134under the same terms as Perl itself. 1135 1136=cut 11371; 1138