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
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # = GSL::Vector::Complex
3
3
  #
4
- # == {}[link:index.html"name="1] Class methods
4
+ # == Class methods
5
5
  # ---
6
6
  # * GSL::Vector::Complex.alloc(size)
7
7
  # * GSL::Vector::Complex.alloc(re, im)
@@ -24,14 +24,14 @@
24
24
  # ---
25
25
  # * GSL::Vector::Complex.calloc(n)
26
26
  #
27
- # Creates a complex vector of length <tt>n</tt> and initializes all
27
+ # Creates a complex vector of length <tt>n</tt> and initializes all
28
28
  # the elements of the vector to zero.
29
29
  #
30
- # == {}[link:index.html"name="2] Instance methods
31
- # === {}[link:index.html"name="2.1] Accessing vector elements
30
+ # == Instance methods
31
+ # === Accessing vector elements
32
32
  # ---
33
33
  # * GSL::Vector::Complex#get(args)
34
- # * GSL::Vector::Complex#[args]
34
+ # * \GSL::Vector::Complex#[args]
35
35
  #
36
36
  # Returns elements(s) of the complex vector <tt>self</tt> if <tt>args</tt> is a
37
37
  # single Fixnum, a single Array of Fixnums, or a single GSL::Permutation (or
@@ -54,7 +54,7 @@
54
54
  #
55
55
  # ---
56
56
  # * GSL::Vector::Complex#set(args, val)
57
- # * GSL::Vector::Complex#[args]=val
57
+ # * \GSL::Vector::Complex#[args]=val
58
58
  #
59
59
  # If <tt>args</tt> is empty, behaves as <tt>#set_all</tt> and <tt>val</tt> must be a
60
60
  # <tt>[re,im]</tt> <tt>Array</tt>, <tt>Float</tt>, <tt>Integer</tt>, or
@@ -73,9 +73,9 @@
73
73
  # NOTE: GSL does not provide a vector copy function that properly copies data
74
74
  # across overlapping memory regions, so watch out if assigning to part of a
75
75
  # Vector from another part of itself (see <tt>#set</tt> example of
76
- # {GSL::Vector}[link:files/rdoc/vector_rdoc.html]).
76
+ # {GSL::Vector}[link:rdoc/vector_rdoc.html]).
77
77
  #
78
- # === {}[link:index.html"name="2.2] Initializing vector elements
78
+ # === Initializing vector elements
79
79
  # ---
80
80
  # * GSL::Vector::Complex#set_all(z)
81
81
  #
@@ -101,7 +101,7 @@
101
101
  # <tt>x</tt>. Currently, <tt>x</tt> must be a scalar, but a future Ruby GSL
102
102
  # version could accept a GSL::Vector.
103
103
  #
104
- # === {}[link:index.html"name="2.3] Vector Properties
104
+ # === Vector Properties
105
105
  # ---
106
106
  # * GSL::Vector::Complex#size
107
107
  # * GSL::Vector::Complex#len
@@ -114,7 +114,7 @@
114
114
  #
115
115
  # Return the vector stride.
116
116
  #
117
- # === {}[link:index.html"name="2.4] Iterators
117
+ # === Iterators
118
118
  # ---
119
119
  # * GSL::Vector::Complex#each
120
120
  # * GSL::Vector::Complex#each_index
@@ -124,13 +124,13 @@
124
124
  # * GSL::Vector::Complex#map!
125
125
  #
126
126
  #
127
- # === {}[link:index.html"name="2.5] Reordering Elements
127
+ # === Reordering Elements
128
128
  # <tt>GSL::Vector::Complex</tt> provides four methods for shifting the frequency
129
- # domain data between <b>FFT order</b>, shown in the table in the ((<Overview of
130
- # complex data FFTs|URL:fft.html#2.1>)), and <b>natural order</b>, which has the
131
- # most negative freqeuncy component first, the zero frequency component in the
129
+ # domain data between <b>FFT order</b>, shown in the table in the {Overview of
130
+ # complex data FFTs}[link:rdoc/fft_rdoc.html#label-Overview+of+complex+data+FFTs], and <b>natural order</b>, which has
131
+ # the most negative freqeuncy component first, the zero frequency component in the
132
132
  # middle, and the most positive frequency component last. For more information
