gsl 1.12.109 → 1.14.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (511) hide show
  1. data/AUTHORS +6 -0
  2. data/COPYING +339 -0
  3. data/ChangeLog +556 -0
  4. data/{README.rdoc → README} +3 -0
  5. data/Rakefile +54 -10
  6. data/THANKS +17 -0
  7. data/VERSION +1 -2
  8. data/examples/alf/alf.gp +15 -0
  9. data/examples/alf/alf.rb +32 -0
  10. data/examples/blas/blas.rb +13 -0
  11. data/examples/blas/dnrm2.rb +16 -0
  12. data/examples/blas/level1.rb +81 -0
  13. data/examples/blas/level2.rb +11 -0
  14. data/examples/blas/level3.rb +12 -0
  15. data/examples/bspline.rb +57 -0
  16. data/examples/cdf.rb +16 -0
  17. data/examples/cheb.rb +21 -0
  18. data/examples/combination.rb +23 -0
  19. data/examples/complex/RC-lpf.rb +47 -0
  20. data/examples/complex/add.rb +36 -0
  21. data/examples/complex/coerce.rb +14 -0
  22. data/examples/complex/complex.rb +25 -0
  23. data/examples/complex/fpmi.rb +70 -0
  24. data/examples/complex/functions.rb +77 -0
  25. data/examples/complex/michelson.rb +36 -0
  26. data/examples/complex/mul.rb +28 -0
  27. data/examples/complex/oscillator.rb +17 -0
  28. data/examples/complex/set.rb +37 -0
  29. data/examples/const/physconst.rb +151 -0
  30. data/examples/const/travel.rb +45 -0
  31. data/examples/deriv/demo.rb +13 -0
  32. data/examples/deriv/deriv.rb +36 -0
  33. data/examples/deriv/diff.rb +35 -0
  34. data/examples/dht.rb +42 -0
  35. data/examples/dirac.rb +56 -0
  36. data/examples/eigen/eigen.rb +34 -0
  37. data/examples/eigen/herm.rb +22 -0
  38. data/examples/eigen/narray.rb +9 -0
  39. data/examples/eigen/nonsymm.rb +37 -0
  40. data/examples/eigen/nonsymmv.rb +43 -0
  41. data/examples/eigen/qhoscillator.gp +35 -0
  42. data/examples/eigen/qhoscillator.rb +90 -0
  43. data/examples/eigen/vander.rb +41 -0
  44. data/examples/fft/fft.rb +17 -0
  45. data/examples/fft/fft2.rb +17 -0
  46. data/examples/fft/forward.rb +25 -0
  47. data/examples/fft/forward2.rb +26 -0
  48. data/examples/fft/radix2.rb +18 -0
  49. data/examples/fft/real-halfcomplex.rb +33 -0
  50. data/examples/fft/real-halfcomplex2.rb +30 -0
  51. data/examples/fft/realradix2.rb +19 -0
  52. data/examples/fft/sunspot.dat +256 -0
  53. data/examples/fft/sunspot.rb +16 -0
  54. data/examples/fit/expdata.dat +20 -0
  55. data/examples/fit/expfit.rb +31 -0
  56. data/examples/fit/gaussfit.rb +29 -0
  57. data/examples/fit/gaussian_2peaks.rb +34 -0
  58. data/examples/fit/hillfit.rb +40 -0
  59. data/examples/fit/lognormal.rb +26 -0
  60. data/examples/fit/lorentzfit.rb +22 -0
  61. data/examples/fit/multifit.rb +72 -0
  62. data/examples/fit/ndlinear.rb +133 -0
  63. data/examples/fit/nonlinearfit.rb +89 -0
  64. data/examples/fit/plot.gp +36 -0
  65. data/examples/fit/polyfit.rb +9 -0
  66. data/examples/fit/powerfit.rb +21 -0
  67. data/examples/fit/sigmoidfit.rb +40 -0
  68. data/examples/fit/sinfit.rb +22 -0
  69. data/examples/fit/wlinear.rb +46 -0
  70. data/examples/fresnel.rb +11 -0
  71. data/examples/function/function.rb +36 -0
  72. data/examples/function/log.rb +7 -0
  73. data/examples/function/min.rb +33 -0
  74. data/examples/function/sin.rb +10 -0
  75. data/examples/function/synchrotron.rb +18 -0
  76. data/examples/gallery/butterfly.rb +7 -0
  77. data/examples/gallery/cayley.rb +12 -0
  78. data/examples/gallery/cornu.rb +23 -0
  79. data/examples/gallery/eight.rb +11 -0
  80. data/examples/gallery/koch.rb +40 -0
  81. data/examples/gallery/lemniscate.rb +11 -0
  82. data/examples/gallery/polar.rb +11 -0
  83. data/examples/gallery/rgplot/cossin.rb +35 -0
  84. data/examples/gallery/rgplot/rgplot.replaced +0 -0
  85. data/examples/gallery/rgplot/roesller.rb +55 -0
  86. data/examples/gallery/roesller.rb +39 -0
  87. data/examples/gallery/scarabaeus.rb +14 -0
  88. data/examples/histogram/cauchy.rb +27 -0
  89. data/examples/histogram/cauchy.sh +2 -0
  90. data/examples/histogram/exponential.rb +19 -0
  91. data/examples/histogram/gauss.rb +16 -0
  92. data/examples/histogram/gsl-histogram.rb +40 -0
  93. data/examples/histogram/histo2d.rb +31 -0
  94. data/examples/histogram/histo3d.rb +34 -0
  95. data/examples/histogram/histogram-pdf.rb +27 -0
  96. data/examples/histogram/histogram.rb +26 -0
  97. data/examples/histogram/integral.rb +28 -0
  98. data/examples/histogram/poisson.rb +27 -0
  99. data/examples/histogram/power.rb +25 -0
  100. data/examples/histogram/rebin.rb +17 -0
  101. data/examples/histogram/smp.dat +5 -0
  102. data/examples/histogram/xexp.rb +21 -0
  103. data/examples/integration/ahmed.rb +21 -0
  104. data/examples/integration/cosmology.rb +75 -0
  105. data/examples/integration/friedmann.gp +16 -0
  106. data/examples/integration/friedmann.rb +35 -0
  107. data/examples/integration/gamma-zeta.rb +35 -0
  108. data/examples/integration/integration.rb +22 -0
  109. data/examples/integration/qag.rb +8 -0
  110. data/examples/integration/qag2.rb +14 -0
  111. data/examples/integration/qag3.rb +8 -0
  112. data/examples/integration/qagi.rb +28 -0
  113. data/examples/integration/qagi2.rb +49 -0
  114. data/examples/integration/qagiu.rb +29 -0
  115. data/examples/integration/qagp.rb +20 -0
  116. data/examples/integration/qags.rb +14 -0
  117. data/examples/integration/qawc.rb +18 -0
  118. data/examples/integration/qawf.rb +41 -0
  119. data/examples/integration/qawo.rb +29 -0
  120. data/examples/integration/qaws.rb +30 -0
  121. data/examples/integration/qng.rb +17 -0
  122. data/examples/interp/demo.gp +20 -0
  123. data/examples/interp/demo.rb +45 -0
  124. data/examples/interp/interp.rb +37 -0
  125. data/examples/interp/points +10 -0
  126. data/examples/interp/spline.rb +20 -0
  127. data/examples/jacobi/deriv.rb +40 -0
  128. data/examples/jacobi/integrate.rb +34 -0
  129. data/examples/jacobi/interp.rb +43 -0
  130. data/examples/jacobi/jacobi.rb +11 -0
  131. data/examples/linalg/HH.rb +15 -0
  132. data/examples/linalg/HH_narray.rb +13 -0
  133. data/examples/linalg/LQ_solve.rb +73 -0
  134. data/examples/linalg/LU.rb +84 -0
  135. data/examples/linalg/LU2.rb +31 -0
  136. data/examples/linalg/LU_narray.rb +24 -0
  137. data/examples/linalg/PTLQ.rb +47 -0
  138. data/examples/linalg/QR.rb +18 -0
  139. data/examples/linalg/QRPT.rb +47 -0
  140. data/examples/linalg/QR_solve.rb +78 -0
  141. data/examples/linalg/QR_solve_narray.rb +13 -0
  142. data/examples/linalg/SV.rb +16 -0
  143. data/examples/linalg/SV_narray.rb +12 -0
  144. data/examples/linalg/SV_solve.rb +49 -0
  145. data/examples/linalg/chol.rb +29 -0
  146. data/examples/linalg/chol_narray.rb +15 -0
  147. data/examples/linalg/complex.rb +57 -0
  148. data/examples/linalg/invert_narray.rb +10 -0
  149. data/examples/math/const.rb +67 -0
  150. data/examples/math/elementary.rb +35 -0
  151. data/examples/math/functions.rb +41 -0
  152. data/examples/math/inf_nan.rb +34 -0
  153. data/examples/math/minmax.rb +22 -0
  154. data/examples/math/power.rb +18 -0
  155. data/examples/math/test.rb +31 -0
  156. data/examples/matrix/a.dat +0 -0
  157. data/examples/matrix/add.rb +45 -0
  158. data/examples/matrix/b.dat +4 -0
  159. data/examples/matrix/cat.rb +31 -0
  160. data/examples/matrix/colvectors.rb +24 -0
  161. data/examples/matrix/complex.rb +41 -0
  162. data/examples/matrix/det.rb +29 -0
  163. data/examples/matrix/diagonal.rb +23 -0
  164. data/examples/matrix/get_all.rb +159 -0
  165. data/examples/matrix/hilbert.rb +31 -0
  166. data/examples/matrix/iterator.rb +19 -0
  167. data/examples/matrix/matrix.rb +57 -0
  168. data/examples/matrix/minmax.rb +53 -0
  169. data/examples/matrix/mul.rb +39 -0
  170. data/examples/matrix/rand.rb +20 -0
  171. data/examples/matrix/read.rb +29 -0
  172. data/examples/matrix/rowcol.rb +47 -0
  173. data/examples/matrix/set.rb +41 -0
  174. data/examples/matrix/set_all.rb +100 -0
  175. data/examples/matrix/view.rb +32 -0
  176. data/examples/matrix/view_all.rb +148 -0
  177. data/examples/matrix/write.rb +23 -0
  178. data/examples/min.rb +29 -0
  179. data/examples/monte/miser.rb +47 -0
  180. data/examples/monte/monte.rb +47 -0
  181. data/examples/monte/plain.rb +47 -0
  182. data/examples/monte/vegas.rb +46 -0
  183. data/examples/multimin/bundle.rb +66 -0
  184. data/examples/multimin/cqp.rb +109 -0
  185. data/examples/multimin/fdfminimizer.rb +40 -0
  186. data/examples/multimin/fminimizer.rb +41 -0
  187. data/examples/multiroot/demo.rb +36 -0
  188. data/examples/multiroot/fdfsolver.rb +50 -0
  189. data/examples/multiroot/fsolver.rb +33 -0
  190. data/examples/multiroot/fsolver2.rb +32 -0
  191. data/examples/multiroot/fsolver3.rb +26 -0
  192. data/examples/narray/histogram.rb +14 -0
  193. data/examples/narray/mandel.rb +27 -0
  194. data/examples/narray/narray.rb +28 -0
  195. data/examples/narray/narray2.rb +44 -0
  196. data/examples/narray/sf.rb +26 -0
  197. data/examples/ntuple/create.rb +17 -0
  198. data/examples/ntuple/project.rb +31 -0
  199. data/examples/odeiv/binarysystem.gp +23 -0
  200. data/examples/odeiv/binarysystem.rb +104 -0
  201. data/examples/odeiv/demo.gp +24 -0
  202. data/examples/odeiv/demo.rb +69 -0
  203. data/examples/odeiv/demo2.gp +26 -0
  204. data/examples/odeiv/duffing.rb +45 -0
  205. data/examples/odeiv/frei1.rb +109 -0
  206. data/examples/odeiv/frei2.rb +76 -0
  207. data/examples/odeiv/legendre.rb +52 -0
  208. data/examples/odeiv/odeiv.rb +32 -0
  209. data/examples/odeiv/odeiv2.rb +45 -0
  210. data/examples/odeiv/oscillator.rb +42 -0
  211. data/examples/odeiv/sedov.rb +97 -0
  212. data/examples/odeiv/whitedwarf.gp +40 -0
  213. data/examples/odeiv/whitedwarf.rb +158 -0
  214. data/examples/ool/conmin.rb +100 -0
  215. data/examples/ool/gencan.rb +99 -0
  216. data/examples/ool/pgrad.rb +100 -0
  217. data/examples/ool/spg.rb +100 -0
  218. data/examples/pdf/bernoulli.rb +5 -0
  219. data/examples/pdf/beta.rb +7 -0
  220. data/examples/pdf/binomiral.rb +10 -0
  221. data/examples/pdf/cauchy.rb +6 -0
  222. data/examples/pdf/chisq.rb +8 -0
  223. data/examples/pdf/exponential.rb +7 -0
  224. data/examples/pdf/exppow.rb +6 -0
  225. data/examples/pdf/fdist.rb +7 -0
  226. data/examples/pdf/flat.rb +7 -0
  227. data/examples/pdf/gamma.rb +8 -0
  228. data/examples/pdf/gauss-tail.rb +5 -0
  229. data/examples/pdf/gauss.rb +6 -0
  230. data/examples/pdf/geometric.rb +5 -0
  231. data/examples/pdf/gumbel.rb +6 -0
  232. data/examples/pdf/hypergeometric.rb +11 -0
  233. data/examples/pdf/landau.rb +5 -0
  234. data/examples/pdf/laplace.rb +7 -0
  235. data/examples/pdf/logarithmic.rb +5 -0
  236. data/examples/pdf/logistic.rb +6 -0
  237. data/examples/pdf/lognormal.rb +6 -0
  238. data/examples/pdf/neg-binomiral.rb +10 -0
  239. data/examples/pdf/pareto.rb +7 -0
  240. data/examples/pdf/pascal.rb +10 -0
  241. data/examples/pdf/poisson.rb +5 -0
  242. data/examples/pdf/rayleigh-tail.rb +6 -0
  243. data/examples/pdf/rayleigh.rb +6 -0
  244. data/examples/pdf/tdist.rb +6 -0
  245. data/examples/pdf/weibull.rb +8 -0
  246. data/examples/permutation/ex1.rb +22 -0
  247. data/examples/permutation/permutation.rb +16 -0
  248. data/examples/poly/bell.rb +6 -0
  249. data/examples/poly/bessel.rb +6 -0
  250. data/examples/poly/cheb.rb +6 -0
  251. data/examples/poly/cheb_II.rb +6 -0
  252. data/examples/poly/cubic.rb +9 -0
  253. data/examples/poly/demo.rb +20 -0
  254. data/examples/poly/eval.rb +28 -0
  255. data/examples/poly/eval_derivs.rb +14 -0
  256. data/examples/poly/fit.rb +21 -0
  257. data/examples/poly/hermite.rb +6 -0
  258. data/examples/poly/poly.rb +13 -0
  259. data/examples/poly/quadratic.rb +25 -0
  260. data/examples/random/diffusion.rb +34 -0
  261. data/examples/random/gaussian.rb +9 -0
  262. data/examples/random/generator.rb +27 -0
  263. data/examples/random/hdsobol.rb +21 -0
  264. data/examples/random/poisson.rb +9 -0
  265. data/examples/random/qrng.rb +19 -0
  266. data/examples/random/randomwalk.rb +37 -0
  267. data/examples/random/randomwalk2d.rb +19 -0
  268. data/examples/random/rayleigh.rb +36 -0
  269. data/examples/random/rng.rb +33 -0
  270. data/examples/random/rngextra.rb +14 -0
  271. data/examples/roots/bisection.rb +25 -0
  272. data/examples/roots/brent.rb +43 -0
  273. data/examples/roots/demo.rb +30 -0
  274. data/examples/roots/newton.rb +46 -0
  275. data/examples/roots/recombination.gp +12 -0
  276. data/examples/roots/recombination.rb +61 -0
  277. data/examples/roots/steffenson.rb +48 -0
  278. data/examples/sf/ShiChi.rb +6 -0
  279. data/examples/sf/SiCi.rb +6 -0
  280. data/examples/sf/airy_Ai.rb +8 -0
  281. data/examples/sf/airy_Bi.rb +8 -0
  282. data/examples/sf/bessel_IK.rb +12 -0
  283. data/examples/sf/bessel_JY.rb +13 -0
  284. data/examples/sf/beta_inc.rb +9 -0
  285. data/examples/sf/clausen.rb +6 -0
  286. data/examples/sf/dawson.rb +5 -0
  287. data/examples/sf/debye.rb +9 -0
  288. data/examples/sf/dilog.rb +6 -0
  289. data/examples/sf/ellint.rb +6 -0
  290. data/examples/sf/expint.rb +8 -0
  291. data/examples/sf/fermi.rb +10 -0
  292. data/examples/sf/gamma_inc_P.rb +9 -0
  293. data/examples/sf/gegenbauer.rb +8 -0
  294. data/examples/sf/hyperg.rb +7 -0
  295. data/examples/sf/laguerre.rb +19 -0
  296. data/examples/sf/lambertW.rb +5 -0
  297. data/examples/sf/legendre_P.rb +10 -0
  298. data/examples/sf/lngamma.rb +5 -0
  299. data/examples/sf/psi.rb +54 -0
  300. data/examples/sf/sphbessel.gp +27 -0
  301. data/examples/sf/sphbessel.rb +30 -0
  302. data/examples/sf/synchrotron.rb +5 -0
  303. data/examples/sf/transport.rb +10 -0
  304. data/examples/sf/zetam1.rb +5 -0
  305. data/examples/siman.rb +44 -0
  306. data/examples/sort/heapsort.rb +23 -0
  307. data/examples/sort/heapsort_vector_complex.rb +21 -0
  308. data/examples/sort/sort.rb +23 -0
  309. data/examples/sort/sort2.rb +16 -0
  310. data/examples/stats/mean.rb +17 -0
  311. data/examples/stats/statistics.rb +18 -0
  312. data/examples/stats/test.rb +9 -0
  313. data/examples/sum.rb +34 -0
  314. data/examples/tamu_anova.rb +18 -0
  315. data/examples/vector/a.dat +0 -0
  316. data/examples/vector/add.rb +56 -0
  317. data/examples/vector/b.dat +4 -0
  318. data/examples/vector/c.dat +3 -0
  319. data/examples/vector/collect.rb +26 -0
  320. data/examples/vector/compare.rb +28 -0
  321. data/examples/vector/complex.rb +51 -0
  322. data/examples/vector/complex_get_all.rb +85 -0
  323. data/examples/vector/complex_set_all.rb +131 -0
  324. data/examples/vector/complex_view_all.rb +77 -0
  325. data/examples/vector/connect.rb +22 -0
  326. data/examples/vector/decimate.rb +38 -0
  327. data/examples/vector/diff.rb +31 -0
  328. data/examples/vector/filescan.rb +17 -0
  329. data/examples/vector/floor.rb +23 -0
  330. data/examples/vector/get_all.rb +82 -0
  331. data/examples/vector/gnuplot.rb +38 -0
  332. data/examples/vector/graph.rb +28 -0
  333. data/examples/vector/histogram.rb +22 -0
  334. data/examples/vector/linspace.rb +24 -0
  335. data/examples/vector/log.rb +17 -0
  336. data/examples/vector/logic.rb +33 -0
  337. data/examples/vector/logspace.rb +25 -0
  338. data/examples/vector/minmax.rb +47 -0
  339. data/examples/vector/mul.rb +49 -0
  340. data/examples/vector/narray.rb +46 -0
  341. data/examples/vector/read.rb +29 -0
  342. data/examples/vector/set.rb +35 -0
  343. data/examples/vector/set_all.rb +121 -0
  344. data/examples/vector/smpv.dat +15 -0
  345. data/examples/vector/test.rb +43 -0
  346. data/examples/vector/test_gslblock.rb +58 -0
  347. data/examples/vector/vector.rb +110 -0
  348. data/examples/vector/view.rb +35 -0
  349. data/examples/vector/view_all.rb +73 -0
  350. data/examples/vector/where.rb +29 -0
  351. data/examples/vector/write.rb +24 -0
  352. data/examples/vector/zip.rb +34 -0
  353. data/examples/wavelet/ecg.dat +256 -0
  354. data/examples/wavelet/wavelet1.rb +50 -0
  355. data/ext/extconf.rb +9 -0
  356. data/ext/gsl.c +10 -1
  357. data/ext/histogram.c +6 -2
  358. data/ext/integration.c +39 -0
  359. data/ext/matrix_complex.c +1 -1
  360. data/ext/multiset.c +214 -0
  361. data/ext/nmf.c +4 -0
  362. data/ext/nmf_wrap.c +3 -0
  363. data/ext/vector_complex.c +1 -1
  364. data/ext/vector_double.c +3 -3
  365. data/ext/vector_source.c +6 -6
  366. data/include/rb_gsl.h +7 -0
  367. data/include/rb_gsl_common.h +6 -0
  368. data/rdoc/alf.rdoc +77 -0
  369. data/rdoc/blas.rdoc +269 -0
  370. data/rdoc/bspline.rdoc +42 -0
  371. data/rdoc/changes.rdoc +164 -0
  372. data/rdoc/cheb.rdoc +99 -0
  373. data/rdoc/cholesky_complex.rdoc +46 -0
  374. data/rdoc/combi.rdoc +125 -0
  375. data/rdoc/complex.rdoc +210 -0
  376. data/rdoc/const.rdoc +546 -0
  377. data/rdoc/dht.rdoc +122 -0
  378. data/rdoc/diff.rdoc +133 -0
  379. data/rdoc/ehandling.rdoc +50 -0
  380. data/rdoc/eigen.rdoc +401 -0
  381. data/rdoc/fft.rdoc +535 -0
  382. data/rdoc/fit.rdoc +284 -0
  383. data/rdoc/function.rdoc +94 -0
  384. data/rdoc/graph.rdoc +137 -0
  385. data/rdoc/hist.rdoc +409 -0
  386. data/rdoc/hist2d.rdoc +279 -0
  387. data/rdoc/hist3d.rdoc +112 -0
  388. data/rdoc/index.rdoc +62 -0
  389. data/rdoc/integration.rdoc +398 -0
  390. data/rdoc/interp.rdoc +231 -0
  391. data/rdoc/intro.rdoc +27 -0
  392. data/rdoc/linalg.rdoc +681 -0
  393. data/rdoc/linalg_complex.rdoc +88 -0
  394. data/rdoc/math.rdoc +276 -0
  395. data/rdoc/matrix.rdoc +1093 -0
  396. data/rdoc/min.rdoc +189 -0
  397. data/rdoc/monte.rdoc +234 -0
  398. data/rdoc/multimin.rdoc +312 -0
  399. data/rdoc/multiroot.rdoc +293 -0
  400. data/rdoc/narray.rdoc +173 -0
  401. data/rdoc/ndlinear.rdoc +247 -0
  402. data/rdoc/nonlinearfit.rdoc +348 -0
  403. data/rdoc/ntuple.rdoc +88 -0
  404. data/rdoc/odeiv.rdoc +378 -0
  405. data/rdoc/perm.rdoc +221 -0
  406. data/rdoc/poly.rdoc +335 -0
  407. data/rdoc/qrng.rdoc +90 -0
  408. data/rdoc/randist.rdoc +233 -0
  409. data/rdoc/ref.rdoc +93 -0
  410. data/rdoc/rng.rdoc +203 -0
  411. data/rdoc/rngextra.rdoc +11 -0
  412. data/rdoc/roots.rdoc +305 -0
  413. data/rdoc/screenshot.rdoc +40 -0
  414. data/rdoc/sf.rdoc +1622 -0
  415. data/rdoc/siman.rdoc +89 -0
  416. data/rdoc/sort.rdoc +94 -0
  417. data/rdoc/start.rdoc +16 -0
  418. data/rdoc/stats.rdoc +219 -0
  419. data/rdoc/sum.rdoc +65 -0
  420. data/rdoc/tensor.rdoc +251 -0
  421. data/rdoc/tut.rdoc +5 -0
  422. data/rdoc/use.rdoc +177 -0
  423. data/rdoc/vector.rdoc +1243 -0
  424. data/rdoc/vector_complex.rdoc +347 -0
  425. data/rdoc/wavelet.rdoc +218 -0
  426. data/setup.rb +1585 -0
  427. data/tests/blas/amax.rb +14 -0
  428. data/tests/blas/asum.rb +16 -0
  429. data/tests/blas/axpy.rb +25 -0
  430. data/tests/blas/copy.rb +23 -0
  431. data/tests/blas/dot.rb +23 -0
  432. data/tests/bspline.rb +53 -0
  433. data/tests/cdf.rb +1388 -0
  434. data/tests/cheb.rb +112 -0
  435. data/tests/combination.rb +123 -0
  436. data/tests/complex.rb +17 -0
  437. data/tests/const.rb +24 -0
  438. data/tests/deriv.rb +85 -0
  439. data/tests/dht/dht1.rb +17 -0
  440. data/tests/dht/dht2.rb +23 -0
  441. data/tests/dht/dht3.rb +23 -0
  442. data/tests/dht/dht4.rb +23 -0
  443. data/tests/diff.rb +78 -0
  444. data/tests/eigen/eigen.rb +220 -0
  445. data/tests/eigen/gen.rb +105 -0
  446. data/tests/eigen/genherm.rb +66 -0
  447. data/tests/eigen/gensymm.rb +68 -0
  448. data/tests/eigen/nonsymm.rb +53 -0
  449. data/tests/eigen/nonsymmv.rb +53 -0
  450. data/tests/eigen/symm-herm.rb +74 -0
  451. data/tests/err.rb +58 -0
  452. data/tests/fit.rb +124 -0
  453. data/tests/gsl_test.rb +118 -0
  454. data/tests/gsl_test2.rb +107 -0
  455. data/tests/histo.rb +12 -0
  456. data/tests/integration/integration1.rb +72 -0
  457. data/tests/integration/integration2.rb +71 -0
  458. data/tests/integration/integration3.rb +71 -0
  459. data/tests/integration/integration4.rb +71 -0
  460. data/tests/interp.rb +45 -0
  461. data/tests/linalg/HH.rb +64 -0
  462. data/tests/linalg/LU.rb +47 -0
  463. data/tests/linalg/QR.rb +77 -0
  464. data/tests/linalg/SV.rb +24 -0
  465. data/tests/linalg/TDN.rb +116 -0
  466. data/tests/linalg/TDS.rb +122 -0
  467. data/tests/linalg/bidiag.rb +73 -0
  468. data/tests/linalg/cholesky.rb +20 -0
  469. data/tests/linalg/linalg.rb +158 -0
  470. data/tests/matrix/matrix_nmf_test.rb +39 -0
  471. data/tests/matrix/matrix_test.rb +48 -0
  472. data/tests/min.rb +99 -0
  473. data/tests/monte/miser.rb +31 -0
  474. data/tests/monte/vegas.rb +45 -0
  475. data/tests/multifit/test_2dgauss.rb +112 -0
  476. data/tests/multifit/test_brown.rb +90 -0
  477. data/tests/multifit/test_enso.rb +246 -0
  478. data/tests/multifit/test_filip.rb +155 -0
  479. data/tests/multifit/test_gauss.rb +97 -0
  480. data/tests/multifit/test_longley.rb +110 -0
  481. data/tests/multifit/test_multifit.rb +52 -0
  482. data/tests/multimin.rb +139 -0
  483. data/tests/multiroot.rb +131 -0
  484. data/tests/multiset.rb +52 -0
  485. data/tests/odeiv.rb +353 -0
  486. data/tests/poly/poly.rb +242 -0
  487. data/tests/poly/special.rb +65 -0
  488. data/tests/qrng.rb +131 -0
  489. data/tests/quartic.rb +29 -0
  490. data/tests/randist.rb +134 -0
  491. data/tests/rng.rb +305 -0
  492. data/tests/roots.rb +76 -0
  493. data/tests/run-test.sh +17 -0
  494. data/tests/sf/gsl_test_sf.rb +249 -0
  495. data/tests/sf/test_airy.rb +83 -0
  496. data/tests/sf/test_bessel.rb +306 -0
  497. data/tests/sf/test_coulomb.rb +17 -0
  498. data/tests/sf/test_dilog.rb +25 -0
  499. data/tests/sf/test_gamma.rb +209 -0
  500. data/tests/sf/test_hyperg.rb +356 -0
  501. data/tests/sf/test_legendre.rb +227 -0
  502. data/tests/sf/test_mathieu.rb +59 -0
  503. data/tests/sf/test_sf.rb +839 -0
  504. data/tests/stats.rb +174 -0
  505. data/tests/sum.rb +98 -0
  506. data/tests/sys.rb +323 -0
  507. data/tests/tensor.rb +419 -0
  508. data/tests/vector/vector_complex_test.rb +101 -0
  509. data/tests/vector/vector_test.rb +141 -0
  510. data/tests/wavelet.rb +142 -0
  511. metadata +596 -15
