rb-gsl 1.15.3.1 → 1.15.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHORS +2 -2
  3. data/ChangeLog +8 -0
  4. data/Rakefile +39 -96
  5. data/VERSION +1 -1
  6. data/ext/array.c +2 -2
  7. data/ext/block_source.c +1 -1
  8. data/ext/dirac.c +1 -1
  9. data/ext/eigen.c +13 -13
  10. data/ext/extconf.rb +17 -11
  11. data/ext/function.c +5 -5
  12. data/ext/gsl_narray.c +6 -6
  13. data/ext/histogram.c +7 -6
  14. data/ext/histogram2d.c +4 -4
  15. data/ext/interp.c +1 -1
  16. data/ext/linalg.c +13 -11
  17. data/ext/linalg_complex.c +8 -6
  18. data/ext/math.c +1 -1
  19. data/ext/matrix_complex.c +6 -6
  20. data/ext/matrix_source.c +10 -10
  21. data/ext/monte.c +2 -2
  22. data/ext/multimin.c +4 -4
  23. data/ext/multiroots.c +8 -8
  24. data/ext/nmf.c +6 -6
  25. data/ext/ntuple.c +4 -4
  26. data/ext/odeiv.c +2 -2
  27. data/ext/permutation.c +1 -1
  28. data/ext/poly2.c +6 -6
  29. data/ext/poly_source.c +9 -6
  30. data/ext/sf.c +31 -45
  31. data/ext/signal.c +2 -2
  32. data/ext/vector_complex.c +11 -10
  33. data/ext/vector_double.c +7 -4
  34. data/ext/vector_source.c +29 -26
  35. data/ext/wavelet.c +1 -1
  36. data/include/rb_gsl_common.h +12 -0
  37. data/include/rb_gsl_config.h +10 -1
  38. data/rdoc/blas.rdoc +4 -4
  39. data/rdoc/bspline.rdoc +8 -8
  40. data/rdoc/cheb.rdoc +9 -9
  41. data/rdoc/cholesky_complex.rdoc +1 -1
  42. data/rdoc/combi.rdoc +10 -10
  43. data/rdoc/complex.rdoc +12 -12
  44. data/rdoc/const.rdoc +21 -21
  45. data/rdoc/dht.rdoc +7 -7
  46. data/rdoc/diff.rdoc +7 -7
  47. data/rdoc/ehandling.rdoc +4 -4
  48. data/rdoc/eigen.rdoc +12 -12
  49. data/rdoc/fft.rdoc +27 -27
  50. data/rdoc/fit.rdoc +19 -19
  51. data/rdoc/function.rdoc +1 -1
  52. data/rdoc/graph.rdoc +3 -3
  53. data/rdoc/hist.rdoc +17 -17
  54. data/rdoc/hist2d.rdoc +5 -5
  55. data/rdoc/hist3d.rdoc +4 -4
  56. data/rdoc/index.rdoc +4 -4
  57. data/rdoc/integration.rdoc +17 -17
  58. data/rdoc/interp.rdoc +12 -12
  59. data/rdoc/intro.rdoc +4 -4
  60. data/rdoc/linalg.rdoc +21 -21
  61. data/rdoc/linalg_complex.rdoc +1 -1
  62. data/rdoc/math.rdoc +14 -14
  63. data/rdoc/matrix.rdoc +21 -21
  64. data/rdoc/min.rdoc +10 -10
  65. data/rdoc/monte.rdoc +4 -4
  66. data/rdoc/multimin.rdoc +13 -13
  67. data/rdoc/multiroot.rdoc +13 -13
  68. data/rdoc/narray.rdoc +10 -10
  69. data/rdoc/ndlinear.rdoc +5 -5
  70. data/rdoc/nonlinearfit.rdoc +18 -18
  71. data/rdoc/ntuple.rdoc +6 -6
  72. data/rdoc/odeiv.rdoc +13 -13
  73. data/rdoc/perm.rdoc +12 -12
  74. data/rdoc/poly.rdoc +18 -18
  75. data/rdoc/qrng.rdoc +10 -10
  76. data/rdoc/randist.rdoc +11 -11
  77. data/rdoc/ref.rdoc +50 -50
  78. data/rdoc/rng.rdoc +10 -10
  79. data/rdoc/rngextra.rdoc +5 -5
  80. data/rdoc/roots.rdoc +13 -13
  81. data/rdoc/sf.rdoc +36 -36
  82. data/rdoc/siman.rdoc +4 -4
  83. data/rdoc/sort.rdoc +7 -7
  84. data/rdoc/start.rdoc +1 -1
  85. data/rdoc/stats.rdoc +14 -14
  86. data/rdoc/sum.rdoc +5 -5
  87. data/rdoc/tensor.rdoc +4 -4
  88. data/rdoc/tut.rdoc +1 -1
  89. data/rdoc/use.rdoc +5 -5
  90. data/rdoc/vector.rdoc +29 -29
  91. data/rdoc/vector_complex.rdoc +6 -6
  92. data/rdoc/wavelet.rdoc +9 -9
  93. data/test/gsl/blas_test.rb +79 -0
  94. data/test/gsl/bspline_test.rb +63 -0
  95. data/test/gsl/cdf_test.rb +1512 -0
  96. data/test/gsl/cheb_test.rb +80 -0
  97. data/test/gsl/combination_test.rb +100 -0
  98. data/test/gsl/complex_test.rb +20 -0
  99. data/test/gsl/const_test.rb +29 -0
  100. data/test/gsl/deriv_test.rb +62 -0
  101. data/test/gsl/dht_test.rb +79 -0
  102. data/test/gsl/diff_test.rb +53 -0
  103. data/test/gsl/eigen_test.rb +563 -0
  104. data/test/gsl/err_test.rb +23 -0
  105. data/test/gsl/fit_test.rb +101 -0
  106. data/test/gsl/histo_test.rb +14 -0
  107. data/test/gsl/integration_test.rb +274 -0
  108. data/test/gsl/interp_test.rb +27 -0
  109. data/test/gsl/linalg_test.rb +463 -0
  110. data/test/gsl/matrix_nmf_test.rb +37 -0
  111. data/test/gsl/matrix_test.rb +77 -0
  112. data/test/gsl/min_test.rb +89 -0
  113. data/test/gsl/monte_test.rb +77 -0
  114. data/test/gsl/multifit_test.rb +753 -0
  115. data/test/gsl/multimin_test.rb +157 -0
  116. data/test/gsl/multiroot_test.rb +135 -0
  117. data/test/gsl/multiset_test.rb +52 -0
  118. data/test/gsl/odeiv_test.rb +275 -0
  119. data/test/gsl/poly_test.rb +338 -0
  120. data/test/gsl/qrng_test.rb +94 -0
  121. data/test/gsl/quartic_test.rb +28 -0
  122. data/test/gsl/randist_test.rb +122 -0
  123. data/test/gsl/rng_test.rb +303 -0
  124. data/test/gsl/roots_test.rb +78 -0
  125. data/test/gsl/sf_test.rb +2079 -0
  126. data/test/gsl/stats_test.rb +122 -0
  127. data/test/gsl/sum_test.rb +69 -0
  128. data/test/gsl/tensor_test.rb +396 -0
  129. data/test/gsl/vector_test.rb +223 -0
  130. data/test/gsl/wavelet_test.rb +130 -0
  131. data/test/gsl_test.rb +321 -0
  132. data/test/test_helper.rb +42 -0
  133. metadata +107 -150
  134. data/setup.rb +0 -1585
  135. data/tests/blas/amax.rb +0 -14
  136. data/tests/blas/asum.rb +0 -16
  137. data/tests/blas/axpy.rb +0 -25
  138. data/tests/blas/copy.rb +0 -23
  139. data/tests/blas/dot.rb +0 -23
  140. data/tests/bspline.rb +0 -53
  141. data/tests/cdf.rb +0 -1388
  142. data/tests/cheb.rb +0 -112
  143. data/tests/combination.rb +0 -123
  144. data/tests/complex.rb +0 -17
  145. data/tests/const.rb +0 -24
  146. data/tests/deriv.rb +0 -85
  147. data/tests/dht/dht1.rb +0 -17
  148. data/tests/dht/dht2.rb +0 -23
  149. data/tests/dht/dht3.rb +0 -23
  150. data/tests/dht/dht4.rb +0 -23
  151. data/tests/diff.rb +0 -78
  152. data/tests/eigen/eigen.rb +0 -220
  153. data/tests/eigen/gen.rb +0 -105
  154. data/tests/eigen/genherm.rb +0 -66
  155. data/tests/eigen/gensymm.rb +0 -68
  156. data/tests/eigen/nonsymm.rb +0 -53
  157. data/tests/eigen/nonsymmv.rb +0 -53
  158. data/tests/eigen/symm-herm.rb +0 -74
  159. data/tests/err.rb +0 -58
  160. data/tests/fit.rb +0 -124
  161. data/tests/gsl_test.rb +0 -118
  162. data/tests/gsl_test2.rb +0 -110
  163. data/tests/histo.rb +0 -12
  164. data/tests/integration/integration1.rb +0 -72
  165. data/tests/integration/integration2.rb +0 -71
  166. data/tests/integration/integration3.rb +0 -71
  167. data/tests/integration/integration4.rb +0 -71
  168. data/tests/interp.rb +0 -45
  169. data/tests/linalg/HH.rb +0 -64
  170. data/tests/linalg/LU.rb +0 -47
  171. data/tests/linalg/QR.rb +0 -77
  172. data/tests/linalg/SV.rb +0 -24
  173. data/tests/linalg/TDN.rb +0 -116
  174. data/tests/linalg/TDS.rb +0 -122
  175. data/tests/linalg/bidiag.rb +0 -73
  176. data/tests/linalg/cholesky.rb +0 -20
  177. data/tests/linalg/linalg.rb +0 -158
  178. data/tests/matrix/matrix_complex_test.rb +0 -36
  179. data/tests/matrix/matrix_nmf_test.rb +0 -39
  180. data/tests/matrix/matrix_test.rb +0 -48
  181. data/tests/min.rb +0 -99
  182. data/tests/monte/miser.rb +0 -31
  183. data/tests/monte/vegas.rb +0 -45
  184. data/tests/multifit/test_2dgauss.rb +0 -112
  185. data/tests/multifit/test_brown.rb +0 -90
  186. data/tests/multifit/test_enso.rb +0 -246
  187. data/tests/multifit/test_filip.rb +0 -155
  188. data/tests/multifit/test_gauss.rb +0 -97
  189. data/tests/multifit/test_longley.rb +0 -110
  190. data/tests/multifit/test_multifit.rb +0 -52
  191. data/tests/multimin.rb +0 -139
  192. data/tests/multiroot.rb +0 -131
  193. data/tests/multiset.rb +0 -52
  194. data/tests/narray/blas_dnrm2.rb +0 -20
  195. data/tests/odeiv.rb +0 -353
  196. data/tests/poly/poly.rb +0 -290
  197. data/tests/poly/special.rb +0 -65
  198. data/tests/qrng.rb +0 -131
  199. data/tests/quartic.rb +0 -29
  200. data/tests/randist.rb +0 -134
  201. data/tests/rng.rb +0 -305
  202. data/tests/roots.rb +0 -76
  203. data/tests/run-test.sh +0 -17
  204. data/tests/sf/gsl_test_sf.rb +0 -249
  205. data/tests/sf/test_airy.rb +0 -83
  206. data/tests/sf/test_bessel.rb +0 -306
  207. data/tests/sf/test_coulomb.rb +0 -17
  208. data/tests/sf/test_dilog.rb +0 -25
  209. data/tests/sf/test_gamma.rb +0 -209
  210. data/tests/sf/test_hyperg.rb +0 -356
  211. data/tests/sf/test_legendre.rb +0 -227
  212. data/tests/sf/test_mathieu.rb +0 -59
  213. data/tests/sf/test_mode.rb +0 -19
  214. data/tests/sf/test_sf.rb +0 -839
  215. data/tests/stats.rb +0 -174
  216. data/tests/stats_mt.rb +0 -16
  217. data/tests/sum.rb +0 -98
  218. data/tests/sys.rb +0 -323
  219. data/tests/tensor.rb +0 -419
  220. data/tests/vector/vector_complex_test.rb +0 -101
  221. data/tests/vector/vector_test.rb +0 -141
  222. data/tests/wavelet.rb +0 -142
