nmatrix-gemv 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +29 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +14 -0
  5. data/Gemfile +7 -0
  6. data/README.md +29 -0
  7. data/Rakefile +225 -0
  8. data/ext/nmatrix_gemv/binary_format.txt +53 -0
  9. data/ext/nmatrix_gemv/data/complex.h +399 -0
  10. data/ext/nmatrix_gemv/data/data.cpp +298 -0
  11. data/ext/nmatrix_gemv/data/data.h +771 -0
  12. data/ext/nmatrix_gemv/data/meta.h +70 -0
  13. data/ext/nmatrix_gemv/data/rational.h +436 -0
  14. data/ext/nmatrix_gemv/data/ruby_object.h +471 -0
  15. data/ext/nmatrix_gemv/extconf.rb +254 -0
  16. data/ext/nmatrix_gemv/math.cpp +1639 -0
  17. data/ext/nmatrix_gemv/math/asum.h +143 -0
  18. data/ext/nmatrix_gemv/math/geev.h +82 -0
  19. data/ext/nmatrix_gemv/math/gemm.h +271 -0
  20. data/ext/nmatrix_gemv/math/gemv.h +212 -0
  21. data/ext/nmatrix_gemv/math/ger.h +96 -0
  22. data/ext/nmatrix_gemv/math/gesdd.h +80 -0
  23. data/ext/nmatrix_gemv/math/gesvd.h +78 -0
  24. data/ext/nmatrix_gemv/math/getf2.h +86 -0
  25. data/ext/nmatrix_gemv/math/getrf.h +240 -0
  26. data/ext/nmatrix_gemv/math/getri.h +108 -0
  27. data/ext/nmatrix_gemv/math/getrs.h +129 -0
  28. data/ext/nmatrix_gemv/math/idamax.h +86 -0
  29. data/ext/nmatrix_gemv/math/inc.h +47 -0
  30. data/ext/nmatrix_gemv/math/laswp.h +165 -0
  31. data/ext/nmatrix_gemv/math/long_dtype.h +52 -0
  32. data/ext/nmatrix_gemv/math/math.h +1069 -0
  33. data/ext/nmatrix_gemv/math/nrm2.h +181 -0
  34. data/ext/nmatrix_gemv/math/potrs.h +129 -0
  35. data/ext/nmatrix_gemv/math/rot.h +141 -0
  36. data/ext/nmatrix_gemv/math/rotg.h +115 -0
  37. data/ext/nmatrix_gemv/math/scal.h +73 -0
  38. data/ext/nmatrix_gemv/math/swap.h +73 -0
  39. data/ext/nmatrix_gemv/math/trsm.h +387 -0
  40. data/ext/nmatrix_gemv/nm_memory.h +60 -0
  41. data/ext/nmatrix_gemv/nmatrix_gemv.cpp +90 -0
  42. data/ext/nmatrix_gemv/nmatrix_gemv.h +374 -0
  43. data/ext/nmatrix_gemv/ruby_constants.cpp +153 -0
  44. data/ext/nmatrix_gemv/ruby_constants.h +107 -0
  45. data/ext/nmatrix_gemv/ruby_nmatrix.c +84 -0
  46. data/ext/nmatrix_gemv/ttable_helper.rb +122 -0
  47. data/ext/nmatrix_gemv/types.h +54 -0
  48. data/ext/nmatrix_gemv/util/util.h +78 -0
  49. data/lib/nmatrix-gemv.rb +43 -0
  50. data/lib/nmatrix_gemv/blas.rb +85 -0
  51. data/lib/nmatrix_gemv/nmatrix_gemv.rb +35 -0
  52. data/lib/nmatrix_gemv/rspec.rb +75 -0
  53. data/nmatrix-gemv.gemspec +31 -0
  54. data/spec/blas_spec.rb +154 -0
  55. data/spec/spec_helper.rb +128 -0
  56. metadata +186 -0
