gsl 1.15.3 → 1.16.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (446) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +24 -0
  4. data/AUTHORS +10 -2
  5. data/COPYING +341 -339
  6. data/ChangeLog +612 -554
  7. data/Gemfile +4 -0
  8. data/README.md +77 -0
  9. data/Rakefile +14 -93
  10. data/THANKS +1 -1
  11. data/examples/blas/blas.rb +1 -1
  12. data/examples/bspline.rb +3 -3
  13. data/examples/complex/functions.rb +4 -4
  14. data/examples/complex/mul.rb +1 -1
  15. data/examples/const/physconst.rb +4 -4
  16. data/examples/const/travel.rb +4 -4
  17. data/examples/eigen/nonsymmv.rb +1 -1
  18. data/examples/eigen/qhoscillator.rb +3 -3
  19. data/examples/fft/radix2.rb +1 -1
  20. data/examples/fft/real-halfcomplex.rb +3 -3
  21. data/examples/fft/real-halfcomplex2.rb +3 -3
  22. data/examples/fit/expfit.rb +1 -1
  23. data/examples/fit/multifit.rb +1 -1
  24. data/examples/fit/ndlinear.rb +44 -44
  25. data/examples/fit/nonlinearfit.rb +1 -1
  26. data/examples/fit/wlinear.rb +3 -3
  27. data/examples/function/function.rb +1 -1
  28. data/examples/function/min.rb +1 -1
  29. data/examples/function/synchrotron.rb +2 -2
  30. data/examples/gallery/koch.rb +1 -1
  31. data/examples/histogram/cauchy.rb +2 -2
  32. data/examples/histogram/exponential.rb +1 -1
  33. data/examples/histogram/histo3d.rb +1 -1
  34. data/examples/histogram/histogram-pdf.rb +2 -2
  35. data/examples/histogram/xexp.rb +1 -1
  36. data/examples/integration/ahmed.rb +2 -2
  37. data/examples/integration/cosmology.rb +7 -7
  38. data/examples/integration/friedmann.rb +4 -4
  39. data/examples/integration/qng.rb +1 -1
  40. data/examples/interp/demo.rb +2 -2
  41. data/examples/linalg/LQ_solve.rb +1 -1
  42. data/examples/linalg/LU.rb +1 -1
  43. data/examples/linalg/LU2.rb +1 -1
  44. data/examples/linalg/LU_narray.rb +1 -1
  45. data/examples/linalg/PTLQ.rb +1 -1
  46. data/examples/linalg/QRPT.rb +1 -1
  47. data/examples/linalg/chol.rb +1 -1
  48. data/examples/linalg/chol_narray.rb +1 -1
  49. data/examples/linalg/complex.rb +1 -1
  50. data/examples/math/elementary.rb +1 -1
  51. data/examples/math/functions.rb +1 -1
  52. data/examples/math/inf_nan.rb +1 -1
  53. data/examples/math/minmax.rb +1 -1
  54. data/examples/math/power.rb +1 -1
  55. data/examples/math/test.rb +1 -1
  56. data/examples/min.rb +1 -1
  57. data/examples/multimin/bundle.rb +1 -1
  58. data/examples/multimin/cqp.rb +17 -17
  59. data/examples/multiroot/fsolver3.rb +1 -1
  60. data/examples/odeiv/binarysystem.rb +12 -12
  61. data/examples/odeiv/demo.rb +3 -3
  62. data/examples/odeiv/frei1.rb +7 -7
  63. data/examples/odeiv/frei2.rb +4 -4
  64. data/examples/odeiv/oscillator.rb +1 -1
  65. data/examples/odeiv/sedov.rb +3 -3
  66. data/examples/odeiv/whitedwarf.rb +11 -11
  67. data/examples/permutation/ex1.rb +2 -2
  68. data/examples/permutation/permutation.rb +1 -1
  69. data/examples/poly/demo.rb +1 -1
  70. data/examples/random/diffusion.rb +1 -1
  71. data/examples/random/generator.rb +2 -2
  72. data/examples/random/randomwalk.rb +3 -3
  73. data/examples/random/rng.rb +1 -1
  74. data/examples/roots/bisection.rb +1 -1
  75. data/examples/roots/brent.rb +1 -1
  76. data/examples/roots/demo.rb +1 -1
  77. data/examples/roots/newton.rb +2 -2
  78. data/examples/roots/recombination.gp +0 -1
  79. data/examples/sf/hyperg.rb +1 -1
  80. data/examples/sf/sphbessel.rb +1 -1
  81. data/examples/sort/sort.rb +1 -1
  82. data/examples/tamu_anova.rb +4 -4
  83. data/examples/vector/add.rb +1 -1
  84. data/examples/vector/decimate.rb +1 -1
  85. data/examples/vector/gnuplot.rb +8 -8
  86. data/examples/vector/vector.rb +2 -2
  87. data/examples/wavelet/wavelet1.rb +1 -1
  88. data/ext/{alf.c → gsl_native/alf.c} +10 -10
  89. data/ext/{array.c → gsl_native/array.c} +70 -159
  90. data/ext/{array_complex.c → gsl_native/array_complex.c} +63 -66
  91. data/ext/{blas.c → gsl_native/blas.c} +2 -3
  92. data/ext/{blas1.c → gsl_native/blas1.c} +35 -36
  93. data/ext/{blas2.c → gsl_native/blas2.c} +57 -62
  94. data/ext/{blas3.c → gsl_native/blas3.c} +57 -58
  95. data/ext/{block.c → gsl_native/block.c} +14 -18
  96. data/ext/{block_source.c → gsl_native/block_source.h} +110 -112
  97. data/ext/gsl_native/bspline.c +122 -0
  98. data/ext/{bundle.c → gsl_native/bundle.c} +0 -0
  99. data/ext/{cdf.c → gsl_native/cdf.c} +79 -93
  100. data/ext/{cheb.c → gsl_native/cheb.c} +78 -89
  101. data/ext/{combination.c → gsl_native/combination.c} +11 -19
  102. data/ext/{common.c → gsl_native/common.c} +9 -41
  103. data/ext/{complex.c → gsl_native/complex.c} +116 -118
  104. data/ext/gsl_native/const.c +331 -0
  105. data/ext/{const_additional.c → gsl_native/const_additional.c} +13 -34
  106. data/ext/gsl_native/cqp.c +283 -0
  107. data/ext/{deriv.c → gsl_native/deriv.c} +25 -33
  108. data/ext/{dht.c → gsl_native/dht.c} +23 -31
  109. data/ext/{diff.c → gsl_native/diff.c} +26 -28
  110. data/ext/{dirac.c → gsl_native/dirac.c} +45 -46
  111. data/ext/{eigen.c → gsl_native/eigen.c} +1044 -1095
  112. data/ext/{error.c → gsl_native/error.c} +18 -18
  113. data/ext/gsl_native/extconf.rb +118 -0
  114. data/ext/{fft.c → gsl_native/fft.c} +197 -204
  115. data/ext/{fit.c → gsl_native/fit.c} +17 -18
  116. data/ext/gsl_native/fresnel.c +312 -0
  117. data/ext/{function.c → gsl_native/function.c} +37 -43
  118. data/ext/{geometry.c → gsl_native/geometry.c} +16 -16
  119. data/ext/{graph.c → gsl_native/graph.c} +39 -89
  120. data/ext/{gsl.c → gsl_native/gsl.c} +12 -33
  121. data/ext/{gsl_narray.c → gsl_native/gsl_narray.c} +20 -30
  122. data/ext/{histogram.c → gsl_native/histogram.c} +133 -160
  123. data/ext/{histogram2d.c → gsl_native/histogram2d.c} +78 -104
  124. data/ext/{histogram3d.c → gsl_native/histogram3d.c} +76 -76
  125. data/ext/{histogram3d_source.c → gsl_native/histogram3d_source.c} +196 -197
  126. data/ext/{histogram_find.c → gsl_native/histogram_find.c} +32 -34
  127. data/ext/{histogram_oper.c → gsl_native/histogram_oper.c} +43 -52
  128. data/ext/{ieee.c → gsl_native/ieee.c} +9 -21
  129. data/{include → ext/gsl_native/include}/rb_gsl.h +4 -26
  130. data/{include → ext/gsl_native/include}/rb_gsl_array.h +15 -39
  131. data/{include → ext/gsl_native/include}/rb_gsl_cheb.h +0 -2
  132. data/{include → ext/gsl_native/include}/rb_gsl_common.h +61 -61
  133. data/{include → ext/gsl_native/include}/rb_gsl_complex.h +1 -1
  134. data/{include → ext/gsl_native/include}/rb_gsl_const.h +0 -6
  135. data/ext/gsl_native/include/rb_gsl_dirac.h +6 -0
  136. data/{include → ext/gsl_native/include}/rb_gsl_eigen.h +1 -1
  137. data/{include → ext/gsl_native/include}/rb_gsl_fft.h +0 -13
  138. data/{include → ext/gsl_native/include}/rb_gsl_fit.h +0 -2
  139. data/{include → ext/gsl_native/include}/rb_gsl_function.h +0 -4
  140. data/{include → ext/gsl_native/include}/rb_gsl_graph.h +2 -4
  141. data/{include → ext/gsl_native/include}/rb_gsl_histogram.h +8 -8
  142. data/{include → ext/gsl_native/include}/rb_gsl_histogram3d.h +50 -50
  143. data/{include → ext/gsl_native/include}/rb_gsl_integration.h +1 -1
  144. data/{include → ext/gsl_native/include}/rb_gsl_interp.h +0 -5
  145. data/{include → ext/gsl_native/include}/rb_gsl_linalg.h +2 -6
  146. data/{include → ext/gsl_native/include}/rb_gsl_math.h +0 -6
  147. data/{include → ext/gsl_native/include}/rb_gsl_odeiv.h +0 -3
  148. data/{include → ext/gsl_native/include}/rb_gsl_poly.h +3 -7
  149. data/{include → ext/gsl_native/include}/rb_gsl_rational.h +1 -8
  150. data/{include → ext/gsl_native/include}/rb_gsl_rng.h +0 -1
  151. data/{include → ext/gsl_native/include}/rb_gsl_root.h +1 -1
  152. data/{include → ext/gsl_native/include}/rb_gsl_sf.h +39 -48
  153. data/{include → ext/gsl_native/include}/rb_gsl_statistics.h +1 -1
  154. data/{include → ext/gsl_native/include}/rb_gsl_tensor.h +0 -2
  155. data/{include → ext/gsl_native/include}/rb_gsl_with_narray.h +3 -1
  156. data/{include → ext/gsl_native/include}/templates_off.h +0 -0
  157. data/{include → ext/gsl_native/include}/templates_on.h +1 -1
  158. data/ext/{integration.c → gsl_native/integration.c} +164 -189
  159. data/ext/{interp.c → gsl_native/interp.c} +25 -38
  160. data/ext/gsl_native/jacobi.c +733 -0
  161. data/ext/{linalg.c → gsl_native/linalg.c} +462 -589
  162. data/ext/{linalg_complex.c → gsl_native/linalg_complex.c} +93 -106
  163. data/ext/{math.c → gsl_native/math.c} +48 -67
  164. data/ext/{matrix.c → gsl_native/matrix.c} +13 -16
  165. data/ext/{matrix_complex.c → gsl_native/matrix_complex.c} +119 -123
  166. data/ext/{matrix_double.c → gsl_native/matrix_double.c} +79 -82
  167. data/ext/{matrix_int.c → gsl_native/matrix_int.c} +53 -54
  168. data/ext/{matrix_source.c → gsl_native/matrix_source.h} +292 -318
  169. data/ext/{min.c → gsl_native/min.c} +45 -76
  170. data/ext/{monte.c → gsl_native/monte.c} +50 -64
  171. data/ext/{multifit.c → gsl_native/multifit.c} +142 -151
  172. data/ext/{multimin.c → gsl_native/multimin.c} +64 -92
  173. data/ext/{multimin_fsdf.c → gsl_native/multimin_fsdf.c} +16 -16
  174. data/ext/{multiroots.c → gsl_native/multiroots.c} +73 -76
  175. data/ext/{multiset.c → gsl_native/multiset.c} +4 -8
  176. data/ext/{ndlinear.c → gsl_native/ndlinear.c} +320 -321
  177. data/ext/{nmf.c → gsl_native/nmf.c} +11 -11
  178. data/ext/{nmf_wrap.c → gsl_native/nmf_wrap.c} +1 -1
  179. data/ext/{ntuple.c → gsl_native/ntuple.c} +23 -23
  180. data/ext/{odeiv.c → gsl_native/odeiv.c} +101 -116
  181. data/ext/gsl_native/ool.c +879 -0
  182. data/ext/{permutation.c → gsl_native/permutation.c} +39 -37
  183. data/ext/{poly.c → gsl_native/poly.c} +10 -13
  184. data/ext/{poly2.c → gsl_native/poly2.c} +16 -16
  185. data/ext/{poly_source.c → gsl_native/poly_source.h} +249 -293
  186. data/ext/{qrng.c → gsl_native/qrng.c} +9 -20
  187. data/ext/{randist.c → gsl_native/randist.c} +222 -247
  188. data/ext/{rational.c → gsl_native/rational.c} +12 -12
  189. data/ext/{rng.c → gsl_native/rng.c} +30 -47
  190. data/ext/{root.c → gsl_native/root.c} +47 -48
  191. data/ext/{sf.c → gsl_native/sf.c} +196 -244
  192. data/ext/{sf_airy.c → gsl_native/sf_airy.c} +2 -2
  193. data/ext/{sf_bessel.c → gsl_native/sf_bessel.c} +7 -7
  194. data/ext/{sf_clausen.c → gsl_native/sf_clausen.c} +1 -1
  195. data/ext/{sf_coulomb.c → gsl_native/sf_coulomb.c} +40 -40
  196. data/ext/{sf_coupling.c → gsl_native/sf_coupling.c} +30 -30
  197. data/ext/{sf_dawson.c → gsl_native/sf_dawson.c} +1 -1
  198. data/ext/{sf_debye.c → gsl_native/sf_debye.c} +1 -10
  199. data/ext/{sf_dilog.c → gsl_native/sf_dilog.c} +1 -1
  200. data/ext/{sf_elementary.c → gsl_native/sf_elementary.c} +3 -3
  201. data/ext/{sf_ellint.c → gsl_native/sf_ellint.c} +43 -43
  202. data/ext/{sf_elljac.c → gsl_native/sf_elljac.c} +3 -3
  203. data/ext/{sf_erfc.c → gsl_native/sf_erfc.c} +1 -5
  204. data/ext/{sf_exp.c → gsl_native/sf_exp.c} +3 -3
  205. data/ext/{sf_expint.c → gsl_native/sf_expint.c} +2 -12
  206. data/ext/{sf_fermi_dirac.c → gsl_native/sf_fermi_dirac.c} +1 -1
  207. data/ext/{sf_gamma.c → gsl_native/sf_gamma.c} +2 -6
  208. data/ext/{sf_gegenbauer.c → gsl_native/sf_gegenbauer.c} +1 -1
  209. data/ext/{sf_hyperg.c → gsl_native/sf_hyperg.c} +1 -1
  210. data/ext/{sf_laguerre.c → gsl_native/sf_laguerre.c} +4 -4
  211. data/ext/{sf_lambert.c → gsl_native/sf_lambert.c} +1 -1
  212. data/ext/{sf_legendre.c → gsl_native/sf_legendre.c} +1 -1
  213. data/ext/{sf_log.c → gsl_native/sf_log.c} +4 -4
  214. data/ext/gsl_native/sf_mathieu.c +235 -0
  215. data/ext/{sf_power.c → gsl_native/sf_power.c} +1 -1
  216. data/ext/{sf_psi.c → gsl_native/sf_psi.c} +3 -12
  217. data/ext/{sf_synchrotron.c → gsl_native/sf_synchrotron.c} +1 -1
  218. data/ext/{sf_transport.c → gsl_native/sf_transport.c} +1 -1
  219. data/ext/{sf_trigonometric.c → gsl_native/sf_trigonometric.c} +4 -4
  220. data/ext/{sf_zeta.c → gsl_native/sf_zeta.c} +1 -5
  221. data/ext/{signal.c → gsl_native/signal.c} +63 -68
  222. data/ext/{siman.c → gsl_native/siman.c} +45 -49
  223. data/ext/{sort.c → gsl_native/sort.c} +6 -7
  224. data/ext/{spline.c → gsl_native/spline.c} +28 -46
  225. data/ext/{stats.c → gsl_native/stats.c} +105 -118
  226. data/ext/{sum.c → gsl_native/sum.c} +34 -34
  227. data/ext/{tamu_anova.c → gsl_native/tamu_anova.c} +1 -1
  228. data/ext/{tensor.c → gsl_native/tensor.c} +8 -11
  229. data/ext/{tensor_source.c → gsl_native/tensor_source.h} +147 -148
  230. data/ext/{vector.c → gsl_native/vector.c} +11 -14
  231. data/ext/{vector_complex.c → gsl_native/vector_complex.c} +179 -184
  232. data/ext/{vector_double.c → gsl_native/vector_double.c} +178 -183
  233. data/ext/{vector_int.c → gsl_native/vector_int.c} +27 -29
  234. data/ext/{vector_source.c → gsl_native/vector_source.h} +428 -443
  235. data/ext/{wavelet.c → gsl_native/wavelet.c} +224 -246
  236. data/gsl.gemspec +29 -0
  237. data/lib/gsl.rb +8 -3
  238. data/lib/gsl/gnuplot.rb +3 -3
  239. data/lib/gsl/oper.rb +35 -60
  240. data/lib/gsl/version.rb +3 -0
  241. data/lib/rbgsl.rb +1 -3
  242. data/rdoc/alf.rdoc +5 -5
  243. data/rdoc/blas.rdoc +9 -9
  244. data/rdoc/bspline.rdoc +17 -17
  245. data/rdoc/changes.rdoc +4 -9
  246. data/rdoc/cheb.rdoc +25 -25
  247. data/rdoc/cholesky_complex.rdoc +21 -21
  248. data/rdoc/combi.rdoc +37 -37
  249. data/rdoc/complex.rdoc +22 -22
  250. data/rdoc/const.rdoc +47 -47
  251. data/rdoc/dht.rdoc +49 -49
  252. data/rdoc/diff.rdoc +42 -42
  253. data/rdoc/ehandling.rdoc +6 -6
  254. data/rdoc/eigen.rdoc +153 -153
  255. data/rdoc/fft.rdoc +146 -146
  256. data/rdoc/fit.rdoc +109 -109
  257. data/rdoc/function.rdoc +11 -11
  258. data/rdoc/graph.rdoc +17 -17
  259. data/rdoc/hist.rdoc +103 -103
  260. data/rdoc/hist2d.rdoc +42 -42
  261. data/rdoc/hist3d.rdoc +9 -9
  262. data/rdoc/integration.rdoc +110 -110
  263. data/rdoc/interp.rdoc +71 -71
  264. data/rdoc/intro.rdoc +8 -8
  265. data/rdoc/linalg.rdoc +188 -188
  266. data/rdoc/linalg_complex.rdoc +1 -1
  267. data/rdoc/math.rdoc +58 -58
  268. data/rdoc/matrix.rdoc +275 -275
  269. data/rdoc/min.rdoc +57 -57
  270. data/rdoc/monte.rdoc +22 -22
  271. data/rdoc/multimin.rdoc +95 -95
  272. data/rdoc/multiroot.rdoc +80 -80
  273. data/rdoc/narray.rdoc +32 -32
  274. data/rdoc/ndlinear.rdoc +54 -54
  275. data/rdoc/nonlinearfit.rdoc +100 -100
  276. data/rdoc/ntuple.rdoc +31 -31
  277. data/rdoc/odeiv.rdoc +88 -88
  278. data/rdoc/perm.rdoc +90 -90
  279. data/rdoc/poly.rdoc +66 -66
  280. data/rdoc/qrng.rdoc +21 -21
  281. data/rdoc/randist.rdoc +82 -82
  282. data/rdoc/ref.rdoc +57 -57
  283. data/rdoc/rng.rdoc +85 -85
  284. data/rdoc/roots.rdoc +57 -57
  285. data/rdoc/sf.rdoc +428 -428
  286. data/rdoc/siman.rdoc +19 -19
  287. data/rdoc/sort.rdoc +30 -30
  288. data/rdoc/start.rdoc +8 -8
  289. data/rdoc/stats.rdoc +52 -52
  290. data/rdoc/sum.rdoc +12 -12
  291. data/rdoc/tensor.rdoc +31 -31
  292. data/rdoc/tut.rdoc +1 -1
  293. data/rdoc/use.rdoc +39 -39
  294. data/rdoc/vector.rdoc +188 -188
  295. data/rdoc/vector_complex.rdoc +24 -24
  296. data/rdoc/wavelet.rdoc +46 -46
  297. data/test/gsl/blas_test.rb +79 -0
  298. data/test/gsl/bspline_test.rb +63 -0
  299. data/test/gsl/cdf_test.rb +1512 -0
  300. data/test/gsl/cheb_test.rb +80 -0
  301. data/test/gsl/combination_test.rb +100 -0
  302. data/test/gsl/complex_test.rb +20 -0
  303. data/test/gsl/const_test.rb +29 -0
  304. data/test/gsl/deriv_test.rb +62 -0
  305. data/test/gsl/dht_test.rb +79 -0
  306. data/test/gsl/diff_test.rb +53 -0
  307. data/test/gsl/eigen_test.rb +563 -0
  308. data/test/gsl/err_test.rb +23 -0
  309. data/test/gsl/fit_test.rb +101 -0
  310. data/test/gsl/histo_test.rb +14 -0
  311. data/test/gsl/index_test.rb +61 -0
  312. data/test/gsl/integration_test.rb +274 -0
  313. data/test/gsl/interp_test.rb +27 -0
  314. data/test/gsl/linalg_test.rb +463 -0
  315. data/test/gsl/matrix_nmf_test.rb +37 -0
  316. data/test/gsl/matrix_test.rb +98 -0
  317. data/test/gsl/min_test.rb +89 -0
  318. data/test/gsl/monte_test.rb +77 -0
  319. data/test/gsl/multifit_test.rb +753 -0
  320. data/test/gsl/multimin_test.rb +157 -0
  321. data/test/gsl/multiroot_test.rb +135 -0
  322. data/test/gsl/multiset_test.rb +52 -0
  323. data/test/gsl/odeiv_test.rb +275 -0
  324. data/test/gsl/oper_test.rb +98 -0
  325. data/test/gsl/poly_test.rb +338 -0
  326. data/test/gsl/qrng_test.rb +94 -0
  327. data/test/gsl/quartic_test.rb +28 -0
  328. data/test/gsl/randist_test.rb +122 -0
  329. data/test/gsl/rng_test.rb +303 -0
  330. data/test/gsl/roots_test.rb +78 -0
  331. data/test/gsl/sf_test.rb +2079 -0
  332. data/test/gsl/stats_test.rb +122 -0
  333. data/test/gsl/sum_test.rb +69 -0
  334. data/test/gsl/tensor_test.rb +396 -0
  335. data/test/gsl/vector_test.rb +223 -0
  336. data/test/gsl/wavelet_test.rb +130 -0
  337. data/test/gsl_test.rb +321 -0
  338. data/test/test_helper.rb +42 -0
  339. data/uncrustify.cfg +1693 -0
  340. metadata +337 -378
  341. data/README +0 -32
  342. data/VERSION +0 -1
  343. data/ext/bspline.c +0 -130
  344. data/ext/const.c +0 -673
  345. data/ext/cqp.c +0 -283
  346. data/ext/extconf.rb +0 -295
  347. data/ext/fcmp.c +0 -66
  348. data/ext/fresnel.c +0 -312
  349. data/ext/jacobi.c +0 -739
  350. data/ext/ool.c +0 -879
  351. data/ext/oper_complex_source.c +0 -253
  352. data/ext/sf_mathieu.c +0 -238
  353. data/include/rb_gsl_config.h +0 -62
  354. data/include/rb_gsl_dirac.h +0 -13
  355. data/rdoc/index.rdoc +0 -62
  356. data/rdoc/rngextra.rdoc +0 -11
  357. data/rdoc/screenshot.rdoc +0 -40
  358. data/setup.rb +0 -1585
  359. data/tests/blas/amax.rb +0 -14
  360. data/tests/blas/asum.rb +0 -16
  361. data/tests/blas/axpy.rb +0 -25
  362. data/tests/blas/copy.rb +0 -23
  363. data/tests/blas/dot.rb +0 -23
  364. data/tests/bspline.rb +0 -53
  365. data/tests/cdf.rb +0 -1388
  366. data/tests/cheb.rb +0 -112
  367. data/tests/combination.rb +0 -123
  368. data/tests/complex.rb +0 -17
  369. data/tests/const.rb +0 -24
  370. data/tests/deriv.rb +0 -85
  371. data/tests/dht/dht1.rb +0 -17
  372. data/tests/dht/dht2.rb +0 -23
  373. data/tests/dht/dht3.rb +0 -23
  374. data/tests/dht/dht4.rb +0 -23
  375. data/tests/diff.rb +0 -78
  376. data/tests/eigen/eigen.rb +0 -220
  377. data/tests/eigen/gen.rb +0 -105
  378. data/tests/eigen/genherm.rb +0 -66
  379. data/tests/eigen/gensymm.rb +0 -68
  380. data/tests/eigen/nonsymm.rb +0 -53
  381. data/tests/eigen/nonsymmv.rb +0 -53
  382. data/tests/eigen/symm-herm.rb +0 -74
  383. data/tests/err.rb +0 -58
  384. data/tests/fit.rb +0 -124
  385. data/tests/gsl_test.rb +0 -118
  386. data/tests/gsl_test2.rb +0 -110
  387. data/tests/histo.rb +0 -12
  388. data/tests/integration/integration1.rb +0 -72
  389. data/tests/integration/integration2.rb +0 -71
  390. data/tests/integration/integration3.rb +0 -71
  391. data/tests/integration/integration4.rb +0 -71
  392. data/tests/interp.rb +0 -45
  393. data/tests/linalg/HH.rb +0 -64
  394. data/tests/linalg/LU.rb +0 -47
  395. data/tests/linalg/QR.rb +0 -77
  396. data/tests/linalg/SV.rb +0 -24
  397. data/tests/linalg/TDN.rb +0 -116
  398. data/tests/linalg/TDS.rb +0 -122
  399. data/tests/linalg/bidiag.rb +0 -73
  400. data/tests/linalg/cholesky.rb +0 -20
  401. data/tests/linalg/linalg.rb +0 -158
  402. data/tests/matrix/matrix_complex_test.rb +0 -36
  403. data/tests/matrix/matrix_nmf_test.rb +0 -39
  404. data/tests/matrix/matrix_test.rb +0 -48
  405. data/tests/min.rb +0 -99
  406. data/tests/monte/miser.rb +0 -31
  407. data/tests/monte/vegas.rb +0 -45
  408. data/tests/multifit/test_2dgauss.rb +0 -112
  409. data/tests/multifit/test_brown.rb +0 -90
  410. data/tests/multifit/test_enso.rb +0 -246
  411. data/tests/multifit/test_filip.rb +0 -155
  412. data/tests/multifit/test_gauss.rb +0 -97
  413. data/tests/multifit/test_longley.rb +0 -110
  414. data/tests/multifit/test_multifit.rb +0 -52
  415. data/tests/multimin.rb +0 -139
  416. data/tests/multiroot.rb +0 -131
  417. data/tests/multiset.rb +0 -52
  418. data/tests/narray/blas_dnrm2.rb +0 -20
  419. data/tests/odeiv.rb +0 -353
  420. data/tests/poly/poly.rb +0 -290
  421. data/tests/poly/special.rb +0 -65
  422. data/tests/qrng.rb +0 -131
  423. data/tests/quartic.rb +0 -29
  424. data/tests/randist.rb +0 -134
  425. data/tests/rng.rb +0 -305
  426. data/tests/roots.rb +0 -76
  427. data/tests/run-test.sh +0 -17
  428. data/tests/sf/gsl_test_sf.rb +0 -249
  429. data/tests/sf/test_airy.rb +0 -83
  430. data/tests/sf/test_bessel.rb +0 -306
  431. data/tests/sf/test_coulomb.rb +0 -17
  432. data/tests/sf/test_dilog.rb +0 -25
  433. data/tests/sf/test_gamma.rb +0 -209
  434. data/tests/sf/test_hyperg.rb +0 -356
  435. data/tests/sf/test_legendre.rb +0 -227
  436. data/tests/sf/test_mathieu.rb +0 -59
  437. data/tests/sf/test_mode.rb +0 -19
  438. data/tests/sf/test_sf.rb +0 -839
  439. data/tests/stats.rb +0 -174
  440. data/tests/stats_mt.rb +0 -16
  441. data/tests/sum.rb +0 -98
  442. data/tests/sys.rb +0 -323
  443. data/tests/tensor.rb +0 -419
  444. data/tests/vector/vector_complex_test.rb +0 -101
  445. data/tests/vector/vector_test.rb +0 -141
  446. data/tests/wavelet.rb +0 -142