@@ -1,64 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- require("./linalg.rb")
5
- include GSL::Test
6
-
7
- def test_HH_solve_dim(m, actual, eps)
8
- dim = m.size1
9
- s = 0
10
- perm = GSL::Permutation.alloc(dim)
11
- x = GSL::Vector.indgen(dim) + 1
12
- hh = m.duplicate
13
- GSL::Linalg::HH.svx(hh, x)
14
- for i in 0...dim do
15
- foo = check(x[i],actual[i],eps)
16
- if foo > 0
17
- printf("%3lu[%lu]: %22.18g %22.18g\n", dim, i, x[i], actual[i])
18
- end
19
- s += foo;
20
- end
21
- return s
22
- end
23
-
24
- def test_HH_solve()
25
- s = 0
26
- f = test_HH_solve_dim(Hilb2, Hilb2_solution, 8.0 * GSL::DBL_EPSILON);
27
-
28
- GSL::test(f, " HH_solve Hilbert(2)");
29
- s += f;
30
-
31
- f = test_HH_solve_dim(Hilb3, Hilb3_solution, 128.0 * GSL::DBL_EPSILON);
32
- GSL::test(f, " HH_solve Hilbert(3)");
33
- s += f;
34
-
35
- f = test_HH_solve_dim(Hilb4, Hilb4_solution, 2.0 * 1024.0 * GSL::DBL_EPSILON);
36
- GSL::test(f, " HH_solve Hilbert(4)");
37
- s += f;
38
-
39
- f = test_HH_solve_dim(Hilb12, Hilb12_solution, 0.5);
40
- GSL::test(f, " HH_solve Hilbert(12)");
41
- s += f;
42
-
43
- f = test_HH_solve_dim(Vander2, Vander2_solution, 8.0 * GSL::DBL_EPSILON);
44
- GSL::test(f, " HH_solve Vander(2)");
45
- s += f;
46
-
47
- f = test_HH_solve_dim(Vander3, Vander3_solution, 64.0 * GSL::DBL_EPSILON);
48
- GSL::test(f, " HH_solve Vander(3)");
49
- s += f;
50
-
51
- f = test_HH_solve_dim(Vander4, Vander4_solution, 1024.0 * GSL::DBL_EPSILON);
52
- GSL::test(f, " HH_solve Vander(4)");
53
- s += f;
54
-
55
- f = test_HH_solve_dim(Vander12, Vander12_solution, 0.05);
56
- GSL::test(f, " HH_solve Vander(12)");
57
- s += f;
58
-
59
- return s;
60
- end
61
-
62
- test_HH_solve()
63
-
64
-
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- include GSL::Test
5
- include Linalg
6
-
7
- m = GSL::Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
8
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
9
-
10
- A = m.clone
11
-
12
- lu_exp = GSL::Matrix.alloc([0.51, 0.13, 0.19, 0.85],
13
- [0.352941176470588, 0.554117647058823, 0.502941176470588, 0.66],
14
- [0.803921568627451, 0.244515215852796, 0.71427813163482, -0.264713375796178], [0.274509803921569, 0.476999292285916, 0.949126848480345, 0.363093705877982])
15
-
16
- x_exp = GSL::Vector[-4.05205022957397, -12.6056113959069, 1.66091162670884, 8.69376692879523]
17
-
18
- lu, perm, signum = m.LU_decomp
19
- test2(m == A, "#{A.class}#LU_decomp: matrix not destroyed")
20
- test2(lu == lu_exp, "#{A.class}#LU_decomp")
21
- b = GSL::Vector[1, 2, 3, 4]
22
- x = LU.solve(lu, perm, b)
23
- test2(x == x_exp, "#{A.class}.LU_solve")
24
-
25
- x = lu.solve(perm, b)
26
- test2(x == x_exp, "#{lu.class}#solve")
27
-
28
- perm, signum = m.LU_decomp!
29
- test2(m == lu_exp, "#{A.class}#LU_decomp!")
30
-
31
- m = A.clone
32
-
33
- x = LU.solve(m, perm, b)
34
- test2(x == x_exp, "#{A.class}.LU_solve")
35
- x = m.LU_solve(perm, b)
36
- test2(x == x_exp, "#{A.class}#LU_solve")
37
- test2(m == A, "#{A.class}#LU_solve: matrix not destroyed")
38
-
39
- h = GSL::Matrix.hilbert(5)
40
- invh = GSL::Matrix.invhilbert(5)
41
- lu, perm, sign = h.LU_decomp
42
- a = Linalg::LU::invert(lu, perm)
43
- test2(a.equal?(invh, 1e-6), "#{h.class}#LU_invert, Hilbert matrix of order 5")
44
- a =lu.invert(perm)
45
- test2(a.equal?(invh, 1e-6), "#{h.class}#LU_invert, Hilbert matrix of order 5")
46
- a = h.inv
47
- test2(a.equal?(invh, 1e-6), "#{h.class}#LU_invert, Hilbert matrix of order 5")
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- include GSL::Test
5
- include Linalg
6
-
7
- m = GSL::Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
8
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
9
-
10
- A = m.clone
11
-
12
- x_exp = GSL::Vector[-4.05205022957397, -12.6056113959069, 1.66091162670884, 8.69376692879523]
13
- B = GSL::Vector[1, 2, 3, 4]
14
-
15
- qr, tau = m.QR_decomp
16
- test2(m == A, "#{m.class}#QR_decomp: matrix not destroyed")
17
- x = m.QR_solve(B)
18
- test2(x == x_exp, "#{m.class}#QR_solve(b)")
19
- x = QR::solve(m, B)
20
- test2(x == x_exp, "GSL::Linalg::QR::solve(b)")
21
- tau = m.QR_decomp!
22
- test2(m != A, "#{m.class}#QR_decomp: matrix destroyed")
23
- x = m.QR_solve(tau, B)
24
- test2(x == x_exp, "#{m.class}#QR_solve(tau, b)")
25
- x = qr.solve(tau, B)
26
- test2(x == x_exp, "#{qr.class}#solve(tau, b)")
27
-
28
- begin
29
- x = m.QR_solve(B)
30
- rescue
31
- puts("PASS: #{m.class}#QR_solve; tau vector must be given if m is decomped")
32
- end
33
- begin
34
- x = m.solve(B)
35
- rescue
36
- puts("PASS: #{m.class}#solve; tau vector must be given if m is decomped")
37
- end
38
- x = m.solve(tau, B)
39
- test2(x == x_exp, "#{m.class}#solve(tau, b)")
40
-
41
- m = A.clone
42
- bb = B.clone
43
- m.QR_svx(bb)
44
- test2(bb == x_exp, "#{m.class}#QR_svx(b)")
45
-
46
- tau = QR::decomp!(m)
47
- bb = B.clone
48
- m.QR_svx(tau, bb)
49
- test2(bb == x_exp, "#{m.class}#QR_svx(tau, b)")
50
- begin
51
- x = m.QR_svx(bb)
52
- rescue
53
- puts("PASS: #{m.class}#QR_solve; tau vector must be given if m is decomped")
54
- end
55
-
56
- m = A.clone
57
- qr, tau = m.QR_decomp
58
- test2(m == A, "#{m.class}#QR_decomp: matrix not destroyed")
59
- x, r = m.QR_lssolve(B)
60
- test2(x == x_exp, "#{m.class}#QR_lssolve(b)")
61
-
62
- r = m.QR_lssolve(B, x)
63
- test2(x == x_exp, "#{qr.class}#QR_lssolve(b, x)")
64
- m.QR_lssolve(B, x, r)
65
- test2(x == x_exp, "#{qr.class}#QR_lssolve(b, x, r)")
66
- x, r = qr.QR_lssolve(tau, B)
67
- test2(x == x_exp, "#{qr.class}#QR_lssolve(tau, b)")
68
- r = qr.QR_lssolve(tau, B, x)
69
- test2(x == x_exp, "#{qr.class}#QR_lssolve(tau, b, x)")
70
- qr.QR_lssolve(tau, B, x, r)
71
- test2(x == x_exp, "#{qr.class}#QR_lssolve(tau, b, x, r)")
72
- begin
73
- x, r = qr.QR_lssolve(bb)
74
- rescue
75
- puts("PASS: #{qr.class}#QR_solve; tau vector must be given if m is decomped")
76
- end
77
-
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- include GSL::Test
5
- include Linalg
6
-
7
- A = GSL::Matrix.alloc([1, 2, 3, 4], 2, 2)
8
- I = GSL::Matrix.identity(2)
9
- Ainv = A.inv
10
-
11
- u, v, s = A.SV_decomp
12
- sm = s.to_m_diagonal
13
- sinv = s.collect { |elm| 1.0/elm }.to_m_diagonal
14
- a = u*sm*v.trans
15
- ainv = v*sinv*u.trans
16
- test2(a == A, "#{A.class}#SV_decomp")
17
- test2(ainv == Ainv, "#{A.class}#SV_decomp")
18
-
19
- test2((u.trans*u) == I, "#{A.class}#SV_decomp")
20
- test2((v.trans*v) == I, "#{A.class}#SV_decomp")
21
- test2(A*v == u*sm, "#{A.class}#SV_decomp")
22
- test2(A.trans*u == v*sm, "#{A.class}#SV_decomp")
23
-
24
-
@@ -1,116 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- require("./linalg.rb")
5
- include GSL::Test
6
-
7
- def test_TDN_solve_dim(dim, d, a, b, actual, eps)
8
- s = 0
9
-
10
- abovediag = GSL::Vector.alloc(dim-1)
11
- belowdiag = GSL::Vector.alloc(dim-1)
12
-
13
- diag = GSL::Vector.alloc(dim)
14
- diag.set_all(d)
15
- rhs = GSL::Vector.indgen(dim) + 1
16
-
17
- abovediag.set_all(a)
18
- belowdiag.set_all(b)
19
-
20
- x = GSL::Linalg::solve_tridiag(diag, abovediag, belowdiag, rhs)
21
- p x
22
- p actual
23
- for i in 0...dim do
24
- si = x[i]
25
- ai = actual[i]
26
- foo = check(si, ai, eps);
27
- if foo > 0
28
- printf("%3lu[%lu]: %22.18g %22.18g\n", dim, i, x[i], actual[i]);
29
- s += foo;
30
- end
31
- end
32
- return s
33
- end
34
-
35
- def test_TDN_solve()
36
- s = 0
37
-
38
- actual = GSL::Vector.alloc(5)
39
- actual[0] = -7.0/3.0;
40
- actual[1] = 5.0/3.0;
41
- actual[2] = 4.0/3.0;
42
- f = test_TDN_solve_dim(3, 1.0, 2.0, 1.0, actual, 2.0 * GSL::DBL_EPSILON);
43
- GSL::test(f, " solve_TDN dim=2 A");
44
- s += f;
45
-
46
- actual[0] = 0.75;
47
- actual[1] = 0.75;
48
- actual[2] = 2.625;
49
- f = test_TDN_solve_dim(3, 1.0, 1.0/3.0, 1.0/2.0, actual, 2.0 * GSL::DBL_EPSILON);
50
- GSL::test(f, " solve_TDN dim=2 B");
51
- s += f;
52
-
53
- actual[0] = 99.0/140.0;
54
- actual[1] = 41.0/35.0;
55
- actual[2] = 19.0/10.0;
56
- actual[3] = 72.0/35.0;
57
- actual[4] = 139.0/35.0;
58
- f = test_TDN_solve_dim(5, 1.0, 1.0/4.0, 1.0/2.0, actual, 35.0/8.0 * GSL::DBL_EPSILON);
59
- GSL::test(f, " solve_TDN dim=5");
60
- s += f;
61
-
62
- return s;
63
- end
64
-
65
- def test_TDN_cyc_solve_dim(dim, d, a, b, actual, eps)
66
- s = 0
67
-
68
- abovediag = GSL::Vector.alloc(dim)
69
- belowdiag = GSL::Vector.alloc(dim)
70
- diag = GSL::Vector.alloc(dim)
71
- rhs = GSL::Vector.indgen(dim) + 1
72
-
73
- abovediag.set_all(a)
74
- belowdiag.set_all(b)
75
- diag.set_all(d)
76
-
77
- x = GSL::Linalg::solve_cyc_tridiag(diag, abovediag, belowdiag, rhs);
78
- p x
79
- p actual
80
- for i in 0...dim do
81
- si = x[i]
82
- ai = actual[i]
83
- foo = check(si, ai, eps);
84
- if foo > 0
85
- printf("%3lu[%lu]: %22.18g %22.18g\n", dim, i, x[i], actual[i]);
86
- end
87
- s += foo;
88
- end
89
- return s
90
- end
91
-
92
- def test_TDN_cyc_solve()
93
- s = 0
94
- actual = GSL::Vector.alloc(5)
95
- actual[0] = 3.0/2.0;
96
- actual[1] = -1.0/2.0;
97
- actual[2] = 1.0/2.0;
98
- f = test_TDN_cyc_solve_dim(3, 1.0, 2.0, 1.0, actual, 32.0 * GSL::DBL_EPSILON);
99
- GSL::test(f, " solve_TDN_cyc dim=2 A");
100
- s += f;
101
-
102
- actual[0] = -5.0/22.0;
103
- qactual[1] = -3.0/22.0;
104
- actual[2] = 29.0/22.0;
105
- actual[3] = -9.0/22.0;
106
- actual[4] = 43.0/22.0;
107
- f = test_TDN_cyc_solve_dim(5, 3.0, 2.0, 1.0, actual, 66.0 * GSL::DBL_EPSILON);
108
- GSL::test(f, " solve_TDN_cyc dim=5");
109
- s += f;
110
-
111
- return s;
112
- end
113
-
114
- test_TDN_solve()
115
- test_TDN_cyc_solve()
116
-
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- require("./linalg.rb")
5
- include GSL::Test
6
-
7
- def test_TDS_solve_dim(dim, d, od, actual, eps)
8
- s = 0
9
-
10
- diag = GSL::Vector.alloc(dim)
11
- diag.set_all(d)
12
- rhs = GSL::Vector.indgen(dim) + 1
13
- offdiag = GSL::Vector.alloc(dim-1)
14
- offdiag.set_all(od)
15
-
16
- x = GSL::Linalg::solve_symm_tridiag(diag, offdiag, rhs)
17
- p x
18
- p actual
19
- for i in 0...dim do
20
- si = x[i]
21
- ai = actual[i]
22
- foo = check(si, ai, eps);
23
- if foo > 0
24
- printf("%3lu[%lu]: %22.18g %22.18g\n", dim, i,s[i], actual[i]);
25
- end
26
- s += foo;
27
- end
28
- return s
29
- end
30
-
31
- def test_TDS_solve()
32
- s = 0
33
-
34
- actual = GSL::Vector[0.0, 2.0]
35
- f = test_TDS_solve_dim(2, 1.0, 0.5, actual, 8.0 * GSL::DBL_EPSILON)
36
- GSL::test(f, " solve_TDS dim=2 A");
37
- s += f;
38
-
39
- actual = GSL::Vector[3.0/8.0, 15.0/8.0]
40
- f = test_TDS_solve_dim(2, 1.0, 1.0/3.0, actual, 8.0 * GSL::DBL_EPSILON);
41
- GSL::test(f, " solve_TDS dim=2 B");
42
- s += f
43
-
44
- actual = GSL::Vector[5.0/8.0, 9.0/8.0, 2.0, 15.0/8.0, 35.0/8.0]
45
- f = test_TDS_solve_dim(5, 1.0, 1.0/3.0, actual, 8.0 * GSL::DBL_EPSILON);
46
- GSL::test(f, " solve_TDS dim=5");
47
- end
48
-
49
- def test_TDS_cyc_solve_one(dim, d, od, r, actual, eps)
50
- s = 0
51
-
52
- diag = d.duplicate()
53
- offdiag = od.duplicate()
54
- rhs = r.duplicate()
55
-
56
- x = GSL::Linalg::solve_symm_cyc_tridiag(diag, offdiag, rhs)
57
- p x
58
- p actual
59
- for i in 0...dim do
60
- si = x[i]
61
- ai = actual[i]
62
- foo = check(si, ai, eps);
63
- if foo > 0
64
- printf("%3lu[%lu]: %22.18g %22.18g\n", dim, i, si, actual[i]);
65
- end
66
- s += foo;
67
- end
68
- return s;
69
- end
70
-
71
- def test_TDS_cyc_solve()
72
- s = 0
73
- =begin
74
- dim = 1
75
- diag = GSL::Vector.alloc(1)
76
- diag[0] = 2
77
- offdiag = GSL::Vector.alloc(1)
78
- offdiag[0] = 3
79
- rhs = GSL::Vector.alloc(1)
80
- rhs[0] = 7
81
- actual = GSL::Vector.alloc(1)
82
- actual[0] = 3.5
83
-
84
- f = test_TDS_cyc_solve_one(dim, diag, offdiag, rhs, actual, 28.0 * GSL::DBL_EPSILON);
85
- GSL::test(f, " solve_TDS_cyc dim=%lu A", dim);
86
- s += f;
87
-
88
- dim = 2
89
- diag = GSL::Vector[1, 2]
90
- offdiag = GSL::Vector[3, 4]
91
- rhs = GSL::Vector[7, -7]
92
- actual = GSL::Vector[-5, 4]
93
-
94
- f = test_TDS_cyc_solve_one(dim, diag, offdiag, rhs, actual, 28.0 * GSL::DBL_EPSILON);
95
- GSL::test(f, " solve_TDS_cyc dim=%lu A", dim);
96
- s += f;
97
- =end
98
- dim = 3
99
- diag = GSL::Vector[1, 1, 1]
100
- offdiag = GSL::Vector[3, 3, 3]
101
- rhs = GSL::Vector[7, -7, 7]
102
- actual = GSL::Vector[-2, 5, -2]
103
-
104
- f = test_TDS_cyc_solve_one(dim, diag, offdiag, rhs, actual, 28.0 * GSL::DBL_EPSILON);
105
- GSL::test(f, " solve_TDS_cyc dim=#{dim} A");
106
- s += f;
107
-
108
- dim = 5
109
- diag = GSL::Vector[4, 2, 1, 2, 4]
110
- offdiag = GSL::Vector[1, 1, 1, 1, 1]
111
- rhs = GSL::Vector[30, -24, 3, 21, -30]
112
- actual = GSL::Vector[ 12, 3, -42, 42, -21 ]
113
-
114
- f = test_TDS_cyc_solve_one(dim, diag, offdiag, rhs, actual, 35.0 * GSL::DBL_EPSILON);
115
- GSL::test(f, " solve_TDS_cyc dim=#{dim} B");
116
- s += f;
117
- return s
118
- end
119
-
120
- test_TDS_solve()
121
- test_TDS_cyc_solve()
122
-