rb-gsl 1.16.0.5 → 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 (612) hide show
  1. checksums.yaml +4 -4
  2. data/rb-gsl.gemspec +5 -10
  3. metadata +10 -713
  4. data/.gitignore +0 -12
  5. data/.travis.yml +0 -24
  6. data/AUTHORS +0 -12
  7. data/COPYING +0 -341
  8. data/ChangeLog +0 -621
  9. data/Gemfile +0 -4
  10. data/README.md +0 -77
  11. data/Rakefile +0 -20
  12. data/THANKS +0 -17
  13. data/examples/alf/alf.gp +0 -15
  14. data/examples/alf/alf.rb +0 -32
  15. data/examples/blas/blas.rb +0 -13
  16. data/examples/blas/dnrm2.rb +0 -16
  17. data/examples/blas/level1.rb +0 -81
  18. data/examples/blas/level2.rb +0 -11
  19. data/examples/blas/level3.rb +0 -12
  20. data/examples/bspline.rb +0 -57
  21. data/examples/cdf.rb +0 -16
  22. data/examples/cheb.rb +0 -21
  23. data/examples/combination.rb +0 -23
  24. data/examples/complex/RC-lpf.rb +0 -47
  25. data/examples/complex/add.rb +0 -36
  26. data/examples/complex/coerce.rb +0 -14
  27. data/examples/complex/complex.rb +0 -25
  28. data/examples/complex/fpmi.rb +0 -70
  29. data/examples/complex/functions.rb +0 -77
  30. data/examples/complex/michelson.rb +0 -36
  31. data/examples/complex/mul.rb +0 -28
  32. data/examples/complex/oscillator.rb +0 -17
  33. data/examples/complex/set.rb +0 -37
  34. data/examples/const/physconst.rb +0 -151
  35. data/examples/const/travel.rb +0 -45
  36. data/examples/deriv/demo.rb +0 -13
  37. data/examples/deriv/deriv.rb +0 -36
  38. data/examples/deriv/diff.rb +0 -35
  39. data/examples/dht.rb +0 -42
  40. data/examples/dirac.rb +0 -56
  41. data/examples/eigen/eigen.rb +0 -34
  42. data/examples/eigen/herm.rb +0 -22
  43. data/examples/eigen/narray.rb +0 -9
  44. data/examples/eigen/nonsymm.rb +0 -37
  45. data/examples/eigen/nonsymmv.rb +0 -43
  46. data/examples/eigen/qhoscillator.gp +0 -35
  47. data/examples/eigen/qhoscillator.rb +0 -90
  48. data/examples/eigen/vander.rb +0 -41
  49. data/examples/fft/fft.rb +0 -17
  50. data/examples/fft/fft2.rb +0 -17
  51. data/examples/fft/forward.rb +0 -25
  52. data/examples/fft/forward2.rb +0 -26
  53. data/examples/fft/radix2.rb +0 -18
  54. data/examples/fft/real-halfcomplex.rb +0 -33
  55. data/examples/fft/real-halfcomplex2.rb +0 -30
  56. data/examples/fft/realradix2.rb +0 -19
  57. data/examples/fft/sunspot.dat +0 -256
  58. data/examples/fft/sunspot.rb +0 -16
  59. data/examples/fit/expdata.dat +0 -20
  60. data/examples/fit/expfit.rb +0 -31
  61. data/examples/fit/gaussfit.rb +0 -29
  62. data/examples/fit/gaussian_2peaks.rb +0 -34
  63. data/examples/fit/hillfit.rb +0 -40
  64. data/examples/fit/lognormal.rb +0 -26
  65. data/examples/fit/lorentzfit.rb +0 -22
  66. data/examples/fit/multifit.rb +0 -72
  67. data/examples/fit/ndlinear.rb +0 -133
  68. data/examples/fit/nonlinearfit.rb +0 -89
  69. data/examples/fit/plot.gp +0 -36
  70. data/examples/fit/polyfit.rb +0 -9
  71. data/examples/fit/powerfit.rb +0 -21
  72. data/examples/fit/sigmoidfit.rb +0 -40
  73. data/examples/fit/sinfit.rb +0 -22
  74. data/examples/fit/wlinear.rb +0 -46
  75. data/examples/fresnel.rb +0 -11
  76. data/examples/function/function.rb +0 -36
  77. data/examples/function/log.rb +0 -7
  78. data/examples/function/min.rb +0 -33
  79. data/examples/function/sin.rb +0 -10
  80. data/examples/function/synchrotron.rb +0 -18
  81. data/examples/gallery/butterfly.rb +0 -7
  82. data/examples/gallery/cayley.rb +0 -12
  83. data/examples/gallery/cornu.rb +0 -23
  84. data/examples/gallery/eight.rb +0 -11
  85. data/examples/gallery/koch.rb +0 -40
  86. data/examples/gallery/lemniscate.rb +0 -11
  87. data/examples/gallery/polar.rb +0 -11
  88. data/examples/gallery/rgplot/cossin.rb +0 -35
  89. data/examples/gallery/rgplot/rgplot.replaced +0 -0
  90. data/examples/gallery/rgplot/roesller.rb +0 -55
  91. data/examples/gallery/roesller.rb +0 -39
  92. data/examples/gallery/scarabaeus.rb +0 -14
  93. data/examples/histogram/cauchy.rb +0 -27
  94. data/examples/histogram/cauchy.sh +0 -2
  95. data/examples/histogram/exponential.rb +0 -19
  96. data/examples/histogram/gauss.rb +0 -16
  97. data/examples/histogram/gsl-histogram.rb +0 -40
  98. data/examples/histogram/histo2d.rb +0 -31
  99. data/examples/histogram/histo3d.rb +0 -34
  100. data/examples/histogram/histogram-pdf.rb +0 -27
  101. data/examples/histogram/histogram.rb +0 -26
  102. data/examples/histogram/integral.rb +0 -28
  103. data/examples/histogram/poisson.rb +0 -27
  104. data/examples/histogram/power.rb +0 -25
  105. data/examples/histogram/rebin.rb +0 -17
  106. data/examples/histogram/smp.dat +0 -5
  107. data/examples/histogram/xexp.rb +0 -21
  108. data/examples/integration/ahmed.rb +0 -21
  109. data/examples/integration/cosmology.rb +0 -75
  110. data/examples/integration/friedmann.gp +0 -16
  111. data/examples/integration/friedmann.rb +0 -35
  112. data/examples/integration/gamma-zeta.rb +0 -35
  113. data/examples/integration/integration.rb +0 -22
  114. data/examples/integration/qag.rb +0 -8
  115. data/examples/integration/qag2.rb +0 -14
  116. data/examples/integration/qag3.rb +0 -8
  117. data/examples/integration/qagi.rb +0 -28
  118. data/examples/integration/qagi2.rb +0 -49
  119. data/examples/integration/qagiu.rb +0 -29
  120. data/examples/integration/qagp.rb +0 -20
  121. data/examples/integration/qags.rb +0 -14
  122. data/examples/integration/qawc.rb +0 -18
  123. data/examples/integration/qawf.rb +0 -41
  124. data/examples/integration/qawo.rb +0 -29
  125. data/examples/integration/qaws.rb +0 -30
  126. data/examples/integration/qng.rb +0 -17
  127. data/examples/interp/demo.gp +0 -20
  128. data/examples/interp/demo.rb +0 -45
  129. data/examples/interp/interp.rb +0 -37
  130. data/examples/interp/points +0 -10
  131. data/examples/interp/spline.rb +0 -20
  132. data/examples/jacobi/deriv.rb +0 -40
  133. data/examples/jacobi/integrate.rb +0 -34
  134. data/examples/jacobi/interp.rb +0 -43
  135. data/examples/jacobi/jacobi.rb +0 -11
  136. data/examples/linalg/HH.rb +0 -15
  137. data/examples/linalg/HH_narray.rb +0 -13
  138. data/examples/linalg/LQ_solve.rb +0 -73
  139. data/examples/linalg/LU.rb +0 -84
  140. data/examples/linalg/LU2.rb +0 -31
  141. data/examples/linalg/LU_narray.rb +0 -24
  142. data/examples/linalg/PTLQ.rb +0 -47
  143. data/examples/linalg/QR.rb +0 -18
  144. data/examples/linalg/QRPT.rb +0 -47
  145. data/examples/linalg/QR_solve.rb +0 -78
  146. data/examples/linalg/QR_solve_narray.rb +0 -13
  147. data/examples/linalg/SV.rb +0 -16
  148. data/examples/linalg/SV_narray.rb +0 -12
  149. data/examples/linalg/SV_solve.rb +0 -49
  150. data/examples/linalg/chol.rb +0 -29
  151. data/examples/linalg/chol_narray.rb +0 -15
  152. data/examples/linalg/complex.rb +0 -57
  153. data/examples/linalg/invert_narray.rb +0 -10
  154. data/examples/math/const.rb +0 -67
  155. data/examples/math/elementary.rb +0 -35
  156. data/examples/math/functions.rb +0 -41
  157. data/examples/math/inf_nan.rb +0 -34
  158. data/examples/math/minmax.rb +0 -22
  159. data/examples/math/power.rb +0 -18
  160. data/examples/math/test.rb +0 -31
  161. data/examples/matrix/a.dat +0 -0
  162. data/examples/matrix/add.rb +0 -45
  163. data/examples/matrix/b.dat +0 -4
  164. data/examples/matrix/cat.rb +0 -31
  165. data/examples/matrix/colvectors.rb +0 -24
  166. data/examples/matrix/complex.rb +0 -41
  167. data/examples/matrix/det.rb +0 -29
  168. data/examples/matrix/diagonal.rb +0 -23
  169. data/examples/matrix/get_all.rb +0 -159
  170. data/examples/matrix/hilbert.rb +0 -31
  171. data/examples/matrix/iterator.rb +0 -19
  172. data/examples/matrix/matrix.rb +0 -57
  173. data/examples/matrix/minmax.rb +0 -53
  174. data/examples/matrix/mul.rb +0 -39
  175. data/examples/matrix/rand.rb +0 -20
  176. data/examples/matrix/read.rb +0 -29
  177. data/examples/matrix/rowcol.rb +0 -47
  178. data/examples/matrix/set.rb +0 -41
  179. data/examples/matrix/set_all.rb +0 -100
  180. data/examples/matrix/view.rb +0 -32
  181. data/examples/matrix/view_all.rb +0 -148
  182. data/examples/matrix/write.rb +0 -23
  183. data/examples/min.rb +0 -29
  184. data/examples/monte/miser.rb +0 -47
  185. data/examples/monte/monte.rb +0 -47
  186. data/examples/monte/plain.rb +0 -47
  187. data/examples/monte/vegas.rb +0 -46
  188. data/examples/multimin/bundle.rb +0 -66
  189. data/examples/multimin/cqp.rb +0 -109
  190. data/examples/multimin/fdfminimizer.rb +0 -40
  191. data/examples/multimin/fminimizer.rb +0 -41
  192. data/examples/multiroot/demo.rb +0 -36
  193. data/examples/multiroot/fdfsolver.rb +0 -50
  194. data/examples/multiroot/fsolver.rb +0 -33
  195. data/examples/multiroot/fsolver2.rb +0 -32
  196. data/examples/multiroot/fsolver3.rb +0 -26
  197. data/examples/narray/histogram.rb +0 -14
  198. data/examples/narray/mandel.rb +0 -27
  199. data/examples/narray/narray.rb +0 -28
  200. data/examples/narray/narray2.rb +0 -44
  201. data/examples/narray/sf.rb +0 -26
  202. data/examples/ntuple/create.rb +0 -17
  203. data/examples/ntuple/project.rb +0 -31
  204. data/examples/odeiv/binarysystem.gp +0 -23
  205. data/examples/odeiv/binarysystem.rb +0 -104
  206. data/examples/odeiv/demo.gp +0 -24
  207. data/examples/odeiv/demo.rb +0 -69
  208. data/examples/odeiv/demo2.gp +0 -26
  209. data/examples/odeiv/duffing.rb +0 -45
  210. data/examples/odeiv/frei1.rb +0 -109
  211. data/examples/odeiv/frei2.rb +0 -76
  212. data/examples/odeiv/legendre.rb +0 -52
  213. data/examples/odeiv/odeiv.rb +0 -32
  214. data/examples/odeiv/odeiv2.rb +0 -45
  215. data/examples/odeiv/oscillator.rb +0 -42
  216. data/examples/odeiv/sedov.rb +0 -97
  217. data/examples/odeiv/whitedwarf.gp +0 -40
  218. data/examples/odeiv/whitedwarf.rb +0 -158
  219. data/examples/ool/conmin.rb +0 -100
  220. data/examples/ool/gencan.rb +0 -99
  221. data/examples/ool/pgrad.rb +0 -100
  222. data/examples/ool/spg.rb +0 -100
  223. data/examples/pdf/bernoulli.rb +0 -5
  224. data/examples/pdf/beta.rb +0 -7
  225. data/examples/pdf/binomiral.rb +0 -10
  226. data/examples/pdf/cauchy.rb +0 -6
  227. data/examples/pdf/chisq.rb +0 -8
  228. data/examples/pdf/exponential.rb +0 -7
  229. data/examples/pdf/exppow.rb +0 -6
  230. data/examples/pdf/fdist.rb +0 -7
  231. data/examples/pdf/flat.rb +0 -7
  232. data/examples/pdf/gamma.rb +0 -8
  233. data/examples/pdf/gauss-tail.rb +0 -5
  234. data/examples/pdf/gauss.rb +0 -6
  235. data/examples/pdf/geometric.rb +0 -5
  236. data/examples/pdf/gumbel.rb +0 -6
  237. data/examples/pdf/hypergeometric.rb +0 -11
  238. data/examples/pdf/landau.rb +0 -5
  239. data/examples/pdf/laplace.rb +0 -7
  240. data/examples/pdf/logarithmic.rb +0 -5
  241. data/examples/pdf/logistic.rb +0 -6
  242. data/examples/pdf/lognormal.rb +0 -6
  243. data/examples/pdf/neg-binomiral.rb +0 -10
  244. data/examples/pdf/pareto.rb +0 -7
  245. data/examples/pdf/pascal.rb +0 -10
  246. data/examples/pdf/poisson.rb +0 -5
  247. data/examples/pdf/rayleigh-tail.rb +0 -6
  248. data/examples/pdf/rayleigh.rb +0 -6
  249. data/examples/pdf/tdist.rb +0 -6
  250. data/examples/pdf/weibull.rb +0 -8
  251. data/examples/permutation/ex1.rb +0 -22
  252. data/examples/permutation/permutation.rb +0 -16
  253. data/examples/poly/bell.rb +0 -6
  254. data/examples/poly/bessel.rb +0 -6
  255. data/examples/poly/cheb.rb +0 -6
  256. data/examples/poly/cheb_II.rb +0 -6
  257. data/examples/poly/cubic.rb +0 -9
  258. data/examples/poly/demo.rb +0 -20
  259. data/examples/poly/eval.rb +0 -28
  260. data/examples/poly/eval_derivs.rb +0 -14
  261. data/examples/poly/fit.rb +0 -21
  262. data/examples/poly/hermite.rb +0 -6
  263. data/examples/poly/poly.rb +0 -13
  264. data/examples/poly/quadratic.rb +0 -25
  265. data/examples/random/diffusion.rb +0 -34
  266. data/examples/random/gaussian.rb +0 -9
  267. data/examples/random/generator.rb +0 -27
  268. data/examples/random/hdsobol.rb +0 -21
  269. data/examples/random/poisson.rb +0 -9
  270. data/examples/random/qrng.rb +0 -19
  271. data/examples/random/randomwalk.rb +0 -37
  272. data/examples/random/randomwalk2d.rb +0 -19
  273. data/examples/random/rayleigh.rb +0 -36
  274. data/examples/random/rng.rb +0 -33
  275. data/examples/random/rngextra.rb +0 -14
  276. data/examples/roots/bisection.rb +0 -25
  277. data/examples/roots/brent.rb +0 -43
  278. data/examples/roots/demo.rb +0 -30
  279. data/examples/roots/newton.rb +0 -46
  280. data/examples/roots/recombination.gp +0 -11
  281. data/examples/roots/recombination.rb +0 -61
  282. data/examples/roots/steffenson.rb +0 -48
  283. data/examples/sf/ShiChi.rb +0 -6
  284. data/examples/sf/SiCi.rb +0 -6
  285. data/examples/sf/airy_Ai.rb +0 -8
  286. data/examples/sf/airy_Bi.rb +0 -8
  287. data/examples/sf/bessel_IK.rb +0 -12
  288. data/examples/sf/bessel_JY.rb +0 -13
  289. data/examples/sf/beta_inc.rb +0 -9
  290. data/examples/sf/clausen.rb +0 -6
  291. data/examples/sf/dawson.rb +0 -5
  292. data/examples/sf/debye.rb +0 -9
  293. data/examples/sf/dilog.rb +0 -6
  294. data/examples/sf/ellint.rb +0 -6
  295. data/examples/sf/expint.rb +0 -8
  296. data/examples/sf/fermi.rb +0 -10
  297. data/examples/sf/gamma_inc_P.rb +0 -9
  298. data/examples/sf/gegenbauer.rb +0 -8
  299. data/examples/sf/hyperg.rb +0 -7
  300. data/examples/sf/laguerre.rb +0 -19
  301. data/examples/sf/lambertW.rb +0 -5
  302. data/examples/sf/legendre_P.rb +0 -10
  303. data/examples/sf/lngamma.rb +0 -5
  304. data/examples/sf/psi.rb +0 -54
  305. data/examples/sf/sphbessel.gp +0 -27
  306. data/examples/sf/sphbessel.rb +0 -30
  307. data/examples/sf/synchrotron.rb +0 -5
  308. data/examples/sf/transport.rb +0 -10
  309. data/examples/sf/zetam1.rb +0 -5
  310. data/examples/siman.rb +0 -44
  311. data/examples/sort/heapsort.rb +0 -23
  312. data/examples/sort/heapsort_vector_complex.rb +0 -21
  313. data/examples/sort/sort.rb +0 -23
  314. data/examples/sort/sort2.rb +0 -16
  315. data/examples/stats/mean.rb +0 -17
  316. data/examples/stats/statistics.rb +0 -18
  317. data/examples/stats/test.rb +0 -9
  318. data/examples/sum.rb +0 -34
  319. data/examples/tamu_anova.rb +0 -18
  320. data/examples/vector/a.dat +0 -0
  321. data/examples/vector/add.rb +0 -56
  322. data/examples/vector/b.dat +0 -4
  323. data/examples/vector/c.dat +0 -3
  324. data/examples/vector/collect.rb +0 -26
  325. data/examples/vector/compare.rb +0 -28
  326. data/examples/vector/complex.rb +0 -51
  327. data/examples/vector/complex_get_all.rb +0 -85
  328. data/examples/vector/complex_set_all.rb +0 -131
  329. data/examples/vector/complex_view_all.rb +0 -77
  330. data/examples/vector/connect.rb +0 -22
  331. data/examples/vector/decimate.rb +0 -38
  332. data/examples/vector/diff.rb +0 -31
  333. data/examples/vector/filescan.rb +0 -17
  334. data/examples/vector/floor.rb +0 -23
  335. data/examples/vector/get_all.rb +0 -82
  336. data/examples/vector/gnuplot.rb +0 -38
  337. data/examples/vector/graph.rb +0 -28
  338. data/examples/vector/histogram.rb +0 -22
  339. data/examples/vector/linspace.rb +0 -24
  340. data/examples/vector/log.rb +0 -17
  341. data/examples/vector/logic.rb +0 -33
  342. data/examples/vector/logspace.rb +0 -25
  343. data/examples/vector/minmax.rb +0 -47
  344. data/examples/vector/mul.rb +0 -49
  345. data/examples/vector/narray.rb +0 -46
  346. data/examples/vector/read.rb +0 -29
  347. data/examples/vector/set.rb +0 -35
  348. data/examples/vector/set_all.rb +0 -121
  349. data/examples/vector/smpv.dat +0 -15
  350. data/examples/vector/test.rb +0 -43
  351. data/examples/vector/test_gslblock.rb +0 -58
  352. data/examples/vector/vector.rb +0 -110
  353. data/examples/vector/view.rb +0 -35
  354. data/examples/vector/view_all.rb +0 -73
  355. data/examples/vector/where.rb +0 -29
  356. data/examples/vector/write.rb +0 -24
  357. data/examples/vector/zip.rb +0 -34
  358. data/examples/wavelet/ecg.dat +0 -256
  359. data/examples/wavelet/wavelet1.rb +0 -50
  360. data/ext/gsl_native/alf.c +0 -206
  361. data/ext/gsl_native/array.c +0 -553
  362. data/ext/gsl_native/array_complex.c +0 -245
  363. data/ext/gsl_native/blas.c +0 -28
  364. data/ext/gsl_native/blas1.c +0 -733
  365. data/ext/gsl_native/blas2.c +0 -1088
  366. data/ext/gsl_native/blas3.c +0 -880
  367. data/ext/gsl_native/block.c +0 -40
  368. data/ext/gsl_native/block_source.h +0 -885
  369. data/ext/gsl_native/bspline.c +0 -122
  370. data/ext/gsl_native/bundle.c +0 -3
  371. data/ext/gsl_native/cdf.c +0 -740
  372. data/ext/gsl_native/cheb.c +0 -531
  373. data/ext/gsl_native/combination.c +0 -275
  374. data/ext/gsl_native/common.c +0 -293
  375. data/ext/gsl_native/complex.c +0 -1002
  376. data/ext/gsl_native/const.c +0 -331
  377. data/ext/gsl_native/const_additional.c +0 -99
  378. data/ext/gsl_native/cqp.c +0 -283
  379. data/ext/gsl_native/deriv.c +0 -187
  380. data/ext/gsl_native/dht.c +0 -353
  381. data/ext/gsl_native/diff.c +0 -164
  382. data/ext/gsl_native/dirac.c +0 -388
  383. data/ext/gsl_native/eigen.c +0 -2322
  384. data/ext/gsl_native/error.c +0 -193
  385. data/ext/gsl_native/extconf.rb +0 -118
  386. data/ext/gsl_native/fft.c +0 -1095
  387. data/ext/gsl_native/fit.c +0 -204
  388. data/ext/gsl_native/fresnel.c +0 -312
  389. data/ext/gsl_native/function.c +0 -518
  390. data/ext/gsl_native/geometry.c +0 -139
  391. data/ext/gsl_native/graph.c +0 -1590
  392. data/ext/gsl_native/gsl.c +0 -259
  393. data/ext/gsl_native/gsl_narray.c +0 -794
  394. data/ext/gsl_native/histogram.c +0 -1964
  395. data/ext/gsl_native/histogram2d.c +0 -1042
  396. data/ext/gsl_native/histogram3d.c +0 -884
  397. data/ext/gsl_native/histogram3d_source.c +0 -749
  398. data/ext/gsl_native/histogram_find.c +0 -99
  399. data/ext/gsl_native/histogram_oper.c +0 -150
  400. data/ext/gsl_native/ieee.c +0 -88
  401. data/ext/gsl_native/include/rb_gsl.h +0 -136
  402. data/ext/gsl_native/include/rb_gsl_array.h +0 -214
  403. data/ext/gsl_native/include/rb_gsl_cheb.h +0 -19
  404. data/ext/gsl_native/include/rb_gsl_common.h +0 -348
  405. data/ext/gsl_native/include/rb_gsl_complex.h +0 -25
  406. data/ext/gsl_native/include/rb_gsl_const.h +0 -23
  407. data/ext/gsl_native/include/rb_gsl_dirac.h +0 -6
  408. data/ext/gsl_native/include/rb_gsl_eigen.h +0 -17
  409. data/ext/gsl_native/include/rb_gsl_fft.h +0 -49
  410. data/ext/gsl_native/include/rb_gsl_fit.h +0 -23
  411. data/ext/gsl_native/include/rb_gsl_function.h +0 -23
  412. data/ext/gsl_native/include/rb_gsl_graph.h +0 -68
  413. data/ext/gsl_native/include/rb_gsl_histogram.h +0 -63
  414. data/ext/gsl_native/include/rb_gsl_histogram3d.h +0 -97
  415. data/ext/gsl_native/include/rb_gsl_integration.h +0 -17
  416. data/ext/gsl_native/include/rb_gsl_interp.h +0 -41
  417. data/ext/gsl_native/include/rb_gsl_linalg.h +0 -21
  418. data/ext/gsl_native/include/rb_gsl_math.h +0 -20
  419. data/ext/gsl_native/include/rb_gsl_odeiv.h +0 -18
  420. data/ext/gsl_native/include/rb_gsl_poly.h +0 -67
  421. data/ext/gsl_native/include/rb_gsl_rational.h +0 -30
  422. data/ext/gsl_native/include/rb_gsl_rng.h +0 -20
  423. data/ext/gsl_native/include/rb_gsl_root.h +0 -22
  424. data/ext/gsl_native/include/rb_gsl_sf.h +0 -110
  425. data/ext/gsl_native/include/rb_gsl_statistics.h +0 -17
  426. data/ext/gsl_native/include/rb_gsl_tensor.h +0 -43
  427. data/ext/gsl_native/include/rb_gsl_with_narray.h +0 -31
  428. data/ext/gsl_native/include/templates_off.h +0 -87
  429. data/ext/gsl_native/include/templates_on.h +0 -241
  430. data/ext/gsl_native/integration.c +0 -1154
  431. data/ext/gsl_native/interp.c +0 -499
  432. data/ext/gsl_native/jacobi.c +0 -733
  433. data/ext/gsl_native/linalg.c +0 -3915
  434. data/ext/gsl_native/linalg_complex.c +0 -726
  435. data/ext/gsl_native/math.c +0 -706
  436. data/ext/gsl_native/matrix.c +0 -36
  437. data/ext/gsl_native/matrix_complex.c +0 -1733
  438. data/ext/gsl_native/matrix_double.c +0 -557
  439. data/ext/gsl_native/matrix_int.c +0 -255
  440. data/ext/gsl_native/matrix_source.h +0 -2708
  441. data/ext/gsl_native/min.c +0 -219
  442. data/ext/gsl_native/monte.c +0 -978
  443. data/ext/gsl_native/multifit.c +0 -1862
  444. data/ext/gsl_native/multimin.c +0 -778
  445. data/ext/gsl_native/multimin_fsdf.c +0 -156
  446. data/ext/gsl_native/multiroots.c +0 -952
  447. data/ext/gsl_native/multiset.c +0 -210
  448. data/ext/gsl_native/ndlinear.c +0 -320
  449. data/ext/gsl_native/nmf.c +0 -171
  450. data/ext/gsl_native/nmf_wrap.c +0 -75
  451. data/ext/gsl_native/ntuple.c +0 -469
  452. data/ext/gsl_native/odeiv.c +0 -947
  453. data/ext/gsl_native/ool.c +0 -879
  454. data/ext/gsl_native/permutation.c +0 -598
  455. data/ext/gsl_native/poly.c +0 -39
  456. data/ext/gsl_native/poly2.c +0 -265
  457. data/ext/gsl_native/poly_source.h +0 -1871
  458. data/ext/gsl_native/qrng.c +0 -160
  459. data/ext/gsl_native/randist.c +0 -1848
  460. data/ext/gsl_native/rational.c +0 -480
  461. data/ext/gsl_native/rng.c +0 -595
  462. data/ext/gsl_native/root.c +0 -407
  463. data/ext/gsl_native/sf.c +0 -1446
  464. data/ext/gsl_native/sf_airy.c +0 -200
  465. data/ext/gsl_native/sf_bessel.c +0 -871
  466. data/ext/gsl_native/sf_clausen.c +0 -28
  467. data/ext/gsl_native/sf_coulomb.c +0 -206
  468. data/ext/gsl_native/sf_coupling.c +0 -121
  469. data/ext/gsl_native/sf_dawson.c +0 -29
  470. data/ext/gsl_native/sf_debye.c +0 -148
  471. data/ext/gsl_native/sf_dilog.c +0 -43
  472. data/ext/gsl_native/sf_elementary.c +0 -46
  473. data/ext/gsl_native/sf_ellint.c +0 -206
  474. data/ext/gsl_native/sf_elljac.c +0 -30
  475. data/ext/gsl_native/sf_erfc.c +0 -89
  476. data/ext/gsl_native/sf_exp.c +0 -169
  477. data/ext/gsl_native/sf_expint.c +0 -201
  478. data/ext/gsl_native/sf_fermi_dirac.c +0 -148
  479. data/ext/gsl_native/sf_gamma.c +0 -343
  480. data/ext/gsl_native/sf_gegenbauer.c +0 -97
  481. data/ext/gsl_native/sf_hyperg.c +0 -203
  482. data/ext/gsl_native/sf_laguerre.c +0 -113
  483. data/ext/gsl_native/sf_lambert.c +0 -47
  484. data/ext/gsl_native/sf_legendre.c +0 -368
  485. data/ext/gsl_native/sf_log.c +0 -105
  486. data/ext/gsl_native/sf_mathieu.c +0 -235
  487. data/ext/gsl_native/sf_power.c +0 -47
  488. data/ext/gsl_native/sf_psi.c +0 -89
  489. data/ext/gsl_native/sf_synchrotron.c +0 -48
  490. data/ext/gsl_native/sf_transport.c +0 -76
  491. data/ext/gsl_native/sf_trigonometric.c +0 -210
  492. data/ext/gsl_native/sf_zeta.c +0 -115
  493. data/ext/gsl_native/signal.c +0 -303
  494. data/ext/gsl_native/siman.c +0 -713
  495. data/ext/gsl_native/sort.c +0 -207
  496. data/ext/gsl_native/spline.c +0 -377
  497. data/ext/gsl_native/stats.c +0 -787
  498. data/ext/gsl_native/sum.c +0 -168
  499. data/ext/gsl_native/tamu_anova.c +0 -56
  500. data/ext/gsl_native/tensor.c +0 -35
  501. data/ext/gsl_native/tensor_source.h +0 -1122
  502. data/ext/gsl_native/vector.c +0 -35
  503. data/ext/gsl_native/vector_complex.c +0 -2241
  504. data/ext/gsl_native/vector_double.c +0 -1433
  505. data/ext/gsl_native/vector_int.c +0 -202
  506. data/ext/gsl_native/vector_source.h +0 -3321
  507. data/ext/gsl_native/wavelet.c +0 -923
  508. data/lib/gsl.rb +0 -8
  509. data/lib/gsl/gnuplot.rb +0 -41
  510. data/lib/gsl/oper.rb +0 -43
  511. data/lib/gsl/version.rb +0 -3
  512. data/lib/ool.rb +0 -22
  513. data/lib/ool/conmin.rb +0 -30
  514. data/lib/rbgsl.rb +0 -1
  515. data/rdoc/alf.rdoc +0 -77
  516. data/rdoc/blas.rdoc +0 -269
  517. data/rdoc/bspline.rdoc +0 -42
  518. data/rdoc/changes.rdoc +0 -159
  519. data/rdoc/cheb.rdoc +0 -99
  520. data/rdoc/cholesky_complex.rdoc +0 -46
  521. data/rdoc/combi.rdoc +0 -125
  522. data/rdoc/complex.rdoc +0 -210
  523. data/rdoc/const.rdoc +0 -546
  524. data/rdoc/dht.rdoc +0 -122
  525. data/rdoc/diff.rdoc +0 -133
  526. data/rdoc/ehandling.rdoc +0 -50
  527. data/rdoc/eigen.rdoc +0 -401
  528. data/rdoc/fft.rdoc +0 -535
  529. data/rdoc/fit.rdoc +0 -284
  530. data/rdoc/function.rdoc +0 -94
  531. data/rdoc/graph.rdoc +0 -137
  532. data/rdoc/hist.rdoc +0 -409
  533. data/rdoc/hist2d.rdoc +0 -279
  534. data/rdoc/hist3d.rdoc +0 -112
  535. data/rdoc/integration.rdoc +0 -398
  536. data/rdoc/interp.rdoc +0 -231
  537. data/rdoc/intro.rdoc +0 -27
  538. data/rdoc/linalg.rdoc +0 -681
  539. data/rdoc/linalg_complex.rdoc +0 -88
  540. data/rdoc/math.rdoc +0 -276
  541. data/rdoc/matrix.rdoc +0 -1093
  542. data/rdoc/min.rdoc +0 -189
  543. data/rdoc/monte.rdoc +0 -234
  544. data/rdoc/multimin.rdoc +0 -312
  545. data/rdoc/multiroot.rdoc +0 -293
  546. data/rdoc/narray.rdoc +0 -177
  547. data/rdoc/ndlinear.rdoc +0 -250
  548. data/rdoc/nonlinearfit.rdoc +0 -348
  549. data/rdoc/ntuple.rdoc +0 -88
  550. data/rdoc/odeiv.rdoc +0 -378
  551. data/rdoc/perm.rdoc +0 -221
  552. data/rdoc/poly.rdoc +0 -335
  553. data/rdoc/qrng.rdoc +0 -90
  554. data/rdoc/randist.rdoc +0 -233
  555. data/rdoc/ref.rdoc +0 -93
  556. data/rdoc/rng.rdoc +0 -203
  557. data/rdoc/roots.rdoc +0 -305
  558. data/rdoc/sf.rdoc +0 -1622
  559. data/rdoc/siman.rdoc +0 -89
  560. data/rdoc/sort.rdoc +0 -94
  561. data/rdoc/start.rdoc +0 -16
  562. data/rdoc/stats.rdoc +0 -219
  563. data/rdoc/sum.rdoc +0 -65
  564. data/rdoc/tensor.rdoc +0 -251
  565. data/rdoc/tut.rdoc +0 -5
  566. data/rdoc/use.rdoc +0 -177
  567. data/rdoc/vector.rdoc +0 -1243
  568. data/rdoc/vector_complex.rdoc +0 -347
  569. data/rdoc/wavelet.rdoc +0 -218
  570. data/test/gsl/blas_test.rb +0 -79
  571. data/test/gsl/bspline_test.rb +0 -63
  572. data/test/gsl/cdf_test.rb +0 -1512
  573. data/test/gsl/cheb_test.rb +0 -80
  574. data/test/gsl/combination_test.rb +0 -100
  575. data/test/gsl/complex_test.rb +0 -20
  576. data/test/gsl/const_test.rb +0 -29
  577. data/test/gsl/deriv_test.rb +0 -62
  578. data/test/gsl/dht_test.rb +0 -79
  579. data/test/gsl/diff_test.rb +0 -53
  580. data/test/gsl/eigen_test.rb +0 -563
  581. data/test/gsl/err_test.rb +0 -23
  582. data/test/gsl/fit_test.rb +0 -101
  583. data/test/gsl/histo_test.rb +0 -14
  584. data/test/gsl/index_test.rb +0 -61
  585. data/test/gsl/integration_test.rb +0 -274
  586. data/test/gsl/interp_test.rb +0 -27
  587. data/test/gsl/linalg_test.rb +0 -463
  588. data/test/gsl/matrix_nmf_test.rb +0 -37
  589. data/test/gsl/matrix_test.rb +0 -98
  590. data/test/gsl/min_test.rb +0 -89
  591. data/test/gsl/monte_test.rb +0 -77
  592. data/test/gsl/multifit_test.rb +0 -753
  593. data/test/gsl/multimin_test.rb +0 -157
  594. data/test/gsl/multiroot_test.rb +0 -135
  595. data/test/gsl/multiset_test.rb +0 -52
  596. data/test/gsl/odeiv_test.rb +0 -275
  597. data/test/gsl/oper_test.rb +0 -98
  598. data/test/gsl/poly_test.rb +0 -338
  599. data/test/gsl/qrng_test.rb +0 -94
  600. data/test/gsl/quartic_test.rb +0 -28
  601. data/test/gsl/randist_test.rb +0 -122
  602. data/test/gsl/rng_test.rb +0 -303
  603. data/test/gsl/roots_test.rb +0 -78
  604. data/test/gsl/sf_test.rb +0 -2079
  605. data/test/gsl/stats_test.rb +0 -122
  606. data/test/gsl/sum_test.rb +0 -69
  607. data/test/gsl/tensor_test.rb +0 -396
  608. data/test/gsl/vector_test.rb +0 -223
  609. data/test/gsl/wavelet_test.rb +0 -130
  610. data/test/gsl_test.rb +0 -321
  611. data/test/test_helper.rb +0 -42
  612. data/uncrustify.cfg +0 -1693
