rb-gsl 1.16.0.4 → 1.16.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (307) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -0
  3. data/.travis.yml +24 -0
  4. data/AUTHORS +6 -0
  5. data/COPYING +341 -339
  6. data/ChangeLog +608 -587
  7. data/Gemfile +4 -0
  8. data/README.md +77 -0
  9. data/Rakefile +14 -33
  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/{gsl → gsl_native}/alf.c +9 -9
  89. data/ext/{gsl → gsl_native}/array.c +64 -151
  90. data/ext/{gsl → gsl_native}/array_complex.c +61 -63
  91. data/ext/{gsl → gsl_native}/blas.c +0 -0
  92. data/ext/{gsl → gsl_native}/blas1.c +32 -32
  93. data/ext/{gsl → gsl_native}/blas2.c +54 -58
  94. data/ext/{gsl → gsl_native}/blas3.c +54 -54
  95. data/ext/{gsl → gsl_native}/block.c +3 -6
  96. data/ext/{gsl/block_source.c → gsl_native/block_source.h} +109 -111
  97. data/ext/gsl_native/bspline.c +122 -0
  98. data/ext/{gsl → gsl_native}/bundle.c +0 -0
  99. data/ext/{gsl → gsl_native}/cdf.c +76 -88
  100. data/ext/{gsl → gsl_native}/cheb.c +74 -85
  101. data/ext/{gsl → gsl_native}/combination.c +9 -16
  102. data/ext/{gsl → gsl_native}/common.c +7 -37
  103. data/ext/{gsl → gsl_native}/complex.c +113 -115
  104. data/ext/gsl_native/const.c +331 -0
  105. data/ext/{gsl → gsl_native}/const_additional.c +12 -33
  106. data/ext/gsl_native/cqp.c +283 -0
  107. data/ext/{gsl → gsl_native}/deriv.c +22 -30
  108. data/ext/{gsl → gsl_native}/dht.c +20 -28
  109. data/ext/{gsl → gsl_native}/diff.c +23 -25
  110. data/ext/{gsl → gsl_native}/dirac.c +44 -45
  111. data/ext/{gsl → gsl_native}/eigen.c +1031 -1082
  112. data/ext/{gsl → gsl_native}/error.c +13 -13
  113. data/ext/{gsl → gsl_native}/extconf.rb +5 -13
  114. data/ext/{gsl → gsl_native}/fft.c +192 -198
  115. data/ext/{gsl → gsl_native}/fit.c +16 -16
  116. data/ext/gsl_native/fresnel.c +312 -0
  117. data/ext/{gsl → gsl_native}/function.c +29 -35
  118. data/ext/{gsl → gsl_native}/geometry.c +15 -15
  119. data/ext/{gsl → gsl_native}/graph.c +37 -87
  120. data/ext/{gsl → gsl_native}/gsl.c +10 -23
  121. data/ext/{gsl → gsl_native}/gsl_narray.c +15 -24
  122. data/ext/{gsl → gsl_native}/histogram.c +123 -150
  123. data/ext/{gsl → gsl_native}/histogram2d.c +71 -96
  124. data/ext/{gsl → gsl_native}/histogram3d.c +72 -72
  125. data/ext/{gsl → gsl_native}/histogram3d_source.c +195 -196
  126. data/ext/{gsl → gsl_native}/histogram_find.c +31 -33
  127. data/ext/{gsl → gsl_native}/histogram_oper.c +43 -52
  128. data/ext/{gsl → gsl_native}/ieee.c +7 -15
  129. data/ext/{gsl → gsl_native}/include/rb_gsl.h +0 -7
  130. data/ext/{gsl → gsl_native}/include/rb_gsl_array.h +15 -25
  131. data/ext/{gsl → gsl_native}/include/rb_gsl_cheb.h +0 -0
  132. data/ext/{gsl → gsl_native}/include/rb_gsl_common.h +44 -52
  133. data/ext/{gsl → gsl_native}/include/rb_gsl_complex.h +0 -0
  134. data/ext/{gsl → gsl_native}/include/rb_gsl_const.h +0 -5
  135. data/ext/{gsl → gsl_native}/include/rb_gsl_dirac.h +0 -0
  136. data/ext/{gsl → gsl_native}/include/rb_gsl_eigen.h +0 -0
  137. data/ext/{gsl → gsl_native}/include/rb_gsl_fft.h +0 -3
  138. data/ext/{gsl → gsl_native}/include/rb_gsl_fit.h +0 -0
  139. data/ext/{gsl → gsl_native}/include/rb_gsl_function.h +0 -0
  140. data/ext/{gsl → gsl_native}/include/rb_gsl_graph.h +2 -2
  141. data/ext/{gsl → gsl_native}/include/rb_gsl_histogram.h +8 -8
  142. data/ext/{gsl → gsl_native}/include/rb_gsl_histogram3d.h +50 -50
  143. data/ext/{gsl → gsl_native}/include/rb_gsl_integration.h +0 -0
  144. data/ext/{gsl → gsl_native}/include/rb_gsl_interp.h +0 -0
  145. data/ext/{gsl → gsl_native}/include/rb_gsl_linalg.h +0 -1
  146. data/ext/{gsl → gsl_native}/include/rb_gsl_math.h +0 -4
  147. data/ext/{gsl → gsl_native}/include/rb_gsl_odeiv.h +0 -0
  148. data/ext/{gsl → gsl_native}/include/rb_gsl_poly.h +3 -3
  149. data/ext/{gsl → gsl_native}/include/rb_gsl_rational.h +1 -1
  150. data/ext/{gsl → gsl_native}/include/rb_gsl_rng.h +0 -0
  151. data/ext/{gsl → gsl_native}/include/rb_gsl_root.h +0 -0
  152. data/ext/{gsl → gsl_native}/include/rb_gsl_sf.h +39 -43
  153. data/ext/{gsl → gsl_native}/include/rb_gsl_statistics.h +0 -0
  154. data/ext/{gsl → gsl_native}/include/rb_gsl_tensor.h +0 -0
  155. data/ext/{gsl → gsl_native}/include/rb_gsl_with_narray.h +0 -0
  156. data/ext/{gsl → gsl_native}/include/templates_off.h +0 -0
  157. data/ext/{gsl → gsl_native}/include/templates_on.h +1 -1
  158. data/ext/{gsl → gsl_native}/integration.c +160 -183
  159. data/ext/{gsl → gsl_native}/interp.c +23 -31
  160. data/ext/gsl_native/jacobi.c +733 -0
  161. data/ext/{gsl → gsl_native}/linalg.c +448 -576
  162. data/ext/{gsl → gsl_native}/linalg_complex.c +84 -98
  163. data/ext/{gsl → gsl_native}/math.c +45 -63
  164. data/ext/{gsl → gsl_native}/matrix.c +4 -6
  165. data/ext/{gsl → gsl_native}/matrix_complex.c +111 -114
  166. data/ext/{gsl → gsl_native}/matrix_double.c +74 -77
  167. data/ext/{gsl → gsl_native}/matrix_int.c +49 -50
  168. data/ext/{gsl/matrix_source.c → gsl_native/matrix_source.h} +280 -302
  169. data/ext/{gsl → gsl_native}/min.c +43 -74
  170. data/ext/{gsl → gsl_native}/monte.c +45 -59
  171. data/ext/{gsl → gsl_native}/multifit.c +138 -147
  172. data/ext/{gsl → gsl_native}/multimin.c +55 -83
  173. data/ext/{gsl → gsl_native}/multimin_fsdf.c +15 -15
  174. data/ext/{gsl → gsl_native}/multiroots.c +61 -64
  175. data/ext/{gsl → gsl_native}/multiset.c +3 -7
  176. data/ext/{gsl → gsl_native}/ndlinear.c +320 -321
  177. data/ext/{gsl → gsl_native}/nmf.c +11 -11
  178. data/ext/{gsl → gsl_native}/nmf_wrap.c +1 -1
  179. data/ext/{gsl → gsl_native}/ntuple.c +13 -13
  180. data/ext/{gsl → gsl_native}/odeiv.c +95 -106
  181. data/ext/gsl_native/ool.c +879 -0
  182. data/ext/{gsl → gsl_native}/permutation.c +36 -34
  183. data/ext/{gsl → gsl_native}/poly.c +2 -5
  184. data/ext/{gsl → gsl_native}/poly2.c +6 -6
  185. data/ext/{gsl/poly_source.c → gsl_native/poly_source.h} +232 -275
  186. data/ext/{gsl → gsl_native}/qrng.c +6 -17
  187. data/ext/{gsl → gsl_native}/randist.c +218 -243
  188. data/ext/{gsl → gsl_native}/rational.c +9 -9
  189. data/ext/{gsl → gsl_native}/rng.c +29 -45
  190. data/ext/{gsl → gsl_native}/root.c +43 -43
  191. data/ext/{gsl → gsl_native}/sf.c +163 -197
  192. data/ext/{gsl → gsl_native}/sf_airy.c +0 -0
  193. data/ext/{gsl → gsl_native}/sf_bessel.c +6 -6
  194. data/ext/{gsl → gsl_native}/sf_clausen.c +0 -0
  195. data/ext/{gsl → gsl_native}/sf_coulomb.c +39 -39
  196. data/ext/{gsl → gsl_native}/sf_coupling.c +29 -29
  197. data/ext/{gsl → gsl_native}/sf_dawson.c +0 -0
  198. data/ext/{gsl → gsl_native}/sf_debye.c +0 -9
  199. data/ext/{gsl → gsl_native}/sf_dilog.c +0 -0
  200. data/ext/{gsl → gsl_native}/sf_elementary.c +2 -2
  201. data/ext/{gsl → gsl_native}/sf_ellint.c +42 -42
  202. data/ext/{gsl → gsl_native}/sf_elljac.c +2 -2
  203. data/ext/{gsl → gsl_native}/sf_erfc.c +0 -4
  204. data/ext/{gsl → gsl_native}/sf_exp.c +2 -2
  205. data/ext/{gsl → gsl_native}/sf_expint.c +1 -11
  206. data/ext/{gsl → gsl_native}/sf_fermi_dirac.c +0 -0
  207. data/ext/{gsl → gsl_native}/sf_gamma.c +1 -5
  208. data/ext/{gsl → gsl_native}/sf_gegenbauer.c +0 -0
  209. data/ext/{gsl → gsl_native}/sf_hyperg.c +0 -0
  210. data/ext/{gsl → gsl_native}/sf_laguerre.c +3 -3
  211. data/ext/{gsl → gsl_native}/sf_lambert.c +0 -0
  212. data/ext/{gsl → gsl_native}/sf_legendre.c +0 -0
  213. data/ext/{gsl → gsl_native}/sf_log.c +3 -3
  214. data/ext/gsl_native/sf_mathieu.c +235 -0
  215. data/ext/{gsl → gsl_native}/sf_power.c +0 -0
  216. data/ext/{gsl → gsl_native}/sf_psi.c +2 -11
  217. data/ext/{gsl → gsl_native}/sf_synchrotron.c +0 -0
  218. data/ext/{gsl → gsl_native}/sf_transport.c +0 -0
  219. data/ext/{gsl → gsl_native}/sf_trigonometric.c +3 -3
  220. data/ext/{gsl → gsl_native}/sf_zeta.c +0 -4
  221. data/ext/{gsl → gsl_native}/signal.c +60 -64
  222. data/ext/{gsl → gsl_native}/siman.c +36 -40
  223. data/ext/{gsl → gsl_native}/sort.c +3 -4
  224. data/ext/{gsl → gsl_native}/spline.c +25 -43
  225. data/ext/{gsl → gsl_native}/stats.c +102 -115
  226. data/ext/{gsl → gsl_native}/sum.c +32 -32
  227. data/ext/{gsl → gsl_native}/tamu_anova.c +0 -0
  228. data/ext/{gsl → gsl_native}/tensor.c +2 -4
  229. data/ext/{gsl/tensor_source.c → gsl_native/tensor_source.h} +144 -144
  230. data/ext/{gsl → gsl_native}/vector.c +2 -4
  231. data/ext/{gsl → gsl_native}/vector_complex.c +165 -171
  232. data/ext/{gsl → gsl_native}/vector_double.c +167 -174
  233. data/ext/{gsl → gsl_native}/vector_int.c +23 -25
  234. data/ext/{gsl/vector_source.c → gsl_native/vector_source.h} +400 -414
  235. data/ext/{gsl → gsl_native}/wavelet.c +215 -236
  236. data/lib/gsl.rb +1 -7
  237. data/lib/gsl/gnuplot.rb +2 -2
  238. data/lib/gsl/version.rb +1 -3
  239. data/rb-gsl.gemspec +29 -0
  240. data/rdoc/blas.rdoc +3 -3
  241. data/rdoc/bspline.rdoc +7 -7
  242. data/rdoc/cheb.rdoc +8 -8
  243. data/rdoc/cholesky_complex.rdoc +1 -1
  244. data/rdoc/combi.rdoc +9 -9
  245. data/rdoc/complex.rdoc +11 -11
  246. data/rdoc/const.rdoc +20 -20
  247. data/rdoc/dht.rdoc +6 -6
  248. data/rdoc/diff.rdoc +6 -6
  249. data/rdoc/ehandling.rdoc +3 -3
  250. data/rdoc/eigen.rdoc +11 -11
  251. data/rdoc/fft.rdoc +26 -26
  252. data/rdoc/fit.rdoc +18 -18
  253. data/rdoc/graph.rdoc +2 -2
  254. data/rdoc/hist.rdoc +16 -16
  255. data/rdoc/hist2d.rdoc +4 -4
  256. data/rdoc/hist3d.rdoc +3 -3
  257. data/rdoc/integration.rdoc +16 -16
  258. data/rdoc/interp.rdoc +11 -11
  259. data/rdoc/intro.rdoc +3 -3
  260. data/rdoc/linalg.rdoc +20 -20
  261. data/rdoc/linalg_complex.rdoc +1 -1
  262. data/rdoc/math.rdoc +13 -13
  263. data/rdoc/matrix.rdoc +22 -22
  264. data/rdoc/min.rdoc +9 -9
  265. data/rdoc/monte.rdoc +3 -3
  266. data/rdoc/multimin.rdoc +12 -12
  267. data/rdoc/multiroot.rdoc +12 -12
  268. data/rdoc/narray.rdoc +9 -9
  269. data/rdoc/ndlinear.rdoc +4 -4
  270. data/rdoc/nonlinearfit.rdoc +17 -17
  271. data/rdoc/ntuple.rdoc +5 -5
  272. data/rdoc/odeiv.rdoc +12 -12
  273. data/rdoc/perm.rdoc +11 -11
  274. data/rdoc/poly.rdoc +17 -17
  275. data/rdoc/qrng.rdoc +9 -9
  276. data/rdoc/randist.rdoc +10 -10
  277. data/rdoc/ref.rdoc +49 -49
  278. data/rdoc/rng.rdoc +9 -9
  279. data/rdoc/roots.rdoc +12 -12
  280. data/rdoc/sf.rdoc +35 -35
  281. data/rdoc/siman.rdoc +3 -3
  282. data/rdoc/sort.rdoc +6 -6
  283. data/rdoc/start.rdoc +2 -2
  284. data/rdoc/stats.rdoc +13 -13
  285. data/rdoc/sum.rdoc +4 -4
  286. data/rdoc/tensor.rdoc +3 -3
  287. data/rdoc/tut.rdoc +1 -1
  288. data/rdoc/use.rdoc +3 -3
  289. data/rdoc/vector.rdoc +28 -28
  290. data/rdoc/vector_complex.rdoc +6 -6
  291. data/rdoc/wavelet.rdoc +8 -8
  292. data/test/gsl/blas_test.rb +1 -1
  293. data/test/gsl/index_test.rb +61 -0
  294. data/test/gsl/matrix_test.rb +21 -0
  295. data/uncrustify.cfg +1693 -0
  296. metadata +212 -243
  297. data/README +0 -28
  298. data/ext/gsl/bspline.c +0 -130
  299. data/ext/gsl/const.c +0 -672
  300. data/ext/gsl/cqp.c +0 -283
  301. data/ext/gsl/fcmp.c +0 -64
  302. data/ext/gsl/fresnel.c +0 -312
  303. data/ext/gsl/jacobi.c +0 -739
  304. data/ext/gsl/ool.c +0 -879
  305. data/ext/gsl/oper_complex_source.c +0 -251
  306. data/ext/gsl/sf_mathieu.c +0 -238
  307. data/rdoc/index.rdoc +0 -50
