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
@@ -8,11 +8,11 @@
8
8
  This library is distributed in the hope that it will be useful, but
9
9
  WITHOUT ANY WARRANTY.
10
10
  */
11
- #include "rb_gsl.h"
11
+ #include "include/rb_gsl.h"
12
12
  #include <gsl/gsl_errno.h>
13
- #include "rb_gsl_array.h"
14
- #include "rb_gsl_common.h"
15
- #include "rb_gsl_function.h"
13
+ #include "include/rb_gsl_array.h"
14
+ #include "include/rb_gsl_common.h"
15
+ #include "include/rb_gsl_function.h"
16
16
 
17
17
  static VALUE eHandler;
18
18
  static VALUE cgsl_error[35];
@@ -20,21 +20,21 @@ static VALUE *pgsl_error;
20
20
 
21
21
  static void Init_rb_gsl_define_GSL_CONST(VALUE module);
22
22
  void rb_gsl_error_handler(const char *reason, const char *file,
23
- int line, int gsl_errno);
23
+ int line, int gsl_errno);
24
24
  static void rb_gsl_my_error_handler(const char *reason, const char *file,
25
- int line, int gsl_errno);
25
+ int line, int gsl_errno);
26
26
 
27
27
  void rb_gsl_error_handler(const char *reason, const char *file,
28
- int line, int gsl_errno)
28
+ int line, int gsl_errno)
29
29
  {
30
30
  const char *emessage = gsl_strerror(gsl_errno);
31
- rb_raise(pgsl_error[gsl_errno],
32
- "Ruby/GSL error code %d, %s (file %s, line %d), %s",
33
- gsl_errno, reason, file, line, emessage);
31
+ rb_raise(pgsl_error[gsl_errno],
32
+ "Ruby/GSL error code %d, %s (file %s, line %d), %s",
33
+ gsl_errno, reason, file, line, emessage);
34
34
  }
35
35
 
36
36
  static void rb_gsl_my_error_handler(const char *reason, const char *file,
37
- int line, int gsl_errno)
37
+ int line, int gsl_errno)
38
38
  {
39
39
  VALUE vreason, vfile;
40
40
  VALUE vline, verrno;
@@ -48,7 +48,7 @@ static void rb_gsl_my_error_handler(const char *reason, const char *file,
48
48
  static VALUE rb_gsl_set_error_handler(int argc, VALUE *argv, VALUE module)
49
49
  {
50
50
  if (rb_block_given_p()) {
51
- eHandler = RB_GSL_MAKE_PROC;
51
+ eHandler = rb_block_proc();
52
52
  gsl_set_error_handler(&rb_gsl_my_error_handler);
53
53
  return Qtrue;
54
54
  }
@@ -166,14 +166,14 @@ static void define_module_functions(VALUE module);
166
166
  static VALUE rb_gsl_strerror(VALUE obj, VALUE errn);
167
167
  static void define_module_functions(VALUE module)
168
168
  {
169
- rb_define_module_function(module, "set_error_handler_off",
170
- rb_gsl_set_error_handler_off, 0);
171
- rb_define_module_function(module, "strerror",
172
- rb_gsl_strerror, 1);
169
+ rb_define_module_function(module, "set_error_handler_off",
170
+ rb_gsl_set_error_handler_off, 0);
171
+ rb_define_module_function(module, "strerror",
172
+ rb_gsl_strerror, 1);
173
173
  rb_define_module_function(module, "set_error_handler",
174
- rb_gsl_set_error_handler, -1);
174
+ rb_gsl_set_error_handler, -1);
175
175
  rb_define_module_function(module, "set_default_error_handler",
176
- rb_gsl_set_default_error_handler, 0);
176
+ rb_gsl_set_default_error_handler, 0);
177
177
  }
178
178
 
179
179
  static VALUE rb_gsl_strerror(VALUE obj, VALUE errn)
@@ -0,0 +1,118 @@
1
+ require 'mkmf'
2
+
3
+ def gsl_config_arg(arg)
4
+ yield arg_config("--with-gsl-#{arg}") {
5
+ sh = 'sh ' if RUBY_PLATFORM =~ /mingw/
6
+ IO.popen("#{sh}gsl-config --#{arg}") { |f| f.gets.chomp }
7
+ }, lambda { |val| puts "checking gsl #{arg}... #{val}"; val }
8
+ rescue => err
9
+ abort "*** ERROR: missing required library to compile this module: #{err}"
10
+ end
11
+
12
+ def gsl_def(const, value = nil)
13
+ value = "=#{value}" if value
14
+ $defs << "-D#{const}#{value}"
15
+ end
16
+
17
+ def gsl_have_header(library, header)
18
+ have_library(library) if have_header(header)
19
+ end
20
+
21
+ def gsl_have_library(func)
22
+ have_func(func) if have_library('gsl', func)
23
+ end
24
+
25
+ def gsl_dir_config(target, idir = nil, ldir = idir)
26
+ dir_config(target, idir || $sitearchdir, ldir || $sitearchdir)
27
+ end
28
+
29
+ def gsl_gem_config(target, dir = 'ext')
30
+ path = begin
31
+ require 'rubygems'
32
+
33
+ spec = Gem::Specification.find_by_path("#{target}.h")
34
+ File.join(spec.full_gem_path, dir) if spec
35
+ rescue LoadError
36
+ end
37
+
38
+ gsl_dir_config(target, path)
39
+
40
+ $LOCAL_LIBS += " -l:#{target}.so" if arg_config("--force-link-#{target}") ||
41
+ $CFLAGS.include?('-Wl,--no-undefined') ||
42
+ $LDFLAGS.include?('-Wl,--no-undefined')
43
+ end
44
+
45
+ $CFLAGS += ' -Wall -Iinclude'
46
+
47
+ gsl_config_arg(:version) { |version, check|
48
+ gsl_def(:GSL_VERSION, check[version])
49
+
50
+ ver = version.split('.').map { |x| x.to_i }
51
+
52
+ later = lambda { |other|
53
+ ary = other.split('.').map { |x| x.to_i }
54
+
55
+ gte = ver[0] > ary[0] ? true :
56
+ ver[0] < ary[0] ? false :
57
+ ver[1] > ary[1] ? true :
58
+ ver[1] < ary[1] ? false :
59
+ ver.size < ary.size ? false :
60
+ ver.size == 3 && ary.size == 3 ? ver[2] >= ary[2] : true
61
+
62
+ ary.pop && ary[-1] += 1 if ary.last == 90
63
+
64
+ gte && gsl_def("GSL_#{ary.join('_')}_LATER")
65
+ }
66
+
67
+ raise 'Ruby/GSL requires gsl-1.15 or later.' unless later['1.15']
68
+
69
+ %w[1.15 1.16].each { |v| later[v] }
70
+ }
71
+
72
+ gsl_config_arg(:cflags) { |cflags, check|
73
+ $CFLAGS += ' ' + check[cflags]
74
+ }
75
+
76
+ gsl_config_arg(:libs) { |libs, check|
77
+ libs.tr!(File::PATH_SEPARATOR, ' ')
78
+
79
+ if enable_config('atlas')
80
+ dir_config('cblas')
81
+ dir_config('atlas')
82
+
83
+ if have_library('cblas') && have_library('atlas')
84
+ libs.gsub!('-lgslcblas', '-lcblas -latlas')
85
+ end
86
+ end
87
+
88
+ $LOCAL_LIBS += ' ' + check[libs]
89
+ }
90
+
91
+ have_func('round')
92
+
93
+ %w[alf qrngextra rngextra tensor].each { |library|
94
+ gsl_have_header(library, "#{library}/#{library}.h")
95
+ }
96
+
97
+ gsl_have_header('bundle_method', 'gsl/gsl_multimin_fsdf.h')
98
+ gsl_have_header('cqp', 'gsl/gsl_cqp.h')
99
+ gsl_have_header('jacobi', 'jacobi.h')
100
+ gsl_have_header('ndlinear', 'ndlinear/gsl_multifit_ndlinear.h')
101
+ gsl_have_header('ool', 'ool/ool_version.h')
102
+
103
+ gsl_have_library('gsl_eigen_francis')
104
+ gsl_have_library('gsl_poly_solve_quartic')
105
+
106
+ gsl_def(:HAVE_GNU_GRAPH) if find_executable('graph')
107
+
108
+ gsl_gem_config('narray', 'src')
109
+
110
+ have_header('narray.h')
111
+ have_library('narray') if RUBY_PLATFORM =~ /cygwin|mingw/
112
+
113
+ unless arg_config('--disable-tamu-anova')
114
+ gsl_dir_config('tamu_anova')
115
+ gsl_have_header('tamuanova', 'tamu_anova/tamu_anova.h')
116
+ end
117
+
118
+ create_makefile('gsl_native')
@@ -9,8 +9,7 @@
9
9
  WITHOUT ANY WARRANTY.
10
10
  */
11
11
 
12
- #include "rb_gsl_config.h"
13
- #include "rb_gsl_fft.h"
12
+ #include "include/rb_gsl_fft.h"
14
13
 
15
14
  VALUE mgsl_fft;
16
15
  VALUE cgsl_fft_wavetable;
@@ -26,24 +25,24 @@ static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space);
26
25
  static VALUE rb_gsl_fft_complex_wavetable_new(VALUE klass, VALUE n)