@@ -9,11 +9,11 @@
9
9
  WITHOUT ANY WARRANTY.
10
10
  */
11
11
 
12
- #include "rb_gsl.h"
13
- #include "rb_gsl_array.h"
12
+ #include "include/rb_gsl.h"
13
+ #include "include/rb_gsl_array.h"
14
14
 
15
- #include "rb_gsl_eigen.h"
16
- #include "rb_gsl_complex.h"
15
+ #include "include/rb_gsl_eigen.h"
16
+ #include "include/rb_gsl_complex.h"
17
17
  #include <gsl/gsl_complex.h>
18
18
  #include <gsl/gsl_complex_math.h>
19
19
  #include <gsl/gsl_math.h>
@@ -29,16 +29,13 @@ static VALUE cgsl_eigen_vector;
29
29
  static VALUE cgsl_eigen_vector_complex;
30
30
  static VALUE cgsl_eigen_herm_vectors;
31
31
 
32
- #ifdef HAVE_EIGEN_FRANCIS
32
+ #ifdef HAVE_GSL_EIGEN_FRANCIS
33
33
  static VALUE cgsl_eigen_francis_workspace;
34
34
 
35
35
  #endif
36
- #ifdef GSL_1_9_LATER
37
36
  static VALUE cgsl_eigen_nonsymm_workspace;
38
37
  static VALUE cgsl_eigen_nonsymmv_workspace;
39
- #endif
40
38
 
41
- #ifdef GSL_1_10_LATER
42
39
  static VALUE cgensymm, mgensymm;
43
40
  static VALUE cgensymmv, mgensymmv;
44
41
  static VALUE cgenherm, mgenherm;
@@ -46,15 +43,14 @@ static VALUE cgenhermv, mgenhermv;
46
43
 
47
44
  static VALUE mgen, mgenv;
48
45
  static VALUE cgenw, cgenvw;
49
- #endif
50
46
 
51
47
  static VALUE rb_gsl_eigen_symm_alloc(VALUE klass, VALUE nn)
52
48
  {
53
49
  gsl_eigen_symm_workspace *w = NULL;
54
50
  CHECK_FIXNUM(nn);
55
51
  w = gsl_eigen_symm_alloc(FIX2INT(nn));
56
- return Data_Wrap_Struct(cgsl_eigen_symm_workspace, 0,
57
- gsl_eigen_symm_free, w);
52
+ return Data_Wrap_Struct(cgsl_eigen_symm_workspace, 0,
53
+ gsl_eigen_symm_free, w);
58
54
  }
59
55
 
60
56
  static VALUE rb_gsl_eigen_symmv_alloc(VALUE klass, VALUE nn)
@@ -70,8 +66,8 @@ static VALUE rb_gsl_eigen_herm_alloc(VALUE klass, VALUE nn)
70
66
  gsl_eigen_herm_workspace *w = NULL;
71
67
  CHECK_FIXNUM(nn);
72
68
  w = gsl_eigen_herm_alloc(FIX2INT(nn));
73
- return Data_Wrap_Struct(cgsl_eigen_herm_workspace, 0,
74
- gsl_eigen_herm_free, w);
69
+ return Data_Wrap_Struct(cgsl_eigen_herm_workspace, 0,
70
+ gsl_eigen_herm_free, w);
75
71
  }
76
72
 
77
73
  static VALUE rb_gsl_eigen_hermv_alloc(VALUE klass, VALUE nn)
@@ -79,12 +75,64 @@ static VALUE rb_gsl_eigen_hermv_alloc(VALUE klass, VALUE nn)
79
75
  gsl_eigen_hermv_workspace *w = NULL;
80
76
  CHECK_FIXNUM(nn);
81
77
  w = gsl_eigen_hermv_alloc(FIX2INT(nn));
82
- return Data_Wrap_Struct(cgsl_eigen_hermv_workspace, 0,
83
- gsl_eigen_hermv_free, w);
78
+ return Data_Wrap_Struct(cgsl_eigen_hermv_workspace, 0,
79
+ gsl_eigen_hermv_free, w);
84
80
  }
85
81
 
86
82
  #ifdef HAVE_NARRAY_H
87
- static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj);
83
+ static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj)
84
+ {
85
+ struct NARRAY *na;
86
+ VALUE nary;
87
+ gsl_matrix *A = NULL;
88
+ gsl_eigen_symm_workspace *w = NULL;
89
+ gsl_vector_view vv;
90
+ int shape[1];
91
+ int flagw = 0;
92
+ switch (argc) {
93
+ case 2:
94
+ if (!NA_IsNArray(argv[0]))
95
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
96
+ rb_class2name(CLASS_OF(argv[0])));
97
+ GetNArray(argv[0], na);
98
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
99
+ if (na->shape[0] != na->shape[1])
100
+ rb_raise(rb_eRuntimeError, "square matrix required");
101
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
102
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
103
+ if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
104
+ rb_raise(rb_eTypeError,
105
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
106
+ rb_class2name(CLASS_OF(argv[1])));
107
+ Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
108
+ flagw = 0;
109
+ break;
110
+ case 1:
111
+ if (!NA_IsNArray(argv[0]))
112
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
113
+ rb_class2name(CLASS_OF(argv[0])));
114
+ GetNArray(argv[0], na);
115
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
116
+ if (na->shape[0] != na->shape[1])
117
+ rb_raise(rb_eRuntimeError, "square matrix required");
118
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
119
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
120
+ w = gsl_eigen_symm_alloc(A->size1);
121
+ flagw = 1;
122
+ break;
123
+ default:
124
+ rb_raise(rb_eArgError, "matrix not given");
125
+ break;
126
+ }
127
+ shape[0] = A->size1;
128
+ nary = na_make_object(NA_DFLOAT, 1, shape, cNVector);
129
+ vv = gsl_vector_view_array(NA_PTR_TYPE(nary,double*), A->size1);
130
+ gsl_eigen_symm(A, &vv.vector, w);
131
+ /* gsl_sort_vector(v);*/
132
+ gsl_matrix_free(A);
133
+ if (flagw == 1) gsl_eigen_symm_free(w);
134
+ return nary;
135
+ }
88
136
  #endif
89
137
 
90
138
  static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
@@ -100,19 +148,19 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
100
148
  switch (argc) {
101
149
  case 2:
102
150
  #ifdef HAVE_NARRAY_H
103
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
151
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
104
152
  #endif
105
153
  CHECK_MATRIX(argv[0]);
106
154
  Data_Get_Struct(argv[0], gsl_matrix, Atmp);
107
155
  if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
108
- rb_raise(rb_eTypeError,
109
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected)",
110
- rb_class2name(CLASS_OF(argv[1])));
156
+ rb_raise(rb_eTypeError,
157
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected)",
158
+ rb_class2name(CLASS_OF(argv[1])));
111
159
  Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
112
160
  break;
113
161
  case 1:
114
162
  #ifdef HAVE_NARRAY_H
115
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
163
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
116
164
  #endif
117
165
  CHECK_MATRIX(argv[0]);
118
166
  Data_Get_Struct(argv[0], gsl_matrix, Atmp);
@@ -130,10 +178,9 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
130
178
  switch (argc) {
131
179
  case 1:
132
180
  if (CLASS_OF(argv[0]) != cgsl_eigen_symm_workspace)
133
- rb_raise(rb_eTypeError,
134
- "argv[0]: wrong argument type %s (Eigen::Symm::Workspace expected",
135
- rb_class2name(CLASS_OF(argv[0])));
136
-
181
+ rb_raise(rb_eTypeError,
182
+ "argv[0]: wrong argument type %s (Eigen::Symm::Workspace expected",
183
+ rb_class2name(CLASS_OF(argv[0])));
137
184
  Data_Get_Struct(argv[0], gsl_eigen_symm_workspace, w);
138
185
  break;
139
186
  case 0:
@@ -154,65 +201,66 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
154
201
  }
155
202
 
156
203
  #ifdef HAVE_NARRAY_H
157
- static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj)
204
+ static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj)
158
205
  {
159
206
  struct NARRAY *na;
160
- VALUE nary;
207
+ VALUE eval, evec;
161
208
  gsl_matrix *A = NULL;
162
- gsl_eigen_symm_workspace *w = NULL;
209
+ gsl_eigen_symmv_workspace *w = NULL;
210
+ gsl_matrix_view mv;
163
211
  gsl_vector_view vv;
164
- int shape[1];
212
+ int shape1[1], shape2[2];
165
213
  int flagw = 0;
166
214
  switch (argc) {
167
215
  case 2:
168
- if (!NA_IsNArray(argv[0]))
169
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
170
- rb_class2name(CLASS_OF(argv[0])));
216
+ if (!NA_IsNArray(argv[0]))
217
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
218
+ rb_class2name(CLASS_OF(argv[0])));
171
219
  GetNArray(argv[0], na);
172
220
  if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
173
221
  if (na->shape[0] != na->shape[1])
174
222
  rb_raise(rb_eRuntimeError, "square matrix required");
175
223
  A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
176
224
  memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
177
- if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
178
- rb_raise(rb_eTypeError,
179
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
180
- rb_class2name(CLASS_OF(argv[1])));
181
- Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
225
+ if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
226
+ rb_raise(rb_eTypeError,
227
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
228
+ rb_class2name(CLASS_OF(argv[1])));
229
+ Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
182
230
  flagw = 0;