@@ -16,9 +16,9 @@
16
16
  VALUE rb_gsl_permutation_alloc(VALUE klass, VALUE nn);
17
17
 
18
18
  /*
19
- * Creates a new permutation of size n. The permutation is not initialized
20
- * and its elements are undefined. Use the method calloc if you want to create
21
- * a permutation which is initialized to the identity.
19
+ * Creates a new permutation of size n. The permutation is not initialized
20
+ * and its elements are undefined. Use the method calloc if you want to create
21
+ * a permutation which is initialized to the identity.
22
22
  */
23
23
  VALUE rb_gsl_permutation_alloc(VALUE klass, VALUE nn)
24
24
  {
@@ -51,12 +51,17 @@ static VALUE rb_gsl_permutation_init(VALUE obj)
51
51
  return obj;
52
52
  }
53
53
 
54
- void get_range_int_beg_en_n(VALUE range, int *beg, int *en, size_t *n, int *step);
54
+ #ifndef CHECK_RANGE_OFFSET
55
+ #define CHECK_RANGE_OFFSET(i) if (i < -((int) b->size) || i >= ((int) b->size)) \
56
+ rb_raise(rb_eRangeError, "offset %d out of range", i);
57
+ #endif
58
+
55
59
  static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
56
60
  {
57
61
  gsl_permutation *b, *bnew;
58
62
  gsl_index *p;
59
- int beg, en, i, step;
63
+ long beg;
64
+ int i;
60
65
  size_t n, j, k;
61
66
  Data_Get_Struct(obj, gsl_permutation, b);
62
67
  switch (argc) {
@@ -67,6 +72,7 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
67
72
  switch (TYPE(argv[0])) {
68
73
  case T_FIXNUM:
69
74
  i = FIX2INT(argv[0]);
75
+ CHECK_RANGE_OFFSET(i);
70
76
  if (i < 0) j = b->size + i; else j = (size_t) i;
71
77
  return INT2FIX((int) b->data[j]);
72
78
  break;
@@ -75,27 +81,30 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
75
81
  n = RARRAY_LEN(argv[0]);
76
82
  bnew = gsl_permutation_alloc(n);
77
83
  for (j = 0; j < n; j++) {
78
- i = FIX2INT(rb_ary_entry(argv[0], j));
79
- if (i < 0) k = b->size + i; else k = i;
80
- bnew->data[j] = b->data[k];
84
+ i = FIX2INT(rb_ary_entry(argv[0], j));
85
+ CHECK_RANGE_OFFSET(i);
86
+ if (i < 0) k = b->size + i; else k = (size_t) i;
87
+ bnew->data[j] = b->data[k];
81
88
  }
82
- return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
89
+ return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
83
90
  break;
84
91
  default:
85
92
  if (PERMUTATION_P(argv[0])) {
86
- Data_Get_Struct(argv[0], gsl_index, p);
87
- bnew = gsl_permutation_alloc(p->size);
88
- for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
89
- return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
93
+ Data_Get_Struct(argv[0], gsl_index, p);
94
+ bnew = gsl_permutation_alloc(p->size);
95
+ for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
96
+ return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
90
97
  } else if (CLASS_OF(argv[0]) == rb_cRange) {
91
- get_range_int_beg_en_n(argv[0], &beg, &en, &n, &step);
92
- bnew = gsl_permutation_alloc(n);
93
- for (j = 0; j < n; j++)
94
- bnew->data[j] = b->data[beg+j];
95
- return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
98
+ rb_range_beg_len(argv[0], &beg, (long *) &n, (long) b->size, 2);
99
+ if (n == 0) rb_raise(rb_eRangeError, "range overflow");
100
+ if (n > b->size) n = b->size;
101
+ bnew = gsl_permutation_alloc(n);
102
+ for (j = 0; j < n; j++)
103
+ bnew->data[j] = b->data[beg+j];
104
+ return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
96
105
  } else {
97
- rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
98
- break;
106
+ rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
107
+ break;
99
108
  }
100
109
  }
101
110
  break;
@@ -112,7 +121,6 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
112
121
  return Qnil;
113
122
  }
114
123
 
115
- #ifdef GSL_1_1_LATER
116
124
  static VALUE rb_gsl_permutation_clone(VALUE obj)
117
125
  {
118
126
  gsl_permutation *p, *p2 = NULL;
@@ -133,7 +141,6 @@ static VALUE rb_gsl_permutation_memcpy(VALUE obj, VALUE pp1, VALUE pp2)
133
141
  gsl_permutation_memcpy(p1, p2);
134
142
  return pp1;
135
143
  }
136
- #endif
137
144
 
138
145
  static VALUE rb_gsl_permutation_swap(VALUE obj, VALUE i, VALUE j)
139
146
  {
@@ -271,7 +278,6 @@ static VALUE rb_gsl_permute_vector_inverse(VALUE obj, VALUE pp, VALUE vv)
271
278
  }
272
279
 
273
280
  /* singleton method */
274
- #ifdef GSL_1_2_LATER
275
281
  static VALUE rb_gsl_permutation_mul(VALUE obj, VALUE ppa, VALUE ppb)
276
282
  {
277
283
  gsl_permutation *p = NULL;
@@ -291,7 +297,6 @@ static VALUE rb_gsl_permutation_mul(VALUE obj, VALUE ppa, VALUE ppb)
291
297
  if (flag == 1) return obj;
292
298
  else return Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
293
299
  }
294
- #endif
295
300
 
296
301
  static VALUE rb_gsl_permutation_print(VALUE obj);
297
302
 
@@ -367,9 +372,8 @@ static VALUE rb_gsl_permutation_fprintf(int argc, VALUE *argv, VALUE obj)
367
372
  FILE *fp = NULL;
368
373
  int status, flag = 0;
369
374
 
370
- if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
371
- "wrong number of arguments (%d for 1 or 2)", argc);
372
-
375
+ if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
376
+ "wrong number of arguments (%d for 1 or 2)", argc);
373
377
  Data_Get_Struct(obj, gsl_permutation, h);