27
26
  {
28
27
  CHECK_FIXNUM(n);
29
- return Data_Wrap_Struct(cgsl_fft_complex_wavetable, 0,
30
- gsl_fft_complex_wavetable_free,
31
- gsl_fft_complex_wavetable_alloc(FIX2INT(n)));
28
+ return Data_Wrap_Struct(cgsl_fft_complex_wavetable, 0,
29
+ gsl_fft_complex_wavetable_free,
30
+ gsl_fft_complex_wavetable_alloc(FIX2INT(n)));
32
31
  }
33
32
 
34
33
  static VALUE rb_gsl_fft_real_wavetable_new(VALUE klass, VALUE n)
35
34
  {
36
35
  CHECK_FIXNUM(n);
37
36
  return Data_Wrap_Struct(klass, 0, gsl_fft_real_wavetable_free,
38
- gsl_fft_real_wavetable_alloc(FIX2INT(n)));
37
+ gsl_fft_real_wavetable_alloc(FIX2INT(n)));
39
38
  }
40
39
 
41
40
  static VALUE rb_gsl_fft_halfcomplex_wavetable_new(VALUE klass, VALUE n)
42
41
  {
43
42
  CHECK_FIXNUM(n);
44
43
  return Data_Wrap_Struct(klass, 0, gsl_fft_halfcomplex_wavetable_free,
45
- gsl_fft_halfcomplex_wavetable_alloc(FIX2INT(n)));
46
-
44
+ gsl_fft_halfcomplex_wavetable_alloc(FIX2INT(n)));
45
+
47
46
  }
48
47
 
49
48
  static void GSL_FFT_Wavetable_free(GSL_FFT_Wavetable *table)
@@ -55,21 +54,21 @@ static VALUE rb_gsl_fft_complex_workspace_new(VALUE klass, VALUE n)
55
54
  {
56
55
  CHECK_FIXNUM(n);
57
56
  return Data_Wrap_Struct(klass, 0, gsl_fft_complex_workspace_free,
58
- gsl_fft_complex_workspace_alloc(FIX2INT(n)));
57
+ gsl_fft_complex_workspace_alloc(FIX2INT(n)));
59
58
  }
60
59
 
61
60
  static VALUE rb_gsl_fft_real_workspace_new(VALUE klass, VALUE n)
62
61
  {
63
62
  CHECK_FIXNUM(n);
64
63
  return Data_Wrap_Struct(klass, 0, gsl_fft_real_workspace_free,
65
- gsl_fft_real_workspace_alloc(FIX2INT(n)));
64
+ gsl_fft_real_workspace_alloc(FIX2INT(n)));
66
65
  }
67
66
 
68
67
  static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space)
69
68
  {
70
69
  gsl_fft_complex_workspace_free((gsl_fft_complex_workspace *) space);
71
70
  }
72
-
71
+
73
72
  // The FFT methods used to allow passing stride and n values as optional
74
73
  // parameters to control which elements get transformed. This created problems
75
74
  // for Views which can have their own stride, so support for stride and n
@@ -80,8 +79,8 @@ static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space)
80
79
  // refactoring, it has been left in place for the time being. Eventually it
81
80
  // can be refactored away completely.
82
81
  static VALUE get_complex_stride_n(VALUE obj,
83
- gsl_vector_complex **vin,
84
- gsl_complex_packed_array *data, size_t *stride, size_t *n)
82
+ gsl_vector_complex **vin,
83
+ gsl_complex_packed_array *data, size_t *stride, size_t *n)
85
84
  {
86
85
  gsl_vector_complex *v = NULL;
87
86
 
@@ -97,8 +96,8 @@ static VALUE get_complex_stride_n(VALUE obj,
97
96
  }
98
97
 
99
98
  static VALUE rb_fft_complex_radix2(VALUE obj,
100
- int (*trans)(gsl_complex_packed_array,
101
- size_t, size_t), int flag)
99
+ int (*trans)(gsl_complex_packed_array,
100
+ size_t, size_t), int flag)
102
101
  {
103
102
  size_t stride, n;
104
103
  gsl_complex_packed_array data;
@@ -107,7 +106,7 @@ static VALUE rb_fft_complex_radix2(VALUE obj,
107
106
  ary = get_complex_stride_n(obj, &vin, &data, &stride, &n);
108
107
  if (flag == RB_GSL_FFT_COPY) {
109
108
  vout = gsl_vector_complex_alloc(n);
110
- gsl_vector_complex_memcpy(vout, vin);
109
+ gsl_vector_complex_memcpy(vout, vin);
111
110
  (*trans)(vout->data, vout->stride /*1*/, vout->size /*n*/);
112
111
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
113
112
  } else { /* in-place */
@@ -119,13 +118,13 @@ static VALUE rb_fft_complex_radix2(VALUE obj,
119
118
  static VALUE rb_gsl_fft_complex_radix2_forward(VALUE obj)
120
119
  {
121
120
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_forward,
122
- RB_GSL_FFT_COPY);
121
+ RB_GSL_FFT_COPY);
123
122
  }
124
123
 
125
124
  static VALUE rb_gsl_fft_complex_radix2_forward2(VALUE obj)
126
125
  {
127
126
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_forward,
128
- RB_GSL_FFT_INPLACE);
127
+ RB_GSL_FFT_INPLACE);
129
128
  }