133
- # on Ruby/GSL and FFTs, see {Fast Fourier Transforms}[link:files/rdoc/fft_rdoc.html].
133
+ # on Ruby/GSL and FFTs, see {Fast Fourier Transforms}[link:rdoc/fft_rdoc.html].
134
134
  #
135
135
  # ---
136
136
  # * GSL::Vector::Complex#fftshift
@@ -154,7 +154,7 @@
154
154
  # <tt>self</tt>. Note that <tt>#fftshift</tt> and <tt>#ifftshift</tt> are equivalent
155
155
  # for even lengths, but not for odd lengths.
156
156
  #
157
- # === {}[link:index.html"name="2.6] Arithmetic
157
+ # === Arithmetic
158
158
  # ---
159
159
  # * GSL::Vector::Complex#+(other)
160
160
  # * GSL::Vector::Complex#-(other)
@@ -168,7 +168,7 @@
168
168
  # Returns a new <tt>GSL::Vector::Complex</tt> instance containing the result of
169
169
  # the appropriate arithmetic operation on <tt>self</tt> and <tt>other</tt>. The
170
170
  # inputs are unchanged. The <tt>other</tt> parameter may be a scalar,
171
- # <tt>{GSL::Vector}[link:files/rdoc/vector_rdoc.html]</tt>, or <tt>GSL::Vector::Complex</tt>.
171
+ # <tt>{GSL::Vector}[link:rdoc/vector_rdoc.html]</tt>, or <tt>GSL::Vector::Complex</tt>.
172
172
  #
173
173
  # ---
174
174
  # * GSL::Vector::Complex#+=(other)
@@ -182,10 +182,10 @@
182
182
  #
183
183
  # Modifies <tt>self</tt> in place to contain the result of the appropriate
184
184
  # arithmetic operation on <tt>self</tt> and <tt>other</tt>. The <tt>other</tt>
185
- # parameter may be a scalar, <tt>{GSL::Vector}[link:files/rdoc/vector_rdoc.html]</tt>, or
185
+ # parameter may be a scalar, <tt>{GSL::Vector}[link:rdoc/vector_rdoc.html]</tt>, or
186
186
  # <tt>GSL::Vector::Complex</tt>.
187
187
  #
188
- # === {}[link:index.html"name="2.7] Reading and writing vectors
188
+ # === Reading and writing vectors
189
189
  # ---
190
190
  # * GSL::Vector::Complex#fwite(io)
191
191
  # * GSL::Vector::Complex#fread(io)
@@ -193,7 +193,7 @@
193
193
  # * GSL::Vector::Complex#fscanf(io)
194
194
  #
195
195
  #
196
- # === {}[link:index.html"name="2.8] Functions
196
+ # === Functions
197
197
  # ---
198
198
  # * GSL::Vector::Complex#conj
199
199
  # * GSL::Vector::Complex#conjugate
@@ -272,7 +272,7 @@
272
272
  # * GSL::Vector::Complex#arccoth
273
273
  #
274
274
  #
275
- # === {}[link:index.html"name="2.9] Statistics
275
+ # === Statistics
276
276
  # ---
277
277
  # * GSL::Vector::Complex#sum
278
278
  #
@@ -324,7 +324,7 @@
324
324
  # Returns the standard deviation of <tt>self</tt> around the fixed mean
325
325
  # <tt>mean</tt>. This is a real number, i.e. a <tt>Float</tt>.
326
326
  #
327
- # == {}[link:index.html"name="3] Data Conversions
327
+ # == Data Conversions
328
328
  # ---
329
329
  # * GSL::Vector#to_complex
330
330
  # * GSL::Vector#to_complex2
@@ -341,7 +341,7 @@
341
341
  # [ [1.000e+00 2.000e+00] [3.000e+00 4.000e+00] ]
342
342
  # => #<GSL::Vector::Complex:0x6d6424>
343
343
  #
