gsl 1.15.3 → 1.16.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.travis.yml +24 -0
- data/AUTHORS +10 -2
- data/COPYING +341 -339
- data/ChangeLog +612 -554
- data/Gemfile +4 -0
- data/README.md +77 -0
- data/Rakefile +14 -93
- data/THANKS +1 -1
- data/examples/blas/blas.rb +1 -1
- data/examples/bspline.rb +3 -3
- data/examples/complex/functions.rb +4 -4
- data/examples/complex/mul.rb +1 -1
- data/examples/const/physconst.rb +4 -4
- data/examples/const/travel.rb +4 -4
- data/examples/eigen/nonsymmv.rb +1 -1
- data/examples/eigen/qhoscillator.rb +3 -3
- data/examples/fft/radix2.rb +1 -1
- data/examples/fft/real-halfcomplex.rb +3 -3
- data/examples/fft/real-halfcomplex2.rb +3 -3
- data/examples/fit/expfit.rb +1 -1
- data/examples/fit/multifit.rb +1 -1
- data/examples/fit/ndlinear.rb +44 -44
- data/examples/fit/nonlinearfit.rb +1 -1
- data/examples/fit/wlinear.rb +3 -3
- data/examples/function/function.rb +1 -1
- data/examples/function/min.rb +1 -1
- data/examples/function/synchrotron.rb +2 -2
- data/examples/gallery/koch.rb +1 -1
- data/examples/histogram/cauchy.rb +2 -2
- data/examples/histogram/exponential.rb +1 -1
- data/examples/histogram/histo3d.rb +1 -1
- data/examples/histogram/histogram-pdf.rb +2 -2
- data/examples/histogram/xexp.rb +1 -1
- data/examples/integration/ahmed.rb +2 -2
- data/examples/integration/cosmology.rb +7 -7
- data/examples/integration/friedmann.rb +4 -4
- data/examples/integration/qng.rb +1 -1
- data/examples/interp/demo.rb +2 -2
- data/examples/linalg/LQ_solve.rb +1 -1
- data/examples/linalg/LU.rb +1 -1
- data/examples/linalg/LU2.rb +1 -1
- data/examples/linalg/LU_narray.rb +1 -1
- data/examples/linalg/PTLQ.rb +1 -1
- data/examples/linalg/QRPT.rb +1 -1
- data/examples/linalg/chol.rb +1 -1
- data/examples/linalg/chol_narray.rb +1 -1
- data/examples/linalg/complex.rb +1 -1
- data/examples/math/elementary.rb +1 -1
- data/examples/math/functions.rb +1 -1
- data/examples/math/inf_nan.rb +1 -1
- data/examples/math/minmax.rb +1 -1
- data/examples/math/power.rb +1 -1
- data/examples/math/test.rb +1 -1
- data/examples/min.rb +1 -1
- data/examples/multimin/bundle.rb +1 -1
- data/examples/multimin/cqp.rb +17 -17
- data/examples/multiroot/fsolver3.rb +1 -1
- data/examples/odeiv/binarysystem.rb +12 -12
- data/examples/odeiv/demo.rb +3 -3
- data/examples/odeiv/frei1.rb +7 -7
- data/examples/odeiv/frei2.rb +4 -4
- data/examples/odeiv/oscillator.rb +1 -1
- data/examples/odeiv/sedov.rb +3 -3
- data/examples/odeiv/whitedwarf.rb +11 -11
- data/examples/permutation/ex1.rb +2 -2
- data/examples/permutation/permutation.rb +1 -1
- data/examples/poly/demo.rb +1 -1
- data/examples/random/diffusion.rb +1 -1
- data/examples/random/generator.rb +2 -2
- data/examples/random/randomwalk.rb +3 -3
- data/examples/random/rng.rb +1 -1
- data/examples/roots/bisection.rb +1 -1
- data/examples/roots/brent.rb +1 -1
- data/examples/roots/demo.rb +1 -1
- data/examples/roots/newton.rb +2 -2
- data/examples/roots/recombination.gp +0 -1
- data/examples/sf/hyperg.rb +1 -1
- data/examples/sf/sphbessel.rb +1 -1
- data/examples/sort/sort.rb +1 -1
- data/examples/tamu_anova.rb +4 -4
- data/examples/vector/add.rb +1 -1
- data/examples/vector/decimate.rb +1 -1
- data/examples/vector/gnuplot.rb +8 -8
- data/examples/vector/vector.rb +2 -2
- data/examples/wavelet/wavelet1.rb +1 -1
- data/ext/{alf.c → gsl_native/alf.c} +10 -10
- data/ext/{array.c → gsl_native/array.c} +70 -159
- data/ext/{array_complex.c → gsl_native/array_complex.c} +63 -66
- data/ext/{blas.c → gsl_native/blas.c} +2 -3
- data/ext/{blas1.c → gsl_native/blas1.c} +35 -36
- data/ext/{blas2.c → gsl_native/blas2.c} +57 -62
- data/ext/{blas3.c → gsl_native/blas3.c} +57 -58
- data/ext/{block.c → gsl_native/block.c} +14 -18
- data/ext/{block_source.c → gsl_native/block_source.h} +110 -112
- data/ext/gsl_native/bspline.c +122 -0
- data/ext/{bundle.c → gsl_native/bundle.c} +0 -0
- data/ext/{cdf.c → gsl_native/cdf.c} +79 -93
- data/ext/{cheb.c → gsl_native/cheb.c} +78 -89
- data/ext/{combination.c → gsl_native/combination.c} +11 -19
- data/ext/{common.c → gsl_native/common.c} +9 -41
- data/ext/{complex.c → gsl_native/complex.c} +116 -118
- data/ext/gsl_native/const.c +331 -0
- data/ext/{const_additional.c → gsl_native/const_additional.c} +13 -34
- data/ext/gsl_native/cqp.c +283 -0
- data/ext/{deriv.c → gsl_native/deriv.c} +25 -33
- data/ext/{dht.c → gsl_native/dht.c} +23 -31
- data/ext/{diff.c → gsl_native/diff.c} +26 -28
- data/ext/{dirac.c → gsl_native/dirac.c} +45 -46
- data/ext/{eigen.c → gsl_native/eigen.c} +1044 -1095
- data/ext/{error.c → gsl_native/error.c} +18 -18
- data/ext/gsl_native/extconf.rb +118 -0
- data/ext/{fft.c → gsl_native/fft.c} +197 -204
- data/ext/{fit.c → gsl_native/fit.c} +17 -18
- data/ext/gsl_native/fresnel.c +312 -0
- data/ext/{function.c → gsl_native/function.c} +37 -43
- data/ext/{geometry.c → gsl_native/geometry.c} +16 -16
- data/ext/{graph.c → gsl_native/graph.c} +39 -89
- data/ext/{gsl.c → gsl_native/gsl.c} +12 -33
- data/ext/{gsl_narray.c → gsl_native/gsl_narray.c} +20 -30
- data/ext/{histogram.c → gsl_native/histogram.c} +133 -160
- data/ext/{histogram2d.c → gsl_native/histogram2d.c} +78 -104
- data/ext/{histogram3d.c → gsl_native/histogram3d.c} +76 -76
- data/ext/{histogram3d_source.c → gsl_native/histogram3d_source.c} +196 -197
- data/ext/{histogram_find.c → gsl_native/histogram_find.c} +32 -34
- data/ext/{histogram_oper.c → gsl_native/histogram_oper.c} +43 -52
- data/ext/{ieee.c → gsl_native/ieee.c} +9 -21
- data/{include → ext/gsl_native/include}/rb_gsl.h +4 -26
- data/{include → ext/gsl_native/include}/rb_gsl_array.h +15 -39
- data/{include → ext/gsl_native/include}/rb_gsl_cheb.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_common.h +61 -61
- data/{include → ext/gsl_native/include}/rb_gsl_complex.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_const.h +0 -6
- data/ext/gsl_native/include/rb_gsl_dirac.h +6 -0
- data/{include → ext/gsl_native/include}/rb_gsl_eigen.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_fft.h +0 -13
- data/{include → ext/gsl_native/include}/rb_gsl_fit.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_function.h +0 -4
- data/{include → ext/gsl_native/include}/rb_gsl_graph.h +2 -4
- data/{include → ext/gsl_native/include}/rb_gsl_histogram.h +8 -8
- data/{include → ext/gsl_native/include}/rb_gsl_histogram3d.h +50 -50
- data/{include → ext/gsl_native/include}/rb_gsl_integration.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_interp.h +0 -5
- data/{include → ext/gsl_native/include}/rb_gsl_linalg.h +2 -6
- data/{include → ext/gsl_native/include}/rb_gsl_math.h +0 -6
- data/{include → ext/gsl_native/include}/rb_gsl_odeiv.h +0 -3
- data/{include → ext/gsl_native/include}/rb_gsl_poly.h +3 -7
- data/{include → ext/gsl_native/include}/rb_gsl_rational.h +1 -8
- data/{include → ext/gsl_native/include}/rb_gsl_rng.h +0 -1
- data/{include → ext/gsl_native/include}/rb_gsl_root.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_sf.h +39 -48
- data/{include → ext/gsl_native/include}/rb_gsl_statistics.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_tensor.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_with_narray.h +3 -1
- data/{include → ext/gsl_native/include}/templates_off.h +0 -0
- data/{include → ext/gsl_native/include}/templates_on.h +1 -1
- data/ext/{integration.c → gsl_native/integration.c} +164 -189
- data/ext/{interp.c → gsl_native/interp.c} +25 -38
- data/ext/gsl_native/jacobi.c +733 -0
- data/ext/{linalg.c → gsl_native/linalg.c} +462 -589
- data/ext/{linalg_complex.c → gsl_native/linalg_complex.c} +93 -106
- data/ext/{math.c → gsl_native/math.c} +48 -67
- data/ext/{matrix.c → gsl_native/matrix.c} +13 -16
- data/ext/{matrix_complex.c → gsl_native/matrix_complex.c} +119 -123
- data/ext/{matrix_double.c → gsl_native/matrix_double.c} +79 -82
- data/ext/{matrix_int.c → gsl_native/matrix_int.c} +53 -54
- data/ext/{matrix_source.c → gsl_native/matrix_source.h} +292 -318
- data/ext/{min.c → gsl_native/min.c} +45 -76
- data/ext/{monte.c → gsl_native/monte.c} +50 -64
- data/ext/{multifit.c → gsl_native/multifit.c} +142 -151
- data/ext/{multimin.c → gsl_native/multimin.c} +64 -92
- data/ext/{multimin_fsdf.c → gsl_native/multimin_fsdf.c} +16 -16
- data/ext/{multiroots.c → gsl_native/multiroots.c} +73 -76
- data/ext/{multiset.c → gsl_native/multiset.c} +4 -8
- data/ext/{ndlinear.c → gsl_native/ndlinear.c} +320 -321
- data/ext/{nmf.c → gsl_native/nmf.c} +11 -11
- data/ext/{nmf_wrap.c → gsl_native/nmf_wrap.c} +1 -1
- data/ext/{ntuple.c → gsl_native/ntuple.c} +23 -23
- data/ext/{odeiv.c → gsl_native/odeiv.c} +101 -116
- data/ext/gsl_native/ool.c +879 -0
- data/ext/{permutation.c → gsl_native/permutation.c} +39 -37
- data/ext/{poly.c → gsl_native/poly.c} +10 -13
- data/ext/{poly2.c → gsl_native/poly2.c} +16 -16
- data/ext/{poly_source.c → gsl_native/poly_source.h} +249 -293
- data/ext/{qrng.c → gsl_native/qrng.c} +9 -20
- data/ext/{randist.c → gsl_native/randist.c} +222 -247
- data/ext/{rational.c → gsl_native/rational.c} +12 -12
- data/ext/{rng.c → gsl_native/rng.c} +30 -47
- data/ext/{root.c → gsl_native/root.c} +47 -48
- data/ext/{sf.c → gsl_native/sf.c} +196 -244
- data/ext/{sf_airy.c → gsl_native/sf_airy.c} +2 -2
- data/ext/{sf_bessel.c → gsl_native/sf_bessel.c} +7 -7
- data/ext/{sf_clausen.c → gsl_native/sf_clausen.c} +1 -1
- data/ext/{sf_coulomb.c → gsl_native/sf_coulomb.c} +40 -40
- data/ext/{sf_coupling.c → gsl_native/sf_coupling.c} +30 -30
- data/ext/{sf_dawson.c → gsl_native/sf_dawson.c} +1 -1
- data/ext/{sf_debye.c → gsl_native/sf_debye.c} +1 -10
- data/ext/{sf_dilog.c → gsl_native/sf_dilog.c} +1 -1
- data/ext/{sf_elementary.c → gsl_native/sf_elementary.c} +3 -3
- data/ext/{sf_ellint.c → gsl_native/sf_ellint.c} +43 -43
- data/ext/{sf_elljac.c → gsl_native/sf_elljac.c} +3 -3
- data/ext/{sf_erfc.c → gsl_native/sf_erfc.c} +1 -5
- data/ext/{sf_exp.c → gsl_native/sf_exp.c} +3 -3
- data/ext/{sf_expint.c → gsl_native/sf_expint.c} +2 -12
- data/ext/{sf_fermi_dirac.c → gsl_native/sf_fermi_dirac.c} +1 -1
- data/ext/{sf_gamma.c → gsl_native/sf_gamma.c} +2 -6
- data/ext/{sf_gegenbauer.c → gsl_native/sf_gegenbauer.c} +1 -1
- data/ext/{sf_hyperg.c → gsl_native/sf_hyperg.c} +1 -1
- data/ext/{sf_laguerre.c → gsl_native/sf_laguerre.c} +4 -4
- data/ext/{sf_lambert.c → gsl_native/sf_lambert.c} +1 -1
- data/ext/{sf_legendre.c → gsl_native/sf_legendre.c} +1 -1
- data/ext/{sf_log.c → gsl_native/sf_log.c} +4 -4
- data/ext/gsl_native/sf_mathieu.c +235 -0
- data/ext/{sf_power.c → gsl_native/sf_power.c} +1 -1
- data/ext/{sf_psi.c → gsl_native/sf_psi.c} +3 -12
- data/ext/{sf_synchrotron.c → gsl_native/sf_synchrotron.c} +1 -1
- data/ext/{sf_transport.c → gsl_native/sf_transport.c} +1 -1
- data/ext/{sf_trigonometric.c → gsl_native/sf_trigonometric.c} +4 -4
- data/ext/{sf_zeta.c → gsl_native/sf_zeta.c} +1 -5
- data/ext/{signal.c → gsl_native/signal.c} +63 -68
- data/ext/{siman.c → gsl_native/siman.c} +45 -49
- data/ext/{sort.c → gsl_native/sort.c} +6 -7
- data/ext/{spline.c → gsl_native/spline.c} +28 -46
- data/ext/{stats.c → gsl_native/stats.c} +105 -118
- data/ext/{sum.c → gsl_native/sum.c} +34 -34
- data/ext/{tamu_anova.c → gsl_native/tamu_anova.c} +1 -1
- data/ext/{tensor.c → gsl_native/tensor.c} +8 -11
- data/ext/{tensor_source.c → gsl_native/tensor_source.h} +147 -148
- data/ext/{vector.c → gsl_native/vector.c} +11 -14
- data/ext/{vector_complex.c → gsl_native/vector_complex.c} +179 -184
- data/ext/{vector_double.c → gsl_native/vector_double.c} +178 -183
- data/ext/{vector_int.c → gsl_native/vector_int.c} +27 -29
- data/ext/{vector_source.c → gsl_native/vector_source.h} +428 -443
- data/ext/{wavelet.c → gsl_native/wavelet.c} +224 -246
- data/gsl.gemspec +29 -0
- data/lib/gsl.rb +8 -3
- data/lib/gsl/gnuplot.rb +3 -3
- data/lib/gsl/oper.rb +35 -60
- data/lib/gsl/version.rb +3 -0
- data/lib/rbgsl.rb +1 -3
- data/rdoc/alf.rdoc +5 -5
- data/rdoc/blas.rdoc +9 -9
- data/rdoc/bspline.rdoc +17 -17
- data/rdoc/changes.rdoc +4 -9
- data/rdoc/cheb.rdoc +25 -25
- data/rdoc/cholesky_complex.rdoc +21 -21
- data/rdoc/combi.rdoc +37 -37
- data/rdoc/complex.rdoc +22 -22
- data/rdoc/const.rdoc +47 -47
- data/rdoc/dht.rdoc +49 -49
- data/rdoc/diff.rdoc +42 -42
- data/rdoc/ehandling.rdoc +6 -6
- data/rdoc/eigen.rdoc +153 -153
- data/rdoc/fft.rdoc +146 -146
- data/rdoc/fit.rdoc +109 -109
- data/rdoc/function.rdoc +11 -11
- data/rdoc/graph.rdoc +17 -17
- data/rdoc/hist.rdoc +103 -103
- data/rdoc/hist2d.rdoc +42 -42
- data/rdoc/hist3d.rdoc +9 -9
- data/rdoc/integration.rdoc +110 -110
- data/rdoc/interp.rdoc +71 -71
- data/rdoc/intro.rdoc +8 -8
- data/rdoc/linalg.rdoc +188 -188
- data/rdoc/linalg_complex.rdoc +1 -1
- data/rdoc/math.rdoc +58 -58
- data/rdoc/matrix.rdoc +275 -275
- data/rdoc/min.rdoc +57 -57
- data/rdoc/monte.rdoc +22 -22
- data/rdoc/multimin.rdoc +95 -95
- data/rdoc/multiroot.rdoc +80 -80
- data/rdoc/narray.rdoc +32 -32
- data/rdoc/ndlinear.rdoc +54 -54
- data/rdoc/nonlinearfit.rdoc +100 -100
- data/rdoc/ntuple.rdoc +31 -31
- data/rdoc/odeiv.rdoc +88 -88
- data/rdoc/perm.rdoc +90 -90
- data/rdoc/poly.rdoc +66 -66
- data/rdoc/qrng.rdoc +21 -21
- data/rdoc/randist.rdoc +82 -82
- data/rdoc/ref.rdoc +57 -57
- data/rdoc/rng.rdoc +85 -85
- data/rdoc/roots.rdoc +57 -57
- data/rdoc/sf.rdoc +428 -428
- data/rdoc/siman.rdoc +19 -19
- data/rdoc/sort.rdoc +30 -30
- data/rdoc/start.rdoc +8 -8
- data/rdoc/stats.rdoc +52 -52
- data/rdoc/sum.rdoc +12 -12
- data/rdoc/tensor.rdoc +31 -31
- data/rdoc/tut.rdoc +1 -1
- data/rdoc/use.rdoc +39 -39
- data/rdoc/vector.rdoc +188 -188
- data/rdoc/vector_complex.rdoc +24 -24
- data/rdoc/wavelet.rdoc +46 -46
- data/test/gsl/blas_test.rb +79 -0
- data/test/gsl/bspline_test.rb +63 -0
- data/test/gsl/cdf_test.rb +1512 -0
- data/test/gsl/cheb_test.rb +80 -0
- data/test/gsl/combination_test.rb +100 -0
- data/test/gsl/complex_test.rb +20 -0
- data/test/gsl/const_test.rb +29 -0
- data/test/gsl/deriv_test.rb +62 -0
- data/test/gsl/dht_test.rb +79 -0
- data/test/gsl/diff_test.rb +53 -0
- data/test/gsl/eigen_test.rb +563 -0
- data/test/gsl/err_test.rb +23 -0
- data/test/gsl/fit_test.rb +101 -0
- data/test/gsl/histo_test.rb +14 -0
- data/test/gsl/index_test.rb +61 -0
- data/test/gsl/integration_test.rb +274 -0
- data/test/gsl/interp_test.rb +27 -0
- data/test/gsl/linalg_test.rb +463 -0
- data/test/gsl/matrix_nmf_test.rb +37 -0
- data/test/gsl/matrix_test.rb +98 -0
- data/test/gsl/min_test.rb +89 -0
- data/test/gsl/monte_test.rb +77 -0
- data/test/gsl/multifit_test.rb +753 -0
- data/test/gsl/multimin_test.rb +157 -0
- data/test/gsl/multiroot_test.rb +135 -0
- data/test/gsl/multiset_test.rb +52 -0
- data/test/gsl/odeiv_test.rb +275 -0
- data/test/gsl/oper_test.rb +98 -0
- data/test/gsl/poly_test.rb +338 -0
- data/test/gsl/qrng_test.rb +94 -0
- data/test/gsl/quartic_test.rb +28 -0
- data/test/gsl/randist_test.rb +122 -0
- data/test/gsl/rng_test.rb +303 -0
- data/test/gsl/roots_test.rb +78 -0
- data/test/gsl/sf_test.rb +2079 -0
- data/test/gsl/stats_test.rb +122 -0
- data/test/gsl/sum_test.rb +69 -0
- data/test/gsl/tensor_test.rb +396 -0
- data/test/gsl/vector_test.rb +223 -0
- data/test/gsl/wavelet_test.rb +130 -0
- data/test/gsl_test.rb +321 -0
- data/test/test_helper.rb +42 -0
- data/uncrustify.cfg +1693 -0
- metadata +337 -378
- data/README +0 -32
- data/VERSION +0 -1
- data/ext/bspline.c +0 -130
- data/ext/const.c +0 -673
- data/ext/cqp.c +0 -283
- data/ext/extconf.rb +0 -295
- data/ext/fcmp.c +0 -66
- data/ext/fresnel.c +0 -312
- data/ext/jacobi.c +0 -739
- data/ext/ool.c +0 -879
- data/ext/oper_complex_source.c +0 -253
- data/ext/sf_mathieu.c +0 -238
- data/include/rb_gsl_config.h +0 -62
- data/include/rb_gsl_dirac.h +0 -13
- data/rdoc/index.rdoc +0 -62
- data/rdoc/rngextra.rdoc +0 -11
- data/rdoc/screenshot.rdoc +0 -40
- data/setup.rb +0 -1585
- data/tests/blas/amax.rb +0 -14
- data/tests/blas/asum.rb +0 -16
- data/tests/blas/axpy.rb +0 -25
- data/tests/blas/copy.rb +0 -23
- data/tests/blas/dot.rb +0 -23
- data/tests/bspline.rb +0 -53
- data/tests/cdf.rb +0 -1388
- data/tests/cheb.rb +0 -112
- data/tests/combination.rb +0 -123
- data/tests/complex.rb +0 -17
- data/tests/const.rb +0 -24
- data/tests/deriv.rb +0 -85
- data/tests/dht/dht1.rb +0 -17
- data/tests/dht/dht2.rb +0 -23
- data/tests/dht/dht3.rb +0 -23
- data/tests/dht/dht4.rb +0 -23
- data/tests/diff.rb +0 -78
- data/tests/eigen/eigen.rb +0 -220
- data/tests/eigen/gen.rb +0 -105
- data/tests/eigen/genherm.rb +0 -66
- data/tests/eigen/gensymm.rb +0 -68
- data/tests/eigen/nonsymm.rb +0 -53
- data/tests/eigen/nonsymmv.rb +0 -53
- data/tests/eigen/symm-herm.rb +0 -74
- data/tests/err.rb +0 -58
- data/tests/fit.rb +0 -124
- data/tests/gsl_test.rb +0 -118
- data/tests/gsl_test2.rb +0 -110
- data/tests/histo.rb +0 -12
- data/tests/integration/integration1.rb +0 -72
- data/tests/integration/integration2.rb +0 -71
- data/tests/integration/integration3.rb +0 -71
- data/tests/integration/integration4.rb +0 -71
- data/tests/interp.rb +0 -45
- data/tests/linalg/HH.rb +0 -64
- data/tests/linalg/LU.rb +0 -47
- data/tests/linalg/QR.rb +0 -77
- data/tests/linalg/SV.rb +0 -24
- data/tests/linalg/TDN.rb +0 -116
- data/tests/linalg/TDS.rb +0 -122
- data/tests/linalg/bidiag.rb +0 -73
- data/tests/linalg/cholesky.rb +0 -20
- data/tests/linalg/linalg.rb +0 -158
- data/tests/matrix/matrix_complex_test.rb +0 -36
- data/tests/matrix/matrix_nmf_test.rb +0 -39
- data/tests/matrix/matrix_test.rb +0 -48
- data/tests/min.rb +0 -99
- data/tests/monte/miser.rb +0 -31
- data/tests/monte/vegas.rb +0 -45
- data/tests/multifit/test_2dgauss.rb +0 -112
- data/tests/multifit/test_brown.rb +0 -90
- data/tests/multifit/test_enso.rb +0 -246
- data/tests/multifit/test_filip.rb +0 -155
- data/tests/multifit/test_gauss.rb +0 -97
- data/tests/multifit/test_longley.rb +0 -110
- data/tests/multifit/test_multifit.rb +0 -52
- data/tests/multimin.rb +0 -139
- data/tests/multiroot.rb +0 -131
- data/tests/multiset.rb +0 -52
- data/tests/narray/blas_dnrm2.rb +0 -20
- data/tests/odeiv.rb +0 -353
- data/tests/poly/poly.rb +0 -290
- data/tests/poly/special.rb +0 -65
- data/tests/qrng.rb +0 -131
- data/tests/quartic.rb +0 -29
- data/tests/randist.rb +0 -134
- data/tests/rng.rb +0 -305
- data/tests/roots.rb +0 -76
- data/tests/run-test.sh +0 -17
- data/tests/sf/gsl_test_sf.rb +0 -249
- data/tests/sf/test_airy.rb +0 -83
- data/tests/sf/test_bessel.rb +0 -306
- data/tests/sf/test_coulomb.rb +0 -17
- data/tests/sf/test_dilog.rb +0 -25
- data/tests/sf/test_gamma.rb +0 -209
- data/tests/sf/test_hyperg.rb +0 -356
- data/tests/sf/test_legendre.rb +0 -227
- data/tests/sf/test_mathieu.rb +0 -59
- data/tests/sf/test_mode.rb +0 -19
- data/tests/sf/test_sf.rb +0 -839
- data/tests/stats.rb +0 -174
- data/tests/stats_mt.rb +0 -16
- data/tests/sum.rb +0 -98
- data/tests/sys.rb +0 -323
- data/tests/tensor.rb +0 -419
- data/tests/vector/vector_complex_test.rb +0 -101
- data/tests/vector/vector_test.rb +0 -141
- data/tests/wavelet.rb +0 -142
@@ -0,0 +1,879 @@
|
|
1
|
+
#ifdef HAVE_OOL_OOL_VERSION_H
|
2
|
+
#include "include/rb_gsl.h"
|
3
|
+
#include "include/rb_gsl_array.h"
|
4
|
+
#include <ool/ool_conmin.h>
|
5
|
+
|
6
|
+
static VALUE cool_conmin_function;
|
7
|
+
static VALUE cool_conmin_constraint;
|
8
|
+
static VALUE cool_conmin_pgrad;
|
9
|
+
static VALUE cool_conmin_spg;
|
10
|
+
static VALUE cool_conmin_gencan;
|
11
|
+
static VALUE cool_conmin_pgrad_parameters;
|
12
|
+
static VALUE cool_conmin_spg_parameters;
|
13
|
+
static VALUE cool_conmin_gencan_parameters;
|
14
|
+
|
15
|
+
#ifndef CHECK_OOL_CONMIN_FUNCTION
|
16
|
+
#define CHECK_OOL_CONMIN_FUNCTION(x) if(CLASS_OF(x)!=cool_conmin_function) \
|
17
|
+
rb_raise(rb_eTypeError, \
|
18
|
+
"wrong argument type %s (OOL::Conmin::Function expected)", \
|
19
|
+
rb_class2name(CLASS_OF(x)));
|
20
|
+
#endif
|
21
|
+
|
22
|
+
enum enum_ool_conmin_minimizer_type {
|
23
|
+
OOL_CONMIN_PGRAD,
|
24
|
+
OOL_CONMIN_SPG,
|
25
|
+
OOL_CONMIN_GENCAN,
|
26
|
+
};
|
27
|
+
|
28
|
+
static const ool_conmin_minimizer_type* get_minimizer_type(VALUE t)
|
29
|
+
{
|
30
|
+
char name[64];
|
31
|
+
|
32
|
+
switch (TYPE(t)) {
|
33
|
+
case T_STRING:
|
34
|
+
strcpy(name, STR2CSTR(t));
|
35
|
+
if (str_tail_grep(name, "pgrad") == 0) {
|
36
|
+
return ool_conmin_minimizer_pgrad;
|
37
|
+
} else if (str_tail_grep(name, "spg") == 0) {
|
38
|
+
return ool_conmin_minimizer_spg;
|
39
|
+
} else if (str_tail_grep(name, "gencan") == 0) {
|
40
|
+
return ool_conmin_minimizer_gencan;
|
41
|
+
} else {
|
42
|
+
rb_raise(rb_eTypeError, "%s: unknown minimizer type", name);
|
43
|
+
}
|
44
|
+
break;
|
45
|
+
case T_FIXNUM:
|
46
|
+
switch (FIX2INT(t)) {
|
47
|
+
case OOL_CONMIN_PGRAD:
|
48
|
+
return ool_conmin_minimizer_pgrad;
|
49
|
+
break;
|
50
|
+
case OOL_CONMIN_SPG:
|
51
|
+
return ool_conmin_minimizer_spg;
|
52
|
+
break;
|
53
|
+
case OOL_CONMIN_GENCAN:
|
54
|
+
return ool_conmin_minimizer_gencan;
|
55
|
+
break;
|
56
|
+
default:
|
57
|
+
rb_raise(rb_eTypeError, "%d: unknown minimizer type", FIX2INT(t));
|
58
|
+
break;
|
59
|
+
}
|
60
|
+
break;
|
61
|
+
default:
|
62
|
+
if (t == cool_conmin_pgrad) return ool_conmin_minimizer_pgrad;
|
63
|
+
else if (t == cool_conmin_spg) return ool_conmin_minimizer_spg;
|
64
|
+
else if (t == cool_conmin_gencan) return ool_conmin_minimizer_gencan;
|
65
|
+
else rb_raise(rb_eTypeError, "type is given by a String or a Fixnum");
|
66
|
+
break;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
static void def_const(VALUE module)
|
71
|
+
{
|
72
|
+
rb_define_const(module, "CONTINUE", INT2FIX(OOL_CONTINUE));
|
73
|
+
rb_define_const(module, "SUCCESS", INT2FIX(OOL_SUCCESS));
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj);
|
78
|
+
static VALUE rb_ool_conmin_minimizer_alloc(int argc, VALUE *argv, VALUE klass)
|
79
|
+
{
|
80
|
+
ool_conmin_minimizer *m;
|
81
|
+
VALUE obj;
|
82
|
+
if (argc < 2) rb_raise(rb_eArgError, "Too few arguments (%d for >= 2)", argc);
|
83
|
+
m = ool_conmin_minimizer_alloc(get_minimizer_type(argv[0]), FIX2INT(argv[1]));
|
84
|
+
obj = Data_Wrap_Struct(klass, 0, ool_conmin_minimizer_free, m);
|
85
|
+
if (argc > 2) rb_ool_conmin_minimizer_set(argc-2, argv+2, obj);
|
86
|
+
return obj;
|
87
|
+
}
|
88
|
+
|
89
|
+
static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
|
90
|
+
ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary);
|
91
|
+
static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj)
|
92
|
+
{
|
93
|
+
ool_conmin_minimizer *m;
|
94
|
+
ool_conmin_function *F;
|
95
|
+
ool_conmin_constraint *C;
|
96
|
+
gsl_vector *v;
|
97
|
+
ool_conmin_pgrad_parameters Pp;
|
98
|
+
ool_conmin_spg_parameters Ps;
|
99
|
+
ool_conmin_gencan_parameters Pg;
|
100
|
+
void *P;
|
101
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
102
|
+
switch (argc) {
|
103
|
+
case 3:
|
104
|
+
if (CLASS_OF(argv[0]) != cool_conmin_function)
|
105
|
+
rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
|
106
|
+
if (CLASS_OF(argv[1]) != cool_conmin_constraint)
|
107
|
+
rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
|
108
|
+
if (!VECTOR_P(argv[2]))
|
109
|
+
rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
|
110
|
+
Data_Get_Struct(argv[0], ool_conmin_function, F);
|
111
|
+
Data_Get_Struct(argv[1], ool_conmin_constraint, C);
|
112
|
+
Data_Get_Struct(argv[2], gsl_vector, v);
|
113
|
+
P = get_parameter(m->type, &Pp, &Ps, &Pg, Qnil);
|
114
|
+
ool_conmin_minimizer_set(m, F, C, v, P);
|
115
|
+
break;
|
116
|
+
case 4:
|
117
|
+
if (CLASS_OF(argv[0]) != cool_conmin_function)
|
118
|
+
rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
|
119
|
+
if (CLASS_OF(argv[1]) != cool_conmin_constraint)
|
120
|
+
rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
|
121
|
+
if (!VECTOR_P(argv[2]))
|
122
|
+
rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
|
123
|
+
if (!rb_obj_is_kind_of(argv[3], rb_cArray) && argv[3] != Qnil)
|
124
|
+
rb_raise(rb_eTypeError, "Wrong argument type 3 (Array expected)");
|
125
|
+
Data_Get_Struct(argv[0], ool_conmin_function, F);
|
126
|
+
Data_Get_Struct(argv[1], ool_conmin_constraint, C);
|
127
|
+
Data_Get_Struct(argv[2], gsl_vector, v);
|
128
|
+
P = get_parameter(m->type, &Pp, &Ps, &Pg, argv[3]);
|
129
|
+
ool_conmin_minimizer_set(m, F, C, v, P);
|
130
|
+
break;
|
131
|
+
default:
|
132
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
|
133
|
+
}
|
134
|
+
return obj;
|
135
|
+
}
|
136
|
+
|
137
|
+
static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
|
138
|
+
ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary)
|
139
|
+
{
|
140
|
+
if (T == ool_conmin_minimizer_pgrad) {
|
141
|
+
if (ary == Qnil) {
|
142
|
+
ool_conmin_parameters_default(T, (void*) Pp);
|
143
|
+
} else {
|
144
|
+
Pp->fmin = NUM2DBL(rb_ary_entry(ary, 0));
|
145
|
+
Pp->tol = NUM2DBL(rb_ary_entry(ary, 1));
|
146
|
+
Pp->alpha = NUM2DBL(rb_ary_entry(ary, 2));
|
147
|
+
Pp->sigma1 = NUM2DBL(rb_ary_entry(ary, 3));
|
148
|
+
Pp->sigma2 = NUM2DBL(rb_ary_entry(ary, 4));
|
149
|
+
}
|
150
|
+
return (void*) Pp;
|
151
|
+
} else if (T == ool_conmin_minimizer_spg) {
|
152
|
+
if (ary == Qnil) {
|
153
|
+
ool_conmin_parameters_default(T, (void*) Ps);
|
154
|
+
} else {
|
155
|
+
Ps->fmin = NUM2DBL(rb_ary_entry(ary, 0));
|
156
|
+
Ps->tol = NUM2DBL(rb_ary_entry(ary, 1));
|
157
|
+
Ps->M = NUM2DBL(rb_ary_entry(ary, 2));
|
158
|
+
Ps->alphamin = NUM2DBL(rb_ary_entry(ary, 3));
|
159
|
+
Ps->alphamax = NUM2DBL(rb_ary_entry(ary, 4));
|
160
|
+
Ps->gamma = NUM2DBL(rb_ary_entry(ary, 5));
|
161
|
+
Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 6));
|
162
|
+
Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 7));
|
163
|
+
}
|
164
|
+
return (void*) Ps;
|
165
|
+
} else {
|
166
|
+
if (ary == Qnil) {
|
167
|
+
ool_conmin_parameters_default(T, (void*) Pg);
|
168
|
+
} else {
|
169
|
+
Pg->epsgpen = NUM2DBL(rb_ary_entry(ary, 0));
|
170
|
+
Pg->epsgpsn = NUM2DBL(rb_ary_entry(ary, 1));
|
171
|
+
Pg->fmin = NUM2DBL(rb_ary_entry(ary, 2));
|
172
|
+
Pg->udelta0 = NUM2DBL(rb_ary_entry(ary, 3));
|
173
|
+
Pg->ucgmia = NUM2DBL(rb_ary_entry(ary, 4));
|
174
|
+
Pg->ucgmib = NUM2DBL(rb_ary_entry(ary, 5));
|
175
|
+
Pg->cg_scre = FIX2INT(rb_ary_entry(ary, 6));
|
176
|
+
Pg->cg_gpnf = NUM2DBL(rb_ary_entry(ary, 7));
|
177
|
+
Pg->cg_epsi = NUM2DBL(rb_ary_entry(ary, 8));
|
178
|
+
Pg->cg_epsf = NUM2DBL(rb_ary_entry(ary, 9));
|
179
|
+
Pg->cg_epsnqmp = NUM2DBL(rb_ary_entry(ary, 10));
|
180
|
+
Pg->cg_maxitnqmp = (size_t) FIX2INT(rb_ary_entry(ary, 11));
|
181
|
+
Pg->nearlyq = FIX2INT(rb_ary_entry(ary, 12));
|
182
|
+
Pg->nint = NUM2DBL(rb_ary_entry(ary, 13));
|
183
|
+
Pg->next = NUM2DBL(rb_ary_entry(ary, 14));
|
184
|
+
Pg->mininterp = (size_t) FIX2INT(rb_ary_entry(ary, 15));
|
185
|
+
Pg->maxextrap = (size_t) FIX2INT(rb_ary_entry(ary, 16));
|
186
|
+
Pg->trtype = FIX2INT(rb_ary_entry(ary, 17));
|
187
|
+
Pg->eta = NUM2DBL(rb_ary_entry(ary, 18));
|
188
|
+
Pg->delmin = NUM2DBL(rb_ary_entry(ary, 19));
|
189
|
+
Pg->lspgmi = NUM2DBL(rb_ary_entry(ary, 20));
|
190
|
+
Pg->lspgma = NUM2DBL(rb_ary_entry(ary, 21));
|
191
|
+
Pg->theta = NUM2DBL(rb_ary_entry(ary, 22));
|
192
|
+
Pg->gamma = NUM2DBL(rb_ary_entry(ary, 23));
|
193
|
+
Pg->beta = NUM2DBL(rb_ary_entry(ary, 24));
|
194
|
+
Pg->sigma1 = NUM2DBL(rb_ary_entry(ary, 25));
|
195
|
+
Pg->sigma2 = NUM2DBL(rb_ary_entry(ary, 26));
|
196
|
+
Pg->epsrel = NUM2DBL(rb_ary_entry(ary, 27));
|
197
|
+
Pg->epsabs = NUM2DBL(rb_ary_entry(ary, 28));
|
198
|
+
Pg->infrel = NUM2DBL(rb_ary_entry(ary, 29));
|
199
|
+
Pg->infabs = NUM2DBL(rb_ary_entry(ary, 30));
|
200
|
+
}
|
201
|
+
return (void*) Pg;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
static VALUE create_parameters_ary_pgrad(ool_conmin_pgrad_parameters *Pp)
|
206
|
+
{
|
207
|
+
VALUE ary;
|
208
|
+
ary = rb_ary_new2(5);
|
209
|
+
rb_ary_store(ary, 0, rb_float_new(Pp->fmin));
|
210
|
+
rb_ary_store(ary, 1, rb_float_new(Pp->tol));
|
211
|
+
rb_ary_store(ary, 2, rb_float_new(Pp->alpha));
|
212
|
+
rb_ary_store(ary, 3, rb_float_new(Pp->sigma1));
|
213
|
+
rb_ary_store(ary, 4, rb_float_new(Pp->sigma2));
|
214
|
+
return ary;
|
215
|
+
}
|
216
|
+
|
217
|
+
static VALUE create_parameters_ary_spg(ool_conmin_spg_parameters *Ps)
|
218
|
+
{
|
219
|
+
VALUE ary;
|
220
|
+
ary = rb_ary_new2(8);
|
221
|
+
rb_ary_store(ary, 0, rb_float_new(Ps->fmin));
|
222
|
+
rb_ary_store(ary, 1, rb_float_new(Ps->tol));
|
223
|
+
rb_ary_store(ary, 2, rb_float_new(Ps->M));
|
224
|
+
rb_ary_store(ary, 3, rb_float_new(Ps->alphamin));
|
225
|
+
rb_ary_store(ary, 4, rb_float_new(Ps->alphamax));
|
226
|
+
rb_ary_store(ary, 5, rb_float_new(Ps->gamma));
|
227
|
+
rb_ary_store(ary, 6, rb_float_new(Ps->sigma2));
|
228
|
+
rb_ary_store(ary, 7, rb_float_new(Ps->sigma2));
|
229
|
+
return ary;
|
230
|
+
}
|
231
|
+
|
232
|
+
static VALUE create_parameters_ary_gencan(ool_conmin_gencan_parameters *Pg)
|
233
|
+
{
|
234
|
+
VALUE ary;
|
235
|
+
ary = rb_ary_new2(31);
|
236
|
+
rb_ary_store(ary, 0, rb_float_new(Pg->epsgpen));
|
237
|
+
rb_ary_store(ary, 1, rb_float_new(Pg->epsgpsn));
|
238
|
+
rb_ary_store(ary, 2, rb_float_new(Pg->fmin));
|
239
|
+
rb_ary_store(ary, 3, rb_float_new(Pg->udelta0));
|
240
|
+
rb_ary_store(ary, 4, rb_float_new(Pg->ucgmia));
|
241
|
+
rb_ary_store(ary, 5, rb_float_new(Pg->ucgmib));
|
242
|
+
rb_ary_store(ary, 6, INT2FIX(Pg->cg_scre));
|
243
|
+
rb_ary_store(ary, 7, rb_float_new(Pg->cg_gpnf));
|
244
|
+
rb_ary_store(ary, 8, rb_float_new(Pg->cg_epsi));
|
245
|
+
rb_ary_store(ary, 9, rb_float_new(Pg->cg_epsf));
|
246
|
+
rb_ary_store(ary, 10, rb_float_new(Pg->cg_epsnqmp));
|
247
|
+
rb_ary_store(ary, 11, INT2FIX((int) Pg->cg_maxitnqmp));
|
248
|
+
rb_ary_store(ary, 12, INT2FIX(Pg->nearlyq));
|
249
|
+
rb_ary_store(ary, 13, rb_float_new(Pg->nint));
|
250
|
+
rb_ary_store(ary, 14, rb_float_new(Pg->next));
|
251
|
+
rb_ary_store(ary, 15, INT2FIX((int)Pg->mininterp));
|
252
|
+
rb_ary_store(ary, 16, INT2FIX((int)Pg->maxextrap));
|
253
|
+
rb_ary_store(ary, 17, INT2FIX(Pg->trtype));
|
254
|
+
rb_ary_store(ary, 18, rb_float_new(Pg->eta));
|
255
|
+
rb_ary_store(ary, 19, rb_float_new(Pg->delmin));
|
256
|
+
rb_ary_store(ary, 20, rb_float_new(Pg->lspgmi));
|
257
|
+
rb_ary_store(ary, 21, rb_float_new(Pg->lspgma));
|
258
|
+
rb_ary_store(ary, 22, rb_float_new(Pg->theta));
|
259
|
+
rb_ary_store(ary, 23, rb_float_new(Pg->gamma));
|
260
|
+
rb_ary_store(ary, 24, rb_float_new(Pg->beta));
|
261
|
+
rb_ary_store(ary, 25, rb_float_new(Pg->sigma1));
|
262
|
+
rb_ary_store(ary, 26, rb_float_new(Pg->sigma2));
|
263
|
+
rb_ary_store(ary, 27, rb_float_new(Pg->epsrel));
|
264
|
+
rb_ary_store(ary, 28, rb_float_new(Pg->epsabs));
|
265
|
+
rb_ary_store(ary, 29, rb_float_new(Pg->infrel));
|
266
|
+
rb_ary_store(ary, 30, rb_float_new(Pg->infabs));
|
267
|
+
return ary;
|
268
|
+
}
|
269
|
+
static VALUE rb_ool_conmin_minimizer_parameters_get(VALUE obj)
|
270
|
+
{
|
271
|
+
ool_conmin_minimizer *m;
|
272
|
+
ool_conmin_pgrad_parameters *Pp;
|
273
|
+
ool_conmin_spg_parameters *Ps;
|
274
|
+
ool_conmin_gencan_parameters *Pg;
|
275
|
+
void *P;
|
276
|
+
VALUE ary;
|
277
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
278
|
+
ool_conmin_parameters_get(m, P);
|
279
|
+
if (m->type == ool_conmin_minimizer_pgrad) {
|
280
|
+
Pp = (ool_conmin_pgrad_parameters*) P;
|
281
|
+
ary = create_parameters_ary_pgrad(Pp);
|
282
|
+
} else if (m->type == ool_conmin_minimizer_spg) {
|
283
|
+
Ps = (ool_conmin_spg_parameters*) P;
|
284
|
+
ary = create_parameters_ary_spg(Ps);
|
285
|
+
} else {
|
286
|
+
Pg = (ool_conmin_gencan_parameters*) P;
|
287
|
+
ary = create_parameters_ary_gencan(Pg);
|
288
|
+
}
|
289
|
+
return ary;
|
290
|
+
}
|
291
|
+
|
292
|
+
static VALUE rb_ool_conmin_minimizer_parameters_set(VALUE obj, VALUE params)
|
293
|
+
{
|
294
|
+
ool_conmin_minimizer *m;
|
295
|
+
ool_conmin_pgrad_parameters *Pp;
|
296
|
+
ool_conmin_spg_parameters *Ps;
|
297
|
+
ool_conmin_gencan_parameters *Pg;
|
298
|
+
void *P;
|
299
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
300
|
+
P = get_parameter(m->type, Pp, Ps, Pg, params);
|
301
|
+
ool_conmin_parameters_set(m, P);
|
302
|
+
return params;
|
303
|
+
}
|
304
|
+
|
305
|
+
static VALUE rb_ool_conmin_minimizer_name(VALUE obj)
|
306
|
+
{
|
307
|
+
ool_conmin_minimizer *m;
|
308
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
309
|
+
return rb_str_new2(ool_conmin_minimizer_name(m));
|
310
|
+
}
|
311
|
+
static VALUE rb_ool_conmin_minimizer_f(VALUE obj)
|
312
|
+
{
|
313
|
+
ool_conmin_minimizer *m;
|
314
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
315
|
+
return rb_float_new(m->f);
|
316
|
+
}
|
317
|
+
static VALUE rb_ool_conmin_minimizer_x(VALUE obj)
|
318
|
+
{
|
319
|
+
ool_conmin_minimizer *m;
|
320
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
321
|
+
return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->x);
|
322
|
+
}
|
323
|
+
static VALUE rb_ool_conmin_minimizer_gradient(VALUE obj)
|
324
|
+
{
|
325
|
+
ool_conmin_minimizer *m;
|
326
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
327
|
+
return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->gradient);
|
328
|
+
}
|
329
|
+
static VALUE rb_ool_conmin_minimizer_minimum(VALUE obj)
|
330
|
+
{
|
331
|
+
ool_conmin_minimizer *m;
|
332
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
333
|
+
return rb_float_new(ool_conmin_minimizer_minimum(m));
|
334
|
+
}
|
335
|
+
static VALUE rb_ool_conmin_minimizer_dx(VALUE obj)
|
336
|
+
{
|
337
|
+
ool_conmin_minimizer *m;
|
338
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
339
|
+
return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->dx);
|
340
|
+
}
|
341
|
+
static VALUE rb_ool_conmin_minimizer_size(VALUE obj)
|
342
|
+
{
|
343
|
+
ool_conmin_minimizer *m;
|
344
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
345
|
+
return rb_float_new(ool_conmin_minimizer_size(m));
|
346
|
+
}
|
347
|
+
static VALUE rb_ool_conmin_minimizer_fcount(VALUE obj)
|
348
|
+
{
|
349
|
+
ool_conmin_minimizer *m;
|
350
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
351
|
+
return INT2FIX((int) ool_conmin_minimizer_fcount(m));
|
352
|
+
}
|
353
|
+
static VALUE rb_ool_conmin_minimizer_gcount(VALUE obj)
|
354
|
+
{
|
355
|
+
ool_conmin_minimizer *m;
|
356
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
357
|
+
return INT2FIX((int) ool_conmin_minimizer_gcount(m));
|
358
|
+
}
|
359
|
+
static VALUE rb_ool_conmin_minimizer_hcount(VALUE obj)
|
360
|
+
{
|
361
|
+
ool_conmin_minimizer *m;
|
362
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
363
|
+
return INT2FIX((int) ool_conmin_minimizer_hcount(m));
|
364
|
+
}
|
365
|
+
static VALUE rb_ool_conmin_minimizer_is_optimal(VALUE obj)
|
366
|
+
{
|
367
|
+
ool_conmin_minimizer *m;
|
368
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
369
|
+
return INT2FIX((int) ool_conmin_is_optimal(m));
|
370
|
+
}
|
371
|
+
static VALUE rb_ool_conmin_minimizer_is_optimal2(VALUE obj)
|
372
|
+
{
|
373
|
+
ool_conmin_minimizer *m;
|
374
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
375
|
+
if (ool_conmin_is_optimal(m)) return Qtrue;
|
376
|
+
else return Qfalse;
|
377
|
+
}
|
378
|
+
static VALUE rb_ool_conmin_minimizer_iterate(VALUE obj)
|
379
|
+
{
|
380
|
+
ool_conmin_minimizer *m;
|
381
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
382
|
+
return INT2FIX((int) ool_conmin_minimizer_iterate(m));
|
383
|
+
}
|
384
|
+
static VALUE rb_ool_conmin_minimizer_restart(VALUE obj)
|
385
|
+
{
|
386
|
+
ool_conmin_minimizer *m;
|
387
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
388
|
+
return INT2FIX((int) ool_conmin_minimizer_restart(m));
|
389
|
+
}
|
390
|
+
|
391
|
+
static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass);
|
392
|
+
static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass);
|
393
|
+
static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass);
|
394
|
+
|
395
|
+
static VALUE rb_ool_conmin_minimizer_parameters_default(VALUE obj)
|
396
|
+
{
|
397
|
+
ool_conmin_minimizer *m;
|
398
|
+
Data_Get_Struct(obj, ool_conmin_minimizer, m);
|
399
|
+
if (m->type == ool_conmin_minimizer_spg) {
|
400
|
+
return rb_ool_conmin_spg_parameters_default(cool_conmin_spg);
|
401
|
+
} else if (m->type == ool_conmin_minimizer_pgrad) {
|
402
|
+
return rb_ool_conmin_pgrad_parameters_default(cool_conmin_pgrad);
|
403
|
+
} else if (m->type == ool_conmin_minimizer_gencan) {
|
404
|
+
return rb_ool_conmin_gencan_parameters_default(cool_conmin_gencan);
|
405
|
+
} else {
|
406
|
+
rb_raise(rb_eRuntimeError, "Unkowm minimizer type.");
|
407
|
+
}
|
408
|
+
return Qnil; /* never reaches here */
|
409
|
+
}
|
410
|
+
|
411
|
+
/***/
|
412
|
+
|
413
|
+
static void rb_ool_conmin_function_mark(ool_conmin_function *F)
|
414
|
+
{
|
415
|
+
rb_gc_mark((VALUE) F->params);
|
416
|
+
}
|
417
|
+
|
418
|
+
static double rb_ool_conmin_function_f(const gsl_vector *x, void *p);
|
419
|
+
static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g);
|
420
|
+
static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
|
421
|
+
double *f, gsl_vector *g);
|
422
|
+
static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
|
423
|
+
const gsl_vector *V, gsl_vector *hv);
|
424
|
+
static void set_functions(int argc, VALUE *argv, ool_conmin_function *F);
|
425
|
+
static void set_params(ool_conmin_function *F, VALUE p);
|
426
|
+
static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn);
|
427
|
+
static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj);
|
428
|
+
static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj);
|
429
|
+
|
430
|
+
static VALUE rb_ool_conmin_function_alloc(int argc, VALUE *argv, VALUE klass)
|
431
|
+
{
|
432
|
+
ool_conmin_function *F = NULL;
|
433
|
+
VALUE ary, obj;
|
434
|
+
|
435
|
+
F = ALLOC(ool_conmin_function);
|
436
|
+
F->f = &rb_ool_conmin_function_f;
|
437
|
+
F->df = &rb_ool_conmin_function_df;
|
438
|
+
F->fdf = &rb_ool_conmin_function_fdf;
|
439
|
+
F->Hv = &rb_ool_conmin_function_Hv;
|
440
|
+
F->n = 0;
|
441
|
+
ary = rb_ary_new2(5);
|
442
|
+
|
443
|
+
F->params = (void *) ary;
|
444
|
+
rb_ary_store(ary, 0, Qnil); /* proc f */
|
445
|
+
rb_ary_store(ary, 1, Qnil); /* proc df */
|
446
|
+
rb_ary_store(ary, 2, Qnil); /* proc fdf */
|
447
|
+
rb_ary_store(ary, 3, Qnil); /* proc Hv */
|
448
|
+
rb_ary_store(ary, 4, Qnil); /* params */
|
449
|
+
// set_functions(argc, argv, F);
|
450
|
+
obj = Data_Wrap_Struct(klass, rb_ool_conmin_function_mark, free, F);
|
451
|
+
rb_ool_conmin_function_set(argc, argv, obj);
|
452
|
+
return obj;
|
453
|
+
}
|
454
|
+
|
455
|
+
static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj)
|
456
|
+
{
|
457
|
+
ool_conmin_function *F;
|
458
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
459
|
+
switch (argc) {
|
460
|
+
case 0:
|
461
|
+
break;
|
462
|
+
case 1:
|
463
|
+
rb_ool_conmin_function_set_n(obj, argv[0]);
|
464
|
+
break;
|
465
|
+
case 4:
|
466
|
+
set_functions(argc, argv, F);
|
467
|
+
break;
|
468
|
+
case 5:
|
469
|
+
if (FIXNUM_P(argv[0])) {
|
470
|
+
rb_ool_conmin_function_set_n(obj, argv[0]);
|
471
|
+
set_functions(argc-1, argv+1, F);
|
472
|
+
} else {
|
473
|
+
set_functions(argc-1, argv, F);
|
474
|
+
set_params(F, argv[argc-1]);
|
475
|
+
}
|
476
|
+
break;
|
477
|
+
case 6:
|
478
|
+
rb_ool_conmin_function_set_n(obj, argv[0]);
|
479
|
+
set_functions(argc-2, argv+1, F);
|
480
|
+
set_params(F, argv[argc-1]);
|
481
|
+
break;
|
482
|
+
default:
|
483
|
+
rb_raise(rb_eArgError, "Wrong number of arguments.");
|
484
|
+
}
|
485
|
+
return obj;
|
486
|
+
}
|
487
|
+
|
488
|
+
static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn)
|
489
|
+
{
|
490
|
+
ool_conmin_function *F = NULL;
|
491
|
+
if (FIXNUM_P(nn)) {
|
492
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
493
|
+
F->n = (size_t) FIX2INT(nn);
|
494
|
+
} else {
|
495
|
+
rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
|
496
|
+
rb_class2name(CLASS_OF(nn)));
|
497
|
+
}
|
498
|
+
return nn;
|
499
|
+
}
|
500
|
+
|
501
|
+
static VALUE rb_ool_conmin_function_n(VALUE obj)
|
502
|
+
{
|
503
|
+
ool_conmin_function *F = NULL;
|
504
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
505
|
+
return INT2FIX((int) F->n);
|
506
|
+
}
|
507
|
+
static double rb_ool_conmin_function_f(const gsl_vector *x, void *p)
|
508
|
+
{
|
509
|
+
VALUE vx, proc, vp, result, ary;
|
510
|
+
vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
|
511
|
+
ary = (VALUE) p;
|
512
|
+
proc = rb_ary_entry(ary, 0);
|
513
|
+
vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
|
514
|
+
if (NIL_P(vp)) result = rb_funcall(proc, RBGSL_ID_call, 1, vx);
|
515
|
+
else result = rb_funcall(proc, RBGSL_ID_call, 2, vx, vp);
|
516
|
+
return NUM2DBL(result);
|
517
|
+
}
|
518
|
+
|
519
|
+
static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g)
|
520
|
+
{
|
521
|
+
VALUE vx, vg, proc, vp, ary;
|
522
|
+
vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
|
523
|
+
vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
|
524
|
+
ary = (VALUE) p;
|
525
|
+
proc = rb_ary_entry(ary, 1);
|
526
|
+
vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
|
527
|
+
if (NIL_P(vp)) {
|
528
|
+
rb_funcall(proc, RBGSL_ID_call, 2, vx, vg);
|
529
|
+
} else {
|
530
|
+
rb_funcall(proc, RBGSL_ID_call, 3, vx, vp, vg);
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
|
535
|
+
double *f, gsl_vector *g)
|
536
|
+
{
|
537
|
+
VALUE vx, vf, vg, proc_fdf, proc_f, proc_df, vp, ary, result;
|
538
|
+
vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
|
539
|
+
vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
|
540
|
+
vf = rb_float_new(*f);
|
541
|
+
ary = (VALUE) p;
|
542
|
+
proc_f = rb_ary_entry(ary, 0);
|
543
|
+
proc_df = rb_ary_entry(ary, 1);
|
544
|
+
proc_fdf = rb_ary_entry(ary, 2);
|
545
|
+
vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
|
546
|
+
if (NIL_P(vp)) {
|
547
|
+
result = rb_funcall(proc_f, RBGSL_ID_call, 1, vx);
|
548
|
+
rb_funcall(proc_df, RBGSL_ID_call, 2, vx, vg);
|
549
|
+
} else {
|
550
|
+
result = rb_funcall(proc_f, RBGSL_ID_call, 2, vx, vp);
|
551
|
+
rb_funcall(proc_df, RBGSL_ID_call, 3, vx, vp, vg);
|
552
|
+
}
|
553
|
+
*f = NUM2DBL(result);
|
554
|
+
}
|
555
|
+
|
556
|
+
static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
|
557
|
+
const gsl_vector *V, gsl_vector *hv)
|
558
|
+
{
|
559
|
+
VALUE vX, vV, vHv, ary, proc_Hv, vp;
|
560
|
+
vX = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) X);
|
561
|
+
vV = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) V);
|
562
|
+
vHv = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) hv);
|
563
|
+
ary = (VALUE) params;
|
564
|
+
proc_Hv = rb_ary_entry(ary, 3);
|
565
|
+
vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
|
566
|
+
if (NIL_P(vp)) {
|
567
|
+
rb_funcall(proc_Hv, RBGSL_ID_call, 3, vX, vV, vHv);
|
568
|
+
} else {
|
569
|
+
rb_funcall(proc_Hv, RBGSL_ID_call, 4, vX, vp, vV, vHv);
|
570
|
+
}
|
571
|
+
}
|
572
|
+
|
573
|
+
static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj)
|
574
|
+
{
|
575
|
+
ool_conmin_function *F;
|
576
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
577
|
+
set_functions(argc, argv, F);
|
578
|
+
return obj;
|
579
|
+
}
|
580
|
+
|
581
|
+
static void set_functions(int argc, VALUE *argv, ool_conmin_function *F)
|
582
|
+
{
|
583
|
+
VALUE ary;
|
584
|
+
size_t i;
|
585
|
+
if (F->params == NULL) {
|
586
|
+
ary = rb_ary_new2(5);
|
587
|
+
/* (VALUE) F->params = ary;*/
|
588
|
+
F->params = (void *) ary;
|
589
|
+
} else {
|
590
|
+
ary = (VALUE) F->params;
|
591
|
+
}
|
592
|
+
switch (argc) {
|
593
|
+
case 4:
|
594
|
+
for (i = 0; i < argc; i++) rb_ary_store(ary, i, argv[i]);
|
595
|
+
break;
|
596
|
+
default:
|
597
|
+
rb_raise(rb_eArgError,"Wrong number of arguments (%d for 4)", argc);
|
598
|
+
}
|
599
|
+
}
|
600
|
+
|
601
|
+
static VALUE rb_ool_conmin_function_set_f(VALUE obj, VALUE proc)
|
602
|
+
{
|
603
|
+
ool_conmin_function *F;
|
604
|
+
VALUE ary;
|
605
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
606
|
+
if (F->params == NULL) {
|
607
|
+
ary = rb_ary_new2(5);
|
608
|
+
F->params = (void *) ary;
|
609
|
+
} else {
|
610
|
+
ary = (VALUE) F->params;
|
611
|
+
}
|
612
|
+
rb_ary_store(ary, 0, proc);
|
613
|
+
return proc;
|
614
|
+
}
|
615
|
+
|
616
|
+
static VALUE rb_ool_conmin_function_set_df(VALUE obj, VALUE proc)
|
617
|
+
{
|
618
|
+
ool_conmin_function *F;
|
619
|
+
VALUE ary;
|
620
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
621
|
+
if (F->params == NULL) {
|
622
|
+
ary = rb_ary_new2(5);
|
623
|
+
F->params = (void *) ary;
|
624
|
+
} else {
|
625
|
+
ary = (VALUE) F->params;
|
626
|
+
}
|
627
|
+
rb_ary_store(ary, 1, proc);
|
628
|
+
return proc;
|
629
|
+
}
|
630
|
+
|
631
|
+
static VALUE rb_ool_conmin_function_set_fdf(VALUE obj, VALUE proc)
|
632
|
+
{
|
633
|
+
ool_conmin_function *F;
|
634
|
+
VALUE ary;
|
635
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
636
|
+
if (F->params == NULL) {
|
637
|
+
ary = rb_ary_new2(5);
|
638
|
+
F->params = (void *) ary;
|
639
|
+
} else {
|
640
|
+
ary = (VALUE) F->params;
|
641
|
+
}
|
642
|
+
rb_ary_store(ary, 2, proc);
|
643
|
+
return proc;
|
644
|
+
}
|
645
|
+
|
646
|
+
static VALUE rb_ool_conmin_function_set_Hv(VALUE obj, VALUE proc)
|
647
|
+
{
|
648
|
+
ool_conmin_function *F;
|
649
|
+
VALUE ary;
|
650
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
651
|
+
if (F->params == NULL) {
|
652
|
+
ary = rb_ary_new2(5);
|
653
|
+
F->params = (void *) ary;
|
654
|
+
} else {
|
655
|
+
ary = (VALUE) F->params;
|
656
|
+
}
|
657
|
+
rb_ary_store(ary, 3, proc);
|
658
|
+
return proc;
|
659
|
+
}
|
660
|
+
|
661
|
+
static VALUE rb_ool_conmin_function_set_params(VALUE obj, VALUE p)
|
662
|
+
{
|
663
|
+
ool_conmin_function *F;
|
664
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
665
|
+
set_params(F, p);
|
666
|
+
return p;
|
667
|
+
}
|
668
|
+
|
669
|
+
static void set_params(ool_conmin_function *F, VALUE p)
|
670
|
+
{
|
671
|
+
VALUE ary;
|
672
|
+
if (F->params == NULL) {
|
673
|
+
ary = rb_ary_new2(5);
|
674
|
+
/* (VALUE) F->params = ary;*/
|
675
|
+
F->params = (void *) ary;
|
676
|
+
} else {
|
677
|
+
ary = (VALUE) F->params;
|
678
|
+
}
|
679
|
+
rb_ary_store(ary, 4, p);
|
680
|
+
}
|
681
|
+
|
682
|
+
static VALUE rb_ool_conmin_function_params(VALUE obj)
|
683
|
+
{
|
684
|
+
ool_conmin_function *F;
|
685
|
+
Data_Get_Struct(obj, ool_conmin_function, F);
|
686
|
+
return rb_ary_entry((VALUE) F->params, 4);
|
687
|
+
}
|
688
|
+
|
689
|
+
static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj);
|
690
|
+
static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n);
|
691
|
+
static VALUE rb_ool_conmin_constraint_alloc(int argc, VALUE *argv, VALUE klass)
|
692
|
+
{
|
693
|
+
ool_conmin_constraint *C;
|
694
|
+
VALUE obj;
|
695
|
+
C = ALLOC(ool_conmin_constraint);
|
696
|
+
C->n = 0;
|
697
|
+
C->L = NULL;
|
698
|
+
C->U = NULL;
|
699
|
+
|
700
|
+
obj = Data_Wrap_Struct(klass, 0, free, C);
|
701
|
+
rb_ool_conmin_constraint_set(argc, argv, obj);
|
702
|
+
return obj;
|
703
|
+
}
|
704
|
+
|
705
|
+
static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n)
|
706
|
+
{
|
707
|
+
ool_conmin_constraint *C;
|
708
|
+
if (!FIXNUM_P(n)) rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
|
709
|
+
rb_class2name(CLASS_OF(n)));
|
710
|
+
Data_Get_Struct(obj, ool_conmin_constraint, C);
|
711
|
+
C->n = (size_t) FIX2INT(n);
|
712
|
+
return n;
|
713
|
+
}
|
714
|
+
|
715
|
+
static VALUE rb_ool_conmin_constraint_set_L(VALUE obj, VALUE vL)
|
716
|
+
{
|
717
|
+
ool_conmin_constraint *C;
|
718
|
+
gsl_vector *L;
|
719
|
+
CHECK_VECTOR(vL);
|
720
|
+
Data_Get_Struct(obj, ool_conmin_constraint, C);
|
721
|
+
Data_Get_Struct(vL, gsl_vector, L);
|
722
|
+
C->L = L;
|
723
|
+
return vL;
|
724
|
+
}
|
725
|
+
|
726
|
+
static VALUE rb_ool_conmin_constraint_set_U(VALUE obj, VALUE vU)
|
727
|
+
{
|
728
|
+
ool_conmin_constraint *C;
|
729
|
+
gsl_vector *U;
|
730
|
+
CHECK_VECTOR(vU);
|
731
|
+
Data_Get_Struct(obj, ool_conmin_constraint, C);
|
732
|
+
Data_Get_Struct(vU, gsl_vector, U);
|
733
|
+
C->U = U;
|
734
|
+
return vU;
|
735
|
+
}
|
736
|
+
|
737
|
+
static VALUE rb_ool_conmin_constraint_set_LU(VALUE obj, VALUE vL, VALUE vU)
|
738
|
+
{
|
739
|
+
rb_ool_conmin_constraint_set_L(obj, vL);
|
740
|
+
rb_ool_conmin_constraint_set_U(obj, vU);
|
741
|
+
return obj;
|
742
|
+
}
|
743
|
+
|
744
|
+
static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj)
|
745
|
+
{
|
746
|
+
ool_conmin_constraint *C;
|
747
|
+
Data_Get_Struct(obj, ool_conmin_constraint, C);
|
748
|
+
switch (argc) {
|
749
|
+
case 0:
|
750
|
+
break;
|
751
|
+
case 1:
|
752
|
+
rb_ool_conmin_constraint_set_n(obj, argv[0]);
|
753
|
+
break;
|
754
|
+
case 2:
|
755
|
+
rb_ool_conmin_constraint_set_LU(obj, argv[0], argv[1]);
|
756
|
+
break;
|
757
|
+
case 3:
|
758
|
+
rb_ool_conmin_constraint_set_n(obj, argv[0]);
|
759
|
+
rb_ool_conmin_constraint_set_LU(obj, argv[1], argv[2]);
|
760
|
+
break;
|
761
|
+
default:
|
762
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1-3)", argc);
|
763
|
+
}
|
764
|
+
return obj;
|
765
|
+
}
|
766
|
+
|
767
|
+
static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass)
|
768
|
+
{
|
769
|
+
ool_conmin_pgrad_parameters P;
|
770
|
+
VALUE ary;
|
771
|
+
ool_conmin_parameters_default(ool_conmin_minimizer_pgrad, (void*) &P);
|
772
|
+
ary = create_parameters_ary_pgrad(&P);
|
773
|
+
RBGSL_SET_CLASS(ary, cool_conmin_pgrad_parameters);
|
774
|
+
return ary;
|
775
|
+
}
|
776
|
+
|
777
|
+
static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass)
|
778
|
+
{
|
779
|
+
ool_conmin_spg_parameters P;
|
780
|
+
VALUE ary;
|
781
|
+
ool_conmin_parameters_default(ool_conmin_minimizer_spg, (void*) &P);
|
782
|
+
ary = create_parameters_ary_spg(&P);
|
783
|
+
RBGSL_SET_CLASS(ary, cool_conmin_spg_parameters);
|
784
|
+
return ary;
|
785
|
+
}
|
786
|
+
|
787
|
+
static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass)
|
788
|
+
{
|
789
|
+
ool_conmin_gencan_parameters P;
|
790
|
+
VALUE ary;
|
791
|
+
ool_conmin_parameters_default(ool_conmin_minimizer_gencan, (void*) &P);
|
792
|
+
ary = create_parameters_ary_gencan(&P);
|
793
|
+
RBGSL_SET_CLASS(ary, cool_conmin_gencan_parameters);
|
794
|
+
return ary;
|
795
|
+
}
|
796
|
+
|
797
|
+
/*************************************************/
|
798
|
+
void Init_ool(VALUE module)
|
799
|
+
{
|
800
|
+
VALUE mOOL, mConmin;
|
801
|
+
VALUE cool_conmin_minimizer;
|
802
|
+
|
803
|
+
mOOL = rb_define_module("OOL");
|
804
|
+
mConmin = rb_define_module_under(mOOL, "Conmin");
|
805
|
+
cool_conmin_function = rb_define_class_under(mConmin, "Function", cgsl_function);
|
806
|
+
cool_conmin_constraint = rb_define_class_under(mConmin, "Constraint", cGSL_Object);
|
807
|
+
cool_conmin_minimizer = rb_define_class_under(mConmin, "Minimizer", cGSL_Object);
|
808
|
+
cool_conmin_pgrad = rb_define_class_under(cool_conmin_minimizer, "Pgrad", cGSL_Object);
|
809
|
+
cool_conmin_spg = rb_define_class_under(cool_conmin_minimizer, "Spg", cGSL_Object);
|
810
|
+
cool_conmin_gencan = rb_define_class_under(cool_conmin_minimizer, "Gencan", cGSL_Object);
|
811
|
+
|
812
|
+
def_const(mOOL);
|
813
|
+
|
814
|
+
rb_define_singleton_method(cool_conmin_minimizer, "alloc", rb_ool_conmin_minimizer_alloc, -1);
|
815
|
+
rb_define_method(cool_conmin_minimizer, "set", rb_ool_conmin_minimizer_set, -1);
|
816
|
+
rb_define_method(cool_conmin_minimizer, "parameters_default", rb_ool_conmin_minimizer_parameters_default, 0);
|
817
|
+
rb_define_method(cool_conmin_minimizer, "name", rb_ool_conmin_minimizer_name, 0);
|
818
|
+
rb_define_method(cool_conmin_minimizer, "size", rb_ool_conmin_minimizer_size, 0);
|
819
|
+
rb_define_method(cool_conmin_minimizer, "f", rb_ool_conmin_minimizer_f, 0);
|
820
|
+
rb_define_method(cool_conmin_minimizer, "x", rb_ool_conmin_minimizer_x, 0);
|
821
|
+
rb_define_method(cool_conmin_minimizer, "dx", rb_ool_conmin_minimizer_dx, 0);
|
822
|
+
rb_define_method(cool_conmin_minimizer, "gradient", rb_ool_conmin_minimizer_gradient, 0);
|
823
|
+
rb_define_method(cool_conmin_minimizer, "minimum", rb_ool_conmin_minimizer_minimum, 0);
|
824
|
+
rb_define_method(cool_conmin_minimizer, "fcount", rb_ool_conmin_minimizer_fcount, 0);
|
825
|
+
rb_define_method(cool_conmin_minimizer, "gcount", rb_ool_conmin_minimizer_gcount, 0);
|
826
|
+
rb_define_method(cool_conmin_minimizer, "hcount", rb_ool_conmin_minimizer_hcount, 0);
|
827
|
+
rb_define_method(cool_conmin_minimizer, "is_optimal", rb_ool_conmin_minimizer_is_optimal, 0);
|
828
|
+
rb_define_method(cool_conmin_minimizer, "is_optimal?", rb_ool_conmin_minimizer_is_optimal2, 0);
|
829
|
+
rb_define_method(cool_conmin_minimizer, "iterate", rb_ool_conmin_minimizer_iterate, 0);
|
830
|
+
rb_define_method(cool_conmin_minimizer, "restart", rb_ool_conmin_minimizer_restart, 0);
|
831
|
+
rb_define_method(cool_conmin_minimizer, "parameters_get", rb_ool_conmin_minimizer_parameters_get, 0);
|
832
|
+
rb_define_method(cool_conmin_minimizer, "parameters_set", rb_ool_conmin_minimizer_parameters_set, 1);
|
833
|
+
|
834
|
+
rb_define_singleton_method(cool_conmin_function, "alloc", rb_ool_conmin_function_alloc, -1);
|
835
|
+
rb_define_method(cool_conmin_function, "set", rb_ool_conmin_function_set, -1);
|
836
|
+
rb_define_method(cool_conmin_function, "set_n", rb_ool_conmin_function_set_n, 1);
|
837
|
+
rb_define_alias(cool_conmin_function, "n=", "set_n");
|
838
|
+
rb_define_method(cool_conmin_function, "n", rb_ool_conmin_function_n, 0);
|
839
|
+
rb_define_method(cool_conmin_function, "params", rb_ool_conmin_function_params, 0);
|
840
|
+
rb_define_method(cool_conmin_function, "set_params", rb_ool_conmin_function_set_params, 1);
|
841
|
+
rb_define_alias(cool_conmin_function, "params=", "set_params");
|
842
|
+
rb_define_method(cool_conmin_function, "set_functions", rb_ool_conmin_function_set_functions, 1);
|
843
|
+
rb_define_alias(cool_conmin_function, "functions=", "set_functions");
|
844
|
+
rb_define_method(cool_conmin_function, "set_f", rb_ool_conmin_function_set_f, 1);
|
845
|
+
rb_define_alias(cool_conmin_function, "f=", "set_f");
|
846
|
+
rb_define_method(cool_conmin_function, "set_df", rb_ool_conmin_function_set_df, 1);
|
847
|
+
rb_define_alias(cool_conmin_function, "df=", "set_df");
|
848
|
+
rb_define_method(cool_conmin_function, "set_fdf", rb_ool_conmin_function_set_fdf, 1);
|
849
|
+
rb_define_alias(cool_conmin_function, "fdf=", "set_fdf");
|
850
|
+
rb_define_method(cool_conmin_function, "set_Hv", rb_ool_conmin_function_set_Hv, 1);
|
851
|
+
rb_define_alias(cool_conmin_function, "Hv=", "set_Hv");
|
852
|
+
|
853
|
+
rb_define_singleton_method(cool_conmin_constraint, "alloc", rb_ool_conmin_constraint_alloc,
|
854
|
+
-1);
|
855
|
+
rb_define_method(cool_conmin_constraint, "set", rb_ool_conmin_constraint_set, -1);
|
856
|
+
rb_define_method(cool_conmin_constraint, "set_n", rb_ool_conmin_constraint_set_n, 1);
|
857
|
+
rb_define_alias(cool_conmin_constraint, "n=", "set_n");
|
858
|
+
rb_define_method(cool_conmin_constraint, "set_L", rb_ool_conmin_constraint_set_L, 1);
|
859
|
+
rb_define_alias(cool_conmin_constraint, "L=", "set_L");
|
860
|
+
rb_define_method(cool_conmin_constraint, "set_U", rb_ool_conmin_constraint_set_U, 1);
|
861
|
+
rb_define_alias(cool_conmin_constraint, "U=", "set_U");
|
862
|
+
rb_define_method(cool_conmin_constraint, "set_LU", rb_ool_conmin_constraint_set_LU, 2);
|
863
|
+
rb_define_alias(cool_conmin_constraint, "LU=", "set_LU");
|
864
|
+
|
865
|
+
cool_conmin_pgrad_parameters = rb_define_class_under(cool_conmin_pgrad, "Parameters",
|
866
|
+
rb_cArray);
|
867
|
+
cool_conmin_spg_parameters = rb_define_class_under(cool_conmin_spg, "Parameters",
|
868
|
+
rb_cArray);
|
869
|
+
cool_conmin_gencan_parameters = rb_define_class_under(cool_conmin_gencan, "Parameters",
|
870
|
+
rb_cArray);
|
871
|
+
rb_define_singleton_method(cool_conmin_pgrad, "parameters_default",
|
872
|
+
rb_ool_conmin_pgrad_parameters_default, 0);
|
873
|
+
rb_define_singleton_method(cool_conmin_spg, "parameters_default",
|
874
|
+
rb_ool_conmin_spg_parameters_default, 0);
|
875
|
+
rb_define_singleton_method(cool_conmin_gencan, "parameters_default",
|
876
|
+
rb_ool_conmin_gencan_parameters_default, 0);
|
877
|
+
}
|
878
|
+
|
879
|
+
#endif
|