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.
Files changed (446) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +24 -0
  4. data/AUTHORS +10 -2
  5. data/COPYING +341 -339
  6. data/ChangeLog +612 -554
  7. data/Gemfile +4 -0
  8. data/README.md +77 -0
  9. data/Rakefile +14 -93
  10. data/THANKS +1 -1
  11. data/examples/blas/blas.rb +1 -1
  12. data/examples/bspline.rb +3 -3
  13. data/examples/complex/functions.rb +4 -4
  14. data/examples/complex/mul.rb +1 -1
  15. data/examples/const/physconst.rb +4 -4
  16. data/examples/const/travel.rb +4 -4
  17. data/examples/eigen/nonsymmv.rb +1 -1
  18. data/examples/eigen/qhoscillator.rb +3 -3
  19. data/examples/fft/radix2.rb +1 -1
  20. data/examples/fft/real-halfcomplex.rb +3 -3
  21. data/examples/fft/real-halfcomplex2.rb +3 -3
  22. data/examples/fit/expfit.rb +1 -1
  23. data/examples/fit/multifit.rb +1 -1
  24. data/examples/fit/ndlinear.rb +44 -44
  25. data/examples/fit/nonlinearfit.rb +1 -1
  26. data/examples/fit/wlinear.rb +3 -3
  27. data/examples/function/function.rb +1 -1
  28. data/examples/function/min.rb +1 -1
  29. data/examples/function/synchrotron.rb +2 -2
  30. data/examples/gallery/koch.rb +1 -1
  31. data/examples/histogram/cauchy.rb +2 -2
  32. data/examples/histogram/exponential.rb +1 -1
  33. data/examples/histogram/histo3d.rb +1 -1
  34. data/examples/histogram/histogram-pdf.rb +2 -2
  35. data/examples/histogram/xexp.rb +1 -1
  36. data/examples/integration/ahmed.rb +2 -2
  37. data/examples/integration/cosmology.rb +7 -7
  38. data/examples/integration/friedmann.rb +4 -4
  39. data/examples/integration/qng.rb +1 -1
  40. data/examples/interp/demo.rb +2 -2
  41. data/examples/linalg/LQ_solve.rb +1 -1
  42. data/examples/linalg/LU.rb +1 -1
  43. data/examples/linalg/LU2.rb +1 -1
  44. data/examples/linalg/LU_narray.rb +1 -1
  45. data/examples/linalg/PTLQ.rb +1 -1
  46. data/examples/linalg/QRPT.rb +1 -1
  47. data/examples/linalg/chol.rb +1 -1
  48. data/examples/linalg/chol_narray.rb +1 -1
  49. data/examples/linalg/complex.rb +1 -1
  50. data/examples/math/elementary.rb +1 -1
  51. data/examples/math/functions.rb +1 -1
  52. data/examples/math/inf_nan.rb +1 -1
  53. data/examples/math/minmax.rb +1 -1
  54. data/examples/math/power.rb +1 -1
  55. data/examples/math/test.rb +1 -1
  56. data/examples/min.rb +1 -1
  57. data/examples/multimin/bundle.rb +1 -1
  58. data/examples/multimin/cqp.rb +17 -17
  59. data/examples/multiroot/fsolver3.rb +1 -1
  60. data/examples/odeiv/binarysystem.rb +12 -12
  61. data/examples/odeiv/demo.rb +3 -3
  62. data/examples/odeiv/frei1.rb +7 -7
  63. data/examples/odeiv/frei2.rb +4 -4
  64. data/examples/odeiv/oscillator.rb +1 -1
  65. data/examples/odeiv/sedov.rb +3 -3
  66. data/examples/odeiv/whitedwarf.rb +11 -11
  67. data/examples/permutation/ex1.rb +2 -2
  68. data/examples/permutation/permutation.rb +1 -1
  69. data/examples/poly/demo.rb +1 -1
  70. data/examples/random/diffusion.rb +1 -1
  71. data/examples/random/generator.rb +2 -2
  72. data/examples/random/randomwalk.rb +3 -3
  73. data/examples/random/rng.rb +1 -1
  74. data/examples/roots/bisection.rb +1 -1
  75. data/examples/roots/brent.rb +1 -1
  76. data/examples/roots/demo.rb +1 -1
  77. data/examples/roots/newton.rb +2 -2
  78. data/examples/roots/recombination.gp +0 -1
  79. data/examples/sf/hyperg.rb +1 -1
  80. data/examples/sf/sphbessel.rb +1 -1
  81. data/examples/sort/sort.rb +1 -1
  82. data/examples/tamu_anova.rb +4 -4
  83. data/examples/vector/add.rb +1 -1
  84. data/examples/vector/decimate.rb +1 -1
  85. data/examples/vector/gnuplot.rb +8 -8
  86. data/examples/vector/vector.rb +2 -2
  87. data/examples/wavelet/wavelet1.rb +1 -1
  88. data/ext/{alf.c → gsl_native/alf.c} +10 -10
  89. data/ext/{array.c → gsl_native/array.c} +70 -159
  90. data/ext/{array_complex.c → gsl_native/array_complex.c} +63 -66
  91. data/ext/{blas.c → gsl_native/blas.c} +2 -3
  92. data/ext/{blas1.c → gsl_native/blas1.c} +35 -36
  93. data/ext/{blas2.c → gsl_native/blas2.c} +57 -62
  94. data/ext/{blas3.c → gsl_native/blas3.c} +57 -58
  95. data/ext/{block.c → gsl_native/block.c} +14 -18
  96. data/ext/{block_source.c → gsl_native/block_source.h} +110 -112
  97. data/ext/gsl_native/bspline.c +122 -0
  98. data/ext/{bundle.c → gsl_native/bundle.c} +0 -0
  99. data/ext/{cdf.c → gsl_native/cdf.c} +79 -93
  100. data/ext/{cheb.c → gsl_native/cheb.c} +78 -89
  101. data/ext/{combination.c → gsl_native/combination.c} +11 -19
  102. data/ext/{common.c → gsl_native/common.c} +9 -41
  103. data/ext/{complex.c → gsl_native/complex.c} +116 -118
  104. data/ext/gsl_native/const.c +331 -0
  105. data/ext/{const_additional.c → gsl_native/const_additional.c} +13 -34
  106. data/ext/gsl_native/cqp.c +283 -0
  107. data/ext/{deriv.c → gsl_native/deriv.c} +25 -33
  108. data/ext/{dht.c → gsl_native/dht.c} +23 -31
  109. data/ext/{diff.c → gsl_native/diff.c} +26 -28
  110. data/ext/{dirac.c → gsl_native/dirac.c} +45 -46
  111. data/ext/{eigen.c → gsl_native/eigen.c} +1044 -1095
  112. data/ext/{error.c → gsl_native/error.c} +18 -18
  113. data/ext/gsl_native/extconf.rb +118 -0
  114. data/ext/{fft.c → gsl_native/fft.c} +197 -204
  115. data/ext/{fit.c → gsl_native/fit.c} +17 -18
  116. data/ext/gsl_native/fresnel.c +312 -0
  117. data/ext/{function.c → gsl_native/function.c} +37 -43
  118. data/ext/{geometry.c → gsl_native/geometry.c} +16 -16
  119. data/ext/{graph.c → gsl_native/graph.c} +39 -89
  120. data/ext/{gsl.c → gsl_native/gsl.c} +12 -33
  121. data/ext/{gsl_narray.c → gsl_native/gsl_narray.c} +20 -30
  122. data/ext/{histogram.c → gsl_native/histogram.c} +133 -160
  123. data/ext/{histogram2d.c → gsl_native/histogram2d.c} +78 -104
  124. data/ext/{histogram3d.c → gsl_native/histogram3d.c} +76 -76
  125. data/ext/{histogram3d_source.c → gsl_native/histogram3d_source.c} +196 -197
  126. data/ext/{histogram_find.c → gsl_native/histogram_find.c} +32 -34
  127. data/ext/{histogram_oper.c → gsl_native/histogram_oper.c} +43 -52
  128. data/ext/{ieee.c → gsl_native/ieee.c} +9 -21
  129. data/{include → ext/gsl_native/include}/rb_gsl.h +4 -26
  130. data/{include → ext/gsl_native/include}/rb_gsl_array.h +15 -39
  131. data/{include → ext/gsl_native/include}/rb_gsl_cheb.h +0 -2
  132. data/{include → ext/gsl_native/include}/rb_gsl_common.h +61 -61
  133. data/{include → ext/gsl_native/include}/rb_gsl_complex.h +1 -1
  134. data/{include → ext/gsl_native/include}/rb_gsl_const.h +0 -6
  135. data/ext/gsl_native/include/rb_gsl_dirac.h +6 -0
  136. data/{include → ext/gsl_native/include}/rb_gsl_eigen.h +1 -1
  137. data/{include → ext/gsl_native/include}/rb_gsl_fft.h +0 -13
  138. data/{include → ext/gsl_native/include}/rb_gsl_fit.h +0 -2
  139. data/{include → ext/gsl_native/include}/rb_gsl_function.h +0 -4
  140. data/{include → ext/gsl_native/include}/rb_gsl_graph.h +2 -4
  141. data/{include → ext/gsl_native/include}/rb_gsl_histogram.h +8 -8
  142. data/{include → ext/gsl_native/include}/rb_gsl_histogram3d.h +50 -50
  143. data/{include → ext/gsl_native/include}/rb_gsl_integration.h +1 -1
  144. data/{include → ext/gsl_native/include}/rb_gsl_interp.h +0 -5
  145. data/{include → ext/gsl_native/include}/rb_gsl_linalg.h +2 -6
  146. data/{include → ext/gsl_native/include}/rb_gsl_math.h +0 -6
  147. data/{include → ext/gsl_native/include}/rb_gsl_odeiv.h +0 -3
  148. data/{include → ext/gsl_native/include}/rb_gsl_poly.h +3 -7
  149. data/{include → ext/gsl_native/include}/rb_gsl_rational.h +1 -8
  150. data/{include → ext/gsl_native/include}/rb_gsl_rng.h +0 -1
  151. data/{include → ext/gsl_native/include}/rb_gsl_root.h +1 -1
  152. data/{include → ext/gsl_native/include}/rb_gsl_sf.h +39 -48
  153. data/{include → ext/gsl_native/include}/rb_gsl_statistics.h +1 -1
  154. data/{include → ext/gsl_native/include}/rb_gsl_tensor.h +0 -2
  155. data/{include → ext/gsl_native/include}/rb_gsl_with_narray.h +3 -1
  156. data/{include → ext/gsl_native/include}/templates_off.h +0 -0
  157. data/{include → ext/gsl_native/include}/templates_on.h +1 -1
  158. data/ext/{integration.c → gsl_native/integration.c} +164 -189
  159. data/ext/{interp.c → gsl_native/interp.c} +25 -38
  160. data/ext/gsl_native/jacobi.c +733 -0
  161. data/ext/{linalg.c → gsl_native/linalg.c} +462 -589
  162. data/ext/{linalg_complex.c → gsl_native/linalg_complex.c} +93 -106
  163. data/ext/{math.c → gsl_native/math.c} +48 -67
  164. data/ext/{matrix.c → gsl_native/matrix.c} +13 -16
  165. data/ext/{matrix_complex.c → gsl_native/matrix_complex.c} +119 -123
  166. data/ext/{matrix_double.c → gsl_native/matrix_double.c} +79 -82
  167. data/ext/{matrix_int.c → gsl_native/matrix_int.c} +53 -54
  168. data/ext/{matrix_source.c → gsl_native/matrix_source.h} +292 -318
  169. data/ext/{min.c → gsl_native/min.c} +45 -76
  170. data/ext/{monte.c → gsl_native/monte.c} +50 -64
  171. data/ext/{multifit.c → gsl_native/multifit.c} +142 -151
  172. data/ext/{multimin.c → gsl_native/multimin.c} +64 -92
  173. data/ext/{multimin_fsdf.c → gsl_native/multimin_fsdf.c} +16 -16
  174. data/ext/{multiroots.c → gsl_native/multiroots.c} +73 -76
  175. data/ext/{multiset.c → gsl_native/multiset.c} +4 -8
  176. data/ext/{ndlinear.c → gsl_native/ndlinear.c} +320 -321
  177. data/ext/{nmf.c → gsl_native/nmf.c} +11 -11
  178. data/ext/{nmf_wrap.c → gsl_native/nmf_wrap.c} +1 -1
  179. data/ext/{ntuple.c → gsl_native/ntuple.c} +23 -23
  180. data/ext/{odeiv.c → gsl_native/odeiv.c} +101 -116
  181. data/ext/gsl_native/ool.c +879 -0
  182. data/ext/{permutation.c → gsl_native/permutation.c} +39 -37
  183. data/ext/{poly.c → gsl_native/poly.c} +10 -13
  184. data/ext/{poly2.c → gsl_native/poly2.c} +16 -16
  185. data/ext/{poly_source.c → gsl_native/poly_source.h} +249 -293
  186. data/ext/{qrng.c → gsl_native/qrng.c} +9 -20
  187. data/ext/{randist.c → gsl_native/randist.c} +222 -247
  188. data/ext/{rational.c → gsl_native/rational.c} +12 -12
  189. data/ext/{rng.c → gsl_native/rng.c} +30 -47
  190. data/ext/{root.c → gsl_native/root.c} +47 -48
  191. data/ext/{sf.c → gsl_native/sf.c} +196 -244
  192. data/ext/{sf_airy.c → gsl_native/sf_airy.c} +2 -2
  193. data/ext/{sf_bessel.c → gsl_native/sf_bessel.c} +7 -7
  194. data/ext/{sf_clausen.c → gsl_native/sf_clausen.c} +1 -1
  195. data/ext/{sf_coulomb.c → gsl_native/sf_coulomb.c} +40 -40
  196. data/ext/{sf_coupling.c → gsl_native/sf_coupling.c} +30 -30
  197. data/ext/{sf_dawson.c → gsl_native/sf_dawson.c} +1 -1
  198. data/ext/{sf_debye.c → gsl_native/sf_debye.c} +1 -10
  199. data/ext/{sf_dilog.c → gsl_native/sf_dilog.c} +1 -1
  200. data/ext/{sf_elementary.c → gsl_native/sf_elementary.c} +3 -3
  201. data/ext/{sf_ellint.c → gsl_native/sf_ellint.c} +43 -43
  202. data/ext/{sf_elljac.c → gsl_native/sf_elljac.c} +3 -3
  203. data/ext/{sf_erfc.c → gsl_native/sf_erfc.c} +1 -5
  204. data/ext/{sf_exp.c → gsl_native/sf_exp.c} +3 -3
  205. data/ext/{sf_expint.c → gsl_native/sf_expint.c} +2 -12
  206. data/ext/{sf_fermi_dirac.c → gsl_native/sf_fermi_dirac.c} +1 -1
  207. data/ext/{sf_gamma.c → gsl_native/sf_gamma.c} +2 -6
  208. data/ext/{sf_gegenbauer.c → gsl_native/sf_gegenbauer.c} +1 -1
  209. data/ext/{sf_hyperg.c → gsl_native/sf_hyperg.c} +1 -1
  210. data/ext/{sf_laguerre.c → gsl_native/sf_laguerre.c} +4 -4
  211. data/ext/{sf_lambert.c → gsl_native/sf_lambert.c} +1 -1
  212. data/ext/{sf_legendre.c → gsl_native/sf_legendre.c} +1 -1
  213. data/ext/{sf_log.c → gsl_native/sf_log.c} +4 -4
  214. data/ext/gsl_native/sf_mathieu.c +235 -0
  215. data/ext/{sf_power.c → gsl_native/sf_power.c} +1 -1
  216. data/ext/{sf_psi.c → gsl_native/sf_psi.c} +3 -12
  217. data/ext/{sf_synchrotron.c → gsl_native/sf_synchrotron.c} +1 -1
  218. data/ext/{sf_transport.c → gsl_native/sf_transport.c} +1 -1
  219. data/ext/{sf_trigonometric.c → gsl_native/sf_trigonometric.c} +4 -4
  220. data/ext/{sf_zeta.c → gsl_native/sf_zeta.c} +1 -5
  221. data/ext/{signal.c → gsl_native/signal.c} +63 -68
  222. data/ext/{siman.c → gsl_native/siman.c} +45 -49
  223. data/ext/{sort.c → gsl_native/sort.c} +6 -7
  224. data/ext/{spline.c → gsl_native/spline.c} +28 -46
  225. data/ext/{stats.c → gsl_native/stats.c} +105 -118
  226. data/ext/{sum.c → gsl_native/sum.c} +34 -34
  227. data/ext/{tamu_anova.c → gsl_native/tamu_anova.c} +1 -1
  228. data/ext/{tensor.c → gsl_native/tensor.c} +8 -11
  229. data/ext/{tensor_source.c → gsl_native/tensor_source.h} +147 -148
  230. data/ext/{vector.c → gsl_native/vector.c} +11 -14
  231. data/ext/{vector_complex.c → gsl_native/vector_complex.c} +179 -184
  232. data/ext/{vector_double.c → gsl_native/vector_double.c} +178 -183
  233. data/ext/{vector_int.c → gsl_native/vector_int.c} +27 -29
  234. data/ext/{vector_source.c → gsl_native/vector_source.h} +428 -443
  235. data/ext/{wavelet.c → gsl_native/wavelet.c} +224 -246
  236. data/gsl.gemspec +29 -0
  237. data/lib/gsl.rb +8 -3
  238. data/lib/gsl/gnuplot.rb +3 -3
  239. data/lib/gsl/oper.rb +35 -60
  240. data/lib/gsl/version.rb +3 -0
  241. data/lib/rbgsl.rb +1 -3
  242. data/rdoc/alf.rdoc +5 -5
  243. data/rdoc/blas.rdoc +9 -9
  244. data/rdoc/bspline.rdoc +17 -17
  245. data/rdoc/changes.rdoc +4 -9
  246. data/rdoc/cheb.rdoc +25 -25
  247. data/rdoc/cholesky_complex.rdoc +21 -21
  248. data/rdoc/combi.rdoc +37 -37
  249. data/rdoc/complex.rdoc +22 -22
  250. data/rdoc/const.rdoc +47 -47
  251. data/rdoc/dht.rdoc +49 -49
  252. data/rdoc/diff.rdoc +42 -42
  253. data/rdoc/ehandling.rdoc +6 -6
  254. data/rdoc/eigen.rdoc +153 -153
  255. data/rdoc/fft.rdoc +146 -146
  256. data/rdoc/fit.rdoc +109 -109
  257. data/rdoc/function.rdoc +11 -11
  258. data/rdoc/graph.rdoc +17 -17
  259. data/rdoc/hist.rdoc +103 -103
  260. data/rdoc/hist2d.rdoc +42 -42
  261. data/rdoc/hist3d.rdoc +9 -9
  262. data/rdoc/integration.rdoc +110 -110
  263. data/rdoc/interp.rdoc +71 -71
  264. data/rdoc/intro.rdoc +8 -8
  265. data/rdoc/linalg.rdoc +188 -188
  266. data/rdoc/linalg_complex.rdoc +1 -1
  267. data/rdoc/math.rdoc +58 -58
  268. data/rdoc/matrix.rdoc +275 -275
  269. data/rdoc/min.rdoc +57 -57
  270. data/rdoc/monte.rdoc +22 -22
  271. data/rdoc/multimin.rdoc +95 -95
  272. data/rdoc/multiroot.rdoc +80 -80
  273. data/rdoc/narray.rdoc +32 -32
  274. data/rdoc/ndlinear.rdoc +54 -54
  275. data/rdoc/nonlinearfit.rdoc +100 -100
  276. data/rdoc/ntuple.rdoc +31 -31
  277. data/rdoc/odeiv.rdoc +88 -88
  278. data/rdoc/perm.rdoc +90 -90
  279. data/rdoc/poly.rdoc +66 -66
  280. data/rdoc/qrng.rdoc +21 -21
  281. data/rdoc/randist.rdoc +82 -82
  282. data/rdoc/ref.rdoc +57 -57
  283. data/rdoc/rng.rdoc +85 -85
  284. data/rdoc/roots.rdoc +57 -57
  285. data/rdoc/sf.rdoc +428 -428
  286. data/rdoc/siman.rdoc +19 -19
  287. data/rdoc/sort.rdoc +30 -30
  288. data/rdoc/start.rdoc +8 -8
  289. data/rdoc/stats.rdoc +52 -52
  290. data/rdoc/sum.rdoc +12 -12
  291. data/rdoc/tensor.rdoc +31 -31
  292. data/rdoc/tut.rdoc +1 -1
  293. data/rdoc/use.rdoc +39 -39
  294. data/rdoc/vector.rdoc +188 -188
  295. data/rdoc/vector_complex.rdoc +24 -24
  296. data/rdoc/wavelet.rdoc +46 -46
  297. data/test/gsl/blas_test.rb +79 -0
  298. data/test/gsl/bspline_test.rb +63 -0
  299. data/test/gsl/cdf_test.rb +1512 -0
  300. data/test/gsl/cheb_test.rb +80 -0
  301. data/test/gsl/combination_test.rb +100 -0
  302. data/test/gsl/complex_test.rb +20 -0
  303. data/test/gsl/const_test.rb +29 -0
  304. data/test/gsl/deriv_test.rb +62 -0
  305. data/test/gsl/dht_test.rb +79 -0
  306. data/test/gsl/diff_test.rb +53 -0
  307. data/test/gsl/eigen_test.rb +563 -0
  308. data/test/gsl/err_test.rb +23 -0
  309. data/test/gsl/fit_test.rb +101 -0
  310. data/test/gsl/histo_test.rb +14 -0
  311. data/test/gsl/index_test.rb +61 -0
  312. data/test/gsl/integration_test.rb +274 -0
  313. data/test/gsl/interp_test.rb +27 -0
  314. data/test/gsl/linalg_test.rb +463 -0
  315. data/test/gsl/matrix_nmf_test.rb +37 -0
  316. data/test/gsl/matrix_test.rb +98 -0
  317. data/test/gsl/min_test.rb +89 -0
  318. data/test/gsl/monte_test.rb +77 -0
  319. data/test/gsl/multifit_test.rb +753 -0
  320. data/test/gsl/multimin_test.rb +157 -0
  321. data/test/gsl/multiroot_test.rb +135 -0
  322. data/test/gsl/multiset_test.rb +52 -0
  323. data/test/gsl/odeiv_test.rb +275 -0
  324. data/test/gsl/oper_test.rb +98 -0
  325. data/test/gsl/poly_test.rb +338 -0
  326. data/test/gsl/qrng_test.rb +94 -0
  327. data/test/gsl/quartic_test.rb +28 -0
  328. data/test/gsl/randist_test.rb +122 -0
  329. data/test/gsl/rng_test.rb +303 -0
  330. data/test/gsl/roots_test.rb +78 -0
  331. data/test/gsl/sf_test.rb +2079 -0
  332. data/test/gsl/stats_test.rb +122 -0
  333. data/test/gsl/sum_test.rb +69 -0
  334. data/test/gsl/tensor_test.rb +396 -0
  335. data/test/gsl/vector_test.rb +223 -0
  336. data/test/gsl/wavelet_test.rb +130 -0
  337. data/test/gsl_test.rb +321 -0
  338. data/test/test_helper.rb +42 -0
  339. data/uncrustify.cfg +1693 -0
  340. metadata +337 -378
  341. data/README +0 -32
  342. data/VERSION +0 -1
  343. data/ext/bspline.c +0 -130
  344. data/ext/const.c +0 -673
  345. data/ext/cqp.c +0 -283
  346. data/ext/extconf.rb +0 -295
  347. data/ext/fcmp.c +0 -66
  348. data/ext/fresnel.c +0 -312
  349. data/ext/jacobi.c +0 -739
  350. data/ext/ool.c +0 -879
  351. data/ext/oper_complex_source.c +0 -253
  352. data/ext/sf_mathieu.c +0 -238
  353. data/include/rb_gsl_config.h +0 -62
  354. data/include/rb_gsl_dirac.h +0 -13
  355. data/rdoc/index.rdoc +0 -62
  356. data/rdoc/rngextra.rdoc +0 -11
  357. data/rdoc/screenshot.rdoc +0 -40
  358. data/setup.rb +0 -1585
  359. data/tests/blas/amax.rb +0 -14
  360. data/tests/blas/asum.rb +0 -16
  361. data/tests/blas/axpy.rb +0 -25
  362. data/tests/blas/copy.rb +0 -23
  363. data/tests/blas/dot.rb +0 -23
  364. data/tests/bspline.rb +0 -53
  365. data/tests/cdf.rb +0 -1388
  366. data/tests/cheb.rb +0 -112
  367. data/tests/combination.rb +0 -123
  368. data/tests/complex.rb +0 -17
  369. data/tests/const.rb +0 -24
  370. data/tests/deriv.rb +0 -85
  371. data/tests/dht/dht1.rb +0 -17
  372. data/tests/dht/dht2.rb +0 -23
  373. data/tests/dht/dht3.rb +0 -23
  374. data/tests/dht/dht4.rb +0 -23
  375. data/tests/diff.rb +0 -78
  376. data/tests/eigen/eigen.rb +0 -220
  377. data/tests/eigen/gen.rb +0 -105
  378. data/tests/eigen/genherm.rb +0 -66
  379. data/tests/eigen/gensymm.rb +0 -68
  380. data/tests/eigen/nonsymm.rb +0 -53
  381. data/tests/eigen/nonsymmv.rb +0 -53
  382. data/tests/eigen/symm-herm.rb +0 -74
  383. data/tests/err.rb +0 -58
  384. data/tests/fit.rb +0 -124
  385. data/tests/gsl_test.rb +0 -118
  386. data/tests/gsl_test2.rb +0 -110
  387. data/tests/histo.rb +0 -12
  388. data/tests/integration/integration1.rb +0 -72
  389. data/tests/integration/integration2.rb +0 -71
  390. data/tests/integration/integration3.rb +0 -71
  391. data/tests/integration/integration4.rb +0 -71
  392. data/tests/interp.rb +0 -45
  393. data/tests/linalg/HH.rb +0 -64
  394. data/tests/linalg/LU.rb +0 -47
  395. data/tests/linalg/QR.rb +0 -77
  396. data/tests/linalg/SV.rb +0 -24
  397. data/tests/linalg/TDN.rb +0 -116
  398. data/tests/linalg/TDS.rb +0 -122
  399. data/tests/linalg/bidiag.rb +0 -73
  400. data/tests/linalg/cholesky.rb +0 -20
  401. data/tests/linalg/linalg.rb +0 -158
  402. data/tests/matrix/matrix_complex_test.rb +0 -36
  403. data/tests/matrix/matrix_nmf_test.rb +0 -39
  404. data/tests/matrix/matrix_test.rb +0 -48
  405. data/tests/min.rb +0 -99
  406. data/tests/monte/miser.rb +0 -31
  407. data/tests/monte/vegas.rb +0 -45
  408. data/tests/multifit/test_2dgauss.rb +0 -112
  409. data/tests/multifit/test_brown.rb +0 -90
  410. data/tests/multifit/test_enso.rb +0 -246
  411. data/tests/multifit/test_filip.rb +0 -155
  412. data/tests/multifit/test_gauss.rb +0 -97
  413. data/tests/multifit/test_longley.rb +0 -110
  414. data/tests/multifit/test_multifit.rb +0 -52
  415. data/tests/multimin.rb +0 -139
  416. data/tests/multiroot.rb +0 -131
  417. data/tests/multiset.rb +0 -52
  418. data/tests/narray/blas_dnrm2.rb +0 -20
  419. data/tests/odeiv.rb +0 -353
  420. data/tests/poly/poly.rb +0 -290
  421. data/tests/poly/special.rb +0 -65
  422. data/tests/qrng.rb +0 -131
  423. data/tests/quartic.rb +0 -29
  424. data/tests/randist.rb +0 -134
  425. data/tests/rng.rb +0 -305
  426. data/tests/roots.rb +0 -76
  427. data/tests/run-test.sh +0 -17
  428. data/tests/sf/gsl_test_sf.rb +0 -249
  429. data/tests/sf/test_airy.rb +0 -83
  430. data/tests/sf/test_bessel.rb +0 -306
  431. data/tests/sf/test_coulomb.rb +0 -17
  432. data/tests/sf/test_dilog.rb +0 -25
  433. data/tests/sf/test_gamma.rb +0 -209
  434. data/tests/sf/test_hyperg.rb +0 -356
  435. data/tests/sf/test_legendre.rb +0 -227
  436. data/tests/sf/test_mathieu.rb +0 -59
  437. data/tests/sf/test_mode.rb +0 -19
  438. data/tests/sf/test_sf.rb +0 -839
  439. data/tests/stats.rb +0 -174
  440. data/tests/stats_mt.rb +0 -16
  441. data/tests/sum.rb +0 -98
  442. data/tests/sys.rb +0 -323
  443. data/tests/tensor.rb +0 -419
  444. data/tests/vector/vector_complex_test.rb +0 -101
  445. data/tests/vector/vector_test.rb +0 -141
  446. data/tests/wavelet.rb +0 -142