183
231
  break;
184
232
  case 1:
185
- if (!NA_IsNArray(argv[0]))
186
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
187
- rb_class2name(CLASS_OF(argv[0])));
233
+ if (!NA_IsNArray(argv[0]))
234
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
235
+ rb_class2name(CLASS_OF(argv[0])));
188
236
  GetNArray(argv[0], na);
189
237
  if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
190
238
  if (na->shape[0] != na->shape[1])
191
239
  rb_raise(rb_eRuntimeError, "square matrix required");
192
240
  A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
193
241
  memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
194
- w = gsl_eigen_symm_alloc(A->size1);
242
+ w = gsl_eigen_symmv_alloc(A->size1);
195
243
  flagw = 1;
196
244
  break;
197
245
  default:
198
246
  rb_raise(rb_eArgError, "matrix not given");
199
247
  break;
200
248
  }
201
- shape[0] = A->size1;
202
- nary = na_make_object(NA_DFLOAT, 1, shape, cNVector);
203
- vv = gsl_vector_view_array(NA_PTR_TYPE(nary,double*), A->size1);
204
- gsl_eigen_symm(A, &vv.vector, w);
249
+ shape1[0] = A->size1;
250
+ shape2[0] = A->size1;
251
+ shape2[1] = A->size1;
252
+ eval = na_make_object(NA_DFLOAT, 1, shape1, cNVector);
253
+ evec = na_make_object(NA_DFLOAT, 2, shape2, CLASS_OF(argv[0]));
254
+ vv = gsl_vector_view_array(NA_PTR_TYPE(eval,double*), A->size1);
255
+ mv = gsl_matrix_view_array(NA_PTR_TYPE(evec,double*), A->size1, A->size2);
256
+ gsl_eigen_symmv(A, &vv.vector, &mv.matrix, w);
205
257
  /* gsl_sort_vector(v);*/
206
258
  gsl_matrix_free(A);
207
- if (flagw == 1) gsl_eigen_symm_free(w);
208
- return nary;
259
+ if (flagw == 1) gsl_eigen_symmv_free(w);
260
+ return rb_ary_new3(2, eval, evec);
209
261
  }
210
262
  #endif
211
263
 
212
- #ifdef HAVE_NARRAY_H
213
- static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj);
214
- #endif
215
-
216
264
  static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
217
265
  {
218
266
  gsl_matrix *Atmp = NULL, *A = NULL, *em = NULL;
@@ -227,19 +275,19 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
227
275
  switch (argc) {
228
276
  case 2:
229
277
  #ifdef HAVE_NARRAY_H
230
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
278
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
231
279
  #endif
232
280
  CHECK_MATRIX(argv[0]);
233
281
  Data_Get_Struct(argv[0], gsl_matrix, Atmp);
234
282
  if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
235
- rb_raise(rb_eTypeError,
236
- "argv[1]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
237
- rb_class2name(CLASS_OF(argv[1])));
283
+ rb_raise(rb_eTypeError,
284
+ "argv[1]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
285
+ rb_class2name(CLASS_OF(argv[1])));
238
286
  Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
239
287
  break;
240
288
  case 1:
241
289
  #ifdef HAVE_NARRAY_H
242
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
290
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
243
291
  #endif
244
292
  CHECK_MATRIX(argv[0]);
245
293
  Data_Get_Struct(argv[0], gsl_matrix, Atmp);
@@ -256,10 +304,9 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
256
304
  switch (argc) {
257
305
  case 1:
258
306
  if (CLASS_OF(argv[0]) != cgsl_eigen_symmv_workspace)
259
- rb_raise(rb_eTypeError,
260
- "argv[0]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
261
- rb_class2name(CLASS_OF(argv[0])));
262
-
307
+ rb_raise(rb_eTypeError,
308
+ "argv[0]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
309
+ rb_class2name(CLASS_OF(argv[0])));
263
310
  Data_Get_Struct(argv[0], gsl_eigen_symmv_workspace, w);
264
311
  break;
265
312
  case 0:
@@ -283,67 +330,6 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
283
330
  return rb_ary_new3(2, vval, vvec);
284
331
  }
285
332
 
286
- #ifdef HAVE_NARRAY_H
287
- static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj)
288
- {
289
- struct NARRAY *na;
290
- VALUE eval, evec;
291
- gsl_matrix *A = NULL;
292
- gsl_eigen_symmv_workspace *w = NULL;
293
- gsl_matrix_view mv;
294
- gsl_vector_view vv;
295
- int shape1[1], shape2[2];
296
- int flagw = 0;
297
- switch (argc) {
298
- case 2:
299
- if (!NA_IsNArray(argv[0]))
300
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
301
- rb_class2name(CLASS_OF(argv[0])));
302
- GetNArray(argv[0], na);
303
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
304
- if (na->shape[0] != na->shape[1])
305
- rb_raise(rb_eRuntimeError, "square matrix required");
306
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
307
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
308
- if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
309
- rb_raise(rb_eTypeError,
310
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
311
- rb_class2name(CLASS_OF(argv[1])));
312
- Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
313
- flagw = 0;
314
- break;
315
- case 1:
316
- if (!NA_IsNArray(argv[0]))
317
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
318
- rb_class2name(CLASS_OF(argv[0])));
319
- GetNArray(argv[0], na);
320
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
321
- if (na->shape[0] != na->shape[1])
322
- rb_raise(rb_eRuntimeError, "square matrix required");
323
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
324
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
325
- w = gsl_eigen_symmv_alloc(A->size1);
326
- flagw = 1;
327
- break;
328
- default:
329
- rb_raise(rb_eArgError, "matrix not given");
330
- break;
331
- }
332
- shape1[0] = A->size1;
333
- shape2[0] = A->size1;
334
- shape2[1] = A->size1;
335
- eval = na_make_object(NA_DFLOAT, 1, shape1, cNVector);
336
- evec = na_make_object(NA_DFLOAT, 2, shape2, CLASS_OF(argv[0]));
337
- vv = gsl_vector_view_array(NA_PTR_TYPE(eval,double*), A->size1);
338
- mv = gsl_matrix_view_array(NA_PTR_TYPE(evec,double*), A->size1, A->size2);
339
- gsl_eigen_symmv(A, &vv.vector, &mv.matrix, w);
340
- /* gsl_sort_vector(v);*/
341
- gsl_matrix_free(A);
342
- if (flagw == 1) gsl_eigen_symmv_free(w);
343
- return rb_ary_new3(2, eval, evec);
344
- }
345
- #endif
346
-
347
333
  static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
348
334
  {
349
335
  gsl_matrix_complex *Atmp = NULL, *A = NULL;
@@ -360,9 +346,9 @@ static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
360
346
  CHECK_MATRIX_COMPLEX(argv[0]);
361
347
  Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
362
348
  if (CLASS_OF(argv[1]) != cgsl_eigen_herm_workspace)
363
- rb_raise(rb_eTypeError,
364
- "argv[1]: wrong argument type %s (Eigen::Herm::Workspace expected)",
365
- rb_class2name(CLASS_OF(argv[1])));
349
+ rb_raise(rb_eTypeError,
350
+ "argv[1]: wrong argument type %s (Eigen::Herm::Workspace expected)",
351
+ rb_class2name(CLASS_OF(argv[1])));
366
352
  Data_Get_Struct(argv[1], gsl_eigen_herm_workspace, w);
367
353
  break;
368
354
  case 1:
@@ -381,10 +367,9 @@ static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
381
367
  switch (argc) {
382
368
  case 1:
383
369
  if (CLASS_OF(argv[0]) != cgsl_eigen_herm_workspace)
384
- rb_raise(rb_eTypeError,
385
- "argv[0]: wrong argument type %s (Eigen::Herm::Workspace expected)",
386
- rb_class2name(CLASS_OF(argv[0])));
387
-
370
+ rb_raise(rb_eTypeError,
371
+ "argv[0]: wrong argument type %s (Eigen::Herm::Workspace expected)",
372
+ rb_class2name(CLASS_OF(argv[0])));
388
373
  Data_Get_Struct(argv[0], gsl_eigen_herm_workspace, w);
389
374
  break;
390
375
  case 0:
@@ -420,9 +405,9 @@ static VALUE rb_gsl_eigen_hermv(int argc, VALUE *argv, VALUE obj)
420
405
  CHECK_MATRIX_COMPLEX(argv[0]);
421
406
  Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
422
407
  if (CLASS_OF(argv[1]) != cgsl_eigen_hermv_workspace)
423
- rb_raise(rb_eTypeError,
424
- "argv[1]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
425
- rb_class2name(CLASS_OF(argv[1])));
408
+ rb_raise(rb_eTypeError,
409
+ "argv[1]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
410
+ rb_class2name(CLASS_OF(argv[1])));
426
411
  Data_Get_Struct(argv[1], gsl_eigen_hermv_workspace, w);
427
412
  break;
428
413
  case 1:
@@ -441,10 +426,9 @@ static VALUE rb_gsl_eigen_hermv(int argc, VALUE *argv, VALUE obj)
441
426
  switch (argc) {
442
427
  case 1:
443
428
  if (CLASS_OF(argv[0]) != cgsl_eigen_hermv_workspace)
444
- rb_raise(rb_eTypeError,
445
- "argv[0]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
446
- rb_class2name(CLASS_OF(argv[0])));
447
-
429
+ rb_raise(rb_eTypeError,
430
+ "argv[0]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
431
+ rb_class2name(CLASS_OF(argv[0])));
448
432
  Data_Get_Struct(argv[0], gsl_eigen_hermv_workspace, w);
449
433
  break;
450
434
  case 0:
@@ -500,7 +484,7 @@ static VALUE rb_gsl_eigen_vectors_complex_unpack(VALUE obj)
500
484
  for (i = 0; i < m->size1; i++) {
501
485
  v = gsl_vector_complex_alloc(m->size2);
502
486
  for (j = 0; j < m->size2; j++) {
503
- z= gsl_matrix_complex_get(m, j, i);
487
+ z = gsl_matrix_complex_get(m, j, i);
504
488
  gsl_vector_complex_set(v, j, z);
505
489
  }
506
490
  tmp = Data_Wrap_Struct(cgsl_eigen_vector_complex, 0, gsl_vector_complex_free, v);
@@ -515,7 +499,7 @@ static void rb_gsl_eigen_define_const(VALUE topmodule, VALUE module)
515
499
  rb_define_const(topmodule, "EIGEN_SORT_VAL_DESC", INT2FIX(GSL_EIGEN_SORT_VAL_DESC));
516
500
  rb_define_const(topmodule, "EIGEN_SORT_ABS_ASC", INT2FIX(GSL_EIGEN_SORT_ABS_ASC));
517
501
  rb_define_const(topmodule, "EIGEN_SORT_ABS_DESC", INT2FIX(GSL_EIGEN_SORT_ABS_DESC));
518
-
502
+
519
503
  rb_define_const(module, "SORT_VAL_ASC", INT2FIX(GSL_EIGEN_SORT_VAL_ASC));
520
504
  rb_define_const(module, "SORT_VAL_DESC", INT2FIX(GSL_EIGEN_SORT_VAL_DESC));
521
505
  rb_define_const(module, "SORT_ABS_ASC", INT2FIX(GSL_EIGEN_SORT_ABS_ASC));
@@ -528,7 +512,7 @@ static void rb_gsl_eigen_define_const(VALUE topmodule, VALUE module)
528
512
  }
529
513
 
530
514
  static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
531
- int (*sortfunc)(gsl_vector*, gsl_matrix*, gsl_eigen_sort_t))
515
+ int (*sortfunc)(gsl_vector*, gsl_matrix*, gsl_eigen_sort_t))
532
516
  {
533
517
  gsl_vector *v = NULL;
534
518
  gsl_matrix *m = NULL;
@@ -537,10 +521,10 @@ static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
537
521
  case 3:
538
522
  CHECK_FIXNUM(argv[2]);
539
523
  type = FIX2INT(argv[2]);
540
- /* no break, do next */
524
+ /* no break, do next */
541
525
  case 2:
542
526
  if (argv[0] == Qnil) {
543
- v = NULL;
527
+ v = NULL;
544
528
  } else {
545
529
  CHECK_VECTOR(argv[0]);
546
530
  Data_Get_Struct(argv[0], gsl_vector, v);
@@ -560,7 +544,7 @@ static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
560
544
 
561
545
 
562
546
  static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
563
- int (*sortfunc)(gsl_vector*, gsl_matrix_complex*, gsl_eigen_sort_t))
547
+ int (*sortfunc)(gsl_vector*, gsl_matrix_complex*, gsl_eigen_sort_t))
564
548
  {
565
549
  gsl_vector *v = NULL;
566
550
  gsl_matrix_complex *m = NULL;
@@ -570,7 +554,7 @@ static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
570
554
  case 3:
571
555
  CHECK_FIXNUM(argv[2]);
572
556
  type = FIX2INT(argv[2]);
573
- /* no break, do next */
557
+ /* no break, do next */
574
558
  case 2:
575
559
  if (argv[0] == Qnil) {
576
560
  v = NULL;
@@ -582,7 +566,7 @@ static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
582
566
  m = NULL;
583
567
  } else {
584
568
  CHECK_MATRIX_COMPLEX(argv[1]);
585
- Data_Get_Struct(argv[1], gsl_matrix_complex, m);
569
+ Data_Get_Struct(argv[1], gsl_matrix_complex, m);
586
570
  }
587
571
  break;
588
572
  default:
@@ -596,11 +580,11 @@ static VALUE rb_gsl_eigen_symmv_sort(int argc, VALUE *argv, VALUE obj)
596
580
  }
597
581
  static VALUE rb_gsl_eigen_hermv_sort(int argc, VALUE *argv, VALUE obj)
598
582
  {
599
- return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_hermv_sort);
583
+ return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_hermv_sort);
600
584
  }
601
585
 
602
586
 
603
- #ifdef HAVE_EIGEN_FRANCIS
587
+ #ifdef HAVE_GSL_EIGEN_FRANCIS
604
588
  static VALUE rb_gsl_eigen_francis_alloc(VALUE klass)
605
589
  {
606
590
  gsl_eigen_francis_workspace *w = NULL;
@@ -626,7 +610,59 @@ static VALUE rb_gsl_eigen_francis_T(int argc, VALUE *argv, VALUE obj)
626
610
  }
627
611
 
628
612
  #ifdef HAVE_NARRAY_H
629
- static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj);
613
+ static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj)
614
+ {
615
+ struct NARRAY *na;
616
+ VALUE nary;
617
+ gsl_matrix *A = NULL;
618
+ gsl_eigen_francis_workspace *w = NULL;
619
+ gsl_vector_complex_view vv;
620
+ int shape[1];
621
+ int flagw = 0;
622
+ switch (argc) {
623
+ case 2:
624
+ if (!NA_IsNArray(argv[0]))
625
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
626
+ rb_class2name(CLASS_OF(argv[0])));
627
+ GetNArray(argv[0], na);
628
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
629
+ if (na->shape[0] != na->shape[1])
630
+ rb_raise(rb_eRuntimeError, "square matrix required");
631
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
632
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
633
+ if (CLASS_OF(argv[1]) != cgsl_eigen_francis_workspace)
634
+ rb_raise(rb_eTypeError,
635
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
636
+ rb_class2name(CLASS_OF(argv[1])));
637
+ Data_Get_Struct(argv[1], gsl_eigen_francis_workspace, w);
638
+ flagw = 0;
639
+ break;
640
+ case 1:
641
+ if (!NA_IsNArray(argv[0]))
642
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
643
+ rb_class2name(CLASS_OF(argv[0])));
644
+ GetNArray(argv[0], na);
645
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
646
+ if (na->shape[0] != na->shape[1])
647
+ rb_raise(rb_eRuntimeError, "square matrix required");
648
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
649
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
650
+ w = gsl_eigen_francis_alloc();
651
+ flagw = 1;
652
+ break;
653
+ default:
654
+ rb_raise(rb_eArgError, "matrix not given");
655
+ break;
656
+ }
657
+ shape[0] = A->size1;
658
+ nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
659
+ vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
660
+ gsl_eigen_francis(A, &vv.vector, w);
661
+ /* gsl_sort_vector(v);*/
662
+ gsl_matrix_free(A);
663
+ if (flagw == 1) gsl_eigen_francis_free(w);
664
+ return nary;
665
+ }
630
666
  #endif
631
667
 
632
668
  static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
@@ -640,7 +676,7 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
640
676
 
641
677
  #ifdef HAVE_NARRAY_H
642
678
  if (NA_IsNArray(obj)) return rb_gsl_eigen_francis_narray(argc, argv, obj);
643
- if (argc >= 1 && NA_IsNArray(argv[0]))
679
+ if (argc >= 1 && NA_IsNArray(argv[0]))
644
680
  return rb_gsl_eigen_francis_narray(argc, argv, obj);
645
681
  #endif
646
682
 
@@ -654,7 +690,6 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
654
690
  istart = 1;
655
691
  argv2 = argv + 1;
656
692
  }
657
-
658
693
  switch (argc-istart) {
659
694
  case 0:
660
695
  v = gsl_vector_complex_alloc(m->size1);
@@ -666,7 +701,7 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
666
701
  if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
667
702
  Data_Get_Struct(argv2[0], gsl_vector_complex, v);
668
703
  w = gsl_eigen_francis_alloc();
669
- wflag = 1;
704
+ wflag = 1;
670
705
  } else if (CLASS_OF(argv2[0]) == cgsl_eigen_francis_workspace) {
671
706
  v = gsl_vector_complex_alloc(m->size1);
672
707
  vflag = 1;
@@ -696,62 +731,6 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
696
731
  return argv2[0];
697
732
  }
698
733
 
699
- #ifdef HAVE_NARRAY_H
700
- static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj)
701
- {
702
- struct NARRAY *na;
703
- VALUE nary;
704
- gsl_matrix *A = NULL;
705
- gsl_eigen_francis_workspace *w = NULL;
706
- gsl_vector_complex_view vv;
707
- int shape[1];
708
- int flagw = 0;
709
- switch (argc) {
710
- case 2:
711
- if (!NA_IsNArray(argv[0]))
712
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
713
- rb_class2name(CLASS_OF(argv[0])));
714
- GetNArray(argv[0], na);
715
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
716
- if (na->shape[0] != na->shape[1])
717
- rb_raise(rb_eRuntimeError, "square matrix required");
718
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
719
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
720
- if (CLASS_OF(argv[1]) != cgsl_eigen_francis_workspace)
721
- rb_raise(rb_eTypeError,
722
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
723
- rb_class2name(CLASS_OF(argv[1])));
724
- Data_Get_Struct(argv[1], gsl_eigen_francis_workspace, w);
725
- flagw = 0;
726
- break;
727
- case 1:
728
- if (!NA_IsNArray(argv[0]))
729
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
730
- rb_class2name(CLASS_OF(argv[0])));
731
- GetNArray(argv[0], na);
732
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
733
- if (na->shape[0] != na->shape[1])
734
- rb_raise(rb_eRuntimeError, "square matrix required");
735
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
736
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
737
- w = gsl_eigen_francis_alloc();
738
- flagw = 1;
739
- break;
740
- default:
741
- rb_raise(rb_eArgError, "matrix not given");
742
- break;
743
- }
744
- shape[0] = A->size1;
745
- nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
746
- vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
747
- gsl_eigen_francis(A, &vv.vector, w);
748
- /* gsl_sort_vector(v);*/
749
- gsl_matrix_free(A);
750
- if (flagw == 1) gsl_eigen_francis_free(w);
751
- return nary;
752
- }
753
- #endif
754
-
755
734
  static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
