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,231 @@
1
+ #
2
+ # = Interpolation
3
+ # This chapter describes functions for performing interpolation.
4
+ # The library provides a variety of interpolation methods, including
5
+ # Cubic splines and Akima splines. The interpolation types are interchangeable,
6
+ # allowing different methods to be used without recompiling. Interpolations can
7
+ # be defined for both normal and periodic boundary conditions. Additional
8
+ # functions are available for computing derivatives and integrals of
9
+ # interpolating functions.
10
+ #
11
+ # 1. {Interpolation classes}[link:files/rdoc/interp_rdoc.html#1]
12
+ # 1. {Initializing interpolation objects}[link:files/rdoc/interp_rdoc.html#2]
13
+ # 1. {Index Look-up and Acceleration}[link:files/rdoc/interp_rdoc.html#3]
14
+ # 1. {Evaluation of Interpolating Functions}[link:files/rdoc/interp_rdoc.html#4]
15
+ # 1. {Higher level interface: GSL::Spline class}[link:files/rdoc/interp_rdoc.html#5]
16
+ # 1. {Class initialization}[link:files/rdoc/interp_rdoc.html#5.1]
17
+ # 1. {Evaluation}[link:files/rdoc/interp_rdoc.html#5.2]
18
+ # 1. {Finding and acceleration}[link:files/rdoc/interp_rdoc.html#5.3]
19
+ #
20
+ # == {}[link:index.html"name="1] Interpolation Classes
21
+ # * GSL
22
+ # * Interp (class)
23
+ # * Accel (class)
24
+ # * Spline (class)
25
+ #
26
+ # == {}[link:index.html"name="2] Initializing interpolation objects
27
+ #
28
+ # ---
29
+ # * GSL::Interp.alloc(T, n)
30
+ # * GSL::Interp.alloc(T, x, y)
31
+ # * GSL::Interp.alloc(x, y)
32
+ #
33
+ # These methods create an interpolation object of type <tt>T</tt> for <tt>n</tt>
34
+ # data-points.
35
+ #
36
+ # The library provides six types, which are specifiled by an identifier of a
37
+ # constant or a string:
38
+ #
39
+ # * Interp::LINEAR or "linear"
40
+ #
41
+ # Linear interpolation. This interpolation method does not require any additional memory.
42
+ # * Interp::POLYNOMIAL or "polynomial"
43
+ #
44
+ # Polynomial interpolation. This method should only be used for interpolating small numbers of points because polynomial interpolation introduces large oscillations, even for well-behaved datasets. The number of terms in the interpolating polynomial is equal to the number of points.
45
+ #
46
+ # * Interp::CSPLINE or "cspline"
47
+ #
48
+ # Cubic spline with natural boundary conditions.
49
+ # * Interp::CSPLINE_PERIODIC or "gsl_cspline_periodic" or "cspline_periodic"
50
+ #
51
+ # Cubic spline with periodic boundary conditions
52
+ # * Interp::AKIMA or "akima"
53
+ #
54
+ # Non-rounded Akima spline with natural boundary conditions. This method uses the non-rounded corner algorithm of Wodicka.
55
+ # * Interp::AKIMA_PERIODIC or "akima_periodic"
56
+ #
57
+ # Non-rounded Akima spline with periodic boundary conditions. This method uses the non-rounded corner algorithm of Wodicka.
58
+ #
59
+ # * ex: For cubic spline for 10 points,
60
+ # sp = Interp.alloc("cspline", 10)
61
+ #
62
+ # ---
63
+ # * GSL::Interp#init(xa, ya)
64
+ #
65
+ # This method initializes the interpolation object interp for the data
66
+ # <tt>(xa,ya)</tt> where <tt>xa</tt> and <tt>ya</tt> are vectors.
67
+ # The interpolation object (<tt>GSL::Interp</tt>) does not save the data
68
+ # vectors <tt>xa, ya</tt> and only stores the static state computed from the data.
69
+ # The <tt>xa</tt> vector is always assumed to be strictly ordered; the behavior
70
+ # for other arrangements is not defined.
71
+ #
72
+ #
73
+ # ---
74
+ # * GSL::Interp#name
75
+ #
76
+ # This returns the name of the interpolation type used by <tt>self</tt>.
77
+ #
78
+ #
79
+ #
80
+ # ---
81
+ # * GSL::Interp#min_size
82
+ #
83
+ # This returns the minimum number of points required by the interpolation
84
+ # type of <tt>self</tt>. For example, Akima spline interpolation requires
85
+ # a minimum of 5 points.
86
+ #
87
+ # == {}[link:index.html"name="3] Index Look-up and Acceleration
88
+ # ---
89
+ # * GSL::Interp.bsearch(xa, x, index_lo, index_hi)
90
+ #
91
+ # This returns the index i of the vector <tt>xa</tt> such that
92
+ # <tt>xa[i] <= x < x[i+1]</tt>. The index is searched for in the range
93
+ # <tt>[index_lo,index_hi]</tt>.
94
+ #
95
+ #
96
+ # ---
97
+ # * GSL::Interp#accel
98
+ #
99
+ # In C level, the library requires a <tt>gsl_interp_accel</tt> object,
100
+ # but it is hidden in Ruby/GSL. It is automatically allocated
101
+ # when a <tt>GSL::Interp</tt> object is created, stored in it,
102
+ # and destroyed when the <tt>Interp</tt> object
103
+ # is cleaned by the Ruby GC.
104
+ # This method is used to access to the <tt>Interp::Accel</tt> object
105
+ # stored in <tt>self</tt>.
106
+ #
107
+ # ---
108
+ # * GSL::Interp#find(xa, x)
109
+ # * GSL::Interp#accel_find(xa, x)
110
+ # * GSL::Interp::Accel#find(xa, x)
111
+ #
112
+ # This method performs a lookup action on the data array <tt>xa</tt>.
113
+ # This is how lookups are performed during evaluation
114
+ # of an interpolation. The function returns an index <tt>i</tt> such that
115
+ # <tt>xa[i] <= x < xa[i+1]</tt>.
116
+ #
117
+ #
118
+ # == {}[link:index.html"name="4] Evaluation of Interpolating Functions
119
+ #
120
+ # ---
121
+ # * GSL::Interp#eval(xa, ya, x)
122
+ # * GSL::Interp#eval_e(xa, ya, x)
123
+ #
124
+ # These methods return the interpolated value for a given point <tt>x</tt>,
125
+ # using the interpolation object <tt>self</tt>, data vectors <tt>xa</tt> and <tt>ya</tt>.
126
+ # The data <tt>x</tt> can be a <tt>Numeric, Vector, Matrix</tt> or an <tt>NArray</tt>.
127
+ # ---
128
+ # * GSL::Interp#eval_deriv(xa, ya, x)
129
+ # * GSL::Interp#eval_deriv_e(xa, ya, x)
130
+ #
131
+ # These methods return the derivative of an interpolated function for a
132
+ # given point <tt>x</tt>, using the interpolation object <tt>self</tt>,
133
+ # data vectors <tt>xa</tt> and <tt>ya</tt>.
134
+ #
135
+ # ---
136
+ # * GSL::Interp#eval_deriv2(xa, ya, x)
137
+ # * GSL::Interp#eval_deriv2_e(xa, ya, x)
138
+ #
139
+ # These methods return the second derivative of an interpolated function
140
+ # for a given point <tt>x</tt>, using the interpolation object <tt>self</tt>,
141
+ # data vectors <tt>xa</tt> and <tt>ya</tt>.
142
+ #
143
+ # ---
144
+ # * GSL::Interp#eval_integ(xa, ya, a, b)
145
+ # * GSL::Interp#eval_integ_e(xa, ya, a, b)
146
+ #
147
+ # These methods return the numerical integral result of an interpolated
148
+ # function over the range <tt>[a, b]</tt>, using the interpolation object <tt>self</tt>,
149
+ # data vectors <tt>xa</tt> and <tt>ya</tt>.
150
+ #
151
+ # == {}[link:index.html"name="5] Higher level interface: GSL::Spline class
152
+ # === {}[link:index.html"name="5.1] Class initialization
153
+ #
154
+ # ---
155
+ # * GSL::Spline.alloc(T, n)
156
+ # * GSL::Spline.alloc(T, x, y)
157
+ # * GSL::Spline.alloc(x, y, T)
158
+ #
159
+ # This creates a <tt>GSL::Spline</tt> object of type <tt>T</tt> for <tt>n</tt>
160
+ # data-points. The type <tt>T</tt> is the same as <tt>GSL::Interp</tt> class.
161
+ #
162
+ # These two are equivalent.
163
+ # * <tt>GSL::Spline.alloc</tt> and <tt>GSL::Spline#init</tt>
164
+ # sp = GSL::Spline.alloc(T, n)
165
+ # sp.init(x, y) # x and y are vectors of length n
166
+ # * <tt>GSL::Spline.alloc</tt> with two vectors
167
+ # sp = GSL::Spline.alloc(T, x, y)
168
+ # If <tt>T</tt> is not given, "cspline" is used.
169
+ #
170
+ # ---
171
+ # * GSL::Spline#init(xa, ya)
172
+ #
173
+ # This initializes a <tt>GSL::Spline</tt> object <tt>self</tt> for the data
174
+ # (<tt>xa, ya</tt>) where <tt>xa</tt> and <tt>ya</tt> are Ruby arrays of equal sizes
175
+ # or <tt>GSL::Vector</tt>.
176
+ #
177
+ # ---
178
+ # * GSL::Spline#name
179
+ #
180
+ # This returns the name of the spline type used by <tt>self</tt>.
181
+ #
182
+ # === {}[link:index.html"name="5.2] Evaluation
183
+ # ---
184
+ # * GSL::Spline#eval(x)
185
+ #
186
+ # This returns the interpolated value for a given point <tt>x</tt>.
187
+ # The data <tt>x</tt> can be a <tt>Numeric, Vector, Matrix</tt> or an <tt>NArray</tt>.
188
+ #
189
+ # NOTE: In a GSL-C program, a <tt>gsl_interp_accel</tt> object is required to use
190
+ # the function <tt>gsl_spline_eval</tt>.
191
+ # In Ruby/GSL, the <tt>gsl_interp_accel</tt> is hidden, it is automatically
192
+ # allocated when a <tt>GSL::Spline</tt> object is created,
193
+ # and also destroyed when the <tt>Spline</tt> object
194
+ # is cleaned by the Ruby GC. The accel object can be accessed via the method
195
+ # <tt>GSL::Spline#accel</tt>.
196
+ #
197
+ # ---
198
+ # * GSL::Spline#eval_deriv(x)
199
+ #
200
+ # This returns the derivative of an interpolated function for a given point <tt>x</tt>, usingthe data arrays <tt>xa</tt> and <tt>ya</tt> set by <tt>init</tt>.
201
+ #
202
+ # ---
203
+ # * GSL::Spline#eval_deriv2(x)
204
+ #
205
+ # This returns the second derivative at <tt>x</tt>.
206
+ #
207
+ # ---
208
+ # * GSL::Spline#eval_integ(a, b)
209
+ #
210
+ # Returns the numerical integral over the range [<tt>a, b</tt>].
211
+ #
212
+ # === {}[link:index.html"name="5.3] Finding and acceleration
213
+ # ---
214
+ # * GSL::Spline#find(xa, x)
215
+ # * GSL::Spline#accel_find(xa, x)
216
+ #
217
+ # This method performs a lookup action on the data array <tt>xa</tt>.
218
+ # This is how lookups are performed during evaluation
219
+ # of an interpolation. The function returns an index <tt>i</tt> such that
220
+ # <tt>xa[i] <= x < xa[i+1]</tt>.
221
+ #
222
+ # See also the GSL manual and the examples in <tt>examples/</tt>
223
+ #
224
+ # {prev}[link:files/rdoc/odeiv_rdoc.html]
225
+ # {next}[link:files/rdoc/diff_rdoc.html]
226
+ #
227
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
228
+ # {top}[link:files/rdoc/index_rdoc.html]
229
+ #
230
+ #
231
+ #
@@ -0,0 +1,27 @@
1
+ #
2
+ # = Introduction
3
+ #
4
+ # The GNU Scientific Library ({GSL}[http://sources.redhat.com/gsl/"target="_top])
5
+ # is a collection of routines for numerical computing.
6
+ # The routines have been written from scratch in C, and present a modern Applications
7
+ # Programming Interface (API) for C programmers, allowing wrappers to be
8
+ # written for very high level languages. The source code is distributed
9
+ # under the GNU General Public License.
10
+ #
11
+ # {Ruby/GSL}[http://rubyforge.org/projects/rb-gsl/"target="_top] is a Ruby
12
+ # extension for GSL. This provides higher-level interfaces to the GSL functions.
13
+ #
14
+ # == {}[link:index.html"name="1] Requirements
15
+ # * GSL (1.4 or later recommended)
16
+ # * ANSI C compiler
17
+ # * Ruby (1.8 or later recommended)
18
+ #
19
+ # == {}[link:index.html"name="2] Installation
20
+ # See {here}[link:files/rdoc/index_rdoc.html].
21
+ #
22
+ # {next}[link:files/rdoc/use_rdoc.html]
23
+ #
24
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
25
+ # {top}[link:files/rdoc/index_rdoc.html]
26
+ #
27
+ #
@@ -0,0 +1,681 @@
1
+ #
2
+ # = Linear Algebra
3
+ #
4
+ # Contents:
5
+ # 1. {LU Decomposition}[link:files/rdoc/linalg_rdoc.html#1]
6
+ # 1. {QR Decomposition}[link:files/rdoc/linalg_rdoc.html#2]
7
+ # 1. {QR Decomposition with Column Pivoting}[link:files/rdoc/linalg_rdoc.html#3]
8
+ # 1. {Singular Value Decomposition}[link:files/rdoc/linalg_rdoc.html#4]
9
+ # 1. {Cholesky Decomposition}[link:files/rdoc/linalg_rdoc.html#5]
10
+ # 1. {Tridiagonal Decomposition of Real Symmetric Matrices}[link:files/rdoc/linalg_rdoc.html#6]
11
+ # 1. {Tridiagonal Decomposition of Hermitian Matrices}[link:files/rdoc/linalg_rdoc.html#7]
12
+ # 1. {Hessenberg Decomposition of Real Matrices}[link:files/rdoc/linalg_rdoc.html#8]
13
+ # 1. {Hessenberg-Triangular Decomposition of Real Matrices}[link:files/rdoc/linalg_rdoc.html#9]
14
+ # 1. {Bidiagonalization}[link:files/rdoc/linalg_rdoc.html#10]
15
+ # 1. {Householder Transformations}[link:files/rdoc/linalg_rdoc.html#11]
16
+ # 1. {Householder solver for linear systems}[link:files/rdoc/linalg_rdoc.html#12]
17
+ # 1. {Tridiagonal Systems}[link:files/rdoc/linalg_rdoc.html#13]
18
+ # 1. {Balancing}[link:files/rdoc/linalg_rdoc.html#14]
19
+ # 1. {NArray}[link:files/rdoc/linalg_rdoc.html#15]
20
+ #
21
+ # == {}[link:index.html"name="1] LU Decomposition
22
+ # ---
23
+ # * GSL::Linalg::LU.decomp(A)
24
+ # * GSL::Matrix#LU_decomp
25
+ #
26
+ # These method calculate the LU decomposition of the matrix. The returned
27
+ # value is an array of <tt>[LU, perm, sign]</tt>.
28
+ #
29
+ # Examples:
30
+ #
31
+ # 1. Singleton method of the <tt>GSL::Linalg::LU</tt> module
32
+ #
33
+ # >> m = Matrix[1..9, 3, 3]
34
+ # => GSL::Matrix:
35
+ # [ 1.000e+00 2.000e+00 3.000e+00
36
+ # 4.000e+00 5.000e+00 6.000e+00
37
+ # 7.000e+00 8.000e+00 9.000e+00 ]
38
+ # >> lu, perm, sign = Linalg::LU.decomp(m)
39
+ #
40
+ # 1. Instance method of <tt>GSL::Matrix</tt> class
41
+ #
42
+ # >> lu, perm, sign = m.LU_decomp
43
+ #
44
+ # ---
45
+ # * GSL::Linalg::LU.solve(A, b)
46
+ # * GSL::Linalg::LU.solve(lu, perm, b)
47
+ # * GSL::Matrix#LU_solve(b)
48
+ # * GSL::Linalg::LUMatrix#solve(perm, b)
49
+ #
50
+ # The following is an example to solve a linear system
51
+ #
52
+ # A x = b, b = [1, 2, 3, 4]
53
+ #
54
+ # using LU decomposition.
55
+ #
56
+ # 1. Singleton method of the <tt>GSL::Linalg::LU</tt> module
57
+ #
58
+ # A = Matrix[[0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
59
+ # [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85]]
60
+ # lu, perm, sign = A.LU_decomp
61
+ # b = Vector[1, 2, 3, 4]
62
+ # x = Linalg::LU.solve(lu, perm, b)
63
+ #
64
+ # 1. Instance method of <tt>GSL::Linalg::LUMatrix</tt> class
65
+ #
66
+ # lu, perm, sign = A.LU_decomp # lu is an instance of Linalg::LUMatrix class
67
+ # b = Vector[1, 2, 3, 4]
68
+ # x = lu.solve(perm, b)
69
+ #
70
+ # 1. Solve directly
71
+ #
72
+ # x = Linalg::LU.solve(A, b) # LU decomposition is calculated internally (A is not modified)
73
+ #
74
+ # ---
75
+ # * GSL::Linalg::LU.svx(A, b)
76
+ # * GSL::Linalg::LU.svx(lu, perm, b)
77
+ # * GSL::Matrix#svx(b)
78
+ # * GSL::Linalg::LUMatrix#svx(perm, b)
79
+ #
80
+ # These solve the system Ax = b. The input vector <tt>b</tt> is overwitten by
81
+ # the solution <tt>x</tt>.
82
+ #
83
+ # ---
84
+ # * GSL::Linalg::LU.refine(A, lu, perm, b, x)
85
+ #
86
+ # This method applys an iterative improvement to <tt>x</tt>,
87
+ # the solution of <tt>A x = b</tt>, using the LU decomposition of <tt>A</tt>.
88
+ #
89
+ # ---
90
+ # * GSL::Linalg::LU.invert(A)
91
+ # * GSL::Linalg::LU.invert(lu, perm)
92
+ # * GSL::Matrix#invert
93
+ # * GSL::Linalg::LUMatrix#invert(perm)
94
+ #
95
+ # These computes and returns the inverse of the matrix.
96
+ #
97
+ # ---
98
+ # * GSL::Linalg::LU.det(A)
99
+ # * GSL::Linalg::LU.det(lu, signum)
100
+ # * GSL::Matrix#det
101
+ # * GSL::Linalg::LUMatrix#det(signum)
102
+ #
103
+ # These methods return the determinant of the matrix.
104
+ #
105
+ # === {}[link:index.html"name="1.1] {Complex LU decomposition}[link:files/rdoc/linalg_complex_rdoc.html]
106
+ #
107
+ # == {}[link:index.html"name="2] QR decomposition
108
+ #
109
+ # ---
110
+ # * GSL::Linalg::QR_decomp(A)
111
+ # * GSL::Linalg::QR.decomp(A)
112
+ # * GSL::Matrix#QR_decomp
113
+ #
114
+ # These compute QR decomposition of the matrix and return an array [QR, tau].
115
+ #
116
+ # 1. Singleton method of the module <tt>GSL::Linalg</tt>
117
+ # qr, tau = Linalg::QR_decomp(m)
118
+ # p qr.class # GSL::Linalg::QRMatrix, subclass of GSL::Matrix
119
+ # p tau.class # GSL::Linalg::TauVector, subclass of GSL::Vector
120
+ # 1. Singleton method of the module <tt>GSL::Linalg:QR</tt>
121
+ # qr, tau = Linalg::QR.decomp(m)
122
+ # 1. Instance method of <tt>GSL::Matrix</tt>
123
+ # qr, tau = m.QR_decomp
124
+ #
125
+ # ---
126
+ # * GSL::Linalg::QR.solve(A, b)
127
+ # * GSL::Linalg::QR.solve(QR, tau, b)
128
+ # * GSL::Matrix#QR_solve(b)
129
+ # * GSL::Linalg::QRMatrix#solve(tau, b)
130
+ #
131
+ # Solve the system A x = b using the QR decomposition.
132
+ #
133
+ # * Ex1:
134
+ # m = Matrix.alloc(...)
135
+ # b = Vector.alloc(...)
136
+ # x = Linalg::QR.solve(m, b)
137
+ # * Ex2:
138
+ # x = m.QR_solve(b)
139
+ # * Ex3:
140
+ # qr, tau = Linalg::QR.decomp(m) # or m.QR_decomp
141
+ # x = Linalg::QR.solve(qr, tau, b)
142
+ # * Ex4:
143
+ # qr, tau = m.QR_decomp
144
+ # x = qr.solve(tau, b)
145
+ #
146
+ # ---
147
+ # * GSL::Linalg::QR.svx(A, x)
148
+ # * GSL::Linalg::QR.svx(QR, tau, x)
149
+ # * GSL::Matrix#QR_svx(x)
150
+ # * GSL::Linalg::QRMatrix#svx(tau, x)
151
+ #
152
+ # Solve the system A x = b. The input vector <tt>x</tt> is first give by
153
+ # the right-hand side vector <tt>b</tt>, and is overwritten by the solution.
154
+ #
155
+ # ---
156
+ # * GSL::Linalg::QR.unpack(QR, tau)
157
+ # * GSL::Linalg::QRMatrix#unpack(tau)
158
+ #
159
+ # Unpack the encoded QR decomposition <tt>QR,tau</tt> and return an array
160
+ # <tt>[Q, R]</tt>.
161
+ #
162
+ # Ex:
163
+ # >> m = Matrix[1..9, 3, 3]
164
+ # => GSL::Matrix:
165
+ # [ 1.000e+00 2.000e+00 3.000e+00
166
+ # 4.000e+00 5.000e+00 6.000e+00
167
+ # 7.000e+00 8.000e+00 9.000e+00 ]
168
+ # >> qr, tau = m.QR_decomp
169
+ # >> q, r = qr.unpack(tau)
170
+ # >> q*r # Reconstruct the metrix m
171
+ # => GSL::Matrix:
172
+ # [ 1.000e+00 2.000e+00 3.000e+00
173
+ # 4.000e+00 5.000e+00 6.000e+00
174
+ # 7.000e+00 8.000e+00 9.000e+00 ]
175
+ #
176
+ # ---
177
+ # * GSL::Linalg::QR.QRsolve(Q, R, tau)
178
+ #
179
+ # This method solves the system <tt>R x = Q^T b</tt> for <tt>x</tt>.
180
+ # It can be used when the QR decomposition of a matrix is available
181
+ # in unpacked form as <tt>Q,R</tt>.
182
+ #
183
+ # == {}[link:index.html"name="3] QR Decomposition with Column Pivoting
184
+ # ---
185
+ # * GSL::Linalg::QRPT.decomp(A)
186
+ # * GSL::Matrix#QRPT_decomp
187
+ #
188
+ # These methods factorize the M-by-N matrix <tt>A</tt> into the QRP^T decomposition A = Q R P^T, and return an array <tt>[QR, tau, perm, signum]</tt>.
189
+ #
190
+ # * Ex1:
191
+ # require("gsl")
192
+ # include GSL::Linalg
193
+ # m = Matrix.alloc(...)
194
+ # qr, tau, perm = QRPT.decomp(m)
195
+ # p qr.class # GSL::Linalg::QRPTMatrix, subclass of GSL::Matrix
196
+ #
197
+ # * Ex2:
198
+ # qr, tau, perm = m.QROT_decomp
199
+ #
200
+ # ---
201
+ # * GSL::Linalg::QRPT.decomp2(A)
202
+ # * GSL::Matrix#QRPT_decomp2
203
+ #
204
+ # These return an array <tt>[Q, R, tau, perm, signum]</tt>.
205
+ #
206
+ # * Ex
207
+ # q, r, tau, perm = QRPT.decomp2(m)
208
+ # p q.class <----- GSL::Linalg::QMatrix
209
+ # p r.class <----- GSL::Linalg::RMatrix
210
+ #
211
+ # ---
212
+ # * GSL::Linalg::QRPT.solve(m, b)
213
+ # * GSL::Linalg::QRPT.solve(qr, tau, perm, b)
214
+ # * GSL::Matrix#QRPT_solve(A, b)
215
+ # * GSL::Linalg::QRPQMatrix#solve(qr, tau, perm, b)
216
+ #
217
+ # These methods solve the system <tt>A x = b</tt> using the QRP^T decomposition of
218
+ # <tt>A</tt> into <tt>QR, tau, perm</tt>. The solution <tt>x</tt> is returned as a Vector.
219
+ #
220
+ # * Ex1:
221
+ # m = Matrix.alloc(...)
222
+ # qr, tau, perm = m.QRPT_decomp
223
+ # b = Vector.alloc([1, 2, 3, 4])
224
+ # x = Linalg::QRPT.solve(qr, tau, perm, b)
225
+ # * Ex2:
226
+ # x = Linalg::QRPT.solve(m, b)
227
+ # * Ex3:
228
+ # x = qr.solve(tau, p, b)
229
+ # * Ex4:
230
+ # x = m.QRPT_solve(b)
231
+ #
232
+ # ---
233
+ # * GSL::Linalg::QRPT.svx(m, b)
234
+ # * GSL::Linalg::QRPT.svx(qr, tau, perm, b)
235
+ # * GSL::Matrix#QRPT_svx(A, b)
236
+ #
237
+ # These methods solve the system <tt>A x = b</tt> using the QRP^T decomposition of
238
+ # <tt>A</tt> into <tt>QR, tau, perm</tt>. The input <tt>b</tt> is overwritten by the solution
239
+ # <tt>x</tt>.
240
+ #
241
+ # ---
242
+ # * GSL::Linalg::QRPT.QRsolve(q, r, tau, perm, b)
243
+ #
244
+ # This method solves the system <tt>R P^T x = Q^T b</tt> for x.
245
+ # It can be used when the QR decomposition of a matrix is available in
246
+ # unpacked form as <tt>q, r</tt> obtained by the method <tt>decomp2</tt>.
247
+ #
248
+ # * Ex:
249
+ # q, r, tau, perm = QRPT_decomp2
250
+ # x = Linalg::QRPT.QRsolve(q, r, perm, b)
251
+ #
252
+ # ---
253
+ # * GSL::Linalg::QRPT.update(q, r, perm, u, v)
254
+ # * GSL::Linalg::QRPT.Rsolve(qr, perm, b)
255
+ # * GSL::Linalg::QRPTMatrix#Rsolve(perm, b)
256
+ # * GSL::Linalg::QRPT.Rsvx(qr, perm, b)
257
+ # * GSL::Linalg::QRPTMatrix#Rsvx(perm, b)
258
+ #
259
+ #
260
+ # == {}[link:index.html"name="4] Singular Value Decomposition
261
+ # ---
262
+ # * GSL::Linalg::SV.decomp(A[, work])
263
+ # * GSL::Matrix#SV_decomp([work])
264
+ #
265
+ # These methods factorize the M-by-N matrix <tt>A</tt> into the singular value
266
+ # decomposition <tt>A = U S V^T</tt> using the Golub-Reinsch SVD algorithm,
267
+ # and return an array <tt>[U, V, S]</tt>.
268
+ #
269
+ # Ex:
270
+ # >> m = Matrix[[3, 5, 2], [5, 1, 4], [7, 6, 3]]
271
+ # => GSL::Matrix:
272
+ # [ 3.000e+00 5.000e+00 2.000e+00
273
+ # 5.000e+00 1.000e+00 4.000e+00
274
+ # 7.000e+00 6.000e+00 3.000e+00 ]
275
+ # >> u, v, s = m.SV_decomp # u, v: Matrix, s: Vector (singular values)
276
+ # >> u*u.trans # u is orthnormal
277
+ # => GSL::Matrix:
278
+ # [ 1.000e+00 2.452e-17 -4.083e-16
279
+ # 2.452e-17 1.000e+00 -3.245e-16
280
+ # -4.083e-16 -3.245e-16 1.000e+00 ]
281
+ # >> v*v.trans # v is also orthnormal
282
+ # => GSL::Matrix:
283
+ # [ 1.000e+00 3.555e-17 -1.867e-16
284
+ # 3.555e-17 1.000e+00 -1.403e-16
285
+ # -1.867e-16 -1.403e-16 1.000e+00 ]
286
+ # >> u*Matrix.diagonal(s)*v.trans # Reconstruct the matrix
287
+ # => GSL::Matrix:
288
+ # [ 3.000e+00 5.000e+00 2.000e+00
289
+ # 5.000e+00 1.000e+00 4.000e+00
290
+ # 7.000e+00 6.000e+00 3.000e+00 ]
291
+ #
292
+ # ---
293
+ # * GSL::Linalg::SV.decomp_mod(A)
294
+ # * GSL::Matrix#SV_decomp_mod
295
+ #
296
+ # These compute the SVD using the modified Golub-Reinsch algorithm,
297
+ # which is faster for M>>N.
298
+ #
299
+ # ---
300
+ # * GSL::Linalg::SV.decomp_jacobi(A)
301
+ # * GSL::Matrix#SV_decomp_jacobi
302
+ #
303
+ # These compute the SVD using one-sided Jacobi orthogonalization.
304
+ # The Jacobi method can compute singular values to higher relative accuracy
305
+ # than Golub-Reinsch algorithms.
306
+ #
307
+ # ---
308
+ # * GSL::Linalg::SV.solve(A, b)
309
+ # * GSL::Linalg::SV.solve(U, V, S, b)
310
+ # * GSL::Matrix#SV_solve(b)
311
+ #
312
+ # These methods solve the system <tt>A x = b</tt> using the singular value
313
+ # decomposition <tt>U, S, V</tt> of <tt>A</tt>.
314
+ #
315
+ # * Ex1:
316
+ # m = Matrix.alloc(...)
317
+ # b = Vector.alloc(...)
318
+ # u, v, s = GSL::Linalg::SV.decomp(m)
319
+ # x = GSL::Linalg::SV.solve(u, v, s, b)
320
+ # * Ex2:
321
+ # x = GSL::Linalg::SV.solve(m, b)
322
+ # * Ex3:
323
+ # x = m.SV_solve(b)
324
+ #
325
+ # == {}[link:index.html"name="6] Cholesky Decomposition
326
+ # A symmetric, positive definite square matrix <tt>A</tt> has a Cholesky decomposition
327
+ # into a product of a lower triangular matrix L and its transpose L^T,
328
+ # as <tt>A = L L^T</tt>. This is sometimes referred to as taking the square-root of a
329
+ # matrix. The Cholesky decomposition can only be carried out when all the eigenvalues
330
+ # of the matrix are positive. This decomposition can be used to convert the linear
331
+ # system <tt>A x = b</tt> into a pair of triangular systems (<tt>L y = b, L^T x = y</tt>),
332
+ # which can be solved by forward and back-substitution.
333
+ #
334
+ # ---
335
+ # * GSL::Linalg::Cholesky.decomp(A)
336
+ #
337
+ # This method factorizes the positive-definite square matrix <tt>A</tt>
338
+ # into the Cholesky decomposition <tt>A = L L^T</tt>.
339
+ # The upper triangular part of the matrix returned contains L^T, the diagonal terms
340
+ # being identical for both L and L^T. If the matrix is not positive-definite
341
+ # then the decomposition will fail.
342
+ #
343
+ # Ex:
344
+ # >> m = Matrix.pascal(3)
345
+ # => GSL::Matrix
346
+ # [ 1.000e+00 1.000e+00 1.000e+00
347
+ # 1.000e+00 2.000e+00 3.000e+00
348
+ # 1.000e+00 3.000e+00 6.000e+00 ]
349
+ # >> c = Linalg::Cholesky.decomp(m)
350
+ # => GSL::Linalg::Cholesky::CholeskyMatrix
351
+ # [ 1.000e+00 1.000e+00 1.000e+00
352
+ # 1.000e+00 1.000e+00 2.000e+00
353
+ # 1.000e+00 2.000e+00 1.000e+00 ]
354
+ # >> l = c.lower
355
+ # => GSL::Matrix
356
+ # [ 1.000e+00 0.000e+00 0.000e+00
357
+ # 1.000e+00 1.000e+00 0.000e+00
358
+ # 1.000e+00 2.000e+00 1.000e+00 ]
359
+ # >> (l*l.trans) == m
360
+ # => true
361
+ #
362
+ # ---
363
+ # * GSL::Linalg::Cholesky.solve(cholesky, b)
364
+ # * GSL::Linalg::Cholesky.svx(cholesky, x)
365
+ #
366
+ # These methods solve the system <tt>A x = b</tt> using the Cholesky decomposition
367
+ # of <tt>A</tt> into the matrix <tt>cholesky</tt> given by <tt>GSL::Linalg::Cholesky.decomp</tt>.
368
+ #
369
+ # === {}[link:index.html"name="5.1] {Complex Cholesky decomposition}[link:files/rdoc/cholesky_complex_rdoc.html]
370
+ #
371
+ # == {}[link:index.html"name="6] Tridiagonal Decomposition of Real Symmetric Matrices
372
+ # ---
373
+ # * GSL::Linalg::Symmtd::decomp(A)
374
+ #
375
+ # Factorizes the symmetric square matrix <tt>A</tt> into the symmetric
376
+ # tridiagonal decomposition Q T Q^T, and returns the results
377
+ # <tt>(A', tau)</tt>. On output the diagonal and subdiagonal part of the
378
+ # matrix <tt>A'</tt> contain the tridiagonal matrix <tt>T</tt>.
379
+ # The remaining lower triangular part of the matrix <tt>A'</tt> contains
380
+ # the Householder vectors which, together with the Householder
381
+ # coefficients <tt>tau</tt>, encode the orthogonal matrix <tt>Q</tt>.
382
+ # This storage scheme is the same as used by LAPACK.
383
+ # The upper triangular part of <tt>A</tt> is not referenced.
384
+ # ---
385
+ # * GSL::Linalg::Symmtd::unpack(A', tau)
386
+ #
387
+ # Unpacks the encoded symmetric tridiagonal decomposition <tt>(A', tau)</tt>
388
+ # obtained from <tt>GSL::Linalg::Symmtd::decomp</tt> into the orthogonal
389
+ # matrix <tt>Q</tt>, the vector of diagonal elements <tt>diag</tt>
390
+ # and the vector of subdiagonal elements <tt>subdiag</tt>.
391
+ # ---
392
+ # * GSL::Linalg::Symmtd::unpack_T(A', tau)
393
+ #
394
+ # Unpacks the diagonal and subdiagonal of the encoded symmetric tridiagonal
395
+ # decomposition <tt>(A', tau)</tt> obtained from
396
+ # <tt>GSL::Linalg::Symmtd::decomp</tt> into the vectors
397
+ # <tt>diag</tt> and <tt>subdiag</tt>.
398
+ #
399
+ # == {}[link:index.html"name="7] Tridiagonal Decomposition of Hermitian Matrices
400
+ # ---
401
+ # * GSL::Linalg::Hermtd::decomp(A)
402
+ #
403
+ # Factorizes the hermitian matrix <tt>A</tt> into the symmetric tridiagonal
404
+ # decomposition U T U^T, and returns the result as <tt>(A', tau)</tt>.
405
+ # On output the real parts of the diagonal and subdiagonal part of the
406
+ # matrix <tt>A'</tt> contain the tridiagonal matrix <tt>T</tt>.
407
+ # The remaining lower triangular part of the matrix <tt>A'</tt> contains
408
+ # the Householder vectors which, together with the Householder
409
+ # coefficients <tt>tau</tt>, encode the orthogonal matrix <tt>Q</tt>.
410
+ # This storage scheme is the same as used by LAPACK.
411
+ # The upper triangular part of <tt>A</tt> and imaginary parts of the diagonal
412
+ # are not referenced.
413
+ #
414
+ # ---
415
+ # * GSL::Linalg::Hermtd::unpack(A', tau)
416
+ #
417
+ # Unpacks the encoded tridiagonal decomposition <tt>(A', tau)</tt>
418
+ # obtained from <tt>GSL::Linalg::Hermtd::decomp</tt> into the unitary matrix
419
+ # <tt>U</tt>, the real vector of diagonal elements <tt>diag</tt> and
420
+ # the real vector of subdiagonal elements <tt>subdiag</tt>.
421
+ #
422
+ # ---
423
+ # * GSL::Linalg::Hermtd::unpack_T(A', tau)
424
+ #
425
+ # Unpacks the diagonal and subdiagonal of the encoded tridiagonal
426
+ # decomposition <tt>(A, tau)</tt> obtained from the
427
+ # <tt>GSL::Linalg::Hermtd::decomp</tt>
428
+ # into the real vectors <tt>diag</tt> and <tt>subdiag</tt>.
429
+ #
430
+ # == {}[link:index.html"name="8] Hessenberg Decomposition of Real Matrices
431
+ # ---
432
+ # * GSL::Linalg::Hessenberg::decomp(A)
433
+ # * GSL::Linalg::hessenberg_decomp(A)
434
+ #
435
+ # Computes the Hessenberg decomposition of the matrix <tt>A</tt>
436
+ # by applying the similarity transformation <tt>H = U^T A U</tt>, and returns
437
+ # the result as <tt>(A', tau</tt>. On output, <tt>H</tt> is stored in the upper
438
+ # portion of <tt>A'</tt>. The information required to construct the matrix
439
+ # <tt>U</tt> is stored in the lower triangular portion of <tt>A'</tt>.
440
+ # <tt>U</tt> is a product of N - 2 Householder matrices.
441
+ # The Householder vectors are stored in the lower portion of <tt>A'</tt>
442
+ # (below the subdiagonal) and the Householder coefficients are stored
443
+ # in the vector <tt>tau</tt>.
444
+ #
445
+ # ---
446
+ # * GSL::Linalg::Hessenberg::unpack(A', tau)
447
+ # * GSL::Linalg::hessenberg_unpack(A', tau)
448
+ #
449
+ # Constructs the orthogonal matrix <tt>U</tt> and returns it
450
+ # from the information stored in the Hessenberg matrix <tt>A'</tt>
451
+ # along with the vector <tt>tau</tt>. <tt>A'</tt> and <tt>tau</tt>
452
+ # are outputs from <tt>GSL::Linalg::Hessenberg::decomp</tt>.
453
+ #
454
+ # ---
455
+ # * GSL::Linalg::Hessenberg::unpack_accum(A', tau, V = I)
456
+ # * GSL::Linalg::hessenberg_unpack_accum(A', tau, V = I)
457
+ #
458
+ # This method is similar to <tt>GSL::Linalg::Hessenberg::unpack</tt>,
459
+ # except it accumulates the matrix <tt>U</tt> into <tt>V</tt>, so that
460
+ # <tt>V' = VU</tt>, and returns <tt>V</tt>. Setting V to the identity matrix
461
+ # provides the same result <tt>GSL::Linalg::Hessenberg::unpack</tt>.
462
+ #
463
+ # ---
464
+ # * GSL::Linalg::Hessenberg::set_zero(A')
465
+ # * GSL::Linalg::hessenberg_set_zero(A')
466
+ #
467
+ # Sets the lower triangular portion of <tt>A'</tt>, below the subdiagonal,
468
+ # to zero.
469
+ # It is useful for clearing out the Householder vectors after calling
470
+ # <tt>GSL::Linalg::Hessenberg::decomp</tt>.
471
+ #
472
+ # == {}[link:index.html"name="9] Hessenberg-Triangular Decomposition of Real Matrices
473
+ # ---
474
+ # * GSL::Linalg::hesstri_decomp(A, B)
475
+ # * GSL::Linalg::hesstri_decomp(A, B, work)
476
+ # * GSL::Linalg::hesstri_decomp(A, B, U, V)
477
+ # * GSL::Linalg::hesstri_decomp(A, B, U, V, work)
478
+ #
479
+ # Compute the Hessenberg-Triangular decomposition of the matrix pair
480
+ # <tt>(A, B)</tt>, and return <tt>(H, R</tt>.
481
+ # If U and V are provided (they may be null), the similarity
482
+ # transformations are stored in them. <tt>work</tt> is an additional workspace
483
+ # of length <tt>N</tt>.
484
+ #
485
+ # ---
486
+ # * GSL::Linalg::hesstri_decomp!(A, B)
487
+ # * GSL::Linalg::hesstri_decomp!(A, B, work)
488
+ # * GSL::Linalg::hesstri_decomp!(A, B, U, V)
489
+ # * GSL::Linalg::hesstri_decomp!(A, B, U, V, work)
490
+ #
491
+ # Compute the Hessenberg-Triangular decomposition of the matrix pair
492
+ # <tt>(A, B)</tt>. On output, <tt>H</tt> is stored in <tt>A</tt>,
493
+ # and <tt>R</tt> is stored in <tt>B</tt>.
494
+ # If U and V are provided (they may be null), the similarity
495
+ # transformations are stored in them. <tt>work</tt> is an additional workspace
496
+ # of length <tt>N</tt>.
497
+ #
498
+ # == {}[link:index.html"name="10] Bidiagonalization
499
+ # ---
500
+ # * GSL::Linalg::Bidiag::decomp!(A)
501
+ # * GSL::Linalg::bidiag_decomp!(A)
502
+ # * GSL::Linalg::Bidiag::decomp(A)
503
+ # * GSL::Linalg::bidiag_decomp(A)
504
+ #
505
+ #
506
+ # ---
507
+ # * GSL::Linalg::Bidiag::unpack
508
+ # * GSL::Linalg::bidiag_unpack
509
+ # * GSL::Linalg::Bidiag::unpack2
510
+ # * GSL::Linalg::bidiag_unpack2
511
+ # * GSL::Linalg::Bidiag::unpack_B
512
+ # * GSL::Linalg::bidiag_unpack_B
513
+ #
514
+ #
515
+ # == {}[link:index.html"name="11] Householder Transformations
516
+ # ---
517
+ # * GSL::Linalg::Householder::transform(v)
518
+ # * GSL::Linalg::HH::transform(v)
519
+ # * GSL::Vector#householder_transform
520
+ #
521
+ # These methods prepare a Householder transformation P = I - tau v v^T
522
+ # which can be used to zero all the elements of the input vector except the first.
523
+ # On output the transformation is stored in the vector <tt>v</tt>
524
+ # and the scalar tau is returned.
525
+ #
526
+ # ---
527
+ # * GSL::Linalg::Householder::hm(tau, v, A)
528
+ # * GSL::Linalg::HH::hm(tau, v, A)
529
+ #
530
+ # These methods apply the Householder matrix P defined by the scalar
531
+ # <tt>tau</tt> and the vector <tt>v</tt> to the left-hand side of the matrix <tt>A</tt>.
532
+ # On output the result P A is stored in <tt>A</tt>.
533
+ #
534
+ # ---
535
+ # * GSL::Linalg::Householder::mh(tau, v, A)
536
+ # * GSL::Linalg::HH::mh(tau, v, A)
537
+ #
538
+ # These methods apply the Householder matrix P defined by the scalar <tt>tau</tt>
539
+ # and the vector <tt>v</tt> to the right-hand side of the matrix <tt>A</tt>.
540
+ # On output the result A P is stored in <tt>A</tt>.
541
+ #
542
+ # ---
543
+ # * GSL::Linalg::Householder::hv(tau, v, w)
544
+ # * GSL::Linalg::HH::hv(tau, v, w)
545
+ #
546
+ # These methods apply the Householder transformation P defined by the scalar
547
+ # <tt>tau</tt> and the vector <tt>v</tt> to the vector <tt>w</tt>.
548
+ # On output the result P w is stored in <tt>w</tt>.
549
+ #
550
+ # == {}[link:index.html"name="12] Householder solver for linear systems
551
+ # ---
552
+ # * GSL::Linalg::HH.solve(A, b)
553
+ # * GSL::Matrix#HH_solve(b)
554
+ #
555
+ # These methods solve the system <tt>A x = b</tt> directly using Householder
556
+ # transformations. The matrix <tt>A</tt> is not modified.
557
+ # ---
558
+ # * GSL::Linalg::HH.solve!(A, b)
559
+ # * GSL::Matrix#HH_solve!(b)
560
+ #
561
+ # These methods solve the system <tt>A x = b</tt> directly using Householder
562
+ # transformations. The matrix <tt>A</tt> is destroyed by the
563
+ # Householder transformations.
564
+ #
565
+ # ---
566
+ # * GSL::Linalg::HH.svx(A, b)
567
+ # * GSL::Matrix#HH_svx(b)
568
+ #
569
+ # These methods solve the system <tt>A x = b</tt> in-place directly using Householder
570
+ # transformations. The input vector <tt>b</tt> is replaced by the solution.
571
+ #
572
+ # == {}[link:index.html"name="13] Tridiagonal Systems
573
+ # ---
574
+ # * GSL::Linglg::solve_tridiag(diag, e, f, b)
575
+ # * GSL::Linglg::Tridiag::solve(diag, e, f, b)
576
+ #
577
+ # These methods solve the general N-by-N system A x = b where <tt>A</tt>
578
+ # is tridiagonal ( N >= 2). The super-diagonal and sub-diagonal vectors <tt>e</tt>
579
+ # and <tt>f</tt> must be one element shorter than the diagonal vector <tt>diag</tt>.
580
+ # The form of <tt>A</tt> for the 4-by-4 case is shown below,
581
+ # A = ( d_0 e_0 0 0 )
582
+ # ( f_0 d_1 e_1 0 )
583
+ # ( 0 f_1 d_2 e_2 )
584
+ # ( 0 0 f_2 d_3 )
585
+ #
586
+ # ---
587
+ # * GSL::Linglg::solve_symm_tridiag(diag, e, b)
588
+ # * GSL::Linglg::Tridiag::solve_symm(diag, e, b)
589
+ #
590
+ # These methods solve the general N-by-N system A x = b where <tt>A</tt> is
591
+ # symmetric tridiagonal ( N >= 2). The off-diagonal vector <tt>e</tt> must
592
+ # be one element shorter than the diagonal vector <tt>diag</tt>.
593
+ # The form of <tt>A</tt> for the 4-by-4 case is shown below,
594
+ # A = ( d_0 e_0 0 0 )
595
+ # ( e_0 d_1 e_1 0 )
596
+ # ( 0 e_1 d_2 e_2 )
597
+ # ( 0 0 e_2 d_3 )
598
+ #
599
+ # ---
600
+ # * GSL::Linglg::solve_cyc_tridiag(diag, e, f, b)
601
+ # * GSL::Linglg::Tridiag::solve_cyc(diag, e, f, b)
602
+ #
603
+ # These methods solve the general N-by-N system A x = b where <tt>A</tt> is
604
+ # cyclic tridiagonal ( N >= 3). The cyclic super-diagonal and sub-diagonal
605
+ # vectors <tt>e</tt> and <tt>f</tt> must have the same number of elements as the
606
+ # diagonal vector <tt>diag</tt>. The form of <tt>A</tt> for the 4-by-4 case is shown below,
607
+ # A = ( d_0 e_0 0 f_3 )
608
+ # ( f_0 d_1 e_1 0 )
609
+ # ( 0 f_1 d_2 e_2 )
610
+ # ( e_3 0 f_2 d_3 )
611
+ #
612
+ # ---
613
+ # * GSL::Linglg::solve_symm_cyc_tridiag(diag, e, b)
614
+ # * GSL::Linglg::Tridiag::solve_symm_cyc(diag, e, b)
615
+ #
616
+ # These methods solve the general N-by-N system A x = b where <tt>A</tt>
617
+ # is symmetric cyclic tridiagonal ( N >= 3). The cyclic off-diagonal vector <tt>e</tt>
618
+ # must have the same number of elements as the diagonal vector <tt>diag</tt>.
619
+ # The form of <tt>A</tt> for the 4-by-4 case is shown below,
620
+ # A = ( d_0 e_0 0 e_3 )
621
+ # ( e_0 d_1 e_1 0 )
622
+ # ( 0 e_1 d_2 e_2 )
623
+ # ( e_3 0 e_2 d_3 )
624
+ #
625
+ # == {}[link:index.html"name="14] Balancing
626
+ # The process of balancing a matrix applies similarity transformations to
627
+ # make the rows and columns have comparable norms. This is useful,
628
+ # for example, to reduce roundoff errors in the solution of eigenvalue problems.
629
+ # Balancing a matrix <tt>A</tt> consists of replacing <tt>A</tt> with a similar matrix
630
+ # where <tt>D</tt> is a diagonal matrix whose entries are powers of the floating
631
+ # point radix.
632
+ #
633
+ # ---
634
+ # * GSL::Linalg::balance(A)
635
+ # * GSL::Linalg::balance(A, D)
636
+ #
637
+ # Calculates the balanced counterpart of <tt>A</tt> and the diagonal elements
638
+ # of the similarity transformation. The result is returned as <tt>(A', D)</tt>.
639
+ #
640
+ # ---
641
+ # * GSL::Linalg::balance!(A)
642
+ # * GSL::Linalg::balance!(A, D)
643
+ #
644
+ # Replaces the matrix <tt>A</tt> with its balanced counterpart and
645
+ # stores the diagonal elements of the similarity transformation into
646
+ # the vector <tt>D</tt>.
647
+ #
648
+ #
649
+ # == {}[link:index.html"name="15] NArray
650
+ # The following Linalg methods can handle NArray objects:
651
+ # * GSL::Linalg::
652
+ # * LU::
653
+ # * LU.decomp(m)
654
+ # * LU.solve(lu, b)
655
+ # * LU.svx(lu, bx)
656
+ # * LU.det(lu, sign)
657
+ # * LU.lndet(lu)
658
+ # * LU.invert(lu, perm)
659
+ # * QR::
660
+ # * QR.decomp(m)
661
+ # * QR.solve(qr, tau, b)
662
+ # * QR.svx(qr, tau, bx)
663
+ # * SV::
664
+ # * SV.decomp(m)
665
+ # * SV.solve(u, v, s, b)
666
+ # * SV.svx(u, v, s, bx)
667
+ # * Cholesky::
668
+ # * Cholesky.decomp(m)
669
+ # * Cholesky.solve(u, v, s, b)
670
+ # * Cholesky.svx(u, v, s, bx)
671
+ # * HH::
672
+ # * HH.solve(m, b)
673
+ # * HH.svx(m, bx)
674
+ #
675
+ # {prev}[link:files/rdoc/blas_rdoc.html]
676
+ # {next}[link:files/rdoc/eigen_rdoc.html]
677
+ #
678
+ # {Reference index}[link:files/rdoc/ref_rdoc.html]
679
+ # {top}[link:files/rdoc/index_rdoc.html]
680
+ #
681
+ #