344
- # {Reference index}[link:files/rdoc/ref_rdoc.html]
345
- # {top}[link:files/rdoc/index_rdoc.html]
344
+ # {Reference index}[link:rdoc/ref_rdoc.html]
345
+ # {top}[link:index.html]
346
346
  #
347
347
  #
@@ -1,41 +1,41 @@
1
1
  #
2
2
  # = Discrete Wavelet Transforms
3
- # This chapter describes functions for performing Discrete Wavelet Transforms
4
- # (DWTs).
5
- # The library includes wavelets for real data in both one and two dimensions.
3
+ # This chapter describes functions for performing Discrete Wavelet Transforms
4
+ # (DWTs).
5
+ # The library includes wavelets for real data in both one and two dimensions.
6
6
  #
7
7
  # Contents:
8
- # 1. {Definitions}[link:files/rdoc/rdoc/wavelet_rdoc.html#1]
9
- # 1. {Initialization}[link:files/rdoc/rdoc/wavelet_rdoc.html#2]
10
- # 1. {Transform methods}[link:files/rdoc/rdoc/wavelet_rdoc.html#3]
11
- # 1. {Wavelet transforms in one dimension}[link:files/rdoc/rdoc/wavelet_rdoc.html#3.1]
12
- # 1. {Wavelet transforms in two dimension}[link:files/rdoc/rdoc/wavelet_rdoc.html#3.2]
13
- # 1. {Examples}[link:files/rdoc/rdoc/wavelet_rdoc.html#4]
8
+ # 1. {Definitions}[link:rdoc/wavelet_rdoc.html#label-Definitions]
9
+ # 1. {Initialization}[link:rdoc/wavelet_rdoc.html#label-Initialization]
10
+ # 1. {Transform methods}[link:rdoc/wavelet_rdoc.html#label-Transform+Methods]
11
+ # 1. {Wavelet transforms in one dimension}[link:rdoc/wavelet_rdoc.html#label-Wavelet+transforms+in+one+dimension]
12
+ # 1. {Wavelet transforms in two dimension}[link:rdoc/wavelet_rdoc.html#label-Wavelet+transforms+in+two+dimension]
13
+ # 1. {Examples}[link:rdoc/wavelet_rdoc.html#label-Example]
14
14
  #
15
- # == {}[link:index.html"name="1] Definitions
15
+ # == Definitions
16
16
  #
17
17
  # The continuous wavelet transform and its inverse are defined by the relations,
18
18
  # and,
19
- # where the basis functionspsi_{s,tau} are obtained by scaling and translation
19
+ # where the basis functionspsi_{s,tau} are obtained by scaling and translation
20
20
  # from a single function, referred to as the mother wavelet.
21
21
  #
22
- # The discrete version of the wavelet transform acts on evenly sampled data,
23
- # with fixed scaling and translation steps (s, tau). The frequency and time
24
- # axes are sampled dyadically on scales of 2^j through a level parameter j.
25
- # The resulting family of functions {psi_{j,n}} constitutes an orthonormal
22
+ # The discrete version of the wavelet transform acts on evenly sampled data,
23
+ # with fixed scaling and translation steps (s, tau). The frequency and time
24
+ # axes are sampled dyadically on scales of 2^j through a level parameter j.
25
+ # The resulting family of functions {psi_{j,n}} constitutes an orthonormal
26
26
  # basis for square-integrable signals.
27
27
  #
28
- # The discrete wavelet transform is an O(N) algorithm, and is also referred to as
28
+ # The discrete wavelet transform is an O(N) algorithm, and is also referred to as
29
29
  # the fast wavelet transform.
30
30
  #
31
- # == {}[link:index.html"name="2] Initialization
31
+ # == Initialization
32
32
  #
33
33
  # ---
34
34
  # * GSL::Wavelet.alloc(type, k)
35
35
  # * GSL::Wavelet.alloc(type, k)
36
36
  #
37
- # This function allocates and initializes a wavelet object of type <tt>type</tt>.
38
- # The parameter <tt>k</tt> selects the specific member of the wavelet family.
37
+ # This function allocates and initializes a wavelet object of type <tt>type</tt>.
38
+ # The parameter <tt>k</tt> selects the specific member of the wavelet family.
39
39
  #
