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,18 +9,18 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "rb_gsl_sf.h"
|
12
|
+
#include "include/rb_gsl_sf.h"
|
13
13
|
|
14
14
|
static VALUE rb_gsl_sf_log(VALUE obj, VALUE x)
|
15
15
|
{
|
16
|
-
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
16
|
+
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
17
17
|
return rb_gsl_math_complex_eval(gsl_complex_log, x);
|
18
18
|
return rb_gsl_sf_eval1(gsl_sf_log, x);
|
19
19
|
}
|
20
20
|
|
21
21
|
static VALUE rb_gsl_sf_log10(VALUE obj, VALUE x)
|
22
22
|
{
|
23
|
-
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
23
|
+
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
24
24
|
return rb_gsl_math_complex_eval(gsl_complex_log10, x);
|
25
25
|
return rb_gsl_sf_eval1(log10, x);
|
26
26
|
}
|
@@ -93,7 +93,7 @@ static VALUE rb_gsl_sf_log_1plusx_mx_e(VALUE obj, VALUE x)
|
|
93
93
|
void Init_gsl_sf_log(VALUE module)
|
94
94
|
{
|
95
95
|
rb_define_module_function(module, "log", rb_gsl_sf_log, 1);
|
96
|
-
rb_define_module_function(module, "log10", rb_gsl_sf_log10, 1);
|
96
|
+
rb_define_module_function(module, "log10", rb_gsl_sf_log10, 1);
|
97
97
|
rb_define_module_function(module, "log_e", rb_gsl_sf_log_e, 1);
|
98
98
|
rb_define_module_function(module, "log_abs", rb_gsl_sf_log_abs, 1);
|
99
99
|
rb_define_module_function(module, "log_abs_e", rb_gsl_sf_log_abs_e, 1);
|
@@ -0,0 +1,235 @@
|
|
1
|
+
#include "include/rb_gsl.h"
|
2
|
+
|
3
|
+
static VALUE cWorkspace;
|
4
|
+
|
5
|
+
static VALUE rb_gsl_sf_mathieu_alloc(VALUE klass, VALUE n, VALUE q)
|
6
|
+
{
|
7
|
+
gsl_sf_mathieu_workspace *w;
|
8
|
+
w = gsl_sf_mathieu_alloc((size_t) FIX2INT(n), NUM2DBL(q));
|
9
|
+
return Data_Wrap_Struct(klass, 0, gsl_sf_mathieu_free, w);
|
10
|
+
}
|
11
|
+
|
12
|
+
static VALUE sf_mathieu_eval(VALUE order, VALUE qq,
|
13
|
+
int (*f)(int, double, gsl_sf_result*))
|
14
|
+
{
|
15
|
+
gsl_sf_result r;
|
16
|
+
(*f)(FIX2INT(order), NUM2DBL(qq), &r);
|
17
|
+
return rb_float_new(r.val);
|
18
|
+
}
|
19
|
+
|
20
|
+
static VALUE sf_mathieu_eval2(VALUE n1, VALUE n2, VALUE q, VALUE x,
|
21
|
+
int (*f)(int, int, double, double, gsl_sf_result*))
|
22
|
+
{
|
23
|
+
gsl_sf_result r;
|
24
|
+
(*f)(FIX2INT(n1),FIX2INT(n2), NUM2DBL(q), NUM2DBL(x), &r);
|
25
|
+
return rb_float_new(r.val);
|
26
|
+
}
|
27
|
+
|
28
|
+
static VALUE sf_mathieu_array_eval(int argc, VALUE *argv,
|
29
|
+
int (*f)(int, int, double, gsl_sf_mathieu_workspace*, double[]))
|
30
|
+
{
|
31
|
+
gsl_sf_mathieu_workspace *w;
|
32
|
+
gsl_vector *v;
|
33
|
+
int n1, n2;
|
34
|
+
double q;
|
35
|
+
switch (argc) {
|
36
|
+
case 4:
|
37
|
+
if (!rb_obj_is_kind_of(argv[3], cWorkspace)) {
|
38
|
+
rb_raise(rb_eTypeError, "Wrong argument type 3 (%s detected, %s expected)",
|
39
|
+
rb_class2name(CLASS_OF(argv[3])), rb_class2name(cWorkspace));
|
40
|
+
}
|
41
|
+
n1 = FIX2INT(argv[0]);
|
42
|
+
n2 = FIX2INT(argv[1]);
|
43
|
+
q = NUM2DBL(argv[2]);
|
44
|
+
Data_Get_Struct(argv[3], gsl_sf_mathieu_workspace, w);
|
45
|
+
break;
|
46
|
+
default:
|
47
|
+
rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 4)", argc);
|
48
|
+
}
|
49
|
+
v = gsl_vector_alloc(n2 - n1 + 1);
|
50
|
+
(*f)(n1, n2, q, w, v->data);
|
51
|
+
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
52
|
+
}
|
53
|
+
|
54
|
+
static VALUE sf_mathieu_array_eval2(int argc, VALUE *argv,
|
55
|
+
int (*f)(int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
|
56
|
+
{
|
57
|
+
gsl_sf_mathieu_workspace *w;
|
58
|
+
gsl_vector *v;
|
59
|
+
int n1, n2;
|
60
|
+
double q, x;
|
61
|
+
switch (argc) {
|
62
|
+
case 5:
|
63
|
+
if (!rb_obj_is_kind_of(argv[4], cWorkspace)) {
|
64
|
+
rb_raise(rb_eTypeError, "Wrong argument type 4 (%s detected, %s expected)",
|
65
|
+
rb_class2name(CLASS_OF(argv[4])), rb_class2name(cWorkspace));
|
66
|
+
}
|
67
|
+
n1 = FIX2INT(argv[0]);
|
68
|
+
n2 = FIX2INT(argv[1]);
|
69
|
+
q = NUM2DBL(argv[2]);
|
70
|
+
x = NUM2DBL(argv[3]);
|
71
|
+
Data_Get_Struct(argv[4], gsl_sf_mathieu_workspace, w);
|
72
|
+
break;
|
73
|
+
default:
|
74
|
+
rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 5)", argc);
|
75
|
+
}
|
76
|
+
v = gsl_vector_alloc(n2 - n1 + 1);
|
77
|
+
(*f)(n1, n2, q, x, w, v->data);
|
78
|
+
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
79
|
+
}
|
80
|
+
static VALUE sf_mathieu_array_eval3(int argc, VALUE *argv,
|
81
|
+
int (*f)(int, int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
|
82
|
+
{
|
83
|
+
gsl_sf_mathieu_workspace *w;
|
84
|
+
gsl_vector *v;
|
85
|
+
int n1, n2, n3;
|
86
|
+
double q, x;
|
87
|
+
switch (argc) {
|
88
|
+
case 6:
|
89
|
+
if (!rb_obj_is_kind_of(argv[5], cWorkspace)) {
|
90
|
+
rb_raise(rb_eTypeError, "Wrong argument type 5 (%s detected, %s expected)",
|
91
|
+
rb_class2name(CLASS_OF(argv[5])), rb_class2name(cWorkspace));
|
92
|
+
}
|
93
|
+
n1 = FIX2INT(argv[0]);
|
94
|
+
n2 = FIX2INT(argv[1]);
|
95
|
+
n3 = FIX2INT(argv[2]);
|
96
|
+
q = NUM2DBL(argv[3]);
|
97
|
+
x = NUM2DBL(argv[4]);
|
98
|
+
Data_Get_Struct(argv[5], gsl_sf_mathieu_workspace, w);
|
99
|
+
break;
|
100
|
+
default:
|
101
|
+
rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 6)", argc);
|
102
|
+
}
|
103
|
+
v = gsl_vector_alloc(n3 - n2 + 1);
|
104
|
+
(*f)(n1, n2, n3, q, x, w, v->data);
|
105
|
+
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
106
|
+
}
|
107
|
+
static VALUE sf_mathieu_eval_int_double2(VALUE order, VALUE qq, VALUE zz,
|
108
|
+
int (*f)(int, double, double, gsl_sf_result*))
|
109
|
+
{
|
110
|
+
gsl_sf_result r;
|
111
|
+
(*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), &r);
|
112
|
+
return rb_float_new(r.val);
|
113
|
+
}
|
114
|
+
static VALUE sf_mathieu_eval_e_int_double2(VALUE order, VALUE qq, VALUE zz,
|
115
|
+
int (*f)(int, double, double, gsl_sf_result*))
|
116
|
+
{
|
117
|
+
gsl_sf_result *r;
|
118
|
+
VALUE val;
|
119
|
+
val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
|
120
|
+
(*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), r);
|
121
|
+
return val;
|
122
|
+
}
|
123
|
+
|
124
|
+
static VALUE sf_mathieu_eval_e_int2_double2(VALUE n1, VALUE n2, VALUE qq, VALUE zz,
|
125
|
+
int (*f)(int, int, double, double, gsl_sf_result*))
|
126
|
+
{
|
127
|
+
gsl_sf_result *r;
|
128
|
+
VALUE val;
|
129
|
+
val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
|
130
|
+
(*f)(FIX2INT(n1), FIX2INT(n2), NUM2DBL(qq), NUM2DBL(zz), r);
|
131
|
+
return val;
|
132
|
+
}
|
133
|
+
/**********/
|
134
|
+
static VALUE rb_gsl_sf_mathieu_a_e(VALUE module, VALUE order, VALUE qq)
|
135
|
+
{
|
136
|
+
return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_a, order, qq);
|
137
|
+
}
|
138
|
+
static VALUE rb_gsl_sf_mathieu_a(VALUE module, VALUE order, VALUE qq)
|
139
|
+
{
|
140
|
+
return sf_mathieu_eval(order, qq, gsl_sf_mathieu_a);
|
141
|
+
}
|
142
|
+
static VALUE rb_gsl_sf_mathieu_a_array(VALUE module, int argc, VALUE *argv)
|
143
|
+
{
|
144
|
+
return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_a_array);
|
145
|
+
}
|
146
|
+
static VALUE rb_gsl_sf_mathieu_b_e(VALUE module, VALUE order, VALUE qq)
|
147
|
+
{
|
148
|
+
return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_b, order, qq);
|
149
|
+
}
|
150
|
+
static VALUE rb_gsl_sf_mathieu_b(VALUE module, VALUE order, VALUE qq)
|
151
|
+
{
|
152
|
+
return sf_mathieu_eval(order, qq, gsl_sf_mathieu_b);
|
153
|
+
}
|
154
|
+
static VALUE rb_gsl_sf_mathieu_b_array(VALUE module, int argc, VALUE *argv)
|
155
|
+
{
|
156
|
+
return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_b_array);
|
157
|
+
}
|
158
|
+
static VALUE rb_gsl_sf_mathieu_ce_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
|
159
|
+
{
|
160
|
+
return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
|
161
|
+
}
|
162
|
+
static VALUE rb_gsl_sf_mathieu_ce(VALUE module, VALUE order, VALUE qq, VALUE zz)
|
163
|
+
{
|
164
|
+
return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
|
165
|
+
}
|
166
|
+
static VALUE rb_gsl_sf_mathieu_ce_array(VALUE module, int argc, VALUE *argv)
|
167
|
+
{
|
168
|
+
return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_ce_array);
|
169
|
+
}
|
170
|
+
static VALUE rb_gsl_sf_mathieu_se_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
|
171
|
+
{
|
172
|
+
return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_se);
|
173
|
+
}
|
174
|
+
static VALUE rb_gsl_sf_mathieu_se(VALUE module, VALUE order, VALUE qq, VALUE zz)
|
175
|
+
{
|
176
|
+
return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_se);
|
177
|
+
}
|
178
|
+
static VALUE rb_gsl_sf_mathieu_se_array(VALUE module, int argc, VALUE *argv)
|
179
|
+
{
|
180
|
+
return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_se_array);
|
181
|
+
}
|
182
|
+
|
183
|
+
/*****/
|
184
|
+
static VALUE rb_gsl_sf_mathieu_Mc_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
|
185
|
+
{
|
186
|
+
return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Mc);
|
187
|
+
}
|
188
|
+
static VALUE rb_gsl_sf_mathieu_Mc(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
|
189
|
+
{
|
190
|
+
return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Mc);
|
191
|
+
}
|
192
|
+
static VALUE rb_gsl_sf_mathieu_Mc_array(VALUE module, int argc, VALUE *argv)
|
193
|
+
{
|
194
|
+
return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Mc_array);
|
195
|
+
}
|
196
|
+
static VALUE rb_gsl_sf_mathieu_Ms_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
|
197
|
+
{
|
198
|
+
return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Ms);
|
199
|
+
}
|
200
|
+
static VALUE rb_gsl_sf_mathieu_Ms(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
|
201
|
+
{
|
202
|
+
return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Ms);
|
203
|
+
}
|
204
|
+
static VALUE rb_gsl_sf_mathieu_Ms_array(VALUE module, int argc, VALUE *argv)
|
205
|
+
{
|
206
|
+
return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Ms_array);
|
207
|
+
}
|
208
|
+
/*****/
|
209
|
+
void Init_sf_mathieu(VALUE module)
|
210
|
+
{
|
211
|
+
VALUE mMathieu;
|
212
|
+
|
213
|
+
mMathieu = rb_define_module_under(module, "Mathieu");
|
214
|
+
cWorkspace = rb_define_class_under(mMathieu, "Workspace", cGSL_Object);
|
215
|
+
rb_define_singleton_method(cWorkspace, "alloc", rb_gsl_sf_mathieu_alloc, 2);
|
216
|
+
|
217
|
+
rb_define_module_function(module, "mathieu_a", rb_gsl_sf_mathieu_a, 2);
|
218
|
+
rb_define_module_function(module, "mathieu_a_e", rb_gsl_sf_mathieu_a_e, 2);
|
219
|
+
rb_define_module_function(module, "mathieu_a_array", rb_gsl_sf_mathieu_a_array, -1);
|
220
|
+
rb_define_module_function(module, "mathieu_b", rb_gsl_sf_mathieu_b, 2);
|
221
|
+
rb_define_module_function(module, "mathieu_b_e", rb_gsl_sf_mathieu_b_e, 2);
|
222
|
+
rb_define_module_function(module, "mathieu_b_array", rb_gsl_sf_mathieu_b_array, -1);
|
223
|
+
rb_define_module_function(module, "mathieu_ce", rb_gsl_sf_mathieu_ce, 3);
|
224
|
+
rb_define_module_function(module, "mathieu_ce_e", rb_gsl_sf_mathieu_ce_e, 3);
|
225
|
+
rb_define_module_function(module, "mathieu_ce_array", rb_gsl_sf_mathieu_ce_array, -1);
|
226
|
+
rb_define_module_function(module, "mathieu_se", rb_gsl_sf_mathieu_se, 3);
|
227
|
+
rb_define_module_function(module, "mathieu_se_e", rb_gsl_sf_mathieu_se_e, 3);
|
228
|
+
rb_define_module_function(module, "mathieu_se_array", rb_gsl_sf_mathieu_se_array, -1);
|
229
|
+
rb_define_module_function(module, "mathieu_Mc", rb_gsl_sf_mathieu_Mc, 4);
|
230
|
+
rb_define_module_function(module, "mathieu_Mc_e", rb_gsl_sf_mathieu_Mc_e, 4);
|
231
|
+
rb_define_module_function(module, "mathieu_Mc_array", rb_gsl_sf_mathieu_Mc_array, -1);
|
232
|
+
rb_define_module_function(module, "mathieu_Ms", rb_gsl_sf_mathieu_Ms, 4);
|
233
|
+
rb_define_module_function(module, "mathieu_Ms_e", rb_gsl_sf_mathieu_Ms_e, 4);
|
234
|
+
rb_define_module_function(module, "mathieu_Ms_array", rb_gsl_sf_mathieu_Ms_array, -1);
|
235
|
+
}
|
@@ -9,7 +9,7 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "rb_gsl_sf.h"
|
12
|
+
#include "include/rb_gsl_sf.h"
|
13
13
|
|
14
14
|
static VALUE rb_gsl_sf_psi_int(VALUE obj, VALUE n)
|
15
15
|
{
|
@@ -31,19 +31,15 @@ static VALUE rb_gsl_sf_psi_e(VALUE obj, VALUE x)
|
|
31
31
|
return rb_gsl_sf_eval_e(gsl_sf_psi_e, x);
|
32
32
|
}
|
33
33
|
|
34
|
-
#ifdef GSL_1_6_LATER
|
35
34
|
static VALUE rb_gsl_sf_psi_1(VALUE obj, VALUE x)
|
36
35
|
{
|
37
36
|
return rb_gsl_sf_eval1(gsl_sf_psi_1, x);
|
38
37
|
}
|
39
|
-
#endif
|
40
38
|
|
41
|
-
#ifdef GSL_1_4_9_LATER
|
42
39
|
static VALUE rb_gsl_sf_psi_1_e(VALUE obj, VALUE x)
|
43
40
|
{
|
44
41
|
return rb_gsl_sf_eval_e(gsl_sf_psi_1_e, x);
|
45
42
|
}
|
46
|
-
#endif
|
47
43
|
|
48
44
|
static VALUE rb_gsl_sf_psi_1piy(VALUE obj, VALUE x)
|
49
45
|
{
|
@@ -88,11 +84,6 @@ void Init_gsl_sf_psi(VALUE module)
|
|
88
84
|
|
89
85
|
rb_define_module_function(module, "psi", rb_gsl_sf_psi, 1);
|
90
86
|
rb_define_module_function(module, "psi_e", rb_gsl_sf_psi_e, 1);
|
91
|
-
|
92
|
-
|
93
|
-
rb_define_module_function(module, "psi_1", rb_gsl_sf_psi_1, 1);
|
94
|
-
#endif
|
95
|
-
#ifdef GSL_1_4_9_LATER
|
96
|
-
rb_define_module_function(module, "psi_1_e", rb_gsl_sf_psi_1_e, 1);
|
97
|
-
#endif
|
87
|
+
rb_define_module_function(module, "psi_1", rb_gsl_sf_psi_1, 1);
|
88
|
+
rb_define_module_function(module, "psi_1_e", rb_gsl_sf_psi_1_e, 1);
|
98
89
|
}
|
@@ -9,11 +9,11 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "rb_gsl_sf.h"
|
12
|
+
#include "include/rb_gsl_sf.h"
|
13
13
|
|
14
14
|
static VALUE rb_gsl_sf_sin(VALUE obj, VALUE x)
|
15
15
|
{
|
16
|
-
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
16
|
+
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
17
17
|
return rb_gsl_math_complex_eval(gsl_complex_sin, x);
|
18
18
|
return rb_gsl_sf_eval1(gsl_sf_sin, x);
|
19
19
|
}
|
@@ -25,7 +25,7 @@ static VALUE rb_gsl_sf_sin_e(VALUE obj, VALUE x)
|
|
25
25
|
|
26
26
|
static VALUE rb_gsl_sf_cos(VALUE obj, VALUE x)
|
27
27
|
{
|
28
|
-
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
28
|
+
if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
|
29
29
|
return rb_gsl_math_complex_eval(gsl_complex_cos, x);
|
30
30
|
return rb_gsl_sf_eval1(gsl_sf_cos, x);
|
31
31
|
}
|
@@ -57,7 +57,7 @@ static VALUE rb_gsl_sf_sinc_e(VALUE obj, VALUE x)
|
|
57
57
|
}
|
58
58
|
|
59
59
|
static VALUE rb_gsl_sf_complex_XXX_e(int argc, VALUE *argv, VALUE obj,
|
60
|
-
|
60
|
+
int (*f)(double, double, gsl_sf_result*, gsl_sf_result*))
|
61
61
|
{
|
62
62
|
gsl_sf_result *r1, *r2;
|
63
63
|
gsl_complex *z;
|
@@ -9,7 +9,7 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "rb_gsl_sf.h"
|
12
|
+
#include "include/rb_gsl_sf.h"
|
13
13
|
|
14
14
|
static VALUE rb_gsl_sf_zeta_int(VALUE obj, VALUE n)
|
15
15
|
{
|
@@ -68,7 +68,6 @@ static VALUE rb_gsl_sf_eta_e(VALUE obj, VALUE x)
|
|
68
68
|
return rb_gsl_sf_eval_e(gsl_sf_eta_e, x);
|
69
69
|
}
|
70
70
|
|
71
|
-
#ifdef GSL_1_4_9_LATER
|
72
71
|
static VALUE rb_gsl_sf_zetam1_int(VALUE obj, VALUE n)
|
73
72
|
{
|
74
73
|
VALUE nn;
|
@@ -94,7 +93,6 @@ static VALUE rb_gsl_sf_zetam1_e(VALUE obj, VALUE x)
|
|
94
93
|
{
|
95
94
|
return rb_gsl_sf_eval_e(gsl_sf_zetam1_e, x);
|
96
95
|
}
|
97
|
-
#endif
|
98
96
|
|
99
97
|
void Init_gsl_sf_zeta(VALUE module)
|
100
98
|
{
|
@@ -110,10 +108,8 @@ void Init_gsl_sf_zeta(VALUE module)
|
|
110
108
|
rb_define_module_function(module, "eta", rb_gsl_sf_eta, 1);
|
111
109
|
rb_define_module_function(module, "eta_e", rb_gsl_sf_eta_e, 1);
|
112
110
|
|
113
|
-
#ifdef GSL_1_4_9_LATER
|
114
111
|
rb_define_module_function(module, "zetam1_int", rb_gsl_sf_zetam1_int, 1);
|
115
112
|
rb_define_module_function(module, "zetam1_int_e", rb_gsl_sf_zetam1_int_e, 1);
|
116
113
|
rb_define_module_function(module, "zetam1", rb_gsl_sf_zetam1, 1);
|
117
114
|
rb_define_module_function(module, "zetam1_e", rb_gsl_sf_zetam1_e, 1);
|
118
|
-
#endif
|
119
115
|
}
|
@@ -9,51 +9,50 @@
|
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
11
|
|
12
|
-
#include "
|
13
|
-
#include "rb_gsl_fft.h"
|
12
|
+
#include "include/rb_gsl_fft.h"
|
14
13
|
|
15
14
|
enum FFT_CONV_CORR {
|
16
15
|
RB_GSL_FFT_CONVOLVE = 0,
|
17
16
|
RB_GSL_FFT_CORRELATE = 1,
|
18
17
|
RB_GSL_FFT_REAL = 2,
|
19
18
|
RB_GSL_FFT_HALFCOMPLEX = 3,
|
20
|
-
RB_GSL_FFT_DECONVOLVE = 4,
|
19
|
+
RB_GSL_FFT_DECONVOLVE = 4,
|
21
20
|
};
|
22
21
|
|
23
22
|
#ifndef WAVETABLE_P
|
24
|
-
#define WAVETABLE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable)?1:0)
|
23
|
+
#define WAVETABLE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable) ? 1 : 0)
|
25
24
|
#endif
|
26
25
|
|
27
26
|
#ifndef CHECK_WAVETABLE
|
28
|
-
#define CHECK_WAVETABLE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable))\
|
27
|
+
#define CHECK_WAVETABLE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable)) \
|
29
28
|
rb_raise(rb_eTypeError, "wrong argument type (FFT::HalfComplex::Wavetable expected)");
|
30
29
|
#endif
|
31
30
|
|
32
31
|
#ifndef WORKSPACE_P
|
33
|
-
#define WORKSPACE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_real_workspace)?1:0)
|
32
|
+
#define WORKSPACE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_real_workspace) ? 1 : 0)
|
34
33
|
#endif
|
35
34
|
|
36
35
|
#ifndef CHECK_WORKSPACE
|
37
|
-
#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_real_workspace))\
|
36
|
+
#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_real_workspace)) \
|
38
37
|
rb_raise(rb_eTypeError, "wrong argument type (FFT::Real::Workspace expected)");
|
39
38
|
#endif
|
40
39
|
|
41
40
|
static void complex_mul(double re1, double im1, double re2, double im2,
|
42
|
-
|
41
|
+
double *re, double *im)
|
43
42
|
{
|
44
43
|
*re = re1*re2 - im1*im2;
|
45
44
|
*im = re1*im2 + im1*re2;
|
46
45
|
}
|
47
46
|
|
48
47
|
static void complex_conj_mul(double re1, double im1, double re2, double im2,
|
49
|
-
|
48
|
+
double *re, double *im)
|
50
49
|
{
|
51
50
|
*re = re1*re2 + im1*im2;
|
52
51
|
*im = -re1*im2 + im1*re2;
|
53
52
|
}
|
54
53
|
|
55
54
|
static void complex_div(double re1, double im1, double re2, double im2,
|
56
|
-
|
55
|
+
double *re, double *im)
|
57
56
|
{
|
58
57
|
double factor = re2*re2 + im2*im2;
|
59
58
|
complex_conj_mul(re1, im1, re2, im2, re, im);
|
@@ -62,55 +61,50 @@ static void complex_div(double re1, double im1, double re2, double im2,
|
|
62
61
|
}
|
63
62
|
|
64
63
|
/* data1, data2: FFTed data */
|
65
|
-
static void rbgsl_calc_conv_corr_c(const double *data1, const double *data2,
|
66
|
-
|
67
|
-
|
68
|
-
|
64
|
+
static void rbgsl_calc_conv_corr_c(const double *data1, const double *data2,
|
65
|
+
double *data3, size_t size,
|
66
|
+
gsl_fft_halfcomplex_wavetable *table,
|
67
|
+
gsl_fft_real_workspace *space, enum FFT_CONV_CORR calcflag)
|
69
68
|
{
|
70
69
|
size_t i;
|
71
70
|
double re1, re2, im1, im2;
|
72
71
|
void (*complex_cal)(double, double, double, double, double*, double*);
|
73
|
-
|
72
|
+
|
74
73
|
switch (calcflag) {
|
75
74
|
case RB_GSL_FFT_CONVOLVE:
|
76
75
|
complex_cal = complex_mul;
|
77
76
|
data3[0] = data1[0]*data2[0];
|
78
|
-
data3[size-1] = data1[size-1]*data2[size-1];
|
77
|
+
data3[size-1] = data1[size-1]*data2[size-1];
|
79
78
|
break;
|
80
|
-
case RB_GSL_FFT_CORRELATE:
|
81
|
-
data3[0] = data1[0]*data2[0];
|
82
|
-
data3[size-1] = data1[size-1]*data2[size-1];
|
79
|
+
case RB_GSL_FFT_CORRELATE:
|
80
|
+
data3[0] = data1[0]*data2[0];
|
81
|
+
data3[size-1] = data1[size-1]*data2[size-1];
|
83
82
|
complex_cal = complex_conj_mul;
|
84
83
|
break;
|
85
84
|
case RB_GSL_FFT_DECONVOLVE:
|
86
85
|
complex_cal = complex_div;
|
87
86
|
data3[0] = data1[0]/data2[0];
|
88
|
-
data3[size-1] = data1[size-1]/data2[size-1];
|
87
|
+
data3[size-1] = data1[size-1]/data2[size-1];
|
89
88
|
break;
|
90
89
|
default:
|
91
90
|
rb_raise(rb_eArgError, "Wrong flag.");
|
92
91
|
break;
|
93
92
|
}
|
94
|
-
|
95
|
-
for (i = 1; i < size-1; i+=2) {
|
93
|
+
|
94
|
+
for (i = 1; i < size-1; i += 2) {
|
96
95
|
re1 = data1[i]; im1 = data1[i+1];
|
97
96
|
re2 = data2[i]; im2 = data2[i+1];
|
98
97
|
(*complex_cal)(re1, im1, re2, im2, &data3[i], &data3[i+1]);
|
99
98
|
}
|
100
|
-
|
101
99
|
}
|
102
100
|
|
103
101
|
static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
104
|
-
|
105
|
-
|
102
|
+
enum FFT_CONV_CORR flag1,
|
103
|
+
enum FFT_CONV_CORR flag2)
|
106
104
|
{
|
107
|
-
double *data1, *data2, *data3;
|
105
|
+
double *data1, *data2, *data3 = NULL;
|
108
106
|
size_t stride1, stride2, size1, size2;
|
109
|
-
#ifdef HAVE_NARRAY_H
|
110
|
-
int naflag1, naflag2, shape;
|
111
|
-
#else
|
112
107
|
int naflag1, naflag2;
|
113
|
-
#endif
|
114
108
|
gsl_vector *v = NULL;
|
115
109
|
gsl_fft_halfcomplex_wavetable *table = NULL;
|
116
110
|
gsl_fft_real_wavetable *rtable = NULL;
|
@@ -118,7 +112,7 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
118
112
|
int flagt = 0, flagw = 0;
|
119
113
|
// size_t i;
|
120
114
|
gsl_vector *vtmp1 = NULL, *vtmp2 = NULL;
|
121
|
-
VALUE ary;
|
115
|
+
VALUE ary = Qnil;
|
122
116
|
switch (argc) {
|
123
117
|
case 3:
|
124
118
|
data1 = get_ptr_double3(obj, &size1, &stride1, &naflag1);
|
@@ -140,10 +134,10 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
140
134
|
table = gsl_fft_halfcomplex_wavetable_alloc(size1);
|
141
135
|
flagt = 1;
|
142
136
|
} else {
|
143
|
-
rb_raise(rb_eTypeError,
|
144
|
-
|
145
|
-
|
146
|
-
|
137
|
+
rb_raise(rb_eTypeError,
|
138
|
+
"wrong argument type %s "
|
139
|
+
"(FFT::HalfComplex::Wavetable or FFT::Real::Workspace expected)",
|
140
|
+
rb_class2name(CLASS_OF(argv[2])));
|
147
141
|
}
|
148
142
|
break;
|
149
143
|
case 1:
|
@@ -165,7 +159,7 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
165
159
|
case RB_GSL_FFT_REAL:
|
166
160
|
ary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
167
161
|
break;
|
168
|
-
default:
|
162
|
+
default:
|
169
163
|
ary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
170
164
|
break;
|
171
165
|
}
|
@@ -173,9 +167,11 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
173
167
|
break;
|
174
168
|
case 1:
|
175
169
|
#ifdef HAVE_NARRAY_H
|
176
|
-
|
177
|
-
|
178
|
-
|
170
|
+
{
|
171
|
+
int shape = (int) size1;
|
172
|
+
ary = na_make_object(NA_DFLOAT, 1, &shape, cNArray);
|
173
|
+
data3 = NA_PTR_TYPE(ary, double*);
|
174
|
+
}
|
179
175
|
#endif
|
180
176
|
break;
|
181
177
|
default:
|
@@ -191,10 +187,10 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
191
187
|
data2 = vtmp2->data;
|
192
188
|
rtable = gsl_fft_real_wavetable_alloc(size1);
|
193
189
|
if (size1 == space->n) {
|
194
|
-
gsl_fft_real_transform(data1, stride1, size1, rtable, space);
|
190
|
+
gsl_fft_real_transform(data1, stride1, size1, rtable, space);
|
195
191
|
} else {
|
196
192
|
space2 = gsl_fft_real_workspace_alloc(size1);
|
197
|
-
gsl_fft_real_transform(data1, stride1, size1, rtable, space2);
|
193
|
+
gsl_fft_real_transform(data1, stride1, size1, rtable, space2);
|
198
194
|
/* no freeing space2 here */
|
199
195
|
}
|
200
196
|
if (size1 != size2) {
|
@@ -202,14 +198,14 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
202
198
|
rtable = gsl_fft_real_wavetable_alloc(size2);
|
203
199
|
}
|
204
200
|
if (size2 == space->n) {
|
205
|
-
gsl_fft_real_transform(data2, stride2, size2, rtable, space);
|
201
|
+
gsl_fft_real_transform(data2, stride2, size2, rtable, space);
|
206
202
|
} else if (size2 == size1) {
|
207
|
-
gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
|
203
|
+
gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
|
208
204
|
gsl_fft_real_workspace_free(space2);
|
209
205
|
} else {
|
210
206
|
if (space2) gsl_fft_real_workspace_free(space2);
|
211
207
|
space2 = gsl_fft_real_workspace_alloc(size2);
|
212
|
-
gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
|
208
|
+
gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
|
213
209
|
gsl_fft_real_workspace_free(space2);
|
214
210
|
}
|
215
211
|
gsl_fft_real_wavetable_free(rtable);
|
@@ -223,14 +219,13 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
223
219
|
/* not occur */
|
224
220
|
break;
|
225
221
|
}
|
226
|
-
|
222
|
+
|
227
223
|
rbgsl_calc_conv_corr_c(data1, data2, data3, size1, table, space, flag2);
|
228
224
|
|
229
225
|
if (flag1 == RB_GSL_FFT_REAL) {
|
230
226
|
gsl_fft_halfcomplex_inverse(data3, 1, size1, table, space);
|
231
227
|
// for (i = 0; i < size1; i++) data3[i] /= size1;
|
232
228
|
}
|
233
|
-
|
234
229
|
if (flagt == 1) gsl_fft_halfcomplex_wavetable_free(table);
|
235
230
|
if (flagw == 1) gsl_fft_real_workspace_free(space);
|
236
231
|
if (vtmp1) gsl_vector_free(vtmp1);
|
@@ -241,61 +236,61 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
|
|
241
236
|
/* GSL::Vector#convolve */
|
242
237
|
static VALUE rb_gsl_fft_real_convolve(int argc, VALUE *argv, VALUE obj)
|
243
238
|
{
|
244
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
245
|
-
|
246
|
-
|
239
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
240
|
+
RB_GSL_FFT_REAL,
|
241
|
+
RB_GSL_FFT_CONVOLVE);
|
247
242
|
}
|
248
243
|
/* GSL::Vector#deconvolve */
|
249
244
|
static VALUE rb_gsl_fft_real_deconvolve(int argc, VALUE *argv, VALUE obj)
|
250
245
|
{
|
251
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
252
|
-
|
253
|
-
|
246
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
247
|
+
RB_GSL_FFT_REAL,
|
248
|
+
RB_GSL_FFT_DECONVOLVE);
|
254
249
|
}
|
255
250
|
|
256
251
|
/* GSL::Vector#correlate */
|
257
252
|
static VALUE rb_gsl_fft_real_correlate(int argc, VALUE *argv, VALUE obj)
|
258
253
|
{
|
259
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
260
|
-
|
261
|
-
|
254
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
255
|
+
RB_GSL_FFT_REAL,
|
256
|
+
RB_GSL_FFT_CORRELATE);
|
262
257
|
}
|
263
258
|
|
264
259
|
/* GSL::Vector#halfcomplex_convolve */
|
265
260
|
static VALUE rb_gsl_fft_halfcomplex_convolve(int argc, VALUE *argv, VALUE obj)
|
266
261
|
{
|
267
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
268
|
-
|
269
|
-
|
262
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
263
|
+
RB_GSL_FFT_HALFCOMPLEX,
|
264
|
+
RB_GSL_FFT_CONVOLVE);
|
270
265
|
}
|
271
266
|
/* GSL::Vector#halfcomplex_deconvolve */
|
272
267
|
static VALUE rb_gsl_fft_halfcomplex_deconvolve(int argc, VALUE *argv, VALUE obj)
|
273
268
|
{
|
274
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
275
|
-
|
276
|
-
|
269
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
270
|
+
RB_GSL_FFT_HALFCOMPLEX,
|
271
|
+
RB_GSL_FFT_DECONVOLVE);
|
277
272
|
}
|
278
273
|
/* GSL::Vector#halfcomplex_correlate */
|
279
274
|
static VALUE rb_gsl_fft_halfcomplex_correlate(int argc, VALUE *argv, VALUE obj)
|
280
275
|
{
|
281
|
-
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
282
|
-
|
283
|
-
|
276
|
+
return rb_gsl_fft_conv_corr(argc, argv, obj,
|
277
|
+
RB_GSL_FFT_HALFCOMPLEX,
|
278
|
+
RB_GSL_FFT_CORRELATE);
|
284
279
|
}
|
285
280
|
|
286
281
|
void Init_gsl_signal(VALUE module)
|
287
282
|
{
|
288
283
|
rb_define_method(cgsl_vector, "real_convolve", rb_gsl_fft_real_convolve, -1);
|
289
|
-
rb_define_method(cgsl_vector, "real_deconvolve", rb_gsl_fft_real_deconvolve, -1);
|
290
|
-
rb_define_method(cgsl_vector, "real_correlate", rb_gsl_fft_real_correlate, -1);
|
284
|
+
rb_define_method(cgsl_vector, "real_deconvolve", rb_gsl_fft_real_deconvolve, -1);
|
285
|
+
rb_define_method(cgsl_vector, "real_correlate", rb_gsl_fft_real_correlate, -1);
|
291
286
|
|
292
287
|
rb_define_alias(cgsl_vector, "convolve", "real_convolve");
|
293
288
|
rb_define_alias(cgsl_vector, "deconvolve", "real_deconvolve");
|
294
289
|
rb_define_alias(cgsl_vector, "correlate", "real_correlate");
|
295
290
|
|
296
291
|
rb_define_method(cgsl_vector, "halfcomplex_convolve", rb_gsl_fft_halfcomplex_convolve, -1);
|
297
|
-
rb_define_method(cgsl_vector, "halfcomplex_deconvolve", rb_gsl_fft_halfcomplex_deconvolve, -1);
|
298
|
-
rb_define_method(cgsl_vector, "halfcomplex_correlate", rb_gsl_fft_halfcomplex_correlate, -1);
|
292
|
+
rb_define_method(cgsl_vector, "halfcomplex_deconvolve", rb_gsl_fft_halfcomplex_deconvolve, -1);
|
293
|
+
rb_define_method(cgsl_vector, "halfcomplex_correlate", rb_gsl_fft_halfcomplex_correlate, -1);
|
299
294
|
|
300
295
|
rb_define_alias(cgsl_vector, "hc_convolve", "halfcomplex_convolve");
|
301
296
|
rb_define_alias(cgsl_vector, "hc_deconvolve", "halfcomplex_deconvolve");
|