gsl 1.15.3 → 1.16.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +24 -0
  4. data/AUTHORS +10 -2
  5. data/COPYING +341 -339
  6. data/ChangeLog +612 -554
  7. data/Gemfile +4 -0
  8. data/README.md +77 -0
  9. data/Rakefile +14 -93
  10. data/THANKS +1 -1
  11. data/examples/blas/blas.rb +1 -1
  12. data/examples/bspline.rb +3 -3
  13. data/examples/complex/functions.rb +4 -4
  14. data/examples/complex/mul.rb +1 -1
  15. data/examples/const/physconst.rb +4 -4
  16. data/examples/const/travel.rb +4 -4
  17. data/examples/eigen/nonsymmv.rb +1 -1
  18. data/examples/eigen/qhoscillator.rb +3 -3
  19. data/examples/fft/radix2.rb +1 -1
  20. data/examples/fft/real-halfcomplex.rb +3 -3
  21. data/examples/fft/real-halfcomplex2.rb +3 -3
  22. data/examples/fit/expfit.rb +1 -1
  23. data/examples/fit/multifit.rb +1 -1
  24. data/examples/fit/ndlinear.rb +44 -44
  25. data/examples/fit/nonlinearfit.rb +1 -1
  26. data/examples/fit/wlinear.rb +3 -3
  27. data/examples/function/function.rb +1 -1
  28. data/examples/function/min.rb +1 -1
  29. data/examples/function/synchrotron.rb +2 -2
  30. data/examples/gallery/koch.rb +1 -1
  31. data/examples/histogram/cauchy.rb +2 -2
  32. data/examples/histogram/exponential.rb +1 -1
  33. data/examples/histogram/histo3d.rb +1 -1
  34. data/examples/histogram/histogram-pdf.rb +2 -2
  35. data/examples/histogram/xexp.rb +1 -1
  36. data/examples/integration/ahmed.rb +2 -2
  37. data/examples/integration/cosmology.rb +7 -7
  38. data/examples/integration/friedmann.rb +4 -4
  39. data/examples/integration/qng.rb +1 -1
  40. data/examples/interp/demo.rb +2 -2
  41. data/examples/linalg/LQ_solve.rb +1 -1
  42. data/examples/linalg/LU.rb +1 -1
  43. data/examples/linalg/LU2.rb +1 -1
  44. data/examples/linalg/LU_narray.rb +1 -1
  45. data/examples/linalg/PTLQ.rb +1 -1
  46. data/examples/linalg/QRPT.rb +1 -1
  47. data/examples/linalg/chol.rb +1 -1
  48. data/examples/linalg/chol_narray.rb +1 -1
  49. data/examples/linalg/complex.rb +1 -1
  50. data/examples/math/elementary.rb +1 -1
  51. data/examples/math/functions.rb +1 -1
  52. data/examples/math/inf_nan.rb +1 -1
  53. data/examples/math/minmax.rb +1 -1
  54. data/examples/math/power.rb +1 -1
  55. data/examples/math/test.rb +1 -1
  56. data/examples/min.rb +1 -1
  57. data/examples/multimin/bundle.rb +1 -1
  58. data/examples/multimin/cqp.rb +17 -17
  59. data/examples/multiroot/fsolver3.rb +1 -1
  60. data/examples/odeiv/binarysystem.rb +12 -12
  61. data/examples/odeiv/demo.rb +3 -3
  62. data/examples/odeiv/frei1.rb +7 -7
  63. data/examples/odeiv/frei2.rb +4 -4
  64. data/examples/odeiv/oscillator.rb +1 -1
  65. data/examples/odeiv/sedov.rb +3 -3
  66. data/examples/odeiv/whitedwarf.rb +11 -11
  67. data/examples/permutation/ex1.rb +2 -2
  68. data/examples/permutation/permutation.rb +1 -1
  69. data/examples/poly/demo.rb +1 -1
  70. data/examples/random/diffusion.rb +1 -1
  71. data/examples/random/generator.rb +2 -2
  72. data/examples/random/randomwalk.rb +3 -3
  73. data/examples/random/rng.rb +1 -1
  74. data/examples/roots/bisection.rb +1 -1
  75. data/examples/roots/brent.rb +1 -1
  76. data/examples/roots/demo.rb +1 -1
  77. data/examples/roots/newton.rb +2 -2
  78. data/examples/roots/recombination.gp +0 -1
  79. data/examples/sf/hyperg.rb +1 -1
  80. data/examples/sf/sphbessel.rb +1 -1
  81. data/examples/sort/sort.rb +1 -1
  82. data/examples/tamu_anova.rb +4 -4
  83. data/examples/vector/add.rb +1 -1
  84. data/examples/vector/decimate.rb +1 -1
  85. data/examples/vector/gnuplot.rb +8 -8
  86. data/examples/vector/vector.rb +2 -2
  87. data/examples/wavelet/wavelet1.rb +1 -1
  88. data/ext/{alf.c → gsl_native/alf.c} +10 -10
  89. data/ext/{array.c → gsl_native/array.c} +70 -159
  90. data/ext/{array_complex.c → gsl_native/array_complex.c} +63 -66
  91. data/ext/{blas.c → gsl_native/blas.c} +2 -3
  92. data/ext/{blas1.c → gsl_native/blas1.c} +35 -36
  93. data/ext/{blas2.c → gsl_native/blas2.c} +57 -62
  94. data/ext/{blas3.c → gsl_native/blas3.c} +57 -58
  95. data/ext/{block.c → gsl_native/block.c} +14 -18
  96. data/ext/{block_source.c → gsl_native/block_source.h} +110 -112
  97. data/ext/gsl_native/bspline.c +122 -0
  98. data/ext/{bundle.c → gsl_native/bundle.c} +0 -0
  99. data/ext/{cdf.c → gsl_native/cdf.c} +79 -93
  100. data/ext/{cheb.c → gsl_native/cheb.c} +78 -89
  101. data/ext/{combination.c → gsl_native/combination.c} +11 -19
  102. data/ext/{common.c → gsl_native/common.c} +9 -41
  103. data/ext/{complex.c → gsl_native/complex.c} +116 -118
  104. data/ext/gsl_native/const.c +331 -0
  105. data/ext/{const_additional.c → gsl_native/const_additional.c} +13 -34
  106. data/ext/gsl_native/cqp.c +283 -0
  107. data/ext/{deriv.c → gsl_native/deriv.c} +25 -33
  108. data/ext/{dht.c → gsl_native/dht.c} +23 -31
  109. data/ext/{diff.c → gsl_native/diff.c} +26 -28
  110. data/ext/{dirac.c → gsl_native/dirac.c} +45 -46
  111. data/ext/{eigen.c → gsl_native/eigen.c} +1044 -1095
  112. data/ext/{error.c → gsl_native/error.c} +18 -18
  113. data/ext/gsl_native/extconf.rb +118 -0
  114. data/ext/{fft.c → gsl_native/fft.c} +197 -204
  115. data/ext/{fit.c → gsl_native/fit.c} +17 -18
  116. data/ext/gsl_native/fresnel.c +312 -0
  117. data/ext/{function.c → gsl_native/function.c} +37 -43
  118. data/ext/{geometry.c → gsl_native/geometry.c} +16 -16
  119. data/ext/{graph.c → gsl_native/graph.c} +39 -89
  120. data/ext/{gsl.c → gsl_native/gsl.c} +12 -33
  121. data/ext/{gsl_narray.c → gsl_native/gsl_narray.c} +20 -30
  122. data/ext/{histogram.c → gsl_native/histogram.c} +133 -160
  123. data/ext/{histogram2d.c → gsl_native/histogram2d.c} +78 -104
  124. data/ext/{histogram3d.c → gsl_native/histogram3d.c} +76 -76
  125. data/ext/{histogram3d_source.c → gsl_native/histogram3d_source.c} +196 -197
  126. data/ext/{histogram_find.c → gsl_native/histogram_find.c} +32 -34
  127. data/ext/{histogram_oper.c → gsl_native/histogram_oper.c} +43 -52
  128. data/ext/{ieee.c → gsl_native/ieee.c} +9 -21
  129. data/{include → ext/gsl_native/include}/rb_gsl.h +4 -26
  130. data/{include → ext/gsl_native/include}/rb_gsl_array.h +15 -39
  131. data/{include → ext/gsl_native/include}/rb_gsl_cheb.h +0 -2
  132. data/{include → ext/gsl_native/include}/rb_gsl_common.h +61 -61
  133. data/{include → ext/gsl_native/include}/rb_gsl_complex.h +1 -1
  134. data/{include → ext/gsl_native/include}/rb_gsl_const.h +0 -6
  135. data/ext/gsl_native/include/rb_gsl_dirac.h +6 -0
  136. data/{include → ext/gsl_native/include}/rb_gsl_eigen.h +1 -1
  137. data/{include → ext/gsl_native/include}/rb_gsl_fft.h +0 -13
  138. data/{include → ext/gsl_native/include}/rb_gsl_fit.h +0 -2
  139. data/{include → ext/gsl_native/include}/rb_gsl_function.h +0 -4
  140. data/{include → ext/gsl_native/include}/rb_gsl_graph.h +2 -4
  141. data/{include → ext/gsl_native/include}/rb_gsl_histogram.h +8 -8
  142. data/{include → ext/gsl_native/include}/rb_gsl_histogram3d.h +50 -50
  143. data/{include → ext/gsl_native/include}/rb_gsl_integration.h +1 -1
  144. data/{include → ext/gsl_native/include}/rb_gsl_interp.h +0 -5
  145. data/{include → ext/gsl_native/include}/rb_gsl_linalg.h +2 -6
  146. data/{include → ext/gsl_native/include}/rb_gsl_math.h +0 -6
  147. data/{include → ext/gsl_native/include}/rb_gsl_odeiv.h +0 -3
  148. data/{include → ext/gsl_native/include}/rb_gsl_poly.h +3 -7
  149. data/{include → ext/gsl_native/include}/rb_gsl_rational.h +1 -8
  150. data/{include → ext/gsl_native/include}/rb_gsl_rng.h +0 -1
  151. data/{include → ext/gsl_native/include}/rb_gsl_root.h +1 -1
  152. data/{include → ext/gsl_native/include}/rb_gsl_sf.h +39 -48
  153. data/{include → ext/gsl_native/include}/rb_gsl_statistics.h +1 -1
  154. data/{include → ext/gsl_native/include}/rb_gsl_tensor.h +0 -2
  155. data/{include → ext/gsl_native/include}/rb_gsl_with_narray.h +3 -1
  156. data/{include → ext/gsl_native/include}/templates_off.h +0 -0
  157. data/{include → ext/gsl_native/include}/templates_on.h +1 -1
  158. data/ext/{integration.c → gsl_native/integration.c} +164 -189
  159. data/ext/{interp.c → gsl_native/interp.c} +25 -38
  160. data/ext/gsl_native/jacobi.c +733 -0
  161. data/ext/{linalg.c → gsl_native/linalg.c} +462 -589
  162. data/ext/{linalg_complex.c → gsl_native/linalg_complex.c} +93 -106
  163. data/ext/{math.c → gsl_native/math.c} +48 -67
  164. data/ext/{matrix.c → gsl_native/matrix.c} +13 -16
  165. data/ext/{matrix_complex.c → gsl_native/matrix_complex.c} +119 -123
  166. data/ext/{matrix_double.c → gsl_native/matrix_double.c} +79 -82
  167. data/ext/{matrix_int.c → gsl_native/matrix_int.c} +53 -54
  168. data/ext/{matrix_source.c → gsl_native/matrix_source.h} +292 -318
  169. data/ext/{min.c → gsl_native/min.c} +45 -76
  170. data/ext/{monte.c → gsl_native/monte.c} +50 -64
  171. data/ext/{multifit.c → gsl_native/multifit.c} +142 -151
  172. data/ext/{multimin.c → gsl_native/multimin.c} +64 -92
  173. data/ext/{multimin_fsdf.c → gsl_native/multimin_fsdf.c} +16 -16
  174. data/ext/{multiroots.c → gsl_native/multiroots.c} +73 -76
  175. data/ext/{multiset.c → gsl_native/multiset.c} +4 -8
  176. data/ext/{ndlinear.c → gsl_native/ndlinear.c} +320 -321
  177. data/ext/{nmf.c → gsl_native/nmf.c} +11 -11
  178. data/ext/{nmf_wrap.c → gsl_native/nmf_wrap.c} +1 -1
  179. data/ext/{ntuple.c → gsl_native/ntuple.c} +23 -23
  180. data/ext/{odeiv.c → gsl_native/odeiv.c} +101 -116
  181. data/ext/gsl_native/ool.c +879 -0
  182. data/ext/{permutation.c → gsl_native/permutation.c} +39 -37
  183. data/ext/{poly.c → gsl_native/poly.c} +10 -13
  184. data/ext/{poly2.c → gsl_native/poly2.c} +16 -16
  185. data/ext/{poly_source.c → gsl_native/poly_source.h} +249 -293
  186. data/ext/{qrng.c → gsl_native/qrng.c} +9 -20
  187. data/ext/{randist.c → gsl_native/randist.c} +222 -247
  188. data/ext/{rational.c → gsl_native/rational.c} +12 -12
  189. data/ext/{rng.c → gsl_native/rng.c} +30 -47
  190. data/ext/{root.c → gsl_native/root.c} +47 -48
  191. data/ext/{sf.c → gsl_native/sf.c} +196 -244
  192. data/ext/{sf_airy.c → gsl_native/sf_airy.c} +2 -2
  193. data/ext/{sf_bessel.c → gsl_native/sf_bessel.c} +7 -7
  194. data/ext/{sf_clausen.c → gsl_native/sf_clausen.c} +1 -1
  195. data/ext/{sf_coulomb.c → gsl_native/sf_coulomb.c} +40 -40
  196. data/ext/{sf_coupling.c → gsl_native/sf_coupling.c} +30 -30
  197. data/ext/{sf_dawson.c → gsl_native/sf_dawson.c} +1 -1
  198. data/ext/{sf_debye.c → gsl_native/sf_debye.c} +1 -10
  199. data/ext/{sf_dilog.c → gsl_native/sf_dilog.c} +1 -1
  200. data/ext/{sf_elementary.c → gsl_native/sf_elementary.c} +3 -3
  201. data/ext/{sf_ellint.c → gsl_native/sf_ellint.c} +43 -43
  202. data/ext/{sf_elljac.c → gsl_native/sf_elljac.c} +3 -3
  203. data/ext/{sf_erfc.c → gsl_native/sf_erfc.c} +1 -5
  204. data/ext/{sf_exp.c → gsl_native/sf_exp.c} +3 -3
  205. data/ext/{sf_expint.c → gsl_native/sf_expint.c} +2 -12
  206. data/ext/{sf_fermi_dirac.c → gsl_native/sf_fermi_dirac.c} +1 -1
  207. data/ext/{sf_gamma.c → gsl_native/sf_gamma.c} +2 -6
  208. data/ext/{sf_gegenbauer.c → gsl_native/sf_gegenbauer.c} +1 -1
  209. data/ext/{sf_hyperg.c → gsl_native/sf_hyperg.c} +1 -1
  210. data/ext/{sf_laguerre.c → gsl_native/sf_laguerre.c} +4 -4
  211. data/ext/{sf_lambert.c → gsl_native/sf_lambert.c} +1 -1
  212. data/ext/{sf_legendre.c → gsl_native/sf_legendre.c} +1 -1
  213. data/ext/{sf_log.c → gsl_native/sf_log.c} +4 -4
  214. data/ext/gsl_native/sf_mathieu.c +235 -0
  215. data/ext/{sf_power.c → gsl_native/sf_power.c} +1 -1
  216. data/ext/{sf_psi.c → gsl_native/sf_psi.c} +3 -12
  217. data/ext/{sf_synchrotron.c → gsl_native/sf_synchrotron.c} +1 -1
  218. data/ext/{sf_transport.c → gsl_native/sf_transport.c} +1 -1
  219. data/ext/{sf_trigonometric.c → gsl_native/sf_trigonometric.c} +4 -4
  220. data/ext/{sf_zeta.c → gsl_native/sf_zeta.c} +1 -5
  221. data/ext/{signal.c → gsl_native/signal.c} +63 -68
  222. data/ext/{siman.c → gsl_native/siman.c} +45 -49
  223. data/ext/{sort.c → gsl_native/sort.c} +6 -7
  224. data/ext/{spline.c → gsl_native/spline.c} +28 -46
  225. data/ext/{stats.c → gsl_native/stats.c} +105 -118
  226. data/ext/{sum.c → gsl_native/sum.c} +34 -34
  227. data/ext/{tamu_anova.c → gsl_native/tamu_anova.c} +1 -1
  228. data/ext/{tensor.c → gsl_native/tensor.c} +8 -11
  229. data/ext/{tensor_source.c → gsl_native/tensor_source.h} +147 -148
  230. data/ext/{vector.c → gsl_native/vector.c} +11 -14
  231. data/ext/{vector_complex.c → gsl_native/vector_complex.c} +179 -184
  232. data/ext/{vector_double.c → gsl_native/vector_double.c} +178 -183
  233. data/ext/{vector_int.c → gsl_native/vector_int.c} +27 -29
  234. data/ext/{vector_source.c → gsl_native/vector_source.h} +428 -443
  235. data/ext/{wavelet.c → gsl_native/wavelet.c} +224 -246
  236. data/gsl.gemspec +29 -0
  237. data/lib/gsl.rb +8 -3
  238. data/lib/gsl/gnuplot.rb +3 -3
  239. data/lib/gsl/oper.rb +35 -60
  240. data/lib/gsl/version.rb +3 -0
  241. data/lib/rbgsl.rb +1 -3
  242. data/rdoc/alf.rdoc +5 -5
  243. data/rdoc/blas.rdoc +9 -9
  244. data/rdoc/bspline.rdoc +17 -17
  245. data/rdoc/changes.rdoc +4 -9
  246. data/rdoc/cheb.rdoc +25 -25
  247. data/rdoc/cholesky_complex.rdoc +21 -21
  248. data/rdoc/combi.rdoc +37 -37
  249. data/rdoc/complex.rdoc +22 -22
  250. data/rdoc/const.rdoc +47 -47
  251. data/rdoc/dht.rdoc +49 -49
  252. data/rdoc/diff.rdoc +42 -42
  253. data/rdoc/ehandling.rdoc +6 -6
  254. data/rdoc/eigen.rdoc +153 -153
  255. data/rdoc/fft.rdoc +146 -146
  256. data/rdoc/fit.rdoc +109 -109
  257. data/rdoc/function.rdoc +11 -11
  258. data/rdoc/graph.rdoc +17 -17
  259. data/rdoc/hist.rdoc +103 -103
  260. data/rdoc/hist2d.rdoc +42 -42
  261. data/rdoc/hist3d.rdoc +9 -9
  262. data/rdoc/integration.rdoc +110 -110
  263. data/rdoc/interp.rdoc +71 -71
  264. data/rdoc/intro.rdoc +8 -8
  265. data/rdoc/linalg.rdoc +188 -188
  266. data/rdoc/linalg_complex.rdoc +1 -1
  267. data/rdoc/math.rdoc +58 -58
  268. data/rdoc/matrix.rdoc +275 -275
  269. data/rdoc/min.rdoc +57 -57
  270. data/rdoc/monte.rdoc +22 -22
  271. data/rdoc/multimin.rdoc +95 -95
  272. data/rdoc/multiroot.rdoc +80 -80
  273. data/rdoc/narray.rdoc +32 -32
  274. data/rdoc/ndlinear.rdoc +54 -54
  275. data/rdoc/nonlinearfit.rdoc +100 -100
  276. data/rdoc/ntuple.rdoc +31 -31
  277. data/rdoc/odeiv.rdoc +88 -88
  278. data/rdoc/perm.rdoc +90 -90
  279. data/rdoc/poly.rdoc +66 -66
  280. data/rdoc/qrng.rdoc +21 -21
  281. data/rdoc/randist.rdoc +82 -82
  282. data/rdoc/ref.rdoc +57 -57
  283. data/rdoc/rng.rdoc +85 -85
  284. data/rdoc/roots.rdoc +57 -57
  285. data/rdoc/sf.rdoc +428 -428
  286. data/rdoc/siman.rdoc +19 -19
  287. data/rdoc/sort.rdoc +30 -30
  288. data/rdoc/start.rdoc +8 -8
  289. data/rdoc/stats.rdoc +52 -52
  290. data/rdoc/sum.rdoc +12 -12
  291. data/rdoc/tensor.rdoc +31 -31
  292. data/rdoc/tut.rdoc +1 -1
  293. data/rdoc/use.rdoc +39 -39
  294. data/rdoc/vector.rdoc +188 -188
  295. data/rdoc/vector_complex.rdoc +24 -24
  296. data/rdoc/wavelet.rdoc +46 -46
  297. data/test/gsl/blas_test.rb +79 -0
  298. data/test/gsl/bspline_test.rb +63 -0
  299. data/test/gsl/cdf_test.rb +1512 -0
  300. data/test/gsl/cheb_test.rb +80 -0
  301. data/test/gsl/combination_test.rb +100 -0
  302. data/test/gsl/complex_test.rb +20 -0
  303. data/test/gsl/const_test.rb +29 -0
  304. data/test/gsl/deriv_test.rb +62 -0
  305. data/test/gsl/dht_test.rb +79 -0
  306. data/test/gsl/diff_test.rb +53 -0
  307. data/test/gsl/eigen_test.rb +563 -0
  308. data/test/gsl/err_test.rb +23 -0
  309. data/test/gsl/fit_test.rb +101 -0
  310. data/test/gsl/histo_test.rb +14 -0
  311. data/test/gsl/index_test.rb +61 -0
  312. data/test/gsl/integration_test.rb +274 -0
  313. data/test/gsl/interp_test.rb +27 -0
  314. data/test/gsl/linalg_test.rb +463 -0
  315. data/test/gsl/matrix_nmf_test.rb +37 -0
  316. data/test/gsl/matrix_test.rb +98 -0
  317. data/test/gsl/min_test.rb +89 -0
  318. data/test/gsl/monte_test.rb +77 -0
  319. data/test/gsl/multifit_test.rb +753 -0
  320. data/test/gsl/multimin_test.rb +157 -0
  321. data/test/gsl/multiroot_test.rb +135 -0
  322. data/test/gsl/multiset_test.rb +52 -0
  323. data/test/gsl/odeiv_test.rb +275 -0
  324. data/test/gsl/oper_test.rb +98 -0
  325. data/test/gsl/poly_test.rb +338 -0
  326. data/test/gsl/qrng_test.rb +94 -0
  327. data/test/gsl/quartic_test.rb +28 -0
  328. data/test/gsl/randist_test.rb +122 -0
  329. data/test/gsl/rng_test.rb +303 -0
  330. data/test/gsl/roots_test.rb +78 -0
  331. data/test/gsl/sf_test.rb +2079 -0
  332. data/test/gsl/stats_test.rb +122 -0
  333. data/test/gsl/sum_test.rb +69 -0
  334. data/test/gsl/tensor_test.rb +396 -0
  335. data/test/gsl/vector_test.rb +223 -0
  336. data/test/gsl/wavelet_test.rb +130 -0
  337. data/test/gsl_test.rb +321 -0
  338. data/test/test_helper.rb +42 -0
  339. data/uncrustify.cfg +1693 -0
  340. metadata +337 -378
  341. data/README +0 -32
  342. data/VERSION +0 -1
  343. data/ext/bspline.c +0 -130
  344. data/ext/const.c +0 -673
  345. data/ext/cqp.c +0 -283
  346. data/ext/extconf.rb +0 -295
  347. data/ext/fcmp.c +0 -66
  348. data/ext/fresnel.c +0 -312
  349. data/ext/jacobi.c +0 -739
  350. data/ext/ool.c +0 -879
  351. data/ext/oper_complex_source.c +0 -253
  352. data/ext/sf_mathieu.c +0 -238
  353. data/include/rb_gsl_config.h +0 -62
  354. data/include/rb_gsl_dirac.h +0 -13
  355. data/rdoc/index.rdoc +0 -62
  356. data/rdoc/rngextra.rdoc +0 -11
  357. data/rdoc/screenshot.rdoc +0 -40
  358. data/setup.rb +0 -1585
  359. data/tests/blas/amax.rb +0 -14
  360. data/tests/blas/asum.rb +0 -16
  361. data/tests/blas/axpy.rb +0 -25
  362. data/tests/blas/copy.rb +0 -23
  363. data/tests/blas/dot.rb +0 -23
  364. data/tests/bspline.rb +0 -53
  365. data/tests/cdf.rb +0 -1388
  366. data/tests/cheb.rb +0 -112
  367. data/tests/combination.rb +0 -123
  368. data/tests/complex.rb +0 -17
  369. data/tests/const.rb +0 -24
  370. data/tests/deriv.rb +0 -85
  371. data/tests/dht/dht1.rb +0 -17
  372. data/tests/dht/dht2.rb +0 -23
  373. data/tests/dht/dht3.rb +0 -23
  374. data/tests/dht/dht4.rb +0 -23
  375. data/tests/diff.rb +0 -78
  376. data/tests/eigen/eigen.rb +0 -220
  377. data/tests/eigen/gen.rb +0 -105
  378. data/tests/eigen/genherm.rb +0 -66
  379. data/tests/eigen/gensymm.rb +0 -68
  380. data/tests/eigen/nonsymm.rb +0 -53
  381. data/tests/eigen/nonsymmv.rb +0 -53
  382. data/tests/eigen/symm-herm.rb +0 -74
  383. data/tests/err.rb +0 -58
  384. data/tests/fit.rb +0 -124
  385. data/tests/gsl_test.rb +0 -118
  386. data/tests/gsl_test2.rb +0 -110
  387. data/tests/histo.rb +0 -12
  388. data/tests/integration/integration1.rb +0 -72
  389. data/tests/integration/integration2.rb +0 -71
  390. data/tests/integration/integration3.rb +0 -71
  391. data/tests/integration/integration4.rb +0 -71
  392. data/tests/interp.rb +0 -45
  393. data/tests/linalg/HH.rb +0 -64
  394. data/tests/linalg/LU.rb +0 -47
  395. data/tests/linalg/QR.rb +0 -77
  396. data/tests/linalg/SV.rb +0 -24
  397. data/tests/linalg/TDN.rb +0 -116
  398. data/tests/linalg/TDS.rb +0 -122
  399. data/tests/linalg/bidiag.rb +0 -73
  400. data/tests/linalg/cholesky.rb +0 -20
  401. data/tests/linalg/linalg.rb +0 -158
  402. data/tests/matrix/matrix_complex_test.rb +0 -36
  403. data/tests/matrix/matrix_nmf_test.rb +0 -39
  404. data/tests/matrix/matrix_test.rb +0 -48
  405. data/tests/min.rb +0 -99
  406. data/tests/monte/miser.rb +0 -31
  407. data/tests/monte/vegas.rb +0 -45
  408. data/tests/multifit/test_2dgauss.rb +0 -112
  409. data/tests/multifit/test_brown.rb +0 -90
  410. data/tests/multifit/test_enso.rb +0 -246
  411. data/tests/multifit/test_filip.rb +0 -155
  412. data/tests/multifit/test_gauss.rb +0 -97
  413. data/tests/multifit/test_longley.rb +0 -110
  414. data/tests/multifit/test_multifit.rb +0 -52
  415. data/tests/multimin.rb +0 -139
  416. data/tests/multiroot.rb +0 -131
  417. data/tests/multiset.rb +0 -52
  418. data/tests/narray/blas_dnrm2.rb +0 -20
  419. data/tests/odeiv.rb +0 -353
  420. data/tests/poly/poly.rb +0 -290
  421. data/tests/poly/special.rb +0 -65
  422. data/tests/qrng.rb +0 -131
  423. data/tests/quartic.rb +0 -29
  424. data/tests/randist.rb +0 -134
  425. data/tests/rng.rb +0 -305
  426. data/tests/roots.rb +0 -76
  427. data/tests/run-test.sh +0 -17
  428. data/tests/sf/gsl_test_sf.rb +0 -249
  429. data/tests/sf/test_airy.rb +0 -83
  430. data/tests/sf/test_bessel.rb +0 -306
  431. data/tests/sf/test_coulomb.rb +0 -17
  432. data/tests/sf/test_dilog.rb +0 -25
  433. data/tests/sf/test_gamma.rb +0 -209
  434. data/tests/sf/test_hyperg.rb +0 -356
  435. data/tests/sf/test_legendre.rb +0 -227
  436. data/tests/sf/test_mathieu.rb +0 -59
  437. data/tests/sf/test_mode.rb +0 -19
  438. data/tests/sf/test_sf.rb +0 -839
  439. data/tests/stats.rb +0 -174
  440. data/tests/stats_mt.rb +0 -16
  441. data/tests/sum.rb +0 -98
  442. data/tests/sys.rb +0 -323
  443. data/tests/tensor.rb +0 -419
  444. data/tests/vector/vector_complex_test.rb +0 -101
  445. data/tests/vector/vector_test.rb +0 -141
  446. data/tests/wavelet.rb +0 -142