130
129
 
131
130
  static VALUE rb_gsl_fft_complex_radix2_transform(VALUE obj, VALUE val_sign)
@@ -137,7 +136,7 @@ static VALUE rb_gsl_fft_complex_radix2_transform(VALUE obj, VALUE val_sign)
137
136
  sign = NUM2INT(val_sign);
138
137
  get_complex_stride_n(obj, &vin, &data, &stride, &n);
139
138
  vout = gsl_vector_complex_alloc(n);
140
- gsl_vector_complex_memcpy(vout, vin);
139
+ gsl_vector_complex_memcpy(vout, vin);
141
140
  gsl_fft_complex_radix2_transform(vout->data, vout->stride /*1*/, vout->size /*n*/, sign);
142
141
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
143
142
  }
@@ -157,40 +156,40 @@ static VALUE rb_gsl_fft_complex_radix2_transform2(VALUE obj, VALUE val_sign)
157
156
  static VALUE rb_gsl_fft_complex_radix2_backward(VALUE obj)
158
157
  {
159
158
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_backward,
160
- RB_GSL_FFT_COPY);
159
+ RB_GSL_FFT_COPY);
161
160
  }
162
161
 
163
162
  static VALUE rb_gsl_fft_complex_radix2_inverse(VALUE obj)
164
163
  {
165
164
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_inverse,
166
- RB_GSL_FFT_COPY);
165
+ RB_GSL_FFT_COPY);
167
166
  }
168
167
 
169
168
  static VALUE rb_gsl_fft_complex_radix2_dif_forward(VALUE obj)
170
169
  {
171
- return rb_fft_complex_radix2(obj,
172
- gsl_fft_complex_radix2_dif_forward,
173
- RB_GSL_FFT_COPY);
170
+ return rb_fft_complex_radix2(obj,
171
+ gsl_fft_complex_radix2_dif_forward,
172
+ RB_GSL_FFT_COPY);
174
173
  }
175
174
 
176
175
  static VALUE rb_gsl_fft_complex_radix2_backward2(VALUE obj)
177
176
  {
178
177
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_backward,
179
- RB_GSL_FFT_INPLACE);
178
+ RB_GSL_FFT_INPLACE);
180
179
  }
181
180
 
182
181
  static VALUE rb_gsl_fft_complex_radix2_inverse2(VALUE obj)
183
182
  {
184
183
  return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_inverse,
185
- RB_GSL_FFT_INPLACE);
184
+ RB_GSL_FFT_INPLACE);
186
185
  }
187
186
 
188
187
 
189
188
  static VALUE rb_gsl_fft_complex_radix2_dif_forward2(VALUE obj)
190
189
  {
191
- return rb_fft_complex_radix2(obj,
192
- gsl_fft_complex_radix2_dif_forward,
193
- RB_GSL_FFT_INPLACE);
190
+ return rb_fft_complex_radix2(obj,
191
+ gsl_fft_complex_radix2_dif_forward,
192
+ RB_GSL_FFT_INPLACE);
194
193
  }
195
194
 
196
195
  static VALUE rb_gsl_fft_complex_radix2_dif_transform(VALUE obj, VALUE val_sign)
@@ -202,7 +201,7 @@ static VALUE rb_gsl_fft_complex_radix2_dif_transform(VALUE obj, VALUE val_sign)
202
201
  sign = NUM2INT(val_sign);
203
202
  get_complex_stride_n(obj, &vin, &data, &stride, &n);
204
203
  vout = gsl_vector_complex_alloc(n);
205
- gsl_vector_complex_memcpy(vout, vin);
204
+ gsl_vector_complex_memcpy(vout, vin);
206
205
  gsl_fft_complex_radix2_dif_transform(vout->data, vout->stride /*1*/, vout->size /*n*/, sign);
207
206
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
208
207
  }
@@ -222,28 +221,28 @@ static VALUE rb_gsl_fft_complex_radix2_dif_transform2(VALUE obj, VALUE val_sign)
222
221
 
223
222
  static VALUE rb_gsl_fft_complex_radix2_dif_backward(VALUE obj)
224
223
  {
225
- return rb_fft_complex_radix2(obj,
226
- gsl_fft_complex_radix2_dif_backward,
227
- RB_GSL_FFT_COPY);
224
+ return rb_fft_complex_radix2(obj,
225
+ gsl_fft_complex_radix2_dif_backward,
226
+ RB_GSL_FFT_COPY);
228
227
  }
229
228
  static VALUE rb_gsl_fft_complex_radix2_dif_inverse(VALUE obj)
230
229
  {
231
- return rb_fft_complex_radix2(obj,
232
- gsl_fft_complex_radix2_dif_inverse,
233
- RB_GSL_FFT_COPY);
230
+ return rb_fft_complex_radix2(obj,
231
+ gsl_fft_complex_radix2_dif_inverse,
232
+ RB_GSL_FFT_COPY);
234
233
  }
235
234
 
236
235
  static VALUE rb_gsl_fft_complex_radix2_dif_backward2(VALUE obj)
237
236
  {
238
- return rb_fft_complex_radix2(obj,
239
- gsl_fft_complex_radix2_dif_backward,
240
- RB_GSL_FFT_INPLACE);
237
+ return rb_fft_complex_radix2(obj,
238
+ gsl_fft_complex_radix2_dif_backward,
239
+ RB_GSL_FFT_INPLACE);
241
240
  }
242
241
  static VALUE rb_gsl_fft_complex_radix2_dif_inverse2(VALUE obj)
243
242
  {
244
- return rb_fft_complex_radix2(obj,
245
- gsl_fft_complex_radix2_dif_inverse,
246
- RB_GSL_FFT_INPLACE);
243
+ return rb_fft_complex_radix2(obj,
244
+ gsl_fft_complex_radix2_dif_inverse,
245
+ RB_GSL_FFT_INPLACE);
247
246
  }
248
247
 
249
248
  static VALUE rb_GSL_FFT_Wavetable_n(VALUE obj)
@@ -279,16 +278,16 @@ enum {
279
278
  } FFTComplexStructAllocFlag;
280
279
 
281
280
  static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
282
- GSL_FFT_Workspace *space);
281
+ GSL_FFT_Workspace *space);
283
282
 
284
283
  // Parse argc, argv. obj must be GSL::Vector::Complex.
285
284
  // This can be simplified at some point.
286
285
  // See comments preceding get_complex_stride_n()
