gsl 1.12.108

Sign up to get free protection for your applications and to get access to all the features.
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