@@ -9,8 +9,7 @@
9
9
  WITHOUT ANY WARRANTY.
10
10
  */
11
11
 
12
- #include "rb_gsl_config.h"
13
- #include "rb_gsl_interp.h"
12
+ #include "include/rb_gsl_interp.h"
14
13
 
15
14
  VALUE cgsl_interp_accel; /* this is used also in spline.c */
16
15
  EXTERN VALUE cgsl_vector, cgsl_matrix;
@@ -35,10 +34,10 @@ static VALUE rb_gsl_interp_new(int argc, VALUE *argv, VALUE klass)
35
34
  break;
36
35
  default:
37
36
  if (ptrx == NULL) {
38
- ptrx = get_vector_ptr(argv[i], &stride, &sizex);
37
+ ptrx = get_vector_ptr(argv[i], &stride, &sizex);
39
38
  } else {
40
- ptry = get_vector_ptr(argv[i], &stride, &sizey);
41
- size = GSL_MIN_INT(sizex, sizey);
39
+ ptry = get_vector_ptr(argv[i], &stride, &sizey);
40
+ size = GSL_MIN_INT(sizex, sizey);
42
41
  }
43
42
  break;
44
43
  }
@@ -133,7 +132,7 @@ static VALUE rb_gsl_interp_bsearch(int argc, VALUE *argv, VALUE obj)
133
132
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 3)", argc);
134
133
  break;