40
40
  # The wavelet types are given by a constant (Fixnum) or a string as followings.
41
41
  #
@@ -46,8 +46,8 @@
46
46
  # * <tt>GSL::Wavelet::BSPLINE</tt>, or <tt>"bspline"</tt>
47
47
  # * <tt>GSL::Wavelet::BSPLINE_CENTERED</tt>, or <tt>"bspline_centered"</tt>
48
48
  #
49
- # The centered forms of the wavelets align the coefficients of the various
50
- # sub-bands on edges. Thus the resulting visualization of the coefficients
49
+ # The centered forms of the wavelets align the coefficients of the various
50
+ # sub-bands on edges. Thus the resulting visualization of the coefficients
51
51
  # of the wavelet transform in the phase plane is easier to understand.
52
52
  #
53
53
  # ---
@@ -58,16 +58,16 @@
58
58
  # ---
59
59
  # * GSL::Wavelet::Workspace.alloc(n)
60
60
  #
61
- # The GSL::Wavelet::Workspace object contains scratch space of the same size as
61
+ # The GSL::Wavelet::Workspace object contains scratch space of the same size as
62
62
  # the input data, for holding intermediate results during the transform.
63
- # This method allocates a workspace for the discrete wavelet transform.
64
- # To perform a one-dimensional transform on <tt>n</tt> elements, a workspace of
65
- # size <tt>n</tt> must be provided. For two-dimensional transforms of n-by-n
66
- # matrices it is sufficient to allocate a workspace of size <tt>n</tt>,
63
+ # This method allocates a workspace for the discrete wavelet transform.
64
+ # To perform a one-dimensional transform on <tt>n</tt> elements, a workspace of
65
+ # size <tt>n</tt> must be provided. For two-dimensional transforms of n-by-n
66
+ # matrices it is sufficient to allocate a workspace of size <tt>n</tt>,
67
67
  # since the transform operates on individual rows and columns.
68
68
  #
69
- # == {}[link:index.html"name="3] Transform Methods
70
- # === {}[link:index.html"name="3.1] Wavelet transforms in one dimension
69
+ # == Transform Methods
70
+ # === Wavelet transforms in one dimension
71
71
  #
72
72
  # ---
73
73
  # * GSL::Wavelet.transform(w, v, dir = GSL::Wavelet::FORWARD, work)
@@ -90,24 +90,24 @@
90
90
  # * GSL::Vector#wavelet_transform_forward(w, ...)
91
91
  # * GSL::Vector#wavelet_transform_inverse(w, ...)
92
92
  #
93
- # These methods compute forward and inverse discrete wavelet transforms
94
- # of the vector <tt>v</tt>. The length of the transform is restricted to powers
95
- # of two. For the transform version of the function the argument dir can be
96
- # either GSL::Wavelet::FORWARD (+1) or GSL::Wavelet::BACKWARD (-1).
93
+ # These methods compute forward and inverse discrete wavelet transforms
94
+ # of the vector <tt>v</tt>. The length of the transform is restricted to powers
95
+ # of two. For the transform version of the function the argument dir can be
96
+ # either GSL::Wavelet::FORWARD (+1) or GSL::Wavelet::BACKWARD (-1).
97
97
  # A workspace <tt>work</tt> can be omitted.
98
- #
98
+ #
99
99
  # If <tt>v</tt> is a <tt>GSL::Matrix</tt> object, methods for 2d-transforms
100
100
  # are called.
101
101
  #
102
- # For the forward transform, the elements of the original vector are replaced by
103
- # the discrete wavelet transform f_i -> w_{j,k} in a packed triangular storage
104
- # layout, where j is the index of the level j = 0 ... J-1 and k is the index of
105
- # the coefficient within each level, k = 0 ... (2^j)-1. The total number of
106
- # levels is J = log_2(n).
102
+ # For the forward transform, the elements of the original vector are replaced by
103
+ # the discrete wavelet transform f_i -> w_{j,k} in a packed triangular storage
104
+ # layout, where j is the index of the level j = 0 ... J-1 and k is the index of
105
+ # the coefficient within each level, k = 0 ... (2^j)-1. The total number of
106
+ # levels is J = log_2(n).
107
107
  #