756
735
  {
757
736
  gsl_matrix *m, *mtmp, *Z;
@@ -771,7 +750,6 @@ static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
771
750
  istart = 1;
772
751
  argv2 = argv + 1;
773
752
  }
774
-
775
753
  switch (argc-istart) {
776
754
  case 0:
777
755
  v = gsl_vector_complex_alloc(m->size1);
@@ -819,7 +797,6 @@ static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
819
797
  }
820
798
  #endif
821
799
 
822
- #ifdef GSL_1_9_LATER
823
800
  static VALUE rb_gsl_eigen_nonsymm_alloc(VALUE klass, VALUE nn)
824
801
  {
825
802
  size_t n;
@@ -852,78 +829,7 @@ static VALUE rb_gsl_eigen_nonsymm_params(int argc, VALUE *argv, VALUE obj)
852
829
  }
853
830
 
854
831
  #ifdef HAVE_NARRAY_H
855
- static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj);
856
- #endif
857
-
858
- static VALUE rb_gsl_eigen_nonsymm(int argc, VALUE *argv, VALUE obj)
859
- {
860
- gsl_matrix *m;
861
- gsl_vector_complex *v;
862
- gsl_eigen_nonsymm_workspace *w;
863
- int vflag = 0, wflag = 0;
864
- int istart = 0;
865
- VALUE *argv2;
866
-
867
- #ifdef HAVE_NARRAY_H
868
- if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
869
- if (argc >= 1 && NA_IsNArray(argv[0]))
870
- return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
871
- #endif
872
-
873
- if (MATRIX_P(obj)) {
874
- Data_Get_Struct(obj, gsl_matrix, m);
875
- argv2 = argv;
876
- istart = 0;
877
- } else {
878
- if (argc < 1) rb_raise(rb_eArgError, "Wrong number of arguments.\n");
879
- Data_Get_Struct(argv[0], gsl_matrix, m);
880
- istart = 1;
881
- argv2 = argv + 1;
882
- }
883
-
884
- switch (argc-istart) {
885
- case 0:
886
- v = gsl_vector_complex_alloc(m->size1);
887
- w = gsl_eigen_nonsymm_alloc(m->size1);
888
- vflag = 1;
889
- wflag = 1;
890
- break;
891
- case 1:
892
- if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
893
- Data_Get_Struct(argv2[0], gsl_vector_complex, v);
894
- w = gsl_eigen_nonsymm_alloc(m->size1);
895
- wflag = 1;
896
- } else if (CLASS_OF(argv2[0]) == cgsl_eigen_nonsymm_workspace) {
897
- v = gsl_vector_complex_alloc(m->size1);
898
- vflag = 1;
899
- Data_Get_Struct(argv2[0], gsl_eigen_nonsymm_workspace, w);
900
- } else {
901
- rb_raise(rb_eArgError, "Wrong argument type.\n");
902
- }
903
- break;
904
- case 2:
905
- CHECK_VECTOR_COMPLEX(argv2[0]);
906
- if (CLASS_OF(argv2[1]) != cgsl_eigen_nonsymm_workspace) {
907
- rb_raise(rb_eArgError, "argv[1] must be a GSL::Eigen::Nonsymm::Workspace.\n");
908
- }
909
- Data_Get_Struct(argv2[0], gsl_vector_complex, v);
910
- Data_Get_Struct(argv2[1], gsl_eigen_nonsymm_workspace, w);
911
- break;
912
- default:
913
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0-2).\n", argc);
914
- }
915
- // mtmp = make_matrix_clone(m);
916
- gsl_eigen_nonsymm(m, v, w);
917
- // gsl_matrix_free(mtmp);
918
- if (wflag == 1) gsl_eigen_nonsymm_free(w);
919
- if (vflag == 1)
920
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v);
921
- else
922
- return argv2[0];
923
- }
924
-
925
- #ifdef HAVE_NARRAY_H
926
- static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
832
+ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
927
833
  {
928
834
  struct NARRAY *na;
929
835
  VALUE nary;
@@ -934,9 +840,9 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
934
840
  int flagw = 0;
935
841
  switch (argc) {
936
842
  case 2:
937
- if (!NA_IsNArray(argv[0]))
938
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
939
- rb_class2name(CLASS_OF(argv[0])));
843
+ if (!NA_IsNArray(argv[0]))
844
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
845
+ rb_class2name(CLASS_OF(argv[0])));
940
846
  GetNArray(argv[0], na);
941
847
  if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
942
848
  if (na->shape[0] != na->shape[1])
@@ -944,16 +850,16 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
944
850
  A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
945
851
  memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
946
852
  if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymm_workspace)
947
- rb_raise(rb_eTypeError,
948
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
949
- rb_class2name(CLASS_OF(argv[1])));
853
+ rb_raise(rb_eTypeError,
854
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
855
+ rb_class2name(CLASS_OF(argv[1])));
950
856
  Data_Get_Struct(argv[1], gsl_eigen_nonsymm_workspace, w);
951
857
  flagw = 0;
952
858
  break;
953
859
  case 1:
954
- if (!NA_IsNArray(argv[0]))
955
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
956
- rb_class2name(CLASS_OF(argv[0])));
860
+ if (!NA_IsNArray(argv[0]))
861
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
862
+ rb_class2name(CLASS_OF(argv[0])));
957
863
  GetNArray(argv[0], na);
958
864
  if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
959
865
  if (na->shape[0] != na->shape[1])
@@ -978,6 +884,72 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
978
884
  }
979
885
  #endif
980
886
 
887
+ static VALUE rb_gsl_eigen_nonsymm(int argc, VALUE *argv, VALUE obj)
888
+ {
889
+ gsl_matrix *m;
890
+ gsl_vector_complex *v;
891
+ gsl_eigen_nonsymm_workspace *w;
892
+ int vflag = 0, wflag = 0;
893
+ int istart = 0;
894
+ VALUE *argv2;
895
+
896
+ #ifdef HAVE_NARRAY_H
897
+ if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
898
+ if (argc >= 1 && NA_IsNArray(argv[0]))
899
+ return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
900
+ #endif
901
+
902
+ if (MATRIX_P(obj)) {
903
+ Data_Get_Struct(obj, gsl_matrix, m);
904
+ argv2 = argv;
905
+ istart = 0;
906
+ } else {
907
+ if (argc < 1) rb_raise(rb_eArgError, "Wrong number of arguments.\n");
908
+ Data_Get_Struct(argv[0], gsl_matrix, m);
909
+ istart = 1;
910
+ argv2 = argv + 1;
911
+ }
912
+ switch (argc-istart) {
913
+ case 0:
914
+ v = gsl_vector_complex_alloc(m->size1);
915
+ w = gsl_eigen_nonsymm_alloc(m->size1);
916
+ vflag = 1;
917
+ wflag = 1;
918
+ break;
919
+ case 1:
920
+ if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
921
+ Data_Get_Struct(argv2[0], gsl_vector_complex, v);
922
+ w = gsl_eigen_nonsymm_alloc(m->size1);
923
+ wflag = 1;
924
+ } else if (CLASS_OF(argv2[0]) == cgsl_eigen_nonsymm_workspace) {
925
+ v = gsl_vector_complex_alloc(m->size1);
926
+ vflag = 1;
927
+ Data_Get_Struct(argv2[0], gsl_eigen_nonsymm_workspace, w);
928
+ } else {
929
+ rb_raise(rb_eArgError, "Wrong argument type.\n");
930
+ }
931
+ break;
932
+ case 2:
933
+ CHECK_VECTOR_COMPLEX(argv2[0]);
934
+ if (CLASS_OF(argv2[1]) != cgsl_eigen_nonsymm_workspace) {
935
+ rb_raise(rb_eArgError, "argv[1] must be a GSL::Eigen::Nonsymm::Workspace.\n");
936
+ }
937
+ Data_Get_Struct(argv2[0], gsl_vector_complex, v);
938
+ Data_Get_Struct(argv2[1], gsl_eigen_nonsymm_workspace, w);
939
+ break;
940
+ default:
941
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0-2).\n", argc);
942
+ }
943
+ // mtmp = make_matrix_clone(m);
944
+ gsl_eigen_nonsymm(m, v, w);
945
+ // gsl_matrix_free(mtmp);
946
+ if (wflag == 1) gsl_eigen_nonsymm_free(w);
947
+ if (vflag == 1)
948
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v);
949
+ else
950
+ return argv2[0];
951
+ }
952
+
981
953
  static VALUE rb_gsl_eigen_nonsymm_Z(int argc, VALUE *argv, VALUE obj)
982
954
  {
983
955
  gsl_matrix *m, *Z;
@@ -997,7 +969,6 @@ static VALUE rb_gsl_eigen_nonsymm_Z(int argc, VALUE *argv, VALUE obj)
997
969
  istart = 1;
998
970
  argv2 = argv + 1;
999
971
  }
1000
-
1001
972
  switch (argc-istart) {
1002
973
  case 0:
1003
974
  v = gsl_vector_complex_alloc(m->size1);
@@ -1054,14 +1025,69 @@ static VALUE rb_gsl_eigen_nonsymmv_alloc(VALUE klass, VALUE nn)
1054
1025
  }
1055
1026
 
1056
1027
  #ifdef HAVE_NARRAY_H
1057
- static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj);
1028
+ static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj)
1029
+ {
1030
+ struct NARRAY *na;
1031
+ VALUE nary, nvec;
1032
+ gsl_matrix *A = NULL;
1033
+ gsl_eigen_nonsymmv_workspace *w = NULL;
1034
+ gsl_vector_complex_view vv;
1035
+ gsl_matrix_complex_view mm;
1036
+ int shape[1], shape2[2];
1037
+ int flagw = 0;
1038
+ switch (argc) {
1039
+ case 2:
1040
+ if (!NA_IsNArray(argv[0]))
1041
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
1042
+ rb_class2name(CLASS_OF(argv[0])));
1043
+ GetNArray(argv[0], na);
1044
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
1045
+ if (na->shape[0] != na->shape[1])
1046
+ rb_raise(rb_eRuntimeError, "square matrix required");
1047
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
1048
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
1049
+ if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymmv_workspace)
1050
+ rb_raise(rb_eTypeError,
1051
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
1052
+ rb_class2name(CLASS_OF(argv[1])));
1053
+ Data_Get_Struct(argv[1], gsl_eigen_nonsymmv_workspace, w);
1054
+ flagw = 0;
1055
+ break;
1056
+ case 1:
1057
+ if (!NA_IsNArray(argv[0]))
1058
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
1059
+ rb_class2name(CLASS_OF(argv[0])));
1060
+ GetNArray(argv[0], na);
1061
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
1062
+ if (na->shape[0] != na->shape[1])
1063
+ rb_raise(rb_eRuntimeError, "square matrix required");
1064
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
1065
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
1066
+ w = gsl_eigen_nonsymmv_alloc(A->size1);
1067
+ flagw = 1;
1068
+ break;
1069
+ default:
1070
+ rb_raise(rb_eArgError, "matrix not given");
1071
+ break;
1072
+ }
1073
+ shape[0] = A->size1; shape2[0] = A->size1; shape2[1] = A->size2;
1074
+ nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
1075
+ vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
1076
+ nvec = na_make_object(NA_DCOMPLEX, 2, shape2, CLASS_OF(argv[0]));
1077
+ mm = gsl_matrix_complex_view_array(NA_PTR_TYPE(nvec,double*), A->size1, A->size2);
1078
+ gsl_eigen_nonsymmv(A, &vv.vector, &mm.matrix, w);
1079
+ /* gsl_sort_vector(v);*/
1080
+ gsl_matrix_free(A);
1081
+ if (flagw == 1) gsl_eigen_nonsymmv_free(w);
1082
+ return rb_ary_new3(2, nary, nvec);
1083
+ }
1058
1084
  #endif
1059
1085
 
1060
1086
  static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
1061
1087
  {
1062
1088
  gsl_matrix *m;
1063
- gsl_vector_complex *v;
1064
- gsl_matrix_complex *evec;
1089
+ gsl_vector_complex *v = NULL;
1090
+ gsl_matrix_complex *evec = NULL;
1065
1091
  gsl_eigen_nonsymmv_workspace *w;
1066
1092
  int vflag = 0, wflag = 0;
1067
1093
  int istart = 0;
@@ -1069,7 +1095,7 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
1069
1095
 
1070
1096
  #ifdef HAVE_NARRAY_H
1071
1097
  if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymmv_narray(argc, argv, obj);
1072
- if (argc >= 1 && NA_IsNArray(argv[0]))
1098
+ if (argc >= 1 && NA_IsNArray(argv[0]))
1073
1099
  return rb_gsl_eigen_nonsymmv_narray(argc, argv, obj);
1074
1100
  #endif
1075
1101
 
@@ -1083,7 +1109,6 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
1083
1109
  istart = 1;
1084
1110
  argv2 = argv + 1;
1085
1111
  }
1086
-
1087
1112
  switch (argc-istart) {
1088
1113
  case 0:
1089
1114
  v = gsl_vector_complex_alloc(m->size1);
@@ -1127,78 +1152,19 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
1127
1152
 
1128
1153
  if (wflag == 1) gsl_eigen_nonsymmv_free(w);
1129
1154
  if (vflag == 1) {
1130
- return rb_ary_new3(2,
1131
- Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
1132
- Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec));
1155
+ return rb_ary_new3(2,
1156
+ Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
1157
+ Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec));
1133
1158
  } else {
1134
1159
  return rb_ary_new3(2, argv2[0], argv2[1]);
1135
1160
  }
1136
1161
  }
1137
1162
 
1138
- #ifdef HAVE_NARRAY_H
1139
- static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj)
1140
- {
1141
- struct NARRAY *na;
1142
- VALUE nary, nvec;
1143
- gsl_matrix *A = NULL;
1144
- gsl_eigen_nonsymmv_workspace *w = NULL;
1145
- gsl_vector_complex_view vv;
1146
- gsl_matrix_complex_view mm;
1147
- int shape[1], shape2[2];
1148
- int flagw = 0;
1149
- switch (argc) {
1150
- case 2:
1151
- if (!NA_IsNArray(argv[0]))
1152
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
1153
- rb_class2name(CLASS_OF(argv[0])));
1154
- GetNArray(argv[0], na);
1155
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
1156
- if (na->shape[0] != na->shape[1])
1157
- rb_raise(rb_eRuntimeError, "square matrix required");
1158
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
1159
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
1160
- if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymmv_workspace)
1161
- rb_raise(rb_eTypeError,
1162
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
1163
- rb_class2name(CLASS_OF(argv[1])));
1164
- Data_Get_Struct(argv[1], gsl_eigen_nonsymmv_workspace, w);
1165
- flagw = 0;
1166
- break;
1167
- case 1:
1168
- if (!NA_IsNArray(argv[0]))
1169
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
1170
- rb_class2name(CLASS_OF(argv[0])));
1171
- GetNArray(argv[0], na);
1172
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
1173
- if (na->shape[0] != na->shape[1])
1174
- rb_raise(rb_eRuntimeError, "square matrix required");
1175
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
1176
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
1177
- w = gsl_eigen_nonsymmv_alloc(A->size1);
1178
- flagw = 1;
1179
- break;
1180
- default:
1181
- rb_raise(rb_eArgError, "matrix not given");
1182
- break;
1183
- }
1184
- shape[0] = A->size1; shape2[0] = A->size1; shape2[1] = A->size2;
1185
- nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
1186
- vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
1187
- nvec = na_make_object(NA_DCOMPLEX, 2, shape2, CLASS_OF(argv[0]));
1188
- mm = gsl_matrix_complex_view_array(NA_PTR_TYPE(nvec,double*), A->size1, A->size2);
1189
- gsl_eigen_nonsymmv(A, &vv.vector, &mm.matrix, w);
1190
- /* gsl_sort_vector(v);*/
1191
- gsl_matrix_free(A);
1192
- if (flagw == 1) gsl_eigen_nonsymmv_free(w);
1193
- return rb_ary_new3(2, nary, nvec);
1194
- }
1195
- #endif
1196
-
1197
1163
  static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
1198
1164
  {
1199
- gsl_matrix *m, *Z;
1200
- gsl_vector_complex *v;
1201
- gsl_matrix_complex *evec;
1165
+ gsl_matrix *m, *Z = NULL;
1166
+ gsl_vector_complex *v = NULL;
1167
+ gsl_matrix_complex *evec = NULL;
1202
1168
  gsl_eigen_nonsymmv_workspace *w;
1203
1169
  int vflag = 0, wflag = 0;
1204
1170
  int istart = 0;
@@ -1214,7 +1180,6 @@ static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
1214
1180
  istart = 1;
1215
1181
  argv2 = argv + 1;
1216
1182
  }
1217
-
1218
1183
  switch (argc-istart) {
1219
1184
  case 0:
1220
1185
  v = gsl_vector_complex_alloc(m->size1);
@@ -1262,17 +1227,17 @@ static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
1262
1227
 
1263
1228
  if (wflag == 1) gsl_eigen_nonsymmv_free(w);
1264
1229
  if (vflag == 1) {
1265
- return rb_ary_new3(3,
1266
- Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
1267
- Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec),
1268
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z));
1230
+ return rb_ary_new3(3,
1231
+ Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
1232
+ Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec),
1233
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z));
1269
1234
  } else {
1270
1235
  return rb_ary_new3(2, argv2[0], argv2[1], argv2[2]);
1271
1236
  }
1272
1237
  }
1273
1238
 
1274
1239
  static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