287
286
  static int gsl_fft_get_argv_complex(int argc, VALUE *argv, VALUE obj,
288
- gsl_vector_complex ** vin,
289
- gsl_complex_packed_array *data, size_t *stride,
290
- size_t *n, gsl_fft_complex_wavetable **table,
291
- gsl_fft_complex_workspace **space)
287
+ gsl_vector_complex ** vin,
288
+ gsl_complex_packed_array *data, size_t *stride,
289
+ size_t *n, gsl_fft_complex_wavetable **table,
290
+ gsl_fft_complex_workspace **space)
292
291
  {
293
292
  int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
294
293
  int flagw = 0;
@@ -337,9 +336,9 @@ static int gsl_fft_get_argv_complex(int argc, VALUE *argv, VALUE obj,
337
336
 
338
337
  // Parse argc, argv. obj must be GSL::Vector of real data
339
338
  static int gsl_fft_get_argv_real(int argc, VALUE *argv, VALUE obj,
340
- double **ptr, size_t *stride,
341
- size_t *n, gsl_fft_real_wavetable **table,
342
- gsl_fft_real_workspace **space, int *naflag)
339
+ double **ptr, size_t *stride,
340
+ size_t *n, gsl_fft_real_wavetable **table,
341
+ gsl_fft_real_workspace **space, int *naflag)
343
342
  {
344
343
  int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
345
344
  int flagw = 0;
@@ -388,9 +387,9 @@ static int gsl_fft_get_argv_real(int argc, VALUE *argv, VALUE obj,
388
387
 
389
388
  // Parse argc, argv. obj must be GSL::Vector of halfcomplex data
390
389
  static int gsl_fft_get_argv_halfcomplex(int argc, VALUE *argv, VALUE obj,
391
- double **ptr, size_t *stride,
392
- size_t *n, gsl_fft_halfcomplex_wavetable **table,
393
- gsl_fft_real_workspace **space, int *naflag)
390
+ double **ptr, size_t *stride,
391
+ size_t *n, gsl_fft_halfcomplex_wavetable **table,
392
+ gsl_fft_real_workspace **space, int *naflag)
394
393
  {
395
394
  int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
396
395
  int flagw = 0;
@@ -437,7 +436,7 @@ static int gsl_fft_get_argv_halfcomplex(int argc, VALUE *argv, VALUE obj,
437
436
  }
438
437
 
439
438
  static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
440
- GSL_FFT_Workspace *space)
439
+ GSL_FFT_Workspace *space)
441
440
  {
442
441
  switch (flag) {
443
442
  case ALLOC_TABLE:
@@ -457,11 +456,11 @@ static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
457
456
  }
458
457
 
459
458
  static VALUE rb_fft_complex_trans(int argc, VALUE *argv, VALUE obj,
460
- int (*transform)(gsl_complex_packed_array,
461
- size_t, size_t,
462
- const gsl_fft_complex_wavetable *,
463
- gsl_fft_complex_workspace *),
464
- int sss)
459
+ int (*transform)(gsl_complex_packed_array,
460
+ size_t, size_t,
461
+ const gsl_fft_complex_wavetable *,
462
+ gsl_fft_complex_workspace *),
463
+ int sss)
465
464
  {
466
465
  int flag = 0;
467
466
  // local variable "status" was defined and set, but never used
@@ -488,13 +487,13 @@ static VALUE rb_fft_complex_trans(int argc, VALUE *argv, VALUE obj,
488
487
  static VALUE rb_gsl_fft_complex_forward(int argc, VALUE *argv, VALUE obj)
489
488
  {
490
489
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_forward,
491
- RB_GSL_FFT_COPY);
490
+ RB_GSL_FFT_COPY);
492
491
  }
493
492
 
494
493
  static VALUE rb_gsl_fft_complex_forward2(int argc, VALUE *argv, VALUE obj)
495
494
  {
496
495
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_forward,
497
- RB_GSL_FFT_INPLACE);
496
+ RB_GSL_FFT_INPLACE);
498
497
  }
499
498
 
500
499
  static VALUE rb_gsl_fft_complex_transform(int argc, VALUE *argv, VALUE obj)
@@ -540,25 +539,25 @@ static VALUE rb_gsl_fft_complex_transform2(int argc, VALUE *argv, VALUE obj)
540
539
  static VALUE rb_gsl_fft_complex_backward(int argc, VALUE *argv, VALUE obj)
541
540
  {
542
541
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_backward,
543
- RB_GSL_FFT_COPY);
542
+ RB_GSL_FFT_COPY);
544
543
  }
545
544
 
546
545
  static VALUE rb_gsl_fft_complex_backward2(int argc, VALUE *argv, VALUE obj)
547
546
  {
548
547
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_backward,
549
- RB_GSL_FFT_INPLACE);
548
+ RB_GSL_FFT_INPLACE);
550
549
  }
551
550
 
552
551
  static VALUE rb_gsl_fft_complex_inverse(int argc, VALUE *argv, VALUE obj)
553
552
  {
554
553
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_inverse,
555
- RB_GSL_FFT_COPY);
554
+ RB_GSL_FFT_COPY);
556
555
  }
557
556
 
558
557
  static VALUE rb_gsl_fft_complex_inverse2(int argc, VALUE *argv, VALUE obj)
559
558
  {
560
559
  return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_inverse,
561
- RB_GSL_FFT_INPLACE);
560
+ RB_GSL_FFT_INPLACE);
562
561
  }
563
562
 
564
563
  // The FFT methods used to allow passing stride and n values as optional
@@ -573,7 +572,7 @@ static VALUE rb_gsl_fft_complex_inverse2(int argc, VALUE *argv, VALUE obj)
573
572
  //
574
573
  // obj must be GSL::Vector of real or halfcomplex data
575
574
  static VALUE get_ptr_stride_n(VALUE obj,
576
- double **ptr, size_t *stride, size_t *n, int *flag)
575
+ double **ptr, size_t *stride, size_t *n, int *flag)
577
576
  {
578
577
  *flag = 0;
579
578
  *ptr = get_ptr_double3(obj, n, stride, flag);
@@ -581,17 +580,14 @@ static VALUE get_ptr_stride_n(VALUE obj,
581
580
  }
582
581
 
583
582
  static VALUE rb_fft_radix2(VALUE obj,
584
- int (*trans)(double [], size_t, size_t),
585
- int sss)
583
+ int (*trans)(double [], size_t, size_t),
584
+ int sss)
586
585
  {
587
586
  size_t stride, n;
588
587
  gsl_vector *vnew;
589
588
  gsl_vector_view vv;
590
589
  double *ptr1, *ptr2;
591
590
  int flag;
592
- #ifdef HAVE_NARRAY_H
593
- int shape[1];
594
- #endif
595
591
  VALUE ary;
596
592
  get_ptr_stride_n(obj, &ptr1, &stride, &n, &flag);
597
593
  if (flag == 0) {
@@ -611,6 +607,7 @@ static VALUE rb_fft_radix2(VALUE obj,
611
607
  #ifdef HAVE_NARRAY_H
612
608
  } else if (flag == 1) {
613
609
  if (sss == RB_GSL_FFT_COPY) {
610
+ int shape[1];
614
611
  shape[0] = n;
615
612
  ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
616
613
  ptr2 = NA_PTR_TYPE(ary, double*);
@@ -631,46 +628,46 @@ static VALUE rb_fft_radix2(VALUE obj,
631
628
  static VALUE rb_gsl_fft_real_radix2_transform(VALUE obj)
632
629
  {
633
630
  return rb_fft_radix2(obj, gsl_fft_real_radix2_transform,
634
- RB_GSL_FFT_COPY);
631
+ RB_GSL_FFT_COPY);
635
632
  }
636
633
 
637
634
  static VALUE rb_gsl_fft_real_radix2_transform2(VALUE obj)
638
635
  {
639
636
  return rb_fft_radix2(obj, gsl_fft_real_radix2_transform,
640
- RB_GSL_FFT_INPLACE);
637
+ RB_GSL_FFT_INPLACE);
641
638
  }
642
639
 
643
640
  static VALUE rb_gsl_fft_halfcomplex_radix2_inverse(VALUE obj)
644
641
  {
645
642
  return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_inverse,
646
- RB_GSL_FFT_COPY);
643
+ RB_GSL_FFT_COPY);
647
644
  }
648
645
 
649
646
  static VALUE rb_gsl_fft_halfcomplex_radix2_inverse2(VALUE obj)
650
647
  {
651
648
  return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_inverse,
652
- RB_GSL_FFT_INPLACE);
649
+ RB_GSL_FFT_INPLACE);
653
650
  }