108
108
  # These methods return a transformed data, and the input vector is not changed.
109
109
  #
110
- # === {}[link:index.html"name="3.2] Wavelet transforms in two dimension
110
+ # === Wavelet transforms in two dimension
111
111
  # ---
112
112
  # * GSL::Wavelet.transform(same as the methods for one dimensional transforms)
113
113
  # * GSL::Wavelet.transform_matrix()
@@ -162,13 +162,13 @@
162
162
  # * GSL::Wavelet2d#nstransform_inverse()
163
163
  #
164
164
  #
165
- # == {}[link:index.html"name="4] Example
165
+ # == Example
166
166
  # #!/usr/bin/env ruby
167
167
  # require("gsl")
168
168
  #
169
169
  # n = 256
170
170
  # nc = 20
171
- #
171
+ #
172
172
  # data = Vector.alloc(n)
173
173
  # data.fscanf("ecg.dat")
174
174
  #
@@ -194,7 +194,7 @@
194
194
  # i = 0
195
195
  # while (i + nc) < n
196
196
  # data2[perm[i]] = 0.0
197
- # i += 1
197
+ # i += 1
198
198
  # end
199
199
  #
200
200
  # #data3 = w.transform(data2, Wavelet::BACKWARD, work)
@@ -210,9 +210,9 @@
210
210
  #
211
211
  # #If you have GNU graph utility...
212
212
  # GSL::graph(nil, data, data3, "-T X -C -g 3")
213
- #
214
- # {prev}[link:files/rdoc/rdoc/fft_rdoc.html]
215
- # {next}[link:files/rdoc/rdoc/integration_rdoc.html]
216
213
  #
