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
@@ -9,8 +9,7 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "
|
13
|
-
#include "rb_gsl_interp.h"
|
12
|
+
#include "include/rb_gsl_interp.h"
|
14
13
|
|
15
14
|
VALUE cgsl_interp_accel; /* this is used also in spline.c */
|
16
15
|
EXTERN VALUE cgsl_vector, cgsl_matrix;
|
@@ -35,10 +34,10 @@ static VALUE rb_gsl_interp_new(int argc, VALUE *argv, VALUE klass)
|
|
35
34
|
break;
|
36
35
|
default:
|
37
36
|
if (ptrx == NULL) {
|
38
|
-
|
37
|
+
ptrx = get_vector_ptr(argv[i], &stride, &sizex);
|
39
38
|
} else {
|
40
|
-
|
41
|
-
|
39
|
+
ptry = get_vector_ptr(argv[i], &stride, &sizey);
|
40
|
+
size = GSL_MIN_INT(sizex, sizey);
|
42
41
|
}
|
43
42
|
break;
|
44
43
|
}
|
@@ -133,7 +132,7 @@ static VALUE rb_gsl_interp_bsearch(int argc, VALUE *argv, VALUE obj)
|
|
133
132
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 3)", argc);
|
134
133
|
break;
|
135
134
|
}
|
136
|
-
break;
|
135
|
+
break;
|
137
136
|
}
|
138
137
|
return INT2FIX(gsl_interp_bsearch(v->data, x, indexl, indexh));
|
139
138
|
}
|
@@ -171,9 +170,9 @@ static VALUE rb_gsl_interp_accel_find(VALUE obj, VALUE vv, VALUE xx)
|
|
171
170
|
}
|
172
171
|
|
173
172
|
static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
|
174
|
-
|
175
|
-
|
176
|
-
|
173
|
+
double (*eval)(const gsl_interp *, const double [],
|
174
|
+
const double [], double,
|
175
|
+
gsl_interp_accel *))
|
177
176
|
{
|
178
177
|
rb_gsl_interp *rgi = NULL;
|
179
178
|
double *ptrx = NULL, *ptry = NULL;
|
@@ -182,17 +181,13 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
|
|
182
181
|
VALUE ary, x;
|
183
182
|
double val;
|
184
183
|
size_t n, i, j, size, stridex, stridey;
|
185
|
-
#ifdef HAVE_NARRAY_H
|
186
|
-
struct NARRAY *na = NULL;
|
187
|
-
double *ptrz = NULL, *ptr = NULL;
|
188
|
-
#endif
|
189
184
|
Data_Get_Struct(obj, rb_gsl_interp, rgi);
|
190
185
|
ptrx = get_vector_ptr(xxa, &stridex, &size);
|
191
|
-
if (size != rgi->p->size ){
|
186
|
+
if (size != rgi->p->size ) {
|
192
187
|
rb_raise(rb_eTypeError, "size mismatch (xa:%d != %d)", (int) size, (int) rgi->p->size);
|
193
188
|
}
|
194
189
|
ptry = get_vector_ptr(yya, &stridey, &size);
|
195
|
-
if (size != rgi->p->size ){
|
190
|
+
if (size != rgi->p->size ) {
|
196
191
|
rb_raise(rb_eTypeError, "size mismatch (ya:%d != %d)", (int) size, (int) rgi->p->size);
|
197
192
|
}
|
198
193
|
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
|
@@ -216,12 +211,14 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
|
|
216
211
|
default:
|
217
212
|
#ifdef HAVE_NARRAY_H
|
218
213
|
if (NA_IsNArray(xx)) {
|
214
|
+
struct NARRAY *na = NULL;
|
215
|
+
double *ptrz = NULL, *ptr = NULL;
|
219
216
|
GetNArray(xx, na);
|
220
217
|
ptrz = (double*) na->ptr;
|
221
218
|
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
|
222
219
|
ptr = NA_PTR_TYPE(ary, double*);
|
223
|
-
for (i = 0; i < na->total; i++)
|
224
|
-
|
220
|
+
for (i = 0; (int) i < na->total; i++)
|
221
|
+
ptr[i] = (*eval)(rgi->p, ptrx, ptry, ptrz[i], rgi->a);
|
225
222
|
return ary;
|
226
223
|
}
|
227
224
|
#endif
|
@@ -229,18 +226,18 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
|
|
229
226
|
Data_Get_Struct(xx, gsl_vector, v);
|
230
227
|
vnew = gsl_vector_alloc(v->size);
|
231
228
|
for (i = 0; i < v->size; i++) {
|
232
|
-
|
233
|
-
|
229
|
+
val = (*eval)(rgi->p, ptrx, ptry, gsl_vector_get(v, i), rgi->a);
|
230
|
+
gsl_vector_set(vnew, i, val);
|
234
231
|
}
|
235
232
|
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
236
233
|
} else if (MATRIX_P(xx)) {
|
237
234
|
Data_Get_Struct(xx, gsl_matrix, m);
|
238
235
|
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
239
236
|
for (i = 0; i < m->size1; i++) {
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
237
|
+
for (j = 0; j < m->size2; j++) {
|
238
|
+
val = (*eval)(rgi->p, ptrx, ptry, gsl_matrix_get(m, i, j), rgi->a);
|
239
|
+
gsl_matrix_set(mnew, i, j, val);
|
240
|
+
}
|
244
241
|
}
|
245
242
|
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
246
243
|
} else {
|
@@ -307,7 +304,7 @@ static VALUE rb_gsl_interp_eval_deriv_e(VALUE obj, VALUE xxa, VALUE yya, VALUE x
|
|
307
304
|
default:
|
308
305
|
return rb_float_new(y);
|
309
306
|
break;
|
310
|
-
}
|
307
|
+
}
|
311
308
|
return Qnil;
|
312
309
|
}
|
313
310
|
|
@@ -339,8 +336,8 @@ static VALUE rb_gsl_interp_eval_deriv2_e(VALUE obj, VALUE xxa, VALUE yya, VALUE
|
|
339
336
|
return Qnil;
|
340
337
|
}
|
341
338
|
|
342
|
-
static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
|
343
|
-
|
339
|
+
static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
|
340
|
+
VALUE aa, VALUE bb)
|
344
341
|
{
|
345
342
|
rb_gsl_interp *rgi = NULL;
|
346
343
|
double *ptr1 = NULL, *ptr2 = NULL;
|
@@ -355,8 +352,8 @@ static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
|
|
355
352
|
return rb_float_new(gsl_interp_eval_integ(rgi->p, ptr1, ptr2, a, b, rgi->a));
|
356
353
|
}
|
357
354
|
|
358
|
-
static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
|
359
|
-
|
355
|
+
static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
|
356
|
+
VALUE aa, VALUE bb)
|
360
357
|
{
|
361
358
|
rb_gsl_interp *rgi = NULL;
|
362
359
|
double *ptr1 = NULL, *ptr2 = NULL;
|
@@ -393,9 +390,7 @@ const gsl_interp_type* get_interp_type(VALUE t)
|
|
393
390
|
type = FIX2INT(t);
|
394
391
|
switch (type) {
|
395
392
|
case GSL_INTERP_LINEAR: return gsl_interp_linear; break;
|
396
|
-
#ifdef GSL_1_1_LATER
|
397
393
|
case GSL_INTERP_POLYNOMIAL: return gsl_interp_polynomial; break;
|
398
|
-
#endif
|
399
394
|
case GSL_INTERP_CSPLINE: return gsl_interp_cspline; break;
|
400
395
|
case GSL_INTERP_CSPLINE_PERIODIC: return gsl_interp_cspline_periodic; break;
|
401
396
|
case GSL_INTERP_AKIMA: return gsl_interp_akima; break;
|
@@ -409,10 +404,8 @@ const gsl_interp_type* get_interp_type(VALUE t)
|
|
409
404
|
strcpy(name, STR2CSTR(t));
|
410
405
|
if (str_tail_grep(name, "linear") == 0) {
|
411
406
|
return gsl_interp_linear;
|
412
|
-
#ifdef GSL_1_1_LATER
|
413
407
|
} else if (str_tail_grep(name, "polynomial") == 0) {
|
414
408
|
return gsl_interp_polynomial;
|
415
|
-
#endif
|
416
409
|
} else if (str_tail_grep(name, "cspline") == 0) {
|
417
410
|
return gsl_interp_cspline;
|
418
411
|
} else if (str_tail_grep(name, "cspline_periodic") == 0) {
|
@@ -437,11 +430,7 @@ static VALUE rb_gsl_interp_info(VALUE obj)
|
|
437
430
|
char buf[256];
|
438
431
|
Data_Get_Struct(obj, rb_gsl_interp, p);
|
439
432
|
sprintf(buf, "Class: %s\n", rb_class2name(CLASS_OF(obj)));
|
440
|
-
#ifdef RUBY_1_9_LATER
|
441
433
|
sprintf(buf, "%sSuperClass: %s\n", buf, rb_class2name(RCLASS_SUPER(CLASS_OF(obj))));
|
442
|
-
#else
|
443
|
-
sprintf(buf, "%sSuperClass: %s\n", buf, rb_class2name(RCLASS(CLASS_OF(obj))->super));
|
444
|
-
#endif
|
445
434
|
sprintf(buf, "%sType: %s\n", buf, gsl_interp_name(p->p));
|
446
435
|
sprintf(buf, "%sxmin: %f\n", buf, p->p->xmin);
|
447
436
|
sprintf(buf, "%sxmax: %f\n", buf, p->p->xmax);
|
@@ -458,10 +447,8 @@ static void rb_gsl_interp_define_const(VALUE klass)
|
|
458
447
|
rb_define_const(klass, "AKIMA_PERIODIC", INT2FIX(GSL_INTERP_AKIMA_PERIODIC));
|
459
448
|
|
460
449
|
rb_define_const(klass, "Linear", INT2FIX(GSL_INTERP_LINEAR));
|
461
|
-
#ifdef GSL_1_1_LATER
|
462
450
|
rb_define_const(klass, "POLYNOMIAL", INT2FIX(GSL_INTERP_POLYNOMIAL));
|
463
451
|
rb_define_const(klass, "Polynomial", INT2FIX(GSL_INTERP_POLYNOMIAL));
|
464
|
-
#endif
|
465
452
|
rb_define_const(klass, "CSpline", INT2FIX(GSL_INTERP_CSPLINE));
|
466
453
|
rb_define_const(klass, "CSpline_Periodic", INT2FIX(GSL_INTERP_CSPLINE_PERIODIC));
|
467
454
|
rb_define_const(klass, "Akima", INT2FIX(GSL_INTERP_AKIMA));
|
@@ -0,0 +1,733 @@
|
|
1
|
+
#ifdef HAVE_JACOBI_H
|
2
|
+
#include "include/rb_gsl.h"
|
3
|
+
#include "jacobi.h"
|
4
|
+
|
5
|
+
static VALUE jac_eval3_e(VALUE x, VALUE a, VALUE b,
|
6
|
+
int (*f)(double, double, double, gsl_sf_result*))
|
7
|
+
{
|
8
|
+
gsl_sf_result *result;
|
9
|
+
VALUE obj;
|
10
|
+
obj = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, result);
|
11
|
+
(*f)(NUM2DBL(x), NUM2DBL(a), NUM2DBL(b), result);
|
12
|
+
return obj;
|
13
|
+
}
|
14
|
+
|
15
|
+
static VALUE jac_eval3(VALUE xx, VALUE aa, VALUE bb, double (*f)(double, double, double))
|
16
|
+
{
|
17
|
+
gsl_vector *x, *y;
|
18
|
+
double a, b;
|
19
|
+
size_t i, len;
|
20
|
+
VALUE ary;
|
21
|
+
a = NUM2DBL(aa);
|
22
|
+
b = NUM2DBL(bb);
|
23
|
+
if (VECTOR_P(xx)) {
|
24
|
+
Data_Get_Struct(xx, gsl_vector, x);
|
25
|
+
y = gsl_vector_alloc(x->size);
|
26
|
+
for (i = 0; i < x->size; i++) {
|
27
|
+
gsl_vector_set(y, i, (*f)(gsl_vector_get(x, i), a, b));
|
28
|
+
}
|
29
|
+
return Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(xx)), 0, gsl_vector_free, y);
|
30
|
+
} else if (TYPE(xx) == T_ARRAY) {
|
31
|
+
// len = RARRAY(xx)->len;
|
32
|
+
len = RARRAY_LEN(xx);
|
33
|
+
ary = rb_ary_new2(len);
|
34
|
+
for (i = 0; i < len; i++) {
|
35
|
+
rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(xx, i)), a, b)));
|
36
|
+
}
|
37
|
+
return ary;
|
38
|
+
#ifdef HAVE_NARRAY_H
|
39
|
+
} else if (NA_IsNArray(xx)) {
|
40
|
+
double *ptr1, *ptr2;
|
41
|
+
struct NARRAY *na;
|
42
|
+
GetNArray(xx, na);
|
43
|
+
len = na->total;
|
44
|
+
ptr1 = (double*) na->ptr;
|
45
|
+
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
|
46
|
+
ptr2 = NA_PTR_TYPE(ary, double*);
|
47
|
+
for (i = 0; i < len; i++) {
|
48
|
+
ptr2[i] = (*f)(ptr1[i], a, b);
|
49
|
+
}
|
50
|
+
return ary;
|
51
|
+
#endif
|
52
|
+
} else {
|
53
|
+
return rb_float_new((*f)(NUM2DBL(xx), a, b));
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
static VALUE rb_jac_jacobi_eval(int argc, VALUE *argv,
|
58
|
+
double (*f)(double, int, double, double),
|
59
|
+
int (*f2)(int, const double*, int, double*, double, double, double*))
|
60
|
+
{
|
61
|
+
gsl_vector *x, *ws, *y;
|
62
|
+
double a, b;
|
63
|
+
VALUE ary;
|
64
|
+
size_t len, i;
|
65
|
+
int n, flag = 0;
|
66
|
+
if (argc < 4) rb_raise(rb_eArgError, "Too few arguments (%d for >= 4)", argc);
|
67
|
+
if (VECTOR_P(argv[0])) {
|
68
|
+
Data_Get_Struct(argv[0], gsl_vector, x);
|
69
|
+
y = gsl_vector_alloc(x->size);
|
70
|
+
ary = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(x)), 0, gsl_vector_free, y);
|
71
|
+
switch (argc) {
|
72
|
+
case 4:
|
73
|
+
ws = gsl_vector_alloc(2*x->size);
|
74
|
+
flag = 1;
|
75
|
+
break;
|
76
|
+
case 5:
|
77
|
+
CHECK_VECTOR(argv[4]);
|
78
|
+
Data_Get_Struct(argv[4], gsl_vector, ws);
|
79
|
+
break;
|
80
|
+
default:
|
81
|
+
rb_raise(rb_eArgError, "Too many arguments (%d for 4 or 5)", argc);
|
82
|
+
}
|
83
|
+
(*f2)(x->size, x->data, FIX2INT(argv[1]), y->data, NUM2DBL(argv[2]), NUM2DBL(argv[3]),
|
84
|
+
ws->data);
|
85
|
+
if (flag == 1) gsl_vector_free(ws);
|
86
|
+
return ary;
|
87
|
+
} else if (TYPE(argv[0]) == T_ARRAY) {
|
88
|
+
n = FIX2INT(argv[1]);
|
89
|
+
a = NUM2DBL(argv[2]);
|
90
|
+
b = NUM2DBL(argv[3]);
|
91
|
+
// len = RARRAY(argv[0])->len;
|
92
|
+
len = RARRAY_LEN(argv[0]);
|
93
|
+
ary = rb_ary_new2(len);
|
94
|
+
for (i = 0; i < len; i++) {
|
95
|
+
rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(argv[0], i)), n, a, b)));
|
96
|
+
}
|
97
|
+
return ary;
|
98
|
+
#ifdef HAVE_NARRAY_H
|
99
|
+
} else if (NA_IsNArray(argv[0])) {
|
100
|
+
double *ptr1, *ptr2;
|
101
|
+
struct NARRAY *na;
|
102
|
+
GetNArray(argv[0], na);
|
103
|
+
len = na->total;
|
104
|
+
ptr1 = (double*) na->ptr;
|
105
|
+
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(argv[0]));
|
106
|
+
ptr2 = NA_PTR_TYPE(ary, double*);
|
107
|
+
n = FIX2INT(argv[1]);
|
108
|
+
a = NUM2DBL(argv[2]);
|
109
|
+
b = NUM2DBL(argv[3]);
|
110
|
+
ws = gsl_vector_alloc(len);
|
111
|
+
(*f2)(len, ptr1, n, ptr2, a, b, ws->data);
|
112
|
+
gsl_vector_free(ws);
|
113
|
+
return ary;
|
114
|
+
#endif
|
115
|
+
} else {
|
116
|
+
return rb_float_new((*f)(NUM2DBL(argv[0]), FIX2INT(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3])));
|
117
|
+
}
|
118
|
+
}
|
119
|
+
static VALUE rb_jac_jacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
|
120
|
+
{
|
121
|
+
return jac_eval3_e(x, a, b, jac_jacobi_P0_e);
|
122
|
+
}
|
123
|
+
|
124
|
+
static VALUE rb_jac_jacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
|
125
|
+
{
|
126
|
+
return jac_eval3(x, a, b, jac_jacobi_P0);
|
127
|
+
}
|
128
|
+
|
129
|
+
static VALUE rb_jac_jacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
|
130
|
+
{
|
131
|
+
return jac_eval3_e(x, a, b, jac_jacobi_P1_e);
|
132
|
+
}
|
133
|
+
|
134
|
+
static VALUE rb_jac_jacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
|
135
|
+
{
|
136
|
+
return jac_eval3(x, a, b, jac_jacobi_P1);
|
137
|
+
}
|
138
|
+
|
139
|
+
|
140
|
+
static VALUE rb_jac_jacobi(int argc, VALUE *argv, VALUE module)
|
141
|
+
{
|
142
|
+
return rb_jac_jacobi_eval(argc, argv, jac_jacobi, jac_jacobi_array);
|
143
|
+
}
|
144
|
+
|
145
|
+
static VALUE rb_jac_djacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
|
146
|
+
{
|
147
|
+
return jac_eval3_e(x, a, b, jac_djacobi_P0_e);
|
148
|
+
}
|
149
|
+
|
150
|
+
static VALUE rb_jac_djacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
|
151
|
+
{
|
152
|
+
return jac_eval3(x, a, b, jac_djacobi_P0);
|
153
|
+
}
|
154
|
+
|
155
|
+
static VALUE rb_jac_djacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
|
156
|
+
{
|
157
|
+
return jac_eval3_e(x, a, b, jac_djacobi_P1_e);
|
158
|
+
}
|
159
|
+
|
160
|
+
static VALUE rb_jac_djacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
|
161
|
+
{
|
162
|
+
return jac_eval3(x, a, b, jac_djacobi_P1);
|
163
|
+
}
|
164
|
+
|
165
|
+
static VALUE rb_jac_djacobi(int argc, VALUE *argv, VALUE module)
|
166
|
+
{
|
167
|
+
return rb_jac_jacobi_eval(argc, argv, jac_djacobi, jac_djacobi_array);
|
168
|
+
}
|
169
|
+
|
170
|
+
static VALUE rb_jac_zeros_eval(int argc, VALUE *argv, VALUE module,
|
171
|
+
int (*f)(double*, int, double, double))
|
172
|
+
{
|
173
|
+
gsl_vector *x;
|
174
|
+
int m, status;
|
175
|
+
double a, b;
|
176
|
+
VALUE xx;
|
177
|
+
switch (argc) {
|
178
|
+
case 3:
|
179
|
+
if (FIXNUM_P(argv[0])) {
|
180
|
+
m = FIX2INT(argv[0]);
|
181
|
+
a = NUM2DBL(argv[1]);
|
182
|
+
b = NUM2DBL(argv[2]);
|
183
|
+
x = gsl_vector_alloc(m);
|
184
|
+
xx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
|
185
|
+
} else if (VECTOR_P(argv[0])) {
|
186
|
+
Data_Get_Struct(argv[0], gsl_vector, x);
|
187
|
+
m = x->size;
|
188
|
+
a = NUM2DBL(argv[1]);
|
189
|
+
b = NUM2DBL(argv[2]);
|
190
|
+
xx = argv[0];
|
191
|
+
} else {
|
192
|
+
rb_raise(rb_eTypeError, "Wrong argument type %s (Fixnum or GSL::Vector expected)",
|
193
|
+
rb_class2name(CLASS_OF(argv[0])));
|
194
|
+
}
|
195
|
+
break;
|
196
|
+
case 4:
|
197
|
+
CHECK_VECTOR(argv[0]);
|
198
|
+
Data_Get_Struct(argv[0], gsl_vector, x);
|
199
|
+
m = FIX2INT(argv[1]);
|
200
|
+
a = NUM2DBL(argv[2]);
|
201
|
+
b = NUM2DBL(argv[3]);
|
202
|
+
break;
|
203
|
+
default:
|
204
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
|
205
|
+
}
|
206
|
+
status = (*f)(x->data, m, a, b);
|
207
|
+
if (status != GSL_SUCCESS)
|
208
|
+
rb_raise(rb_eRuntimeError, "Something wrong. (error code %d)", status);
|
209
|
+
return xx;
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE rb_jac_jacobi_zeros(int argc, VALUE *argv, VALUE module)
|
213
|
+
{
|
214
|
+
return rb_jac_zeros_eval(argc, argv, module, jac_jacobi_zeros);
|
215
|
+
}
|
216
|
+
|
217
|
+
static void jac_define_const(VALUE module)
|
218
|
+
{
|
219
|
+
rb_define_const(module, "GJ", INT2FIX(JAC_GJ));
|
220
|
+
rb_define_const(module, "GLJ", INT2FIX(JAC_GLJ));
|
221
|
+
rb_define_const(module, "GRJM", INT2FIX(JAC_GRJM));
|
222
|
+
rb_define_const(module, "GRJP", INT2FIX(JAC_GRJP));
|
223
|
+
}
|
224
|
+
|
225
|
+
static VALUE rb_jac_quadrature_alloc(VALUE klass, VALUE vQ)
|
226
|
+
{
|
227
|
+
jac_quadrature *q;
|
228
|
+
|
229
|
+
q = jac_quadrature_alloc(FIX2INT(vQ));
|
230
|
+
|
231
|
+
return Data_Wrap_Struct(klass, 0, jac_quadrature_free, q);
|
232
|
+
}
|
233
|
+
|
234
|
+
static VALUE rb_jac_quadrature_Q(VALUE obj)
|
235
|
+
{
|
236
|
+
jac_quadrature *q;
|
237
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
238
|
+
return INT2FIX(q->Q);
|
239
|
+
}
|
240
|
+
|
241
|
+
static VALUE rb_jac_quadrature_type(VALUE obj)
|
242
|
+
{
|
243
|
+
jac_quadrature *q;
|
244
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
245
|
+
return INT2FIX((int) q->type);
|
246
|
+
}
|
247
|
+
|
248
|
+
static VALUE rb_jac_quadrature_alpha(VALUE obj)
|
249
|
+
{
|
250
|
+
jac_quadrature *q;
|
251
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
252
|
+
return NUM2DBL(q->alpha);
|
253
|
+
}
|
254
|
+
|
255
|
+
static VALUE rb_jac_quadrature_beta(VALUE obj)
|
256
|
+
{
|
257
|
+
jac_quadrature *q;
|
258
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
259
|
+
return NUM2DBL(q->beta);
|
260
|
+
}
|
261
|
+
|
262
|
+
static VALUE rb_jac_quadrature_x(VALUE obj)
|
263
|
+
{
|
264
|
+
jac_quadrature *q;
|
265
|
+
gsl_vector_view *v;
|
266
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
267
|
+
v = gsl_vector_view_alloc();
|
268
|
+
v->vector.data = q->x;
|
269
|
+
v->vector.size = q->Q;
|
270
|
+
v->vector.stride = 1;
|
271
|
+
return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
|
272
|
+
}
|
273
|
+
|
274
|
+
static VALUE rb_jac_quadrature_w(VALUE obj)
|
275
|
+
{
|
276
|
+
jac_quadrature *q;
|
277
|
+
gsl_vector_view *v;
|
278
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
279
|
+
v = gsl_vector_view_alloc();
|
280
|
+
v->vector.data = q->w;
|
281
|
+
v->vector.size = q->Q;
|
282
|
+
v->vector.stride = 1;
|
283
|
+
return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
|
284
|
+
}
|
285
|
+
|
286
|
+
static VALUE rb_jac_quadrature_D(VALUE obj)
|
287
|
+
{
|
288
|
+
jac_quadrature *q;
|
289
|
+
gsl_vector_view *v;
|
290
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
291
|
+
v = gsl_vector_view_alloc();
|
292
|
+
v->vector.data = q->D;
|
293
|
+
v->vector.size = q->Q;
|
294
|
+
v->vector.stride = 1;
|
295
|
+
return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
|
296
|
+
}
|
297
|
+
|
298
|
+
static VALUE rb_jac_quadrature_xp(VALUE obj)
|
299
|
+
{
|
300
|
+
jac_quadrature *q;
|
301
|
+
gsl_vector_view *v;
|
302
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
303
|
+
v = gsl_vector_view_alloc();
|
304
|
+
v->vector.data = q->w;
|
305
|
+
v->vector.size = q->np;
|
306
|
+
v->vector.stride = 1;
|
307
|
+
return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
|
308
|
+
}
|
309
|
+
|
310
|
+
static VALUE rb_jac_interpmat_alloc(int argc, VALUE *argv, VALUE obj)
|
311
|
+
{
|
312
|
+
int err;
|
313
|
+
jac_quadrature *q;
|
314
|
+
gsl_vector *xp;
|
315
|
+
int np;
|
316
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
317
|
+
switch (argc) {
|
318
|
+
case 1:
|
319
|
+
CHECK_VECTOR(argv[0]);
|
320
|
+
Data_Get_Struct(argv[0], gsl_vector, xp);
|
321
|
+
np = xp->size;
|
322
|
+
break;
|
323
|
+
case 2:
|
324
|
+
CHECK_VECTOR(argv[1]);
|
325
|
+
Data_Get_Struct(argv[1], gsl_vector, xp);
|
326
|
+
np = FIX2INT(argv[0]);
|
327
|
+
break;
|
328
|
+
default:
|
329
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
|
330
|
+
}
|
331
|
+
err = jac_interpmat_alloc(q, np, xp->data);
|
332
|
+
return FIX2INT(err);
|
333
|
+
}
|
334
|
+
|
335
|
+
static VALUE rb_jac_interpmat_free(VALUE obj)
|
336
|
+
{
|
337
|
+
jac_quadrature *q;
|
338
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
339
|
+
jac_interpmat_free(q);
|
340
|
+
return Qtrue;
|
341
|
+
}
|
342
|
+
|
343
|
+
static VALUE rb_jac_quadrature_zwd(int argc, VALUE *argv, VALUE obj)
|
344
|
+
{
|
345
|
+
jac_quadrature *q;
|
346
|
+
gsl_vector *ws;
|
347
|
+
int flag = 0, type, status;
|
348
|
+
double a, b;
|
349
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
350
|
+
switch (argc) {
|
351
|
+
case 3:
|
352
|
+
type = FIX2INT(argv[0]);
|
353
|
+
a = NUM2DBL(argv[1]);
|
354
|
+
b = NUM2DBL(argv[2]);
|
355
|
+
ws = gsl_vector_alloc(q->Q);
|
356
|
+
flag = 1;
|
357
|
+
break;
|
358
|
+
case 4:
|
359
|
+
type = FIX2INT(argv[0]);
|
360
|
+
a = NUM2DBL(argv[1]);
|
361
|
+
b = NUM2DBL(argv[2]);
|
362
|
+
Data_Get_Struct(argv[3], gsl_vector, ws);
|
363
|
+
break;
|
364
|
+
default:
|
365
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
|
366
|
+
}
|
367
|
+
status = jac_quadrature_zwd(q, type, a, b, ws->data);
|
368
|
+
if (flag == 1) gsl_vector_free(ws);
|
369
|
+
return INT2FIX(status);
|
370
|
+
}
|
371
|
+
|
372
|
+
static VALUE rb_jac_integrate(VALUE obj, VALUE ff)
|
373
|
+
{
|
374
|
+
jac_quadrature *q;
|
375
|
+
gsl_vector *f;
|
376
|
+
CHECK_VECTOR(ff);
|
377
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
378
|
+
Data_Get_Struct(ff, gsl_vector, f);
|
379
|
+
return rb_float_new(jac_integrate(q, f->data));
|
380
|
+
}
|
381
|
+
|
382
|
+
static VALUE rb_jac_interpolate(int argc, VALUE *argv, VALUE obj)
|
383
|
+
{
|
384
|
+
jac_quadrature *q;
|
385
|
+
gsl_vector *f, *fout;
|
386
|
+
VALUE vfout;
|
387
|
+
switch (argc) {
|
388
|
+
case 1:
|
389
|
+
CHECK_VECTOR(argv[0]);
|
390
|
+
Data_Get_Struct(argv[0], gsl_vector, f);
|
391
|
+
fout = gsl_vector_alloc(f->size);
|
392
|
+
vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
|
393
|
+
break;
|
394
|
+
case 2:
|
395
|
+
CHECK_VECTOR(argv[0]);
|
396
|
+
Data_Get_Struct(argv[0], gsl_vector, f);
|
397
|
+
CHECK_VECTOR(argv[1]);
|
398
|
+
Data_Get_Struct(argv[1], gsl_vector, fout);
|
399
|
+
vfout = argv[1];
|
400
|
+
break;
|
401
|
+
default:
|
402
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
|
403
|
+
}
|
404
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
405
|
+
jac_interpolate(q, f->data, fout->data);
|
406
|
+
return vfout;
|
407
|
+
}
|
408
|
+
|
409
|
+
static VALUE rb_jac_differentiate(int argc, VALUE *argv, VALUE obj)
|
410
|
+
{
|
411
|
+
jac_quadrature *q;
|
412
|
+
gsl_vector *f, *fout;
|
413
|
+
VALUE vfout;
|
414
|
+
switch (argc) {
|
415
|
+
case 1:
|
416
|
+
CHECK_VECTOR(argv[0]);
|
417
|
+
Data_Get_Struct(argv[0], gsl_vector, f);
|
418
|
+
fout = gsl_vector_alloc(f->size);
|
419
|
+
vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
|
420
|
+
break;
|
421
|
+
case 2:
|
422
|
+
CHECK_VECTOR(argv[0]);
|
423
|
+
Data_Get_Struct(argv[0], gsl_vector, f);
|
424
|
+
CHECK_VECTOR(argv[1]);
|
425
|
+
Data_Get_Struct(argv[1], gsl_vector, fout);
|
426
|
+
vfout = argv[1];
|
427
|
+
break;
|
428
|
+
default:
|
429
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
|
430
|
+
}
|
431
|
+
Data_Get_Struct(obj, jac_quadrature, q);
|
432
|
+
jac_differentiate(q, f->data, fout->data);
|
433
|
+
return vfout;
|
434
|
+
}
|
435
|
+
|
436
|
+
/*****/
|
437
|
+
static VALUE rb_jac_qeval(int argc, VALUE *argv,
|
438
|
+
int (*f)(double*, double*, const int, double, double, double*))
|
439
|
+
{
|
440
|
+
gsl_vector *z, *D, *ws;
|
441
|
+
int Q;
|
442
|
+
int flag = 0, status;
|
443
|
+
double alpha, beta;
|
444
|
+
VALUE vD;
|
445
|
+
if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
|
446
|
+
CHECK_VECTOR(argv[0]);
|
447
|
+
Data_Get_Struct(argv[0], gsl_vector, z);
|
448
|
+
argc -= 1;
|
449
|
+
argv += 1;
|
450
|
+
if (VECTOR_P(argv[argc-1])) {
|
451
|
+
Data_Get_Struct(argv[argc-1], gsl_vector, ws);
|
452
|
+
argc -= 1;
|
453
|
+
} else {
|
454
|
+
ws = gsl_vector_alloc(z->size);
|
455
|
+
flag = 1;
|
456
|
+
}
|
457
|
+
switch (argc) {
|
458
|
+
case 2:
|
459
|
+
Q = z->size;
|
460
|
+
D = gsl_vector_alloc(Q*Q);
|
461
|
+
alpha = NUM2DBL(argv[0]);
|
462
|
+
beta = NUM2DBL(argv[1]);
|
463
|
+
vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
|
464
|
+
break;
|
465
|
+
case 4:
|
466
|
+
Data_Get_Struct(argv[0], gsl_vector, D);
|
467
|
+
vD = argv[0];
|
468
|
+
Q = FIX2INT(argv[1]);
|
469
|
+
alpha = NUM2DBL(argv[2]);
|
470
|
+
beta = NUM2DBL(argv[3]);
|
471
|
+
break;
|
472
|
+
case 3:
|
473
|
+
if (VECTOR_P(argv[0])) {
|
474
|
+
Q = z->size;
|
475
|
+
Data_Get_Struct(argv[0], gsl_vector, D);
|
476
|
+
vD = argv[0];
|
477
|
+
} else {
|
478
|
+
Q = FIX2INT(argv[0]);
|
479
|
+
D = gsl_vector_alloc(Q*Q);
|
480
|
+
vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
|
481
|
+
}
|
482
|
+
alpha = NUM2DBL(argv[1]);
|
483
|
+
beta = NUM2DBL(argv[2]);
|
484
|
+
break;
|
485
|
+
default:
|
486
|
+
rb_raise(rb_eArgError, "Wrong number of arguments.");
|
487
|
+
}
|
488
|
+
status = (*f)(z->data, D->data, Q, alpha, beta, ws->data);
|
489
|
+
if (flag == 1) gsl_vector_free(ws);
|
490
|
+
if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Something wrong.");
|
491
|
+
return vD;
|
492
|
+
}
|
493
|
+
|
494
|
+
static VALUE rb_jac_diffmat_gj(int argc, VALUE *argv, VALUE module)
|
495
|
+
{
|
496
|
+
return rb_jac_qeval(argc, argv, jac_diffmat_gj);
|
497
|
+
}
|
498
|
+
|
499
|
+
static VALUE rb_jac_diffmat_glj(int argc, VALUE *argv, VALUE module)
|
500
|
+
{
|
501
|
+
return rb_jac_qeval(argc, argv, jac_diffmat_glj);
|
502
|
+
}
|
503
|
+
|
504
|
+
static VALUE rb_jac_diffmat_grjm(int argc, VALUE *argv, VALUE module)
|
505
|
+
{
|
506
|
+
return rb_jac_qeval(argc, argv, jac_diffmat_grjm);
|
507
|
+
}
|
508
|
+
|
509
|
+
static VALUE rb_jac_diffmat_grjp(int argc, VALUE *argv, VALUE module)
|
510
|
+
{
|
511
|
+
return rb_jac_qeval(argc, argv, jac_diffmat_grjp);
|
512
|
+
}
|
513
|
+
|
514
|
+
static VALUE rb_jac_weights_gj(int argc, VALUE *argv, VALUE module)
|
515
|
+
{
|
516
|
+
return rb_jac_qeval(argc, argv, jac_weights_gj);
|
517
|
+
}
|
518
|
+
|
519
|
+
static VALUE rb_jac_weights_glj(int argc, VALUE *argv, VALUE module)
|
520
|
+
{
|
521
|
+
return rb_jac_qeval(argc, argv, jac_weights_glj);
|
522
|
+
}
|
523
|
+
|
524
|
+
static VALUE rb_jac_weights_grjm(int argc, VALUE *argv, VALUE module)
|
525
|
+
{
|
526
|
+
return rb_jac_qeval(argc, argv, jac_weights_grjm);
|
527
|
+
}
|
528
|
+
|
529
|
+
static VALUE rb_jac_weights_grjp(int argc, VALUE *argv, VALUE module)
|
530
|
+
{
|
531
|
+
return rb_jac_qeval(argc, argv, jac_weights_grjp);
|
532
|
+
}
|
533
|
+
|
534
|
+
static VALUE rb_jac_zeros_gj(int argc, VALUE *argv, VALUE module)
|
535
|
+
{
|
536
|
+
return rb_jac_zeros_eval(argc, argv, module, jac_zeros_gj);
|
537
|
+
}
|
538
|
+
static VALUE rb_jac_zeros_glj(int argc, VALUE *argv, VALUE module)
|
539
|
+
{
|
540
|
+
return rb_jac_zeros_eval(argc, argv, module, jac_zeros_glj);
|
541
|
+
}
|
542
|
+
static VALUE rb_jac_zeros_grjm(int argc, VALUE *argv, VALUE module)
|
543
|
+
{
|
544
|
+
return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjm);
|
545
|
+
}
|
546
|
+
static VALUE rb_jac_zeros_grjp(int argc, VALUE *argv, VALUE module)
|
547
|
+
{
|
548
|
+
return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjp);
|
549
|
+
}
|
550
|
+
|
551
|
+
static VALUE rb_jac_lagrange_eval(int argc, VALUE *argv,
|
552
|
+
double (*f)(int, double, int, double*, double, double))
|
553
|
+
{
|
554
|
+
gsl_vector *z;
|
555
|
+
int i, Q;
|
556
|
+
double alpha, beta, zz;
|
557
|
+
|
558
|
+
switch (argc) {
|
559
|
+
case 5:
|
560
|
+
i = FIX2INT(argv[0]);
|
561
|
+
zz = NUM2DBL(argv[1]);
|
562
|
+
CHECK_VECTOR(argv[2]);
|
563
|
+
Data_Get_Struct(argv[2], gsl_vector, z);
|
564
|
+
Q = z->size;
|
565
|
+
alpha = NUM2DBL(argv[3]);
|
566
|
+
beta = NUM2DBL(argv[4]);
|
567
|
+
break;
|
568
|
+
case 6:
|
569
|
+
i = FIX2INT(argv[0]);
|
570
|
+
zz = NUM2DBL(argv[1]);
|
571
|
+
Q = FIX2INT(argv[2]);
|
572
|
+
CHECK_VECTOR(argv[3]);
|
573
|
+
Data_Get_Struct(argv[3], gsl_vector, z);
|
574
|
+
alpha = NUM2DBL(argv[4]);
|
575
|
+
beta = NUM2DBL(argv[5]);
|
576
|
+
break;
|
577
|
+
default:
|
578
|
+
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 5 or 6)", argc);
|
579
|
+
}
|
580
|
+
return rb_float_new((*f)(i, zz, Q, z->data, alpha, beta));
|
581
|
+
}
|
582
|
+
|
583
|
+
static VALUE rb_jac_lagrange_gj(int argc, VALUE *argv, VALUE module)
|
584
|
+
{
|
585
|
+
return rb_jac_lagrange_eval(argc, argv, jac_lagrange_gj);
|
586
|
+
}
|
587
|
+
static VALUE rb_jac_lagrange_glj(int argc, VALUE *argv, VALUE module)
|
588
|
+
{
|
589
|
+
return rb_jac_lagrange_eval(argc, argv, jac_lagrange_glj);
|
590
|
+
}
|
591
|
+
static VALUE rb_jac_lagrange_grjm(int argc, VALUE *argv, VALUE module)
|
592
|
+
{
|
593
|
+
return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjm);
|
594
|
+
}
|
595
|
+
|
596
|
+
static VALUE rb_jac_lagrange_grjp(int argc, VALUE *argv, VALUE module)
|
597
|
+
{
|
598
|
+
return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjp);
|
599
|
+
}
|
600
|
+
|
601
|
+
static VALUE rb_jac_interpmat_eval(int argc, VALUE *argv,
|
602
|
+
int (*f)(double*, double*, int, double*, int, double, double))
|
603
|
+
{
|
604
|
+
gsl_vector *imat, *zp, *z;
|
605
|
+
double alpha, beta;
|
606
|
+
int np, Q, status;
|
607
|
+
VALUE vimat;
|
608
|
+
|
609
|
+
if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
|
610
|
+
CHECK_VECTOR(argv[0]);
|
611
|
+
if (VECTOR_P(argv[1])) {
|
612
|
+
Data_Get_Struct(argv[0], gsl_vector, imat);
|
613
|
+
Data_Get_Struct(argv[1], gsl_vector, zp);
|
614
|
+
vimat = argv[0];
|
615
|
+
if (FIXNUM_P(argv[2])) np = FIX2INT(argv[2]);
|
616
|
+
argc -= 3;
|
617
|
+
argv += 3;
|
618
|
+
} else {
|
619
|
+
Data_Get_Struct(argv[0], gsl_vector, zp);
|
620
|
+
if (FIXNUM_P(argv[1])) np = FIX2INT(argv[1]);
|
621
|
+
else np = zp->size;
|
622
|
+
imat = gsl_vector_alloc(np);
|
623
|
+
vimat = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, imat);
|
624
|
+
argc -= 2;
|
625
|
+
argv += 2;
|
626
|
+
}
|
627
|
+
CHECK_VECTOR(argv[0]);
|
628
|
+
Data_Get_Struct(argv[0], gsl_vector, z);
|
629
|
+
argc -= 1;
|
630
|
+
argv += 1;
|
631
|
+
switch (argc) {
|
632
|
+
case 3:
|
633
|
+
Q = FIX2INT(argv[0]);
|
634
|
+
alpha = NUM2DBL(argv[1]);
|
635
|
+
beta = NUM2DBL(argv[2]);
|
636
|
+
break;
|
637
|
+
case 2:
|
638
|
+
Q = z->size;
|
639
|
+
alpha = NUM2DBL(argv[0]);
|
640
|
+
beta = NUM2DBL(argv[1]);
|
641
|
+
break;
|
642
|
+
default:
|
643
|
+
rb_raise(rb_eArgError, "Wrong number of arguments.");
|
644
|
+
}
|
645
|
+
(*f)(imat->data, zp->data, np, z->data, Q, alpha, beta);
|
646
|
+
if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Some error.");
|
647
|
+
return vimat;
|
648
|
+
}
|
649
|
+
|
650
|
+
static VALUE rb_jac_interpmat_gj(int argc, VALUE *argv, VALUE module)
|
651
|
+
{
|
652
|
+
return rb_jac_interpmat_eval(argc, argv, jac_interpmat_gj);
|
653
|
+
}
|
654
|
+
|
655
|
+
static VALUE rb_jac_interpmat_glj(int argc, VALUE *argv, VALUE module)
|
656
|
+
{
|
657
|
+
return rb_jac_interpmat_eval(argc, argv, jac_interpmat_glj);
|
658
|
+
}
|
659
|
+
static VALUE rb_jac_interpmat_grjm(int argc, VALUE *argv, VALUE module)
|
660
|
+
{
|
661
|
+
return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjm);
|
662
|
+
}
|
663
|
+
static VALUE rb_jac_interpmat_grjp(int argc, VALUE *argv, VALUE module)
|
664
|
+
{
|
665
|
+
return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjp);
|
666
|
+
}
|
667
|
+
void Init_jacobi(VALUE module)
|
668
|
+
{
|
669
|
+
VALUE mjac, cjacq;
|
670
|
+
|
671
|
+
mjac = rb_define_module("Jac");
|
672
|
+
jac_define_const(mjac);
|
673
|
+
cjacq = rb_define_class_under(mjac, "Quadrature", cGSL_Object);
|
674
|
+
|
675
|
+
rb_define_module_function(mjac, "jacobi_P0_e", rb_jac_jacobi_P0_e, 3);
|
676
|
+
rb_define_module_function(mjac, "jacobi_P0", rb_jac_jacobi_P0, 3);
|
677
|
+
rb_define_module_function(mjac, "jacobi_P1_e", rb_jac_jacobi_P1_e, 3);
|
678
|
+
rb_define_module_function(mjac, "jacobi_P1", rb_jac_jacobi_P1, 3);
|
679
|
+
rb_define_module_function(mjac, "jacobi", rb_jac_jacobi, -1);
|
680
|
+
rb_define_module_function(mjac, "djacobi_P0_e", rb_jac_djacobi_P0_e, 3);
|
681
|
+
rb_define_module_function(mjac, "djacobi_P0", rb_jac_djacobi_P0, 3);
|
682
|
+
rb_define_module_function(mjac, "djacobi_P1_e", rb_jac_djacobi_P1_e, 3);
|
683
|
+
rb_define_module_function(mjac, "djacobi_P1", rb_jac_djacobi_P1, 3);
|
684
|
+
rb_define_module_function(mjac, "djacobi", rb_jac_djacobi, 4);
|
685
|
+
|
686
|
+
rb_define_module_function(mjac, "jacobi_zeros", rb_jac_jacobi_zeros, -1);
|
687
|
+
|
688
|
+
/*****/
|
689
|
+
rb_define_singleton_method(cjacq, "alloc", rb_jac_quadrature_alloc, 1);
|
690
|
+
rb_define_method(cjacq, "Q", rb_jac_quadrature_Q, 0);
|
691
|
+
rb_define_method(cjacq, "type", rb_jac_quadrature_type, 0);
|
692
|
+
rb_define_method(cjacq, "alpha", rb_jac_quadrature_alpha, 0);
|
693
|
+
rb_define_method(cjacq, "beta", rb_jac_quadrature_beta, 0);
|
694
|
+
rb_define_method(cjacq, "x", rb_jac_quadrature_x, 0);
|
695
|
+
rb_define_method(cjacq, "w", rb_jac_quadrature_w, 0);
|
696
|
+
rb_define_method(cjacq, "D", rb_jac_quadrature_D, 0);
|
697
|
+
rb_define_method(cjacq, "xp", rb_jac_quadrature_xp, 0);
|
698
|
+
rb_define_method(cjacq, "interpmat_alloc", rb_jac_interpmat_alloc, -1);
|
699
|
+
rb_define_method(cjacq, "interpmat_free", rb_jac_interpmat_free, 0);
|
700
|
+
rb_define_method(cjacq, "zwd", rb_jac_quadrature_zwd, -1);
|
701
|
+
rb_define_method(cjacq, "integrate", rb_jac_integrate, 1);
|
702
|
+
rb_define_method(cjacq, "interpolate", rb_jac_interpolate, -1);
|
703
|
+
rb_define_method(cjacq, "differentiate", rb_jac_differentiate, -1);
|
704
|
+
/*****/
|
705
|
+
rb_define_module_function(mjac, "diffmat_gj", rb_jac_diffmat_gj, -1);
|
706
|
+
rb_define_module_function(mjac, "diffmat_glj", rb_jac_diffmat_glj, -1);
|
707
|
+
rb_define_module_function(mjac, "diffmat_grjm", rb_jac_diffmat_grjm, -1);
|
708
|
+
rb_define_module_function(mjac, "diffmat_grjp", rb_jac_diffmat_grjp, -1);
|
709
|
+
|
710
|
+
rb_define_module_function(mjac, "weights_gj", rb_jac_weights_gj, -1);
|
711
|
+
rb_define_module_function(mjac, "weights_glj", rb_jac_weights_glj, -1);
|
712
|
+
rb_define_module_function(mjac, "weights_grjm", rb_jac_weights_grjm, -1);
|
713
|
+
rb_define_module_function(mjac, "weights_grjp", rb_jac_weights_grjp, -1);
|
714
|
+
|
715
|
+
rb_define_module_function(mjac, "zeros_gj", rb_jac_zeros_gj, -1);
|
716
|
+
rb_define_module_function(mjac, "zeros_glj", rb_jac_zeros_glj, -1);
|
717
|
+
rb_define_module_function(mjac, "zeros_grjm", rb_jac_zeros_grjm, -1);
|
718
|
+
rb_define_module_function(mjac, "zeros_grjp", rb_jac_zeros_grjp, -1);
|
719
|
+
|
720
|
+
rb_define_module_function(mjac, "lagrange_gj", rb_jac_lagrange_gj, -1);
|
721
|
+
rb_define_module_function(mjac, "lagrange_glj", rb_jac_lagrange_glj, -1);
|
722
|
+
rb_define_module_function(mjac, "lagrange_grjm", rb_jac_lagrange_grjm, -1);
|
723
|
+
rb_define_module_function(mjac, "lagrange_grjp", rb_jac_lagrange_grjp, -1);
|
724
|
+
|
725
|
+
rb_define_module_function(mjac, "interpmat_gj", rb_jac_interpmat_gj, -1);
|
726
|
+
rb_define_module_function(mjac, "interpmat_glj", rb_jac_interpmat_glj, -1);
|
727
|
+
rb_define_module_function(mjac, "interpmat_grjm", rb_jac_interpmat_grjm, -1);
|
728
|
+
rb_define_module_function(mjac, "interpmat_grjp", rb_jac_interpmat_grjp, -1);
|
729
|
+
|
730
|
+
}
|
731
|
+
|
732
|
+
#endif
|
733
|
+
|