654
651
 
655
652
  static VALUE rb_gsl_fft_halfcomplex_radix2_backward(VALUE obj)
656
653
  {
657
654
  return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_backward,
658
- RB_GSL_FFT_COPY);
655
+ RB_GSL_FFT_COPY);
659
656
  }
660
657
 
661
658
  static VALUE rb_gsl_fft_halfcomplex_radix2_backward2(VALUE obj)
662
659
  {
663
660
  return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_backward,
664
- RB_GSL_FFT_INPLACE);
661
+ RB_GSL_FFT_INPLACE);
665
662
  }
666
663
 
667
664
  /*****/
668
665
 
669
666
  static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
670
- int (*trans)(double [], size_t, size_t,
671
- const gsl_fft_real_wavetable *,
672
- gsl_fft_real_workspace *),
673
- int sss)
667
+ int (*trans)(double [], size_t, size_t,
668
+ const gsl_fft_real_wavetable *,
669
+ gsl_fft_real_workspace *),
670
+ int sss)
674
671
  {
675
672
  int flag = 0, naflag = 0;
676
673
  // local variable "status" was defined and set, but never used
@@ -679,9 +676,6 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
679
676
  gsl_vector *vnew;
680
677
  gsl_vector_view vv;
681
678
  double *ptr1, *ptr2;
682
- #ifdef HAVE_NARRAY_H
683
- int shape[1];
684
- #endif
685
679
  gsl_fft_real_wavetable *table = NULL;
686
680
  gsl_fft_real_workspace *space = NULL;
687
681
  VALUE ary;
@@ -703,6 +697,7 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
703
697
  #ifdef HAVE_NARRAY_H
704
698
  } else if (naflag == 1) {
705
699
  if (sss == RB_GSL_FFT_COPY) {
700
+ int shape[1];
706
701
  shape[0] = n;
707
702
  ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
708
703
  ptr2 = NA_PTR_TYPE(ary, double*);
@@ -724,19 +719,19 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
724
719
  static VALUE rb_gsl_fft_real_transform(int argc, VALUE *argv, VALUE obj)
725
720
  {
726
721
  return rb_fft_real_trans(argc, argv, obj, gsl_fft_real_transform,
727
- RB_GSL_FFT_COPY);
722
+ RB_GSL_FFT_COPY);
728
723
  }
729
724
 
730
725
  static VALUE rb_gsl_fft_real_transform2(int argc, VALUE *argv, VALUE obj)
731
726
  {
732
727
  return rb_fft_real_trans(argc, argv, obj, gsl_fft_real_transform,
733
- RB_GSL_FFT_INPLACE);
728
+ RB_GSL_FFT_INPLACE);
734
729
  }
735
730
 
736
731
  static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
737
- int (*trans)(double [], size_t, size_t,
738
- const gsl_fft_halfcomplex_wavetable *, gsl_fft_real_workspace *),
739
- int sss)
732
+ int (*trans)(double [], size_t, size_t,
733
+ const gsl_fft_halfcomplex_wavetable *, gsl_fft_real_workspace *),
734
+ int sss)
740
735
  {
741
736
  int flag = 0, naflag = 0;
742
737
  // local variable "status" was defined and set, but never used
@@ -745,14 +740,11 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
745
740
  gsl_vector *vnew;
746
741
  gsl_vector_view vv;
747
742
  double *ptr1, *ptr2;
748
- #ifdef HAVE_NARRAY_H
749
- int shape[1];
750
- #endif
751
743
  gsl_fft_halfcomplex_wavetable *table = NULL;
752
744
  gsl_fft_real_workspace *space = NULL;
753
745
  VALUE ary;
754
- flag = gsl_fft_get_argv_halfcomplex(argc, argv, obj, &ptr1, &stride, &n,
755
- &table, &space, &naflag);
746
+ flag = gsl_fft_get_argv_halfcomplex(argc, argv, obj, &ptr1, &stride, &n,
747
+ &table, &space, &naflag);
756
748
  if (naflag == 0) {
757
749
  if (sss == RB_GSL_FFT_COPY) {
758
750
  vnew = gsl_vector_alloc(n);
@@ -770,6 +762,7 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
770
762
  #ifdef HAVE_NARRAY_H
771
763
  } else if (naflag == 1) {
772
764
  if (sss == RB_GSL_FFT_COPY) {
765
+ int shape[1];
773
766
  shape[0] = n;
774
767
  ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
775
768
  ptr2 = NA_PTR_TYPE(ary, double*);
@@ -790,44 +783,44 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
790
783
 
791
784
  static VALUE rb_gsl_fft_halfcomplex_transform(int argc, VALUE *argv, VALUE obj)
792
785
  {
793
- return rb_fft_halfcomplex_trans(argc, argv, obj,
794
- gsl_fft_halfcomplex_transform,
795
- RB_GSL_FFT_COPY);
786
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
787
+ gsl_fft_halfcomplex_transform,
788
+ RB_GSL_FFT_COPY);
796
789
  }
797
790
 
798
791
  static VALUE rb_gsl_fft_halfcomplex_transform2(int argc, VALUE *argv, VALUE obj)
799
792
  {
800
- return rb_fft_halfcomplex_trans(argc, argv, obj,
801
- gsl_fft_halfcomplex_transform,
802
- RB_GSL_FFT_INPLACE);
793
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
794
+ gsl_fft_halfcomplex_transform,
795
+ RB_GSL_FFT_INPLACE);
803
796
  }
804
797
 
805
798
  static VALUE rb_gsl_fft_halfcomplex_backward(int argc, VALUE *argv, VALUE obj)
806
799
  {
807
- return rb_fft_halfcomplex_trans(argc, argv, obj,
808
- gsl_fft_halfcomplex_backward,
809
- RB_GSL_FFT_COPY);
800
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
801
+ gsl_fft_halfcomplex_backward,
802
+ RB_GSL_FFT_COPY);
810
803
  }
811
804
 
812
805
  static VALUE rb_gsl_fft_halfcomplex_backward2(int argc, VALUE *argv, VALUE obj)
813
806
  {
814
- return rb_fft_halfcomplex_trans(argc, argv, obj,
815
- gsl_fft_halfcomplex_backward,
816
- RB_GSL_FFT_INPLACE);
807
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
808
+ gsl_fft_halfcomplex_backward,
809
+ RB_GSL_FFT_INPLACE);
817
810
  }
818
811
 
819
812
  static VALUE rb_gsl_fft_halfcomplex_inverse(int argc, VALUE *argv, VALUE obj)
820
813
  {
821
- return rb_fft_halfcomplex_trans(argc, argv, obj,
822
- gsl_fft_halfcomplex_inverse,
823
- RB_GSL_FFT_COPY);
814
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
815
+ gsl_fft_halfcomplex_inverse,
816
+ RB_GSL_FFT_COPY);
824
817
  }
