gsl 1.15.3 → 1.16.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.travis.yml +24 -0
- data/AUTHORS +10 -2
- data/COPYING +341 -339
- data/ChangeLog +612 -554
- data/Gemfile +4 -0
- data/README.md +77 -0
- data/Rakefile +14 -93
- data/THANKS +1 -1
- data/examples/blas/blas.rb +1 -1
- data/examples/bspline.rb +3 -3
- data/examples/complex/functions.rb +4 -4
- data/examples/complex/mul.rb +1 -1
- data/examples/const/physconst.rb +4 -4
- data/examples/const/travel.rb +4 -4
- data/examples/eigen/nonsymmv.rb +1 -1
- data/examples/eigen/qhoscillator.rb +3 -3
- data/examples/fft/radix2.rb +1 -1
- data/examples/fft/real-halfcomplex.rb +3 -3
- data/examples/fft/real-halfcomplex2.rb +3 -3
- data/examples/fit/expfit.rb +1 -1
- data/examples/fit/multifit.rb +1 -1
- data/examples/fit/ndlinear.rb +44 -44
- data/examples/fit/nonlinearfit.rb +1 -1
- data/examples/fit/wlinear.rb +3 -3
- data/examples/function/function.rb +1 -1
- data/examples/function/min.rb +1 -1
- data/examples/function/synchrotron.rb +2 -2
- data/examples/gallery/koch.rb +1 -1
- data/examples/histogram/cauchy.rb +2 -2
- data/examples/histogram/exponential.rb +1 -1
- data/examples/histogram/histo3d.rb +1 -1
- data/examples/histogram/histogram-pdf.rb +2 -2
- data/examples/histogram/xexp.rb +1 -1
- data/examples/integration/ahmed.rb +2 -2
- data/examples/integration/cosmology.rb +7 -7
- data/examples/integration/friedmann.rb +4 -4
- data/examples/integration/qng.rb +1 -1
- data/examples/interp/demo.rb +2 -2
- data/examples/linalg/LQ_solve.rb +1 -1
- data/examples/linalg/LU.rb +1 -1
- data/examples/linalg/LU2.rb +1 -1
- data/examples/linalg/LU_narray.rb +1 -1
- data/examples/linalg/PTLQ.rb +1 -1
- data/examples/linalg/QRPT.rb +1 -1
- data/examples/linalg/chol.rb +1 -1
- data/examples/linalg/chol_narray.rb +1 -1
- data/examples/linalg/complex.rb +1 -1
- data/examples/math/elementary.rb +1 -1
- data/examples/math/functions.rb +1 -1
- data/examples/math/inf_nan.rb +1 -1
- data/examples/math/minmax.rb +1 -1
- data/examples/math/power.rb +1 -1
- data/examples/math/test.rb +1 -1
- data/examples/min.rb +1 -1
- data/examples/multimin/bundle.rb +1 -1
- data/examples/multimin/cqp.rb +17 -17
- data/examples/multiroot/fsolver3.rb +1 -1
- data/examples/odeiv/binarysystem.rb +12 -12
- data/examples/odeiv/demo.rb +3 -3
- data/examples/odeiv/frei1.rb +7 -7
- data/examples/odeiv/frei2.rb +4 -4
- data/examples/odeiv/oscillator.rb +1 -1
- data/examples/odeiv/sedov.rb +3 -3
- data/examples/odeiv/whitedwarf.rb +11 -11
- data/examples/permutation/ex1.rb +2 -2
- data/examples/permutation/permutation.rb +1 -1
- data/examples/poly/demo.rb +1 -1
- data/examples/random/diffusion.rb +1 -1
- data/examples/random/generator.rb +2 -2
- data/examples/random/randomwalk.rb +3 -3
- data/examples/random/rng.rb +1 -1
- data/examples/roots/bisection.rb +1 -1
- data/examples/roots/brent.rb +1 -1
- data/examples/roots/demo.rb +1 -1
- data/examples/roots/newton.rb +2 -2
- data/examples/roots/recombination.gp +0 -1
- data/examples/sf/hyperg.rb +1 -1
- data/examples/sf/sphbessel.rb +1 -1
- data/examples/sort/sort.rb +1 -1
- data/examples/tamu_anova.rb +4 -4
- data/examples/vector/add.rb +1 -1
- data/examples/vector/decimate.rb +1 -1
- data/examples/vector/gnuplot.rb +8 -8
- data/examples/vector/vector.rb +2 -2
- data/examples/wavelet/wavelet1.rb +1 -1
- data/ext/{alf.c → gsl_native/alf.c} +10 -10
- data/ext/{array.c → gsl_native/array.c} +70 -159
- data/ext/{array_complex.c → gsl_native/array_complex.c} +63 -66
- data/ext/{blas.c → gsl_native/blas.c} +2 -3
- data/ext/{blas1.c → gsl_native/blas1.c} +35 -36
- data/ext/{blas2.c → gsl_native/blas2.c} +57 -62
- data/ext/{blas3.c → gsl_native/blas3.c} +57 -58
- data/ext/{block.c → gsl_native/block.c} +14 -18
- data/ext/{block_source.c → gsl_native/block_source.h} +110 -112
- data/ext/gsl_native/bspline.c +122 -0
- data/ext/{bundle.c → gsl_native/bundle.c} +0 -0
- data/ext/{cdf.c → gsl_native/cdf.c} +79 -93
- data/ext/{cheb.c → gsl_native/cheb.c} +78 -89
- data/ext/{combination.c → gsl_native/combination.c} +11 -19
- data/ext/{common.c → gsl_native/common.c} +9 -41
- data/ext/{complex.c → gsl_native/complex.c} +116 -118
- data/ext/gsl_native/const.c +331 -0
- data/ext/{const_additional.c → gsl_native/const_additional.c} +13 -34
- data/ext/gsl_native/cqp.c +283 -0
- data/ext/{deriv.c → gsl_native/deriv.c} +25 -33
- data/ext/{dht.c → gsl_native/dht.c} +23 -31
- data/ext/{diff.c → gsl_native/diff.c} +26 -28
- data/ext/{dirac.c → gsl_native/dirac.c} +45 -46
- data/ext/{eigen.c → gsl_native/eigen.c} +1044 -1095
- data/ext/{error.c → gsl_native/error.c} +18 -18
- data/ext/gsl_native/extconf.rb +118 -0
- data/ext/{fft.c → gsl_native/fft.c} +197 -204
- data/ext/{fit.c → gsl_native/fit.c} +17 -18
- data/ext/gsl_native/fresnel.c +312 -0
- data/ext/{function.c → gsl_native/function.c} +37 -43
- data/ext/{geometry.c → gsl_native/geometry.c} +16 -16
- data/ext/{graph.c → gsl_native/graph.c} +39 -89
- data/ext/{gsl.c → gsl_native/gsl.c} +12 -33
- data/ext/{gsl_narray.c → gsl_native/gsl_narray.c} +20 -30
- data/ext/{histogram.c → gsl_native/histogram.c} +133 -160
- data/ext/{histogram2d.c → gsl_native/histogram2d.c} +78 -104
- data/ext/{histogram3d.c → gsl_native/histogram3d.c} +76 -76
- data/ext/{histogram3d_source.c → gsl_native/histogram3d_source.c} +196 -197
- data/ext/{histogram_find.c → gsl_native/histogram_find.c} +32 -34
- data/ext/{histogram_oper.c → gsl_native/histogram_oper.c} +43 -52
- data/ext/{ieee.c → gsl_native/ieee.c} +9 -21
- data/{include → ext/gsl_native/include}/rb_gsl.h +4 -26
- data/{include → ext/gsl_native/include}/rb_gsl_array.h +15 -39
- data/{include → ext/gsl_native/include}/rb_gsl_cheb.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_common.h +61 -61
- data/{include → ext/gsl_native/include}/rb_gsl_complex.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_const.h +0 -6
- data/ext/gsl_native/include/rb_gsl_dirac.h +6 -0
- data/{include → ext/gsl_native/include}/rb_gsl_eigen.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_fft.h +0 -13
- data/{include → ext/gsl_native/include}/rb_gsl_fit.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_function.h +0 -4
- data/{include → ext/gsl_native/include}/rb_gsl_graph.h +2 -4
- data/{include → ext/gsl_native/include}/rb_gsl_histogram.h +8 -8
- data/{include → ext/gsl_native/include}/rb_gsl_histogram3d.h +50 -50
- data/{include → ext/gsl_native/include}/rb_gsl_integration.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_interp.h +0 -5
- data/{include → ext/gsl_native/include}/rb_gsl_linalg.h +2 -6
- data/{include → ext/gsl_native/include}/rb_gsl_math.h +0 -6
- data/{include → ext/gsl_native/include}/rb_gsl_odeiv.h +0 -3
- data/{include → ext/gsl_native/include}/rb_gsl_poly.h +3 -7
- data/{include → ext/gsl_native/include}/rb_gsl_rational.h +1 -8
- data/{include → ext/gsl_native/include}/rb_gsl_rng.h +0 -1
- data/{include → ext/gsl_native/include}/rb_gsl_root.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_sf.h +39 -48
- data/{include → ext/gsl_native/include}/rb_gsl_statistics.h +1 -1
- data/{include → ext/gsl_native/include}/rb_gsl_tensor.h +0 -2
- data/{include → ext/gsl_native/include}/rb_gsl_with_narray.h +3 -1
- data/{include → ext/gsl_native/include}/templates_off.h +0 -0
- data/{include → ext/gsl_native/include}/templates_on.h +1 -1
- data/ext/{integration.c → gsl_native/integration.c} +164 -189
- data/ext/{interp.c → gsl_native/interp.c} +25 -38
- data/ext/gsl_native/jacobi.c +733 -0
- data/ext/{linalg.c → gsl_native/linalg.c} +462 -589
- data/ext/{linalg_complex.c → gsl_native/linalg_complex.c} +93 -106
- data/ext/{math.c → gsl_native/math.c} +48 -67
- data/ext/{matrix.c → gsl_native/matrix.c} +13 -16
- data/ext/{matrix_complex.c → gsl_native/matrix_complex.c} +119 -123
- data/ext/{matrix_double.c → gsl_native/matrix_double.c} +79 -82
- data/ext/{matrix_int.c → gsl_native/matrix_int.c} +53 -54
- data/ext/{matrix_source.c → gsl_native/matrix_source.h} +292 -318
- data/ext/{min.c → gsl_native/min.c} +45 -76
- data/ext/{monte.c → gsl_native/monte.c} +50 -64
- data/ext/{multifit.c → gsl_native/multifit.c} +142 -151
- data/ext/{multimin.c → gsl_native/multimin.c} +64 -92
- data/ext/{multimin_fsdf.c → gsl_native/multimin_fsdf.c} +16 -16
- data/ext/{multiroots.c → gsl_native/multiroots.c} +73 -76
- data/ext/{multiset.c → gsl_native/multiset.c} +4 -8
- data/ext/{ndlinear.c → gsl_native/ndlinear.c} +320 -321
- data/ext/{nmf.c → gsl_native/nmf.c} +11 -11
- data/ext/{nmf_wrap.c → gsl_native/nmf_wrap.c} +1 -1
- data/ext/{ntuple.c → gsl_native/ntuple.c} +23 -23
- data/ext/{odeiv.c → gsl_native/odeiv.c} +101 -116
- data/ext/gsl_native/ool.c +879 -0
- data/ext/{permutation.c → gsl_native/permutation.c} +39 -37
- data/ext/{poly.c → gsl_native/poly.c} +10 -13
- data/ext/{poly2.c → gsl_native/poly2.c} +16 -16
- data/ext/{poly_source.c → gsl_native/poly_source.h} +249 -293
- data/ext/{qrng.c → gsl_native/qrng.c} +9 -20
- data/ext/{randist.c → gsl_native/randist.c} +222 -247
- data/ext/{rational.c → gsl_native/rational.c} +12 -12
- data/ext/{rng.c → gsl_native/rng.c} +30 -47
- data/ext/{root.c → gsl_native/root.c} +47 -48
- data/ext/{sf.c → gsl_native/sf.c} +196 -244
- data/ext/{sf_airy.c → gsl_native/sf_airy.c} +2 -2
- data/ext/{sf_bessel.c → gsl_native/sf_bessel.c} +7 -7
- data/ext/{sf_clausen.c → gsl_native/sf_clausen.c} +1 -1
- data/ext/{sf_coulomb.c → gsl_native/sf_coulomb.c} +40 -40
- data/ext/{sf_coupling.c → gsl_native/sf_coupling.c} +30 -30
- data/ext/{sf_dawson.c → gsl_native/sf_dawson.c} +1 -1
- data/ext/{sf_debye.c → gsl_native/sf_debye.c} +1 -10
- data/ext/{sf_dilog.c → gsl_native/sf_dilog.c} +1 -1
- data/ext/{sf_elementary.c → gsl_native/sf_elementary.c} +3 -3
- data/ext/{sf_ellint.c → gsl_native/sf_ellint.c} +43 -43
- data/ext/{sf_elljac.c → gsl_native/sf_elljac.c} +3 -3
- data/ext/{sf_erfc.c → gsl_native/sf_erfc.c} +1 -5
- data/ext/{sf_exp.c → gsl_native/sf_exp.c} +3 -3
- data/ext/{sf_expint.c → gsl_native/sf_expint.c} +2 -12
- data/ext/{sf_fermi_dirac.c → gsl_native/sf_fermi_dirac.c} +1 -1
- data/ext/{sf_gamma.c → gsl_native/sf_gamma.c} +2 -6
- data/ext/{sf_gegenbauer.c → gsl_native/sf_gegenbauer.c} +1 -1
- data/ext/{sf_hyperg.c → gsl_native/sf_hyperg.c} +1 -1
- data/ext/{sf_laguerre.c → gsl_native/sf_laguerre.c} +4 -4
- data/ext/{sf_lambert.c → gsl_native/sf_lambert.c} +1 -1
- data/ext/{sf_legendre.c → gsl_native/sf_legendre.c} +1 -1
- data/ext/{sf_log.c → gsl_native/sf_log.c} +4 -4
- data/ext/gsl_native/sf_mathieu.c +235 -0
- data/ext/{sf_power.c → gsl_native/sf_power.c} +1 -1
- data/ext/{sf_psi.c → gsl_native/sf_psi.c} +3 -12
- data/ext/{sf_synchrotron.c → gsl_native/sf_synchrotron.c} +1 -1
- data/ext/{sf_transport.c → gsl_native/sf_transport.c} +1 -1
- data/ext/{sf_trigonometric.c → gsl_native/sf_trigonometric.c} +4 -4
- data/ext/{sf_zeta.c → gsl_native/sf_zeta.c} +1 -5
- data/ext/{signal.c → gsl_native/signal.c} +63 -68
- data/ext/{siman.c → gsl_native/siman.c} +45 -49
- data/ext/{sort.c → gsl_native/sort.c} +6 -7
- data/ext/{spline.c → gsl_native/spline.c} +28 -46
- data/ext/{stats.c → gsl_native/stats.c} +105 -118
- data/ext/{sum.c → gsl_native/sum.c} +34 -34
- data/ext/{tamu_anova.c → gsl_native/tamu_anova.c} +1 -1
- data/ext/{tensor.c → gsl_native/tensor.c} +8 -11
- data/ext/{tensor_source.c → gsl_native/tensor_source.h} +147 -148
- data/ext/{vector.c → gsl_native/vector.c} +11 -14
- data/ext/{vector_complex.c → gsl_native/vector_complex.c} +179 -184
- data/ext/{vector_double.c → gsl_native/vector_double.c} +178 -183
- data/ext/{vector_int.c → gsl_native/vector_int.c} +27 -29
- data/ext/{vector_source.c → gsl_native/vector_source.h} +428 -443
- data/ext/{wavelet.c → gsl_native/wavelet.c} +224 -246
- data/gsl.gemspec +29 -0
- data/lib/gsl.rb +8 -3
- data/lib/gsl/gnuplot.rb +3 -3
- data/lib/gsl/oper.rb +35 -60
- data/lib/gsl/version.rb +3 -0
- data/lib/rbgsl.rb +1 -3
- data/rdoc/alf.rdoc +5 -5
- data/rdoc/blas.rdoc +9 -9
- data/rdoc/bspline.rdoc +17 -17
- data/rdoc/changes.rdoc +4 -9
- data/rdoc/cheb.rdoc +25 -25
- data/rdoc/cholesky_complex.rdoc +21 -21
- data/rdoc/combi.rdoc +37 -37
- data/rdoc/complex.rdoc +22 -22
- data/rdoc/const.rdoc +47 -47
- data/rdoc/dht.rdoc +49 -49
- data/rdoc/diff.rdoc +42 -42
- data/rdoc/ehandling.rdoc +6 -6
- data/rdoc/eigen.rdoc +153 -153
- data/rdoc/fft.rdoc +146 -146
- data/rdoc/fit.rdoc +109 -109
- data/rdoc/function.rdoc +11 -11
- data/rdoc/graph.rdoc +17 -17
- data/rdoc/hist.rdoc +103 -103
- data/rdoc/hist2d.rdoc +42 -42
- data/rdoc/hist3d.rdoc +9 -9
- data/rdoc/integration.rdoc +110 -110
- data/rdoc/interp.rdoc +71 -71
- data/rdoc/intro.rdoc +8 -8
- data/rdoc/linalg.rdoc +188 -188
- data/rdoc/linalg_complex.rdoc +1 -1
- data/rdoc/math.rdoc +58 -58
- data/rdoc/matrix.rdoc +275 -275
- data/rdoc/min.rdoc +57 -57
- data/rdoc/monte.rdoc +22 -22
- data/rdoc/multimin.rdoc +95 -95
- data/rdoc/multiroot.rdoc +80 -80
- data/rdoc/narray.rdoc +32 -32
- data/rdoc/ndlinear.rdoc +54 -54
- data/rdoc/nonlinearfit.rdoc +100 -100
- data/rdoc/ntuple.rdoc +31 -31
- data/rdoc/odeiv.rdoc +88 -88
- data/rdoc/perm.rdoc +90 -90
- data/rdoc/poly.rdoc +66 -66
- data/rdoc/qrng.rdoc +21 -21
- data/rdoc/randist.rdoc +82 -82
- data/rdoc/ref.rdoc +57 -57
- data/rdoc/rng.rdoc +85 -85
- data/rdoc/roots.rdoc +57 -57
- data/rdoc/sf.rdoc +428 -428
- data/rdoc/siman.rdoc +19 -19
- data/rdoc/sort.rdoc +30 -30
- data/rdoc/start.rdoc +8 -8
- data/rdoc/stats.rdoc +52 -52
- data/rdoc/sum.rdoc +12 -12
- data/rdoc/tensor.rdoc +31 -31
- data/rdoc/tut.rdoc +1 -1
- data/rdoc/use.rdoc +39 -39
- data/rdoc/vector.rdoc +188 -188
- data/rdoc/vector_complex.rdoc +24 -24
- data/rdoc/wavelet.rdoc +46 -46
- data/test/gsl/blas_test.rb +79 -0
- data/test/gsl/bspline_test.rb +63 -0
- data/test/gsl/cdf_test.rb +1512 -0
- data/test/gsl/cheb_test.rb +80 -0
- data/test/gsl/combination_test.rb +100 -0
- data/test/gsl/complex_test.rb +20 -0
- data/test/gsl/const_test.rb +29 -0
- data/test/gsl/deriv_test.rb +62 -0
- data/test/gsl/dht_test.rb +79 -0
- data/test/gsl/diff_test.rb +53 -0
- data/test/gsl/eigen_test.rb +563 -0
- data/test/gsl/err_test.rb +23 -0
- data/test/gsl/fit_test.rb +101 -0
- data/test/gsl/histo_test.rb +14 -0
- data/test/gsl/index_test.rb +61 -0
- data/test/gsl/integration_test.rb +274 -0
- data/test/gsl/interp_test.rb +27 -0
- data/test/gsl/linalg_test.rb +463 -0
- data/test/gsl/matrix_nmf_test.rb +37 -0
- data/test/gsl/matrix_test.rb +98 -0
- data/test/gsl/min_test.rb +89 -0
- data/test/gsl/monte_test.rb +77 -0
- data/test/gsl/multifit_test.rb +753 -0
- data/test/gsl/multimin_test.rb +157 -0
- data/test/gsl/multiroot_test.rb +135 -0
- data/test/gsl/multiset_test.rb +52 -0
- data/test/gsl/odeiv_test.rb +275 -0
- data/test/gsl/oper_test.rb +98 -0
- data/test/gsl/poly_test.rb +338 -0
- data/test/gsl/qrng_test.rb +94 -0
- data/test/gsl/quartic_test.rb +28 -0
- data/test/gsl/randist_test.rb +122 -0
- data/test/gsl/rng_test.rb +303 -0
- data/test/gsl/roots_test.rb +78 -0
- data/test/gsl/sf_test.rb +2079 -0
- data/test/gsl/stats_test.rb +122 -0
- data/test/gsl/sum_test.rb +69 -0
- data/test/gsl/tensor_test.rb +396 -0
- data/test/gsl/vector_test.rb +223 -0
- data/test/gsl/wavelet_test.rb +130 -0
- data/test/gsl_test.rb +321 -0
- data/test/test_helper.rb +42 -0
- data/uncrustify.cfg +1693 -0
- metadata +337 -378
- data/README +0 -32
- data/VERSION +0 -1
- data/ext/bspline.c +0 -130
- data/ext/const.c +0 -673
- data/ext/cqp.c +0 -283
- data/ext/extconf.rb +0 -295
- data/ext/fcmp.c +0 -66
- data/ext/fresnel.c +0 -312
- data/ext/jacobi.c +0 -739
- data/ext/ool.c +0 -879
- data/ext/oper_complex_source.c +0 -253
- data/ext/sf_mathieu.c +0 -238
- data/include/rb_gsl_config.h +0 -62
- data/include/rb_gsl_dirac.h +0 -13
- data/rdoc/index.rdoc +0 -62
- data/rdoc/rngextra.rdoc +0 -11
- data/rdoc/screenshot.rdoc +0 -40
- data/setup.rb +0 -1585
- data/tests/blas/amax.rb +0 -14
- data/tests/blas/asum.rb +0 -16
- data/tests/blas/axpy.rb +0 -25
- data/tests/blas/copy.rb +0 -23
- data/tests/blas/dot.rb +0 -23
- data/tests/bspline.rb +0 -53
- data/tests/cdf.rb +0 -1388
- data/tests/cheb.rb +0 -112
- data/tests/combination.rb +0 -123
- data/tests/complex.rb +0 -17
- data/tests/const.rb +0 -24
- data/tests/deriv.rb +0 -85
- data/tests/dht/dht1.rb +0 -17
- data/tests/dht/dht2.rb +0 -23
- data/tests/dht/dht3.rb +0 -23
- data/tests/dht/dht4.rb +0 -23
- data/tests/diff.rb +0 -78
- data/tests/eigen/eigen.rb +0 -220
- data/tests/eigen/gen.rb +0 -105
- data/tests/eigen/genherm.rb +0 -66
- data/tests/eigen/gensymm.rb +0 -68
- data/tests/eigen/nonsymm.rb +0 -53
- data/tests/eigen/nonsymmv.rb +0 -53
- data/tests/eigen/symm-herm.rb +0 -74
- data/tests/err.rb +0 -58
- data/tests/fit.rb +0 -124
- data/tests/gsl_test.rb +0 -118
- data/tests/gsl_test2.rb +0 -110
- data/tests/histo.rb +0 -12
- data/tests/integration/integration1.rb +0 -72
- data/tests/integration/integration2.rb +0 -71
- data/tests/integration/integration3.rb +0 -71
- data/tests/integration/integration4.rb +0 -71
- data/tests/interp.rb +0 -45
- data/tests/linalg/HH.rb +0 -64
- data/tests/linalg/LU.rb +0 -47
- data/tests/linalg/QR.rb +0 -77
- data/tests/linalg/SV.rb +0 -24
- data/tests/linalg/TDN.rb +0 -116
- data/tests/linalg/TDS.rb +0 -122
- data/tests/linalg/bidiag.rb +0 -73
- data/tests/linalg/cholesky.rb +0 -20
- data/tests/linalg/linalg.rb +0 -158
- data/tests/matrix/matrix_complex_test.rb +0 -36
- data/tests/matrix/matrix_nmf_test.rb +0 -39
- data/tests/matrix/matrix_test.rb +0 -48
- data/tests/min.rb +0 -99
- data/tests/monte/miser.rb +0 -31
- data/tests/monte/vegas.rb +0 -45
- data/tests/multifit/test_2dgauss.rb +0 -112
- data/tests/multifit/test_brown.rb +0 -90
- data/tests/multifit/test_enso.rb +0 -246
- data/tests/multifit/test_filip.rb +0 -155
- data/tests/multifit/test_gauss.rb +0 -97
- data/tests/multifit/test_longley.rb +0 -110
- data/tests/multifit/test_multifit.rb +0 -52
- data/tests/multimin.rb +0 -139
- data/tests/multiroot.rb +0 -131
- data/tests/multiset.rb +0 -52
- data/tests/narray/blas_dnrm2.rb +0 -20
- data/tests/odeiv.rb +0 -353
- data/tests/poly/poly.rb +0 -290
- data/tests/poly/special.rb +0 -65
- data/tests/qrng.rb +0 -131
- data/tests/quartic.rb +0 -29
- data/tests/randist.rb +0 -134
- data/tests/rng.rb +0 -305
- data/tests/roots.rb +0 -76
- data/tests/run-test.sh +0 -17
- data/tests/sf/gsl_test_sf.rb +0 -249
- data/tests/sf/test_airy.rb +0 -83
- data/tests/sf/test_bessel.rb +0 -306
- data/tests/sf/test_coulomb.rb +0 -17
- data/tests/sf/test_dilog.rb +0 -25
- data/tests/sf/test_gamma.rb +0 -209
- data/tests/sf/test_hyperg.rb +0 -356
- data/tests/sf/test_legendre.rb +0 -227
- data/tests/sf/test_mathieu.rb +0 -59
- data/tests/sf/test_mode.rb +0 -19
- data/tests/sf/test_sf.rb +0 -839
- data/tests/stats.rb +0 -174
- data/tests/stats_mt.rb +0 -16
- data/tests/sum.rb +0 -98
- data/tests/sys.rb +0 -323
- data/tests/tensor.rb +0 -419
- data/tests/vector/vector_complex_test.rb +0 -101
- data/tests/vector/vector_test.rb +0 -141
- data/tests/wavelet.rb +0 -142
@@ -8,25 +8,25 @@
|
|
8
8
|
This library is distributed in the hope that it will be useful, but
|
9
9
|
WITHOUT ANY WARRANTY.
|
10
10
|
*/
|
11
|
-
|
12
|
-
#include "rb_gsl_array.h"
|
11
|
+
|
12
|
+
#include "include/rb_gsl_array.h"
|
13
13
|
#include <gsl/gsl_sum.h>
|
14
14
|
|
15
15
|
static VALUE rb_gsl_sum_accel(VALUE obj)
|
16
16
|
{
|
17
17
|
gsl_sum_levin_u_workspace *w = NULL;
|
18
18
|
double sum, err, sum_plain, *ptr;
|
19
|
-
size_t terms_used, n, stride;
|
19
|
+
size_t terms_used, n, stride;
|
20
20
|
ptr = get_vector_ptr(obj, &stride, &n);
|
21
21
|
w = gsl_sum_levin_u_alloc(n);
|
22
22
|
gsl_sum_levin_u_accel(ptr, n, w, &sum, &err);
|
23
23
|
sum_plain = w->sum_plain;
|
24
24
|
terms_used = w->terms_used;
|
25
25
|
gsl_sum_levin_u_free(w);
|
26
|
-
|
27
|
-
|
26
|
+
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
27
|
+
rb_float_new(sum_plain), INT2FIX(terms_used));
|
28
28
|
}
|
29
|
-
|
29
|
+
|
30
30
|
static VALUE rb_gsl_utrunc_accel(VALUE obj)
|
31
31
|
{
|
32
32
|
gsl_sum_levin_utrunc_workspace *w = NULL;
|
@@ -38,8 +38,8 @@ static VALUE rb_gsl_utrunc_accel(VALUE obj)
|
|
38
38
|
sum_plain = w->sum_plain;
|
39
39
|
terms_used = w->terms_used;
|
40
40
|
gsl_sum_levin_utrunc_free(w);
|
41
|
-
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
42
|
-
|
41
|
+
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
42
|
+
rb_float_new(sum_plain), INT2FIX(terms_used));
|
43
43
|
}
|
44
44
|
|
45
45
|
static VALUE rb_gsl_sum_levin_u_new(VALUE klass, VALUE nn)
|
@@ -71,8 +71,8 @@ static VALUE rb_gsl_sum_levin_u_accel2(VALUE obj, VALUE vv)
|
|
71
71
|
sum_plain = w->sum_plain;
|
72
72
|
terms_used = w->terms_used;
|
73
73
|
gsl_sum_levin_u_free(w);
|
74
|
-
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
75
|
-
|
74
|
+
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
75
|
+
rb_float_new(sum_plain), INT2FIX(terms_used));
|
76
76
|
}
|
77
77
|
|
78
78
|
static VALUE rb_gsl_sum_levin_utrunc_accel2(VALUE obj, VALUE vv)
|
@@ -87,8 +87,8 @@ static VALUE rb_gsl_sum_levin_utrunc_accel2(VALUE obj, VALUE vv)
|
|
87
87
|
sum_plain = w->sum_plain;
|
88
88
|
terms_used = w->terms_used;
|
89
89
|
gsl_sum_levin_utrunc_free(w);
|
90
|
-
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
91
|
-
|
90
|
+
return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
|
91
|
+
rb_float_new(sum_plain), INT2FIX(terms_used));
|
92
92
|
}
|
93
93
|
|
94
94
|
static VALUE rb_gsl_sum_levin_u_sum_plain(VALUE obj)
|
@@ -119,39 +119,39 @@ static VALUE rb_gsl_sum_levin_utrunc_terms_used(VALUE obj)
|
|
119
119
|
return INT2FIX(w->terms_used);
|
120
120
|
}
|
121
121
|
|
122
|
-
void Init_gsl_sum(VALUE module)
|
122
|
+
void Init_gsl_sum(VALUE module)
|
123
123
|
{
|
124
124
|
VALUE mgsl_sum;
|
125
125
|
VALUE cgsl_sum_levin_u, cgsl_sum_levin_utrunc;
|
126
126
|
|
127
127
|
mgsl_sum = rb_define_module_under(module, "Sum");
|
128
|
-
cgsl_sum_levin_u = rb_define_class_under(mgsl_sum,
|
129
|
-
|
130
|
-
cgsl_sum_levin_utrunc = rb_define_class_under(mgsl_sum,
|
131
|
-
|
128
|
+
cgsl_sum_levin_u = rb_define_class_under(mgsl_sum,
|
129
|
+
"Levin_u", cGSL_Object);
|
130
|
+
cgsl_sum_levin_utrunc = rb_define_class_under(mgsl_sum,
|
131
|
+
"Levin_utrunc", cGSL_Object);
|
132
132
|
|
133
133
|
rb_define_singleton_method(cgsl_sum_levin_u, "new", rb_gsl_sum_levin_u_new, 1);
|
134
134
|
rb_define_singleton_method(cgsl_sum_levin_u, "alloc", rb_gsl_sum_levin_u_new, 1);
|
135
|
-
rb_define_singleton_method(cgsl_sum_levin_utrunc, "new",
|
136
|
-
|
137
|
-
rb_define_singleton_method(cgsl_sum_levin_utrunc, "alloc",
|
138
|
-
|
139
|
-
rb_define_singleton_method(cgsl_sum_levin_u, "accel",
|
140
|
-
|
141
|
-
|
142
|
-
rb_define_singleton_method(cgsl_sum_levin_utrunc, "accel",
|
143
|
-
|
135
|
+
rb_define_singleton_method(cgsl_sum_levin_utrunc, "new",
|
136
|
+
rb_gsl_sum_levin_utrunc_new, 1);
|
137
|
+
rb_define_singleton_method(cgsl_sum_levin_utrunc, "alloc",
|
138
|
+
rb_gsl_sum_levin_utrunc_new, 1);
|
139
|
+
rb_define_singleton_method(cgsl_sum_levin_u, "accel",
|
140
|
+
rb_gsl_sum_levin_u_accel2, 1);
|
141
|
+
|
142
|
+
rb_define_singleton_method(cgsl_sum_levin_utrunc, "accel",
|
143
|
+
rb_gsl_sum_levin_utrunc_accel2, 1);
|
144
144
|
rb_define_method(cgsl_sum_levin_u, "accel", rb_gsl_sum_levin_u_accel2, 1);
|
145
|
-
rb_define_method(cgsl_sum_levin_utrunc, "accel",
|
146
|
-
|
145
|
+
rb_define_method(cgsl_sum_levin_utrunc, "accel",
|
146
|
+
rb_gsl_sum_levin_utrunc_accel2, 1);
|
147
147
|
|
148
148
|
rb_define_method(cgsl_sum_levin_u, "sum_plain", rb_gsl_sum_levin_u_sum_plain, 0);
|
149
|
-
rb_define_method(cgsl_sum_levin_u, "terms_used",
|
150
|
-
|
151
|
-
rb_define_method(cgsl_sum_levin_utrunc, "sum_plain",
|
152
|
-
|
153
|
-
rb_define_method(cgsl_sum_levin_utrunc, "terms_used",
|
154
|
-
|
149
|
+
rb_define_method(cgsl_sum_levin_u, "terms_used",
|
150
|
+
rb_gsl_sum_levin_u_terms_used, 0);
|
151
|
+
rb_define_method(cgsl_sum_levin_utrunc, "sum_plain",
|
152
|
+
rb_gsl_sum_levin_utrunc_sum_plain, 0);
|
153
|
+
rb_define_method(cgsl_sum_levin_utrunc, "terms_used",
|
154
|
+
rb_gsl_sum_levin_utrunc_terms_used, 0);
|
155
155
|
/***/
|
156
156
|
|
157
157
|
rb_define_method(cgsl_vector, "accel_sum", rb_gsl_sum_accel, 0);
|
@@ -16,23 +16,20 @@
|
|
16
16
|
|
17
17
|
#ifdef HAVE_TENSOR_TENSOR_H
|
18
18
|
|
19
|
-
#include "
|
20
|
-
#include "rb_gsl_tensor.h"
|
19
|
+
#include "include/rb_gsl_tensor.h"
|
21
20
|
|
22
|
-
#
|
23
|
-
#include "rb_gsl_with_narray.h"
|
24
|
-
#endif
|
21
|
+
#include "include/rb_gsl_with_narray.h"
|
25
22
|
|
26
23
|
#define BASE_DOUBLE
|
27
|
-
#include "templates_on.h"
|
28
|
-
#include "tensor_source.
|
29
|
-
#include "templates_off.h"
|
24
|
+
#include "include/templates_on.h"
|
25
|
+
#include "tensor_source.h"
|
26
|
+
#include "include/templates_off.h"
|
30
27
|
#undef BASE_DOUBLE
|
31
28
|
|
32
29
|
#define BASE_INT
|
33
|
-
#include "templates_on.h"
|
34
|
-
#include "tensor_source.
|
35
|
-
#include "templates_off.h"
|
30
|
+
#include "include/templates_on.h"
|
31
|
+
#include "tensor_source.h"
|
32
|
+
#include "include/templates_off.h"
|
36
33
|
#undef BASE_INT
|
37
34
|
|
38
35
|
#endif
|
@@ -17,9 +17,8 @@
|
|
17
17
|
|
18
18
|
#ifdef HAVE_TENSOR_TENSOR_H
|
19
19
|
|
20
|
-
#include "
|
21
|
-
#include "
|
22
|
-
#include "rb_gsl_common.h"
|
20
|
+
#include "include/rb_gsl_tensor.h"
|
21
|
+
#include "include/rb_gsl_common.h"
|
23
22
|
|
24
23
|
#ifdef BASE_DOUBLE
|
25
24
|
VALUE cgsl_tensor, cgsl_tensor_int;
|
@@ -39,26 +38,26 @@ VALUE cgsl_tensor_view, cgsl_tensor_int_view;
|
|
39
38
|
#define MAT_P(x) MATRIX_INT_P(x)
|
40
39
|
#endif
|
41
40
|
|
42
|
-
GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,alloc)(const unsigned int rank,
|
43
|
-
|
41
|
+
GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,alloc)(const unsigned int rank,
|
42
|
+
const size_t dimension)
|
44
43
|
{
|
45
44
|
GSL_TYPE(rbgsl_tensor) *t;
|
46
45
|
t = ALLOC(GSL_TYPE(rbgsl_tensor));
|
47
46
|
t->tensor = FUNCTION(tensor,alloc)(rank, dimension);
|
48
|
-
if (rank == 0)
|
47
|
+
if (rank == 0)
|
49
48
|
t->indices = gsl_permutation_alloc(1);
|
50
49
|
else
|
51
50
|
t->indices = gsl_permutation_alloc(rank);
|
52
51
|
return t;
|
53
52
|
}
|
54
53
|
|
55
|
-
GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,calloc)(const unsigned int rank,
|
56
|
-
|
54
|
+
GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,calloc)(const unsigned int rank,
|
55
|
+
const size_t dimension)
|
57
56
|
{
|
58
57
|
GSL_TYPE(rbgsl_tensor) *t;
|
59
58
|
t = ALLOC(GSL_TYPE(rbgsl_tensor));
|
60
59
|
t->tensor = FUNCTION(tensor,calloc)(rank, dimension);
|
61
|
-
if (rank == 0)
|
60
|
+
if (rank == 0)
|
62
61
|
t->indices = gsl_permutation_alloc(1);
|
63
62
|
else
|
64
63
|
t->indices = gsl_permutation_alloc(rank);
|
@@ -69,7 +68,7 @@ GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,copy)(const GSL_TYPE(rbgsl_tensor)
|
|
69
68
|
{
|
70
69
|
GSL_TYPE(rbgsl_tensor) *tnew;
|
71
70
|
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
|
72
|
-
if (t->tensor->rank == 0)
|
71
|
+
if (t->tensor->rank == 0)
|
73
72
|
tnew->indices = gsl_permutation_alloc(1);
|
74
73
|
else
|
75
74
|
tnew->indices = gsl_permutation_alloc(t->tensor->rank);
|
@@ -81,14 +80,14 @@ void FUNCTION(rbgsl_tensor,free)(GSL_TYPE(rbgsl_tensor) *t)
|
|
81
80
|
{
|
82
81
|
gsl_permutation_free(t->indices);
|
83
82
|
FUNCTION(tensor,free)(t->tensor);
|
84
|
-
free((GSL_TYPE(rbgsl_tensor) *)
|
83
|
+
free((GSL_TYPE(rbgsl_tensor) *)t);
|
85
84
|
}
|
86
85
|
|
87
86
|
void FUNCTION(rbgsl_tensor,free2)(GSL_TYPE(rbgsl_tensor) *t)
|
88
87
|
{
|
89
88
|
gsl_permutation_free(t->indices);
|
90
|
-
free((GSL_TYPE(tensor)*)
|
91
|
-
free((GSL_TYPE(rbgsl_tensor) *)
|
89
|
+
free((GSL_TYPE(tensor)*)t->tensor);
|
90
|
+
free((GSL_TYPE(rbgsl_tensor) *)t);
|
92
91
|
}
|
93
92
|
|
94
93
|
/* singleton methods */
|
@@ -105,7 +104,7 @@ static VALUE FUNCTION(rb_tensor,new)(int argc, VALUE *argv, VALUE klass)
|
|
105
104
|
break;
|
106
105
|
default:
|
107
106
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, rank and dimension)",
|
108
|
-
|
107
|
+
argc);
|
109
108
|
break;
|
110
109
|
}
|
111
110
|
return Data_Wrap_Struct(GSL_TYPE(cgsl_tensor), 0, FUNCTION(rbgsl_tensor,free), t);
|
@@ -176,8 +175,8 @@ static VALUE FUNCTION(rb_tensor,set_all)(VALUE obj, VALUE xx)
|
|
176
175
|
}
|
177
176
|
|
178
177
|
static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary);
|
179
|
-
static void rbgsl_tensor_get_indices(int argc, VALUE *argv, tensor_indices *indices,
|
180
|
-
|
178
|
+
static void rbgsl_tensor_get_indices(int argc, VALUE *argv, tensor_indices *indices,
|
179
|
+
size_t *n);
|
181
180
|
#ifdef BASE_DOUBLE
|
182
181
|
static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary)
|
183
182
|
{
|
@@ -188,8 +187,8 @@ static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary)
|
|
188
187
|
v->data[i] = FIX2UINT(rb_ary_entry(ary, i));
|
189
188
|
}
|
190
189
|
|
191
|
-
static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
|
192
|
-
|
190
|
+
static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
|
191
|
+
tensor_indices *indices, size_t *n)
|
193
192
|
{
|
194
193
|
size_t i;
|
195
194
|
for (i = 0; i < indices->size; i++) indices->data[i] = 0;
|
@@ -207,7 +206,7 @@ static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
|
|
207
206
|
break;
|
208
207
|
default:
|
209
208
|
rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
|
210
|
-
|
209
|
+
rb_class2name(CLASS_OF(argv[0])));
|
211
210
|
break;
|
212
211
|
}
|
213
212
|
break;
|
@@ -223,13 +222,13 @@ static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
|
|
223
222
|
#endif
|
224
223
|
|
225
224
|
size_t FUNCTION(tensor,position)(const size_t * indices,
|
226
|
-
|
225
|
+
const GSL_TYPE(tensor) * t);
|
227
226
|
static VALUE FUNCTION(rb_tensor,position)(int argc, VALUE *argv, VALUE obj)
|
228
227
|
{
|
229
228
|
GSL_TYPE(rbgsl_tensor) *t = NULL;
|
230
229
|
size_t n, position;
|
231
|
-
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
232
|
-
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
230
|
+
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
231
|
+
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
233
232
|
position = (size_t) FUNCTION(tensor,position)(t->indices->data,t->tensor);
|
234
233
|
return INT2FIX(position);
|
235
234
|
}
|
@@ -239,8 +238,8 @@ static VALUE FUNCTION(rb_tensor,get)(int argc, VALUE *argv, VALUE obj)
|
|
239
238
|
GSL_TYPE(rbgsl_tensor) *t = NULL;
|
240
239
|
BASE x;
|
241
240
|
size_t n;
|
242
|
-
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
243
|
-
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
241
|
+
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
242
|
+
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
244
243
|
if (n < t->tensor->rank) {
|
245
244
|
return FUNCTION(rb_tensor,subtensor)(argc, argv, obj);
|
246
245
|
} else {
|
@@ -255,9 +254,9 @@ static VALUE FUNCTION(rb_tensor,set)(int argc, VALUE *argv, VALUE obj)
|
|
255
254
|
GSL_TYPE(rbgsl_tensor) *t = NULL;
|
256
255
|
size_t n;
|
257
256
|
BASE x;
|
258
|
-
if (argc < 2)
|
257
|
+
if (argc < 2)
|
259
258
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 2)", argc);
|
260
|
-
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
259
|
+
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
261
260
|
rbgsl_tensor_get_indices(argc-1, argv, t->indices, &n);
|
262
261
|
x = NUMCONV(argv[argc-1]);
|
263
262
|
FUNCTION(tensor,set)(t->tensor, t->indices->data, x);
|
@@ -293,7 +292,7 @@ static VALUE FUNCTION(rb_tensor,fprintf)(int argc, VALUE *argv, VALUE obj)
|
|
293
292
|
GSL_TYPE(rbgsl_tensor) *h = NULL;
|
294
293
|
FILE *fp = NULL;
|
295
294
|
int status, flag = 0;
|
296
|
-
if (argc != 1 && argc != 2)
|
295
|
+
if (argc != 1 && argc != 2)
|
297
296
|
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
|
298
297
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), h);
|
299
298
|
fp = rb_gsl_open_writefile(argv[0], &flag);
|
@@ -318,7 +317,7 @@ static VALUE FUNCTION(rb_tensor,printf)(int argc, VALUE *argv, VALUE obj)
|
|
318
317
|
int status;
|
319
318
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), h);
|
320
319
|
if (argc == 1) {
|
321
|
-
if (TYPE(argv[0]) != T_STRING)
|
320
|
+
if (TYPE(argv[0]) != T_STRING)
|
322
321
|
rb_raise(rb_eTypeError, "String expected");
|
323
322
|
else
|
324
323
|
status = FUNCTION(tensor,fprintf)(stdout, h->tensor, STR2CSTR(argv[0]));
|
@@ -345,7 +344,7 @@ static VALUE FUNCTION(rb_tensor,swap_indices)(VALUE obj, VALUE ii, VALUE jj)
|
|
345
344
|
GSL_TYPE(rbgsl_tensor) *t, *tnew;
|
346
345
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
347
346
|
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
|
348
|
-
if (t->tensor->rank == 0)
|
347
|
+
if (t->tensor->rank == 0)
|
349
348
|
tnew->indices = gsl_permutation_alloc(1);
|
350
349
|
else
|
351
350
|
tnew->indices = gsl_permutation_alloc(t->tensor->rank);
|
@@ -406,8 +405,8 @@ static VALUE FUNCTION(rb_tensor,minmax_index)(VALUE obj)
|
|
406
405
|
}
|
407
406
|
FUNCTION(tensor,minmax_index)(t->tensor, min->data, max->data);
|
408
407
|
return rb_ary_new3(2,
|
409
|
-
|
410
|
-
|
408
|
+
Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, min),
|
409
|
+
Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, max));
|
411
410
|
}
|
412
411
|
|
413
412
|
static VALUE FUNCTION(rb_tensor,isnull)(VALUE obj)
|
@@ -428,7 +427,7 @@ static VALUE FUNCTION(rb_tensor,isnull2)(VALUE obj)
|
|
428
427
|
}
|
429
428
|
|
430
429
|
static VALUE FUNCTION(rb_tensor,oper)(VALUE obj, VALUE bb,
|
431
|
-
|
430
|
+
int flag)
|
432
431
|
{
|
433
432
|
GSL_TYPE(rbgsl_tensor) *a, *b, *anew;
|
434
433
|
BASE x;
|
@@ -444,28 +443,28 @@ static VALUE FUNCTION(rb_tensor,oper)(VALUE obj, VALUE bb,
|
|
444
443
|
case TENSOR_MUL_ELEMENTS: f = FUNCTION(&tensor,mul_elements); break;
|
445
444
|
case TENSOR_DIV_ELEMENTS: f = FUNCTION(&tensor,div_elements); break;
|
446
445
|
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
|
447
|
-
}
|
446
|
+
}
|
448
447
|
(*f)(anew->tensor, b->tensor);
|
449
448
|
} else {
|
450
449
|
switch (flag) {
|
451
450
|
case TENSOR_ADD:
|
452
|
-
case TENSOR_ADD_CONSTANT:
|
451
|
+
case TENSOR_ADD_CONSTANT:
|
453
452
|
x = NUMCONV(bb);
|
454
|
-
f2 = FUNCTION(&tensor,add_constant);
|
453
|
+
f2 = FUNCTION(&tensor,add_constant);
|
455
454
|
break;
|
456
455
|
case TENSOR_SUB:
|
457
456
|
x = -NUMCONV(bb);
|
458
|
-
f2 = FUNCTION(&tensor,add_constant);
|
457
|
+
f2 = FUNCTION(&tensor,add_constant);
|
459
458
|
break;
|
460
459
|
case TENSOR_ADD_DIAGONAL: f2 = FUNCTION(&tensor,add_diagonal); break;
|
461
460
|
case TENSOR_MUL_ELEMENTS:
|
462
461
|
case TENSOR_SCALE:
|
463
|
-
x = NUMCONV(bb);
|
464
|
-
f2 = FUNCTION(&tensor,scale);
|
462
|
+
x = NUMCONV(bb);
|
463
|
+
f2 = FUNCTION(&tensor,scale);
|
465
464
|
break;
|
466
|
-
case TENSOR_DIV_ELEMENTS:
|
467
|
-
x = 1.0/NUMCONV(bb);
|
468
|
-
f2 = FUNCTION(&tensor,scale);
|
465
|
+
case TENSOR_DIV_ELEMENTS:
|
466
|
+
x = 1.0/NUMCONV(bb);
|
467
|
+
f2 = FUNCTION(&tensor,scale);
|
469
468
|
break;
|
470
469
|
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
|
471
470
|
}
|
@@ -490,28 +489,28 @@ static VALUE FUNCTION(rb_tensor,oper_bang)(VALUE obj, VALUE bb, int flag)
|
|
490
489
|
case TENSOR_MUL_ELEMENTS: f = FUNCTION(&tensor,mul_elements); break;
|
491
490
|
case TENSOR_DIV_ELEMENTS: f = FUNCTION(&tensor,div_elements); break;
|
492
491
|
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
|
493
|
-
}
|
492
|
+
}
|
494
493
|
(*f)(a->tensor, b->tensor);
|
495
494
|
} else {
|
496
495
|
switch (flag) {
|
497
496
|
case TENSOR_ADD:
|
498
|
-
case TENSOR_ADD_CONSTANT:
|
497
|
+
case TENSOR_ADD_CONSTANT:
|
499
498
|
x = NUMCONV(bb);
|
500
|
-
f2 = FUNCTION(&tensor,add_constant);
|
499
|
+
f2 = FUNCTION(&tensor,add_constant);
|
501
500
|
break;
|
502
501
|
case TENSOR_SUB:
|
503
502
|
x = -NUMCONV(bb);
|
504
|
-
f2 = FUNCTION(&tensor,add_constant);
|
503
|
+
f2 = FUNCTION(&tensor,add_constant);
|
505
504
|
break;
|
506
505
|
case TENSOR_ADD_DIAGONAL: f2 = FUNCTION(&tensor,add_diagonal); break;
|
507
506
|
case TENSOR_MUL_ELEMENTS:
|
508
507
|
case TENSOR_SCALE:
|
509
|
-
x = NUMCONV(bb);
|
510
|
-
f2 = FUNCTION(&tensor,scale);
|
508
|
+
x = NUMCONV(bb);
|
509
|
+
f2 = FUNCTION(&tensor,scale);
|
511
510
|
break;
|
512
|
-
case TENSOR_DIV_ELEMENTS:
|
513
|
-
x = 1.0/NUMCONV(bb);
|
514
|
-
f2 = FUNCTION(&tensor,scale);
|
511
|
+
case TENSOR_DIV_ELEMENTS:
|
512
|
+
x = 1.0/NUMCONV(bb);
|
513
|
+
f2 = FUNCTION(&tensor,scale);
|
515
514
|
break;
|
516
515
|
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
|
517
516
|
}
|
@@ -689,7 +688,7 @@ static VALUE FUNCTION(rb_tensor,2matrix)(VALUE obj)
|
|
689
688
|
GSL_TYPE(rbgsl_tensor) *t;
|
690
689
|
GSL_TYPE(gsl_matrix) *m = NULL;
|
691
690
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
692
|
-
m = (GSL_TYPE(gsl_matrix)*)
|
691
|
+
m = (GSL_TYPE(gsl_matrix)*)FUNCTION(tensor,2matrix)(t->tensor);
|
693
692
|
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_matrix,view), 0, FUNCTION(gsl_matrix,free), m);
|
694
693
|
}
|
695
694
|
|
@@ -698,7 +697,7 @@ static VALUE FUNCTION(rb_tensor,2vector)(VALUE obj)
|
|
698
697
|
GSL_TYPE(rbgsl_tensor) *t;
|
699
698
|
GSL_TYPE(gsl_vector) *v = NULL;
|
700
699
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
701
|
-
v = (GSL_TYPE(gsl_vector) *)
|
700
|
+
v = (GSL_TYPE(gsl_vector) *)FUNCTION(tensor,2vector)(t->tensor);
|
702
701
|
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_vector,view), 0, FUNCTION(gsl_vector,free), v);
|
703
702
|
}
|
704
703
|
|
@@ -719,8 +718,8 @@ static VALUE FUNCTION(rb_tensor,to_v)(VALUE obj)
|
|
719
718
|
rank: rank of the tensor created
|
720
719
|
*/
|
721
720
|
GSL_TYPE(tensor) FUNCTION(tensor,subtensor)(const GSL_TYPE(tensor) *t,
|
722
|
-
|
723
|
-
|
721
|
+
const unsigned int rank,
|
722
|
+
size_t *indices)
|
724
723
|
{
|
725
724
|
GSL_TYPE(tensor) tnew;
|
726
725
|
size_t position;
|
@@ -741,16 +740,16 @@ static VALUE FUNCTION(rb_tensor,subtensor)(int argc, VALUE *argv, VALUE obj)
|
|
741
740
|
size_t n;
|
742
741
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
743
742
|
/* n: number of indices given */
|
744
|
-
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
745
|
-
rank = t->tensor->rank - n;
|
743
|
+
rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
|
744
|
+
rank = t->tensor->rank - n;
|
746
745
|
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
|
747
|
-
tnew->tensor = (GSL_TYPE(tensor)*)
|
746
|
+
tnew->tensor = (GSL_TYPE(tensor)*)malloc(sizeof(GSL_TYPE(tensor)));
|
748
747
|
*(tnew->tensor) = FUNCTION(tensor,subtensor)(t->tensor, rank, t->indices->data);
|
749
|
-
if (rank == 0)
|
748
|
+
if (rank == 0)
|
750
749
|
tnew->indices = gsl_permutation_alloc(1);
|
751
750
|
else
|
752
751
|
tnew->indices = gsl_permutation_alloc(rank);
|
753
|
-
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_tensor,view), 0, FUNCTION(rbgsl_tensor,free2), tnew);
|
752
|
+
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_tensor,view), 0, FUNCTION(rbgsl_tensor,free2), tnew);
|
754
753
|
}
|
755
754
|
|
756
755
|
#ifdef BASE_DOUBLE
|
@@ -783,29 +782,29 @@ static VALUE FUNCTION(rb_tensor,to_s)(VALUE obj)
|
|
783
782
|
m = &(matrix.matrix);
|
784
783
|
for (i = 0; i < m->size1; i++) {
|
785
784
|
if (i != 0) {
|
786
|
-
|
787
|
-
|
785
|
+
strcpy(buf, " ");
|
786
|
+
rb_str_cat(str, buf, strlen(buf));
|
788
787
|
}
|
789
788
|
for (j = 0; j < m->size2; j++) {
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
789
|
+
sprintf(buf, PRINTF_FORMAT, FUNCTION(gsl_matrix,get)(m, i, j));
|
790
|
+
rb_str_cat(str, buf, strlen(buf));
|
791
|
+
if (j == SHOW_ELM) {
|
792
|
+
strcpy(buf, "... ");
|
793
|
+
rb_str_cat(str, buf, strlen(buf));
|
794
|
+
break;
|
795
|
+
}
|
797
796
|
}
|
798
797
|
if (i == 6) {
|
799
|
-
|
800
|
-
|
801
|
-
|
798
|
+
strcpy(buf, "\n ... ]");
|
799
|
+
rb_str_cat(str, buf, strlen(buf));
|
800
|
+
break;
|
802
801
|
}
|
803
802
|
if (i == m->size1 - 1) {
|
804
|
-
|
805
|
-
|
803
|
+
strcpy(buf, "]");
|
804
|
+
rb_str_cat(str, buf, strlen(buf));
|
806
805
|
} else {
|
807
|
-
|
808
|
-
|
806
|
+
strcpy(buf, "\n");
|
807
|
+
rb_str_cat(str, buf, strlen(buf));
|
809
808
|
}
|
810
809
|
}
|
811
810
|
return str;
|
@@ -872,8 +871,8 @@ VALUE FUNCTION(rb_tensor,equal)(int argc, VALUE *argv, VALUE obj)
|
|
872
871
|
if (a->tensor->dimension != b->tensor->dimension) return Qfalse;
|
873
872
|
if (a->tensor->size != b->tensor->size) return Qfalse;
|
874
873
|
for (i = 0; i < a->tensor->size; i++)
|
875
|
-
if (fabs(a->tensor->data[i]-b->tensor->data[i]) > eps)
|
876
|
-
|
874
|
+
if (fabs(a->tensor->data[i]-b->tensor->data[i]) > eps)
|
875
|
+
return Qfalse;
|
877
876
|
return Qtrue;
|
878
877
|
} else if (MAT_P(other)) {
|
879
878
|
if (a->tensor->rank != 2) return Qfalse;
|
@@ -881,19 +880,19 @@ VALUE FUNCTION(rb_tensor,equal)(int argc, VALUE *argv, VALUE obj)
|
|
881
880
|
if (a->tensor->dimension != m->size1 || a->tensor->dimension != m->size2)
|
882
881
|
return Qfalse;
|
883
882
|
for (i = 0; i < a->tensor->size; i++)
|
884
|
-
if (fabs(a->tensor->data[i]-m->data[i]) > eps)
|
885
|
-
|
883
|
+
if (fabs(a->tensor->data[i]-m->data[i]) > eps)
|
884
|
+
return Qfalse;
|
886
885
|
return Qtrue;
|
887
886
|
} else if (VEC_P(other)) {
|
888
887
|
Data_Get_Struct(other, GSL_TYPE(gsl_vector), v);
|
889
888
|
if (a->tensor->size != v->size) return Qfalse;
|
890
889
|
for (i = 0; i < a->tensor->size; i++)
|
891
|
-
if (fabs(a->tensor->data[i]-v->data[i]) > eps)
|
892
|
-
|
890
|
+
if (fabs(a->tensor->data[i]-v->data[i]) > eps)
|
891
|
+
return Qfalse;
|
893
892
|
return Qtrue;
|
894
893
|
} else {
|
895
|
-
rb_raise(rb_eTypeError, "wrong argument type %s (Tensor, Matrix or Vector expected)",
|
896
|
-
|
894
|
+
rb_raise(rb_eTypeError, "wrong argument type %s (Tensor, Matrix or Vector expected)",
|
895
|
+
rb_class2name(CLASS_OF(other)));
|
897
896
|
}
|
898
897
|
}
|
899
898
|
|
@@ -928,8 +927,8 @@ static VALUE FUNCTION(rb_tensor,coerce)(VALUE obj, VALUE other)
|
|
928
927
|
return rb_ary_new3(2, tt, obj);
|
929
928
|
break;
|
930
929
|
default:
|
931
|
-
rb_raise(rb_eRuntimeError, "undefined operation with %s",
|
932
|
-
|
930
|
+
rb_raise(rb_eRuntimeError, "undefined operation with %s",
|
931
|
+
rb_class2name(CLASS_OF(other)));
|
933
932
|
break;
|
934
933
|
}
|
935
934
|
}
|
@@ -940,7 +939,7 @@ static VALUE FUNCTION(rb_tensor,info)(VALUE obj)
|
|
940
939
|
char buf[256];
|
941
940
|
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
|
942
941
|
sprintf(buf, "Class: %s\n", rb_class2name(CLASS_OF(obj)));
|
943
|
-
|
942
|
+
sprintf(buf, "%sSuperClass: %s\n", buf, rb_class2name(RCLASS_SUPER(CLASS_OF(obj))));
|
944
943
|
sprintf(buf, "%sRank: %d\n", buf, (int) t->tensor->rank);
|
945
944
|
sprintf(buf, "%sDimension: %d\n", buf, (int) t->tensor->dimension);
|
946
945
|
sprintf(buf, "%sSize: %d\n", buf, (int) t->tensor->size);
|
@@ -954,99 +953,99 @@ void FUNCTION(Init_tensor,init)(VALUE module)
|
|
954
953
|
cgsl_tensor_int = rb_define_class_under(cgsl_tensor, "Int", cGSL_Object);
|
955
954
|
cgsl_tensor_view = rb_define_class_under(cgsl_tensor, "View", cgsl_tensor);
|
956
955
|
cgsl_tensor_int_view = rb_define_class_under(cgsl_tensor_int, "View",
|
957
|
-
|
956
|
+
cgsl_tensor_int);
|
958
957
|
/*
|
959
|
-
cgsl_index = rb_define_class_under(cgsl_tensor, "Index",
|
958
|
+
cgsl_index = rb_define_class_under(cgsl_tensor, "Index",
|
960
959
|
cgsl_permutation);*/
|
961
960
|
#endif
|
962
961
|
|
963
962
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "new",
|
964
|
-
|
963
|
+
FUNCTION(rb_tensor,new), -1);
|
965
964
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "[]",
|
966
|
-
|
965
|
+
FUNCTION(rb_tensor,new), -1);
|
967
966
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "alloc",
|
968
|
-
|
967
|
+
FUNCTION(rb_tensor,new), -1);
|
969
968
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "calloc",
|
970
|
-
|
969
|
+
FUNCTION(rb_tensor,calloc), 2);
|
971
970
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "copy",
|
972
|
-
|
971
|
+
FUNCTION(rb_tensor,copy_singleton), 1);
|
973
972
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "memcpy",
|
974
|
-
|
973
|
+
FUNCTION(rb_tensor,memcpy_singleton), 2);
|
975
974
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "swap",
|
976
|
-
|
975
|
+
FUNCTION(rb_tensor,swap_singleton), 2);
|
977
976
|
|
978
977
|
/*****/
|
979
978
|
|
980
979
|
rb_define_method(GSL_TYPE(cgsl_tensor), "copy",
|
981
|
-
|
980
|
+
FUNCTION(rb_tensor,copy), 0);
|
982
981
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "clone", "copy");
|
983
982
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "duplicate", "copy");
|
984
983
|
rb_define_method(GSL_TYPE(cgsl_tensor), "set_zero",
|
985
|
-
|
984
|
+
FUNCTION(rb_tensor,set_zero), 0);
|
986
985
|
rb_define_method(GSL_TYPE(cgsl_tensor), "set_all",
|
987
|
-
|
986
|
+
FUNCTION(rb_tensor,set_all), 1);
|
988
987
|
|
989
988
|
rb_define_method(GSL_TYPE(cgsl_tensor), "position",
|
990
|
-
|
989
|
+
FUNCTION(rb_tensor,position), -1);
|
991
990
|
rb_define_method(GSL_TYPE(cgsl_tensor), "get",
|
992
|
-
|
991
|
+
FUNCTION(rb_tensor,get), -1);
|
993
992
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "[]", "get");
|
994
993
|
rb_define_method(GSL_TYPE(cgsl_tensor), "set",
|
995
|
-
|
994
|
+
FUNCTION(rb_tensor,set), -1);
|
996
995
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "[]=", "set");
|
997
996
|
|
998
997
|
rb_define_method(GSL_TYPE(cgsl_tensor), "fread",
|
999
|
-
|
998
|
+
FUNCTION(rb_tensor,fread), 1);
|
1000
999
|
rb_define_method(GSL_TYPE(cgsl_tensor), "fwrite",
|
1001
|
-
|
1000
|
+
FUNCTION(rb_tensor,fwrite), 1);
|
1002
1001
|
rb_define_method(GSL_TYPE(cgsl_tensor), "fprintf",
|
1003
|
-
|
1002
|
+
FUNCTION(rb_tensor,fprintf), -1);
|
1004
1003
|
rb_define_method(GSL_TYPE(cgsl_tensor), "printf",
|
1005
|
-
|
1004
|
+
FUNCTION(rb_tensor,printf), -1);
|
1006
1005
|
rb_define_method(GSL_TYPE(cgsl_tensor), "fscanf",
|
1007
|
-
|
1006
|
+
FUNCTION(rb_tensor,fscanf), 1);
|
1008
1007
|
|
1009
1008
|
rb_define_method(GSL_TYPE(cgsl_tensor), "swap_indices",
|
1010
|
-
|
1009
|
+
FUNCTION(rb_tensor,swap_indices), 2);
|
1011
1010
|
|
1012
1011
|
rb_define_method(GSL_TYPE(cgsl_tensor), "max",
|
1013
|
-
|
1012
|
+
FUNCTION(rb_tensor,max), 0);
|
1014
1013
|
rb_define_method(GSL_TYPE(cgsl_tensor), "min",
|
1015
|
-
|
1014
|
+
FUNCTION(rb_tensor,min), 0);
|
1016
1015
|
rb_define_method(GSL_TYPE(cgsl_tensor), "minmax",
|
1017
|
-
|
1016
|
+
FUNCTION(rb_tensor,minmax), 0);
|
1018
1017
|
rb_define_method(GSL_TYPE(cgsl_tensor), "max_index",
|
1019
|
-
|
1018
|
+
FUNCTION(rb_tensor,max_index), 0);
|
1020
1019
|
rb_define_method(GSL_TYPE(cgsl_tensor), "min_index",
|
1021
|
-
|
1020
|
+
FUNCTION(rb_tensor,min_index), 0);
|
1022
1021
|
rb_define_method(GSL_TYPE(cgsl_tensor), "minmax_index",
|
1023
|
-
|
1022
|
+
FUNCTION(rb_tensor,minmax_index), 0);
|
1024
1023
|
|
1025
1024
|
rb_define_method(GSL_TYPE(cgsl_tensor), "isnull",
|
1026
|
-
|
1025
|
+
FUNCTION(rb_tensor,isnull), 0);
|
1027
1026
|
rb_define_method(GSL_TYPE(cgsl_tensor), "isnull?",
|
1028
|
-
|
1027
|
+
FUNCTION(rb_tensor,isnull2), 0);
|
1029
1028
|
|
1030
1029
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add",
|
1031
|
-
|
1030
|
+
FUNCTION(rb_tensor,add), 1);
|
1032
1031
|
rb_define_method(GSL_TYPE(cgsl_tensor), "sub",
|
1033
|
-
|
1032
|
+
FUNCTION(rb_tensor,sub), 1);
|
1034
1033
|
rb_define_method(GSL_TYPE(cgsl_tensor), "mul_elements",
|
1035
|
-
|
1034
|
+
FUNCTION(rb_tensor,mul_elements), 1);
|
1036
1035
|
rb_define_method(GSL_TYPE(cgsl_tensor), "div_elements",
|
1037
|
-
|
1036
|
+
FUNCTION(rb_tensor,div_elements), 1);
|
1038
1037
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add_constant",
|
1039
|
-
|
1038
|
+
FUNCTION(rb_tensor,add_constant), 1);
|
1040
1039
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add_diagonal",
|
1041
|
-
|
1040
|
+
FUNCTION(rb_tensor,add_diagonal), 1);
|
1042
1041
|
rb_define_method(GSL_TYPE(cgsl_tensor), "scale",
|
1043
|
-
|
1042
|
+
FUNCTION(rb_tensor,scale), 1);
|
1044
1043
|
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "product",
|
1045
|
-
|
1044
|
+
FUNCTION(rb_tensor,product_singleton), 2);
|
1046
1045
|
rb_define_method(GSL_TYPE(cgsl_tensor), "product",
|
1047
|
-
|
1046
|
+
FUNCTION(rb_tensor,product), 1);
|
1048
1047
|
rb_define_method(GSL_TYPE(cgsl_tensor), "contract",
|
1049
|
-
|
1048
|
+
FUNCTION(rb_tensor,contract), 2);
|
1050
1049
|
|
1051
1050
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "+", "add");
|
1052
1051
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "-", "sub");
|
@@ -1055,62 +1054,62 @@ void FUNCTION(Init_tensor,init)(VALUE module)
|
|
1055
1054
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "*", "product");
|
1056
1055
|
|
1057
1056
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add!",
|
1058
|
-
|
1057
|
+
FUNCTION(rb_tensor,add_bang), 1);
|
1059
1058
|
rb_define_method(GSL_TYPE(cgsl_tensor), "sub!",
|
1060
|
-
|
1059
|
+
FUNCTION(rb_tensor,sub_bang), 1);
|
1061
1060
|
rb_define_method(GSL_TYPE(cgsl_tensor), "mul_elements!",
|
1062
|
-
|
1061
|
+
FUNCTION(rb_tensor,mul_elements_bang), 1);
|
1063
1062
|
rb_define_method(GSL_TYPE(cgsl_tensor), "div_elements!",
|
1064
|
-
|
1063
|
+
FUNCTION(rb_tensor,div_elements_bang), 1);
|
1065
1064
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add_constant!",
|
1066
|
-
|
1065
|
+
FUNCTION(rb_tensor,add_constant_bang), 1);
|
1067
1066
|
rb_define_method(GSL_TYPE(cgsl_tensor), "add_diagonal!",
|
1068
|
-
|
1067
|
+
FUNCTION(rb_tensor,add_diagonal_bang), 1);
|
1069
1068
|
rb_define_method(GSL_TYPE(cgsl_tensor), "scale!",
|
1070
|
-
|
1069
|
+
FUNCTION(rb_tensor,scale_bang), 1);
|
1071
1070
|
|
1072
1071
|
rb_define_method(GSL_TYPE(cgsl_tensor), "+@",
|
1073
|
-
|
1072
|
+
FUNCTION(rb_tensor,uplus), 0);
|
1074
1073
|
rb_define_method(GSL_TYPE(cgsl_tensor), "-@",
|
1075
|
-
|
1074
|
+
FUNCTION(rb_tensor,uminus), 0);
|
1076
1075
|
|
1077
1076
|
rb_define_method(GSL_TYPE(cgsl_tensor), "size",
|
1078
|
-
|
1077
|
+
FUNCTION(rb_tensor,size), 0);
|
1079
1078
|
rb_define_method(GSL_TYPE(cgsl_tensor), "rank",
|
1080
|
-
|
1079
|
+
FUNCTION(rb_tensor,rank), 0);
|
1081
1080
|
rb_define_method(GSL_TYPE(cgsl_tensor), "dimension",
|
1082
|
-
|
1081
|
+
FUNCTION(rb_tensor,dimension), 0);
|
1083
1082
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "dim", "dimension");
|
1084
1083
|
rb_define_method(GSL_TYPE(cgsl_tensor), "data",
|
1085
|
-
|
1084
|
+
FUNCTION(rb_tensor,data), 0);
|
1086
1085
|
|
1087
1086
|
rb_define_method(GSL_TYPE(cgsl_tensor), "to_v",
|
1088
|
-
|
1087
|
+
FUNCTION(rb_tensor,to_v), 0);
|
1089
1088
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "to_gv", "to_v");
|
1090
1089
|
|
1091
1090
|
rb_define_method(GSL_TYPE(cgsl_tensor), "to_vector",
|
1092
|
-
|
1091
|
+
FUNCTION(rb_tensor,2vector), 0);
|
1093
1092
|
rb_define_method(GSL_TYPE(cgsl_tensor), "to_matrix",
|
1094
|
-
|
1093
|
+
FUNCTION(rb_tensor,2matrix), 0);
|
1095
1094
|
|
1096
1095
|
rb_define_method(GSL_TYPE(cgsl_tensor), "subtensor",
|
1097
|
-
|
1096
|
+
FUNCTION(rb_tensor,subtensor), -1);
|
1098
1097
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "view", "subtensor");
|
1099
1098
|
|
1100
1099
|
rb_define_method(GSL_TYPE(cgsl_tensor), "to_s",
|
1101
|
-
|
1100
|
+
FUNCTION(rb_tensor,to_s), 0);
|
1102
1101
|
rb_define_method(GSL_TYPE(cgsl_tensor), "inspect",
|
1103
|
-
|
1102
|
+
FUNCTION(rb_tensor,inspect), 0);
|
1104
1103
|
|
1105
1104
|
rb_define_method(GSL_TYPE(cgsl_tensor), "equal?",
|
1106
|
-
|
1105
|
+
FUNCTION(rb_tensor,equal), -1);
|
1107
1106
|
rb_define_alias(GSL_TYPE(cgsl_tensor), "==", "equal?");
|
1108
1107
|
|
1109
1108
|
rb_define_method(GSL_TYPE(cgsl_tensor), "coerce",
|
1110
|
-
|
1109
|
+
FUNCTION(rb_tensor,coerce), 1);
|
1111
1110
|
|
1112
|
-
rb_define_method(GSL_TYPE(cgsl_tensor), "info",
|
1113
|
-
|
1111
|
+
rb_define_method(GSL_TYPE(cgsl_tensor), "info",
|
1112
|
+
FUNCTION(rb_tensor,info), 0);
|
1114
1113
|
}
|
1115
1114
|
|
1116
1115
|
#undef NUMCONV
|