nmatrix 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/.gitignore +27 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +3 -5
  4. data/Guardfile +6 -0
  5. data/History.txt +33 -0
  6. data/Manifest.txt +41 -38
  7. data/README.rdoc +88 -11
  8. data/Rakefile +35 -53
  9. data/ext/nmatrix/data/complex.h +372 -0
  10. data/ext/nmatrix/data/data.cpp +275 -0
  11. data/ext/nmatrix/data/data.h +707 -0
  12. data/ext/nmatrix/data/rational.h +421 -0
  13. data/ext/nmatrix/data/ruby_object.h +446 -0
  14. data/ext/nmatrix/extconf.rb +101 -51
  15. data/ext/nmatrix/new_extconf.rb +56 -0
  16. data/ext/nmatrix/nmatrix.cpp +1609 -0
  17. data/ext/nmatrix/nmatrix.h +265 -849
  18. data/ext/nmatrix/ruby_constants.cpp +134 -0
  19. data/ext/nmatrix/ruby_constants.h +103 -0
  20. data/ext/nmatrix/storage/common.cpp +70 -0
  21. data/ext/nmatrix/storage/common.h +170 -0
  22. data/ext/nmatrix/storage/dense.cpp +665 -0
  23. data/ext/nmatrix/storage/dense.h +116 -0
  24. data/ext/nmatrix/storage/list.cpp +1088 -0
  25. data/ext/nmatrix/storage/list.h +129 -0
  26. data/ext/nmatrix/storage/storage.cpp +658 -0
  27. data/ext/nmatrix/storage/storage.h +99 -0
  28. data/ext/nmatrix/storage/yale.cpp +1601 -0
  29. data/ext/nmatrix/storage/yale.h +208 -0
  30. data/ext/nmatrix/ttable_helper.rb +126 -0
  31. data/ext/nmatrix/{yale/smmp1_header.template.c → types.h} +36 -9
  32. data/ext/nmatrix/util/io.cpp +295 -0
  33. data/ext/nmatrix/util/io.h +117 -0
  34. data/ext/nmatrix/util/lapack.h +1175 -0
  35. data/ext/nmatrix/util/math.cpp +557 -0
  36. data/ext/nmatrix/util/math.h +1363 -0
  37. data/ext/nmatrix/util/sl_list.cpp +475 -0
  38. data/ext/nmatrix/util/sl_list.h +255 -0
  39. data/ext/nmatrix/util/util.h +78 -0
  40. data/lib/nmatrix/blas.rb +70 -0
  41. data/lib/nmatrix/io/mat5_reader.rb +567 -0
  42. data/lib/nmatrix/io/mat_reader.rb +162 -0
  43. data/lib/{string.rb → nmatrix/monkeys.rb} +49 -2
  44. data/lib/nmatrix/nmatrix.rb +199 -0
  45. data/lib/nmatrix/nvector.rb +103 -0
  46. data/lib/nmatrix/version.rb +27 -0
  47. data/lib/nmatrix.rb +22 -230
  48. data/nmatrix.gemspec +59 -0
  49. data/scripts/mac-brew-gcc.sh +47 -0
  50. data/spec/4x4_sparse.mat +0 -0
  51. data/spec/4x5_dense.mat +0 -0
  52. data/spec/blas_spec.rb +47 -0
  53. data/spec/elementwise_spec.rb +164 -0
  54. data/spec/io_spec.rb +60 -0
  55. data/spec/lapack_spec.rb +52 -0
  56. data/spec/math_spec.rb +96 -0
  57. data/spec/nmatrix_spec.rb +93 -89
  58. data/spec/nmatrix_yale_spec.rb +52 -36
  59. data/spec/nvector_spec.rb +1 -1
  60. data/spec/slice_spec.rb +257 -0
  61. data/spec/spec_helper.rb +51 -0
  62. data/spec/utm5940.mtx +83844 -0
  63. metadata +113 -71
  64. data/.autotest +0 -23
  65. data/.gemtest +0 -0
  66. data/ext/nmatrix/cblas.c +0 -150
  67. data/ext/nmatrix/dense/blas_header.template.c +0 -52
  68. data/ext/nmatrix/dense/elementwise.template.c +0 -107
  69. data/ext/nmatrix/dense/gemm.template.c +0 -159
  70. data/ext/nmatrix/dense/gemv.template.c +0 -130
  71. data/ext/nmatrix/dense/rationalmath.template.c +0 -68
  72. data/ext/nmatrix/dense.c +0 -307
  73. data/ext/nmatrix/depend +0 -18
  74. data/ext/nmatrix/generator/syntax_tree.rb +0 -481
  75. data/ext/nmatrix/generator.rb +0 -594
  76. data/ext/nmatrix/list.c +0 -774
  77. data/ext/nmatrix/nmatrix.c +0 -1977
  78. data/ext/nmatrix/rational.c +0 -98
  79. data/ext/nmatrix/yale/complexmath.template.c +0 -71
  80. data/ext/nmatrix/yale/elementwise.template.c +0 -46
  81. data/ext/nmatrix/yale/elementwise_op.template.c +0 -73
  82. data/ext/nmatrix/yale/numbmm.template.c +0 -94
  83. data/ext/nmatrix/yale/smmp1.template.c +0 -21
  84. data/ext/nmatrix/yale/smmp2.template.c +0 -43
  85. data/ext/nmatrix/yale/smmp2_header.template.c +0 -46
  86. data/ext/nmatrix/yale/sort_columns.template.c +0 -56
  87. data/ext/nmatrix/yale/symbmm.template.c +0 -54
  88. data/ext/nmatrix/yale/transp.template.c +0 -68
  89. data/ext/nmatrix/yale.c +0 -726
  90. data/lib/array.rb +0 -67
  91. data/spec/syntax_tree_spec.rb +0 -46