1275
- int (*sortfunc)(gsl_vector_complex*, gsl_matrix_complex*, gsl_eigen_sort_t))
1240
+ int (*sortfunc)(gsl_vector_complex*, gsl_matrix_complex*, gsl_eigen_sort_t))
1276
1241
  {
1277
1242
  gsl_vector_complex *v = NULL;
1278
1243
  gsl_matrix_complex *m = NULL;
@@ -1282,19 +1247,19 @@ static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
1282
1247
  case 3:
1283
1248
  CHECK_FIXNUM(argv[2]);
1284
1249
  type = FIX2INT(argv[2]);
1285
- /* no break, do next */
1250
+ /* no break, do next */
1286
1251
  case 2:
1287
1252
  if (argv[0] == Qnil) {
1288
1253
  v = NULL;
1289
1254
  } else {
1290
1255
  CHECK_VECTOR_COMPLEX(argv[0]);
1291
- Data_Get_Struct(argv[0], gsl_vector_complex, v);
1256
+ Data_Get_Struct(argv[0], gsl_vector_complex, v);
1292
1257
  }
1293
1258
  if (argv[1] == Qnil) {
1294
1259
  m = NULL;
1295
1260
  } else {
1296
1261
  CHECK_MATRIX_COMPLEX(argv[1]);
1297
- Data_Get_Struct(argv[1], gsl_matrix_complex, m);
1262
+ Data_Get_Struct(argv[1], gsl_matrix_complex, m);
1298
1263
  }
1299
1264
  break;
1300
1265
  default:
@@ -1306,13 +1271,9 @@ static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
1306
1271
 
1307
1272
  static VALUE rb_gsl_eigen_nonsymmv_sort(int argc, VALUE *argv, VALUE obj)
1308
1273
  {
1309
- return rb_gsl_eigen_complex_sort2(argc, argv, obj, gsl_eigen_nonsymmv_sort);
1274
+ return rb_gsl_eigen_complex_sort2(argc, argv, obj, gsl_eigen_nonsymmv_sort);
1310
1275
  }
1311
1276
 
1312
- #endif
1313
-
1314
- #ifdef GSL_1_10_LATER
1315
-
1316
1277
  static VALUE rb_gsl_eigen_gensymm_alloc(VALUE klass, VALUE nn)
1317
1278
  {
1318
1279
  gsl_eigen_gensymm_workspace *w = NULL;
@@ -1343,373 +1304,371 @@ static VALUE rb_gsl_eigen_genhermv_alloc(VALUE klass, VALUE nn)
1343
1304
  }
1344
1305
 
1345
1306
  static int check_argv_gensymm(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
1346
- gsl_vector **eval, gsl_eigen_gensymm_workspace **w)
1307
+ gsl_vector **eval, gsl_eigen_gensymm_workspace **w)
1347
1308
  {
1348
- int argc2 = argc;
1349
- int flag = 0;
1350
- if (CLASS_OF(obj) == cgensymm) {
1351
- Data_Get_Struct(obj, gsl_eigen_gensymm_workspace, *w);
1352
- } else {
1353
- if (rb_obj_is_kind_of(argv[argc-1], cgensymm)) {
1354
- Data_Get_Struct(argv[argc-1], gsl_eigen_gensymm_workspace, *w);
1355
- argc2 = argc-1;
1356
- } else {
1357
- /* workspace is not given */
1358
- }
1359
- }
1360
- switch (argc2) {
1361
- case 2:
1362
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1363
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1364
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1365
- break;
1366
- case 3:
1367
- if (rb_obj_is_kind_of(argv[2], cgensymm)) {
1368
- Data_Get_Struct(argv[2], gsl_eigen_gensymm_workspace, *w);
1369
- } else {
1370
- CHECK_VECTOR(argv[2]);
1371
- Data_Get_Struct(argv[2], gsl_vector, *eval);
1372
- }
1373
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1374
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1375
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1376
- break;
1377
- default:
1378
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1379
- }
1380
- if (*eval == NULL) {
1381
- *eval = gsl_vector_alloc((*A)->size1);
1382
- flag += 1;
1383
- }
1384
- if (*w == NULL) {
1385
- *w = gsl_eigen_gensymm_alloc((*A)->size1);
1386
- flag += 2;
1387
- }
1388
- return flag;
1309
+ int argc2 = argc;
1310
+ int flag = 0;
1311
+ if (CLASS_OF(obj) == cgensymm) {
1312
+ Data_Get_Struct(obj, gsl_eigen_gensymm_workspace, *w);
1313
+ } else {
1314
+ if (rb_obj_is_kind_of(argv[argc-1], cgensymm)) {
1315
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gensymm_workspace, *w);
1316
+ argc2 = argc-1;
1317
+ } else {
1318
+ /* workspace is not given */
1319
+ }
1320
+ }
1321
+ switch (argc2) {
1322
+ case 2:
1323
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1324
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1325
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1326
+ break;
1327
+ case 3:
1328
+ if (rb_obj_is_kind_of(argv[2], cgensymm)) {
1329
+ Data_Get_Struct(argv[2], gsl_eigen_gensymm_workspace, *w);
1330
+ } else {
1331
+ CHECK_VECTOR(argv[2]);
1332
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
1333
+ }
1334
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1335
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1336
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1337
+ break;
1338
+ default:
1339
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1340
+ }
1341
+ if (*eval == NULL) {
1342
+ *eval = gsl_vector_alloc((*A)->size1);
1343
+ flag += 1;
1344
+ }
1345
+ if (*w == NULL) {
1346
+ *w = gsl_eigen_gensymm_alloc((*A)->size1);
1347
+ flag += 2;
1348
+ }
1349
+ return flag;
1389
1350
  }
1390
1351
 
1391
1352
  static int check_argv_gensymmv(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
1392
- gsl_vector **eval, gsl_matrix **evec, gsl_eigen_gensymmv_workspace **w)
1353
+ gsl_vector **eval, gsl_matrix **evec, gsl_eigen_gensymmv_workspace **w)
1393
1354
  {
1394
- int argc2 = argc;
1395
- int flag = 0;
1396
- if (CLASS_OF(obj) == cgensymmv) {
1397
- Data_Get_Struct(obj, gsl_eigen_gensymmv_workspace, *w);
1398
- } else {
1399
- if (rb_obj_is_kind_of(argv[argc-1], cgensymmv)) {
1400
- Data_Get_Struct(argv[argc-1], gsl_eigen_gensymmv_workspace, *w);
1401
- argc2 = argc-1;
1402
- } else {
1403
-
1404
- /* workspace is not given */
1405
- }
1406
- }
1407
-
1408
- switch (argc2) {
1409
- case 2:
1410
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1411
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1412
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1413
- break;
1414
- case 3:
1415
- if (rb_obj_is_kind_of(argv[2], cgensymmv)) {
1416
- Data_Get_Struct(argv[2], gsl_eigen_gensymmv_workspace, *w);
1417
- } else {
1355
+ int argc2 = argc;
1356
+ int flag = 0;
1357
+ if (CLASS_OF(obj) == cgensymmv) {
1358
+ Data_Get_Struct(obj, gsl_eigen_gensymmv_workspace, *w);
1359
+ } else {
1360
+ if (rb_obj_is_kind_of(argv[argc-1], cgensymmv)) {
1361
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gensymmv_workspace, *w);
1362
+ argc2 = argc-1;
1363
+ } else {
1364
+
1365
+ /* workspace is not given */
1366
+ }
1367
+ }
1368
+ switch (argc2) {
1369
+ case 2:
1370
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1371
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1372
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1373
+ break;
1374
+ case 3:
1375
+ if (rb_obj_is_kind_of(argv[2], cgensymmv)) {
1376
+ Data_Get_Struct(argv[2], gsl_eigen_gensymmv_workspace, *w);
1377
+ } else {
1418
1378
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gensymmv::Workspace expected)",
1419
- rb_class2name(CLASS_OF(argv[2])));
1420
- }
1421
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1422
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1423
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1424
-
1425
- break;
1426
- case 5:
1427
- if (rb_obj_is_kind_of(argv[4], cgensymmv)) {
1428
- Data_Get_Struct(argv[4], gsl_eigen_gensymmv_workspace, *w);
1429
- } else {
1379
+ rb_class2name(CLASS_OF(argv[2])));
1380
+ }
1381
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1382
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1383
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1384
+
1385
+ break;
1386
+ case 5:
1387
+ if (rb_obj_is_kind_of(argv[4], cgensymmv)) {
1388
+ Data_Get_Struct(argv[4], gsl_eigen_gensymmv_workspace, *w);
1389
+ } else {
1430
1390
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gensymmv::Workspace expected)",
1431
- rb_class2name(CLASS_OF(argv[4])));
1391
+ rb_class2name(CLASS_OF(argv[4])));
1432
1392
  }
1433
- CHECK_VECTOR(argv[2]);
1434
- Data_Get_Struct(argv[2], gsl_vector, *eval);
1435
- CHECK_MATRIX(argv[3]);
1436
- Data_Get_Struct(argv[3], gsl_matrix, *evec);
1437
-
1438
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1439
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1440
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1441
- break;
1442
- default:
1443
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1444
- }
1445
- if (*eval == NULL && *evec == NULL) {
1446
- *eval = gsl_vector_alloc((*A)->size1);
1447
- *evec = gsl_matrix_alloc((*A)->size1, (*A)->size2);
1448
- flag += 1;
1449
- }
1450
- if (*w == NULL) {
1451
- *w = gsl_eigen_gensymmv_alloc((*A)->size1);
1452
- flag += 2;
1453
- }
1454
- return flag;
1393
+ CHECK_VECTOR(argv[2]);
1394
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
1395
+ CHECK_MATRIX(argv[3]);
1396
+ Data_Get_Struct(argv[3], gsl_matrix, *evec);
1397
+
1398
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1399
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1400
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1401
+ break;
1402
+ default:
1403
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1404
+ }
1405
+ if (*eval == NULL && *evec == NULL) {
1406
+ *eval = gsl_vector_alloc((*A)->size1);
1407
+ *evec = gsl_matrix_alloc((*A)->size1, (*A)->size2);
1408
+ flag += 1;
1409
+ }
1410
+ if (*w == NULL) {
1411
+ *w = gsl_eigen_gensymmv_alloc((*A)->size1);
1412
+ flag += 2;
1413
+ }
1414
+ return flag;
1455
1415
  }
1456
1416
 
1457
1417
  static int check_argv_genherm(int argc, VALUE *argv, VALUE obj, gsl_matrix_complex **A, gsl_matrix_complex **B,
1458
- gsl_vector **eval, gsl_eigen_genherm_workspace **w)
1418
+ gsl_vector **eval, gsl_eigen_genherm_workspace **w)
1459
1419
  {
1460
- int argc2 = argc;
1461
- int flag = 0;
1462
- if (CLASS_OF(obj) == cgenherm) {
1463
- Data_Get_Struct(obj, gsl_eigen_genherm_workspace, *w);
1464
- } else {
1465
- if (rb_obj_is_kind_of(argv[argc-1], cgenherm)) {
1466
- Data_Get_Struct(argv[argc-1], gsl_eigen_genherm_workspace, *w);
1467
- argc2 = argc-1;
1468
- } else {
1469
- /* workspace is not given */
1470
- }
1471
- }
1472
- switch (argc2) {
1473
- case 2:
1474
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1475
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1476
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1477
- break;
1478
- case 3:
1479
- if (rb_obj_is_kind_of(argv[2], cgenherm)) {
1480
- Data_Get_Struct(argv[2], gsl_eigen_genherm_workspace, *w);
1481
- } else {
1482
- CHECK_VECTOR(argv[2]);
1483
- Data_Get_Struct(argv[2], gsl_vector, *eval);
1484
- }
1485
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1486
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1487
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1488
- break;
1489
- default:
1490
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1491
- }
1492
- if (*eval == NULL) {
1493
- *eval = gsl_vector_alloc((*A)->size1);
1494
- flag += 1;
1495
- }
1496
- if (*w == NULL) {
1497
- *w = gsl_eigen_genherm_alloc((*A)->size1);
1498
- flag += 2;
1499
- }
1500
- return flag;
1420
+ int argc2 = argc;
1421
+ int flag = 0;
1422
+ if (CLASS_OF(obj) == cgenherm) {
1423
+ Data_Get_Struct(obj, gsl_eigen_genherm_workspace, *w);
1424
+ } else {
1425
+ if (rb_obj_is_kind_of(argv[argc-1], cgenherm)) {
1426
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genherm_workspace, *w);
1427
+ argc2 = argc-1;
1428
+ } else {
1429
+ /* workspace is not given */
1430
+ }
1431
+ }
1432
+ switch (argc2) {
1433
+ case 2:
1434
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1435
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1436
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1437
+ break;
1438
+ case 3:
1439
+ if (rb_obj_is_kind_of(argv[2], cgenherm)) {
1440
+ Data_Get_Struct(argv[2], gsl_eigen_genherm_workspace, *w);
1441
+ } else {
1442
+ CHECK_VECTOR(argv[2]);
1443
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
1444
+ }
1445
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1446
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1447
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1448
+ break;
1449
+ default:
1450
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
1451
+ }
1452
+ if (*eval == NULL) {
1453
+ *eval = gsl_vector_alloc((*A)->size1);
1454
+ flag += 1;
1455
+ }
1456
+ if (*w == NULL) {
1457
+ *w = gsl_eigen_genherm_alloc((*A)->size1);
1458
+ flag += 2;
1459
+ }
1460
+ return flag;
1501
1461
  }
1502
1462
  static int check_argv_genhermv(int argc, VALUE *argv, VALUE obj, gsl_matrix_complex **A, gsl_matrix_complex **B,
1503
- gsl_vector **eval, gsl_matrix_complex **evec, gsl_eigen_genhermv_workspace **w)
1463
+ gsl_vector **eval, gsl_matrix_complex **evec, gsl_eigen_genhermv_workspace **w)
1504
1464
  {
1505
- int argc2 = argc;
1506
- int flag = 0;
1507
- if (CLASS_OF(obj) == cgenhermv) {
1508
- Data_Get_Struct(obj, gsl_eigen_genhermv_workspace, *w);
1509
- } else {
1510
- if (rb_obj_is_kind_of(argv[argc-1], cgenhermv)) {
1511
- Data_Get_Struct(argv[argc-1], gsl_eigen_genhermv_workspace, *w);
1512
- argc2 = argc-1;
1513
- } else {
1514
-
1515
- /* workspace is not given */
1516
- }
1517
- }
1518
-
1519
- switch (argc2) {
1520
- case 2:
1521
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1522
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1523
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1524
- break;
1525
- case 3:
1526
- if (rb_obj_is_kind_of(argv[2], cgenhermv)) {
1527
- Data_Get_Struct(argv[2], gsl_eigen_genhermv_workspace, *w);
1528
- } else {
1465
+ int argc2 = argc;
1466
+ int flag = 0;
1467
+ if (CLASS_OF(obj) == cgenhermv) {
1468
+ Data_Get_Struct(obj, gsl_eigen_genhermv_workspace, *w);
1469
+ } else {
1470
+ if (rb_obj_is_kind_of(argv[argc-1], cgenhermv)) {
1471
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genhermv_workspace, *w);
1472
+ argc2 = argc-1;
1473
+ } else {
1474
+
1475
+ /* workspace is not given */
1476
+ }
1477
+ }
1478
+ switch (argc2) {
1479
+ case 2:
1480
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1481
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1482
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1483
+ break;
1484
+ case 3:
1485
+ if (rb_obj_is_kind_of(argv[2], cgenhermv)) {
1486
+ Data_Get_Struct(argv[2], gsl_eigen_genhermv_workspace, *w);
1487
+ } else {
1529
1488
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Genhermv::Workspace expected)",
1530
- rb_class2name(CLASS_OF(argv[2])));
1531
- }
1532
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1533
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1534
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1535
-
1536
- break;
1537
- case 5:
1538
- if (rb_obj_is_kind_of(argv[4], cgenhermv)) {
1539
- Data_Get_Struct(argv[4], gsl_eigen_genhermv_workspace, *w);
1540
- } else {
1489
+ rb_class2name(CLASS_OF(argv[2])));
1490
+ }
1491
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1492
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1493
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1494
+
1495
+ break;
1496
+ case 5:
1497
+ if (rb_obj_is_kind_of(argv[4], cgenhermv)) {
1498
+ Data_Get_Struct(argv[4], gsl_eigen_genhermv_workspace, *w);
1499
+ } else {
1541
1500
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Genhermv::Workspace expected)",
1542
- rb_class2name(CLASS_OF(argv[4])));
1501
+ rb_class2name(CLASS_OF(argv[4])));
1543
1502
  }
1544
- CHECK_VECTOR(argv[2]);
1545
- Data_Get_Struct(argv[2], gsl_vector, *eval);
1546
- CHECK_MATRIX_COMPLEX(argv[3]);
1547
- Data_Get_Struct(argv[3], gsl_matrix_complex, *evec);
1548
-
1549
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1550
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1551
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1552
- break;
1553
- default:
1554
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1555
- }
1556
- if (*eval == NULL && *evec == NULL) {
1557
- *eval = gsl_vector_alloc((*A)->size1);
1558
- *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
1559
- flag += 1;
1560
- }
1561
- if (*w == NULL) {
1562
- *w = gsl_eigen_genhermv_alloc((*A)->size1);
1563
- flag += 2;
1564
- }
1565
- return flag;
1503
+ CHECK_VECTOR(argv[2]);
1504
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
1505
+ CHECK_MATRIX_COMPLEX(argv[3]);
1506
+ Data_Get_Struct(argv[3], gsl_matrix_complex, *evec);
1507
+
1508
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
1509
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
1510
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
1511
+ break;
1512
+ default:
1513
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1514
+ }
1515
+ if (*eval == NULL && *evec == NULL) {
1516
+ *eval = gsl_vector_alloc((*A)->size1);
1517
+ *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
1518
+ flag += 1;
1519
+ }
1520
+ if (*w == NULL) {
1521
+ *w = gsl_eigen_genhermv_alloc((*A)->size1);
1522
+ flag += 2;
1523
+ }
1524
+ return flag;
1566
1525
  }
1567
1526
  static VALUE rb_gsl_eigen_gensymm(int argc, VALUE *argv, VALUE obj)
1568
1527
  {
1569
- gsl_matrix *A = NULL, *B = NULL;
1570
- gsl_matrix *Atmp = NULL;
1571
- gsl_vector *eval = NULL;
1572
- gsl_eigen_gensymm_workspace *w = NULL;
1573
- int flag;
1574
- VALUE veval;
1575
- flag = check_argv_gensymm(argc, argv, obj, &A, &B, &eval, &w);
1528
+ gsl_matrix *A = NULL, *B = NULL;
1529
+ gsl_matrix *Atmp = NULL;
1530
+ gsl_vector *eval = NULL;
1531
+ gsl_eigen_gensymm_workspace *w = NULL;
1532
+ int flag;
1533
+ VALUE veval = Qnil;
1534
+ flag = check_argv_gensymm(argc, argv, obj, &A, &B, &eval, &w);
1576
1535
  Atmp = make_matrix_clone(A);
1577
- // Btmp = make_matrix_clone(B);
1578
- gsl_eigen_gensymm(Atmp, B, eval, w);
1536
+ // Btmp = make_matrix_clone(B);
1537
+ gsl_eigen_gensymm(Atmp, B, eval, w);
1579
1538
  gsl_matrix_free(Atmp);
1580
- // gsl_matrix_free(Btmp);
1581
- switch (flag) {
1582
- case 0:
1583
- veval = argv[2];
1584
- break;
1585
- case 1:
1586
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1587
- break;
1588
- case 2:
1589
- veval = argv[2];
1590
- gsl_eigen_gensymm_free(w);
1591
- break;
1592
- case 3:
1593
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1594
- gsl_eigen_gensymm_free(w);
1595
- break;
1596
- }
1597
-
1598
- return veval;
1539
+ // gsl_matrix_free(Btmp);
1540
+ switch (flag) {
1541
+ case 0:
1542
+ veval = argv[2];
1543
+ break;
1544
+ case 1:
1545
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1546
+ break;
1547
+ case 2:
1548
+ veval = argv[2];
1549
+ gsl_eigen_gensymm_free(w);
1550
+ break;
1551
+ case 3:
1552
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1553
+ gsl_eigen_gensymm_free(w);
1554
+ break;
1555
+ }
1556
+
1557
+ return veval;
1599
1558
  }