@@ -0,0 +1,298 @@
1
+ /////////////////////////////////////////////////////////////////////
2
+ // = NMatrix
3
+ //
4
+ // A linear algebra library for scientific computation in Ruby.
5
+ // NMatrix is part of SciRuby.
6
+ //
7
+ // NMatrix was originally inspired by and derived from NArray, by
8
+ // Masahiro Tanaka: http://narray.rubyforge.org
9
+ //
10
+ // == Copyright Information
11
+ //
12
+ // SciRuby is Copyright (c) 2010 - 2014, Ruby Science Foundation
13
+ // NMatrix is Copyright (c) 2012 - 2014, John Woods and the Ruby Science Foundation
14
+ //
15
+ // Please see LICENSE.txt for additional copyright notices.
16
+ //
17
+ // == Contributing
18
+ //
19
+ // By contributing source code to SciRuby, you agree to be bound by
20
+ // our Contributor Agreement:
21
+ //
22
+ // * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
23
+ //
24
+ // == data.cpp
25
+ //
26
+ // Functions and data for dealing the data types.
27
+
28
+ /*
29
+ * Standard Includes
30
+ */
31
+
32
+ #include <ruby.h>
33
+
34
+ /*
35
+ * Project Includes
36
+ */
37
+
38
+ #include "types.h"
39
+ #include "data.h"
40
+
41
+ /*
42
+ * Global Variables
43
+ */
44
+
45
+ namespace nm {
46
+ const char* const EWOP_OPS[nm::NUM_EWOPS] = {
47
+ "+",
48
+ "-",
49
+ "*",
50
+ "/",
51
+ "**",
52
+ "%",
53
+ "==",
54
+ "!=",
55
+ "<",
56
+ ">",
57
+ "<=",
58
+ ">="
59
+ };
60
+
61
+ const std::string EWOP_NAMES[nm::NUM_EWOPS] = {
62
+ "add",
63
+ "sub",
64
+ "mul",
65
+ "div",
66
+ "pow",
67
+ "mod",
68
+ "eqeq",
69
+ "neq",
70
+ "lt",
71
+ "gt",
72
+ "leq",
73
+ "geq"
74
+ };
75
+
76
+ const std::string NONCOM_EWOP_NAMES[nm::NUM_NONCOM_EWOPS] = {
77
+ "atan2",
78
+ "ldexp",
79
+ "hypot"
80
+ };
81
+
82
+ const std::string UNARYOPS[nm::NUM_UNARYOPS] = {
83
+ "sin", "cos", "tan",
84
+ "asin", "acos", "atan",
85
+ "sinh", "cosh", "tanh",
86
+ "asinh", "acosh", "atanh",
87
+ "exp", "log2",
88
+ "log10", "sqrt", "erf",
89
+ "erfc", "cbrt", "gamma"
90
+ };
91
+
92
+ } // end of namespace nm
93
+
94
+ extern "C" {
95
+
96
+ const char* const DTYPE_NAMES[nm::NUM_DTYPES] = {
97
+ "byte",
98
+ "int8",
99
+ "int16",
100
+ "int32",
101
+ "int64",
102
+ "float32",
103
+ "float64",
104
+ "complex64",
105
+ "complex128",
106
+ "rational32",
107
+ "rational64",
108
+ "rational128",
109
+ "object"
110
+ };
111
+
112
+
113
+ const size_t DTYPE_SIZES[nm::NUM_DTYPES] = {
114
+ sizeof(uint8_t),
115
+ sizeof(int8_t),
116
+ sizeof(int16_t),
117
+ sizeof(int32_t),
118
+ sizeof(int64_t),
119
+ sizeof(float32_t),
120
+ sizeof(float64_t),
121
+ sizeof(nm::Complex64),
122
+ sizeof(nm::Complex128),
123
+ sizeof(nm::Rational32),
124
+ sizeof(nm::Rational64),
125
+ sizeof(nm::Rational128),
126
+ sizeof(nm::RubyObject)
127
+ };
128
+
129
+
130
+ const nm::dtype_t Upcast[nm::NUM_DTYPES][nm::NUM_DTYPES] = {
131
+ { nm::BYTE, nm::INT16, nm::INT16, nm::INT32, nm::INT64, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
132
+ { nm::INT16, nm::INT8, nm::INT16, nm::INT32, nm::INT64, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
133
+ { nm::INT16, nm::INT16, nm::INT16, nm::INT32, nm::INT64, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
134
+ { nm::INT32, nm::INT32, nm::INT32, nm::INT32, nm::INT64, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
135
+ { nm::INT64, nm::INT64, nm::INT64, nm::INT64, nm::INT64, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
136
+ { nm::FLOAT32, nm::FLOAT32, nm::FLOAT32, nm::FLOAT32, nm::FLOAT32, nm::FLOAT32, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::RUBYOBJ},
137
+ { nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::COMPLEX128, nm::COMPLEX128, nm::FLOAT64, nm::FLOAT64, nm::FLOAT64, nm::RUBYOBJ},
138
+ { nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX128, nm::COMPLEX64, nm::COMPLEX128, nm::COMPLEX64, nm::COMPLEX64, nm::COMPLEX64, nm::RUBYOBJ},
139
+ { nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::COMPLEX128, nm::RUBYOBJ},
140
+ { nm::RATIONAL32, nm::RATIONAL32, nm::RATIONAL32, nm::RATIONAL32, nm::RATIONAL32, nm::FLOAT64, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL32, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
141
+ { nm::RATIONAL64, nm::RATIONAL64, nm::RATIONAL64, nm::RATIONAL64, nm::RATIONAL64, nm::FLOAT64, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL64, nm::RATIONAL64, nm::RATIONAL128, nm::RUBYOBJ},
142
+ { nm::RATIONAL128, nm::RATIONAL128, nm::RATIONAL128, nm::RATIONAL128, nm::RATIONAL128, nm::FLOAT64, nm::FLOAT64, nm::COMPLEX64, nm::COMPLEX128, nm::RATIONAL128, nm::RATIONAL128, nm::RATIONAL128, nm::RUBYOBJ},
143
+ { nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ, nm::RUBYOBJ}
144
+ };
145
+
146
+
147
+ /*
148
+ * Forward Declarations
149
+ */
150
+
151
+ /*
152
+ * Functions
153
+ */
154
+
155
+ /*
156
+ * Converts a RubyObject
157
+ */
158
+ void rubyval_to_cval(VALUE val, nm::dtype_t dtype, void* loc) {
159
+ using namespace nm;
160
+ switch (dtype) {
161
+ case BYTE:
162
+ *reinterpret_cast<uint8_t*>(loc) = static_cast<uint8_t>(RubyObject(val));
163
+ break;
164
+
165
+ case INT8:
166
+ *reinterpret_cast<int8_t*>(loc) = static_cast<int8_t>(RubyObject(val));
167
+ break;
168
+
169
+ case INT16:
170
+ *reinterpret_cast<int16_t*>(loc) = static_cast<int16_t>(RubyObject(val));
171
+ break;
172
+
173
+ case INT32:
174
+ *reinterpret_cast<int32_t*>(loc) = static_cast<int32_t>(RubyObject(val));
175
+ break;
176
+
177
+ case INT64:
178
+ *reinterpret_cast<int64_t*>(loc) = static_cast<int64_t>(RubyObject(val));
179
+ break;
180
+
181
+ case FLOAT32:
182
+ *reinterpret_cast<float32_t*>(loc) = static_cast<float32_t>(RubyObject(val));
183
+ break;
184
+
185
+ case FLOAT64:
186
+ *reinterpret_cast<float64_t*>(loc) = static_cast<float64_t>(RubyObject(val));
187
+ break;
188
+
189
+ case COMPLEX64:
190
+ *reinterpret_cast<Complex64*>(loc) = RubyObject(val).to<Complex64>();
191
+ break;
192
+
193
+ case COMPLEX128:
194
+ *reinterpret_cast<Complex128*>(loc) = RubyObject(val).to<Complex64>();
195
+ break;
196
+
197
+ case RATIONAL32:
198
+ *reinterpret_cast<Rational32*>(loc) = RubyObject(val).to<Rational32>();
199
+ break;
200
+
201
+ case RATIONAL64:
202
+ *reinterpret_cast<Rational64*>(loc) = RubyObject(val).to<Rational64>();
203
+ break;
204
+
205
+ case RATIONAL128:
206
+ *reinterpret_cast<Rational128*>(loc) = RubyObject(val).to<Rational128>();
207
+ break;
208
+
209
+ case RUBYOBJ:
210
+ *reinterpret_cast<VALUE*>(loc) = val;
211
+ //rb_raise(rb_eTypeError, "Attempting a bad conversion from a Ruby value.");
212
+ break;
213
+
214
+ default:
215
+ rb_raise(rb_eTypeError, "Attempting a bad conversion.");
216
+ break;
217
+ }
218
+ }
219
+
220
+ /*
221
+ * Create a RubyObject from a regular C value (given a dtype). Does not return a VALUE! To get a VALUE, you need to
222
+ * look at the rval property of what this function returns.
223
+ */
224
+ nm::RubyObject rubyobj_from_cval(void* val, nm::dtype_t dtype) {
225
+ using namespace nm;
226
+ switch (dtype) {
227
+ case BYTE:
228
+ return RubyObject(*reinterpret_cast<uint8_t*>(val));
229
+
230
+ case INT8:
231
+ return RubyObject(*reinterpret_cast<int8_t*>(val));
232
+
233
+ case INT16:
234
+ return RubyObject(*reinterpret_cast<int16_t*>(val));
235
+
236
+ case INT32:
237
+ return RubyObject(*reinterpret_cast<int32_t*>(val));
238
+
239
+ case INT64:
240
+ return RubyObject(*reinterpret_cast<int64_t*>(val));
241
+
242
+ case FLOAT32:
243
+ return RubyObject(*reinterpret_cast<float32_t*>(val));
244
+
245
+ case FLOAT64:
246
+ return RubyObject(*reinterpret_cast<float64_t*>(val));
247
+
248
+ case COMPLEX64:
249
+ return RubyObject(*reinterpret_cast<Complex64*>(val));
250
+
251
+ case COMPLEX128:
252
+ return RubyObject(*reinterpret_cast<Complex128*>(val));
253
+
254
+ case RATIONAL32:
255
+ return RubyObject(*reinterpret_cast<Rational32*>(val));
256
+
257
+ case RATIONAL64:
258
+ return RubyObject(*reinterpret_cast<Rational64*>(val));
259
+
260
+ case RATIONAL128:
261
+ return RubyObject(*reinterpret_cast<Rational128*>(val));
262
+
263
+ default:
264
+ throw;
265
+ rb_raise(nm_eDataTypeError, "Conversion to RubyObject requested from unknown/invalid data type (did you try to convert from a VALUE?)");
266
+ }
267
+ return Qnil;
268
+ }
269
+
270
+
271
+
272
+ /*
273
+ * Allocate and return a piece of data of the correct dtype, converted from a
274
+ * given RubyObject.
275
+ */
276
+ void* rubyobj_to_cval(VALUE val, nm::dtype_t dtype) {
277
+ size_t size = DTYPE_SIZES[dtype];
278
+ NM_CONSERVATIVE(nm_register_value(val));
279
+ void* ret_val = NM_ALLOC_N(char, size);
280
+
281
+ rubyval_to_cval(val, dtype, ret_val);
282
+ NM_CONSERVATIVE(nm_unregister_value(val));
283
+ return ret_val;
284
+ }
285
+
286
+
287
+ void nm_init_data() {
288
+ volatile VALUE t = INT2FIX(1);
289
+ volatile nm::RubyObject obj(t);
290
+ volatile nm::Rational32 x(const_cast<nm::RubyObject&>(obj));
291
+ volatile nm::Rational64 y(const_cast<nm::RubyObject&>(obj));
292
+ volatile nm::Rational128 z(const_cast<nm::RubyObject&>(obj));
293
+ volatile nm::Complex64 a(const_cast<nm::RubyObject&>(obj));
294
+ volatile nm::Complex128 b(const_cast<nm::RubyObject&>(obj));
295
+ }
296
+
297
+
298
+ } // end of extern "C" block
@@ -0,0 +1,771 @@
1
+ /////////////////////////////////////////////////////////////////////
2
+ // = NMatrix
3
+ //
4
+ // A linear algebra library for scientific computation in Ruby.
5
+ // NMatrix is part of SciRuby.
6
+ //
7
+ // NMatrix was originally inspired by and derived from NArray, by
8
+ // Masahiro Tanaka: http://narray.rubyforge.org
9
+ //
10
+ // == Copyright Information
11
+ //
12
+ // SciRuby is Copyright (c) 2010 - 2014, Ruby Science Foundation
13
+ // NMatrix is Copyright (c) 2012 - 2014, John Woods and the Ruby Science Foundation
14
+ //
15
+ // Please see LICENSE.txt for additional copyright notices.
16
+ //
17
+ // == Contributing
18
+ //
19
+ // By contributing source code to SciRuby, you agree to be bound by
20
+ // our Contributor Agreement:
21
+ //
22
+ // * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
23
+ //
24
+ // == data.h
25
+ //
26
+ // Header file for dealing with data types.
27
+
28
+ #ifndef DATA_H
29
+ #define DATA_H
30
+
31
+ /*
32
+ * Standard Includes
33
+ */
34
+ #include <string>
35
+
36
+ /*
37
+ * Project Includes
38
+ */
39
+
40
+ #include "nmatrix_gemv.h"
41
+
42
+ #include "types.h"
43
+
44
+ #include "complex.h"
45
+ #include "rational.h"
46
+ #include "ruby_object.h"
47
+
48
+ namespace nm {
49
+
50
+
51
+ /*
52
+ * Constants
53
+ */
54
+
55
+ const int NUM_DTYPES = 13;
56
+ const int NUM_ITYPES = 4;
57
+ const int NUM_EWOPS = 12;
58
+ const int NUM_UNARYOPS = 21;
59
+ const int NUM_NONCOM_EWOPS = 3;
60
+
61
+ enum ewop_t {
62
+ EW_ADD,
63
+ EW_SUB,
64
+ EW_MUL,
65
+ EW_DIV,
66
+ EW_POW,
67
+ EW_MOD,
68
+ EW_EQEQ,
69
+ EW_NEQ,
70
+ EW_LT,
71
+ EW_GT,
72
+ EW_LEQ,
73
+ EW_GEQ,
74
+ };
75
+
76
+ enum noncom_ewop_t {
77
+ NONCOM_EW_ATAN2,
78
+ NONCOM_EW_LDEXP,
79
+ NONCOM_EW_HYPOT
80
+ };
81
+
82
+ enum unaryop_t {
83
+ UNARY_SIN,
84
+ UNARY_COS,
85
+ UNARY_TAN,
86
+ UNARY_ASIN,
87
+ UNARY_ACOS,
88
+ UNARY_ATAN,
89
+ UNARY_SINH,
90
+ UNARY_COSH,
91
+ UNARY_TANH,
92
+ UNARY_ASINH,
93
+ UNARY_ACOSH,
94
+ UNARY_ATANH,
95
+ UNARY_EXP,
96
+ UNARY_LOG2,
97
+ UNARY_LOG10,
98
+ UNARY_SQRT,
99
+ UNARY_ERF,
100
+ UNARY_ERFC,
101
+ UNARY_CBRT,
102
+ UNARY_GAMMA
103
+ };
104
+
105
+ // element-wise and scalar operators
106
+ extern const char* const EWOP_OPS[nm::NUM_EWOPS];
107
+ extern const std::string EWOP_NAMES[nm::NUM_EWOPS];
108
+ extern const std::string UNARYOPS[nm::NUM_UNARYOPS];
109
+ extern const std::string NONCOM_EWOP_NAMES[nm::NUM_NONCOM_EWOPS];
110
+
111
+
112
+ template <typename Type>
113
+ Complex<Type>::Complex(const RubyObject& other) {
114
+ switch(TYPE(other.rval)) {
115
+ case T_COMPLEX:
116
+ r = NUM2DBL(rb_funcall(other.rval, rb_intern("real"), 0));
117
+ i = NUM2DBL(rb_funcall(other.rval, rb_intern("imag"), 0));
118
+ break;
119
+ case T_FLOAT:
120
+ case T_RATIONAL:
121
+ case T_FIXNUM:
122
+ case T_BIGNUM:
123
+ r = NUM2DBL(other.rval);
124
+ i = 0.0;
125
+ break;
126
+ default:
127
+ rb_raise(rb_eTypeError, "not sure how to convert this type of VALUE to a complex");
128
+ }
129
+ }
130
+
131
+
132
+ template <typename Type>
133
+ Rational<Type>::Rational(const RubyObject& other) {
134
+ switch (TYPE(other.rval)) {
135
+ case T_RATIONAL:
136
+ n = NUM2LONG(rb_funcall(other.rval, rb_intern("numerator"), 0));
137
+ d = NUM2LONG(rb_funcall(other.rval, rb_intern("denominator"), 0));
138
+ break;
139
+ case T_FIXNUM:
140
+ case T_BIGNUM:
141
+ n = NUM2LONG(other.rval);
142
+ d = 1;
143
+ break;
144
+ case T_COMPLEX:
145
+ case T_FLOAT:
146
+ rb_raise(rb_eTypeError, "cannot convert float to a rational");
147
+ break;
148
+ default:
149
+ rb_raise(rb_eTypeError, "not sure how to convert this type of VALUE to a rational");
150
+ }
151
+ }
152
+
153
+
154
+ } // end of namespace nm
155
+
156
+ /*
157
+ * Macros
158
+ */
159
+
160
+ #define STYPE_MARK_TABLE(name) \
161
+ static void (*(name)[nm::NUM_STYPES])(STORAGE*) = { \
162
+ nm_dense_storage_mark, \
163
+ nm_list_storage_mark, \
164
+ nm_yale_storage_mark \
165
+ };
166
+
167
+ #define STYPE_REGISTER_TABLE(name) \
168
+ static void (*(name)[nm::NUM_STYPES])(const STORAGE*) = { \
169
+ nm_dense_storage_register, \
170
+ nm_list_storage_register, \
171
+ nm_yale_storage_register \
172
+ };
173
+
174
+ #define STYPE_UNREGISTER_TABLE(name) \
175
+ static void (*(name)[nm::NUM_STYPES])(const STORAGE*) = { \
176
+ nm_dense_storage_unregister, \
177
+ nm_list_storage_unregister, \
178
+ nm_yale_storage_unregister \
179
+ };
180
+
181
+ #define CAST_TABLE(name) \
182
+ static STORAGE* (*(name)[nm::NUM_STYPES][nm::NUM_STYPES])(const STORAGE*, nm::dtype_t, void*) = { \
183
+ { nm_dense_storage_cast_copy, nm_dense_storage_from_list, nm_dense_storage_from_yale }, \
184
+ { nm_list_storage_from_dense, nm_list_storage_cast_copy, nm_list_storage_from_yale }, \
185
+ { nm_yale_storage_from_dense, nm_yale_storage_from_list, nm_yale_storage_cast_copy } \
186
+ };
187
+
188
+ /*
189
+ * Defines a static array that hold function pointers to dtype templated
190
+ * versions of the specified function.
191
+ */
192
+ #define DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
193
+
194
+ #define NAMED_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
195
+ static ret (*(name)[nm::NUM_DTYPES])(__VA_ARGS__) = { \
196
+ fun<uint8_t>, \
197
+ fun<int8_t>, \
198
+ fun<int16_t>, \
199
+ fun<int32_t>, \
200
+ fun<int64_t>, \
201
+ fun<float32_t>, \
202
+ fun<float64_t>, \
203
+ fun<nm::Complex64>, \
204
+ fun<nm::Complex128>, \
205
+ fun<nm::Rational32>, \
206
+ fun<nm::Rational64>, \
207
+ fun<nm::Rational128>, \
208
+ fun<nm::RubyObject> \
209
+ };
210
+
211
+ #define DTYPE_OBJECT_STATIC_TABLE(obj, fun, ret, ...) \
212
+ static ret (*(ttable)[nm::NUM_DTYPES])(__VA_ARGS__) = { \
213
+ obj<uint8_t>::fun, \
214
+ obj<int8_t>::fun, \
215
+ obj<int16_t>::fun, \
216
+ obj<int32_t>::fun, \
217
+ obj<int64_t>::fun, \
218
+ obj<float32_t>::fun, \
219
+ obj<float64_t>::fun, \
220
+ obj<nm::Complex64>::fun, \
221
+ obj<nm::Complex128>::fun, \
222
+ obj<nm::Rational32>::fun, \
223
+ obj<nm::Rational64>::fun, \
224
+ obj<nm::Rational128>::fun, \
225
+ obj<nm::RubyObject>::fun \
226
+ };
227
+
228
+ #define NAMED_DTYPE_TEMPLATE_TABLE_NO_ROBJ(name, fun, ret, ...) \
229
+ static ret (*(name)[nm::NUM_DTYPES])(__VA_ARGS__) = { \
230
+ fun<uint8_t>, \
231
+ fun<int8_t>, \
232
+ fun<int16_t>, \
233
+ fun<int32_t>, \
234
+ fun<int64_t>, \
235
+ fun<float32_t>, \
236
+ fun<float64_t>, \
237
+ fun<nm::Complex64>, \
238
+ fun<nm::Complex128>, \
239
+ fun<nm::Rational32>, \
240
+ fun<nm::Rational64>, \
241
+ fun<nm::Rational128> \
242
+ };
243
+
244
+
245
+ /*
246
+ * Same as DTYPE_TEMPLATE_TABLE but for functions that have two template
247
+ * parameters.
248
+ *
249
+ * The left-hand DType is used as the first index, and the right-hand side is
250
+ * the second index. Not all left- and right-hand side combinations are valid,
251
+ * and an invalid combination will result in a NULL pointer.
252
+ */
253
+ #define LR_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_LR_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
254
+
255
+ #define NAMED_LR_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
256
+ static ret (*(name)[nm::NUM_DTYPES][nm::NUM_DTYPES])(__VA_ARGS__) = { \
257
+ {fun<uint8_t, uint8_t>, fun<uint8_t, int8_t>, fun<uint8_t, int16_t>, fun<uint8_t, int32_t>, fun<uint8_t, int64_t>, fun<uint8_t, float32_t>, fun<uint8_t, float64_t>, fun<uint8_t, nm::Complex64>, fun<uint8_t, nm::Complex128>, fun<uint8_t, nm::Rational32>, fun<uint8_t, nm::Rational64>, fun<uint8_t, nm::Rational128>, fun<uint8_t, nm::RubyObject>}, \
258
+ {fun<int8_t, uint8_t>, fun<int8_t, int8_t>, fun<int8_t, int16_t>, fun<int8_t, int32_t>, fun<int8_t, int64_t>, fun<int8_t, float32_t>, fun<int8_t, float64_t>, fun<int8_t, nm::Complex64>, fun<int8_t, nm::Complex128>, fun<int8_t, nm::Rational32>, fun<int8_t, nm::Rational64>, fun<int8_t, nm::Rational128>, fun<int8_t, nm::RubyObject>}, \
259
+ {fun<int16_t, uint8_t>, fun<int16_t, int8_t>, fun<int16_t, int16_t>, fun<int16_t, int32_t>, fun<int16_t, int64_t>, fun<int16_t, float32_t>, fun<int16_t, float64_t>, fun<int16_t, nm::Complex64>, fun<int16_t, nm::Complex128>, fun<int16_t, nm::Rational32>, fun<int16_t, nm::Rational64>, fun<int16_t, nm::Rational128>, fun<int16_t, nm::RubyObject>}, \
260
+ {fun<int32_t, uint8_t>, fun<int32_t, int8_t>, fun<int32_t, int16_t>, fun<int32_t, int32_t>, fun<int32_t, int64_t>, fun<int32_t, float32_t>, fun<int32_t, float64_t>, fun<int32_t, nm::Complex64>, fun<int32_t, nm::Complex128>, fun<int32_t, nm::Rational32>, fun<int32_t, nm::Rational64>, fun<int32_t, nm::Rational128>, fun<int32_t, nm::RubyObject>}, \
261
+ {fun<int64_t, uint8_t>, fun<int64_t, int8_t>, fun<int64_t, int16_t>, fun<int64_t, int32_t>, fun<int64_t, int64_t>, fun<int64_t, float32_t>, fun<int64_t, float64_t>, fun<int64_t, nm::Complex64>, fun<int64_t, nm::Complex128>, fun<int64_t, nm::Rational32>, fun<int64_t, nm::Rational64>, fun<int64_t, nm::Rational128>, fun<int64_t, nm::RubyObject>}, \
262
+ {fun<float32_t, uint8_t>, fun<float32_t, int8_t>, fun<float32_t, int16_t>, fun<float32_t, int32_t>, fun<float32_t, int64_t>, fun<float32_t, float32_t>, fun<float32_t, float64_t>, fun<float32_t, nm::Complex64>, fun<float32_t, nm::Complex128>, fun<float32_t, nm::Rational32>, fun<float32_t, nm::Rational64>, fun<float32_t, nm::Rational128>, fun<float32_t, nm::RubyObject>}, \
263
+ {fun<float64_t, uint8_t>, fun<float64_t, int8_t>, fun<float64_t, int16_t>, fun<float64_t, int32_t>, fun<float64_t, int64_t>, fun<float64_t, float32_t>, fun<float64_t, float64_t>, fun<float64_t, nm::Complex64>, fun<float64_t, nm::Complex128>, fun<float64_t, nm::Rational32>, fun<float64_t, nm::Rational64>, fun<float64_t, nm::Rational128>, fun<float64_t, nm::RubyObject>}, \
264
+ {fun<nm::Complex64, uint8_t>, fun<nm::Complex64, int8_t>, fun<nm::Complex64, int16_t>, fun<nm::Complex64, int32_t>, fun<nm::Complex64, int64_t>, fun<nm::Complex64, float32_t>, fun<nm::Complex64, float64_t>, fun<nm::Complex64, nm::Complex64>, fun<nm::Complex64, nm::Complex128>, fun<nm::Complex64, nm::Rational32>, fun<nm::Complex64, nm::Rational64>, fun<nm::Complex64, nm::Rational128>, fun<nm::Complex64, nm::RubyObject>}, \
265
+ {fun<nm::Complex128, uint8_t>, fun<nm::Complex128, int8_t>, fun<nm::Complex128, int16_t>, fun<nm::Complex128, int32_t>, fun<nm::Complex128, int64_t>, fun<nm::Complex128, float32_t>, fun<nm::Complex128, float64_t>, fun<nm::Complex128, nm::Complex64>, fun<nm::Complex128, nm::Complex128>, fun<nm::Complex128, nm::Rational32>, fun<nm::Complex128, nm::Rational64>, fun<nm::Complex128, nm::Rational128>, fun<nm::Complex128, nm::RubyObject>}, \
266
+ {fun<nm::Rational32, uint8_t>, fun<nm::Rational32, int8_t>, fun<nm::Rational32, int16_t>, fun<nm::Rational32, int32_t>, fun<nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::Rational32, nm::Rational32>, fun<nm::Rational32, nm::Rational64>, fun<nm::Rational32, nm::Rational128>, fun<nm::Rational32, nm::RubyObject>}, \
267
+ {fun<nm::Rational64, uint8_t>, fun<nm::Rational64, int8_t>, fun<nm::Rational64, int16_t>, fun<nm::Rational64, int32_t>, fun<nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::Rational64, nm::Rational32>, fun<nm::Rational64, nm::Rational64>, fun<nm::Rational64, nm::Rational128>, fun<nm::Rational64, nm::RubyObject>}, \
268
+ {fun<nm::Rational128, uint8_t>, fun<nm::Rational128, int8_t>, fun<nm::Rational128, int16_t>, fun<nm::Rational128, int32_t>, fun<nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::Rational128, nm::Rational32>, fun<nm::Rational128, nm::Rational64>, fun<nm::Rational128, nm::Rational128>, fun<nm::Rational128, nm::RubyObject>}, \
269
+ {fun<nm::RubyObject, uint8_t>, fun<nm::RubyObject, int8_t>, fun<nm::RubyObject, int16_t>, fun<nm::RubyObject, int32_t>, fun<nm::RubyObject, int64_t>, fun<nm::RubyObject, float32_t>, fun<nm::RubyObject, float64_t>, fun<nm::RubyObject, nm::Complex64>, fun<nm::RubyObject, nm::Complex128>, fun<nm::RubyObject, nm::Rational32>, fun<nm::RubyObject, nm::Rational64>, fun<nm::RubyObject, nm::Rational128>, fun<nm::RubyObject, nm::RubyObject>} \
270
+ };
271
+
272
+ /*
273
+ * Defines a static array that holds function pointers to operation, and left-
274
+ * and right-side dtype templated version sof the specified function.
275
+ */
276
+ #define OP_LR_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_OP_LR_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
277
+
278
+ #define NAMED_OP_LR_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
279
+ static ret (*(name)[nm::NUM_EWOPS][nm::NUM_DTYPES][nm::NUM_DTYPES])(__VA_ARGS__) = { \
280
+ { \
281
+ {fun<nm::EW_ADD, uint8_t, uint8_t>, fun<nm::EW_ADD, uint8_t, int8_t>, fun<nm::EW_ADD, uint8_t, int16_t>, fun<nm::EW_ADD, uint8_t, int32_t>, fun<nm::EW_ADD, uint8_t, int64_t>, \
282
+ fun<nm::EW_ADD, uint8_t, float32_t>, fun<nm::EW_ADD, uint8_t, float64_t>, fun<nm::EW_ADD, uint8_t, nm::Complex64>, fun<nm::EW_ADD, uint8_t, nm::Complex128>, \
283
+ fun<nm::EW_ADD, uint8_t, nm::Rational32>, fun<nm::EW_ADD, uint8_t, nm::Rational64>, fun<nm::EW_ADD, uint8_t, nm::Rational128>, NULL}, \
284
+ \
285
+ {fun<nm::EW_ADD, int8_t, uint8_t>, fun<nm::EW_ADD, int8_t, int8_t>, fun<nm::EW_ADD, int8_t, int16_t>, fun<nm::EW_ADD, int8_t, int32_t>, fun<nm::EW_ADD, int8_t, int64_t>, \
286
+ fun<nm::EW_ADD, int8_t, float32_t>, fun<nm::EW_ADD, int8_t, float64_t>, fun<nm::EW_ADD, int8_t, nm::Complex64>, fun<nm::EW_ADD, int8_t, nm::Complex128>, \
287
+ fun<nm::EW_ADD, int8_t, nm::Rational32>, fun<nm::EW_ADD, int8_t, nm::Rational64>, fun<nm::EW_ADD, int8_t, nm::Rational128>, NULL}, \
288
+ \
289
+ {fun<nm::EW_ADD, int16_t, uint8_t>, fun<nm::EW_ADD, int16_t, int8_t>, fun<nm::EW_ADD, int16_t, int16_t>, fun<nm::EW_ADD, int16_t, int32_t>, fun<nm::EW_ADD, int16_t, int64_t>, \
290
+ fun<nm::EW_ADD, int16_t, float32_t>, fun<nm::EW_ADD, int16_t, float64_t>, fun<nm::EW_ADD, int16_t, nm::Complex64>, fun<nm::EW_ADD, int16_t, nm::Complex128>, \
291
+ fun<nm::EW_ADD, int16_t, nm::Rational32>, fun<nm::EW_ADD, int16_t, nm::Rational64>, fun<nm::EW_ADD, int16_t, nm::Rational128>, NULL}, \
292
+ \
293
+ {fun<nm::EW_ADD, int32_t, uint8_t>, fun<nm::EW_ADD, int32_t, int8_t>, fun<nm::EW_ADD, int32_t, int16_t>, fun<nm::EW_ADD, int32_t, int32_t>, fun<nm::EW_ADD, int32_t, int64_t>, \
294
+ fun<nm::EW_ADD, int32_t, float32_t>, fun<nm::EW_ADD, int32_t, float64_t>, fun<nm::EW_ADD, int32_t, nm::Complex64>, fun<nm::EW_ADD, int32_t, nm::Complex128>, \
295
+ fun<nm::EW_ADD, int32_t, nm::Rational32>, fun<nm::EW_ADD, int32_t, nm::Rational64>, fun<nm::EW_ADD, int32_t, nm::Rational128>, NULL}, \
296
+ \
297
+ {fun<nm::EW_ADD, int64_t, uint8_t>, fun<nm::EW_ADD, int64_t, int8_t>, fun<nm::EW_ADD, int64_t, int16_t>, fun<nm::EW_ADD, int64_t, int32_t>, fun<nm::EW_ADD, int64_t, int64_t>, \
298
+ fun<nm::EW_ADD, int64_t, float32_t>, fun<nm::EW_ADD, int64_t, float64_t>, fun<nm::EW_ADD, int64_t, nm::Complex64>, fun<nm::EW_ADD, int64_t, nm::Complex128>, \
299
+ fun<nm::EW_ADD, int64_t, nm::Rational32>, fun<nm::EW_ADD, int64_t, nm::Rational64>, fun<nm::EW_ADD, int64_t, nm::Rational128>, NULL}, \
300
+ \
301
+ {fun<nm::EW_ADD, float32_t, uint8_t>, fun<nm::EW_ADD, float32_t, int8_t>, fun<nm::EW_ADD, float32_t, int16_t>, fun<nm::EW_ADD, float32_t, int32_t>, fun<nm::EW_ADD, float32_t, int64_t>, \
302
+ fun<nm::EW_ADD, float32_t, float32_t>, fun<nm::EW_ADD, float32_t, float64_t>, fun<nm::EW_ADD, float32_t, nm::Complex64>, fun<nm::EW_ADD, float32_t, nm::Complex128>, \
303
+ fun<nm::EW_ADD, float32_t, nm::Rational32>, fun<nm::EW_ADD, float32_t, nm::Rational64>, fun<nm::EW_ADD, float32_t, nm::Rational128>, NULL}, \
304
+ \
305
+ {fun<nm::EW_ADD, float64_t, uint8_t>, fun<nm::EW_ADD, float64_t, int8_t>, fun<nm::EW_ADD, float64_t, int16_t>, fun<nm::EW_ADD, float64_t, int32_t>, fun<nm::EW_ADD, float64_t, int64_t>, \
306
+ fun<nm::EW_ADD, float64_t, float32_t>, fun<nm::EW_ADD, float64_t, float64_t>, fun<nm::EW_ADD, float64_t, nm::Complex64>, fun<nm::EW_ADD, float64_t, nm::Complex128>, \
307
+ fun<nm::EW_ADD, float64_t, nm::Rational32>, fun<nm::EW_ADD, float64_t, nm::Rational64>, fun<nm::EW_ADD, float64_t, nm::Rational128>, NULL}, \
308
+ \
309
+ {fun<nm::EW_ADD, nm::Complex64, uint8_t>, fun<nm::EW_ADD, nm::Complex64, int8_t>, fun<nm::EW_ADD, nm::Complex64, int16_t>, fun<nm::EW_ADD, nm::Complex64, int32_t>, \
310
+ fun<nm::EW_ADD, nm::Complex64, int64_t>, fun<nm::EW_ADD, nm::Complex64, float32_t>, fun<nm::EW_ADD, nm::Complex64, float64_t>, fun<nm::EW_ADD, nm::Complex64, nm::Complex64>, \
311
+ fun<nm::EW_ADD, nm::Complex64, nm::Complex128>, fun<nm::EW_ADD, nm::Complex64, nm::Rational32>, fun<nm::EW_ADD, nm::Complex64, nm::Rational64>, \
312
+ fun<nm::EW_ADD, nm::Complex64, nm::Rational128>, NULL}, \
313
+ \
314
+ {fun<nm::EW_ADD, nm::Complex128, uint8_t>, fun<nm::EW_ADD, nm::Complex128, int8_t>, fun<nm::EW_ADD, nm::Complex128, int16_t>, fun<nm::EW_ADD, nm::Complex128, int32_t>, \
315
+ fun<nm::EW_ADD, nm::Complex128, int64_t>, fun<nm::EW_ADD, nm::Complex128, float32_t>, fun<nm::EW_ADD, nm::Complex128, float64_t>, fun<nm::EW_ADD, nm::Complex128, nm::Complex64>, \
316
+ fun<nm::EW_ADD, nm::Complex128, nm::Complex128>, fun<nm::EW_ADD, nm::Complex128, nm::Rational32>, fun<nm::EW_ADD, nm::Complex128, nm::Rational64>, \
317
+ fun<nm::EW_ADD, nm::Complex128, nm::Rational128>, NULL}, \
318
+ \
319
+ {fun<nm::EW_ADD, nm::Rational32, uint8_t>, fun<nm::EW_ADD, nm::Rational32, int8_t>, fun<nm::EW_ADD, nm::Rational32, int16_t>, fun<nm::EW_ADD, nm::Rational32, int32_t>, \
320
+ fun<nm::EW_ADD, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_ADD, nm::Rational32, nm::Rational32>, fun<nm::EW_ADD, nm::Rational32, nm::Rational64>, \
321
+ fun<nm::EW_ADD, nm::Rational32, nm::Rational128>, NULL}, \
322
+ \
323
+ {fun<nm::EW_ADD, nm::Rational64, uint8_t>, fun<nm::EW_ADD, nm::Rational64, int8_t>, fun<nm::EW_ADD, nm::Rational64, int16_t>, fun<nm::EW_ADD, nm::Rational64, int32_t>, \
324
+ fun<nm::EW_ADD, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_ADD, nm::Rational64, nm::Rational32>, fun<nm::EW_ADD, nm::Rational64, nm::Rational64>, \
325
+ fun<nm::EW_ADD, nm::Rational64, nm::Rational128>, NULL}, \
326
+ \
327
+ {fun<nm::EW_ADD, nm::Rational128, uint8_t>, fun<nm::EW_ADD, nm::Rational128, int8_t>, fun<nm::EW_ADD, nm::Rational128, int16_t>, fun<nm::EW_ADD, nm::Rational128, int32_t>, \
328
+ fun<nm::EW_ADD, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_ADD, nm::Rational128, nm::Rational32>, fun<nm::EW_ADD, nm::Rational128, nm::Rational64>, \
329
+ fun<nm::EW_ADD, nm::Rational128, nm::Rational128>, NULL}, \
330
+ \
331
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_ADD, nm::RubyObject, nm::RubyObject>} \
332
+ }, \
333
+ \
334
+ { \
335
+ {fun<nm::EW_SUB, uint8_t, uint8_t>, fun<nm::EW_SUB, uint8_t, int8_t>, fun<nm::EW_SUB, uint8_t, int16_t>, fun<nm::EW_SUB, uint8_t, int32_t>, fun<nm::EW_SUB, uint8_t, int64_t>, \
336
+ fun<nm::EW_SUB, uint8_t, float32_t>, fun<nm::EW_SUB, uint8_t, float64_t>, fun<nm::EW_SUB, uint8_t, nm::Complex64>, fun<nm::EW_SUB, uint8_t, nm::Complex128>, \
337
+ fun<nm::EW_SUB, uint8_t, nm::Rational32>, fun<nm::EW_SUB, uint8_t, nm::Rational64>, fun<nm::EW_SUB, uint8_t, nm::Rational128>, NULL}, \
338
+ \
339
+ {fun<nm::EW_SUB, int8_t, uint8_t>, fun<nm::EW_SUB, int8_t, int8_t>, fun<nm::EW_SUB, int8_t, int16_t>, fun<nm::EW_SUB, int8_t, int32_t>, fun<nm::EW_SUB, int8_t, int64_t>, \
340
+ fun<nm::EW_SUB, int8_t, float32_t>, fun<nm::EW_SUB, int8_t, float64_t>, fun<nm::EW_SUB, int8_t, nm::Complex64>, fun<nm::EW_SUB, int8_t, nm::Complex128>, \
341
+ fun<nm::EW_SUB, int8_t, nm::Rational32>, fun<nm::EW_SUB, int8_t, nm::Rational64>, fun<nm::EW_SUB, int8_t, nm::Rational128>, NULL}, \
342
+ \
343
+ {fun<nm::EW_SUB, int16_t, uint8_t>, fun<nm::EW_SUB, int16_t, int8_t>, fun<nm::EW_SUB, int16_t, int16_t>, fun<nm::EW_SUB, int16_t, int32_t>, fun<nm::EW_SUB, int16_t, int64_t>, \
344
+ fun<nm::EW_SUB, int16_t, float32_t>, fun<nm::EW_SUB, int16_t, float64_t>, fun<nm::EW_SUB, int16_t, nm::Complex64>, fun<nm::EW_SUB, int16_t, nm::Complex128>, \
345
+ fun<nm::EW_SUB, int16_t, nm::Rational32>, fun<nm::EW_SUB, int16_t, nm::Rational64>, fun<nm::EW_SUB, int16_t, nm::Rational128>, NULL}, \
346
+ \
347
+ {fun<nm::EW_SUB, int32_t, uint8_t>, fun<nm::EW_SUB, int32_t, int8_t>, fun<nm::EW_SUB, int32_t, int16_t>, fun<nm::EW_SUB, int32_t, int32_t>, fun<nm::EW_SUB, int32_t, int64_t>, \
348
+ fun<nm::EW_SUB, int32_t, float32_t>, fun<nm::EW_SUB, int32_t, float64_t>, fun<nm::EW_SUB, int32_t, nm::Complex64>, fun<nm::EW_SUB, int32_t, nm::Complex128>, \
349
+ fun<nm::EW_SUB, int32_t, nm::Rational32>, fun<nm::EW_SUB, int32_t, nm::Rational64>, fun<nm::EW_SUB, int32_t, nm::Rational128>, NULL}, \
350
+ \
351
+ {fun<nm::EW_SUB, int64_t, uint8_t>, fun<nm::EW_SUB, int64_t, int8_t>, fun<nm::EW_SUB, int64_t, int16_t>, fun<nm::EW_SUB, int64_t, int32_t>, fun<nm::EW_SUB, int64_t, int64_t>, \
352
+ fun<nm::EW_SUB, int64_t, float32_t>, fun<nm::EW_SUB, int64_t, float64_t>, fun<nm::EW_SUB, int64_t, nm::Complex64>, fun<nm::EW_SUB, int64_t, nm::Complex128>, \
353
+ fun<nm::EW_SUB, int64_t, nm::Rational32>, fun<nm::EW_SUB, int64_t, nm::Rational64>, fun<nm::EW_SUB, int64_t, nm::Rational128>, NULL}, \
354
+ \
355
+ {fun<nm::EW_SUB, float32_t, uint8_t>, fun<nm::EW_SUB, float32_t, int8_t>, fun<nm::EW_SUB, float32_t, int16_t>, fun<nm::EW_SUB, float32_t, int32_t>, fun<nm::EW_SUB, float32_t, int64_t>, \
356
+ fun<nm::EW_SUB, float32_t, float32_t>, fun<nm::EW_SUB, float32_t, float64_t>, fun<nm::EW_SUB, float32_t, nm::Complex64>, fun<nm::EW_SUB, float32_t, nm::Complex128>, \
357
+ fun<nm::EW_SUB, float32_t, nm::Rational32>, fun<nm::EW_SUB, float32_t, nm::Rational64>, fun<nm::EW_SUB, float32_t, nm::Rational128>, NULL}, \
358
+ \
359
+ {fun<nm::EW_SUB, float64_t, uint8_t>, fun<nm::EW_SUB, float64_t, int8_t>, fun<nm::EW_SUB, float64_t, int16_t>, fun<nm::EW_SUB, float64_t, int32_t>, fun<nm::EW_SUB, float64_t, int64_t>, \
360
+ fun<nm::EW_SUB, float64_t, float32_t>, fun<nm::EW_SUB, float64_t, float64_t>, fun<nm::EW_SUB, float64_t, nm::Complex64>, fun<nm::EW_SUB, float64_t, nm::Complex128>, \
361
+ fun<nm::EW_SUB, float64_t, nm::Rational32>, fun<nm::EW_SUB, float64_t, nm::Rational64>, fun<nm::EW_SUB, float64_t, nm::Rational128>, NULL}, \
362
+ \
363
+ {fun<nm::EW_SUB, nm::Complex64, uint8_t>, fun<nm::EW_SUB, nm::Complex64, int8_t>, fun<nm::EW_SUB, nm::Complex64, int16_t>, fun<nm::EW_SUB, nm::Complex64, int32_t>, \
364
+ fun<nm::EW_SUB, nm::Complex64, int64_t>, fun<nm::EW_SUB, nm::Complex64, float32_t>, fun<nm::EW_SUB, nm::Complex64, float64_t>, fun<nm::EW_SUB, nm::Complex64, nm::Complex64>, \
365
+ fun<nm::EW_SUB, nm::Complex64, nm::Complex128>, fun<nm::EW_SUB, nm::Complex64, nm::Rational32>, fun<nm::EW_SUB, nm::Complex64, nm::Rational64>, \
366
+ fun<nm::EW_SUB, nm::Complex64, nm::Rational128>, NULL}, \
367
+ \
368
+ {fun<nm::EW_SUB, nm::Complex128, uint8_t>, fun<nm::EW_SUB, nm::Complex128, int8_t>, fun<nm::EW_SUB, nm::Complex128, int16_t>, fun<nm::EW_SUB, nm::Complex128, int32_t>, \
369
+ fun<nm::EW_SUB, nm::Complex128, int64_t>, fun<nm::EW_SUB, nm::Complex128, float32_t>, fun<nm::EW_SUB, nm::Complex128, float64_t>, fun<nm::EW_SUB, nm::Complex128, nm::Complex64>, \
370
+ fun<nm::EW_SUB, nm::Complex128, nm::Complex128>, fun<nm::EW_SUB, nm::Complex128, nm::Rational32>, fun<nm::EW_SUB, nm::Complex128, nm::Rational64>, \
371
+ fun<nm::EW_SUB, nm::Complex128, nm::Rational128>, NULL}, \
372
+ \
373
+ {fun<nm::EW_SUB, nm::Rational32, uint8_t>, fun<nm::EW_SUB, nm::Rational32, int8_t>, fun<nm::EW_SUB, nm::Rational32, int16_t>, fun<nm::EW_SUB, nm::Rational32, int32_t>, \
374
+ fun<nm::EW_SUB, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_SUB, nm::Rational32, nm::Rational32>, fun<nm::EW_SUB, nm::Rational32, nm::Rational64>, \
375
+ fun<nm::EW_SUB, nm::Rational32, nm::Rational128>, NULL}, \
376
+ \
377
+ {fun<nm::EW_SUB, nm::Rational64, uint8_t>, fun<nm::EW_SUB, nm::Rational64, int8_t>, fun<nm::EW_SUB, nm::Rational64, int16_t>, fun<nm::EW_SUB, nm::Rational64, int32_t>, \
378
+ fun<nm::EW_SUB, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_SUB, nm::Rational64, nm::Rational32>, fun<nm::EW_SUB, nm::Rational64, nm::Rational64>, \
379
+ fun<nm::EW_SUB, nm::Rational64, nm::Rational128>, NULL}, \
380
+ \
381
+ {fun<nm::EW_SUB, nm::Rational128, uint8_t>, fun<nm::EW_SUB, nm::Rational128, int8_t>, fun<nm::EW_SUB, nm::Rational128, int16_t>, fun<nm::EW_SUB, nm::Rational128, int32_t>, \
382
+ fun<nm::EW_SUB, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_SUB, nm::Rational128, nm::Rational32>, fun<nm::EW_SUB, nm::Rational128, nm::Rational64>, \
383
+ fun<nm::EW_SUB, nm::Rational128, nm::Rational128>, NULL}, \
384
+ \
385
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_SUB, nm::RubyObject, nm::RubyObject>} \
386
+ }, \
387
+ \
388
+ { \
389
+ {fun<nm::EW_MUL, uint8_t, uint8_t>, fun<nm::EW_MUL, uint8_t, int8_t>, fun<nm::EW_MUL, uint8_t, int16_t>, fun<nm::EW_MUL, uint8_t, int32_t>, fun<nm::EW_MUL, uint8_t, int64_t>, \
390
+ fun<nm::EW_MUL, uint8_t, float32_t>, fun<nm::EW_MUL, uint8_t, float64_t>, fun<nm::EW_MUL, uint8_t, nm::Complex64>, fun<nm::EW_MUL, uint8_t, nm::Complex128>, \
391
+ fun<nm::EW_MUL, uint8_t, nm::Rational32>, fun<nm::EW_MUL, uint8_t, nm::Rational64>, fun<nm::EW_MUL, uint8_t, nm::Rational128>, NULL}, \
392
+ \
393
+ {fun<nm::EW_MUL, int8_t, uint8_t>, fun<nm::EW_MUL, int8_t, int8_t>, fun<nm::EW_MUL, int8_t, int16_t>, fun<nm::EW_MUL, int8_t, int32_t>, fun<nm::EW_MUL, int8_t, int64_t>, \
394
+ fun<nm::EW_MUL, int8_t, float32_t>, fun<nm::EW_MUL, int8_t, float64_t>, fun<nm::EW_MUL, int8_t, nm::Complex64>, fun<nm::EW_MUL, int8_t, nm::Complex128>, \
395
+ fun<nm::EW_MUL, int8_t, nm::Rational32>, fun<nm::EW_MUL, int8_t, nm::Rational64>, fun<nm::EW_MUL, int8_t, nm::Rational128>, NULL}, \
396
+ \
397
+ {fun<nm::EW_MUL, int16_t, uint8_t>, fun<nm::EW_MUL, int16_t, int8_t>, fun<nm::EW_MUL, int16_t, int16_t>, fun<nm::EW_MUL, int16_t, int32_t>, fun<nm::EW_MUL, int16_t, int64_t>, \
398
+ fun<nm::EW_MUL, int16_t, float32_t>, fun<nm::EW_MUL, int16_t, float64_t>, fun<nm::EW_MUL, int16_t, nm::Complex64>, fun<nm::EW_MUL, int16_t, nm::Complex128>, \
399
+ fun<nm::EW_MUL, int16_t, nm::Rational32>, fun<nm::EW_MUL, int16_t, nm::Rational64>, fun<nm::EW_MUL, int16_t, nm::Rational128>, NULL}, \
400
+ \
401
+ {fun<nm::EW_MUL, int32_t, uint8_t>, fun<nm::EW_MUL, int32_t, int8_t>, fun<nm::EW_MUL, int32_t, int16_t>, fun<nm::EW_MUL, int32_t, int32_t>, fun<nm::EW_MUL, int32_t, int64_t>, \
402
+ fun<nm::EW_MUL, int32_t, float32_t>, fun<nm::EW_MUL, int32_t, float64_t>, fun<nm::EW_MUL, int32_t, nm::Complex64>, fun<nm::EW_MUL, int32_t, nm::Complex128>, \
403
+ fun<nm::EW_MUL, int32_t, nm::Rational32>, fun<nm::EW_MUL, int32_t, nm::Rational64>, fun<nm::EW_MUL, int32_t, nm::Rational128>, NULL}, \
404
+ \
405
+ {fun<nm::EW_MUL, int64_t, uint8_t>, fun<nm::EW_MUL, int64_t, int8_t>, fun<nm::EW_MUL, int64_t, int16_t>, fun<nm::EW_MUL, int64_t, int32_t>, fun<nm::EW_MUL, int64_t, int64_t>, \
406
+ fun<nm::EW_MUL, int64_t, float32_t>, fun<nm::EW_MUL, int64_t, float64_t>, fun<nm::EW_MUL, int64_t, nm::Complex64>, fun<nm::EW_MUL, int64_t, nm::Complex128>, \
407
+ fun<nm::EW_MUL, int64_t, nm::Rational32>, fun<nm::EW_MUL, int64_t, nm::Rational64>, fun<nm::EW_MUL, int64_t, nm::Rational128>, NULL}, \
408
+ \
409
+ {fun<nm::EW_MUL, float32_t, uint8_t>, fun<nm::EW_MUL, float32_t, int8_t>, fun<nm::EW_MUL, float32_t, int16_t>, fun<nm::EW_MUL, float32_t, int32_t>, fun<nm::EW_MUL, float32_t, int64_t>, \
410
+ fun<nm::EW_MUL, float32_t, float32_t>, fun<nm::EW_MUL, float32_t, float64_t>, fun<nm::EW_MUL, float32_t, nm::Complex64>, fun<nm::EW_MUL, float32_t, nm::Complex128>, \
411
+ fun<nm::EW_MUL, float32_t, nm::Rational32>, fun<nm::EW_MUL, float32_t, nm::Rational64>, fun<nm::EW_MUL, float32_t, nm::Rational128>, NULL}, \
412
+ \
413
+ {fun<nm::EW_MUL, float64_t, uint8_t>, fun<nm::EW_MUL, float64_t, int8_t>, fun<nm::EW_MUL, float64_t, int16_t>, fun<nm::EW_MUL, float64_t, int32_t>, fun<nm::EW_MUL, float64_t, int64_t>, \
414
+ fun<nm::EW_MUL, float64_t, float32_t>, fun<nm::EW_MUL, float64_t, float64_t>, fun<nm::EW_MUL, float64_t, nm::Complex64>, fun<nm::EW_MUL, float64_t, nm::Complex128>, \
415
+ fun<nm::EW_MUL, float64_t, nm::Rational32>, fun<nm::EW_MUL, float64_t, nm::Rational64>, fun<nm::EW_MUL, float64_t, nm::Rational128>, NULL}, \
416
+ \
417
+ {fun<nm::EW_MUL, nm::Complex64, uint8_t>, fun<nm::EW_MUL, nm::Complex64, int8_t>, fun<nm::EW_MUL, nm::Complex64, int16_t>, fun<nm::EW_MUL, nm::Complex64, int32_t>, \
418
+ fun<nm::EW_MUL, nm::Complex64, int64_t>, fun<nm::EW_MUL, nm::Complex64, float32_t>, fun<nm::EW_MUL, nm::Complex64, float64_t>, fun<nm::EW_MUL, nm::Complex64, nm::Complex64>, \
419
+ fun<nm::EW_MUL, nm::Complex64, nm::Complex128>, fun<nm::EW_MUL, nm::Complex64, nm::Rational32>, fun<nm::EW_MUL, nm::Complex64, nm::Rational64>, \
420
+ fun<nm::EW_MUL, nm::Complex64, nm::Rational128>, NULL}, \
421
+ \
422
+ {fun<nm::EW_MUL, nm::Complex128, uint8_t>, fun<nm::EW_MUL, nm::Complex128, int8_t>, fun<nm::EW_MUL, nm::Complex128, int16_t>, fun<nm::EW_MUL, nm::Complex128, int32_t>, \
423
+ fun<nm::EW_MUL, nm::Complex128, int64_t>, fun<nm::EW_MUL, nm::Complex128, float32_t>, fun<nm::EW_MUL, nm::Complex128, float64_t>, fun<nm::EW_MUL, nm::Complex128, nm::Complex64>, \
424
+ fun<nm::EW_MUL, nm::Complex128, nm::Complex128>, fun<nm::EW_MUL, nm::Complex128, nm::Rational32>, fun<nm::EW_MUL, nm::Complex128, nm::Rational64>, \
425
+ fun<nm::EW_MUL, nm::Complex128, nm::Rational128>, NULL}, \
426
+ \
427
+ {fun<nm::EW_MUL, nm::Rational32, uint8_t>, fun<nm::EW_MUL, nm::Rational32, int8_t>, fun<nm::EW_MUL, nm::Rational32, int16_t>, fun<nm::EW_MUL, nm::Rational32, int32_t>, \
428
+ fun<nm::EW_MUL, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MUL, nm::Rational32, nm::Rational32>, fun<nm::EW_MUL, nm::Rational32, nm::Rational64>, \
429
+ fun<nm::EW_MUL, nm::Rational32, nm::Rational128>, NULL}, \
430
+ \
431
+ {fun<nm::EW_MUL, nm::Rational64, uint8_t>, fun<nm::EW_MUL, nm::Rational64, int8_t>, fun<nm::EW_MUL, nm::Rational64, int16_t>, fun<nm::EW_MUL, nm::Rational64, int32_t>, \
432
+ fun<nm::EW_MUL, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MUL, nm::Rational64, nm::Rational32>, fun<nm::EW_MUL, nm::Rational64, nm::Rational64>, \
433
+ fun<nm::EW_MUL, nm::Rational64, nm::Rational128>, NULL}, \
434
+ \
435
+ {fun<nm::EW_MUL, nm::Rational128, uint8_t>, fun<nm::EW_MUL, nm::Rational128, int8_t>, fun<nm::EW_MUL, nm::Rational128, int16_t>, fun<nm::EW_MUL, nm::Rational128, int32_t>, \
436
+ fun<nm::EW_MUL, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MUL, nm::Rational128, nm::Rational32>, fun<nm::EW_MUL, nm::Rational128, nm::Rational64>, \
437
+ fun<nm::EW_MUL, nm::Rational128, nm::Rational128>, NULL}, \
438
+ \
439
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_MUL, nm::RubyObject, nm::RubyObject>} \
440
+ }, \
441
+ \
442
+ { \
443
+ {fun<nm::EW_DIV, uint8_t, uint8_t>, fun<nm::EW_DIV, uint8_t, int8_t>, fun<nm::EW_DIV, uint8_t, int16_t>, fun<nm::EW_DIV, uint8_t, int32_t>, fun<nm::EW_DIV, uint8_t, int64_t>, \
444
+ fun<nm::EW_DIV, uint8_t, float32_t>, fun<nm::EW_DIV, uint8_t, float64_t>, fun<nm::EW_DIV, uint8_t, nm::Complex64>, fun<nm::EW_DIV, uint8_t, nm::Complex128>, \
445
+ fun<nm::EW_DIV, uint8_t, nm::Rational32>, fun<nm::EW_DIV, uint8_t, nm::Rational64>, fun<nm::EW_DIV, uint8_t, nm::Rational128>, NULL}, \
446
+ \
447
+ {fun<nm::EW_DIV, int8_t, uint8_t>, fun<nm::EW_DIV, int8_t, int8_t>, fun<nm::EW_DIV, int8_t, int16_t>, fun<nm::EW_DIV, int8_t, int32_t>, fun<nm::EW_DIV, int8_t, int64_t>, \
448
+ fun<nm::EW_DIV, int8_t, float32_t>, fun<nm::EW_DIV, int8_t, float64_t>, fun<nm::EW_DIV, int8_t, nm::Complex64>, fun<nm::EW_DIV, int8_t, nm::Complex128>, \
449
+ fun<nm::EW_DIV, int8_t, nm::Rational32>, fun<nm::EW_DIV, int8_t, nm::Rational64>, fun<nm::EW_DIV, int8_t, nm::Rational128>, NULL}, \
450
+ \
451
+ {fun<nm::EW_DIV, int16_t, uint8_t>, fun<nm::EW_DIV, int16_t, int8_t>, fun<nm::EW_DIV, int16_t, int16_t>, fun<nm::EW_DIV, int16_t, int32_t>, fun<nm::EW_DIV, int16_t, int64_t>, \
452
+ fun<nm::EW_DIV, int16_t, float32_t>, fun<nm::EW_DIV, int16_t, float64_t>, fun<nm::EW_DIV, int16_t, nm::Complex64>, fun<nm::EW_DIV, int16_t, nm::Complex128>, \
453
+ fun<nm::EW_DIV, int16_t, nm::Rational32>, fun<nm::EW_DIV, int16_t, nm::Rational64>, fun<nm::EW_DIV, int16_t, nm::Rational128>, NULL}, \
454
+ \
455
+ {fun<nm::EW_DIV, int32_t, uint8_t>, fun<nm::EW_DIV, int32_t, int8_t>, fun<nm::EW_DIV, int32_t, int16_t>, fun<nm::EW_DIV, int32_t, int32_t>, fun<nm::EW_DIV, int32_t, int64_t>, \
456
+ fun<nm::EW_DIV, int32_t, float32_t>, fun<nm::EW_DIV, int32_t, float64_t>, fun<nm::EW_DIV, int32_t, nm::Complex64>, fun<nm::EW_DIV, int32_t, nm::Complex128>, \
457
+ fun<nm::EW_DIV, int32_t, nm::Rational32>, fun<nm::EW_DIV, int32_t, nm::Rational64>, fun<nm::EW_DIV, int32_t, nm::Rational128>, NULL}, \
458
+ \
459
+ {fun<nm::EW_DIV, int64_t, uint8_t>, fun<nm::EW_DIV, int64_t, int8_t>, fun<nm::EW_DIV, int64_t, int16_t>, fun<nm::EW_DIV, int64_t, int32_t>, fun<nm::EW_DIV, int64_t, int64_t>, \
460
+ fun<nm::EW_DIV, int64_t, float32_t>, fun<nm::EW_DIV, int64_t, float64_t>, fun<nm::EW_DIV, int64_t, nm::Complex64>, fun<nm::EW_DIV, int64_t, nm::Complex128>, \
461
+ fun<nm::EW_DIV, int64_t, nm::Rational32>, fun<nm::EW_DIV, int64_t, nm::Rational64>, fun<nm::EW_DIV, int64_t, nm::Rational128>, NULL}, \
462
+ \
463
+ {fun<nm::EW_DIV, float32_t, uint8_t>, fun<nm::EW_DIV, float32_t, int8_t>, fun<nm::EW_DIV, float32_t, int16_t>, fun<nm::EW_DIV, float32_t, int32_t>, fun<nm::EW_DIV, float32_t, int64_t>, \
464
+ fun<nm::EW_DIV, float32_t, float32_t>, fun<nm::EW_DIV, float32_t, float64_t>, fun<nm::EW_DIV, float32_t, nm::Complex64>, fun<nm::EW_DIV, float32_t, nm::Complex128>, \
465
+ fun<nm::EW_DIV, float32_t, nm::Rational32>, fun<nm::EW_DIV, float32_t, nm::Rational64>, fun<nm::EW_DIV, float32_t, nm::Rational128>, NULL}, \
466
+ \
467
+ {fun<nm::EW_DIV, float64_t, uint8_t>, fun<nm::EW_DIV, float64_t, int8_t>, fun<nm::EW_DIV, float64_t, int16_t>, fun<nm::EW_DIV, float64_t, int32_t>, fun<nm::EW_DIV, float64_t, int64_t>, \
468
+ fun<nm::EW_DIV, float64_t, float32_t>, fun<nm::EW_DIV, float64_t, float64_t>, fun<nm::EW_DIV, float64_t, nm::Complex64>, fun<nm::EW_DIV, float64_t, nm::Complex128>, \
469
+ fun<nm::EW_DIV, float64_t, nm::Rational32>, fun<nm::EW_DIV, float64_t, nm::Rational64>, fun<nm::EW_DIV, float64_t, nm::Rational128>, NULL}, \
470
+ \
471
+ {fun<nm::EW_DIV, nm::Complex64, uint8_t>, fun<nm::EW_DIV, nm::Complex64, int8_t>, fun<nm::EW_DIV, nm::Complex64, int16_t>, fun<nm::EW_DIV, nm::Complex64, int32_t>, \
472
+ fun<nm::EW_DIV, nm::Complex64, int64_t>, fun<nm::EW_DIV, nm::Complex64, float32_t>, fun<nm::EW_DIV, nm::Complex64, float64_t>, fun<nm::EW_DIV, nm::Complex64, nm::Complex64>, \
473
+ fun<nm::EW_DIV, nm::Complex64, nm::Complex128>, fun<nm::EW_DIV, nm::Complex64, nm::Rational32>, fun<nm::EW_DIV, nm::Complex64, nm::Rational64>, \
474
+ fun<nm::EW_DIV, nm::Complex64, nm::Rational128>, NULL}, \
475
+ \
476
+ {fun<nm::EW_DIV, nm::Complex128, uint8_t>, fun<nm::EW_DIV, nm::Complex128, int8_t>, fun<nm::EW_DIV, nm::Complex128, int16_t>, fun<nm::EW_DIV, nm::Complex128, int32_t>, \
477
+ fun<nm::EW_DIV, nm::Complex128, int64_t>, fun<nm::EW_DIV, nm::Complex128, float32_t>, fun<nm::EW_DIV, nm::Complex128, float64_t>, fun<nm::EW_DIV, nm::Complex128, nm::Complex64>, \
478
+ fun<nm::EW_DIV, nm::Complex128, nm::Complex128>, fun<nm::EW_DIV, nm::Complex128, nm::Rational32>, fun<nm::EW_DIV, nm::Complex128, nm::Rational64>, \
479
+ fun<nm::EW_DIV, nm::Complex128, nm::Rational128>, NULL}, \
480
+ \
481
+ {fun<nm::EW_DIV, nm::Rational32, uint8_t>, fun<nm::EW_DIV, nm::Rational32, int8_t>, fun<nm::EW_DIV, nm::Rational32, int16_t>, fun<nm::EW_DIV, nm::Rational32, int32_t>, \
482
+ fun<nm::EW_DIV, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_DIV, nm::Rational32, nm::Rational32>, fun<nm::EW_DIV, nm::Rational32, nm::Rational64>, \
483
+ fun<nm::EW_DIV, nm::Rational32, nm::Rational128>, NULL}, \
484
+ \
485
+ {fun<nm::EW_DIV, nm::Rational64, uint8_t>, fun<nm::EW_DIV, nm::Rational64, int8_t>, fun<nm::EW_DIV, nm::Rational64, int16_t>, fun<nm::EW_DIV, nm::Rational64, int32_t>, \
486
+ fun<nm::EW_DIV, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_DIV, nm::Rational64, nm::Rational32>, fun<nm::EW_DIV, nm::Rational64, nm::Rational64>, \
487
+ fun<nm::EW_DIV, nm::Rational64, nm::Rational128>, NULL}, \
488
+ \
489
+ {fun<nm::EW_DIV, nm::Rational128, uint8_t>, fun<nm::EW_DIV, nm::Rational128, int8_t>, fun<nm::EW_DIV, nm::Rational128, int16_t>, fun<nm::EW_DIV, nm::Rational128, int32_t>, \
490
+ fun<nm::EW_DIV, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_DIV, nm::Rational128, nm::Rational32>, fun<nm::EW_DIV, nm::Rational128, nm::Rational64>, \
491
+ fun<nm::EW_DIV, nm::Rational128, nm::Rational128>, NULL}, \
492
+ \
493
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_DIV, nm::RubyObject, nm::RubyObject>} \
494
+ }, \
495
+ \
496
+ { \
497
+ {fun<nm::EW_POW, uint8_t, uint8_t>, fun<nm::EW_POW, uint8_t, int8_t>, fun<nm::EW_POW, uint8_t, int16_t>, fun<nm::EW_POW, uint8_t, int32_t>, fun<nm::EW_POW, uint8_t, int64_t>, \
498
+ fun<nm::EW_POW, uint8_t, float32_t>, fun<nm::EW_POW, uint8_t, float64_t>, fun<nm::EW_POW, uint8_t, nm::Complex64>, fun<nm::EW_POW, uint8_t, nm::Complex128>, \
499
+ fun<nm::EW_POW, uint8_t, nm::Rational32>, fun<nm::EW_POW, uint8_t, nm::Rational64>, fun<nm::EW_POW, uint8_t, nm::Rational128>, NULL}, \
500
+ \
501
+ {fun<nm::EW_POW, int8_t, uint8_t>, fun<nm::EW_POW, int8_t, int8_t>, fun<nm::EW_POW, int8_t, int16_t>, fun<nm::EW_POW, int8_t, int32_t>, fun<nm::EW_POW, int8_t, int64_t>, \
502
+ fun<nm::EW_POW, int8_t, float32_t>, fun<nm::EW_POW, int8_t, float64_t>, fun<nm::EW_POW, int8_t, nm::Complex64>, fun<nm::EW_POW, int8_t, nm::Complex128>, \
503
+ fun<nm::EW_POW, int8_t, nm::Rational32>, fun<nm::EW_POW, int8_t, nm::Rational64>, fun<nm::EW_POW, int8_t, nm::Rational128>, NULL}, \
504
+ \
505
+ {fun<nm::EW_POW, int16_t, uint8_t>, fun<nm::EW_POW, int16_t, int8_t>, fun<nm::EW_POW, int16_t, int16_t>, fun<nm::EW_POW, int16_t, int32_t>, fun<nm::EW_POW, int16_t, int64_t>, \
506
+ fun<nm::EW_POW, int16_t, float32_t>, fun<nm::EW_POW, int16_t, float64_t>, fun<nm::EW_POW, int16_t, nm::Complex64>, fun<nm::EW_POW, int16_t, nm::Complex128>, \
507
+ fun<nm::EW_POW, int16_t, nm::Rational32>, fun<nm::EW_POW, int16_t, nm::Rational64>, fun<nm::EW_POW, int16_t, nm::Rational128>, NULL}, \
508
+ \
509
+ {fun<nm::EW_POW, int32_t, uint8_t>, fun<nm::EW_POW, int32_t, int8_t>, fun<nm::EW_POW, int32_t, int16_t>, fun<nm::EW_POW, int32_t, int32_t>, fun<nm::EW_POW, int32_t, int64_t>, \
510
+ fun<nm::EW_POW, int32_t, float32_t>, fun<nm::EW_POW, int32_t, float64_t>, fun<nm::EW_POW, int32_t, nm::Complex64>, fun<nm::EW_POW, int32_t, nm::Complex128>, \
511
+ fun<nm::EW_POW, int32_t, nm::Rational32>, fun<nm::EW_POW, int32_t, nm::Rational64>, fun<nm::EW_POW, int32_t, nm::Rational128>, NULL}, \
512
+ \
513
+ {fun<nm::EW_POW, int64_t, uint8_t>, fun<nm::EW_POW, int64_t, int8_t>, fun<nm::EW_POW, int64_t, int16_t>, fun<nm::EW_POW, int64_t, int32_t>, fun<nm::EW_POW, int64_t, int64_t>, \
514
+ fun<nm::EW_POW, int64_t, float32_t>, fun<nm::EW_POW, int64_t, float64_t>, fun<nm::EW_POW, int64_t, nm::Complex64>, fun<nm::EW_POW, int64_t, nm::Complex128>, \
515
+ fun<nm::EW_POW, int64_t, nm::Rational32>, fun<nm::EW_POW, int64_t, nm::Rational64>, fun<nm::EW_POW, int64_t, nm::Rational128>, NULL}, \
516
+ \
517
+ {fun<nm::EW_POW, float32_t, uint8_t>, fun<nm::EW_POW, float32_t, int8_t>, fun<nm::EW_POW, float32_t, int16_t>, fun<nm::EW_POW, float32_t, int32_t>, fun<nm::EW_POW, float32_t, int64_t>, \
518
+ fun<nm::EW_POW, float32_t, float32_t>, fun<nm::EW_POW, float32_t, float64_t>, fun<nm::EW_POW, float32_t, nm::Complex64>, fun<nm::EW_POW, float32_t, nm::Complex128>, \
519
+ fun<nm::EW_POW, float32_t, nm::Rational32>, fun<nm::EW_POW, float32_t, nm::Rational64>, fun<nm::EW_POW, float32_t, nm::Rational128>, NULL}, \
520
+ \
521
+ {fun<nm::EW_POW, float64_t, uint8_t>, fun<nm::EW_POW, float64_t, int8_t>, fun<nm::EW_POW, float64_t, int16_t>, fun<nm::EW_POW, float64_t, int32_t>, fun<nm::EW_POW, float64_t, int64_t>, \
522
+ fun<nm::EW_POW, float64_t, float32_t>, fun<nm::EW_POW, float64_t, float64_t>, fun<nm::EW_POW, float64_t, nm::Complex64>, fun<nm::EW_POW, float64_t, nm::Complex128>, \
523
+ fun<nm::EW_POW, float64_t, nm::Rational32>, fun<nm::EW_POW, float64_t, nm::Rational64>, fun<nm::EW_POW, float64_t, nm::Rational128>, NULL}, \
524
+ \
525
+ {fun<nm::EW_POW, nm::Complex64, uint8_t>, fun<nm::EW_POW, nm::Complex64, int8_t>, fun<nm::EW_POW, nm::Complex64, int16_t>, fun<nm::EW_POW, nm::Complex64, int32_t>, \
526
+ fun<nm::EW_POW, nm::Complex64, int64_t>, fun<nm::EW_POW, nm::Complex64, float32_t>, fun<nm::EW_POW, nm::Complex64, float64_t>, fun<nm::EW_POW, nm::Complex64, nm::Complex64>, \
527
+ fun<nm::EW_POW, nm::Complex64, nm::Complex128>, fun<nm::EW_POW, nm::Complex64, nm::Rational32>, fun<nm::EW_POW, nm::Complex64, nm::Rational64>, \
528
+ fun<nm::EW_POW, nm::Complex64, nm::Rational128>, NULL}, \
529
+ \
530
+ {fun<nm::EW_POW, nm::Complex128, uint8_t>, fun<nm::EW_POW, nm::Complex128, int8_t>, fun<nm::EW_POW, nm::Complex128, int16_t>, fun<nm::EW_POW, nm::Complex128, int32_t>, \
531
+ fun<nm::EW_POW, nm::Complex128, int64_t>, fun<nm::EW_POW, nm::Complex128, float32_t>, fun<nm::EW_POW, nm::Complex128, float64_t>, fun<nm::EW_POW, nm::Complex128, nm::Complex64>, \
532
+ fun<nm::EW_POW, nm::Complex128, nm::Complex128>, fun<nm::EW_POW, nm::Complex128, nm::Rational32>, fun<nm::EW_POW, nm::Complex128, nm::Rational64>, \
533
+ fun<nm::EW_POW, nm::Complex128, nm::Rational128>, NULL}, \
534
+ \
535
+ {fun<nm::EW_POW, nm::Rational32, uint8_t>, fun<nm::EW_POW, nm::Rational32, int8_t>, fun<nm::EW_POW, nm::Rational32, int16_t>, fun<nm::EW_POW, nm::Rational32, int32_t>, \
536
+ fun<nm::EW_POW, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_POW, nm::Rational32, nm::Rational32>, fun<nm::EW_POW, nm::Rational32, nm::Rational64>, \
537
+ fun<nm::EW_POW, nm::Rational32, nm::Rational128>, NULL}, \
538
+ \
539
+ {fun<nm::EW_POW, nm::Rational64, uint8_t>, fun<nm::EW_POW, nm::Rational64, int8_t>, fun<nm::EW_POW, nm::Rational64, int16_t>, fun<nm::EW_POW, nm::Rational64, int32_t>, \
540
+ fun<nm::EW_POW, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_POW, nm::Rational64, nm::Rational32>, fun<nm::EW_POW, nm::Rational64, nm::Rational64>, \
541
+ fun<nm::EW_POW, nm::Rational64, nm::Rational128>, NULL}, \
542
+ \
543
+ {fun<nm::EW_POW, nm::Rational128, uint8_t>, fun<nm::EW_POW, nm::Rational128, int8_t>, fun<nm::EW_POW, nm::Rational128, int16_t>, fun<nm::EW_POW, nm::Rational128, int32_t>, \
544
+ fun<nm::EW_POW, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_POW, nm::Rational128, nm::Rational32>, fun<nm::EW_POW, nm::Rational128, nm::Rational64>, \
545
+ fun<nm::EW_POW, nm::Rational128, nm::Rational128>, NULL}, \
546
+ \
547
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_POW, nm::RubyObject, nm::RubyObject>} \
548
+ }, \
549
+ \
550
+ { \
551
+ {fun<nm::EW_MOD, uint8_t, uint8_t>, fun<nm::EW_MOD, uint8_t, int8_t>, fun<nm::EW_MOD, uint8_t, int16_t>, fun<nm::EW_MOD, uint8_t, int32_t>, fun<nm::EW_MOD, uint8_t, int64_t>, \
552
+ fun<nm::EW_MOD, uint8_t, float32_t>, fun<nm::EW_MOD, uint8_t, float64_t>, fun<nm::EW_MOD, uint8_t, nm::Complex64>, fun<nm::EW_MOD, uint8_t, nm::Complex128>, \
553
+ fun<nm::EW_MOD, uint8_t, nm::Rational32>, fun<nm::EW_MOD, uint8_t, nm::Rational64>, fun<nm::EW_MOD, uint8_t, nm::Rational128>, NULL}, \
554
+ \
555
+ {fun<nm::EW_MOD, int8_t, uint8_t>, fun<nm::EW_MOD, int8_t, int8_t>, fun<nm::EW_MOD, int8_t, int16_t>, fun<nm::EW_MOD, int8_t, int32_t>, fun<nm::EW_MOD, int8_t, int64_t>, \
556
+ fun<nm::EW_MOD, int8_t, float32_t>, fun<nm::EW_MOD, int8_t, float64_t>, fun<nm::EW_MOD, int8_t, nm::Complex64>, fun<nm::EW_MOD, int8_t, nm::Complex128>, \
557
+ fun<nm::EW_MOD, int8_t, nm::Rational32>, fun<nm::EW_MOD, int8_t, nm::Rational64>, fun<nm::EW_MOD, int8_t, nm::Rational128>, NULL}, \
558
+ \
559
+ {fun<nm::EW_MOD, int16_t, uint8_t>, fun<nm::EW_MOD, int16_t, int8_t>, fun<nm::EW_MOD, int16_t, int16_t>, fun<nm::EW_MOD, int16_t, int32_t>, fun<nm::EW_MOD, int16_t, int64_t>, \
560
+ fun<nm::EW_MOD, int16_t, float32_t>, fun<nm::EW_MOD, int16_t, float64_t>, fun<nm::EW_MOD, int16_t, nm::Complex64>, fun<nm::EW_MOD, int16_t, nm::Complex128>, \
561
+ fun<nm::EW_MOD, int16_t, nm::Rational32>, fun<nm::EW_MOD, int16_t, nm::Rational64>, fun<nm::EW_MOD, int16_t, nm::Rational128>, NULL}, \
562
+ \
563
+ {fun<nm::EW_MOD, int32_t, uint8_t>, fun<nm::EW_MOD, int32_t, int8_t>, fun<nm::EW_MOD, int32_t, int16_t>, fun<nm::EW_MOD, int32_t, int32_t>, fun<nm::EW_MOD, int32_t, int64_t>, \
564
+ fun<nm::EW_MOD, int32_t, float32_t>, fun<nm::EW_MOD, int32_t, float64_t>, fun<nm::EW_MOD, int32_t, nm::Complex64>, fun<nm::EW_MOD, int32_t, nm::Complex128>, \
565
+ fun<nm::EW_MOD, int32_t, nm::Rational32>, fun<nm::EW_MOD, int32_t, nm::Rational64>, fun<nm::EW_MOD, int32_t, nm::Rational128>, NULL}, \
566
+ \
567
+ {fun<nm::EW_MOD, int64_t, uint8_t>, fun<nm::EW_MOD, int64_t, int8_t>, fun<nm::EW_MOD, int64_t, int16_t>, fun<nm::EW_MOD, int64_t, int32_t>, fun<nm::EW_MOD, int64_t, int64_t>, \
568
+ fun<nm::EW_MOD, int64_t, float32_t>, fun<nm::EW_MOD, int64_t, float64_t>, fun<nm::EW_MOD, int64_t, nm::Complex64>, fun<nm::EW_MOD, int64_t, nm::Complex128>, \
569
+ fun<nm::EW_MOD, int64_t, nm::Rational32>, fun<nm::EW_MOD, int64_t, nm::Rational64>, fun<nm::EW_MOD, int64_t, nm::Rational128>, NULL}, \
570
+ \
571
+ {fun<nm::EW_MOD, float32_t, uint8_t>, fun<nm::EW_MOD, float32_t, int8_t>, fun<nm::EW_MOD, float32_t, int16_t>, fun<nm::EW_MOD, float32_t, int32_t>, fun<nm::EW_MOD, float32_t, int64_t>, \
572
+ fun<nm::EW_MOD, float32_t, float32_t>, fun<nm::EW_MOD, float32_t, float64_t>, fun<nm::EW_MOD, float32_t, nm::Complex64>, fun<nm::EW_MOD, float32_t, nm::Complex128>, \
573
+ fun<nm::EW_MOD, float32_t, nm::Rational32>, fun<nm::EW_MOD, float32_t, nm::Rational64>, fun<nm::EW_MOD, float32_t, nm::Rational128>, NULL}, \
574
+ \
575
+ {fun<nm::EW_MOD, float64_t, uint8_t>, fun<nm::EW_MOD, float64_t, int8_t>, fun<nm::EW_MOD, float64_t, int16_t>, fun<nm::EW_MOD, float64_t, int32_t>, fun<nm::EW_MOD, float64_t, int64_t>, \
576
+ fun<nm::EW_MOD, float64_t, float32_t>, fun<nm::EW_MOD, float64_t, float64_t>, fun<nm::EW_MOD, float64_t, nm::Complex64>, fun<nm::EW_MOD, float64_t, nm::Complex128>, \
577
+ fun<nm::EW_MOD, float64_t, nm::Rational32>, fun<nm::EW_MOD, float64_t, nm::Rational64>, fun<nm::EW_MOD, float64_t, nm::Rational128>, NULL}, \
578
+ \
579
+ {fun<nm::EW_MOD, nm::Complex64, uint8_t>, fun<nm::EW_MOD, nm::Complex64, int8_t>, fun<nm::EW_MOD, nm::Complex64, int16_t>, fun<nm::EW_MOD, nm::Complex64, int32_t>, \
580
+ fun<nm::EW_MOD, nm::Complex64, int64_t>, fun<nm::EW_MOD, nm::Complex64, float32_t>, fun<nm::EW_MOD, nm::Complex64, float64_t>, fun<nm::EW_MOD, nm::Complex64, nm::Complex64>, \
581
+ fun<nm::EW_MOD, nm::Complex64, nm::Complex128>, fun<nm::EW_MOD, nm::Complex64, nm::Rational32>, fun<nm::EW_MOD, nm::Complex64, nm::Rational64>, \
582
+ fun<nm::EW_MOD, nm::Complex64, nm::Rational128>, NULL}, \
583
+ \
584
+ {fun<nm::EW_MOD, nm::Complex128, uint8_t>, fun<nm::EW_MOD, nm::Complex128, int8_t>, fun<nm::EW_MOD, nm::Complex128, int16_t>, fun<nm::EW_MOD, nm::Complex128, int32_t>, \
585
+ fun<nm::EW_MOD, nm::Complex128, int64_t>, fun<nm::EW_MOD, nm::Complex128, float32_t>, fun<nm::EW_MOD, nm::Complex128, float64_t>, fun<nm::EW_MOD, nm::Complex128, nm::Complex64>, \
586
+ fun<nm::EW_MOD, nm::Complex128, nm::Complex128>, fun<nm::EW_MOD, nm::Complex128, nm::Rational32>, fun<nm::EW_MOD, nm::Complex128, nm::Rational64>, \
587
+ fun<nm::EW_MOD, nm::Complex128, nm::Rational128>, NULL}, \
588
+ \
589
+ {fun<nm::EW_MOD, nm::Rational32, uint8_t>, fun<nm::EW_MOD, nm::Rational32, int8_t>, fun<nm::EW_MOD, nm::Rational32, int16_t>, fun<nm::EW_MOD, nm::Rational32, int32_t>, \
590
+ fun<nm::EW_MOD, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MOD, nm::Rational32, nm::Rational32>, fun<nm::EW_MOD, nm::Rational32, nm::Rational64>, \
591
+ fun<nm::EW_MOD, nm::Rational32, nm::Rational128>, NULL}, \
592
+ \
593
+ {fun<nm::EW_MOD, nm::Rational64, uint8_t>, fun<nm::EW_MOD, nm::Rational64, int8_t>, fun<nm::EW_MOD, nm::Rational64, int16_t>, fun<nm::EW_MOD, nm::Rational64, int32_t>, \
594
+ fun<nm::EW_MOD, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MOD, nm::Rational64, nm::Rational32>, fun<nm::EW_MOD, nm::Rational64, nm::Rational64>, \
595
+ fun<nm::EW_MOD, nm::Rational64, nm::Rational128>, NULL}, \
596
+ \
597
+ {fun<nm::EW_MOD, nm::Rational128, uint8_t>, fun<nm::EW_MOD, nm::Rational128, int8_t>, fun<nm::EW_MOD, nm::Rational128, int16_t>, fun<nm::EW_MOD, nm::Rational128, int32_t>, \
598
+ fun<nm::EW_MOD, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_MOD, nm::Rational128, nm::Rational32>, fun<nm::EW_MOD, nm::Rational128, nm::Rational64>, \
599
+ fun<nm::EW_MOD, nm::Rational128, nm::Rational128>, NULL}, \
600
+ \
601
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_MOD, nm::RubyObject, nm::RubyObject>} \
602
+ }, \
603
+ \
604
+ { \
605
+ {fun<nm::EW_EQEQ, uint8_t, uint8_t>, fun<nm::EW_EQEQ, uint8_t, int8_t>, fun<nm::EW_EQEQ, uint8_t, int16_t>, fun<nm::EW_EQEQ, uint8_t, int32_t>, \
606
+ fun<nm::EW_EQEQ, uint8_t, int64_t>, fun<nm::EW_EQEQ, uint8_t, float32_t>, fun<nm::EW_EQEQ, uint8_t, float64_t>, fun<nm::EW_EQEQ, uint8_t, nm::Complex64>, \
607
+ fun<nm::EW_EQEQ, uint8_t, nm::Complex128>, fun<nm::EW_EQEQ, uint8_t, nm::Rational32>, fun<nm::EW_EQEQ, uint8_t, nm::Rational64>, \
608
+ fun<nm::EW_EQEQ, uint8_t, nm::Rational128>, NULL}, \
609
+ {fun<nm::EW_EQEQ, int8_t, uint8_t>, fun<nm::EW_EQEQ, int8_t, int8_t>, fun<nm::EW_EQEQ, int8_t, int16_t>, fun<nm::EW_EQEQ, int8_t, int32_t>, fun<nm::EW_EQEQ, int8_t, int64_t>, fun<nm::EW_EQEQ, int8_t, float32_t>, fun<nm::EW_EQEQ, int8_t, float64_t>, fun<nm::EW_EQEQ, int8_t, nm::Complex64>, fun<nm::EW_EQEQ, int8_t, nm::Complex128>, fun<nm::EW_EQEQ, int8_t, nm::Rational32>, fun<nm::EW_EQEQ, int8_t, nm::Rational64>, fun<nm::EW_EQEQ, int8_t, nm::Rational128>, NULL}, \
610
+ {fun<nm::EW_EQEQ, int16_t, uint8_t>, fun<nm::EW_EQEQ, int16_t, int8_t>, fun<nm::EW_EQEQ, int16_t, int16_t>, fun<nm::EW_EQEQ, int16_t, int32_t>, fun<nm::EW_EQEQ, int16_t, int64_t>, fun<nm::EW_EQEQ, int16_t, float32_t>, fun<nm::EW_EQEQ, int16_t, float64_t>, fun<nm::EW_EQEQ, int16_t, nm::Complex64>, fun<nm::EW_EQEQ, int16_t, nm::Complex128>, fun<nm::EW_EQEQ, int16_t, nm::Rational32>, fun<nm::EW_EQEQ, int16_t, nm::Rational64>, fun<nm::EW_EQEQ, int16_t, nm::Rational128>, NULL}, \
611
+ {fun<nm::EW_EQEQ, int32_t, uint8_t>, fun<nm::EW_EQEQ, int32_t, int8_t>, fun<nm::EW_EQEQ, int32_t, int16_t>, fun<nm::EW_EQEQ, int32_t, int32_t>, fun<nm::EW_EQEQ, int32_t, int64_t>, fun<nm::EW_EQEQ, int32_t, float32_t>, fun<nm::EW_EQEQ, int32_t, float64_t>, fun<nm::EW_EQEQ, int32_t, nm::Complex64>, fun<nm::EW_EQEQ, int32_t, nm::Complex128>, fun<nm::EW_EQEQ, int32_t, nm::Rational32>, fun<nm::EW_EQEQ, int32_t, nm::Rational64>, fun<nm::EW_EQEQ, int32_t, nm::Rational128>, NULL}, \
612
+ {fun<nm::EW_EQEQ, int64_t, uint8_t>, fun<nm::EW_EQEQ, int64_t, int8_t>, fun<nm::EW_EQEQ, int64_t, int16_t>, fun<nm::EW_EQEQ, int64_t, int32_t>, fun<nm::EW_EQEQ, int64_t, int64_t>, fun<nm::EW_EQEQ, int64_t, float32_t>, fun<nm::EW_EQEQ, int64_t, float64_t>, fun<nm::EW_EQEQ, int64_t, nm::Complex64>, fun<nm::EW_EQEQ, int64_t, nm::Complex128>, fun<nm::EW_EQEQ, int64_t, nm::Rational32>, fun<nm::EW_EQEQ, int64_t, nm::Rational64>, fun<nm::EW_EQEQ, int64_t, nm::Rational128>, NULL}, \
613
+ {fun<nm::EW_EQEQ, float32_t, uint8_t>, fun<nm::EW_EQEQ, float32_t, int8_t>, fun<nm::EW_EQEQ, float32_t, int16_t>, fun<nm::EW_EQEQ, float32_t, int32_t>, fun<nm::EW_EQEQ, float32_t, int64_t>, fun<nm::EW_EQEQ, float32_t, float32_t>, fun<nm::EW_EQEQ, float32_t, float64_t>, fun<nm::EW_EQEQ, float32_t, nm::Complex64>, fun<nm::EW_EQEQ, float32_t, nm::Complex128>, fun<nm::EW_EQEQ, float32_t, nm::Rational32>, fun<nm::EW_EQEQ, float32_t, nm::Rational64>, fun<nm::EW_EQEQ, float32_t, nm::Rational128>, NULL}, \
614
+ {fun<nm::EW_EQEQ, float64_t, uint8_t>, fun<nm::EW_EQEQ, float64_t, int8_t>, fun<nm::EW_EQEQ, float64_t, int16_t>, fun<nm::EW_EQEQ, float64_t, int32_t>, fun<nm::EW_EQEQ, float64_t, int64_t>, fun<nm::EW_EQEQ, float64_t, float32_t>, fun<nm::EW_EQEQ, float64_t, float64_t>, fun<nm::EW_EQEQ, float64_t, nm::Complex64>, fun<nm::EW_EQEQ, float64_t, nm::Complex128>, fun<nm::EW_EQEQ, float64_t, nm::Rational32>, fun<nm::EW_EQEQ, float64_t, nm::Rational64>, fun<nm::EW_EQEQ, float64_t, nm::Rational128>, NULL}, \
615
+ {fun<nm::EW_EQEQ, nm::Complex64, uint8_t>, fun<nm::EW_EQEQ, nm::Complex64, int8_t>, fun<nm::EW_EQEQ, nm::Complex64, int16_t>, fun<nm::EW_EQEQ, nm::Complex64, int32_t>, fun<nm::EW_EQEQ, nm::Complex64, int64_t>, fun<nm::EW_EQEQ, nm::Complex64, float32_t>, fun<nm::EW_EQEQ, nm::Complex64, float64_t>, fun<nm::EW_EQEQ, nm::Complex64, nm::Complex64>, fun<nm::EW_EQEQ, nm::Complex64, nm::Complex128>, fun<nm::EW_EQEQ, nm::Complex64, nm::Rational32>, fun<nm::EW_EQEQ, nm::Complex64, nm::Rational64>, fun<nm::EW_EQEQ, nm::Complex64, nm::Rational128>, NULL}, \
616
+ {fun<nm::EW_EQEQ, nm::Complex128, uint8_t>, fun<nm::EW_EQEQ, nm::Complex128, int8_t>, fun<nm::EW_EQEQ, nm::Complex128, int16_t>, fun<nm::EW_EQEQ, nm::Complex128, int32_t>, fun<nm::EW_EQEQ, nm::Complex128, int64_t>, fun<nm::EW_EQEQ, nm::Complex128, float32_t>, fun<nm::EW_EQEQ, nm::Complex128, float64_t>, fun<nm::EW_EQEQ, nm::Complex128, nm::Complex64>, fun<nm::EW_EQEQ, nm::Complex128, nm::Complex128>, fun<nm::EW_EQEQ, nm::Complex128, nm::Rational32>, fun<nm::EW_EQEQ, nm::Complex128, nm::Rational64>, fun<nm::EW_EQEQ, nm::Complex128, nm::Rational128>, NULL}, \
617
+ {fun<nm::EW_EQEQ, nm::Rational32, uint8_t>, fun<nm::EW_EQEQ, nm::Rational32, int8_t>, fun<nm::EW_EQEQ, nm::Rational32, int16_t>, fun<nm::EW_EQEQ, nm::Rational32, int32_t>, fun<nm::EW_EQEQ, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_EQEQ, nm::Rational32, nm::Rational32>, fun<nm::EW_EQEQ, nm::Rational32, nm::Rational64>, fun<nm::EW_EQEQ, nm::Rational32, nm::Rational128>, NULL}, \
618
+ {fun<nm::EW_EQEQ, nm::Rational64, uint8_t>, fun<nm::EW_EQEQ, nm::Rational64, int8_t>, fun<nm::EW_EQEQ, nm::Rational64, int16_t>, fun<nm::EW_EQEQ, nm::Rational64, int32_t>, fun<nm::EW_EQEQ, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_EQEQ, nm::Rational64, nm::Rational32>, fun<nm::EW_EQEQ, nm::Rational64, nm::Rational64>, fun<nm::EW_EQEQ, nm::Rational64, nm::Rational128>, NULL}, \
619
+ {fun<nm::EW_EQEQ, nm::Rational128, uint8_t>, fun<nm::EW_EQEQ, nm::Rational128, int8_t>, fun<nm::EW_EQEQ, nm::Rational128, int16_t>, fun<nm::EW_EQEQ, nm::Rational128, int32_t>, fun<nm::EW_EQEQ, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_EQEQ, nm::Rational128, nm::Rational32>, fun<nm::EW_EQEQ, nm::Rational128, nm::Rational64>, fun<nm::EW_EQEQ, nm::Rational128, nm::Rational128>, NULL}, \
620
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_EQEQ, nm::RubyObject, nm::RubyObject>} \
621
+ }, \
622
+ {{fun<nm::EW_NEQ, uint8_t, uint8_t>, fun<nm::EW_NEQ, uint8_t, int8_t>, fun<nm::EW_NEQ, uint8_t, int16_t>, fun<nm::EW_NEQ, uint8_t, int32_t>, fun<nm::EW_NEQ, uint8_t, int64_t>, fun<nm::EW_NEQ, uint8_t, float32_t>, fun<nm::EW_NEQ, uint8_t, float64_t>, fun<nm::EW_NEQ, uint8_t, nm::Complex64>, fun<nm::EW_NEQ, uint8_t, nm::Complex128>, fun<nm::EW_NEQ, uint8_t, nm::Rational32>, fun<nm::EW_NEQ, uint8_t, nm::Rational64>, fun<nm::EW_NEQ, uint8_t, nm::Rational128>, NULL}, \
623
+ {fun<nm::EW_NEQ, int8_t, uint8_t>, fun<nm::EW_NEQ, int8_t, int8_t>, fun<nm::EW_NEQ, int8_t, int16_t>, fun<nm::EW_NEQ, int8_t, int32_t>, fun<nm::EW_NEQ, int8_t, int64_t>, fun<nm::EW_NEQ, int8_t, float32_t>, fun<nm::EW_NEQ, int8_t, float64_t>, fun<nm::EW_NEQ, int8_t, nm::Complex64>, fun<nm::EW_NEQ, int8_t, nm::Complex128>, fun<nm::EW_NEQ, int8_t, nm::Rational32>, fun<nm::EW_NEQ, int8_t, nm::Rational64>, fun<nm::EW_NEQ, int8_t, nm::Rational128>, NULL}, \
624
+ {fun<nm::EW_NEQ, int16_t, uint8_t>, fun<nm::EW_NEQ, int16_t, int8_t>, fun<nm::EW_NEQ, int16_t, int16_t>, fun<nm::EW_NEQ, int16_t, int32_t>, fun<nm::EW_NEQ, int16_t, int64_t>, fun<nm::EW_NEQ, int16_t, float32_t>, fun<nm::EW_NEQ, int16_t, float64_t>, fun<nm::EW_NEQ, int16_t, nm::Complex64>, fun<nm::EW_NEQ, int16_t, nm::Complex128>, fun<nm::EW_NEQ, int16_t, nm::Rational32>, fun<nm::EW_NEQ, int16_t, nm::Rational64>, fun<nm::EW_NEQ, int16_t, nm::Rational128>, NULL}, \
625
+ {fun<nm::EW_NEQ, int32_t, uint8_t>, fun<nm::EW_NEQ, int32_t, int8_t>, fun<nm::EW_NEQ, int32_t, int16_t>, fun<nm::EW_NEQ, int32_t, int32_t>, fun<nm::EW_NEQ, int32_t, int64_t>, fun<nm::EW_NEQ, int32_t, float32_t>, fun<nm::EW_NEQ, int32_t, float64_t>, fun<nm::EW_NEQ, int32_t, nm::Complex64>, fun<nm::EW_NEQ, int32_t, nm::Complex128>, fun<nm::EW_NEQ, int32_t, nm::Rational32>, fun<nm::EW_NEQ, int32_t, nm::Rational64>, fun<nm::EW_NEQ, int32_t, nm::Rational128>, NULL}, \
626
+ {fun<nm::EW_NEQ, int64_t, uint8_t>, fun<nm::EW_NEQ, int64_t, int8_t>, fun<nm::EW_NEQ, int64_t, int16_t>, fun<nm::EW_NEQ, int64_t, int32_t>, fun<nm::EW_NEQ, int64_t, int64_t>, fun<nm::EW_NEQ, int64_t, float32_t>, fun<nm::EW_NEQ, int64_t, float64_t>, fun<nm::EW_NEQ, int64_t, nm::Complex64>, fun<nm::EW_NEQ, int64_t, nm::Complex128>, fun<nm::EW_NEQ, int64_t, nm::Rational32>, fun<nm::EW_NEQ, int64_t, nm::Rational64>, fun<nm::EW_NEQ, int64_t, nm::Rational128>, NULL}, \
627
+ {fun<nm::EW_NEQ, float32_t, uint8_t>, fun<nm::EW_NEQ, float32_t, int8_t>, fun<nm::EW_NEQ, float32_t, int16_t>, fun<nm::EW_NEQ, float32_t, int32_t>, fun<nm::EW_NEQ, float32_t, int64_t>, fun<nm::EW_NEQ, float32_t, float32_t>, fun<nm::EW_NEQ, float32_t, float64_t>, fun<nm::EW_NEQ, float32_t, nm::Complex64>, fun<nm::EW_NEQ, float32_t, nm::Complex128>, fun<nm::EW_NEQ, float32_t, nm::Rational32>, fun<nm::EW_NEQ, float32_t, nm::Rational64>, fun<nm::EW_NEQ, float32_t, nm::Rational128>, NULL}, \
628
+ {fun<nm::EW_NEQ, float64_t, uint8_t>, fun<nm::EW_NEQ, float64_t, int8_t>, fun<nm::EW_NEQ, float64_t, int16_t>, fun<nm::EW_NEQ, float64_t, int32_t>, fun<nm::EW_NEQ, float64_t, int64_t>, fun<nm::EW_NEQ, float64_t, float32_t>, fun<nm::EW_NEQ, float64_t, float64_t>, fun<nm::EW_NEQ, float64_t, nm::Complex64>, fun<nm::EW_NEQ, float64_t, nm::Complex128>, fun<nm::EW_NEQ, float64_t, nm::Rational32>, fun<nm::EW_NEQ, float64_t, nm::Rational64>, fun<nm::EW_NEQ, float64_t, nm::Rational128>, NULL}, \
629
+ {fun<nm::EW_NEQ, nm::Complex64, uint8_t>, fun<nm::EW_NEQ, nm::Complex64, int8_t>, fun<nm::EW_NEQ, nm::Complex64, int16_t>, fun<nm::EW_NEQ, nm::Complex64, int32_t>, fun<nm::EW_NEQ, nm::Complex64, int64_t>, fun<nm::EW_NEQ, nm::Complex64, float32_t>, fun<nm::EW_NEQ, nm::Complex64, float64_t>, fun<nm::EW_NEQ, nm::Complex64, nm::Complex64>, fun<nm::EW_NEQ, nm::Complex64, nm::Complex128>, fun<nm::EW_NEQ, nm::Complex64, nm::Rational32>, fun<nm::EW_NEQ, nm::Complex64, nm::Rational64>, fun<nm::EW_NEQ, nm::Complex64, nm::Rational128>, NULL}, \
630
+ {fun<nm::EW_NEQ, nm::Complex128, uint8_t>, fun<nm::EW_NEQ, nm::Complex128, int8_t>, fun<nm::EW_NEQ, nm::Complex128, int16_t>, fun<nm::EW_NEQ, nm::Complex128, int32_t>, fun<nm::EW_NEQ, nm::Complex128, int64_t>, fun<nm::EW_NEQ, nm::Complex128, float32_t>, fun<nm::EW_NEQ, nm::Complex128, float64_t>, fun<nm::EW_NEQ, nm::Complex128, nm::Complex64>, fun<nm::EW_NEQ, nm::Complex128, nm::Complex128>, fun<nm::EW_NEQ, nm::Complex128, nm::Rational32>, fun<nm::EW_NEQ, nm::Complex128, nm::Rational64>, fun<nm::EW_NEQ, nm::Complex128, nm::Rational128>, NULL}, \
631
+ {fun<nm::EW_NEQ, nm::Rational32, uint8_t>, fun<nm::EW_NEQ, nm::Rational32, int8_t>, fun<nm::EW_NEQ, nm::Rational32, int16_t>, fun<nm::EW_NEQ, nm::Rational32, int32_t>, fun<nm::EW_NEQ, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_NEQ, nm::Rational32, nm::Rational32>, fun<nm::EW_NEQ, nm::Rational32, nm::Rational64>, fun<nm::EW_NEQ, nm::Rational32, nm::Rational128>, NULL}, \
632
+ {fun<nm::EW_NEQ, nm::Rational64, uint8_t>, fun<nm::EW_NEQ, nm::Rational64, int8_t>, fun<nm::EW_NEQ, nm::Rational64, int16_t>, fun<nm::EW_NEQ, nm::Rational64, int32_t>, fun<nm::EW_NEQ, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_NEQ, nm::Rational64, nm::Rational32>, fun<nm::EW_NEQ, nm::Rational64, nm::Rational64>, fun<nm::EW_NEQ, nm::Rational64, nm::Rational128>, NULL}, \
633
+ {fun<nm::EW_NEQ, nm::Rational128, uint8_t>, fun<nm::EW_NEQ, nm::Rational128, int8_t>, fun<nm::EW_NEQ, nm::Rational128, int16_t>, fun<nm::EW_NEQ, nm::Rational128, int32_t>, fun<nm::EW_NEQ, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_NEQ, nm::Rational128, nm::Rational32>, fun<nm::EW_NEQ, nm::Rational128, nm::Rational64>, fun<nm::EW_NEQ, nm::Rational128, nm::Rational128>, NULL}, \
634
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_NEQ, nm::RubyObject, nm::RubyObject>}}, \
635
+ {{fun<nm::EW_LT, uint8_t, uint8_t>, fun<nm::EW_LT, uint8_t, int8_t>, fun<nm::EW_LT, uint8_t, int16_t>, fun<nm::EW_LT, uint8_t, int32_t>, fun<nm::EW_LT, uint8_t, int64_t>, fun<nm::EW_LT, uint8_t, float32_t>, fun<nm::EW_LT, uint8_t, float64_t>, fun<nm::EW_LT, uint8_t, nm::Complex64>, fun<nm::EW_LT, uint8_t, nm::Complex128>, fun<nm::EW_LT, uint8_t, nm::Rational32>, fun<nm::EW_LT, uint8_t, nm::Rational64>, fun<nm::EW_LT, uint8_t, nm::Rational128>, NULL}, \
636
+ {fun<nm::EW_LT, int8_t, uint8_t>, fun<nm::EW_LT, int8_t, int8_t>, fun<nm::EW_LT, int8_t, int16_t>, fun<nm::EW_LT, int8_t, int32_t>, fun<nm::EW_LT, int8_t, int64_t>, fun<nm::EW_LT, int8_t, float32_t>, fun<nm::EW_LT, int8_t, float64_t>, fun<nm::EW_LT, int8_t, nm::Complex64>, fun<nm::EW_LT, int8_t, nm::Complex128>, fun<nm::EW_LT, int8_t, nm::Rational32>, fun<nm::EW_LT, int8_t, nm::Rational64>, fun<nm::EW_LT, int8_t, nm::Rational128>, NULL}, \
637
+ {fun<nm::EW_LT, int16_t, uint8_t>, fun<nm::EW_LT, int16_t, int8_t>, fun<nm::EW_LT, int16_t, int16_t>, fun<nm::EW_LT, int16_t, int32_t>, fun<nm::EW_LT, int16_t, int64_t>, fun<nm::EW_LT, int16_t, float32_t>, fun<nm::EW_LT, int16_t, float64_t>, fun<nm::EW_LT, int16_t, nm::Complex64>, fun<nm::EW_LT, int16_t, nm::Complex128>, fun<nm::EW_LT, int16_t, nm::Rational32>, fun<nm::EW_LT, int16_t, nm::Rational64>, fun<nm::EW_LT, int16_t, nm::Rational128>, NULL}, \
638
+ {fun<nm::EW_LT, int32_t, uint8_t>, fun<nm::EW_LT, int32_t, int8_t>, fun<nm::EW_LT, int32_t, int16_t>, fun<nm::EW_LT, int32_t, int32_t>, fun<nm::EW_LT, int32_t, int64_t>, fun<nm::EW_LT, int32_t, float32_t>, fun<nm::EW_LT, int32_t, float64_t>, fun<nm::EW_LT, int32_t, nm::Complex64>, fun<nm::EW_LT, int32_t, nm::Complex128>, fun<nm::EW_LT, int32_t, nm::Rational32>, fun<nm::EW_LT, int32_t, nm::Rational64>, fun<nm::EW_LT, int32_t, nm::Rational128>, NULL}, \
639
+ {fun<nm::EW_LT, int64_t, uint8_t>, fun<nm::EW_LT, int64_t, int8_t>, fun<nm::EW_LT, int64_t, int16_t>, fun<nm::EW_LT, int64_t, int32_t>, fun<nm::EW_LT, int64_t, int64_t>, fun<nm::EW_LT, int64_t, float32_t>, fun<nm::EW_LT, int64_t, float64_t>, fun<nm::EW_LT, int64_t, nm::Complex64>, fun<nm::EW_LT, int64_t, nm::Complex128>, fun<nm::EW_LT, int64_t, nm::Rational32>, fun<nm::EW_LT, int64_t, nm::Rational64>, fun<nm::EW_LT, int64_t, nm::Rational128>, NULL}, \
640
+ {fun<nm::EW_LT, float32_t, uint8_t>, fun<nm::EW_LT, float32_t, int8_t>, fun<nm::EW_LT, float32_t, int16_t>, fun<nm::EW_LT, float32_t, int32_t>, fun<nm::EW_LT, float32_t, int64_t>, fun<nm::EW_LT, float32_t, float32_t>, fun<nm::EW_LT, float32_t, float64_t>, fun<nm::EW_LT, float32_t, nm::Complex64>, fun<nm::EW_LT, float32_t, nm::Complex128>, fun<nm::EW_LT, float32_t, nm::Rational32>, fun<nm::EW_LT, float32_t, nm::Rational64>, fun<nm::EW_LT, float32_t, nm::Rational128>, NULL}, \
641
+ {fun<nm::EW_LT, float64_t, uint8_t>, fun<nm::EW_LT, float64_t, int8_t>, fun<nm::EW_LT, float64_t, int16_t>, fun<nm::EW_LT, float64_t, int32_t>, fun<nm::EW_LT, float64_t, int64_t>, fun<nm::EW_LT, float64_t, float32_t>, fun<nm::EW_LT, float64_t, float64_t>, fun<nm::EW_LT, float64_t, nm::Complex64>, fun<nm::EW_LT, float64_t, nm::Complex128>, fun<nm::EW_LT, float64_t, nm::Rational32>, fun<nm::EW_LT, float64_t, nm::Rational64>, fun<nm::EW_LT, float64_t, nm::Rational128>, NULL}, \
642
+ {fun<nm::EW_LT, nm::Complex64, uint8_t>, fun<nm::EW_LT, nm::Complex64, int8_t>, fun<nm::EW_LT, nm::Complex64, int16_t>, fun<nm::EW_LT, nm::Complex64, int32_t>, fun<nm::EW_LT, nm::Complex64, int64_t>, fun<nm::EW_LT, nm::Complex64, float32_t>, fun<nm::EW_LT, nm::Complex64, float64_t>, fun<nm::EW_LT, nm::Complex64, nm::Complex64>, fun<nm::EW_LT, nm::Complex64, nm::Complex128>, fun<nm::EW_LT, nm::Complex64, nm::Rational32>, fun<nm::EW_LT, nm::Complex64, nm::Rational64>, fun<nm::EW_LT, nm::Complex64, nm::Rational128>, NULL}, \
643
+ {fun<nm::EW_LT, nm::Complex128, uint8_t>, fun<nm::EW_LT, nm::Complex128, int8_t>, fun<nm::EW_LT, nm::Complex128, int16_t>, fun<nm::EW_LT, nm::Complex128, int32_t>, fun<nm::EW_LT, nm::Complex128, int64_t>, fun<nm::EW_LT, nm::Complex128, float32_t>, fun<nm::EW_LT, nm::Complex128, float64_t>, fun<nm::EW_LT, nm::Complex128, nm::Complex64>, fun<nm::EW_LT, nm::Complex128, nm::Complex128>, fun<nm::EW_LT, nm::Complex128, nm::Rational32>, fun<nm::EW_LT, nm::Complex128, nm::Rational64>, fun<nm::EW_LT, nm::Complex128, nm::Rational128>, NULL}, \
644
+ {fun<nm::EW_LT, nm::Rational32, uint8_t>, fun<nm::EW_LT, nm::Rational32, int8_t>, fun<nm::EW_LT, nm::Rational32, int16_t>, fun<nm::EW_LT, nm::Rational32, int32_t>, fun<nm::EW_LT, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LT, nm::Rational32, nm::Rational32>, fun<nm::EW_LT, nm::Rational32, nm::Rational64>, fun<nm::EW_LT, nm::Rational32, nm::Rational128>, NULL}, \
645
+ {fun<nm::EW_LT, nm::Rational64, uint8_t>, fun<nm::EW_LT, nm::Rational64, int8_t>, fun<nm::EW_LT, nm::Rational64, int16_t>, fun<nm::EW_LT, nm::Rational64, int32_t>, fun<nm::EW_LT, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LT, nm::Rational64, nm::Rational32>, fun<nm::EW_LT, nm::Rational64, nm::Rational64>, fun<nm::EW_LT, nm::Rational64, nm::Rational128>, NULL}, \
646
+ {fun<nm::EW_LT, nm::Rational128, uint8_t>, fun<nm::EW_LT, nm::Rational128, int8_t>, fun<nm::EW_LT, nm::Rational128, int16_t>, fun<nm::EW_LT, nm::Rational128, int32_t>, fun<nm::EW_LT, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LT, nm::Rational128, nm::Rational32>, fun<nm::EW_LT, nm::Rational128, nm::Rational64>, fun<nm::EW_LT, nm::Rational128, nm::Rational128>, NULL}, \
647
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_LT, nm::RubyObject, nm::RubyObject>}}, \
648
+ {{fun<nm::EW_GT, uint8_t, uint8_t>, fun<nm::EW_GT, uint8_t, int8_t>, fun<nm::EW_GT, uint8_t, int16_t>, fun<nm::EW_GT, uint8_t, int32_t>, fun<nm::EW_GT, uint8_t, int64_t>, fun<nm::EW_GT, uint8_t, float32_t>, fun<nm::EW_GT, uint8_t, float64_t>, fun<nm::EW_GT, uint8_t, nm::Complex64>, fun<nm::EW_GT, uint8_t, nm::Complex128>, fun<nm::EW_GT, uint8_t, nm::Rational32>, fun<nm::EW_GT, uint8_t, nm::Rational64>, fun<nm::EW_GT, uint8_t, nm::Rational128>, NULL}, \
649
+ {fun<nm::EW_GT, int8_t, uint8_t>, fun<nm::EW_GT, int8_t, int8_t>, fun<nm::EW_GT, int8_t, int16_t>, fun<nm::EW_GT, int8_t, int32_t>, fun<nm::EW_GT, int8_t, int64_t>, fun<nm::EW_GT, int8_t, float32_t>, fun<nm::EW_GT, int8_t, float64_t>, fun<nm::EW_GT, int8_t, nm::Complex64>, fun<nm::EW_GT, int8_t, nm::Complex128>, fun<nm::EW_GT, int8_t, nm::Rational32>, fun<nm::EW_GT, int8_t, nm::Rational64>, fun<nm::EW_GT, int8_t, nm::Rational128>, NULL}, \
650
+ {fun<nm::EW_GT, int16_t, uint8_t>, fun<nm::EW_GT, int16_t, int8_t>, fun<nm::EW_GT, int16_t, int16_t>, fun<nm::EW_GT, int16_t, int32_t>, fun<nm::EW_GT, int16_t, int64_t>, fun<nm::EW_GT, int16_t, float32_t>, fun<nm::EW_GT, int16_t, float64_t>, fun<nm::EW_GT, int16_t, nm::Complex64>, fun<nm::EW_GT, int16_t, nm::Complex128>, fun<nm::EW_GT, int16_t, nm::Rational32>, fun<nm::EW_GT, int16_t, nm::Rational64>, fun<nm::EW_GT, int16_t, nm::Rational128>, NULL}, \
651
+ {fun<nm::EW_GT, int32_t, uint8_t>, fun<nm::EW_GT, int32_t, int8_t>, fun<nm::EW_GT, int32_t, int16_t>, fun<nm::EW_GT, int32_t, int32_t>, fun<nm::EW_GT, int32_t, int64_t>, fun<nm::EW_GT, int32_t, float32_t>, fun<nm::EW_GT, int32_t, float64_t>, fun<nm::EW_GT, int32_t, nm::Complex64>, fun<nm::EW_GT, int32_t, nm::Complex128>, fun<nm::EW_GT, int32_t, nm::Rational32>, fun<nm::EW_GT, int32_t, nm::Rational64>, fun<nm::EW_GT, int32_t, nm::Rational128>, NULL}, \
652
+ {fun<nm::EW_GT, int64_t, uint8_t>, fun<nm::EW_GT, int64_t, int8_t>, fun<nm::EW_GT, int64_t, int16_t>, fun<nm::EW_GT, int64_t, int32_t>, fun<nm::EW_GT, int64_t, int64_t>, fun<nm::EW_GT, int64_t, float32_t>, fun<nm::EW_GT, int64_t, float64_t>, fun<nm::EW_GT, int64_t, nm::Complex64>, fun<nm::EW_GT, int64_t, nm::Complex128>, fun<nm::EW_GT, int64_t, nm::Rational32>, fun<nm::EW_GT, int64_t, nm::Rational64>, fun<nm::EW_GT, int64_t, nm::Rational128>, NULL}, \
653
+ {fun<nm::EW_GT, float32_t, uint8_t>, fun<nm::EW_GT, float32_t, int8_t>, fun<nm::EW_GT, float32_t, int16_t>, fun<nm::EW_GT, float32_t, int32_t>, fun<nm::EW_GT, float32_t, int64_t>, fun<nm::EW_GT, float32_t, float32_t>, fun<nm::EW_GT, float32_t, float64_t>, fun<nm::EW_GT, float32_t, nm::Complex64>, fun<nm::EW_GT, float32_t, nm::Complex128>, fun<nm::EW_GT, float32_t, nm::Rational32>, fun<nm::EW_GT, float32_t, nm::Rational64>, fun<nm::EW_GT, float32_t, nm::Rational128>, NULL}, \
654
+ {fun<nm::EW_GT, float64_t, uint8_t>, fun<nm::EW_GT, float64_t, int8_t>, fun<nm::EW_GT, float64_t, int16_t>, fun<nm::EW_GT, float64_t, int32_t>, fun<nm::EW_GT, float64_t, int64_t>, fun<nm::EW_GT, float64_t, float32_t>, fun<nm::EW_GT, float64_t, float64_t>, fun<nm::EW_GT, float64_t, nm::Complex64>, fun<nm::EW_GT, float64_t, nm::Complex128>, fun<nm::EW_GT, float64_t, nm::Rational32>, fun<nm::EW_GT, float64_t, nm::Rational64>, fun<nm::EW_GT, float64_t, nm::Rational128>, NULL}, \
655
+ {fun<nm::EW_GT, nm::Complex64, uint8_t>, fun<nm::EW_GT, nm::Complex64, int8_t>, fun<nm::EW_GT, nm::Complex64, int16_t>, fun<nm::EW_GT, nm::Complex64, int32_t>, fun<nm::EW_GT, nm::Complex64, int64_t>, fun<nm::EW_GT, nm::Complex64, float32_t>, fun<nm::EW_GT, nm::Complex64, float64_t>, fun<nm::EW_GT, nm::Complex64, nm::Complex64>, fun<nm::EW_GT, nm::Complex64, nm::Complex128>, fun<nm::EW_GT, nm::Complex64, nm::Rational32>, fun<nm::EW_GT, nm::Complex64, nm::Rational64>, fun<nm::EW_GT, nm::Complex64, nm::Rational128>, NULL}, \
656
+ {fun<nm::EW_GT, nm::Complex128, uint8_t>, fun<nm::EW_GT, nm::Complex128, int8_t>, fun<nm::EW_GT, nm::Complex128, int16_t>, fun<nm::EW_GT, nm::Complex128, int32_t>, fun<nm::EW_GT, nm::Complex128, int64_t>, fun<nm::EW_GT, nm::Complex128, float32_t>, fun<nm::EW_GT, nm::Complex128, float64_t>, fun<nm::EW_GT, nm::Complex128, nm::Complex64>, fun<nm::EW_GT, nm::Complex128, nm::Complex128>, fun<nm::EW_GT, nm::Complex128, nm::Rational32>, fun<nm::EW_GT, nm::Complex128, nm::Rational64>, fun<nm::EW_GT, nm::Complex128, nm::Rational128>, NULL}, \
657
+ {fun<nm::EW_GT, nm::Rational32, uint8_t>, fun<nm::EW_GT, nm::Rational32, int8_t>, fun<nm::EW_GT, nm::Rational32, int16_t>, fun<nm::EW_GT, nm::Rational32, int32_t>, fun<nm::EW_GT, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GT, nm::Rational32, nm::Rational32>, fun<nm::EW_GT, nm::Rational32, nm::Rational64>, fun<nm::EW_GT, nm::Rational32, nm::Rational128>, NULL}, \
658
+ {fun<nm::EW_GT, nm::Rational64, uint8_t>, fun<nm::EW_GT, nm::Rational64, int8_t>, fun<nm::EW_GT, nm::Rational64, int16_t>, fun<nm::EW_GT, nm::Rational64, int32_t>, fun<nm::EW_GT, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GT, nm::Rational64, nm::Rational32>, fun<nm::EW_GT, nm::Rational64, nm::Rational64>, fun<nm::EW_GT, nm::Rational64, nm::Rational128>, NULL}, \
659
+ {fun<nm::EW_GT, nm::Rational128, uint8_t>, fun<nm::EW_GT, nm::Rational128, int8_t>, fun<nm::EW_GT, nm::Rational128, int16_t>, fun<nm::EW_GT, nm::Rational128, int32_t>, fun<nm::EW_GT, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GT, nm::Rational128, nm::Rational32>, fun<nm::EW_GT, nm::Rational128, nm::Rational64>, fun<nm::EW_GT, nm::Rational128, nm::Rational128>, NULL}, \
660
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_GT, nm::RubyObject, nm::RubyObject>}}, \
661
+ {{fun<nm::EW_LEQ, uint8_t, uint8_t>, fun<nm::EW_LEQ, uint8_t, int8_t>, fun<nm::EW_LEQ, uint8_t, int16_t>, fun<nm::EW_LEQ, uint8_t, int32_t>, fun<nm::EW_LEQ, uint8_t, int64_t>, fun<nm::EW_LEQ, uint8_t, float32_t>, fun<nm::EW_LEQ, uint8_t, float64_t>, fun<nm::EW_LEQ, uint8_t, nm::Complex64>, fun<nm::EW_LEQ, uint8_t, nm::Complex128>, fun<nm::EW_LEQ, uint8_t, nm::Rational32>, fun<nm::EW_LEQ, uint8_t, nm::Rational64>, fun<nm::EW_LEQ, uint8_t, nm::Rational128>, NULL}, \
662
+ {fun<nm::EW_LEQ, int8_t, uint8_t>, fun<nm::EW_LEQ, int8_t, int8_t>, fun<nm::EW_LEQ, int8_t, int16_t>, fun<nm::EW_LEQ, int8_t, int32_t>, fun<nm::EW_LEQ, int8_t, int64_t>, fun<nm::EW_LEQ, int8_t, float32_t>, fun<nm::EW_LEQ, int8_t, float64_t>, fun<nm::EW_LEQ, int8_t, nm::Complex64>, fun<nm::EW_LEQ, int8_t, nm::Complex128>, fun<nm::EW_LEQ, int8_t, nm::Rational32>, fun<nm::EW_LEQ, int8_t, nm::Rational64>, fun<nm::EW_LEQ, int8_t, nm::Rational128>, NULL}, \
663
+ {fun<nm::EW_LEQ, int16_t, uint8_t>, fun<nm::EW_LEQ, int16_t, int8_t>, fun<nm::EW_LEQ, int16_t, int16_t>, fun<nm::EW_LEQ, int16_t, int32_t>, fun<nm::EW_LEQ, int16_t, int64_t>, fun<nm::EW_LEQ, int16_t, float32_t>, fun<nm::EW_LEQ, int16_t, float64_t>, fun<nm::EW_LEQ, int16_t, nm::Complex64>, fun<nm::EW_LEQ, int16_t, nm::Complex128>, fun<nm::EW_LEQ, int16_t, nm::Rational32>, fun<nm::EW_LEQ, int16_t, nm::Rational64>, fun<nm::EW_LEQ, int16_t, nm::Rational128>, NULL}, \
664
+ {fun<nm::EW_LEQ, int32_t, uint8_t>, fun<nm::EW_LEQ, int32_t, int8_t>, fun<nm::EW_LEQ, int32_t, int16_t>, fun<nm::EW_LEQ, int32_t, int32_t>, fun<nm::EW_LEQ, int32_t, int64_t>, fun<nm::EW_LEQ, int32_t, float32_t>, fun<nm::EW_LEQ, int32_t, float64_t>, fun<nm::EW_LEQ, int32_t, nm::Complex64>, fun<nm::EW_LEQ, int32_t, nm::Complex128>, fun<nm::EW_LEQ, int32_t, nm::Rational32>, fun<nm::EW_LEQ, int32_t, nm::Rational64>, fun<nm::EW_LEQ, int32_t, nm::Rational128>, NULL}, \
665
+ {fun<nm::EW_LEQ, int64_t, uint8_t>, fun<nm::EW_LEQ, int64_t, int8_t>, fun<nm::EW_LEQ, int64_t, int16_t>, fun<nm::EW_LEQ, int64_t, int32_t>, fun<nm::EW_LEQ, int64_t, int64_t>, fun<nm::EW_LEQ, int64_t, float32_t>, fun<nm::EW_LEQ, int64_t, float64_t>, fun<nm::EW_LEQ, int64_t, nm::Complex64>, fun<nm::EW_LEQ, int64_t, nm::Complex128>, fun<nm::EW_LEQ, int64_t, nm::Rational32>, fun<nm::EW_LEQ, int64_t, nm::Rational64>, fun<nm::EW_LEQ, int64_t, nm::Rational128>, NULL}, \
666
+ {fun<nm::EW_LEQ, float32_t, uint8_t>, fun<nm::EW_LEQ, float32_t, int8_t>, fun<nm::EW_LEQ, float32_t, int16_t>, fun<nm::EW_LEQ, float32_t, int32_t>, fun<nm::EW_LEQ, float32_t, int64_t>, fun<nm::EW_LEQ, float32_t, float32_t>, fun<nm::EW_LEQ, float32_t, float64_t>, fun<nm::EW_LEQ, float32_t, nm::Complex64>, fun<nm::EW_LEQ, float32_t, nm::Complex128>, fun<nm::EW_LEQ, float32_t, nm::Rational32>, fun<nm::EW_LEQ, float32_t, nm::Rational64>, fun<nm::EW_LEQ, float32_t, nm::Rational128>, NULL}, \
667
+ {fun<nm::EW_LEQ, float64_t, uint8_t>, fun<nm::EW_LEQ, float64_t, int8_t>, fun<nm::EW_LEQ, float64_t, int16_t>, fun<nm::EW_LEQ, float64_t, int32_t>, fun<nm::EW_LEQ, float64_t, int64_t>, fun<nm::EW_LEQ, float64_t, float32_t>, fun<nm::EW_LEQ, float64_t, float64_t>, fun<nm::EW_LEQ, float64_t, nm::Complex64>, fun<nm::EW_LEQ, float64_t, nm::Complex128>, fun<nm::EW_LEQ, float64_t, nm::Rational32>, fun<nm::EW_LEQ, float64_t, nm::Rational64>, fun<nm::EW_LEQ, float64_t, nm::Rational128>, NULL}, \
668
+ {fun<nm::EW_LEQ, nm::Complex64, uint8_t>, fun<nm::EW_LEQ, nm::Complex64, int8_t>, fun<nm::EW_LEQ, nm::Complex64, int16_t>, fun<nm::EW_LEQ, nm::Complex64, int32_t>, fun<nm::EW_LEQ, nm::Complex64, int64_t>, fun<nm::EW_LEQ, nm::Complex64, float32_t>, fun<nm::EW_LEQ, nm::Complex64, float64_t>, fun<nm::EW_LEQ, nm::Complex64, nm::Complex64>, fun<nm::EW_LEQ, nm::Complex64, nm::Complex128>, fun<nm::EW_LEQ, nm::Complex64, nm::Rational32>, fun<nm::EW_LEQ, nm::Complex64, nm::Rational64>, fun<nm::EW_LEQ, nm::Complex64, nm::Rational128>, NULL}, \
669
+ {fun<nm::EW_LEQ, nm::Complex128, uint8_t>, fun<nm::EW_LEQ, nm::Complex128, int8_t>, fun<nm::EW_LEQ, nm::Complex128, int16_t>, fun<nm::EW_LEQ, nm::Complex128, int32_t>, fun<nm::EW_LEQ, nm::Complex128, int64_t>, fun<nm::EW_LEQ, nm::Complex128, float32_t>, fun<nm::EW_LEQ, nm::Complex128, float64_t>, fun<nm::EW_LEQ, nm::Complex128, nm::Complex64>, fun<nm::EW_LEQ, nm::Complex128, nm::Complex128>, fun<nm::EW_LEQ, nm::Complex128, nm::Rational32>, fun<nm::EW_LEQ, nm::Complex128, nm::Rational64>, fun<nm::EW_LEQ, nm::Complex128, nm::Rational128>, NULL}, \
670
+ {fun<nm::EW_LEQ, nm::Rational32, uint8_t>, fun<nm::EW_LEQ, nm::Rational32, int8_t>, fun<nm::EW_LEQ, nm::Rational32, int16_t>, fun<nm::EW_LEQ, nm::Rational32, int32_t>, fun<nm::EW_LEQ, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LEQ, nm::Rational32, nm::Rational32>, fun<nm::EW_LEQ, nm::Rational32, nm::Rational64>, fun<nm::EW_LEQ, nm::Rational32, nm::Rational128>, NULL}, \
671
+ {fun<nm::EW_LEQ, nm::Rational64, uint8_t>, fun<nm::EW_LEQ, nm::Rational64, int8_t>, fun<nm::EW_LEQ, nm::Rational64, int16_t>, fun<nm::EW_LEQ, nm::Rational64, int32_t>, fun<nm::EW_LEQ, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LEQ, nm::Rational64, nm::Rational32>, fun<nm::EW_LEQ, nm::Rational64, nm::Rational64>, fun<nm::EW_LEQ, nm::Rational64, nm::Rational128>, NULL}, \
672
+ {fun<nm::EW_LEQ, nm::Rational128, uint8_t>, fun<nm::EW_LEQ, nm::Rational128, int8_t>, fun<nm::EW_LEQ, nm::Rational128, int16_t>, fun<nm::EW_LEQ, nm::Rational128, int32_t>, fun<nm::EW_LEQ, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_LEQ, nm::Rational128, nm::Rational32>, fun<nm::EW_LEQ, nm::Rational128, nm::Rational64>, fun<nm::EW_LEQ, nm::Rational128, nm::Rational128>, NULL}, \
673
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_LEQ, nm::RubyObject, nm::RubyObject>}}, \
674
+ {{fun<nm::EW_GEQ, uint8_t, uint8_t>, fun<nm::EW_GEQ, uint8_t, int8_t>, fun<nm::EW_GEQ, uint8_t, int16_t>, fun<nm::EW_GEQ, uint8_t, int32_t>, fun<nm::EW_GEQ, uint8_t, int64_t>, fun<nm::EW_GEQ, uint8_t, float32_t>, fun<nm::EW_GEQ, uint8_t, float64_t>, fun<nm::EW_GEQ, uint8_t, nm::Complex64>, fun<nm::EW_GEQ, uint8_t, nm::Complex128>, fun<nm::EW_GEQ, uint8_t, nm::Rational32>, fun<nm::EW_GEQ, uint8_t, nm::Rational64>, fun<nm::EW_GEQ, uint8_t, nm::Rational128>, NULL}, \
675
+ {fun<nm::EW_GEQ, int8_t, uint8_t>, fun<nm::EW_GEQ, int8_t, int8_t>, fun<nm::EW_GEQ, int8_t, int16_t>, fun<nm::EW_GEQ, int8_t, int32_t>, fun<nm::EW_GEQ, int8_t, int64_t>, fun<nm::EW_GEQ, int8_t, float32_t>, fun<nm::EW_GEQ, int8_t, float64_t>, fun<nm::EW_GEQ, int8_t, nm::Complex64>, fun<nm::EW_GEQ, int8_t, nm::Complex128>, fun<nm::EW_GEQ, int8_t, nm::Rational32>, fun<nm::EW_GEQ, int8_t, nm::Rational64>, fun<nm::EW_GEQ, int8_t, nm::Rational128>, NULL}, \
676
+ {fun<nm::EW_GEQ, int16_t, uint8_t>, fun<nm::EW_GEQ, int16_t, int8_t>, fun<nm::EW_GEQ, int16_t, int16_t>, fun<nm::EW_GEQ, int16_t, int32_t>, fun<nm::EW_GEQ, int16_t, int64_t>, fun<nm::EW_GEQ, int16_t, float32_t>, fun<nm::EW_GEQ, int16_t, float64_t>, fun<nm::EW_GEQ, int16_t, nm::Complex64>, fun<nm::EW_GEQ, int16_t, nm::Complex128>, fun<nm::EW_GEQ, int16_t, nm::Rational32>, fun<nm::EW_GEQ, int16_t, nm::Rational64>, fun<nm::EW_GEQ, int16_t, nm::Rational128>, NULL}, \
677
+ {fun<nm::EW_GEQ, int32_t, uint8_t>, fun<nm::EW_GEQ, int32_t, int8_t>, fun<nm::EW_GEQ, int32_t, int16_t>, fun<nm::EW_GEQ, int32_t, int32_t>, fun<nm::EW_GEQ, int32_t, int64_t>, fun<nm::EW_GEQ, int32_t, float32_t>, fun<nm::EW_GEQ, int32_t, float64_t>, fun<nm::EW_GEQ, int32_t, nm::Complex64>, fun<nm::EW_GEQ, int32_t, nm::Complex128>, fun<nm::EW_GEQ, int32_t, nm::Rational32>, fun<nm::EW_GEQ, int32_t, nm::Rational64>, fun<nm::EW_GEQ, int32_t, nm::Rational128>, NULL}, \
678
+ {fun<nm::EW_GEQ, int64_t, uint8_t>, fun<nm::EW_GEQ, int64_t, int8_t>, fun<nm::EW_GEQ, int64_t, int16_t>, fun<nm::EW_GEQ, int64_t, int32_t>, fun<nm::EW_GEQ, int64_t, int64_t>, fun<nm::EW_GEQ, int64_t, float32_t>, fun<nm::EW_GEQ, int64_t, float64_t>, fun<nm::EW_GEQ, int64_t, nm::Complex64>, fun<nm::EW_GEQ, int64_t, nm::Complex128>, fun<nm::EW_GEQ, int64_t, nm::Rational32>, fun<nm::EW_GEQ, int64_t, nm::Rational64>, fun<nm::EW_GEQ, int64_t, nm::Rational128>, NULL}, \
679
+ {fun<nm::EW_GEQ, float32_t, uint8_t>, fun<nm::EW_GEQ, float32_t, int8_t>, fun<nm::EW_GEQ, float32_t, int16_t>, fun<nm::EW_GEQ, float32_t, int32_t>, fun<nm::EW_GEQ, float32_t, int64_t>, fun<nm::EW_GEQ, float32_t, float32_t>, fun<nm::EW_GEQ, float32_t, float64_t>, fun<nm::EW_GEQ, float32_t, nm::Complex64>, fun<nm::EW_GEQ, float32_t, nm::Complex128>, fun<nm::EW_GEQ, float32_t, nm::Rational32>, fun<nm::EW_GEQ, float32_t, nm::Rational64>, fun<nm::EW_GEQ, float32_t, nm::Rational128>, NULL}, \
680
+ {fun<nm::EW_GEQ, float64_t, uint8_t>, fun<nm::EW_GEQ, float64_t, int8_t>, fun<nm::EW_GEQ, float64_t, int16_t>, fun<nm::EW_GEQ, float64_t, int32_t>, fun<nm::EW_GEQ, float64_t, int64_t>, fun<nm::EW_GEQ, float64_t, float32_t>, fun<nm::EW_GEQ, float64_t, float64_t>, fun<nm::EW_GEQ, float64_t, nm::Complex64>, fun<nm::EW_GEQ, float64_t, nm::Complex128>, fun<nm::EW_GEQ, float64_t, nm::Rational32>, fun<nm::EW_GEQ, float64_t, nm::Rational64>, fun<nm::EW_GEQ, float64_t, nm::Rational128>, NULL}, \
681
+ {fun<nm::EW_GEQ, nm::Complex64, uint8_t>, fun<nm::EW_GEQ, nm::Complex64, int8_t>, fun<nm::EW_GEQ, nm::Complex64, int16_t>, fun<nm::EW_GEQ, nm::Complex64, int32_t>, fun<nm::EW_GEQ, nm::Complex64, int64_t>, fun<nm::EW_GEQ, nm::Complex64, float32_t>, fun<nm::EW_GEQ, nm::Complex64, float64_t>, fun<nm::EW_GEQ, nm::Complex64, nm::Complex64>, fun<nm::EW_GEQ, nm::Complex64, nm::Complex128>, fun<nm::EW_GEQ, nm::Complex64, nm::Rational32>, fun<nm::EW_GEQ, nm::Complex64, nm::Rational64>, fun<nm::EW_GEQ, nm::Complex64, nm::Rational128>, NULL}, \
682
+ {fun<nm::EW_GEQ, nm::Complex128, uint8_t>, fun<nm::EW_GEQ, nm::Complex128, int8_t>, fun<nm::EW_GEQ, nm::Complex128, int16_t>, fun<nm::EW_GEQ, nm::Complex128, int32_t>, fun<nm::EW_GEQ, nm::Complex128, int64_t>, fun<nm::EW_GEQ, nm::Complex128, float32_t>, fun<nm::EW_GEQ, nm::Complex128, float64_t>, fun<nm::EW_GEQ, nm::Complex128, nm::Complex64>, fun<nm::EW_GEQ, nm::Complex128, nm::Complex128>, fun<nm::EW_GEQ, nm::Complex128, nm::Rational32>, fun<nm::EW_GEQ, nm::Complex128, nm::Rational64>, fun<nm::EW_GEQ, nm::Complex128, nm::Rational128>, NULL}, \
683
+ {fun<nm::EW_GEQ, nm::Rational32, uint8_t>, fun<nm::EW_GEQ, nm::Rational32, int8_t>, fun<nm::EW_GEQ, nm::Rational32, int16_t>, fun<nm::EW_GEQ, nm::Rational32, int32_t>, fun<nm::EW_GEQ, nm::Rational32, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GEQ, nm::Rational32, nm::Rational32>, fun<nm::EW_GEQ, nm::Rational32, nm::Rational64>, fun<nm::EW_GEQ, nm::Rational32, nm::Rational128>, NULL}, \
684
+ {fun<nm::EW_GEQ, nm::Rational64, uint8_t>, fun<nm::EW_GEQ, nm::Rational64, int8_t>, fun<nm::EW_GEQ, nm::Rational64, int16_t>, fun<nm::EW_GEQ, nm::Rational64, int32_t>, fun<nm::EW_GEQ, nm::Rational64, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GEQ, nm::Rational64, nm::Rational32>, fun<nm::EW_GEQ, nm::Rational64, nm::Rational64>, fun<nm::EW_GEQ, nm::Rational64, nm::Rational128>, NULL}, \
685
+ {fun<nm::EW_GEQ, nm::Rational128, uint8_t>, fun<nm::EW_GEQ, nm::Rational128, int8_t>, fun<nm::EW_GEQ, nm::Rational128, int16_t>, fun<nm::EW_GEQ, nm::Rational128, int32_t>, fun<nm::EW_GEQ, nm::Rational128, int64_t>, NULL, NULL, NULL, NULL, fun<nm::EW_GEQ, nm::Rational128, nm::Rational32>, fun<nm::EW_GEQ, nm::Rational128, nm::Rational64>, fun<nm::EW_GEQ, nm::Rational128, nm::Rational128>, NULL}, \
686
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_GEQ, nm::RubyObject, nm::RubyObject>} \
687
+ } \
688
+ };
689
+
690
+ /*
691
+ * Defines a static array that holds function pointers to an elementwise op,
692
+ * itype, dtype templated versions of the specified function.
693
+ */
694
+ #define OP_ITYPE_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_OP_ITYPE_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
695
+
696
+ #define NAMED_OP_ITYPE_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
697
+ static ret (*(name)[nm::NUM_EWOPS][nm::NUM_ITYPES][nm::NUM_DTYPES])(__VA_ARGS__) = \
698
+ {{{fun<nm::EW_ADD, uint8_t, uint8_t>,fun<nm::EW_ADD, uint8_t, int8_t>,fun<nm::EW_ADD, uint8_t, int16_t>,fun<nm::EW_ADD, uint8_t, int32_t>,fun<nm::EW_ADD, uint8_t, int64_t>,fun<nm::EW_ADD, uint8_t, float32_t>,fun<nm::EW_ADD, uint8_t, float64_t>,fun<nm::EW_ADD, uint8_t, nm::Complex64>,fun<nm::EW_ADD, uint8_t, nm::Complex128>,fun<nm::EW_ADD, uint8_t, nm::Rational32>,fun<nm::EW_ADD, uint8_t, nm::Rational64>,fun<nm::EW_ADD, uint8_t, nm::Rational128>,fun<nm::EW_ADD, uint8_t, nm::RubyObject>},\
699
+ {fun<nm::EW_ADD, uint16_t, uint8_t>,fun<nm::EW_ADD, uint16_t, int8_t>,fun<nm::EW_ADD, uint16_t, int16_t>,fun<nm::EW_ADD, uint16_t, int32_t>,fun<nm::EW_ADD, uint16_t, int64_t>,fun<nm::EW_ADD, uint16_t, float32_t>,fun<nm::EW_ADD, uint16_t, float64_t>,fun<nm::EW_ADD, uint16_t, nm::Complex64>,fun<nm::EW_ADD, uint16_t, nm::Complex128>,fun<nm::EW_ADD, uint16_t, nm::Rational32>,fun<nm::EW_ADD, uint16_t, nm::Rational64>,fun<nm::EW_ADD, uint16_t, nm::Rational128>,fun<nm::EW_ADD, uint16_t, nm::RubyObject>},\
700
+ {fun<nm::EW_ADD, uint32_t, uint8_t>,fun<nm::EW_ADD, uint32_t, int8_t>,fun<nm::EW_ADD, uint32_t, int16_t>,fun<nm::EW_ADD, uint32_t, int32_t>,fun<nm::EW_ADD, uint32_t, int64_t>,fun<nm::EW_ADD, uint32_t, float32_t>,fun<nm::EW_ADD, uint32_t, float64_t>,fun<nm::EW_ADD, uint32_t, nm::Complex64>,fun<nm::EW_ADD, uint32_t, nm::Complex128>,fun<nm::EW_ADD, uint32_t, nm::Rational32>,fun<nm::EW_ADD, uint32_t, nm::Rational64>,fun<nm::EW_ADD, uint32_t, nm::Rational128>,fun<nm::EW_ADD, uint32_t, nm::RubyObject>},\
701
+ {fun<nm::EW_ADD, uint64_t, uint8_t>,fun<nm::EW_ADD, uint64_t, int8_t>,fun<nm::EW_ADD, uint64_t, int16_t>,fun<nm::EW_ADD, uint64_t, int32_t>,fun<nm::EW_ADD, uint64_t, int64_t>,fun<nm::EW_ADD, uint64_t, float32_t>,fun<nm::EW_ADD, uint64_t, float64_t>,fun<nm::EW_ADD, uint64_t, nm::Complex64>,fun<nm::EW_ADD, uint64_t, nm::Complex128>,fun<nm::EW_ADD, uint64_t, nm::Rational32>,fun<nm::EW_ADD, uint64_t, nm::Rational64>,fun<nm::EW_ADD, uint64_t, nm::Rational128>,fun<nm::EW_ADD, uint64_t, nm::RubyObject>}},\
702
+ {{fun<nm::EW_SUB, uint8_t, uint8_t>,fun<nm::EW_SUB, uint8_t, int8_t>,fun<nm::EW_SUB, uint8_t, int16_t>,fun<nm::EW_SUB, uint8_t, int32_t>,fun<nm::EW_SUB, uint8_t, int64_t>,fun<nm::EW_SUB, uint8_t, float32_t>,fun<nm::EW_SUB, uint8_t, float64_t>,fun<nm::EW_SUB, uint8_t, nm::Complex64>,fun<nm::EW_SUB, uint8_t, nm::Complex128>,fun<nm::EW_SUB, uint8_t, nm::Rational32>,fun<nm::EW_SUB, uint8_t, nm::Rational64>,fun<nm::EW_SUB, uint8_t, nm::Rational128>,fun<nm::EW_SUB, uint8_t, nm::RubyObject>},\
703
+ {fun<nm::EW_SUB, uint16_t, uint8_t>,fun<nm::EW_SUB, uint16_t, int8_t>,fun<nm::EW_SUB, uint16_t, int16_t>,fun<nm::EW_SUB, uint16_t, int32_t>,fun<nm::EW_SUB, uint16_t, int64_t>,fun<nm::EW_SUB, uint16_t, float32_t>,fun<nm::EW_SUB, uint16_t, float64_t>,fun<nm::EW_SUB, uint16_t, nm::Complex64>,fun<nm::EW_SUB, uint16_t, nm::Complex128>,fun<nm::EW_SUB, uint16_t, nm::Rational32>,fun<nm::EW_SUB, uint16_t, nm::Rational64>,fun<nm::EW_SUB, uint16_t, nm::Rational128>,fun<nm::EW_SUB, uint16_t, nm::RubyObject>},\
704
+ {fun<nm::EW_SUB, uint32_t, uint8_t>,fun<nm::EW_SUB, uint32_t, int8_t>,fun<nm::EW_SUB, uint32_t, int16_t>,fun<nm::EW_SUB, uint32_t, int32_t>,fun<nm::EW_SUB, uint32_t, int64_t>,fun<nm::EW_SUB, uint32_t, float32_t>,fun<nm::EW_SUB, uint32_t, float64_t>,fun<nm::EW_SUB, uint32_t, nm::Complex64>,fun<nm::EW_SUB, uint32_t, nm::Complex128>,fun<nm::EW_SUB, uint32_t, nm::Rational32>,fun<nm::EW_SUB, uint32_t, nm::Rational64>,fun<nm::EW_SUB, uint32_t, nm::Rational128>,fun<nm::EW_SUB, uint32_t, nm::RubyObject>},\
705
+ {fun<nm::EW_SUB, uint64_t, uint8_t>,fun<nm::EW_SUB, uint64_t, int8_t>,fun<nm::EW_SUB, uint64_t, int16_t>,fun<nm::EW_SUB, uint64_t, int32_t>,fun<nm::EW_SUB, uint64_t, int64_t>,fun<nm::EW_SUB, uint64_t, float32_t>,fun<nm::EW_SUB, uint64_t, float64_t>,fun<nm::EW_SUB, uint64_t, nm::Complex64>,fun<nm::EW_SUB, uint64_t, nm::Complex128>,fun<nm::EW_SUB, uint64_t, nm::Rational32>,fun<nm::EW_SUB, uint64_t, nm::Rational64>,fun<nm::EW_SUB, uint64_t, nm::Rational128>,fun<nm::EW_SUB, uint64_t, nm::RubyObject>}},\
706
+ {{fun<nm::EW_MUL, uint8_t, uint8_t>,fun<nm::EW_MUL, uint8_t, int8_t>,fun<nm::EW_MUL, uint8_t, int16_t>,fun<nm::EW_MUL, uint8_t, int32_t>,fun<nm::EW_MUL, uint8_t, int64_t>,fun<nm::EW_MUL, uint8_t, float32_t>,fun<nm::EW_MUL, uint8_t, float64_t>,fun<nm::EW_MUL, uint8_t, nm::Complex64>,fun<nm::EW_MUL, uint8_t, nm::Complex128>,fun<nm::EW_MUL, uint8_t, nm::Rational32>,fun<nm::EW_MUL, uint8_t, nm::Rational64>,fun<nm::EW_MUL, uint8_t, nm::Rational128>,fun<nm::EW_MUL, uint8_t, nm::RubyObject>},\
707
+ {fun<nm::EW_MUL, uint16_t, uint8_t>,fun<nm::EW_MUL, uint16_t, int8_t>,fun<nm::EW_MUL, uint16_t, int16_t>,fun<nm::EW_MUL, uint16_t, int32_t>,fun<nm::EW_MUL, uint16_t, int64_t>,fun<nm::EW_MUL, uint16_t, float32_t>,fun<nm::EW_MUL, uint16_t, float64_t>,fun<nm::EW_MUL, uint16_t, nm::Complex64>,fun<nm::EW_MUL, uint16_t, nm::Complex128>,fun<nm::EW_MUL, uint16_t, nm::Rational32>,fun<nm::EW_MUL, uint16_t, nm::Rational64>,fun<nm::EW_MUL, uint16_t, nm::Rational128>,fun<nm::EW_MUL, uint16_t, nm::RubyObject>},\
708
+ {fun<nm::EW_MUL, uint32_t, uint8_t>,fun<nm::EW_MUL, uint32_t, int8_t>,fun<nm::EW_MUL, uint32_t, int16_t>,fun<nm::EW_MUL, uint32_t, int32_t>,fun<nm::EW_MUL, uint32_t, int64_t>,fun<nm::EW_MUL, uint32_t, float32_t>,fun<nm::EW_MUL, uint32_t, float64_t>,fun<nm::EW_MUL, uint32_t, nm::Complex64>,fun<nm::EW_MUL, uint32_t, nm::Complex128>,fun<nm::EW_MUL, uint32_t, nm::Rational32>,fun<nm::EW_MUL, uint32_t, nm::Rational64>,fun<nm::EW_MUL, uint32_t, nm::Rational128>,fun<nm::EW_MUL, uint32_t, nm::RubyObject>},\
709
+ {fun<nm::EW_MUL, uint64_t, uint8_t>,fun<nm::EW_MUL, uint64_t, int8_t>,fun<nm::EW_MUL, uint64_t, int16_t>,fun<nm::EW_MUL, uint64_t, int32_t>,fun<nm::EW_MUL, uint64_t, int64_t>,fun<nm::EW_MUL, uint64_t, float32_t>,fun<nm::EW_MUL, uint64_t, float64_t>,fun<nm::EW_MUL, uint64_t, nm::Complex64>,fun<nm::EW_MUL, uint64_t, nm::Complex128>,fun<nm::EW_MUL, uint64_t, nm::Rational32>,fun<nm::EW_MUL, uint64_t, nm::Rational64>,fun<nm::EW_MUL, uint64_t, nm::Rational128>,fun<nm::EW_MUL, uint64_t, nm::RubyObject>}},\
710
+ {{fun<nm::EW_DIV, uint8_t, uint8_t>,fun<nm::EW_DIV, uint8_t, int8_t>,fun<nm::EW_DIV, uint8_t, int16_t>,fun<nm::EW_DIV, uint8_t, int32_t>,fun<nm::EW_DIV, uint8_t, int64_t>,fun<nm::EW_DIV, uint8_t, float32_t>,fun<nm::EW_DIV, uint8_t, float64_t>,fun<nm::EW_DIV, uint8_t, nm::Complex64>,fun<nm::EW_DIV, uint8_t, nm::Complex128>,fun<nm::EW_DIV, uint8_t, nm::Rational32>,fun<nm::EW_DIV, uint8_t, nm::Rational64>,fun<nm::EW_DIV, uint8_t, nm::Rational128>,fun<nm::EW_DIV, uint8_t, nm::RubyObject>},\
711
+ {fun<nm::EW_DIV, uint16_t, uint8_t>,fun<nm::EW_DIV, uint16_t, int8_t>,fun<nm::EW_DIV, uint16_t, int16_t>,fun<nm::EW_DIV, uint16_t, int32_t>,fun<nm::EW_DIV, uint16_t, int64_t>,fun<nm::EW_DIV, uint16_t, float32_t>,fun<nm::EW_DIV, uint16_t, float64_t>,fun<nm::EW_DIV, uint16_t, nm::Complex64>,fun<nm::EW_DIV, uint16_t, nm::Complex128>,fun<nm::EW_DIV, uint16_t, nm::Rational32>,fun<nm::EW_DIV, uint16_t, nm::Rational64>,fun<nm::EW_DIV, uint16_t, nm::Rational128>,fun<nm::EW_DIV, uint16_t, nm::RubyObject>},\
712
+ {fun<nm::EW_DIV, uint32_t, uint8_t>,fun<nm::EW_DIV, uint32_t, int8_t>,fun<nm::EW_DIV, uint32_t, int16_t>,fun<nm::EW_DIV, uint32_t, int32_t>,fun<nm::EW_DIV, uint32_t, int64_t>,fun<nm::EW_DIV, uint32_t, float32_t>,fun<nm::EW_DIV, uint32_t, float64_t>,fun<nm::EW_DIV, uint32_t, nm::Complex64>,fun<nm::EW_DIV, uint32_t, nm::Complex128>,fun<nm::EW_DIV, uint32_t, nm::Rational32>,fun<nm::EW_DIV, uint32_t, nm::Rational64>,fun<nm::EW_DIV, uint32_t, nm::Rational128>,fun<nm::EW_DIV, uint32_t, nm::RubyObject>},\
713
+ {fun<nm::EW_DIV, uint64_t, uint8_t>,fun<nm::EW_DIV, uint64_t, int8_t>,fun<nm::EW_DIV, uint64_t, int16_t>,fun<nm::EW_DIV, uint64_t, int32_t>,fun<nm::EW_DIV, uint64_t, int64_t>,fun<nm::EW_DIV, uint64_t, float32_t>,fun<nm::EW_DIV, uint64_t, float64_t>,fun<nm::EW_DIV, uint64_t, nm::Complex64>,fun<nm::EW_DIV, uint64_t, nm::Complex128>,fun<nm::EW_DIV, uint64_t, nm::Rational32>,fun<nm::EW_DIV, uint64_t, nm::Rational64>,fun<nm::EW_DIV, uint64_t, nm::Rational128>,fun<nm::EW_DIV, uint64_t, nm::RubyObject>}},\
714
+ {{fun<nm::EW_MOD, uint8_t, uint8_t>,fun<nm::EW_MOD, uint8_t, int8_t>,fun<nm::EW_MOD, uint8_t, int16_t>,fun<nm::EW_MOD, uint8_t, int32_t>,fun<nm::EW_MOD, uint8_t, int64_t>,fun<nm::EW_MOD, uint8_t, float32_t>,fun<nm::EW_MOD, uint8_t, float64_t>,fun<nm::EW_MOD, uint8_t, nm::Complex64>,fun<nm::EW_MOD, uint8_t, nm::Complex128>,fun<nm::EW_MOD, uint8_t, nm::Rational32>,fun<nm::EW_MOD, uint8_t, nm::Rational64>,fun<nm::EW_MOD, uint8_t, nm::Rational128>,fun<nm::EW_MOD, uint8_t, nm::RubyObject>},\
715
+ {fun<nm::EW_MOD, uint16_t, uint8_t>,fun<nm::EW_MOD, uint16_t, int8_t>,fun<nm::EW_MOD, uint16_t, int16_t>,fun<nm::EW_MOD, uint16_t, int32_t>,fun<nm::EW_MOD, uint16_t, int64_t>,fun<nm::EW_MOD, uint16_t, float32_t>,fun<nm::EW_MOD, uint16_t, float64_t>,fun<nm::EW_MOD, uint16_t, nm::Complex64>,fun<nm::EW_MOD, uint16_t, nm::Complex128>,fun<nm::EW_MOD, uint16_t, nm::Rational32>,fun<nm::EW_MOD, uint16_t, nm::Rational64>,fun<nm::EW_MOD, uint16_t, nm::Rational128>,fun<nm::EW_MOD, uint16_t, nm::RubyObject>},\
716
+ {fun<nm::EW_MOD, uint32_t, uint8_t>,fun<nm::EW_MOD, uint32_t, int8_t>,fun<nm::EW_MOD, uint32_t, int16_t>,fun<nm::EW_MOD, uint32_t, int32_t>,fun<nm::EW_MOD, uint32_t, int64_t>,fun<nm::EW_MOD, uint32_t, float32_t>,fun<nm::EW_MOD, uint32_t, float64_t>,fun<nm::EW_MOD, uint32_t, nm::Complex64>,fun<nm::EW_MOD, uint32_t, nm::Complex128>,fun<nm::EW_MOD, uint32_t, nm::Rational32>,fun<nm::EW_MOD, uint32_t, nm::Rational64>,fun<nm::EW_MOD, uint32_t, nm::Rational128>,fun<nm::EW_MOD, uint32_t, nm::RubyObject>},\
717
+ {fun<nm::EW_MOD, uint64_t, uint8_t>,fun<nm::EW_MOD, uint64_t, int8_t>,fun<nm::EW_MOD, uint64_t, int16_t>,fun<nm::EW_MOD, uint64_t, int32_t>,fun<nm::EW_MOD, uint64_t, int64_t>,fun<nm::EW_MOD, uint64_t, float32_t>,fun<nm::EW_MOD, uint64_t, float64_t>,fun<nm::EW_MOD, uint64_t, nm::Complex64>,fun<nm::EW_MOD, uint64_t, nm::Complex128>,fun<nm::EW_MOD, uint64_t, nm::Rational32>,fun<nm::EW_MOD, uint64_t, nm::Rational64>,fun<nm::EW_MOD, uint64_t, nm::Rational128>,fun<nm::EW_MOD, uint64_t, nm::RubyObject>}},\
718
+ {{fun<nm::EW_EQEQ, uint8_t, uint8_t>,fun<nm::EW_EQEQ, uint8_t, int8_t>,fun<nm::EW_EQEQ, uint8_t, int16_t>,fun<nm::EW_EQEQ, uint8_t, int32_t>,fun<nm::EW_EQEQ, uint8_t, int64_t>,fun<nm::EW_EQEQ, uint8_t, float32_t>,fun<nm::EW_EQEQ, uint8_t, float64_t>,fun<nm::EW_EQEQ, uint8_t, nm::Complex64>,fun<nm::EW_EQEQ, uint8_t, nm::Complex128>,fun<nm::EW_EQEQ, uint8_t, nm::Rational32>,fun<nm::EW_EQEQ, uint8_t, nm::Rational64>,fun<nm::EW_EQEQ, uint8_t, nm::Rational128>,fun<nm::EW_EQEQ, uint8_t, nm::RubyObject>},\
719
+ {fun<nm::EW_EQEQ, uint16_t, uint8_t>,fun<nm::EW_EQEQ, uint16_t, int8_t>,fun<nm::EW_EQEQ, uint16_t, int16_t>,fun<nm::EW_EQEQ, uint16_t, int32_t>,fun<nm::EW_EQEQ, uint16_t, int64_t>,fun<nm::EW_EQEQ, uint16_t, float32_t>,fun<nm::EW_EQEQ, uint16_t, float64_t>,fun<nm::EW_EQEQ, uint16_t, nm::Complex64>,fun<nm::EW_EQEQ, uint16_t, nm::Complex128>,fun<nm::EW_EQEQ, uint16_t, nm::Rational32>,fun<nm::EW_EQEQ, uint16_t, nm::Rational64>,fun<nm::EW_EQEQ, uint16_t, nm::Rational128>,fun<nm::EW_EQEQ, uint16_t, nm::RubyObject>},\
720
+ {fun<nm::EW_EQEQ, uint32_t, uint8_t>,fun<nm::EW_EQEQ, uint32_t, int8_t>,fun<nm::EW_EQEQ, uint32_t, int16_t>,fun<nm::EW_EQEQ, uint32_t, int32_t>,fun<nm::EW_EQEQ, uint32_t, int64_t>,fun<nm::EW_EQEQ, uint32_t, float32_t>,fun<nm::EW_EQEQ, uint32_t, float64_t>,fun<nm::EW_EQEQ, uint32_t, nm::Complex64>,fun<nm::EW_EQEQ, uint32_t, nm::Complex128>,fun<nm::EW_EQEQ, uint32_t, nm::Rational32>,fun<nm::EW_EQEQ, uint32_t, nm::Rational64>,fun<nm::EW_EQEQ, uint32_t, nm::Rational128>,fun<nm::EW_EQEQ, uint32_t, nm::RubyObject>},\
721
+ {fun<nm::EW_EQEQ, uint64_t, uint8_t>,fun<nm::EW_EQEQ, uint64_t, int8_t>,fun<nm::EW_EQEQ, uint64_t, int16_t>,fun<nm::EW_EQEQ, uint64_t, int32_t>,fun<nm::EW_EQEQ, uint64_t, int64_t>,fun<nm::EW_EQEQ, uint64_t, float32_t>,fun<nm::EW_EQEQ, uint64_t, float64_t>,fun<nm::EW_EQEQ, uint64_t, nm::Complex64>,fun<nm::EW_EQEQ, uint64_t, nm::Complex128>,fun<nm::EW_EQEQ, uint64_t, nm::Rational32>,fun<nm::EW_EQEQ, uint64_t, nm::Rational64>,fun<nm::EW_EQEQ, uint64_t, nm::Rational128>,fun<nm::EW_EQEQ, uint64_t, nm::RubyObject>}},\
722
+ {{fun<nm::EW_NEQ, uint8_t, uint8_t>,fun<nm::EW_NEQ, uint8_t, int8_t>,fun<nm::EW_NEQ, uint8_t, int16_t>,fun<nm::EW_NEQ, uint8_t, int32_t>,fun<nm::EW_NEQ, uint8_t, int64_t>,fun<nm::EW_NEQ, uint8_t, float32_t>,fun<nm::EW_NEQ, uint8_t, float64_t>,fun<nm::EW_NEQ, uint8_t, nm::Complex64>,fun<nm::EW_NEQ, uint8_t, nm::Complex128>,fun<nm::EW_NEQ, uint8_t, nm::Rational32>,fun<nm::EW_NEQ, uint8_t, nm::Rational64>,fun<nm::EW_NEQ, uint8_t, nm::Rational128>,fun<nm::EW_NEQ, uint8_t, nm::RubyObject>},\
723
+ {fun<nm::EW_NEQ, uint16_t, uint8_t>,fun<nm::EW_NEQ, uint16_t, int8_t>,fun<nm::EW_NEQ, uint16_t, int16_t>,fun<nm::EW_NEQ, uint16_t, int32_t>,fun<nm::EW_NEQ, uint16_t, int64_t>,fun<nm::EW_NEQ, uint16_t, float32_t>,fun<nm::EW_NEQ, uint16_t, float64_t>,fun<nm::EW_NEQ, uint16_t, nm::Complex64>,fun<nm::EW_NEQ, uint16_t, nm::Complex128>,fun<nm::EW_NEQ, uint16_t, nm::Rational32>,fun<nm::EW_NEQ, uint16_t, nm::Rational64>,fun<nm::EW_NEQ, uint16_t, nm::Rational128>,fun<nm::EW_NEQ, uint16_t, nm::RubyObject>},\
724
+ {fun<nm::EW_NEQ, uint32_t, uint8_t>,fun<nm::EW_NEQ, uint32_t, int8_t>,fun<nm::EW_NEQ, uint32_t, int16_t>,fun<nm::EW_NEQ, uint32_t, int32_t>,fun<nm::EW_NEQ, uint32_t, int64_t>,fun<nm::EW_NEQ, uint32_t, float32_t>,fun<nm::EW_NEQ, uint32_t, float64_t>,fun<nm::EW_NEQ, uint32_t, nm::Complex64>,fun<nm::EW_NEQ, uint32_t, nm::Complex128>,fun<nm::EW_NEQ, uint32_t, nm::Rational32>,fun<nm::EW_NEQ, uint32_t, nm::Rational64>,fun<nm::EW_NEQ, uint32_t, nm::Rational128>,fun<nm::EW_NEQ, uint32_t, nm::RubyObject>},\
725
+ {fun<nm::EW_NEQ, uint64_t, uint8_t>,fun<nm::EW_NEQ, uint64_t, int8_t>,fun<nm::EW_NEQ, uint64_t, int16_t>,fun<nm::EW_NEQ, uint64_t, int32_t>,fun<nm::EW_NEQ, uint64_t, int64_t>,fun<nm::EW_NEQ, uint64_t, float32_t>,fun<nm::EW_NEQ, uint64_t, float64_t>,fun<nm::EW_NEQ, uint64_t, nm::Complex64>,fun<nm::EW_NEQ, uint64_t, nm::Complex128>,fun<nm::EW_NEQ, uint64_t, nm::Rational32>,fun<nm::EW_NEQ, uint64_t, nm::Rational64>,fun<nm::EW_NEQ, uint64_t, nm::Rational128>,fun<nm::EW_NEQ, uint64_t, nm::RubyObject>}},\
726
+ {{fun<nm::EW_LT, uint8_t, uint8_t>,fun<nm::EW_LT, uint8_t, int8_t>,fun<nm::EW_LT, uint8_t, int16_t>,fun<nm::EW_LT, uint8_t, int32_t>,fun<nm::EW_LT, uint8_t, int64_t>,fun<nm::EW_LT, uint8_t, float32_t>,fun<nm::EW_LT, uint8_t, float64_t>,fun<nm::EW_LT, uint8_t, nm::Complex64>,fun<nm::EW_LT, uint8_t, nm::Complex128>,fun<nm::EW_LT, uint8_t, nm::Rational32>,fun<nm::EW_LT, uint8_t, nm::Rational64>,fun<nm::EW_LT, uint8_t, nm::Rational128>,fun<nm::EW_LT, uint8_t, nm::RubyObject>},\
727
+ {fun<nm::EW_LT, uint16_t, uint8_t>,fun<nm::EW_LT, uint16_t, int8_t>,fun<nm::EW_LT, uint16_t, int16_t>,fun<nm::EW_LT, uint16_t, int32_t>,fun<nm::EW_LT, uint16_t, int64_t>,fun<nm::EW_LT, uint16_t, float32_t>,fun<nm::EW_LT, uint16_t, float64_t>,fun<nm::EW_LT, uint16_t, nm::Complex64>,fun<nm::EW_LT, uint16_t, nm::Complex128>,fun<nm::EW_LT, uint16_t, nm::Rational32>,fun<nm::EW_LT, uint16_t, nm::Rational64>,fun<nm::EW_LT, uint16_t, nm::Rational128>,fun<nm::EW_LT, uint16_t, nm::RubyObject>},\
728
+ {fun<nm::EW_LT, uint32_t, uint8_t>,fun<nm::EW_LT, uint32_t, int8_t>,fun<nm::EW_LT, uint32_t, int16_t>,fun<nm::EW_LT, uint32_t, int32_t>,fun<nm::EW_LT, uint32_t, int64_t>,fun<nm::EW_LT, uint32_t, float32_t>,fun<nm::EW_LT, uint32_t, float64_t>,fun<nm::EW_LT, uint32_t, nm::Complex64>,fun<nm::EW_LT, uint32_t, nm::Complex128>,fun<nm::EW_LT, uint32_t, nm::Rational32>,fun<nm::EW_LT, uint32_t, nm::Rational64>,fun<nm::EW_LT, uint32_t, nm::Rational128>,fun<nm::EW_LT, uint32_t, nm::RubyObject>},\
729
+ {fun<nm::EW_LT, uint64_t, uint8_t>,fun<nm::EW_LT, uint64_t, int8_t>,fun<nm::EW_LT, uint64_t, int16_t>,fun<nm::EW_LT, uint64_t, int32_t>,fun<nm::EW_LT, uint64_t, int64_t>,fun<nm::EW_LT, uint64_t, float32_t>,fun<nm::EW_LT, uint64_t, float64_t>,fun<nm::EW_LT, uint64_t, nm::Complex64>,fun<nm::EW_LT, uint64_t, nm::Complex128>,fun<nm::EW_LT, uint64_t, nm::Rational32>,fun<nm::EW_LT, uint64_t, nm::Rational64>,fun<nm::EW_LT, uint64_t, nm::Rational128>,fun<nm::EW_LT, uint64_t, nm::RubyObject>}},\
730
+ {{fun<nm::EW_GT, uint8_t, uint8_t>,fun<nm::EW_GT, uint8_t, int8_t>,fun<nm::EW_GT, uint8_t, int16_t>,fun<nm::EW_GT, uint8_t, int32_t>,fun<nm::EW_GT, uint8_t, int64_t>,fun<nm::EW_GT, uint8_t, float32_t>,fun<nm::EW_GT, uint8_t, float64_t>,fun<nm::EW_GT, uint8_t, nm::Complex64>,fun<nm::EW_GT, uint8_t, nm::Complex128>,fun<nm::EW_GT, uint8_t, nm::Rational32>,fun<nm::EW_GT, uint8_t, nm::Rational64>,fun<nm::EW_GT, uint8_t, nm::Rational128>,fun<nm::EW_GT, uint8_t, nm::RubyObject>},\
731
+ {fun<nm::EW_GT, uint16_t, uint8_t>,fun<nm::EW_GT, uint16_t, int8_t>,fun<nm::EW_GT, uint16_t, int16_t>,fun<nm::EW_GT, uint16_t, int32_t>,fun<nm::EW_GT, uint16_t, int64_t>,fun<nm::EW_GT, uint16_t, float32_t>,fun<nm::EW_GT, uint16_t, float64_t>,fun<nm::EW_GT, uint16_t, nm::Complex64>,fun<nm::EW_GT, uint16_t, nm::Complex128>,fun<nm::EW_GT, uint16_t, nm::Rational32>,fun<nm::EW_GT, uint16_t, nm::Rational64>,fun<nm::EW_GT, uint16_t, nm::Rational128>,fun<nm::EW_GT, uint16_t, nm::RubyObject>},\
732
+ {fun<nm::EW_GT, uint32_t, uint8_t>,fun<nm::EW_GT, uint32_t, int8_t>,fun<nm::EW_GT, uint32_t, int16_t>,fun<nm::EW_GT, uint32_t, int32_t>,fun<nm::EW_GT, uint32_t, int64_t>,fun<nm::EW_GT, uint32_t, float32_t>,fun<nm::EW_GT, uint32_t, float64_t>,fun<nm::EW_GT, uint32_t, nm::Complex64>,fun<nm::EW_GT, uint32_t, nm::Complex128>,fun<nm::EW_GT, uint32_t, nm::Rational32>,fun<nm::EW_GT, uint32_t, nm::Rational64>,fun<nm::EW_GT, uint32_t, nm::Rational128>,fun<nm::EW_GT, uint32_t, nm::RubyObject>},\
733
+ {fun<nm::EW_GT, uint64_t, uint8_t>,fun<nm::EW_GT, uint64_t, int8_t>,fun<nm::EW_GT, uint64_t, int16_t>,fun<nm::EW_GT, uint64_t, int32_t>,fun<nm::EW_GT, uint64_t, int64_t>,fun<nm::EW_GT, uint64_t, float32_t>,fun<nm::EW_GT, uint64_t, float64_t>,fun<nm::EW_GT, uint64_t, nm::Complex64>,fun<nm::EW_GT, uint64_t, nm::Complex128>,fun<nm::EW_GT, uint64_t, nm::Rational32>,fun<nm::EW_GT, uint64_t, nm::Rational64>,fun<nm::EW_GT, uint64_t, nm::Rational128>,fun<nm::EW_GT, uint64_t, nm::RubyObject>}},\
734
+ {{fun<nm::EW_LEQ, uint8_t, uint8_t>,fun<nm::EW_LEQ, uint8_t, int8_t>,fun<nm::EW_LEQ, uint8_t, int16_t>,fun<nm::EW_LEQ, uint8_t, int32_t>,fun<nm::EW_LEQ, uint8_t, int64_t>,fun<nm::EW_LEQ, uint8_t, float32_t>,fun<nm::EW_LEQ, uint8_t, float64_t>,fun<nm::EW_LEQ, uint8_t, nm::Complex64>,fun<nm::EW_LEQ, uint8_t, nm::Complex128>,fun<nm::EW_LEQ, uint8_t, nm::Rational32>,fun<nm::EW_LEQ, uint8_t, nm::Rational64>,fun<nm::EW_LEQ, uint8_t, nm::Rational128>,fun<nm::EW_LEQ, uint8_t, nm::RubyObject>},\
735
+ {fun<nm::EW_LEQ, uint16_t, uint8_t>,fun<nm::EW_LEQ, uint16_t, int8_t>,fun<nm::EW_LEQ, uint16_t, int16_t>,fun<nm::EW_LEQ, uint16_t, int32_t>,fun<nm::EW_LEQ, uint16_t, int64_t>,fun<nm::EW_LEQ, uint16_t, float32_t>,fun<nm::EW_LEQ, uint16_t, float64_t>,fun<nm::EW_LEQ, uint16_t, nm::Complex64>,fun<nm::EW_LEQ, uint16_t, nm::Complex128>,fun<nm::EW_LEQ, uint16_t, nm::Rational32>,fun<nm::EW_LEQ, uint16_t, nm::Rational64>,fun<nm::EW_LEQ, uint16_t, nm::Rational128>,fun<nm::EW_LEQ, uint16_t, nm::RubyObject>},\
736
+ {fun<nm::EW_LEQ, uint32_t, uint8_t>,fun<nm::EW_LEQ, uint32_t, int8_t>,fun<nm::EW_LEQ, uint32_t, int16_t>,fun<nm::EW_LEQ, uint32_t, int32_t>,fun<nm::EW_LEQ, uint32_t, int64_t>,fun<nm::EW_LEQ, uint32_t, float32_t>,fun<nm::EW_LEQ, uint32_t, float64_t>,fun<nm::EW_LEQ, uint32_t, nm::Complex64>,fun<nm::EW_LEQ, uint32_t, nm::Complex128>,fun<nm::EW_LEQ, uint32_t, nm::Rational32>,fun<nm::EW_LEQ, uint32_t, nm::Rational64>,fun<nm::EW_LEQ, uint32_t, nm::Rational128>,fun<nm::EW_LEQ, uint32_t, nm::RubyObject>},\
737
+ {fun<nm::EW_LEQ, uint64_t, uint8_t>,fun<nm::EW_LEQ, uint64_t, int8_t>,fun<nm::EW_LEQ, uint64_t, int16_t>,fun<nm::EW_LEQ, uint64_t, int32_t>,fun<nm::EW_LEQ, uint64_t, int64_t>,fun<nm::EW_LEQ, uint64_t, float32_t>,fun<nm::EW_LEQ, uint64_t, float64_t>,fun<nm::EW_LEQ, uint64_t, nm::Complex64>,fun<nm::EW_LEQ, uint64_t, nm::Complex128>,fun<nm::EW_LEQ, uint64_t, nm::Rational32>,fun<nm::EW_LEQ, uint64_t, nm::Rational64>,fun<nm::EW_LEQ, uint64_t, nm::Rational128>,fun<nm::EW_LEQ, uint64_t, nm::RubyObject>}},\
738
+ {{fun<nm::EW_GEQ, uint8_t, uint8_t>,fun<nm::EW_GEQ, uint8_t, int8_t>,fun<nm::EW_GEQ, uint8_t, int16_t>,fun<nm::EW_GEQ, uint8_t, int32_t>,fun<nm::EW_GEQ, uint8_t, int64_t>,fun<nm::EW_GEQ, uint8_t, float32_t>,fun<nm::EW_GEQ, uint8_t, float64_t>,fun<nm::EW_GEQ, uint8_t, nm::Complex64>,fun<nm::EW_GEQ, uint8_t, nm::Complex128>,fun<nm::EW_GEQ, uint8_t, nm::Rational32>,fun<nm::EW_GEQ, uint8_t, nm::Rational64>,fun<nm::EW_GEQ, uint8_t, nm::Rational128>,fun<nm::EW_GEQ, uint8_t, nm::RubyObject>},\
739
+ {fun<nm::EW_GEQ, uint16_t, uint8_t>,fun<nm::EW_GEQ, uint16_t, int8_t>,fun<nm::EW_GEQ, uint16_t, int16_t>,fun<nm::EW_GEQ, uint16_t, int32_t>,fun<nm::EW_GEQ, uint16_t, int64_t>,fun<nm::EW_GEQ, uint16_t, float32_t>,fun<nm::EW_GEQ, uint16_t, float64_t>,fun<nm::EW_GEQ, uint16_t, nm::Complex64>,fun<nm::EW_GEQ, uint16_t, nm::Complex128>,fun<nm::EW_GEQ, uint16_t, nm::Rational32>,fun<nm::EW_GEQ, uint16_t, nm::Rational64>,fun<nm::EW_GEQ, uint16_t, nm::Rational128>,fun<nm::EW_GEQ, uint16_t, nm::RubyObject>},\
740
+ {fun<nm::EW_GEQ, uint32_t, uint8_t>,fun<nm::EW_GEQ, uint32_t, int8_t>,fun<nm::EW_GEQ, uint32_t, int16_t>,fun<nm::EW_GEQ, uint32_t, int32_t>,fun<nm::EW_GEQ, uint32_t, int64_t>,fun<nm::EW_GEQ, uint32_t, float32_t>,fun<nm::EW_GEQ, uint32_t, float64_t>,fun<nm::EW_GEQ, uint32_t, nm::Complex64>,fun<nm::EW_GEQ, uint32_t, nm::Complex128>,fun<nm::EW_GEQ, uint32_t, nm::Rational32>,fun<nm::EW_GEQ, uint32_t, nm::Rational64>,fun<nm::EW_GEQ, uint32_t, nm::Rational128>,fun<nm::EW_GEQ, uint32_t, nm::RubyObject>},\
741
+ {fun<nm::EW_GEQ, uint64_t, uint8_t>,fun<nm::EW_GEQ, uint64_t, int8_t>,fun<nm::EW_GEQ, uint64_t, int16_t>,fun<nm::EW_GEQ, uint64_t, int32_t>,fun<nm::EW_GEQ, uint64_t, int64_t>,fun<nm::EW_GEQ, uint64_t, float32_t>,fun<nm::EW_GEQ, uint64_t, float64_t>,fun<nm::EW_GEQ, uint64_t, nm::Complex64>,fun<nm::EW_GEQ, uint64_t, nm::Complex128>,fun<nm::EW_GEQ, uint64_t, nm::Rational32>,fun<nm::EW_GEQ, uint64_t, nm::Rational64>,fun<nm::EW_GEQ, uint64_t, nm::Rational128>,fun<nm::EW_GEQ, uint64_t, nm::RubyObject>}}};
742
+
743
+
744
+ extern "C" {
745
+
746
+
747
+ /*
748
+ * Data
749
+ */
750
+
751
+ // regular data types
752
+ extern const char* const DTYPE_NAMES[nm::NUM_DTYPES];
753
+ extern const size_t DTYPE_SIZES[nm::NUM_DTYPES];
754
+
755
+ extern const nm::dtype_t Upcast[nm::NUM_DTYPES][nm::NUM_DTYPES];
756
+
757
+
758
+ /*
759
+ * Functions
760
+ */
761
+
762
+
763
+ void* rubyobj_to_cval(VALUE val, nm::dtype_t dtype);
764
+ void rubyval_to_cval(VALUE val, nm::dtype_t dtype, void* loc);
765
+ nm::RubyObject rubyobj_from_cval(void* val, nm::dtype_t dtype);
766
+
767
+ void nm_init_data();
768
+
769
+ } // end of extern "C" block
770
+
771
+ #endif // DATA_H