rb-gsl 1.15.3.1 → 1.15.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,73 +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
-
8
- def test_bidiag_decomp_dim(m, eps)
9
- s = 0
10
- mm = m.size1
11
- nn = m.size2
12
-
13
- a = m.duplicate
14
- b = GSL::Matrix.calloc(nn, nn)
15
- aa, tau1, tau2 = GSL::Linalg::Bidiag::decomp(a)
16
- u, v, d, sd = GSL::Linalg::Bidiag::unpack(aa, tau1, tau2)
17
-
18
- b.set_diagonal(d)
19
- for i in 0...(nn-1) do
20
- b[i,i+1] = sd[i]
21
- end
22
-
23
- a = u*b*v.trans
24
-
25
- for i in 0...mm do
26
- for j in 0...nn do
27
- aij = a[i,j]
28
- mij = m[i,j]
29
- foo = check(aij, mij, eps);
30
- if foo > 0
31
- printf("(%3lu,%3lu)[%lu,%lu]: %22.18g %22.18g\n", M, N, i,j, aij, mij);
32
- end
33
- s += foo;
34
- end
35
- end
36
- return s
37
- end
38
-
39
- def test_bidiag_decomp()
40
- s = 0
41
-
42
- m53 = create_general_matrix(5,3)
43
- m97 = create_general_matrix(9,7)
44
-
45
- f = test_bidiag_decomp_dim(m53, 2 * 64.0 * GSL::DBL_EPSILON);
46
- GSL::test(f, " bidiag_decomp m(5,3)");
47
- s += f;
48
-
49
- f = test_bidiag_decomp_dim(m97, 2 * 64.0 * GSL::DBL_EPSILON);
50
- GSL::test(f, " bidiag_decomp m(9,7)");
51
- s += f;
52
-
53
- f = test_bidiag_decomp_dim(Hilb2, 2 * 8.0 * GSL::DBL_EPSILON);
54
- GSL::test(f, " bidiag_decomp hilbert(2)");
55
- s += f;
56
-
57
- f = test_bidiag_decomp_dim(Hilb3, 2 * 64.0 * GSL::DBL_EPSILON);
58
- GSL::test(f, " bidiag_decomp hilbert(3)");
59
- s += f;
60
-
61
- f = test_bidiag_decomp_dim(Hilb4, 2 * 1024.0 * GSL::DBL_EPSILON);
62
- GSL::test(f, " bidiag_decomp hilbert(4)");
63
- s += f;
64
-
65
- f = test_bidiag_decomp_dim(Hilb12, 2 * 1024.0 * GSL::DBL_EPSILON);
66
- GSL::test(f, " bidiag_decomp hilbert(12)");
67
- s += f;
68
-
69
- return s;
70
- end
71
-
72
- test_bidiag_decomp()
73
-
@@ -1,20 +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.pascal(6)
8
-
9
- p m
10
- c_exp = GSL::Matrix[[1, 0, 0, 0, 0, 0],
11
- [1, 1, 0, 0, 0, 0],
12
- [1, 2, 1, 0, 0, 0],
13
- [1, 3, 3, 1, 0, 0],
14
- [1, 4, 6, 4, 1, 0],
15
- [1, 5, 10, 10, 5, 1]]
16
-
17
- c = m.cholesky_decomp
18
- a = c.lower
19
- test2(a == c_exp, "#{m.class}#cholesky_decomp")
20
- test2((a*a.trans) == m, "#{m.class}#cholesky_decomp")
@@ -1,158 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require("gsl")
3
- require("../gsl_test2.rb")
4
- include GSL::Test
5
-
6
- def check(x, actual, eps)
7
- if x == actual
8
- return 0
9
- elsif actual.zero?
10
- return x.abs > eps ? 1 : 0
11
- else
12
- return ((x - actual).abs/actual.abs > eps) ? 1 : 0
13
- end
14
- end
15
-
16
- def create_hilbert_matrix(size)
17
- m = GSL::Matrix.alloc(size, size)
18
- for i in 0...size
19
- for j in 0...size
20
- m.set(i, j, 1.0/(i+j+1.0))
21
- end
22
- end
23
- return m
24
- end
25
-
26
- def create_general_matrix(size1, size2)
27
- m = GSL::Matrix.alloc(size1, size2)
28
- for i in 0...size1
29
- for j in 0...size2
30
- m.set(i, j, 1.0/(i+j+1.0))
31
- end
32
- end
33
- return m
34
- end
35
-
36
- def create_singular_matrix(size1, size2)
37
- m = create_general_matrix(size1, size2)
38
- for j in 0...m.size2
39
- m.set(0, j, 0.0)
40
- end
41
- return m
42
- end
43
-
44
- def create_vandermonde_matrix(size)
45
- m = GSL::Matrix.alloc(size, size)
46
- for i in 0...size
47
- for j in 0...size
48
- m.set(i, j, pow(i + 1.0, size - j - 1.0))
49
- end
50
- end
51
- return m
52
- end
53
-
54
- def create_moler_matrix(size)
55
- m = GSL::Matrix.alloc(size, size)
56
- for i in 0...size
57
- for j in 0...size
58
- m.set(i, j, GSL::MIN(i+1, j+1) - 2.0)
59
- end
60
- end
61
- return m
62
- end
63
-
64
- def create_complex_matrix(size)
65
- m = GSL::Matrix::Complex.alloc(size, size)
66
- for i in 0...size
67
- for j in 0...size
68
- z = GSL::Complex.alloc(1.0/(i+j+1.0), 1/(i*i+j*j+0.5))
69
- m.set(i, j, z)
70
- end
71
- end
72
- return m
73
- end
74
-
75
- def create_row_matrix(size1, size2)
76
- m = GSL::Matrix.alloc(size1, size2)
77
- for i in 0...size1
78
- m.set(i, 0, 1.0/(i + 1.0))
79
- end
80
- return m
81
- end
82
-
83
- def create_2x2_matrix(a11, a12, a21, a22)
84
- return GSL::Matrix.alloc(a11, a12, a21, a22)
85
- end
86
-
87
- def create_diagonal_matrix(a, size)
88
- m = GSL::Matrix.alloc(size, size)
89
- for i in 0...size
90
- m.set(i, i, a[i])
91
- end
92
- return m
93
- end
94
-
95
- Hilb2 = create_hilbert_matrix(2)
96
- Hilb3 = create_hilbert_matrix(3)
97
- Hilb4 = create_hilbert_matrix(4)
98
- Hilb12 = create_hilbert_matrix(12)
99
- Vander2 = create_vandermonde_matrix(2)
100
- Vander3 = create_vandermonde_matrix(3)
101
- Vander4 = create_vandermonde_matrix(4)
102
- Vander12 = create_vandermonde_matrix(12)
103
-
104
- inf5_data = GSL::Vector.alloc(1.0, 0.0, -3.0, 0.0, -5.0)
105
- m53_lssolution = GSL::Vector.alloc(52.5992295702070, -337.7263113752073, 351.8823436427604)
106
- Hilb2_solution = GSL::Vector.alloc(-8.0, 18.0)
107
- Hilb3_solution = GSL::Vector.alloc(27.0, -192.0, 210.0)
108
- Hilb4_solution = GSL::Vector.alloc(-64.0, 900.0, -2520.0, 1820.0)
109
- Hilb12_solution = GSL::Vector.alloc(-1728.0, 245388.0, -8528520.0,
110
- 127026900.0, -1009008000.0, 4768571808.0,
111
- -14202796608.0, 27336497760.0, -33921201600.0,
112
- 26189163000.0, -11437874448.0, 2157916488.0)
113
-
114
- c7_solution = GSL::Vector.alloc(2.40717272023734e+01, -9.84612797621247e+00,
115
- -2.69338853034031e+02, 8.75455232472528e+01,
116
- 2.96661356736296e+03, -1.02624473923993e+03,
117
- -1.82073812124749e+04, 5.67384473042410e+03,
118
- 5.57693879019068e+04, -1.61540963210502e+04,
119
- -7.88941207561151e+04, 1.95053812987858e+04,
120
- 3.95548551241728e+04, -7.76593696255317e+03)
121
-
122
- Vander2_solution = GSL::Vector.alloc(1.0, 0.0)
123
- Vander3_solution = GSL::Vector.alloc(0.0, 1.0, 0.0)
124
- Vander4_solution = GSL::Vector.alloc(0.0, 0.0, 1.0, 0.0)
125
- Vander12_solution = GSL::Vector.alloc(0.0, 0.0, 0.0, 0.0,
126
- 0.0, 0.0, 0.0, 0.0,
127
- 0.0, 0.0, 1.0, 0.0)
128
-
129
- def test_matmult()
130
- s = 0
131
- a = GSL::Matrix.alloc([10.0, 5.0, 1.0, 20.0], 2, 2)
132
- b = GSL::Matrix.alloc([10.0, 5.0, 2.0, 1.0, 3.0, 2.0], 2, 3)
133
- c = a**b
134
- s += ((c[0,0] - 105.0).abs > GSL::DBL_EPSILON) ? 1 : 0
135
- s += ((c[0,1] - 65.0).abs > GSL::DBL_EPSILON) ? 1 : 0
136
- s += ((c[0,2] - 30.0).abs > GSL::DBL_EPSILON) ? 1 : 0
137
- s += ((c[1,0] - 30.0).abs > GSL::DBL_EPSILON) ? 1 : 0
138
- s += ((c[1,1] - 65.0).abs > GSL::DBL_EPSILON) ? 1 : 0
139
- s += ((c[1,2] - 42.0).abs > GSL::DBL_EPSILON) ? 1 : 0
140
- return s
141
- end
142
-
143
- def test_matmult_mod()
144
- s = 0
145
- a = GSL::Matrix[[10.0, 5.0, 1.0], [1.0, 20.0, 5.0], [1.0, 3.0, 7.0]]
146
- b = GSL::Matrix[[10.0, 5.0, 2.0], [1, 3, 2], [1, 3, 2]]
147
- d = GSL::Matrix[[10, 5, 1], [1, 20, 5]]
148
-
149
- end
150
-
151
- def test_LU_solve_dim(m, actual, eps)
152
- dim = m.size1
153
- s = 0
154
- perm = Permutation.alloc(dim)
155
- rhs = GSL::Vector[1..dim]
156
- lu = m.clone
157
-
158
- end
@@ -1,36 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'minitest/unit'
3
-
4
- require 'gsl'
5
-
6
- class MatrixComplex < MiniTest::Unit::TestCase
7
-
8
- def test_eye
9
- z = GSL::Complex[1,0]
10
- m = GSL::Matrix::Complex.eye(2, z)
11
- assert_equal(z, m[0,0])
12
- assert_equal(GSL::Complex[0,0], m[0,1])
13
- assert_equal(GSL::Complex[0,0], m[1,0])
14
- assert_equal(z, m[1,1])
15
- end
16
-
17
- def test_set_row
18
- z0 = GSL::Complex[1,0]
19
- z1 = GSL::Complex[2,0]
20
- m = GSL::Matrix::Complex[2,2]
21
- m.set_row(0,z0,z1)
22
- assert_equal(z0, m[0,0])
23
- assert_equal(z1, m[0,1])
24
- end
25
-
26
- def test_set_col
27
- z0 = GSL::Complex[1,0]
28
- z1 = GSL::Complex[2,0]
29
- m = GSL::Matrix::Complex[2,2]
30
- m.set_col(0,z0,z1)
31
- assert_equal(z0, m[0,0])
32
- assert_equal(z1, m[1,0])
33
- end
34
-
35
- end
36
-
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Written by Roman Shterenzon
3
- #
4
- #$:.unshift(*['lib','ext'].collect{|d| File.join(File.dirname(__FILE__),'..','..',d)})
5
- require 'rubygems'
6
- require 'test/unit'
7
- require 'gsl'
8
-
9
- class MatrixNmfTest < Test::Unit::TestCase
10
-
11
- def setup
12
- @m1 = GSL::Matrix.alloc([6, 7, 8], [2, 3, 4], [3, 4, 5])
13
- @m2 = GSL::Matrix.alloc([6, 7, 8], [2, 3, 4], [3, 4, 7])
14
- end
15
-
16
- def test_difcost
17
- assert_equal(0, GSL::Matrix::NMF.difcost(@m1, @m1))
18
- assert_equal(4, GSL::Matrix::NMF.difcost(@m1, @m2))
19
- end
20
-
21
- def test_nmf
22
- [2, 3, 4, 5].each do |cols|
23
- res = GSL::Matrix::NMF.nmf(@m1, cols)
24
- assert_equal([3,cols], res[0].size)
25
- assert_equal([cols,3], res[1].size)
26
- cost = GSL::Matrix::NMF.difcost(@m1, res[0]*res[1])
27
- assert(cost <= 0.000001, "Cols: #{cols}, Delta: #{cost}")
28
- end
29
- end
30
- def test_matrix_nmf
31
- [2, 3, 4, 5].each do |cols|
32
- res = @m1.nmf(cols)
33
- assert_equal([3,cols], res[0].size)
34
- assert_equal([cols,3], res[1].size)
35
- cost = GSL::Matrix::NMF.difcost(@m1, res[0]*res[1])
36
- assert(cost <= 0.000001, "Cols: #{cols}, Delta: #{cost}")
37
- end
38
- end
39
- end
@@ -1,48 +0,0 @@
1
- #!/usr/bin/enm ruby
2
-
3
- require("gsl")
4
- require("test/unit")
5
-
6
- class MatrixTest < Test::Unit::TestCase
7
-
8
- def test_matrix_ispos_neg
9
- m = GSL::Matrix::Int.alloc([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3)
10
- assert_equal(m.ispos, 0)
11
- assert_equal(m.ispos?, false)
12
- assert_equal(m.isneg, 0)
13
- assert_equal(m.isneg?, false)
14
-
15
- m += 1
16
- assert_equal(m.ispos, 1)
17
- assert_equal(m.ispos?, true)
18
- assert_equal(m.isneg, 0)
19
- assert_equal(m.isneg?, false)
20
-
21
- m -= 100
22
- assert_equal(m.ispos, 0)
23
- assert_equal(m.ispos?, false)
24
- assert_equal(m.isneg, 1)
25
- assert_equal(m.isneg?, true)
26
- end
27
-
28
- def test_matrix_isnonneg
29
- m = GSL::Matrix::Int.alloc([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3)
30
- assert_equal(m.isnonneg, 1)
31
- assert_equal(m.isnonneg?, true)
32
- assert_equal(m.isneg, 0)
33
- assert_equal(m.isneg?, false)
34
-
35
- m -= 100
36
- assert_equal(m.isnonneg, 0)
37
- assert_equal(m.isnonneg?, false)
38
- assert_equal(m.isneg, 1)
39
- assert_equal(m.isneg?, true)
40
-
41
- m += 200
42
- assert_equal(m.isnonneg, 1)
43
- assert_equal(m.isnonneg?, true)
44
- assert_equal(m.ispos, 1)
45
- assert_equal(m.ispos?, true)
46
- end
47
- end
48
-
@@ -1,99 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Ruby/GSL implementation of GSL "min/test.c"
3
- require("gsl")
4
- require("./gsl_test2.rb")
5
- include GSL::Test
6
- include Math
7
-
8
- GSL::IEEE::env_setup()
9
-
10
- EPSABS = 0.001
11
- EPSREL = 0.001
12
- MAX_ITERATIONS = 100
13
-
14
- def within_tol(a, b, epsrel, epsabs)
15
- (a - b).abs < (epsrel*GSL::MIN(a.abs, b.abs) + epsabs)
16
- end
17
-
18
- def test_f(type, desc, f, lower, mid, upper, min)
19
- x_lower = lower
20
- x_upper = upper
21
- s = GSL::Min::FMinimizer.alloc(type)
22
- s.set(f, mid, x_lower, x_upper)
23
- iterations = 0
24
- begin
25
- iterations += 1
26
- status = s.iterate
27
- m = s.x_minimum
28
- a = s.x_lower
29
- b = s.x_upper
30
- if a > b
31
- desc2 = sprintf("interval is invalid (%g,%g)", a, b)
32
- GSL::Test::test(GSL::FAILURE, desc2)
33
- end
34
- if m < a or m > b
35
- desc2 = sprintf("m lies outside interval %g (%g,%g)", m, a, b)
36
- GSL::Test::test(GSL::FAILURE, desc2)
37
- end
38
- if status == 1; break; end
39
- status = GSL::Min.test_interval(a, b, EPSABS, EPSREL)
40
- end while status == GSL::CONTINUE and iterations < MAX_ITERATIONS
41
- desc2 = sprintf("%s, %s (%g obs vs %g expected) ", s.name, desc, s.x_minimum, min)
42
- GSL::Test::test(status, desc2)
43
- if !within_tol(m, min, EPSREL, EPSABS)
44
- desc2 = sprintf("incorrect precision (%g obs vs %g expected)", m, min)
45
- GSL::Test::test(GSL::FAILURE, desc2)
46
- end
47
- end
48
-
49
- def test_f_e(type, desc, f, lower, mid, upper, min)
50
- x_lower = lower
51
- x_upper = upper
52
- s = GSL::Min::FMinimizer.alloc(type)
53
- status = nil
54
- begin
55
- status = s.set(f, mid, x_lower, x_upper)
56
- rescue
57
- end
58
- if status != GSL::SUCCESS
59
- desc2 = sprintf("%s, %s", s.name, desc)
60
- GSL::Test::test(status == GSL::SUCCESS ? 1 : 0, desc2)
61
- end
62
- iterations = 0
63
- begin
64
- iterations += 1
65
- status = s.iterate
66
- m = s.x_minimum
67
- a = s.x_lower
68
- b = s.x_upper
69
- status = GSL::Min.test_interval(a, b, EPSABS, EPSREL)
70
- rescue
71
- end while status == GSL::CONTINUE and iterations < MAX_ITERATIONS
72
- # desc2 = sprintf("%s, %s", s.name, desc)
73
- # GSL::Test::test(status == 0 ? 0 : 1, desc2)
74
- end
75
-
76
- F_cos = GSL::Function.alloc { |x| cos(x) }
77
- Func1 = GSL::Function.alloc { |x| pow(x, 4.0) - 1 }
78
- Func2 = GSL::Function.alloc { |x| sqrt(x.abs) }
79
- Func3 = GSL::Function.alloc { |x|
80
- if x < 1.0
81
- 1
82
- else
83
- -exp(-x)
84
- end
85
- }
86
- Func4 = GSL::Function.alloc { |x| x - 30.0/(1.0 + 1e5*pow(x - 0.8, 2.0)) }
87
-
88
- types = ["goldensection", "brent", "quad_golden"]
89
- types.each do |t|
90
- test_f(t, "cos(x) [0 (3) 6]", F_cos, 0.0, 3.0, 6.0, M_PI)
91
- test_f(t, "x^4 - 1 [-3 (-1) 17]", Func1, -3.0, -1.0, 17.0, 0.0);
92
- test_f(t, "sqrt(|x|) [-2 (-1) 1.5]", Func2, -2.0, -1.0, 1.5, 0.0);
93
- test_f(t, "func3(x) [-2 (3) 4]", Func3, -2.0, 3.0, 4.0, 1.0);
94
- test_f(t, "func4(x) [0 (0.782) 1]", Func4, 0, 0.782, 1.0, 0.8);
95
-
96
- test_f_e(t, "invalid range check [4, 0]", F_cos, 4.0, 3.0, 0.0, M_PI);
97
- test_f_e(t, "invalid range check [1, 1]", F_cos, 1.0, 1.0, 1.0, M_PI);
98
- test_f_e(t, "invalid range check [-1, 1]", F_cos, -1.0, 0.0, 1.0, M_PI)
99
- end