1600
1559
 
1601
1560
  static VALUE rb_gsl_eigen_gensymmv(int argc, VALUE *argv, VALUE obj)
1602
1561
  {
1603
- gsl_matrix *A = NULL, *B = NULL;
1604
- gsl_matrix *Atmp = NULL;
1605
- gsl_vector *eval = NULL;
1606
- gsl_matrix *evec = NULL;
1607
- gsl_eigen_gensymmv_workspace *w = NULL;
1608
- int flag;
1609
- VALUE veval, vevec;
1610
- flag = check_argv_gensymmv(argc, argv, obj, &A, &B, &eval, &evec, &w);
1562
+ gsl_matrix *A = NULL, *B = NULL;
1563
+ gsl_matrix *Atmp = NULL;
1564
+ gsl_vector *eval = NULL;
1565
+ gsl_matrix *evec = NULL;
1566
+ gsl_eigen_gensymmv_workspace *w = NULL;
1567
+ int flag;
1568
+ VALUE veval = Qnil, vevec = Qnil;
1569
+ flag = check_argv_gensymmv(argc, argv, obj, &A, &B, &eval, &evec, &w);
1611
1570
  Atmp = make_matrix_clone(A);
1612
- // Btmp = make_matrix_clone(B);
1613
- gsl_eigen_gensymmv(Atmp, B, eval, evec, w);
1571
+ // Btmp = make_matrix_clone(B);
1572
+ gsl_eigen_gensymmv(Atmp, B, eval, evec, w);
1614
1573
  gsl_matrix_free(Atmp);
1615
- // gsl_matrix_free(Btmp);
1616
-
1617
- switch (flag) {
1618
- case 0:
1619
- veval = argv[2];
1620
- vevec = argv[3];
1621
- break;
1622
- case 1:
1623
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1624
- vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
1625
- break;
1626
- case 2:
1627
- veval = argv[2];
1628
- vevec = argv[3];
1629
- gsl_eigen_gensymmv_free(w);
1630
- break;
1631
- case 3:
1632
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1633
- vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
1634
- gsl_eigen_gensymmv_free(w);
1635
- break;
1636
- }
1637
-
1638
- return rb_ary_new3(2, veval, vevec);
1574
+ // gsl_matrix_free(Btmp);
1575
+
1576
+ switch (flag) {
1577
+ case 0:
1578
+ veval = argv[2];
1579
+ vevec = argv[3];
1580
+ break;
1581
+ case 1:
1582
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1583
+ vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
1584
+ break;
1585
+ case 2:
1586
+ veval = argv[2];
1587
+ vevec = argv[3];
1588
+ gsl_eigen_gensymmv_free(w);
1589
+ break;
1590
+ case 3:
1591
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1592
+ vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
1593
+ gsl_eigen_gensymmv_free(w);
1594
+ break;
1595
+ }
1596
+
1597
+ return rb_ary_new3(2, veval, vevec);
1639
1598
  }
1640
1599
 
1641
1600
  static VALUE rb_gsl_eigen_genherm(int argc, VALUE *argv, VALUE obj)
1642
1601
  {
1643
- gsl_matrix_complex *A = NULL, *B = NULL;
1644
- gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
1645
- gsl_vector *eval = NULL;
1646
- gsl_eigen_genherm_workspace *w = NULL;
1647
- int flag;
1648
- VALUE veval;
1649
- flag = check_argv_genherm(argc, argv, obj, &A, &B, &eval, &w);
1602
+ gsl_matrix_complex *A = NULL, *B = NULL;
1603
+ gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
1604
+ gsl_vector *eval = NULL;
1605
+ gsl_eigen_genherm_workspace *w = NULL;
1606
+ int flag;
1607
+ VALUE veval = Qnil;
1608
+ flag = check_argv_genherm(argc, argv, obj, &A, &B, &eval, &w);
1650
1609
  Atmp = make_matrix_complex_clone(A);
1651
- Btmp = make_matrix_complex_clone(B);
1652
- gsl_eigen_genherm(Atmp, Btmp, eval, w);
1610
+ Btmp = make_matrix_complex_clone(B);
1611
+ gsl_eigen_genherm(Atmp, Btmp, eval, w);
1653
1612
  gsl_matrix_complex_free(Atmp);
1654
- gsl_matrix_complex_free(Btmp);
1655
- switch (flag) {
1656
- case 0:
1657
- veval = argv[2];
1658
- break;
1659
- case 1:
1660
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1661
- break;
1662
- case 2:
1663
- veval = argv[2];
1664
- gsl_eigen_genherm_free(w);
1665
- break;
1666
- case 3:
1667
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1668
- gsl_eigen_genherm_free(w);
1669
- break;
1670
- }
1671
-
1672
- return veval;
1613
+ gsl_matrix_complex_free(Btmp);
1614
+ switch (flag) {
1615
+ case 0:
1616
+ veval = argv[2];
1617
+ break;
1618
+ case 1:
1619
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1620
+ break;
1621
+ case 2:
1622
+ veval = argv[2];
1623
+ gsl_eigen_genherm_free(w);
1624
+ break;
1625
+ case 3:
1626
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1627
+ gsl_eigen_genherm_free(w);
1628
+ break;
1629
+ }
1630
+
1631
+ return veval;
1673
1632
  }
1674
1633
 
1675
1634
  static VALUE rb_gsl_eigen_genhermv(int argc, VALUE *argv, VALUE obj)
1676
1635
  {
1677
- gsl_matrix_complex *A = NULL, *B = NULL;
1678
- gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
1679
- gsl_vector *eval = NULL;
1680
- gsl_matrix_complex *evec = NULL;
1681
- gsl_eigen_genhermv_workspace *w = NULL;
1682
- int flag;
1683
- VALUE veval, vevec;
1684
- flag = check_argv_genhermv(argc, argv, obj, &A, &B, &eval, &evec, &w);
1636
+ gsl_matrix_complex *A = NULL, *B = NULL;
1637
+ gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
1638
+ gsl_vector *eval = NULL;
1639
+ gsl_matrix_complex *evec = NULL;
1640
+ gsl_eigen_genhermv_workspace *w = NULL;
1641
+ int flag;
1642
+ VALUE veval = Qnil, vevec = Qnil;
1643
+ flag = check_argv_genhermv(argc, argv, obj, &A, &B, &eval, &evec, &w);
1685
1644
  Atmp = make_matrix_complex_clone(A);
1686
- Btmp = make_matrix_complex_clone(B);
1687
- gsl_eigen_genhermv(Atmp, Btmp, eval, evec, w);
1645
+ Btmp = make_matrix_complex_clone(B);
1646
+ gsl_eigen_genhermv(Atmp, Btmp, eval, evec, w);
1688
1647
  gsl_matrix_complex_free(Atmp);
1689
- gsl_matrix_complex_free(Btmp);
1690
-
1691
- switch (flag) {
1692
- case 0:
1693
- veval = argv[2];
1694
- vevec = argv[3];
1695
- break;
1696
- case 1:
1697
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1698
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1699
- break;
1700
- case 2:
1701
- veval = argv[2];
1702
- vevec = argv[3];
1703
- gsl_eigen_genhermv_free(w);
1704
- break;
1705
- case 3:
1706
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1707
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1708
- gsl_eigen_genhermv_free(w);
1709
- break;
1710
- }
1711
-
1712
- return rb_ary_new3(2, veval, vevec);
1648
+ gsl_matrix_complex_free(Btmp);
1649
+
1650
+ switch (flag) {
1651
+ case 0:
1652
+ veval = argv[2];
1653
+ vevec = argv[3];
1654
+ break;
1655
+ case 1:
1656
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1657
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1658
+ break;
1659
+ case 2:
1660
+ veval = argv[2];
1661
+ vevec = argv[3];
1662
+ gsl_eigen_genhermv_free(w);
1663
+ break;
1664
+ case 3:
1665
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
1666
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1667
+ gsl_eigen_genhermv_free(w);
1668
+ break;
1669
+ }
1670
+
1671
+ return rb_ary_new3(2, veval, vevec);
1713
1672
  }
1714
1673
 
1715
1674
  static VALUE rb_gsl_eigen_gensymmv_sort(int argc, VALUE *argv, VALUE obj)
@@ -1718,7 +1677,7 @@ static VALUE rb_gsl_eigen_gensymmv_sort(int argc, VALUE *argv, VALUE obj)
1718
1677
  }
1719
1678
  static VALUE rb_gsl_eigen_genhermv_sort(int argc, VALUE *argv, VALUE obj)
1720
1679
  {
1721
- return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_genhermv_sort);
1680
+ return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_genhermv_sort);
1722
1681
  }
1723
1682
 
1724
1683
  static VALUE rb_gsl_eigen_gen_alloc(VALUE klass, VALUE n)
@@ -1744,9 +1703,9 @@ static VALUE rb_gsl_eigen_gen_params(int argc, VALUE *argv, VALUE obj)
1744
1703
  istart = 0;
1745
1704
  } else {
1746
1705
  if (argc != 4) rb_raise(rb_eArgError, "too few arguments (%d for 3)\n", argc);
1747
- if (CLASS_OF(argv[3]) != cgenw)
1706
+ if (CLASS_OF(argv[3]) != cgenw)
1748
1707
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
1749
- rb_class2name(CLASS_OF(argv[3])));
1708
+ rb_class2name(CLASS_OF(argv[3])));
1750
1709
  Data_Get_Struct(argv[3], gsl_eigen_gen_workspace, w);
1751
1710
  istart = 1;
1752
1711
  }
@@ -1761,318 +1720,316 @@ static VALUE rb_gsl_eigen_gen_params(int argc, VALUE *argv, VALUE obj)
1761
1720
  }
1762
1721
 
1763
1722
  static int check_argv_gen(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
1764
- gsl_vector_complex **alpha, gsl_vector **beta, gsl_eigen_gen_workspace **w)
1723
+ gsl_vector_complex **alpha, gsl_vector **beta, gsl_eigen_gen_workspace **w)
1765
1724
  {
1766
- int argc2 = argc;
1767
- int flag = 0;
1768
- if (CLASS_OF(obj) == cgenw) {
1769
- Data_Get_Struct(obj, gsl_eigen_gen_workspace, *w);
1770
- } else {
1771
- if (rb_obj_is_kind_of(argv[argc-1], cgenw)) {
1772
- Data_Get_Struct(argv[argc-1], gsl_eigen_gen_workspace, *w);
1773
- argc2 = argc-1;
1774
- } else {
1775
-
1776
- /* workspace is not given */
1777
- }
1778
- }
1779
-
1780
- switch (argc2) {
1781
- case 2:
1782
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1783
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1784
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1785
- break;
1786
- case 3:
1787
- if (rb_obj_is_kind_of(argv[2], cgenw)) {
1788
- Data_Get_Struct(argv[2], gsl_eigen_gen_workspace, *w);
1789
- } else {
1725
+ int argc2 = argc;
1726
+ int flag = 0;
1727
+ if (CLASS_OF(obj) == cgenw) {
1728
+ Data_Get_Struct(obj, gsl_eigen_gen_workspace, *w);
1729
+ } else {
1730
+ if (rb_obj_is_kind_of(argv[argc-1], cgenw)) {
1731
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gen_workspace, *w);
1732
+ argc2 = argc-1;
1733
+ } else {
1734
+
1735
+ /* workspace is not given */
1736
+ }
1737
+ }
1738
+ switch (argc2) {
1739
+ case 2:
1740
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1741
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1742
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1743
+ break;
1744
+ case 3:
1745
+ if (rb_obj_is_kind_of(argv[2], cgenw)) {
1746
+ Data_Get_Struct(argv[2], gsl_eigen_gen_workspace, *w);
1747
+ } else {
1790
1748
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
1791
- rb_class2name(CLASS_OF(argv[2])));
1792
- }
1793
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1794
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1795
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1796
- break;
1797
- case 5:
1798
- if (rb_obj_is_kind_of(argv[4], cgenw)) {
1799
- Data_Get_Struct(argv[4], gsl_eigen_gen_workspace, *w);
1800
- } else {
1749
+ rb_class2name(CLASS_OF(argv[2])));
1750
+ }
1751
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1752
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1753
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1754
+ break;
1755
+ case 5:
1756
+ if (rb_obj_is_kind_of(argv[4], cgenw)) {
1757
+ Data_Get_Struct(argv[4], gsl_eigen_gen_workspace, *w);
1758
+ } else {
1801
1759
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
1802
- rb_class2name(CLASS_OF(argv[4])));
1760
+ rb_class2name(CLASS_OF(argv[4])));
1803
1761
  }
1804
- CHECK_VECTOR_COMPLEX(argv[2]);
1805
- Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
1806
- CHECK_VECTOR(argv[3]);
1807
- Data_Get_Struct(argv[3], gsl_vector, *beta);
1808
-
1809
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1810
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1811
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1812
- break;
1813
- default:
1814
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1815
- }
1816
- if (*alpha == NULL && *beta == NULL) {
1817
- *alpha = gsl_vector_complex_alloc((*A)->size1);
1818
- *beta = gsl_vector_alloc((*A)->size1);
1819
- flag += 1;
1820
- }
1821
- if (*w == NULL) {
1822
- *w = gsl_eigen_gen_alloc((*A)->size1);
1823
- flag += 2;
1824
- }
1825
- return flag;
1762
+ CHECK_VECTOR_COMPLEX(argv[2]);
1763
+ Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
1764
+ CHECK_VECTOR(argv[3]);
1765
+ Data_Get_Struct(argv[3], gsl_vector, *beta);
1766
+
1767
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1768
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1769
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1770
+ break;
1771
+ default:
1772
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
1773
+ }
1774
+ if (*alpha == NULL && *beta == NULL) {
1775
+ *alpha = gsl_vector_complex_alloc((*A)->size1);
1776
+ *beta = gsl_vector_alloc((*A)->size1);
1777
+ flag += 1;
1778
+ }
1779
+ if (*w == NULL) {
1780
+ *w = gsl_eigen_gen_alloc((*A)->size1);
1781
+ flag += 2;
1782
+ }
1783
+ return flag;
1826
1784
  }
1827
1785
 
1828
1786
  static VALUE rb_gsl_eigen_gen(int argc, VALUE *argv, VALUE obj)
1829
1787
  {
1830
- gsl_matrix *A = NULL, *B = NULL;
1831
- // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1832
- gsl_vector_complex *alpha = NULL;
1833
- gsl_vector *beta = NULL;
1834
- gsl_eigen_gen_workspace *w = NULL;
1835
- int flag;
1836
- VALUE valpha, vbeta;
1837
- flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
1788
+ gsl_matrix *A = NULL, *B = NULL;
1789
+ // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1790
+ gsl_vector_complex *alpha = NULL;
1791
+ gsl_vector *beta = NULL;
1792
+ gsl_eigen_gen_workspace *w = NULL;
1793
+ int flag;
1794
+ VALUE valpha = Qnil, vbeta = Qnil;
1795
+ flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
1838
1796
  // Atmp = make_matrix_clone(A);
1839
- // Btmp = make_matrix_clone(B);
1840
- gsl_eigen_gen(A, B, alpha, beta, w);
1797
+ // Btmp = make_matrix_clone(B);
1798
+ gsl_eigen_gen(A, B, alpha, beta, w);
1841
1799
  // gsl_matrix_free(Atmp);
1842
- // gsl_matrix_free(Btmp);
1843
-
1844
- switch (flag) {
1845
- case 0:
1846
- valpha = argv[2];
1847
- vbeta = argv[3];
1848
- break;
1849
- case 1:
1850
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1851
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1852
- break;
1853
- case 2:
1854
- valpha = argv[2];
1855
- vbeta = argv[3];
1856
- gsl_eigen_gen_free(w);
1857
- break;
1858
- case 3:
1859
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1860
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1861
- gsl_eigen_gen_free(w);
1862
- break;
1863
- }
1864
-
1865
- return rb_ary_new3(2, valpha, vbeta);
1800
+ // gsl_matrix_free(Btmp);
1801
+
1802
+ switch (flag) {
1803
+ case 0:
1804
+ valpha = argv[2];
1805
+ vbeta = argv[3];
1806
+ break;
1807
+ case 1:
1808
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1809
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1810
+ break;
1811
+ case 2:
1812
+ valpha = argv[2];
1813
+ vbeta = argv[3];
1814
+ gsl_eigen_gen_free(w);
1815
+ break;
1816
+ case 3:
1817
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1818
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1819
+ gsl_eigen_gen_free(w);
1820
+ break;
1821
+ }
1822
+
1823
+ return rb_ary_new3(2, valpha, vbeta);
1866
1824
  }
1867
1825
 
1868
1826
  static VALUE rb_gsl_eigen_gen_QZ(int argc, VALUE *argv, VALUE obj)
1869
1827
  {
1870
- gsl_matrix *A = NULL, *B = NULL;
1871
- // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1872
- gsl_vector_complex *alpha = NULL;
1873
- gsl_vector *beta = NULL;
1874
- gsl_matrix *Q, *Z;
1875
- gsl_eigen_gen_workspace *w = NULL;
1876
- int flag;
1877
- VALUE valpha, vbeta, vQ, vZ;
1878
- flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
1828
+ gsl_matrix *A = NULL, *B = NULL;
1829
+ // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1830
+ gsl_vector_complex *alpha = NULL;
1831
+ gsl_vector *beta = NULL;
1832
+ gsl_matrix *Q, *Z;
1833
+ gsl_eigen_gen_workspace *w = NULL;
1834
+ int flag;
1835
+ VALUE valpha = Qnil, vbeta = Qnil, vQ, vZ;
1836
+ flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
1879
1837
  /* Atmp = make_matrix_clone(A);
1880
- Btmp = make_matrix_clone(B); */
1838
+ Btmp = make_matrix_clone(B); */
1881
1839
  Q = gsl_matrix_alloc(A->size1, A->size2);
1882
- Z = gsl_matrix_alloc(A->size1, A->size2);
1883
- // gsl_eigen_gen_QZ(Atmp, Btmp, alpha, beta, Q, Z, w);
1884
- gsl_eigen_gen_QZ(A, B, alpha, beta, Q, Z, w);
1840
+ Z = gsl_matrix_alloc(A->size1, A->size2);
1841
+ // gsl_eigen_gen_QZ(Atmp, Btmp, alpha, beta, Q, Z, w);
1842
+ gsl_eigen_gen_QZ(A, B, alpha, beta, Q, Z, w);
1885
1843
  /* gsl_matrix_free(Atmp);
1886
1844
  gsl_matrix_free(Btmp); */
1887
-
1888
- switch (flag) {
1889
- case 0:
1890
- valpha = argv[2];
1891
- vbeta = argv[3];
1892
- break;
1893
- case 1:
1894
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1895
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1896
- break;
1897
- case 2:
1898
- valpha = argv[2];
1899
- vbeta = argv[3];
1900
- gsl_eigen_gen_free(w);
1901
- break;
1902
- case 3:
1903
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1904
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1905
- gsl_eigen_gen_free(w);
1906
- break;
1907
- }
1845
+
1846
+ switch (flag) {
1847
+ case 0:
1848
+ valpha = argv[2];
1849
+ vbeta = argv[3];
1850
+ break;
1851
+ case 1:
1852
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1853
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1854
+ break;
1855
+ case 2:
1856
+ valpha = argv[2];
1857
+ vbeta = argv[3];
1858
+ gsl_eigen_gen_free(w);
1859
+ break;
1860
+ case 3:
1861
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1862
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1863
+ gsl_eigen_gen_free(w);
1864
+ break;
1865
+ }
1908
1866
  vQ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Q);