@@ -0,0 +1,707 @@
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 - 2012, Ruby Science Foundation
13
+ // NMatrix is Copyright (c) 2012, 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
+
35
+ /*
36
+ * Project Includes
37
+ */
38
+
39
+ #include "nmatrix.h"
40
+
41
+ #include "types.h"
42
+
43
+ #include "complex.h"
44
+ #include "rational.h"
45
+ #include "ruby_object.h"
46
+
47
+ namespace nm {
48
+ /*
49
+ * Constants
50
+ */
51
+
52
+ const int NUM_DTYPES = 13;
53
+ const int NUM_ITYPES = 4;
54
+ const int NUM_EWOPS = 11;
55
+ const int NUM_NONCOMP_EWOPS = 5;
56
+
57
+ enum ewop_t {
58
+ EW_ADD,
59
+ EW_SUB,
60
+ EW_MUL,
61
+ EW_DIV,
62
+ EW_MOD,
63
+ EW_EQEQ,
64
+ EW_NEQ,
65
+ EW_LT,
66
+ EW_GT,
67
+ EW_LEQ,
68
+ EW_GEQ
69
+ };
70
+
71
+ } // end of namespace nm
72
+
73
+ /*
74
+ * Macros
75
+ */
76
+
77
+ #define STYPE_MARK_TABLE(name) \
78
+ static void (*(name)[nm::NUM_STYPES])(void*) = { \
79
+ nm_dense_storage_mark, \
80
+ nm_list_storage_mark, \
81
+ nm_yale_storage_mark \
82
+ };
83
+
84
+ #define STYPE_CAST_COPY_TABLE(name) \
85
+ static STORAGE* (*(name)[nm::NUM_STYPES][nm::NUM_STYPES])(const STORAGE*, dtype_t) = { \
86
+ { nm_dense_storage_cast_copy, nm_dense_storage_from_list, nm_dense_storage_from_yale }, \
87
+ { nm_list_storage_from_dense, nm_list_storage_cast_copy, nm_list_storage_from_yale }, \
88
+ { nm_yale_storage_from_dense, nm_yale_storage_from_list, nm_yale_storage_cast_copy } \
89
+ };
90
+
91
+ /*
92
+ * Defines a static array that hold function pointers to dtype templated
93
+ * versions of the specified function.
94
+ */
95
+ #define DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
96
+
97
+ #define NAMED_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
98
+ static ret (*(name)[nm::NUM_DTYPES])(__VA_ARGS__) = { \
99
+ fun<uint8_t>, \
100
+ fun<int8_t>, \
101
+ fun<int16_t>, \
102
+ fun<int32_t>, \
103
+ fun<int64_t>, \
104
+ fun<float32_t>, \
105
+ fun<float64_t>, \
106
+ fun<nm::Complex64>, \
107
+ fun<nm::Complex128>, \
108
+ fun<nm::Rational32>, \
109
+ fun<nm::Rational64>, \
110
+ fun<nm::Rational128>, \
111
+ fun<nm::RubyObject> \
112
+ };
113
+
114
+ /*
115
+ * Defines a static array that holds function pointers to itype templated
116
+ * versions of the specified function.
117
+ */
118
+ #define ITYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_ITYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
119
+
120
+ #define NAMED_ITYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
121
+ static ret (*(name)[nm::NUM_ITYPES])(__VA_ARGS__) = { \
122
+ fun<uint8_t>, \
123
+ fun<uint16_t>, \
124
+ fun<uint32_t>, \
125
+ fun<uint64_t> \
126
+ };
127
+
128
+ #define ITYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_ITYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
129
+
130
+ /*
131
+ * Same as DTYPE_TEMPLATE_TABLE but for functions that have two template
132
+ * parameters.
133
+ *
134
+ * The left-hand DType is used as the first index, and the right-hand side is
135
+ * the second index. Not all left- and right-hand side combinations are valid,
136
+ * and an invalid combination will result in a NULL pointer.
137
+ */
138
+ #define LR_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_LR_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
139
+
140
+ #define NAMED_LR_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
141
+ static ret (*(name)[nm::NUM_DTYPES][nm::NUM_DTYPES])(__VA_ARGS__) = { \
142
+ {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>, \
143
+ fun<uint8_t, nm::Complex64>, fun<uint8_t, nm::Complex128>, fun<uint8_t, nm::Rational32>, fun<uint8_t, nm::Rational64>, \
144
+ fun<uint8_t, nm::Rational128>, NULL}, \
145
+ \
146
+ {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>, \
147
+ 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>, NULL}, \
148
+ \
149
+ {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>, \
150
+ 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>, NULL}, \
151
+ \
152
+ {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>, \
153
+ 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>, NULL}, \
154
+ \
155
+ {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>, \
156
+ 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>, NULL}, \
157
+ \
158
+ {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>, \
159
+ 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>, \
160
+ fun<float32_t, nm::Rational64>, fun<float32_t, nm::Rational128>, NULL}, \
161
+ \
162
+ {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>, \
163
+ 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>, \
164
+ fun<float64_t, nm::Rational64>, fun<float64_t, nm::Rational128>, NULL}, \
165
+ \
166
+ {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>, \
167
+ fun<nm::Complex64, float32_t>, fun<nm::Complex64, float64_t>, fun<nm::Complex64, nm::Complex64>, fun<nm::Complex64, nm::Complex128>, \
168
+ fun<nm::Complex64, nm::Rational32>, fun<nm::Complex64, nm::Rational64>, fun<nm::Complex64, nm::Rational128>, NULL}, \
169
+ \
170
+ {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>, \
171
+ fun<nm::Complex128, float32_t>, fun<nm::Complex128, float64_t>, fun<nm::Complex128, nm::Complex64>, fun<nm::Complex128, nm::Complex128>, \
172
+ fun<nm::Complex128, nm::Rational32>, fun<nm::Complex128, nm::Rational64>, fun<nm::Complex128, nm::Rational128>, NULL}, \
173
+ \
174
+ {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, \
175
+ NULL, NULL, fun<nm::Rational32, nm::Rational32>, fun<nm::Rational32, nm::Rational64>, fun<nm::Rational32, nm::Rational128>, NULL}, \
176
+ \
177
+ {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, \
178
+ NULL, NULL, fun<nm::Rational64, nm::Rational32>, fun<nm::Rational64, nm::Rational64>, fun<nm::Rational64, nm::Rational128>, NULL}, \
179
+ \
180
+ {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, \
181
+ NULL, NULL, NULL, fun<nm::Rational128, nm::Rational32>, fun<nm::Rational128, nm::Rational64>, fun<nm::Rational128, nm::Rational128>, NULL}, \
182
+ \
183
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::RubyObject, nm::RubyObject>} \
184
+ };
185
+
186
+ /*
187
+ * Defines a static array that holds function pointers to operation, and left-
188
+ * and right-side dtype templated version sof the specified function.
189
+ */
190
+ #define OP_LR_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_OP_LR_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
191
+
192
+ #define NAMED_OP_LR_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
193
+ static ret (*(name)[nm::NUM_EWOPS][nm::NUM_DTYPES][nm::NUM_DTYPES])(__VA_ARGS__) = { \
194
+ { \
195
+ {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>, \
196
+ 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>, \
197
+ 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}, \
198
+ \
199
+ {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>, \
200
+ 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>, \
201
+ 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}, \
202
+ \
203
+ {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>, \
204
+ 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>, \
205
+ 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}, \
206
+ \
207
+ {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>, \
208
+ 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>, \
209
+ 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}, \
210
+ \
211
+ {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>, \
212
+ 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>, \
213
+ 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}, \
214
+ \
215
+ {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>, \
216
+ 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>, \
217
+ 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}, \
218
+ \
219
+ {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>, \
220
+ 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>, \
221
+ 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}, \
222
+ \
223
+ {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>, \
224
+ 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>, \
225
+ fun<nm::EW_ADD, nm::Complex64, nm::Complex128>, fun<nm::EW_ADD, nm::Complex64, nm::Rational32>, fun<nm::EW_ADD, nm::Complex64, nm::Rational64>, \
226
+ fun<nm::EW_ADD, nm::Complex64, nm::Rational128>, NULL}, \
227
+ \
228
+ {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>, \
229
+ 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>, \
230
+ fun<nm::EW_ADD, nm::Complex128, nm::Complex128>, fun<nm::EW_ADD, nm::Complex128, nm::Rational32>, fun<nm::EW_ADD, nm::Complex128, nm::Rational64>, \
231
+ fun<nm::EW_ADD, nm::Complex128, nm::Rational128>, NULL}, \
232
+ \
233
+ {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>, \
234
+ 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>, \
235
+ fun<nm::EW_ADD, nm::Rational32, nm::Rational128>, NULL}, \
236
+ \
237
+ {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>, \
238
+ 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>, \
239
+ fun<nm::EW_ADD, nm::Rational64, nm::Rational128>, NULL}, \
240
+ \
241
+ {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>, \
242
+ 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>, \
243
+ fun<nm::EW_ADD, nm::Rational128, nm::Rational128>, NULL}, \
244
+ \
245
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_ADD, nm::RubyObject, nm::RubyObject>} \
246
+ }, \
247
+ \
248
+ { \
249
+ {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>, \
250
+ 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>, \
251
+ 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}, \
252
+ \
253
+ {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>, \
254
+ 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>, \
255
+ 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}, \
256
+ \
257
+ {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>, \
258
+ 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>, \
259
+ 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}, \
260
+ \
261
+ {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>, \
262
+ 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>, \
263
+ 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}, \
264
+ \
265
+ {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>, \
266
+ 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>, \
267
+ 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}, \
268
+ \
269
+ {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>, \
270
+ 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>, \
271
+ 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}, \
272
+ \
273
+ {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>, \
274
+ 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>, \
275
+ 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}, \
276
+ \
277
+ {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>, \
278
+ 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>, \
279
+ fun<nm::EW_SUB, nm::Complex64, nm::Complex128>, fun<nm::EW_SUB, nm::Complex64, nm::Rational32>, fun<nm::EW_SUB, nm::Complex64, nm::Rational64>, \
280
+ fun<nm::EW_SUB, nm::Complex64, nm::Rational128>, NULL}, \
281
+ \
282
+ {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>, \
283
+ 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>, \
284
+ fun<nm::EW_SUB, nm::Complex128, nm::Complex128>, fun<nm::EW_SUB, nm::Complex128, nm::Rational32>, fun<nm::EW_SUB, nm::Complex128, nm::Rational64>, \
285
+ fun<nm::EW_SUB, nm::Complex128, nm::Rational128>, NULL}, \
286
+ \
287
+ {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>, \
288
+ 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>, \
289
+ fun<nm::EW_SUB, nm::Rational32, nm::Rational128>, NULL}, \
290
+ \
291
+ {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>, \
292
+ 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>, \
293
+ fun<nm::EW_SUB, nm::Rational64, nm::Rational128>, NULL}, \
294
+ \
295
+ {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>, \
296
+ 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>, \
297
+ fun<nm::EW_SUB, nm::Rational128, nm::Rational128>, NULL}, \
298
+ \
299
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_SUB, nm::RubyObject, nm::RubyObject>} \
300
+ }, \
301
+ \
302
+ { \
303
+ {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>, \
304
+ 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>, \
305
+ 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}, \
306
+ \
307
+ {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>, \
308
+ 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>, \
309
+ 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}, \
310
+ \
311
+ {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>, \
312
+ 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>, \
313
+ 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}, \
314
+ \
315
+ {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>, \
316
+ 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>, \
317
+ 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}, \
318
+ \
319
+ {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>, \
320
+ 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>, \
321
+ 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}, \
322
+ \
323
+ {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>, \
324
+ 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>, \
325
+ 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}, \
326
+ \
327
+ {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>, \
328
+ 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>, \
329
+ 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}, \
330
+ \
331
+ {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>, \
332
+ 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>, \
333
+ fun<nm::EW_MUL, nm::Complex64, nm::Complex128>, fun<nm::EW_MUL, nm::Complex64, nm::Rational32>, fun<nm::EW_MUL, nm::Complex64, nm::Rational64>, \
334
+ fun<nm::EW_MUL, nm::Complex64, nm::Rational128>, NULL}, \
335
+ \
336
+ {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>, \
337
+ 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>, \
338
+ fun<nm::EW_MUL, nm::Complex128, nm::Complex128>, fun<nm::EW_MUL, nm::Complex128, nm::Rational32>, fun<nm::EW_MUL, nm::Complex128, nm::Rational64>, \
339
+ fun<nm::EW_MUL, nm::Complex128, nm::Rational128>, NULL}, \
340
+ \
341
+ {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>, \
342
+ 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>, \
343
+ fun<nm::EW_MUL, nm::Rational32, nm::Rational128>, NULL}, \
344
+ \
345
+ {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>, \
346
+ 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>, \
347
+ fun<nm::EW_MUL, nm::Rational64, nm::Rational128>, NULL}, \
348
+ \
349
+ {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>, \
350
+ 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>, \
351
+ fun<nm::EW_MUL, nm::Rational128, nm::Rational128>, NULL}, \
352
+ \
353
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_MUL, nm::RubyObject, nm::RubyObject>} \
354
+ }, \
355
+ \
356
+ { \
357
+ {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>, \
358
+ 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>, \
359
+ 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}, \
360
+ \
361
+ {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>, \
362
+ 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>, \
363
+ 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}, \
364
+ \
365
+ {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>, \
366
+ 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>, \
367
+ 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}, \
368
+ \
369
+ {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>, \
370
+ 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>, \
371
+ 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}, \
372
+ \
373
+ {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>, \
374
+ 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>, \
375
+ 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}, \
376
+ \
377
+ {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>, \
378
+ 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>, \
379
+ 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}, \
380
+ \
381
+ {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>, \
382
+ 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>, \
383
+ 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}, \
384
+ \
385
+ {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>, \
386
+ 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>, \
387
+ fun<nm::EW_DIV, nm::Complex64, nm::Complex128>, fun<nm::EW_DIV, nm::Complex64, nm::Rational32>, fun<nm::EW_DIV, nm::Complex64, nm::Rational64>, \
388
+ fun<nm::EW_DIV, nm::Complex64, nm::Rational128>, NULL}, \
389
+ \
390
+ {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>, \
391
+ 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>, \
392
+ fun<nm::EW_DIV, nm::Complex128, nm::Complex128>, fun<nm::EW_DIV, nm::Complex128, nm::Rational32>, fun<nm::EW_DIV, nm::Complex128, nm::Rational64>, \
393
+ fun<nm::EW_DIV, nm::Complex128, nm::Rational128>, NULL}, \
394
+ \
395
+ {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>, \
396
+ 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>, \
397
+ fun<nm::EW_DIV, nm::Rational32, nm::Rational128>, NULL}, \
398
+ \
399
+ {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>, \
400
+ 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>, \
401
+ fun<nm::EW_DIV, nm::Rational64, nm::Rational128>, NULL}, \
402
+ \
403
+ {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>, \
404
+ 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>, \
405
+ fun<nm::EW_DIV, nm::Rational128, nm::Rational128>, NULL}, \
406
+ \
407
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_DIV, nm::RubyObject, nm::RubyObject>} \
408
+ }, \
409
+ \
410
+ { \
411
+ {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>, \
412
+ 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>, \
413
+ 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}, \
414
+ \
415
+ {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>, \
416
+ 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>, \
417
+ 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}, \
418
+ \
419
+ {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>, \
420
+ 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>, \
421
+ 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}, \
422
+ \
423
+ {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>, \
424
+ 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>, \
425
+ 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}, \
426
+ \
427
+ {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>, \
428
+ 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>, \
429
+ 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}, \
430
+ \
431
+ {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>, \
432
+ 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>, \
433
+ 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}, \
434
+ \
435
+ {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>, \
436
+ 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>, \
437
+ 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}, \
438
+ \
439
+ {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>, \
440
+ 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>, \
441
+ fun<nm::EW_MOD, nm::Complex64, nm::Complex128>, fun<nm::EW_MOD, nm::Complex64, nm::Rational32>, fun<nm::EW_MOD, nm::Complex64, nm::Rational64>, \
442
+ fun<nm::EW_MOD, nm::Complex64, nm::Rational128>, NULL}, \
443
+ \
444
+ {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>, \
445
+ 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>, \
446
+ fun<nm::EW_MOD, nm::Complex128, nm::Complex128>, fun<nm::EW_MOD, nm::Complex128, nm::Rational32>, fun<nm::EW_MOD, nm::Complex128, nm::Rational64>, \
447
+ fun<nm::EW_MOD, nm::Complex128, nm::Rational128>, NULL}, \
448
+ \
449
+ {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>, \
450
+ 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>, \
451
+ fun<nm::EW_MOD, nm::Rational32, nm::Rational128>, NULL}, \
452
+ \
453
+ {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>, \
454
+ 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>, \
455
+ fun<nm::EW_MOD, nm::Rational64, nm::Rational128>, NULL}, \
456
+ \
457
+ {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>, \
458
+ 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>, \
459
+ fun<nm::EW_MOD, nm::Rational128, nm::Rational128>, NULL}, \
460
+ \
461
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_MOD, nm::RubyObject, nm::RubyObject>} \
462
+ }, \
463
+ \
464
+ { \
465
+ {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>, \
466
+ 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>, \
467
+ fun<nm::EW_EQEQ, uint8_t, nm::Complex128>, fun<nm::EW_EQEQ, uint8_t, nm::Rational32>, fun<nm::EW_EQEQ, uint8_t, nm::Rational64>, \
468
+ fun<nm::EW_EQEQ, uint8_t, nm::Rational128>, NULL}, \
469
+ {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}, \
470
+ {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}, \
471
+ {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}, \
472
+ {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}, \
473
+ {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}, \
474
+ {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}, \
475
+ {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}, \
476
+ {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}, \
477
+ {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}, \
478
+ {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}, \
479
+ {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}, \
480
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_EQEQ, nm::RubyObject, nm::RubyObject>} \
481
+ }, \
482
+ {{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}, \
483
+ {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}, \
484
+ {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}, \
485
+ {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}, \
486
+ {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}, \
487
+ {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}, \
488
+ {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}, \
489
+ {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}, \
490
+ {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}, \
491
+ {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}, \
492
+ {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}, \
493
+ {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}, \
494
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_NEQ, nm::RubyObject, nm::RubyObject>}}, \
495
+ {{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}, \
496
+ {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}, \
497
+ {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}, \
498
+ {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}, \
499
+ {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}, \
500
+ {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}, \
501
+ {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}, \
502
+ {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}, \
503
+ {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}, \
504
+ {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}, \
505
+ {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}, \
506
+ {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}, \
507
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_LT, nm::RubyObject, nm::RubyObject>}}, \
508
+ {{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}, \
509
+ {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}, \
510
+ {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}, \
511
+ {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}, \
512
+ {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}, \
513
+ {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}, \
514
+ {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}, \
515
+ {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}, \
516
+ {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}, \
517
+ {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}, \
518
+ {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}, \
519
+ {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}, \
520
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_GT, nm::RubyObject, nm::RubyObject>}}, \
521
+ {{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}, \
522
+ {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}, \
523
+ {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}, \
524
+ {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}, \
525
+ {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}, \
526
+ {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}, \
527
+ {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}, \
528
+ {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}, \
529
+ {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}, \
530
+ {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}, \
531
+ {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}, \
532
+ {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}, \
533
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_LEQ, nm::RubyObject, nm::RubyObject>}}, \
534
+ {{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}, \
535
+ {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}, \
536
+ {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}, \
537
+ {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}, \
538
+ {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}, \
539
+ {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}, \
540
+ {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}, \
541
+ {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}, \
542
+ {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}, \
543
+ {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}, \
544
+ {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}, \
545
+ {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}, \
546
+ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, fun<nm::EW_GEQ, nm::RubyObject, nm::RubyObject>} \
547
+ } \
548
+ };
549
+
550
+ /*
551
+ * Defines a static array that holds function pointers to an elementwise op,
552
+ * itype, dtype templated versions of the specified function.
553
+ */
554
+ #define OP_ITYPE_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_OP_ITYPE_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
555
+
556
+ #define NAMED_OP_ITYPE_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
557
+ static ret (*(name)[nm::NUM_EWOPS][nm::NUM_ITYPES][nm::NUM_DTYPES])(__VA_ARGS__) = \
558
+ {{{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>},\
559
+ {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>},\
560
+ {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>},\
561
+ {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>}},\
562
+ {{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>},\
563
+ {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>},\
564
+ {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>},\
565
+ {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>}},\
566
+ {{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>},\
567
+ {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>},\
568
+ {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>},\
569
+ {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>}},\
570
+ {{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>},\
571
+ {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>},\
572
+ {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>},\
573
+ {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>}},\
574
+ {{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>},\
575
+ {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>},\
576
+ {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>},\
577
+ {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>}},\
578
+ {{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>},\
579
+ {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>},\
580
+ {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>},\
581
+ {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>}},\
582
+ {{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>},\
583
+ {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>},\
584
+ {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>},\
585
+ {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>}},\
586
+ {{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>},\
587
+ {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>},\
588
+ {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>},\
589
+ {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>}},\
590
+ {{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>},\
591
+ {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>},\
592
+ {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>},\
593
+ {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>}},\
594
+ {{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>},\
595
+ {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>},\
596
+ {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>},\
597
+ {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>}},\
598
+ {{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>},\
599
+ {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>},\
600
+ {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>},\
601
+ {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>}}};
602
+
603
+ /*
604
+ * Defines a static array that holds function pointers to left dtype, right
605
+ * dtype, and itype templated versions of the specified function.
606
+ */
607
+ #define LRI_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_LRI_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
608
+
609
+ #define NAMED_LRI_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
610
+ static ret (*(name)[nm::NUM_DTYPES][nm::NUM_DTYPES][nm::NUM_ITYPES])(__VA_ARGS__) = { \
611
+ { \
612
+ {fun<uint8_t, uint8_t, uint8_t>, fun<uint8_t, uint8_t, uint16_t>, fun<uint8_t, uint8_t, uint32_t>, fun<uint8_t, uint8_t, uint64_t> }, \
613
+ {fun<uint8_t, int8_t, uint8_t>, fun<uint8_t, int8_t, uint16_t>, fun<uint8_t, int8_t, uint32_t>, fun<uint8_t, int8_t, uint64_t> }, \
614
+ {fun<uint8_t, int16_t, uint8_t>, fun<uint8_t, int16_t, uint16_t>, fun<uint8_t, int16_t, uint32_t>, fun<uint8_t, int16_t, uint64_t> }, \
615
+ {fun<uint8_t, int32_t, uint8_t>, fun<uint8_t, int32_t, uint16_t>, fun<uint8_t, int32_t, uint32_t>, fun<uint8_t, int32_t, uint64_t> }, \
616
+ {fun<uint8_t, int64_t, uint8_t>, fun<uint8_t, int64_t, uint16_t>, fun<uint8_t, int64_t, uint32_t>, fun<uint8_t, int64_t, uint64_t> }, \
617
+ {fun<uint8_t, float32_t, uint8_t>, fun<uint8_t, float32_t, uint16_t>, fun<uint8_t, float32_t, uint32_t>, fun<uint8_t, float32_t, uint64_t> }, \
618
+ {fun<uint8_t, float64_t, uint8_t>, fun<uint8_t, float64_t, uint16_t>, fun<uint8_t, float64_t, uint32_t>, fun<uint8_t, float64_t, uint64_t> }, \
619
+ {fun<uint8_t, nm::Complex64, uint8_t>, fun<uint8_t, nm::Complex64, uint16_t>, fun<uint8_t, nm::Complex64, uint32_t>, fun<uint8_t, nm::Complex64, uint64_t> }, \
620
+ {fun<uint8_t, nm::Complex128, uint8_t>, fun<uint8_t, nm::Complex128, uint16_t>, fun<uint8_t, nm::Complex128, uint32_t>, fun<uint8_t, nm::Complex128, uint64_t> }, \
621
+ {fun<uint8_t, nm::Rational32, uint8_t>, fun<uint8_t, nm::Rational32, uint16_t>, fun<uint8_t, nm::Rational32, uint32_t>, fun<uint8_t, nm::Rational32, uint64_t> }, \
622
+ {fun<uint8_t, nm::Rational64, uint8_t>, fun<uint8_t, nm::Rational64, uint16_t>, fun<uint8_t, nm::Rational64, uint32_t>, fun<uint8_t, nm::Rational64, uint64_t> }, \
623
+ {fun<uint8_t, nm::Rational128, uint8_t>, fun<uint8_t, nm::Rational128, uint16_t>, fun<uint8_t, nm::Rational128, uint32_t>, fun<uint8_t, nm::Rational128, uint64_t> }, \
624
+ {fun<uint8_t, nm::RubyObject, uint8_t>, fun<uint8_t, nm::RubyObject, uint16_t>, fun<uint8_t, nm::RubyObject, uint32_t>, fun<uint8_t, nm::RubyObject, uint64_t> } \
625
+ }, \
626
+ { \
627
+ {fun<int8_t, uint8_t, uint8_t>, fun<int8_t, uint8_t, uint16_t>, fun<int8_t, uint8_t, uint32_t>, fun<int8_t, uint8_t, uint64_t> }, \
628
+ {fun<int8_t, int8_t, uint8_t>, fun<int8_t, int8_t, uint16_t>, fun<int8_t, int8_t, uint32_t>, fun<int8_t, int8_t, uint64_t> }, \
629
+ {fun<int8_t, int16_t, uint8_t>, fun<int8_t, int16_t, uint16_t>, fun<int8_t, int16_t, uint32_t>, fun<int8_t, int16_t, uint64_t> }, \
630
+ {fun<int8_t, int32_t, uint8_t>, fun<int8_t, int32_t, uint16_t>, fun<int8_t, int32_t, uint32_t>, fun<int8_t, int32_t, uint64_t> }, \
631
+ {fun<int8_t, int64_t, uint8_t>, fun<int8_t, int64_t, uint16_t>, fun<int8_t, int64_t, uint32_t>, fun<int8_t, int64_t, uint64_t> }, \
632
+ {fun<int8_t, float32_t, uint8_t>, fun<int8_t, float32_t, uint16_t>, fun<int8_t, float32_t, uint32_t>, fun<int8_t, float32_t, uint64_t> }, \
633
+ {fun<int8_t, float64_t, uint8_t>, fun<int8_t, float64_t, uint16_t>, fun<int8_t, float64_t, uint32_t>, fun<int8_t, float64_t, uint64_t> }, \
634
+ {fun<int8_t, nm::Complex64, uint8_t>, fun<int8_t, nm::Complex64, uint16_t>, fun<int8_t, nm::Complex64, uint32_t>, fun<int8_t, nm::Complex64, uint64_t> }, \
635
+ {fun<int8_t, nm::Complex128, uint8_t>, fun<int8_t, nm::Complex128, uint16_t>, fun<int8_t, nm::Complex128, uint32_t>, fun<int8_t, nm::Complex128, uint64_t> }, \
636
+ {fun<int8_t, nm::Rational32, uint8_t>, fun<int8_t, nm::Rational32, uint16_t>, fun<int8_t, nm::Rational32, uint32_t>, fun<int8_t, nm::Rational32, uint64_t> }, \
637
+ {fun<int8_t, nm::Rational64, uint8_t>, fun<int8_t, nm::Rational64, uint16_t>, fun<int8_t, nm::Rational64, uint32_t>, fun<int8_t, nm::Rational64, uint64_t> }, \
638
+ {fun<int8_t, nm::Rational128, uint8_t>, fun<int8_t, nm::Rational128, uint16_t>, fun<int8_t, nm::Rational128, uint32_t>, fun<int8_t, nm::Rational128, uint64_t> }, \
639
+ {fun<int8_t, nm::RubyObject, uint8_t>, fun<int8_t, nm::RubyObject, uint16_t>, fun<int8_t, nm::RubyObject, uint32_t>, fun<int8_t, nm::RubyObject, uint64_t> } \
640
+ }, \
641
+ {{fun<int16_t, uint8_t, uint8_t>, fun<int16_t, uint8_t, uint16_t>, fun<int16_t, uint8_t, uint32_t>, fun<int16_t, uint8_t, uint64_t> }, {fun<int16_t, int8_t, uint8_t>, fun<int16_t, int8_t, uint16_t>, fun<int16_t, int8_t, uint32_t>, fun<int16_t, int8_t, uint64_t> }, {fun<int16_t, int16_t, uint8_t>, fun<int16_t, int16_t, uint16_t>, fun<int16_t, int16_t, uint32_t>, fun<int16_t, int16_t, uint64_t> }, {fun<int16_t, int32_t, uint8_t>, fun<int16_t, int32_t, uint16_t>, fun<int16_t, int32_t, uint32_t>, fun<int16_t, int32_t, uint64_t> }, {fun<int16_t, int64_t, uint8_t>, fun<int16_t, int64_t, uint16_t>, fun<int16_t, int64_t, uint32_t>, fun<int16_t, int64_t, uint64_t> }, {fun<int16_t, float32_t, uint8_t>, fun<int16_t, float32_t, uint16_t>, fun<int16_t, float32_t, uint32_t>, fun<int16_t, float32_t, uint64_t> }, {fun<int16_t, float64_t, uint8_t>, fun<int16_t, float64_t, uint16_t>, fun<int16_t, float64_t, uint32_t>, fun<int16_t, float64_t, uint64_t> }, {fun<int16_t, nm::Complex64, uint8_t>, fun<int16_t, nm::Complex64, uint16_t>, fun<int16_t, nm::Complex64, uint32_t>, fun<int16_t, nm::Complex64, uint64_t> }, {fun<int16_t, nm::Complex128, uint8_t>, fun<int16_t, nm::Complex128, uint16_t>, fun<int16_t, nm::Complex128, uint32_t>, fun<int16_t, nm::Complex128, uint64_t> }, {fun<int16_t, nm::Rational32, uint8_t>, fun<int16_t, nm::Rational32, uint16_t>, fun<int16_t, nm::Rational32, uint32_t>, fun<int16_t, nm::Rational32, uint64_t> }, {fun<int16_t, nm::Rational64, uint8_t>, fun<int16_t, nm::Rational64, uint16_t>, fun<int16_t, nm::Rational64, uint32_t>, fun<int16_t, nm::Rational64, uint64_t> }, {fun<int16_t, nm::Rational128, uint8_t>, fun<int16_t, nm::Rational128, uint16_t>, fun<int16_t, nm::Rational128, uint32_t>, fun<int16_t, nm::Rational128, uint64_t> }, {fun<int16_t, nm::RubyObject, uint8_t>, fun<int16_t, nm::RubyObject, uint16_t>, fun<int16_t, nm::RubyObject, uint32_t>, fun<int16_t, nm::RubyObject, uint64_t> }}, \
642
+ {{fun<int32_t, uint8_t, uint8_t>, fun<int32_t, uint8_t, uint16_t>, fun<int32_t, uint8_t, uint32_t>, fun<int32_t, uint8_t, uint64_t> }, {fun<int32_t, int8_t, uint8_t>, fun<int32_t, int8_t, uint16_t>, fun<int32_t, int8_t, uint32_t>, fun<int32_t, int8_t, uint64_t> }, {fun<int32_t, int16_t, uint8_t>, fun<int32_t, int16_t, uint16_t>, fun<int32_t, int16_t, uint32_t>, fun<int32_t, int16_t, uint64_t> }, {fun<int32_t, int32_t, uint8_t>, fun<int32_t, int32_t, uint16_t>, fun<int32_t, int32_t, uint32_t>, fun<int32_t, int32_t, uint64_t> }, {fun<int32_t, int64_t, uint8_t>, fun<int32_t, int64_t, uint16_t>, fun<int32_t, int64_t, uint32_t>, fun<int32_t, int64_t, uint64_t> }, {fun<int32_t, float32_t, uint8_t>, fun<int32_t, float32_t, uint16_t>, fun<int32_t, float32_t, uint32_t>, fun<int32_t, float32_t, uint64_t> }, {fun<int32_t, float64_t, uint8_t>, fun<int32_t, float64_t, uint16_t>, fun<int32_t, float64_t, uint32_t>, fun<int32_t, float64_t, uint64_t> }, {fun<int32_t, nm::Complex64, uint8_t>, fun<int32_t, nm::Complex64, uint16_t>, fun<int32_t, nm::Complex64, uint32_t>, fun<int32_t, nm::Complex64, uint64_t> }, {fun<int32_t, nm::Complex128, uint8_t>, fun<int32_t, nm::Complex128, uint16_t>, fun<int32_t, nm::Complex128, uint32_t>, fun<int32_t, nm::Complex128, uint64_t> }, {fun<int32_t, nm::Rational32, uint8_t>, fun<int32_t, nm::Rational32, uint16_t>, fun<int32_t, nm::Rational32, uint32_t>, fun<int32_t, nm::Rational32, uint64_t> }, {fun<int32_t, nm::Rational64, uint8_t>, fun<int32_t, nm::Rational64, uint16_t>, fun<int32_t, nm::Rational64, uint32_t>, fun<int32_t, nm::Rational64, uint64_t> }, {fun<int32_t, nm::Rational128, uint8_t>, fun<int32_t, nm::Rational128, uint16_t>, fun<int32_t, nm::Rational128, uint32_t>, fun<int32_t, nm::Rational128, uint64_t> }, {fun<int32_t, nm::RubyObject, uint8_t>, fun<int32_t, nm::RubyObject, uint16_t>, fun<int32_t, nm::RubyObject, uint32_t>, fun<int32_t, nm::RubyObject, uint64_t> }}, \
643
+ {{fun<int64_t, uint8_t, uint8_t>, fun<int64_t, uint8_t, uint16_t>, fun<int64_t, uint8_t, uint32_t>, fun<int64_t, uint8_t, uint64_t> }, {fun<int64_t, int8_t, uint8_t>, fun<int64_t, int8_t, uint16_t>, fun<int64_t, int8_t, uint32_t>, fun<int64_t, int8_t, uint64_t> }, {fun<int64_t, int16_t, uint8_t>, fun<int64_t, int16_t, uint16_t>, fun<int64_t, int16_t, uint32_t>, fun<int64_t, int16_t, uint64_t> }, {fun<int64_t, int32_t, uint8_t>, fun<int64_t, int32_t, uint16_t>, fun<int64_t, int32_t, uint32_t>, fun<int64_t, int32_t, uint64_t> }, {fun<int64_t, int64_t, uint8_t>, fun<int64_t, int64_t, uint16_t>, fun<int64_t, int64_t, uint32_t>, fun<int64_t, int64_t, uint64_t> }, {fun<int64_t, float32_t, uint8_t>, fun<int64_t, float32_t, uint16_t>, fun<int64_t, float32_t, uint32_t>, fun<int64_t, float32_t, uint64_t> }, {fun<int64_t, float64_t, uint8_t>, fun<int64_t, float64_t, uint16_t>, fun<int64_t, float64_t, uint32_t>, fun<int64_t, float64_t, uint64_t> }, {fun<int64_t, nm::Complex64, uint8_t>, fun<int64_t, nm::Complex64, uint16_t>, fun<int64_t, nm::Complex64, uint32_t>, fun<int64_t, nm::Complex64, uint64_t> }, {fun<int64_t, nm::Complex128, uint8_t>, fun<int64_t, nm::Complex128, uint16_t>, fun<int64_t, nm::Complex128, uint32_t>, fun<int64_t, nm::Complex128, uint64_t> }, {fun<int64_t, nm::Rational32, uint8_t>, fun<int64_t, nm::Rational32, uint16_t>, fun<int64_t, nm::Rational32, uint32_t>, fun<int64_t, nm::Rational32, uint64_t> }, {fun<int64_t, nm::Rational64, uint8_t>, fun<int64_t, nm::Rational64, uint16_t>, fun<int64_t, nm::Rational64, uint32_t>, fun<int64_t, nm::Rational64, uint64_t> }, {fun<int64_t, nm::Rational128, uint8_t>, fun<int64_t, nm::Rational128, uint16_t>, fun<int64_t, nm::Rational128, uint32_t>, fun<int64_t, nm::Rational128, uint64_t> }, {fun<int64_t, nm::RubyObject, uint8_t>, fun<int64_t, nm::RubyObject, uint16_t>, fun<int64_t, nm::RubyObject, uint32_t>, fun<int64_t, nm::RubyObject, uint64_t> }}, \
644
+ {{fun<float32_t, uint8_t, uint8_t>, fun<float32_t, uint8_t, uint16_t>, fun<float32_t, uint8_t, uint32_t>, fun<float32_t, uint8_t, uint64_t> }, {fun<float32_t, int8_t, uint8_t>, fun<float32_t, int8_t, uint16_t>, fun<float32_t, int8_t, uint32_t>, fun<float32_t, int8_t, uint64_t> }, {fun<float32_t, int16_t, uint8_t>, fun<float32_t, int16_t, uint16_t>, fun<float32_t, int16_t, uint32_t>, fun<float32_t, int16_t, uint64_t> }, {fun<float32_t, int32_t, uint8_t>, fun<float32_t, int32_t, uint16_t>, fun<float32_t, int32_t, uint32_t>, fun<float32_t, int32_t, uint64_t> }, {fun<float32_t, int64_t, uint8_t>, fun<float32_t, int64_t, uint16_t>, fun<float32_t, int64_t, uint32_t>, fun<float32_t, int64_t, uint64_t> }, {fun<float32_t, float32_t, uint8_t>, fun<float32_t, float32_t, uint16_t>, fun<float32_t, float32_t, uint32_t>, fun<float32_t, float32_t, uint64_t> }, {fun<float32_t, float64_t, uint8_t>, fun<float32_t, float64_t, uint16_t>, fun<float32_t, float64_t, uint32_t>, fun<float32_t, float64_t, uint64_t> }, {fun<float32_t, nm::Complex64, uint8_t>, fun<float32_t, nm::Complex64, uint16_t>, fun<float32_t, nm::Complex64, uint32_t>, fun<float32_t, nm::Complex64, uint64_t> }, {fun<float32_t, nm::Complex128, uint8_t>, fun<float32_t, nm::Complex128, uint16_t>, fun<float32_t, nm::Complex128, uint32_t>, fun<float32_t, nm::Complex128, uint64_t> }, {fun<float32_t, nm::Rational32, uint8_t>, fun<float32_t, nm::Rational32, uint16_t>, fun<float32_t, nm::Rational32, uint32_t>, fun<float32_t, nm::Rational32, uint64_t> }, {fun<float32_t, nm::Rational64, uint8_t>, fun<float32_t, nm::Rational64, uint16_t>, fun<float32_t, nm::Rational64, uint32_t>, fun<float32_t, nm::Rational64, uint64_t> }, {fun<float32_t, nm::Rational128, uint8_t>, fun<float32_t, nm::Rational128, uint16_t>, fun<float32_t, nm::Rational128, uint32_t>, fun<float32_t, nm::Rational128, uint64_t> }, {fun<float32_t, nm::RubyObject, uint8_t>, fun<float32_t, nm::RubyObject, uint16_t>, fun<float32_t, nm::RubyObject, uint32_t>, fun<float32_t, nm::RubyObject, uint64_t> }}, \
645
+ {{fun<float64_t, uint8_t, uint8_t>, fun<float64_t, uint8_t, uint16_t>, fun<float64_t, uint8_t, uint32_t>, fun<float64_t, uint8_t, uint64_t> }, {fun<float64_t, int8_t, uint8_t>, fun<float64_t, int8_t, uint16_t>, fun<float64_t, int8_t, uint32_t>, fun<float64_t, int8_t, uint64_t> }, {fun<float64_t, int16_t, uint8_t>, fun<float64_t, int16_t, uint16_t>, fun<float64_t, int16_t, uint32_t>, fun<float64_t, int16_t, uint64_t> }, {fun<float64_t, int32_t, uint8_t>, fun<float64_t, int32_t, uint16_t>, fun<float64_t, int32_t, uint32_t>, fun<float64_t, int32_t, uint64_t> }, {fun<float64_t, int64_t, uint8_t>, fun<float64_t, int64_t, uint16_t>, fun<float64_t, int64_t, uint32_t>, fun<float64_t, int64_t, uint64_t> }, {fun<float64_t, float32_t, uint8_t>, fun<float64_t, float32_t, uint16_t>, fun<float64_t, float32_t, uint32_t>, fun<float64_t, float32_t, uint64_t> }, {fun<float64_t, float64_t, uint8_t>, fun<float64_t, float64_t, uint16_t>, fun<float64_t, float64_t, uint32_t>, fun<float64_t, float64_t, uint64_t> }, {fun<float64_t, nm::Complex64, uint8_t>, fun<float64_t, nm::Complex64, uint16_t>, fun<float64_t, nm::Complex64, uint32_t>, fun<float64_t, nm::Complex64, uint64_t> }, {fun<float64_t, nm::Complex128, uint8_t>, fun<float64_t, nm::Complex128, uint16_t>, fun<float64_t, nm::Complex128, uint32_t>, fun<float64_t, nm::Complex128, uint64_t> }, {fun<float64_t, nm::Rational32, uint8_t>, fun<float64_t, nm::Rational32, uint16_t>, fun<float64_t, nm::Rational32, uint32_t>, fun<float64_t, nm::Rational32, uint64_t> }, {fun<float64_t, nm::Rational64, uint8_t>, fun<float64_t, nm::Rational64, uint16_t>, fun<float64_t, nm::Rational64, uint32_t>, fun<float64_t, nm::Rational64, uint64_t> }, {fun<float64_t, nm::Rational128, uint8_t>, fun<float64_t, nm::Rational128, uint16_t>, fun<float64_t, nm::Rational128, uint32_t>, fun<float64_t, nm::Rational128, uint64_t> }, {fun<float64_t, nm::RubyObject, uint8_t>, fun<float64_t, nm::RubyObject, uint16_t>, fun<float64_t, nm::RubyObject, uint32_t>, fun<float64_t, nm::RubyObject, uint64_t> }}, \
646
+ {{fun<nm::Complex64, uint8_t, uint8_t>, fun<nm::Complex64, uint8_t, uint16_t>, fun<nm::Complex64, uint8_t, uint32_t>, fun<nm::Complex64, uint8_t, uint64_t> }, {fun<nm::Complex64, int8_t, uint8_t>, fun<nm::Complex64, int8_t, uint16_t>, fun<nm::Complex64, int8_t, uint32_t>, fun<nm::Complex64, int8_t, uint64_t> }, {fun<nm::Complex64, int16_t, uint8_t>, fun<nm::Complex64, int16_t, uint16_t>, fun<nm::Complex64, int16_t, uint32_t>, fun<nm::Complex64, int16_t, uint64_t> }, {fun<nm::Complex64, int32_t, uint8_t>, fun<nm::Complex64, int32_t, uint16_t>, fun<nm::Complex64, int32_t, uint32_t>, fun<nm::Complex64, int32_t, uint64_t> }, {fun<nm::Complex64, int64_t, uint8_t>, fun<nm::Complex64, int64_t, uint16_t>, fun<nm::Complex64, int64_t, uint32_t>, fun<nm::Complex64, int64_t, uint64_t> }, {fun<nm::Complex64, float32_t, uint8_t>, fun<nm::Complex64, float32_t, uint16_t>, fun<nm::Complex64, float32_t, uint32_t>, fun<nm::Complex64, float32_t, uint64_t> }, {fun<nm::Complex64, float64_t, uint8_t>, fun<nm::Complex64, float64_t, uint16_t>, fun<nm::Complex64, float64_t, uint32_t>, fun<nm::Complex64, float64_t, uint64_t> }, {fun<nm::Complex64, nm::Complex64, uint8_t>, fun<nm::Complex64, nm::Complex64, uint16_t>, fun<nm::Complex64, nm::Complex64, uint32_t>, fun<nm::Complex64, nm::Complex64, uint64_t> }, {fun<nm::Complex64, nm::Complex128, uint8_t>, fun<nm::Complex64, nm::Complex128, uint16_t>, fun<nm::Complex64, nm::Complex128, uint32_t>, fun<nm::Complex64, nm::Complex128, uint64_t> }, {fun<nm::Complex64, nm::Rational32, uint8_t>, fun<nm::Complex64, nm::Rational32, uint16_t>, fun<nm::Complex64, nm::Rational32, uint32_t>, fun<nm::Complex64, nm::Rational32, uint64_t> }, {fun<nm::Complex64, nm::Rational64, uint8_t>, fun<nm::Complex64, nm::Rational64, uint16_t>, fun<nm::Complex64, nm::Rational64, uint32_t>, fun<nm::Complex64, nm::Rational64, uint64_t> }, {fun<nm::Complex64, nm::Rational128, uint8_t>, fun<nm::Complex64, nm::Rational128, uint16_t>, fun<nm::Complex64, nm::Rational128, uint32_t>, fun<nm::Complex64, nm::Rational128, uint64_t> }, {fun<nm::Complex64, nm::RubyObject, uint8_t>, fun<nm::Complex64, nm::RubyObject, uint16_t>, fun<nm::Complex64, nm::RubyObject, uint32_t>, fun<nm::Complex64, nm::RubyObject, uint64_t> }}, \
647
+ {{fun<nm::Complex128, uint8_t, uint8_t>, fun<nm::Complex128, uint8_t, uint16_t>, fun<nm::Complex128, uint8_t, uint32_t>, fun<nm::Complex128, uint8_t, uint64_t> }, {fun<nm::Complex128, int8_t, uint8_t>, fun<nm::Complex128, int8_t, uint16_t>, fun<nm::Complex128, int8_t, uint32_t>, fun<nm::Complex128, int8_t, uint64_t> }, {fun<nm::Complex128, int16_t, uint8_t>, fun<nm::Complex128, int16_t, uint16_t>, fun<nm::Complex128, int16_t, uint32_t>, fun<nm::Complex128, int16_t, uint64_t> }, {fun<nm::Complex128, int32_t, uint8_t>, fun<nm::Complex128, int32_t, uint16_t>, fun<nm::Complex128, int32_t, uint32_t>, fun<nm::Complex128, int32_t, uint64_t> }, {fun<nm::Complex128, int64_t, uint8_t>, fun<nm::Complex128, int64_t, uint16_t>, fun<nm::Complex128, int64_t, uint32_t>, fun<nm::Complex128, int64_t, uint64_t> }, {fun<nm::Complex128, float32_t, uint8_t>, fun<nm::Complex128, float32_t, uint16_t>, fun<nm::Complex128, float32_t, uint32_t>, fun<nm::Complex128, float32_t, uint64_t> }, {fun<nm::Complex128, float64_t, uint8_t>, fun<nm::Complex128, float64_t, uint16_t>, fun<nm::Complex128, float64_t, uint32_t>, fun<nm::Complex128, float64_t, uint64_t> }, {fun<nm::Complex128, nm::Complex64, uint8_t>, fun<nm::Complex128, nm::Complex64, uint16_t>, fun<nm::Complex128, nm::Complex64, uint32_t>, fun<nm::Complex128, nm::Complex64, uint64_t> }, {fun<nm::Complex128, nm::Complex128, uint8_t>, fun<nm::Complex128, nm::Complex128, uint16_t>, fun<nm::Complex128, nm::Complex128, uint32_t>, fun<nm::Complex128, nm::Complex128, uint64_t> }, {fun<nm::Complex128, nm::Rational32, uint8_t>, fun<nm::Complex128, nm::Rational32, uint16_t>, fun<nm::Complex128, nm::Rational32, uint32_t>, fun<nm::Complex128, nm::Rational32, uint64_t> }, {fun<nm::Complex128, nm::Rational64, uint8_t>, fun<nm::Complex128, nm::Rational64, uint16_t>, fun<nm::Complex128, nm::Rational64, uint32_t>, fun<nm::Complex128, nm::Rational64, uint64_t> }, {fun<nm::Complex128, nm::Rational128, uint8_t>, fun<nm::Complex128, nm::Rational128, uint16_t>, fun<nm::Complex128, nm::Rational128, uint32_t>, fun<nm::Complex128, nm::Rational128, uint64_t> }, {fun<nm::Complex128, nm::RubyObject, uint8_t>, fun<nm::Complex128, nm::RubyObject, uint16_t>, fun<nm::Complex128, nm::RubyObject, uint32_t>, fun<nm::Complex128, nm::RubyObject, uint64_t> }}, \
648
+ {{fun<nm::Rational32, uint8_t, uint8_t>, fun<nm::Rational32, uint8_t, uint16_t>, fun<nm::Rational32, uint8_t, uint32_t>, fun<nm::Rational32, uint8_t, uint64_t> }, {fun<nm::Rational32, int8_t, uint8_t>, fun<nm::Rational32, int8_t, uint16_t>, fun<nm::Rational32, int8_t, uint32_t>, fun<nm::Rational32, int8_t, uint64_t> }, {fun<nm::Rational32, int16_t, uint8_t>, fun<nm::Rational32, int16_t, uint16_t>, fun<nm::Rational32, int16_t, uint32_t>, fun<nm::Rational32, int16_t, uint64_t> }, {fun<nm::Rational32, int32_t, uint8_t>, fun<nm::Rational32, int32_t, uint16_t>, fun<nm::Rational32, int32_t, uint32_t>, fun<nm::Rational32, int32_t, uint64_t> }, {fun<nm::Rational32, int64_t, uint8_t>, fun<nm::Rational32, int64_t, uint16_t>, fun<nm::Rational32, int64_t, uint32_t>, fun<nm::Rational32, int64_t, uint64_t> }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {fun<nm::Rational32, nm::Rational32, uint8_t>, fun<nm::Rational32, nm::Rational32, uint16_t>, fun<nm::Rational32, nm::Rational32, uint32_t>, fun<nm::Rational32, nm::Rational32, uint64_t> }, {fun<nm::Rational32, nm::Rational64, uint8_t>, fun<nm::Rational32, nm::Rational64, uint16_t>, fun<nm::Rational32, nm::Rational64, uint32_t>, fun<nm::Rational32, nm::Rational64, uint64_t> }, {fun<nm::Rational32, nm::Rational128, uint8_t>, fun<nm::Rational32, nm::Rational128, uint16_t>, fun<nm::Rational32, nm::Rational128, uint32_t>, fun<nm::Rational32, nm::Rational128, uint64_t> }, {fun<nm::Rational32, nm::RubyObject, uint8_t>, fun<nm::Rational32, nm::RubyObject, uint16_t>, fun<nm::Rational32, nm::RubyObject, uint32_t>, fun<nm::Rational32, nm::RubyObject, uint64_t>}}, \
649
+ {{fun<nm::Rational64, uint8_t, uint8_t>, fun<nm::Rational64, uint8_t, uint16_t>, fun<nm::Rational64, uint8_t, uint32_t>, fun<nm::Rational64, uint8_t, uint64_t> }, {fun<nm::Rational64, int8_t, uint8_t>, fun<nm::Rational64, int8_t, uint16_t>, fun<nm::Rational64, int8_t, uint32_t>, fun<nm::Rational64, int8_t, uint64_t> }, {fun<nm::Rational64, int16_t, uint8_t>, fun<nm::Rational64, int16_t, uint16_t>, fun<nm::Rational64, int16_t, uint32_t>, fun<nm::Rational64, int16_t, uint64_t> }, {fun<nm::Rational64, int32_t, uint8_t>, fun<nm::Rational64, int32_t, uint16_t>, fun<nm::Rational64, int32_t, uint32_t>, fun<nm::Rational64, int32_t, uint64_t> }, {fun<nm::Rational64, int64_t, uint8_t>, fun<nm::Rational64, int64_t, uint16_t>, fun<nm::Rational64, int64_t, uint32_t>, fun<nm::Rational64, int64_t, uint64_t> }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {fun<nm::Rational64, nm::Rational32, uint8_t>, fun<nm::Rational64, nm::Rational32, uint16_t>, fun<nm::Rational64, nm::Rational32, uint32_t>, fun<nm::Rational64, nm::Rational32, uint64_t> }, {fun<nm::Rational64, nm::Rational64, uint8_t>, fun<nm::Rational64, nm::Rational64, uint16_t>, fun<nm::Rational64, nm::Rational64, uint32_t>, fun<nm::Rational64, nm::Rational64, uint64_t> }, {fun<nm::Rational64, nm::Rational128, uint8_t>, fun<nm::Rational64, nm::Rational128, uint16_t>, fun<nm::Rational64, nm::Rational128, uint32_t>, fun<nm::Rational64, nm::Rational128, uint64_t> }, {fun<nm::Rational64, nm::RubyObject, uint8_t>, fun<nm::Rational64, nm::RubyObject, uint16_t>, fun<nm::Rational64, nm::RubyObject, uint32_t>, fun<nm::Rational64, nm::RubyObject, uint64_t>}}, \
650
+ {{fun<nm::Rational128, uint8_t, uint8_t>, fun<nm::Rational128, uint8_t, uint16_t>, fun<nm::Rational128, uint8_t, uint32_t>, fun<nm::Rational128, uint8_t, uint64_t> }, {fun<nm::Rational128, int8_t, uint8_t>, fun<nm::Rational128, int8_t, uint16_t>, fun<nm::Rational128, int8_t, uint32_t>, fun<nm::Rational128, int8_t, uint64_t> }, {fun<nm::Rational128, int16_t, uint8_t>, fun<nm::Rational128, int16_t, uint16_t>, fun<nm::Rational128, int16_t, uint32_t>, fun<nm::Rational128, int16_t, uint64_t> }, {fun<nm::Rational128, int32_t, uint8_t>, fun<nm::Rational128, int32_t, uint16_t>, fun<nm::Rational128, int32_t, uint32_t>, fun<nm::Rational128, int32_t, uint64_t> }, {fun<nm::Rational128, int64_t, uint8_t>, fun<nm::Rational128, int64_t, uint16_t>, fun<nm::Rational128, int64_t, uint32_t>, fun<nm::Rational128, int64_t, uint64_t> }, {fun<nm::Rational128, float32_t, uint8_t>, fun<nm::Rational128, float32_t, uint16_t>, fun<nm::Rational128, float32_t, uint32_t>, fun<nm::Rational128, float32_t, uint64_t> }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {NULL, NULL, NULL, NULL }, {fun<nm::Rational128, nm::Rational32, uint8_t>, fun<nm::Rational128, nm::Rational32, uint16_t>, fun<nm::Rational128, nm::Rational32, uint32_t>, fun<nm::Rational128, nm::Rational32, uint64_t> }, {fun<nm::Rational128, nm::Rational64, uint8_t>, fun<nm::Rational128, nm::Rational64, uint16_t>, fun<nm::Rational128, nm::Rational64, uint32_t>, fun<nm::Rational128, nm::Rational64, uint64_t> }, {fun<nm::Rational128, nm::Rational128, uint8_t>, fun<nm::Rational128, nm::Rational128, uint16_t>, fun<nm::Rational128, nm::Rational128, uint32_t>, fun<nm::Rational128, nm::Rational128, uint64_t> }, {fun<nm::Rational128, nm::RubyObject, uint8_t>, fun<nm::Rational128, nm::RubyObject, uint16_t>, fun<nm::Rational128, nm::RubyObject, uint32_t>, fun<nm::Rational128, nm::RubyObject, uint64_t>}}, \
651
+ {{fun<nm::RubyObject, uint8_t, uint8_t>, fun<nm::RubyObject, uint8_t, uint16_t>, fun<nm::RubyObject, uint8_t, uint32_t>, fun<nm::RubyObject, uint8_t, uint64_t> }, {fun<nm::RubyObject, int8_t, uint8_t>, fun<nm::RubyObject, int8_t, uint16_t>, fun<nm::RubyObject, int8_t, uint32_t>, fun<nm::RubyObject, int8_t, uint64_t> }, {fun<nm::RubyObject, int16_t, uint8_t>, fun<nm::RubyObject, int16_t, uint16_t>, fun<nm::RubyObject, int16_t, uint32_t>, fun<nm::RubyObject, int16_t, uint64_t> }, {fun<nm::RubyObject, int32_t, uint8_t>, fun<nm::RubyObject, int32_t, uint16_t>, fun<nm::RubyObject, int32_t, uint32_t>, fun<nm::RubyObject, int32_t, uint64_t> }, {fun<nm::RubyObject, int64_t, uint8_t>, fun<nm::RubyObject, int64_t, uint16_t>, fun<nm::RubyObject, int64_t, uint32_t>, fun<nm::RubyObject, int64_t, uint64_t> }, {fun<nm::RubyObject, float32_t, uint8_t>, fun<nm::RubyObject, float32_t, uint16_t>, fun<nm::RubyObject, float32_t, uint32_t>, fun<nm::RubyObject, float32_t, uint64_t> }, {fun<nm::RubyObject, float64_t, uint8_t>, fun<nm::RubyObject, float64_t, uint16_t>, fun<nm::RubyObject, float64_t, uint32_t>, fun<nm::RubyObject, float64_t, uint64_t> }, {fun<nm::RubyObject, nm::Complex64, uint8_t>, fun<nm::RubyObject, nm::Complex64, uint16_t>, fun<nm::RubyObject, nm::Complex64, uint32_t>, fun<nm::RubyObject, nm::Complex64, uint64_t> }, {fun<nm::RubyObject, nm::Complex128, uint8_t>, fun<nm::RubyObject, nm::Complex128, uint16_t>, fun<nm::RubyObject, nm::Complex128, uint32_t>, fun<nm::RubyObject, nm::Complex128, uint64_t> }, {fun<nm::RubyObject, nm::Rational32, uint8_t>, fun<nm::RubyObject, nm::Rational32, uint16_t>, fun<nm::RubyObject, nm::Rational32, uint32_t>, fun<nm::RubyObject, nm::Rational32, uint64_t> }, {fun<nm::RubyObject, nm::Rational64, uint8_t>, fun<nm::RubyObject, nm::Rational64, uint16_t>, fun<nm::RubyObject, nm::Rational64, uint32_t>, fun<nm::RubyObject, nm::Rational64, uint64_t> }, {fun<nm::RubyObject, nm::Rational128, uint8_t>, fun<nm::RubyObject, nm::Rational128, uint16_t>, fun<nm::RubyObject, nm::Rational128, uint32_t>, fun<nm::RubyObject, nm::Rational128, uint64_t> }, {fun<nm::RubyObject, nm::RubyObject, uint8_t>, fun<nm::RubyObject, nm::RubyObject, uint16_t>, fun<nm::RubyObject, nm::RubyObject, uint32_t>, fun<nm::RubyObject, nm::RubyObject, uint64_t>}} \
652
+ };
653
+
654
+ /*
655
+ * Defines a static array that holds function pointers to left dtype and itype
656
+ * templated versions of the specified function.
657
+ */
658
+ #define LI_DTYPE_TEMPLATE_TABLE(fun, ret, ...) NAMED_LI_DTYPE_TEMPLATE_TABLE(ttable, fun, ret, __VA_ARGS__)
659
+
660
+ #define NAMED_LI_DTYPE_TEMPLATE_TABLE(name, fun, ret, ...) \
661
+ static ret (*(name)[nm::NUM_DTYPES][nm::NUM_ITYPES])(__VA_ARGS__) = { \
662
+ { fun<uint8_t,uint8_t>,fun<uint8_t,uint16_t>,fun<uint8_t,uint32_t>,fun<uint8_t,uint64_t> }, \
663
+ { fun<int8_t,uint8_t>,fun<int8_t,uint16_t>,fun<int8_t,uint32_t>,fun<int8_t,uint64_t> }, \
664
+ { fun<int16_t,uint8_t>,fun<int16_t,uint16_t>,fun<int16_t,uint32_t>,fun<int16_t,uint64_t> }, \
665
+ { fun<int32_t,uint8_t>,fun<int32_t,uint16_t>,fun<int32_t,uint32_t>,fun<int32_t,uint64_t> }, \
666
+ { fun<int64_t,uint8_t>,fun<int64_t,uint16_t>,fun<int64_t,uint32_t>,fun<int64_t,uint64_t> }, \
667
+ { fun<float32_t,uint8_t>,fun<float32_t,uint16_t>,fun<float32_t,uint32_t>,fun<float32_t,uint64_t> }, \
668
+ { fun<float64_t,uint8_t>,fun<float64_t,uint16_t>,fun<float64_t,uint32_t>,fun<float64_t,uint64_t> }, \
669
+ { fun<nm::Complex64,uint8_t>,fun<nm::Complex64,uint16_t>,fun<nm::Complex64,uint32_t>,fun<nm::Complex64,uint64_t> }, \
670
+ { fun<nm::Complex128,uint8_t>,fun<nm::Complex128,uint16_t>,fun<nm::Complex128,uint32_t>,fun<nm::Complex128,uint64_t> }, \
671
+ { fun<nm::Rational32,uint8_t>,fun<nm::Rational32,uint16_t>,fun<nm::Rational32,uint32_t>,fun<nm::Rational32,uint64_t> }, \
672
+ { fun<nm::Rational64,uint8_t>,fun<nm::Rational64,uint16_t>,fun<nm::Rational64,uint32_t>,fun<nm::Rational64,uint64_t> }, \
673
+ { fun<nm::Rational128,uint8_t>,fun<nm::Rational128,uint16_t>,fun<nm::Rational128,uint32_t>,fun<nm::Rational128,uint64_t> }, \
674
+ { fun<nm::RubyObject,uint8_t>,fun<nm::RubyObject,uint16_t>,fun<nm::RubyObject,uint32_t>,fun<nm::RubyObject,uint64_t>} \
675
+ };
676
+
677
+
678
+ extern "C" {
679
+
680
+
681
+ /*
682
+ * Data
683
+ */
684
+
685
+ // regular data types
686
+ extern const char* const DTYPE_NAMES[nm::NUM_DTYPES];
687
+ extern const size_t DTYPE_SIZES[nm::NUM_DTYPES];
688
+
689
+ // index data types
690
+ extern const char* const ITYPE_NAMES[nm::NUM_ITYPES];
691
+ extern const size_t ITYPE_SIZES[nm::NUM_ITYPES];
692
+
693
+ extern const dtype_t Upcast[nm::NUM_DTYPES][nm::NUM_DTYPES];
694
+
695
+ /*
696
+ * Functions
697
+ */
698
+
699
+
700
+ void* rubyobj_to_cval(VALUE val, dtype_t dtype);
701
+ void rubyval_to_cval(VALUE val, dtype_t dtype, void* loc);
702
+ nm::RubyObject rubyobj_from_cval(void* val, dtype_t dtype);
703
+ nm::RubyObject rubyobj_from_cval_by_itype(void* val, itype_t itype);
704
+
705
+ } // end of extern "C" block
706
+
707
+ #endif // DATA_H