gsl 1.12.108

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 (158) hide show
  1. data/README.rdoc +29 -0
  2. data/Rakefile +54 -0
  3. data/VERSION +2 -0
  4. data/ext/MANIFEST +119 -0
  5. data/ext/alf.c +206 -0
  6. data/ext/array.c +666 -0
  7. data/ext/array_complex.c +247 -0
  8. data/ext/blas.c +29 -0
  9. data/ext/blas1.c +731 -0
  10. data/ext/blas2.c +1093 -0
  11. data/ext/blas3.c +881 -0
  12. data/ext/block.c +44 -0
  13. data/ext/block_source.c +886 -0
  14. data/ext/bspline.c +130 -0
  15. data/ext/bundle.c +3 -0
  16. data/ext/cdf.c +754 -0
  17. data/ext/cheb.c +542 -0
  18. data/ext/combination.c +283 -0
  19. data/ext/common.c +325 -0
  20. data/ext/complex.c +1004 -0
  21. data/ext/const.c +673 -0
  22. data/ext/const_additional.c +120 -0
  23. data/ext/cqp.c +283 -0
  24. data/ext/deriv.c +195 -0
  25. data/ext/dht.c +361 -0
  26. data/ext/diff.c +166 -0
  27. data/ext/dirac.c +395 -0
  28. data/ext/eigen.c +2373 -0
  29. data/ext/error.c +194 -0
  30. data/ext/extconf.rb +281 -0
  31. data/ext/fcmp.c +66 -0
  32. data/ext/fft.c +1092 -0
  33. data/ext/fit.c +205 -0
  34. data/ext/fresnel.c +312 -0
  35. data/ext/function.c +524 -0
  36. data/ext/geometry.c +139 -0
  37. data/ext/graph.c +1638 -0
  38. data/ext/gsl.c +271 -0
  39. data/ext/gsl_narray.c +653 -0
  40. data/ext/histogram.c +1995 -0
  41. data/ext/histogram2d.c +1068 -0
  42. data/ext/histogram3d.c +884 -0
  43. data/ext/histogram3d_source.c +750 -0
  44. data/ext/histogram_find.c +101 -0
  45. data/ext/histogram_oper.c +159 -0
  46. data/ext/ieee.c +98 -0
  47. data/ext/integration.c +1138 -0
  48. data/ext/interp.c +512 -0
  49. data/ext/jacobi.c +739 -0
  50. data/ext/linalg.c +4047 -0
  51. data/ext/linalg_complex.c +741 -0
  52. data/ext/math.c +725 -0
  53. data/ext/matrix.c +39 -0
  54. data/ext/matrix_complex.c +1732 -0
  55. data/ext/matrix_double.c +560 -0
  56. data/ext/matrix_int.c +256 -0
  57. data/ext/matrix_source.c +2733 -0
  58. data/ext/min.c +250 -0
  59. data/ext/monte.c +992 -0
  60. data/ext/multifit.c +1879 -0
  61. data/ext/multimin.c +808 -0
  62. data/ext/multimin_fsdf.c +156 -0
  63. data/ext/multiroots.c +955 -0
  64. data/ext/ndlinear.c +321 -0
  65. data/ext/nmf.c +167 -0
  66. data/ext/nmf_wrap.c +72 -0
  67. data/ext/ntuple.c +469 -0
  68. data/ext/odeiv.c +959 -0
  69. data/ext/ool.c +879 -0
  70. data/ext/oper_complex_source.c +253 -0
  71. data/ext/permutation.c +596 -0
  72. data/ext/poly.c +42 -0
  73. data/ext/poly2.c +265 -0
  74. data/ext/poly_source.c +1885 -0
  75. data/ext/qrng.c +171 -0
  76. data/ext/randist.c +1873 -0
  77. data/ext/rational.c +480 -0
  78. data/ext/rng.c +612 -0
  79. data/ext/root.c +408 -0
  80. data/ext/sf.c +1494 -0
  81. data/ext/sf_airy.c +200 -0
  82. data/ext/sf_bessel.c +867 -0
  83. data/ext/sf_clausen.c +28 -0
  84. data/ext/sf_coulomb.c +206 -0
  85. data/ext/sf_coupling.c +118 -0
  86. data/ext/sf_dawson.c +29 -0
  87. data/ext/sf_debye.c +157 -0
  88. data/ext/sf_dilog.c +42 -0
  89. data/ext/sf_elementary.c +44 -0
  90. data/ext/sf_ellint.c +206 -0
  91. data/ext/sf_elljac.c +29 -0
  92. data/ext/sf_erfc.c +93 -0
  93. data/ext/sf_exp.c +164 -0
  94. data/ext/sf_expint.c +211 -0
  95. data/ext/sf_fermi_dirac.c +148 -0
  96. data/ext/sf_gamma.c +344 -0
  97. data/ext/sf_gegenbauer.c +96 -0
  98. data/ext/sf_hyperg.c +197 -0
  99. data/ext/sf_laguerre.c +112 -0
  100. data/ext/sf_lambert.c +47 -0
  101. data/ext/sf_legendre.c +367 -0
  102. data/ext/sf_log.c +104 -0
  103. data/ext/sf_mathieu.c +238 -0
  104. data/ext/sf_power.c +46 -0
  105. data/ext/sf_psi.c +98 -0
  106. data/ext/sf_synchrotron.c +48 -0
  107. data/ext/sf_transport.c +76 -0
  108. data/ext/sf_trigonometric.c +207 -0
  109. data/ext/sf_zeta.c +119 -0
  110. data/ext/signal.c +310 -0
  111. data/ext/siman.c +718 -0
  112. data/ext/sort.c +208 -0
  113. data/ext/spline.c +395 -0
  114. data/ext/stats.c +799 -0
  115. data/ext/sum.c +168 -0
  116. data/ext/tamu_anova.c +56 -0
  117. data/ext/tensor.c +38 -0
  118. data/ext/tensor_source.c +1123 -0
  119. data/ext/vector.c +38 -0
  120. data/ext/vector_complex.c +2236 -0
  121. data/ext/vector_double.c +1433 -0
  122. data/ext/vector_int.c +204 -0
  123. data/ext/vector_source.c +3329 -0
  124. data/ext/wavelet.c +937 -0
  125. data/include/rb_gsl.h +151 -0
  126. data/include/rb_gsl_array.h +238 -0
  127. data/include/rb_gsl_cheb.h +21 -0
  128. data/include/rb_gsl_common.h +343 -0
  129. data/include/rb_gsl_complex.h +25 -0
  130. data/include/rb_gsl_const.h +29 -0
  131. data/include/rb_gsl_dirac.h +13 -0
  132. data/include/rb_gsl_eigen.h +17 -0
  133. data/include/rb_gsl_fft.h +62 -0
  134. data/include/rb_gsl_fit.h +25 -0
  135. data/include/rb_gsl_function.h +27 -0
  136. data/include/rb_gsl_graph.h +70 -0
  137. data/include/rb_gsl_histogram.h +63 -0
  138. data/include/rb_gsl_histogram3d.h +97 -0
  139. data/include/rb_gsl_integration.h +17 -0
  140. data/include/rb_gsl_interp.h +46 -0
  141. data/include/rb_gsl_linalg.h +25 -0
  142. data/include/rb_gsl_math.h +26 -0
  143. data/include/rb_gsl_odeiv.h +21 -0
  144. data/include/rb_gsl_poly.h +71 -0
  145. data/include/rb_gsl_rational.h +37 -0
  146. data/include/rb_gsl_rng.h +21 -0
  147. data/include/rb_gsl_root.h +22 -0
  148. data/include/rb_gsl_sf.h +119 -0
  149. data/include/rb_gsl_statistics.h +17 -0
  150. data/include/rb_gsl_tensor.h +45 -0
  151. data/include/rb_gsl_with_narray.h +22 -0
  152. data/include/templates_off.h +87 -0
  153. data/include/templates_on.h +241 -0
  154. data/lib/gsl/gnuplot.rb +41 -0
  155. data/lib/gsl/oper.rb +68 -0
  156. data/lib/ool.rb +22 -0
  157. data/lib/ool/conmin.rb +30 -0
  158. metadata +224 -0