1909
- vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
1910
- return rb_ary_new3(4, valpha, vbeta, vQ, vZ);
1867
+ vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
1868
+ return rb_ary_new3(4, valpha, vbeta, vQ, vZ);
1911
1869
  }
1912
1870
 
1913
1871
  static int check_argv_genv(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
1914
- gsl_vector_complex **alpha, gsl_vector **beta, gsl_matrix_complex **evec, gsl_eigen_genv_workspace **w)
1872
+ gsl_vector_complex **alpha, gsl_vector **beta, gsl_matrix_complex **evec, gsl_eigen_genv_workspace **w)
1915
1873
  {
1916
- int argc2 = argc;
1917
- int flag = 0;
1918
- if (CLASS_OF(obj) == cgenvw) {
1919
- Data_Get_Struct(obj, gsl_eigen_genv_workspace, *w);
1920
- } else {
1921
- if (rb_obj_is_kind_of(argv[argc-1], cgenvw)) {
1922
- Data_Get_Struct(argv[argc-1], gsl_eigen_genv_workspace, *w);
1923
- argc2 = argc-1;
1924
- } else {
1925
-
1926
- /* workspace is not given */
1927
- }
1928
- }
1929
-
1930
- switch (argc2) {
1931
- case 2:
1932
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1933
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1934
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1935
- break;
1936
- case 3:
1937
- if (rb_obj_is_kind_of(argv[2], cgenvw)) {
1938
- Data_Get_Struct(argv[2], gsl_eigen_genv_workspace, *w);
1939
- } else {
1874
+ int argc2 = argc;
1875
+ int flag = 0;
1876
+ if (CLASS_OF(obj) == cgenvw) {
1877
+ Data_Get_Struct(obj, gsl_eigen_genv_workspace, *w);
1878
+ } else {
1879
+ if (rb_obj_is_kind_of(argv[argc-1], cgenvw)) {
1880
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genv_workspace, *w);
1881
+ argc2 = argc-1;
1882
+ } else {
1883
+
1884
+ /* workspace is not given */
1885
+ }
1886
+ }
1887
+ switch (argc2) {
1888
+ case 2:
1889
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1890
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1891
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1892
+ break;
1893
+ case 3:
1894
+ if (rb_obj_is_kind_of(argv[2], cgenvw)) {
1895
+ Data_Get_Struct(argv[2], gsl_eigen_genv_workspace, *w);
1896
+ } else {
1940
1897
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigenv::Gen::Workspace expected)",
1941
- rb_class2name(CLASS_OF(argv[2])));
1942
- }
1943
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1944
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1945
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1946
- break;
1947
- case 6:
1948
- if (rb_obj_is_kind_of(argv[4], cgenvw)) {
1949
- Data_Get_Struct(argv[4], gsl_eigen_genv_workspace, *w);
1950
- } else {
1898
+ rb_class2name(CLASS_OF(argv[2])));
1899
+ }
1900
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1901
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1902
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1903
+ break;
1904
+ case 6:
1905
+ if (rb_obj_is_kind_of(argv[4], cgenvw)) {
1906
+ Data_Get_Struct(argv[4], gsl_eigen_genv_workspace, *w);
1907
+ } else {
1951
1908
  rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigenv::Gen::Workspace expected)",
1952
- rb_class2name(CLASS_OF(argv[4])));
1909
+ rb_class2name(CLASS_OF(argv[4])));
1953
1910
  }
1954
- CHECK_VECTOR_COMPLEX(argv[2]);
1955
- Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
1956
- CHECK_VECTOR(argv[3]);
1957
- Data_Get_Struct(argv[3], gsl_vector, *beta);
1958
- CHECK_MATRIX_COMPLEX(argv[3]);
1959
- Data_Get_Struct(argv[4], gsl_matrix_complex, *evec);
1960
-
1961
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1962
- Data_Get_Struct(argv[0], gsl_matrix, *A);
1963
- Data_Get_Struct(argv[1], gsl_matrix, *B);
1964
- break;
1965
- default:
1966
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 6)", argc);
1967
- }
1968
- if (*alpha == NULL && *beta == NULL) {
1969
- *alpha = gsl_vector_complex_alloc((*A)->size1);
1970
- *beta = gsl_vector_alloc((*A)->size1);
1971
- *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
1972
- flag += 1;
1973
- }
1974
- if (*w == NULL) {
1975
- *w = gsl_eigen_genv_alloc((*A)->size1);
1976
- flag += 2;
1977
- }
1978
- return flag;
1911
+ CHECK_VECTOR_COMPLEX(argv[2]);
1912
+ Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
1913
+ CHECK_VECTOR(argv[3]);
1914
+ Data_Get_Struct(argv[3], gsl_vector, *beta);
1915
+ CHECK_MATRIX_COMPLEX(argv[3]);
1916
+ Data_Get_Struct(argv[4], gsl_matrix_complex, *evec);
1917
+
1918
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
1919
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
1920
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
1921
+ break;
1922
+ default:
1923
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 6)", argc);
1924
+ }
1925
+ if (*alpha == NULL && *beta == NULL) {
1926
+ *alpha = gsl_vector_complex_alloc((*A)->size1);
1927
+ *beta = gsl_vector_alloc((*A)->size1);
1928
+ *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
1929
+ flag += 1;
1930
+ }
1931
+ if (*w == NULL) {
1932
+ *w = gsl_eigen_genv_alloc((*A)->size1);
1933
+ flag += 2;
1934
+ }
1935
+ return flag;
1979
1936
  }
1980
1937
 
1981
1938
  static VALUE rb_gsl_eigen_genv(int argc, VALUE *argv, VALUE obj)
1982
1939
  {
1983
- gsl_matrix *A = NULL, *B = NULL;
1984
- // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1985
- gsl_vector_complex *alpha = NULL;
1986
- gsl_vector *beta = NULL;
1987
- gsl_matrix_complex *evec = NULL;
1988
- gsl_eigen_genv_workspace *w = NULL;
1989
- int flag;
1990
- VALUE valpha, vbeta, vevec;
1991
- flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
1940
+ gsl_matrix *A = NULL, *B = NULL;
1941
+ // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1942
+ gsl_vector_complex *alpha = NULL;
1943
+ gsl_vector *beta = NULL;
1944
+ gsl_matrix_complex *evec = NULL;
1945
+ gsl_eigen_genv_workspace *w = NULL;
1946
+ int flag;
1947
+ VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil;
1948
+ flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
1992
1949
  // Atmp = make_matrix_clone(A);
1993
- // Btmp = make_matrix_clone(B);
1994
- // gsl_eigen_genv(Atmp, Btmp, alpha, beta, evec, w);
1995
- gsl_eigen_genv(A, B, alpha, beta, evec, w);
1950
+ // Btmp = make_matrix_clone(B);
1951
+ // gsl_eigen_genv(Atmp, Btmp, alpha, beta, evec, w);
1952
+ gsl_eigen_genv(A, B, alpha, beta, evec, w);
1996
1953
  // gsl_matrix_free(Atmp);
1997
- // gsl_matrix_free(Btmp);
1998
-
1999
- switch (flag) {
2000
- case 0:
2001
- valpha = argv[2];
2002
- vbeta = argv[3];
2003
- vevec = argv[4];
2004
- break;
2005
- case 1:
2006
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2007
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2008
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2009
- break;
2010
- case 2:
2011
- valpha = argv[2];
2012
- vbeta = argv[3];
2013
- vevec = argv[4];
2014
- gsl_eigen_genv_free(w);
2015
- break;
2016
- case 3:
2017
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2018
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2019
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2020
- gsl_eigen_genv_free(w);
2021
- break;
2022
- }
2023
-
2024
- return rb_ary_new3(3, valpha, vbeta, vevec);
1954
+ // gsl_matrix_free(Btmp);
1955
+
1956
+ switch (flag) {
1957
+ case 0:
1958
+ valpha = argv[2];
1959
+ vbeta = argv[3];
1960
+ vevec = argv[4];
1961
+ break;
1962
+ case 1:
1963
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1964
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1965
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1966
+ break;
1967
+ case 2:
1968
+ valpha = argv[2];
1969
+ vbeta = argv[3];
1970
+ vevec = argv[4];
1971
+ gsl_eigen_genv_free(w);
1972
+ break;
1973
+ case 3:
1974
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
1975
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
1976
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
1977
+ gsl_eigen_genv_free(w);
1978
+ break;
1979
+ }
1980
+
1981
+ return rb_ary_new3(3, valpha, vbeta, vevec);
2025
1982
  }
2026
1983
 
2027
1984
 
2028
1985
  static VALUE rb_gsl_eigen_genv_QZ(int argc, VALUE *argv, VALUE obj)
2029
1986
  {
2030
- gsl_matrix *A = NULL, *B = NULL;
2031
- // gsl_matrix *Atmp = NULL, *Btmp = NULL;
2032
- gsl_vector_complex *alpha = NULL;
2033
- gsl_vector *beta = NULL;
2034
- gsl_matrix_complex *evec = NULL;
2035
- gsl_matrix *Q, *Z;
2036
- gsl_eigen_genv_workspace *w = NULL;
2037
- int flag;
2038
- VALUE valpha, vbeta, vevec, vQ, vZ;
2039
- flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
1987
+ gsl_matrix *A = NULL, *B = NULL;
1988
+ // gsl_matrix *Atmp = NULL, *Btmp = NULL;
1989
+ gsl_vector_complex *alpha = NULL;
1990
+ gsl_vector *beta = NULL;
1991
+ gsl_matrix_complex *evec = NULL;
1992
+ gsl_matrix *Q, *Z;
1993
+ gsl_eigen_genv_workspace *w = NULL;
1994
+ int flag;
1995
+ VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil, vQ, vZ;
1996
+ flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
2040
1997
  /* Atmp = make_matrix_clone(A);
2041
- Btmp = make_matrix_clone(B); */
1998
+ Btmp = make_matrix_clone(B); */
2042
1999
  Q = gsl_matrix_alloc(A->size1, A->size2);
2043
- Z = gsl_matrix_alloc(A->size1, A->size2);
2044
- // gsl_eigen_genv_QZ(Atmp, Btmp, alpha, beta, evec, Q, Z, w);
2045
- gsl_eigen_genv_QZ(A, B, alpha, beta, evec, Q, Z, w);
2000
+ Z = gsl_matrix_alloc(A->size1, A->size2);
2001
+ // gsl_eigen_genv_QZ(Atmp, Btmp, alpha, beta, evec, Q, Z, w);
2002
+ gsl_eigen_genv_QZ(A, B, alpha, beta, evec, Q, Z, w);
2046
2003
  /* gsl_matrix_free(Atmp);
2047
2004
  gsl_matrix_free(Btmp); */
2048
-
2049
- switch (flag) {
2050
- case 0:
2051
- valpha = argv[2];
2052
- vbeta = argv[3];
2053
- vevec = argv[4];
2054
- break;
2055
- case 1:
2056
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2057
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2058
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2059
- break;
2060
- case 2:
2061
- valpha = argv[2];
2062
- vbeta = argv[3];
2063
- vevec = argv[4];
2064
- gsl_eigen_genv_free(w);
2065
- break;
2066
- case 3:
2067
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2068
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2069
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2070
- gsl_eigen_genv_free(w);
2071
- break;
2072
- }
2005
+
2006
+ switch (flag) {
2007
+ case 0:
2008
+ valpha = argv[2];
2009
+ vbeta = argv[3];
2010
+ vevec = argv[4];
2011
+ break;
2012
+ case 1:
2013
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2014
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2015
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2016
+ break;
2017
+ case 2:
2018
+ valpha = argv[2];
2019
+ vbeta = argv[3];
2020
+ vevec = argv[4];
2021
+ gsl_eigen_genv_free(w);
2022
+ break;
2023
+ case 3:
2024
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
2025
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
2026
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
2027
+ gsl_eigen_genv_free(w);
2028
+ break;
2029
+ }
2073
2030
  vQ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Q);
2074
- vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
2075
- return rb_ary_new3(5, valpha, vbeta, vevec, vQ, vZ);
2031
+ vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
2032
+ return rb_ary_new3(5, valpha, vbeta, vevec, vQ, vZ);
2076
2033
  }
2077
2034
 
2078
2035
  static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
@@ -2086,7 +2043,7 @@ static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
2086
2043
  case 4:
2087
2044
  CHECK_FIXNUM(argv[3]);
2088
2045
  type = FIX2INT(argv[3]);
2089
- /* no break, do next */
2046
+ /* no break, do next */
2090
2047
  case 3:
2091
2048
  if (argv[0] == Qnil) {
2092
2049
  alpha = NULL;
@@ -2098,21 +2055,20 @@ static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
2098
2055
  beta = NULL;
2099
2056
  } else {
2100
2057
  CHECK_VECTOR(argv[1]);
2101
- Data_Get_Struct(argv[1], gsl_vector, beta);
2058
+ Data_Get_Struct(argv[1], gsl_vector, beta);
2102
2059
  }
2103
- if (argv[2] == Qnil) {
2060
+ if (argv[2] == Qnil) {
2104
2061
  evec = NULL;
2105
2062
  } else {
2106
2063
  CHECK_MATRIX_COMPLEX(argv[2]);
2107
- Data_Get_Struct(argv[2], gsl_matrix_complex, evec);
2108
- }
2064
+ Data_Get_Struct(argv[2], gsl_matrix_complex, evec);
2065
+ }
2109
2066
  break;
2110
2067
  default:
2111
2068
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
2112
2069
  }
2113
2070
  return INT2FIX(gsl_eigen_genv_sort(alpha, beta, evec, type));
2114
2071
  }
2115
- #endif
2116
2072
 
2117
2073
  void Init_gsl_eigen(VALUE module)
2118
2074
  {
@@ -2121,13 +2077,11 @@ void Init_gsl_eigen(VALUE module)
2121
2077
  VALUE mgsl_eigen_symmv;
2122
2078
  VALUE mgsl_eigen_herm;
2123
2079
  VALUE mgsl_eigen_hermv;
2124
- #ifdef HAVE_EIGEN_FRANCIS
2080
+ #ifdef HAVE_GSL_EIGEN_FRANCIS
2125
2081
  VALUE mgsl_eigen_francis;
2126
2082
  #endif
2127
- #ifdef GSL_1_9_LATER
2128
2083
  VALUE mgsl_eigen_nonsymmv;
2129
2084
  VALUE mgsl_eigen_nonsymm;
2130
- #endif
2131
2085
 
2132
2086
  mgsl_eigen = rb_define_module_under(module, "Eigen");
2133
2087
  mgsl_eigen_symm = rb_define_module_under(mgsl_eigen, "Symm");
@@ -2137,60 +2091,60 @@ void Init_gsl_eigen(VALUE module)
2137
2091
  mgsl_eigen_hermv = rb_define_module_under(mgsl_eigen, "Hermv");
2138
2092
 
2139
2093
  cgsl_eigen_values = rb_define_class_under(mgsl_eigen, "EigenValues",
2140
- cgsl_vector);
2094
+ cgsl_vector);
2141
2095
  cgsl_eigen_vectors = rb_define_class_under(mgsl_eigen, "EigenVectors",
2142
- cgsl_matrix);
2096
+ cgsl_matrix);
2143
2097
  cgsl_eigen_vector = rb_define_class_under(mgsl_eigen, "EigenVector",
2144
- cgsl_vector);
2098
+ cgsl_vector);
2145
2099
  cgsl_eigen_herm_vectors = rb_define_class_under(mgsl_eigen, "ComplexEigenVectors",
2146
- cgsl_matrix_complex);
2100
+ cgsl_matrix_complex);
2147
2101
  cgsl_eigen_vector_complex = rb_define_class_under(mgsl_eigen, "ComplexEigenVector",
2148
- cgsl_vector_complex);
2149
- cgsl_eigen_symm_workspace = rb_define_class_under(mgsl_eigen_symm,
2150
- "Workspace", cGSL_Object);
2151
- cgsl_eigen_symmv_workspace = rb_define_class_under(mgsl_eigen_symmv,
2152
- "Workspace", cGSL_Object);
2153
- cgsl_eigen_herm_workspace = rb_define_class_under(mgsl_eigen_herm,
2154
- "Workspace", cGSL_Object);
2155
-
2156
- cgsl_eigen_hermv_workspace = rb_define_class_under(mgsl_eigen_hermv,
2157
- "Workspace", cGSL_Object);
2158
-
2159
- rb_define_singleton_method(cgsl_eigen_symm_workspace, "alloc",
2160
- rb_gsl_eigen_symm_alloc, 1);
2161
- rb_define_singleton_method(cgsl_eigen_symmv_workspace, "alloc",
2162
- rb_gsl_eigen_symmv_alloc, 1);
2163
- rb_define_singleton_method(cgsl_eigen_herm_workspace, "alloc",
2164
- rb_gsl_eigen_herm_alloc, 1);
2165
- rb_define_singleton_method(cgsl_eigen_hermv_workspace, "alloc",
2166
- rb_gsl_eigen_hermv_alloc, 1);
2167
-
2168
- rb_define_singleton_method(mgsl_eigen_symm, "alloc",
2169
- rb_gsl_eigen_symm_alloc, 1);
2170
- rb_define_singleton_method(mgsl_eigen_symmv, "alloc",
2171
- rb_gsl_eigen_symmv_alloc, 1);
2172
- rb_define_singleton_method(mgsl_eigen_herm, "alloc",
2173
- rb_gsl_eigen_herm_alloc, 1);
2174
- rb_define_singleton_method(mgsl_eigen_hermv, "alloc",
2175
- rb_gsl_eigen_hermv_alloc, 1);
2176
-
2102
+ cgsl_vector_complex);
2103
+ cgsl_eigen_symm_workspace = rb_define_class_under(mgsl_eigen_symm,
2104
+ "Workspace", cGSL_Object);
2105
+ cgsl_eigen_symmv_workspace = rb_define_class_under(mgsl_eigen_symmv,
2106
+ "Workspace", cGSL_Object);
2107
+ cgsl_eigen_herm_workspace = rb_define_class_under(mgsl_eigen_herm,
2108
+ "Workspace", cGSL_Object);
2109
+
2110
+ cgsl_eigen_hermv_workspace = rb_define_class_under(mgsl_eigen_hermv,
2111
+ "Workspace", cGSL_Object);
2112
+
2113
+ rb_define_singleton_method(cgsl_eigen_symm_workspace, "alloc",
2114
+ rb_gsl_eigen_symm_alloc, 1);
2115
+ rb_define_singleton_method(cgsl_eigen_symmv_workspace, "alloc",
2116
+ rb_gsl_eigen_symmv_alloc, 1);
2117
+ rb_define_singleton_method(cgsl_eigen_herm_workspace, "alloc",
2118
+ rb_gsl_eigen_herm_alloc, 1);
2119
+ rb_define_singleton_method(cgsl_eigen_hermv_workspace, "alloc",
2120
+ rb_gsl_eigen_hermv_alloc, 1);
2121
+
2122
+ rb_define_singleton_method(mgsl_eigen_symm, "alloc",
2123
+ rb_gsl_eigen_symm_alloc, 1);
2124
+ rb_define_singleton_method(mgsl_eigen_symmv, "alloc",
2125
+ rb_gsl_eigen_symmv_alloc, 1);
2126
+ rb_define_singleton_method(mgsl_eigen_herm, "alloc",
2127
+ rb_gsl_eigen_herm_alloc, 1);
2128
+ rb_define_singleton_method(mgsl_eigen_hermv, "alloc",
2129
+ rb_gsl_eigen_hermv_alloc, 1);
2130
+
2177
2131
  rb_define_module_function(mgsl_eigen, "symm",
2178
- rb_gsl_eigen_symm, -1);
2132
+ rb_gsl_eigen_symm, -1);
2179
2133
  rb_define_module_function(mgsl_eigen, "symmv",
2180
- rb_gsl_eigen_symmv, -1);
2134
+ rb_gsl_eigen_symmv, -1);
2181
2135
  rb_define_module_function(mgsl_eigen, "herm",
2182
- rb_gsl_eigen_herm, -1);
2136
+ rb_gsl_eigen_herm, -1);
2183
2137
  rb_define_module_function(mgsl_eigen, "hermv",
2184
- rb_gsl_eigen_hermv, -1);
2138
+ rb_gsl_eigen_hermv, -1);
2185
2139
 
