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,419 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # NOTE: gsl_tensor is not included in GSL:
3
- # It is distributed separately as an add-on package for GSL.
4
- # See http://sources.redhat.com/ml/gsl-discuss/2004-q4/msg00053.html.
5
- #
6
- require("gsl")
7
- require("./gsl_test2.rb")
8
- include GSL::Test
9
-
10
- exit unless GSL.const_defined?("Tensor")
11
-
12
- RANK = 3
13
- DIMENSION = 5
14
-
15
- t = GSL::Tensor.alloc(RANK, DIMENSION)
16
-
17
- Test::test2(t.rank == RANK, "#{t.class}.alloc returns valid rank")
18
- Test::test2(t.dimension == DIMENSION, "#{t.class}_alloc returns valid dimension")
19
-
20
- counter = 0
21
- for i in 0...DIMENSION do
22
- for j in 0...DIMENSION do
23
- for k in 0...DIMENSION do
24
- counter += 1
25
- t.set(i, j, k, counter)
26
- # t[i, j, k] = counter
27
- end
28
- end
29
- end
30
-
31
- status = 0
32
- counter = 0
33
- data = t.data # GSL::Vector::View
34
- for i in 0...DIMENSION do
35
- for j in 0...DIMENSION do
36
- for k in 0...DIMENSION do
37
- counter += 1
38
- if data[DIMENSION*DIMENSION*i + DIMENSION*j + k] != counter
39
- status += 1
40
- end
41
- end
42
- end
43
- end
44
-
45
- Test::test(status, "#{t.class}#set writes into array")
46
-
47
- status = 0
48
- counter = 0
49
- data = t.data
50
- for i in 0...DIMENSION do
51
- for j in 0...DIMENSION do
52
- for k in 0...DIMENSION do
53
- counter += 1
54
- # if t.get(i, j, k) != counter
55
- if t[i, j, k] != counter
56
- status += 1
57
- end
58
- end
59
- end
60
- end
61
-
62
- Test::test(status, "#{t.class}#get reads from array")
63
-
64
- t = Tensor.calloc(RANK, DIMENSION)
65
-
66
- counter = 0
67
- for i in 0...DIMENSION do
68
- for j in 0...DIMENSION do
69
- for k in 0...DIMENSION do
70
- counter += 1
71
- t.set(i, j, k, counter)
72
- end
73
- end
74
- end
75
-
76
- exp_max = t[0, 0, 0]
77
- exp_min = t[0, 0, 0]
78
- exp_imax = exp_jmax = exp_kmax = 0
79
- exp_imin = exp_jmin = exp_kmin = 0
80
-
81
- for i in 0...DIMENSION do
82
- for j in 0...DIMENSION do
83
- for k in 0...DIMENSION do
84
- value = t[i, j, k]
85
- if value > exp_max
86
- exp_max = value
87
- exp_imax = i; exp_jmax = j; exp_kmax = k
88
- end
89
- if value < exp_min
90
- exp_min = t[i, j, k]
91
- exp_imin = i; exp_jmin = j; exp_kmin = k
92
- end
93
- end
94
- end
95
- end
96
-
97
- max = t.max
98
- Test::test2(max == exp_max, "#{t.class}#max returns correct maximum value")
99
- min = t.min
100
- Test::test2(min == exp_min, "#{t.class}#min returns correct minimum value")
101
-
102
- min, max = t.minmax
103
- Test::test2(max == exp_max, "#{t.class}#minmax returns correct maximum value")
104
- Test::test2(min == exp_min, "#{t.class}#minmax returns correct minimum value")
105
-
106
- imax = t.max_index
107
- status = 0
108
- if imax[0] != exp_imax; status += 1; end
109
- if imax[1] != exp_jmax; status += 1; end
110
- if imax[2] != exp_kmax; status += 1; end
111
- Test::test(status, "#{t.class}#max_index returns correct maximum indices")
112
-
113
- imin = t.min_index
114
- status = 0
115
- if imin[0] != exp_imin; status += 1; end
116
- if imin[1] != exp_jmin; status += 1; end
117
- if imin[2] != exp_kmin; status += 1; end
118
- Test::test(status, "#{t.class}#min_index returns correct minimum indices")
119
-
120
-
121
- imin, imax = t.minmax_index
122
- status = 0
123
- if imin[0] != exp_imin; status += 1; end
124
- if imin[1] != exp_jmin; status += 1; end
125
- if imin[2] != exp_kmin; status += 1; end
126
- if imax[0] != exp_imax; status += 1; end
127
- if imax[1] != exp_jmax; status += 1; end
128
- if imax[2] != exp_kmax; status += 1; end
129
- Test::test(status, "#{t.class}#minmax_index returns correct indices")
130
-
131
- ##### Operations
132
- a = Tensor.new(RANK, DIMENSION)
133
- b = Tensor.new(RANK, DIMENSION)
134
- for i in 0...DIMENSION do
135
- for j in 0...DIMENSION do
136
- for k in 0...DIMENSION do
137
- a[i, j, k] = 3 + i + 5 * j + 2 * k
138
- b[i, j, k] = 3 + 2 * i + 4 * j + k
139
- end
140
- end
141
- end
142
-
143
- # Addition
144
- c = a + b
145
- #c = a.add(b)
146
- status = 0
147
- for i in 0...DIMENSION do
148
- for j in 0...DIMENSION do
149
- for k in 0...DIMENSION do
150
- r = c[i, j, k]
151
- x = a[i, j, k]
152
- y = b[i, j, k]
153
- z = x + y
154
- status += 1 if r != z
155
- end
156
- end
157
- end
158
- Test::test(status, "#{t.class}#add tensor addition")
159
-
160
- # Subtraction
161
- c = a - b
162
- # c = a.sub(b)
163
- status = 0
164
- for i in 0...DIMENSION do
165
- for j in 0...DIMENSION do
166
- for k in 0...DIMENSION do
167
- r = c[i, j, k]
168
- x = a[i, j, k]
169
- y = b[i, j, k]
170
- z = x - y
171
- status += 1 if r != z
172
- end
173
- end
174
- end
175
- Test::test(status, "#{t.class}#sub tensor subtraction")
176
-
177
- # Element multiplication
178
- c = a.mul_elements(b)
179
- status = 0
180
- for i in 0...DIMENSION do
181
- for j in 0...DIMENSION do
182
- for k in 0...DIMENSION do
183
- r = c[i, j, k]
184
- x = a[i, j, k]
185
- y = b[i, j, k]
186
- z = x * y
187
- status += 1 if r != z
188
- end
189
- end
190
- end
191
- Test::test(status, "#{t.class}#mul_elements element multiplication")
192
-
193
- # Element division
194
- c = a.div_elements(b)
195
- status = 0
196
- for i in 0...DIMENSION do
197
- for j in 0...DIMENSION do
198
- for k in 0...DIMENSION do
199
- r = c[i, j, k]
200
- x = a[i, j, k]
201
- y = b[i, j, k]
202
- z = x / y
203
- if (r-z).abs > 2*GSL::FLT_EPSILON*z.abs; status += 1; end
204
- end
205
- end
206
- end
207
- Test::test(status, "#{t.class}#div_elements element division")
208
-
209
- ### Tensor product
210
- c = a*b
211
- status = 0
212
- for i in 0...DIMENSION do
213
- for j in 0...DIMENSION do
214
- for k in 0...DIMENSION do
215
- for l in 0...DIMENSION do
216
- for m in 0...DIMENSION do
217
- for n in 0...DIMENSION do
218
- r = c[i, j, k, l, m, n]
219
- x = a[i, j, k]
220
- y = b[l, m, n]
221
- z = x*y
222
- if r != z; status += 1; end
223
- end
224
- end
225
- end
226
- end
227
- end
228
- end
229
- Test::test(status, "#{t.class}#product tensorial product")
230
-
231
- ### Index contraction
232
- tt = a.contract(0, 1)
233
- Test::test2(tt.rank == RANK-2, "#{t.class}.contract returns valid rank")
234
- Test::test2(tt.dimension == DIMENSION, "#{t.class}_contract returns valid dimension")
235
-
236
- ### Swap indices
237
- a_102 = a.swap_indices(0, 1)
238
- a_210 = a.swap_indices(0, 2)
239
- a_021 = a.swap_indices(1, 2)
240
- status = 0
241
- for i in 0...DIMENSION do
242
- for j in 0...DIMENSION do
243
- for k in 0...DIMENSION do
244
- x = a[i, j, k]
245
- x_102 = a_102[j, i, k]
246
- x_210 = a_210[k, j, i]
247
- x_021 = a_021[i, k, j]
248
- if x != x_102 or x != x_210 or x != x_021; status += 1; end
249
- end
250
- end
251
- end
252
- Test::test(status, "#{t.class}#swap_indices swap indices")
253
-
254
- ### Test text IO
255
- file = "tensor_test.txt"
256
-
257
- t = Tensor.alloc(RANK, DIMENSION)
258
- counter = 0
259
- for i in 0...DIMENSION do
260
- for j in 0...DIMENSION do
261
- for k in 0...DIMENSION do
262
- counter += 1
263
- t[i, j, k] = counter
264
- end
265
- end
266
- end
267
-
268
- t.fprintf(file, "%g")
269
- tt = Tensor.alloc(RANK, DIMENSION)
270
- status = 0
271
- tt.fscanf(file)
272
- counter = 0
273
- data = tt.data
274
- for i in 0...DIMENSION do
275
- for j in 0...DIMENSION do
276
- for k in 0...DIMENSION do
277
- counter += 1
278
- if data[DIMENSION*DIMENSION*i + DIMENSION*j + k] != counter
279
- status += 1
280
- end
281
- end
282
- end
283
- end
284
- Test::test(status, "#{t.class}#fprintf and fscanf")
285
- File.delete(file)
286
-
287
- ### Test binary IO
288
- file = "tensor_test.dat"
289
- t.fwrite(file)
290
- tt = Tensor.alloc(RANK, DIMENSION)
291
- status = 0
292
- tt.fread(file)
293
- counter = 0
294
- data = tt.data
295
- for i in 0...DIMENSION do
296
- for j in 0...DIMENSION do
297
- for k in 0...DIMENSION do
298
- counter += 1
299
- if data[DIMENSION*DIMENSION*i + DIMENSION*j + k] != counter
300
- status += 1
301
- end
302
- end
303
- end
304
- end
305
- Test::test(status, "#{t.class}#fwrite and fread")
306
- File.delete(file)
307
-
308
- ### Trap
309
- i = j = k = 0
310
- t = Tensor.calloc(RANK, DIMENSION)
311
- begin
312
- t[DIMENSION+1, 0, 0] = 1.2
313
- rescue
314
- # if an exception occurred
315
- puts("PASS: #{t.class}#set traps 1st index above upper bound")
316
- end
317
- begin
318
- t[0, DIMENSION+1, 0] = 1.2
319
- rescue
320
- puts("PASS: #{t.class}#set traps 2nd index above upper bound")
321
- end
322
-
323
- begin
324
- t[0, 0, DIMENSION+1] = 1.2
325
- rescue
326
- puts("PASS: #{t.class}#set traps 3rd index above upper bound")
327
- end
328
-
329
- begin
330
- t[0, DIMENSION, 0] = 1.2
331
- rescue
332
- puts("PASS: #{t.class}#set traps 2nd index at upper bound")
333
- end
334
-
335
- begin
336
- t[0, i-1, 0] = 1.2
337
- rescue
338
- puts("PASS: #{t.class}#set traps 2nd index below lower bound")
339
- end
340
-
341
- begin
342
- x = t[DIMENSION+1, 0, 0]
343
- rescue
344
- puts("PASS: #{t.class}#get traps 1st index above upper bound")
345
- end
346
-
347
- begin
348
- x = t[0, DIMENSION+1, 0]
349
- rescue
350
- puts("PASS: #{t.class}#get traps 2nd index above upper bound")
351
- end
352
-
353
- begin
354
- x = t[0, 0, DIMENSION+1]
355
- rescue
356
- puts("PASS: #{t.class}#get traps 3rd index above upper bound")
357
- end
358
-
359
- begin
360
- x = t[0, DIMENSION, 0]
361
- rescue
362
- puts("PASS: #{t.class}#get traps 2nd index at upper bound")
363
- end
364
-
365
- begin
366
- x = t[0, i-1, 0]
367
- rescue
368
- puts("PASS: #{t.class}#get traps 2nd index below lower bound")
369
- end
370
-
371
- #####
372
- # Vector and Tensor, subtensors
373
- #v = GSL::Vector.new(0...125)
374
- v = GSL::Vector.indgen(125)
375
- t = v.to_tensor(3, 5)
376
- Test::test2(t.rank == RANK, "#{v.class}.to_tensor(#{RANK}, #{DIMENSION}) returns valid rank")
377
- Test::test2(t.dimension == DIMENSION, "#{v.class}.to_tensor(#{RANK}, #{DIMENSION}) returns valid dimension")
378
-
379
- m0_exp = Matrix[0...25, 5, 5]
380
- m1_exp = Matrix[25...50, 5, 5]
381
- m2_exp = Matrix[50...75, 5, 5]
382
- m3_exp = Matrix[75...100, 5, 5]
383
- m4_exp = Matrix[100...125, 5, 5]
384
-
385
- # Create tensors of rank 2
386
- t0 = t.subtensor(0)
387
- t1 = t[1]
388
- t2 = t.subtensor(2)
389
- t3 = t[3]
390
- t4 = t.subtensor(4)
391
-
392
- # 2-tensors can be compared directly with matrices
393
- Test::test2(t0 == m0_exp, "#{t.class}#subtensor(0) returns valid tensor")
394
- Test::test2(t1 == m1_exp, "#{t.class}#subtensor(1) returns valid tensor")
395
- Test::test2(t2 == m2_exp, "#{t.class}#subtensor(2) returns valid tensor")
396
- Test::test2(t3 == m3_exp, "#{t.class}#subtensor(3) returns valid tensor")
397
- Test::test2(t4 == m4_exp, "#{t.class}#subtensor(4) returns valid tensor")
398
-
399
- v0_exp = Vector[100...105]
400
- v1_exp = Vector[105...110]
401
- v2_exp = Vector[110...115]
402
- v3_exp = Vector[115...120]
403
- v4_exp = Vector[120...125]
404
-
405
- # Create tensors of rank1
406
- v0 = t[4, 0]
407
- v1 = t[4][1]
408
- v2 = t.subtensor(4, 2)
409
- v3 = t4[3]
410
- v4 = t4.subtensor(4)
411
-
412
- # 1-tensors can be compared directly with vectors
413
- Test::test2(v0 == v0_exp, "#{t.class}#subtensor(4,0) returns valid tensor")
414
- Test::test2(v1 == v1_exp, "#{t.class}#subtensor(4,1) returns valid tensor")
415
- Test::test2(v2 == v2_exp, "#{t.class}#subtensor(4,2) returns valid tensor")
416
- Test::test2(v3 == v3_exp, "#{t.class}#subtensor(4,3) returns valid tensor")
417
- Test::test2(v4 == v4_exp, "#{t.class}#subtensor(4,4) returns valid tensor")
418
-
419
-
@@ -1,101 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require("gsl")
4
- require("test/unit")
5
-
6
- class VectorComplexTest < Test::Unit::TestCase
7
- def test_vector_complex_get
8
- v = GSL::Vector::Complex.indgen(5)
9
- assert_equal(GSL::Vector::Complex[[3,0],[1,0],[2,0]], v.get([3, 1, 2]))
10
- end
11
-
12
- def test_vector_complex_addsub
13
- a = GSL::Vector::Complex[[-2, 5], [ 4, -1]]
14
- b = GSL::Vector::Complex[[10, 30], [20, 40]]
15
- c = GSL::Vector::Complex[[ 8, 35], [24, 39]]
16
- d = GSL::Vector::Complex[[12, 25], [16, 41]]
17
- assert_equal(c, a+b)
18
- assert_equal(d, b-a)
19
- end
20
-
21
- def test_vector_complex_collect
22
- v = GSL::Vector::Complex.indgen(5)
23
- u = GSL::Vector::Complex[[0,0], [1,0], [4,0], [9,0], [16,0]]
24
- w = v.collect { |val| val*val }
25
- assert_equal(u, w)
26
- end
27
-
28
- def test_vector_complex_subvector
29
- v = GSL::Vector::Complex.indgen(12)
30
-
31
- # args = []
32
- vv = v.subvector
33
- assert_not_equal(v.object_id, vv.object_id)
34
- assert_equal(v.subvector, v)
35
-
36
- # args = [Fixnum]
37
- vv = v.subvector(3)
38
- assert_equal([0, 0, 1, 0, 2, 0], vv.to_a)
39
- assert_nothing_raised("subvector(-1)") {v.subvector(-1)}
40
- vv = v.subvector(-1)
41
- assert_equal([11, 0], vv.to_a)
42
- vv = v.subvector(-2)
43
- assert_equal([10, 0, 11, 0], vv.to_a)
44
- assert_raise(RangeError) {v.subvector(-13)}
45
-
46
- # args = [Fixnum, Fixnum]
47
- vv = v.subvector(2, 3)
48
- assert_equal([2, 0, 3, 0, 4, 0], vv.to_a)
49
-
50
- vv = v.subvector(-4, 3)
51
- assert_equal([8, 0, 9, 0, 10, 0], vv.to_a)
52
- assert_nothing_raised("subvector(-4, -3)") {v.subvector(-4, -3)}
53
- vv = v.subvector(-4, -3)
54
- assert_equal([8, 0, 7, 0, 6, 0], vv.to_a)
55
- assert_raise(GSL::ERROR::EINVAL) {v.subvector(-11, -3)}
56
-
57
- # args = [Fixnum, Fixnum, Fixnum]
58
- vv = v.subvector(1, 3, 4)
59
- assert_equal([1, 0, 4, 0, 7, 0, 10, 0], vv.to_a)
60
-
61
- # args = [Range]
62
- tests = {
63
- # ( range ) => [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0]
64
- ( 1.. 3) => [ 1, 0, 2, 0, 3, 0 ],
65
- ( 1... 3) => [ 1, 0, 2, 0, ],
66
- ( 3.. 1) => [ 3, 0, 2, 0, 1, 0 ],
67
- ( 3... 1) => [ 3, 0, 2, 0 ],
68
- (-7.. 9) => [ 5, 0, 6, 0, 7, 0, 8, 0, 9, 0 ],
69
- (-7... 9) => [ 5, 0, 6, 0, 7, 0, 8, 0 ],
70
- ( 4.. -3) => [ 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0 ],
71
- ( 4...-3) => [ 4, 0, 5, 0, 6, 0, 7, 0, 8, 0 ],
72
- ( 2.. -2) => [ 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0 ],
73
- ( 2...-2) => [ 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0 ],
74
- (-2.. 2) => [ 10, 0, 9, 0, 8, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0 ],
75
- (-2... 2) => [ 10, 0, 9, 0, 8, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0 ],
76
- (-3.. -1) => [ 9, 0, 10, 0, 11, 0],
77
- (-3...-1) => [ 9, 0, 10, 0 ],
78
- (-1.. -3) => [ 11, 0, 10, 0, 9, 0],
79
- (-1...-3) => [ 11, 0, 10, 0 ],
80
- # Add more test cases here...
81
- }
82
- tests.each do |r, x|
83
- assert_nothing_raised("subvector(#{r})") {v.subvector(r)}
84
- assert_equal(x, v.subvector(r).to_a, "subvector(#{r})")
85
- end
86
-
87
- # args = [Range, Fixnum]
88
- tests = {
89
- # [( range ), s] => [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0]
90
- [( 1.. 6), 2] => [ 1, 0, 3, 0, 5, 0 ],
91
- [( 1... 6), 2] => [ 1, 0, 3, 0, 5, 0 ],
92
- [( 0.. 6), 3] => [0, 0, 3, 0, 6, 0 ],
93
- [( 0... 6), 3] => [0, 0, 3, 0 ],
94
- # Add more test cases here...
95
- }
96
- tests.each do |(r,s), x|
97
- assert_nothing_raised("subvector(#{r},#{s})") {v.subvector(r)}
98
- assert_equal(x, v.subvector(r,s).to_a, "subvector(#{r},#{s})")
99
- end
100
- end
101
- end