374
378
  fp = rb_gsl_open_writefile(argv[0], &flag);
375
379
  if (argc == 1) {
@@ -409,7 +413,6 @@ static VALUE rb_gsl_permutation_fscanf(VALUE obj, VALUE io)
409
413
  return INT2FIX(status);
410
414
  }
411
415
 
412
- #ifdef GSL_1_2_LATER
413
416
  static VALUE rb_gsl_permutation_linear_to_canonical(int argc, VALUE *argv, VALUE obj)
414
417
  {
415
418
  gsl_permutation *p, *q;
@@ -476,7 +479,6 @@ static VALUE rb_gsl_permutation_canonical_cycles(VALUE obj)
476
479
  Data_Get_Struct(obj, gsl_permutation, p);
477
480
  return INT2FIX(gsl_permutation_canonical_cycles(p));
478
481
  }
479
- #endif
480
482
 
481
483
  static VALUE rb_gsl_vector_permute(VALUE obj, VALUE pp)
482
484
  {
@@ -537,10 +539,8 @@ void Init_gsl_permutation(VALUE module)
537
539
  rb_define_alias(cgsl_permutation, "[]", "get");
538
540
  rb_define_method(cgsl_permutation, "set", rb_gsl_permutation_set, 2);
539
541
  rb_define_alias(cgsl_permutation, "[]=", "set");
540
- #ifdef GSL_1_1_LATER
541
542
  rb_define_singleton_method(cgsl_permutation, "memcpy", rb_gsl_permutation_memcpy, 2);
542
543
  rb_define_method(cgsl_permutation, "clone", rb_gsl_permutation_clone, 0);
543
- #endif
544
544
  rb_define_method(cgsl_permutation, "swap", rb_gsl_permutation_swap, 2);
545
545
  rb_define_method(cgsl_permutation, "valid", rb_gsl_permutation_valid, 0);
546
546
  rb_define_method(cgsl_permutation, "valid?", rb_gsl_permutation_valid2, 0);
@@ -556,7 +556,7 @@ void Init_gsl_permutation(VALUE module)
556
556
  rb_define_alias(cgsl_permutation, "permute", "permute_vector");
557
557
  rb_define_method(cgsl_permutation, "permute_vector_inverse", rb_gsl_permutation_permute_vector_inverse, 1);
558
558
  rb_define_alias(cgsl_permutation, "permute_inverse", "permute_vector_inverse");
559
-
559
+
560
560
  rb_define_singleton_method(cgsl_permutation, "permute_vector", rb_gsl_permute_vector, 2);
561
561
  rb_define_singleton_method(cgsl_permutation, "permute_vector_inverse", rb_gsl_permute_vector_inverse, 2);
562
562
  rb_define_module_function(module, "permute_vector", rb_gsl_permute_vector, 2);
@@ -574,7 +574,6 @@ void Init_gsl_permutation(VALUE module)
574
574
  rb_define_method(cgsl_permutation, "fscanf", rb_gsl_permutation_fscanf, 1);
575
575
  rb_define_method(cgsl_permutation, "print", rb_gsl_permutation_print, 0);
576
576
 
577
- #ifdef GSL_1_2_LATER
578
577
  rb_define_singleton_method(cgsl_permutation, "mul", rb_gsl_permutation_mul, 2);
579
578
  rb_define_method(cgsl_permutation, "mul", rb_gsl_permutation_mul, 2);
580
579
  rb_define_method(cgsl_permutation, "linear_to_canonical", rb_gsl_permutation_linear_to_canonical, -1);
@@ -585,7 +584,6 @@ void Init_gsl_permutation(VALUE module)
585
584
  rb_define_method(cgsl_permutation, "inversions", rb_gsl_permutation_inversions, 0);
586
585
  rb_define_method(cgsl_permutation, "linear_cycles", rb_gsl_permutation_linear_cycles, 0);
587
586
  rb_define_method(cgsl_permutation, "canonical_cycles", rb_gsl_permutation_canonical_cycles, 0);
588
- #endif
589
587
 
590
588
  rb_define_method(cgsl_vector, "permute", rb_gsl_vector_permute, 1);
591
589
  rb_define_method(cgsl_vector, "permute_inverse", rb_gsl_vector_permute_inverse, 1);
@@ -594,3 +592,7 @@ void Init_gsl_permutation(VALUE module)
594
592
  rb_define_alias(cgsl_permutation, "==", "equal?");
595
593
 
596
594
  }
595
+
596
+ #ifdef CHECK_RANGE_OFFSET
597
+ #undef CHECK_RANGE_OFFSET
598
+ #endif
@@ -12,9 +12,6 @@
12
12
  #include "include/rb_gsl_poly.h"
13
13
  #include "include/rb_gsl_array.h"
14
14
  #include "include/rb_gsl_common.h"
15
- #ifdef HAVE_NARARY_H
16
- #include "narray.h"
17
- #endif
18
15
 
19
16
  void Init_gsl_poly_init(VALUE module);
20
17
  void Init_gsl_poly_int_init(VALUE module);
@@ -22,7 +19,7 @@ void Init_gsl_poly2(VALUE module);
22
19
 
23
20
  #define BASE_DOUBLE
24
21
  #include "include/templates_on.h"
25
- #include "poly_source.c"
22
+ #include "poly_source.h"
26
23
  #include "include/templates_off.h"
27
24
  void Init_gsl_poly(VALUE module)
28
25
  {
@@ -33,7 +30,7 @@ void Init_gsl_poly(VALUE module)
33
30
 
34
31
  #define BASE_INT
35
32
  #include "include/templates_on.h"
36
- #include "poly_source.c"
33
+ #include "poly_source.h"
37
34
  #include "include/templates_off.h"
38
35
  void Init_gsl_poly_int(VALUE module)
39
36
  {
@@ -48,7 +48,7 @@ static gsl_poly_int* mygsl_poly_hermite(int n1)
48
48
  gsl_vector_int_memcpy(p1, p0);
49
49
  }
50
50
  gsl_vector_int_free(p2);
51
- gsl_vector_int_free(p1);
51
+ gsl_vector_int_free(p1);
52
52
  break;
53
53
  }
54
54
  return p0;
@@ -87,7 +87,7 @@ static gsl_poly_int* mygsl_poly_cheb(int n1)
87
87
  gsl_vector_int_memcpy(p1, p0);
88
88
  }
89
89
  gsl_vector_int_free(p2);
90
- gsl_vector_int_free(p1);
90
+ gsl_vector_int_free(p1);
91
91
  break;
92
92
  }
93
93
  return p0;
@@ -125,7 +125,7 @@ static gsl_poly_int* mygsl_poly_chebII(int n1)
125
125
  gsl_vector_int_memcpy(p1, p0);
126
126
  }
127
127
  gsl_vector_int_free(p2);
128
- gsl_vector_int_free(p1);
128
+ gsl_vector_int_free(p1);
129
129
  break;
130
130
  }
131
131
  return p0;
@@ -195,7 +195,7 @@ static gsl_poly_int* mygsl_poly_bell(int n1)
195
195
  gsl_vector_int_memcpy(p0, p1);
196
196
  mygsl_vector_int_shift(p0, n);
197
197
  for (j = 0; j < n; j++) {
198
- gsl_vector_int_set(p1, j, gsl_vector_int_get(p1, j+1)*(j+1));
198
+ gsl_vector_int_set(p1, j, gsl_vector_int_get(p1, j+1)*(j+1));
199
199
  }
200
200
  gsl_vector_int_set(p1, n, 0);
201
201
  mygsl_vector_int_shift(p1, n);
@@ -203,14 +203,14 @@ static gsl_poly_int* mygsl_poly_bell(int n1)
203
203
  /* save for the next iteration */
204
204
  gsl_vector_int_memcpy(p1, p0);
205
205
  }
206
- gsl_vector_int_free(p1);
206
+ gsl_vector_int_free(p1);
207
207
  break;
208
208
  }
209
209
  return p0;
210
210
  }
211
211
 
212
212
  static VALUE rb_gsl_poly_define_poly(VALUE klass, VALUE order,
213
- gsl_poly_int* (*f)(int n1)) {
213
+ gsl_poly_int* (*f)(int n1)) {
214
214
  int n1;
215
215
  gsl_poly_int *pnew = NULL;
216
216
  CHECK_FIXNUM(order);
@@ -51,28 +51,21 @@
51
51
  VALUE cgsl_poly, cgsl_poly_int;
52
52
  VALUE cgsl_poly_workspace;
53
53
  VALUE cgsl_poly_complex_workspace;
54
- #ifdef GSL_1_1_LATER
55
54
  VALUE cgsl_poly_dd;
56
55
  VALUE cgsl_poly_taylor;
57
56
  #endif
58
- #endif
59
57
 
60
58
  #ifdef BASE_INT
61
59
  double gsl_poly_int_eval(const BASE c[], const int len, const double x)
62
60
  {
63
61
  int i;
64
62
  double ans = (double) c[len-1];
65
- for(i=len-1; i>0; i--) ans = (double) c[i-1] + x * ans;
63
+ for(i = len-1; i>0; i--) ans = (double) c[i-1] + x * ans;
66
64
  return ans;
67
65
  }
68
66
  #endif
69
67
  #ifdef BASE_DOUBLE
70
- #ifdef HAVE_NARRAY_H
71
- #include "include/rb_gsl_with_narray.h"
72
- #endif
73
- #ifdef GSL_1_11_LATER
74
68
  static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b);
75
- #endif
76
69
  static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
77
70
  {
78
71
  gsl_vector *v = NULL, *vx, *vnew;
@@ -82,22 +75,15 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
82
75
  size_t i, N, n;
83
76
  VALUE val;
84
77
  double *ptr0;
85
- double *ptr1, *ptr2;
86
- #ifdef HAVE_NARRAY_H
87
- int shape[1];
88
- #endif
89
- #ifdef GSL_1_11_LATER
78
+ double *ptr1, *ptr2;
90
79
  gsl_complex *z, zz;
91
80
  gsl_vector_complex *vz, *vznew;
92
- if (rb_obj_is_kind_of(a, cgsl_vector_complex))
81
+ if (rb_obj_is_kind_of(a, cgsl_vector_complex))
93
82
  return rb_gsl_complex_poly_complex_eval(a, x);
94
- #endif
95
83
  switch (TYPE(a)) {
96
84
  case T_ARRAY:
97
- #ifdef GSL_1_11_LATER
98
- if (rb_obj_is_kind_of(rb_ary_entry(a, 0), cgsl_complex))
85
+ if (rb_obj_is_kind_of(rb_ary_entry(a, 0), cgsl_complex))
99
86
  return rb_gsl_complex_poly_complex_eval(a, x);
100
- #endif
101
87
  v = make_cvector_from_rarray(a);
102
88
  N = v->size;
103
89
  ptr0 = v->data;
@@ -115,7 +101,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
115
101
  #endif
116
102
  } else {
117
103
  rb_raise(rb_eTypeError, "Wrong argument type %s (Array, GSL::Vector or NArray expected)",
118
- rb_class2name(CLASS_OF(a)));
104
+ rb_class2name(CLASS_OF(a)));
119
105
  }