2186
2140
  rb_define_module_function(module, "eigen_symm",
2187
- rb_gsl_eigen_symm, -1);
2141
+ rb_gsl_eigen_symm, -1);
2188
2142
  rb_define_module_function(module, "eigen_symmv",
2189
- rb_gsl_eigen_symmv, -1);
2143
+ rb_gsl_eigen_symmv, -1);
2190
2144
  rb_define_module_function(module, "eigen_herm",
2191
- rb_gsl_eigen_herm, -1);
2145
+ rb_gsl_eigen_herm, -1);
2192
2146
  rb_define_module_function(module, "eigen_hermv",
2193
- rb_gsl_eigen_hermv, -1);
2147
+ rb_gsl_eigen_hermv, -1);
2194
2148
 
2195
2149
  rb_define_method(cgsl_matrix, "eigen_symm", rb_gsl_eigen_symm, -1);
2196
2150
  rb_define_method(cgsl_matrix, "eigen_symmv", rb_gsl_eigen_symmv, -1);
@@ -2202,21 +2156,21 @@ void Init_gsl_eigen(VALUE module)
2202
2156
 
2203
2157
  rb_gsl_eigen_define_const(module, mgsl_eigen);
2204
2158
 
2205
- rb_define_module_function(mgsl_eigen, "symmv_sort",
2206
- rb_gsl_eigen_symmv_sort, -1);
2207
- rb_define_module_function(mgsl_eigen, "hermv_sort",
2208
- rb_gsl_eigen_hermv_sort, -1);
2209
- rb_define_module_function(mgsl_eigen_symmv, "sort",
2210
- rb_gsl_eigen_symmv_sort, -1);
2211
- rb_define_module_function(mgsl_eigen_hermv, "sort",
2212
- rb_gsl_eigen_hermv_sort, -1);
2159
+ rb_define_module_function(mgsl_eigen, "symmv_sort",
2160
+ rb_gsl_eigen_symmv_sort, -1);
2161
+ rb_define_module_function(mgsl_eigen, "hermv_sort",
2162
+ rb_gsl_eigen_hermv_sort, -1);
2163
+ rb_define_module_function(mgsl_eigen_symmv, "sort",
2164
+ rb_gsl_eigen_symmv_sort, -1);
2165
+ rb_define_module_function(mgsl_eigen_hermv, "sort",
2166
+ rb_gsl_eigen_hermv_sort, -1);
2213
2167
 
2214
- #ifdef HAVE_EIGEN_FRANCIS
2168
+ #ifdef HAVE_GSL_EIGEN_FRANCIS
2215
2169
  mgsl_eigen_francis = rb_define_module_under(mgsl_eigen, "francis");
2216
- cgsl_eigen_francis_workspace = rb_define_class_under(mgsl_eigen_francis,
2217
- "Workspace", cGSL_Object);
2170
+ cgsl_eigen_francis_workspace = rb_define_class_under(mgsl_eigen_francis,
2171
+ "Workspace", cGSL_Object);
2218
2172
  rb_define_singleton_method(cgsl_eigen_francis_workspace, "alloc",
2219
- rb_gsl_eigen_francis_alloc, 0);
2173
+ rb_gsl_eigen_francis_alloc, 0);
2220
2174
 
2221
2175
  rb_define_method(cgsl_matrix, "eigen_francis", rb_gsl_eigen_francis, -1);
2222
2176
  rb_define_module_function(mgsl_eigen, "francis", rb_gsl_eigen_francis, -1);
@@ -2230,16 +2184,15 @@ void Init_gsl_eigen(VALUE module)
2230
2184
 
2231
2185
  #endif
2232
2186
 
2233
- #ifdef GSL_1_9_LATER
2234
2187
  mgsl_eigen_nonsymm = rb_define_module_under(mgsl_eigen, "Nonsymm");
2235
2188
  mgsl_eigen_nonsymmv = rb_define_module_under(mgsl_eigen, "Nonsymmv");
2236
- cgsl_eigen_nonsymm_workspace = rb_define_class_under(mgsl_eigen_nonsymm,
2237
- "Workspace", cGSL_Object);
2189
+ cgsl_eigen_nonsymm_workspace = rb_define_class_under(mgsl_eigen_nonsymm,
2190
+ "Workspace", cGSL_Object);
2238
2191
  rb_define_singleton_method(cgsl_eigen_nonsymm_workspace, "alloc",
2239
- rb_gsl_eigen_nonsymm_alloc, 1);
2192
+ rb_gsl_eigen_nonsymm_alloc, 1);
2240
2193
  rb_define_singleton_method(mgsl_eigen_nonsymm, "alloc",
2241
- rb_gsl_eigen_nonsymm_alloc, 1);
2242
-
2194
+ rb_gsl_eigen_nonsymm_alloc, 1);
2195
+
2243
2196
  rb_define_method(cgsl_matrix, "eigen_nonsymm", rb_gsl_eigen_nonsymm, -1);
2244
2197
  rb_define_module_function(mgsl_eigen, "nonsymm", rb_gsl_eigen_nonsymm, -1);
2245
2198
  rb_define_module_function(module, "eigen_nonsymm", rb_gsl_eigen_nonsymm, -1);
@@ -2250,12 +2203,12 @@ void Init_gsl_eigen(VALUE module)
2250
2203
  rb_define_method(cgsl_eigen_nonsymm_workspace, "params", rb_gsl_eigen_nonsymm_params, -1);
2251
2204
  rb_define_module_function(mgsl_eigen_nonsymm, "params", rb_gsl_eigen_nonsymm_params, -1);
2252
2205
 
2253
- cgsl_eigen_nonsymmv_workspace = rb_define_class_under(mgsl_eigen_nonsymmv,
2254
- "Workspace", cGSL_Object);
2206
+ cgsl_eigen_nonsymmv_workspace = rb_define_class_under(mgsl_eigen_nonsymmv,
2207
+ "Workspace", cGSL_Object);
2255
2208
  rb_define_singleton_method(cgsl_eigen_nonsymmv_workspace, "alloc",
2256
- rb_gsl_eigen_nonsymmv_alloc, 1);
2209
+ rb_gsl_eigen_nonsymmv_alloc, 1);
2257
2210
  rb_define_singleton_method(mgsl_eigen_nonsymmv, "alloc",
2258
- rb_gsl_eigen_nonsymmv_alloc, 1);
2211
+ rb_gsl_eigen_nonsymmv_alloc, 1);
2259
2212
  rb_define_method(cgsl_matrix, "eigen_nonsymmv", rb_gsl_eigen_nonsymmv, -1);
2260
2213
  rb_define_module_function(mgsl_eigen, "nonsymmv", rb_gsl_eigen_nonsymmv, -1);
2261
2214
  rb_define_module_function(module, "eigen_nonsymmv", rb_gsl_eigen_nonsymmv, -1);
@@ -2265,15 +2218,13 @@ void Init_gsl_eigen(VALUE module)
2265
2218
  rb_define_module_function(mgsl_eigen, "nonsymmv_Z", rb_gsl_eigen_nonsymmv_Z, -1);
2266
2219
  rb_define_module_function(module, "eigen_nonsymmv_Z", rb_gsl_eigen_nonsymmv_Z, -1);
2267
2220
 
2268
- rb_define_module_function(mgsl_eigen, "nonsymmv_sort",
2269
- rb_gsl_eigen_nonsymmv_sort, -1);
2270
- rb_define_module_function(mgsl_eigen_nonsymmv, "sort",
2271
- rb_gsl_eigen_nonsymmv_sort, -1);
2272
- rb_define_module_function(module, "eigen_nonsymmv_sort",
2273
- rb_gsl_eigen_nonsymmv_sort, -1);
2274
- #endif
2221
+ rb_define_module_function(mgsl_eigen, "nonsymmv_sort",
2222
+ rb_gsl_eigen_nonsymmv_sort, -1);
2223
+ rb_define_module_function(mgsl_eigen_nonsymmv, "sort",
2224
+ rb_gsl_eigen_nonsymmv_sort, -1);
2225
+ rb_define_module_function(module, "eigen_nonsymmv_sort",
2226
+ rb_gsl_eigen_nonsymmv_sort, -1);
2275
2227
 
2276
- #ifdef GSL_1_10_LATER
2277
2228
  /** gensymm, gensymmv **/
2278
2229
  mgensymm = rb_define_module_under(mgsl_eigen, "Gensymm");
2279
2230
  cgensymm = rb_define_class_under(mgensymm, "Workspace", cGSL_Object);
@@ -2287,27 +2238,27 @@ void Init_gsl_eigen(VALUE module)
2287
2238
 
2288
2239
  rb_define_method(cgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
2289
2240
  rb_define_module_function(module, "eigen_gensymm", rb_gsl_eigen_gensymm, -1);
2290
- rb_define_module_function(mgsl_eigen, "gensymm", rb_gsl_eigen_gensymm, -1);
2291
- rb_define_module_function(mgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
2241
+ rb_define_module_function(mgsl_eigen, "gensymm", rb_gsl_eigen_gensymm, -1);
2242
+ rb_define_module_function(mgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
2292
2243
 
2293
2244
  rb_define_method(cgensymmv, "gensymmv", rb_gsl_eigen_gensymmv, -1);
2294
2245
  rb_define_module_function(module, "eigen_gensymmv", rb_gsl_eigen_gensymmv, -1);
2295
- rb_define_module_function(mgsl_eigen, "gensymmv", rb_gsl_eigen_gensymmv, -1);
2246
+ rb_define_module_function(mgsl_eigen, "gensymmv", rb_gsl_eigen_gensymmv, -1);
2296
2247
  rb_define_module_function(mgensymmv, "gensymmv", rb_gsl_eigen_gensymmv, -1);
2297
2248
 
2298
- rb_define_module_function(mgsl_eigen, "gensymmv_sort",
2299
- rb_gsl_eigen_gensymmv_sort, -1);
2300
- rb_define_module_function(mgensymmv, "sort",
2301
- rb_gsl_eigen_gensymmv_sort, -1);
2302
- rb_define_module_function(module, "eigen_gensymmv_sort",
2303
- rb_gsl_eigen_gensymmv_sort, -1);
2249
+ rb_define_module_function(mgsl_eigen, "gensymmv_sort",
2250
+ rb_gsl_eigen_gensymmv_sort, -1);
2251
+ rb_define_module_function(mgensymmv, "sort",
2252
+ rb_gsl_eigen_gensymmv_sort, -1);
2253
+ rb_define_module_function(module, "eigen_gensymmv_sort",
2254
+ rb_gsl_eigen_gensymmv_sort, -1);
2304
2255
 
2305
2256
  /** genherm, genhermv **/
2306
2257
  mgenherm = rb_define_module_under(mgsl_eigen, "Genherm");
2307
2258
  cgenherm = rb_define_class_under(mgenherm, "Workspace", cGSL_Object);
2308
2259
  mgenhermv = rb_define_module_under(mgsl_eigen, "Genhermv");
2309
2260
  cgenhermv = rb_define_class_under(mgenhermv, "Workspace", cGSL_Object);
2310
-
2261
+
2311
2262
  rb_define_singleton_method(cgenherm, "alloc", rb_gsl_eigen_genherm_alloc, 1);
2312
2263
  rb_define_singleton_method(cgenhermv, "alloc", rb_gsl_eigen_genhermv_alloc, 1);
2313
2264
  rb_define_singleton_method(mgenherm, "alloc", rb_gsl_eigen_genherm_alloc, 1);
@@ -2315,59 +2266,57 @@ void Init_gsl_eigen(VALUE module)
2315
2266
 
2316
2267
  rb_define_method(cgenherm, "genherm", rb_gsl_eigen_genherm, -1);
2317
2268
  rb_define_module_function(module, "eigen_genherm", rb_gsl_eigen_genherm, -1);
2318
- rb_define_module_function(mgsl_eigen, "genherm", rb_gsl_eigen_genherm, -1);
2319
- rb_define_module_function(mgenherm, "genherm", rb_gsl_eigen_genherm, -1);
2269
+ rb_define_module_function(mgsl_eigen, "genherm", rb_gsl_eigen_genherm, -1);
2270
+ rb_define_module_function(mgenherm, "genherm", rb_gsl_eigen_genherm, -1);
2320
2271
 
2321
2272
  rb_define_method(cgenhermv, "genhermv", rb_gsl_eigen_genhermv, -1);
2322
2273
  rb_define_module_function(module, "eigen_genhermv", rb_gsl_eigen_genhermv, -1);
2323
- rb_define_module_function(mgsl_eigen, "genhermv", rb_gsl_eigen_genhermv, -1);
2274
+ rb_define_module_function(mgsl_eigen, "genhermv", rb_gsl_eigen_genhermv, -1);
2324
2275
  rb_define_module_function(mgenhermv, "genhermv", rb_gsl_eigen_genhermv, -1);
2325
-
2326
- rb_define_module_function(mgsl_eigen, "genhermv_sort",
2327
- rb_gsl_eigen_genhermv_sort, -1);
2328
- rb_define_module_function(mgenhermv, "sort",
2329
- rb_gsl_eigen_genhermv_sort, -1);
2330
- rb_define_module_function(module, "eigen_genhermv_sort",
2331
- rb_gsl_eigen_genhermv_sort, -1);
2332
-
2276
+
2277
+ rb_define_module_function(mgsl_eigen, "genhermv_sort",
2278
+ rb_gsl_eigen_genhermv_sort, -1);
2279
+ rb_define_module_function(mgenhermv, "sort",
2280
+ rb_gsl_eigen_genhermv_sort, -1);
2281
+ rb_define_module_function(module, "eigen_genhermv_sort",
2282
+ rb_gsl_eigen_genhermv_sort, -1);
2283
+
2333
2284
  /* gen */
2334
2285
  mgen = rb_define_module_under(mgsl_eigen, "Gen");
2335
- mgenv = rb_define_module_under(mgsl_eigen, "Genv");
2286
+ mgenv = rb_define_module_under(mgsl_eigen, "Genv");
2336
2287
  cgenw = rb_define_class_under(mgen, "Workspace", cGSL_Object);
2337
2288
  cgenvw = rb_define_class_under(mgenv, "Workspace", cGSL_Object);
2338
2289
  rb_define_singleton_method(mgen, "alloc", rb_gsl_eigen_gen_alloc, 1);
2339
- rb_define_singleton_method(cgenw, "alloc", rb_gsl_eigen_gen_alloc, 1);
2290
+ rb_define_singleton_method(cgenw, "alloc", rb_gsl_eigen_gen_alloc, 1);
2340
2291
  rb_define_singleton_method(mgenv, "alloc", rb_gsl_eigen_genv_alloc, 1);
2341
2292
  rb_define_singleton_method(cgenvw, "alloc", rb_gsl_eigen_genv_alloc, 1);
2342
-
2293
+
2343
2294
  rb_define_module_function(mgen, "params", rb_gsl_eigen_gen_params, -1);
2344
2295
  rb_define_method(cgenw, "params", rb_gsl_eigen_gen_params, -1);
2345
2296
  rb_define_module_function(mgsl_eigen, "gen_params", rb_gsl_eigen_gen_params, -1);
2346
-
2347
-
2297
+
2298
+
2348
2299
  rb_define_module_function(mgen, "gen", rb_gsl_eigen_gen, -1);
2349
- rb_define_module_function(mgsl_eigen, "gen", rb_gsl_eigen_gen, -1);
2300
+ rb_define_module_function(mgsl_eigen, "gen", rb_gsl_eigen_gen, -1);
2350
2301
  rb_define_method(cgenw, "gen", rb_gsl_eigen_gen, -1);
2351
-
2302
+
2352
2303
  rb_define_module_function(mgenv, "genv", rb_gsl_eigen_genv, -1);
2353
- rb_define_module_function(mgsl_eigen, "genv", rb_gsl_eigen_genv, -1);
2304
+ rb_define_module_function(mgsl_eigen, "genv", rb_gsl_eigen_genv, -1);
2354
2305
  rb_define_method(cgenvw, "genv", rb_gsl_eigen_genv, -1);
2355
-
2306
+
2356
2307
  rb_define_module_function(mgen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
2357
- rb_define_module_function(mgsl_eigen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
2308
+ rb_define_module_function(mgsl_eigen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
2358
2309
  rb_define_method(cgenw, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
2359
-
2360
- rb_define_module_function(mgenv, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2361
- rb_define_module_function(mgsl_eigen, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2362
- rb_define_method(cgenvw, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2363
-
2364
- rb_define_module_function(mgsl_eigen, "genv_sort",
2365
- rb_gsl_eigen_genv_sort, -1);
2366
- rb_define_module_function(mgenv, "sort",
2367
- rb_gsl_eigen_genv_sort, -1);
2368
- rb_define_module_function(module, "eigen_genv_sort",
2369
- rb_gsl_eigen_genv_sort, -1);
2370
- #endif
2371
2310
 
2311
+ rb_define_module_function(mgenv, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2312
+ rb_define_module_function(mgsl_eigen, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2313
+ rb_define_method(cgenvw, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
2314
+
2315
+ rb_define_module_function(mgsl_eigen, "genv_sort",
2316
+ rb_gsl_eigen_genv_sort, -1);
2317
+ rb_define_module_function(mgenv, "sort",
2318
+ rb_gsl_eigen_genv_sort, -1);
2319
+ rb_define_module_function(module, "eigen_genv_sort",
2320
+ rb_gsl_eigen_genv_sort, -1);
2372
2321
  }
2373
2322