825
818
 
826
819
  static VALUE rb_gsl_fft_halfcomplex_inverse2(int argc, VALUE *argv, VALUE obj)
827
820
  {
828
- return rb_fft_halfcomplex_trans(argc, argv, obj,
829
- gsl_fft_halfcomplex_inverse,
830
- RB_GSL_FFT_INPLACE);
821
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
822
+ gsl_fft_halfcomplex_inverse,
823
+ RB_GSL_FFT_INPLACE);
831
824
  }
832
825
 
833
826
  static VALUE rb_gsl_fft_real_unpack(VALUE obj)
@@ -868,7 +861,7 @@ static VALUE rb_gsl_fft_halfcomplex_to_nrc(VALUE obj)
868
861
  vnew = gsl_vector_alloc(v->size);
869
862
  gsl_vector_set(vnew, 0, gsl_vector_get(v, 0)); /* DC */
870
863
  gsl_vector_set(vnew, 1, gsl_vector_get(v, v->size/2)); /* Nyquist freq */
871
- for (i = 2, k = 1; i < vnew->size; i+=2, k++) {
864
+ for (i = 2, k = 1; i < vnew->size; i += 2, k++) {
872
865
  gsl_vector_set(vnew, i, gsl_vector_get(v, k));
873
866
  gsl_vector_set(vnew, i+1, -gsl_vector_get(v, v->size-k));
874
867
  }
@@ -887,12 +880,12 @@ static VALUE rb_gsl_fft_halfcomplex_amp_phase(VALUE obj)
887
880
  amp = gsl_vector_alloc(v->size/2);
888
881
  phase = gsl_vector_alloc(v->size/2);
889
882
  gsl_vector_set(amp, 0, gsl_vector_get(v, 0));
890
- gsl_vector_set(phase, 0, 0);
883
+ gsl_vector_set(phase, 0, 0);
891
884
  gsl_vector_set(amp, amp->size-1, gsl_vector_get(v, v->size-1));
892
- gsl_vector_set(phase, phase->size-1, 0);
893
- for (i = 1; i < v->size-1; i+=2) {
885
+ gsl_vector_set(phase, phase->size-1, 0);
886
+ for (i = 1; i < v->size-1; i += 2) {
894
887
  re = gsl_vector_get(v, i);
895
- im = gsl_vector_get(v, i+1);
888
+ im = gsl_vector_get(v, i+1);
896
889
  gsl_vector_set(amp, i/2+1, sqrt(re*re + im*im));
897
890
  gsl_vector_set(phase, i/2+1, atan2(im, re));
898
891
  }
@@ -907,46 +900,46 @@ void Init_gsl_fft(VALUE module)
907
900
 
908
901
  /*****/
909
902
 
910
- rb_define_const(mgsl_fft, "Forward", INT2FIX(forward));
911
- rb_define_const(mgsl_fft, "FORWARD", INT2FIX(forward));
912
- rb_define_const(mgsl_fft, "Backward", INT2FIX(backward));
913
- rb_define_const(mgsl_fft, "BACKWARD", INT2FIX(backward));
903
+ rb_define_const(mgsl_fft, "Forward", INT2FIX(gsl_fft_forward));
904
+ rb_define_const(mgsl_fft, "FORWARD", INT2FIX(gsl_fft_forward));
905
+ rb_define_const(mgsl_fft, "Backward", INT2FIX(gsl_fft_backward));
906
+ rb_define_const(mgsl_fft, "BACKWARD", INT2FIX(gsl_fft_backward));
914
907
 
915
908
  /* Transforms for complex vectors */
916
- rb_define_method(cgsl_vector_complex, "radix2_forward",
917
- rb_gsl_fft_complex_radix2_forward, 0);
918
- rb_define_method(cgsl_vector_complex, "radix2_transform",
919
- rb_gsl_fft_complex_radix2_transform, 1);
920
- rb_define_method(cgsl_vector_complex, "radix2_backward",
921
- rb_gsl_fft_complex_radix2_backward, 0);
922
- rb_define_method(cgsl_vector_complex, "radix2_inverse",
923
- rb_gsl_fft_complex_radix2_inverse, 0);
924
- rb_define_method(cgsl_vector_complex, "radix2_dif_forward",
925
- rb_gsl_fft_complex_radix2_dif_forward, 0);
926
- rb_define_method(cgsl_vector_complex, "radix2_dif_transform",
927
- rb_gsl_fft_complex_radix2_dif_transform, 1);
928
- rb_define_method(cgsl_vector_complex, "radix2_dif_backward",
929
- rb_gsl_fft_complex_radix2_dif_backward, 0);
930
- rb_define_method(cgsl_vector_complex, "radix2_dif_inverse",
931
- rb_gsl_fft_complex_radix2_dif_inverse, 0);
909
+ rb_define_method(cgsl_vector_complex, "radix2_forward",
910
+ rb_gsl_fft_complex_radix2_forward, 0);
911
+ rb_define_method(cgsl_vector_complex, "radix2_transform",
912
+ rb_gsl_fft_complex_radix2_transform, 1);
913
+ rb_define_method(cgsl_vector_complex, "radix2_backward",
914
+ rb_gsl_fft_complex_radix2_backward, 0);
915
+ rb_define_method(cgsl_vector_complex, "radix2_inverse",
916
+ rb_gsl_fft_complex_radix2_inverse, 0);
917
+ rb_define_method(cgsl_vector_complex, "radix2_dif_forward",
918
+ rb_gsl_fft_complex_radix2_dif_forward, 0);
919
+ rb_define_method(cgsl_vector_complex, "radix2_dif_transform",
920
+ rb_gsl_fft_complex_radix2_dif_transform, 1);
921
+ rb_define_method(cgsl_vector_complex, "radix2_dif_backward",
922
+ rb_gsl_fft_complex_radix2_dif_backward, 0);
923
+ rb_define_method(cgsl_vector_complex, "radix2_dif_inverse",
924
+ rb_gsl_fft_complex_radix2_dif_inverse, 0);
932
925
 
933
926
  /* In-place radix-2 transforms for complex vectors */
934
- rb_define_method(cgsl_vector_complex, "radix2_forward!",
935
- rb_gsl_fft_complex_radix2_forward2, 0);
927
+ rb_define_method(cgsl_vector_complex, "radix2_forward!",
928
+ rb_gsl_fft_complex_radix2_forward2, 0);
936
929
  rb_define_method(cgsl_vector_complex, "radix2_transform!",
937
- rb_gsl_fft_complex_radix2_transform2, 1);
938
- rb_define_method(cgsl_vector_complex, "radix2_backward!",
939
- rb_gsl_fft_complex_radix2_backward2, 0);
940
- rb_define_method(cgsl_vector_complex, "radix2_inverse!",
941
- rb_gsl_fft_complex_radix2_inverse2, 0);
942
- rb_define_method(cgsl_vector_complex, "radix2_dif_forward!",
943
- rb_gsl_fft_complex_radix2_dif_forward2, 0);
930
+ rb_gsl_fft_complex_radix2_transform2, 1);
931
+ rb_define_method(cgsl_vector_complex, "radix2_backward!",
932
+ rb_gsl_fft_complex_radix2_backward2, 0);
933
+ rb_define_method(cgsl_vector_complex, "radix2_inverse!",
934
+ rb_gsl_fft_complex_radix2_inverse2, 0);
935
+ rb_define_method(cgsl_vector_complex, "radix2_dif_forward!",
936
+ rb_gsl_fft_complex_radix2_dif_forward2, 0);
944
937
  rb_define_method(cgsl_vector_complex, "radix2_dif_transform!",
945
- rb_gsl_fft_complex_radix2_dif_transform2, 1);
946
- rb_define_method(cgsl_vector_complex, "radix2_dif_backward!",
947
- rb_gsl_fft_complex_radix2_dif_backward2, 0);
948
- rb_define_method(cgsl_vector_complex, "radix2_dif_inverse!",
949
- rb_gsl_fft_complex_radix2_dif_inverse2, 0);
938
+ rb_gsl_fft_complex_radix2_dif_transform2, 1);
939
+ rb_define_method(cgsl_vector_complex, "radix2_dif_backward!",
940
+ rb_gsl_fft_complex_radix2_dif_backward2, 0);
941
+ rb_define_method(cgsl_vector_complex, "radix2_dif_inverse!",
942
+ rb_gsl_fft_complex_radix2_dif_inverse2, 0);
950
943
 
