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,151 @@
1
+ /*
2
+ rb_gsl.h
3
+ Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
4
+ (C) Copyright 2001-2004 by Yoshiki Tsunesada
5
+
6
+ Ruby/GSL is free software: you can redistribute it and/or modify it
7
+ under the terms of the GNU General Public License.
8
+ This library is distributed in the hope that it will be useful, but
9
+ WITHOUT ANY WARRANTY
10
+ */
11
+
12
+ #ifndef ___RB_GSL_H___
13
+ #define ___RB_GSL_H___
14
+
15
+ #include <stdio.h>
16
+ #include <string.h>
17
+ #include <ctype.h>
18
+ #include <stdlib.h>
19
+ #include <gsl/gsl_mode.h>
20
+ #include "rb_gsl_common.h"
21
+ #include "rb_gsl_math.h"
22
+ #include "rb_gsl_complex.h"
23
+ #include "rb_gsl_array.h"
24
+ #include "rb_gsl_function.h"
25
+ #include "rb_gsl_poly.h"
26
+ #include "rb_gsl_sf.h"
27
+ #include "rb_gsl_linalg.h"
28
+ #include "rb_gsl_eigen.h"
29
+ #include "rb_gsl_fft.h"
30
+ #include "rb_gsl_integration.h"
31
+ #include "rb_gsl_rng.h"
32
+ #include "rb_gsl_statistics.h"
33
+ #include "rb_gsl_histogram.h"
34
+ #include "rb_gsl_odeiv.h"
35
+ #include "rb_gsl_interp.h"
36
+ #include "rb_gsl_cheb.h"
37
+ #include "rb_gsl_root.h"
38
+ #include "rb_gsl_fit.h"
39
+ #include "rb_gsl_const.h"
40
+ #include "rb_gsl_config.h"
41
+
42
+
43
+ #include "ruby.h"
44
+ #ifdef RUBY_1_9_LATER
45
+ #include "ruby/io.h"
46
+ #else
47
+ #include "rubyio.h"
48
+ #endif
49
+
50
+ void Init_gsl_error(VALUE module);
51
+ void Init_gsl_math(VALUE module);
52
+ void Init_gsl_complex(VALUE module);
53
+ void Init_gsl_array(VALUE module);
54
+ void Init_gsl_blas(VALUE module);
55
+ void Init_gsl_sort(VALUE module);
56
+ void Init_gsl_poly(VALUE module);
57
+ void Init_gsl_poly_int(VALUE module);
58
+ void Init_gsl_poly2(VALUE module);
59
+ void Init_gsl_rational(VALUE module);
60
+ void Init_gsl_sf(VALUE module);
61
+ void Init_gsl_linalg(VALUE module);
62
+ void Init_gsl_eigen(VALUE module);
63
+ void Init_gsl_fft(VALUE module);
64
+ void Init_gsl_signal(VALUE module);
65
+ void Init_gsl_function(VALUE module);
66
+ void Init_gsl_integration(VALUE module);
67
+
68
+ void Init_gsl_rng(VALUE module);
69
+ void Init_gsl_qrng(VALUE module);
70
+ void Init_gsl_ran(VALUE module);
71
+ void Init_gsl_cdf(VALUE module);
72
+ void Init_gsl_stats(VALUE module);
73
+
74
+ void Init_gsl_histogram(VALUE module);
75
+ void Init_gsl_histogram2d(VALUE module);
76
+ void Init_gsl_histogram3d(VALUE module);
77
+ void Init_gsl_ntuple(VALUE module);
78
+ void Init_gsl_monte(VALUE module);
79
+ void Init_gsl_siman(VALUE module);
80
+
81
+ void Init_gsl_odeiv(VALUE module);
82
+ void Init_gsl_interp(VALUE module);
83
+ void Init_gsl_spline(VALUE module);
84
+ void Init_gsl_diff(VALUE module);
85
+ #ifdef GSL_1_4_9_LATER
86
+ void Init_gsl_deriv(VALUE module);
87
+ #endif
88
+
89
+ void Init_gsl_cheb(VALUE module);
90
+ void Init_gsl_sum(VALUE module);
91
+ void Init_gsl_dht(VALUE module);
92
+
93
+ void Init_gsl_root(VALUE module);
94
+ void Init_gsl_multiroot(VALUE module);
95
+ void Init_gsl_min(VALUE module);
96
+ void Init_gsl_multimin(VALUE module);
97
+ void Init_gsl_fit(VALUE module);
98
+ void Init_gsl_multifit(VALUE module);
99
+
100
+ void Init_gsl_const(VALUE module);
101
+
102
+ void Init_gsl_ieee(VALUE module);
103
+
104
+ #ifdef HAVE_NARRAY_H
105
+ void Init_gsl_narray(VALUE module);
106
+ #endif
107
+
108
+ void Init_wavelet(VALUE module);
109
+
110
+ void Init_gsl_graph(VALUE module);
111
+
112
+ #ifdef HAVE_TENSOR_TENSOR_H
113
+ void Init_tensor_init(VALUE module);
114
+ void Init_tensor_int_init(VALUE module);
115
+ #endif
116
+
117
+ void Init_gsl_dirac(VALUE module);
118
+
119
+ EXTERN VALUE cGSL_Object;
120
+
121
+ void Init_tamu_anova(VALUE module);
122
+
123
+ #ifdef HAVE_TAMU_ANOVA_TAMU_ANOVA_H
124
+ #include "tamu_anova/tamu_anova.h"
125
+ #endif
126
+
127
+ #ifdef HAVE_OOL_OOL_VERSION_H
128
+ void Init_ool(VALUE module);
129
+ #endif
130
+
131
+ #ifdef HAVE_JACOBI_H
132
+ void Init_jacobi(VALUE module);
133
+ #endif
134
+
135
+ #ifdef HAVE_GSL_GSL_CQP_H
136
+ void Init_cqp(VALUE module);
137
+ #endif
138
+
139
+ void Init_fresnel(VALUE module);
140
+
141
+ #ifdef GSL_1_9_LATER
142
+ void Init_bspline(VALUE module);
143
+ #endif
144
+
145
+ #ifdef HAVE_ALF_ALF_H
146
+ #include "alf/alf.h"
147
+ #endif
148
+ void Init_alf(VALUE module);
149
+ void Init_geometry(VALUE module);
150
+
151
+ #endif
@@ -0,0 +1,238 @@
1
+ /*
2
+ rb_gsl_array.h
3
+ Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
4
+ (C) Copyright 2001-2004 by Yoshiki Tsunesada
5
+
6
+ Ruby/GSL is free software: you can redistribute it and/or modify it
7
+ under the terms of the GNU General Public License.
8
+ This library is distributed in the hope that it will be useful, but
9
+ WITHOUT ANY WARRANTY
10
+ */
11
+
12
+ #ifndef ___RB_GSL_ARRAY_H___
13
+ #define ___RB_GSL_ARRAY_H___
14
+
15
+ #include <math.h>
16
+ #include <gsl/gsl_errno.h>
17
+ #include <gsl/gsl_complex.h>
18
+ #include <gsl/gsl_block.h>
19
+ #include <gsl/gsl_vector.h>
20
+ #include <gsl/gsl_vector_complex.h>
21
+ #include <gsl/gsl_vector_complex_double.h>
22
+ #include <gsl/gsl_matrix.h>
23
+ #include <gsl/gsl_matrix_complex_double.h>
24
+ #include <gsl/gsl_permutation.h>
25
+ #include <gsl/gsl_combination.h>
26
+ #include <gsl/gsl_sort.h>
27
+ #include <gsl/gsl_sort_vector.h>
28
+ #include <gsl/gsl_linalg.h>
29
+ #include <gsl/gsl_eigen.h>
30
+ #include <gsl/gsl_odeiv.h>
31
+ #include <gsl/gsl_blas.h>
32
+ #include "rb_gsl_config.h"
33
+
34
+ #include "ruby.h"
35
+ #ifdef RUBY_1_9_LATER
36
+ #include "ruby/io.h"
37
+ #else
38
+ #include "rubyio.h"
39
+ #endif
40
+
41
+ #include "rb_gsl_common.h"
42
+
43
+ typedef gsl_permutation gsl_index;
44
+
45
+ #ifdef HAVE_NARRAY_H
46
+ EXTERN VALUE cNArray;
47
+ #endif
48
+
49
+ EXTERN VALUE cgsl_block, cgsl_block_int;
50
+ EXTERN VALUE cgsl_block_uchar;
51
+ EXTERN VALUE cgsl_block_complex;
52
+ EXTERN VALUE cgsl_vector, cgsl_vector_complex;
53
+ EXTERN VALUE cgsl_vector_col;
54
+ EXTERN VALUE cgsl_vector_col_view;
55
+ EXTERN VALUE cgsl_vector_complex_col;
56
+ EXTERN VALUE cgsl_vector_complex_col_view;
57
+ EXTERN VALUE cgsl_vector_view, cgsl_vector_complex_view;
58
+ EXTERN VALUE cgsl_vector_view_ro, cgsl_vector_col_view_ro;
59
+ EXTERN VALUE cgsl_vector_complex_view_ro;
60
+
61
+ EXTERN VALUE cgsl_vector_int, cgsl_vector_int_col;
62
+ EXTERN VALUE cgsl_vector_int_view, cgsl_vector_int_col_view;
63
+ EXTERN VALUE cgsl_vector_int_view_ro, cgsl_vector_int_col_view_ro;
64
+
65
+ EXTERN VALUE cgsl_matrix, cgsl_matrix_complex;
66
+ EXTERN VALUE cgsl_matrix_view_ro;
67
+ EXTERN VALUE cgsl_matrix_complex_view_ro;
68
+ EXTERN VALUE cgsl_matrix_view, cgsl_matrix_complex_view;
69
+ EXTERN VALUE cgsl_matrix_int, cgsl_matrix_int_view;
70
+ EXTERN VALUE cgsl_matrix_int_view_ro;
71
+ EXTERN VALUE cgsl_permutation;
72
+ EXTERN VALUE cgsl_index;
73
+ EXTERN VALUE cgsl_function;
74
+ EXTERN VALUE mgsl_narray;
75
+
76
+ EXTERN VALUE mDirac;
77
+
78
+ gsl_matrix_view* gsl_matrix_view_alloc();
79
+ void gsl_matrix_view_free(gsl_matrix_view * mv);
80
+ gsl_vector_view* gsl_vector_view_alloc();
81
+ void gsl_vector_view_free(gsl_vector_view * v);
82
+ gsl_vector_complex_view* gsl_vector_complex_view_alloc();
83
+ void gsl_vector_complex_view_free(gsl_vector_view * vv);
84
+ gsl_matrix_complex_view* gsl_matrix_complex_view_alloc();
85
+ void gsl_matrix_complex_view_free(gsl_matrix_view * vv);
86
+
87
+ VALUE rb_gsl_vector_new(int argc, VALUE *argv, VALUE klass);
88
+
89
+ gsl_vector* get_cvector(VALUE v);
90
+ VALUE make_rarray_from_cvector(const gsl_vector *v);
91
+ VALUE make_rarray_from_cpermutation(const gsl_permutation *v);
92
+ gsl_vector* make_cvector_from_rarrays(VALUE a);
93
+ gsl_vector* make_cvector_from_rarray(VALUE a);
94
+ void cvector_set_from_carray(gsl_vector *v, const double *a);
95
+ void cvector_set_from_rarrays(gsl_vector *v, VALUE ary);
96
+ void cvector_set_from_rarray(gsl_vector *v, VALUE ary);
97
+ void carray_set_from_cvector(double *a, const gsl_vector *v);
98
+ void carray_set_from_rarrays(double *a, VALUE ary);
99
+ void carray_set_from_rarray(double *a, VALUE ary);
100
+ int is_vector_p(VALUE obj);
101
+ void check_vector(VALUE obj);
102
+ int is_vector_complex_p(VALUE obj);
103
+ void check_vector_complex(VALUE obj);
104
+ int is_matrix_p(VALUE obj);
105
+ void check_matrix(VALUE obj);
106
+ int is_matrix_complex_p(VALUE obj);
107
+ void check_matrix_complex(VALUE obj);
108
+ gsl_complex* make_complex(double re, double im);
109
+ int is_permutation_p(VALUE obj);
110
+ void check_permutation(VALUE obj);
111
+ int is_combination_p(VALUE obj);
112
+ void check_combination(VALUE obj);
113
+ gsl_vector* get_vector(VALUE ary);
114
+ gsl_matrix* make_matrix_clone(const gsl_matrix *m);
115
+ gsl_matrix_int* make_matrix_int_clone(const gsl_matrix_int *m);
116
+ VALUE make_matrix_clone2(VALUE vm);
117
+ gsl_matrix_complex* make_matrix_complex_clone(const gsl_matrix_complex *m);
118
+ int is_matrix_complex_p(VALUE obj);
119
+ void check_matrix_complex(VALUE obj);
120
+
121
+ double* get_vector_ptr(VALUE ary, size_t *stride, size_t *n);
122
+
123
+
124
+ gsl_matrix_complex* matrix_to_complex(const gsl_matrix *m);
125
+
126
+ void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *m,
127
+ const gsl_matrix_complex *mb);
128
+ void gsl_matrix_mul(gsl_matrix *mnew, gsl_matrix *m, gsl_matrix *b);
129
+ void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
130
+ const gsl_matrix_complex *m,
131
+ const gsl_vector_complex *v);
132
+ void gsl_matrix_mul_vector(gsl_vector *vnew,
133
+ const gsl_matrix *m, const gsl_vector *v);
134
+ gsl_vector_complex* vector_to_complex(const gsl_vector *v);
135
+
136
+ gsl_vector* make_vector_clone(const gsl_vector *v);
137
+ gsl_vector_complex* make_vector_complex_clone(const gsl_vector_complex *v);
138
+ int gsl_vector_complex_add(gsl_vector_complex *cv, const gsl_vector_complex *cv2);
139
+ int gsl_vector_complex_sub(gsl_vector_complex *cv, const gsl_vector_complex *cv2);
140
+ int gsl_vector_complex_mul(gsl_vector_complex *cv, const gsl_vector_complex *cv2);
141
+ int gsl_vector_complex_div(gsl_vector_complex *cv, const gsl_vector_complex *cv2);
142
+ int gsl_vector_complex_add_constant(gsl_vector_complex *cv, gsl_complex b);
143
+ int gsl_vector_complex_scale(gsl_vector_complex *cv, gsl_complex b);
144
+ gsl_vector_view* rb_gsl_make_vector_view(double *data, size_t size, size_t stride);
145
+ gsl_vector_int_view* rb_gsl_make_vector_int_view(int *data, size_t size, size_t stride);
146
+
147
+ void Init_gsl_array_complex(VALUE module);
148
+ void Init_gsl_vector(VALUE module);
149
+ void Init_gsl_vector_complex(VALUE module);
150
+ void Init_gsl_matrix(VALUE module);
151
+ void Init_gsl_matrix_complex(VALUE module);
152
+ void Init_gsl_matrix(VALUE module);
153
+ void Init_gsl_permutation(VALUE module);
154
+ void Init_gsl_combination(VALUE module);
155
+ void Init_gsl_matrix_int(VALUE module);
156
+
157
+ VALUE rb_gsl_range2ary(VALUE obj);
158
+
159
+ void Init_gsl_vector_int();
160
+ gsl_vector_int_view* rb_gsl_vector_int_view_alloc(size_t n);
161
+ void rb_gsl_vector_int_view_free(gsl_vector_int_view *v);
162
+ gsl_vector_int* make_vector_int_clone(const gsl_vector_int *v);
163
+ gsl_matrix_int_view* rb_gsl_matrix_int_view_alloc();
164
+ void rb_gsl_matrix_int_view_free(gsl_matrix_int_view *v);
165
+ VALUE rb_gsl_matrix_to_i(VALUE obj);
166
+ VALUE rb_gsl_matrix_int_to_f(VALUE obj);
167
+ void gsl_matrix_int_mul_vector(gsl_vector_int *vnew,
168
+ const gsl_matrix_int *m, const gsl_vector_int *v);
169
+ VALUE rb_gsl_vector_to_i(VALUE obj);
170
+ VALUE make_rarray_from_cvector_int(const gsl_vector_int *v);
171
+ VALUE rb_gsl_vector_int_to_f(VALUE obj);
172
+ VALUE rb_gsl_vector_uminus(VALUE obj);
173
+ VALUE rb_gsl_vector_print(VALUE obj);
174
+ void gsl_vector_print(const gsl_vector *v, VALUE klass);
175
+ int rbgsl_vector_equal(const gsl_vector *v1, const gsl_vector *v2, double eps);
176
+
177
+ #ifndef GSL_1_2_LATER
178
+ int gsl_matrix_complex_add(gsl_matrix_complex * a, const gsl_matrix_complex * b);
179
+ int gsl_matrix_complex_sub(gsl_matrix_complex * a, const gsl_matrix_complex * b);
180
+ int gsl_matrix_complex_mul_elements(gsl_matrix_complex * a, const gsl_matrix_complex * b);
181
+ int gsl_matrix_complex_div_elements(gsl_matrix_complex * a, const gsl_matrix_complex * b);
182
+ int gsl_matrix_complex_scale(gsl_matrix_complex * a, const gsl_complex x);
183
+ int gsl_matrix_complex_add_constant(gsl_matrix_complex * a, const gsl_complex x);
184
+ int gsl_matrix_complex_add_diagonal(gsl_matrix_complex * a, const gsl_complex x);
185
+ #endif
186
+
187
+ void Init_gsl_vector_init(VALUE module);
188
+ void Init_gsl_vector_int_init(VALUE module);
189
+ void Init_gsl_matrix_init(VALUE module);
190
+ void Init_gsl_matrix_int_init(VALUE module);
191
+
192
+ gsl_matrix* gsl_matrix_alloc_from_array_sizes(VALUE ary,
193
+ VALUE nn1, VALUE nn2);
194
+ gsl_matrix* gsl_matrix_alloc_from_arrays(int argc, VALUE *argv);
195
+
196
+ gsl_matrix* gsl_matrix_alloc_from_vector_sizes(VALUE ary,
197
+ VALUE nn1, VALUE nn2);
198
+ gsl_matrix* gsl_matrix_alloc_from_vectors(int argc, VALUE *argv);
199
+ gsl_matrix_int* gsl_matrix_int_alloc_from_array_sizes(VALUE ary,
200
+ VALUE nn1, VALUE nn2);
201
+ gsl_matrix_int* gsl_matrix_int_alloc_from_arrays(int argc, VALUE *argv);
202
+
203
+ gsl_matrix_int* gsl_matrix_int_alloc_from_vector_sizes(VALUE ary,
204
+ VALUE nn1, VALUE nn2);
205
+ gsl_matrix_int* gsl_matrix_int_alloc_from_vectors(int argc, VALUE *argv);
206
+
207
+ VALUE rb_gsl_matrix_do_something(VALUE obj, void (*f)(gsl_matrix *));
208
+ VALUE rb_gsl_matrix_int_do_something(VALUE obj, void (*f)(gsl_matrix_int *));
209
+
210
+ VALUE rb_gsl_matrix_power(VALUE a, VALUE b);
211
+ VALUE rb_gsl_matrix_int_power(VALUE a, VALUE b);
212
+
213
+ void mygsl_vector_shift(gsl_vector *p, size_t n);
214
+ void mygsl_vector_int_shift(gsl_vector_int *p, size_t n);
215
+ void mygsl_vector_shift_scale2(gsl_vector *p, size_t n);
216
+ void mygsl_vector_int_shift_scale2(gsl_vector_int *p, size_t n);
217
+
218
+ VALUE rb_gsl_vector_to_s(VALUE obj);
219
+ VALUE rb_gsl_vector_int_to_s(VALUE obj);
220
+
221
+ VALUE rb_gsl_vector_add_constant(VALUE obj, VALUE x);
222
+ VALUE rb_gsl_vector_int_add_constant(VALUE obj, VALUE x);
223
+ VALUE rb_gsl_vector_scale(VALUE obj, VALUE x);
224
+ VALUE rb_gsl_vector_scale_bang(VALUE obj, VALUE x);
225
+ VALUE rb_gsl_vector_int_scale(VALUE obj, VALUE x);
226
+ VALUE rb_gsl_vector_int_scale_bang(VALUE obj, VALUE x);
227
+ gsl_vector_int* make_cvector_int_from_rarray(VALUE ary);
228
+ void cvector_int_set_from_rarray(gsl_vector_int *v, VALUE ary);
229
+ VALUE rb_gsl_range2vector(VALUE obj);
230
+ VALUE rb_gsl_range2vector_int(VALUE obj);
231
+
232
+ void Init_gsl_block_init(VALUE module);
233
+ void Init_gsl_block_int_init(VALUE module);
234
+ void Init_gsl_block_uchar_init(VALUE module);
235
+
236
+ void Init_gsl_matrix_nmf(void);
237
+
238
+ #endif
@@ -0,0 +1,21 @@
1
+ /*
2
+ rb_gsl_cheb.h
3
+ Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
4
+ (C) Copyright 2001-2004 by Yoshiki Tsunesada
5
+
6
+ Ruby/GSL is free software: you can redistribute it and/or modify it
7
+ under the terms of the GNU General Public License.
8
+ This library is distributed in the hope that it will be useful, but
9
+ WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ MERCHANTABILITY or CHEBNESS FOR A PARTICULAR PURPOSE.
11
+ */
12
+
13
+ #ifndef ___RB_GSL_CHEB_H___
14
+ #define ___RB_GSL_CHEB_H___
15
+
16
+ #include "rb_gsl.h"
17
+ #include "rb_gsl_function.h"
18
+ #include <gsl/gsl_math.h>
19
+ #include <gsl/gsl_chebyshev.h>
20
+
21
+ #endif
@@ -0,0 +1,343 @@
1
+ /*
2
+ rb_gsl_common.h
3
+ Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
4
+ (C) Copyright 2001-2004 by Yoshiki Tsunesada
5
+
6
+ Ruby/GSL is free software: you can redistribute it and/or modify it
7
+ under the terms of the GNU General Public License.
8
+ This library is distributed in the hope that it will be useful, but
9
+ WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
+ */
12
+ #ifndef ___RB_GSL_COMMON_H___
13
+ #define ___RB_GSL_COMMON_H___
14
+
15
+ #include "rb_gsl_config.h"
16
+ #include "ruby.h"
17
+ #include <ctype.h>
18
+ #include <gsl/gsl_errno.h>
19
+ #include <gsl/gsl_math.h>
20
+ #include <gsl/gsl_complex.h>
21
+ #include <gsl/gsl_vector.h>
22
+ #include <gsl/gsl_matrix.h>
23
+ #include <gsl/gsl_permutation.h>
24
+ #include <gsl/gsl_ieee_utils.h>
25
+ #ifdef HAVE_NARRAY_H
26
+ #include "narray.h"
27
+ #endif
28
+
29
+ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
30
+
31
+ #ifndef CHECK_FIXNUM
32
+ #define CHECK_FIXNUM(x) if(!FIXNUM_P(x))rb_raise(rb_eTypeError,"Fixnum expected");
33
+ #endif
34
+
35
+ #ifndef Need_Float
36
+ #define Need_Float(x) (x) = rb_Float(x)
37
+ #endif
38
+
39
+ #ifndef Need_Float2
40
+ #define Need_Float2(x,y) do {\
41
+ Need_Float(x);\
42
+ Need_Float(y);} while (0)
43
+ #endif
44
+
45
+ #ifndef COMPLEX_P
46
+ #define COMPLEX_P(x) (rb_obj_is_kind_of(x,cgsl_complex))
47
+ #endif
48
+
49
+ #ifndef CHECK_RNG
50
+ #define CHECK_RNG(x) if(!rb_obj_is_kind_of(x,cgsl_rng))\
51
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Rng expected)");
52
+ #endif
53
+
54
+ #ifndef CHECK_COMPLEX
55
+ #define CHECK_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_complex))\
56
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Complex expected)");
57
+ #endif
58
+
59
+ #ifndef POLY_P
60
+ #define POLY_P(x) (rb_obj_is_kind_of(x,cgsl_poly))
61
+ #endif
62
+
63
+ #ifndef CHECK_POLY
64
+ #define CHECK_POLY(x) if(!rb_obj_is_kind_of(x,cgsl_poly))\
65
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Poly expected)");
66
+ #endif
67
+
68
+ #ifndef CHECK_POLY_INT
69
+ #define CHECK_POLY_INT(x) if(!rb_obj_is_kind_of(x,cgsl_poly_int))\
70
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Poly::Int expected)");
71
+ #endif
72
+
73
+ #ifndef RATIONAL_P
74
+ #define RATIONAL_P(x) (rb_obj_is_kind_of(x,cgsl_rational))
75
+ #endif
76
+
77
+ #ifndef CHECK_RATIONAL
78
+ #define CHECK_RATIONAL(x) if(!rb_obj_is_kind_of(x,cgsl_rational))\
79
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Rational expected)");
80
+ #endif
81
+
82
+ /*****/
83
+ #ifndef BLOCK_P
84
+ #define BLOCK_P(x) (rb_obj_is_kind_of(x,cgsl_block))
85
+ #endif
86
+
87
+ #ifndef CHECK_BLOCK
88
+ #define CHECK_BLOCK(x) if(!rb_obj_is_kind_of(x,cgsl_block))\
89
+ rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block expected)", rb_class2name(CLASS_OF(x)));
90
+ #endif
91
+ #ifndef BLOCK_INT_P
92
+ #define BLOCK_INT_P(x) (rb_obj_is_kind_of(x,cgsl_block_int))
93
+ #endif
94
+
95
+ #ifndef CHECK_BLOCK_INT
96
+ #define CHECK_BLOCK_INT(x) if(!rb_obj_is_kind_of(x,cgsl_block_int))\
97
+ rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block::Int expected)", rb_class2name(CLASS_OF(x)));
98
+ #endif
99
+ #ifndef BLOCK_UCHAR_P
100
+ #define BLOCK_UCHAR_P(x) (rb_obj_is_kind_of(x,cgsl_block_uchar))
101
+ #endif
102
+
103
+ #ifndef CHECK_BLOCK_UCHAR
104
+ #define CHECK_BLOCK_UCHAR(x) if(!rb_obj_is_kind_of(x,cgsl_block_uchar))\
105
+ rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block::Byte expected)", rb_class2name(CLASS_OF(x)));
106
+ #endif
107
+ /*****/
108
+
109
+ #ifndef VECTOR_P
110
+ #define VECTOR_P(x) (rb_obj_is_kind_of(x,cgsl_vector))
111
+ #endif
112
+
113
+ #ifndef VECTOR_VIEW_P
114
+ #define VECTOR_VIEW_P(x) ((CLASS_OF(x)==cgsl_vector_view||CLASS_OF(x)==cgsl_vector_col_view||CLASS_OF(x)==cgsl_vector_view_ro||CLASS_OF(x)==cgsl_vector_col_view_ro))
115
+ #endif
116
+
117
+ #ifndef VECTOR_ROW_P
118
+ #define VECTOR_ROW_P(x) ((CLASS_OF(x)==cgsl_vector||CLASS_OF(x)==cgsl_vector_view||CLASS_OF(x)==cgsl_vector_view_ro))
119
+ #endif
120
+
121
+ #ifndef VECTOR_COL_P
122
+ #define VECTOR_COL_P(x) ((CLASS_OF(x)==cgsl_vector_col||CLASS_OF(x)==cgsl_vector_col_view||CLASS_OF(x)==cgsl_vector_col_view_ro))
123
+ #endif
124
+
125
+ #ifndef VECTOR_ROW_COL
126
+ #define VECTOR_ROW_COL(x) ((rb_obj_is_kind_of(x,cgsl_vector_col)||rb_obj_is_kind_of(x,cgsl_vector_int_col))?cgsl_vector_col:cgsl_vector)
127
+ #endif
128
+
129
+ #ifndef CHECK_VECTOR
130
+ #define CHECK_VECTOR(x) if(!rb_obj_is_kind_of(x,cgsl_vector))\
131
+ rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)", rb_class2name(CLASS_OF(x)));
132
+ #endif
133
+
134
+ #ifdef HAVE_NARRAY_H
135
+ #define Data_Get_Vector(obj,sval) do {\
136
+ if (NA_IsNArray(obj)) {\
137
+ (sval)->data = NA_PTR_TYPE(obj,double*);\
138
+ (sval)->size = NA_TOTAL(obj);\
139
+ (sval)->stride = 1;\
140
+ } else {\
141
+ CHECK_VECTOR(obj);\
142
+ Data_Get_Struct(obj,gsl_vector,sval);\
143
+ }\
144
+ } while (0)
145
+ #else
146
+ #define Data_Get_Vector(obj,sval) do {\
147
+ CHECK_VECTOR(obj);\
148
+ Data_Get_Struct(obj,gsl_vector,sval);\
149
+ } while (0)
150
+ #endif
151
+
152
+ /******/
153
+ #ifndef VECTOR_INT_P
154
+ #define VECTOR_INT_P(x) (rb_obj_is_kind_of(x,cgsl_vector_int))
155
+ #endif
156
+
157
+ #ifndef VECTOR_INT_VIEW_P
158
+ #define VECTOR_INT_VIEW_P(x) ((CLASS_OF(x)==cgsl_vector_int_view||CLASS_OF(x)==cgsl_vector_int_col_view||CLASS_OF(x)==cgsl_vector_int_view_ro||CLASS_OF(x)==cgsl_vector_int_col_view_ro))
159
+ #endif
160
+
161
+ #ifndef VECTOR_INT_ROW_P
162
+ #define VECTOR_INT_ROW_P(x) ((CLASS_OF(x)==cgsl_vector_int||CLASS_OF(x)==cgsl_vector_int_view||CLASS_OF(x)==cgsl_vector_int_view_ro))
163
+ #endif
164
+
165
+ #ifndef VECTOR_INT_COL_P
166
+ #define VECTOR_INT_COL_P(x) ((CLASS_OF(x)==cgsl_vector_int_col||CLASS_OF(x)==cgsl_vector_int_col_view||CLASS_OF(x)==cgsl_vector_int_col_view_ro))
167
+ #endif
168
+
169
+ #ifndef VECTOR_INT_ROW_COL
170
+ #define VECTOR_INT_ROW_COL(x) (VECTOR_INT_ROW_P(x)?cgsl_vector_int:cgsl_vector_int_col)
171
+ #endif
172
+
173
+ #ifndef CHECK_VECTOR_INT
174
+ #define CHECK_VECTOR_INT(x) if(!rb_obj_is_kind_of(x,cgsl_vector_int))\
175
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Vector::Int expected)");
176
+ #endif
177
+
178
+ /******/
179
+ #ifndef VECTOR_COMPLEX_P
180
+ #define VECTOR_COMPLEX_P(x) (rb_obj_is_kind_of(x,cgsl_vector_complex))
181
+ #endif
182
+
183
+ #ifndef VECTOR_COMPLEX_ROW_P
184
+ #define VECTOR_COMPLEX_ROW_P(x) ((CLASS_OF(x)==cgsl_vector_complex||CLASS_OF(x)==cgsl_vector_complex_view))
185
+ #endif
186
+
187
+ #ifndef VECTOR_COMPLEX_COL_P
188
+ #define VECTOR_COMPLEX_COL_P(x) ((CLASS_OF(x)==cgsl_vector_complex_col||CLASS_OF(x)==cgsl_vector_complex_col_view))
189
+ #endif
190
+
191
+ #ifndef VECTOR_COMPLEX_ROW_COL
192
+ #define VECTOR_COMPLEX_ROW_COL(x) (VECTOR_COMPLEX_ROW_P(x)?cgsl_vector_complex:cgsl_vector_complex_col)
193
+ #endif
194
+
195
+ #ifndef CHECK_VECTOR_COMPLEX
196
+ #define CHECK_VECTOR_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_vector_complex))\
197
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Vector::Complex expected)");
198
+ #endif
199
+
200
+ #ifndef MATRIX_P
201
+ #define MATRIX_P(x) (rb_obj_is_kind_of(x,cgsl_matrix))
202
+ #endif
203
+
204
+ #ifndef CHECK_MATRIX
205
+ #define CHECK_MATRIX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix))\
206
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix expected)");
207
+ #endif
208
+
209
+ #define Data_Get_Matrix(obj,sval) do {\
210
+ CHECK_MATRIX(obj);\
211
+ Data_Get_Struct(obj,gsl_matrix,sval);\
212
+ } while (0)
213
+
214
+
215
+ #ifndef MATRIX_INT_P
216
+ #define MATRIX_INT_P(x) (rb_obj_is_kind_of(x,cgsl_matrix_int))
217
+ #endif
218
+
219
+ #ifndef CHECK_MATRIX_INT
220
+ #define CHECK_MATRIX_INT(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_int))\
221
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix::Int expected)");
222
+ #endif
223
+
224
+ #ifndef MATRIX_COMPLEX_P
225
+ #define MATRIX_COMPLEX_P(x) (rb_obj_is_kind_of(x,cgsl_matrix_complex))
226
+ #endif
227
+
228
+ #ifndef CHECK_MATRIX_COMPLEX
229
+ #define CHECK_MATRIX_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_complex))\
230
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix::Complex expected)");
231
+ #endif
232
+
233
+ #ifndef TENSOR_P
234
+ #define TENSOR_P(x) ((CLASS_OF(x)==cgsl_tensor))
235
+ #endif
236
+
237
+ #ifndef CHECK_TENSOR
238
+ #define CHECK_TENSOR(x) if(CLASS_OF(x)!=cgsl_tensor)\
239
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Tensor expected)");
240
+ #endif
241
+
242
+ #ifndef TENSOR_INT_P
243
+ #define TENSOR_INT_P(x) ((CLASS_OF(x)==cgsl_tensor_int))
244
+ #endif
245
+
246
+ #ifndef CHECK_TENSOR_INT
247
+ #define CHECK_TENSOR_INT(x) if(CLASS_OF(x)!=cgsl_tensor_int)\
248
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Tensor::Int expected)");
249
+ #endif
250
+
251
+ #ifndef PERMUTATION_P
252
+ #define PERMUTATION_P(x) (rb_obj_is_kind_of(x,cgsl_permutation))
253
+ #endif
254
+
255
+ #ifndef CHECK_PERMUTATION
256
+ #define CHECK_PERMUTATION(x) if(!rb_obj_is_kind_of(x,cgsl_permutation))\
257
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Permutation expected)");
258
+ #endif
259
+
260
+ #ifndef PROC_P
261
+ #define PROC_P(x) (rb_obj_is_kind_of(x,rb_cProc))
262
+ #endif
263
+
264
+ #ifndef CHECK_PROC
265
+ #define CHECK_PROC(x) if(!rb_obj_is_kind_of(x,rb_cProc))\
266
+ rb_raise(rb_eTypeError, "wrong argument type (Proc expected)");
267
+ #endif
268
+
269
+ #ifndef FUNCTION_P
270
+ #define FUNCTION_P(x) (rb_obj_is_kind_of(x,cgsl_function))
271
+ #endif
272
+
273
+ #ifndef CHECK_FUNCTION
274
+ #define CHECK_FUNCTION(x) if(!rb_obj_is_kind_of(x,cgsl_function))\
275
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Function expected)");
276
+ #endif
277
+
278
+ #ifndef FUNCTION_FDF_P
279
+ #define FUNCTION_FDF_P(x) (rb_obj_is_kind_of(x,cgsl_function_fdf))
280
+ #endif
281
+
282
+ #ifndef CHECK_FUNCTION_FDF
283
+ #define CHECK_FUNCTION_FDF(x) if(!rb_obj_is_kind_of(x,cgsl_function_fdf))\
284
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Function_fdf expected)");
285
+ #endif
286
+
287
+ #ifndef HISTOGRAM_P
288
+ #define HISTOGRAM_P(x) (rb_obj_is_kind_of(x,cgsl_histogram))
289
+ #endif
290
+
291
+ #ifndef CHECK_HISTOGRAM
292
+ #define CHECK_HISTOGRAM(x) if(!rb_obj_is_kind_of(x,cgsl_histogram))\
293
+ rb_raise(rb_eTypeError, "wrong argument type (GSL::Histogram expected)");
294
+ #endif
295
+
296
+ void rb_gsl_error_handler(const char *reason, const char *file,
297
+ int line, int gsl_errno);
298
+
299
+ FILE* rb_gsl_open_writefile(VALUE io, int *flag);
300
+ FILE* rb_gsl_open_readfile(VALUE io, int *flag);
301
+
302
+ VALUE rb_gsl_obj_read_only(int argc, VALUE *argv, VALUE obj);
303
+
304
+ int str_tail_grep(const char *s0, const char *s1);
305
+ int str_head_grep(const char *s0, const char *s1);
306
+
307
+ #ifdef RUBY_1_8_LATER
308
+ #define RB_GSL_MAKE_PROC rb_block_proc()
309
+ #define STR2CHARPTR StringValuePtr
310
+ #else
311
+ #define RB_GSL_MAKE_PROC rb_f_lambda()
312
+ #define STR2CHARPTR STR2CSTR
313
+ #endif
314
+
315
+ void make_graphcommand(char *command, VALUE hash);
316
+ int rbgsl_complex_equal(const gsl_complex *z1, const gsl_complex *z2, double eps);
317
+
318
+ gsl_vector* mygsl_vector_down(gsl_vector *p);
319
+ void mygsl_vector_up2(gsl_vector *pnew, gsl_vector *p);
320
+ gsl_vector* mygsl_vector_up(gsl_vector *p);
321
+
322
+ gsl_vector_int* mygsl_vector_int_down(gsl_vector_int *p);
323
+ void mygsl_vector_int_up2(gsl_vector_int *pnew, gsl_vector_int *p);
324
+ gsl_vector_int* mygsl_vector_int_up(gsl_vector_int *p);
325
+
326
+ #ifndef GSL_1_3_LATER
327
+ int gsl_fcmp(const double x1, const double x2, const double epsilon);
328
+ #endif
329
+
330
+ size_t count_columns(const char *str);
331
+ char* str_scan_double(const char *str, double *val);
332
+ char* str_scan_int(const char *str, int *val);
333
+ double* get_ptr_double3(VALUE obj, size_t *size, size_t *stride, int *flag);
334
+ gsl_complex ary2complex(VALUE obj);
335
+ VALUE vector_eval_create(VALUE obj, double (*func)(double));
336
+ VALUE matrix_eval_create(VALUE obj, double (*func)(double));
337
+ VALUE rb_gsl_ary_eval1(VALUE ary, double (*f)(double));
338
+ #ifdef HAVE_NARRAY_H
339
+ VALUE rb_gsl_nary_eval1(VALUE ary, double (*f)(double));
340
+ #endif
341
+
342
+ EXTERN VALUE cGSL_Object;
343
+ #endif