@@ -1,535 +0,0 @@
1
- #
2
- # = Fast Fourier Transforms
3
- # Contents:
4
- # 1. {Mathematical Definitions}[link:rdoc/fft_rdoc.html#label-Mathematical+Definitions]
5
- # 1. {Complex data FFTs}[link:rdoc/fft_rdoc.html#label-Complex+data+FFTs]
6
- # 1. {Overview of complex data FFTs}[link:rdoc/fft_rdoc.html#label-Overview+of+complex+data+FFTs]
7
- # 1. {Radix-2 FFT routines for complex data}[link:rdoc/fft_rdoc.html#label-Radix-2+FFT+routines+for+complex+data]
8
- # 1. {Example of the complex Radix-2 FFT}[link:rdoc/fft_rdoc.html#label-Example+of+complex+Radix-2+FFT]
9
- # 1. {Mixed-radix FFT routines for complex data}[link:rdoc/fft_rdoc.html#label-Mixed-radix+FFT+routines+for+complex+data]
10
- # 1. {GSL::FFT::ComplexWavetable class}[link:rdoc/fft_rdoc.html#label-ComplexWavetable+class]
11
- # 1. {GSL::FFT::ComplexWorkspace class}[link:rdoc/fft_rdoc.html#label-ComplexWorkspace+class]
12
- # 1. {Methods to compute the transform}[link:rdoc/fft_rdoc.html#label-Methods+to+compute+transform]
13
- # 1. {Example of the mixed-radix FFT}[link:rdoc/fft_rdoc.html#label-Example+to+use+the+mixed-radix+FFT+algorithm]
14
- # 1. {Real data FFTs}[link:rdoc/fft_rdoc.html#label-Real+data+FFTs]
15
- # 1. {Overview of real data FFTs}[link:rdoc/fft_rdoc.html#label-Overview+of+real+data+FFTs]
16
- # 1. {Radix-2 FFT routines for real data}[link:rdoc/fft_rdoc.html#label-Radix-2+FFT+routines+for+real+data]
17
- # 1. {Mixed-radix FFT routines for real data}[link:rdoc/fft_rdoc.html#label-Mixed-radix+FFT+routines+for+real+data]
18
- # 1. {Data storage scheme}[link:rdoc/fft_rdoc.html#label-Data+storage+scheme]
19
- # 1. {Wavetable and Workspace classes}[link:rdoc/fft_rdoc.html#label-Wavetable+and+Workspace+classes]
20
- # 1. {Methods for real FFTs}[link:rdoc/fft_rdoc.html#label-Methods+for+mixed-radix+real+FFTs]
21
- # 1. {Examples}[link:rdoc/fft_rdoc.html#label-Examples]
22
- #
23
- # == Mathematical Definitions
24
- # Fast Fourier Transforms are efficient algorithms for calculating the discrete
25
- # fourier transform (DFT),
26
- #
27
- # The DFT usually arises as an approximation to the continuous fourier transform
28
- # when functions are sampled at discrete intervals in space or time.
29
- # The naive evaluation of the discrete fourier transform is a matrix-vector
30
- # multiplication W\vec{z}. A general matrix-vector multiplication takes O(N^2)
31
- # operations for N data-points. Fast fourier transform algorithms use a
32
- # divide-and-conquer strategy to factorize the matrix W into smaller
33
- # sub-matrices, corresponding to the integer factors of the length N.
34
- # If N can be factorized into a product of integers f_1 f_2 ... f_n then the
35
- # DFT can be computed in O(N \sum f_i) operations. For a radix-2 FFT this
36
- # gives an operation count of O(N \log_2 N).
37
- #
38
- # All the FFT functions offer three types of transform: forwards, inverse and
39
- # backwards, based on the same mathematical definitions. The definition of the
40
- # forward fourier transform, x = FFT(z), is, and the definition of the inverse
41
- # fourier transform, x = IFFT(z), is, The factor of 1/N makes this a true
42
- # inverse. For example, a call to gsl_fft_complex_forward followed by a call
43
- # to gsl_fft_complex_inverse should return the original data (within numerical
44
- # errors).
45
- #
46
- # In general there are two possible choices for the sign of the exponential
47
- # in the transform/ inverse-transform pair. GSL follows the same convention as
48
- # FFTPACK, using a negative exponential for the forward transform.
49
- # The advantage of this convention is that the inverse transform recreates
50
- # the original function with simple fourier synthesis. Numerical Recipes uses
51
- # the opposite convention, a positive exponential in the forward transform.
52
- #
53
- # The backwards FFT is simply our terminology for an unscaled version of the
54
- # inverse FFT, When the overall scale of the result is unimportant it is often
55
- # convenient to use the backwards FFT instead of the inverse to save unnecessary
56
- # divisions.
57
- #
58
- #
59
- # == Complex data FFTs
60
- # === Overview of complex data FFTs
61
- # The complex data FFT routines are provided as instance methods of
62
- # {GSL::Vector::Complex}[link:rdoc/vector_complex_rdoc.html].
63
- #
64
- # Here is a table which shows the layout of the array data, and the correspondence
65
- # between the time-domain complex data z, and the frequency-domain complex data x.
66
- #
67
- # index z x = FFT(z)
68
- #
69
- # 0 z(t = 0) x(f = 0)
70
- # 1 z(t = 1) x(f = 1/(N Delta))
71
- # 2 z(t = 2) x(f = 2/(N Delta))
72
- # . ........ ..................
73
- # N/2 z(t = N/2) x(f = +1/(2 Delta),
74
- # -1/(2 Delta))
75
- # . ........ ..................
76
- # N-3 z(t = N-3) x(f = -3/(N Delta))
77
- # N-2 z(t = N-2) x(f = -2/(N Delta))
78
- # N-1 z(t = N-1) x(f = -1/(N Delta))
79
- #
80
- #
81
- # When N is even the location N/2 contains the most positive and negative
82
- # frequencies +1/(2 Delta), -1/(2 Delta) which are equivalent. If N is odd then
83
- # general structure of the table above still applies, but N/2 does not appear.
84
- #
85
- # {GSL::Vector::Complex}[link:rdoc/vector_complex_rdoc.html] provides four methods for
86
- # shifting the frequency domain data between <b>FFT order</b>, shown in the table
87
- # above, and <b>natural order</b>, which has the most negative freqeuncy component
88
- # first, the zero frequency component in the middle, and the most positive
89
- # frequency component last.
90
- #
91
- # ---
92
- # * GSL::Vector::Complex#fftshift
93
- # * GSL::Vector::Complex#fftshift!
94
- #
95
- # Shifts the data of <tt>self</tt> from FFT order to natural order. The
96
- # <tt>#fftshift</tt> method leaves <tt>self</tt> unmodified and returns a new
97
- # <tt>GSL::Vector::Complex</tt> object containing the shifted data. The
98
- # <tt>#fftshift!</tt> method modifies <tt>self</tt> in-place and returns
99
- # <tt>self</tt>. Note that <tt>#fftshift</tt> and <tt>#ifftshift</tt> are equivalent
100
- # for even lengths, but not for odd lengths.
101
- #
102
- # ---
103
- # * GSL::Vector::Complex#ifftshift
104
- # * GSL::Vector::Complex#ifftshift!
105
- #
106
- # Shifts the data of <tt>self</tt> from natural order to FFT order. The
107
- # <tt>#ifftshift</tt> method leaves <tt>self</tt> unmodified and returns a new
108
- # <tt>GSL::Vector::Complex</tt> object containing the shifted data. The
109
- # <tt>#ifftshift!</tt> method modifies <tt>self</tt> in-place and returns
110
- # <tt>self</tt>. Note that <tt>#fftshift</tt> and <tt>#ifftshift</tt> are equivalent
111
- # for even lengths, but not for odd lengths.
112
- #
113
- # === Radix-2 FFT routines for complex data
114
- # The radix-2 algorithms are simple and compact, although not necessarily the
115
- # most efficient. They use the Cooley-Tukey algorithm to compute complex
116
- # FFTs for lengths which are a power of 2 -- no additional storage is required.
117
- # The corresponding self-sorting mixed-radix routines offer better performance
118
- # at the expense of requiring additional working space.
119
- #
120
- # <b>The FFT methods described below return FFTed data, and the input vector is
121
- # not changed. Use methods with '!' as <tt>tranform!</tt> for in-place transform.</b>
122
- #
123
- # ---
124
- # * GSL::Vector::Complex#radix2_forward
125
- # * GSL::Vector::Complex#radix2_backward
126
- # * GSL::Vector::Complex#radix2_inverse
127
- #
128
- #
129
- # These functions compute forward, backward and inverse FFTs of the complex
130
- # vector using a radix-2 decimation-in-time algorithm. The length of the
131
- # transform is restricted to powers of two. These methods return the FFTed
132
- # data, and the input data is not changed.
133
- #
134
- # ---
135
- # * GSL::Vector::Complex#radix2_transform(sign)
136
- #
137
- #
138
- # The sign argument can be either <tt>GSL::FFT::FORWARD</tt> or <tt>GSL::FFT::BACKWARD</tt>.
139
- #
140
- # ---
141
- # * GSL::Vector::Complex#radix2_dif_forward
142
- # * GSL::Vector::Complex#radix2_dif_backward
143
- # * GSL::Vector::Complex#radix2_dif_inverse
144
- # * GSL::Vector::Complex#radix2_dif_transform
145
- #
146
- #
147
- # These are decimation-in-frequency versions of the radix-2 FFT functions.
148
- #
149
- # ==== Example of complex Radix-2 FFT
150
- # Here is an example program which computes the FFT of a short pulse in a
151
- # sample of length 128. To make the resulting Fourier transform real the pulse
152
- # is defined for equal positive and negative times (-10 ... 10), where the
153
- # negative times wrap around the end of the array.
154
- #
155
- # require("gsl")
156
- # include GSL
157
- #
158
- # n = 128
159
- # data = Vector::Complex[n]
160
- #
161
- # data[0] = 1.0
162
- # for i in 1..10 do
163
- # data[i] = 1.0
164
- # data[n-i] = 1.0
165
- # end
166
- #
167
- # #for i in 0...n do
168
- # # printf("%d %e %e\n", i, data[i].re, data[i].im)
169
- # #end
170
- #
171
- # # You can choose whichever you like
172
- # #ffted = data.radix2_forward()
173
- # ffted = data.radix2_transform(FFT::FORWARD)
174
- # ffted /= Math::sqrt(n)
175
- # for i in 0...n do
176
- # printf("%d %e %e\n", i, ffted[i].re, ffted[i].im)
177
- # end
178
- #
179
- # === Mixed-radix FFT routines for complex data
180
- #
181
- # ==== ComplexWavetable class
182
- # ---
183
- # * GSL::FFT::ComplexWavetable.alloc(n)
184
- #
185
- #
186
- # This method prepares a trigonometric lookup table for a complex FFT of length <tt>n</tt>.
187
- # The length <tt>n</tt> is factorized into a product of subtransforms, and the factors and their
188
- # trigonometric coefficients are stored in the wavetable. The trigonometric coefficients are
189
- # computed using direct calls to sin and cos, for accuracy. Recursion relations could be used
190
- # to compute the lookup table faster, but if an application performs many FFTs of the same
191
- # length then this computation is a one-off overhead which does not affect the final
192
- # throughput.
193
- #
194
- # The <tt>Wavetable</tt> object can be used repeatedly for any transform of the same length.
195
- # The table is not modified by calls to any of the other FFT functions. The same wavetable
196
- # can be used for both forward and backward (or inverse) transforms of a given length.
197
- #
198
- # ---
199
- # * GSL::FFT::ComplexWavetable#n
200
- # * GSL::FFT::ComplexWavetable#nf
201
- # * GSL::FFT::ComplexWavetable#factor
202
- #
203
- #
204
- # ==== ComplexWorkspace class
205
- # ---
206
- # * GSL::FFT::ComplexWorkspace.alloc(n)
207
- #
208
- #
209
- # Creates a workspace for a complex transform of length <tt>n</tt>.
210
- #
211
- # ==== Methods to compute transform
212
- # <b>The FFT methods described below return FFTed data, and the input vector is not changed. Use methods with '!' as <tt>tranform!</tt> for in-place transform.</b>
213
- #
214
- # ---
215
- # * GSL::Vector::Complex#forward(table, work)
216
- # * GSL::Vector::Complex#forward(table)
217
- # * GSL::Vector::Complex#forward(work)
218
- # * GSL::Vector::Complex#forward()
219
- # * GSL::Vector::Complex#backward(arguments same as forward)
220
- # * GSL::Vector::Complex#inverse(arguments same as forward)
221
- # * GSL::Vector::Complex#transform(arguments same as forward, sign)
222
- #
223
- #
224
- # These methods compute forward, backward and inverse FFTs of the complex
225
- # vector <tt>self</tt>, using a mixed radix decimation-in-frequency algorithm.
226
- # There is no restriction on the length. Efficient modules are provided for
227
- # subtransforms of length 2, 3, 4, 5, 6 and 7. Any remaining factors are
228
- # computed with a slow, O(n^2), general-n module.
229
- #
230
- # The caller can supply a <tt>table</tt> containing the trigonometric lookup
231
- # tables and a workspace <tt>work</tt> (they are optional).
232
- #
233
- # The sign argument for the method <tt>transform</tt> can be either
234
- # <tt>GSL::FFT::FORWARD</tt> or <tt>GSL::FFT::BACKWARD</tt>.
235
- #
236
- # These methods return the FFTed data, and the input data is not changed.
237
- #
238
- # ==== Example to use the mixed-radix FFT algorithm
239
- # require 'gsl'
240
- # include GSL
241
- #
242
- # n = 630
243
- # data = FFT::Vector::Complex[n]
244
- #
245
- # table = FFT::ComplexWavetable.alloc(n)
246
- # space = FFT::ComplexWorkspace.alloc(n)
247
- #
248
- # data[0] = 1.0
249
- # for i in 1..10 do
250
- # data[i] = 1.0
251
- # end
252
- #
253
- # ffted = data.forward(table, space)
254
- # #ffted = data.forward()
255
- # #ffted = data.transform(FFT:Forward)
256
- #
257
- # ffted /= Math::sqrt(n)
258
- # for i in 0...n do
259
- # printf("%d %e %e\n", i, data[i].re, data[i].im)
260
- # end
261
- #
262
- # == Real data FFTs
263
- # === Overview of real data FFTs
264
- #
265
- # The functions for real data FFTs are provided as instance methods of
266
- # {GSL::Vector}[link:rdoc/vector_rdoc.html]. While they are similar to those for
267
- # complex data, there is an important difference in the data storage layout
268
- # between forward and inverse transforms. The Fourier transform of a real
269
- # sequence is not real. It is a complex sequence with a special symmetry. A
270
- # sequence with this symmetry is called <tt>conjugate-complex</tt> or
271
- # <tt>half-complex</tt> and requires only as much storage as the original real
272
- # sequence instead of twice as much.
273
- #
274
- # Forward transforms of real sequences produce half complex sequences of the same
275
- # length. Backward and inverse transforms of half complex sequences produce real
276
- # sequences of the same length. In both cases, the input and output sequences
277
- # are instances of {GSL::Vector}[link:rdoc/vector_rdoc.html].
278
- #
279
- # The precise storage arrangements of half complex seqeunces depend on the
280
- # algorithm, and are different for radix-2 and mixed-radix routines. The radix-2
281
- # functions operate in-place, which constrains the locations where each element
282
- # can be stored. The restriction forces real and imaginary parts to be stored far
283
- # apart. The mixed-radix algorithm does not have this restriction, and it stores
284
- # the real and imaginary parts of a given term in neighboring locations (which is
285
- # desirable for better locality of memory accesses). This means that a half
286
- # complex sequence produces by a radix-2 forward transform <b>cannot</b> be
287
- # recovered by a mixed-radix inverse transform (and vice versa).
288
- #
289
- # === Radix-2 FFT routines for real data
290
- # The routines for readix-2 real FFTs are provided as instance methods of
291
- # {GSL::Vector}[link:rdoc/vector_rdoc.html].
292
- #
293
- # <b>The FFT methods described below return FFTed data, and the input vector is
294
- # not changed. Use methods with '!' as <tt>radix2_tranform!</tt> for in-place
295
- # transform.</b>
296
- #
297
- # ---
298
- # * GSL::Vector#real_radix2_transform
299
- # * GSL::Vector#radix2_transform
300
- # * GSL::Vector#real_radix2_forward
301
- # * GSL::Vector#radix2_forward
302
- #
303
- #
304
- # These methods compute a radix-2 FFT of the real vector <tt>self</tt>. The
305
- # output is a half-complex sequence. The arrangement of the half-complex
306
- # terms uses the following scheme: for k < N/2 the real part of the k-th term
307
- # is stored in location k, and the corresponding imaginary part is stored in
308
- # location N-k. Terms with k > N/2 can be reconstructed using the symmetry
309
- # z_k = z^*_{N-k}. The terms for k=0 and k=N/2 are both purely real, and
310
- # count as a special case. Their real parts are stored in locations 0 and N/2
311
- # respectively, while their imaginary parts which are zero are not stored.
312
- #
313
- # These methods return the FFTed data, and the input data is not changed.
314
- #
315
- # The following table shows the correspondence between the output <tt>self</tt>
316
- # and the equivalent results obtained by considering the input data as a
317
- # complex sequence with zero imaginary part,
318
- #
319
- # complex[0].real = self[0]
320
- # complex[0].imag = 0
321
- # complex[1].real = self[1]
322
- # complex[1].imag = self[N-1]
323
- # ............... ................
324
- # complex[k].real = self[k]
325
- # complex[k].imag = self[N-k]
326
- # ............... ................
327
- # complex[N/2].real = self[N/2]
328
- # complex[N/2].real = 0
329
- # ............... ................
330
- # complex[k'].real = self[k] k' = N - k
331
- # complex[k'].imag = -self[N-k]
332
- # ............... ................
333
- # complex[N-1].real = self[1]
334
- # complex[N-1].imag = -self[N-1]
335
- #
336
- # ---
337
- # * GSL::Vector#halfcomplex_radix2_inverse
338
- # * GSL::Vector#radix2_inverse
339
- # * GSL::Vector#halfcomplex_radix2_backward
340
- # * GSL::Vector#radix2_backward
341
- #
342
- #
343
- # These methods compute the inverse or backwards radix-2 FFT of the
344
- # half-complex sequence data stored according the output scheme used by
345
- # gsl_fft_real_radix2. The result is a real array stored in natural order.
346
- #
347
- # == Mixed-radix FFT routines for real data
348
- #
349
- # This section describes mixed-radix FFT algorithms for real data.
350
- # The mixed-radix functions work for FFTs of any length. They are a
351
- # reimplementation of the real-FFT routines in the Fortran FFTPACK library
352
- # by Paul Swarztrauber.
353
- # The theory behind the algorithm is explained in the article
354
- # <tt>Fast Mixed-Radix Real Fourier Transforms</tt> by Clive Temperton.
355
- # The routines here use the same indexing scheme and basic algorithms as
356
- # FFTPACK.
357
- #
358
- # The functions use the FFTPACK storage convention for half-complex sequences.
359
- # In this convention the half-complex transform of a real sequence is stored with
360
- # frequencies in increasing order, starting at zero, with the real and imaginary
361
- # parts of each frequency in neighboring locations. When a value is known to be
362
- # real the imaginary part is not stored. The imaginary part of the zero-frequency
363
- # component is never stored. It is known to be zero since the zero frequency
364
- # component is simply the sum of the input data (all real). For a sequence of
365
- # even length the imaginary part of the frequency n/2 is not stored either, since
366
- # the symmetry z_k = z_{N-k}^* implies that this is purely real too.
367
- #
368
- #
369
- # === Data storage scheme
370
- #
371
- # The storage scheme is best shown by some examples.
372
- # The table below shows the output for an odd-length sequence, n=5.
373
- # The two columns give the correspondence between the 5 values in the
374
- # half-complex sequence computed <tt>real_transform</tt>, <tt>halfcomplex[]</tt>
375
- # and the values <tt>complex[]</tt> that would be returned if the same real input
376
- # sequence were passed to <tt>complex_backward</tt> as a complex sequence
377
- # (with imaginary parts set to 0),
378
- #
379
- # complex[0].real = halfcomplex[0]
380
- # complex[0].imag = 0
381
- # complex[1].real = halfcomplex[1]
382
- # complex[1].imag = halfcomplex[2]
383
- # complex[2].real = halfcomplex[3]
384
- # complex[2].imag = halfcomplex[4]
385
- # complex[3].real = halfcomplex[3]
386
- # complex[3].imag = -halfcomplex[4]
387
- # complex[4].real = halfcomplex[1]
388
- # complex[4].imag = -halfcomplex[2]
389
- #
390
- # The upper elements of the <tt>complex</tt> array, <tt>complex[3]</tt> and <tt>complex[4]</tt>
391
- # are filled in using the symmetry condition. The imaginary part of
392
- # the zero-frequency term <tt>complex[0].imag</tt> is known to be zero by the symmetry.
393
- #
394
- # The next table shows the output for an even-length sequence,
395
- # n=5 In the even case there are two values which are purely real,
396
- #
397
- # complex[0].real = halfcomplex[0]
398
- # complex[0].imag = 0
399
- # complex[1].real = halfcomplex[1]
400
- # complex[1].imag = halfcomplex[2]
401
- # complex[2].real = halfcomplex[3]
402
- # complex[2].imag = halfcomplex[4]
403
- # complex[3].real = halfcomplex[5]
404
- # complex[3].imag = 0
405
- # complex[4].real = halfcomplex[3]
406
- # complex[4].imag = -halfcomplex[4]
407
- # complex[5].real = halfcomplex[1]
408
- # complex[5].imag = -halfcomplex[2]
409
- #
410
- # The upper elements of the <tt>complex</tt> array, <tt>complex[4]</tt>
411
- # and <tt>complex[5]</tt> are filled in using the symmetry condition.
412
- # Both <tt>complex[0].imag</tt> and <tt>complex[3].imag</tt> are known to be zero.
413
- #
414
- # ==== Wavetable and Workspace classes
415
- # ---
416
- # * GSL::FFT::RealWavetable.alloc(n)
417
- # * GSL::FFT::HalfComplexWavetable.alloc(n)
418
- #
419
- #
420
- # These methods create trigonometric lookup tables for an FFT of size <tt>n</tt>
421
- # real elements. The length <tt>n</tt> is factorized into a product of subtransforms,
422
- # and the factors and their trigonometric coefficients are stored in the wavetable.
423
- # The trigonometric coefficients are computed using direct calls to sin and cos,
424
- # for accuracy. Recursion relations could be used to compute the lookup table
425
- # faster, but if an application performs many FFTs of the same length then
426
- # computing the wavetable is a one-off overhead which does not affect the final
427
- # throughput.
428
- #
429
- # The wavetable structure can be used repeatedly for any transform of the same
430
- # length. The table is not modified by calls to any of the other FFT functions.
431
- # The appropriate type of wavetable must be used for forward real or inverse
432
- # half-complex transforms.
433
- #
434
- # ---
435
- # * GSL::FFT::RealWorkspace.alloc(n)
436
- #
437
- #
438
- # This method creates a workspace object for a real transform of length
439
- # <tt>n</tt>. The same workspace can be used for both forward real and inverse
440
- # halfcomplex transforms.
441
- #
442
- # ==== Methods for mixed-radix real FFTs
443
- #
444
- # <b>The FFT methods described below return FFTed data, and the input vector is not changed. Use methods with '!' as <tt>real_tranform!</tt> for in-place transform.</b>
445
- #
446
- # ---
447
- # * GSL::Vector#real_transform(table, work)
448
- # * GSL::Vector#halfcomplex_transform(table, work)
449
- # * GSL::Vector#fft
450
- #
451
- #
452
- # These methods compute the FFT of <tt>self</tt>, a real or half-complex array,
453
- # using a mixed radix decimation-in-frequency algorithm. For
454
- # <tt>real_transform</tt> <tt>self</tt> is an array of time-ordered real data. For
455
- # <tt>halfcomplex_transform</tt> <tt>self</tt> contains Fourier coefficients in the
456
- # half-complex ordering described above. There is no restriction on the
457
- # length <tt>n</tt>.
458
- #
459
- # Efficient modules are provided for subtransforms of length 2, 3, 4 and 5.
460
- # Any remaining factors are computed with a slow, O(n^2), general-n module.
461
- #
462
- # The caller can supply a <tt>table</tt> containing trigonometric lookup tables
463
- # and a workspace <tt>work</tt> (optional).
464
- #
465
- # These methods return the FFTed data, and the input data is not changed.
466
- #
467
- # ---
468
- # * GSL::Vector#halfcomplex_inverse(table, work)
469
- # * GSL::Vector#halfcomplex_backward(table, work)
470
- # * GSL::Vector#ifft
471
- #
472
- #
473
- # == Examples
474
- #
475
- # === Example 1
476
- #
477
- # #!/usr/bin/env ruby
478
- # require("gsl")
479
- # include GSL
480
- #
481
- # N = 2048
482
- # SAMPLING = 1000 # 1 kHz
483
- # TMAX = 1.0/SAMPLING*N
484
- # FREQ1 = 50
485
- # FREQ2 = 120
486
- # t = Vector.linspace(0, TMAX, N)
487
- # x = Sf::sin(2*M_PI*FREQ1*t) + Sf::sin(2*M_PI*FREQ2*t)
488
- # y = x.fft
489
- #
490
- # y2 = y.subvector(1, N-2).to_complex2
491
- # mag = y2.abs
492
- # phase = y2.arg
493
- # f = Vector.linspace(0, SAMPLING/2, mag.size)
494
- # graph(f, mag, "-C -g 3 -x 0 200 -X 'Frequency [Hz]'")
495
- #
496
- # === Example 2
497
- # #!/usr/bin/env ruby
498
- # require("gsl")
499
- # include GSL
500
- #
501
- # n = 100
502
- # data = Vector.alloc(n)
503
- #
504
- # for i in (n/3)...(2*n/3) do
505
- # data[i] = 1.0
506
- # end
507
- #
508
- # rtable = FFT::RealWavetable.alloc(n)
509
- # rwork = FFT::RealWorkspace.alloc(n)
510
- #
511
- # #ffted = data.real_transform(rtable, rwork)
512
- # #ffted = data.real_transform(rtable)
513
- # #ffted = data.real_transform(rwork)
514
- # #ffted = data.real_transform()
515
- # ffted = data.fft
516
- #
517
- # for i in 11...n do
518
- # ffted[i] = 0.0
519
- # end
520
- #
521
- # hctable = FFT::HalfComplexWavetable.alloc(n)
522
- #
523
- # #data2 = ffted.halfcomplex_inverse(hctable, rwork)
524
- # #data2 = ffted.halfcomplex_inverse()
525
- # data2 = ffted.ifft
526
- #
527
- # graph(nil, data, data2, "-T X -C -g 3 -L 'Real-halfcomplex' -x 0 #{data.size}")
528
- #
529
- # {prev}[link:rdoc/eigen_rdoc.html]
530
- # {next}[link:rdoc/wavelet_rdoc.html]
531
- #
532
- # {Reference index}[link:rdoc/ref_rdoc.html]
533
- # {top}[link:index.html]
534
- #
535
- #