951
944
  // class GSL::FFT::Wavetable < GSL::Object
952
945
  //
@@ -958,23 +951,23 @@ void Init_gsl_fft(VALUE module)
958
951
  // No alloc
959
952
  // TODO Make GSL::FFT::Wavetable#initialize private?
960
953
  rb_define_method(cgsl_fft_wavetable, "n",
961
- rb_GSL_FFT_Wavetable_n, 0);
954
+ rb_GSL_FFT_Wavetable_n, 0);
962
955
  rb_define_method(cgsl_fft_wavetable, "nf",
963
- rb_GSL_FFT_Wavetable_nf, 0);
956
+ rb_GSL_FFT_Wavetable_nf, 0);
964
957
  rb_define_method(cgsl_fft_wavetable, "factor",
965
- rb_GSL_FFT_Wavetable_factor, 0);
958
+ rb_GSL_FFT_Wavetable_factor, 0);
966
959
 
967
960
  // class GSL::FFT::ComplexWavetable < GSL::FFT::Wavetable
968
961
  cgsl_fft_complex_wavetable = rb_define_class_under(mgsl_fft, "ComplexWavetable",
969
- cgsl_fft_wavetable);
962
+ cgsl_fft_wavetable);
970
963
  rb_define_singleton_method(cgsl_fft_complex_wavetable, "alloc",
971
- rb_gsl_fft_complex_wavetable_new, 1);
964
+ rb_gsl_fft_complex_wavetable_new, 1);
972
965
 
973
966
  // class GSL::FFT::ComplexWorkspace < GSL::Object
974
- cgsl_fft_complex_workspace = rb_define_class_under(mgsl_fft, "ComplexWorkspace",
975
- cGSL_Object);
967
+ cgsl_fft_complex_workspace = rb_define_class_under(mgsl_fft, "ComplexWorkspace",
968
+ cGSL_Object);
976
969
  rb_define_singleton_method(cgsl_fft_complex_workspace, "alloc",
977
- rb_gsl_fft_complex_workspace_new, 1);
970
+ rb_gsl_fft_complex_workspace_new, 1);
978
971
 
979
972
  rb_define_method(cgsl_vector_complex, "forward", rb_gsl_fft_complex_forward, -1);
980
973
  rb_define_method(cgsl_vector_complex, "transform", rb_gsl_fft_complex_transform, -1);
@@ -989,58 +982,58 @@ void Init_gsl_fft(VALUE module)
989
982
  /*****/
990
983
 
991
984
  // TODO Do these method names need the "real_" and "halfcomplex_" prefixes?
992
- rb_define_method(cgsl_vector, "real_radix2_transform",
993
- rb_gsl_fft_real_radix2_transform, 0);
985
+ rb_define_method(cgsl_vector, "real_radix2_transform",
986
+ rb_gsl_fft_real_radix2_transform, 0);
994
987
  rb_define_alias(cgsl_vector, "radix2_transform", "real_radix2_transform");
995
988
  rb_define_alias(cgsl_vector, "radix2_forward", "real_radix2_transform");
996
- rb_define_method(cgsl_vector, "real_radix2_inverse",
997
- rb_gsl_fft_halfcomplex_radix2_inverse, 0);
989
+ rb_define_method(cgsl_vector, "real_radix2_inverse",
990
+ rb_gsl_fft_halfcomplex_radix2_inverse, 0);
998
991
  rb_define_alias(cgsl_vector, "radix2_inverse", "real_radix2_inverse");
999
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse",
1000
- "real_radix2_inverse");
1001
- rb_define_method(cgsl_vector, "real_radix2_backward",
1002
- rb_gsl_fft_halfcomplex_radix2_backward, 0);
992
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse",
993
+ "real_radix2_inverse");
994
+ rb_define_method(cgsl_vector, "real_radix2_backward",
995
+ rb_gsl_fft_halfcomplex_radix2_backward, 0);
1003
996
  rb_define_alias(cgsl_vector, "radix2_backward", "real_radix2_backward");
1004
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward",
1005
- "real_radix2_backward");
997
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward",
998
+ "real_radix2_backward");
1006
999
 
1007
1000
  // TODO Do these method names need the "real_" and "halfcomplex_" prefixes?
1008
- rb_define_method(cgsl_vector, "real_radix2_transform!",
1009
- rb_gsl_fft_real_radix2_transform2, 0);
1001
+ rb_define_method(cgsl_vector, "real_radix2_transform!",
1002
+ rb_gsl_fft_real_radix2_transform2, 0);
1010
1003
  rb_define_alias(cgsl_vector, "radix2_transform!", "real_radix2_transform!");
1011
1004
  rb_define_alias(cgsl_vector, "radix2_forward!", "real_radix2_transform!");
1012
- rb_define_method(cgsl_vector, "real_radix2_inverse!",
1013
- rb_gsl_fft_halfcomplex_radix2_inverse2, 0);
1005
+ rb_define_method(cgsl_vector, "real_radix2_inverse!",
1006
+ rb_gsl_fft_halfcomplex_radix2_inverse2, 0);
1014
1007
  rb_define_alias(cgsl_vector, "radix2_inverse!", "real_radix2_inverse!");
1015
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse!",
1016
- "real_radix2_inverse!");
1017
- rb_define_method(cgsl_vector, "real_radix2_backward!",
1018
- rb_gsl_fft_halfcomplex_radix2_backward2, 0);
1008
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse!",
1009
+ "real_radix2_inverse!");
1010
+ rb_define_method(cgsl_vector, "real_radix2_backward!",
1011
+ rb_gsl_fft_halfcomplex_radix2_backward2, 0);
1019
1012
  rb_define_alias(cgsl_vector, "radix2_backward!", "real_radix2_backward!");
1020
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward!",
1021
- "real_radix2_backward!");
1013
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward!",
1014
+ "real_radix2_backward!");
1022
1015
 
1023
1016
  /*****/
1024
1017
 
1025
1018
  // class GSL::FFT::RealWavetable < GSL::FFT::Wavetable
