rb-gsl 1.16.0.5 → 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 +4 -4
- data/rb-gsl.gemspec +5 -10
- metadata +10 -713
- data/.gitignore +0 -12
- data/.travis.yml +0 -24
- data/AUTHORS +0 -12
- data/COPYING +0 -341
- data/ChangeLog +0 -621
- data/Gemfile +0 -4
- data/README.md +0 -77
- data/Rakefile +0 -20
- data/THANKS +0 -17
- data/examples/alf/alf.gp +0 -15
- data/examples/alf/alf.rb +0 -32
- data/examples/blas/blas.rb +0 -13
- data/examples/blas/dnrm2.rb +0 -16
- data/examples/blas/level1.rb +0 -81
- data/examples/blas/level2.rb +0 -11
- data/examples/blas/level3.rb +0 -12
- data/examples/bspline.rb +0 -57
- data/examples/cdf.rb +0 -16
- data/examples/cheb.rb +0 -21
- data/examples/combination.rb +0 -23
- data/examples/complex/RC-lpf.rb +0 -47
- data/examples/complex/add.rb +0 -36
- data/examples/complex/coerce.rb +0 -14
- data/examples/complex/complex.rb +0 -25
- data/examples/complex/fpmi.rb +0 -70
- data/examples/complex/functions.rb +0 -77
- data/examples/complex/michelson.rb +0 -36
- data/examples/complex/mul.rb +0 -28
- data/examples/complex/oscillator.rb +0 -17
- data/examples/complex/set.rb +0 -37
- data/examples/const/physconst.rb +0 -151
- data/examples/const/travel.rb +0 -45
- data/examples/deriv/demo.rb +0 -13
- data/examples/deriv/deriv.rb +0 -36
- data/examples/deriv/diff.rb +0 -35
- data/examples/dht.rb +0 -42
- data/examples/dirac.rb +0 -56
- data/examples/eigen/eigen.rb +0 -34
- data/examples/eigen/herm.rb +0 -22
- data/examples/eigen/narray.rb +0 -9
- data/examples/eigen/nonsymm.rb +0 -37
- data/examples/eigen/nonsymmv.rb +0 -43
- data/examples/eigen/qhoscillator.gp +0 -35
- data/examples/eigen/qhoscillator.rb +0 -90
- data/examples/eigen/vander.rb +0 -41
- data/examples/fft/fft.rb +0 -17
- data/examples/fft/fft2.rb +0 -17
- data/examples/fft/forward.rb +0 -25
- data/examples/fft/forward2.rb +0 -26
- data/examples/fft/radix2.rb +0 -18
- data/examples/fft/real-halfcomplex.rb +0 -33
- data/examples/fft/real-halfcomplex2.rb +0 -30
- data/examples/fft/realradix2.rb +0 -19
- data/examples/fft/sunspot.dat +0 -256
- data/examples/fft/sunspot.rb +0 -16
- data/examples/fit/expdata.dat +0 -20
- data/examples/fit/expfit.rb +0 -31
- data/examples/fit/gaussfit.rb +0 -29
- data/examples/fit/gaussian_2peaks.rb +0 -34
- data/examples/fit/hillfit.rb +0 -40
- data/examples/fit/lognormal.rb +0 -26
- data/examples/fit/lorentzfit.rb +0 -22
- data/examples/fit/multifit.rb +0 -72
- data/examples/fit/ndlinear.rb +0 -133
- data/examples/fit/nonlinearfit.rb +0 -89
- data/examples/fit/plot.gp +0 -36
- data/examples/fit/polyfit.rb +0 -9
- data/examples/fit/powerfit.rb +0 -21
- data/examples/fit/sigmoidfit.rb +0 -40
- data/examples/fit/sinfit.rb +0 -22
- data/examples/fit/wlinear.rb +0 -46
- data/examples/fresnel.rb +0 -11
- data/examples/function/function.rb +0 -36
- data/examples/function/log.rb +0 -7
- data/examples/function/min.rb +0 -33
- data/examples/function/sin.rb +0 -10
- data/examples/function/synchrotron.rb +0 -18
- data/examples/gallery/butterfly.rb +0 -7
- data/examples/gallery/cayley.rb +0 -12
- data/examples/gallery/cornu.rb +0 -23
- data/examples/gallery/eight.rb +0 -11
- data/examples/gallery/koch.rb +0 -40
- data/examples/gallery/lemniscate.rb +0 -11
- data/examples/gallery/polar.rb +0 -11
- data/examples/gallery/rgplot/cossin.rb +0 -35
- data/examples/gallery/rgplot/rgplot.replaced +0 -0
- data/examples/gallery/rgplot/roesller.rb +0 -55
- data/examples/gallery/roesller.rb +0 -39
- data/examples/gallery/scarabaeus.rb +0 -14
- data/examples/histogram/cauchy.rb +0 -27
- data/examples/histogram/cauchy.sh +0 -2
- data/examples/histogram/exponential.rb +0 -19
- data/examples/histogram/gauss.rb +0 -16
- data/examples/histogram/gsl-histogram.rb +0 -40
- data/examples/histogram/histo2d.rb +0 -31
- data/examples/histogram/histo3d.rb +0 -34
- data/examples/histogram/histogram-pdf.rb +0 -27
- data/examples/histogram/histogram.rb +0 -26
- data/examples/histogram/integral.rb +0 -28
- data/examples/histogram/poisson.rb +0 -27
- data/examples/histogram/power.rb +0 -25
- data/examples/histogram/rebin.rb +0 -17
- data/examples/histogram/smp.dat +0 -5
- data/examples/histogram/xexp.rb +0 -21
- data/examples/integration/ahmed.rb +0 -21
- data/examples/integration/cosmology.rb +0 -75
- data/examples/integration/friedmann.gp +0 -16
- data/examples/integration/friedmann.rb +0 -35
- data/examples/integration/gamma-zeta.rb +0 -35
- data/examples/integration/integration.rb +0 -22
- data/examples/integration/qag.rb +0 -8
- data/examples/integration/qag2.rb +0 -14
- data/examples/integration/qag3.rb +0 -8
- data/examples/integration/qagi.rb +0 -28
- data/examples/integration/qagi2.rb +0 -49
- data/examples/integration/qagiu.rb +0 -29
- data/examples/integration/qagp.rb +0 -20
- data/examples/integration/qags.rb +0 -14
- data/examples/integration/qawc.rb +0 -18
- data/examples/integration/qawf.rb +0 -41
- data/examples/integration/qawo.rb +0 -29
- data/examples/integration/qaws.rb +0 -30
- data/examples/integration/qng.rb +0 -17
- data/examples/interp/demo.gp +0 -20
- data/examples/interp/demo.rb +0 -45
- data/examples/interp/interp.rb +0 -37
- data/examples/interp/points +0 -10
- data/examples/interp/spline.rb +0 -20
- data/examples/jacobi/deriv.rb +0 -40
- data/examples/jacobi/integrate.rb +0 -34
- data/examples/jacobi/interp.rb +0 -43
- data/examples/jacobi/jacobi.rb +0 -11
- data/examples/linalg/HH.rb +0 -15
- data/examples/linalg/HH_narray.rb +0 -13
- data/examples/linalg/LQ_solve.rb +0 -73
- data/examples/linalg/LU.rb +0 -84
- data/examples/linalg/LU2.rb +0 -31
- data/examples/linalg/LU_narray.rb +0 -24
- data/examples/linalg/PTLQ.rb +0 -47
- data/examples/linalg/QR.rb +0 -18
- data/examples/linalg/QRPT.rb +0 -47
- data/examples/linalg/QR_solve.rb +0 -78
- data/examples/linalg/QR_solve_narray.rb +0 -13
- data/examples/linalg/SV.rb +0 -16
- data/examples/linalg/SV_narray.rb +0 -12
- data/examples/linalg/SV_solve.rb +0 -49
- data/examples/linalg/chol.rb +0 -29
- data/examples/linalg/chol_narray.rb +0 -15
- data/examples/linalg/complex.rb +0 -57
- data/examples/linalg/invert_narray.rb +0 -10
- data/examples/math/const.rb +0 -67
- data/examples/math/elementary.rb +0 -35
- data/examples/math/functions.rb +0 -41
- data/examples/math/inf_nan.rb +0 -34
- data/examples/math/minmax.rb +0 -22
- data/examples/math/power.rb +0 -18
- data/examples/math/test.rb +0 -31
- data/examples/matrix/a.dat +0 -0
- data/examples/matrix/add.rb +0 -45
- data/examples/matrix/b.dat +0 -4
- data/examples/matrix/cat.rb +0 -31
- data/examples/matrix/colvectors.rb +0 -24
- data/examples/matrix/complex.rb +0 -41
- data/examples/matrix/det.rb +0 -29
- data/examples/matrix/diagonal.rb +0 -23
- data/examples/matrix/get_all.rb +0 -159
- data/examples/matrix/hilbert.rb +0 -31
- data/examples/matrix/iterator.rb +0 -19
- data/examples/matrix/matrix.rb +0 -57
- data/examples/matrix/minmax.rb +0 -53
- data/examples/matrix/mul.rb +0 -39
- data/examples/matrix/rand.rb +0 -20
- data/examples/matrix/read.rb +0 -29
- data/examples/matrix/rowcol.rb +0 -47
- data/examples/matrix/set.rb +0 -41
- data/examples/matrix/set_all.rb +0 -100
- data/examples/matrix/view.rb +0 -32
- data/examples/matrix/view_all.rb +0 -148
- data/examples/matrix/write.rb +0 -23
- data/examples/min.rb +0 -29
- data/examples/monte/miser.rb +0 -47
- data/examples/monte/monte.rb +0 -47
- data/examples/monte/plain.rb +0 -47
- data/examples/monte/vegas.rb +0 -46
- data/examples/multimin/bundle.rb +0 -66
- data/examples/multimin/cqp.rb +0 -109
- data/examples/multimin/fdfminimizer.rb +0 -40
- data/examples/multimin/fminimizer.rb +0 -41
- data/examples/multiroot/demo.rb +0 -36
- data/examples/multiroot/fdfsolver.rb +0 -50
- data/examples/multiroot/fsolver.rb +0 -33
- data/examples/multiroot/fsolver2.rb +0 -32
- data/examples/multiroot/fsolver3.rb +0 -26
- data/examples/narray/histogram.rb +0 -14
- data/examples/narray/mandel.rb +0 -27
- data/examples/narray/narray.rb +0 -28
- data/examples/narray/narray2.rb +0 -44
- data/examples/narray/sf.rb +0 -26
- data/examples/ntuple/create.rb +0 -17
- data/examples/ntuple/project.rb +0 -31
- data/examples/odeiv/binarysystem.gp +0 -23
- data/examples/odeiv/binarysystem.rb +0 -104
- data/examples/odeiv/demo.gp +0 -24
- data/examples/odeiv/demo.rb +0 -69
- data/examples/odeiv/demo2.gp +0 -26
- data/examples/odeiv/duffing.rb +0 -45
- data/examples/odeiv/frei1.rb +0 -109
- data/examples/odeiv/frei2.rb +0 -76
- data/examples/odeiv/legendre.rb +0 -52
- data/examples/odeiv/odeiv.rb +0 -32
- data/examples/odeiv/odeiv2.rb +0 -45
- data/examples/odeiv/oscillator.rb +0 -42
- data/examples/odeiv/sedov.rb +0 -97
- data/examples/odeiv/whitedwarf.gp +0 -40
- data/examples/odeiv/whitedwarf.rb +0 -158
- data/examples/ool/conmin.rb +0 -100
- data/examples/ool/gencan.rb +0 -99
- data/examples/ool/pgrad.rb +0 -100
- data/examples/ool/spg.rb +0 -100
- data/examples/pdf/bernoulli.rb +0 -5
- data/examples/pdf/beta.rb +0 -7
- data/examples/pdf/binomiral.rb +0 -10
- data/examples/pdf/cauchy.rb +0 -6
- data/examples/pdf/chisq.rb +0 -8
- data/examples/pdf/exponential.rb +0 -7
- data/examples/pdf/exppow.rb +0 -6
- data/examples/pdf/fdist.rb +0 -7
- data/examples/pdf/flat.rb +0 -7
- data/examples/pdf/gamma.rb +0 -8
- data/examples/pdf/gauss-tail.rb +0 -5
- data/examples/pdf/gauss.rb +0 -6
- data/examples/pdf/geometric.rb +0 -5
- data/examples/pdf/gumbel.rb +0 -6
- data/examples/pdf/hypergeometric.rb +0 -11
- data/examples/pdf/landau.rb +0 -5
- data/examples/pdf/laplace.rb +0 -7
- data/examples/pdf/logarithmic.rb +0 -5
- data/examples/pdf/logistic.rb +0 -6
- data/examples/pdf/lognormal.rb +0 -6
- data/examples/pdf/neg-binomiral.rb +0 -10
- data/examples/pdf/pareto.rb +0 -7
- data/examples/pdf/pascal.rb +0 -10
- data/examples/pdf/poisson.rb +0 -5
- data/examples/pdf/rayleigh-tail.rb +0 -6
- data/examples/pdf/rayleigh.rb +0 -6
- data/examples/pdf/tdist.rb +0 -6
- data/examples/pdf/weibull.rb +0 -8
- data/examples/permutation/ex1.rb +0 -22
- data/examples/permutation/permutation.rb +0 -16
- data/examples/poly/bell.rb +0 -6
- data/examples/poly/bessel.rb +0 -6
- data/examples/poly/cheb.rb +0 -6
- data/examples/poly/cheb_II.rb +0 -6
- data/examples/poly/cubic.rb +0 -9
- data/examples/poly/demo.rb +0 -20
- data/examples/poly/eval.rb +0 -28
- data/examples/poly/eval_derivs.rb +0 -14
- data/examples/poly/fit.rb +0 -21
- data/examples/poly/hermite.rb +0 -6
- data/examples/poly/poly.rb +0 -13
- data/examples/poly/quadratic.rb +0 -25
- data/examples/random/diffusion.rb +0 -34
- data/examples/random/gaussian.rb +0 -9
- data/examples/random/generator.rb +0 -27
- data/examples/random/hdsobol.rb +0 -21
- data/examples/random/poisson.rb +0 -9
- data/examples/random/qrng.rb +0 -19
- data/examples/random/randomwalk.rb +0 -37
- data/examples/random/randomwalk2d.rb +0 -19
- data/examples/random/rayleigh.rb +0 -36
- data/examples/random/rng.rb +0 -33
- data/examples/random/rngextra.rb +0 -14
- data/examples/roots/bisection.rb +0 -25
- data/examples/roots/brent.rb +0 -43
- data/examples/roots/demo.rb +0 -30
- data/examples/roots/newton.rb +0 -46
- data/examples/roots/recombination.gp +0 -11
- data/examples/roots/recombination.rb +0 -61
- data/examples/roots/steffenson.rb +0 -48
- data/examples/sf/ShiChi.rb +0 -6
- data/examples/sf/SiCi.rb +0 -6
- data/examples/sf/airy_Ai.rb +0 -8
- data/examples/sf/airy_Bi.rb +0 -8
- data/examples/sf/bessel_IK.rb +0 -12
- data/examples/sf/bessel_JY.rb +0 -13
- data/examples/sf/beta_inc.rb +0 -9
- data/examples/sf/clausen.rb +0 -6
- data/examples/sf/dawson.rb +0 -5
- data/examples/sf/debye.rb +0 -9
- data/examples/sf/dilog.rb +0 -6
- data/examples/sf/ellint.rb +0 -6
- data/examples/sf/expint.rb +0 -8
- data/examples/sf/fermi.rb +0 -10
- data/examples/sf/gamma_inc_P.rb +0 -9
- data/examples/sf/gegenbauer.rb +0 -8
- data/examples/sf/hyperg.rb +0 -7
- data/examples/sf/laguerre.rb +0 -19
- data/examples/sf/lambertW.rb +0 -5
- data/examples/sf/legendre_P.rb +0 -10
- data/examples/sf/lngamma.rb +0 -5
- data/examples/sf/psi.rb +0 -54
- data/examples/sf/sphbessel.gp +0 -27
- data/examples/sf/sphbessel.rb +0 -30
- data/examples/sf/synchrotron.rb +0 -5
- data/examples/sf/transport.rb +0 -10
- data/examples/sf/zetam1.rb +0 -5
- data/examples/siman.rb +0 -44
- data/examples/sort/heapsort.rb +0 -23
- data/examples/sort/heapsort_vector_complex.rb +0 -21
- data/examples/sort/sort.rb +0 -23
- data/examples/sort/sort2.rb +0 -16
- data/examples/stats/mean.rb +0 -17
- data/examples/stats/statistics.rb +0 -18
- data/examples/stats/test.rb +0 -9
- data/examples/sum.rb +0 -34
- data/examples/tamu_anova.rb +0 -18
- data/examples/vector/a.dat +0 -0
- data/examples/vector/add.rb +0 -56
- data/examples/vector/b.dat +0 -4
- data/examples/vector/c.dat +0 -3
- data/examples/vector/collect.rb +0 -26
- data/examples/vector/compare.rb +0 -28
- data/examples/vector/complex.rb +0 -51
- data/examples/vector/complex_get_all.rb +0 -85
- data/examples/vector/complex_set_all.rb +0 -131
- data/examples/vector/complex_view_all.rb +0 -77
- data/examples/vector/connect.rb +0 -22
- data/examples/vector/decimate.rb +0 -38
- data/examples/vector/diff.rb +0 -31
- data/examples/vector/filescan.rb +0 -17
- data/examples/vector/floor.rb +0 -23
- data/examples/vector/get_all.rb +0 -82
- data/examples/vector/gnuplot.rb +0 -38
- data/examples/vector/graph.rb +0 -28
- data/examples/vector/histogram.rb +0 -22
- data/examples/vector/linspace.rb +0 -24
- data/examples/vector/log.rb +0 -17
- data/examples/vector/logic.rb +0 -33
- data/examples/vector/logspace.rb +0 -25
- data/examples/vector/minmax.rb +0 -47
- data/examples/vector/mul.rb +0 -49
- data/examples/vector/narray.rb +0 -46
- data/examples/vector/read.rb +0 -29
- data/examples/vector/set.rb +0 -35
- data/examples/vector/set_all.rb +0 -121
- data/examples/vector/smpv.dat +0 -15
- data/examples/vector/test.rb +0 -43
- data/examples/vector/test_gslblock.rb +0 -58
- data/examples/vector/vector.rb +0 -110
- data/examples/vector/view.rb +0 -35
- data/examples/vector/view_all.rb +0 -73
- data/examples/vector/where.rb +0 -29
- data/examples/vector/write.rb +0 -24
- data/examples/vector/zip.rb +0 -34
- data/examples/wavelet/ecg.dat +0 -256
- data/examples/wavelet/wavelet1.rb +0 -50
- data/ext/gsl_native/alf.c +0 -206
- data/ext/gsl_native/array.c +0 -553
- data/ext/gsl_native/array_complex.c +0 -245
- data/ext/gsl_native/blas.c +0 -28
- data/ext/gsl_native/blas1.c +0 -733
- data/ext/gsl_native/blas2.c +0 -1088
- data/ext/gsl_native/blas3.c +0 -880
- data/ext/gsl_native/block.c +0 -40
- data/ext/gsl_native/block_source.h +0 -885
- data/ext/gsl_native/bspline.c +0 -122
- data/ext/gsl_native/bundle.c +0 -3
- data/ext/gsl_native/cdf.c +0 -740
- data/ext/gsl_native/cheb.c +0 -531
- data/ext/gsl_native/combination.c +0 -275
- data/ext/gsl_native/common.c +0 -293
- data/ext/gsl_native/complex.c +0 -1002
- data/ext/gsl_native/const.c +0 -331
- data/ext/gsl_native/const_additional.c +0 -99
- data/ext/gsl_native/cqp.c +0 -283
- data/ext/gsl_native/deriv.c +0 -187
- data/ext/gsl_native/dht.c +0 -353
- data/ext/gsl_native/diff.c +0 -164
- data/ext/gsl_native/dirac.c +0 -388
- data/ext/gsl_native/eigen.c +0 -2322
- data/ext/gsl_native/error.c +0 -193
- data/ext/gsl_native/extconf.rb +0 -118
- data/ext/gsl_native/fft.c +0 -1095
- data/ext/gsl_native/fit.c +0 -204
- data/ext/gsl_native/fresnel.c +0 -312
- data/ext/gsl_native/function.c +0 -518
- data/ext/gsl_native/geometry.c +0 -139
- data/ext/gsl_native/graph.c +0 -1590
- data/ext/gsl_native/gsl.c +0 -259
- data/ext/gsl_native/gsl_narray.c +0 -794
- data/ext/gsl_native/histogram.c +0 -1964
- data/ext/gsl_native/histogram2d.c +0 -1042
- data/ext/gsl_native/histogram3d.c +0 -884
- data/ext/gsl_native/histogram3d_source.c +0 -749
- data/ext/gsl_native/histogram_find.c +0 -99
- data/ext/gsl_native/histogram_oper.c +0 -150
- data/ext/gsl_native/ieee.c +0 -88
- data/ext/gsl_native/include/rb_gsl.h +0 -136
- data/ext/gsl_native/include/rb_gsl_array.h +0 -214
- data/ext/gsl_native/include/rb_gsl_cheb.h +0 -19
- data/ext/gsl_native/include/rb_gsl_common.h +0 -348
- data/ext/gsl_native/include/rb_gsl_complex.h +0 -25
- data/ext/gsl_native/include/rb_gsl_const.h +0 -23
- data/ext/gsl_native/include/rb_gsl_dirac.h +0 -6
- data/ext/gsl_native/include/rb_gsl_eigen.h +0 -17
- data/ext/gsl_native/include/rb_gsl_fft.h +0 -49
- data/ext/gsl_native/include/rb_gsl_fit.h +0 -23
- data/ext/gsl_native/include/rb_gsl_function.h +0 -23
- data/ext/gsl_native/include/rb_gsl_graph.h +0 -68
- data/ext/gsl_native/include/rb_gsl_histogram.h +0 -63
- data/ext/gsl_native/include/rb_gsl_histogram3d.h +0 -97
- data/ext/gsl_native/include/rb_gsl_integration.h +0 -17
- data/ext/gsl_native/include/rb_gsl_interp.h +0 -41
- data/ext/gsl_native/include/rb_gsl_linalg.h +0 -21
- data/ext/gsl_native/include/rb_gsl_math.h +0 -20
- data/ext/gsl_native/include/rb_gsl_odeiv.h +0 -18
- data/ext/gsl_native/include/rb_gsl_poly.h +0 -67
- data/ext/gsl_native/include/rb_gsl_rational.h +0 -30
- data/ext/gsl_native/include/rb_gsl_rng.h +0 -20
- data/ext/gsl_native/include/rb_gsl_root.h +0 -22
- data/ext/gsl_native/include/rb_gsl_sf.h +0 -110
- data/ext/gsl_native/include/rb_gsl_statistics.h +0 -17
- data/ext/gsl_native/include/rb_gsl_tensor.h +0 -43
- data/ext/gsl_native/include/rb_gsl_with_narray.h +0 -31
- data/ext/gsl_native/include/templates_off.h +0 -87
- data/ext/gsl_native/include/templates_on.h +0 -241
- data/ext/gsl_native/integration.c +0 -1154
- data/ext/gsl_native/interp.c +0 -499
- data/ext/gsl_native/jacobi.c +0 -733
- data/ext/gsl_native/linalg.c +0 -3915
- data/ext/gsl_native/linalg_complex.c +0 -726
- data/ext/gsl_native/math.c +0 -706
- data/ext/gsl_native/matrix.c +0 -36
- data/ext/gsl_native/matrix_complex.c +0 -1733
- data/ext/gsl_native/matrix_double.c +0 -557
- data/ext/gsl_native/matrix_int.c +0 -255
- data/ext/gsl_native/matrix_source.h +0 -2708
- data/ext/gsl_native/min.c +0 -219
- data/ext/gsl_native/monte.c +0 -978
- data/ext/gsl_native/multifit.c +0 -1862
- data/ext/gsl_native/multimin.c +0 -778
- data/ext/gsl_native/multimin_fsdf.c +0 -156
- data/ext/gsl_native/multiroots.c +0 -952
- data/ext/gsl_native/multiset.c +0 -210
- data/ext/gsl_native/ndlinear.c +0 -320
- data/ext/gsl_native/nmf.c +0 -171
- data/ext/gsl_native/nmf_wrap.c +0 -75
- data/ext/gsl_native/ntuple.c +0 -469
- data/ext/gsl_native/odeiv.c +0 -947
- data/ext/gsl_native/ool.c +0 -879
- data/ext/gsl_native/permutation.c +0 -598
- data/ext/gsl_native/poly.c +0 -39
- data/ext/gsl_native/poly2.c +0 -265
- data/ext/gsl_native/poly_source.h +0 -1871
- data/ext/gsl_native/qrng.c +0 -160
- data/ext/gsl_native/randist.c +0 -1848
- data/ext/gsl_native/rational.c +0 -480
- data/ext/gsl_native/rng.c +0 -595
- data/ext/gsl_native/root.c +0 -407
- data/ext/gsl_native/sf.c +0 -1446
- data/ext/gsl_native/sf_airy.c +0 -200
- data/ext/gsl_native/sf_bessel.c +0 -871
- data/ext/gsl_native/sf_clausen.c +0 -28
- data/ext/gsl_native/sf_coulomb.c +0 -206
- data/ext/gsl_native/sf_coupling.c +0 -121
- data/ext/gsl_native/sf_dawson.c +0 -29
- data/ext/gsl_native/sf_debye.c +0 -148
- data/ext/gsl_native/sf_dilog.c +0 -43
- data/ext/gsl_native/sf_elementary.c +0 -46
- data/ext/gsl_native/sf_ellint.c +0 -206
- data/ext/gsl_native/sf_elljac.c +0 -30
- data/ext/gsl_native/sf_erfc.c +0 -89
- data/ext/gsl_native/sf_exp.c +0 -169
- data/ext/gsl_native/sf_expint.c +0 -201
- data/ext/gsl_native/sf_fermi_dirac.c +0 -148
- data/ext/gsl_native/sf_gamma.c +0 -343
- data/ext/gsl_native/sf_gegenbauer.c +0 -97
- data/ext/gsl_native/sf_hyperg.c +0 -203
- data/ext/gsl_native/sf_laguerre.c +0 -113
- data/ext/gsl_native/sf_lambert.c +0 -47
- data/ext/gsl_native/sf_legendre.c +0 -368
- data/ext/gsl_native/sf_log.c +0 -105
- data/ext/gsl_native/sf_mathieu.c +0 -235
- data/ext/gsl_native/sf_power.c +0 -47
- data/ext/gsl_native/sf_psi.c +0 -89
- data/ext/gsl_native/sf_synchrotron.c +0 -48
- data/ext/gsl_native/sf_transport.c +0 -76
- data/ext/gsl_native/sf_trigonometric.c +0 -210
- data/ext/gsl_native/sf_zeta.c +0 -115
- data/ext/gsl_native/signal.c +0 -303
- data/ext/gsl_native/siman.c +0 -713
- data/ext/gsl_native/sort.c +0 -207
- data/ext/gsl_native/spline.c +0 -377
- data/ext/gsl_native/stats.c +0 -787
- data/ext/gsl_native/sum.c +0 -168
- data/ext/gsl_native/tamu_anova.c +0 -56
- data/ext/gsl_native/tensor.c +0 -35
- data/ext/gsl_native/tensor_source.h +0 -1122
- data/ext/gsl_native/vector.c +0 -35
- data/ext/gsl_native/vector_complex.c +0 -2241
- data/ext/gsl_native/vector_double.c +0 -1433
- data/ext/gsl_native/vector_int.c +0 -202
- data/ext/gsl_native/vector_source.h +0 -3321
- data/ext/gsl_native/wavelet.c +0 -923
- data/lib/gsl.rb +0 -8
- data/lib/gsl/gnuplot.rb +0 -41
- data/lib/gsl/oper.rb +0 -43
- data/lib/gsl/version.rb +0 -3
- data/lib/ool.rb +0 -22
- data/lib/ool/conmin.rb +0 -30
- data/lib/rbgsl.rb +0 -1
- data/rdoc/alf.rdoc +0 -77
- data/rdoc/blas.rdoc +0 -269
- data/rdoc/bspline.rdoc +0 -42
- data/rdoc/changes.rdoc +0 -159
- data/rdoc/cheb.rdoc +0 -99
- data/rdoc/cholesky_complex.rdoc +0 -46
- data/rdoc/combi.rdoc +0 -125
- data/rdoc/complex.rdoc +0 -210
- data/rdoc/const.rdoc +0 -546
- data/rdoc/dht.rdoc +0 -122
- data/rdoc/diff.rdoc +0 -133
- data/rdoc/ehandling.rdoc +0 -50
- data/rdoc/eigen.rdoc +0 -401
- data/rdoc/fft.rdoc +0 -535
- data/rdoc/fit.rdoc +0 -284
- data/rdoc/function.rdoc +0 -94
- data/rdoc/graph.rdoc +0 -137
- data/rdoc/hist.rdoc +0 -409
- data/rdoc/hist2d.rdoc +0 -279
- data/rdoc/hist3d.rdoc +0 -112
- data/rdoc/integration.rdoc +0 -398
- data/rdoc/interp.rdoc +0 -231
- data/rdoc/intro.rdoc +0 -27
- data/rdoc/linalg.rdoc +0 -681
- data/rdoc/linalg_complex.rdoc +0 -88
- data/rdoc/math.rdoc +0 -276
- data/rdoc/matrix.rdoc +0 -1093
- data/rdoc/min.rdoc +0 -189
- data/rdoc/monte.rdoc +0 -234
- data/rdoc/multimin.rdoc +0 -312
- data/rdoc/multiroot.rdoc +0 -293
- data/rdoc/narray.rdoc +0 -177
- data/rdoc/ndlinear.rdoc +0 -250
- data/rdoc/nonlinearfit.rdoc +0 -348
- data/rdoc/ntuple.rdoc +0 -88
- data/rdoc/odeiv.rdoc +0 -378
- data/rdoc/perm.rdoc +0 -221
- data/rdoc/poly.rdoc +0 -335
- data/rdoc/qrng.rdoc +0 -90
- data/rdoc/randist.rdoc +0 -233
- data/rdoc/ref.rdoc +0 -93
- data/rdoc/rng.rdoc +0 -203
- data/rdoc/roots.rdoc +0 -305
- data/rdoc/sf.rdoc +0 -1622
- data/rdoc/siman.rdoc +0 -89
- data/rdoc/sort.rdoc +0 -94
- data/rdoc/start.rdoc +0 -16
- data/rdoc/stats.rdoc +0 -219
- data/rdoc/sum.rdoc +0 -65
- data/rdoc/tensor.rdoc +0 -251
- data/rdoc/tut.rdoc +0 -5
- data/rdoc/use.rdoc +0 -177
- data/rdoc/vector.rdoc +0 -1243
- data/rdoc/vector_complex.rdoc +0 -347
- data/rdoc/wavelet.rdoc +0 -218
- data/test/gsl/blas_test.rb +0 -79
- data/test/gsl/bspline_test.rb +0 -63
- data/test/gsl/cdf_test.rb +0 -1512
- data/test/gsl/cheb_test.rb +0 -80
- data/test/gsl/combination_test.rb +0 -100
- data/test/gsl/complex_test.rb +0 -20
- data/test/gsl/const_test.rb +0 -29
- data/test/gsl/deriv_test.rb +0 -62
- data/test/gsl/dht_test.rb +0 -79
- data/test/gsl/diff_test.rb +0 -53
- data/test/gsl/eigen_test.rb +0 -563
- data/test/gsl/err_test.rb +0 -23
- data/test/gsl/fit_test.rb +0 -101
- data/test/gsl/histo_test.rb +0 -14
- data/test/gsl/index_test.rb +0 -61
- data/test/gsl/integration_test.rb +0 -274
- data/test/gsl/interp_test.rb +0 -27
- data/test/gsl/linalg_test.rb +0 -463
- data/test/gsl/matrix_nmf_test.rb +0 -37
- data/test/gsl/matrix_test.rb +0 -98
- data/test/gsl/min_test.rb +0 -89
- data/test/gsl/monte_test.rb +0 -77
- data/test/gsl/multifit_test.rb +0 -753
- data/test/gsl/multimin_test.rb +0 -157
- data/test/gsl/multiroot_test.rb +0 -135
- data/test/gsl/multiset_test.rb +0 -52
- data/test/gsl/odeiv_test.rb +0 -275
- data/test/gsl/oper_test.rb +0 -98
- data/test/gsl/poly_test.rb +0 -338
- data/test/gsl/qrng_test.rb +0 -94
- data/test/gsl/quartic_test.rb +0 -28
- data/test/gsl/randist_test.rb +0 -122
- data/test/gsl/rng_test.rb +0 -303
- data/test/gsl/roots_test.rb +0 -78
- data/test/gsl/sf_test.rb +0 -2079
- data/test/gsl/stats_test.rb +0 -122
- data/test/gsl/sum_test.rb +0 -69
- data/test/gsl/tensor_test.rb +0 -396
- data/test/gsl/vector_test.rb +0 -223
- data/test/gsl/wavelet_test.rb +0 -130
- data/test/gsl_test.rb +0 -321
- data/test/test_helper.rb +0 -42
- data/uncrustify.cfg +0 -1693
data/ext/gsl_native/qrng.c
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
qrng.c
|
3
|
-
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
|
4
|
-
(C) Copyright 2001-2006 by Yoshiki Tsunesada
|
5
|
-
|
6
|
-
Ruby/GSL is free software: you can redistribute it and/or modify it
|
7
|
-
under the terms of the GNU General Public License.
|
8
|
-
This library is distributed in the hope that it will be useful, but
|
9
|
-
WITHOUT ANY WARRANTY.
|
10
|
-
*/
|
11
|
-
|
12
|
-
#include "include/rb_gsl_rng.h"
|
13
|
-
#include "include/rb_gsl_array.h"
|
14
|
-
#include <gsl/gsl_qrng.h>
|
15
|
-
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
|
16
|
-
#include <qrngextra/qrngextra.h>
|
17
|
-
#endif
|
18
|
-
|
19
|
-
enum rb_gsl_qrng_generator {
|
20
|
-
GSL_QRNG_NIEDERREITER_2,
|
21
|
-
GSL_QRNG_SOBOL,
|
22
|
-
GSL_QRNG_HALTON,
|
23
|
-
GSL_QRNG_REVERSEHALTON,
|
24
|
-
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
|
25
|
-
GSL_QRNG_HDSOBOL,
|
26
|
-
#endif
|
27
|
-
};
|
28
|
-
|
29
|
-
static const gsl_qrng_type* get_gsl_qrng_type(VALUE t);
|
30
|
-
|
31
|
-
static const gsl_qrng_type* get_gsl_qrng_type(VALUE t)
|
32
|
-
{
|
33
|
-
const gsl_qrng_type *T;
|
34
|
-
char name[32];
|
35
|
-
|
36
|
-
switch (TYPE(t)) {
|
37
|
-
case T_STRING:
|
38
|
-
strcpy(name, STR2CSTR(t));
|
39
|
-
if (strstr(name, "niederreiter_2")) return T = gsl_qrng_niederreiter_2;
|
40
|
-
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
|
41
|
-
else if (strstr(name, "hdsobol")) return T = qrngextra_hdsobol;
|
42
|
-
#endif
|
43
|
-
else if (strstr(name, "sobol")) return T = gsl_qrng_sobol;
|
44
|
-
else if (strstr(name, "reversehalton")) return T = gsl_qrng_reversehalton;
|
45
|
-
else if (strstr(name, "halton")) return T = gsl_qrng_halton;
|
46
|
-
else rb_raise(rb_eArgError, "unknown type");
|
47
|
-
break;
|
48
|
-
case T_FIXNUM:
|
49
|
-
switch (FIX2INT(t)) {
|
50
|
-
case GSL_QRNG_NIEDERREITER_2: T = gsl_qrng_niederreiter_2; break;
|
51
|
-
case GSL_QRNG_SOBOL: T = gsl_qrng_sobol; break;
|
52
|
-
case GSL_QRNG_HALTON: T = gsl_qrng_halton; break;
|
53
|
-
case GSL_QRNG_REVERSEHALTON: T = gsl_qrng_reversehalton; break;
|
54
|
-
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
|
55
|
-
case GSL_QRNG_HDSOBOL: T = qrngextra_hdsobol; break;
|
56
|
-
#endif
|
57
|
-
default:
|
58
|
-
rb_raise(rb_eArgError, "unknown type");
|
59
|
-
}
|
60
|
-
break;
|
61
|
-
default:
|
62
|
-
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
|
63
|
-
rb_class2name(CLASS_OF(t)));
|
64
|
-
}
|
65
|
-
return T;
|
66
|
-
}
|
67
|
-
|
68
|
-
static VALUE rb_gsl_qrng_new(VALUE klass, VALUE t, VALUE dd)
|
69
|
-
{
|
70
|
-
unsigned int d;
|
71
|
-
gsl_qrng *q;
|
72
|
-
const gsl_qrng_type *T;
|
73
|
-
d = NUM2UINT(dd);
|
74
|
-
T = get_gsl_qrng_type(t);
|
75
|
-
q = gsl_qrng_alloc(T, d);
|
76
|
-
return Data_Wrap_Struct(klass, 0, gsl_qrng_free, q);
|
77
|
-
}
|
78
|
-
|
79
|
-
static VALUE rb_gsl_qrng_init(VALUE obj)
|
80
|
-
{
|
81
|
-
gsl_qrng *q = NULL;
|
82
|
-
Data_Get_Struct(obj, gsl_qrng, q);
|
83
|
-
gsl_qrng_init(q);
|
84
|
-
return obj;
|
85
|
-
}
|
86
|
-
|
87
|
-
static VALUE rb_gsl_qrng_name(VALUE obj)
|
88
|
-
{
|
89
|
-
gsl_qrng *q = NULL;
|
90
|
-
Data_Get_Struct(obj, gsl_qrng, q);
|
91
|
-
return rb_str_new2(gsl_qrng_name(q));
|
92
|
-
}
|
93
|
-
|
94
|
-
static VALUE rb_gsl_qrng_size(VALUE obj)
|
95
|
-
{
|
96
|
-
gsl_qrng *q = NULL;
|
97
|
-
Data_Get_Struct(obj, gsl_qrng, q);
|
98
|
-
return INT2FIX(gsl_qrng_size(q));
|
99
|
-
}
|
100
|
-
|
101
|
-
static VALUE rb_gsl_qrng_clone(VALUE obj)
|
102
|
-
{
|
103
|
-
gsl_qrng *q = NULL, *q2 = NULL;
|
104
|
-
Data_Get_Struct(obj, gsl_qrng, q);
|
105
|
-
q2 = gsl_qrng_clone(q);
|
106
|
-
return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_qrng_free, q2);
|
107
|
-
}
|
108
|
-
|
109
|
-
/* singleton */
|
110
|
-
static VALUE rb_gsl_qrng_memcpy(VALUE obj, VALUE dest, VALUE src)
|
111
|
-
{
|
112
|
-
gsl_qrng *q = NULL, *q2 = NULL;
|
113
|
-
Data_Get_Struct(dest, gsl_qrng, q);
|
114
|
-
Data_Get_Struct(src, gsl_qrng, q2);
|
115
|
-
gsl_qrng_memcpy(q, q2);
|
116
|
-
return dest;
|
117
|
-
}
|
118
|
-
|
119
|
-
static VALUE rb_gsl_qrng_get(int argc, VALUE *argv, VALUE obj)
|
120
|
-
{
|
121
|
-
gsl_qrng *q = NULL;
|
122
|
-
gsl_vector *v;
|
123
|
-
Data_Get_Struct(obj, gsl_qrng, q);
|
124
|
-
if (argc == 0) {
|
125
|
-
v = gsl_vector_alloc(q->dimension);
|
126
|
-
gsl_qrng_get(q, v->data);
|
127
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
128
|
-
} else {
|
129
|
-
if (!rb_obj_is_kind_of(argv[0], cgsl_vector)) {
|
130
|
-
rb_raise(rb_eArgError, "wrong type argument (GSL_Vector required)");
|
131
|
-
}
|
132
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
133
|
-
return INT2FIX(gsl_qrng_get(q, v->data));
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
void Init_gsl_qrng(VALUE module)
|
138
|
-
{
|
139
|
-
VALUE cgsl_qrng;
|
140
|
-
cgsl_qrng = rb_define_class_under(module, "QRng", cGSL_Object);
|
141
|
-
|
142
|
-
rb_define_singleton_method(cgsl_qrng, "new", rb_gsl_qrng_new, 2);
|
143
|
-
rb_define_singleton_method(cgsl_qrng, "alloc", rb_gsl_qrng_new, 2);
|
144
|
-
rb_define_method(cgsl_qrng, "init", rb_gsl_qrng_init, 0);
|
145
|
-
rb_define_method(cgsl_qrng, "name", rb_gsl_qrng_name, 0);
|
146
|
-
rb_define_method(cgsl_qrng, "size", rb_gsl_qrng_size, 0);
|
147
|
-
rb_define_method(cgsl_qrng, "clone", rb_gsl_qrng_clone, 0);
|
148
|
-
rb_define_alias(cgsl_qrng, "duplicate", "clone");
|
149
|
-
rb_define_singleton_method(cgsl_qrng, "memcpy", rb_gsl_qrng_memcpy, 2);
|
150
|
-
|
151
|
-
rb_define_method(cgsl_qrng, "get", rb_gsl_qrng_get, -1);
|
152
|
-
|
153
|
-
rb_define_const(cgsl_qrng, "NIEDERREITER_2", INT2FIX(GSL_QRNG_NIEDERREITER_2));
|
154
|
-
rb_define_const(cgsl_qrng, "SOBOL", INT2FIX(GSL_QRNG_SOBOL));
|
155
|
-
rb_define_const(cgsl_qrng, "HALTON", INT2FIX(GSL_QRNG_HALTON));
|
156
|
-
rb_define_const(cgsl_qrng, "REVERSEHALTON", INT2FIX(GSL_QRNG_REVERSEHALTON));
|
157
|
-
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
|
158
|
-
rb_define_const(cgsl_qrng, "HDSOBOL", INT2FIX(GSL_QRNG_HDSOBOL));
|
159
|
-
#endif
|
160
|
-
}
|
data/ext/gsl_native/randist.c
DELETED
@@ -1,1848 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
randist.c
|
3
|
-
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
|
4
|
-
(C) Copyright 2001-2006 by Yoshiki Tsunesada
|
5
|
-
|
6
|
-
Ruby/GSL is free software: you can redistribute it and/or modify it
|
7
|
-
under the terms of the GNU General Public License.
|
8
|
-
This library is distributed in the hope that it will be useful, but
|
9
|
-
WITHOUT ANY WARRANTY.
|
10
|
-
*/
|
11
|
-
|
12
|
-
#include "include/rb_gsl_array.h"
|
13
|
-
#include "include/rb_gsl_common.h"
|
14
|
-
#include "include/rb_gsl_rng.h"
|
15
|
-
#include <gsl/gsl_randist.h>
|
16
|
-
|
17
|
-
VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double));
|
18
|
-
VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa, double (*f)(double, double));
|
19
|
-
VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
|
20
|
-
double (*f)(double, double, double));
|
21
|
-
VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
|
22
|
-
double (*f)(unsigned int, double));
|
23
|
-
|
24
|
-
static VALUE rb_gsl_ran_eval0(int argc, VALUE *argv, VALUE obj,
|
25
|
-
double (*f)(const gsl_rng*))
|
26
|
-
{
|
27
|
-
gsl_rng *r;
|
28
|
-
switch (TYPE(obj)) {
|
29
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
30
|
-
switch (argc) {
|
31
|
-
case 1:
|
32
|
-
CHECK_RNG(argv[0]);
|
33
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
34
|
-
break;
|
35
|
-
default:
|
36
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
37
|
-
break;
|
38
|
-
}
|
39
|
-
break;
|
40
|
-
default:
|
41
|
-
switch (argc) {
|
42
|
-
case 0:
|
43
|
-
break;
|
44
|
-
default:
|
45
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
46
|
-
break;
|
47
|
-
}
|
48
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
49
|
-
break;
|
50
|
-
}
|
51
|
-
return rb_float_new((*f)(r));
|
52
|
-
}
|
53
|
-
|
54
|
-
static VALUE rb_gsl_ran_eval1(int argc, VALUE *argv, VALUE obj,
|
55
|
-
double (*f)(const gsl_rng*, double))
|
56
|
-
{
|
57
|
-
gsl_rng *r;
|
58
|
-
gsl_vector *v;
|
59
|
-
size_t n, i;
|
60
|
-
double a;
|
61
|
-
switch (TYPE(obj)) {
|
62
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
63
|
-
switch (argc) {
|
64
|
-
case 3:
|
65
|
-
n = NUM2INT(argv[2]);
|
66
|
-
a = NUM2DBL(argv[1]);
|
67
|
-
CHECK_RNG(argv[0]);
|
68
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
69
|
-
v = gsl_vector_alloc(n);
|
70
|
-
for (i = 0; i < n; i++)
|
71
|
-
gsl_vector_set(v, i, (*f)(r, a));
|
72
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
73
|
-
break;
|
74
|
-
case 2:
|
75
|
-
CHECK_RNG(argv[0]);
|
76
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
77
|
-
a = NUM2DBL(argv[1]);
|
78
|
-
break;
|
79
|
-
default:
|
80
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
81
|
-
break;
|
82
|
-
}
|
83
|
-
break;
|
84
|
-
default:
|
85
|
-
switch (argc) {
|
86
|
-
case 2:
|
87
|
-
n = NUM2INT(argv[1]);
|
88
|
-
a = NUM2DBL(argv[0]);
|
89
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
90
|
-
v = gsl_vector_alloc(n);
|
91
|
-
for (i = 0; i < n; i++)
|
92
|
-
gsl_vector_set(v, i, (*f)(r, a));
|
93
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
94
|
-
break;
|
95
|
-
case 1:
|
96
|
-
a = NUM2DBL(argv[0]);
|
97
|
-
break;
|
98
|
-
default:
|
99
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
100
|
-
break;
|
101
|
-
}
|
102
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
103
|
-
break;
|
104
|
-
}
|
105
|
-
return rb_float_new((*f)(r, a));
|
106
|
-
}
|
107
|
-
|
108
|
-
static VALUE rb_gsl_ran_eval1_uint(int argc, VALUE *argv, VALUE obj,
|
109
|
-
unsigned int (*f)(const gsl_rng*, double))
|
110
|
-
{
|
111
|
-
gsl_rng *r;
|
112
|
-
gsl_vector_int *v;
|
113
|
-
size_t n, i;
|
114
|
-
double a;
|
115
|
-
switch (TYPE(obj)) {
|
116
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
117
|
-
switch (argc) {
|
118
|
-
case 3:
|
119
|
-
n = NUM2INT(argv[2]);
|
120
|
-
a = NUM2DBL(argv[1]);
|
121
|
-
CHECK_RNG(argv[0]);
|
122
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
123
|
-
v = gsl_vector_int_alloc(n);
|
124
|
-
for (i = 0; i < n; i++)
|
125
|
-
gsl_vector_int_set(v, i, (int) (*f)(r, a));
|
126
|
-
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, v);
|
127
|
-
break;
|
128
|
-
case 2:
|
129
|
-
CHECK_RNG(argv[0]);
|
130
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
131
|
-
a = NUM2DBL(argv[1]);
|
132
|
-
break;
|
133
|
-
default:
|
134
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
135
|
-
break;
|
136
|
-
}
|
137
|
-
break;
|
138
|
-
default:
|
139
|
-
switch (argc) {
|
140
|
-
case 2:
|
141
|
-
n = NUM2INT(argv[1]);
|
142
|
-
a = NUM2DBL(argv[0]);
|
143
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
144
|
-
v = gsl_vector_int_alloc(n);
|
145
|
-
for (i = 0; i < n; i++)
|
146
|
-
gsl_vector_int_set(v, i, (*f)(r, a));
|
147
|
-
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, v);
|
148
|
-
break;
|
149
|
-
case 1:
|
150
|
-
a = NUM2DBL(argv[0]);
|
151
|
-
break;
|
152
|
-
default:
|
153
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
154
|
-
break;
|
155
|
-
}
|
156
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
157
|
-
break;
|
158
|
-
}
|
159
|
-
return INT2FIX((*f)(r, a));
|
160
|
-
}
|
161
|
-
|
162
|
-
static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
|
163
|
-
double (*f)(const gsl_rng*, double, double))
|
164
|
-
{
|
165
|
-
gsl_rng *r;
|
166
|
-
gsl_vector *v;
|
167
|
-
size_t n, i;
|
168
|
-
double a, b;
|
169
|
-
switch (TYPE(obj)) {
|
170
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
171
|
-
switch (argc) {
|
172
|
-
case 4:
|
173
|
-
CHECK_RNG(argv[0]);
|
174
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
175
|
-
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]);
|
176
|
-
n = NUM2INT(argv[3]);
|
177
|
-
v = gsl_vector_alloc(n);
|
178
|
-
for (i = 0; i < n; i++) gsl_vector_set(v, i, (*f)(r, a, b));
|
179
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
180
|
-
break;
|
181
|
-
case 3:
|
182
|
-
CHECK_RNG(argv[0]);
|
183
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
184
|
-
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]);
|
185
|
-
break;
|
186
|
-
default:
|
187
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
188
|
-
break;
|
189
|
-
}
|
190
|
-
break;
|
191
|
-
default:
|
192
|
-
switch (argc) {
|
193
|
-
case 3:
|
194
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
195
|
-
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]);
|
196
|
-
n = NUM2INT(argv[2]);
|
197
|
-
v = gsl_vector_alloc(n);
|
198
|
-
for (i = 0; i < n; i++) gsl_vector_set(v, i, (*f)(r, a, b));
|
199
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
200
|
-
break;
|
201
|
-
case 2:
|
202
|
-
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]);
|
203
|
-
break;
|
204
|
-
default:
|
205
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
206
|
-
break;
|
207
|
-
}
|
208
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
209
|
-
break;
|
210
|
-
}
|
211
|
-
return rb_float_new((*f)(r, a, b));
|
212
|
-
}
|
213
|
-
|
214
|
-
static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
|
215
|
-
double (*f)(const gsl_rng*, double, double, double))
|
216
|
-
{
|
217
|
-
gsl_rng *r;
|
218
|
-
gsl_vector *v;
|
219
|
-
size_t n, i;
|
220
|
-
double a, b, c;
|
221
|
-
switch (TYPE(obj)) {
|
222
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
223
|
-
switch (argc) {
|
224
|
-
case 5:
|
225
|
-
CHECK_RNG(argv[0]);
|
226
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
227
|
-
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); c = NUM2DBL(argv[3]);
|
228
|
-
n = NUM2INT(argv[4]);
|
229
|
-
v = gsl_vector_alloc(n);
|
230
|
-
for (i = 0; i < n; i++) gsl_vector_set(v, i, (*f)(r, a, b, c));
|
231
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
232
|
-
break;
|
233
|
-
case 4:
|
234
|
-
CHECK_RNG(argv[0]);
|
235
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
236
|
-
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); c = NUM2DBL(argv[3]);
|
237
|
-
break;
|
238
|
-
default:
|
239
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)", argc);
|
240
|
-
break;
|
241
|
-
}
|
242
|
-
break;
|
243
|
-
default:
|
244
|
-
switch (argc) {
|
245
|
-
case 4:
|
246
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
247
|
-
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]); c = NUM2DBL(argv[2]);
|
248
|
-
n = NUM2INT(argv[3]);
|
249
|
-
v = gsl_vector_alloc(n);
|
250
|
-
for (i = 0; i < n; i++) gsl_vector_set(v, i, (*f)(r, a, b, c));
|
251
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
252
|
-
break;
|
253
|
-
case 3:
|
254
|
-
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]); c = NUM2DBL(argv[2]);
|
255
|
-
break;
|
256
|
-
default:
|
257
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
258
|
-
break;
|
259
|
-
}
|
260
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
261
|
-
break;
|
262
|
-
}
|
263
|
-
return rb_float_new((*f)(r, a, b, c));
|
264
|
-
}
|
265
|
-
|
266
|
-
static VALUE rb_gsl_ran_gaussian(int argc, VALUE *argv, VALUE obj)
|
267
|
-
{
|
268
|
-
gsl_rng *r = NULL;
|
269
|
-
gsl_vector *v;
|
270
|
-
size_t n, i;
|
271
|
-
double sigma = 1.0;
|
272
|
-
switch (TYPE(obj)) {
|
273
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
274
|
-
switch (argc) {
|
275
|
-
case 3:
|
276
|
-
n = NUM2INT(argv[2]);
|
277
|
-
sigma = NUM2DBL(argv[1]);
|
278
|
-
CHECK_RNG(argv[0]);
|
279
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
280
|
-
v = gsl_vector_alloc(n);
|
281
|
-
for (i = 0; i < n; i++)
|
282
|
-
gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
|
283
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
284
|
-
break;
|
285
|
-
case 2:
|
286
|
-
sigma = NUM2DBL(argv[1]);
|
287
|
-
/* no break */
|
288
|
-
case 1:
|
289
|
-
CHECK_RNG(argv[0]);
|
290
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
291
|
-
return rb_float_new(gsl_ran_gaussian(r, sigma));
|
292
|
-
break;
|
293
|
-
default:
|
294
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 1 or 2)", argc);
|
295
|
-
return Qnil;
|
296
|
-
break;
|
297
|
-
}
|
298
|
-
break;
|
299
|
-
default:
|
300
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
301
|
-
switch (argc) {
|
302
|
-
case 2:
|
303
|
-
n = NUM2INT(argv[1]);
|
304
|
-
sigma = NUM2DBL(argv[0]);
|
305
|
-
v = gsl_vector_alloc(n);
|
306
|
-
for (i = 0; i < n; i++)
|
307
|
-
gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
|
308
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
309
|
-
break;
|
310
|
-
case 1:
|
311
|
-
sigma = NUM2DBL(argv[0]);
|
312
|
-
/* no break */
|
313
|
-
case 0:
|
314
|
-
return rb_float_new(gsl_ran_gaussian(r, sigma));
|
315
|
-
break;
|
316
|
-
default:
|
317
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
|
318
|
-
return Qnil;
|
319
|
-
break;
|
320
|
-
}
|
321
|
-
break;
|
322
|
-
}
|
323
|
-
return Qnil;
|
324
|
-
}
|
325
|
-
|
326
|
-
static VALUE rb_gsl_ran_gaussian_ratio_method(int argc, VALUE *argv, VALUE obj)
|
327
|
-
{
|
328
|
-
gsl_rng *r = NULL;
|
329
|
-
double sigma = 1.0;
|
330
|
-
switch (TYPE(obj)) {
|
331
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
332
|
-
switch (argc) {
|
333
|
-
case 2:
|
334
|
-
sigma = NUM2DBL(argv[1]);
|
335
|
-
/* no break */
|
336
|
-
case 1:
|
337
|
-
CHECK_RNG(argv[0]);
|
338
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
339
|
-
return rb_float_new(gsl_ran_gaussian_ratio_method(r, sigma));
|
340
|
-
break;
|
341
|
-
default:
|
342
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 1 or 2)", argc);
|
343
|
-
break;
|
344
|
-
}
|
345
|
-
break;
|
346
|
-
default:
|
347
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
348
|
-
switch (argc) {
|
349
|
-
case 1:
|
350
|
-
sigma = NUM2DBL(argv[0]);
|
351
|
-
/* no break */
|
352
|
-
case 0:
|
353
|
-
return rb_float_new(gsl_ran_gaussian_ratio_method(r, sigma));
|
354
|
-
break;
|
355
|
-
default:
|
356
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
|
357
|
-
break;
|
358
|
-
}
|
359
|
-
break;
|
360
|
-
}
|
361
|
-
return Qnil;
|
362
|
-
}
|
363
|
-
|
364
|
-
static VALUE rb_gsl_ran_gaussian_pdf(int argc, VALUE *argv, VALUE obj)
|
365
|
-
{
|
366
|
-
if (argc == 1) {
|
367
|
-
return rb_gsl_eval_pdf_cdf(argv[0], gsl_ran_ugaussian_pdf);
|
368
|
-
} else if (argc == 2) {
|
369
|
-
return rb_gsl_eval_pdf_cdf2(argv[0], argv[1], gsl_ran_gaussian_pdf);
|
370
|
-
} else {
|
371
|
-
rb_raise(rb_eArgError, "wrong number of arguments (1 or 2)");
|
372
|
-
}
|
373
|
-
}
|
374
|
-
|
375
|
-
static VALUE rb_gsl_ran_gaussian_tail(int argc, VALUE *argv, VALUE obj)
|
376
|
-
{
|
377
|
-
gsl_rng *r = NULL;
|
378
|
-
gsl_vector *v;
|
379
|
-
size_t n, i;
|
380
|
-
double a, sigma = 1.0;
|
381
|
-
switch (TYPE(obj)) {
|
382
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
383
|
-
switch (argc) {
|
384
|
-
case 4:
|
385
|
-
n = NUM2INT(argv[3]);
|
386
|
-
sigma = NUM2DBL(argv[2]);
|
387
|
-
a = NUM2DBL(argv[1]);
|
388
|
-
CHECK_RNG(argv[0]);
|
389
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
390
|
-
v = gsl_vector_alloc(n);
|
391
|
-
for (i = 0; i < n; i++)
|
392
|
-
gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
|
393
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
394
|
-
break;
|
395
|
-
case 3:
|
396
|
-
sigma = NUM2DBL(argv[2]);
|
397
|
-
/* no break */
|
398
|
-
case 2:
|
399
|
-
CHECK_RNG(argv[0]);
|
400
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
401
|
-
a = NUM2DBL(argv[1]);
|
402
|
-
return rb_float_new(gsl_ran_gaussian_tail(r, a, sigma));
|
403
|
-
break;
|
404
|
-
default:
|
405
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 2 or 3)", argc);
|
406
|
-
break;
|
407
|
-
}
|
408
|
-
break;
|
409
|
-
default:
|
410
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
411
|
-
switch (argc) {
|
412
|
-
case 3:
|
413
|
-
n = NUM2INT(argv[2]);
|
414
|
-
sigma = NUM2DBL(argv[1]);
|
415
|
-
a = NUM2DBL(argv[0]);
|
416
|
-
v = gsl_vector_alloc(n);
|
417
|
-
for (i = 0; i < n; i++)
|
418
|
-
gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
|
419
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
420
|
-
break;
|
421
|
-
case 2:
|
422
|
-
sigma = NUM2DBL(argv[1]);
|
423
|
-
/* no break */
|
424
|
-
case 1:
|
425
|
-
a = NUM2DBL(argv[0]);
|
426
|
-
return rb_float_new(gsl_ran_gaussian_tail(r, a, sigma));
|
427
|
-
break;
|
428
|
-
default:
|
429
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 1 or 2)", argc);
|
430
|
-
break;
|
431
|
-
}
|
432
|
-
break;
|
433
|
-
}
|
434
|
-
}
|
435
|
-
|
436
|
-
static VALUE rb_gsl_ran_gaussian_tail_pdf(int argc, VALUE *argv, VALUE obj)
|
437
|
-
{
|
438
|
-
switch (argc) {
|
439
|
-
case 2:
|
440
|
-
return rb_gsl_eval_pdf_cdf2(argv[0], argv[1], gsl_ran_ugaussian_tail_pdf);
|
441
|
-
break;
|
442
|
-
case 3:
|
443
|
-
return rb_gsl_eval_pdf_cdf3(argv[0], argv[1], argv[2], gsl_ran_gaussian_tail_pdf);
|
444
|
-
break;
|
445
|
-
default:
|
446
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
|
447
|
-
break;
|
448
|
-
}
|
449
|
-
}
|
450
|
-
|
451
|
-
static VALUE rb_gsl_ran_bivariate_gaussian(int argc, VALUE *argv, VALUE obj)
|
452
|
-
{
|
453
|
-
gsl_rng *r = NULL;
|
454
|
-
double sigmax, sigmay, x, y, rho;
|
455
|
-
switch (TYPE(obj)) {
|
456
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
457
|
-
switch (argc) {
|
458
|
-
case 4:
|
459
|
-
CHECK_RNG(argv[0]);
|
460
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
461
|
-
sigmax = NUM2DBL(argv[1]); sigmay = NUM2DBL(argv[2]);
|
462
|
-
rho = NUM2DBL(argv[3]);
|
463
|
-
break;
|
464
|
-
default:
|
465
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)", argc);
|
466
|
-
break;
|
467
|
-
}
|
468
|
-
break;
|
469
|
-
default:
|
470
|
-
switch (argc) {
|
471
|
-
case 3:
|
472
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
473
|
-
sigmax = NUM2DBL(argv[0]); sigmay = NUM2DBL(argv[1]);
|
474
|
-
rho = NUM2DBL(argv[2]);
|
475
|
-
break;
|
476
|
-
default:
|
477
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
478
|
-
break;
|
479
|
-
}
|
480
|
-
break;
|
481
|
-
}
|
482
|
-
gsl_ran_bivariate_gaussian(r, sigmax, sigmay, rho, &x, &y);
|
483
|
-
return rb_ary_new3(2, rb_float_new(x), rb_float_new(y));
|
484
|
-
}
|
485
|
-
|
486
|
-
static VALUE rb_gsl_ran_bivariate_gaussian_pdf(VALUE obj, VALUE x, VALUE y, VALUE sx, VALUE sy, VALUE rr)
|
487
|
-
{
|
488
|
-
Need_Float(x); Need_Float(y);
|
489
|
-
Need_Float(sx); Need_Float(sy); Need_Float(rr);
|
490
|
-
return rb_float_new(gsl_ran_bivariate_gaussian_pdf(NUM2DBL(x), NUM2DBL(y), NUM2DBL(sx), NUM2DBL(sy), NUM2DBL(rr)));
|
491
|
-
}
|
492
|
-
|
493
|
-
static VALUE rb_gsl_ran_exponential(int argc, VALUE *argv, VALUE obj)
|
494
|
-
{
|
495
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_exponential);
|
496
|
-
}
|
497
|
-
|
498
|
-
static VALUE rb_gsl_ran_exponential_pdf(VALUE obj, VALUE x, VALUE mu)
|
499
|
-
{
|
500
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_exponential_pdf);
|
501
|
-
}
|
502
|
-
|
503
|
-
static VALUE rb_gsl_ran_laplace(int argc, VALUE *argv, VALUE obj)
|
504
|
-
{
|
505
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_laplace);
|
506
|
-
}
|
507
|
-
|
508
|
-
static VALUE rb_gsl_ran_laplace_pdf(VALUE obj, VALUE x, VALUE mu)
|
509
|
-
{
|
510
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_laplace_pdf);
|
511
|
-
}
|
512
|
-
|
513
|
-
static VALUE rb_gsl_ran_exppow(int argc, VALUE *argv, VALUE obj)
|
514
|
-
{
|
515
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_exppow);
|
516
|
-
}
|
517
|
-
|
518
|
-
static VALUE rb_gsl_ran_exppow_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
519
|
-
{
|
520
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_exppow_pdf);
|
521
|
-
}
|
522
|
-
|
523
|
-
static VALUE rb_gsl_ran_cauchy(int argc, VALUE *argv, VALUE obj)
|
524
|
-
{
|
525
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_cauchy);
|
526
|
-
}
|
527
|
-
|
528
|
-
static VALUE rb_gsl_ran_cauchy_pdf(VALUE obj, VALUE x, VALUE mu)
|
529
|
-
{
|
530
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_cauchy_pdf);
|
531
|
-
}
|
532
|
-
|
533
|
-
static VALUE rb_gsl_ran_rayleigh(int argc, VALUE *argv, VALUE obj)
|
534
|
-
{
|
535
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_rayleigh);
|
536
|
-
}
|
537
|
-
|
538
|
-
static VALUE rb_gsl_ran_rayleigh_pdf(VALUE obj, VALUE x, VALUE a)
|
539
|
-
{
|
540
|
-
return rb_gsl_eval_pdf_cdf2(x, a, gsl_ran_rayleigh_pdf);
|
541
|
-
}
|
542
|
-
|
543
|
-
static VALUE rb_gsl_ran_rayleigh_tail(int argc, VALUE *argv, VALUE obj)
|
544
|
-
{
|
545
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_rayleigh_tail);
|
546
|
-
}
|
547
|
-
|
548
|
-
static VALUE rb_gsl_ran_rayleigh_tail_pdf(VALUE obj, VALUE x, VALUE a, VALUE s)
|
549
|
-
{
|
550
|
-
return rb_gsl_eval_pdf_cdf3(x, a, s, gsl_ran_rayleigh_tail_pdf);
|
551
|
-
}
|
552
|
-
|
553
|
-
static VALUE rb_gsl_ran_landau(int argc, VALUE *argv, VALUE obj)
|
554
|
-
{
|
555
|
-
return rb_gsl_ran_eval0(argc, argv, obj, gsl_ran_landau);
|
556
|
-
}
|
557
|
-
|
558
|
-
static VALUE rb_gsl_ran_landau_pdf(VALUE obj, VALUE x)
|
559
|
-
{
|
560
|
-
return rb_gsl_eval_pdf_cdf(x, gsl_ran_landau_pdf);
|
561
|
-
}
|
562
|
-
|
563
|
-
static VALUE rb_gsl_ran_levy(int argc, VALUE *argv, VALUE obj)
|
564
|
-
{
|
565
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_levy);
|
566
|
-
}
|
567
|
-
|
568
|
-
static VALUE rb_gsl_ran_levy_skew(int argc, VALUE *argv, VALUE obj)
|
569
|
-
{
|
570
|
-
return rb_gsl_ran_eval3(argc, argv, obj, gsl_ran_levy_skew);
|
571
|
-
}
|
572
|
-
|
573
|
-
static VALUE rb_gsl_ran_gamma(int argc, VALUE *argv, VALUE obj)
|
574
|
-
{
|
575
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_gamma);
|
576
|
-
}
|
577
|
-
|
578
|
-
static VALUE rb_gsl_ran_gamma_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
579
|
-
{
|
580
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_gamma_pdf);
|
581
|
-
}
|
582
|
-
|
583
|
-
static VALUE rb_gsl_ran_flat(int argc, VALUE *argv, VALUE obj)
|
584
|
-
{
|
585
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_flat);
|
586
|
-
}
|
587
|
-
|
588
|
-
static VALUE rb_gsl_ran_flat_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
589
|
-
{
|
590
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_flat_pdf);
|
591
|
-
}
|
592
|
-
|
593
|
-
static VALUE rb_gsl_ran_lognormal(int argc, VALUE *argv, VALUE obj)
|
594
|
-
{
|
595
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_lognormal);
|
596
|
-
}
|
597
|
-
|
598
|
-
static VALUE rb_gsl_ran_lognormal_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
599
|
-
{
|
600
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_lognormal_pdf);
|
601
|
-
}
|
602
|
-
|
603
|
-
static VALUE rb_gsl_ran_chisq(int argc, VALUE *argv, VALUE obj)
|
604
|
-
{
|
605
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_chisq);
|
606
|
-
}
|
607
|
-
|
608
|
-
static VALUE rb_gsl_ran_chisq_pdf(VALUE obj, VALUE x, VALUE mu)
|
609
|
-
{
|
610
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_chisq_pdf);
|
611
|
-
}
|
612
|
-
|
613
|
-
static VALUE rb_gsl_ran_fdist(int argc, VALUE *argv, VALUE obj)
|
614
|
-
{
|
615
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_fdist);
|
616
|
-
}
|
617
|
-
|
618
|
-
static VALUE rb_gsl_ran_fdist_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
619
|
-
{
|
620
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_fdist_pdf);
|
621
|
-
}
|
622
|
-
|
623
|
-
static VALUE rb_gsl_ran_tdist(int argc, VALUE *argv, VALUE obj)
|
624
|
-
{
|
625
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_tdist);
|
626
|
-
}
|
627
|
-
|
628
|
-
static VALUE rb_gsl_ran_tdist_pdf(VALUE obj, VALUE x, VALUE mu)
|
629
|
-
{
|
630
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_tdist_pdf);
|
631
|
-
}
|
632
|
-
|
633
|
-
static VALUE rb_gsl_ran_beta(int argc, VALUE *argv, VALUE obj)
|
634
|
-
{
|
635
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_beta);
|
636
|
-
}
|
637
|
-
|
638
|
-
static VALUE rb_gsl_ran_beta_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
639
|
-
{
|
640
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_beta_pdf);
|
641
|
-
}
|
642
|
-
|
643
|
-
static VALUE rb_gsl_ran_logistic(int argc, VALUE *argv, VALUE obj)
|
644
|
-
{
|
645
|
-
return rb_gsl_ran_eval1(argc, argv, obj, gsl_ran_logistic);
|
646
|
-
}
|
647
|
-
|
648
|
-
static VALUE rb_gsl_ran_logistic_pdf(VALUE obj, VALUE x, VALUE mu)
|
649
|
-
{
|
650
|
-
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_ran_logistic_pdf);
|
651
|
-
}
|
652
|
-
|
653
|
-
static VALUE rb_gsl_ran_pareto(int argc, VALUE *argv, VALUE obj)
|
654
|
-
{
|
655
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_pareto);
|
656
|
-
}
|
657
|
-
|
658
|
-
static VALUE rb_gsl_ran_pareto_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
659
|
-
{
|
660
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_pareto_pdf);
|
661
|
-
}
|
662
|
-
|
663
|
-
static VALUE rb_gsl_ran_weibull(int argc, VALUE *argv, VALUE obj)
|
664
|
-
{
|
665
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_weibull);
|
666
|
-
}
|
667
|
-
|
668
|
-
static VALUE rb_gsl_ran_weibull_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
669
|
-
{
|
670
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_weibull_pdf);
|
671
|
-
}
|
672
|
-
|
673
|
-
static VALUE rb_gsl_ran_gumbel1(int argc, VALUE *argv, VALUE obj)
|
674
|
-
{
|
675
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_gumbel1);
|
676
|
-
}
|
677
|
-
|
678
|
-
static VALUE rb_gsl_ran_gumbel1_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
679
|
-
{
|
680
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_gumbel1_pdf);
|
681
|
-
}
|
682
|
-
|
683
|
-
static VALUE rb_gsl_ran_gumbel2(int argc, VALUE *argv, VALUE obj)
|
684
|
-
{
|
685
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_gumbel2);
|
686
|
-
}
|
687
|
-
|
688
|
-
static VALUE rb_gsl_ran_gumbel2_pdf(VALUE obj, VALUE x, VALUE a, VALUE b)
|
689
|
-
{
|
690
|
-
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_ran_gumbel2_pdf);
|
691
|
-
}
|
692
|
-
|
693
|
-
static VALUE rb_gsl_ran_poisson(int argc, VALUE *argv, VALUE obj)
|
694
|
-
{
|
695
|
-
return rb_gsl_ran_eval1_uint(argc, argv, obj, gsl_ran_poisson);
|
696
|
-
}
|
697
|
-
|
698
|
-
static VALUE rb_gsl_ran_poisson_pdf(VALUE obj, VALUE x, VALUE mu)
|
699
|
-
{
|
700
|
-
return rb_gsl_eval_pdf_cdf2_uint(x, mu, gsl_ran_poisson_pdf);
|
701
|
-
}
|
702
|
-
|
703
|
-
static VALUE rb_gsl_ran_bernoulli(int argc, VALUE *argv, VALUE obj)
|
704
|
-
{
|
705
|
-
return rb_gsl_ran_eval1_uint(argc, argv, obj, gsl_ran_bernoulli);
|
706
|
-
}
|
707
|
-
|
708
|
-
static VALUE rb_gsl_ran_bernoulli_pdf(VALUE obj, VALUE x, VALUE mu)
|
709
|
-
{
|
710
|
-
return rb_gsl_eval_pdf_cdf2_uint(x, mu, gsl_ran_bernoulli_pdf);
|
711
|
-
}
|
712
|
-
|
713
|
-
static VALUE rb_gsl_ran_binomial(int argc, VALUE *argv, VALUE obj)
|
714
|
-
{
|
715
|
-
gsl_rng *r;
|
716
|
-
double p;
|
717
|
-
unsigned int n;
|
718
|
-
switch (TYPE(obj)) {
|
719
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
720
|
-
switch (argc) {
|
721
|
-
case 3:
|
722
|
-
CHECK_RNG(argv[0]);
|
723
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
724
|
-
p = NUM2DBL(argv[1]);
|
725
|
-
n = FIX2UINT(argv[2]);
|
726
|
-
break;
|
727
|
-
default:
|
728
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
729
|
-
break;
|
730
|
-
}
|
731
|
-
break;
|
732
|
-
default:
|
733
|
-
switch (argc) {
|
734
|
-
case 2:
|
735
|
-
p = NUM2DBL(argv[0]);
|
736
|
-
n = FIX2UINT(argv[1]);
|
737
|
-
break;
|
738
|
-
default:
|
739
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
740
|
-
break;
|
741
|
-
}
|
742
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
743
|
-
break;
|
744
|
-
}
|
745
|
-
return UINT2NUM(gsl_ran_binomial(r, p, n));
|
746
|
-
}
|
747
|
-
|
748
|
-
static VALUE rb_gsl_ran_binomial_tpe(int argc, VALUE *argv, VALUE obj)
|
749
|
-
{
|
750
|
-
gsl_rng *r = NULL;
|
751
|
-
double p;
|
752
|
-
unsigned int n;
|
753
|
-
switch (TYPE(obj)) {
|
754
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
755
|
-
switch (argc) {
|
756
|
-
case 3:
|
757
|
-
CHECK_RNG(argv[0]);
|
758
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
759
|
-
p = NUM2DBL(argv[1]);
|
760
|
-
n = FIX2UINT(argv[2]);
|
761
|
-
break;
|
762
|
-
default:
|
763
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
764
|
-
break;
|
765
|
-
}
|
766
|
-
break;
|
767
|
-
default:
|
768
|
-
switch (argc) {
|
769
|
-
case 2:
|
770
|
-
p = NUM2DBL(argv[0]);
|
771
|
-
n = FIX2UINT(argv[1]);
|
772
|
-
break;
|
773
|
-
default:
|
774
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
775
|
-
break;
|
776
|
-
}
|
777
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
778
|
-
break;
|
779
|
-
}
|
780
|
-
return UINT2NUM(gsl_ran_binomial_tpe(r, p, n));
|
781
|
-
}
|
782
|
-
|
783
|
-
static VALUE rb_gsl_ran_binomial_pdf(VALUE obj, VALUE x, VALUE p, VALUE n)
|
784
|
-
{
|
785
|
-
return rb_float_new(gsl_ran_binomial_pdf(NUM2UINT(x), NUM2DBL(p), NUM2UINT(n)));
|
786
|
-
}
|
787
|
-
|
788
|
-
static VALUE rb_gsl_ran_negative_binomial(int argc, VALUE *argv, VALUE obj)
|
789
|
-
{
|
790
|
-
gsl_rng *r;
|
791
|
-
double p;
|
792
|
-
unsigned int n;
|
793
|
-
switch (TYPE(obj)) {
|
794
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
795
|
-
switch (argc) {
|
796
|
-
case 3:
|
797
|
-
CHECK_RNG(argv[0]);
|
798
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
799
|
-
p = NUM2DBL(argv[1]);
|
800
|
-
n = FIX2UINT(argv[2]);
|
801
|
-
break;
|
802
|
-
default:
|
803
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
804
|
-
break;
|
805
|
-
}
|
806
|
-
break;
|
807
|
-
default:
|
808
|
-
switch (argc) {
|
809
|
-
case 2:
|
810
|
-
p = NUM2DBL(argv[0]);
|
811
|
-
n = FIX2UINT(argv[1]);
|
812
|
-
break;
|
813
|
-
default:
|
814
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
815
|
-
break;
|
816
|
-
}
|
817
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
818
|
-
break;
|
819
|
-
}
|
820
|
-
return UINT2NUM(gsl_ran_negative_binomial(r, p, n));
|
821
|
-
}
|
822
|
-
|
823
|
-
static VALUE rb_gsl_ran_negative_binomial_pdf(VALUE obj, VALUE x, VALUE p, VALUE n)
|
824
|
-
{
|
825
|
-
return rb_float_new(gsl_ran_negative_binomial_pdf(NUM2UINT(x), NUM2DBL(p), NUM2DBL(n)));
|
826
|
-
}
|
827
|
-
|
828
|
-
static VALUE rb_gsl_ran_pascal(int argc, VALUE *argv, VALUE obj)
|
829
|
-
{
|
830
|
-
gsl_rng *r = NULL;
|
831
|
-
double p;
|
832
|
-
unsigned int n;
|
833
|
-
switch (TYPE(obj)) {
|
834
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
835
|
-
switch (argc) {
|
836
|
-
case 3:
|
837
|
-
CHECK_RNG(argv[0]);
|
838
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
839
|
-
p = NUM2DBL(argv[1]);
|
840
|
-
n = FIX2UINT(argv[2]);
|
841
|
-
break;
|
842
|
-
default:
|
843
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
844
|
-
break;
|
845
|
-
}
|
846
|
-
break;
|
847
|
-
default:
|
848
|
-
switch (argc) {
|
849
|
-
case 2:
|
850
|
-
p = NUM2DBL(argv[0]);
|
851
|
-
n = FIX2UINT(argv[1]);
|
852
|
-
break;
|
853
|
-
default:
|
854
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
855
|
-
break;
|
856
|
-
}
|
857
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
858
|
-
break;
|
859
|
-
}
|
860
|
-
return UINT2NUM(gsl_ran_pascal(r, p, n));
|
861
|
-
}
|
862
|
-
|
863
|
-
static VALUE rb_gsl_ran_pascal_pdf(VALUE obj, VALUE x, VALUE p, VALUE n)
|
864
|
-
{
|
865
|
-
return rb_float_new(gsl_ran_pascal_pdf(NUM2UINT(x), NUM2DBL(p), NUM2UINT(n)));
|
866
|
-
}
|
867
|
-
|
868
|
-
static VALUE rb_gsl_ran_geometric(int argc, VALUE *argv, VALUE obj)
|
869
|
-
{
|
870
|
-
return rb_gsl_ran_eval1_uint(argc, argv, obj, gsl_ran_geometric);
|
871
|
-
}
|
872
|
-
|
873
|
-
static VALUE rb_gsl_ran_geometric_pdf(VALUE obj, VALUE x, VALUE p)
|
874
|
-
{
|
875
|
-
return rb_gsl_eval_pdf_cdf2_uint(x, p, gsl_ran_geometric_pdf);
|
876
|
-
}
|
877
|
-
|
878
|
-
static VALUE rb_gsl_ran_hypergeometric(int argc, VALUE *argv, VALUE obj)
|
879
|
-
{
|
880
|
-
gsl_rng *r;
|
881
|
-
unsigned int n1, n2, t;
|
882
|
-
switch (TYPE(obj)) {
|
883
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
884
|
-
switch (argc) {
|
885
|
-
case 4:
|
886
|
-
CHECK_RNG(argv[0]);
|
887
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
888
|
-
n1 = FIX2UINT(argv[1]);
|
889
|
-
n2 = FIX2UINT(argv[2]);
|
890
|
-
t = FIX2UINT(argv[3]);
|
891
|
-
break;
|
892
|
-
default:
|
893
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)", argc);
|
894
|
-
break;
|
895
|
-
}
|
896
|
-
break;
|
897
|
-
default:
|
898
|
-
switch (argc) {
|
899
|
-
case 3:
|
900
|
-
n1 = FIX2UINT(argv[0]);
|
901
|
-
n2 = FIX2UINT(argv[1]);
|
902
|
-
t = FIX2UINT(argv[2]);
|
903
|
-
break;
|
904
|
-
default:
|
905
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
906
|
-
break;
|
907
|
-
}
|
908
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
909
|
-
break;
|
910
|
-
}
|
911
|
-
return UINT2NUM(gsl_ran_hypergeometric(r, n1, n2, t));
|
912
|
-
}
|
913
|
-
|
914
|
-
static VALUE rb_gsl_ran_hypergeometric_pdf(VALUE obj, VALUE k, VALUE n1, VALUE n2, VALUE t)
|
915
|
-
{
|
916
|
-
return rb_float_new(gsl_ran_hypergeometric_pdf(NUM2UINT(k), NUM2UINT(n1), NUM2UINT(n2), NUM2UINT(t)));
|
917
|
-
}
|
918
|
-
|
919
|
-
static VALUE rb_gsl_ran_logarithmic(int argc, VALUE *argv, VALUE obj)
|
920
|
-
{
|
921
|
-
return rb_gsl_ran_eval1_uint(argc, argv, obj, gsl_ran_logarithmic);
|
922
|
-
}
|
923
|
-
|
924
|
-
static VALUE rb_gsl_ran_logarithmic_pdf(VALUE obj, VALUE x, VALUE mu)
|
925
|
-
{
|
926
|
-
return rb_gsl_eval_pdf_cdf2_uint(x, mu, gsl_ran_logarithmic_pdf);
|
927
|
-
}
|
928
|
-
|
929
|
-
static VALUE rb_gsl_ran_dir_2d(int argc, VALUE *argv, VALUE obj)
|
930
|
-
{
|
931
|
-
gsl_rng *r = NULL;
|
932
|
-
double x, y;
|
933
|
-
switch (TYPE(obj)) {
|
934
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
935
|
-
switch (argc) {
|
936
|
-
case 1:
|
937
|
-
CHECK_RNG(argv[0]);
|
938
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
939
|
-
break;
|
940
|
-
default:
|
941
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
942
|
-
break;
|
943
|
-
}
|
944
|
-
break;
|
945
|
-
default:
|
946
|
-
switch (argc) {
|
947
|
-
case 0:
|
948
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
949
|
-
break;
|
950
|
-
default:
|
951
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
952
|
-
break;
|
953
|
-
}
|
954
|
-
}
|
955
|
-
gsl_ran_dir_2d(r, &x, &y);
|
956
|
-
return rb_ary_new3(2, rb_float_new(x), rb_float_new(y));
|
957
|
-
}
|
958
|
-
|
959
|
-
static VALUE rb_gsl_ran_dir_2d_trig_method(int argc, VALUE *argv, VALUE obj)
|
960
|
-
{
|
961
|
-
gsl_rng *r = NULL;
|
962
|
-
double x, y;
|
963
|
-
switch (TYPE(obj)) {
|
964
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
965
|
-
switch (argc) {
|
966
|
-
case 1:
|
967
|
-
CHECK_RNG(argv[0]);
|
968
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
969
|
-
break;
|
970
|
-
default:
|
971
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
972
|
-
break;
|
973
|
-
}
|
974
|
-
break;
|
975
|
-
default:
|
976
|
-
switch (argc) {
|
977
|
-
case 0:
|
978
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
979
|
-
break;
|
980
|
-
default:
|
981
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
982
|
-
break;
|
983
|
-
}
|
984
|
-
}
|
985
|
-
gsl_ran_dir_2d_trig_method(r, &x, &y);
|
986
|
-
return rb_ary_new3(2, rb_float_new(x), rb_float_new(y));
|
987
|
-
}
|
988
|
-
|
989
|
-
static VALUE rb_gsl_ran_dir_3d(int argc, VALUE *argv, VALUE obj)
|
990
|
-
{
|
991
|
-
gsl_rng *r = NULL;
|
992
|
-
double x, y, z;
|
993
|
-
switch (TYPE(obj)) {
|
994
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
995
|
-
switch (argc) {
|
996
|
-
case 1:
|
997
|
-
CHECK_RNG(argv[0]);
|
998
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
999
|
-
break;
|
1000
|
-
default:
|
1001
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
1002
|
-
break;
|
1003
|
-
}
|
1004
|
-
break;
|
1005
|
-
default:
|
1006
|
-
switch (argc) {
|
1007
|
-
case 0:
|
1008
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1009
|
-
break;
|
1010
|
-
default:
|
1011
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
1012
|
-
break;
|
1013
|
-
}
|
1014
|
-
}
|
1015
|
-
gsl_ran_dir_3d(r, &x, &y, &z);
|
1016
|
-
return rb_ary_new3(3, rb_float_new(x), rb_float_new(y), rb_float_new(z));
|
1017
|
-
}
|
1018
|
-
|
1019
|
-
static VALUE rb_gsl_ran_dir_nd(int argc, VALUE *argv, VALUE obj)
|
1020
|
-
{
|
1021
|
-
gsl_rng *r = NULL;
|
1022
|
-
size_t n;
|
1023
|
-
gsl_vector *v;
|
1024
|
-
switch (TYPE(obj)) {
|
1025
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
1026
|
-
switch (argc) {
|
1027
|
-
case 2:
|
1028
|
-
CHECK_RNG(argv[0]); CHECK_FIXNUM(argv[1]);
|
1029
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1030
|
-
n = FIX2INT(argv[1]);
|
1031
|
-
break;
|
1032
|
-
default:
|
1033
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
1034
|
-
break;
|
1035
|
-
}
|
1036
|
-
break;
|
1037
|
-
default:
|
1038
|
-
switch (argc) {
|
1039
|
-
case 1:
|
1040
|
-
CHECK_FIXNUM(argv[0]);
|
1041
|
-
n = FIX2INT(argv[0]);
|
1042
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1043
|
-
break;
|
1044
|
-
default:
|
1045
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
|
1046
|
-
break;
|
1047
|
-
}
|
1048
|
-
}
|
1049
|
-
v = gsl_vector_alloc(n);
|
1050
|
-
gsl_ran_dir_nd(r, n, v->data);
|
1051
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
1052
|
-
}
|
1053
|
-
|
1054
|
-
static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
|
1055
|
-
{
|
1056
|
-
gsl_rng *r = NULL;
|
1057
|
-
gsl_vector *v = NULL;
|
1058
|
-
gsl_permutation *p = NULL;
|
1059
|
-
switch (TYPE(obj)) {
|
1060
|
-
case T_MODULE:
|
1061
|
-
case T_CLASS:
|
1062
|
-
case T_OBJECT:
|
1063
|
-
switch (argc) {
|
1064
|
-
case 2:
|
1065
|
-
CHECK_RNG(argv[0]);
|
1066
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1067
|
-
if (VECTOR_P(argv[1])) {
|
1068
|
-
Data_Get_Struct(argv[1], gsl_vector, v);
|
1069
|
-
gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
|
1070
|
-
} else if (PERMUTATION_P(argv[1])) {
|
1071
|
-
Data_Get_Struct(argv[1], gsl_permutation, p);
|
1072
|
-
gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
|
1073
|
-
} else {
|
1074
|
-
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[1])));
|
1075
|
-
}
|
1076
|
-
break;
|
1077
|
-
case 3:
|
1078
|
-
CHECK_RNG(argv[0]);
|
1079
|
-
CHECK_FIXNUM(argv[2]);
|
1080
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1081
|
-
if (VECTOR_P(argv[1])) {
|
1082
|
-
Data_Get_Struct(argv[1], gsl_vector, v);
|
1083
|
-
gsl_ran_shuffle(r, v->data, FIX2INT(argv[2]), sizeof(double));
|
1084
|
-
} else if (PERMUTATION_P(argv[1])) {
|
1085
|
-
Data_Get_Struct(argv[1], gsl_permutation, p);
|
1086
|
-
gsl_ran_shuffle(r, p->data, FIX2INT(argv[2]), sizeof(size_t));
|
1087
|
-
} else {
|
1088
|
-
rb_raise(rb_eTypeError,
|
1089
|
-
"wrong argument type %s (Vector or Permutation expected)",
|
1090
|
-
rb_class2name(CLASS_OF(argv[1])));
|
1091
|
-
}
|
1092
|
-
break;
|
1093
|
-
default:
|
1094
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
|
1095
|
-
break;
|
1096
|
-
}
|
1097
|
-
break;
|
1098
|
-
default:
|
1099
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1100
|
-
switch (argc) {
|
1101
|
-
case 1:
|
1102
|
-
if (VECTOR_P(argv[0])) {
|
1103
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1104
|
-
gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
|
1105
|
-
} else if (PERMUTATION_P(argv[0])) {
|
1106
|
-
Data_Get_Struct(argv[0], gsl_permutation, p);
|
1107
|
-
gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
|
1108
|
-
} else {
|
1109
|
-
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[0])));
|
1110
|
-
}
|
1111
|
-
break;
|
1112
|
-
case 2:
|
1113
|
-
CHECK_FIXNUM(argv[1]);
|
1114
|
-
if (VECTOR_P(argv[0])) {
|
1115
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1116
|
-
gsl_ran_shuffle(r, v->data, FIX2INT(argv[1]), sizeof(double));
|
1117
|
-
} else if (PERMUTATION_P(argv[0])) {
|
1118
|
-
Data_Get_Struct(argv[0], gsl_permutation, p);
|
1119
|
-
gsl_ran_shuffle(r, p->data, FIX2INT(argv[1]), sizeof(size_t));
|
1120
|
-
} else {
|
1121
|
-
rb_raise(rb_eTypeError,
|
1122
|
-
"wrong argument type %s (Vector or Permutation expected)",
|
1123
|
-
rb_class2name(CLASS_OF(argv[0])));
|
1124
|
-
}
|
1125
|
-
default:
|
1126
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
|
1127
|
-
break;
|
1128
|
-
}
|
1129
|
-
break;
|
1130
|
-
}
|
1131
|
-
return Qnil;
|
1132
|
-
}
|
1133
|
-
|
1134
|
-
static VALUE rb_gsl_ran_choose(int argc, VALUE *argv, VALUE obj)
|
1135
|
-
{
|
1136
|
-
gsl_rng *r = NULL;
|
1137
|
-
gsl_vector *v = NULL, *v2 = NULL;
|
1138
|
-
size_t k, n;
|
1139
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1140
|
-
switch (argc) {
|
1141
|
-
case 2:
|
1142
|
-
CHECK_VECTOR(argv[0]);
|
1143
|
-
CHECK_FIXNUM(argv[1]);
|
1144
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1145
|
-
n = v->size;
|
1146
|
-
k = FIX2INT(argv[1]);
|
1147
|
-
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
|
1148
|
-
v2 = gsl_vector_alloc(k);
|
1149
|
-
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
|
1150
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1151
|
-
break;
|
1152
|
-
case 1:
|
1153
|
-
CHECK_VECTOR(argv[0]);
|
1154
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1155
|
-
n = v->size;
|
1156
|
-
k = v->size;
|
1157
|
-
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
|
1158
|
-
v2 = gsl_vector_alloc(k);
|
1159
|
-
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
|
1160
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1161
|
-
break;
|
1162
|
-
default:
|
1163
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
|
1164
|
-
break;
|
1165
|
-
}
|
1166
|
-
}
|
1167
|
-
|
1168
|
-
static VALUE rb_gsl_ran_choose_singleton(int argc, VALUE *argv, VALUE obj)
|
1169
|
-
{
|
1170
|
-
gsl_rng *r = NULL;
|
1171
|
-
gsl_vector *v = NULL, *v2 = NULL;
|
1172
|
-
size_t k, n;
|
1173
|
-
switch (argc) {
|
1174
|
-
case 3:
|
1175
|
-
CHECK_RNG(argv[0]);
|
1176
|
-
CHECK_VECTOR(argv[1]);
|
1177
|
-
CHECK_FIXNUM(argv[2]);
|
1178
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1179
|
-
Data_Get_Struct(argv[1], gsl_vector, v);
|
1180
|
-
n = v->size;
|
1181
|
-
k = FIX2INT(argv[2]);
|
1182
|
-
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
|
1183
|
-
v2 = gsl_vector_alloc(k);
|
1184
|
-
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
|
1185
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1186
|
-
break;
|
1187
|
-
case 2:
|
1188
|
-
CHECK_RNG(argv[0]);
|
1189
|
-
CHECK_VECTOR(argv[1]);
|
1190
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1191
|
-
Data_Get_Struct(argv[1], gsl_vector, v);
|
1192
|
-
n = v->size;
|
1193
|
-
k = v->size;
|
1194
|
-
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
|
1195
|
-
v2 = gsl_vector_alloc(k);
|
1196
|
-
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
|
1197
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1198
|
-
break;
|
1199
|
-
default:
|
1200
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
|
1201
|
-
break;
|
1202
|
-
}
|
1203
|
-
}
|
1204
|
-
|
1205
|
-
static VALUE rb_gsl_ran_sample(VALUE obj, VALUE vv, VALUE kk)
|
1206
|
-
{
|
1207
|
-
gsl_rng *r = NULL;
|
1208
|
-
gsl_vector *v = NULL, *v2 = NULL;
|
1209
|
-
size_t k, n;
|
1210
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1211
|
-
Data_Get_Struct(vv, gsl_vector, v);
|
1212
|
-
n = v->size;
|
1213
|
-
k = FIX2INT(kk);
|
1214
|
-
v2 = gsl_vector_alloc(k);
|
1215
|
-
gsl_ran_sample(r, v2->data, k, v->data, n, sizeof(double));
|
1216
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1217
|
-
}
|
1218
|
-
|
1219
|
-
static VALUE rb_gsl_ran_dirichlet(int argc, VALUE *argv, VALUE obj)
|
1220
|
-
{
|
1221
|
-
gsl_rng *r = NULL;
|
1222
|
-
gsl_vector *v = NULL, *v2 = NULL;
|
1223
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1224
|
-
if (argc == 1) {
|
1225
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1226
|
-
v2 = gsl_vector_alloc(v->size);
|
1227
|
-
gsl_ran_dirichlet(r, v->size, v->data, v2->data);
|
1228
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
|
1229
|
-
} else if (argc == 2) {
|
1230
|
-
Data_Get_Struct(argv[0], gsl_vector, v);
|
1231
|
-
Data_Get_Struct(argv[1], gsl_vector, v2);
|
1232
|
-
gsl_ran_dirichlet(r, v->size, v->data, v2->data);
|
1233
|
-
return obj;
|
1234
|
-
} else {
|
1235
|
-
rb_raise(rb_eArgError, "wrong number of arguments (1 or 2 GSL_Vectors)");
|
1236
|
-
}
|
1237
|
-
}
|
1238
|
-
|
1239
|
-
static VALUE rb_gsl_ran_dirichlet_pdf(VALUE obj, VALUE a, VALUE t)
|
1240
|
-
{
|
1241
|
-
gsl_vector *alpha = NULL, *theta = NULL;
|
1242
|
-
Data_Get_Struct(a, gsl_vector, alpha);
|
1243
|
-
Data_Get_Struct(t, gsl_vector, theta);
|
1244
|
-
return rb_float_new(gsl_ran_dirichlet_pdf(alpha->size, alpha->data, theta->data));
|
1245
|
-
}
|
1246
|
-
static VALUE rb_gsl_ran_dirichlet_lnpdf(VALUE obj, VALUE a, VALUE t)
|
1247
|
-
{
|
1248
|
-
gsl_vector *alpha = NULL, *theta = NULL;
|
1249
|
-
Data_Get_Struct(a, gsl_vector, alpha);
|
1250
|
-
Data_Get_Struct(t, gsl_vector, theta);
|
1251
|
-
return rb_float_new(gsl_ran_dirichlet_lnpdf(alpha->size, alpha->data, theta->data));
|
1252
|
-
}
|
1253
|
-
|
1254
|
-
static VALUE rb_gsl_ran_discrete_new(VALUE klass, VALUE vv)
|
1255
|
-
{
|
1256
|
-
gsl_vector *v = NULL;
|
1257
|
-
gsl_ran_discrete_t *g = NULL;
|
1258
|
-
Data_Get_Struct(vv, gsl_vector, v);
|
1259
|
-
g = gsl_ran_discrete_preproc(v->size, v->data);
|
1260
|
-
return Data_Wrap_Struct(klass, 0, gsl_ran_discrete_free, g);
|
1261
|
-
}
|
1262
|
-
|
1263
|
-
static VALUE rb_gsl_ran_discrete(VALUE obj, VALUE gg)
|
1264
|
-
{
|
1265
|
-
gsl_rng *r = NULL;
|
1266
|
-
gsl_ran_discrete_t *g = NULL;
|
1267
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1268
|
-
Data_Get_Struct(gg, gsl_ran_discrete_t, g);
|
1269
|
-
return INT2FIX(gsl_ran_discrete(r, g));
|
1270
|
-
}
|
1271
|
-
|
1272
|
-
static VALUE rb_gsl_ran_discrete_pdf(VALUE obj, VALUE k, VALUE gg)
|
1273
|
-
{
|
1274
|
-
gsl_ran_discrete_t *g = NULL;
|
1275
|
-
Data_Get_Struct(gg, gsl_ran_discrete_t, g);
|
1276
|
-
return rb_float_new(gsl_ran_discrete_pdf(FIX2INT(k), g));
|
1277
|
-
}
|
1278
|
-
|
1279
|
-
/*****/
|
1280
|
-
VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double))
|
1281
|
-
{
|
1282
|
-
VALUE x, ary;
|
1283
|
-
gsl_vector *v = NULL, *vnew = NULL;
|
1284
|
-
gsl_matrix *m = NULL, *mnew = NULL;
|
1285
|
-
size_t i, j, n;
|
1286
|
-
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
|
1287
|
-
switch(TYPE(xx)) {
|
1288
|
-
case T_FIXNUM:
|
1289
|
-
case T_BIGNUM:
|
1290
|
-
case T_FLOAT:
|
1291
|
-
return rb_float_new((*f)(NUM2DBL(xx)));
|
1292
|
-
break;
|
1293
|
-
case T_ARRAY:
|
1294
|
-
// n = RARRAY(xx)->len;
|
1295
|
-
n = RARRAY_LEN(xx);
|
1296
|
-
ary = rb_ary_new2(n);
|
1297
|
-
for (i = 0; i < n; i++) {
|
1298
|
-
x = rb_ary_entry(xx, i);
|
1299
|
-
Need_Float(x);
|
1300
|
-
rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(x))));
|
1301
|
-
}
|
1302
|
-
return ary;
|
1303
|
-
break;
|
1304
|
-
default:
|
1305
|
-
#ifdef HAVE_NARRAY_H
|
1306
|
-
if (NA_IsNArray(xx)) {
|
1307
|
-
struct NARRAY *na;
|
1308
|
-
double *ptr1, *ptr2;
|
1309
|
-
xx = na_change_type(xx, NA_DFLOAT);
|
1310
|
-
GetNArray(xx, na);
|
1311
|
-
ptr1 = (double *) na->ptr;
|
1312
|
-
n = na->total;
|
1313
|
-
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
|
1314
|
-
ptr2 = NA_PTR_TYPE(ary, double*);
|
1315
|
-
for (i = 0; i < n; i++) ptr2[i] = (*f)(ptr1[i]);
|
1316
|
-
return ary;
|
1317
|
-
}
|
1318
|
-
#endif
|
1319
|
-
if (VECTOR_P(xx)) {
|
1320
|
-
Data_Get_Struct(xx, gsl_vector, v);
|
1321
|
-
vnew = gsl_vector_alloc(v->size);
|
1322
|
-
for (i = 0; i < v->size; i++) {
|
1323
|
-
gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i)));
|
1324
|
-
}
|
1325
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
1326
|
-
} else if (MATRIX_P(xx)) {
|
1327
|
-
Data_Get_Struct(xx, gsl_matrix, m);
|
1328
|
-
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
1329
|
-
for (i = 0; i < m->size1; i++) {
|
1330
|
-
for (j = 0; j < m->size2; j++) {
|
1331
|
-
gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j)));
|
1332
|
-
}
|
1333
|
-
}
|
1334
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
1335
|
-
} else {
|
1336
|
-
rb_raise(rb_eTypeError, "wrong argument type");
|
1337
|
-
}
|
1338
|
-
break;
|
1339
|
-
}
|
1340
|
-
/* never reach here */
|
1341
|
-
return Qnil;
|
1342
|
-
}
|
1343
|
-
|
1344
|
-
VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
|
1345
|
-
double (*f)(double, double))
|
1346
|
-
{
|
1347
|
-
VALUE x, ary;
|
1348
|
-
double a;
|
1349
|
-
gsl_vector *v = NULL, *vnew = NULL;
|
1350
|
-
gsl_matrix *m = NULL, *mnew = NULL;
|
1351
|
-
size_t i, j, n;
|
1352
|
-
Need_Float(aa);
|
1353
|
-
a = NUM2DBL(aa);
|
1354
|
-
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
|
1355
|
-
switch(TYPE(xx)) {
|
1356
|
-
case T_FIXNUM:
|
1357
|
-
case T_BIGNUM:
|
1358
|
-
case T_FLOAT:
|
1359
|
-
return rb_float_new((*f)(NUM2DBL(xx), a));
|
1360
|
-
break;
|
1361
|
-
case T_ARRAY:
|
1362
|
-
// n = RARRAY(xx)->len;
|
1363
|
-
n = RARRAY_LEN(xx);
|
1364
|
-
ary = rb_ary_new2(n);
|
1365
|
-
for (i = 0; i < n; i++) {
|
1366
|
-
x = rb_ary_entry(xx, i);
|
1367
|
-
Need_Float(x);
|
1368
|
-
rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(x), a)));
|
1369
|
-
}
|
1370
|
-
return ary;
|
1371
|
-
break;
|
1372
|
-
default:
|
1373
|
-
#ifdef HAVE_NARRAY_H
|
1374
|
-
if (NA_IsNArray(xx)) {
|
1375
|
-
struct NARRAY *na;
|
1376
|
-
double *ptr1, *ptr2;
|
1377
|
-
xx = na_change_type(xx, NA_DFLOAT);
|
1378
|
-
GetNArray(xx, na);
|
1379
|
-
ptr1 = (double *) na->ptr;
|
1380
|
-
n = na->total;
|
1381
|
-
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
|
1382
|
-
ptr2 = NA_PTR_TYPE(ary, double*);
|
1383
|
-
for (i = 0; i < n; i++) ptr2[i] = (*f)(ptr1[i], a);
|
1384
|
-
return ary;
|
1385
|
-
}
|
1386
|
-
#endif
|
1387
|
-
if (VECTOR_P(xx)) {
|
1388
|
-
Data_Get_Struct(xx, gsl_vector, v);
|
1389
|
-
vnew = gsl_vector_alloc(v->size);
|
1390
|
-
for (i = 0; i < v->size; i++) {
|
1391
|
-
gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a));
|
1392
|
-
}
|
1393
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
1394
|
-
} else if (MATRIX_P(xx)) {
|
1395
|
-
Data_Get_Struct(xx, gsl_matrix, m);
|
1396
|
-
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
1397
|
-
for (i = 0; i < m->size1; i++) {
|
1398
|
-
for (j = 0; j < m->size2; j++) {
|
1399
|
-
gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a));
|
1400
|
-
}
|
1401
|
-
}
|
1402
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
1403
|
-
} else {
|
1404
|
-
rb_raise(rb_eTypeError, "wrong argument type");
|
1405
|
-
}
|
1406
|
-
break;
|
1407
|
-
}
|
1408
|
-
/* never reach here */
|
1409
|
-
return Qnil;
|
1410
|
-
}
|
1411
|
-
|
1412
|
-
VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
|
1413
|
-
double (*f)(double, double, double))
|
1414
|
-
{
|
1415
|
-
VALUE x, ary;
|
1416
|
-
double a, b;
|
1417
|
-
gsl_vector *v = NULL, *vnew = NULL;
|
1418
|
-
gsl_matrix *m = NULL, *mnew = NULL;
|
1419
|
-
size_t i, j, n;
|
1420
|
-
Need_Float(aa); Need_Float(bb);
|
1421
|
-
a = NUM2DBL(aa); b = NUM2DBL(bb);
|
1422
|
-
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
|
1423
|
-
switch(TYPE(xx)) {
|
1424
|
-
case T_FIXNUM:
|
1425
|
-
case T_BIGNUM:
|
1426
|
-
case T_FLOAT:
|
1427
|
-
return rb_float_new((*f)(NUM2DBL(xx), a, b));
|
1428
|
-
break;
|
1429
|
-
case T_ARRAY:
|
1430
|
-
// n = RARRAY(xx)->len;
|
1431
|
-
n = RARRAY_LEN(xx);
|
1432
|
-
ary = rb_ary_new2(n);
|
1433
|
-
for (i = 0; i < n; i++) {
|
1434
|
-
x = rb_ary_entry(xx, i);
|
1435
|
-
Need_Float(x);
|
1436
|
-
rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(x), a, b)));
|
1437
|
-
}
|
1438
|
-
return ary;
|
1439
|
-
break;
|
1440
|
-
default:
|
1441
|
-
#ifdef HAVE_NARRAY_H
|
1442
|
-
if (NA_IsNArray(xx)) {
|
1443
|
-
struct NARRAY *na;
|
1444
|
-
double *ptr1, *ptr2;
|
1445
|
-
xx = na_change_type(xx, NA_DFLOAT);
|
1446
|
-
GetNArray(xx, na);
|
1447
|
-
ptr1 = (double *) na->ptr;
|
1448
|
-
n = na->total;
|
1449
|
-
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
|
1450
|
-
ptr2 = NA_PTR_TYPE(ary, double*);
|
1451
|
-
for (i = 0; i < n; i++) ptr2[i] = (*f)(ptr1[i], a, b);
|
1452
|
-
return ary;
|
1453
|
-
}
|
1454
|
-
#endif
|
1455
|
-
if (VECTOR_P(xx)) {
|
1456
|
-
Data_Get_Struct(xx, gsl_vector, v);
|
1457
|
-
vnew = gsl_vector_alloc(v->size);
|
1458
|
-
for (i = 0; i < v->size; i++) {
|
1459
|
-
gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a, b));
|
1460
|
-
}
|
1461
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
1462
|
-
} else if (MATRIX_P(xx)) {
|
1463
|
-
Data_Get_Struct(xx, gsl_matrix, m);
|
1464
|
-
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
1465
|
-
for (i = 0; i < m->size1; i++) {
|
1466
|
-
for (j = 0; j < m->size2; j++) {
|
1467
|
-
gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a, b));
|
1468
|
-
}
|
1469
|
-
}
|
1470
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
1471
|
-
} else {
|
1472
|
-
rb_raise(rb_eTypeError, "wrong argument type");
|
1473
|
-
}
|
1474
|
-
break;
|
1475
|
-
}
|
1476
|
-
/* never reach here */
|
1477
|
-
return Qnil;
|
1478
|
-
}
|
1479
|
-
|
1480
|
-
VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
|
1481
|
-
double (*f)(unsigned int, double))
|
1482
|
-
{
|
1483
|
-
VALUE x, ary;
|
1484
|
-
double a;
|
1485
|
-
gsl_vector *v = NULL, *vnew = NULL;
|
1486
|
-
gsl_vector_int *vi = NULL;
|
1487
|
-
gsl_matrix *m = NULL, *mnew = NULL;
|
1488
|
-
gsl_matrix_int *mi = NULL;
|
1489
|
-
size_t i, j, n;
|
1490
|
-
Need_Float(aa);
|
1491
|
-
a = NUM2DBL(aa);
|
1492
|
-
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
|
1493
|
-
switch(TYPE(xx)) {
|
1494
|
-
case T_FIXNUM:
|
1495
|
-
case T_BIGNUM:
|
1496
|
-
case T_FLOAT:
|
1497
|
-
return rb_float_new((*f)(NUM2UINT(xx), a));
|
1498
|
-
break;
|
1499
|
-
case T_ARRAY:
|
1500
|
-
// n = RARRAY(xx)->len;
|
1501
|
-
n = RARRAY_LEN(xx);
|
1502
|
-
ary = rb_ary_new2(n);
|
1503
|
-
for (i = 0; i < n; i++) {
|
1504
|
-
x = rb_ary_entry(xx, i);
|
1505
|
-
rb_ary_store(ary, i, rb_float_new((*f)(NUM2UINT(x), a)));
|
1506
|
-
}
|
1507
|
-
return ary;
|
1508
|
-
break;
|
1509
|
-
default:
|
1510
|
-
#ifdef HAVE_NARRAY_H
|
1511
|
-
if (NA_IsNArray(xx)) {
|
1512
|
-
struct NARRAY *na;
|
1513
|
-
char *ptr1, *ptr2;
|
1514
|
-
GetNArray(xx, na);
|
1515
|
-
n = na->total;
|
1516
|
-
ary = na_make_object(na->type, na->rank, na->shape, CLASS_OF(xx));
|
1517
|
-
ptr1 = (char *)na->ptr;
|
1518
|
-
ptr2 = (char *)NA_STRUCT(ary)->ptr;
|
1519
|
-
switch (na->type) {
|
1520
|
-
case NA_LINT:
|
1521
|
-
for (i = 0; i < n; i++)
|
1522
|
-
((int*)ptr2)[i] = (*f)((unsigned int) ((int*)ptr1)[i], a);
|
1523
|
-
break;
|
1524
|
-
default:
|
1525
|
-
for (i = 0; i < n; i++)
|
1526
|
-
((double*)ptr2)[i] = (*f)((unsigned int) ((double*)ptr1)[i], a);
|
1527
|
-
break;
|
1528
|
-
}
|
1529
|
-
return ary;
|
1530
|
-
}
|
1531
|
-
#endif
|
1532
|
-
if (VECTOR_P(xx)) {
|
1533
|
-
Data_Get_Struct(xx, gsl_vector, v);
|
1534
|
-
vnew = gsl_vector_alloc(v->size);
|
1535
|
-
for (i = 0; i < v->size; i++) {
|
1536
|
-
gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_get(v, i), a));
|
1537
|
-
}
|
1538
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
1539
|
-
} else if (VECTOR_INT_P(xx)) {
|
1540
|
-
Data_Get_Struct(xx, gsl_vector_int, vi);
|
1541
|
-
vnew = gsl_vector_alloc(vi->size);
|
1542
|
-
for (i = 0; i < vi->size; i++) {
|
1543
|
-
gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_int_get(vi, i), a));
|
1544
|
-
}
|
1545
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
|
1546
|
-
} else if (MATRIX_P(xx)) {
|
1547
|
-
Data_Get_Struct(xx, gsl_matrix, m);
|
1548
|
-
mnew = gsl_matrix_alloc(m->size1, m->size2);
|
1549
|
-
for (i = 0; i < m->size1; i++) {
|
1550
|
-
for (j = 0; j < m->size2; j++) {
|
1551
|
-
gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_get(m, i, j), a));
|
1552
|
-
}
|
1553
|
-
}
|
1554
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
1555
|
-
} else if (MATRIX_INT_P(xx)) {
|
1556
|
-
Data_Get_Struct(xx, gsl_matrix_int, mi);
|
1557
|
-
mnew = gsl_matrix_alloc(mi->size1, mi->size2);
|
1558
|
-
for (i = 0; i < mi->size1; i++) {
|
1559
|
-
for (j = 0; j < mi->size2; j++) {
|
1560
|
-
gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_int_get(mi, i, j), a));
|
1561
|
-
}
|
1562
|
-
}
|
1563
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
1564
|
-
} else {
|
1565
|
-
rb_raise(rb_eTypeError, "wrong argument type");
|
1566
|
-
}
|
1567
|
-
break;
|
1568
|
-
}
|
1569
|
-
/* never reach here */
|
1570
|
-
return Qnil;
|
1571
|
-
}
|
1572
|
-
|
1573
|
-
/*
|
1574
|
-
static VALUE rb_gsl_ran_erlang(VALUE obj, VALUE a, VALUE n)
|
1575
|
-
{
|
1576
|
-
gsl_rng *r = NULL;
|
1577
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1578
|
-
return rb_float_new(gsl_ran_erlang(r, NUM2DBL(a), NUM2DBL(n)));
|
1579
|
-
}
|
1580
|
-
|
1581
|
-
static VALUE rb_gsl_ran_erlang_pdf(VALUE obj, VALUE x, VALUE a, VALUE n)
|
1582
|
-
{
|
1583
|
-
return rb_float_new(gsl_ran_erlang_pdf(NUM2DBL(x), NUM2DBL(a), NUM2DBL(n)));
|
1584
|
-
}
|
1585
|
-
*/
|
1586
|
-
|
1587
|
-
|
1588
|
-
static VALUE rb_gsl_ran_gaussian_ziggurat(int argc, VALUE *argv, VALUE obj)
|
1589
|
-
{
|
1590
|
-
gsl_rng *r = NULL;
|
1591
|
-
gsl_vector *v;
|
1592
|
-
size_t n, i;
|
1593
|
-
double sigma = 1.0;
|
1594
|
-
switch (TYPE(obj)) {
|
1595
|
-
case T_MODULE: case T_CLASS: case T_OBJECT:
|
1596
|
-
switch (argc) {
|
1597
|
-
case 3:
|
1598
|
-
n = NUM2INT(argv[2]);
|
1599
|
-
sigma = NUM2DBL(argv[1]);
|
1600
|
-
CHECK_RNG(argv[0]);
|
1601
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1602
|
-
v = gsl_vector_alloc(n);
|
1603
|
-
for (i = 0; i < n; i++)
|
1604
|
-
gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
|
1605
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
1606
|
-
break;
|
1607
|
-
case 2:
|
1608
|
-
sigma = NUM2DBL(argv[1]);
|
1609
|
-
/* no break */
|
1610
|
-
case 1:
|
1611
|
-
CHECK_RNG(argv[0]);
|
1612
|
-
Data_Get_Struct(argv[0], gsl_rng, r);
|
1613
|
-
return rb_float_new(gsl_ran_gaussian_ziggurat(r, sigma));
|
1614
|
-
break;
|
1615
|
-
default:
|
1616
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 1 or 2)", argc);
|
1617
|
-
return Qnil;
|
1618
|
-
break;
|
1619
|
-
}
|
1620
|
-
break;
|
1621
|
-
default:
|
1622
|
-
Data_Get_Struct(obj, gsl_rng, r);
|
1623
|
-
switch (argc) {
|
1624
|
-
case 2:
|
1625
|
-
n = NUM2INT(argv[1]);
|
1626
|
-
sigma = NUM2DBL(argv[0]);
|
1627
|
-
v = gsl_vector_alloc(n);
|
1628
|
-
for (i = 0; i < n; i++)
|
1629
|
-
gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
|
1630
|
-
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
|
1631
|
-
break;
|
1632
|
-
case 1:
|
1633
|
-
sigma = NUM2DBL(argv[0]);
|
1634
|
-
/* no break */
|
1635
|
-
case 0:
|
1636
|
-
return rb_float_new(gsl_ran_gaussian_ziggurat(r, sigma));
|
1637
|
-
break;
|
1638
|
-
default:
|
1639
|
-
rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
|
1640
|
-
return Qnil;
|
1641
|
-
break;
|
1642
|
-
}
|
1643
|
-
break;
|
1644
|
-
}
|
1645
|
-
return Qnil;
|
1646
|
-
}
|
1647
|
-
|
1648
|
-
static VALUE rb_gsl_ran_gamma_mt(int argc, VALUE *argv, VALUE obj)
|
1649
|
-
{
|
1650
|
-
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_gamma_mt);
|
1651
|
-
}
|
1652
|
-
|
1653
|
-
void Init_gsl_ran(VALUE module)
|
1654
|
-
{
|
1655
|
-
VALUE mgsl_ran;
|
1656
|
-
VALUE cgsl_ran_discrete;
|
1657
|
-
|
1658
|
-
mgsl_ran = rb_define_module_under(module, "Ran");
|
1659
|
-
|
1660
|
-
rb_define_module_function(mgsl_ran, "gaussian", rb_gsl_ran_gaussian, -1);
|
1661
|
-
rb_define_module_function(mgsl_ran, "ugaussian", rb_gsl_ran_gaussian, -1);
|
1662
|
-
rb_define_method(cgsl_rng, "gaussian", rb_gsl_ran_gaussian, -1);
|
1663
|
-
rb_define_alias(cgsl_rng, "ugaussian", "gaussian");
|
1664
|
-
|
1665
|
-
rb_define_module_function(mgsl_ran, "gaussian_ratio_method",
|
1666
|
-
rb_gsl_ran_gaussian_ratio_method, -1);
|
1667
|
-
rb_define_module_function(mgsl_ran, "ugaussian_ratio_method",
|
1668
|
-
rb_gsl_ran_gaussian_ratio_method, -1);
|
1669
|
-
rb_define_method(cgsl_rng, "gaussian_ratio_method",
|
1670
|
-
rb_gsl_ran_gaussian_ratio_method, -1);
|
1671
|
-
rb_define_alias(cgsl_rng, "ugaussian_ratio_method", "gaussian_ratio_method");
|
1672
|
-
rb_define_module_function(mgsl_ran, "gaussian_pdf", rb_gsl_ran_gaussian_pdf, -1);
|
1673
|
-
rb_define_module_function(mgsl_ran, "ugaussian_pdf", rb_gsl_ran_gaussian_pdf, -1);
|
1674
|
-
|
1675
|
-
rb_define_module_function(mgsl_ran, "gaussian_tail", rb_gsl_ran_gaussian_tail, -1);
|
1676
|
-
rb_define_module_function(mgsl_ran, "ugaussian_tail", rb_gsl_ran_gaussian_tail, -1);
|
1677
|
-
rb_define_method(cgsl_rng, "gaussian_tail", rb_gsl_ran_gaussian_tail, -1);
|
1678
|
-
rb_define_alias(cgsl_rng, "ugaussian_tail", "gaussian_tail");
|
1679
|
-
rb_define_module_function(mgsl_ran, "gaussian_tail_pdf",
|
1680
|
-
rb_gsl_ran_gaussian_tail_pdf, -1);
|
1681
|
-
rb_define_module_function(mgsl_ran, "ugaussian_tail_pdf",
|
1682
|
-
rb_gsl_ran_gaussian_tail_pdf, -1);
|
1683
|
-
|
1684
|
-
rb_define_module_function(mgsl_ran, "bivariate_gaussian",
|
1685
|
-
rb_gsl_ran_bivariate_gaussian, -1);
|
1686
|
-
rb_define_method(cgsl_rng, "bivariate_gaussian",
|
1687
|
-
rb_gsl_ran_bivariate_gaussian, -1);
|
1688
|
-
rb_define_module_function(mgsl_ran, "bivariate_gaussian_pdf",
|
1689
|
-
rb_gsl_ran_bivariate_gaussian_pdf, 5);
|
1690
|
-
|
1691
|
-
rb_define_module_function(mgsl_ran, "exponential", rb_gsl_ran_exponential, -1);
|
1692
|
-
rb_define_method(cgsl_rng, "exponential", rb_gsl_ran_exponential, -1);
|
1693
|
-
rb_define_module_function(mgsl_ran, "exponential_pdf",
|
1694
|
-
rb_gsl_ran_exponential_pdf, 2);
|
1695
|
-
|
1696
|
-
rb_define_module_function(mgsl_ran, "laplace", rb_gsl_ran_laplace, -1);
|
1697
|
-
rb_define_method(cgsl_rng, "laplace", rb_gsl_ran_laplace, -1);
|
1698
|
-
rb_define_module_function(mgsl_ran, "laplace_pdf", rb_gsl_ran_laplace_pdf, 2);
|
1699
|
-
|
1700
|
-
rb_define_module_function(mgsl_ran, "exppow", rb_gsl_ran_exppow, -1);
|
1701
|
-
rb_define_method(cgsl_rng, "exppow", rb_gsl_ran_exppow, -1);
|
1702
|
-
rb_define_module_function(mgsl_ran, "exppow_pdf", rb_gsl_ran_exppow_pdf, 3);
|
1703
|
-
|
1704
|
-
rb_define_module_function(mgsl_ran, "cauchy", rb_gsl_ran_cauchy, -1);
|
1705
|
-
rb_define_method(cgsl_rng, "cauchy", rb_gsl_ran_cauchy, -1);
|
1706
|
-
rb_define_module_function(mgsl_ran, "cauchy_pdf", rb_gsl_ran_cauchy_pdf, 2);
|
1707
|
-
|
1708
|
-
rb_define_module_function(mgsl_ran, "rayleigh", rb_gsl_ran_rayleigh, -1);
|
1709
|
-
rb_define_method(cgsl_rng, "rayleigh", rb_gsl_ran_rayleigh, -1);
|
1710
|
-
rb_define_module_function(mgsl_ran, "rayleigh_pdf", rb_gsl_ran_rayleigh_pdf, 2);
|
1711
|
-
|
1712
|
-
rb_define_module_function(mgsl_ran, "rayleigh_tail", rb_gsl_ran_rayleigh_tail, -1);
|
1713
|
-
rb_define_method(cgsl_rng, "rayleigh_tail", rb_gsl_ran_rayleigh_tail, -1);
|
1714
|
-
rb_define_module_function(mgsl_ran, "rayleigh_tail_pdf",
|
1715
|
-
rb_gsl_ran_rayleigh_tail_pdf, 3);
|
1716
|
-
|
1717
|
-
rb_define_module_function(mgsl_ran, "landau", rb_gsl_ran_landau, -1);
|
1718
|
-
rb_define_method(cgsl_rng, "landau", rb_gsl_ran_landau, -1);
|
1719
|
-
rb_define_module_function(mgsl_ran, "landau_pdf", rb_gsl_ran_landau_pdf, 1);
|
1720
|
-
|
1721
|
-
rb_define_method(cgsl_rng, "levy", rb_gsl_ran_levy, -1);
|
1722
|
-
rb_define_method(cgsl_rng, "levy_skew", rb_gsl_ran_levy_skew, -1);
|
1723
|
-
rb_define_module_function(mgsl_ran, "levy", rb_gsl_ran_levy, -1);
|
1724
|
-
rb_define_module_function(mgsl_ran, "levy_skew", rb_gsl_ran_levy_skew, -1);
|
1725
|
-
|
1726
|
-
rb_define_module_function(mgsl_ran, "gamma", rb_gsl_ran_gamma, -1);
|
1727
|
-
rb_define_method(cgsl_rng, "gamma", rb_gsl_ran_gamma, -1);
|
1728
|
-
rb_define_module_function(mgsl_ran, "gamma_pdf", rb_gsl_ran_gamma_pdf, 3);
|
1729
|
-
|
1730
|
-
rb_define_module_function(mgsl_ran, "flat", rb_gsl_ran_flat, -1);
|
1731
|
-
rb_define_method(cgsl_rng, "flat", rb_gsl_ran_flat, -1);
|
1732
|
-
rb_define_module_function(mgsl_ran, "flat_pdf", rb_gsl_ran_flat_pdf, 3);
|
1733
|
-
|
1734
|
-
rb_define_module_function(mgsl_ran, "lognormal", rb_gsl_ran_lognormal, -1);
|
1735
|
-
rb_define_method(cgsl_rng, "lognormal", rb_gsl_ran_lognormal, -1);
|
1736
|
-
rb_define_module_function(mgsl_ran, "lognormal_pdf", rb_gsl_ran_lognormal_pdf, 3);
|
1737
|
-
|
1738
|
-
rb_define_module_function(mgsl_ran, "chisq", rb_gsl_ran_chisq, -1);
|
1739
|
-
rb_define_method(cgsl_rng, "chisq", rb_gsl_ran_chisq, -1);
|
1740
|
-
rb_define_module_function(mgsl_ran, "chisq_pdf", rb_gsl_ran_chisq_pdf, 2);
|
1741
|
-
|
1742
|
-
rb_define_module_function(mgsl_ran, "fdist", rb_gsl_ran_fdist, -1);
|
1743
|
-
rb_define_method(cgsl_rng, "fdist", rb_gsl_ran_fdist, -1);
|
1744
|
-
rb_define_module_function(mgsl_ran, "fdist_pdf", rb_gsl_ran_fdist_pdf, 3);
|
1745
|
-
|
1746
|
-
rb_define_module_function(mgsl_ran, "tdist", rb_gsl_ran_tdist, -1);
|
1747
|
-
rb_define_method(cgsl_rng, "tdist", rb_gsl_ran_tdist, -1);
|
1748
|
-
rb_define_module_function(mgsl_ran, "tdist_pdf", rb_gsl_ran_tdist_pdf, 2);
|
1749
|
-
|
1750
|
-
rb_define_module_function(mgsl_ran, "beta", rb_gsl_ran_beta, -1);
|
1751
|
-
rb_define_method(cgsl_rng, "beta", rb_gsl_ran_beta, -1);
|
1752
|
-
rb_define_module_function(mgsl_ran, "beta_pdf", rb_gsl_ran_beta_pdf, 3);
|
1753
|
-
|
1754
|
-
rb_define_module_function(mgsl_ran, "logistic", rb_gsl_ran_logistic, -1);
|
1755
|
-
rb_define_method(cgsl_rng, "logistic", rb_gsl_ran_logistic, -1);
|
1756
|
-
rb_define_module_function(mgsl_ran, "logistic_pdf", rb_gsl_ran_logistic_pdf, 2);
|
1757
|
-
|
1758
|
-
rb_define_module_function(mgsl_ran, "pareto", rb_gsl_ran_pareto, -1);
|
1759
|
-
rb_define_method(cgsl_rng, "pareto", rb_gsl_ran_pareto, -1);
|
1760
|
-
rb_define_module_function(mgsl_ran, "pareto_pdf", rb_gsl_ran_pareto_pdf, 3);
|
1761
|
-
|
1762
|
-
rb_define_module_function(mgsl_ran, "weibull", rb_gsl_ran_weibull, -1);
|
1763
|
-
rb_define_method(cgsl_rng, "weibull", rb_gsl_ran_weibull, -1);
|
1764
|
-
rb_define_module_function(mgsl_ran, "weibull_pdf", rb_gsl_ran_weibull_pdf, 3);
|
1765
|
-
|
1766
|
-
rb_define_module_function(mgsl_ran, "gumbel1", rb_gsl_ran_gumbel1, -1);
|
1767
|
-
rb_define_method(cgsl_rng, "gumbel1", rb_gsl_ran_gumbel1, -1);
|
1768
|
-
rb_define_module_function(mgsl_ran, "gumbel1_pdf", rb_gsl_ran_gumbel1_pdf, 3);
|
1769
|
-
|
1770
|
-
rb_define_module_function(mgsl_ran, "gumbel2", rb_gsl_ran_gumbel2, -1);
|
1771
|
-
rb_define_method(cgsl_rng, "gumbel2", rb_gsl_ran_gumbel2, -1);
|
1772
|
-
rb_define_module_function(mgsl_ran, "gumbel2_pdf", rb_gsl_ran_gumbel2_pdf, 3);
|
1773
|
-
|
1774
|
-
rb_define_module_function(mgsl_ran, "poisson", rb_gsl_ran_poisson, -1);
|
1775
|
-
rb_define_method(cgsl_rng, "poisson", rb_gsl_ran_poisson, -1);
|
1776
|
-
rb_define_module_function(mgsl_ran, "poisson_pdf", rb_gsl_ran_poisson_pdf, 2);
|
1777
|
-
|
1778
|
-
rb_define_module_function(mgsl_ran, "bernoulli", rb_gsl_ran_bernoulli, -1);
|
1779
|
-
rb_define_method(cgsl_rng, "bernoulli", rb_gsl_ran_bernoulli, -1);
|
1780
|
-
rb_define_module_function(mgsl_ran, "bernoulli_pdf", rb_gsl_ran_bernoulli_pdf, 2);
|
1781
|
-
|
1782
|
-
rb_define_module_function(mgsl_ran, "binomial", rb_gsl_ran_binomial, -1);
|
1783
|
-
rb_define_method(cgsl_rng, "binomial", rb_gsl_ran_binomial, -1);
|
1784
|
-
rb_define_module_function(mgsl_ran, "binomial_tpe", rb_gsl_ran_binomial_tpe, -1);
|
1785
|
-
rb_define_method(cgsl_rng, "binomial_tpe", rb_gsl_ran_binomial_tpe, -1);
|
1786
|
-
rb_define_module_function(mgsl_ran, "binomial_pdf", rb_gsl_ran_binomial_pdf, 3);
|
1787
|
-
|
1788
|
-
rb_define_module_function(mgsl_ran, "negative_binomial",
|
1789
|
-
rb_gsl_ran_negative_binomial, -1);
|
1790
|
-
rb_define_method(cgsl_rng, "negative_binomial", rb_gsl_ran_negative_binomial, -1);
|
1791
|
-
rb_define_module_function(mgsl_ran, "negative_binomial_pdf", rb_gsl_ran_negative_binomial_pdf, 3);
|
1792
|
-
|
1793
|
-
rb_define_module_function(mgsl_ran, "pascal", rb_gsl_ran_pascal, -1);
|
1794
|
-
rb_define_method(cgsl_rng, "pascal", rb_gsl_ran_pascal, -1);
|
1795
|
-
rb_define_module_function(mgsl_ran, "pascal_pdf", rb_gsl_ran_pascal_pdf, 3);
|
1796
|
-
|
1797
|
-
rb_define_module_function(mgsl_ran, "geometric", rb_gsl_ran_geometric, -1);
|
1798
|
-
rb_define_method(cgsl_rng, "geometric", rb_gsl_ran_geometric, -1);
|
1799
|
-
rb_define_module_function(mgsl_ran, "geometric_pdf", rb_gsl_ran_geometric_pdf, 2);
|
1800
|
-
|
1801
|
-
rb_define_module_function(mgsl_ran, "hypergeometric", rb_gsl_ran_hypergeometric, -1);
|
1802
|
-
rb_define_method(cgsl_rng, "hypergeometric", rb_gsl_ran_hypergeometric, -1);
|
1803
|
-
rb_define_module_function(mgsl_ran, "hypergeometric_pdf",
|
1804
|
-
rb_gsl_ran_hypergeometric_pdf, 4);
|
1805
|
-
|
1806
|
-
rb_define_module_function(mgsl_ran, "logarithmic", rb_gsl_ran_logarithmic, -1);
|
1807
|
-
rb_define_method(cgsl_rng, "logarithmic", rb_gsl_ran_logarithmic, -1);
|
1808
|
-
rb_define_module_function(mgsl_ran, "logarithmic_pdf",
|
1809
|
-
rb_gsl_ran_logarithmic_pdf, 2);
|
1810
|
-
|
1811
|
-
rb_define_module_function(mgsl_ran, "dir_2d", rb_gsl_ran_dir_2d, -1);
|
1812
|
-
rb_define_module_function(mgsl_ran, "dir_2d_trig_method",
|
1813
|
-
rb_gsl_ran_dir_2d_trig_method, -1);
|
1814
|
-
rb_define_module_function(mgsl_ran, "dir_3d", rb_gsl_ran_dir_3d, -1);
|
1815
|
-
rb_define_module_function(mgsl_ran, "dir_nd", rb_gsl_ran_dir_nd, -1);
|
1816
|
-
|
1817
|
-
rb_define_method(cgsl_rng, "dir_2d", rb_gsl_ran_dir_2d, -1);
|
1818
|
-
rb_define_method(cgsl_rng, "dir_2d_trig_method", rb_gsl_ran_dir_2d_trig_method, -1);
|
1819
|
-
rb_define_method(cgsl_rng, "dir_3d", rb_gsl_ran_dir_3d, -1);
|
1820
|
-
rb_define_method(cgsl_rng, "dir_nd", rb_gsl_ran_dir_nd, -1);
|
1821
|
-
|
1822
|
-
rb_define_method(cgsl_rng, "shuffle", rb_gsl_ran_shuffle, -1);
|
1823
|
-
rb_define_module_function(mgsl_ran, "shuffle", rb_gsl_ran_shuffle, -1);
|
1824
|
-
rb_define_method(cgsl_rng, "choose", rb_gsl_ran_choose, -1);
|
1825
|
-
rb_define_singleton_method(mgsl_ran, "choose", rb_gsl_ran_choose_singleton, -1);
|
1826
|
-
rb_define_method(cgsl_rng, "sample", rb_gsl_ran_sample, 2);
|
1827
|
-
|
1828
|
-
/*****/
|
1829
|
-
|
1830
|
-
cgsl_ran_discrete = rb_define_class_under(mgsl_ran, "Discrete", cGSL_Object);
|
1831
|
-
rb_define_singleton_method(cgsl_ran_discrete, "alloc", rb_gsl_ran_discrete_new, 1);
|
1832
|
-
rb_define_singleton_method(cgsl_ran_discrete, "preproc", rb_gsl_ran_discrete_new, 1);
|
1833
|
-
rb_define_method(cgsl_rng, "discrete", rb_gsl_ran_discrete, 1);
|
1834
|
-
rb_define_module_function(mgsl_ran, "discrete_pdf", rb_gsl_ran_discrete_pdf, 2);
|
1835
|
-
|
1836
|
-
rb_define_method(cgsl_rng, "dirichlet", rb_gsl_ran_dirichlet, -1);
|
1837
|
-
rb_define_module_function(mgsl_ran, "dirichlet_pdf", rb_gsl_ran_dirichlet_pdf, 2);
|
1838
|
-
rb_define_module_function(mgsl_ran, "dirichlet_lnpdf", rb_gsl_ran_dirichlet_lnpdf, 2);
|
1839
|
-
|
1840
|
-
/* rb_define_method(cgsl_rng, "erlang", rb_gsl_ran_erlang, 2);
|
1841
|
-
rb_define_method(module, "ran_erlang_pdf", rb_gsl_ran_erlang_pdf, 3);
|
1842
|
-
rb_define_method(mgsl_ran, "erlang_pdf", rb_gsl_ran_erlang_pdf, 3);*/
|
1843
|
-
|
1844
|
-
rb_define_module_function(mgsl_ran, "gaussian_ziggurat", rb_gsl_ran_gaussian_ziggurat, -1);
|
1845
|
-
rb_define_method(cgsl_rng, "gaussian_ziggurat", rb_gsl_ran_gaussian_ziggurat, -1);
|
1846
|
-
rb_define_module_function(mgsl_ran, "gamma_mt", rb_gsl_ran_gamma_mt, -1);
|
1847
|
-
rb_define_method(cgsl_rng, "gamma_mt", rb_gsl_ran_gamma_mt, -1);
|
1848
|
-
}
|