135
134
  }
136
- break;
135
+ break;
137
136
  }
138
137
  return INT2FIX(gsl_interp_bsearch(v->data, x, indexl, indexh));
139
138
  }
@@ -171,9 +170,9 @@ static VALUE rb_gsl_interp_accel_find(VALUE obj, VALUE vv, VALUE xx)
171
170
  }
172
171
 
173
172
  static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
174
- double (*eval)(const gsl_interp *, const double [],
175
- const double [], double,
176
- gsl_interp_accel *))
173
+ double (*eval)(const gsl_interp *, const double [],
174
+ const double [], double,
175
+ gsl_interp_accel *))
177
176
  {
178
177
  rb_gsl_interp *rgi = NULL;
179
178
  double *ptrx = NULL, *ptry = NULL;
@@ -182,17 +181,13 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
182
181
  VALUE ary, x;
183
182
  double val;
184
183
  size_t n, i, j, size, stridex, stridey;
185
- #ifdef HAVE_NARRAY_H
186
- struct NARRAY *na = NULL;
187
- double *ptrz = NULL, *ptr = NULL;
188
- #endif
189
184
  Data_Get_Struct(obj, rb_gsl_interp, rgi);
190
185
  ptrx = get_vector_ptr(xxa, &stridex, &size);
191
- if (size != rgi->p->size ){
186
+ if (size != rgi->p->size ) {
192
187
  rb_raise(rb_eTypeError, "size mismatch (xa:%d != %d)", (int) size, (int) rgi->p->size);
193
188
  }
194
189
  ptry = get_vector_ptr(yya, &stridey, &size);
195
- if (size != rgi->p->size ){
190
+ if (size != rgi->p->size ) {
196
191
  rb_raise(rb_eTypeError, "size mismatch (ya:%d != %d)", (int) size, (int) rgi->p->size);
197
192
  }
198
193
  if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -216,12 +211,14 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
216
211
  default:
217
212
  #ifdef HAVE_NARRAY_H
218
213
  if (NA_IsNArray(xx)) {
214
+ struct NARRAY *na = NULL;
215
+ double *ptrz = NULL, *ptr = NULL;
219
216
  GetNArray(xx, na);
220
217
  ptrz = (double*) na->ptr;
221
218
  ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
222
219
  ptr = NA_PTR_TYPE(ary, double*);
223
- for (i = 0; i < na->total; i++)
224
- ptr[i] = (*eval)(rgi->p, ptrx, ptry, ptrz[i], rgi->a);
220
+ for (i = 0; (int) i < na->total; i++)
221
+ ptr[i] = (*eval)(rgi->p, ptrx, ptry, ptrz[i], rgi->a);
225
222
  return ary;
226
223
  }
227
224
  #endif
@@ -229,18 +226,18 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
229
226
  Data_Get_Struct(xx, gsl_vector, v);
230
227
  vnew = gsl_vector_alloc(v->size);
231
228
  for (i = 0; i < v->size; i++) {
232
- val = (*eval)(rgi->p, ptrx, ptry, gsl_vector_get(v, i), rgi->a);
233
- gsl_vector_set(vnew, i, val);
229
+ val = (*eval)(rgi->p, ptrx, ptry, gsl_vector_get(v, i), rgi->a);
230
+ gsl_vector_set(vnew, i, val);
234
231
  }
235
232
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
236
233
  } else if (MATRIX_P(xx)) {
237
234
  Data_Get_Struct(xx, gsl_matrix, m);
238
235
  mnew = gsl_matrix_alloc(m->size1, m->size2);
239
236
  for (i = 0; i < m->size1; i++) {
240
- for (j = 0; j < m->size2; j++) {
241
- val = (*eval)(rgi->p, ptrx, ptry, gsl_matrix_get(m, i, j), rgi->a);
242
- gsl_matrix_set(mnew, i, j, val);
243
- }
237
+ for (j = 0; j < m->size2; j++) {
238
+ val = (*eval)(rgi->p, ptrx, ptry, gsl_matrix_get(m, i, j), rgi->a);
239
+ gsl_matrix_set(mnew, i, j, val);
240
+ }
244
241
  }
245
242
  return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
246
243
  } else {
@@ -307,7 +304,7 @@ static VALUE rb_gsl_interp_eval_deriv_e(VALUE obj, VALUE xxa, VALUE yya, VALUE x
307
304
  default:
308
305
  return rb_float_new(y);
309
306
  break;
310
- }
307
+ }
311
308
  return Qnil;
312
309
  }
313
310
 
@@ -339,8 +336,8 @@ static VALUE rb_gsl_interp_eval_deriv2_e(VALUE obj, VALUE xxa, VALUE yya, VALUE
339
336
  return Qnil;
340
337
  }
341
338
 
342
- static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
343
- VALUE aa, VALUE bb)
339
+ static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
340
+ VALUE aa, VALUE bb)
344
341
  {
345
342
  rb_gsl_interp *rgi = NULL;
346
343
  double *ptr1 = NULL, *ptr2 = NULL;
@@ -355,8 +352,8 @@ static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
355
352
  return rb_float_new(gsl_interp_eval_integ(rgi->p, ptr1, ptr2, a, b, rgi->a));
356
353
  }