120
106
  }
121
107
  switch (TYPE(x)) {
@@ -123,7 +109,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
123
109
  case T_BIGNUM:
124
110
  case T_FLOAT:
125
111
  val = rb_float_new(gsl_poly_eval(ptr0, N, NUM2DBL(x)));
126
- break;
112
+ break;
127
113
  case T_ARRAY:
128
114
  n = RARRAY_LEN(x);
129
115
  val = rb_ary_new2(n);
@@ -131,7 +117,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
131
117
  rslt = gsl_poly_eval(ptr0, N, NUM2DBL(rb_ary_entry(x, i)));
132
118
  rb_ary_store(val, i, rb_float_new(rslt));
133
119
  }
134
- break;
120
+ break;
135
121
  default:
136
122
  if (rb_obj_is_kind_of(x, cgsl_vector)) {
137
123
  Data_Get_Struct(x, gsl_vector, vx);
@@ -143,19 +129,19 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
143
129
  } else if (rb_obj_is_kind_of(x, cgsl_matrix)) {
144
130
  Data_Get_Struct(x, gsl_matrix, mx);
145
131
  mnew = gsl_matrix_alloc(mx->size1, mx->size2);
146
- val = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
132
+ val = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
147
133
  n = mx->size1*mx->size2;
148
134
  ptr1 = mx->data;
149
135
  ptr2 = mnew->data;
150
136
  #ifdef HAVE_NARRAY_H
151
137
  } else if (NA_IsNArray(x)) {
138
+ int shape[1];
152
139
  shape[0] = NA_TOTAL(x);
153
140
  n = shape[0];
154
141
  val = na_make_object(NA_DFLOAT, 1, shape, CLASS_OF(x));
155
142
  ptr1 = NA_PTR_TYPE(x, double*);
156
- ptr2 = NA_PTR_TYPE(val, double*);
143
+ ptr2 = NA_PTR_TYPE(val, double*);
157
144
  #endif
158
- #ifdef GSL_1_11_LATER
159
145
  } else if (rb_obj_is_kind_of(x, cgsl_complex)) {
160
146
  Data_Get_Struct(x, gsl_complex, z);
161
147
  zz = gsl_poly_complex_eval(ptr0, N, *z);
@@ -166,15 +152,14 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
166
152
  Data_Get_Struct(x, gsl_vector_complex, vz);
167
153
  vznew = gsl_vector_complex_alloc(vz->size);
168
154
  for (i = 0; i < vz->size; i++) {
169
- zz = gsl_poly_complex_eval(ptr0, N, gsl_vector_complex_get(vz, i));
170
- gsl_vector_complex_set(vznew, i, zz);
155
+ zz = gsl_poly_complex_eval(ptr0, N, gsl_vector_complex_get(vz, i));
156
+ gsl_vector_complex_set(vznew, i, zz);
171
157
  }
172
158
  if (flag == 1) gsl_vector_free(v);
173
159
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vznew);
174
- #endif
175
160
  } else {
176
161
  rb_raise(rb_eTypeError, "Wrong argument type %s (A number, Array, GSL::Vector or NArray expected)",
177
- rb_class2name(CLASS_OF(a)));
162
+ rb_class2name(CLASS_OF(a)));
178
163
  }
179
164
  for (i = 0; i < n; i++) {
180
165
  ptr2[i] = gsl_poly_eval(ptr0, N, ptr1[i]);
@@ -183,7 +168,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
183
168
  if (flag == 1) gsl_vector_free(v);
184
169
  return val;
185
170
  }
186
- #ifdef GSL_1_11_LATER
171
+
187
172
  static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
188
173
  {
189
174
  gsl_vector_complex *coef = NULL, *zb, *vnew;
@@ -207,7 +192,6 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
207
192
  } else {
208
193
  rb_raise(rb_eTypeError, "rb_gsl_complex_poly_complex_solve: wrong argument type %s (GSL::Vector::Complex or Array expected)\n", rb_class2name(CLASS_OF(a)));
209
194
  }
210
-
211
195
  switch (TYPE(b)) {
212
196
  case T_FIXNUM:
213
197
  case T_BIGNUM:
@@ -238,8 +222,8 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
238
222
  vnew = gsl_vector_complex_alloc(zb->size);
239
223
  ret = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
240
224
  for (i = 0; i < zb->size; i++) {
241
- z = gsl_vector_complex_get(zb, i);
242
- gsl_vector_complex_set(vnew, i, gsl_complex_poly_complex_eval(zc, N, z));
225
+ z = gsl_vector_complex_get(zb, i);
226
+ gsl_vector_complex_set(vnew, i, gsl_complex_poly_complex_eval(zc, N, z));
243
227
  }
244
228
  } else {
245
229
  rb_raise(rb_eTypeError, "Wrong argument type %s.\n", rb_class2name(CLASS_OF(b)));
@@ -249,7 +233,6 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
249
233
  return ret;
250
234
  }
251
235
  #endif
252
- #endif
253
236
 
254
237
  static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
255
238
  {
@@ -261,15 +244,8 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
261
244
  VALUE x, ary;
262
245
  size_t i, j;
263
246
  #ifdef BASE_DOUBLE
264
- #ifdef HAVE_NARRAY_H
265
- struct NARRAY *na;
266
- double *ptr1, *ptr2;
267
- size_t n;
268
- #endif
269
- #ifdef GSL_1_11_LATER
270
247
  gsl_complex *z, zz;
271
248
  gsl_vector_complex *vz, *vznew;
272
- #endif
273
249
  #endif
274
250
 
275
251
  Data_Get_Struct(obj, GSL_TYPE(gsl_poly), p);
@@ -293,6 +269,9 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
293
269
  #ifdef BASE_DOUBLE
294
270
  #ifdef HAVE_NARRAY_H
295
271
  if (NA_IsNArray(xx)) {
272
+ struct NARRAY *na;
273
+ double *ptr1, *ptr2;
274
+ size_t n;
296
275
  GetNArray(xx, na);
297
276
  ptr1 = (double*) na->ptr;
298
277
  n = na->total;
@@ -307,21 +286,20 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
307
286
  Data_Get_Struct(xx, GSL_TYPE(gsl_vector), v);
308
287
  vnew = gsl_vector_alloc(v->size);
309
288
  for (i = 0; i < v->size; i++) {
310
- gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_vector,get)(v, i)));
289
+ gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_vector,get)(v, i)));
311
290
  }
312
291
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
313
292
  } else if (MAT_P(xx)) {
314
293
  Data_Get_Struct(xx, GSL_TYPE(gsl_matrix), m);
315
294
  mnew = gsl_matrix_alloc(m->size1, m->size2);
316
295
  for (i = 0; i < m->size1; i++) {
317
- for (j = 0; j < m->size2; j++) {
318
- gsl_matrix_set(mnew, i, j,
319
- FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_matrix,get)(m, i, j)));
320
- }
296
+ for (j = 0; j < m->size2; j++) {
297
+ gsl_matrix_set(mnew, i, j,
298
+ FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_matrix,get)(m, i, j)));
299
+ }
321
300
  }
322
301
  return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
323
302
  #ifdef BASE_DOUBLE
324
- #ifdef GSL_1_11_LATER
325
303
  } else if (rb_obj_is_kind_of(xx, cgsl_complex)) {
326
304
  Data_Get_Struct(xx, gsl_complex, z);
327
305
  zz = gsl_poly_complex_eval(p->data, p->size, *z);
@@ -331,11 +309,10 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
331
309
  Data_Get_Struct(xx, gsl_vector_complex, vz);
332
310
  vznew = gsl_vector_complex_alloc(vz->size);
333
311
  for (i = 0; i < vz->size; i++) {
334
- zz = gsl_poly_complex_eval(p->data, p->size, gsl_vector_complex_get(vz, i));
335
- gsl_vector_complex_set(vznew, i, zz);
312
+ zz = gsl_poly_complex_eval(p->data, p->size, gsl_vector_complex_get(vz, i));
313
+ gsl_vector_complex_set(vznew, i, zz);
336
314
  }
337
315
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vznew);
338
- #endif
339
316
  #endif
340
317
  } else {
341
318
  rb_raise(rb_eTypeError, "wrong argument type");
@@ -355,12 +332,6 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
355
332
  gsl_matrix *mnew = NULL;
356
333
  VALUE xx, x, ary;
357
334
  size_t i, j, size;
358
- #ifdef BASE_DOUBLE
359
- #ifdef HAVE_NARRAY_H
360
- struct NARRAY *na;
361
- double *ptr1, *ptr2;
362
- #endif
363
- #endif
364
335
  switch (argc) {
365
336
  case 2:
366
337
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_poly), p);
@@ -396,6 +367,8 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
396
367
  #ifdef BASE_DOUBLE
397
368
  #ifdef HAVE_NARRAY_H
398
369
  if (NA_IsNArray(xx)) {
370
+ struct NARRAY *na;
371
+ double *ptr1, *ptr2;
399
372
  GetNArray(xx, na);
400
373
  ptr1 = (double*) na->ptr;
401
374
  size = na->total;
@@ -410,17 +383,17 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
410
383
  Data_Get_Struct(xx, GSL_TYPE(gsl_vector), v);
411
384
  vnew = gsl_vector_alloc(v->size);
412
385
  for (i = 0; i < v->size; i++) {
413
- gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_vector,get)(v, i)));
386
+ gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_vector,get)(v, i)));
414
387
  }
415
388
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
416
389
  } else if (MAT_P(xx)) {
417
390
  Data_Get_Struct(xx, GSL_TYPE(gsl_matrix), m);
418
391
  mnew = gsl_matrix_alloc(m->size1, m->size2);
419
392
  for (i = 0; i < m->size1; i++) {
420
- for (j = 0; j < m->size2; j++) {
421
- gsl_matrix_set(mnew, i, j,
422
- FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_matrix,get)(m, i, j)));
423
- }
393
+ for (j = 0; j < m->size2; j++) {
394
+ gsl_matrix_set(mnew, i, j,
395
+ FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_matrix,get)(m, i, j)));
396
+ }
424
397
  }
425
398
  return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
426
399
  } else {
@@ -441,29 +414,29 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic)(int argc, VALUE *argv, VALUE
441
414
  switch (argc) {
442
415
  case 3:
443
416
  n = gsl_poly_solve_quadratic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
444
- &x0, &x1);
417
+ &x0, &x1);
445
418
  break;
446
419
  case 1:
447
420
  switch (TYPE(argv[0])) {
448
421
  case T_ARRAY:
449
- n = gsl_poly_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
450
- NUMCONV2(rb_ary_entry(argv[0], 1)),
451
- NUMCONV2(rb_ary_entry(argv[0], 2)),
452
- &x0, &x1);
422
+ n = gsl_poly_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
423
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
424
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
425
+ &x0, &x1);
453
426
  break;
454
427
  default:
455
428
  CHECK_VEC(argv[0]);
