rb-gsl 1.16.0.5 → 1.16.0.6

Sign up to get free protection for your applications and to get access to all the features.
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,1433 +0,0 @@
1
- /*
2
- vector.c
3
- Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
4
- (C) Copyright 2001-2006 by Yoshiki Tsunesada
5
- Modified by Seiya Nishizawa 14/Apr/2004
6
-
7
- Ruby/GSL is free software: you can redistribute it and/or modify it
8
- under the terms of the GNU General Public License.
9
- This library is distributed in the hope that it will be useful, but
10
- WITHOUT ANY WARRANTY.
11
- */
12
-
13
- #include "include/rb_gsl_array.h"
14
- #include "include/rb_gsl_histogram.h"
15
- #include "include/rb_gsl_complex.h"
16
- #include "include/rb_gsl_poly.h"
17
- #include "include/rb_gsl_with_narray.h"
18
-
19
- VALUE rb_gsl_vector_inner_product(int argc, VALUE *argv, VALUE obj);
20
- static VALUE rb_gsl_vector_product_to_m(int argc, VALUE *argv, VALUE obj);
21
- VALUE rb_gsl_vector_int_to_f(VALUE obj);
22
- VALUE rb_ary_to_gv(VALUE klass, VALUE ary);
23
-
24
- static VALUE rb_gsl_vector_Xspace(double min, double max, int i,
25
- gsl_vector* (*f)(const double, const double, const size_t))
26
- {
27
- gsl_vector *v = NULL;
28
- size_t n;
29
- if (i <= 0) rb_raise(rb_eArgError, "npoints must be greater than 0");
30
- n = (size_t) i;
31
- if (n == 1 && min != max) rb_raise(rb_eArgError, "npoints is 1, but x1 != x2");
32
- v = (*f)(min, max, n);
33
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
34
- }
35
-
36
- static gsl_vector* gsl_vector_linspace(const double min,
37
- const double max, const size_t n)
38
- {
39
- gsl_vector *v = NULL;
40
- double dx;
41
- size_t i;
42
- v = gsl_vector_alloc(n);
43
- if (n > 1) {
44
- dx = (max - min)/(n-1);
45
- gsl_vector_set(v, 0, min);
46
- for (i = 1; i < n-1; i++) gsl_vector_set(v, i, i*dx + min);
47
- gsl_vector_set(v, n-1, max);
48
- } else {
49
- gsl_vector_set(v, 0, min);
50
- }
51
- return v;
52
- }
53
-
54
- static gsl_vector* gsl_vector_logspace(const double min,
55
- const double max, const size_t n)
56
- {
57
- gsl_vector *v = NULL;
58
- double dx;
59
- size_t i;
60
- v = gsl_vector_alloc(n);
61
- if (n > 1) {
62
- dx = (max - min)/(n-1);
63
- gsl_vector_set(v, 0, pow(10.0, min));
64
- for (i = 1; i < n-1; i++) gsl_vector_set(v, i, pow(10.0, dx*i + min));
65
- gsl_vector_set(v, n-1, pow(10.0, max));
66
- } else {
67
- gsl_vector_set(v, 0, pow(10.0, min));
68
- }
69
- return v;
70
- }
71
-
72
- static VALUE rb_gsl_vector_linspace(int argc, VALUE *argv, VALUE klass)
73
- {
74
- size_t n = 10;
75
- switch (argc) {
76
- case 3:
77
- CHECK_FIXNUM(argv[2]);
78
- n = (size_t) FIX2UINT(argv[2]);
79
- break;
80
- case 2:
81
- /* do nothing */
82
- break;
83
- default:
84
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
85
- break;
86
- }
87
- Need_Float(argv[0]); Need_Float(argv[1]);
88
- return rb_gsl_vector_Xspace(NUM2DBL(argv[0]), NUM2DBL(argv[1]), n,
89
- gsl_vector_linspace);
90
- }
91
-
92
- static VALUE rb_gsl_vector_logspace(int argc, VALUE *argv, VALUE klass)
93
- {
94
- size_t n = 10;
95
- switch (argc) {
96
- case 3:
97
- CHECK_FIXNUM(argv[2]);
98
- n = (size_t) FIX2INT(argv[2]);
99
- break;
100
- case 2:
101
- /* do nothing */
102
- break;
103
- default:
104
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
105
- break;
106
- }
107
- Need_Float(argv[0]); Need_Float(argv[1]);
108
- return rb_gsl_vector_Xspace(NUM2DBL(argv[0]), NUM2DBL(argv[1]), n,
109
- gsl_vector_logspace);
110
- }
111
-
112
- static VALUE rb_gsl_vector_logspace2(int argc, VALUE *argv, VALUE klass)
113
- {
114
- size_t n = 10;
115
- switch (argc) {
116
- case 3:
117
- CHECK_FIXNUM(argv[2]);
118
- n = (size_t) FIX2INT(argv[2]);
119
- break;
120
- case 2:
121
- /* do nothing */
122
- break;
123
- default:
124
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
125
- break;
126
- }
127
- Need_Float(argv[0]); Need_Float(argv[1]);
128
- return rb_gsl_vector_Xspace(log10(NUM2DBL(argv[0])),
129
- log10(NUM2DBL(argv[1])), n,
130
- gsl_vector_logspace);
131
- }
132
-
133
- /********************************************************/
134
- VALUE rb_gsl_vector_do_something(VALUE obj, void (*func)(gsl_vector*));
135
-
136
- /* singleton */
137
-
138
- enum {
139
- GSL_VECTOR_ADD,
140
- GSL_VECTOR_SUB,
141
- GSL_VECTOR_MUL,
142
- GSL_VECTOR_DIV,
143
- };
144
-
145
- static VALUE rb_gsl_vector_arithmetics(int flag, VALUE obj, VALUE bb)
146
- {
147
- gsl_vector *v = NULL, *vnew = NULL, *b = NULL;
148
- gsl_vector_complex *cvnew = NULL, *cb = NULL;
149
- gsl_complex *c = NULL;
150
- Data_Get_Struct(obj, gsl_vector, v);
151
- switch (TYPE(bb)) {
152
- case T_FLOAT:
153
- case T_FIXNUM:
154
- switch (flag) {
155
- case GSL_VECTOR_ADD:
156
- vnew = make_vector_clone(v);
157
- gsl_vector_add_constant(vnew, NUM2DBL(bb));
158
- break;
159
- case GSL_VECTOR_SUB:
160
- vnew = make_vector_clone(v);
161
- gsl_vector_add_constant(vnew, -NUM2DBL(bb));
162
- break;
163
- case GSL_VECTOR_MUL:
164
- vnew = make_vector_clone(v);
165
- gsl_vector_scale(vnew, NUM2DBL(bb));
166
- break;
167
- case GSL_VECTOR_DIV:
168
- vnew = make_vector_clone(v);
169
- gsl_vector_scale(vnew, 1.0/NUM2DBL(bb));
170
- break;
171
- }
172
- if (!VECTOR_VIEW_P(obj))
173
- return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_vector_free, vnew);
174
- else
175
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
176
- break;
177
- default:
178
- if (VECTOR_INT_P(bb)) bb = rb_gsl_vector_int_to_f(bb);
179
- if (VECTOR_P(bb)) {
180
- Data_Get_Struct(bb, gsl_vector, b);
181
- switch (flag) {
182
- case GSL_VECTOR_ADD:
183
- vnew = make_vector_clone(v);
184
- gsl_vector_add(vnew, b);
185
- break;
186
- case GSL_VECTOR_SUB:
187
- vnew = make_vector_clone(v);
188
- gsl_vector_sub(vnew, b);
189
- break;
190
- case GSL_VECTOR_MUL:
191
- vnew = make_vector_clone(v);
192
- gsl_vector_mul(vnew, b);
193
- break;
194
- case GSL_VECTOR_DIV:
195
- vnew = make_vector_clone(v);
196
- gsl_vector_div(vnew, b);
197
- break;
198
- }
199
- if (!VECTOR_VIEW_P(obj))
200
- return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_vector_free, vnew);
201
- else
202
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
203
- } else if (VECTOR_COMPLEX_P(bb)) {
204
- Data_Get_Struct(bb, gsl_vector_complex, cb);
205
- cvnew = vector_to_complex(v);
206
- switch (flag) {
207
- case GSL_VECTOR_ADD:
208
- gsl_vector_complex_add(cvnew, cb);
209
- break;
210
- case GSL_VECTOR_SUB:
211
- gsl_vector_complex_sub(cvnew, cb);
212
- break;
213
- case GSL_VECTOR_MUL:
214
- gsl_vector_complex_mul(cvnew, cb);
215
- break;
216
- case GSL_VECTOR_DIV:
217
- gsl_vector_complex_div(cvnew, cb);
218
- break;
219
- }
220
- if (VECTOR_COL_P(obj))
221
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
222
- else
223
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
224
- } else if (COMPLEX_P(bb)) {
225
- Data_Get_Struct(bb, gsl_complex, c);
226
- cvnew = vector_to_complex(v);
227
- switch (flag) {
228
- case GSL_VECTOR_ADD:
229
- gsl_vector_complex_add_constant(cvnew, *c);
230
- break;
231
- case GSL_VECTOR_SUB:
232
- gsl_vector_complex_add_constant(cvnew, gsl_complex_negative(*c));
233
- break;
234
- case GSL_VECTOR_MUL:
235
- gsl_vector_complex_scale(cvnew, *c);
236
- break;
237
- case GSL_VECTOR_DIV:
238
- gsl_vector_complex_scale(cvnew, gsl_complex_inverse(*c));
239
- break;
240
- }
241
- if (VECTOR_COL_P(obj))
242
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
243
- else
244
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
245
- } else {
246
- rb_raise(rb_eTypeError, "wrong type argument %s", rb_class2name(CLASS_OF(bb)));
247
- }
248
- break;
249
- }
250
- /* never reach here */
251
- return Qnil;
252
- }
253
-
254
- VALUE rb_gsl_vector_add(VALUE obj, VALUE b)
255
- {
256
- return rb_gsl_vector_arithmetics(GSL_VECTOR_ADD, obj, b);
257
- }
258
-
259
- VALUE rb_gsl_vector_sub(VALUE obj, VALUE b)
260
- {
261
- return rb_gsl_vector_arithmetics(GSL_VECTOR_SUB, obj, b);
262
- }
263
-
264
- gsl_vector* mygsl_vector_mul_matrix(gsl_vector *v, gsl_matrix *m);
265
- VALUE rb_gsl_vector_mul(VALUE obj, VALUE b)
266
- {
267
- VALUE argv[2];
268
- gsl_vector *v, *vnew;
269
- gsl_matrix *m;
270
- if (VECTOR_ROW_P(obj) && VECTOR_COL_P(b)) {
271
- argv[0] = obj;
272
- argv[1] = b;
273
- return rb_gsl_vector_inner_product(2, argv, CLASS_OF(obj));
274
- }
275
- if (VECTOR_ROW_P(obj) && MATRIX_P(b)) {
276
- Data_Get_Struct(obj, gsl_vector, v);
277
- Data_Get_Struct(b, gsl_matrix, m);
278
- vnew = mygsl_vector_mul_matrix(v, m);
279
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
280
- }
281
- if (VECTOR_COL_P(obj) && VECTOR_ROW_P(b)) {
282
- argv[0] = obj;
283
- argv[1] = b;
284
- return rb_gsl_vector_product_to_m(2, argv, CLASS_OF(obj));
285
- }
286
- return rb_gsl_vector_arithmetics(GSL_VECTOR_MUL, obj, b);
287
- }
288
-
289
- VALUE rb_gsl_vector_div(VALUE obj, VALUE b)
290
- {
291
- return rb_gsl_vector_arithmetics(GSL_VECTOR_DIV, obj, b);
292
- }
293
-
294
- VALUE rb_ary_to_gv0(VALUE ary)
295
- {
296
- gsl_vector *v = NULL;
297
- size_t i, size;
298
- size = RARRAY_LEN(ary);
299
- v = gsl_vector_alloc(size);
300
- if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
301
- for (i = 0; i < size; i++) {
302
- gsl_vector_set(v, i, NUM2DBL(rb_ary_entry(ary, i)));
303
- }
304
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
305
- }
306
-
307
- VALUE rb_ary_to_gv(VALUE klass, VALUE ary)
308
- {
309
- gsl_vector *v = NULL;
310
- size_t i, size;
311
- size = RARRAY_LEN(ary);
312
- v = gsl_vector_alloc(size);
313
- if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
314
- for (i = 0; i < size; i++) {
315
- gsl_vector_set(v, i, NUM2DBL(rb_ary_entry(ary, i)));
316
- }
317
- return Data_Wrap_Struct(klass, 0, gsl_vector_free, v);
318
- }
319
-
320
- VALUE rb_gsl_range_to_gv(VALUE obj)
321
- {
322
- int beg, en;
323
- size_t n, i;
324
- gsl_vector *v = NULL;
325
- beg = NUM2INT(rb_funcall3(obj, rb_gsl_id_beg, 0, NULL));
326
- en = NUM2INT(rb_funcall3(obj, rb_gsl_id_end, 0, NULL));
327
- if (RTEST(rb_funcall3(obj, rb_gsl_id_excl, 0, NULL))) n = en - beg;
328
- else n = en - beg + 1;
329
- v = gsl_vector_alloc(n);
330
- for (i = 0; i < n; i++) gsl_vector_set(v, i, beg + (int)i);
331
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
332
- }
333
- gsl_vector_view* gsl_vector_view_alloc()
334
- {
335
- gsl_vector_view *vv = NULL;
336
- vv = ALLOC(gsl_vector_view);
337
- if (vv == NULL) rb_raise(rb_eNoMemError, "malloc failed");
338
- vv->vector.owner = 0;
339
- return vv;
340
- }
341
-
342
- void gsl_vector_view_free(gsl_vector_view * vv)
343
- {
344
- free((gsl_vector_view *) vv);
345
- }
346
-
347
- static VALUE rb_gsl_vector_to_complex(VALUE obj)
348
- {
349
- gsl_vector *v = NULL;
350
- gsl_vector_complex *cv = NULL;
351
- gsl_complex z;
352
- size_t i;
353
- double x;
354
- Data_Get_Struct(obj, gsl_vector, v);
355
- cv = gsl_vector_complex_alloc(v->size);
356
- for (i = 0; i < v->size; i++) {
357
- x = gsl_vector_get(v, i);
358
- z.dat[0] = x;
359
- z.dat[1] = 0;
360
- gsl_vector_complex_set(cv, i, z);
361
- }
362
- if (VECTOR_COL_P(obj))
363
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
364
- else
365
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
366
- }
367
-
368
- static VALUE rb_gsl_vector_to_complex2(VALUE obj)
369
- {
370
- gsl_vector *v = NULL;
371
- gsl_vector_complex *cv = NULL;
372
- gsl_complex z;
373
- size_t i;
374
- double re, im;
375
- Data_Get_Struct(obj, gsl_vector, v);
376
- cv = gsl_vector_complex_alloc(ceil((double)v->size/2));
377
- for (i = 0; i < v->size; i += 2) {
378
- re = gsl_vector_get(v, i);
379
- if (i+1 == v->size) im = 0.0;
380
- else im = gsl_vector_get(v, i+1);
381
- z.dat[0] = re;
382
- z.dat[1] = im;
383
- gsl_vector_complex_set(cv, i/2, z);
384
- }
385
- if (VECTOR_COL_P(obj))
386
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
387
- else
388
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
389
- }
390
-
391
- static VALUE rb_gsl_vector_coerce(VALUE obj, VALUE other)
392
- {
393
- gsl_vector *v = NULL, *vnew = NULL;
394
- gsl_vector_complex *cv = NULL;
395
- gsl_complex *c = NULL;
396
- VALUE vv;
397
- Data_Get_Struct(obj, gsl_vector, v);
398
- switch (TYPE(other)) {
399
- case T_FLOAT:
400
- case T_FIXNUM:
401
- vnew = gsl_vector_alloc(v->size);
402
- if (vnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
403
- gsl_vector_set_all(vnew, NUM2DBL(other));
404
- vv = Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
405
- return rb_ary_new3(2, vv, obj);
406
- break;
407
- default:
408
- if (COMPLEX_P(other)) {
409
- Data_Get_Struct(other, gsl_complex, c);
410
- cv = gsl_vector_complex_alloc(v->size);
411
- if (cv == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
412
- gsl_vector_complex_set_all(cv, *c);
413
- if (VECTOR_ROW_P(obj))
414
- vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
415
- else
416
- vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
417
- return rb_ary_new3(2, vv, obj);
418
- } else if (VECTOR_COMPLEX_P(other)) {
419
- cv = vector_to_complex(v);
420
- if (VECTOR_ROW_P(obj))
421
- vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
422
- else
423
- vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
424
- return rb_ary_new3(2, other, vv);
425
- } else {
426
- rb_raise(rb_eTypeError, "cannot coerced");
427
- }
428
- break;
429
- }
430
- return Qnil; /* never reach here */
431
- }
432
-
433
- static VALUE rb_gsl_vector_product_to_m(int argc, VALUE *argv, VALUE obj)
434
- {
435
- gsl_vector *v = NULL, *v2 = NULL;
436
- gsl_matrix *m = NULL;
437
- size_t i, j;
438
- switch (TYPE(obj)) {
439
- case T_MODULE:
440
- case T_CLASS:
441
- case T_OBJECT:
442
- if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
443
- argc);
444
- if (!VECTOR_COL_P(argv[0]))
445
- rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Col expected)",
446
- rb_class2name(CLASS_OF(argv[0])));
447
- if (!VECTOR_ROW_P(argv[1]))
448
- rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)",
449
- rb_class2name(CLASS_OF(argv[1])));
450
- Data_Get_Struct(argv[0], gsl_vector, v);
451
- Data_Get_Struct(argv[1], gsl_vector, v2);
452
- break;
453
- default:
454
- if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
455
- argc);
456
- if (!VECTOR_COL_P(obj))
457
- rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Col expected)",
458
- rb_class2name(CLASS_OF(obj)));
459
- if (!VECTOR_ROW_P(argv[0]))
460
- rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)",
461
- rb_class2name(CLASS_OF(argv[0])));
462
- Data_Get_Struct(obj, gsl_vector, v);
463
- Data_Get_Struct(argv[0], gsl_vector, v2);
464
- break;
465
- }
466
- m = gsl_matrix_alloc(v->size, v2->size);
467
- for (i = 0; i < v->size; i++) {
468
- for (j = 0; j < v2->size; j++) {
469
- gsl_matrix_set(m, i, j, gsl_vector_get(v, i)*gsl_vector_get(v2, j));
470
- }
471
- }
472
- return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, m);
473
- }
474
-
475
- static VALUE rb_gsl_vector_to_f(VALUE obj)
476
- {
477
- return obj;
478
- }
479
-
480
- VALUE rb_gsl_vector_to_i(VALUE obj)
481
- {
482
- gsl_vector *v = NULL;
483
- gsl_vector_int *vi = NULL;
484
- size_t i;
485
- int val;
486
- Data_Get_Struct(obj, gsl_vector, v);
487
- vi = gsl_vector_int_alloc(v->size);
488
- for (i = 0; i < v->size; i++) {
489
- val = (int) gsl_vector_get(v, i);
490
- gsl_vector_int_set(vi, i, val);
491
- }
492
- if (VECTOR_COL_P(obj))
493
- return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vi);
494
- else
495
- return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, vi);
496
- }
497
-
498
- /* singleton */
499
- #ifdef HAVE_GNU_GRAPH
500
- static void draw_hist(VALUE obj, FILE *fp);
501
- static void draw_vector(VALUE obj, FILE *fp);
502
- static void draw_vector2(VALUE xx, VALUE yy, FILE *fp);
503
- static void draw_vector_array(VALUE ary, FILE *fp);
504
-
505
- #ifdef HAVE_NARRAY_H
506
- static void draw_narray(VALUE obj, FILE *fp)
507
- {
508
- struct NARRAY *na;
509
- double *ptr;
510
- size_t j;
511
- GetNArray(obj, na);
512
- ptr = (double *) na->ptr;
513
- for (j = 0; j < na->total; j++)
514
- fprintf(fp, "%d %g\n", (int) j, ptr[j]);
515
- fflush(fp);
516
- }
517
- #endif // HAVE_NARRAY_H
518
-
519
- #endif // HAVE_GNU_GRAPH
520
-
521
- static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
522
- {
523
- #ifdef HAVE_GNU_GRAPH
524
- size_t i, iend, j, n = 0;
525
- gsl_vector *x = NULL, *y = NULL;
526
- gsl_histogram *h = NULL;
527
- VALUE vx = (VALUE) NULL;
528
- char command[1024];
529
- int flag = 0;
530
- FILE *fp = NULL;
531
- if (argc < 1)
532
- rb_raise(rb_eArgError, "two few arguments");
533
- if (TYPE(argv[argc-1]) == T_STRING) {
534
- sprintf(command, "graph -T X %s", STR2CSTR(argv[argc-1]));
535
- iend = argc-1;
536
- } else {
537
- strcpy(command, "graph -T X -C -g 3");
538
- iend = argc;
539
- }
540
- if (iend == 1) {
541
- fp = popen(command, "w");
542
- if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
543
- if (VECTOR_P(argv[0])) {
544
- draw_vector(argv[0], fp);
545
- } else if (HISTOGRAM_P(argv[0])) {
546
- draw_hist(argv[0], fp);
547
- } else if (TYPE(argv[0]) == T_ARRAY) {
548
- draw_vector_array(argv[0], fp);
549
- #ifdef HAVE_NARRAY_H
550
- } else if (NA_IsNArray(argv[0])) {
551
- draw_narray(argv[0], fp);
552
- #endif
553
- } else {
554
- if (fp) pclose(fp);
555
- rb_raise(rb_eTypeError, "wrong argument type %s",
556
- rb_class2name(CLASS_OF(argv[0])));
557
- }
558
- if (fp) pclose(fp);
559
- return Qtrue;
560
- } else {
561
- fp = popen(command, "w");
562
- if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
563
- if (VECTOR_P(argv[0])) {
564
- Data_Get_Struct(argv[0], gsl_vector, x);
565
- vx = argv[0];
566
- n = x->size;
567
- flag = 0;
568
- } else if (HISTOGRAM_P(argv[0])) {
569
- Data_Get_Struct(argv[0], gsl_histogram, h);
570
- x = gsl_vector_alloc(h->n);
571
- n = x->size;
572
- for (j = 0; j < x->size; j++)
573
- gsl_vector_set(x, j, h->range[j]);
574
- flag = 1;
575
- draw_hist(argv[0], fp);
576
- fprintf(fp, "\n");
577
- } else if (TYPE(argv[0]) == T_ARRAY) {
578
- draw_vector_array(argv[0], fp);
579
- fprintf(fp, "\n");
580
- #ifdef HAVE_NARRAY_H
581
- } else if (NA_IsNArray(argv[0])) {
582
- vx = argv[0];
583
- n = NA_TOTAL(argv[0]);
584
- flag = 0;
585
- #endif
586
- } else if (NIL_P(argv[0])) {
587
- if (argc < 2) rb_raise(rb_eArgError, "too few arguments");
588
- if (VECTOR_P(argv[1])) {
589
- Data_Get_Struct(argv[1], gsl_vector, y);
590
- n = y->size;
591
- } else if (HISTOGRAM_P(argv[1])) {
592
- Data_Get_Struct(argv[1], gsl_histogram, h);
593
- n = h->n;
594
- #ifdef HAVE_NARRAY_H
595
- } else if (NA_IsNArray(argv[1])) {
596
- n = NA_TOTAL(argv[1]);
597
- #endif
598
- } else {
599
- rb_raise(rb_eTypeError, "wrong argument type %s",
600
- rb_class2name(CLASS_OF(argv[0])));
601
- }
602
- x = gsl_vector_alloc(n);
603
- for (j = 0; j < n; j++) gsl_vector_set(x, j, (double) j);
604
- flag = 1;
605
- } else {
606
- if (fp) pclose(fp);
607
- rb_raise(rb_eTypeError, "wrong argument type %s",
608
- rb_class2name(CLASS_OF(argv[0])));
609
- }
610
- if (flag == 1) vx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
611
- for (i = 1; i < iend; i++) {
612
- if (VECTOR_P(argv[i])) draw_vector2(vx, argv[i], fp);
613
- else if (HISTOGRAM_P(argv[i])) draw_hist(argv[i], fp);
614
- else if (TYPE(argv[i]) == T_ARRAY) draw_vector_array(argv[i], fp);
615
- #ifdef HAVE_NARRAY_H
616
- else if (NA_IsNArray(argv[i])) draw_vector2(vx, argv[i], fp);
617
- #endif
618
- else
619
- rb_raise(rb_eTypeError, "wrong argument type %s",
620
- rb_class2name(CLASS_OF(argv[i])));
621
- fprintf(fp, "\n");
622
- fflush(fp);
623
- }
624
- fclose(fp);
625
- return Qtrue;
626
- }
627
- return Qtrue;
628
- #else
629
- rb_raise(rb_eNoMethodError, "GNU plotutils required");
630
- return Qfalse;
631
- #endif
632
- }
633
-
634
- #ifdef HAVE_GNU_GRAPH
635
- static void draw_vector(VALUE obj, FILE *fp)
636
- {
637
- gsl_vector *x = NULL;
638
- size_t j;
639
- Data_Get_Vector(obj, x);
640
- for (j = 0; j < x->size; j++)
641
- fprintf(fp, "%d %g\n", (int) j, gsl_vector_get(x, j));
642
- fflush(fp);
643
- }
644
-
645
- static void draw_vector2(VALUE xx, VALUE yy, FILE *fp)
646
- {
647
- double *ptr1 = NULL, *ptr2 = NULL;
648
- gsl_vector *vx, *vy;
649
- size_t j, n, stridex = 1, stridey = 1;
650
- if (VECTOR_P(xx)) {
651
- Data_Get_Struct(xx, gsl_vector, vx);
652
- ptr1 = vx->data;
653
- n = vx->size;
654
- stridex = vx->stride;
655
- #ifdef HAVE_NARRAY_H
656
- } else if (NA_IsNArray(xx)) {
657
- struct NARRAY *nax;
658
- GetNArray(xx, nax);
659
- ptr1 = (double *) nax->ptr;
660
- n = nax->total;
661
- stridex = 1;
662
- #endif // HAVE_NARRAY_H
663
- } else {
664
- rb_raise(rb_eTypeError, "wrong argument type %s (Vector expected)",
665
- rb_class2name(CLASS_OF(xx)));
666
- }
667
- if (VECTOR_P(yy)) {
668
- Data_Get_Struct(yy, gsl_vector, vy);
669
- ptr2 = vy->data;
670
- n = vy->size;
671
- stridey = vy->stride;
672
- #ifdef HAVE_NARRAY_H
673
- } else if (NA_IsNArray(yy)) {
674
- struct NARRAY *nay;
675
- GetNArray(yy, nay);
676
- ptr2 = (double *) nay->ptr;
677
- stridey = 1;
678
- #endif // HAVE_NARRAY_H
679
- } else {
680
- rb_raise(rb_eTypeError, "wrong argument type %s (Vector expected)",
681
- rb_class2name(CLASS_OF(yy)));
682
- }
683
- for (j = 0; j < n; j++)
684
- fprintf(fp, "%g %g\n", ptr1[j*stridex], ptr2[j*stridey]);
685
- fflush(fp);
686
- }
687
-
688
- static void draw_hist(VALUE obj, FILE *fp)
689
- {
690
- gsl_histogram *h = NULL;
691
- size_t j;
692
- Data_Get_Struct(obj, gsl_histogram, h);
693
- for (j = 0; j < h->n; j++) {
694
- fprintf(fp, "%g %g\n%g %g\n",
695
- h->range[j], h->bin[j], h->range[j+1], h->bin[j]);
696
- }
697
- fflush(fp);
698
- }
699
-
700
- static void draw_vector_array(VALUE ary, FILE *fp)
701
- {
702
- double *ptrx = NULL, *ptry = NULL, *ptrz = NULL;
703
- VALUE vx;
704
- size_t j, n, stridex, stridey, stridez;
705
- int flag = 0;
706
- switch (RARRAY_LEN(ary)) {
707
- case 1:
708
- flag = 1;
709
- ptry = get_vector_ptr(rb_ary_entry(ary, 0), &stridey, &n);
710
- break;
711
- case 2:
712
- ptry = get_vector_ptr(rb_ary_entry(ary, 1), &stridey, &n);
713
- vx = rb_ary_entry(ary, 0);
714
- if (NIL_P(vx)) {flag = 1; }
715
- else {
716
- ptrx = get_vector_ptr(vx, &stridex, &n);
717
- }
718
- break;
719
- case 3:
720
- ptrz = get_vector_ptr(rb_ary_entry(ary, 2), &stridez, &n);
721
- ptry = get_vector_ptr(rb_ary_entry(ary, 1), &stridey, &n);
722
- vx = rb_ary_entry(ary, 0);
723
- if (NIL_P(vx)) {flag = 2; }
724
- else {
725
- ptrx = get_vector_ptr(vx, &stridex, &n);
726
- flag = 3;
727
- }
728
- break;
729
- default:
730
- rb_raise(rb_eRuntimeError, "wrong array length (%d for 1 or 2)",
731
- (int) RARRAY_LEN(ary));
732
- break;
733
- }
734
- switch (flag) {
735
- case 0:
736
- for (j = 0; j < n; j++)
737
- fprintf(fp, "%g %g\n", ptrx[j*stridex], ptry[j*stridey]);
738
- break;
739
- case 1:
740
- for (j = 0; j < n; j++)
741
- fprintf(fp, "%d %g\n", (int) j, ptry[j*stridey]);
742
- break;
743
- case 2:
744
- for (j = 0; j < n; j++)
745
- fprintf(fp, "%d %g %g\n", (int) j, ptry[j*stridey], ptrz[j*stridez]);
746
- break;
747
- case 3:
748
- for (j = 0; j < n; j++)
749
- fprintf(fp, "%g %g %g\n", ptrx[j*stridex], ptry[j*stridey], ptrz[j*stridez]);
750
- break;
751
- default:
752
- break;
753
- }
754
- fflush(fp);
755
- }
756
- #endif // HAVE_GNU_GRAPH
757
-
758
- /* singleton */
759
- static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
760
- {
761
- gsl_vector *x = NULL, *y = NULL, *xerr = NULL, *yerr = NULL;
762
- FILE *fp = NULL;
763
- size_t i, n;
764
- char command[1024];
765
- fp = popen("gnuplot -persist", "w");
766
- if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
767
- strcpy(command, "plot '-'");
768
- switch (argc) {
769
- case 5:
770
- if (TYPE(argv[4]) == T_STRING)
771
- sprintf(command, "%s %s", command, STR2CSTR(argv[4]));
772
- /* no break */
773
- case 4:
774
- if (TYPE(argv[3]) == T_STRING) {
775
- sprintf(command, "%s %s", command, STR2CSTR(argv[3]));
776
- } else if (VECTOR_P(argv[3])) {
777
- Data_Get_Struct(argv[3], gsl_vector, yerr);
778
- } else {
779
- rb_raise(rb_eTypeError, "argv[3] wrong type %s (String or Vector expected)",
780
- rb_class2name(CLASS_OF(argv[3])));
781
- }
782
- /* no break */
783
- case 3:
784
- if (TYPE(argv[2]) == T_STRING) {
785
- sprintf(command, "%s %s", command, STR2CSTR(argv[2]));
786
- } else if (VECTOR_P(argv[2])) {
787
- Data_Get_Struct(argv[2], gsl_vector, xerr);
788
- } else {
789
- rb_raise(rb_eTypeError, "argv[2] wrong type %s (String or Vector expected)",
790
- rb_class2name(CLASS_OF(argv[2])));
791
- }
792
- /* no break */
793
- case 2:
794
- if (TYPE(argv[1]) == T_STRING) {
795
- sprintf(command, "%s %s", command, STR2CSTR(argv[1]));
796
- } else if (VECTOR_P(argv[1])) {
797
- Data_Get_Struct(argv[1], gsl_vector, y);
798
- } else {
799
- rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
800
- rb_class2name(CLASS_OF(argv[1])));
801
- }
802
- /* no break */
803
- case 1:
804
- if (TYPE(argv[0]) == T_STRING) {
805
- sprintf(command, "%s %s", command, STR2CSTR(argv[0]));
806
- } else if (VECTOR_P(argv[0])) {
807
- Data_Get_Struct(argv[0], gsl_vector, x);
808
- } else {
809
- rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
810
- rb_class2name(CLASS_OF(argv[0])));
811
- }
812
- break;
813
- default:
814
- rb_raise(rb_eArgError, "wrong number of argumens (%d for 1 - 5)", argc);
815
- break;
816
- }
817
- if (x == NULL) rb_raise(rb_eRuntimeError, "x data is not given");
818
- n = x->size;
819
- fprintf(fp, "%s\n", command);
820
- for (i = 0; i < n; i++) {
821
- if (y == NULL)
822
- fprintf(fp, "%d %g\n", (int) i, gsl_vector_get(x, i));
823
- else if (yerr == NULL)
824
- fprintf(fp, "%g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i));
825
- else if (xerr)
826
- fprintf(fp, "%g %g %g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
827
- gsl_vector_get(xerr, i), gsl_vector_get(yerr, i));
828
- else
829
- fprintf(fp, "%g %g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
830
- gsl_vector_get(yerr, i));
831
- }
832
- fprintf(fp, "e\n");
833
- fflush(fp);
834
- pclose(fp);
835
- fp = NULL;
836
- return Qtrue;
837
- }
838
-
839
- static VALUE rb_gsl_vector_normalize(int argc, VALUE *argv, VALUE obj)
840
- {
841
- gsl_vector *v = NULL, *vnew = NULL;
842
- // double mean;
843
- double nrm;
844
- switch (argc) {
845
- case 0:
846
- nrm = 1.0;
847
- break;
848
- case 1:
849
- Need_Float(argv[0]);
850
- nrm = NUM2DBL(argv[0]);
851
- break;
852
- default:
853
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
854
- break;
855
- }
856
- Data_Get_Vector(obj, v);
857
- vnew = make_vector_clone(v);
858
- /* mean = gsl_stats_mean(v->data, v->stride, v->size);
859
- gsl_vector_add_constant(vnew, -mean);
860
- sd = gsl_stats_sd(vnew->data, vnew->stride, vnew->size);
861
- gsl_vector_scale(vnew, sqrt(nrm)/sd);*/
862
- gsl_vector_scale(vnew, nrm/gsl_blas_dnrm2(v));
863
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
864
- }
865
-
866
- static VALUE rb_gsl_vector_normalize_bang(int argc, VALUE *argv, VALUE obj)
867
- {
868
- gsl_vector *v = NULL;
869
- // double mean;
870
- double nrm;
871
- double factor;
872
- switch (argc) {
873
- case 0:
874
- nrm = 1.0;
875
- break;
876
- case 1:
877
- Need_Float(argv[0]);
878
- nrm = NUM2DBL(argv[0]);
879
- break;
880
- default:
881
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
882
- break;
883
- }
884
- Data_Get_Vector(obj, v);
885
- /* mean = gsl_stats_mean(v->data, v->stride, v->size);
886
- gsl_vector_add_constant(v, -mean);
887
- sd = gsl_stats_sd(v->data, v->stride, v->size);
888
- gsl_vector_scale(v, sqrt(nrm)/sd);*/
889
- factor = nrm/gsl_blas_dnrm2(v);
890
- gsl_vector_scale(v, factor);
891
- return obj;
892
- }
893
-
894
- #ifdef HAVE_NARRAY_H
895
- static VALUE rb_gsl_vector_filescan_na(VALUE klass, VALUE file)
896
- {
897
- FILE *fp = NULL;
898
- int nn;
899
- char buf[1024], filename[1024], *p;
900
- size_t n, lines, i, j;
901
- double **ptr;
902
- double val;
903
- int shape[1];
904
- VALUE ary, na;
905
- Check_Type(file, T_STRING);
906
- strcpy(filename, STR2CSTR(file));
907
- sprintf(buf, "wc %s", filename);
908
- fp = popen(buf, "r");
909
- if (fgets(buf, 1024, fp) == NULL)
910
- rb_sys_fail(0);
911
- pclose(fp);
912
- sscanf(buf, "%d", &nn);
913
- lines = (size_t) nn; /* vector length */
914
- shape[0] = lines;
915
- fp = fopen(filename, "r");
916
- if (fgets(buf, 1024, fp) == NULL)
917
- rb_sys_fail(0);
918
- n = count_columns(buf); /* number of vectors created */
919
- ptr = (double**) xmalloc(sizeof(double**)*n);
920
- ary = rb_ary_new2(n);
921
- p = buf;
922
- for (j = 0; j < n; j++) {
923
- na = na_make_object(NA_DFLOAT, 1, shape, cNArray);
924
- rb_ary_store(ary, j, na);
925
- ptr[j] = NA_PTR_TYPE(na, double*);
926
- p = str_scan_double(p, &val);
927
- if (p) ptr[j][0] = val;
928
- else break;
929
- }
930
- for (i = 1; i < lines; i++) {
931
- if (fgets(buf, 1024, fp) == NULL)
932
- rb_sys_fail(0);
933
- p = buf;
934
- for (j = 0; j < n; j++) {
935
- p = str_scan_double(p, &val);
936
- if (p) ptr[j][i] = val;
937
- else break;
938
- }
939
- }
940
- fclose(fp);
941
- free(ptr);
942
- return ary;
943
- }
944
- #endif
945
-
946
- static VALUE rb_gsl_vector_decimate(VALUE obj, VALUE nn)
947
- {
948
- gsl_vector *v = NULL, *vnew = NULL;
949
- gsl_vector_view vv;
950
- size_t i, n, n2, n3;
951
- CHECK_FIXNUM(nn);
952
- Data_Get_Vector(obj, v);
953
- n = (size_t) FIX2INT(nn);
954
- if (n > v->size)
955
- rb_raise(rb_eArgError,
956
- "decimation factor must be smaller than the vector length.");
957
- if (n == 0) rb_raise(rb_eArgError, "decimation factor must be greater than 1");
958
- n2 = (size_t) ceil((double)v->size/n);
959
- vnew = gsl_vector_alloc(n2);
960
- n3 = n - (n2*n - v->size);
961
- for (i = 0; i < n2; i++) {
962
- if (i == n2-1) vv = gsl_vector_subvector(v, i*n, n3);
963
- else vv = gsl_vector_subvector(v, i*n, n);
964
- gsl_vector_set(vnew, i, gsl_stats_mean(vv.vector.data, vv.vector.stride,
965
- vv.vector.size));
966
- }
967
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
968
- }
969
-
970
- static VALUE rb_gsl_vector_xxx(VALUE obj, double (*f)(double))
971
- {
972
- gsl_vector *v;
973
- gsl_vector_int *vnew;
974
- size_t i;
975
- Data_Get_Struct(obj, gsl_vector, v);
976
- vnew = gsl_vector_int_alloc(v->size);
977
- for (i = 0; i < v->size; i++) {
978
- gsl_vector_int_set(vnew, i, (int) (*f)(gsl_vector_get(v, i)));
979
- }
980
- return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, vnew);
981
- }
982
-
983
- static VALUE rb_gsl_vector_floor(VALUE obj)
984
- {
985
- return rb_gsl_vector_xxx(obj, floor);
986
- }
987
-
988
- static VALUE rb_gsl_vector_ceil(VALUE obj)
989
- {
990
- return rb_gsl_vector_xxx(obj, ceil);
991
- }
992
-
993
- #ifdef HAVE_ROUND
994
- double round(double x);
995
- #define rb_gsl_round_native round
996
- #else
997
- static double rb_gsl_round_native(double x)
998
- {
999
- if(!gsl_finite(x)) {
1000
- return x; // nan, +inf, -inf
1001
- } else if(x > 0.0) {
1002
- return floor(x+0.5);
1003
- } else if(x < 0.0) {
1004
- return ceil(x-0.5);
1005
- }
1006
- return x; // +0 or -0
1007
- }
1008
- #endif
1009
-
1010
- static VALUE rb_gsl_vector_round(VALUE obj)
1011
- {
1012
- return rb_gsl_vector_xxx(obj, rb_gsl_round_native);
1013
- }
1014
-
1015
- static VALUE rb_gsl_vector_dB(VALUE obj)
1016
- {
1017
- gsl_vector *v, *vnew;
1018
- double x;
1019
- size_t i;
1020
- Data_Get_Struct(obj, gsl_vector, v);
1021
- vnew = gsl_vector_alloc(v->size);
1022
- for (i = 0; i < v->size; i++) {
1023
- x = gsl_vector_get(v, i);
1024
- if (x <= 0.0) rb_raise(rb_eRuntimeError, "negative value found.\n");
1025
- gsl_vector_set(vnew, i, 20*log(x));
1026
- }
1027
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
1028
- }
1029
-
1030
- static VALUE rb_gsl_vector_sin(VALUE obj)
1031
- {
1032
- return rb_gsl_sf_eval1(sin, obj);
1033
- }
1034
-
1035
- static VALUE rb_gsl_vector_cos(VALUE obj)
1036
- {
1037
- return rb_gsl_sf_eval1(cos, obj);
1038
- }
1039
-
1040
- static VALUE rb_gsl_vector_tan(VALUE obj)
1041
- {
1042
- return rb_gsl_sf_eval1(tan, obj);
1043
- }
1044
-
1045
- static VALUE rb_gsl_vector_exp(VALUE obj)
1046
- {
1047
- return rb_gsl_sf_eval1(exp, obj);
1048
- }
1049
-
1050
- static VALUE rb_gsl_vector_log(VALUE obj)
1051
- {
1052
- return rb_gsl_sf_eval1(log, obj);
1053
- }
1054
-
1055
- static VALUE rb_gsl_vector_log10(VALUE obj)
1056
- {
1057
- return rb_gsl_sf_eval1(log10, obj);
1058
- }
1059
-
1060
- static VALUE rb_gsl_vector_rotate_bang(int argc, VALUE *argv, VALUE klass)
1061
- {
1062
- double rad;
1063
- double x, y, c, s;
1064
- gsl_vector *vx, *vy;
1065
- VALUE v0, v1, retval;
1066
- size_t i, n;
1067
- switch (argc) {
1068
- case 2:
1069
- if (TYPE(argv[0]) == T_ARRAY) {
1070
- v0 = rb_ary_entry(argv[0], 0);
1071
- v1 = rb_ary_entry(argv[0], 1);
1072
- if (VECTOR_P(v0) && VECTOR_P(v1)) {
1073
- Data_Get_Struct(v0, gsl_vector, vx);
1074
- Data_Get_Struct(v1, gsl_vector, vy);
1075
- n = (size_t) GSL_MIN(vx->size, vy->size);
1076
- rad = NUM2DBL(argv[1]);
1077
- retval = argv[0];
1078
- } else {
1079
- x = NUM2DBL(rb_ary_entry(argv[0], 0));
1080
- y = NUM2DBL(rb_ary_entry(argv[0], 1));
1081
- rad = NUM2DBL(argv[1]);
1082
- c = cos(rad); s = sin(rad);
1083
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
1084
- }
1085
- } else {
1086
- rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
1087
- rb_class2name(CLASS_OF(argv[0])));
1088
- }
1089
- break;
1090
- case 3:
1091
- if (VECTOR_P(argv[0]) && VECTOR_P(argv[1])) {
1092
- Data_Get_Struct(argv[0], gsl_vector, vx);
1093
- Data_Get_Struct(argv[1], gsl_vector, vy);
1094
- n = (size_t) GSL_MIN(vx->size, vy->size);
1095
- rad = NUM2DBL(argv[1]);
1096
- retval = rb_ary_new3(2, argv[0], argv[1]);
1097
- } else {
1098
- x = NUM2DBL(argv[0]);
1099
- y = NUM2DBL(argv[1]);
1100
- rad = NUM2DBL(argv[2]);
1101
- c = cos(rad); s = sin(rad);
1102
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
1103
- }
1104
- break;
1105
- default:
1106
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1107
- break;
1108
- }
1109
- c = cos(rad); s = sin(rad);
1110
- for (i = 0; i < n; i++) {
1111
- x = gsl_vector_get(vx, i);
1112
- y = gsl_vector_get(vy, i);
1113
- gsl_vector_set(vx, i, c*x - s*y);
1114
- gsl_vector_set(vy, i, s*x + c*y);
1115
- }
1116
- return retval;
1117
- }
1118
-
1119
- static VALUE rb_gsl_vector_rotate(int argc, VALUE *argv, VALUE klass)
1120
- {
1121
- double rad;
1122
- double x, y, c, s;
1123
- gsl_vector *vx, *vy, *vxnew, *vynew;
1124
- VALUE v0, v1;
1125
- size_t i, n;
1126
- switch (argc) {
1127
- case 2:
1128
- if (TYPE(argv[0]) == T_ARRAY) {
1129
- v0 = rb_ary_entry(argv[0], 0);
1130
- v1 = rb_ary_entry(argv[0], 1);
1131
- if (VECTOR_P(v0) && VECTOR_P(v1)) {
1132
- Data_Get_Struct(v0, gsl_vector, vx);
1133
- Data_Get_Struct(v1, gsl_vector, vy);
1134
- rad = NUM2DBL(argv[1]);
1135
- } else {
1136
- x = NUM2DBL(rb_ary_entry(argv[0], 0));
1137
- y = NUM2DBL(rb_ary_entry(argv[0], 1));
1138
- rad = NUM2DBL(argv[1]);
1139
- c = cos(rad); s = sin(rad);
1140
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
1141
- }
1142
- } else {
1143
- rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
1144
- rb_class2name(CLASS_OF(argv[0])));
1145
- }
1146
- break;
1147
- case 3:
1148
- if (VECTOR_P(argv[0]) && VECTOR_P(argv[1])) {
1149
- Data_Get_Struct(argv[0], gsl_vector, vx);
1150
- Data_Get_Struct(argv[1], gsl_vector, vy);
1151
- rad = NUM2DBL(argv[1]);
1152
- } else {
1153
- x = NUM2DBL(argv[0]);
1154
- y = NUM2DBL(argv[1]);
1155
- rad = NUM2DBL(argv[2]);
1156
- c = cos(rad); s = sin(rad);
1157
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
1158
- }
1159
- break;
1160
- default:
1161
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1162
- break;
1163
- }
1164
- n = (size_t) GSL_MIN(vx->size, vy->size);
1165
- vxnew = gsl_vector_alloc(n);
1166
- vynew = gsl_vector_alloc(n);
1167
- c = cos(rad); s = sin(rad);
1168
- for (i = 0; i < n; i++) {
1169
- x = gsl_vector_get(vx, i);
1170
- y = gsl_vector_get(vy, i);
1171
- gsl_vector_set(vxnew, i, c*x - s*y);
1172
- gsl_vector_set(vynew, i, s*x + c*y);
1173
- }
1174
- return rb_ary_new3(2, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vxnew),
1175
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vynew));
1176
- }
1177
-
1178
- #include "gsl/gsl_fit.h"
1179
-
1180
- static VALUE rb_gsl_vector_linearfit(int argc, VALUE *argv, VALUE klass)
1181
- {
1182
- gsl_vector *x, *y, *w = NULL;
1183
- double c0, c1, c00, c01, c11, sumsq;
1184
- switch (argc) {
1185
- case 3:
1186
- CHECK_VECTOR(argv[0]); CHECK_VECTOR(argv[1]); CHECK_VECTOR(argv[2]);
1187
- Data_Get_Struct(argv[0], gsl_vector, x);
1188
- Data_Get_Struct(argv[1], gsl_vector, w);
1189
- Data_Get_Struct(argv[2], gsl_vector, y);
1190
- gsl_fit_wlinear(x->data, x->stride, w->data, w->stride,
1191
- y->data, y->stride, y->size, &c0, &c1, &c00, &c01, &c11,
1192
- &sumsq);
1193
- break;
1194
- case 2:
1195
- CHECK_VECTOR(argv[0]); CHECK_VECTOR(argv[1]);
1196
- Data_Get_Struct(argv[0], gsl_vector, x);
1197
- Data_Get_Struct(argv[1], gsl_vector, y);
1198
- gsl_fit_linear(x->data, x->stride, y->data,y->stride, y->size,
1199
- &c0, &c1, &c00, &c01, &c11, &sumsq);
1200
- break;
1201
- default:
1202
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 2 or 3).\n", argc);
1203
- }
1204
- return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1), rb_float_new(c00),
1205
- rb_float_new(c01), rb_float_new(c11), rb_float_new(sumsq));
1206
- }
1207
-
1208
- static VALUE rb_gsl_vector_center(VALUE obj)
1209
- {
1210
- gsl_vector *v, *vnew;
1211
- double mean;
1212
- Data_Get_Struct(obj, gsl_vector, v);
1213
- mean = gsl_stats_mean(v->data, v->stride, v->size);
1214
- vnew = gsl_vector_alloc(v->size);
1215
- gsl_vector_memcpy(vnew, v);
1216
- gsl_vector_add_constant(vnew, -mean);
1217
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
1218
- }
1219
-
1220
- static VALUE rb_gsl_vector_clip(int argc, VALUE *argv, VALUE obj)
1221
- {
1222
- gsl_vector *v, *vnew;
1223
- double hi = 1.0, lo = 0.0;
1224
- double x;
1225
- size_t i;
1226
- Data_Get_Struct(obj, gsl_vector, v);
1227
- switch (argc) {
1228
- case 0:
1229
- break;
1230
- case 1:
1231
- if (TYPE(argv[0]) == T_ARRAY) {
1232
- lo = NUM2DBL(rb_ary_entry(argv[0], 0));
1233
- hi = NUM2DBL(rb_ary_entry(argv[0], 1));
1234
- } else {
1235
- hi = NUM2DBL(argv[0]);
1236
- }
1237
- break;
1238
- case 2:
1239
- lo = NUM2DBL(argv[0]);
1240
- hi = NUM2DBL(argv[1]);
1241
- break;
1242
- default:
1243
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0-2).\n", argc);
1244
- }
1245
- vnew = gsl_vector_alloc(v->size);
1246
- for (i = 0; i < v->size; i++) {
1247
- x = gsl_vector_get(v, i);
1248
- if (x > hi) x = hi;
1249
- else if (x < lo) x = lo;
1250
- else {}
1251
- gsl_vector_set(vnew, i, x);
1252
- }
1253
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
1254
- }
1255
-
1256
- static VALUE rb_gsl_vector_amp_phase(VALUE obj)
1257
- {
1258
- gsl_vector *v;
1259
- gsl_vector *amp, *phase;
1260
- double re, im;
1261
- VALUE vamp, vphase;
1262
- size_t i;
1263
- Data_Get_Struct(obj, gsl_vector, v);
1264
- amp = gsl_vector_alloc(v->size/2);
1265
- phase = gsl_vector_alloc(v->size/2);
1266
- gsl_vector_set(amp, 0, gsl_vector_get(v, 0));
1267
- gsl_vector_set(phase, 0, 0);
1268
- gsl_vector_set(amp, amp->size-1, gsl_vector_get(v, v->size-1));
1269
- gsl_vector_set(phase, phase->size-1, 0);
1270
- for (i = 1; i < v->size-1; i += 2) {
1271
- re = gsl_vector_get(v, i);
1272
- im = gsl_vector_get(v, i+1);
1273
- gsl_vector_set(amp, i/2+1, sqrt(re*re + im*im));
1274
- gsl_vector_set(phase, i/2+1, atan2(im, re));
1275
- }
1276
- vamp = Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, amp);
1277
- vphase = Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, phase);
1278
- return rb_ary_new3(2, vamp, vphase);
1279
- }
1280
-
1281
-
1282
- static VALUE rb_gsl_vector_clean(int argc, VALUE *argv, VALUE obj)
1283
- {
1284
- gsl_vector *v = NULL, *vnew = NULL;
1285
- double eps = 1e-10;
1286
- size_t n, i;
1287
- switch (argc) {
1288
- case 0:
1289
- /* do nothing */
1290
- break;
1291
- case 1:
1292
- Need_Float(argv[0]);
1293
- eps = NUM2DBL(argv[0]);
1294
- break;
1295
- default:
1296
- rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
1297
- break;
1298
- }
1299
- Data_Get_Struct(obj, gsl_vector, v);
1300
- vnew = make_vector_clone(v);
1301
- n = v->size;
1302
- for (i = 0; i < n; i++) if (fabs(vnew->data[i]) < eps) vnew->data[i] = 0.0;
1303
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
1304
- }
1305
-
1306
- static VALUE rb_gsl_vector_clean_bang(int argc, VALUE *argv, VALUE obj)
1307
- {
1308
- gsl_vector *v = NULL;
1309
- double eps = 1e-10;
1310
- size_t n, i;
1311
- switch (argc) {
1312
- case 0:
1313
- /* do nothing */
1314
- break;
1315
- case 1:
1316
- Need_Float(argv[0]);
1317
- eps = NUM2DBL(argv[0]);
1318
- break;
1319
- default:
1320
- rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
1321
- break;
1322
- }
1323
- Data_Get_Struct(obj, gsl_vector, v);
1324
- n = v->size;
1325
- for (i = 0; i < n; i++) if (fabs(v->data[i]) < eps) v->data[i] = 0.0;
1326
- return obj;
1327
- }
1328
-
1329
- VALUE rb_gsl_pow(VALUE obj, VALUE xx, VALUE nn);
1330
- VALUE rb_gsl_vector_pow(VALUE obj, VALUE p)
1331
- {
1332
- return rb_gsl_pow(Qnil, obj, p);
1333
- }
1334
-
1335
- VALUE rb_gsl_vector_pow_bang(VALUE obj, VALUE pp)
1336
- {
1337
- gsl_vector *v;
1338
- double p;
1339
- size_t i;
1340
- Data_Get_Struct(obj, gsl_vector, v);
1341
- p = NUM2DBL(pp);
1342
- for (i = 0; i < v->size; i++) {
1343
- gsl_vector_set(v, i, pow(gsl_vector_get(v, i), p));
1344
- }
1345
- return obj;
1346
- }
1347
-
1348
- void Init_gsl_vector(VALUE module)
1349
- {
1350
- rb_define_singleton_method(cgsl_vector, "linspace", rb_gsl_vector_linspace, -1);
1351
- rb_define_module_function(module, "linspace", rb_gsl_vector_linspace, -1);
1352
- rb_define_singleton_method(cgsl_vector, "logspace", rb_gsl_vector_logspace, -1);
1353
- rb_define_module_function(module, "logspace", rb_gsl_vector_logspace, -1);
1354
- rb_define_singleton_method(cgsl_vector, "logspace2", rb_gsl_vector_logspace2, -1);
1355
- rb_define_module_function(module, "logspace2", rb_gsl_vector_logspace2, -1);
1356
-
1357
- rb_define_method(cgsl_vector, "add", rb_gsl_vector_add, 1);
1358
- rb_define_alias(cgsl_vector, "+", "add");
1359
- rb_define_method(cgsl_vector, "sub", rb_gsl_vector_sub, 1);
1360
- rb_define_alias(cgsl_vector, "-", "sub");
1361
- rb_define_method(cgsl_vector, "mul", rb_gsl_vector_mul, 1);
1362
- rb_define_alias(cgsl_vector, "*", "mul");
1363
- rb_define_method(cgsl_vector, "div", rb_gsl_vector_div, 1);
1364
- rb_define_alias(cgsl_vector, "/", "div");
1365
-
1366
- rb_define_method(cgsl_vector, "to_complex", rb_gsl_vector_to_complex, 0);
1367
- rb_define_method(cgsl_vector, "to_complex2", rb_gsl_vector_to_complex2, 0);
1368
-
1369
- /*****/
1370
-
1371
- rb_define_method(cgsl_vector, "coerce", rb_gsl_vector_coerce, 1);
1372
-
1373
- /*****/
1374
- rb_define_method(rb_cArray, "to_gv", rb_ary_to_gv0, 0);
1375
- rb_define_alias(rb_cArray, "to_gslv", "to_gv");
1376
- rb_define_alias(rb_cArray, "to_gsl_vector", "to_gv");
1377
- rb_define_method(rb_cRange, "to_gv", rb_gsl_range_to_gv, 0);
1378
- rb_define_alias(rb_cRange, "to_gslv", "to_gv");
1379
- rb_define_alias(rb_cRange, "to_gsl_vector", "to_gv");
1380
- rb_define_singleton_method(cgsl_vector, "ary_to_gv", rb_ary_to_gv, 1);
1381
-
1382
- /*****/
1383
- rb_define_method(cgsl_vector, "to_i", rb_gsl_vector_to_i, 0);
1384
- rb_define_method(cgsl_vector, "to_f", rb_gsl_vector_to_f, 0);
1385
-
1386
- rb_define_singleton_method(cgsl_vector, "graph", rb_gsl_vector_graph2, -1);
1387
- rb_define_module_function(module, "graph", rb_gsl_vector_graph2, -1);
1388
- rb_define_singleton_method(cgsl_vector, "plot", rb_gsl_vector_plot2, -1);
1389
-
1390
- /*****/
1391
-
1392
- rb_define_method(cgsl_vector, "normalize", rb_gsl_vector_normalize, -1);
1393
- rb_define_method(cgsl_vector, "normalize!", rb_gsl_vector_normalize_bang, -1);
1394
-
1395
- #ifdef HAVE_NARRAY_H
1396
- rb_define_singleton_method(cgsl_vector, "filescan_na", rb_gsl_vector_filescan_na, 1);
1397
- rb_define_singleton_method(cNArray, "filescan", rb_gsl_vector_filescan_na, 1);
1398
- #endif
1399
-
1400
- rb_define_method(cgsl_vector, "decimate", rb_gsl_vector_decimate, 1);
1401
-
1402
- rb_define_method(cgsl_vector, "floor", rb_gsl_vector_floor, 0);
1403
- rb_define_method(cgsl_vector, "ceil", rb_gsl_vector_ceil, 0);
1404
- rb_define_method(cgsl_vector, "round", rb_gsl_vector_round, 0);
1405
-
1406
- rb_define_method(cgsl_vector, "dB", rb_gsl_vector_dB, 0);
1407
-
1408
- rb_define_method(cgsl_vector, "sin", rb_gsl_vector_sin, 0);
1409
- rb_define_method(cgsl_vector, "cos", rb_gsl_vector_cos, 0);
1410
- rb_define_method(cgsl_vector, "tan", rb_gsl_vector_tan, 0);
1411
- rb_define_method(cgsl_vector, "exp", rb_gsl_vector_exp, 0);
1412
- rb_define_method(cgsl_vector, "log", rb_gsl_vector_log, 0);
1413
- rb_define_method(cgsl_vector, "log10", rb_gsl_vector_log10, 0);
1414
-
1415
- rb_define_singleton_method(cgsl_vector, "rotate", rb_gsl_vector_rotate, -1);
1416
- rb_define_singleton_method(cgsl_vector, "rotate!", rb_gsl_vector_rotate_bang, -1);
1417
-
1418
- rb_define_singleton_method(cgsl_vector, "linearfit", rb_gsl_vector_linearfit, -1);
1419
-
1420
- rb_define_method(cgsl_vector, "center", rb_gsl_vector_center, 0);
1421
- rb_define_method(cgsl_vector, "clip", rb_gsl_vector_clip, -1);
1422
-
1423
- rb_define_method(cgsl_vector, "amp_phase", rb_gsl_vector_amp_phase, 0);
1424
- rb_define_method(cgsl_vector, "clean", rb_gsl_vector_clean, -1);
1425
- rb_define_method(cgsl_vector, "clean!", rb_gsl_vector_clean_bang, -1);
1426
-
1427
- rb_define_method(cgsl_vector, "pow", rb_gsl_vector_pow, 1);
1428
- rb_define_alias(cgsl_vector, "**", "pow");
1429
-
1430
- rb_define_method(cgsl_vector, "pow!", rb_gsl_vector_pow_bang, 1);
1431
-
1432
- Init_gsl_vector_init(module);
1433
- }