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_fit.h"
|
12
|
+
#include "include/rb_gsl_fit.h"
|
14
13
|
|
15
14
|
/* linear fit without weights: y = c0 + c1 x */
|
16
15
|
/* This returns 7 elements array */
|
@@ -36,10 +35,10 @@ static VALUE rb_gsl_fit_linear(int argc, VALUE *argv, VALUE obj)
|
|
36
35
|
break;
|
37
36
|
}
|
38
37
|
status = gsl_fit_linear(ptrx, stridex, ptry, stridey, n, &c0, &c1, &cov00,
|
39
|
-
|
38
|
+
&cov01, &cov11, &sumsq);
|
40
39
|
return rb_ary_new3(7, rb_float_new(c0), rb_float_new(c1), rb_float_new(cov00),
|
41
|
-
|
42
|
-
|
40
|
+
rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
|
41
|
+
INT2FIX(status));
|
43
42
|
}
|
44
43
|
|
45
44
|
/* linear fit with weights: y = c0 + c1 x */
|
@@ -55,7 +54,7 @@ static VALUE rb_gsl_fit_wlinear(int argc, VALUE *argv, VALUE obj)
|
|
55
54
|
ptrw = get_vector_ptr(argv[1], &stridew, &n);
|
56
55
|
ptry = get_vector_ptr(argv[2], &stridey, &n);
|
57
56
|
break;
|
58
|
-
case 4:
|
57
|
+
case 4:
|
59
58
|
CHECK_FIXNUM(argv[3]);
|
60
59
|
ptrx = get_vector_ptr(argv[0], &stridex, &n);
|
61
60
|
ptrw = get_vector_ptr(argv[1], &stridew, &n);
|
@@ -67,11 +66,11 @@ static VALUE rb_gsl_fit_wlinear(int argc, VALUE *argv, VALUE obj)
|
|
67
66
|
break;
|
68
67
|
}
|
69
68
|
status = gsl_fit_wlinear(ptrx, stridex, ptrw, stridew, ptry, stridey,
|
70
|
-
|
71
|
-
|
69
|
+
n,
|
70
|
+
&c0, &c1, &cov00, &cov01, &cov11, &sumsq);
|
72
71
|
return rb_ary_new3(7, rb_float_new(c0), rb_float_new(c1), rb_float_new(cov00),
|
73
|
-
|
74
|
-
|
72
|
+
rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
|
73
|
+
INT2FIX(status));
|
75
74
|
}
|
76
75
|
|
77
76
|
static VALUE rb_gsl_fit_linear_est(int argc, VALUE *argv, VALUE obj)
|
@@ -130,8 +129,8 @@ static VALUE rb_gsl_fit_mul(int argc, VALUE *argv, VALUE obj)
|
|
130
129
|
break;
|
131
130
|
}
|
132
131
|
status = gsl_fit_mul(ptrx, stridex, ptry, stridey, n, &c1, &cov11, &sumsq);
|
133
|
-
return rb_ary_new3(4, rb_float_new(c1),
|
134
|
-
|
132
|
+
return rb_ary_new3(4, rb_float_new(c1),
|
133
|
+
rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
|
135
134
|
}
|
136
135
|
|
137
136
|
static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
|
@@ -146,7 +145,7 @@ static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
|
|
146
145
|
ptrw = get_vector_ptr(argv[1], &stridew, &n);
|
147
146
|
ptry = get_vector_ptr(argv[2], &stridey, &n);
|
148
147
|
break;
|
149
|
-
case 4:
|
148
|
+
case 4:
|
150
149
|
CHECK_FIXNUM(argv[3]);
|
151
150
|
ptrx = get_vector_ptr(argv[0], &stridex, &n);
|
152
151
|
ptrw = get_vector_ptr(argv[1], &stridew, &n);
|
@@ -157,10 +156,10 @@ static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
|
|
157
156
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
|
158
157
|
break;
|
159
158
|
}
|
160
|
-
status = gsl_fit_wmul(ptrx, stridex, ptrw, stridew, ptry, stridey,
|
161
|
-
|
162
|
-
return rb_ary_new3(4, rb_float_new(c1),
|
163
|
-
|
159
|
+
status = gsl_fit_wmul(ptrx, stridex, ptrw, stridew, ptry, stridey,
|
160
|
+
n, &c1, &cov11, &sumsq);
|
161
|
+
return rb_ary_new3(4, rb_float_new(c1),
|
162
|
+
rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
|
164
163
|
}
|
165
164
|
|
166
165
|
static VALUE rb_gsl_fit_mul_est(int argc, VALUE *argv, VALUE obj)
|
@@ -195,7 +194,7 @@ static VALUE rb_gsl_fit_mul_est(int argc, VALUE *argv, VALUE obj)
|
|
195
194
|
void Init_gsl_fit(VALUE module)
|
196
195
|
{
|
197
196
|
VALUE mgsl_fit;
|
198
|
-
mgsl_fit = rb_define_module_under(module, "Fit");
|
197
|
+
mgsl_fit = rb_define_module_under(module, "Fit");
|
199
198
|
rb_define_module_function(mgsl_fit, "linear", rb_gsl_fit_linear, -1);
|
200
199
|
rb_define_module_function(mgsl_fit, "wlinear", rb_gsl_fit_wlinear, -1);
|
201
200
|
rb_define_module_function(mgsl_fit, "linear_est", rb_gsl_fit_linear_est, -1);
|
@@ -0,0 +1,312 @@
|
|
1
|
+
/****************************************************************************
|
2
|
+
* fresnel.c -
|
3
|
+
* Calculation of Fresnel integrals by expansion to Chebyshev series
|
4
|
+
* Expansions are taken from the book
|
5
|
+
* Y.L. Luke. Mathematical functions and their approximations.
|
6
|
+
* Moscow, "Mir", 1980. PP. 145-149 (Russian edition)
|
7
|
+
****************************************************************************
|
8
|
+
*/
|
9
|
+
/*
|
10
|
+
Modified for Ruby bindings
|
11
|
+
2006/Dec/24 Y. TSUNESADA
|
12
|
+
*/
|
13
|
+
#include <math.h>
|
14
|
+
#include "include/rb_gsl.h"
|
15
|
+
#include "include/rb_gsl_sf.h"
|
16
|
+
|
17
|
+
static const double sqrt_pi_2 = 1.2533141373155002512078826424; /* sqrt(pi/2) */
|
18
|
+
static const double sqrt_2_pi = 0.7978845608028653558798921199; /* sqrt(2/pi) */
|
19
|
+
static const double _1_sqrt_2pi = 0.3989422804014326779399460599; /* 1/sqrt(2*pi) */
|
20
|
+
static const double pi_2 = 1.5707963267948966192313216916; /* pi/2 */
|
21
|
+
|
22
|
+
static double f_data_a[18] =
|
23
|
+
{
|
24
|
+
0.76435138664186000189,
|
25
|
+
-0.43135547547660179313,
|
26
|
+
0.43288199979726653054,
|
27
|
+
-0.26973310338387111029,
|
28
|
+
0.08416045320876935378,
|
29
|
+
-0.01546524484461381958,
|
30
|
+
0.00187855423439822018,
|
31
|
+
-0.00016264977618887547,
|
32
|
+
0.00001057397656383260,
|
33
|
+
-0.00000053609339889243,
|
34
|
+
0.00000002181658454933,
|
35
|
+
-0.00000000072901621186,
|
36
|
+
0.00000000002037332546,
|
37
|
+
-0.00000000000048344033,
|
38
|
+
0.00000000000000986533,
|
39
|
+
-0.00000000000000017502,
|
40
|
+
0.00000000000000000272,
|
41
|
+
-0.00000000000000000004
|
42
|
+
};
|
43
|
+
|
44
|
+
static double f_data_b[17] =
|
45
|
+
{
|
46
|
+
0.63041404314570539241,
|
47
|
+
-0.42344511405705333544,
|
48
|
+
0.37617172643343656625,
|
49
|
+
-0.16249489154509567415,
|
50
|
+
0.03822255778633008694,
|
51
|
+
-0.00564563477132190899,
|
52
|
+
0.00057454951976897367,
|
53
|
+
-0.00004287071532102004,
|
54
|
+
0.00000245120749923299,
|
55
|
+
-0.00000011098841840868,
|
56
|
+
0.00000000408249731696,
|
57
|
+
-0.00000000012449830219,
|
58
|
+
0.00000000000320048425,
|
59
|
+
-0.00000000000007032416,
|
60
|
+
0.00000000000000133638,
|
61
|
+
-0.00000000000000002219,
|
62
|
+
0.00000000000000000032
|
63
|
+
};
|
64
|
+
|
65
|
+
static double fresnel_cos_0_8(double x)
|
66
|
+
{
|
67
|
+
double x_8 = x/8.0;
|
68
|
+
double xx = 2.0*x_8*x_8 - 1.0;
|
69
|
+
|
70
|
+
double t0 = 1.0;
|
71
|
+
double t1 = xx;
|
72
|
+
double sumC = f_data_a[0] + f_data_a[1]*t1;
|
73
|
+
double t2;
|
74
|
+
int n;
|
75
|
+
for (n = 2; n < 18; n++)
|
76
|
+
{
|
77
|
+
t2 = 2.0*xx*t1 - t0;
|
78
|
+
sumC += f_data_a[n]*t2;
|
79
|
+
t0 = t1; t1 = t2;
|
80
|
+
}
|
81
|
+
return _1_sqrt_2pi*sqrt(x)*sumC;
|
82
|
+
}
|
83
|
+
|
84
|
+
static double fresnel_sin_0_8(double x)
|
85
|
+
{
|
86
|
+
double x_8 = x/8.0;
|
87
|
+
double xx = 2.0*x_8*x_8 - 1.0;
|
88
|
+
double t0 = 1.;
|
89
|
+
double t1 = xx;
|
90
|
+
double ot1 = x_8;
|
91
|
+
double ot2 = 2.0*x_8*t1 - ot1;
|
92
|
+
double sumS = f_data_b[0]*ot1 + f_data_b[1]*ot2;
|
93
|
+
int n;
|
94
|
+
double t2;
|
95
|
+
for (n = 2; n < 17; n++)
|
96
|
+
{
|
97
|
+
t2 = 2.0*xx*t1 - t0;
|
98
|
+
ot1 = ot2;
|
99
|
+
ot2 = 2.0*x_8*t2 - ot1;
|
100
|
+
sumS += f_data_b[n]*ot2;
|
101
|
+
t0 = t1; t1 = t2;
|
102
|
+
}
|
103
|
+
return _1_sqrt_2pi*sqrt(x)*sumS;
|
104
|
+
}
|
105
|
+
|
106
|
+
static double f_data_e[41] =
|
107
|
+
{
|
108
|
+
0.97462779093296822410,
|
109
|
+
-0.02424701873969321371,
|
110
|
+
0.00103400906842977317,
|
111
|
+
-0.00008052450246908016,
|
112
|
+
0.00000905962481966582,
|
113
|
+
-0.00000131016996757743,
|
114
|
+
0.00000022770820391497,
|
115
|
+
-0.00000004558623552026,
|
116
|
+
0.00000001021567537083,
|
117
|
+
-0.00000000251114508133,
|
118
|
+
0.00000000066704761275,
|
119
|
+
-0.00000000018931512852,
|
120
|
+
0.00000000005689898935,
|
121
|
+
-0.00000000001798219359,
|
122
|
+
0.00000000000594162963,
|
123
|
+
-0.00000000000204285065,
|
124
|
+
0.00000000000072797580,
|
125
|
+
-0.00000000000026797428,
|
126
|
+
0.00000000000010160694,
|
127
|
+
-0.00000000000003958559,
|
128
|
+
0.00000000000001581262,
|
129
|
+
-0.00000000000000646411,
|
130
|
+
0.00000000000000269981,
|
131
|
+
-0.00000000000000115038,
|
132
|
+
0.00000000000000049942,
|
133
|
+
-0.00000000000000022064,
|
134
|
+
0.00000000000000009910,
|
135
|
+
-0.00000000000000004520,
|
136
|
+
0.00000000000000002092,
|
137
|
+
-0.00000000000000000982,
|
138
|
+
0.00000000000000000467,
|
139
|
+
-0.00000000000000000225,
|
140
|
+
0.00000000000000000110,
|
141
|
+
-0.00000000000000000054,
|
142
|
+
0.00000000000000000027,
|
143
|
+
-0.00000000000000000014,
|
144
|
+
0.00000000000000000007,
|
145
|
+
-0.00000000000000000004,
|
146
|
+
0.00000000000000000002,
|
147
|
+
-0.00000000000000000001,
|
148
|
+
0.00000000000000000001
|
149
|
+
};
|
150
|
+
|
151
|
+
static double f_data_f[35] =
|
152
|
+
{
|
153
|
+
0.99461545179407928910,
|
154
|
+
-0.00524276766084297210,
|
155
|
+
0.00013325864229883909,
|
156
|
+
-0.00000770856452642713,
|
157
|
+
0.00000070848077032045,
|
158
|
+
-0.00000008812517411602,
|
159
|
+
0.00000001359784717148,
|
160
|
+
-0.00000000246858295747,
|
161
|
+
0.00000000050925789921,
|
162
|
+
-0.00000000011653400634,
|
163
|
+
0.00000000002906578309,
|
164
|
+
-0.00000000000779847361,
|
165
|
+
0.00000000000222802542,
|
166
|
+
-0.00000000000067239338,
|
167
|
+
0.00000000000021296411,
|
168
|
+
-0.00000000000007041482,
|
169
|
+
0.00000000000002419805,
|
170
|
+
-0.00000000000000861080,
|
171
|
+
0.00000000000000316287,
|
172
|
+
-0.00000000000000119596,
|
173
|
+
0.00000000000000046444,
|
174
|
+
-0.00000000000000018485,
|
175
|
+
0.00000000000000007527,
|
176
|
+
-0.00000000000000003131,
|
177
|
+
0.00000000000000001328,
|
178
|
+
-0.00000000000000000574,
|
179
|
+
0.00000000000000000252,
|
180
|
+
-0.00000000000000000113,
|
181
|
+
0.00000000000000000051,
|
182
|
+
-0.00000000000000000024,
|
183
|
+
0.00000000000000000011,
|
184
|
+
-0.00000000000000000005,
|
185
|
+
0.00000000000000000002,
|
186
|
+
-0.00000000000000000001,
|
187
|
+
0.00000000000000000001
|
188
|
+
};
|
189
|
+
|
190
|
+
static double fresnel_cos_8_inf(double x)
|
191
|
+
{
|
192
|
+
double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
|
193
|
+
double t0 = 1.0;
|
194
|
+
double t1 = xx;
|
195
|
+
double sumP = f_data_e[0] + f_data_e[1]*t1;
|
196
|
+
double sumQ = f_data_f[0] + f_data_f[1]*t1;
|
197
|
+
double t2;
|
198
|
+
int n;
|
199
|
+
for(n = 2; n < 35; n++)
|
200
|
+
{
|
201
|
+
t2 = 2.0*xx*t1 - t0;
|
202
|
+
sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
|
203
|
+
sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
|
204
|
+
t0 = t1; t1 = t2;
|
205
|
+
}
|
206
|
+
for(n = 35; n < 41; n++)
|
207
|
+
{
|
208
|
+
t2 = 2.0*xx*t1 - t0;
|
209
|
+
sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
|
210
|
+
t0 = t1; t1 = t2;
|
211
|
+
}
|
212
|
+
return 0.5 - _1_sqrt_2pi*(0.5*sumP*cos(x)/x - sumQ*sin(x))/sqrt(x);
|
213
|
+
}
|
214
|
+
|
215
|
+
static double fresnel_sin_8_inf(double x)
|
216
|
+
{
|
217
|
+
double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
|
218
|
+
double t0 = 1.0;
|
219
|
+
double t1 = xx;
|
220
|
+
double sumP = f_data_e[0] + f_data_e[1]*t1;
|
221
|
+
double sumQ = f_data_f[0] + f_data_f[1]*t1;
|
222
|
+
double t2;
|
223
|
+
int n;
|
224
|
+
for(n = 2; n < 35; n++)
|
225
|
+
{
|
226
|
+
t2 = 2.0*xx*t1 - t0;
|
227
|
+
sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
|
228
|
+
sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
|
229
|
+
t0 = t1; t1 = t2;
|
230
|
+
}
|
231
|
+
for(n = 35; n < 41; n++)
|
232
|
+
{
|
233
|
+
t2 = 2.0*xx*t1 - t0;
|
234
|
+
sumP += f_data_e[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
|
235
|
+
t0 = t1; t1 = t2;
|
236
|
+
}
|
237
|
+
return 0.5 - _1_sqrt_2pi*(0.5*sumP*sin(x)/x + sumQ*cos(x))/sqrt(x);
|
238
|
+
}
|
239
|
+
|
240
|
+
|
241
|
+
double fresnel_c(double x)
|
242
|
+
{
|
243
|
+
double xx = x*x*pi_2;
|
244
|
+
double ret_val;
|
245
|
+
if(xx<=8.0)
|
246
|
+
ret_val = fresnel_cos_0_8(xx);
|
247
|
+
else
|
248
|
+
ret_val = fresnel_cos_8_inf(xx);
|
249
|
+
return (x<0.0) ? -ret_val : ret_val;
|
250
|
+
}
|
251
|
+
|
252
|
+
double fresnel_s(double x)
|
253
|
+
{
|
254
|
+
double xx = x*x*pi_2;
|
255
|
+
double ret_val;
|
256
|
+
if(xx<=8.0)
|
257
|
+
ret_val = fresnel_sin_0_8(xx);
|
258
|
+
else
|
259
|
+
ret_val = fresnel_sin_8_inf(xx);
|
260
|
+
return (x<0.0) ? -ret_val : ret_val;
|
261
|
+
}
|
262
|
+
|
263
|
+
double fresnel_c1(double x)
|
264
|
+
{
|
265
|
+
return fresnel_c(x*sqrt_2_pi);
|
266
|
+
}
|
267
|
+
|
268
|
+
double fresnel_s1(double x)
|
269
|
+
{
|
270
|
+
return fresnel_s(x*sqrt_2_pi);
|
271
|
+
}
|
272
|
+
|
273
|
+
static VALUE rb_fresnel_c(VALUE obj, VALUE x)
|
274
|
+
{
|
275
|
+
return rb_gsl_sf_eval1(fresnel_c, x);
|
276
|
+
}
|
277
|
+
static VALUE rb_fresnel_s(VALUE obj, VALUE x)
|
278
|
+
{
|
279
|
+
return rb_gsl_sf_eval1(fresnel_s, x);
|
280
|
+
}
|
281
|
+
static VALUE rb_fresnel_c1(VALUE obj, VALUE x)
|
282
|
+
{
|
283
|
+
return rb_gsl_sf_eval1(fresnel_c1, x);
|
284
|
+
}
|
285
|
+
static VALUE rb_fresnel_s1(VALUE obj, VALUE x)
|
286
|
+
{
|
287
|
+
return rb_gsl_sf_eval1(fresnel_s1, x);
|
288
|
+
}
|
289
|
+
void Init_fresnel(VALUE module)
|
290
|
+
{
|
291
|
+
VALUE mfresnel;
|
292
|
+
mfresnel = rb_define_module_under(module, "Fresnel");
|
293
|
+
rb_define_module_function(module, "fresnel_c", rb_fresnel_c, 1);
|
294
|
+
rb_define_module_function(module, "fresnel_s", rb_fresnel_s, 1);
|
295
|
+
rb_define_module_function(module, "fresnel_c1", rb_fresnel_c1, 1);
|
296
|
+
rb_define_module_function(module, "fresnel_s1", rb_fresnel_s1, 1);
|
297
|
+
rb_define_module_function(mfresnel, "c", rb_fresnel_c, 1);
|
298
|
+
rb_define_module_function(mfresnel, "s", rb_fresnel_s, 1);
|
299
|
+
rb_define_module_function(mfresnel, "c1", rb_fresnel_c1, 1);
|
300
|
+
rb_define_module_function(mfresnel, "s1", rb_fresnel_s1, 1);
|
301
|
+
}
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
|
312
|
+
|
@@ -8,17 +8,14 @@
|
|
8
8
|
This library is distributed in the hope that it will be useful, but
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
|
-
|
12
|
-
#include "rb_gsl_function.h"
|
13
|
-
#ifdef HAVE_NARRAY_H
|
14
|
-
#include "narray.h"
|
15
|
-
#endif
|
11
|
+
|
12
|
+
#include "include/rb_gsl_function.h"
|
16
13
|
|
17
14
|
VALUE cgsl_function;
|
18
15
|
VALUE cgsl_function_fdf;
|
19
16
|
|
20
17
|
void gsl_function_free(gsl_function *f);
|
21
|
-
double rb_gsl_function_f(double x, void *p);
|
18
|
+
double rb_gsl_function_f(double x, void *p);
|
22
19
|
ID RBGSL_ID_call, RBGSL_ID_arity;
|
23
20
|
|
24
21
|
static VALUE rb_gsl_function_set_f(int argc, VALUE *argv, VALUE obj)
|
@@ -52,11 +49,11 @@ static VALUE rb_gsl_function_set_f(int argc, VALUE *argv, VALUE obj)
|
|
52
49
|
CHECK_PROC(argv[0]);
|
53
50
|
rb_ary_store(ary, 0, argv[0]);
|
54
51
|
ary2 = rb_ary_new2(argc-1);
|
55
|
-
for (i = 1; i < argc; i++) rb_ary_store(ary2, i-1, argv[i]);
|
52
|
+
for (i = 1; (int) i < argc; i++) rb_ary_store(ary2, i-1, argv[i]);
|
56
53
|
rb_ary_store(ary, 1, ary2);
|
57
54
|
break;
|
58
55
|
}
|
59
|
-
if (rb_block_given_p()) rb_ary_store(ary, 0,
|
56
|
+
if (rb_block_given_p()) rb_ary_store(ary, 0, rb_block_proc());
|
60
57
|
return obj;
|
61
58
|
}
|
62
59
|
|
@@ -85,7 +82,7 @@ static VALUE rb_gsl_function_alloc(int argc, VALUE *argv, VALUE klass)
|
|
85
82
|
obj = Data_Wrap_Struct(klass, gsl_function_mark, gsl_function_free, f);
|
86
83
|
rb_gsl_function_set_f(argc, argv, obj);
|
87
84
|
return obj;
|
88
|
-
}
|
85
|
+
}
|
89
86
|
|
90
87
|
double rb_gsl_function_f(double x, void *p)
|
91
88
|
{
|
@@ -108,10 +105,6 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
|
|
108
105
|
gsl_vector *v = NULL, *vnew = NULL;
|
109
106
|
gsl_matrix *m = NULL, *mnew = NULL;
|
110
107
|
size_t i, j, n;
|
111
|
-
#ifdef HAVE_NARRAY_H
|
112
|
-
double *ptr1, *ptr2;
|
113
|
-
struct NARRAY *na;
|
114
|
-
#endif
|
115
108
|
Data_Get_Struct(obj, gsl_function, F);
|
116
109
|
ary = (VALUE) F->params;
|
117
110
|
proc = rb_ary_entry(ary, 0);
|
@@ -141,16 +134,18 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
|
|
141
134
|
default:
|
142
135
|
#ifdef HAVE_NARRAY_H
|
143
136
|
if (NA_IsNArray(x)) {
|
137
|
+
double *ptr1, *ptr2;
|
138
|
+
struct NARRAY *na;
|
144
139
|
GetNArray(x, na);
|
145
140
|
ptr1 = (double *) na->ptr;
|
146
141
|
n = na->total;
|
147
142
|
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(x));
|
148
143
|
ptr2 = NA_PTR_TYPE(ary, double*);
|
149
144
|
for (i = 0; i < n; i++) {
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
145
|
+
x2 = rb_float_new(ptr1[i]);
|
146
|
+
if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
|
147
|
+
else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
|
148
|
+
ptr2[i] = NUM2DBL(result);
|
154
149
|
}
|
155
150
|
return ary;
|
156
151
|
}
|
@@ -159,22 +154,22 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
|
|
159
154
|
Data_Get_Struct(x, gsl_vector, v);
|
160
155
|
vnew = gsl_vector_alloc(v->size);
|
161
156
|
for (i = 0; i < v->size; i++) {
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
157
|
+
x2 = rb_float_new(gsl_vector_get(v, i));
|
158
|
+
if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
|
159
|
+
else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
|
160
|
+
gsl_vector_set(vnew, i, NUM2DBL(result));
|
166
161
|
}
|
167
162
|
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
168
163
|
} else if (MATRIX_P(x)) {
|
169
164
|
Data_Get_Struct(x, gsl_matrix, m);
|
170
165
|
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
171
166
|
for (i = 0; i < m->size1; i++) {
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
167
|
+
for (j = 0; j < m->size2; j++) {
|
168
|
+
x2 = rb_float_new(gsl_matrix_get(m, i, j));
|
169
|
+
if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
|
170
|
+
else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
|
171
|
+
gsl_matrix_set(mnew, i, j, NUM2DBL(result));
|
172
|
+
}
|
178
173
|
}
|
179
174
|
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
180
175
|
} else {
|
@@ -221,7 +216,7 @@ static VALUE rb_gsl_function_set_params(int argc, VALUE *argv, VALUE obj)
|
|
221
216
|
rb_ary_store(ary, 1, argv[0]);
|
222
217
|
} else {
|
223
218
|
ary2 = rb_ary_new2(argc);
|
224
|
-
for (i = 0; i < argc; i++) rb_ary_store(ary2, i, argv[i]);
|
219
|
+
for (i = 0; (int) i < argc; i++) rb_ary_store(ary2, i, argv[i]);
|
225
220
|
rb_ary_store(ary, 1, ary2);
|
226
221
|
}
|
227
222
|
return obj;
|
@@ -242,7 +237,7 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
|
|
242
237
|
case 2:
|
243
238
|
Check_Type(argv[1], T_STRING);
|
244
239
|
strcpy(opt, STR2CSTR(argv[1]));
|
245
|
-
|
240
|
+
/* no break, do next */
|
246
241
|
case 1:
|
247
242
|
if (CLASS_OF(argv[0]) == rb_cRange) argv[0] = rb_gsl_range2ary(argv[0]);
|
248
243
|
if (TYPE(argv[0]) == T_ARRAY) {
|
@@ -250,16 +245,16 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
|
|
250
245
|
n = RARRAY_LEN(argv[0]);
|
251
246
|
v = gsl_vector_alloc(n);
|
252
247
|
flag = 1;
|
253
|
-
for (i = 0; i < n; i++)
|
254
|
-
|
248
|
+
for (i = 0; i < n; i++)
|
249
|
+
gsl_vector_set(v, i, NUM2DBL(rb_ary_entry(argv[0], i)));
|
255
250
|
} else if (rb_obj_is_kind_of(argv[0], cgsl_vector)) {
|
256
251
|
Data_Get_Struct(argv[0], gsl_vector, v);
|
257
252
|
n = v->size;
|
258
253
|
flag = 0;
|
259
254
|
} else {
|
260
|
-
rb_raise(rb_eTypeError,
|
261
|
-
|
262
|
-
|
255
|
+
rb_raise(rb_eTypeError,
|
256
|
+
"wrong argument type %s (Array or GSL::Vector expected)",
|
257
|
+
rb_class2name(CLASS_OF(argv[0])));
|
263
258
|
}
|
264
259
|
break;
|
265
260
|
default:
|
@@ -281,7 +276,7 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
|
|
281
276
|
fprintf(fp, "%e %e\n", x, y);
|
282
277
|
}
|
283
278
|
fflush(fp);
|
284
|
-
|
279
|
+
pclose(fp);
|
285
280
|
fp = NULL;
|
286
281
|
if (flag == 1) gsl_vector_free(v);
|
287
282
|
return Qtrue;
|
@@ -310,15 +305,14 @@ static void setfunc(int i, VALUE *argv, gsl_function_fdf *F)
|
|
310
305
|
} else {
|
311
306
|
ary = (VALUE) F->params;
|
312
307
|
}
|
313
|
-
|
314
308
|
if (rb_obj_is_kind_of(argv[i], rb_cProc)) {
|
315
309
|
rb_ary_store(ary, i, argv[i]);
|
316
|
-
} else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
|
317
|
-
|
310
|
+
} else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
|
311
|
+
|| TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
|
318
312
|
rb_ary_store(ary, 3, argv[i]);
|
319
313
|
} else {
|
320
|
-
rb_raise(rb_eArgError,
|
321
|
-
|
314
|
+
rb_raise(rb_eArgError,
|
315
|
+
"wrong type argument (Proc, Array, GSL::Vector or a number)");
|
322
316
|
}
|
323
317
|
}
|
324
318
|
|
@@ -337,7 +331,7 @@ static VALUE rb_gsl_function_fdf_new(int argc, VALUE *argv, VALUE klass)
|
|
337
331
|
F->params = (void *) ary;
|
338
332
|
rb_ary_store(ary, 2, Qnil);
|
339
333
|
rb_ary_store(ary, 3, Qnil);
|
340
|
-
for (i = 0; i < argc; i++) setfunc(i, argv, F);
|
334
|
+
for (i = 0; (int) i < argc; i++) setfunc(i, argv, F);
|
341
335
|
return Data_Wrap_Struct(klass, gsl_function_fdf_mark, gsl_function_fdf_free, F);
|
342
336
|
}
|
343
337
|
|
@@ -360,7 +354,7 @@ static VALUE rb_gsl_function_fdf_set(int argc, VALUE *argv, VALUE obj)
|
|
360
354
|
ary = (VALUE) F->params;
|
361
355
|
rb_ary_store(ary, 2, Qnil);
|
362
356
|
rb_ary_store(ary, 3, Qnil);
|
363
|
-
for (i = 0; i < argc; i++) setfunc(i, argv, F);
|
357
|
+
for (i = 0; (int) i < argc; i++) setfunc(i, argv, F);
|
364
358
|
return obj;
|
365
359
|
}
|
366
360
|
|
@@ -427,7 +421,7 @@ static VALUE rb_gsl_function_fdf_set_params(int argc, VALUE *argv, VALUE obj)
|
|
427
421
|
rb_ary_store(ary, 3, argv[0]);
|
428
422
|
} else {
|
429
423
|
ary2 = rb_ary_new2(argc);
|
430
|
-
for (i = 0; i < argc; i++) rb_ary_store(ary2, i, argv[i]);
|
424
|
+
for (i = 0; (int) i < argc; i++) rb_ary_store(ary2, i, argv[i]);
|
431
425
|
rb_ary_store(ary, 3, ary2);
|
432
426
|
}
|
433
427
|
return obj;
|