456
429
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_poly), v);
457
430
  n = gsl_poly_solve_quadratic(FUNCTION(gsl_vector,get)(v, 0),
458
- FUNCTION(gsl_vector,get)(v, 1),
459
- FUNCTION(gsl_vector,get)(v, 2),
460
- &x0, &x1);
431
+ FUNCTION(gsl_vector,get)(v, 1),
432
+ FUNCTION(gsl_vector,get)(v, 2),
433
+ &x0, &x1);
461
434
  break;
462
435
  }
463
436
  break;
464
437
  default:
465
- rb_raise(rb_eArgError,
466
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
438
+ rb_raise(rb_eArgError,
439
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
467
440
  break;
468
441
  }
469
442
  // If n == 0, we want to return an empty gsl_vector, but gsl_vectors can'y be
@@ -473,8 +446,8 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic)(int argc, VALUE *argv, VALUE
473
446
  }
474
447
  r = gsl_vector_alloc(n);
475
448
  switch(n) {
476
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
477
- case 1: gsl_vector_set(r, 0, x0);
449
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
450
+ case 1: gsl_vector_set(r, 0, x0);
478
451
  }
479
452
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
480
453
  }
@@ -487,31 +460,31 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic)(int argc, VALUE *argv
487
460
  int n;
488
461
  switch (argc) {
489
462
  case 3:
490
- n = gsl_poly_complex_solve_quadratic(NUMCONV2(argv[0]),
491
- NUMCONV2(argv[1]), NUMCONV2(argv[2]),
492
- &z0, &z1);
463
+ n = gsl_poly_complex_solve_quadratic(NUMCONV2(argv[0]),
464
+ NUMCONV2(argv[1]), NUMCONV2(argv[2]),
465
+ &z0, &z1);
493
466
  break;
494
467
  case 1:
495
468
  switch (TYPE(argv[0])) {
496
469
  case T_ARRAY:
497
- n = gsl_poly_complex_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
498
- NUMCONV2(rb_ary_entry(argv[0], 1)),
499
- NUMCONV2(rb_ary_entry(argv[0], 2)),
500
- &z0, &z1);
470
+ n = gsl_poly_complex_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
471
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
472
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
473
+ &z0, &z1);
501
474
  break;
502
475
  default:
503
476
  CHECK_VEC(argv[0]);
504
477
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
505
478
  n = gsl_poly_complex_solve_quadratic(FUNCTION(gsl_vector,get)(v, 0),
506
- FUNCTION(gsl_vector,get)(v, 1),
507
- FUNCTION(gsl_vector,get)(v, 2),
508
- &z0, &z1);
479
+ FUNCTION(gsl_vector,get)(v, 1),
480
+ FUNCTION(gsl_vector,get)(v, 2),
481
+ &z0, &z1);
509
482
  break;
510
483
  }
511
484
  break;
512
485
  default:
513
- rb_raise(rb_eArgError,
514
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
486
+ rb_raise(rb_eArgError,
487
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
515
488
  break;
516
489
  }
517
490
  // If n == 0, we want to return an empty gsl_vector, but gsl_vectors can'y be
@@ -521,8 +494,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic)(int argc, VALUE *argv
521
494
  }
522
495
  r = gsl_vector_complex_alloc(n);
523
496
  switch(n) {
524
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
525
- case 1: gsl_vector_complex_set(r, 0, z0);
497
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
498
+ case 1: gsl_vector_complex_set(r, 0, z0);
526
499
  }
527
500
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
528
501
  }
@@ -536,36 +509,36 @@ static VALUE FUNCTION(rb_gsl_poly,solve_cubic)(int argc, VALUE *argv, VALUE obj)
536
509
  switch (argc) {
537
510
  case 3:
538
511
  n = gsl_poly_solve_cubic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
539
- &x0, &x1, &x2);
512
+ &x0, &x1, &x2);
540
513
  break;
541
514
  case 1:
542
515
  switch (TYPE(argv[0])) {
543
516
  case T_ARRAY:
544
- n = gsl_poly_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
545
- NUMCONV2(rb_ary_entry(argv[0], 1)),
546
- NUMCONV2(rb_ary_entry(argv[0], 2)),
547
- &x0, &x1, &x2);
517
+ n = gsl_poly_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
518
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
519
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
520
+ &x0, &x1, &x2);
548
521
  break;
549
522
  default:
550
523
  CHECK_VEC(argv[0]);
551
524
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
552
525
  n = gsl_poly_solve_cubic(FUNCTION(gsl_vector,get)(v, 0),
553
- FUNCTION(gsl_vector,get)(v, 1),
554
- FUNCTION(gsl_vector,get)(v, 2),
555
- &x0, &x1, &x2);
526
+ FUNCTION(gsl_vector,get)(v, 1),
527
+ FUNCTION(gsl_vector,get)(v, 2),
528
+ &x0, &x1, &x2);
556
529
  break;
557
530
  }
558
531
  break;
559
532
  default:
560
- rb_raise(rb_eArgError,
561
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
533
+ rb_raise(rb_eArgError,
534
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
562
535
  break;
563
536
  }
564
537
  r = gsl_vector_alloc(n);
565
538
  switch(n) {
566
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
567
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
568
- case 1: gsl_vector_set(r, 0, x0);
539
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
540
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
541
+ case 1: gsl_vector_set(r, 0, x0);
569
542
  }
570
543
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
571
544
  }
@@ -579,36 +552,36 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_cubic)(int argc, VALUE *argv, VA
579
552
  switch (argc) {
580
553
  case 3:
581
554
  n = gsl_poly_complex_solve_cubic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
582
- &z0, &z1, &z2);
555
+ &z0, &z1, &z2);
583
556
  break;
584
557
  case 1:
585
558
  switch (TYPE(argv[0])) {
586
559
  case T_ARRAY:
587
- n = gsl_poly_complex_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
588
- NUMCONV2(rb_ary_entry(argv[0], 1)),
589
- NUMCONV2(rb_ary_entry(argv[0], 2)),
590
- &z0, &z1, &z2);
560
+ n = gsl_poly_complex_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
561
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
562
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
563
+ &z0, &z1, &z2);
591
564
  break;
592
565
  default:
593
566
  CHECK_VEC(argv[0]);
594
567
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
595
568
  n = gsl_poly_complex_solve_cubic(FUNCTION(gsl_vector,get)(v, 0),
596
- FUNCTION(gsl_vector,get)(v, 1),
597
- FUNCTION(gsl_vector,get)(v, 2),
598
- &z0, &z1, &z2);
569
+ FUNCTION(gsl_vector,get)(v, 1),
570
+ FUNCTION(gsl_vector,get)(v, 2),
571
+ &z0, &z1, &z2);
599
572
  break;
600
573
  }
601
574
  break;
602
575
  default:
603
- rb_raise(rb_eArgError,
604
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
576
+ rb_raise(rb_eArgError,
577
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
605
578
  break;
606
579
  }
607
580
  r = gsl_vector_complex_alloc(n);
608
581
  switch(n) {
609
- case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
610
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
611
- case 1: gsl_vector_complex_set(r, 0, z0);
582
+ case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
583
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
584
+ case 1: gsl_vector_complex_set(r, 0, z0);
612
585
  }
613
586
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
614
587
  }
@@ -623,40 +596,40 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quartic)(int argc, VALUE *argv, VALUE ob
623
596
  switch (argc) {
624
597
  case 4:
625
598
  n = gsl_poly_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
626
- NUMCONV2(argv[3]),
627
- &x0, &x1, &x2, &x3);
599
+ NUMCONV2(argv[3]),
600
+ &x0, &x1, &x2, &x3);
628
601
  break;
629
602
  case 1:
630
603
  switch (TYPE(argv[0])) {
631
604
  case T_ARRAY:
632
- n = gsl_poly_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
633
- NUMCONV2(rb_ary_entry(argv[0], 1)),
634
- NUMCONV2(rb_ary_entry(argv[0], 2)),
635
- NUMCONV2(rb_ary_entry(argv[0], 3)),
636
- &x0, &x1, &x2, &x3);
605
+ n = gsl_poly_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
606
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
607
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
608
+ NUMCONV2(rb_ary_entry(argv[0], 3)),
609
+ &x0, &x1, &x2, &x3);
637
610
  break;
638
611
  default:
639
612
  CHECK_VEC(argv[0]);
640
613
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
641
614
  n = gsl_poly_solve_quartic(FUNCTION(gsl_vector,get)(v, 0),
642
- FUNCTION(gsl_vector,get)(v, 1),
643
- FUNCTION(gsl_vector,get)(v, 2),
644
- FUNCTION(gsl_vector,get)(v, 3),
645
- &x0, &x1, &x2, &x3);
615
+ FUNCTION(gsl_vector,get)(v, 1),
616
+ FUNCTION(gsl_vector,get)(v, 2),
617
+ FUNCTION(gsl_vector,get)(v, 3),
618
+ &x0, &x1, &x2, &x3);
646
619
  break;
647
620
  }
648
621
  break;
649
622
  default:
650
- rb_raise(rb_eArgError,
651
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
623
+ rb_raise(rb_eArgError,
624
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
652
625
  break;
653
626
  }
654
627
  r = gsl_vector_alloc(n);
655
628
  switch(n) {
656
- case 4: gsl_vector_set(r, 3, x3); /* fall through */
657
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
658
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
659
- case 1: gsl_vector_set(r, 0, x0);
629
+ case 4: gsl_vector_set(r, 3, x3); /* fall through */
630
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
631
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
632
+ case 1: gsl_vector_set(r, 0, x0);
660
633
  }
661
634
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
662
635
  }
@@ -669,41 +642,41 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quartic)(int argc, VALUE *argv,
669
642
  int n;
670
643
  switch (argc) {
671
644
  case 4:
672
- n = gsl_poly_complex_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]),
673
- NUMCONV2(argv[2]), NUMCONV2(argv[3]),
674
- &z0, &z1, &z2, &z3);
645
+ n = gsl_poly_complex_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]),
646
+ NUMCONV2(argv[2]), NUMCONV2(argv[3]),
647
+ &z0, &z1, &z2, &z3);
675
648
  break;
676
649
  case 1:
677
650
  switch (TYPE(argv[0])) {
678
651
  case T_ARRAY:
679
- n = gsl_poly_complex_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
680
- NUMCONV2(rb_ary_entry(argv[0], 1)),
681
- NUMCONV2(rb_ary_entry(argv[0], 2)),
682
- NUMCONV2(rb_ary_entry(argv[0], 3)),
683
- &z0, &z1, &z2, &z3);
652
+ n = gsl_poly_complex_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
653
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
654
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
655
+ NUMCONV2(rb_ary_entry(argv[0], 3)),
656
+ &z0, &z1, &z2, &z3);
684
657
  break;
685
658
  default:
686
659
  CHECK_VEC(argv[0]);
687
660
  Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
688
661
  n = gsl_poly_complex_solve_quartic(FUNCTION(gsl_vector,get)(v, 0),
689
- FUNCTION(gsl_vector,get)(v, 1),
690
- FUNCTION(gsl_vector,get)(v, 2),
691
- FUNCTION(gsl_vector,get)(v, 3),
692
- &z0, &z1, &z2, &z3);
662
+ FUNCTION(gsl_vector,get)(v, 1),
663
+ FUNCTION(gsl_vector,get)(v, 2),
664
+ FUNCTION(gsl_vector,get)(v, 3),
665
+ &z0, &z1, &z2, &z3);
693
666
  break;
