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
@@ -13,33 +13,33 @@
|
|
13
13
|
This source code is created modifying gsl-1.5/histogram/ *2d.c
|
14
14
|
*/
|
15
15
|
|
16
|
-
#include "rb_gsl_histogram.h"
|
16
|
+
#include "include/rb_gsl_histogram.h"
|
17
17
|
|
18
18
|
mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
|
19
|
-
|
19
|
+
const size_t nz)
|
20
20
|
{
|
21
21
|
mygsl_histogram3d *h = NULL;
|
22
22
|
if (nx == 0) GSL_ERROR_VAL ("histogram3d length nx must be positive integer",
|
23
|
-
|
23
|
+
GSL_EDOM, 0);
|
24
24
|
if (ny == 0) GSL_ERROR_VAL ("histogram3d length ny must be positive integer",
|
25
|
-
|
25
|
+
GSL_EDOM, 0);
|
26
26
|
if (nz == 0) GSL_ERROR_VAL ("histogram3d length nz must be positive integer",
|
27
|
-
|
27
|
+
GSL_EDOM, 0);
|
28
28
|
h = (mygsl_histogram3d *) malloc(sizeof(mygsl_histogram3d));
|
29
29
|
if (h == NULL) GSL_ERROR_VAL ("failed to allocate space for histogram3d struct",
|
30
|
-
|
30
|
+
GSL_ENOMEM, 0);
|
31
31
|
h->xrange = (double *) malloc ((nx + 1) * sizeof (double));
|
32
32
|
if (h->xrange == 0) {
|
33
33
|
free (h); /* exception in constructor, avoid memory leak */
|
34
34
|
GSL_ERROR_VAL ("failed to allocate space for histogram3d x ranges",
|
35
|
-
|
35
|
+
GSL_ENOMEM, 0);
|
36
36
|
}
|
37
37
|
h->yrange = (double *) malloc ((ny + 1) * sizeof (double));
|
38
38
|
if (h->yrange == 0) {
|
39
39
|
free (h->xrange);
|
40
40
|
free (h); /* exception in constructor, avoid memory leak */
|
41
41
|
GSL_ERROR_VAL ("failed to allocate space for histogram3d y ranges",
|
42
|
-
|
42
|
+
GSL_ENOMEM, 0);
|
43
43
|
}
|
44
44
|
h->zrange = (double *) malloc ((nz + 1) * sizeof (double));
|
45
45
|
if (h->zrange == 0) {
|
@@ -47,7 +47,7 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
|
|
47
47
|
free (h->yrange);
|
48
48
|
free (h); /* exception in constructor, avoid memory leak */
|
49
49
|
GSL_ERROR_VAL ("failed to allocate space for histogram3d z ranges",
|
50
|
-
|
50
|
+
GSL_ENOMEM, 0);
|
51
51
|
}
|
52
52
|
h->bin = (double *) malloc (nx*ny*nz*sizeof (double));
|
53
53
|
if (h->bin == 0) {
|
@@ -56,7 +56,7 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
|
|
56
56
|
free (h->zrange);
|
57
57
|
free (h); /* exception in constructor, avoid memory leak */
|
58
58
|
GSL_ERROR_VAL ("failed to allocate space for histogram bins",
|
59
|
-
|
59
|
+
GSL_ENOMEM, 0);
|
60
60
|
}
|
61
61
|
h->nx = nx;
|
62
62
|
h->ny = ny;
|
@@ -64,15 +64,15 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
|
|
64
64
|
return h;
|
65
65
|
}
|
66
66
|
|
67
|
-
mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
67
|
+
mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
|
68
|
+
const size_t ny,
|
69
|
+
const size_t nz,
|
70
|
+
const double xmin,
|
71
|
+
const double xmax,
|
72
|
+
const double ymin,
|
73
|
+
const double ymax,
|
74
|
+
const double zmin,
|
75
|
+
const double zmax)
|
76
76
|
{
|
77
77
|
mygsl_histogram3d *h;
|
78
78
|
size_t i;
|
@@ -86,9 +86,9 @@ mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
|
|
86
86
|
return h;
|
87
87
|
}
|
88
88
|
|
89
|
-
mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
|
90
|
-
|
91
|
-
|
89
|
+
mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
|
90
|
+
const size_t ny,
|
91
|
+
const size_t nz)
|
92
92
|
{
|
93
93
|
mygsl_histogram3d *h;
|
94
94
|
size_t i;
|
@@ -104,10 +104,10 @@ mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
|
|
104
104
|
return h;
|
105
105
|
}
|
106
106
|
|
107
|
-
int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
|
108
|
-
|
109
|
-
|
110
|
-
|
107
|
+
int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
|
108
|
+
double xmin, double xmax,
|
109
|
+
double ymin, double ymax,
|
110
|
+
double zmin, double zmax)
|
111
111
|
{
|
112
112
|
size_t i;
|
113
113
|
const size_t nx = h->nx, ny = h->ny, nz = h->nz;
|
@@ -115,7 +115,6 @@ int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
|
|
115
115
|
if (xmin >= xmax) GSL_ERROR_VAL ("xmin must be less than xmax", GSL_EINVAL, 0);
|
116
116
|
if (ymin >= ymax) GSL_ERROR_VAL ("ymin must be less than ymax", GSL_EINVAL, 0);
|
117
117
|
if (zmin >= zmax) GSL_ERROR_VAL ("zmin must be less than zmax", GSL_EINVAL, 0);
|
118
|
-
|
119
118
|
for (i = 0; i <= nx; i++)
|
120
119
|
h->xrange[i] = xmin + ((double) i / (double) nx) * (xmax - xmin);
|
121
120
|
for (i = 0; i <= ny; i++)
|
@@ -126,22 +125,22 @@ int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
|
|
126
125
|
return GSL_SUCCESS;
|
127
126
|
}
|
128
127
|
|
129
|
-
int mygsl_histogram3d_set_ranges(mygsl_histogram3d * h,
|
130
|
-
|
131
|
-
|
132
|
-
|
128
|
+
int mygsl_histogram3d_set_ranges(mygsl_histogram3d * h,
|
129
|
+
const double xrange[], size_t xsize,
|
130
|
+
const double yrange[], size_t ysize,
|
131
|
+
const double zrange[], size_t zsize)
|
133
132
|
{
|
134
133
|
size_t i;
|
135
134
|
const size_t nx = h->nx, ny = h->ny, nz = h->nz;
|
136
135
|
if (xsize != (nx + 1))
|
137
|
-
GSL_ERROR_VAL ("size of xrange must match size of histogram",
|
138
|
-
|
136
|
+
GSL_ERROR_VAL ("size of xrange must match size of histogram",
|
137
|
+
GSL_EINVAL, 0);
|
139
138
|
if (ysize != (ny + 1))
|
140
|
-
GSL_ERROR_VAL ("size of yrange must match size of histogram",
|
141
|
-
|
139
|
+
GSL_ERROR_VAL ("size of yrange must match size of histogram",
|
140
|
+
GSL_EINVAL, 0);
|
142
141
|
if (zsize != (nz + 1))
|
143
|
-
GSL_ERROR_VAL ("size of yrange must match size of histogram",
|
144
|
-
|
142
|
+
GSL_ERROR_VAL ("size of yrange must match size of histogram",
|
143
|
+
GSL_EINVAL, 0);
|
145
144
|
memcpy(h->xrange, xrange, sizeof(double)*xsize);
|
146
145
|
memcpy(h->yrange, yrange, sizeof(double)*ysize);
|
147
146
|
memcpy(h->zrange, zrange, sizeof(double)*zsize);
|
@@ -161,13 +160,13 @@ void mygsl_histogram3d_free (mygsl_histogram3d * h)
|
|
161
160
|
/*****/
|
162
161
|
|
163
162
|
int mygsl_histogram3d_memcpy(mygsl_histogram3d * dest, const mygsl_histogram3d * src)
|
164
|
-
{
|
165
|
-
size_t nx = src->nx;
|
166
|
-
size_t ny = src->ny;
|
167
|
-
size_t nz = src->nz;
|
163
|
+
{
|
164
|
+
size_t nx = src->nx;
|
165
|
+
size_t ny = src->ny;
|
166
|
+
size_t nz = src->nz;
|
168
167
|
if (dest->nx != src->nx || dest->ny != src->ny || dest->nz != src->nz) {
|
169
|
-
GSL_ERROR ("histograms have different sizes, cannot copy",
|
170
|
-
|
168
|
+
GSL_ERROR ("histograms have different sizes, cannot copy",
|
169
|
+
GSL_EINVAL);
|
171
170
|
}
|
172
171
|
memcpy(dest->xrange, src->xrange, sizeof(double)*(nx+1));
|
173
172
|
memcpy(dest->yrange, src->yrange, sizeof(double)*(ny+1));
|
@@ -187,78 +186,78 @@ mygsl_histogram3d* mygsl_histogram3d_clone(const mygsl_histogram3d * src)
|
|
187
186
|
/*****/
|
188
187
|
|
189
188
|
int mygsl_histogram3d_fread(FILE * stream, mygsl_histogram3d * h)
|
190
|
-
{
|
191
|
-
int status = gsl_block_raw_fread (stream, h->xrange, h->nx + 1, 1);
|
192
|
-
if (status) return status;
|
193
|
-
status = gsl_block_raw_fread (stream, h->yrange, h->ny + 1, 1);
|
194
|
-
if (status) return status;
|
195
|
-
status = gsl_block_raw_fread (stream, h->zrange, h->nz + 1, 1);
|
196
|
-
if (status) return status;
|
197
|
-
status = gsl_block_raw_fread (stream, h->bin, h->nx * h->ny * h->nz, 1);
|
189
|
+
{
|
190
|
+
int status = gsl_block_raw_fread (stream, h->xrange, h->nx + 1, 1);
|
191
|
+
if (status) return status;
|
192
|
+
status = gsl_block_raw_fread (stream, h->yrange, h->ny + 1, 1);
|
193
|
+
if (status) return status;
|
194
|
+
status = gsl_block_raw_fread (stream, h->zrange, h->nz + 1, 1);
|
195
|
+
if (status) return status;
|
196
|
+
status = gsl_block_raw_fread (stream, h->bin, h->nx * h->ny * h->nz, 1);
|
198
197
|
return status;
|
199
198
|
}
|
200
199
|
|
201
200
|
int mygsl_histogram3d_fwrite(FILE * stream, const mygsl_histogram3d * h)
|
202
|
-
{
|
203
|
-
int status = gsl_block_raw_fwrite (stream, h->xrange, h->nx + 1, 1);
|
204
|
-
if (status) return status;
|
205
|
-
status = gsl_block_raw_fwrite (stream, h->yrange, h->ny + 1, 1);
|
206
|
-
if (status) return status;
|
207
|
-
status = gsl_block_raw_fwrite (stream, h->zrange, h->nz + 1, 1);
|
208
|
-
if (status) return status;
|
209
|
-
status = gsl_block_raw_fwrite (stream, h->bin, h->nx * h->ny * h->nz, 1);
|
201
|
+
{
|
202
|
+
int status = gsl_block_raw_fwrite (stream, h->xrange, h->nx + 1, 1);
|
203
|
+
if (status) return status;
|
204
|
+
status = gsl_block_raw_fwrite (stream, h->yrange, h->ny + 1, 1);
|
205
|
+
if (status) return status;
|
206
|
+
status = gsl_block_raw_fwrite (stream, h->zrange, h->nz + 1, 1);
|
207
|
+
if (status) return status;
|
208
|
+
status = gsl_block_raw_fwrite (stream, h->bin, h->nx * h->ny * h->nz, 1);
|
210
209
|
return status;
|
211
210
|
}
|
212
211
|
|
213
212
|
int mygsl_histogram3d_increment(mygsl_histogram3d * h, double x, double y, double z)
|
214
|
-
{
|
215
|
-
int status = mygsl_histogram3d_accumulate (h, x, y, z, 1.0);
|
213
|
+
{
|
214
|
+
int status = mygsl_histogram3d_accumulate (h, x, y, z, 1.0);
|
216
215
|
return status;
|
217
216
|
}
|
218
217
|
|
219
218
|
int mygsl_find (const size_t n, const double range[], const double x, size_t * i);
|
220
219
|
int mygsl_find2d (const size_t nx, const double xrange[],
|
221
|
-
|
222
|
-
|
223
|
-
|
220
|
+
const size_t ny, const double yrange[],
|
221
|
+
const double x, const double y,
|
222
|
+
size_t * i, size_t * j);
|
224
223
|
int mygsl_find3d (const size_t nx, const double xrange[],
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
int mygsl_histogram3d_accumulate(mygsl_histogram3d * h,
|
231
|
-
|
232
|
-
{
|
233
|
-
const size_t nx = h->nx;
|
234
|
-
const size_t ny = h->ny;
|
235
|
-
const size_t nz = h->nz;
|
236
|
-
size_t i = 0, j = 0, k = 0;
|
224
|
+
const size_t ny, const double yrange[],
|
225
|
+
const size_t nz, const double zrange[],
|
226
|
+
const double x, const double y, const double z,
|
227
|
+
size_t * i, size_t * j, size_t *k);
|
228
|
+
|
229
|
+
int mygsl_histogram3d_accumulate(mygsl_histogram3d * h,
|
230
|
+
double x, double y, double z, double weight)
|
231
|
+
{
|
232
|
+
const size_t nx = h->nx;
|
233
|
+
const size_t ny = h->ny;
|
234
|
+
const size_t nz = h->nz;
|
235
|
+
size_t i = 0, j = 0, k = 0;
|
237
236
|
int status = mygsl_find3d (h->nx, h->xrange, h->ny, h->yrange, h->nz, h->zrange,
|
238
|
-
|
239
|
-
if (status) return GSL_EDOM;
|
240
|
-
if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
|
241
|
-
|
242
|
-
if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
|
243
|
-
|
244
|
-
if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
|
245
|
-
|
246
|
-
h->bin[i*ny*nz + j*nz + k] += weight;
|
237
|
+
x, y, z, &i, &j, &k);
|
238
|
+
if (status) return GSL_EDOM;
|
239
|
+
if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
|
240
|
+
GSL_ESANITY);
|
241
|
+
if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
|
242
|
+
GSL_ESANITY);
|
243
|
+
if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
|
244
|
+
GSL_ESANITY);
|
245
|
+
h->bin[i*ny*nz + j*nz + k] += weight;
|
247
246
|
return GSL_SUCCESS;
|
248
247
|
}
|
249
248
|
|
250
|
-
int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
|
251
|
-
|
249
|
+
int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
|
250
|
+
double x, double y, double z)
|
252
251
|
{
|
253
252
|
return mygsl_histogram3d_accumulate2(h, x, y, z, 1.0);
|
254
253
|
}
|
255
254
|
|
256
|
-
int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
|
257
|
-
|
258
|
-
{
|
259
|
-
const size_t nx = h->nx;
|
260
|
-
const size_t ny = h->ny;
|
261
|
-
const size_t nz = h->nz;
|
255
|
+
int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
|
256
|
+
double x, double y, double z, double weight)
|
257
|
+
{
|
258
|
+
const size_t nx = h->nx;
|
259
|
+
const size_t ny = h->ny;
|
260
|
+
const size_t nz = h->nz;
|
262
261
|
size_t i = 0, j = 0, k = 0;
|
263
262
|
int status;
|
264
263
|
if (x < h->xrange[0]) x = h->xrange[0] + 4*GSL_DBL_EPSILON;
|
@@ -268,81 +267,81 @@ int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
|
|
268
267
|
if (z < h->zrange[0]) z = h->zrange[0] + 4*GSL_DBL_EPSILON;
|
269
268
|
if (z > h->zrange[h->nz]) z = h->zrange[h->nz] - 4*GSL_DBL_EPSILON;
|
270
269
|
status = mygsl_find3d (h->nx, h->xrange, h->ny, h->yrange, h->nz, h->zrange,
|
271
|
-
|
272
|
-
if (status) return GSL_EDOM;
|
273
|
-
if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
|
274
|
-
|
275
|
-
if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
|
276
|
-
|
277
|
-
if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
|
278
|
-
|
279
|
-
h->bin[i*ny*nz + j*nz + k] += weight;
|
270
|
+
x, y, z, &i, &j, &k);
|
271
|
+
if (status) return GSL_EDOM;
|
272
|
+
if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
|
273
|
+
GSL_ESANITY);
|
274
|
+
if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
|
275
|
+
GSL_ESANITY);
|
276
|
+
if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
|
277
|
+
GSL_ESANITY);
|
278
|
+
h->bin[i*ny*nz + j*nz + k] += weight;
|
280
279
|
return GSL_SUCCESS;
|
281
280
|
}
|
282
281
|
|
283
|
-
double mygsl_histogram3d_get(const mygsl_histogram3d * h, const size_t i,
|
284
|
-
|
285
|
-
{
|
286
|
-
const size_t nx = h->nx;
|
287
|
-
const size_t ny = h->ny;
|
288
|
-
const size_t nz = h->nz;
|
289
|
-
if (i >= nx) GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1",
|
290
|
-
|
291
|
-
if (j >= ny) GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1",
|
292
|
-
|
293
|
-
if (k >= nz) GSL_ERROR_VAL ("index k lies outside valid range of 0 .. nz - 1",
|
294
|
-
|
282
|
+
double mygsl_histogram3d_get(const mygsl_histogram3d * h, const size_t i,
|
283
|
+
const size_t j, const size_t k)
|
284
|
+
{
|
285
|
+
const size_t nx = h->nx;
|
286
|
+
const size_t ny = h->ny;
|
287
|
+
const size_t nz = h->nz;
|
288
|
+
if (i >= nx) GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1",
|
289
|
+
GSL_EDOM, 0);
|
290
|
+
if (j >= ny) GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1",
|
291
|
+
GSL_EDOM, 0);
|
292
|
+
if (k >= nz) GSL_ERROR_VAL ("index k lies outside valid range of 0 .. nz - 1",
|
293
|
+
GSL_EDOM, 0);
|
295
294
|
return h->bin[i*ny*nz + j*nz + k];
|
296
295
|
}
|
297
296
|
|
298
|
-
int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
|
299
|
-
|
300
|
-
{
|
301
|
-
const size_t nx = h->nx;
|
302
|
-
if (i >= nx) GSL_ERROR ("index i lies outside valid range of 0 .. nx - 1",
|
303
|
-
|
304
|
-
*xlower = h->xrange[i];
|
305
|
-
*xupper = h->xrange[i + 1];
|
297
|
+
int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
|
298
|
+
double *xlower, double *xupper)
|
299
|
+
{
|
300
|
+
const size_t nx = h->nx;
|
301
|
+
if (i >= nx) GSL_ERROR ("index i lies outside valid range of 0 .. nx - 1",
|
302
|
+
GSL_EDOM);
|
303
|
+
*xlower = h->xrange[i];
|
304
|
+
*xupper = h->xrange[i + 1];
|
306
305
|
return GSL_SUCCESS;
|
307
306
|
}
|
308
307
|
|
309
|
-
int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
|
310
|
-
|
311
|
-
{
|
312
|
-
const size_t ny = h->ny;
|
313
|
-
if (j >= ny) GSL_ERROR ("index j lies outside valid range of 0 .. ny - 1",
|
314
|
-
|
315
|
-
*ylower = h->yrange[j];
|
316
|
-
*yupper = h->yrange[j + 1];
|
308
|
+
int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
|
309
|
+
double *ylower, double *yupper)
|
310
|
+
{
|
311
|
+
const size_t ny = h->ny;
|
312
|
+
if (j >= ny) GSL_ERROR ("index j lies outside valid range of 0 .. ny - 1",
|
313
|
+
GSL_EDOM);
|
314
|
+
*ylower = h->yrange[j];
|
315
|
+
*yupper = h->yrange[j + 1];
|
317
316
|
return GSL_SUCCESS;
|
318
317
|
}
|
319
318
|
|
320
|
-
int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
|
321
|
-
|
322
|
-
{
|
323
|
-
const size_t nz = h->nz;
|
324
|
-
if (k >= nz) GSL_ERROR ("index k lies outside valid range of 0 .. nz - 1",
|
325
|
-
|
326
|
-
*zlower = h->zrange[k];
|
327
|
-
*zupper = h->zrange[k + 1];
|
319
|
+
int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
|
320
|
+
double *zlower, double *zupper)
|
321
|
+
{
|
322
|
+
const size_t nz = h->nz;
|
323
|
+
if (k >= nz) GSL_ERROR ("index k lies outside valid range of 0 .. nz - 1",
|
324
|
+
GSL_EDOM);
|
325
|
+
*zlower = h->zrange[k];
|
326
|
+
*zupper = h->zrange[k + 1];
|
328
327
|
return GSL_SUCCESS;
|
329
328
|
}
|
330
329
|
|
331
330
|
int mygsl_histogram3d_find (const mygsl_histogram3d * h,
|
332
|
-
|
333
|
-
|
334
|
-
{
|
335
|
-
int status = mygsl_find(h->nx, h->xrange, x, i);
|
336
|
-
if (status) GSL_ERROR ("x not found in range of h", GSL_EDOM);
|
337
|
-
status = mygsl_find (h->ny, h->yrange, y, j);
|
338
|
-
if (status) GSL_ERROR ("y not found in range of h", GSL_EDOM);
|
339
|
-
status = mygsl_find (h->nz, h->zrange, z, k);
|
340
|
-
if (status) GSL_ERROR ("z not found in range of h", GSL_EDOM);
|
331
|
+
const double x, const double y, const double z,
|
332
|
+
size_t * i, size_t * j, size_t *k)
|
333
|
+
{
|
334
|
+
int status = mygsl_find(h->nx, h->xrange, x, i);
|
335
|
+
if (status) GSL_ERROR ("x not found in range of h", GSL_EDOM);
|
336
|
+
status = mygsl_find (h->ny, h->yrange, y, j);
|
337
|
+
if (status) GSL_ERROR ("y not found in range of h", GSL_EDOM);
|
338
|
+
status = mygsl_find (h->nz, h->zrange, z, k);
|
339
|
+
if (status) GSL_ERROR ("z not found in range of h", GSL_EDOM);
|
341
340
|
return GSL_SUCCESS;
|
342
341
|
}
|
343
342
|
|
344
343
|
gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
|
345
|
-
|
344
|
+
size_t kstart, size_t kend)
|
346
345
|
{
|
347
346
|
gsl_histogram2d *h2;
|
348
347
|
double count;
|
@@ -353,8 +352,8 @@ gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
|
|
353
352
|
for (j = 0; j < h3->ny; j++) {
|
354
353
|
count = 0;
|
355
354
|
for (k = kstart; k <= kend; k++) {
|
356
|
-
|
357
|
-
|
355
|
+
if (k >= h3->nz) break;
|
356
|
+
count += mygsl_histogram3d_get(h3, i, j, k);
|
358
357
|
}
|
359
358
|
h2->bin[i*h2->ny + j] = count;
|
360
359
|
}
|
@@ -363,7 +362,7 @@ gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
|
|
363
362
|
}
|
364
363
|
|
365
364
|
gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
|
366
|
-
|
365
|
+
size_t jstart, size_t jend)
|
367
366
|
{
|
368
367
|
gsl_histogram2d *h2;
|
369
368
|
double count;
|
@@ -374,8 +373,8 @@ gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
|
|
374
373
|
for (k = 0; k < h3->nz; k++) {
|
375
374
|
count = 0;
|
376
375
|
for (j = jstart; j <= jend; j++) {
|
377
|
-
|
378
|
-
|
376
|
+
if (j >= h3->ny) break;
|
377
|
+
count += mygsl_histogram3d_get(h3, i, j, k);
|
379
378
|
}
|
380
379
|
h2->bin[i*h2->ny + k] = count;
|
381
380
|
}
|
@@ -384,7 +383,7 @@ gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
|
|
384
383
|
}
|
385
384
|
|
386
385
|
gsl_histogram2d* mygsl_histogram3d_yzproject(const mygsl_histogram3d * h3,
|
387
|
-
|
386
|
+
size_t istart, size_t iend)
|
388
387
|
{
|
389
388
|
gsl_histogram2d *h2;
|
390
389
|
double count;
|
@@ -395,8 +394,8 @@ gsl_histogram2d* mygsl_histogram3d_yzproject(const mygsl_histogram3d * h3,
|
|
395
394
|
for (k = 0; k < h3->nz; k++) {
|
396
395
|
count = 0;
|
397
396
|
for (i = istart; i <= iend; i++) {
|
398
|
-
|
399
|
-
|
397
|
+
if (i >= h3->nx) break;
|
398
|
+
count += mygsl_histogram3d_get(h3, i, j, k);
|
400
399
|
}
|
401
400
|
h2->bin[j*h2->ny + k] = count;
|
402
401
|
}
|
@@ -422,7 +421,7 @@ int mygsl_histogram3d_shift(mygsl_histogram3d * h, double shift)
|
|
422
421
|
|
423
422
|
double mygsl_histogram3d_xmax(const mygsl_histogram3d * h)
|
424
423
|
{
|
425
|
-
const int nx = h->nx;
|
424
|
+
const int nx = h->nx;
|
426
425
|
return h->xrange[nx];
|
427
426
|
}
|
428
427
|
double mygsl_histogram3d_xmin(const mygsl_histogram3d * h)
|
@@ -432,7 +431,7 @@ double mygsl_histogram3d_xmin(const mygsl_histogram3d * h)
|
|
432
431
|
|
433
432
|
double mygsl_histogram3d_ymax(const mygsl_histogram3d * h)
|
434
433
|
{
|
435
|
-
const int ny = h->ny;
|
434
|
+
const int ny = h->ny;
|
436
435
|
return h->yrange[ny];
|
437
436
|
}
|
438
437
|
double mygsl_histogram3d_ymin(const mygsl_histogram3d * h)
|
@@ -442,7 +441,7 @@ double mygsl_histogram3d_ymin(const mygsl_histogram3d * h)
|
|
442
441
|
|
443
442
|
double mygsl_histogram3d_zmax(const mygsl_histogram3d * h)
|
444
443
|
{
|
445
|
-
const int nz = h->nz;
|
444
|
+
const int nz = h->nz;
|
446
445
|
return h->zrange[nz];
|
447
446
|
}
|
448
447
|
|
@@ -464,8 +463,8 @@ double mygsl_histogram3d_max_val(const mygsl_histogram3d * h)
|
|
464
463
|
return max;
|
465
464
|
}
|
466
465
|
|
467
|
-
void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
|
468
|
-
|
466
|
+
void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
|
467
|
+
size_t *imax_out, size_t *jmax_out, size_t *kmax_out)
|
469
468
|
{
|
470
469
|
const size_t nx = h->nx;
|
471
470
|
const size_t ny = h->ny;
|
@@ -475,13 +474,13 @@ void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
|
|
475
474
|
for (i = 0; i < nx; i++) {
|
476
475
|
for (j = 0; j < ny; j++) {
|
477
476
|
for (k = 0; k < nz; k++) {
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
477
|
+
x = h->bin[i * ny*nz + j*nz + k];
|
478
|
+
if (x > max) {
|
479
|
+
max = x;
|
480
|
+
imax = i;
|
481
|
+
jmax = j;
|
482
|
+
kmax = k;
|
483
|
+
}
|
485
484
|
}
|
486
485
|
}
|
487
486
|
}
|
@@ -503,8 +502,8 @@ double mygsl_histogram3d_min_val(const mygsl_histogram3d * h)
|
|
503
502
|
return min;
|
504
503
|
}
|
505
504
|
|
506
|
-
void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
|
507
|
-
|
505
|
+
void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
|
506
|
+
size_t *imin_out, size_t *jmin_out, size_t *kmin_out)
|
508
507
|
{
|
509
508
|
const size_t nx = h->nx;
|
510
509
|
const size_t ny = h->ny;
|
@@ -514,13 +513,13 @@ void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
|
|
514
513
|
for (i = 0; i < nx; i++) {
|
515
514
|
for (j = 0; j < ny; j++) {
|
516
515
|
for (k = 0; k < nz; k++) {
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
516
|
+
x = h->bin[i * ny*nz + j*nz + k];
|
517
|
+
if (x < min) {
|
518
|
+
min = x;
|
519
|
+
imin = i;
|
520
|
+
jmin = j;
|
521
|
+
kmin = k;
|
522
|
+
}
|
524
523
|
}
|
525
524
|
}
|
526
525
|
}
|
@@ -551,8 +550,8 @@ double mygsl_histogram3d_xmean (const mygsl_histogram3d * h)
|
|
551
550
|
double wi = 0;
|
552
551
|
for (j = 0; j < ny; j++) {
|
553
552
|
for (k = 0; k < nz; k++) {
|
554
|
-
|
555
|
-
|
553
|
+
double wijk = h->bin[i * ny *nz + j * nz + k];
|
554
|
+
if (wijk > 0) wi += wijk;
|
556
555
|
}
|
557
556
|
}
|
558
557
|
if (wi > 0) {
|
@@ -576,8 +575,8 @@ double mygsl_histogram3d_ymean (const mygsl_histogram3d * h)
|
|
576
575
|
double wj = 0;
|
577
576
|
for (i = 0; i < nx; i++) {
|
578
577
|
for (k = 0; k < nz; k++) {
|
579
|
-
|
580
|
-
|
578
|
+
double wijk = h->bin[i * ny *nz + j * nz + k];
|
579
|
+
if (wijk > 0) wj += wijk;
|
581
580
|
}
|
582
581
|
}
|
583
582
|
if (wj > 0) {
|
@@ -601,8 +600,8 @@ double mygsl_histogram3d_zmean (const mygsl_histogram3d * h)
|
|
601
600
|
double wk = 0;
|
602
601
|
for (i = 0; i < nx; i++) {
|
603
602
|
for (j = 0; j < ny; j++) {
|
604
|
-
|
605
|
-
|
603
|
+
double wijk = h->bin[i * ny *nz + j * nz + k];
|
604
|
+
if (wijk > 0) wk += wijk;
|
606
605
|
}
|
607
606
|
}
|
608
607
|
if (wk > 0) {
|
@@ -624,8 +623,8 @@ double mygsl_histogram3d_xsigma(const mygsl_histogram3d * h)
|
|
624
623
|
double wi = 0;
|
625
624
|
for (j = 0; j < ny; j++) {
|
626
625
|
for (k = 0; k < nz; k++) {
|
627
|
-
|
628
|
-
|
626
|
+
double wijk = h->bin[i * ny*nz + j*nz + k];
|
627
|
+
if (wijk > 0) wi += wijk;
|
629
628
|
}
|
630
629
|
}
|
631
630
|
if (wi > 0) {
|
@@ -633,7 +632,7 @@ double mygsl_histogram3d_xsigma(const mygsl_histogram3d * h)
|
|
633
632
|
wvariance += ((xi * xi) - wvariance) * (wi / W);
|
634
633
|
}
|
635
634
|
}
|
636
|
-
return
|
635
|
+
return sqrt(wvariance);
|
637
636
|
}
|
638
637
|
|
639
638
|
double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
|
@@ -647,8 +646,8 @@ double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
|
|
647
646
|
double wj = 0;
|
648
647
|
for (i = 0; i < nx; i++) {
|
649
648
|
for (k = 0; k < nz; k++) {
|
650
|
-
|
651
|
-
|
649
|
+
double wjjk = h->bin[i * ny*nz + j*nz + k];
|
650
|
+
if (wjjk > 0) wj += wjjk;
|
652
651
|
}
|
653
652
|
}
|
654
653
|
if (wj > 0) {
|
@@ -656,7 +655,7 @@ double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
|
|
656
655
|
wvariance += ((yj * yj) - wvariance) * (wj / W);
|
657
656
|
}
|
658
657
|
}
|
659
|
-
return
|
658
|
+
return sqrt(wvariance);
|
660
659
|
}
|
661
660
|
|
662
661
|
double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
|
@@ -670,8 +669,8 @@ double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
|
|
670
669
|
double wk = 0;
|
671
670
|
for (i = 0; i < nx; i++) {
|
672
671
|
for (j = 0; j < ny; j++) {
|
673
|
-
|
674
|
-
|
672
|
+
double wijk = h->bin[i * ny*nz + j*nz + k];
|
673
|
+
if (wijk > 0) wk += wijk;
|
675
674
|
}
|
676
675
|
}
|
677
676
|
if (wk > 0) {
|
@@ -679,7 +678,7 @@ double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
|
|
679
678
|
wvariance += ((zk * zk) - wvariance) * (wk / W);
|
680
679
|
}
|
681
680
|
}
|
682
|
-
return
|
681
|
+
return sqrt(wvariance);
|
683
682
|
}
|
684
683
|
|
685
684
|
void mygsl_histogram3d_reset(mygsl_histogram3d * h)
|
@@ -690,17 +689,17 @@ void mygsl_histogram3d_reset(mygsl_histogram3d * h)
|
|
690
689
|
const size_t nz = h->nz;
|
691
690
|
|
692
691
|
for (i = 0; i < nx * ny * nz; i++)
|
693
|
-
|
694
|
-
|
695
|
-
|
692
|
+
{
|
693
|
+
h->bin[i] = 0;
|
694
|
+
}
|
696
695
|
}
|
697
696
|
|
698
697
|
int mygsl_histogram3d_equal_bins_p(const mygsl_histogram3d * h1,
|
699
|
-
|
698
|
+
const mygsl_histogram3d * h2)
|
700
699
|
{
|
701
700
|
size_t i;
|
702
701
|
if ((h1->nx != h2->nx) || (h1->ny != h2->ny) || (h1->nz != h2->nz)) return 0;
|
703
|
-
for (i = 0; i <= h1->nx; i++)
|
702
|
+
for (i = 0; i <= h1->nx; i++)
|
704
703
|
if (h1->xrange[i] != h2->xrange[i]) return 0;
|
705
704
|
for (i = 0; i <= h1->ny; i++)
|
706
705
|
if (h1->yrange[i] != h2->yrange[i]) return 0;
|