1026
- cgsl_fft_real_wavetable = rb_define_class_under(mgsl_fft, "RealWavetable",
1027
- cgsl_fft_wavetable);
1019
+ cgsl_fft_real_wavetable = rb_define_class_under(mgsl_fft, "RealWavetable",
1020
+ cgsl_fft_wavetable);
1028
1021
  rb_define_singleton_method(cgsl_fft_real_wavetable, "alloc",
1029
- rb_gsl_fft_real_wavetable_new, 1);
1022
+ rb_gsl_fft_real_wavetable_new, 1);
1030
1023
 
1031
1024
  // class GSL::FFT::HalfComplexWavetable < GSL::FFT::Wavetable
1032
- cgsl_fft_halfcomplex_wavetable = rb_define_class_under(mgsl_fft,
1033
- "HalfComplexWavetable", cgsl_fft_wavetable);
1025
+ cgsl_fft_halfcomplex_wavetable = rb_define_class_under(mgsl_fft,
1026
+ "HalfComplexWavetable", cgsl_fft_wavetable);
1034
1027
  rb_define_singleton_method(cgsl_fft_halfcomplex_wavetable, "alloc",
1035
- rb_gsl_fft_halfcomplex_wavetable_new, 1);
1028
+ rb_gsl_fft_halfcomplex_wavetable_new, 1);
1036
1029
 
1037
1030
  /*****/
1038
1031
 
1039
1032
  // class GSL::FFT::RealWorkspace < GSL::Object
1040
- cgsl_fft_real_workspace = rb_define_class_under(mgsl_fft, "RealWorkspace",
1041
- cGSL_Object);
1033
+ cgsl_fft_real_workspace = rb_define_class_under(mgsl_fft, "RealWorkspace",
1034
+ cGSL_Object);
1042
1035
  rb_define_singleton_method(cgsl_fft_real_workspace, "alloc",
1043
- rb_gsl_fft_real_workspace_new, 1);
1036
+ rb_gsl_fft_real_workspace_new, 1);
1044
1037
 
1045
1038
  /*****/
1046
1039
 
@@ -1050,14 +1043,14 @@ void Init_gsl_fft(VALUE module)
1050
1043
  rb_define_alias(cgsl_vector, "forward", "real_transform");
1051
1044
  rb_define_alias(cgsl_vector, "fft_forward", "real_transform");
1052
1045
  rb_define_alias(cgsl_vector, "fft", "real_transform");
1053
- rb_define_method(cgsl_vector, "halfcomplex_transform",
1054
- rb_gsl_fft_halfcomplex_transform, -1);
1055
- rb_define_method(cgsl_vector, "halfcomplex_backward",
1056
- rb_gsl_fft_halfcomplex_backward, -1);
1046
+ rb_define_method(cgsl_vector, "halfcomplex_transform",
1047
+ rb_gsl_fft_halfcomplex_transform, -1);
1048
+ rb_define_method(cgsl_vector, "halfcomplex_backward",
1049
+ rb_gsl_fft_halfcomplex_backward, -1);
1057
1050
  rb_define_alias(cgsl_vector, "backward", "halfcomplex_backward");
1058
1051
  rb_define_alias(cgsl_vector, "fft_backward", "halfcomplex_backward");
1059
- rb_define_method(cgsl_vector, "halfcomplex_inverse",
1060
- rb_gsl_fft_halfcomplex_inverse, -1);
1052
+ rb_define_method(cgsl_vector, "halfcomplex_inverse",
1053
+ rb_gsl_fft_halfcomplex_inverse, -1);
1061
1054
  rb_define_alias(cgsl_vector, "fft_inverse", "halfcomplex_inverse");
1062
1055
  rb_define_alias(cgsl_vector, "ifft", "halfcomplex_inverse");
1063
1056
  rb_define_alias(cgsl_vector, "inverse", "halfcomplex_inverse");
@@ -1067,14 +1060,14 @@ void Init_gsl_fft(VALUE module)
1067
1060
  rb_define_alias(cgsl_vector, "forward!", "real_transform!");
1068
1061
  rb_define_alias(cgsl_vector, "fft_forward!", "real_transform!");
1069
1062
  rb_define_alias(cgsl_vector, "fft!", "real_transform!");
1070
- rb_define_method(cgsl_vector, "halfcomplex_transform!",
1071
- rb_gsl_fft_halfcomplex_transform2, -1);
1063
+ rb_define_method(cgsl_vector, "halfcomplex_transform!",
1064
+ rb_gsl_fft_halfcomplex_transform2, -1);
1072
1065
  rb_define_method(cgsl_vector, "halfcomplex_backward!",
1073
- rb_gsl_fft_halfcomplex_backward2, -1);
1066
+ rb_gsl_fft_halfcomplex_backward2, -1);
1074
1067
  rb_define_alias(cgsl_vector, "backward!", "halfcomplex_backward!");
1075
1068
  rb_define_alias(cgsl_vector, "fft_backward!", "halfcomplex_backward!");
1076
- rb_define_method(cgsl_vector, "halfcomplex_inverse!",
1077
- rb_gsl_fft_halfcomplex_inverse2, -1);
1069
+ rb_define_method(cgsl_vector, "halfcomplex_inverse!",
1070
+ rb_gsl_fft_halfcomplex_inverse2, -1);
1078
1071
  rb_define_alias(cgsl_vector, "fft_inverse!", "halfcomplex_inverse!");
1079
1072
  rb_define_alias(cgsl_vector, "ifft!", "halfcomplex_inverse!");
1080
1073
  rb_define_alias(cgsl_vector, "inverse!", "halfcomplex_inverse!");
@@ -1085,8 +1078,8 @@ void Init_gsl_fft(VALUE module)
1085
1078
  rb_define_alias(cgsl_vector, "real_to_complex", "fft_real_unpack");
1086
1079
  rb_define_alias(cgsl_vector, "r_to_c", "fft_real_unpack");
1087
1080
 
1088
- rb_define_method(cgsl_vector, "fft_halfcomplex_unpack",
1089
- rb_gsl_fft_halfcomplex_unpack, 0);
1081
+ rb_define_method(cgsl_vector, "fft_halfcomplex_unpack",
1082
+ rb_gsl_fft_halfcomplex_unpack, 0);
1090
1083
  rb_define_alias(cgsl_vector, "halfcomplex_unpack", "fft_halfcomplex_unpack");
1091
1084
  rb_define_alias(cgsl_vector, "halfcomplex_to_complex", "fft_halfcomplex_unpack");
1092
1085
  rb_define_alias(cgsl_vector, "hc_to_c", "fft_halfcomplex_unpack");
@@ -1094,9 +1087,9 @@ void Init_gsl_fft(VALUE module)
1094
1087
  /*****/
1095
1088
 
1096
1089
  rb_define_method(cgsl_vector, "to_nrc_order",
1097
- rb_gsl_fft_halfcomplex_to_nrc, 0);
1098
-
1090
+ rb_gsl_fft_halfcomplex_to_nrc, 0);
1091
+
1099
1092
  rb_define_method(cgsl_vector, "halfcomplex_amp_phase",
1100
- rb_gsl_fft_halfcomplex_amp_phase, 0);
1093
+ rb_gsl_fft_halfcomplex_amp_phase, 0);
1101
1094
  rb_define_alias(cgsl_vector, "hc_amp_phase", "halfcomplex_amp_phase");
1102
1095
  }