694
667
  }
695
668
  break;
696
669
  default:
697
- rb_raise(rb_eArgError,
698
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
670
+ rb_raise(rb_eArgError,
671
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
699
672
  break;
700
673
  }
701
674
  r = gsl_vector_complex_alloc(n);
702
675
  switch(n) {
703
- case 4: gsl_vector_complex_set(r, 0, z0); /* fall through */
704
- case 3: gsl_vector_complex_set(r, 1, z1); /* fall through */
705
- case 2: gsl_vector_complex_set(r, 2, z2); /* fall through */
706
- case 1: gsl_vector_complex_set(r, 3, z3);
676
+ case 4: gsl_vector_complex_set(r, 0, z0); /* fall through */
677
+ case 3: gsl_vector_complex_set(r, 1, z1); /* fall through */
678
+ case 2: gsl_vector_complex_set(r, 2, z2); /* fall through */
679
+ case 1: gsl_vector_complex_set(r, 3, z3);
707
680
  }
708
681
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
709
682
  }
@@ -809,20 +782,19 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic2)(VALUE obj)
809
782
  n = gsl_poly_solve_quadratic(a2, a1, a0, &x0, &x1);
810
783
  r = gsl_vector_alloc(n);
811
784
  switch(n) {
812
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
813
- case 1: gsl_vector_set(r, 0, x0);
785
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
786
+ case 1: gsl_vector_set(r, 0, x0);
814
787
  }
815
788
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
816
789
  } else {
817
790
  n = gsl_poly_complex_solve_quadratic(a2, a1, a0, &z0, &z1);
818
791
  r2 = gsl_vector_complex_alloc(n);
819
792
  switch(n) {
820
- case 2: gsl_vector_complex_set(r2, 1, z1); /* fall through */
821
- case 1: gsl_vector_complex_set(r2, 0, z0);
793
+ case 2: gsl_vector_complex_set(r2, 1, z1); /* fall through */
794
+ case 1: gsl_vector_complex_set(r2, 0, z0);
822
795
  }
823
796
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r2);
824
797
  }
825
-
826
798
  }
827
799
 
828
800
 
@@ -843,8 +815,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic2)(VALUE obj)
843
815
  n = gsl_poly_complex_solve_quadratic(a2, a1, a0, &z0, &z1);
844
816
  r = gsl_vector_complex_alloc(n);
845
817
  switch(n) {
846
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
847
- case 1: gsl_vector_complex_set(r, 0, z0);
818
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
819
+ case 1: gsl_vector_complex_set(r, 0, z0);
848
820
  }
849
821
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
850
822
  }
@@ -862,16 +834,16 @@ static VALUE FUNCTION(rb_gsl_poly,solve_cubic2)(VALUE obj)
862
834
  if (v->size < 4) {
863
835
  rb_raise(rb_eArgError, "the order of the object is less than 4.");
864
836
  }
865
- a3 = FUNCTION(gsl_vector,get)(v, 3);
837
+ a3 = FUNCTION(gsl_vector,get)(v, 3);
866
838
  a2 = FUNCTION(gsl_vector,get)(v, 2)/a3; /* coefficients */
867
839
  a1 = FUNCTION(gsl_vector,get)(v, 1)/a3;
868
840
  a0 = FUNCTION(gsl_vector,get)(v, 0)/a3;
869
841
  n = gsl_poly_solve_cubic(a2, a1, a0, &x0, &x1, &x2);
870
842
  r = gsl_vector_alloc(n);
871
843
  switch(n) {
872
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
873
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
874
- case 1: gsl_vector_set(r, 0, x0);
844
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
845
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
846
+ case 1: gsl_vector_set(r, 0, x0);
875
847
  }
876
848
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
877
849
  }
@@ -887,16 +859,16 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_cubic2)(VALUE obj)
887
859
  if (v->size < 4) {
888
860
  rb_raise(rb_eArgError, "the order of the object is less than 4.");
889
861
  }
890
- a3 = FUNCTION(gsl_vector,get)(v, 3);
862
+ a3 = FUNCTION(gsl_vector,get)(v, 3);
891
863
  a2 = FUNCTION(gsl_vector,get)(v, 2)/a3; /* coefficients */
892
864
  a1 = FUNCTION(gsl_vector,get)(v, 1)/a3;
893
865
  a0 = FUNCTION(gsl_vector,get)(v, 0)/a3;
894
866
  n = gsl_poly_complex_solve_cubic(a2, a1, a0, &z0, &z1, &z2);
895
867
  r = gsl_vector_complex_alloc(n);
896
868
  switch(n) {
897
- case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
898
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
899
- case 1: gsl_vector_complex_set(r, 0, z0);
869
+ case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
870
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
871
+ case 1: gsl_vector_complex_set(r, 0, z0);
900
872
  }
901
873
  return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
902
874
  }
@@ -915,8 +887,8 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quartic2)(VALUE obj)
915
887
  if (v->size < 5) {
916
888
  rb_raise(rb_eArgError, "the order of the object is less than 4.");
917
889
  }
918
- a4 = FUNCTION(gsl_vector,get)(v, 4);
919
- a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
890
+ a4 = FUNCTION(gsl_vector,get)(v, 4);
891
+ a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
920
892
  a2 = FUNCTION(gsl_vector,get)(v, 2)/a4; /* coefficients */
921
893
  a1 = FUNCTION(gsl_vector,get)(v, 1)/a4;
922
894
  a0 = FUNCTION(gsl_vector,get)(v, 0)/a4;
@@ -941,8 +913,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quartic2)(VALUE obj)
941
913
  if (v->size < 5) {
942
914
  rb_raise(rb_eArgError, "the order of the object is less than 4.");
943
915
  }
944
- a4 = FUNCTION(gsl_vector,get)(v, 4);
945
- a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
916
+ a4 = FUNCTION(gsl_vector,get)(v, 4);
917
+ a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
946
918
  a2 = FUNCTION(gsl_vector,get)(v, 2)/a4; /* coefficients */
947
919
  a1 = FUNCTION(gsl_vector,get)(v, 1)/a4;
948
920
  a0 = FUNCTION(gsl_vector,get)(v, 0)/a4;
@@ -978,7 +950,6 @@ VALUE FUNCTION(rb_gsl_poly,complex_solve2)(int argc, VALUE *argv, VALUE obj)
978
950
  for (i = 0; i < v->size; i++) {
979
951
  gsl_vector_set(a, i, FUNCTION(gsl_vector,get)(v, i));
980
952
  }
981
-
982
953
  if (argc == 1 && rb_obj_is_kind_of(argv[0], cgsl_poly_workspace)) {
983
954
  Data_Get_Struct(argv[0], gsl_poly_complex_workspace, w);
984
955
  flag = 0;
@@ -986,7 +957,6 @@ VALUE FUNCTION(rb_gsl_poly,complex_solve2)(int argc, VALUE *argv, VALUE obj)
986
957
  w = gsl_poly_complex_workspace_alloc(size);
987
958
  flag = 1;
988
959
  }
989
-
990
960
  /*status =*/ gsl_poly_complex_solve(a->data, size, w, z->data);
991
961
 
992
962
  r = gsl_vector_complex_alloc(size - 1);
@@ -1009,7 +979,7 @@ static VALUE rb_gsl_poly_int_to_f(VALUE obj)
1009
979
  size_t i;
1010
980
  Data_Get_Struct(obj, gsl_vector_int, vi);
1011
981
  v = gsl_vector_alloc(vi->size);
1012
- for (i = 0; i < v->size; i++)
982
+ for (i = 0; i < v->size; i++)
1013
983
  gsl_vector_set(v, i, (double) gsl_vector_int_get(vi, i));
1014
984
  return Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, v);
1015
985
  }
@@ -1023,7 +993,7 @@ static VALUE rb_gsl_poly_to_i(VALUE obj)
1023
993
  size_t i;
1024
994
  Data_Get_Struct(obj, gsl_vector, v);
1025
995
  vi = gsl_vector_int_alloc(v->size);
1026
- for (i = 0; i < v->size; i++)
996
+ for (i = 0; i < v->size; i++)
1027
997
  gsl_vector_int_set(vi, i, (int) gsl_vector_get(v, i));
1028
998
  return Data_Wrap_Struct(cgsl_poly_int, 0, gsl_vector_int_free, vi);
1029
999
  }
@@ -1035,8 +1005,6 @@ static VALUE FUNCTION(rb_gsl_poly,workspace_new)(VALUE klass, VALUE n)
1035
1005
  return Data_Wrap_Struct(klass, 0, gsl_poly_complex_workspace_free, w);
1036
1006
  }
1037
1007
 
1038
- #ifdef GSL_1_1_LATER
1039
-
1040
1008
  /* singleton method of the class Poly */
1041
1009
  static VALUE rb_gsl_poly_dd_init(VALUE obj, VALUE vxa, VALUE vya)
1042
1010
  {
@@ -1065,7 +1033,7 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
1065
1033
  case T_BIGNUM:
1066
1034
  case T_FLOAT:
1067
1035
  return rb_float_new(gsl_poly_dd_eval(dd->data, xa->data, dd->size,
1068
- NUM2DBL(xx)));
1036
+ NUM2DBL(xx)));
1069
1037
  break;
1070
1038
  case T_ARRAY:
1071
1039
  size = RARRAY_LEN(xx);
@@ -1073,9 +1041,9 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
1073
1041
  for (i = 0; i < size; i++) {
1074
1042
  x = rb_ary_entry(xx, i);
1075
1043
  Need_Float(x);
1076
- rb_ary_store(ary, i,
1077
- rb_float_new(gsl_poly_dd_eval(dd->data, xa->data,
1078
- dd->size, NUM2DBL(x))));
1044
+ rb_ary_store(ary, i,
1045
+ rb_float_new(gsl_poly_dd_eval(dd->data, xa->data,
1046
+ dd->size, NUM2DBL(x))));
1079
1047
  }
1080
1048
  return ary;
1081
1049
  break;
@@ -1085,9 +1053,9 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
1085
1053
  size = v->size;
1086
1054
  vnew = gsl_vector_alloc(v->size);
1087
1055
  for (i = 0; i < size; i++) {
1088
- gsl_vector_set(vnew, i,
1089
- gsl_poly_dd_eval(dd->data, xa->data,
1090
- dd->size, FUNCTION(gsl_vector,get)(v, i)));
1056
+ gsl_vector_set(vnew, i,
1057
+ gsl_poly_dd_eval(dd->data, xa->data,
1058
+ dd->size, FUNCTION(gsl_vector,get)(v, i)));
1091
1059
  }
1092
1060
  return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