@@ -0,0 +1,22 @@
1
+ #ifdef HAVE_NARRAY_H
2
+
3
+ #include "narray.h"
4
+ #include "gsl/gsl_vector.h"
5
+
6
+ gsl_vector* make_cvector_from_narray(VALUE);
7
+ void cvector_set_from_narray(gsl_vector*, VALUE);
8
+ void carray_set_from_narray(double*, VALUE);
9
+
10
+ VALUE rb_gsl_na_to_gsl_matrix(VALUE obj, VALUE nna);
11
+ gsl_vector_view* na_to_gv_view(VALUE na);
12
+ gsl_matrix_view* na_to_gm_view(VALUE nna);
13
+
14
+ gsl_vector_int_view* na_to_gv_int_view(VALUE na);
15
+ gsl_matrix_int_view* na_to_gm_int_view(VALUE nna);
16
+ gsl_vector* na_to_gv(VALUE na);
17
+ gsl_vector_int* na_to_gv_int(VALUE na);
18
+ gsl_matrix* na_to_gm(VALUE nna);
19
+ gsl_matrix_int* na_to_gm_int(VALUE nna);
20
+ extern VALUE cNVector, cNMatrix;
21
+
22
+ #endif
@@ -0,0 +1,87 @@
1
+ #ifdef FUNCTION
2
+ #undef FUNCTION
3
+ #endif
4
+
5
+ #ifdef CONCAT4
6
+ #undef CONCAT4
7
+ #endif
8
+
9
+ #ifdef CONCAT4x
10
+ #undef CONCAT4x
11
+ #endif
12
+
13
+ #ifdef CONCAT3
14
+ #undef CONCAT3
15
+ #endif
16
+
17
+ #ifdef CONCAT3x
18
+ #undef CONCAT3x
19
+ #endif
20
+
21
+ #ifdef CONCAT2
22
+ #undef CONCAT2
23
+ #endif
24
+
25
+ #ifdef CONCAT2x
26
+ #undef CONCAT2x
27
+ #endif
28
+
29
+ #ifdef GSL_TYPE
30
+ #undef GSL_TYPE
31
+ #endif
32
+
33
+ #ifdef REAL_GSL_TYPE
34
+ #undef REAL_GSL_TYPE
35
+ #endif
36
+
37
+ #ifdef QUALIFIED_GSL_TYPE
38
+ #undef QUALIFIED_GSL_TYPE
39
+ #endif
40
+
41
+ #ifdef VIEW
42
+ #undef VIEW
43
+ #endif
44
+
45
+ #ifdef REAL_VIEW
46
+ #undef REAL_VIEW
47
+ #endif
48
+
49
+ #ifdef QUALIFIED_VIEW
50
+ #undef QUALIFIED_VIEW
51
+ #endif
52
+
53
+ #ifdef QUALIFIED_REAL_GSL_TYPE
54
+ #undef QUALIFIED_REAL_GSL_TYPE
55
+ #endif
56
+
57
+ #ifdef QUALIFIED_REAL_VIEW
58
+ #undef QUALIFIED_REAL_VIEW
59
+ #endif
60
+
61
+ #ifdef USES_LONGDOUBLE
62
+ #undef USES_LONGDOUBLE
63
+ #endif
64
+
65
+ #ifdef SHORT_REAL
66
+ #undef SHORT_REAL
67
+ #endif
68
+
69
+ #ifndef USE_QUALIFIER
70
+ #ifdef QUALIFIER
71
+ #undef QUALIFIER
72
+ #endif
73
+ #endif
74
+
75
+ #undef BASE
76
+ #undef BASE_EPSILON
77
+ #undef SHORT
78
+ #undef ATOMIC
79
+ #undef MULTIPLICITY
80
+ #undef IN_FORMAT
81
+ #undef OUT_FORMAT
82
+ #undef ATOMIC_IO
83
+ #undef ZERO
84
+ #undef ONE
85
+ #undef NAME
86
+ #undef STRING
87
+ #undef EXPAND
@@ -0,0 +1,241 @@
1
+ /* If BASE is undefined we use function names like gsl_name()
2
+ and assume that we are using doubles.
3
+
4
+ If BASE is defined we used function names like gsl_BASE_name()
5
+ and use BASE as the base datatype */
6
+
7
+ #if defined(BASE_GSL_COMPLEX_LONG)
8
+ #define BASE gsl_complex_long_double
9
+ #define SHORT complex_long_double
10
+ #define SHORT_REAL long_double
11
+ #define ATOMIC long double
12
+ #define USES_LONGDOUBLE 1
13
+ #define MULTIPLICITY 2
14
+ #define IN_FORMAT "%Lg"
15
+ #define OUT_FORMAT "%Lg"
16
+ #define ATOMIC_IO ATOMIC
17
+ #define ZERO {{0.0L,0.0L}}
18
+ #define ONE {{1.0L,0.0L}}
19
+ #define BASE_EPSILON GSL_DBL_EPSILON
20
+
21
+ #elif defined(BASE_GSL_COMPLEX)
22
+ #define BASE gsl_complex
23
+ #define SHORT complex
24
+ #define SHORT_REAL
25
+ #define ATOMIC double
26
+ #define MULTIPLICITY 2
27
+ #define IN_FORMAT "%lg"
28
+ #define OUT_FORMAT "%g"
29
+ #define ATOMIC_IO ATOMIC
30
+ #define ZERO {{0.0,0.0}}
31
+ #define ONE {{1.0,0.0}}
32
+ #define BASE_EPSILON GSL_DBL_EPSILON
33
+
34
+ #elif defined(BASE_GSL_COMPLEX_FLOAT)
35
+ #define BASE gsl_complex_float
36
+ #define SHORT complex_float
37
+ #define SHORT_REAL float
38
+ #define ATOMIC float
39
+ #define MULTIPLICITY 2
40
+ #define IN_FORMAT "%g"
41
+ #define OUT_FORMAT "%g"
42
+ #define ATOMIC_IO ATOMIC
43
+ #define ZERO {{0.0F,0.0F}}
44
+ #define ONE {{1.0F,0.0F}}
45
+ #define BASE_EPSILON GSL_FLT_EPSILON
46
+
47
+ #elif defined(BASE_LONG_DOUBLE)
48
+ #define BASE long double
49
+ #define SHORT long_double
50
+ #define ATOMIC long double
51
+ #define USES_LONGDOUBLE 1
52
+ #define MULTIPLICITY 1
53
+ #define IN_FORMAT "%Lg"
54
+ #define OUT_FORMAT "%Lg"
55
+ #define ATOMIC_IO ATOMIC
56
+ #define ZERO 0.0L
57
+ #define ONE 1.0L
58
+ #define BASE_EPSILON GSL_DBL_EPSILON
59
+
60
+ #elif defined(BASE_DOUBLE)
61
+ #define BASE double
62
+ #define SHORT
63
+ #define ATOMIC double
64
+ #define MULTIPLICITY 1
65
+ #define IN_FORMAT "%lg"
66
+ #define OUT_FORMAT "%g"
67
+ #define ATOMIC_IO ATOMIC
68
+ #define ZERO 0.0
69
+ #define ONE 1.0
70
+ #define BASE_EPSILON GSL_DBL_EPSILON
71
+
72
+ #elif defined(BASE_FLOAT)
73
+ #define BASE float
74
+ #define SHORT float
75
+ #define ATOMIC float
76
+ #define MULTIPLICITY 1
77
+ #define IN_FORMAT "%g"
78
+ #define OUT_FORMAT "%g"
79
+ #define ATOMIC_IO ATOMIC
80
+ #define ZERO 0.0F
81
+ #define ONE 1.0F
82
+ #define BASE_EPSILON GSL_FLT_EPSILON
83
+
84
+ #elif defined(BASE_ULONG)
85
+ #define BASE unsigned long
86
+ #define SHORT ulong
87
+ #define ATOMIC unsigned long
88
+ #define MULTIPLICITY 1
89
+ #define IN_FORMAT "%lu"
90
+ #define OUT_FORMAT "%lu"
91
+ #define ATOMIC_IO ATOMIC
92
+ #define ZERO 0UL
93
+ #define ONE 1UL
94
+
95
+ #elif defined(BASE_LONG)
96
+ #define BASE long
97
+ #define SHORT long
98
+ #define ATOMIC long
99
+ #define MULTIPLICITY 1
100
+ #define IN_FORMAT "%ld"
101
+ #define OUT_FORMAT "%ld"
102
+ #define ATOMIC_IO ATOMIC
103
+ #define ZERO 0L
104
+ #define ONE 1L
105
+
106
+ #elif defined(BASE_UINT)
107
+ #define BASE unsigned int
108
+ #define SHORT uint
109
+ #define ATOMIC unsigned int
110
+ #define MULTIPLICITY 1
111
+ #define IN_FORMAT "%u"
112
+ #define OUT_FORMAT "%u"
113
+ #define ATOMIC_IO ATOMIC
114
+ #define ZERO 0U
115
+ #define ONE 1U
116
+
117
+ #elif defined(BASE_INT)
118
+ #define BASE int
119
+ #define SHORT int
120
+ #define ATOMIC int
121
+ #define MULTIPLICITY 1
122
+ #define IN_FORMAT "%d"
123
+ #define OUT_FORMAT "%d"
124
+ #define ATOMIC_IO ATOMIC
125
+ #define ZERO 0
126
+ #define ONE 1
127
+
128
+ #elif defined(BASE_USHORT)
129
+ #define BASE unsigned short
130
+ #define SHORT ushort
131
+ #define ATOMIC unsigned short
132
+ #define MULTIPLICITY 1
133
+ #define IN_FORMAT "%hu"
134
+ #define OUT_FORMAT "%hu"
135
+ #define ATOMIC_IO ATOMIC
136
+ #define ZERO 0U
137
+ #define ONE 1U
138
+
139
+ #elif defined(BASE_SHORT)
140
+ #define BASE short
141
+ #define SHORT short
142
+ #define ATOMIC short
143
+ #define MULTIPLICITY 1
144
+ #define IN_FORMAT "%hd"
145
+ #define OUT_FORMAT "%hd"
146
+ #define ATOMIC_IO ATOMIC
147
+ #define ZERO 0
148
+ #define ONE 1
149
+
150
+ #elif defined(BASE_UCHAR)
151
+ #define BASE unsigned char
152
+ #define SHORT uchar
153
+ #define ATOMIC unsigned char
154
+ #define MULTIPLICITY 1
155
+ #define IN_FORMAT "%u"
156
+ #define OUT_FORMAT "%u"
157
+ #define ATOMIC_IO unsigned int
158
+ #define ZERO 0U
159
+ #define ONE 1U
160
+
161
+ #elif defined(BASE_CHAR)
162
+ #define BASE char
163
+ #define SHORT char
164
+ #define ATOMIC char
165
+ #define MULTIPLICITY 1
166
+ #define IN_FORMAT "%d"
167
+ #define OUT_FORMAT "%d"
168
+ #define ATOMIC_IO int
169
+ #define ZERO 0
170
+ #define ONE 1
171
+
172
+ #else
173
+ #error unknown BASE_ directive in source.h
174
+ #endif
175
+
176
+ #define CONCAT2x(a,b) a ## _ ## b
177
+ #define CONCAT2(a,b) CONCAT2x(a,b)
178
+ #define CONCAT3x(a,b,c) a ## _ ## b ## _ ## c
179
+ #define CONCAT3(a,b,c) CONCAT3x(a,b,c)
180
+ #define CONCAT4x(a,b,c,d) a ## _ ## b ## _ ## c ## _ ## d
181
+ #define CONCAT4(a,b,c,d) CONCAT4x(a,b,c,d)
182
+
183
+ #ifndef USE_QUALIFIER
184
+ #define QUALIFIER
185
+ #endif
186
+
187
+ #ifdef USE_QUALIFIER
188
+ #if defined(BASE_DOUBLE)
189
+ #define FUNCTION(dir,name) CONCAT3(dir,QUALIFIER,name)
190
+ #define GSL_TYPE(dir) dir
191
+ #define VIEW(dir,name) CONCAT2(dir,name)
192
+ #define QUALIFIED_GSL_TYPE(dir) QUALIFIER dir
193
+ #define QUALIFIED_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name)
194
+ #else
195
+ #define FUNCTION(a,c) CONCAT4(a,SHORT,QUALIFIER,c)
196
+ #define GSL_TYPE(dir) CONCAT2(dir,SHORT)
197
+ #define VIEW(dir,name) CONCAT3(dir,SHORT,name)
198
+ #define QUALIFIED_GSL_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT)
199
+ #define QUALIFIED_VIEW(dir,name) CONCAT4(dir,SHORT,QUALIFIER,name)
200
+ #endif
201
+ #if defined(BASE_GSL_COMPLEX)
202
+ #define REAL_GSL_TYPE(dir) dir
203
+ #define REAL_VIEW(dir,name) CONCAT2(dir,name)
204
+ #define QUALIFIED_REAL_GSL_TYPE(dir) QUALIFIER dir
205
+ #define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,QUALIFIER,name)
206
+ #else
207
+ #define REAL_GSL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
208
+ #define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
209
+ #define QUALIFIED_REAL_GSL_TYPE(dir) QUALIFIER CONCAT2(dir,SHORT_REAL)
210
+ #define QUALIFIED_REAL_VIEW(dir,name) CONCAT4(dir,SHORT_REAL,QUALIFIER,name)
211
+ #endif
212
+ #else
213
+ #if defined(BASE_DOUBLE)
214
+ #define FUNCTION(dir,name) CONCAT2(dir,name)
215
+ #define GSL_TYPE(dir) dir
216
+ #define VIEW(dir,name) CONCAT2(dir,name)
217
+ #define QUALIFIED_GSL_TYPE(dir) GSL_TYPE(dir)
218
+ #define QUALIFIED_VIEW(dir,name) CONCAT2(dir,name)
219
+ #else
220
+ #define FUNCTION(a,c) CONCAT3(a,SHORT,c)
221
+ #define GSL_TYPE(dir) CONCAT2(dir,SHORT)
222
+ #define VIEW(dir,name) CONCAT3(dir,SHORT,name)
223
+ #define QUALIFIED_GSL_TYPE(dir) GSL_TYPE(dir)
224
+ #define QUALIFIED_VIEW(dir,name) CONCAT3(dir,SHORT,name)
225
+ #endif
226
+ #if defined(BASE_GSL_COMPLEX)
227
+ #define REAL_GSL_TYPE(dir) dir
228
+ #define REAL_VIEW(dir,name) CONCAT2(dir,name)
229
+ #define QUALIFIED_REAL_GSL_TYPE(dir) dir
230
+ #define QUALIFIED_REAL_VIEW(dir,name) CONCAT2(dir,name)
231
+ #else
232
+ #define REAL_GSL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
233
+ #define REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
234
+ #define QUALIFIED_REAL_GSL_TYPE(dir) CONCAT2(dir,SHORT_REAL)
235
+ #define QUALIFIED_REAL_VIEW(dir,name) CONCAT3(dir,SHORT_REAL,name)
236
+ #endif
237
+ #endif
238
+
239
+ #define STRING(x) #x
240
+ #define EXPAND(x) STRING(x)
241
+ #define NAME(x) EXPAND(GSL_TYPE(x))
@@ -0,0 +1,41 @@
1
+ require("gnuplot")
2
+
3
+ class Array
4
+ def to_gplot
5
+ if ( self[0].kind_of? Array ) then
6
+ tmp = self[0].zip( *self[1..-1] )
7
+ tmp.collect { |a| a.join(" ") }.join("\n") + "\ne"
8
+ elsif ( self[0].kind_of? Numeric ) then
9
+ s = ""
10
+ self.length.times { |i| s << "#{self[i]}\n" }
11
+ s
12
+ elsif ( self[0].kind_of? GSL::Vector ) then
13
+ tmp = self[0].zip( *self[1..-1] )
14
+ tmp.collect { |a| a.join(" ") }.join("\n") + "\ne"
15
+ else
16
+ self[0].zip( *self[1..-1] ).to_gplot
17
+ end
18
+ end
19
+ def to_gsplot
20
+ f = ""
21
+
22
+ if ( self[0].kind_of? Array ) then
23
+ x = self[0]
24
+ y = self[1]
25
+ d = self[2]
26
+
27
+ x.each_with_index do |xv, i|
28
+ y.each_with_index do |yv, j|
29
+ f << [ xv, yv, d[i][j] ].join(" ") << "\n"
30
+ end
31
+ # f << "\n"
32
+ end
33
+ elsif ( self[0].kind_of? Numeric ) then
34
+ self.length.times do |i| f << "#{self[i]}\n" end
35
+ else
36
+ self[0].zip( *self[1..-1] ).to_gsplot
37
+ end
38
+
39
+ f
40
+ end
41
+ end
@@ -0,0 +1,68 @@
1
+ class Fixnum
2
+ alias :_orig_mul :*
3
+ alias :_orig_div :/
4
+ def *(other)
5
+ if other.kind_of?(GSL::Matrix) or other.kind_of?(GSL::Vector) or other.kind_of?(GSL::Matrix::Int) or other.kind_of?(GSL::Vector::Int) or other.kind_of?(GSL::Vector::Complex)or other.kind_of?(GSL::Matrix::Complex)
6
+ other.scale(self)
7
+ else
8
+ if GSL.have_tensor?
9
+ if other.kind_of?(GSL::Tensor) or other.kind_of?(GSL::Tensor::Int)
10
+ other.scale(self)
11
+ else
12
+ self._orig_mul(other)
13
+ end
14
+ else
15
+ self._orig_mul(other)
16
+ end
17
+ end
18
+ end
19
+
20
+ def /(other)
21
+ if other.kind_of?(GSL::Poly) or other.kind_of?(GSL::Poly::Int)
22
+ a = GSL::Poly[1]; a[0] = self
23
+ GSL::Rational.new(a, other)
24
+ elsif other.kind_of?(GSL::Vector::Col)
25
+ other.scale(1.0/GSL::pow_2(other.dnrm2))
26
+ elsif other.kind_of?(GSL::Vector::Int::Col)
27
+ v = other.to_f
28
+ v.scale(1.0/GSL::pow_2(v.dnrm2))
29
+ else
30
+ self._orig_div(other)
31
+ end
32
+ end
33
+ end
34
+
35
+ class Float
36
+ alias :_orig_mul :*
37
+ alias :_orig_div :/
38
+
39
+ def *(other)
40
+ if other.kind_of?(GSL::Matrix) or other.kind_of?(GSL::Vector) or other.kind_of?(GSL::Matrix::Int) or other.kind_of?(GSL::Vector::Int) or other.kind_of?(GSL::Vector::Complex)or other.kind_of?(GSL::Matrix::Complex)
41
+ other.scale(self)
42
+ else
43
+ if GSL.have_tensor?
44
+ if other.kind_of?(GSL::Tensor) or other.kind_of?(GSL::Tensor::Int)
45
+ other.scale(self)
46
+ else
47
+ self._orig_mul(other)
48
+ end
49
+ else
50
+ self._orig_mul(other)
51
+ end
52
+ end
53
+ end
54
+
55
+ def /(other)
56
+ if other.kind_of?(GSL::Poly) or other.kind_of?(GSL::Poly::Int)
57
+ a = GSL::Poly[1]; a[0] = self
58
+ GSL::Rational.new(a, other)
59
+ elsif other.kind_of?(GSL::Vector::Col)
60
+ other.scale(1.0/GSL::pow_2(other.dnrm2))
61
+ elsif other.kind_of?(GSL::Vector::Int::Col)
62
+ v = other.to_f
63
+ v.scale(1.0/GSL::pow_2(v.dnrm2))
64
+ else
65
+ self._orig_div(other)
66
+ end
67
+ end
68
+ end