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
@@ -0,0 +1,112 @@
1
+ #
2
+ # = GSL::Histogram3d class
3
+ #
4
+ # == {}[link:index.html"name="1] Class methods
5
+ # ---
6
+ # * GSL::Histogram3d.alloc(nx, ny, nz)
7
+ # * GSL::Histogram3d.alloc(xrange, yrange, zrange)
8
+ # * GSL::Histogram3d.alloc(nx, xmin, xmax, ny, ymin, ymax, nz, zmin, zmax)
9
+ # * GSL::Histogram3d.alloc(nx, [xmin, xmax], ny, [ymin, ymax], nz, [zmin, zmax])
10
+ #
11
+ # Constructors
12
+ #
13
+ # ---
14
+ # * GSL::Histogram3d.memcpy(h1, h2)
15
+ # * GSL::Histogram3d.equal_bins_p(h1, h2)
16
+ # * GSL::Histogram3d.equal_bins_?p(h1, h2)
17
+ #
18
+ #
19
+ # == {}[link:index.html"name="2] Methods
20
+ # ---
21
+ # * GSL::Histogram3d#set_ranges(xrange, yrange, zrange)
22
+ # * GSL::Histogram3d#set_ranges_uniform(xmin, xmax, ymin, ymax, zmin, zmax)
23
+ # * GSL::Histogram3d#set_ranges_uniform([xmin, xmax], [ymin, ymax], [zmin, zmax])
24
+ #
25
+ #
26
+ # ---
27
+ # * GSL::Histogram3d#clone
28
+ # * GSL::Histogram3d#duplicate
29
+ #
30
+ #
31
+ # ---
32
+ # * GSL::Histogram3d#increment(x, y, z, weight = 1)
33
+ # * GSL::Histogram3d#accumulate(x, y, z, weight = 1)
34
+ # * GSL::Histogram3d#fill(x, y, z, weight = 1)
35
+ # * GSL::Histogram3d#increment2(x, y, z, weight = 1)
36
+ # * GSL::Histogram3d#accumulate2(x, y, z, weight = 1)
37
+ # * GSL::Histogram3d#fill2(x, y, z, weight = 1)
38
+ # * GSL::Histogram3d#get(i[, j[, k]])
39
+ # * GSL::Histogram3d#[]
40
+ # * GSL::Histogram3d#get_xrange(i)
41
+ # * GSL::Histogram3d#get_yrange(j)
42
+ # * GSL::Histogram3d#get_zrange(k)
43
+ # * GSL::Histogram3d#xrange
44
+ # * GSL::Histogram3d#yrange
45
+ # * GSL::Histogram3d#zrange
46
+ # * GSL::Histogram3d#bin
47
+ # * GSL::Histogram3d#xmax
48
+ # * GSL::Histogram3d#xmin
49
+ # * GSL::Histogram3d#ymax
50
+ # * GSL::Histogram3d#ymin
51
+ # * GSL::Histogram3d#zmax
52
+ # * GSL::Histogram3d#zmin
53
+ # * GSL::Histogram3d#nx
54
+ # * GSL::Histogram3d#ny
55
+ # * GSL::Histogram3d#nz
56
+ # * GSL::Histogram3d#reset
57
+ # * GSL::Histogram3d#find(x, y, z)
58
+ # * GSL::Histogram3d#max_val
59
+ # * GSL::Histogram3d#max_bin
60
+ # * GSL::Histogram3d#min_val
61
+ # * GSL::Histogram3d#min_bin
62
+ # * GSL::Histogram3d#xmean
63
+ # * GSL::Histogram3d#xsigma
64
+ # * GSL::Histogram3d#ymean
65
+ # * GSL::Histogram3d#ysigma
66
+ # * GSL::Histogram3d#zmean
67
+ # * GSL::Histogram3d#zsigma
68
+ #
69
+ #
70
+ # ---
71
+ # * GSL::Histogram3d#sum
72
+ # * GSL::Histogram3d#integral
73
+ # * GSL::Histogram3d#add(h2)
74
+ # * GSL::Histogram3d#sub(h2)
75
+ # * GSL::Histogram3d#mul(h2)
76
+ # * GSL::Histogram3d#div(h2)
77
+ # * GSL::Histogram3d#scale(val)
78
+ # * GSL::Histogram3d#shift(val)
79
+ # * GSL::Histogram3d#+(h2)
80
+ # * GSL::Histogram3d#-(h2)
81
+ # * GSL::Histogram3d#*(h2)
82
+ # * GSL::Histogram3d#/(h2)
83
+ # * GSL::Histogram3d#fwrite(io)
84
+ # * GSL::Histogram3d#fwrite(filename)
85
+ # * GSL::Histogram3d#fread(io)
86
+ # * GSL::Histogram3d#fread(filename)
87
+ #
88
+ #
89
+ # ---
90
+ # * GSL::Histogram3d#xyproject(kstart = 0, kend = nz-1)
91
+ #
92
+ # Creates a <tt>GSL::Histogram2d</tt> object by projecting the 3D histogram
93
+ # <tt>self</tt> onto the xy-plane over the z-range from <tt>kstart</tt> to <tt>kend</tt>.
94
+ #
95
+ # ---
96
+ # * GSL::Histogram3d#xzproject(jstart = 0, jend = ny-1)
97
+ #
98
+ # Creates a <tt>GSL::Histogram2d</tt> object by projecting the 3D histogram
99
+ # <tt>self</tt> onto the xz-plane over the y-range from <tt>jstart</tt> to <tt>jend</tt>.
100
+ #
101
+ # ---
102
+ # * GSL::Histogram3d#yzproject(istart = 0, iend = nx-1)
103
+ #
104
+ # Creates a <tt>GSL::Histogram2d</tt> object by projecting the 3D histogram
105
+ # <tt>self</tt> onto the yz-plane over the x-range from <tt>istart</tt> to <tt>iend</tt>.
106
+ #
107
+ # {prev}[link:files/rdoc/hist2d_rdoc.html]
108
+ # {next}[link:files/rdoc/ntuple_rdoc.html]
109
+ #
110
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
111
+ # {top}[link:files/rdoc/index_rdoc.html]
112
+ #
@@ -0,0 +1,62 @@
1
+ #
2
+ # = {Ruby/GSL}[link:files/rdoc/index_rdoc.html"target="_parent]
3
+ #
4
+ # Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License.
5
+ #
6
+ # == {}[link:index.html"name="1] Description
7
+ # {Ruby/GSL}[http://rubyforge.org/projects/rb-gsl/"target="_top] is a ruby interface to the {GNU Scientific Library}[http://www.gnu.org/software/gsl/"target="_top] (GSL), for numerical computing with {Ruby}[http://www.ruby-lang.org/en/"target="_top].
8
+ #
9
+ # == {}[link:index.html"name="3] Installation
10
+ # === {}[link:index.html"name="3.1] Using the gem command
11
+ # Ruby/GSL may now be installed as a Ruby Gem by simply running
12
+ #
13
+ # gem install gsl
14
+ #
15
+ # Note that the GSL libraries must already be installed before Ruby/GSL
16
+ # can be installed.
17
+ #
18
+ # === {}[link:index.html"name="3.2] Using the setup.rb command
19
+ # If you prefer, Ruby/GSL may still be installed using setup.rb.
20
+ # 1. Get and install {GSL}[http://www.gnu.org/software/gsl/#downloading"target="_top]. Make sure the command "gsl-config" is in command search path.
21
+ # 1. {Download}[http://rubyforge.org/frs/?group_id=285"target="_top] Ruby/GSL, ungzip and untar the archive <tt>rb-gsl-xxx.tar.gz</tt>.
22
+ # 1. <tt> % cd rb-gsl-xxx/</tt>
23
+ # 1. <tt> % ruby setup.rb config</tt>
24
+ # 1. <tt> % ruby setup.rb setup</tt>
25
+ # 1. <tt> % ruby setup.rb install</tt> (as root)
26
+ #
27
+ # * It is recommended to install the
28
+ # {GNU plotutils}[http://www.gnu.org/software/plotutils/plotutils.html"target="_top]
29
+ # package. Some of the example scripts in the 'examples/' directory use the
30
+ # <tt>graph</tt> utility included in the package to plot the results.
31
+ # Windows-cygwin binaries of <tt>GNU plotutils</tt> and related packages are
32
+ # available from {here}[http://rustam.uwp.edu/support"target="_top].
33
+ #
34
+ # == {}[link:index.html"name="4] Screenshot
35
+ #
36
+ # Ruby/GSL can be seen in action in these {screenshots}[link:files/rdoc/screenshot_rdoc.html].
37
+ #
38
+ # == {}[link:index.html"name="5] Reference
39
+ #
40
+ # The {Ruby/GSL reference manual}[link:files/rdoc/ref_rdoc.html] follows and borrows
41
+ # large parts of the GSL reference manual.
42
+ #
43
+ # == {}[link:index.html"name="6] Examples
44
+ # See scripts in <tt>examples/</tt> and <tt>tests/</tt> directories.
45
+ #
46
+ # == {}[link:index.html"name="7] Related Projects
47
+ # * {ruby-gsl:}[http://ruby-gsl.sourceforge.net/"target="_top]
48
+ # Another Ruby biding, developed by Arno Erpenbeck.
49
+ #
50
+ # == {}[link:index.html"name="8] Licence
51
+ # Ruby/GSL is free software: you can redistribute it and/or modify it
52
+ # under the terms of the GNU General Public License.
53
+ # This library is distributed in the hope that it will be useful, but
54
+ # WITHOUT ANY WARRANTY.
55
+ #
56
+ # == {}[link:index.html"name="9] Bug Report
57
+ # If you encounter bugs in Ruby/GSL, please e-mail to me, or
58
+ # submit reports from {RubyForge page}[http://rubyforge.org/projects/rb-gsl/"target="_top].
59
+ #
60
+ # == {}[link:index.html"name="10] Author
61
+ # Yoshiki Tsunesada:: July, 2004
62
+ # David MacMahon:: November, 2010
@@ -0,0 +1,398 @@
1
+ #
2
+ # = Numerical Integration
3
+ # Contents:
4
+ # 1. {Introduction}[link:files/rdoc/integration_rdoc.html#1]
5
+ # 1. {QNG non-adaptive Gauss-Kronrod integration}[link:files/rdoc/integration_rdoc.html#2]
6
+ # 1. {QAG adaptive integration}[link:files/rdoc/integration_rdoc.html#3]
7
+ # 1. {GSL::Integration::Workspace class}[link:files/rdoc/integration_rdoc.html#3.1]
8
+ # 1. {Methods}[link:files/rdoc/integration_rdoc.html#3.2]
9
+ # 1. {QAGS adaptive integration with singularities}[link:files/rdoc/integration_rdoc.html#4]
10
+ # 1. {QAGP adaptive integration with known singular points}[link:files/rdoc/integration_rdoc.html#5]
11
+ # 1. {QAGI adaptive integration on infinite intervals}[link:files/rdoc/integration_rdoc.html#6]
12
+ # 1. {QAWC adaptive integration for Cauchy principal values}[link:files/rdoc/integration_rdoc.html#7]
13
+ # 1. {QAWS adaptive integration for singular functions}[link:files/rdoc/integration_rdoc.html#8]
14
+ # 1. {QAWO adaptive integration for oscillatory functions}[link:files/rdoc/integration_rdoc.html#9]
15
+ # 1. {QAWF adaptive integration for Fourier integrals}[link:files/rdoc/integration_rdoc.html#10]
16
+ #
17
+ # == {}[link:index.html"name="1] Introduction
18
+ # This section describes how to compute numerical integration of a function
19
+ # in one dimension. In Ruby/GSL, all the GSL routines for numerical integration
20
+ # is provided as methods of {GSL::Function}[link:files/rdoc/function_rdoc.html] objects.
21
+ # For example, a <tt>GSL::Function</tt> object which represents the sine function
22
+ # <tt>sin(x)</tt> can be expressed as
23
+ # f = GSL::Function.alloc { |x| sin(x) }
24
+ # To compute numerical integration of <tt>sin(x)</tt> over the range <tt>(a, b)</tt>,
25
+ # one can use the methods <tt>integrate_xxx</tt> or simply <tt>xxx</tt>, as
26
+ # * <tt>f.integrate_xxx([a, b])</tt>, or <tt>f.xxx([a, b])</tt>
27
+ # * <tt>f.integrate_xxx(a, b)</tt>, or <tt>f.xxx(a, b)</tt>
28
+ #
29
+ # == {}[link:index.html"name="2] QNG non-adaptive Gauss-Kronrod integration
30
+ # ---
31
+ # * GSL::Function#integration_qng([a, b], [epsabs = 0.0, epsrel = 1e-10])
32
+ # * GSL::Function#qng(...)
33
+ # * GSL::Integration::qng(...)
34
+ #
35
+ # These methods apply the Gauss-Kronrod integration rules in succession until
36
+ # an estimate of the integral of the reciever function (a <tt>GSL::Function</tt>
37
+ # object) over <tt>(a,b)</tt> is achieved within the desired absolute and relative
38
+ # error limits, <tt>epsabs</tt> and <tt>epsrel</tt> (these are optional, the default
39
+ # values are 0,0 and 1e-10 respectively). These methods return an array of
40
+ # four elements <tt>[result, err, neval, status]</tt>, those are the final
41
+ # approximation
42
+ # of the integration, an estimate of the absolute error, the number of function
43
+ # evaluation, and the status which is returned by the GSL
44
+ # <tt>integration_qng()</tt> function.
45
+ #
46
+ # * Ex: Integrate sin(x) over <tt>x = 0 -- 2</tt> with accuracies <tt>epsabs = 0, epsrel = 1.0e-7</tt>.
47
+ #
48
+ # require 'gsl'
49
+ #
50
+ # f = GSL::Function.alloc { |x| sin(x) }
51
+ # ans = f.integration_qng([0, 2], [0, 1.0e-7]) # or shortly f.qng(...)
52
+ # p ans[0] <- result
53
+ #
54
+ # For all the methods described in this section, the arguments <tt>[epsabs, epsrel]</tt> are optional, and the default values are <tt>[epsabs = 0.0, epsrel = 1e-10]</tt>.
55
+ #
56
+ # == {}[link:index.html"name="3] QAG adaptive integration
57
+ # The QAG algorithm is a simple adaptive integration procedure.
58
+ # The integration region is divided into subintervals, and on each iteration
59
+ # the subinterval with the largest estimated error is bisected.
60
+ # This reduces the overall error rapidly, as the subintervals become concentrated
61
+ # around local difficulties in the integrand. These subintervals are managed by
62
+ # a GSL::Integration::Workspace object, which handles the memory for the
63
+ # subinterval ranges, results and error estimates.
64
+ #
65
+ # === {}[link:index.html"name="3.1] GSL::Integration::Workspace class
66
+ # ---
67
+ # * GSL::Integration::Workspace.alloc(n = 1000)
68
+ #
69
+ # This creates a workspace sufficient to hold n double precision intervals,
70
+ # their integration results and error estimates.
71
+ #
72
+ # ---
73
+ # * GSL::Integration::Workspace#limit
74
+ # * GSL::Integration::Workspace#size
75
+ #
76
+ #
77
+ # ==== {}[link:index.html"name="3.1.1] Algorithms which require the workspace
78
+ # The algorithms described below require <tt>gsl_integration_workspace</tt> struct
79
+ # in C. In Ruby/GSL, the corresponding methods require
80
+ # a <tt>GSL::Integration::Workspace</tt> object in their arguments. But it is also
81
+ # possible to use these methods without workspace arguments: if it
82
+ # is not given, a workspace is created/destroyed internally. Thus
83
+ # method calls are as
84
+ #
85
+ # f = GSL::Function.alloc { |x| Math::sin(x)/x }
86
+ # p f.qag([a, b])
87
+ #
88
+ # or
89
+ # w = GSL::Integration::Workspace.alloc(limit)
90
+ # p f.qag([a, b], w)
91
+ #
92
+ # Explicit uses of a <tt>Workspace</tt> object reduce C function calls for memory
93
+ # allocations of workspace objects.
94
+ #
95
+ # === {}[link:index.html"name="3.2] Methods
96
+ # ---
97
+ # * GSL::Function#integration_qag([a, b], key = GSL::Integration::GAUSS61)
98
+ # * GSL::Function#integration_qag([a, b], key, w)
99
+ # * GSL::Function#integration_qag([a, b], w)
100
+ # * GSL::Function#integration_qag([a, b], [epsabs, epsrel], key)
101
+ # * GSL::Function#integration_qag([a, b], [epsabs, epsrel], key, w)
102
+ # * GSL::Function#qag(...)
103
+ # * GSL::Integration::qag(...)
104
+ #
105
+ # These methods apply an integration rule adaptively until an estimate of the
106
+ # integral of the reciever function over <tt>(a,b)</tt> is achieved within the
107
+ # desired absolute and relative error limits, <tt>epsabs</tt> and <tt>epsrel</tt>.
108
+ # One can give a <tt>GSL::Integration::Workspace</tt> object <tt>w</tt> with the
109
+ # last argument (option: if not given, the workspace is internally allocated and
110
+ # freed). The method returns an array with four elements
111
+ # <tt>[result, err, neval, status]</tt>.
112
+ # The integration rule is determined by the value of key, which should be
113
+ # chosen from the following symbolic names,
114
+ #
115
+ # GSL::Integration::GAUSS15 (key = 1)
116
+ # GSL::Integration::GAUSS21 (key = 2)
117
+ # GSL::Integration::GAUSS31 (key = 3)
118
+ # GSL::Integration::GAUSS41 (key = 4)
119
+ # GSL::Integration::GAUSS51 (key = 5)
120
+ # GSL::Integration::GAUSS61 (key = 6)
121
+ #
122
+ # corresponding to the 15, 21, 31, 41, 51 and 61 point Gauss-Kronrod rules. The
123
+ # higher-order rules give better accuracy for smooth functions,
124
+ # while lower-order rules save time when the function contains local
125
+ # difficulties, such as discontinuities.
126
+ #
127
+ # == {}[link:index.html"name="4] QAGS adaptive integration with singularities
128
+ # The presence of an integrable singularity in the integration region causes
129
+ # an adaptive routine to concentrate new subintervals around the singularity.
130
+ # As the subintervals decrease in size the successive approximations to the
131
+ # integral converge in a limiting fashion. This approach to the limit can be
132
+ # accelerated using an extrapolation procedure.
133
+ # The QAGS algorithm combines adaptive bisection with the Wynn epsilon-algorithm
134
+ # to speed up the integration of many types of integrable singularities.
135
+ #
136
+ # ---
137
+ # * GSL::Function#integration_qags([a, b], [epsabs = 0.0, epsrel = 1e-10], limit)
138
+ # * GSL::Function#integration_qags([a, b], [epsabs, epsrel], limit, w)
139
+ # * GSL::Function#integration_qags([a, b], [epsabs, epsrel], w)
140
+ # * GSL::Function#qags(...)
141
+ # * GSL::Integration::qags(...)
142
+ #
143
+ # These methods apply the Gauss-Kronrod 21-point integration rule
144
+ # adaptively until an estimate of the integral over <tt>(a,b)</tt> is
145
+ # achieved within the desired absolute and relative error limits,
146
+ # <tt>epsabs</tt> and <tt>epsrel</tt>. The results are extrapolated using the
147
+ # epsilon-algorithm, which accelerates the convergence of the integral
148
+ # in the presence of discontinuities and integrable singularities.
149
+ # The maximum number of subintervals is given by <tt>limit</tt>.
150
+ #
151
+ # * ex:
152
+ #
153
+ # proc = Proc.new{ |x, alpha| # integrant
154
+ # log(alpha*x)/sqrt(x)
155
+ # }
156
+ #
157
+ # # create the function, with the parameter alpha = 1.0
158
+ # f = GSL::Function.alloc(proc, 1.0)
159
+ #
160
+ # p f.integration_qags(0, 1)
161
+ #
162
+ # == {}[link:index.html"name="5] QAGP adaptive integration with known singular points
163
+ # ---
164
+ # * GSL::Function#integration_qagp(pts, [epsabs = 0.0, epsrel = 1e-10], limit = 1000, w)
165
+ # * GSL::Function#qagp(...)
166
+ # * GSL::Integration::qagp(...)
167
+ #
168
+ # These methods apply the adaptive integration algorithm QAGS taking
169
+ # account of the user-supplied locations of singular points. The array
170
+ # <tt>pts</tt> (a Ruby array or a GSL::Vector object) should contain the
171
+ # endpoints of the integration ranges defined by the integration region a
172
+ # nd locations of the singularities. For example, to integrate over the
173
+ # region <tt>(a,b)</tt> with break-points at x_1, x_2, x_3
174
+ # (where a < x_1 < x_2 < x_3 < b) the following <tt>pts</tt> array should be used
175
+ #
176
+ # pts[0] = a
177
+ # pts[1] = x_1
178
+ # pts[2] = x_2
179
+ # pts[3] = x_3
180
+ # pts[4] = b
181
+ #
182
+ # If you know the locations of the singular points in the integration region then this routine will be faster than QAGS.
183
+ #
184
+ # * ex:
185
+ # f454 = Function.alloc{ |x|
186
+ # x2 = x*x
187
+ # x3 = x2*x
188
+ # x3*log(((x2-1)*(x2-2)).abs)
189
+ # }
190
+ # pts = [0, 1, sqrt(2), 3] # range: [0, 3], singular points: [1, sqrt(2)]
191
+ # p f454.qagp(pts, 0.0, 1e-3) # <---- [52.7408061167272, 0.000175570384826074, 20, 0]
192
+ # # Expect: 61 log(2) + (77/4) log(7) - 27 = 52.7408061167272
193
+ #
194
+ # == {}[link:index.html"name="6] QAGI adaptive integration on infinite intervals
195
+ # ---
196
+ # * GSL::Function#integration_qagi([epsabs = 0.0, epsrel = 1e-10], limit = 1000, w)
197
+ # * GSL::Function#qagi(...)
198
+ # * GSL::Integration::qagi(...)
199
+ #
200
+ # These methods compute the integral of the function over the infinite
201
+ # interval (-infty,+infty). The integral is mapped onto the interval
202
+ # (0,1] using the transformation x = (1-t)/t. It is then integrated using
203
+ # the QAGS algorithm. The normal 21-point Gauss-Kronrod rule of QAGS is
204
+ # replaced by a 15-point rule, because the transformation can generate an
205
+ # integrable singularity at the origin. In this case a lower-order rule is
206
+ # more efficient.
207
+ #
208
+ # * ex
209
+ # f = Function.alloc{ |x| Math::exp(-x*x) }
210
+ # exact = Math::sqrt(Math::PI)
211
+ #
212
+ # result, = f.qagi
213
+ # puts("exp(-x*x), x = -infty --- +infty")
214
+ # printf("exact = %.18f\n", exact)
215
+ # printf("result = %.18f\n\n", result)
216
+ #
217
+ # ---
218
+ # * GSL::Function#integration_qagiu(a, epsabs = 0.0, epsrel = 1e-10, limit = 1000)
219
+ # * GSL::Function#integration_qagiu(a, epsabs = 0.0, epsrel = 1e-10, w)
220
+ # * GSL::Function#qagiu(...)
221
+ # * GSL::Integration::qagiu(...)
222
+ #
223
+ # These methods compute the integral of the function over the
224
+ # semi-infinite interval (a,+infty).
225
+ #
226
+ # ---
227
+ # * GSL::Function#integration_qagil(b, epsabs = 0.0, epsrel = 1e-10, limit = 1000)
228
+ # * GSL::Function#integration_qagil(b, epsabs = 0.0, epsrel = 1e-10, w)
229
+ # * GSL::Function#integration_qagil(b, [epsabs, epsrel], limit, w)
230
+ # * GSL::Function#qagil(...)
231
+ # * GSL::Integration::qagil(...)
232
+ #
233
+ # These methods compute the integral of the function over the
234
+ # semi-infinite interval (-infty,b).
235
+ #
236
+ # == {}[link:index.html"name="7] QAWC adaptive integration for Cauchy principal values
237
+ # ---
238
+ # * GSL::Function#integration_qawc([a, b], c, [epsabs = 0.0, epsrel = 1e-10], limit. 1000)
239
+ # * GSL::Function#qawc(...)
240
+ # * GSL::Function#qawc(...)
241
+ #
242
+ # These methods compute the Cauchy principal value of the integral over
243
+ # <tt>(a,b)</tt>, with a singularity at <tt>c</tt>. The adaptive bisection algorithm
244
+ # of QAG is used, with modifications to ensure that subdivisions do not occur
245
+ # at the singular point <tt>x = c</tt>. When a subinterval contains the point
246
+ # <tt>x = c</tt> or is close to it then a special 25-point modified
247
+ # Clenshaw-Curtis rule is used to control the singularity. Further away from
248
+ # the singularity the algorithm uses an ordinary 15-point Gauss-Kronrod
249
+ # integration rule.
250
+ #
251
+ # * ex:
252
+ # require 'gsl'
253
+ # f459 = Function.alloc { |x| 1.0/(5.0*x*x*x + 6.0) }
254
+ #
255
+ # p f459.qawc([-1.0, 5.0], 0, [0.0, 1e-3]) # Expect: log(125/631)/18
256
+ #
257
+ # == {}[link:index.html"name="8] QAWS adaptive integration for singular functions
258
+ # The QAWS algorithm is designed for integrands with algebraic-logarithmic
259
+ # singularities at the end-points of an integration region.
260
+ # In order to work efficiently the algorithm requires a precomputed
261
+ # table of Chebyshev moments.
262
+ #
263
+ # ---
264
+ # * GSL::Function#integration_qaws([a, b], table, [epsabs = 0.0, epsrel = 1e-10], limit = 1000)
265
+ # * GSL::Function#integration_qaws(a, b, table, epsabs, epsrel, limit, w)
266
+ # * GSL::Function#qaws(...)
267
+ # * GSL::Integration::qaws(...)
268
+ #
269
+ # These methods compute the integral of the function over the interval
270
+ # <tt>(a,b)</tt> with the singular weight function
271
+ # (x-a)^alpha (b-x)^beta log^mu (x-a) log^nu (b-x)
272
+ # The parameters <tt>[alpha, beta, mu, nu]</tt> is given by a Ruby array
273
+ # <tt>table</tt>, or by a <tt>GSL::Integration::QAWS_Table</tt> object.
274
+ #
275
+ # The adaptive bisection algorithm of QAG is used. When a subinterval contains one of the endpoints then a special 25-point modified Clenshaw-Curtis rule is used to control the singularities. For subintervals which do not include the endpoints an ordinary 15-point Gauss-Kronrod integration rule is used.
276
+ #
277
+ # * ex1:
278
+ # f458 = Function.alloc { |x|
279
+ # if x.zero?
280
+ # val = 0.0
281
+ # else
282
+ # u = log(x)
283
+ # v = 1.0 + u*u
284
+ # val = 1.0/(v*v)
285
+ # end
286
+ # val
287
+ # }
288
+ # table = [0.0, 0.0, 1, 0]
289
+ # p f458.qaws([0.0, 1.0], table, [0.0, 1e-10]) # Expect: -0.1892752
290
+ #
291
+ # * ex2:
292
+ # table = Integration::QAWS_Table.alloc(0.0, 0.0, 1, 0)
293
+ # p f458.qaws([0.0, 1.0], table, [0.0, 1e-10])
294
+ #
295
+ # == {}[link:index.html"name="9] QAWO adaptive integration for oscillatory functions
296
+ # The QAWO algorithm is designed for integrands with an oscillatory factor,
297
+ # sin(omega x) or cos(omega x). In order to work efficiently the algorithm
298
+ # requires a table of Chebyshev moments.
299
+ #
300
+ #
301
+ # ---
302
+ # * GSL::Function#integration_qawo(a, [epsabs = 0.0, epsrel = 1e-10], limit = 1000, w, table, )
303
+ # * GSL::Function#qawo(...)
304
+ # * GSL::Integration::qawo(...)
305
+ #
306
+ # This method uses an adaptive algorithm to compute the integral over
307
+ # <tt>[a,b]</tt> with the weight function sin(omega x) or cos(omega x) defined by
308
+ # the table <tt>table</tt>.
309
+ #
310
+ # * ex1:
311
+ # require("gsl")
312
+ # f456 = Function.alloc { |x|
313
+ # if x.zero?
314
+ # val = 0.0
315
+ # else
316
+ # val = Math::log(x)
317
+ # end
318
+ # val
319
+ # }
320
+ # table = [10.0*Math::PI, 1.0, Integration::SINE, 1000]
321
+ # p f456.qawo(0.0, [0.0, 1e-10], table)
322
+ #
323
+ # * ex2:
324
+ # table = Integration::QAWO_Table.alloc(10.0*Math::PI, 1.0, Integration::SINE, 1000)
325
+ # p f456.qawo(0.0, [0.0, 1e-10], table)
326
+ #
327
+ # == {}[link:index.html"name="10] QAWF adaptive integration for Fourier integrals
328
+ # ---
329
+ # * GSL::Function#integration_qawf(a, epsabs = 1e-10, limit = 1000, w, wc, table)
330
+ # * GSL::Function#integration_qawf(a, epsabs = 1e-10, limit = 1000, table)
331
+ # * GSL::Function#integration_qawf(a, epsabs = 1e-10, table)
332
+ # * GSL::Function#integration_qawf(a, table = 1000, table)
333
+ # * GSL::Function#integration_qawf(a, table)
334
+ # * GSL::Function#qawf(...)
335
+ # * GSL::Integration::qawf(...)
336
+ #
337
+ # This method attempts to compute a Fourier integral of the function over
338
+ # the semi-infinite interval [a,+infty).
339
+ #
340
+ # I = \int_a^{+infty} dx f(x) sin(omega x)
341
+ # I = \int_a^{+infty} dx f(x) cos(omega x)
342
+ #
343
+ # The parameter omega is taken from the table <tt>table</tt> (the length <tt>L|</tt>
344
+ # can take any value, since it is overridden by this function to a value
345
+ # appropriate for the fourier integration).
346
+ #
347
+ # * ex:
348
+ # f457 = Function.alloc { |x|
349
+ # if x.zero?
350
+ # val = 0.0
351
+ # else
352
+ # val = 1.0/Math::sqrt(x)
353
+ # end
354
+ # val
355
+ # }
356
+ # table = [PI/2.0, 1.0, GSL::Integration::COSINE, 1000]
357
+ # p f457.qawf(0.0, 1e-10, table) # 0.999999999927979, Expect 1
358
+ #
359
+ # In other style:
360
+ #
361
+ # limit = 1000
362
+ # table = Integration::QAWO_Table.alloc(PI/2.0, 1.0, GSL::Integration::COSINE, 1000)
363
+ # w = Integration::Workspace.alloc # default n is 1000
364
+ # wc = Integration::Workspace.alloc(limit)
365
+ #
366
+ # p f457.qawf(0.0, table)
367
+ # p f457.qawf(0.0, 1e-10, table)
368
+ # p f457.qawf(0.0, 1e-10, limit, table)
369
+ # p f457.qawf(0.0, limit, table)
370
+ # p f457.qawf(0.0, 1e-10, limit, w, wc, table)
371
+ # p f457.qawf(0.0, w, wc, table)
372
+ # p f457.qawf(0.0, limit, w, wc, table)
373
+ # p f457.qawf(0.0, limit, w, table) # Error
374
+ # p f457.qawf(0.0, limit, wc, table) # Error
375
+ #
376
+ # == {}[link:index.html"name="11] Gauss-Legendre integration
377
+ # (GSL-1.14)
378
+ # The fixed-order Gauss-Legendre integration routines are provided for fast integration of smooth functions with known polynomial order. The n-point Gauss-Legendre rule is exact for polynomials of order 2*n-1 or less. For example, these rules are useful when integrating basis functions to form mass matrices for the Galerkin method. Unlike other numerical integration routines within the library, these routines do not accept absolute or relative error bounds.
379
+ #
380
+ # ---
381
+ # * GSL::Integration::Glfixed_table.alloc(n)
382
+ #
383
+ # Determines the Gauss-Legendre abscissae and weights necessary for an <tt>n</tt>-point fixed order
384
+ # integration scheme. If possible, high precision precomputed coefficients are used.
385
+ # If precomputed weights are not available, lower precision coefficients are computed on the fly.
386
+ #
387
+ # ---
388
+ # * GSL::Function#glfixed(a, b, t)
389
+ #
390
+ # Applies the Gauss-Legendre integration rule contained in table <tt>t</tt> and returns the result.
391
+ #
392
+ # {prev}[link:files/rdoc/wavelet_rdoc.html]
393
+ # {next}[link:files/rdoc/rng_rdoc.html]
394
+ #
395
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
396
+ # {top}[link:files/rdoc/index_rdoc.html]
397
+ #
398
+ #