1093
1061
  } else if (MAT_P(xx)) {
@@ -1095,11 +1063,11 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
1095
1063
  size = m->size1;
1096
1064
  mnew = gsl_matrix_alloc(m->size1, m->size2);
1097
1065
  for (i = 0; i < m->size1; i++) {
1098
- for (j = 0; j < m->size2; j++) {
1099
- gsl_matrix_set(mnew, i, j,
1100
- gsl_poly_dd_eval(dd->data, xa->data,
1101
- dd->size, gsl_matrix_get(m, i, j)));
1102
- }
1066
+ for (j = 0; j < m->size2; j++) {
1067
+ gsl_matrix_set(mnew, i, j,
1068
+ gsl_poly_dd_eval(dd->data, xa->data,
1069
+ dd->size, gsl_matrix_get(m, i, j)));
1070
+ }
1103
1071
  }
1104
1072
  return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
1105
1073
  } else {
@@ -1160,7 +1128,6 @@ static VALUE rb_gsl_poly_dd_taylor(int argc, VALUE *argv, VALUE obj)
1160
1128
  return Data_Wrap_Struct(cgsl_poly_taylor, 0, gsl_vector_free, c);
1161
1129
  }
1162
1130
 
1163
- #endif
1164
1131
  #endif
1165
1132
 
1166
1133
  static VALUE FUNCTION(rb_gsl_poly,order)(VALUE obj)
@@ -1171,7 +1138,7 @@ static VALUE FUNCTION(rb_gsl_poly,order)(VALUE obj)
1171
1138
  }
1172
1139
 
1173
1140
  int FUNCTION(gsl_poly,conv)(const BASE *a, size_t na, const BASE *b, size_t nb,
1174
- BASE *c, size_t *nc)
1141
+ BASE *c, size_t *nc)
1175
1142
  {
1176
1143
  BASE x;
1177
1144
  size_t i, j;
@@ -1192,7 +1159,7 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,conv_vector)(const GSL_TYPE(gsl_vector)
1192
1159
  {
1193
1160
  GSL_TYPE(gsl_vector) *vnew = NULL;
1194
1161
  size_t n, tmp;
1195
- if (v1->size == 1) {
1162
+ if (v1->size == 1) {
1196
1163
  vnew = FUNCTION(make_vector,clone)(v2);
1197
1164
  FUNCTION(gsl_vector,scale)(vnew, FUNCTION(gsl_vector,get)(v1, 0));
1198
1165
  return vnew;
@@ -1249,8 +1216,8 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,integ)(const GSL_TYPE(gsl_vector) *v)
1249
1216
  return vnew;
1250
1217
  }
1251
1218
 
1252
- GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector) *c, const GSL_TYPE(gsl_vector) *a,
1253
- GSL_TYPE(gsl_vector) **r)
1219
+ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector) *c, const GSL_TYPE(gsl_vector) *a,
1220
+ GSL_TYPE(gsl_vector) **r)
1254
1221
  {
1255
1222
  GSL_TYPE(gsl_vector) *vnew = NULL, *a2 = NULL, *c2 = NULL, *vtmp = NULL;
1256
1223
  GSL_TYPE(gsl_vector) *rtmp = NULL;
@@ -1270,8 +1237,8 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector
1270
1237
  jj = c2->size-1-k-j;
1271
1238
  //if (jj > k || jj < 0) continue;
1272
1239
  if (jj <= k) {
1273
- y = FUNCTION(gsl_vector,get)(a2, jj);
1274
- x -= y*z;
1240
+ y = FUNCTION(gsl_vector,get)(a2, jj);
1241
+ x -= y*z;
1275
1242
  }
1276
1243
  if (j == 0) break;
1277
1244
  }
@@ -1357,11 +1324,11 @@ VALUE FUNCTION(rb_gsl_poly,deconv)(VALUE obj, VALUE bb)
1357
1324
  }
1358
1325
  vnew = FUNCTION(gsl_poly,deconv_vector)(v, v2, &r);
1359
1326
  if (flag == 1) FUNCTION(gsl_vector,free)(v2);
1360
- if (FUNCTION(gsl_vector,isnull)(r))
1327
+ if (FUNCTION(gsl_vector,isnull)(r))
1361
1328
  return Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew);
1362
1329
  else
1363
1330
  return rb_ary_new3(2, Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew),
1364
- Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
1331
+ Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
1365
1332
  }
1366
1333
 
1367
1334
  static VALUE FUNCTION(rb_gsl_poly,reduce)(VALUE obj)
@@ -1410,7 +1377,7 @@ static VALUE FUNCTION(rb_gsl_poly,conv2)(VALUE klass, VALUE v1, VALUE v2)
1410
1377
  p3 = FUNCTION(gsl_poly,conv_vector)(p1, p2);
1411
1378
  if (flag1 == 1) FUNCTION(gsl_vector,free)(p1);
1412
1379
  if (flag2 == 1) FUNCTION(gsl_vector,free)(p2);
1413
- if (flag1 == 1 && flag2 == 1) {
1380
+ if (flag1 == 1 && flag2 == 1) {
1414
1381
  ary = rb_ary_new2(p3->size);
1415
1382
  for (i = 0; i < p3->size; i++)
1416
1383
  rb_ary_store(ary, i, C_TO_VALUE2(FUNCTION(gsl_vector,get)(p3, i)));
@@ -1431,15 +1398,15 @@ static VALUE FUNCTION(rb_gsl_poly,deconv2)(VALUE klass, VALUE v1, VALUE v2)
1431
1398
  vnew = FUNCTION(gsl_poly,deconv_vector)(p1, p2, &r);
1432
1399
  if (flag1 == 1) FUNCTION(gsl_vector,free)(p1);
1433
1400
  if (flag2 == 1) FUNCTION(gsl_vector,free)(p2);
1434
- if (FUNCTION(gsl_vector,isnull)(r))
1401
+ if (FUNCTION(gsl_vector,isnull)(r))
1435
1402
  return Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew);
1436
1403
  else
1437
1404
  return rb_ary_new3(2, Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew),
1438
- Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
1405
+ Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
1439
1406
  }
1440
1407
 
1441
- GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
1442
- const GSL_TYPE(gsl_poly) *b)
1408
+ GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
1409
+ const GSL_TYPE(gsl_poly) *b)
1443
1410
  {
1444
1411
  GSL_TYPE(gsl_poly) *c = NULL;
1445
1412
  const GSL_TYPE(gsl_poly) *longer;
@@ -1449,7 +1416,7 @@ GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
1449
1416
  longer = a;
1450
1417
  } else {
1451
1418
  c = FUNCTION(gsl_vector,alloc)(b->size);
1452
- longer = b;
1419
+ longer = b;
1453
1420
  }
1454
1421
  n = GSL_MIN(a->size, b->size);
1455
1422
  for (i = 0; i < n; i++) {
@@ -1521,7 +1488,7 @@ static VALUE FUNCTION(rb_gsl_poly,coerce)(VALUE obj, VALUE other)
1521
1488
  vb = FUNCTION(gsl_vector,calloc)(1);
1522
1489
  FUNCTION(gsl_vector,set)(vb, 0, (BASE) NUM2DBL(other));
1523
1490
  return rb_ary_new3(2, Data_Wrap_Struct(CLASS_OF(obj), 0, FUNCTION(gsl_vector,free), vb),
1524
- obj);
1491
+ obj);
1525
1492
  break;
1526
1493
  default:
1527
1494
  CHECK_VEC(other);
@@ -1548,10 +1515,10 @@ static VALUE FUNCTION(rb_gsl_poly,companion_matrix)(VALUE obj)
1548
1515
  size = p->size - 1;
1549
1516
  m = gsl_matrix_calloc(size, size);
1550
1517
  z = FUNCTION(gsl_vector,get)(p, size);
1551
- for (j = 0; j < size; j++)
1518
+ for (j = 0; j < size; j++)
1552
1519
  gsl_matrix_set(m, 0, size-j-1, -FUNCTION(gsl_vector,get)(p, j)/z);
1553
1520
  for (i = 1; i < size; i++) {
1554
- gsl_matrix_set(m, i, i-1, 1.0);
1521
+ gsl_matrix_set(m, i, i-1, 1.0);
1555
1522
  }
1556
1523
  return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, m);
1557
1524
  }
@@ -1580,7 +1547,7 @@ static VALUE rb_gsl_poly_fit(int argc, VALUE *argv, VALUE obj)
1580
1547
  double chisq, val;
1581
1548
  int status, flag = 0;
1582
1549
  VALUE vc, vcov;
1583
- if (argc != 3 && argc != 4)
1550
+ if (argc != 3 && argc != 4)
1584
1551
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
1585
1552
  x = &xx.vector;
1586
1553
  y = &yy.vector;
@@ -1621,7 +1588,7 @@ static VALUE rb_gsl_poly_wfit(int argc, VALUE *argv, VALUE obj)
1621
1588
  double chisq, val;
1622
1589
  int status, flag = 0;
1623
1590
  VALUE vc, vcov;
1624
- if (argc != 4 && argc != 5)
1591
+ if (argc != 4 && argc != 5)
1625
1592
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 4 or 5)", argc);
1626
1593
  Data_Get_Vector(argv[0], x);
1627
1594
  Data_Get_Vector(argv[1], w);
@@ -1654,17 +1621,11 @@ static VALUE rb_gsl_poly_wfit(int argc, VALUE *argv, VALUE obj)
1654
1621
  #endif
1655
1622
 
1656
1623
  #ifdef BASE_DOUBLE
1657
- #ifdef GSL_1_13_LATER
1658
1624
  static VALUE rb_gsl_poly_eval_derivs_singleton(int argc, VALUE *argv, VALUE klass)