@@ -463,7 +463,7 @@ static VALUE rb_gsl_vector_complex_inspect(VALUE obj)
463
463
  gsl_vector_complex *v;
464
464
 
465
465
  Data_Get_Struct(obj, gsl_vector_complex, v);
466
- sprintf(buf, "#<%s[%lu]:%#x>\n", rb_class2name(CLASS_OF(obj)), v->size, NUM2UINT(rb_obj_id(obj)));
466
+ sprintf(buf, "#<%s[%lu]:%#lx>\n", rb_class2name(CLASS_OF(obj)), v->size, NUM2ULONG(rb_obj_id(obj)));
467
467
  str = rb_str_new2(buf);
468
468
  return rb_str_concat(str, rb_gsl_vector_complex_to_s(obj));
469
469
  }
@@ -325,9 +325,9 @@ VALUE rb_gsl_range_to_gv(VALUE obj)
325
325
  int beg, en;
326
326
  size_t n, i;
327
327
  gsl_vector *v = NULL;
328
- beg = NUM2INT(rb_ivar_get(obj, rb_gsl_id_beg));
329
- en = NUM2INT(rb_ivar_get(obj, rb_gsl_id_end));
330
- if (RTEST(rb_ivar_get(obj, rb_gsl_id_excl))) n = en - beg;
328
+ beg = NUM2INT(rb_funcall3(obj, rb_gsl_id_beg, 0, NULL));
329
+ en = NUM2INT(rb_funcall3(obj, rb_gsl_id_end, 0, NULL));
330
+ if (RTEST(rb_funcall3(obj, rb_gsl_id_excl, 0, NULL))) n = en - beg;
331
331
  else n = en - beg + 1;