217
- # {back}[link:files/rdoc/rdoc/index_rdoc.html]
214
+ # {prev}[link:rdoc/fft_rdoc.html]
215
+ # {next}[link:rdoc/integration_rdoc.html]
216
+ #
217
+ # {back}[link:index.html]
218
218
  #
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class BlasTest < GSL::TestCase
4
+
5
+ DBLEPS = 1e-6
6
+
7
+ def test_amax
8
+ v = GSL::Vector.alloc(0.537, 0.826)
9
+ assert_int v.idamax, 1, 'damax'
10
+
11
+ vz = GSL::Vector::Complex.alloc([0.913, -0.436], [-0.134, 0.129])
12
+ assert_int vz.izamax, 0, 'zmax'
13
+ end
14
+
15
+ def test_asum
16
+ v = GSL::Vector.alloc(0.271, -0.012)
17
+ assert_rel v.dasum, 0.283, DBLEPS, 'dasum'
18
+
19
+ vz = GSL::Vector::Complex.alloc([-0.046, -0.671], [-0.323, 0.785])
20
+ assert_rel vz.dzasum, 1.825, DBLEPS, 'dzasum'
21
+ end
22
+
23
+ def test_axpy
24
+ x = GSL::Vector.alloc(0.029)
25
+ y = GSL::Vector.alloc(-0.992)
26
+ e = GSL::Vector.alloc(-1.0007)
27
+
28
+ y2 = GSL::Blas.daxpy(-0.3, x, y)
29
+
30
+ assert_rel y2[0], e[0], DBLEPS, 'daxpy'
31
+
32
+ x = GSL::Vector::Complex.alloc([[0.776, -0.671]])
33
+ y = GSL::Vector::Complex.alloc([[0.39, 0.404]])
34
+ e = GSL::Vector::Complex.alloc([[1.061, 1.18]])
35
+
36
+ y2 = GSL::Blas.zaxpy(GSL::Complex.alloc(0, 1), x, y)
37
+
38
+ assert_rel y2[0].re, e[0].re, DBLEPS, 'zaxpy real'
39
+ assert_rel y2[0].im, e[0].im, DBLEPS, 'zaxpy imag'
40
+ end
41
+
42
+ def test_copy
43
+ x = GSL::Vector.alloc(0.002)
44
+ y = GSL::Vector.alloc(-0.921)
45
+ e = GSL::Vector.alloc(0.002)
46
+
47
+ GSL::Blas.dcopy(x, y)
48
+
49
+ assert_rel y[0], e[0], DBLEPS, 'dcopy'
50
+
51
+ x = GSL::Vector::Complex.alloc([[ 0.315, -0.324]])
52
+ y = GSL::Vector::Complex.alloc([[-0.312, -0.748]])
53
+ e = GSL::Vector::Complex.alloc([[0.315, -0.324]])
54
+
55
+ GSL::Blas.zcopy(x, y)
56
+
57
+ assert_rel y[0].re, e[0].re, DBLEPS, 'zcopy real'
58
+ assert_rel y[0].im, e[0].im, DBLEPS, 'zcopy imag'
59
+ end
60
+
61
+ def test_dnrm2
62
+ return unless GSL.have_narray?
63
+
64
+ e = Math.sqrt((0..4).inject { |m, x| m + x * x })
65
+
66
+ v = GSL::Vector.indgen(5)
67
+ v_dnrm2 = GSL::Blas.dnrm2(v)
68
+
69
+ assert_rel v_dnrm2, e, DBLEPS, 'GSL::Blas.dnrm2(GSL::Vector)'
70
+
71
+ na = NArray.float(5).indgen!
72
+ na_dnrm2 = GSL::Blas.dnrm2(na)
73
+
74
+ assert_rel na_dnrm2, e, DBLEPS, 'GSL::Blas.dnrm2(NArray)'
75
+
76
+ assert_rel na_dnrm2, v_dnrm2, 0, 'GSL::Blas.dnrm2(NArray) == GSL::Blas.dnrm2(GSL::Vector)'
77
+ end
78
+
79
+ end
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+
3
+ class BsplineTest < GSL::TestCase
4
+
5
+ N = 100
6
+
7
+ NMAX = 10
8
+ BMAX = 10 # 100
9
+
10
+ def _test_bspline(bw)
11
+ ncoeffs, order = bw.ncoeffs, bw.order
12
+
13
+ a = bw.breakpoint(0)
14
+ b = bw.breakpoint(bw.nbreak - 1)
15
+
16
+ N.times { |i|
17
+ xi, sum = a + (b - a) * (i / (N - 1)), 0.0
18
+
19
+ bb = bw.eval(xi)
20
+
21
+ ncoeffs.times { |j|
22
+ bj = bb[j]
23
+ refute bj < 0 || bj > 1,
24
+ "basis-spline coefficient #{j} is in range [0,1] for x=#{xi}"
25
+
26
+ sum += bj
27
+ }
28
+
29
+ assert_rel sum, 1.0, order * GSL::DBL_EPSILON,
30
+ "basis-spline coefficient #{order} is in range [0,1] for x=#{xi}"
31
+ }
32
+ end
33
+
34
+ def test_bspline_knots_uniform
35
+ 1.upto(NMAX) { |order|
36
+ 2.upto(BMAX) { |breakpoints|
37
+ bw = GSL::BSpline.alloc(order, breakpoints)
38
+ bw.knots_uniform(-1.23 * order, 45.6 * order)
39
+ _test_bspline(bw)
40
+ }
41
+ }
42
+ end
43
+
44
+ def test_bspline_knots
45
+ 1.upto(NMAX) { |order|
46
+ 2.upto(BMAX) { |breakpoints|
47
+ a, b = -1.23 * order, 45.6 * order
48
+
49
+ bw = GSL::BSpline.alloc(order, breakpoints)
50
+ k = GSL::Vector.alloc(breakpoints)
51
+
52
+ breakpoints.times { |i|
53
+ f = GSL.sqrt(i.to_f / (breakpoints - 1.0))
54
+ k[i] = (1 - f) * a + f * b
55
+ }
56
+
57
+ bw.knots(k)
58
+ _test_bspline(bw)
59
+ }
60
+ }
61
+ end
62
+
63
+ end