1659
1625
  {
1660
1626
  VALUE ary;
1661
1627
  gsl_vector *v = NULL, *v2 = NULL;
1662
1628
  size_t i, lenc, lenres;
1663
- #ifdef HAVE_NARRAY_H
1664
- struct NARRAY *na;
1665
- double *ptr1, *ptr2;
1666
- int shape[1];
1667
- #endif
1668
1629
 
1669
1630
  if (argc < 2) rb_raise(rb_eArgError, "Wrong number of arguments (%d for >= 2)", argc);
1670
1631
  if (rb_obj_is_kind_of(argv[0], rb_cArray)) {
@@ -1696,6 +1657,9 @@ static VALUE rb_gsl_poly_eval_derivs_singleton(int argc, VALUE *argv, VALUE klas
1696
1657
  }
1697
1658
  #ifdef HAVE_NARRAY_H
1698
1659
  if (NA_IsNArray(argv[0])) {
1660
+ struct NARRAY *na;
1661
+ double *ptr1, *ptr2;
1662
+ int shape[1];
1699
1663
  GetNArray(argv[0], na);
1700
1664
  ptr1 = (double*) na->ptr;
1701
1665
  lenc = na->total;
@@ -1731,7 +1695,6 @@ static VALUE rb_gsl_poly_eval_derivs(int argc, VALUE *argv, VALUE obj)
1731
1695
  return Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, v2);
1732
1696
  }
1733
1697
  #endif
1734
- #endif
1735
1698
 
1736
1699
  void FUNCTION(Init_gsl_poly,init)(VALUE module)
1737
1700
  {
@@ -1742,78 +1705,78 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
1742
1705
 
1743
1706
  cgsl_poly_workspace = rb_define_class_under(cgsl_poly, "Workspace", cGSL_Object);
1744
1707
  mgsl_poly_complex = rb_define_module_under(cgsl_poly, "Complex");
1745
- cgsl_poly_complex_workspace = rb_define_class_under(mgsl_poly_complex,
1746
- "Workspace", cGSL_Object);
1747
- rb_define_singleton_method(cgsl_poly_workspace, "alloc",
1748
- rb_gsl_poly_workspace_new, 1);
1708
+ cgsl_poly_complex_workspace = rb_define_class_under(mgsl_poly_complex,
1709
+ "Workspace", cGSL_Object);
1710
+ rb_define_singleton_method(cgsl_poly_workspace, "alloc",
1711
+ rb_gsl_poly_workspace_new, 1);
1749
1712
  rb_define_singleton_method(cgsl_poly_complex_workspace, "alloc",
1750
- rb_gsl_poly_workspace_new, 1);
1713
+ rb_gsl_poly_workspace_new, 1);
1751
1714
 
1752
- rb_define_singleton_method(mgsl_poly_complex, "solve_quadratic",
1753
- FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
1715
+ rb_define_singleton_method(mgsl_poly_complex, "solve_quadratic",
1716
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
1754
1717
  rb_define_singleton_method(mgsl_poly_complex, "solve_cubic",
1755
- FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
1718
+ FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
1756
1719
  #ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
1757
1720
  rb_define_singleton_method(mgsl_poly_complex, "solve_quartic",
1758
- FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
1721
+ FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
1759
1722
  #endif
1760
1723
 
1761
1724
  rb_define_singleton_method(mgsl_poly_complex, "solve",
1762
- FUNCTION(rb_gsl_poly,complex_solve), -1);
1763
- rb_define_singleton_method(mgsl_poly_complex, "roots",
1764
- FUNCTION(rb_gsl_poly,complex_solve), -1);
1725
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
1726
+ rb_define_singleton_method(mgsl_poly_complex, "roots",
1727
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
1765
1728
  #endif
1766
1729
 
1767
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
1768
- FUNCTION(rb_gsl_poly,solve_quadratic), -1);
1769
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_cubic",
1770
- FUNCTION(rb_gsl_poly,solve_cubic), -1);
1730
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
1731
+ FUNCTION(rb_gsl_poly,solve_quadratic), -1);
1732
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_cubic",
1733
+ FUNCTION(rb_gsl_poly,solve_cubic), -1);
1771
1734
 
1772
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
1773
- FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
1774
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
1775
- FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
1735
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
1736
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
1737
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
1738
+ FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
1776
1739
  #ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
1777
1740
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quartic",
1778
- FUNCTION(rb_gsl_poly,solve_quartic), -1);
1741
+ FUNCTION(rb_gsl_poly,solve_quartic), -1);
1779
1742
 
1780
1743
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
1781
- FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
1744
+ FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
1782
1745
  #endif
1783
1746
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve",
1784
- FUNCTION(rb_gsl_poly,complex_solve), -1);
1747
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
1785
1748
 
1786
1749
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve",
1787
- FUNCTION(rb_gsl_poly,complex_solve), -1);
1788
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "roots",
1789
- FUNCTION(rb_gsl_poly,complex_solve), -1);
1750
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
1751
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "roots",
1752
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
1790
1753
 
1791
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "eval",
1792
- FUNCTION(rb_gsl_poly,eval2), -1);
1754
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "eval",
1755
+ FUNCTION(rb_gsl_poly,eval2), -1);
1793
1756
 
1794
1757
  rb_define_method(GSL_TYPE(cgsl_poly), "eval",
1795
- FUNCTION(rb_gsl_poly,eval), 1);
1758
+ FUNCTION(rb_gsl_poly,eval), 1);
1796
1759
  rb_define_alias(GSL_TYPE(cgsl_poly), "at", "eval");
1797
1760
 
1798
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
1799
- FUNCTION(rb_gsl_poly,solve_quadratic2), 0);
1800
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
1801
- FUNCTION(rb_gsl_poly,complex_solve_quadratic2), 0);
1761
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
1762
+ FUNCTION(rb_gsl_poly,solve_quadratic2), 0);
1763
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
1764
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic2), 0);
1802
1765
 
1803
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_cubic",
1804
- FUNCTION(rb_gsl_poly,solve_cubic2), 0);
1805
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
1806
- FUNCTION(rb_gsl_poly,complex_solve_cubic2), 0);
1766
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_cubic",
1767
+ FUNCTION(rb_gsl_poly,solve_cubic2), 0);
1768
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
1769
+ FUNCTION(rb_gsl_poly,complex_solve_cubic2), 0);
1807
1770
 
1808
1771
  #ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
1809
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_quartic",
1810
- FUNCTION(rb_gsl_poly,solve_quartic2), 0);
1811
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
1812
- FUNCTION(rb_gsl_poly,complex_solve_quartic2), 0);
1772
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_quartic",
1773
+ FUNCTION(rb_gsl_poly,solve_quartic2), 0);
1774
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
1775
+ FUNCTION(rb_gsl_poly,complex_solve_quartic2), 0);
1813
1776
  #endif
1814
1777
 
1815
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve",
1816
- FUNCTION(rb_gsl_poly,complex_solve2), -1);
1778
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve",
1779
+ FUNCTION(rb_gsl_poly,complex_solve2), -1);
1817
1780
  rb_define_alias(GSL_TYPE(cgsl_poly), "solve", "complex_solve");
1818
1781
  rb_define_alias(GSL_TYPE(cgsl_poly), "roots", "complex_solve");
1819
1782
 
@@ -1824,18 +1787,14 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
1824
1787
  #ifdef BASE_DOUBLE
1825
1788
  // rb_define_singleton_method(cgsl_poly, "eval", rb_gsl_poly_eval_singleton, 2);
1826
1789
  rb_define_method(cgsl_poly, "to_i", rb_gsl_poly_to_i, 0);
1827
- #ifdef GSL_1_11_LATER
1828
1790
  rb_define_singleton_method(cgsl_poly, "complex_eval", rb_gsl_poly_eval_singleton, 2);
1829
1791
  rb_define_method(cgsl_vector_complex, "eval", rb_gsl_complex_poly_complex_eval, 1);
1830
- #endif
1831
- #ifdef GSL_1_1_LATER
1832
1792
  cgsl_poly_dd = rb_define_class_under(cgsl_poly, "DividedDifference", cgsl_poly);
1833
1793
  cgsl_poly_taylor = rb_define_class_under(cgsl_poly, "Taylor", cgsl_poly);
1834
1794
  rb_define_singleton_method(cgsl_poly, "dd_init", rb_gsl_poly_dd_init, 2);
1835
1795
 
1836
1796
  rb_define_method(cgsl_poly_dd, "eval",rb_gsl_poly_dd_eval, 2);
1837
1797
  rb_define_method(cgsl_poly_dd, "taylor", rb_gsl_poly_dd_taylor, -1);
1838
- #endif
1839
1798
  #endif
1840
1799
 
1841
1800
  rb_define_method(GSL_TYPE(cgsl_poly), "order", FUNCTION(rb_gsl_poly,order), 0);
@@ -1844,15 +1803,15 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
1844
1803
  rb_define_method(GSL_TYPE(cgsl_poly), "conv", FUNCTION(rb_gsl_poly,conv), 1);
1845
1804
  rb_define_alias(GSL_TYPE(cgsl_poly), "*", "conv");
1846
1805
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "conv",
1847
- FUNCTION(rb_gsl_poly,conv2), 2);
1806
+ FUNCTION(rb_gsl_poly,conv2), 2);
1848
1807
 
1849
1808
  rb_define_method(GSL_TYPE(cgsl_poly), "deconv",
1850
- FUNCTION(rb_gsl_poly,deconv), 1);
1809
+ FUNCTION(rb_gsl_poly,deconv), 1);
1851
1810
  rb_define_singleton_method(GSL_TYPE(cgsl_poly), "deconv",
1852
- FUNCTION(rb_gsl_poly,deconv2), 2);
1811
+ FUNCTION(rb_gsl_poly,deconv2), 2);
1853
1812
 
1854
- rb_define_method(GSL_TYPE(cgsl_poly), "reduce",
1855
- FUNCTION(rb_gsl_poly,reduce), 1);
1813
+ rb_define_method(GSL_TYPE(cgsl_poly), "reduce",
1814
+ FUNCTION(rb_gsl_poly,reduce), 1);
1856
1815
  rb_define_method(GSL_TYPE(cgsl_poly), "deriv", FUNCTION(rb_gsl_poly,deriv), 1);
1857
1816
  rb_define_method(GSL_TYPE(cgsl_poly), "integ", FUNCTION(rb_gsl_poly,integ), 1);
1858
1817
 
@@ -1866,29 +1825,27 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
1866
1825
  rb_define_method(GSL_TYPE(cgsl_poly), "-@", FUNCTION(rb_gsl_poly,uminus), 0);
1867
1826
  rb_define_method(GSL_TYPE(cgsl_poly), "+@", FUNCTION(rb_gsl_poly,uplus), 0);
1868
1827
 
1869
- rb_define_method(GSL_TYPE(cgsl_poly), "coerce",
1870
- FUNCTION(rb_gsl_poly,coerce), 1);
1828
+ rb_define_method(GSL_TYPE(cgsl_poly), "coerce",
1829
+ FUNCTION(rb_gsl_poly,coerce), 1);
1871
1830
  rb_define_method(GSL_TYPE(cgsl_poly), "to_gv", FUNCTION(rb_gsl_poly,to_gv), 0);
1872
1831
  rb_define_alias(GSL_TYPE(cgsl_poly), "to_v", "to_gv");
1873
1832
 
1874
- rb_define_method(GSL_TYPE(cgsl_poly), "companion_matrix",
1875
- FUNCTION(rb_gsl_poly,companion_matrix), 0);
1833
+ rb_define_method(GSL_TYPE(cgsl_poly), "companion_matrix",
1834
+ FUNCTION(rb_gsl_poly,companion_matrix), 0);
1876
1835
  rb_define_alias(GSL_TYPE(cgsl_poly), "compan", "companion_matrix");
1877
1836
 
1878
1837
  /*****/
1879
- rb_define_method(GSL_TYPE(cgsl_poly), "info",
1880
- FUNCTION(rb_gsl_poly,info), 0);
1838
+ rb_define_method(GSL_TYPE(cgsl_poly), "info",
1839
+ FUNCTION(rb_gsl_poly,info), 0);
1881
1840
 
1882
1841
  #ifdef BASE_DOUBLE
1883
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "fit",
1884
- FUNCTION(rb_gsl_poly,fit), -1);
1885
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "wfit",
1886
- FUNCTION(rb_gsl_poly,wfit), -1);
1842
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "fit",
1843
+ FUNCTION(rb_gsl_poly,fit), -1);
1844
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "wfit",
1845
+ FUNCTION(rb_gsl_poly,wfit), -1);
1887
1846
 
1888
- #ifdef GSL_1_13_LATER
1889
1847
  rb_define_singleton_method(cgsl_poly, "eval_derivs", rb_gsl_poly_eval_derivs_singleton, -1);
1890
1848
  rb_define_method(cgsl_vector, "eval_derivs", rb_gsl_poly_eval_derivs, -1);
1891
- #endif
1892
1849
 
1893
1850
  #endif
1894
1851
  }