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
@@ -2,18 +2,16 @@
|
|
2
2
|
matrix_double.c
|
3
3
|
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
|
4
4
|
(C) Copyright 2001-2006 by Yoshiki Tsunesada
|
5
|
-
|
5
|
+
|
6
6
|
Ruby/GSL is free software: you can redistribute it and/or modify it
|
7
7
|
under the terms of the GNU General Public License.
|
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"
|
13
|
-
#include "rb_gsl_complex.h"
|
14
|
-
#
|
15
|
-
#include "rb_gsl_with_narray.h"
|
16
|
-
#endif
|
11
|
+
|
12
|
+
#include "include/rb_gsl_array.h"
|
13
|
+
#include "include/rb_gsl_complex.h"
|
14
|
+
#include "include/rb_gsl_with_narray.h"
|
17
15
|
|
18
16
|
enum {
|
19
17
|
GSL_MATRIX_ADD,
|
@@ -62,29 +60,28 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
|
|
62
60
|
default:
|
63
61
|
if (MATRIX_INT_P(bb)) bb = rb_gsl_matrix_int_to_f(bb);
|
64
62
|
if (VECTOR_INT_P(bb)) bb = rb_gsl_vector_int_to_f(bb);
|
65
|
-
|
66
63
|
if (rb_obj_is_kind_of(bb, cgsl_matrix)) {
|
67
64
|
Data_Get_Struct(bb, gsl_matrix, mb);
|
68
65
|
switch (flag) {
|
69
66
|
case GSL_MATRIX_ADD:
|
70
|
-
|
71
|
-
|
72
|
-
|
67
|
+
mnew = make_matrix_clone(m);
|
68
|
+
gsl_matrix_add(mnew, mb);
|
69
|
+
break;
|
73
70
|
case GSL_MATRIX_SUB:
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
mnew = make_matrix_clone(m);
|
72
|
+
gsl_matrix_sub(mnew,mb);
|
73
|
+
break;
|
77
74
|
case GSL_MATRIX_MUL:
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
mnew = make_matrix_clone(m);
|
76
|
+
gsl_matrix_mul_elements(mnew, mb);
|
77
|
+
break;
|
81
78
|
case GSL_MATRIX_DIV:
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
mnew = make_matrix_clone(m);
|
80
|
+
gsl_matrix_div_elements(mnew, mb);
|
81
|
+
break;
|
85
82
|
default:
|
86
|
-
|
87
|
-
|
83
|
+
rb_raise(rb_eRuntimeError, "operation not defined");
|
84
|
+
break;
|
88
85
|
}
|
89
86
|
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
90
87
|
} else if (rb_obj_is_kind_of(bb, cgsl_matrix_complex)) {
|
@@ -92,20 +89,20 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
|
|
92
89
|
cmnew = matrix_to_complex(m);
|
93
90
|
switch (flag) {
|
94
91
|
case GSL_MATRIX_ADD:
|
95
|
-
|
96
|
-
|
92
|
+
gsl_matrix_complex_add(cmnew, cmb);
|
93
|
+
break;
|
97
94
|
case GSL_MATRIX_SUB:
|
98
|
-
|
99
|
-
|
95
|
+
gsl_matrix_complex_sub(cmnew,cmb);
|
96
|
+
break;
|
100
97
|
case GSL_MATRIX_MUL:
|
101
|
-
|
102
|
-
|
98
|
+
gsl_matrix_complex_mul_elements(cmnew, cmb);
|
99
|
+
break;
|
103
100
|
case GSL_MATRIX_DIV:
|
104
|
-
|
105
|
-
|
101
|
+
gsl_matrix_complex_div_elements(cmnew, cmb);
|
102
|
+
break;
|
106
103
|
default:
|
107
|
-
|
108
|
-
|
104
|
+
rb_raise(rb_eRuntimeError, "operation not defined");
|
105
|
+
break;
|
109
106
|
}
|
110
107
|
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
|
111
108
|
} else if (rb_obj_is_kind_of(bb, cgsl_complex)) {
|
@@ -113,60 +110,60 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
|
|
113
110
|
cmnew = matrix_to_complex(m);
|
114
111
|
switch (flag) {
|
115
112
|
case GSL_MATRIX_ADD:
|
116
|
-
|
117
|
-
|
113
|
+
gsl_matrix_complex_add_constant(cmnew, *c);
|
114
|
+
break;
|
118
115
|
case GSL_MATRIX_SUB:
|
119
|
-
|
120
|
-
|
116
|
+
gsl_matrix_complex_add_constant(cmnew, gsl_complex_negative(*c));
|
117
|
+
break;
|
121
118
|
case GSL_MATRIX_MUL:
|
122
|
-
|
123
|
-
|
119
|
+
gsl_matrix_complex_scale(cmnew, *c);
|
120
|
+
break;
|
124
121
|
case GSL_MATRIX_DIV:
|
125
|
-
|
126
|
-
|
122
|
+
gsl_matrix_complex_scale(cmnew, gsl_complex_inverse(*c));
|
123
|
+
break;
|
127
124
|
default:
|
128
|
-
|
129
|
-
|
125
|
+
rb_raise(rb_eRuntimeError, "operation not defined");
|
126
|
+
break;
|
130
127
|
}
|
131
128
|
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
|
132
129
|
} else if (rb_obj_is_kind_of(bb, cgsl_vector)) {
|
133
130
|
if (!VECTOR_COL_P(bb))
|
134
|
-
|
135
|
-
|
136
|
-
|
131
|
+
rb_raise(rb_eTypeError,
|
132
|
+
"Operation with %s is not defined (GSL::Vector::Col expected)",
|
133
|
+
rb_class2name(CLASS_OF(bb)));
|
137
134
|
Data_Get_Struct(bb, gsl_vector, v);
|
138
135
|
switch (flag) {
|
139
136
|
case GSL_MATRIX_MUL:
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
137
|
+
// vnew = gsl_vector_alloc(v->size);
|
138
|
+
vnew = gsl_vector_alloc(m->size1);
|
139
|
+
if (vnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
|
140
|
+
gsl_matrix_mul_vector(vnew, m, v);
|
141
|
+
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, vnew);
|
142
|
+
break;
|
146
143
|
case GSL_MATRIX_DIV:
|
147
|
-
|
148
|
-
|
144
|
+
return rb_gsl_linalg_LU_solve(1, &bb, obj);
|
145
|
+
break;
|
149
146
|
default:
|
150
|
-
|
151
|
-
|
152
|
-
|
147
|
+
rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
|
148
|
+
rb_class2name(CLASS_OF(bb)));
|
149
|
+
break;
|
153
150
|
}
|
154
151
|
} else if (rb_obj_is_kind_of(bb, cgsl_vector_complex)) {
|
155
152
|
Data_Get_Struct(bb, gsl_vector_complex, cv);
|
156
153
|
switch (flag) {
|
157
154
|
case GSL_MATRIX_MUL:
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
155
|
+
cm = matrix_to_complex(m);
|
156
|
+
// cvnew = gsl_vector_complex_alloc(cv->size);
|
157
|
+
cvnew = gsl_vector_complex_alloc(m->size1);
|
158
|
+
if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
|
159
|
+
gsl_matrix_complex_mul_vector(cvnew, cm, cv);
|
160
|
+
gsl_matrix_complex_free(cm);
|
161
|
+
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
|
162
|
+
break;
|
166
163
|
default:
|
167
|
-
|
168
|
-
|
169
|
-
|
164
|
+
rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
|
165
|
+
rb_class2name(CLASS_OF(bb)));
|
166
|
+
break;
|
170
167
|
}
|
171
168
|
} else {
|
172
169
|
rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
|
@@ -236,8 +233,8 @@ static VALUE rb_gsl_matrix_mul(VALUE obj, VALUE bb)
|
|
236
233
|
return rb_gsl_matrix_mul_elements(obj, bb);
|
237
234
|
break;
|
238
235
|
default:
|
239
|
-
rb_raise(rb_eTypeError,
|
240
|
-
|
236
|
+
rb_raise(rb_eTypeError,
|
237
|
+
"wrong argument type %s", rb_class2name(CLASS_OF(bb)));
|
241
238
|
break;
|
242
239
|
}
|
243
240
|
}
|
@@ -271,8 +268,8 @@ static VALUE rb_gsl_matrix_mul_bang(VALUE obj, VALUE bb)
|
|
271
268
|
return obj;
|
272
269
|
break;
|
273
270
|
default:
|
274
|
-
rb_raise(rb_eTypeError,
|
275
|
-
|
271
|
+
rb_raise(rb_eTypeError,
|
272
|
+
"wrong argument type %s", rb_class2name(CLASS_OF(bb)));
|
276
273
|
break;
|
277
274
|
}
|
278
275
|
}
|
@@ -336,8 +333,8 @@ static VALUE rb_gsl_matrix_coerce(VALUE obj, VALUE other)
|
|
336
333
|
vcm = Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cm);
|
337
334
|
return rb_ary_new3(2, other, vcm);
|
338
335
|
} else {
|
339
|
-
rb_raise(rb_eTypeError, "cannot coerce %s to Matrix",
|
340
|
-
|
336
|
+
rb_raise(rb_eTypeError, "cannot coerce %s to Matrix",
|
337
|
+
rb_class2name(CLASS_OF(other)));
|
341
338
|
}
|
342
339
|
break;
|
343
340
|
}
|
@@ -384,7 +381,7 @@ static VALUE rb_gsl_matrix_clean(int argc, VALUE *argv, VALUE obj)
|
|
384
381
|
mnew = make_matrix_clone(m);
|
385
382
|
n = m->size1*m->size2;
|
386
383
|
for (i = 0; i < n; i++) if (fabs(mnew->data[i]) < eps) mnew->data[i] = 0.0;
|
387
|
-
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew)
|
384
|
+
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
|
388
385
|
}
|
389
386
|
|
390
387
|
static VALUE rb_gsl_matrix_clean_bang(int argc, VALUE *argv, VALUE obj)
|
@@ -411,8 +408,8 @@ static VALUE rb_gsl_matrix_clean_bang(int argc, VALUE *argv, VALUE obj)
|
|
411
408
|
}
|
412
409
|
|
413
410
|
|
414
|
-
static VALUE rb_gsl_matrix_op_inplace(VALUE mm1, VALUE mm2,
|
415
|
-
|
411
|
+
static VALUE rb_gsl_matrix_op_inplace(VALUE mm1, VALUE mm2,
|
412
|
+
int (*f)(gsl_matrix*, const gsl_matrix*))
|
416
413
|
{
|
417
414
|
gsl_matrix *m1, *m2;
|
418
415
|
Data_Get_Struct(mm1, gsl_matrix, m1);
|
@@ -465,9 +462,9 @@ static VALUE rb_gsl_matrix_log10(VALUE obj)
|
|
465
462
|
|
466
463
|
#include <gsl/gsl_rng.h>
|
467
464
|
#include <gsl/gsl_randist.h>
|
468
|
-
#include "rb_gsl_rng.h"
|
465
|
+
#include "include/rb_gsl_rng.h"
|
469
466
|
static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
|
470
|
-
|
467
|
+
double (*f)(const gsl_rng*));
|
471
468
|
static VALUE rb_gsl_matrix_rand(int argc, VALUE *argv, VALUE klass)
|
472
469
|
{
|
473
470
|
return rb_gsl_matrix_randx(argc, argv, klass, gsl_rng_uniform);
|
@@ -479,7 +476,7 @@ static VALUE rb_gsl_matrix_randn(int argc, VALUE *argv, VALUE klass)
|
|
479
476
|
}
|
480
477
|
|
481
478
|
static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
|
482
|
-
|
479
|
+
double (*f)(const gsl_rng*))
|
483
480
|
{
|
484
481
|
gsl_matrix *m;
|
485
482
|
gsl_rng *rng;
|
@@ -488,8 +485,8 @@ static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
|
|
488
485
|
switch (argc) {
|
489
486
|
case 3:
|
490
487
|
if (!rb_obj_is_kind_of(argv[2], cgsl_rng)) {
|
491
|
-
rb_raise(rb_eTypeError,
|
492
|
-
|
488
|
+
rb_raise(rb_eTypeError,
|
489
|
+
"Wrong argument type (GSL::Rng expected)");
|
493
490
|
}
|
494
491
|
Data_Get_Struct(argv[2], gsl_rng, rng);
|
495
492
|
size1 = FIX2INT(argv[0]);
|
@@ -530,7 +527,7 @@ void Init_gsl_matrix(VALUE module)
|
|
530
527
|
rb_define_alias(cgsl_matrix, "*", "mul");
|
531
528
|
rb_define_method(cgsl_matrix, "mul!", rb_gsl_matrix_mul_bang, 1);
|
532
529
|
/***/
|
533
|
-
|
530
|
+
|
534
531
|
rb_define_method(cgsl_matrix, "to_complex", rb_gsl_matrix_to_complex, 0);
|
535
532
|
|
536
533
|
rb_define_method(cgsl_matrix, "coerce", rb_gsl_matrix_coerce, 1);
|
@@ -2,21 +2,21 @@
|
|
2
2
|
matrix_int.c
|
3
3
|
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
|
4
4
|
(C) Copyright 2001-2006 by Yoshiki Tsunesada
|
5
|
-
|
5
|
+
|
6
6
|
Ruby/GSL is free software: you can redistribute it and/or modify it
|
7
7
|
under the terms of the GNU General Public License.
|
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"
|
13
|
-
#include "rb_gsl_complex.h"
|
11
|
+
|
12
|
+
#include "include/rb_gsl_array.h"
|
13
|
+
#include "include/rb_gsl_complex.h"
|
14
14
|
#ifdef HAVE_NARRAY_H
|
15
|
-
#include "rb_gsl_with_narray.h"
|
15
|
+
#include "include/rb_gsl_with_narray.h"
|
16
16
|
#endif
|
17
17
|
|
18
|
-
int gsl_linalg_matmult_int(const gsl_matrix_int *A,
|
19
|
-
|
18
|
+
int gsl_linalg_matmult_int(const gsl_matrix_int *A,
|
19
|
+
const gsl_matrix_int *B, gsl_matrix_int *C);
|
20
20
|
|
21
21
|
|
22
22
|
VALUE rb_gsl_matrix_to_i(VALUE obj);
|
@@ -85,16 +85,16 @@ static VALUE rb_gsl_matrix_int_operation1(VALUE obj, VALUE other, int flag)
|
|
85
85
|
bval = NUM2INT(other);
|
86
86
|
anew = make_matrix_int_clone(a);
|
87
87
|
switch (flag) {
|
88
|
-
case GSL_MATRIX_INT_ADD:
|
88
|
+
case GSL_MATRIX_INT_ADD:
|
89
89
|
/*result =*/ gsl_matrix_int_add_constant(anew, bval);
|
90
90
|
break;
|
91
|
-
case GSL_MATRIX_INT_SUB:
|
91
|
+
case GSL_MATRIX_INT_SUB:
|
92
92
|
/*result =*/ gsl_matrix_int_add_constant(anew, -bval);
|
93
93
|
break;
|
94
|
-
case GSL_MATRIX_INT_MUL:
|
94
|
+
case GSL_MATRIX_INT_MUL:
|
95
95
|
/*result =*/ gsl_matrix_int_scale(anew, bval);
|
96
96
|
break;
|
97
|
-
case GSL_MATRIX_INT_DIV:
|
97
|
+
case GSL_MATRIX_INT_DIV:
|
98
98
|
/*result =*/ gsl_matrix_int_scale(anew, 1.0/bval);
|
99
99
|
break;
|
100
100
|
default:
|
@@ -109,34 +109,34 @@ static VALUE rb_gsl_matrix_int_operation1(VALUE obj, VALUE other, int flag)
|
|
109
109
|
Data_Get_Struct(other, gsl_matrix_int, b);
|
110
110
|
switch (flag) {
|
111
111
|
case GSL_MATRIX_INT_ADD:
|
112
|
-
|
113
|
-
|
112
|
+
/*result =*/ gsl_matrix_int_add(anew, b);
|
113
|
+
break;
|
114
114
|
case GSL_MATRIX_INT_SUB:
|
115
|
-
|
116
|
-
|
115
|
+
/*result =*/ gsl_matrix_int_sub(anew, b);
|
116
|
+
break;
|
117
117
|
case GSL_MATRIX_INT_MUL:
|
118
|
-
|
119
|
-
|
118
|
+
/*result =*/ gsl_matrix_int_mul_elements(anew, b);
|
119
|
+
break;
|
120
120
|
case GSL_MATRIX_INT_DIV:
|
121
|
-
|
122
|
-
|
121
|
+
/*result =*/ gsl_matrix_int_div_elements(anew, b);
|
122
|
+
break;
|
123
123
|
default:
|
124
|
-
|
124
|
+
break;
|
125
125
|
}
|
126
126
|
} else if (VECTOR_INT_COL_P(other)) {
|
127
127
|
switch (flag) {
|
128
128
|
case GSL_MATRIX_INT_MUL:
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
129
|
+
Data_Get_Struct(other, gsl_vector_int, vi);
|
130
|
+
vinew = gsl_vector_int_alloc(vi->size);
|
131
|
+
gsl_matrix_int_mul_vector(vinew, a, vi);
|
132
|
+
return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vinew);
|
133
|
+
break;
|
134
134
|
default:
|
135
|
-
|
135
|
+
rb_raise(rb_eRuntimeError, "Operation not defined");
|
136
136
|
}
|
137
137
|
} else {
|
138
138
|
rb_raise(rb_eTypeError, "Operation not defined with %s",
|
139
|
-
|
139
|
+
rb_class2name(CLASS_OF(other)));
|
140
140
|
}
|
141
141
|
break;
|
142
142
|
}
|
@@ -183,48 +183,47 @@ static VALUE rb_gsl_matrix_int_matrix_mul(VALUE obj, VALUE bb)
|
|
183
183
|
switch (TYPE(bb)) {
|
184
184
|
case T_FIXNUM:
|
185
185
|
return rb_gsl_matrix_int_mul(obj, bb);
|
186
|
-
|
186
|
+
/* return rb_gsl_matrix_int_power(obj, bb);*/
|
187
187
|
break;
|
188
188
|
default:
|
189
189
|
rb_raise(rb_eTypeError, "wrong argument type %s (Matrix::Int, Vector::Int::Col or Fixnum expected)",
|
190
|
-
|
190
|
+
rb_class2name(CLASS_OF(bb)));
|
191
191
|
break;
|
192
192
|
}
|
193
193
|
}
|
194
194
|
}
|
195
195
|
|
196
|
-
int gsl_linalg_matmult_int(const gsl_matrix_int *A,
|
197
|
-
|
196
|
+
int gsl_linalg_matmult_int(const gsl_matrix_int *A,
|
197
|
+
const gsl_matrix_int *B, gsl_matrix_int *C)
|
198
198
|
{
|
199
199
|
if (A->size2 != B->size1 || A->size1 != C->size1 || B->size2 != C->size2)
|
200
|
-
|
201
|
-
|
202
|
-
|
200
|
+
{
|
201
|
+
GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN);
|
202
|
+
}
|
203
203
|
else
|
204
|
+
{
|
205
|
+
int a, b;
|
206
|
+
int temp;
|
207
|
+
size_t i, j, k;
|
208
|
+
|
209
|
+
for (i = 0; i < C->size1; i++)
|
204
210
|
{
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
211
|
+
for (j = 0; j < C->size2; j++)
|
212
|
+
{
|
213
|
+
a = gsl_matrix_int_get(A, i, 0);
|
214
|
+
b = gsl_matrix_int_get(B, 0, j);
|
215
|
+
temp = a * b;
|
216
|
+
for (k = 1; k < A->size2; k++)
|
210
217
|
{
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
b = gsl_matrix_int_get(B, 0, j);
|
215
|
-
temp = a * b;
|
216
|
-
for (k = 1; k < A->size2; k++)
|
217
|
-
{
|
218
|
-
a = gsl_matrix_int_get(A, i, k);
|
219
|
-
b = gsl_matrix_int_get(B, k, j);
|
220
|
-
temp += a * b;
|
221
|
-
}
|
222
|
-
gsl_matrix_int_set(C, i, j, temp);
|
223
|
-
}
|
218
|
+
a = gsl_matrix_int_get(A, i, k);
|
219
|
+
b = gsl_matrix_int_get(B, k, j);
|
220
|
+
temp += a * b;
|
224
221
|
}
|
225
|
-
|
226
|
-
|
222
|
+
gsl_matrix_int_set(C, i, j, temp);
|
223
|
+
}
|
227
224
|
}
|
225
|
+
return GSL_SUCCESS;
|
226
|
+
}
|
228
227
|
}
|
229
228
|
|
230
229
|
void Init_gsl_matrix_int_init(VALUE module);
|