332
332
  v = gsl_vector_alloc(n);
333
333
  for (i = 0; i < n; i++) gsl_vector_set(v, i, beg + (int)i);
@@ -46,22 +46,22 @@ void parse_subvector_args(int argc, VALUE *argv, size_t size,
46
46
 
47
47
  void FUNCTION(get_range,beg_en_n)(VALUE range, BASE *beg, BASE *en, size_t *n, int *step)
48
48
  {
49
- *beg = NUMCONV2(rb_ivar_get(range, rb_gsl_id_beg));
50
- *en = NUMCONV2(rb_ivar_get(range, rb_gsl_id_end));
49
+ *beg = NUMCONV2(rb_funcall3(range, rb_gsl_id_beg, 0, NULL));
50
+ *en = NUMCONV2(rb_funcall3(range, rb_gsl_id_end, 0, NULL));
51
51
  *n = (size_t) fabs(*en - *beg);
52
- if (!RTEST(rb_ivar_get(range, rb_gsl_id_excl))) *n += 1;
52
+ if (!RTEST(rb_funcall3(range, rb_gsl_id_excl, 0, NULL))) *n += 1;
53
53
  if (*en < *beg) *step = -1; else *step = 1;
54
54
  }
55
55
 
56
56
  #ifdef BASE_INT
57
57
  void get_range_beg_en_n_for_size(VALUE range, int *beg, int *en, size_t *n, int *step, size_t size)
58
58
  {
59
- *beg = NUM2INT(rb_ivar_get(range, rb_gsl_id_beg));
59
+ *beg = NUM2INT(rb_funcall3(range, rb_gsl_id_beg, 0, NULL));
60
60
  if(*beg < 0) *beg += size;
61
- *en = NUM2INT(rb_ivar_get(range, rb_gsl_id_end));
61
+ *en = NUM2INT(rb_funcall3(range, rb_gsl_id_end, 0, NULL));
62
62
  if(*en < 0) *en += size;
63
63
  *n = (size_t) fabs(*en - *beg);
64
- if (!RTEST(rb_ivar_get(range, rb_gsl_id_excl))) *n += 1;
64
+ if (!RTEST(rb_funcall3(range, rb_gsl_id_excl, 0, NULL))) *n += 1;
65
65
  if (*en < *beg) *step = -1; else *step = 1;
66
66
  }
67
67
 
@@ -148,4 +148,11 @@ void Init_bspline(VALUE module);
148
148
  void Init_alf(VALUE module);
149
149
  void Init_geometry(VALUE module);
150
150
 
151
+ #ifdef GSL_1_14_LATER
152
+ #include <gsl/gsl_multiset.h>
153
+ extern VALUE cMultiset;
154
+ void Init_multiset(VALUE module);
155
+
156
+ #endif
157
+
151
158
  #endif
@@ -16,6 +16,7 @@
16
16
  #include "ruby.h"
17
17
  #include <ctype.h>
18
18
  #include <gsl/gsl_errno.h>
19
+ #include <gsl/gsl_version.h>
19
20
  #include <gsl/gsl_math.h>
20
21
  #include <gsl/gsl_complex.h>
21
22
  #include <gsl/gsl_vector.h>
@@ -312,6 +313,11 @@ int str_head_grep(const char *s0, const char *s1);
312
313
  #define STR2CHARPTR STR2CSTR
313
314
  #endif
314
315
 
316
+ // Added 2010/Sep/29
317
+ #ifdef RUBY_1_9_2_LATER
318
+ #define STR2CSTR StringValuePtr
319
+ #endif
320
+
315
321
  void make_graphcommand(char *command, VALUE hash);
316
322
  int rbgsl_complex_equal(const gsl_complex *z1, const gsl_complex *z2, double eps);
317
323
 
@@ -0,0 +1,77 @@
1
+ #
2
+ # = ALF: a collection of routines for computing associated Legendre polynomials (ALFs)
3
+ # ALF is an extension library for GSL to compute associated Legendre polynomials developed by Patrick Alken.
4
+ # Ruby/GSL includes interfaces to it if ALF is found during installlation.
5
+ #
6
+ # The class and method descriptions below are based on references from the document of ALF (alf-1.0/doc/alf.texi) by P.Alken.
7
+ #
8
+ # == {}[link:index.html"name="1] Module structure
9
+ # * GSL::ALF (module)
10
+ # * GSL::ALF::Workspace (Class)
11
+ #
12
+ # == {}[link:index.html"name="2] Creating ALF workspace
13
+ # ---
14
+ # * GSL::ALF::Workspace.alloc(lmax)
15
+ # * GSL::ALF.alloc(lmax)
16
+ #
17
+ # Creates a workspace for computing associated Legendre polynomials (ALFs). The maximum ALF degree is specified by lmax. The size of this workspace is O(lmax).
18
+ #
19
+ # == {}[link:index.html"name="3] Methods
20
+ # ---
21
+ # * GSL::ALF::Workspace#params(csphase, cnorm, norm)
22
+ #
23
+ # Sets various parameters for the subsequent computation of ALFs. If
24
+ # <tt>csphase</tt> is set to a non-zero value, the Condon-Shortley phase of
25
+ # (-1)^m will be applied to the associated Legendre functions. The
26
+ # Condon-Shortley phase is included by default. If <tt>cnorm</tt> is set to
27
+ # zero, the real normalization of the associated Legendre functions will be
28
+ # used. The default is to use complex normalization. The norm parameter
29
+ # defines the type of normalization which will be used. The possible values
30
+ # are as follows.
31
+ # * ALF::NORM_SCHMIDT: Schmidt semi-normalized associated Legendre polynomials S_l^m(x). (default)
32
+ # * ALF::NORM_SPHARM: Associated Legendre polynomials Y_l^m(x) suitable for the calculation of spherical harmonics.
33
+ # * ALF::NORM_ORTHO: Fully orthonormalized associated Legendre polynomials N_l^m(x).
34
+ # * ALF::NORM_NONE:: Unnormalized associated Legendre polynomials P_l^m(x).
35
+ # ---
36
+ # * GSL::ALF::Workspace#Plm_array(x)
37
+ # * GSL::ALF::Workspace#Plm_array(lmax, x)
38
+ # * GSL::ALF::Workspace#Plm_array(x, result)
39
+ # * GSL::ALF::Workspace#Plm_array(lmax, x, result)
40
+ # * GSL::ALF::Workspace#Plm_array(x, result, deriv)
41
+ # * GSL::ALF::Workspace#Plm_array(lmax, x, result, deriv)
42
+ #
43
+ # Compute all associated Legendre polynomials P_l^m(x) and optionally their
44
+ # first derivatives dP_l^m(x)/dx for 0 <= l <= lmax, 0 <= m <= l. The value
45
+ # of <tt>lmax</tt> cannot exceed the previously specified lmax parameter to
46
+ # <tt>ALF.alloc</tt>, but may be less. If <tt>lmax</tt> is not given, the
47
+ # parameter to <tt>ALF.alloc()</tt> is used. The results are stored in
48
+ # <tt>result</tt>, an instance of <tt>GSL::Vector</tt>. Note that this vector
49
+ # must have enough length to store all the values for the polynomial
50
+ # P_l^m(x), and the length required can be known using
51
+ # <tt>ALF::array_size(lmax)</tt>. If a vector is not given, a new vector is
52
+ # created and returned.
53
+ #
54
+ # The indices of <tt>result</tt> (and <tt>deriv</tt> corresponding to the
55
+ # associated Legendre function of degree <tt>l</tt> and order <tt>m</tt> can
56
+ # be obtained by calling <tt>ALF::array_index(l, m)</tt>.
57
+ # ---
58
+ # * GSL::ALF::Workspace#Plm_deriv_array(x)
59
+ # * GSL::ALF::Workspace#Plm_deriv_array(lmax, x)
60
+ # * GSL::ALF::Workspace#Plm_deriv_array(x, result, deriv)
61
+ # * GSL::ALF::Workspace#Plm_deriv_array(lmax, x, result, deriv)
62
+ #
63
+ # Compute all associated Legendre polynomials P_l^m(x) and their first
64
+ # derivatives dP_l^m(x)/dx for 0 <= l <= lmax, 0 <= m <= l.
65
+ #
66
+ # ---
67
+ # * GSL::ALF::array_size(lmax)
68
+ #
69
+ # Returns the size of arrays needed for the array versions of P_l^m(x).
70
+ # ---
71
+ # * GSL::ALF::array_index(l, m)
72
+ #
73
+ # Returns the array index of results of <tt>Plm_array()</tt> and
74
+ # <tt>Plm_deriv_array()</tt> corresponding to P_l^m(x) and dP_l^m(x)/dx
75
+ # respectively. The index is given by l(l + 1)/2 + m.
76
+ #
77
+ #
@@ -0,0 +1,269 @@
1
+ #
2
+ # = BLAS Support
3
+ # The following is the list of the methods defined in <tt>GSL::Blas</tt> module.
4
+ # See {GSL reference}[http://www.gnu.org/software/gsl/manual/gsl-ref_12.html#SEC212"target="_top] for details.
5
+ #
6
+ # == {}[link:index.html"name="1] Level 1
7
+ # ---
8
+ # * GSL::Blas::ddot(x, y)
9
+ # * GSL::Vector#blas_ddot(y)
10
+ # * GSL::Vector#ddot(y)
11
+ #
12
+ #
13
+ # ---
14
+ # * GSL::Blas::zdotu(x, y)
15
+ # * GSL::Vector::Complex#blas_zdotu(y)
16
+ # * GSL::Vector::Complex#zdotu(y)
17
+ #
18
+ #
19
+ # ---
20
+ # * GSL::Blas::zdotc(x, y)
21
+ # * GSL::Vector::Complex#blas_zdotc(y)
22
+ # * GSL::Vector::Complex#zdotc(y)
23
+ #
24
+ #
25
+ # ---
26
+ # * GSL::Blas::dnrm2(x)
27
+ # * GSL::Vector#blas_dnrm2
28
+ # * GSL::Vector#dnrm2
29
+ #
30
+ #
31
+ # ---
32
+ # * GSL::Blas::dznrm2(x)
33
+ # * GSL::Vector::Complex#blas_dznrm2
34
+ # * GSL::Vector::Complex#dznrm2
35
+ #
36
+ #
37
+ # ---
38
+ # * GSL::Blas::dasum(x)
39
+ # * GSL::Vector#blas_dasum
40
+ # * GSL::Vector#dasum
41
+ #
42
+ #
43
+ # ---
44
+ # * GSL::Blas::dzasum(x)
45
+ # * GSL::Vector::Complex#blas_dzasum
46
+ # * GSL::Vector::Complex#dzasum
47
+ #
48
+ #
49
+ # ---
50
+ # * GSL::Blas::idamax(x)
51
+ # * GSL::Vector#blas_idamax
52
+ # * GSL::Vector#idamax
53
+ #
54
+ #
55
+ # ---
56
+ # * GSL::Blas::izamax(x)
57
+ # * GSL::Vector::Complex#blas_izamax
58
+ # * GSL::Vector::Complex#izamax
59
+ #
60
+ #
61
+ # ---
62
+ # * GSL::Blas::dswap(x, y)
63
+ # * GSL::Vector#blas_dswap(y)
64
+ # * GSL::Vector#dswap(y)
65
+ #
66
+ #
67
+ # ---
68
+ # * GSL::Blas::zswap(x, y)
69
+ # * GSL::Vector::Complex#blas_zswap(y)
70
+ # * GSL::Vector::Complex#zswap(y)
71
+ #
72
+ #
73
+ # ---
74
+ # * GSL::Blas::dcopy(x, y)
75
+ # * GSL::Vector#blas_dcopy(y)
76
+ # * GSL::Vector#dcopy(y)
77
+ #
78
+ #
79
+ # ---
80
+ # * GSL::Blas::zcopy(x, y)
81
+ # * GSL::Vector::Complex#blas_zcopy(y)
82
+ # * GSL::Vector::Complex#zcopy(y)
83
+ #
84
+ #
85
+ # ---
86
+ # * GSL::Blas::daxpy!(a, x, y)
87
+ # * GSL::Vector#blas_daxpy!(a, y)
88
+ # * GSL::Vector#daxpy!(a, y)
89
+ # * GSL::Blas::daxpy(a, x, y)
90
+ # * GSL::Vector#blas_daxpy(a, y)
91
+ # * GSL::Vector#daxpy(a, y)
92
+ #
93
+ #
94
+ # ---
95
+ # * GSL::Blas::zaxpy!(a, x, y)
96
+ # * GSL::Vector::Complex#blas_zaxpy!(a, y)
97
+ # * GSL::Vector::Complex#zaxpy!(a, y)
98
+ # * GSL::Blas::zaxpy(a, x, y)
99
+ # * GSL::Vector::Complex#blas_zaxpy(a, y)
100
+ # * GSL::Vector::Complex#zaxpy(a, y)
101
+ #
102
+ #
103
+ # ---
104
+ # * GSL::Blas::dscal!(a, x)
105
+ # * GSL::Vector#blas_dscal!(a)
106
+ # * GSL::Vector#dscal!(a)
107
+ # * GSL::Blas::dscal(a, x)
108
+ # * GSL::Vector#blas_dscal(a)
109
+ # * GSL::Vector#dscal(a)
110
+ #
111
+ #
112
+ # ---
113
+ # * GSL::Blas::zscal!(a, x)
114
+ # * GSL::Vector::Complex#blas_zscal!(a)
115
+ # * GSL::Vector::Complex#zscal!(a)
116
+ # * GSL::Blas::zscal(a, x)
117
+ # * GSL::Vector::Complex#blas_zscal(a)
118
+ # * GSL::Vector::Complex#zscal(a)
119
+ #
120
+ #
121
+ # ---
122
+ # * GSL::Blas::zdscal!(a, x)
123
+ # * GSL::Vector::Complex#blas_zdscal!(a)
124
+ # * GSL::Vector::Complex#zdscal!(a)
125
+ # * GSL::Blas::zdscal(a, x)
126
+ # * GSL::Vector::Complex#blas_zdscal(a)
127
+ # * GSL::Vector::Complex#zdscal(a)
128
+ #
129
+ #
130
+ # ---
131
+ # * GSL::Blas::drot(x, y, c, s)
132
+ # * GSL::Blas::drot!(x, y, c, s)
133
+ # * GSL::Blas::drotm(x, y, p)
134
+ # * GSL::Blas::drotm!(x, y, p)
135
+ #
136
+ #
137
+ # == {}[link:index.html"name="2] Level 2
138
+ # ---
139
+ # * GSL::Blas::dgemv(trans, a, A, x, b, y)
140
+ # * GSL::Blas::dgemv!(trans, a, A, x, b, y)
141
+ # * GSL::Blas::zgemv(trans, a, A, x, b, y)
142
+ # * GSL::Blas::zgemv!(trans, a, A, x, b, y)
143
+ #
144
+ #
145
+ # ---
146
+ # * GSL::Blas::dtrmv(trans, a, A, x, b, y)
147
+ # * GSL::Blas::dtrmv!(trans, a, A, x, b, y)
148
+ # * GSL::Blas::ztrmv(trans, a, A, x, b, y)
149
+ # * GSL::Blas::ztrmv!(trans, a, A, x, b, y)
150
+ #
151
+ #
152
+ # ---
153
+ # * GSL::Blas::dtrsv(uplo, trans, diag, A, x)
154
+ # * GSL::Blas::dtrsv!uplo, trans, diag, A, x)
155
+ # * GSL::Blas::ztrsvuplo, trans, diag, A, x)
156
+ # * GSL::Blas::ztrsv!uplo, trans, diag, A, x)
157
+ #
158
+ #
159
+ # ---
160
+ # * GSL::Blas::dsymv(uplo, a, A, x, b, y)
161
+ # * GSL::Blas::dsymv!(uplo, a, A, x, b, y)
162
+ # * GSL::Blas::zhemv(uplo, a, A, x, b, y)
163
+ # * GSL::Blas::zhemv!(uplo, a, A, x, b, y)
164
+ #
165
+ #
166
+ # ---
167
+ # * GSL::Blas::dger(a, x, y, A)
168
+ # * GSL::Blas::dger!(a, x, y, A)
169
+ # * GSL::Blas::zgeru(a, x, y, A)
170
+ # * GSL::Blas::zgeru!(a, x, y, A)
171
+ # * GSL::Blas::zgerc(a, x, y, A)
172
+ # * GSL::Blas::zgerc!(a, x, y, A)
173
+ #
174
+ #
175
+ # ---
176
+ # * GSL::Blas::dsyr(uplo, a, x, A)
177
+ # * GSL::Blas::dsyr!(uplo, a, x, A)
178
+ # * GSL::Blas::zher(uplo, a, x, A)
179
+ # * GSL::Blas::zher!(uplo, a, x, A)
180
+ #
181
+ #
182
+ # ---
183
+ # * GSL::Blas::dsyr2(uplo, a, x, y, A)
184
+ # * GSL::Blas::dsyr2!(uplo, a, x, y, A)
185
+ # * GSL::Blas::zher2(uplo, a, x, y, A)
186
+ # * GSL::Blas::zher2!(uplo, a, x, y, A)
187
+ #
188
+ #
189
+ # == {}[link:index.html"name="3] Level 3
190
+ # ---
191
+ # * GSL::Blas::dgemm(transA, transB, alpha, A, B, beta, C)
192
+ # * GSL::Blas::dgemm(A, B)
193
+ #
194
+ #
195
+ # ---
196
+ # * GSL::Blas::zgemm(transA, transB, alpha, A, B, beta, C)
197
+ # * GSL::Blas::zgemm(A, B)
198
+ #
199
+ #
200
+ # ---
201
+ # * GSL::Blas::dsymm(transA, transB, alpha, A, B, beta, C)
202
+ # * GSL::Blas::dsymm(A, B)
203
+ #
204
+ #
205
+ # ---
206
+ # * GSL::Blas::zsymm(transA, transB, alpha, A, B, beta, C)
207
+ # * GSL::Blas::zsymm(A, B)
208
+ #
209
+ #
210
+ # ---
211
+ # * GSL::Blas::zhemm(transA, transB, alpha, A, B, beta, C)
212
+ # * GSL::Blas::zhemm(A, B)
213
+ #
214
+ #
215
+ # ---
216
+ # * GSL::Blas::dtrmm(side, uplo, trans, diag, alpha, A, B)
217
+ # * GSL::Blas::ztrmm(side, uplo, trans, diag, alpha, A, B)
218
+ #
219
+ #
220
+ # ---
221
+ # * GSL::Blas::dtrsm(side, uplo, trans, diag, alpha, A, B)
222
+ # * GSL::Blas::ztrsm(side, uplo, trans, diag, alpha, A, B)
223
+ #
224
+ #
225
+ # ---
226
+ # * GSL::Blas::dsyrk(uplo, trans, diag, alpha, A, beta, C)
227
+ # * GSL::Blas::zsyrk(uplo, trans, diag, alpha, A, beta, C)
228
+ # * GSL::Blas::zherk(uplo, trans, diag, alpha, A, beta, C)
229
+ #
230
+ #
231
+ # ---
232
+ # * GSL::Blas::dsyr2k(uplo, trans, diag, alpha, A, B, beta, C)
233
+ # * GSL::Blas::zsyr2k(uplo, trans, diag, alpha, A, B, beta, C)
234
+ # * GSL::Blas::zher2k(uplo, trans, diag, alpha, A, B, beta, C)
235
+ #
236
+ #
237
+ # == {}[link:index.html"name="4] Constants
238
+ # ---
239
+ # * GSL::Blas::CblasRowMajor
240
+ # * GSL::Blas::RowMajor
241
+ # * GSL::Blas::CblasColMajor
242
+ # * GSL::Blas::ColMajor
243
+ # * GSL::Blas::CblasNoTrans
244
+ # * GSL::Blas::NoTrans
245
+ # * GSL::Blas::CblasTrans
246
+ # * GSL::Blas::Trans
247
+ # * GSL::Blas::CblasConjTrans
248
+ # * GSL::Blas::ConjTrans
249
+ # * GSL::Blas::CblasUpper
250
+ # * GSL::Blas::Upper
251
+ # * GSL::Blas::CblasTrans
252
+ # * GSL::Blas::Lower
253
+ # * GSL::Blas::CblasNonUnit
254
+ # * GSL::Blas::NonUnit
255
+ # * GSL::Blas::CblasUnit
256
+ # * GSL::Blas::Unit
257
+ # * GSL::Blas::CblasLeft
258
+ # * GSL::Blas::Left
259
+ # * GSL::Blas::CblasRight
260
+ # * GSL::Blas::Right
261
+ #
262
+ #
263
+ # {prev}[link:files/rdoc/sort_rdoc.html]
264
+ # {next}[link:files/rdoc/linalg_rdoc.html]
265
+ #
266
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
267
+ # {top}[link:files/rdoc/index_rdoc.html]
268
+ #
269
+ #
@@ -0,0 +1,42 @@
1
+ #
2
+ # = Basis Splines
3
+ # This chapter describes functions for the computation of smoothing basis splines (B-splines). This is only for GSL-1.9 or later.
4
+ #
5
+ # 1. {Overview}[link:files/rdoc/bspline_rdoc.html#1]
6
+ # 1. {Initializing the B-splines solver}[link:files/rdoc/bspline_rdoc.html#2]
7
+ # 1. {Constructing the knots vector}[link:files/rdoc/bspline_rdoc.html#3]
8
+ # 1. {Evaluation of B-splines}[link:files/rdoc/bspline_rdoc.html#4]
9
+ #
10
+ # == {}[link:index.html"name="1] Overview
11
+ #
12
+ # B-splines are commonly used as basis functions to fit smoothing curves to large data sets. To do this, the abscissa axis is broken up into some number of intervals, where the endpoints of each interval are called breakpoints. These breakpoints are then converted to knots by imposing various continuity and smoothness conditions at each interface. Given a nondecreasing knot vector t = \{t_0, t_1, \dots, t_{n+k-1\, the n basis splines of order k are defined by for i = 0, \dots, n-1. The common case of cubic B-splines is given by k = 4. The above recurrence relation can be evaluated in a numerically stable way by the de Boor algorithm.
13
+ #
14
+ # If we define appropriate knots on an interval [a,b] then the B-spline basis functions form a complete set on that interval. Therefore we can expand a smoothing function as given enough (x_j, f(x_j)) data pairs. The c_i can be readily obtained from a least-squares fit.
15
+ #
16
+ # == {}[link:index.html"name="2] Initializing the B-splines solver
17
+ # ---
18
+ # * GSL::BSpline.alloc(k, nbreak)
19
+ #
20
+ # This method creates a workspace for computing B-splines of order <tt>k</tt>. The number of breakpoints is given by <tt>nbreak</tt>. This leads to <tt>n = nbreak + k - 2</tt> basis functions. Cubic B-splines are specified by <tt>k = 4</tt>. The size of the workspace is <tt>O(5k + nbreak)</tt>.
21
+ #
22
+ # == {}[link:index.html"name="3] Constructing the knots vector
23
+ # ---
24
+ # * GSL::BSpline#knots(breakpts)
25
+ #
26
+ # This method computes the knots associated with the given breakpoints <tt>breakpts</tt> and returns the knots as a <tt>GSL::Vector::View</tt> object.
27
+ # ---
28
+ # * GSL::BSpline#knots_uniform(a, b)
29
+ #
30
+ # This method assumes uniformly spaced breakpoints on [<tt>a,b</tt>] and constructs the corresponding knot vector using the previously specified <tt>nbreak</tt> parameter.
31
+ # == {}[link:index.html"name="4] Evaluation of B-splines
32
+ # ---
33
+ # * GSL::BSpline#eval(x[, B])
34
+ #
35
+ # This method evaluates all B-spline basis functions at the position <tt>x</tt> and stores them in <tt>B</tt> (if given), so that the ith element of <tt>B</tt> is <tt>B_i(x)</tt>. <tt>B</tt> must be of length <tt>n = nbreak + k - 2</tt>. If <tt>B</tt> is not given, a newly created vector is returned.It is far more efficient to compute all of the basis functions at once than to compute them individually, due to the nature of the defining recurrence relation.
36
+ #
37
+ # {prev}[link:files/rdoc/nonlinearfit_rdoc.html]
38
+ # {next}[link:files/rdoc/const_rdoc.html]
39
+ #
40
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
41
+ # {top}[link:files/rdoc/index_rdoc.html]
42
+ #