357
354
 
358
- static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
359
- VALUE aa, VALUE bb)
355
+ static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
356
+ VALUE aa, VALUE bb)
360
357
  {
361
358
  rb_gsl_interp *rgi = NULL;
362
359
  double *ptr1 = NULL, *ptr2 = NULL;
@@ -393,9 +390,7 @@ const gsl_interp_type* get_interp_type(VALUE t)
393
390
  type = FIX2INT(t);
394
391
  switch (type) {
395
392
  case GSL_INTERP_LINEAR: return gsl_interp_linear; break;
396
- #ifdef GSL_1_1_LATER
397
393
  case GSL_INTERP_POLYNOMIAL: return gsl_interp_polynomial; break;
398
- #endif
399
394
  case GSL_INTERP_CSPLINE: return gsl_interp_cspline; break;
400
395
  case GSL_INTERP_CSPLINE_PERIODIC: return gsl_interp_cspline_periodic; break;
401
396
  case GSL_INTERP_AKIMA: return gsl_interp_akima; break;
@@ -409,10 +404,8 @@ const gsl_interp_type* get_interp_type(VALUE t)
409
404
  strcpy(name, STR2CSTR(t));
410
405
  if (str_tail_grep(name, "linear") == 0) {
411
406
  return gsl_interp_linear;
412
- #ifdef GSL_1_1_LATER
413
407
  } else if (str_tail_grep(name, "polynomial") == 0) {
414
408
  return gsl_interp_polynomial;
415
- #endif
416
409
  } else if (str_tail_grep(name, "cspline") == 0) {
417
410
  return gsl_interp_cspline;
418
411
  } else if (str_tail_grep(name, "cspline_periodic") == 0) {
@@ -437,11 +430,7 @@ static VALUE rb_gsl_interp_info(VALUE obj)
437
430
  char buf[256];
438
431
  Data_Get_Struct(obj, rb_gsl_interp, p);
439
432
  sprintf(buf, "Class: %s\n", rb_class2name(CLASS_OF(obj)));
440
- #ifdef RUBY_1_9_LATER
441
433
  sprintf(buf, "%sSuperClass: %s\n", buf, rb_class2name(RCLASS_SUPER(CLASS_OF(obj))));
442
- #else
443
- sprintf(buf, "%sSuperClass: %s\n", buf, rb_class2name(RCLASS(CLASS_OF(obj))->super));
444
- #endif
445
434
  sprintf(buf, "%sType: %s\n", buf, gsl_interp_name(p->p));
446
435
  sprintf(buf, "%sxmin: %f\n", buf, p->p->xmin);
447
436
  sprintf(buf, "%sxmax: %f\n", buf, p->p->xmax);
@@ -458,10 +447,8 @@ static void rb_gsl_interp_define_const(VALUE klass)
458
447
  rb_define_const(klass, "AKIMA_PERIODIC", INT2FIX(GSL_INTERP_AKIMA_PERIODIC));
459
448
 
460
449
  rb_define_const(klass, "Linear", INT2FIX(GSL_INTERP_LINEAR));
461
- #ifdef GSL_1_1_LATER
462
450
  rb_define_const(klass, "POLYNOMIAL", INT2FIX(GSL_INTERP_POLYNOMIAL));
463
451
  rb_define_const(klass, "Polynomial", INT2FIX(GSL_INTERP_POLYNOMIAL));
464
- #endif
465
452
  rb_define_const(klass, "CSpline", INT2FIX(GSL_INTERP_CSPLINE));
466
453
  rb_define_const(klass, "CSpline_Periodic", INT2FIX(GSL_INTERP_CSPLINE_PERIODIC));
467
454
  rb_define_const(klass, "Akima", INT2FIX(GSL_INTERP_AKIMA));
@@ -0,0 +1,733 @@
1
+ #ifdef HAVE_JACOBI_H
2
+ #include "include/rb_gsl.h"
3
+ #include "jacobi.h"
4
+
5
+ static VALUE jac_eval3_e(VALUE x, VALUE a, VALUE b,
6
+ int (*f)(double, double, double, gsl_sf_result*))
7
+ {
8
+ gsl_sf_result *result;
9
+ VALUE obj;
10
+ obj = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, result);
11
+ (*f)(NUM2DBL(x), NUM2DBL(a), NUM2DBL(b), result);
12
+ return obj;
13
+ }
14
+
15
+ static VALUE jac_eval3(VALUE xx, VALUE aa, VALUE bb, double (*f)(double, double, double))
16
+ {
17
+ gsl_vector *x, *y;
18
+ double a, b;
19
+ size_t i, len;
20
+ VALUE ary;
21
+ a = NUM2DBL(aa);
22
+ b = NUM2DBL(bb);
23
+ if (VECTOR_P(xx)) {
24
+ Data_Get_Struct(xx, gsl_vector, x);
25
+ y = gsl_vector_alloc(x->size);
26
+ for (i = 0; i < x->size; i++) {
27
+ gsl_vector_set(y, i, (*f)(gsl_vector_get(x, i), a, b));
28
+ }
29
+ return Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(xx)), 0, gsl_vector_free, y);
30
+ } else if (TYPE(xx) == T_ARRAY) {
31
+ // len = RARRAY(xx)->len;
32
+ len = RARRAY_LEN(xx);
33
+ ary = rb_ary_new2(len);
34
+ for (i = 0; i < len; i++) {
35
+ rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(xx, i)), a, b)));
36
+ }
37
+ return ary;
38
+ #ifdef HAVE_NARRAY_H
39
+ } else if (NA_IsNArray(xx)) {
40
+ double *ptr1, *ptr2;
41
+ struct NARRAY *na;
42
+ GetNArray(xx, na);
43
+ len = na->total;
44
+ ptr1 = (double*) na->ptr;
45
+ ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
46
+ ptr2 = NA_PTR_TYPE(ary, double*);
47
+ for (i = 0; i < len; i++) {
48
+ ptr2[i] = (*f)(ptr1[i], a, b);
49
+ }
50
+ return ary;
51
+ #endif
52
+ } else {
53
+ return rb_float_new((*f)(NUM2DBL(xx), a, b));
54
+ }
55
+ }
56
+
57
+ static VALUE rb_jac_jacobi_eval(int argc, VALUE *argv,
58
+ double (*f)(double, int, double, double),
59
+ int (*f2)(int, const double*, int, double*, double, double, double*))
60
+ {
61
+ gsl_vector *x, *ws, *y;
62
+ double a, b;
63
+ VALUE ary;
64
+ size_t len, i;
65
+ int n, flag = 0;
66
+ if (argc < 4) rb_raise(rb_eArgError, "Too few arguments (%d for >= 4)", argc);
67
+ if (VECTOR_P(argv[0])) {
68
+ Data_Get_Struct(argv[0], gsl_vector, x);
69
+ y = gsl_vector_alloc(x->size);
70
+ ary = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(x)), 0, gsl_vector_free, y);
71
+ switch (argc) {
72
+ case 4:
73
+ ws = gsl_vector_alloc(2*x->size);
74
+ flag = 1;
75
+ break;
76
+ case 5:
77
+ CHECK_VECTOR(argv[4]);
78
+ Data_Get_Struct(argv[4], gsl_vector, ws);
79
+ break;
80
+ default:
81
+ rb_raise(rb_eArgError, "Too many arguments (%d for 4 or 5)", argc);
82
+ }
83
+ (*f2)(x->size, x->data, FIX2INT(argv[1]), y->data, NUM2DBL(argv[2]), NUM2DBL(argv[3]),
84
+ ws->data);
85
+ if (flag == 1) gsl_vector_free(ws);
86
+ return ary;
87
+ } else if (TYPE(argv[0]) == T_ARRAY) {
88
+ n = FIX2INT(argv[1]);
89
+ a = NUM2DBL(argv[2]);
90
+ b = NUM2DBL(argv[3]);
91
+ // len = RARRAY(argv[0])->len;
92
+ len = RARRAY_LEN(argv[0]);
93
+ ary = rb_ary_new2(len);
94
+ for (i = 0; i < len; i++) {
95
+ rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(argv[0], i)), n, a, b)));
96
+ }
97
+ return ary;
98
+ #ifdef HAVE_NARRAY_H
99
+ } else if (NA_IsNArray(argv[0])) {
100
+ double *ptr1, *ptr2;
101
+ struct NARRAY *na;
102
+ GetNArray(argv[0], na);
103
+ len = na->total;
104
+ ptr1 = (double*) na->ptr;
105
+ ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(argv[0]));
106
+ ptr2 = NA_PTR_TYPE(ary, double*);
107
+ n = FIX2INT(argv[1]);
108
+ a = NUM2DBL(argv[2]);
109
+ b = NUM2DBL(argv[3]);
110
+ ws = gsl_vector_alloc(len);
111
+ (*f2)(len, ptr1, n, ptr2, a, b, ws->data);
112
+ gsl_vector_free(ws);
113
+ return ary;
114
+ #endif
115
+ } else {
116
+ return rb_float_new((*f)(NUM2DBL(argv[0]), FIX2INT(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3])));
117
+ }
118
+ }
119
+ static VALUE rb_jac_jacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
120
+ {
121
+ return jac_eval3_e(x, a, b, jac_jacobi_P0_e);
122
+ }
123
+
124
+ static VALUE rb_jac_jacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
125
+ {
126
+ return jac_eval3(x, a, b, jac_jacobi_P0);
127
+ }
128
+
129
+ static VALUE rb_jac_jacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
130
+ {
131
+ return jac_eval3_e(x, a, b, jac_jacobi_P1_e);
132
+ }
133
+
134
+ static VALUE rb_jac_jacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
135
+ {
136
+ return jac_eval3(x, a, b, jac_jacobi_P1);
137
+ }
138
+
139
+
140
+ static VALUE rb_jac_jacobi(int argc, VALUE *argv, VALUE module)
141
+ {
142
+ return rb_jac_jacobi_eval(argc, argv, jac_jacobi, jac_jacobi_array);
143
+ }
144
+
145
+ static VALUE rb_jac_djacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
146
+ {
147
+ return jac_eval3_e(x, a, b, jac_djacobi_P0_e);
148
+ }
149
+
150
+ static VALUE rb_jac_djacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
151
+ {
152
+ return jac_eval3(x, a, b, jac_djacobi_P0);
153
+ }
154
+
155
+ static VALUE rb_jac_djacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
156
+ {
157
+ return jac_eval3_e(x, a, b, jac_djacobi_P1_e);
158
+ }
159
+
160
+ static VALUE rb_jac_djacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
161
+ {
162
+ return jac_eval3(x, a, b, jac_djacobi_P1);
163
+ }
164
+
165
+ static VALUE rb_jac_djacobi(int argc, VALUE *argv, VALUE module)
166
+ {
167
+ return rb_jac_jacobi_eval(argc, argv, jac_djacobi, jac_djacobi_array);
168
+ }
169
+
170
+ static VALUE rb_jac_zeros_eval(int argc, VALUE *argv, VALUE module,
171
+ int (*f)(double*, int, double, double))
172
+ {
173
+ gsl_vector *x;
174
+ int m, status;
175
+ double a, b;
176
+ VALUE xx;
177
+ switch (argc) {
178
+ case 3:
179
+ if (FIXNUM_P(argv[0])) {
180
+ m = FIX2INT(argv[0]);
181
+ a = NUM2DBL(argv[1]);
182
+ b = NUM2DBL(argv[2]);
183
+ x = gsl_vector_alloc(m);
184
+ xx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
185
+ } else if (VECTOR_P(argv[0])) {
186
+ Data_Get_Struct(argv[0], gsl_vector, x);
187
+ m = x->size;
188
+ a = NUM2DBL(argv[1]);
189
+ b = NUM2DBL(argv[2]);
190
+ xx = argv[0];
191
+ } else {
192
+ rb_raise(rb_eTypeError, "Wrong argument type %s (Fixnum or GSL::Vector expected)",
193
+ rb_class2name(CLASS_OF(argv[0])));
194
+ }
195
+ break;
196
+ case 4:
197
+ CHECK_VECTOR(argv[0]);
198
+ Data_Get_Struct(argv[0], gsl_vector, x);
199
+ m = FIX2INT(argv[1]);
200
+ a = NUM2DBL(argv[2]);
201
+ b = NUM2DBL(argv[3]);
202
+ break;
203
+ default:
204
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
205
+ }
206
+ status = (*f)(x->data, m, a, b);
207
+ if (status != GSL_SUCCESS)
208
+ rb_raise(rb_eRuntimeError, "Something wrong. (error code %d)", status);
209
+ return xx;
210
+ }
211
+
212
+ static VALUE rb_jac_jacobi_zeros(int argc, VALUE *argv, VALUE module)
213
+ {
214
+ return rb_jac_zeros_eval(argc, argv, module, jac_jacobi_zeros);
215
+ }
216
+
217
+ static void jac_define_const(VALUE module)
218
+ {
219
+ rb_define_const(module, "GJ", INT2FIX(JAC_GJ));
220
+ rb_define_const(module, "GLJ", INT2FIX(JAC_GLJ));
221
+ rb_define_const(module, "GRJM", INT2FIX(JAC_GRJM));
222
+ rb_define_const(module, "GRJP", INT2FIX(JAC_GRJP));
223
+ }
224
+
225
+ static VALUE rb_jac_quadrature_alloc(VALUE klass, VALUE vQ)
226
+ {
227
+ jac_quadrature *q;
228
+
229
+ q = jac_quadrature_alloc(FIX2INT(vQ));
230
+
231
+ return Data_Wrap_Struct(klass, 0, jac_quadrature_free, q);
232
+ }
233
+
234
+ static VALUE rb_jac_quadrature_Q(VALUE obj)
235
+ {
236
+ jac_quadrature *q;
237
+ Data_Get_Struct(obj, jac_quadrature, q);
238
+ return INT2FIX(q->Q);
239
+ }
240
+
241
+ static VALUE rb_jac_quadrature_type(VALUE obj)
242
+ {
243
+ jac_quadrature *q;
244
+ Data_Get_Struct(obj, jac_quadrature, q);
245
+ return INT2FIX((int) q->type);
246
+ }
247
+
248
+ static VALUE rb_jac_quadrature_alpha(VALUE obj)
249
+ {
250
+ jac_quadrature *q;
251
+ Data_Get_Struct(obj, jac_quadrature, q);
252
+ return NUM2DBL(q->alpha);
253
+ }
254
+
255
+ static VALUE rb_jac_quadrature_beta(VALUE obj)
256
+ {
257
+ jac_quadrature *q;
258
+ Data_Get_Struct(obj, jac_quadrature, q);
259
+ return NUM2DBL(q->beta);
260
+ }
261
+
262
+ static VALUE rb_jac_quadrature_x(VALUE obj)
263
+ {
264
+ jac_quadrature *q;
265
+ gsl_vector_view *v;
266
+ Data_Get_Struct(obj, jac_quadrature, q);
267
+ v = gsl_vector_view_alloc();
268
+ v->vector.data = q->x;
269
+ v->vector.size = q->Q;
270
+ v->vector.stride = 1;
271
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
272
+ }
273
+
274
+ static VALUE rb_jac_quadrature_w(VALUE obj)
275
+ {
276
+ jac_quadrature *q;
277
+ gsl_vector_view *v;
278
+ Data_Get_Struct(obj, jac_quadrature, q);
279
+ v = gsl_vector_view_alloc();
280
+ v->vector.data = q->w;
281
+ v->vector.size = q->Q;
282
+ v->vector.stride = 1;
283
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
284
+ }
285
+
286
+ static VALUE rb_jac_quadrature_D(VALUE obj)
287
+ {
288
+ jac_quadrature *q;
289
+ gsl_vector_view *v;
290
+ Data_Get_Struct(obj, jac_quadrature, q);
291
+ v = gsl_vector_view_alloc();
292
+ v->vector.data = q->D;
293
+ v->vector.size = q->Q;
294
+ v->vector.stride = 1;
295
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
296
+ }
297
+
298
+ static VALUE rb_jac_quadrature_xp(VALUE obj)
299
+ {
300
+ jac_quadrature *q;
301
+ gsl_vector_view *v;
302
+ Data_Get_Struct(obj, jac_quadrature, q);
303
+ v = gsl_vector_view_alloc();
304
+ v->vector.data = q->w;
305
+ v->vector.size = q->np;
306
+ v->vector.stride = 1;
307
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
308
+ }
309
+
310
+ static VALUE rb_jac_interpmat_alloc(int argc, VALUE *argv, VALUE obj)
311
+ {
312
+ int err;
313
+ jac_quadrature *q;
314
+ gsl_vector *xp;
315
+ int np;
316
+ Data_Get_Struct(obj, jac_quadrature, q);
317
+ switch (argc) {
318
+ case 1:
319
+ CHECK_VECTOR(argv[0]);
320
+ Data_Get_Struct(argv[0], gsl_vector, xp);
321
+ np = xp->size;
322
+ break;
323
+ case 2:
324
+ CHECK_VECTOR(argv[1]);
325
+ Data_Get_Struct(argv[1], gsl_vector, xp);
326
+ np = FIX2INT(argv[0]);
327
+ break;
328
+ default:
329
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
330
+ }
331
+ err = jac_interpmat_alloc(q, np, xp->data);
332
+ return FIX2INT(err);
333
+ }
334
+
335
+ static VALUE rb_jac_interpmat_free(VALUE obj)
336
+ {
337
+ jac_quadrature *q;
338
+ Data_Get_Struct(obj, jac_quadrature, q);
339
+ jac_interpmat_free(q);
340
+ return Qtrue;
341
+ }
342
+
343
+ static VALUE rb_jac_quadrature_zwd(int argc, VALUE *argv, VALUE obj)
344
+ {
345
+ jac_quadrature *q;
346
+ gsl_vector *ws;
347
+ int flag = 0, type, status;
348
+ double a, b;
349
+ Data_Get_Struct(obj, jac_quadrature, q);
350
+ switch (argc) {
351
+ case 3:
352
+ type = FIX2INT(argv[0]);
353
+ a = NUM2DBL(argv[1]);
354
+ b = NUM2DBL(argv[2]);
355
+ ws = gsl_vector_alloc(q->Q);
356
+ flag = 1;
357
+ break;
358
+ case 4:
359
+ type = FIX2INT(argv[0]);
360
+ a = NUM2DBL(argv[1]);
361
+ b = NUM2DBL(argv[2]);
362
+ Data_Get_Struct(argv[3], gsl_vector, ws);
363
+ break;
364
+ default:
365
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
366
+ }
367
+ status = jac_quadrature_zwd(q, type, a, b, ws->data);
368
+ if (flag == 1) gsl_vector_free(ws);
369
+ return INT2FIX(status);
370
+ }
371
+
372
+ static VALUE rb_jac_integrate(VALUE obj, VALUE ff)
373
+ {
374
+ jac_quadrature *q;
375
+ gsl_vector *f;
376
+ CHECK_VECTOR(ff);
377
+ Data_Get_Struct(obj, jac_quadrature, q);
378
+ Data_Get_Struct(ff, gsl_vector, f);
379
+ return rb_float_new(jac_integrate(q, f->data));
380
+ }
381
+
382
+ static VALUE rb_jac_interpolate(int argc, VALUE *argv, VALUE obj)
383
+ {
384
+ jac_quadrature *q;
385
+ gsl_vector *f, *fout;
386
+ VALUE vfout;
387
+ switch (argc) {
388
+ case 1:
389
+ CHECK_VECTOR(argv[0]);
390
+ Data_Get_Struct(argv[0], gsl_vector, f);
391
+ fout = gsl_vector_alloc(f->size);
392
+ vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
393
+ break;
394
+ case 2:
395
+ CHECK_VECTOR(argv[0]);
396
+ Data_Get_Struct(argv[0], gsl_vector, f);
397
+ CHECK_VECTOR(argv[1]);
398
+ Data_Get_Struct(argv[1], gsl_vector, fout);
399
+ vfout = argv[1];
400
+ break;
401
+ default:
402
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
403
+ }
404
+ Data_Get_Struct(obj, jac_quadrature, q);
405
+ jac_interpolate(q, f->data, fout->data);
406
+ return vfout;
407
+ }
408
+
409
+ static VALUE rb_jac_differentiate(int argc, VALUE *argv, VALUE obj)
410
+ {
411
+ jac_quadrature *q;
412
+ gsl_vector *f, *fout;
413
+ VALUE vfout;
414
+ switch (argc) {
415
+ case 1:
416
+ CHECK_VECTOR(argv[0]);
417
+ Data_Get_Struct(argv[0], gsl_vector, f);
418
+ fout = gsl_vector_alloc(f->size);
419
+ vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
420
+ break;
421
+ case 2:
422
+ CHECK_VECTOR(argv[0]);
423
+ Data_Get_Struct(argv[0], gsl_vector, f);
424
+ CHECK_VECTOR(argv[1]);
425
+ Data_Get_Struct(argv[1], gsl_vector, fout);
426
+ vfout = argv[1];
427
+ break;
428
+ default:
429
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
430
+ }
431
+ Data_Get_Struct(obj, jac_quadrature, q);
432
+ jac_differentiate(q, f->data, fout->data);
433
+ return vfout;
434
+ }
435
+
436
+ /*****/
437
+ static VALUE rb_jac_qeval(int argc, VALUE *argv,
438
+ int (*f)(double*, double*, const int, double, double, double*))
439
+ {
440
+ gsl_vector *z, *D, *ws;
441
+ int Q;
442
+ int flag = 0, status;
443
+ double alpha, beta;
444
+ VALUE vD;
445
+ if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
446
+ CHECK_VECTOR(argv[0]);
447
+ Data_Get_Struct(argv[0], gsl_vector, z);
448
+ argc -= 1;
449
+ argv += 1;
450
+ if (VECTOR_P(argv[argc-1])) {
451
+ Data_Get_Struct(argv[argc-1], gsl_vector, ws);
452
+ argc -= 1;
453
+ } else {
454
+ ws = gsl_vector_alloc(z->size);
455
+ flag = 1;
456
+ }
457
+ switch (argc) {
458
+ case 2:
459
+ Q = z->size;
460
+ D = gsl_vector_alloc(Q*Q);
461
+ alpha = NUM2DBL(argv[0]);
462
+ beta = NUM2DBL(argv[1]);
463
+ vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
464
+ break;
465
+ case 4:
466
+ Data_Get_Struct(argv[0], gsl_vector, D);
467
+ vD = argv[0];
468
+ Q = FIX2INT(argv[1]);
469
+ alpha = NUM2DBL(argv[2]);
470
+ beta = NUM2DBL(argv[3]);
471
+ break;
472
+ case 3:
473
+ if (VECTOR_P(argv[0])) {
474
+ Q = z->size;
475
+ Data_Get_Struct(argv[0], gsl_vector, D);
476
+ vD = argv[0];
477
+ } else {
478
+ Q = FIX2INT(argv[0]);
479
+ D = gsl_vector_alloc(Q*Q);
480
+ vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
481
+ }
482
+ alpha = NUM2DBL(argv[1]);
483
+ beta = NUM2DBL(argv[2]);
484
+ break;
485
+ default:
486
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
487
+ }
488
+ status = (*f)(z->data, D->data, Q, alpha, beta, ws->data);
489
+ if (flag == 1) gsl_vector_free(ws);
490
+ if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Something wrong.");
491
+ return vD;
492
+ }
493
+
494
+ static VALUE rb_jac_diffmat_gj(int argc, VALUE *argv, VALUE module)
495
+ {
496
+ return rb_jac_qeval(argc, argv, jac_diffmat_gj);
497
+ }
498
+
499
+ static VALUE rb_jac_diffmat_glj(int argc, VALUE *argv, VALUE module)
500
+ {
501
+ return rb_jac_qeval(argc, argv, jac_diffmat_glj);
502
+ }
503
+
504
+ static VALUE rb_jac_diffmat_grjm(int argc, VALUE *argv, VALUE module)
505
+ {
506
+ return rb_jac_qeval(argc, argv, jac_diffmat_grjm);
507
+ }
508
+
509
+ static VALUE rb_jac_diffmat_grjp(int argc, VALUE *argv, VALUE module)
510
+ {
511
+ return rb_jac_qeval(argc, argv, jac_diffmat_grjp);
512
+ }
513
+
514
+ static VALUE rb_jac_weights_gj(int argc, VALUE *argv, VALUE module)
515
+ {
516
+ return rb_jac_qeval(argc, argv, jac_weights_gj);
517
+ }
518
+
519
+ static VALUE rb_jac_weights_glj(int argc, VALUE *argv, VALUE module)
520
+ {
521
+ return rb_jac_qeval(argc, argv, jac_weights_glj);
522
+ }
523
+
524
+ static VALUE rb_jac_weights_grjm(int argc, VALUE *argv, VALUE module)
525
+ {
526
+ return rb_jac_qeval(argc, argv, jac_weights_grjm);
527
+ }
528
+
529
+ static VALUE rb_jac_weights_grjp(int argc, VALUE *argv, VALUE module)
530
+ {
531
+ return rb_jac_qeval(argc, argv, jac_weights_grjp);
532
+ }
533
+
534
+ static VALUE rb_jac_zeros_gj(int argc, VALUE *argv, VALUE module)
535
+ {
536
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_gj);
537
+ }
538
+ static VALUE rb_jac_zeros_glj(int argc, VALUE *argv, VALUE module)
539
+ {
540
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_glj);
541
+ }
542
+ static VALUE rb_jac_zeros_grjm(int argc, VALUE *argv, VALUE module)
543
+ {
544
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjm);
545
+ }
546
+ static VALUE rb_jac_zeros_grjp(int argc, VALUE *argv, VALUE module)
547
+ {
548
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjp);
549
+ }
550
+
551
+ static VALUE rb_jac_lagrange_eval(int argc, VALUE *argv,
552
+ double (*f)(int, double, int, double*, double, double))
553
+ {
554
+ gsl_vector *z;
555
+ int i, Q;
556
+ double alpha, beta, zz;
557
+
558
+ switch (argc) {
559
+ case 5:
560
+ i = FIX2INT(argv[0]);
561
+ zz = NUM2DBL(argv[1]);
562
+ CHECK_VECTOR(argv[2]);
563
+ Data_Get_Struct(argv[2], gsl_vector, z);
564
+ Q = z->size;
565
+ alpha = NUM2DBL(argv[3]);
566
+ beta = NUM2DBL(argv[4]);
567
+ break;
568
+ case 6:
569
+ i = FIX2INT(argv[0]);
570
+ zz = NUM2DBL(argv[1]);
571
+ Q = FIX2INT(argv[2]);
572
+ CHECK_VECTOR(argv[3]);
573
+ Data_Get_Struct(argv[3], gsl_vector, z);
574
+ alpha = NUM2DBL(argv[4]);
575
+ beta = NUM2DBL(argv[5]);
576
+ break;
577
+ default:
578
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 5 or 6)", argc);
579
+ }
580
+ return rb_float_new((*f)(i, zz, Q, z->data, alpha, beta));
581
+ }
582
+
583
+ static VALUE rb_jac_lagrange_gj(int argc, VALUE *argv, VALUE module)
584
+ {
585
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_gj);
586
+ }
587
+ static VALUE rb_jac_lagrange_glj(int argc, VALUE *argv, VALUE module)
588
+ {
589
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_glj);
590
+ }
591
+ static VALUE rb_jac_lagrange_grjm(int argc, VALUE *argv, VALUE module)
592
+ {
593
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjm);
594
+ }
595
+
596
+ static VALUE rb_jac_lagrange_grjp(int argc, VALUE *argv, VALUE module)
597
+ {
598
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjp);
599
+ }
600
+
601
+ static VALUE rb_jac_interpmat_eval(int argc, VALUE *argv,
602
+ int (*f)(double*, double*, int, double*, int, double, double))
603
+ {
604
+ gsl_vector *imat, *zp, *z;
605
+ double alpha, beta;
606
+ int np, Q, status;
607
+ VALUE vimat;
608
+
609
+ if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
610
+ CHECK_VECTOR(argv[0]);
611
+ if (VECTOR_P(argv[1])) {
612
+ Data_Get_Struct(argv[0], gsl_vector, imat);
613
+ Data_Get_Struct(argv[1], gsl_vector, zp);
614
+ vimat = argv[0];
615
+ if (FIXNUM_P(argv[2])) np = FIX2INT(argv[2]);
616
+ argc -= 3;
617
+ argv += 3;
618
+ } else {
619
+ Data_Get_Struct(argv[0], gsl_vector, zp);
620
+ if (FIXNUM_P(argv[1])) np = FIX2INT(argv[1]);
621
+ else np = zp->size;
622
+ imat = gsl_vector_alloc(np);
623
+ vimat = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, imat);
624
+ argc -= 2;
625
+ argv += 2;
626
+ }
627
+ CHECK_VECTOR(argv[0]);
628
+ Data_Get_Struct(argv[0], gsl_vector, z);
629
+ argc -= 1;
630
+ argv += 1;
631
+ switch (argc) {
632
+ case 3:
633
+ Q = FIX2INT(argv[0]);
634
+ alpha = NUM2DBL(argv[1]);
635
+ beta = NUM2DBL(argv[2]);
636
+ break;
637
+ case 2:
638
+ Q = z->size;
639
+ alpha = NUM2DBL(argv[0]);
640
+ beta = NUM2DBL(argv[1]);
641
+ break;
642
+ default:
643
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
644
+ }
645
+ (*f)(imat->data, zp->data, np, z->data, Q, alpha, beta);
646
+ if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Some error.");
647
+ return vimat;
648
+ }
649
+
650
+ static VALUE rb_jac_interpmat_gj(int argc, VALUE *argv, VALUE module)
651
+ {
652
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_gj);
653
+ }
654
+
655
+ static VALUE rb_jac_interpmat_glj(int argc, VALUE *argv, VALUE module)
656
+ {
657
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_glj);
658
+ }
659
+ static VALUE rb_jac_interpmat_grjm(int argc, VALUE *argv, VALUE module)
660
+ {
661
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjm);
662
+ }
663
+ static VALUE rb_jac_interpmat_grjp(int argc, VALUE *argv, VALUE module)
664
+ {
665
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjp);
666
+ }
667
+ void Init_jacobi(VALUE module)
668
+ {
669
+ VALUE mjac, cjacq;
670
+
671
+ mjac = rb_define_module("Jac");
672
+ jac_define_const(mjac);
673
+ cjacq = rb_define_class_under(mjac, "Quadrature", cGSL_Object);
674
+
675
+ rb_define_module_function(mjac, "jacobi_P0_e", rb_jac_jacobi_P0_e, 3);
676
+ rb_define_module_function(mjac, "jacobi_P0", rb_jac_jacobi_P0, 3);
677
+ rb_define_module_function(mjac, "jacobi_P1_e", rb_jac_jacobi_P1_e, 3);
678
+ rb_define_module_function(mjac, "jacobi_P1", rb_jac_jacobi_P1, 3);
679
+ rb_define_module_function(mjac, "jacobi", rb_jac_jacobi, -1);
680
+ rb_define_module_function(mjac, "djacobi_P0_e", rb_jac_djacobi_P0_e, 3);
681
+ rb_define_module_function(mjac, "djacobi_P0", rb_jac_djacobi_P0, 3);
682
+ rb_define_module_function(mjac, "djacobi_P1_e", rb_jac_djacobi_P1_e, 3);
683
+ rb_define_module_function(mjac, "djacobi_P1", rb_jac_djacobi_P1, 3);
684
+ rb_define_module_function(mjac, "djacobi", rb_jac_djacobi, 4);
685
+
686
+ rb_define_module_function(mjac, "jacobi_zeros", rb_jac_jacobi_zeros, -1);
687
+
688
+ /*****/
689
+ rb_define_singleton_method(cjacq, "alloc", rb_jac_quadrature_alloc, 1);
690
+ rb_define_method(cjacq, "Q", rb_jac_quadrature_Q, 0);
691
+ rb_define_method(cjacq, "type", rb_jac_quadrature_type, 0);
692
+ rb_define_method(cjacq, "alpha", rb_jac_quadrature_alpha, 0);
693
+ rb_define_method(cjacq, "beta", rb_jac_quadrature_beta, 0);
694
+ rb_define_method(cjacq, "x", rb_jac_quadrature_x, 0);
695
+ rb_define_method(cjacq, "w", rb_jac_quadrature_w, 0);
696
+ rb_define_method(cjacq, "D", rb_jac_quadrature_D, 0);
697
+ rb_define_method(cjacq, "xp", rb_jac_quadrature_xp, 0);
698
+ rb_define_method(cjacq, "interpmat_alloc", rb_jac_interpmat_alloc, -1);
699
+ rb_define_method(cjacq, "interpmat_free", rb_jac_interpmat_free, 0);
700
+ rb_define_method(cjacq, "zwd", rb_jac_quadrature_zwd, -1);
701
+ rb_define_method(cjacq, "integrate", rb_jac_integrate, 1);
702
+ rb_define_method(cjacq, "interpolate", rb_jac_interpolate, -1);
703
+ rb_define_method(cjacq, "differentiate", rb_jac_differentiate, -1);
704
+ /*****/
705
+ rb_define_module_function(mjac, "diffmat_gj", rb_jac_diffmat_gj, -1);
706
+ rb_define_module_function(mjac, "diffmat_glj", rb_jac_diffmat_glj, -1);
707
+ rb_define_module_function(mjac, "diffmat_grjm", rb_jac_diffmat_grjm, -1);
708
+ rb_define_module_function(mjac, "diffmat_grjp", rb_jac_diffmat_grjp, -1);
709
+
710
+ rb_define_module_function(mjac, "weights_gj", rb_jac_weights_gj, -1);
711
+ rb_define_module_function(mjac, "weights_glj", rb_jac_weights_glj, -1);
712
+ rb_define_module_function(mjac, "weights_grjm", rb_jac_weights_grjm, -1);
713
+ rb_define_module_function(mjac, "weights_grjp", rb_jac_weights_grjp, -1);
714
+
715
+ rb_define_module_function(mjac, "zeros_gj", rb_jac_zeros_gj, -1);
716
+ rb_define_module_function(mjac, "zeros_glj", rb_jac_zeros_glj, -1);
717
+ rb_define_module_function(mjac, "zeros_grjm", rb_jac_zeros_grjm, -1);
718
+ rb_define_module_function(mjac, "zeros_grjp", rb_jac_zeros_grjp, -1);
719
+
720
+ rb_define_module_function(mjac, "lagrange_gj", rb_jac_lagrange_gj, -1);
721
+ rb_define_module_function(mjac, "lagrange_glj", rb_jac_lagrange_glj, -1);
722
+ rb_define_module_function(mjac, "lagrange_grjm", rb_jac_lagrange_grjm, -1);
723
+ rb_define_module_function(mjac, "lagrange_grjp", rb_jac_lagrange_grjp, -1);
724
+
725
+ rb_define_module_function(mjac, "interpmat_gj", rb_jac_interpmat_gj, -1);
726
+ rb_define_module_function(mjac, "interpmat_glj", rb_jac_interpmat_glj, -1);
727
+ rb_define_module_function(mjac, "interpmat_grjm", rb_jac_interpmat_grjm, -1);
728
+ rb_define_module_function(mjac, "interpmat_grjp", rb_jac_interpmat_grjp, -1);
729
+
730
+ }
731
+
732
+ #endif
733
+