@@ -0,0 +1,98 @@
1
+ require 'test_helper'
2
+
3
+ class OperTest < GSL::TestCase
4
+
5
+ def test_multiplication_matrix
6
+ matrix = GSL::Matrix.ones(1)
7
+
8
+ mul_int = 2 * matrix
9
+ mul_float = 0.2 * matrix
10
+
11
+ assert_equal 2, mul_int[0, 0]
12
+ assert_equal 0.2, mul_float[0, 0]
13
+ end
14
+
15
+ def test_multiplication_matrix_int
16
+ matrix = GSL::Matrix::Int.ones(1)
17
+
18
+ mul_int = 2 * matrix
19
+ mul_float = 0.2 * matrix
20
+
21
+ assert_equal 2, mul_int[0, 0]
22
+ assert_equal 0, mul_float[0, 0]
23
+ end
24
+
25
+ def test_multiplication_matrix_complex
26
+ matrix = GSL::Matrix::Complex.eye(1)
27
+
28
+ result = 0.2 * matrix
29
+
30
+ assert_equal 0.2, result[0][0]
31
+ end
32
+
33
+ def test_multiplication_vector
34
+ vector = GSL::Vector[1, 2]
35
+
36
+ mul_int = 2 * vector
37
+ mul_float = 0.2 * vector
38
+
39
+ assert_equal 2, mul_int[0]
40
+ assert_equal 0.2, mul_float[0]
41
+ end
42
+
43
+ def test_multiplication_vector_int
44
+ vector = GSL::Vector::Int[1, 2]
45
+
46
+ mul_int = 2 * vector
47
+ mul_float = 0.2 * vector
48
+
49
+ assert_equal 2, mul_int[0]
50
+ assert_equal 0, mul_float[0]
51
+ end
52
+
53
+ def test_multiplication_vector_complex
54
+ re = GSL::Vector[1..4]
55
+ im = GSL::Vector[5..8]
56
+
57
+ vector = GSL::Vector::Complex[re, im]
58
+
59
+ mul_int = 2 * vector
60
+ mul_float = 0.2 * vector
61
+
62
+ assert_equal 10, mul_int[0][1]
63
+ assert_equal 1.0, mul_float[0][1]
64
+ end
65
+
66
+ def test_division_poly
67
+ poly = GSL::Poly.alloc([2])
68
+
69
+ a = GSL::Poly[1]; a[0] = 2
70
+
71
+ result = 2 / poly
72
+ expected = GSL::Rational.new(a, poly)
73
+
74
+ assert_equal expected.num, result.num
75
+ assert_equal expected.den, result.den
76
+ end
77
+
78
+ def test_division_vector_col
79
+ vector = GSL::Vector[1, 2].col
80
+
81
+ result1 = 2 / vector
82
+ result2 = 2 / result1
83
+
84
+ assert_in_epsilon 0.4, result1[0]
85
+ assert_equal result2, vector
86
+ end
87
+
88
+ def test_division_vector_int_col
89
+ vector = GSL::Vector::Int[1, 2].col
90
+
91
+ result1 = 2 / vector
92
+ result2 = 2 / result1
93
+
94
+ assert_in_epsilon 0.4, result1[0]
95
+ assert_equal result2.to_a.map(&:to_i), vector.to_a
96
+ end
97
+
98
+ end
@@ -0,0 +1,338 @@
1
+ require 'test_helper'
2
+
3
+ class PolyTest < GSL::TestCase
4
+
5
+ EPS = 100.0 * GSL::DBL_EPSILON
6
+
7
+ def test_poly
8
+ c = GSL::Poly.alloc(1.0, 0.5, 0.3)
9
+ x = 0.5
10
+ y = c.eval(x)
11
+ assert_rel y, 1 + 0.5 * x + 0.3 * x * x, EPS, 'gsl_poly_eval({1, 0.5, 0.3}, 0.5)'
12
+
13
+ d = GSL::Poly.alloc( 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1)
14
+ x = 1.0
15
+ y = GSL::Poly.eval(d, x)
16
+ assert_rel y, 1.0, EPS, 'gsl_poly_eval({1,-1, 1, -1, 1, -1, 1, -1, 1, -1, 1}, 1.0)'
17
+
18
+ x0, x1 = GSL::Poly.solve_quadratic(4.0, -20.0, 25.0).to_a
19
+ assert_rel x0, 2.5, 1e-9, 'x0, (2x - 5)^2 = 0'
20
+ assert_rel x1, 2.5, 1e-9, 'x1, (2x - 5)^2 = 0'
21
+
22
+ x0, x1 = GSL::Poly.solve_quadratic(4.0, 7.0, 0.0).to_a
23
+ assert_rel x0, -1.75, 1e-9, 'x0, x(4x + 7) = 0'
24
+ assert_rel x1, 0.0, 1e-9, 'x1, x(4x + 7) = 0'
25
+
26
+ x0, x1 = GSL::Poly.solve_quadratic(5.0, 0.0, -20.0).to_a
27
+ assert_rel x0, -2.0, 1e-9, 'x0, 5 x^2 = 20'
28
+ assert_rel x1, 2.0, 1e-9, 'x1, 5 x^2 = 20'
29
+
30
+ # Quadratic single real root (technically not a quadratic)
31
+ x0, x1 = GSL::Poly.solve_quadratic(0.0, 1.0, 0.0).to_a
32
+ assert_rel x0, 0.0, 0, 'x0, x = 0'
33
+ assert x1.nil?, 'x1, x = 0 is nil'
34
+
35
+ # Quadratic no real root
36
+ x0, x1 = GSL::Poly.solve_quadratic(1.0, 0.0, 1.0).to_a
37
+ assert x0.nil?, 'x0, x^2 = -1 is nil'
38
+ assert x1.nil?, 'x1, x^2 = -1 is nil'
39
+
40
+ x0, x1, x2 = GSL::Poly.solve_cubic(0.0, 0.0, -27.0).to_a
41
+ assert_rel x0, 3.0, 1e-9, 'x0, x^3 = 27'
42
+
43
+ # Cubic triple real root
44
+ x0, x1, x2 = GSL::Poly.solve_cubic(-51.0, 867.0, -4913.0).to_a
45
+ assert_rel x0, 17.0, 1e-9, 'x0, (x-17)^3=0'
46
+ assert_rel x1, 17.0, 1e-9, 'x1, (x-17)^3=0'
47
+ assert_rel x2, 17.0, 1e-9, 'x2, (x-17)^3=0'
48
+
49
+ # Cubic double real root plus single real root
50
+ x0, x1, x2 = GSL::Poly.solve_cubic(-57.0, 1071.0, -6647.0).to_a
51
+ assert_rel x0, 17.0, 1e-9, 'x0, (x-17)(x-17)(x-23)=0'
52
+ assert_rel x1, 17.0, 1e-9, 'x1, (x-17)(x-17)(x-23)=0'
53
+ assert_rel x2, 23.0, 1e-9, 'x2, (x-17)(x-17)(x-23)=0'
54
+
55
+ x0, x1, x2 = GSL::Poly.solve_cubic(-11.0, -493.0, +6647.0).to_a
56
+ assert_rel x0, -23.0, 1e-9, 'x0, (x+23)(x-17)(x-17)=0'
57
+ assert_rel x1, 17.0, 1e-9, 'x1, (x+23)(x-17)(x-17)=0'
58
+ assert_rel x2, 17.0, 1e-9, 'x2, (x+23)(x-17)(x-17)=0'
59
+
60
+ x0, x1, x2 = GSL::Poly.solve_cubic(-143.0, 5087.0, -50065.0).to_a
61
+ assert_rel x0, 17.0, 1e-9, 'x0, (x-17)(x-31)(x-95)=0'
62
+ assert_rel x1, 31.0, 1e-9, 'x1, (x-17)(x-31)(x-95)=0'
63
+ assert_rel x2, 95.0, 1e-9, 'x2, (x-17)(x-31)(x-95)=0'
64
+
65
+ x0, x1, x2 = GSL::Poly.solve_cubic(-109.0, 803.0, 50065.0).to_a
66
+ assert_rel x0, -17.0, 1e-9, 'x0, (x+17)(x-31)(x-95)=0'
67
+ assert_rel x1, 31.0, 1e-9, 'x1, (x+17)(x-31)(x-95)=0'
68
+ assert_rel x2, 95.0, 1e-9, 'x2, (x+17)(x-31)(x-95)=0'
69
+
70
+ # Cubic double real root only is impossible
71
+
72
+ # Cubic single real root (and two complex roots, not returned)
73
+ x0, x1, x2 = GSL::Poly.solve_cubic(0.0, 0.0, -1.0).to_a
74
+ assert_rel x0, 1.0, 1e-9, 'x0, x^3 = 1'
75
+ assert x1.nil?, 'x1, x^3 = 1 is nil'
76
+ assert x2.nil?, 'x2, x^3 = 1 is nil'
77
+
78
+ # Cubic no real root is impossible
79
+
80
+ z = GSL::Poly::Complex.solve_quadratic(4.0, -20.0, 26.0)
81
+ assert_rel z[0].re, 2.5, 1e-9, 'z0.real, (2x - 5)^2 = -1'
82
+ assert_rel z[0].im, -0.5, 1e-9, 'z0.imag, (2x - 5)^2 = -1'
83
+ assert_rel z[1].re, 2.5, 1e-9, 'z1.real, (2x - 5)^2 = -1'
84
+ assert_rel z[1].im, 0.5, 1e-9, 'z1.imag, (2x - 5)^2 = -1'
85
+
86
+ z = GSL::Poly.complex_solve_quadratic(4.0, -20.0, 25.0)
87
+ assert_rel z[0].re, 2.5, 1e-9, 'z0.real, (2x - 5)^2 = 0'
88
+ assert_rel z[0].im, 0.0, 1e-9, 'z0.imag (2x - 5)^2 = 0'
89
+ assert_rel z[1].re, 2.5, 1e-9, 'z1.real, (2x - 5)^2 = 0'
90
+ assert_rel z[1].im, 0.0, 1e-9, 'z1.imag (2x - 5)^2 = 0'
91
+ assert_equal z[0].re, z[1].re, 'z0.real == z1.real, (2x - 5)^2 = 0'
92
+ assert_equal z[1].im, z[1].im, 'z0.imag == z1.imag, (2x - 5)^2 = 0'
93
+
94
+ z = GSL::Poly.complex_solve_quadratic(4.0, -20.0, 21.0)
95
+ assert_rel z[0].re, 1.5, 1e-9, 'z0.real, (2x - 5)^2 = 4'
96
+ assert_rel z[0].im, 0.0, 1e-9, 'z0.imag, (2x - 5)^2 = 4'
97
+ assert_rel z[1].re, 3.5, 1e-9, 'z1.real, (2x - 5)^2 = 4'
98
+ assert_rel z[1].im, 0.0, 1e-9, 'z1.imag, (2x - 5)^2 = 4'
99
+
100
+ z = GSL::Poly.complex_solve_quadratic(4.0, 7.0, 0.0)
101
+ assert_rel z[0].re, -1.75, 1e-9, 'z[0].real, x(4x + 7) = 0'
102
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, x(4x + 7) = 0'
103
+ assert_rel z[1].re, 0.0, 1e-9, 'z[1].real, x(4x + 7) = 0'
104
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, x(4x + 7) = 0'
105
+
106
+ z = GSL::Poly.complex_solve_quadratic(5.0, 0.0, -20.0)
107
+ assert_rel z[0].re, -2.0, 1e-9, 'z[0].real, 5 x^2 = 20'
108
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, 5 x^2 = 20'
109
+ assert_rel z[1].re, 2.0, 1e-9, 'z[1].real, 5 x^2 = 20'
110
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, 5 x^2 = 20'
111
+
112
+ z = GSL::Poly.complex_solve_quadratic(5.0, 0.0, 20.0)
113
+ assert_rel z[0].re, 0.0, 1e-9, 'z[0].real, 5 x^2 = -20'
114
+ assert_rel z[0].im, -2.0, 1e-9, 'z[0].imag, 5 x^2 = -20'
115
+ assert_rel z[1].re, 0.0, 1e-9, 'z[1].real, 5 x^2 = -20'
116
+ assert_rel z[1].im, 2.0, 1e-9, 'z[1].imag, 5 x^2 = -20'
117
+
118
+ # Quadratic single complex root (technically not quadratic and root not
119
+ # complex since imaginary component is 0, but the data type is complex)
120
+ z = GSL::Poly.complex_solve_quadratic(0.0, 1.0, -1.0)
121
+ assert_rel z[0].re, 1.0, 1e-9, 'z[0].real, x = 1 (complex)'
122
+ assert_rel z[0].im, 0.0, 0.0, 'z[0].imag, x = 1 (complex)'
123
+ assert x1.nil?, 'z[1], x = 0 is nil'
124
+
125
+ # Quadratic no complex root (technically not quadratic)
126
+ z = GSL::Poly.complex_solve_quadratic(0.0, 0.0, 1.0)
127
+ assert z[0].nil?, 'z[0], 1 = 0 is nil'
128
+ assert z[1].nil?, 'z[1], 1 = 0 is nil'
129
+
130
+ z = GSL::Poly.complex_solve_cubic(0.0, 0.0, -27.0)
131
+ assert_rel z[0].re, -1.5, 1e-9, 'z[0].real, x^3 = 27'
132
+ assert_rel z[0].im, -1.5 * Math.sqrt(3.0), 1e-9, 'z[0].imag, x^3 = 27'
133
+ assert_rel z[1].re, -1.5, 1e-9, 'z[1].real, x^3 = 27'
134
+ assert_rel z[1].im, 1.5 * Math.sqrt(3.0), 1e-9, 'z[1].imag, x^3 = 27'
135
+ assert_rel z[2].re, 3.0, 1e-9, 'z[2].real, x^3 = 27'
136
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, x^3 = 27'
137
+
138
+ z = GSL::Poly.complex_solve_cubic(-1.0, 1.0, 39.0)
139
+ assert_rel z[0].re, -3.0, 1e-9, 'z[0].real, (x+3)(x^2+1) = 0'
140
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, (x+3)(x^2+1) = 0'
141
+ assert_rel z[1].re, 2.0, 1e-9, 'z[1].real, (x+3)(x^2+1) = 0'
142
+ assert_rel z[1].im, -3.0, 1e-9, 'z[1].imag, (x+3)(x^2+1) = 0'
143
+ assert_rel z[2].re, 2.0, 1e-9, 'z[2].real, (x+3)(x^2+1) = 0'
144
+ assert_rel z[2].im, 3.0, 1e-9, 'z[2].imag, (x+3)(x^2+1) = 0'
145
+
146
+ z = GSL::Poly.complex_solve_cubic(-51.0, 867.0, -4913.0)
147
+ assert_rel z[0].re, 17.0, 1e-9, 'z[0].real, (x-17)^3=0'
148
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, (x-17)^3=0'
149
+ assert_rel z[1].re, 17.0, 1e-9, 'z[1].real, (x-17)^3=0'
150
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, (x-17)^3=0'
151
+ assert_rel z[2].re, 17.0, 1e-9, 'z[2].real, (x-17)^3=0'
152
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, (x-17)^3=0'
153
+
154
+ z = GSL::Poly.complex_solve_cubic(-57.0, 1071.0, -6647.0)
155
+ assert_rel z[0].re, 17.0, 1e-9, 'z[0].real, (x-17)(x-17)(x-23)=0'
156
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, (x-17)(x-17)(x-23)=0'
157
+ assert_rel z[1].re, 17.0, 1e-9, 'z[1].real, (x-17)(x-17)(x-23)=0'
158
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, (x-17)(x-17)(x-23)=0'
159
+ assert_rel z[2].re, 23.0, 1e-9, 'z[2].real, (x-17)(x-17)(x-23)=0'
160
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, (x-17)(x-17)(x-23)=0'
161
+
162
+ z = GSL::Poly.complex_solve_cubic(-11.0, -493.0, +6647.0)
163
+ assert_rel z[0].re, -23.0, 1e-9, 'z[0].real, (x+23)(x-17)(x-17)=0'
164
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, (x+23)(x-17)(x-17)=0'
165
+ assert_rel z[1].re, 17.0, 1e-9, 'z[1].real, (x+23)(x-17)(x-17)=0'
166
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, (x+23)(x-17)(x-17)=0'
167
+ assert_rel z[2].re, 17.0, 1e-9, 'z[2].real, (x+23)(x-17)(x-17)=0'
168
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, (x+23)(x-17)(x-17)=0'
169
+
170
+ z = GSL::Poly.complex_solve_cubic(-143.0, 5087.0, -50065.0)
171
+ assert_rel z[0].re, 17.0, 1e-9, 'z[0].real, (x-17)(x-31)(x-95)=0'
172
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, (x-17)(x-31)(x-95)=0'
173
+ assert_rel z[1].re, 31.0, 1e-9, 'z[1].real, (x-17)(x-31)(x-95)=0'
174
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, (x-17)(x-31)(x-95)=0'
175
+ assert_rel z[2].re, 95.0, 1e-9, 'z[2].real, (x-17)(x-31)(x-95)=0'
176
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, (x-17)(x-31)(x-95)=0'
177
+
178
+ a = GSL::Poly.alloc(-120, 274, -225, 85, -15, 1)
179
+ w = GSL::Poly::Complex::Workspace.alloc(a.size)
180
+ z = GSL::Poly.complex_solve(a, 6, w)
181
+ assert_rel z[0].re, 1.0, 1e-9, 'z[0].real, 5th-order polynomial'
182
+ assert_rel z[0].im, 0.0, 1e-9, 'z[0].imag, 5th-order polynomial'
183
+ assert_rel z[1].re, 2.0, 1e-9, 'z[1].real, 5th-order polynomial'
184
+ assert_rel z[1].im, 0.0, 1e-9, 'z[1].imag, 5th-order polynomial'
185
+ assert_rel z[2].re, 3.0, 1e-9, 'z[2].real, 5th-order polynomial'
186
+ assert_rel z[2].im, 0.0, 1e-9, 'z[2].imag, 5th-order polynomial'
187
+ assert_rel z[3].re, 4.0, 1e-9, 'z3.real, 5th-order polynomial'
188
+ assert_rel z[3].im, 0.0, 1e-9, 'z3.imag, 5th-order polynomial'
189
+ assert_rel z[4].re, 5.0, 1e-9, 'z4.real, 5th-order polynomial'
190
+ assert_rel z[4].im, 0.0, 1e-9, 'z4.imag, 5th-order polynomial'
191
+
192
+ a = GSL::Poly.alloc(1, 0, 0, 0, 1, 0, 0, 0, 1)
193
+ w = GSL::Poly::Complex::Workspace.alloc(a.size)
194
+ c = 0.5
195
+ s = Math.sqrt(3) / 2
196
+ z = GSL::Poly.complex_solve(a, w)
197
+ assert_rel z[0].re, -s, 1e-9, 'z[0].real, 8th-order polynomial'
198
+ assert_rel z[0].im, c, 1e-9, 'z[0].imag, 8th-order polynomial'
199
+ assert_rel z[1].re, -s, 1e-9, 'z[1].real, 8th-order polynomial'
200
+ assert_rel z[1].im, -c, 1e-9, 'z[1].imag, 8th-order polynomial'
201
+ assert_rel z[2].re, -c, 1e-9, 'z[2].real, 8th-order polynomial'
202
+ assert_rel z[2].im, s, 1e-9, 'z[2].imag, 8th-order polynomial'
203
+ assert_rel z[3].re, -c, 1e-9, 'z3.real, 8th-order polynomial'
204
+ assert_rel z[3].im, -s, 1e-9, 'z3.imag, 8th-order polynomial'
205
+ assert_rel z[4].re, c, 1e-9, 'z4.real, 8th-order polynomial'
206
+ assert_rel z[4].im, s, 1e-9, 'z4.imag, 8th-order polynomial'
207
+ assert_rel z[5].re, c, 1e-9, 'z5.real, 8th-order polynomial'
208
+ assert_rel z[5].im, -s, 1e-9, 'z5.imag, 8th-order polynomial'
209
+ assert_rel z[6].re, s, 1e-9, 'z6.real, 8th-order polynomial'
210
+ assert_rel z[6].im, c, 1e-9, 'z6.imag, 8th-order polynomial'
211
+ assert_rel z[7].re, s, 1e-9, 'z7.real, 8th-order polynomial'
212
+ assert_rel z[7].im, -c, 1e-9, 'z7.imag, 8th-order polynomial'
213
+
214
+ xa = GSL::Poly.alloc(0.16, 0.97, 1.94, 2.74, 3.58, 3.73, 4.70)
215
+ ya = GSL::Poly.alloc(0.73, 1.11, 1.49, 1.84, 2.30, 2.41, 3.07)
216
+ dd_expected = GSL::Vector.alloc(7.30000000000000e-01,
217
+ 4.69135802469136e-01,
218
+ -4.34737219941284e-02,
219
+ 2.68681098870099e-02,
220
+ -3.22937056934996e-03,
221
+ 6.12763259971375e-03,
222
+ -6.45402453527083e-03)
223
+ dd = GSL::Poly.dd_init(xa, ya)
224
+
225
+ 7.times { |i|
226
+ assert_rel dd[i], dd_expected[i], 1e-10, "divided difference dd[#{i}]"
227
+ }
228
+
229
+ 7.times { |i|
230
+ y = dd.eval(xa, xa[i])
231
+ assert_rel y, ya[i], 1e-10, "divided difference y[#{i}]"
232
+ }
233
+
234
+ coeff = dd.taylor(1.5, xa)
235
+
236
+ 7.times { |i|
237
+ y = coeff.eval(xa[i] - 1.5)
238
+ assert_rel y, ya[i], 1e-10, "taylor expansion about 1.5 y[#{i}]"
239
+ }
240
+
241
+ # Added GSL-1.12.90 (gsl-1.13)
242
+ # gsl_poly_eval_derivs()
243
+ return unless GSL::Poly.method_defined?(:eval_derivs)
244
+
245
+ c = GSL::Vector.alloc([1.0, -2.0, 3.0, -4.0, 5.0, -6.0])
246
+ x = -0.5
247
+
248
+ dc = GSL::Poly.eval_derivs(c, x)
249
+
250
+ assert_rel dc[0], c[0] + c[1] * x + c[2] * x * x + c[3] * x * x * x + c[4] * x * x * x * x + c[5] * x * x * x * x * x , EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6}, 3.75)'
251
+ assert_rel dc[1], c[1] + 2.0 * c[2] * x + 3.0 * c[3] * x * x + 4.0 * c[4] * x * x * x + 5.0 * c[5] * x * x * x * x , EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6} deriv 1, -12.375)'
252
+ assert_rel dc[2], 2.0 * c[2] + 3.0 * 2.0 * c[3] * x + 4.0 * 3.0 * c[4] * x * x + 5.0 * 4.0 * c[5] * x * x * x , EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6} deriv 2, +48.0)'
253
+ assert_rel dc[3], 3.0 * 2.0 * c[3] + 4.0 * 3.0 * 2.0 * c[4] * x + 5.0 * 4.0 * 3.0 * c[5] * x * x , EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6} deriv 3, -174.0)'
254
+ assert_rel dc[4], 4.0 * 3.0 * 2.0 * c[4] + 5.0 * 4.0 * 3.0 * 2.0 * c[5] * x, EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6} deriv 4, +480.0)'
255
+ assert_rel dc[5], 5.0 * 4.0 * 3.0 * 2.0 * c[5] , EPS, 'eval_derivs({+1, -2, +3, -4, +5, -6} deriv 5, -720.0)'
256
+
257
+ # Test Poly::fit and Poly::wfit
258
+ x = GSL::Vector[0, 2, 2]
259
+ y = GSL::Vector[0, 1, -1]
260
+ coef, cov, chisq, status = GSL::Poly.fit(x, y, 1)
261
+ assert_rel coef[0], 0.0, 1e-9, 'y intercept == 0'
262
+ assert_rel coef[1], 0.0, 1e-9, 'slope == 0'
263
+ assert_rel chisq, 2.0, 1e-9, 'chisq == 2'
264
+
265
+ w = GSL::Vector[1, 1, 0]
266
+ coef, cov, chisq, status = GSL::Poly.wfit(x, w, y, 1)
267
+ assert_rel coef[0], 0.0, 1e-9, 'y intercept == 0'
268
+ assert_rel coef[1], 0.5, 1e-9, 'slope == 0.5'
269
+ assert_rel chisq, 0.0, 1e-9, 'chisq == 0'
270
+ end
271
+
272
+ def test_special
273
+ hermit = [
274
+ GSL::Poly::Int[1],
275
+ GSL::Poly::Int[0, 2],
276
+ GSL::Poly::Int[-2, 0, 4],
277
+ GSL::Poly::Int[0, -12, 0, 8],
278
+ GSL::Poly::Int[12, 0, -48, 0, 16],
279
+ GSL::Poly::Int[0, 120, 0, -160, 0, 32],
280
+ GSL::Poly::Int[-120, 0, 720, 0, -480, 0, 64]
281
+ ]
282
+ hermit[0][0] = 1
283
+
284
+ 6.times { |i|
285
+ hn = GSL::Poly.hermite(i)
286
+ assert_equal hermit[i], hn, "Hermite polynomial, n = #{i}"
287
+ }
288
+
289
+ laguerre = [
290
+ GSL::Poly::Int[1],
291
+ GSL::Poly::Int[1, -1],
292
+ GSL::Poly::Int[2, -4, 1],
293
+ GSL::Poly::Int[6, -18, 9, -1],
294
+ GSL::Poly::Int[24, -96, 72, -16, 1],
295
+ GSL::Poly::Int[120, -600, 600, -200, 25, -1],
296
+ GSL::Poly::Int[720, -4320, 5400, -2400, 450, -36, 1]
297
+ ]
298
+ laguerre[0][0] = 1
299
+
300
+ 7.times { |i|
301
+ hn = GSL::Poly.laguerre(i)
302
+ assert_equal laguerre[i], hn, "Laguerre polynomial, n = #{i}"
303
+ }
304
+
305
+ cheb = [
306
+ GSL::Poly::Int[1],
307
+ GSL::Poly::Int[0, 1],
308
+ GSL::Poly::Int[-1, 0, 2],
309
+ GSL::Poly::Int[0, -3, 0, 4],
310
+ GSL::Poly::Int[1, 0, -8, 0, 8],
311
+ GSL::Poly::Int[0, 5, 0, -20, 0, 16],
312
+ GSL::Poly::Int[-1, 0, 18, 0, -48, 0, 32]
313
+ ]
314
+ cheb[0][0] = 1
315
+
316
+ 7.times { |i|
317
+ hn = GSL::Poly.cheb(i)
318
+ assert_equal cheb[i], hn, "Chebyshev polynomial, n = #{i}"
319
+ }
320
+
321
+ cheb_ii = [
322
+ GSL::Poly::Int[1],
323
+ GSL::Poly::Int[0, 2],
324
+ GSL::Poly::Int[-1, 0, 4],
325
+ GSL::Poly::Int[0, -4, 0, 8],
326
+ GSL::Poly::Int[1, 0, -12, 0, 16],
327
+ GSL::Poly::Int[0, 6, 0, -32, 0, 32],
328
+ GSL::Poly::Int[-1, 0, 24, 0, -80, 0, 64]
329
+ ]
330
+ cheb_ii[0][0] = 1
331
+
332
+ 7.times { |i|
333
+ hn = GSL::Poly.cheb_II(i)
334
+ assert_equal cheb_ii[i], hn, "Chebyshev II polynomial, n = #{i}"
335
+ }
336
+ end
337
+
338
+ end
@@ -0,0 +1,94 @@
1
+ require 'test_helper'
2
+
3
+ class QRngTest < GSL::TestCase
4
+
5
+ def _test_sobol(v, d, g = nil)
6
+ status = 0
7
+
8
+ if g
9
+ g.init
10
+ reinitialized = true
11
+ else
12
+ g = GSL::QRng.alloc(GSL::QRng::SOBOL, d)
13
+ end
14
+
15
+ 3.times { g.get(v) }
16
+
17
+ status += (v[0] != 0.25 || v[1] != 0.75) ? 1 : 0
18
+ g.get(v)
19
+
20
+ status += (v[0] != 0.375 || v[1] != 0.375) ? 1 : 0
21
+ assert status.zero?, "Sobol d=#{d}#{' (reinitialized)' if reinitialized}"
22
+
23
+ g
24
+ end
25
+
26
+ def test_sobol
27
+ v = GSL::Vector.alloc(3)
28
+
29
+ _test_sobol(v, 2)
30
+ _test_sobol(v, 3, _test_sobol(v, 3))
31
+ end
32
+
33
+ def _test_nied2(v, d, g = nil)
34
+ status = 0
35
+
36
+ if g
37
+ g.init
38
+ reinitialized = true
39
+ else
40
+ g = GSL::QRng.alloc(GSL::QRng::NIEDERREITER_2, d)
41
+ end
42
+
43
+ 3.times { g.get(v) }
44
+
45
+ status += (v[0] != 0.75 || v[1] != 0.25) ? 1 : 0
46
+ g.get(v)
47
+
48
+ status += (v[0] != 0.25 || v[1] != 0.75) ? 1 : 0
49
+ 3.times { g.get(v) }
50
+
51
+ status += (v[0] != 0.625 || v[1] != 0.125) ? 1 : 0
52
+ assert status.zero?, "Niederreiter d=#{d}#{' (reinitialized)' if reinitialized}"
53
+
54
+ g
55
+ end
56
+
57
+ def test_nied2
58
+ v = GSL::Vector.alloc(3)
59
+
60
+ _test_nied2(v, 2)
61
+ _test_nied2(v, 3, _test_nied2(v, 3))
62
+ end
63
+
64
+ def _test_hdsobol(v, d, g = nil)
65
+ status = 0
66
+
67
+ if g
68
+ g.init
69
+ reinitialized = true
70
+ else
71
+ g = GSL::QRng.alloc(GSL::QRng::HDSOBOL, d)
72
+ end
73
+
74
+ 3.times { g.get(v) }
75
+
76
+ status += (v[0] != 0.25 || v[1] != 0.75) ? 1 : 0
77
+ g.get(v)
78
+
79
+ status += (v[0] != 0.375 || v[1] != 0.375) ? 1 : 0
80
+ assert status.zero?, "HDSobol d=#{d}#{' (reinitialized)' if reinitialized}"
81
+
82
+ g
83
+ end
84
+
85
+ def test_hdsobol
86
+ return unless GSL::QRng.const_defined?(:HDSOBOL)
87
+
88
+ v = GSL::Vector.alloc(3)
89
+
90
+ _test_hdsobol(v, 2)
91
+ _test_hdsobol(v, 3, _test_hdsobol(v, 3))
92
+ end
93
+
94
+ end