number 0.9.7 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/{bounds.c → number/bounds.c} +0 -0
- data/ext/{compare.c → number/compare.c} +1 -1
- data/ext/{complex.c → number/complex.c} +78 -74
- data/ext/number/decompose.c +231 -0
- data/ext/{extconf.rb → number/extconf.rb} +0 -0
- data/ext/{interval.c → number/interval.c} +60 -62
- data/ext/{number.c → number/number.c} +95 -92
- data/ext/{number.h → number/number.h} +302 -0
- data/ext/{real.c → number/real.c} +9 -9
- data/ext/{real_bounds.c → number/real_bounds.c} +2 -2
- data/ext/number/round.c +46 -0
- metadata +15 -16
- data/ext/decompose.c +0 -231
- data/ext/round.c +0 -46
File without changes
|
@@ -78,7 +78,7 @@ int interval_span_zero_p (Interval* interval)
|
|
78
78
|
int result;
|
79
79
|
Real* zero;
|
80
80
|
|
81
|
-
zero =
|
81
|
+
zero = real_zero();
|
82
82
|
result = interval_span_p(interval, zero);
|
83
83
|
|
84
84
|
real_free(zero);
|
@@ -94,7 +94,7 @@ int interval_zero_p (Interval* interval)
|
|
94
94
|
int result;
|
95
95
|
Real* zero;
|
96
96
|
|
97
|
-
zero =
|
97
|
+
zero = real_zero();
|
98
98
|
result = real_eq_p(interval->l, zero) && real_eq_p(interval->u, zero);
|
99
99
|
|
100
100
|
real_free(zero);
|
@@ -120,7 +120,7 @@ int interval_degenerate_p (Interval* interval)
|
|
120
120
|
Interval* interval_new (Real* l, int L, Real* n, int R, Real* u)
|
121
121
|
{
|
122
122
|
Interval* interval;
|
123
|
-
interval =
|
123
|
+
interval = malloc(sizeof(Interval));
|
124
124
|
|
125
125
|
if (interval == NULL)
|
126
126
|
{
|
@@ -131,9 +131,9 @@ Interval* interval_new (Real* l, int L, Real* n, int R, Real* u)
|
|
131
131
|
|
132
132
|
if (NaN(l) || NaN(n) || NaN(u))
|
133
133
|
{
|
134
|
-
interval->n =
|
135
|
-
interval->l =
|
136
|
-
interval->u =
|
134
|
+
interval->n = real_nan();
|
135
|
+
interval->l = real_neg_inf();
|
136
|
+
interval->u = real_pos_inf();
|
137
137
|
|
138
138
|
interval->L = true;
|
139
139
|
interval->R = true;
|
@@ -144,12 +144,12 @@ Interval* interval_new (Real* l, int L, Real* n, int R, Real* u)
|
|
144
144
|
}
|
145
145
|
else
|
146
146
|
{
|
147
|
-
interval->n =
|
148
|
-
interval->l =
|
149
|
-
interval->u =
|
147
|
+
interval->n = n;
|
148
|
+
interval->l = l;
|
149
|
+
interval->u = u;
|
150
150
|
|
151
|
-
interval->L = real_eq_p(
|
152
|
-
interval->R = real_eq_p(
|
151
|
+
interval->L = (real_eq_p(l, u) || real_eq_p(n, l) || L);
|
152
|
+
interval->R = (real_eq_p(l, u) || real_eq_p(n, u) || R);
|
153
153
|
}
|
154
154
|
|
155
155
|
return interval;
|
@@ -162,7 +162,7 @@ Interval* interval_new (Real* l, int L, Real* n, int R, Real* u)
|
|
162
162
|
*/
|
163
163
|
Interval* interval_from_real (Real* real)
|
164
164
|
{
|
165
|
-
return interval_new(
|
165
|
+
return interval_new(real_dup(real), true, real_dup(real), true, real_dup(real));
|
166
166
|
}
|
167
167
|
|
168
168
|
/*
|
@@ -170,7 +170,7 @@ Interval* interval_from_real (Real* real)
|
|
170
170
|
*/
|
171
171
|
Interval* interval_nan ()
|
172
172
|
{
|
173
|
-
return interval_new(
|
173
|
+
return interval_new(real_neg_inf(), true, real_nan(), true, real_pos_inf());
|
174
174
|
}
|
175
175
|
|
176
176
|
/*
|
@@ -178,7 +178,7 @@ Interval* interval_nan ()
|
|
178
178
|
*/
|
179
179
|
Interval* interval_pos_inf ()
|
180
180
|
{
|
181
|
-
return interval_new(
|
181
|
+
return interval_new(real_pos_inf(), true, real_pos_inf(), true, real_pos_inf());
|
182
182
|
}
|
183
183
|
|
184
184
|
/*
|
@@ -186,7 +186,7 @@ Interval* interval_pos_inf ()
|
|
186
186
|
*/
|
187
187
|
Interval* interval_neg_inf ()
|
188
188
|
{
|
189
|
-
return interval_new(
|
189
|
+
return interval_new(real_neg_inf(), true, real_neg_inf(), true, real_neg_inf());
|
190
190
|
}
|
191
191
|
|
192
192
|
/*
|
@@ -194,7 +194,7 @@ Interval* interval_neg_inf ()
|
|
194
194
|
*/
|
195
195
|
Interval* interval_zero ()
|
196
196
|
{
|
197
|
-
return interval_new(
|
197
|
+
return interval_new(real_zero(), true, real_zero(), true, real_zero());
|
198
198
|
}
|
199
199
|
|
200
200
|
/*
|
@@ -202,7 +202,7 @@ Interval* interval_zero ()
|
|
202
202
|
*/
|
203
203
|
Interval* interval_one ()
|
204
204
|
{
|
205
|
-
return interval_new(
|
205
|
+
return interval_new(real_one(), true, real_one(), true, real_one());
|
206
206
|
}
|
207
207
|
|
208
208
|
/*
|
@@ -211,7 +211,7 @@ Interval* interval_one ()
|
|
211
211
|
*/
|
212
212
|
Interval* interval_pi ()
|
213
213
|
{
|
214
|
-
return
|
214
|
+
return interval_new(real_pi(ROUND_DOWN), false, real_pi(ROUND_NEAREST), false, real_pi(ROUND_UP1));
|
215
215
|
}
|
216
216
|
|
217
217
|
/*
|
@@ -220,7 +220,7 @@ Interval* interval_pi ()
|
|
220
220
|
*/
|
221
221
|
Interval* interval_e ()
|
222
222
|
{
|
223
|
-
return
|
223
|
+
return interval_new(real_e(ROUND_DOWN), false, real_e(ROUND_NEAREST), false, real_e(ROUND_UP1));
|
224
224
|
}
|
225
225
|
|
226
226
|
/*
|
@@ -229,7 +229,7 @@ Interval* interval_e ()
|
|
229
229
|
*/
|
230
230
|
Interval* interval_dup (Interval* interval)
|
231
231
|
{
|
232
|
-
return interval_new(
|
232
|
+
return interval_new(real_dup(interval->l), interval->L, real_dup(interval->n), interval->R, real_dup(interval->u));
|
233
233
|
}
|
234
234
|
|
235
235
|
/*
|
@@ -243,12 +243,12 @@ Interval* interval_add (Interval* a, Interval* b)
|
|
243
243
|
Real* l;
|
244
244
|
Real* u;
|
245
245
|
|
246
|
-
n =
|
247
|
-
l =
|
248
|
-
u =
|
246
|
+
n = real_add(a->n, b->n);
|
247
|
+
l = real_add(a->l, b->l);
|
248
|
+
u = real_add(a->u, b->u);
|
249
249
|
|
250
|
-
L = a->L && b->L;
|
251
|
-
R = a->R && b->R;
|
250
|
+
L = (a->L && b->L);
|
251
|
+
R = (a->R && b->R);
|
252
252
|
|
253
253
|
return interval_new(l, L, n, R, u);
|
254
254
|
}
|
@@ -264,12 +264,12 @@ Interval* interval_subtract (Interval* a, Interval* b)
|
|
264
264
|
Real* l;
|
265
265
|
Real* u;
|
266
266
|
|
267
|
-
n =
|
268
|
-
l =
|
269
|
-
u =
|
267
|
+
n = real_subtract(a->n, b->n);
|
268
|
+
l = real_subtract(a->l, b->u);
|
269
|
+
u = real_subtract(a->u, b->l);
|
270
270
|
|
271
|
-
L = a->L && b->R;
|
272
|
-
R = a->R && b->L;
|
271
|
+
L = (a->L && b->R);
|
272
|
+
R = (a->R && b->L);
|
273
273
|
|
274
274
|
return interval_new(l, L, n, R, u);
|
275
275
|
}
|
@@ -285,20 +285,19 @@ Interval* interval_multiply (Interval* a, Interval* b)
|
|
285
285
|
Real* l;
|
286
286
|
Real* u;
|
287
287
|
RealBounds* bounds;
|
288
|
-
Interval* interval;
|
289
288
|
|
290
|
-
bounds =
|
291
|
-
real_bounds_update(bounds,
|
292
|
-
real_bounds_update(bounds,
|
293
|
-
real_bounds_update(bounds,
|
294
|
-
real_bounds_update(bounds,
|
289
|
+
bounds = real_bounds_new();
|
290
|
+
real_bounds_update(bounds, real_multiply(a->l, b->l), (a->L && b->L));
|
291
|
+
real_bounds_update(bounds, real_multiply(a->l, b->u), (a->L && b->R));
|
292
|
+
real_bounds_update(bounds, real_multiply(a->u, b->l), (a->R && b->L));
|
293
|
+
real_bounds_update(bounds, real_multiply(a->u, b->u), (a->R && b->R));
|
295
294
|
|
296
|
-
L = bounds->min_closed;
|
297
|
-
R = bounds->max_closed;
|
295
|
+
L = (bounds->min_closed);
|
296
|
+
R = (bounds->max_closed);
|
298
297
|
|
299
|
-
n =
|
300
|
-
l =
|
301
|
-
u =
|
298
|
+
n = real_multiply(a->n, b->n);
|
299
|
+
l = real_dup(bounds->min);
|
300
|
+
u = real_dup(bounds->max);
|
302
301
|
|
303
302
|
real_bounds_free(bounds);
|
304
303
|
|
@@ -316,24 +315,23 @@ Interval* interval_divide (Interval* a, Interval* b)
|
|
316
315
|
Real* l;
|
317
316
|
Real* u;
|
318
317
|
RealBounds* bounds;
|
319
|
-
Interval* interval;
|
320
318
|
|
321
|
-
bounds =
|
322
|
-
real_bounds_update(bounds,
|
323
|
-
real_bounds_update(bounds,
|
324
|
-
real_bounds_update(bounds,
|
325
|
-
real_bounds_update(bounds,
|
326
|
-
real_bounds_update(bounds,
|
327
|
-
real_bounds_update(bounds,
|
328
|
-
real_bounds_update(bounds,
|
329
|
-
real_bounds_update(bounds,
|
319
|
+
bounds = real_bounds_new();
|
320
|
+
real_bounds_update(bounds, real_divide(a->l, b->l, ROUND_DOWN), (a->L && b->L));
|
321
|
+
real_bounds_update(bounds, real_divide(a->l, b->u, ROUND_DOWN), (a->L && b->R));
|
322
|
+
real_bounds_update(bounds, real_divide(a->u, b->l, ROUND_DOWN), (a->R && b->L));
|
323
|
+
real_bounds_update(bounds, real_divide(a->u, b->u, ROUND_DOWN), (a->R && b->R));
|
324
|
+
real_bounds_update(bounds, real_divide(a->l, b->l, ROUND_UP), (a->L && b->L));
|
325
|
+
real_bounds_update(bounds, real_divide(a->l, b->u, ROUND_UP), (a->L && b->R));
|
326
|
+
real_bounds_update(bounds, real_divide(a->u, b->l, ROUND_UP), (a->R && b->L));
|
327
|
+
real_bounds_update(bounds, real_divide(a->u, b->u, ROUND_UP), (a->R && b->R));
|
330
328
|
|
331
|
-
L = bounds->min_closed;
|
332
|
-
R = bounds->max_closed;
|
329
|
+
L = (bounds->min_closed);
|
330
|
+
R = (bounds->max_closed);
|
333
331
|
|
334
|
-
n =
|
335
|
-
l =
|
336
|
-
u =
|
332
|
+
n = real_divide(a->n, b->n, ROUND_NEAREST);
|
333
|
+
l = real_dup(bounds->min);
|
334
|
+
u = real_dup(bounds->max);
|
337
335
|
|
338
336
|
real_bounds_free(bounds);
|
339
337
|
|
@@ -345,7 +343,7 @@ Interval* interval_divide (Interval* a, Interval* b)
|
|
345
343
|
*/
|
346
344
|
Interval* interval_negate (Interval* interval)
|
347
345
|
{
|
348
|
-
return interval_new(
|
346
|
+
return interval_new(real_negate(interval->u), interval->R, real_negate(interval->n), interval->L, real_negate(interval->l));
|
349
347
|
}
|
350
348
|
|
351
349
|
/*
|
@@ -354,7 +352,7 @@ Interval* interval_negate (Interval* interval)
|
|
354
352
|
*/
|
355
353
|
Interval* interval_round (Interval* interval)
|
356
354
|
{
|
357
|
-
return interval_new(
|
355
|
+
return interval_new(real_round(interval->l), true, real_round(interval->n), true, real_round(interval->u));
|
358
356
|
}
|
359
357
|
|
360
358
|
/*
|
@@ -364,7 +362,7 @@ Interval* interval_round (Interval* interval)
|
|
364
362
|
*/
|
365
363
|
Interval* interval_round_ceiling (Interval* interval)
|
366
364
|
{
|
367
|
-
return interval_new(
|
365
|
+
return interval_new(real_ceil(interval->l), true, real_ceil(interval->n), true, real_ceil(interval->u));
|
368
366
|
}
|
369
367
|
|
370
368
|
/*
|
@@ -374,7 +372,7 @@ Interval* interval_round_ceiling (Interval* interval)
|
|
374
372
|
*/
|
375
373
|
Interval* interval_round_floor (Interval* interval)
|
376
374
|
{
|
377
|
-
return interval_new(
|
375
|
+
return interval_new(real_floor(interval->l), true, real_floor(interval->n), true, real_floor(interval->u));
|
378
376
|
}
|
379
377
|
|
380
378
|
/*
|
@@ -384,7 +382,7 @@ Interval* interval_round_floor (Interval* interval)
|
|
384
382
|
*/
|
385
383
|
Interval* interval_round_infinity (Interval* interval)
|
386
384
|
{
|
387
|
-
return interval_new(
|
385
|
+
return interval_new(real_round_infinity(interval->l), true, real_round_infinity(interval->n), true, real_round_infinity(interval->u));
|
388
386
|
}
|
389
387
|
|
390
388
|
/*
|
@@ -394,5 +392,5 @@ Interval* interval_round_infinity (Interval* interval)
|
|
394
392
|
*/
|
395
393
|
Interval* interval_round_origin (Interval* interval)
|
396
394
|
{
|
397
|
-
return interval_new(
|
395
|
+
return interval_new(real_round_origin(interval->l), true, real_round_origin(interval->n), true, real_round_origin(interval->u));
|
398
396
|
}
|
@@ -6,14 +6,14 @@ VALUE rb_cNumber;
|
|
6
6
|
VALUE rb_NilClass_to_number (VALUE nil)
|
7
7
|
{
|
8
8
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
9
|
-
DATA_PTR(result) =
|
9
|
+
DATA_PTR(result) = complex_nan();
|
10
10
|
|
11
11
|
return result;
|
12
12
|
}
|
13
13
|
|
14
14
|
VALUE rb_String_to_number (VALUE str)
|
15
15
|
{
|
16
|
-
VALUE complex_regex =
|
16
|
+
VALUE complex_regex = rb_reg_new_str(rb_enc_str_new("^(.*[^\\s]+)\\s*\\+\\s*(.*)i$", strlen("^(.*[^\\s]+)\\s*\\+\\s*(.*)i$"), rb_utf8_encoding()), 0);
|
17
17
|
VALUE complex_match = rb_funcall(complex_regex, rb_intern("match"), 1, str);
|
18
18
|
|
19
19
|
if (RTEST(complex_match))
|
@@ -23,7 +23,7 @@ VALUE rb_String_to_number (VALUE str)
|
|
23
23
|
}
|
24
24
|
else
|
25
25
|
{
|
26
|
-
VALUE interval_regex =
|
26
|
+
VALUE interval_regex = rb_reg_new_str(rb_enc_str_new("^\\[(.*[^\\s]+)\\s*([<≤])\\s*\\((.*[^\\s]+)\\)\\s*([<≤])\\s*(.*[^\\s]+)\\]$", strlen("^\\[(.*[^\\s]+)\\s*([<≤])\\s*\\((.*[^\\s]+)\\)\\s*([<≤])\\s*(.*[^\\s]+)\\]$"), rb_utf8_encoding()), 0);
|
27
27
|
VALUE interval_match = rb_funcall(interval_regex, rb_intern("match"), 1, str);
|
28
28
|
|
29
29
|
if (RTEST(interval_match))
|
@@ -33,44 +33,45 @@ VALUE rb_String_to_number (VALUE str)
|
|
33
33
|
}
|
34
34
|
else
|
35
35
|
{
|
36
|
-
VALUE real_regex =
|
36
|
+
VALUE real_regex = rb_reg_new_str(rb_enc_str_new("^([+-]?[0-9]+):([+-]?[0-9]+)$", strlen("^([+-]?[0-9]+):([+-]?[0-9]+)$"), rb_utf8_encoding()), 0);
|
37
37
|
VALUE real_match = rb_funcall(real_regex, rb_intern("match"), 1, str);
|
38
38
|
|
39
39
|
if (RTEST(real_match))
|
40
40
|
{
|
41
41
|
VALUE real_captures = rb_funcall(real_match, rb_intern("captures"), 0);
|
42
42
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
43
|
-
|
43
|
+
VALUE integer = rb_funcall(RARRAY_PTR(real_captures)[1], rb_intern("to_i"), 0);
|
44
|
+
Real* real = real_from_str((char*)RSTRING_PTR(RARRAY_PTR(real_captures)[0]), NUM2LONG(integer));
|
44
45
|
|
45
|
-
DATA_PTR(result) =
|
46
|
+
DATA_PTR(result) = complex_from_real(real);
|
46
47
|
real_free(real);
|
47
48
|
|
48
49
|
return result;
|
49
50
|
}
|
50
|
-
else if (
|
51
|
+
else if (RSTRING_PTR(str)[0] == -61)
|
51
52
|
{
|
52
53
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
53
|
-
DATA_PTR(result) =
|
54
|
+
DATA_PTR(result) = complex_nan();
|
54
55
|
|
55
56
|
return result;
|
56
57
|
}
|
57
|
-
else if (
|
58
|
+
else if (RSTRING_PTR(str)[0] == -30)
|
58
59
|
{
|
59
60
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
60
|
-
DATA_PTR(result) =
|
61
|
+
DATA_PTR(result) = complex_pos_inf();
|
61
62
|
|
62
63
|
return result;
|
63
64
|
}
|
64
|
-
else if ((
|
65
|
+
else if ((RSTRING_PTR(str)[0] == 43 || RSTRING_PTR(str)[0] == 45) && RSTRING_PTR(str)[1] == -30)
|
65
66
|
{
|
66
67
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
67
|
-
DATA_PTR(result) = (
|
68
|
+
DATA_PTR(result) = (RSTRING_PTR(str)[0] == 43) ? complex_pos_inf() : complex_neg_inf();
|
68
69
|
|
69
70
|
return result;
|
70
71
|
}
|
71
72
|
else
|
72
73
|
{
|
73
|
-
VALUE integer_regex =
|
74
|
+
VALUE integer_regex = rb_reg_new_str(rb_enc_str_new("^([+-]?[0-9]+)$", strlen("^([+-]?[0-9]+)$"), rb_utf8_encoding()), 0);
|
74
75
|
VALUE integer_match = rb_funcall(integer_regex, rb_intern("match"), 1, str);
|
75
76
|
|
76
77
|
if (RTEST(integer_match))
|
@@ -92,7 +93,8 @@ VALUE rb_String_to_number (VALUE str)
|
|
92
93
|
VALUE rb_Integer_to_number (VALUE integer)
|
93
94
|
{
|
94
95
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
95
|
-
|
96
|
+
VALUE str = rb_funcall(integer, rb_intern("to_s"), 0);
|
97
|
+
DATA_PTR(result) = complex_from_int_str((char*)RSTRING_PTR(str));
|
96
98
|
|
97
99
|
return result;
|
98
100
|
}
|
@@ -100,7 +102,9 @@ VALUE rb_Integer_to_number (VALUE integer)
|
|
100
102
|
VALUE rb_Float_to_number (VALUE flo)
|
101
103
|
{
|
102
104
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
103
|
-
|
105
|
+
VALUE str = rb_funcall(rb_str_new2("%.15e"), rb_intern("%"), 1, flo);
|
106
|
+
|
107
|
+
DATA_PTR(result) = complex_from_float_str((char*)RSTRING_PTR(str));
|
104
108
|
|
105
109
|
return result;
|
106
110
|
}
|
@@ -110,11 +114,11 @@ VALUE rb_Complex_to_number (VALUE complex)
|
|
110
114
|
Complex* re;
|
111
115
|
Complex* im;
|
112
116
|
|
113
|
-
re =
|
114
|
-
im =
|
117
|
+
re = DATA_PTR(rb_convert_type(rb_funcall(complex, rb_intern("real"), 0), T_DATA, "Number", "to_number"));
|
118
|
+
im = DATA_PTR(rb_convert_type(rb_funcall(complex, rb_intern("imag"), 0), T_DATA, "Number", "to_number"));
|
115
119
|
|
116
120
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
117
|
-
DATA_PTR(result) =
|
121
|
+
DATA_PTR(result) = complex_new(interval_dup(re->re), interval_dup(im->re));
|
118
122
|
|
119
123
|
return result;
|
120
124
|
}
|
@@ -140,25 +144,25 @@ VALUE rb_f_Number (int argc, VALUE* argv, VALUE obj)
|
|
140
144
|
{
|
141
145
|
case 1:
|
142
146
|
tmp_A = rb_convert_type(arg1, T_DATA, "Number", "to_number");
|
143
|
-
tmp1 =
|
147
|
+
tmp1 = DATA_PTR(tmp_A);
|
144
148
|
|
145
|
-
DATA_PTR(result) =
|
149
|
+
DATA_PTR(result) = complex_dup(tmp1);
|
146
150
|
break;
|
147
151
|
|
148
152
|
case 2:
|
149
153
|
tmp_A = rb_convert_type(arg1, T_DATA, "Number", "to_number");
|
150
154
|
tmp_B = rb_convert_type(arg2, T_DATA, "Number", "to_number");
|
151
155
|
|
152
|
-
tmp1 =
|
153
|
-
tmp2 =
|
156
|
+
tmp1 = DATA_PTR(tmp_A);
|
157
|
+
tmp2 = DATA_PTR(tmp_B);
|
154
158
|
|
155
|
-
Interval* re1 =
|
156
|
-
Interval* re2 =
|
159
|
+
Interval* re1 = tmp1->re;
|
160
|
+
Interval* re2 = tmp2->re;
|
157
161
|
|
158
|
-
i1 =
|
159
|
-
i2 =
|
162
|
+
i1 = interval_dup(re1);
|
163
|
+
i2 = interval_dup(re2);
|
160
164
|
|
161
|
-
DATA_PTR(result) =
|
165
|
+
DATA_PTR(result) = complex_new(i1, i2);
|
162
166
|
break;
|
163
167
|
|
164
168
|
default:
|
@@ -166,25 +170,25 @@ VALUE rb_f_Number (int argc, VALUE* argv, VALUE obj)
|
|
166
170
|
tmp_B = rb_convert_type(arg2, T_DATA, "Number", "to_number");
|
167
171
|
tmp_C = rb_convert_type(arg3, T_DATA, "Number", "to_number");
|
168
172
|
|
169
|
-
tmp1 =
|
170
|
-
tmp2 =
|
171
|
-
tmp3 =
|
173
|
+
tmp1 = DATA_PTR(tmp_A);
|
174
|
+
tmp2 = DATA_PTR(tmp_B);
|
175
|
+
tmp3 = DATA_PTR(tmp_C);
|
172
176
|
|
173
|
-
Real* n1 =
|
174
|
-
Real* n2 =
|
175
|
-
Real* n3 =
|
177
|
+
Real* n1 = tmp1->re->n;
|
178
|
+
Real* n2 = tmp2->re->n;
|
179
|
+
Real* n3 = tmp3->re->n;
|
176
180
|
|
177
|
-
Real* r1 =
|
178
|
-
Real* r2 =
|
179
|
-
Real* r3 =
|
181
|
+
Real* r1 = real_dup(n1);
|
182
|
+
Real* r2 = real_dup(n2);
|
183
|
+
Real* r3 = real_dup(n3);
|
180
184
|
|
181
185
|
int L = (argc == 3) ? true : RTEST(arg4);
|
182
186
|
int R = (argc == 5) ? RTEST(arg5) : L;
|
183
187
|
|
184
|
-
i1 =
|
185
|
-
i2 =
|
188
|
+
i1 = interval_new(r1, L, r2, R, r3);
|
189
|
+
i2 = interval_zero();
|
186
190
|
|
187
|
-
DATA_PTR(result) =
|
191
|
+
DATA_PTR(result) = complex_new(i1, i2);
|
188
192
|
break;
|
189
193
|
}
|
190
194
|
|
@@ -193,7 +197,6 @@ VALUE rb_f_Number (int argc, VALUE* argv, VALUE obj)
|
|
193
197
|
|
194
198
|
VALUE rb_Number_s_allocate (VALUE klass)
|
195
199
|
{
|
196
|
-
void complex_free (Complex*);
|
197
200
|
return Data_Wrap_Struct(klass, 0, complex_free, 0);
|
198
201
|
}
|
199
202
|
|
@@ -211,7 +214,7 @@ VALUE rb_Number_s_set_digits (VALUE klass, VALUE n)
|
|
211
214
|
VALUE rb_Number_s_nan (VALUE klass)
|
212
215
|
{
|
213
216
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
214
|
-
DATA_PTR(result) =
|
217
|
+
DATA_PTR(result) = complex_nan();
|
215
218
|
|
216
219
|
return result;
|
217
220
|
}
|
@@ -219,7 +222,7 @@ VALUE rb_Number_s_nan (VALUE klass)
|
|
219
222
|
VALUE rb_Number_s_pos_inf (VALUE klass)
|
220
223
|
{
|
221
224
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
222
|
-
DATA_PTR(result) =
|
225
|
+
DATA_PTR(result) = complex_pos_inf();
|
223
226
|
|
224
227
|
return result;
|
225
228
|
}
|
@@ -227,7 +230,7 @@ VALUE rb_Number_s_pos_inf (VALUE klass)
|
|
227
230
|
VALUE rb_Number_s_neg_inf (VALUE klass)
|
228
231
|
{
|
229
232
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
230
|
-
DATA_PTR(result) =
|
233
|
+
DATA_PTR(result) = complex_neg_inf();
|
231
234
|
|
232
235
|
return result;
|
233
236
|
}
|
@@ -235,7 +238,7 @@ VALUE rb_Number_s_neg_inf (VALUE klass)
|
|
235
238
|
VALUE rb_Number_s_zero (VALUE klass)
|
236
239
|
{
|
237
240
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
238
|
-
DATA_PTR(result) =
|
241
|
+
DATA_PTR(result) = complex_zero();
|
239
242
|
|
240
243
|
return result;
|
241
244
|
}
|
@@ -243,7 +246,7 @@ VALUE rb_Number_s_zero (VALUE klass)
|
|
243
246
|
VALUE rb_Number_s_one (VALUE klass)
|
244
247
|
{
|
245
248
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
246
|
-
DATA_PTR(result) =
|
249
|
+
DATA_PTR(result) = complex_one();
|
247
250
|
|
248
251
|
return result;
|
249
252
|
}
|
@@ -251,7 +254,7 @@ VALUE rb_Number_s_one (VALUE klass)
|
|
251
254
|
VALUE rb_Number_s_pi (VALUE klass)
|
252
255
|
{
|
253
256
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
254
|
-
DATA_PTR(result) =
|
257
|
+
DATA_PTR(result) = complex_pi();
|
255
258
|
|
256
259
|
return result;
|
257
260
|
}
|
@@ -259,7 +262,7 @@ VALUE rb_Number_s_pi (VALUE klass)
|
|
259
262
|
VALUE rb_Number_s_e (VALUE klass)
|
260
263
|
{
|
261
264
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
262
|
-
DATA_PTR(result) =
|
265
|
+
DATA_PTR(result) = complex_e();
|
263
266
|
|
264
267
|
return result;
|
265
268
|
}
|
@@ -267,7 +270,7 @@ VALUE rb_Number_s_e (VALUE klass)
|
|
267
270
|
VALUE rb_Number_s_i (VALUE klass)
|
268
271
|
{
|
269
272
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
270
|
-
DATA_PTR(result) =
|
273
|
+
DATA_PTR(result) = complex_i();
|
271
274
|
|
272
275
|
return result;
|
273
276
|
}
|
@@ -326,7 +329,7 @@ VALUE rb_Number_to_s (VALUE number)
|
|
326
329
|
|
327
330
|
complex_print(buf, DATA_PTR(number));
|
328
331
|
|
329
|
-
return
|
332
|
+
return rb_str_new2(buf);
|
330
333
|
}
|
331
334
|
|
332
335
|
VALUE rb_Number_dummy (VALUE number)
|
@@ -342,7 +345,7 @@ VALUE rb_Number_coerce (VALUE a, VALUE b)
|
|
342
345
|
VALUE rb_Number_add (VALUE a, VALUE b)
|
343
346
|
{
|
344
347
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
345
|
-
DATA_PTR(result) =
|
348
|
+
DATA_PTR(result) = complex_add(DATA_PTR(a), DATA_PTR(rb_convert_type(b, T_DATA, "Number", "to_number")));
|
346
349
|
|
347
350
|
return result;
|
348
351
|
}
|
@@ -350,7 +353,7 @@ VALUE rb_Number_add (VALUE a, VALUE b)
|
|
350
353
|
VALUE rb_Number_subtract (VALUE a, VALUE b)
|
351
354
|
{
|
352
355
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
353
|
-
DATA_PTR(result) =
|
356
|
+
DATA_PTR(result) = complex_subtract(DATA_PTR(a), DATA_PTR(rb_convert_type(b, T_DATA, "Number", "to_number")));
|
354
357
|
|
355
358
|
return result;
|
356
359
|
}
|
@@ -358,7 +361,7 @@ VALUE rb_Number_subtract (VALUE a, VALUE b)
|
|
358
361
|
VALUE rb_Number_multiply (VALUE a, VALUE b)
|
359
362
|
{
|
360
363
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
361
|
-
DATA_PTR(result) =
|
364
|
+
DATA_PTR(result) = complex_multiply(DATA_PTR(a), DATA_PTR(rb_convert_type(b, T_DATA, "Number", "to_number")));
|
362
365
|
|
363
366
|
return result;
|
364
367
|
}
|
@@ -366,7 +369,7 @@ VALUE rb_Number_multiply (VALUE a, VALUE b)
|
|
366
369
|
VALUE rb_Number_divide (VALUE a, VALUE b)
|
367
370
|
{
|
368
371
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
369
|
-
DATA_PTR(result) =
|
372
|
+
DATA_PTR(result) = complex_divide(DATA_PTR(a), DATA_PTR(rb_convert_type(b, T_DATA, "Number", "to_number")));
|
370
373
|
|
371
374
|
return result;
|
372
375
|
}
|
@@ -374,7 +377,7 @@ VALUE rb_Number_divide (VALUE a, VALUE b)
|
|
374
377
|
VALUE rb_Number_modulo (VALUE a, VALUE b)
|
375
378
|
{
|
376
379
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
377
|
-
DATA_PTR(result) =
|
380
|
+
DATA_PTR(result) = complex_modulo(DATA_PTR(a), DATA_PTR(rb_convert_type(b, T_DATA, "Number", "to_number")));
|
378
381
|
|
379
382
|
return result;
|
380
383
|
}
|
@@ -392,7 +395,7 @@ VALUE rb_Number_eqq_p (VALUE a, VALUE b)
|
|
392
395
|
VALUE rb_Number_abs (VALUE number)
|
393
396
|
{
|
394
397
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
395
|
-
DATA_PTR(result) =
|
398
|
+
DATA_PTR(result) = complex_abs(DATA_PTR(number));
|
396
399
|
|
397
400
|
return result;
|
398
401
|
}
|
@@ -400,7 +403,7 @@ VALUE rb_Number_abs (VALUE number)
|
|
400
403
|
VALUE rb_Number_area (VALUE number)
|
401
404
|
{
|
402
405
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
403
|
-
DATA_PTR(result) =
|
406
|
+
DATA_PTR(result) = complex_area(DATA_PTR(number));
|
404
407
|
|
405
408
|
return result;
|
406
409
|
}
|
@@ -413,7 +416,7 @@ VALUE rb_Number_complex_p (VALUE number)
|
|
413
416
|
VALUE rb_Number_conjugate (VALUE number)
|
414
417
|
{
|
415
418
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
416
|
-
DATA_PTR(result) =
|
419
|
+
DATA_PTR(result) = complex_conjugate(DATA_PTR(number));
|
417
420
|
|
418
421
|
return result;
|
419
422
|
}
|
@@ -421,7 +424,7 @@ VALUE rb_Number_conjugate (VALUE number)
|
|
421
424
|
VALUE rb_Number_diagonal (VALUE number)
|
422
425
|
{
|
423
426
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
424
|
-
DATA_PTR(result) =
|
427
|
+
DATA_PTR(result) = complex_diagonal(DATA_PTR(number));
|
425
428
|
|
426
429
|
return result;
|
427
430
|
}
|
@@ -429,7 +432,7 @@ VALUE rb_Number_diagonal (VALUE number)
|
|
429
432
|
VALUE rb_Number_imag (VALUE number)
|
430
433
|
{
|
431
434
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
432
|
-
DATA_PTR(result) =
|
435
|
+
DATA_PTR(result) = complex_im(DATA_PTR(number));
|
433
436
|
|
434
437
|
return result;
|
435
438
|
}
|
@@ -437,7 +440,7 @@ VALUE rb_Number_imag (VALUE number)
|
|
437
440
|
VALUE rb_Number_negate (VALUE number)
|
438
441
|
{
|
439
442
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
440
|
-
DATA_PTR(result) =
|
443
|
+
DATA_PTR(result) = complex_negate(DATA_PTR(number));
|
441
444
|
|
442
445
|
return result;
|
443
446
|
}
|
@@ -445,7 +448,7 @@ VALUE rb_Number_negate (VALUE number)
|
|
445
448
|
VALUE rb_Number_real (VALUE number)
|
446
449
|
{
|
447
450
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
448
|
-
DATA_PTR(result) =
|
451
|
+
DATA_PTR(result) = complex_re(DATA_PTR(number));
|
449
452
|
|
450
453
|
return result;
|
451
454
|
}
|
@@ -458,7 +461,7 @@ VALUE rb_Number_real_p (VALUE number)
|
|
458
461
|
VALUE rb_Number_reflect (VALUE number)
|
459
462
|
{
|
460
463
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
461
|
-
DATA_PTR(result) =
|
464
|
+
DATA_PTR(result) = complex_reflect(DATA_PTR(number));
|
462
465
|
|
463
466
|
return result;
|
464
467
|
}
|
@@ -466,7 +469,7 @@ VALUE rb_Number_reflect (VALUE number)
|
|
466
469
|
VALUE rb_Number_round (VALUE number)
|
467
470
|
{
|
468
471
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
469
|
-
DATA_PTR(result) =
|
472
|
+
DATA_PTR(result) = complex_round(DATA_PTR(number));
|
470
473
|
|
471
474
|
return result;
|
472
475
|
}
|
@@ -474,7 +477,7 @@ VALUE rb_Number_round (VALUE number)
|
|
474
477
|
VALUE rb_Number_sqrt (VALUE number)
|
475
478
|
{
|
476
479
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
477
|
-
DATA_PTR(result) =
|
480
|
+
DATA_PTR(result) = complex_sqrt(DATA_PTR(number));
|
478
481
|
|
479
482
|
return result;
|
480
483
|
}
|
@@ -482,7 +485,7 @@ VALUE rb_Number_sqrt (VALUE number)
|
|
482
485
|
VALUE rb_Number_round_c_c (VALUE number)
|
483
486
|
{
|
484
487
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
485
|
-
DATA_PTR(result) =
|
488
|
+
DATA_PTR(result) = complex_round_c_c(DATA_PTR(number));
|
486
489
|
|
487
490
|
return result;
|
488
491
|
}
|
@@ -490,7 +493,7 @@ VALUE rb_Number_round_c_c (VALUE number)
|
|
490
493
|
VALUE rb_Number_round_c_f (VALUE number)
|
491
494
|
{
|
492
495
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
493
|
-
DATA_PTR(result) =
|
496
|
+
DATA_PTR(result) = complex_round_c_f(DATA_PTR(number));
|
494
497
|
|
495
498
|
return result;
|
496
499
|
}
|
@@ -498,7 +501,7 @@ VALUE rb_Number_round_c_f (VALUE number)
|
|
498
501
|
VALUE rb_Number_round_f_c (VALUE number)
|
499
502
|
{
|
500
503
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
501
|
-
DATA_PTR(result) =
|
504
|
+
DATA_PTR(result) = complex_round_f_c(DATA_PTR(number));
|
502
505
|
|
503
506
|
return result;
|
504
507
|
}
|
@@ -506,7 +509,7 @@ VALUE rb_Number_round_f_c (VALUE number)
|
|
506
509
|
VALUE rb_Number_round_f_f (VALUE number)
|
507
510
|
{
|
508
511
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
509
|
-
DATA_PTR(result) =
|
512
|
+
DATA_PTR(result) = complex_round_f_f(DATA_PTR(number));
|
510
513
|
|
511
514
|
return result;
|
512
515
|
}
|
@@ -514,7 +517,7 @@ VALUE rb_Number_round_f_f (VALUE number)
|
|
514
517
|
VALUE rb_Number_round_i_i (VALUE number)
|
515
518
|
{
|
516
519
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
517
|
-
DATA_PTR(result) =
|
520
|
+
DATA_PTR(result) = complex_round_i_i(DATA_PTR(number));
|
518
521
|
|
519
522
|
return result;
|
520
523
|
}
|
@@ -522,7 +525,7 @@ VALUE rb_Number_round_i_i (VALUE number)
|
|
522
525
|
VALUE rb_Number_round_i_o (VALUE number)
|
523
526
|
{
|
524
527
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
525
|
-
DATA_PTR(result) =
|
528
|
+
DATA_PTR(result) = complex_round_i_o(DATA_PTR(number));
|
526
529
|
|
527
530
|
return result;
|
528
531
|
}
|
@@ -530,7 +533,7 @@ VALUE rb_Number_round_i_o (VALUE number)
|
|
530
533
|
VALUE rb_Number_round_o_i (VALUE number)
|
531
534
|
{
|
532
535
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
533
|
-
DATA_PTR(result) =
|
536
|
+
DATA_PTR(result) = complex_round_o_i(DATA_PTR(number));
|
534
537
|
|
535
538
|
return result;
|
536
539
|
}
|
@@ -538,7 +541,7 @@ VALUE rb_Number_round_o_i (VALUE number)
|
|
538
541
|
VALUE rb_Number_round_o_o (VALUE number)
|
539
542
|
{
|
540
543
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
541
|
-
DATA_PTR(result) =
|
544
|
+
DATA_PTR(result) = complex_round_o_o(DATA_PTR(number));
|
542
545
|
|
543
546
|
return result;
|
544
547
|
}
|
@@ -546,7 +549,7 @@ VALUE rb_Number_round_o_o (VALUE number)
|
|
546
549
|
VALUE rb_Number_complex_ll (VALUE number)
|
547
550
|
{
|
548
551
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
549
|
-
DATA_PTR(result) =
|
552
|
+
DATA_PTR(result) = complex_ll(DATA_PTR(number));
|
550
553
|
|
551
554
|
return result;
|
552
555
|
}
|
@@ -554,7 +557,7 @@ VALUE rb_Number_complex_ll (VALUE number)
|
|
554
557
|
VALUE rb_Number_complex_lu (VALUE number)
|
555
558
|
{
|
556
559
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
557
|
-
DATA_PTR(result) =
|
560
|
+
DATA_PTR(result) = complex_lu(DATA_PTR(number));
|
558
561
|
|
559
562
|
return result;
|
560
563
|
}
|
@@ -562,7 +565,7 @@ VALUE rb_Number_complex_lu (VALUE number)
|
|
562
565
|
VALUE rb_Number_complex_n (VALUE number)
|
563
566
|
{
|
564
567
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
565
|
-
DATA_PTR(result) =
|
568
|
+
DATA_PTR(result) = complex_n(DATA_PTR(number));
|
566
569
|
|
567
570
|
return result;
|
568
571
|
}
|
@@ -570,7 +573,7 @@ VALUE rb_Number_complex_n (VALUE number)
|
|
570
573
|
VALUE rb_Number_complex_ul (VALUE number)
|
571
574
|
{
|
572
575
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
573
|
-
DATA_PTR(result) =
|
576
|
+
DATA_PTR(result) = complex_ul(DATA_PTR(number));
|
574
577
|
|
575
578
|
return result;
|
576
579
|
}
|
@@ -578,7 +581,7 @@ VALUE rb_Number_complex_ul (VALUE number)
|
|
578
581
|
VALUE rb_Number_complex_uu (VALUE number)
|
579
582
|
{
|
580
583
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
581
|
-
DATA_PTR(result) =
|
584
|
+
DATA_PTR(result) = complex_uu(DATA_PTR(number));
|
582
585
|
|
583
586
|
return result;
|
584
587
|
}
|
@@ -586,7 +589,7 @@ VALUE rb_Number_complex_uu (VALUE number)
|
|
586
589
|
VALUE rb_Number_complex_magnitude (VALUE number)
|
587
590
|
{
|
588
591
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
589
|
-
DATA_PTR(result) =
|
592
|
+
DATA_PTR(result) = complex_magnitude(DATA_PTR(number));
|
590
593
|
|
591
594
|
return result;
|
592
595
|
}
|
@@ -594,7 +597,7 @@ VALUE rb_Number_complex_magnitude (VALUE number)
|
|
594
597
|
VALUE rb_Number_complex_mignitude (VALUE number)
|
595
598
|
{
|
596
599
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
597
|
-
DATA_PTR(result) =
|
600
|
+
DATA_PTR(result) = complex_mignitude(DATA_PTR(number));
|
598
601
|
|
599
602
|
return result;
|
600
603
|
}
|
@@ -602,7 +605,7 @@ VALUE rb_Number_complex_mignitude (VALUE number)
|
|
602
605
|
VALUE rb_Number_complex_width (VALUE number)
|
603
606
|
{
|
604
607
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
605
|
-
DATA_PTR(result) =
|
608
|
+
DATA_PTR(result) = complex_width(DATA_PTR(number));
|
606
609
|
|
607
610
|
return result;
|
608
611
|
}
|
@@ -610,7 +613,7 @@ VALUE rb_Number_complex_width (VALUE number)
|
|
610
613
|
VALUE rb_Number_imag_l (VALUE number)
|
611
614
|
{
|
612
615
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
613
|
-
DATA_PTR(result) =
|
616
|
+
DATA_PTR(result) = complex_im_l(DATA_PTR(number));
|
614
617
|
|
615
618
|
return result;
|
616
619
|
}
|
@@ -618,7 +621,7 @@ VALUE rb_Number_imag_l (VALUE number)
|
|
618
621
|
VALUE rb_Number_imag_n (VALUE number)
|
619
622
|
{
|
620
623
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
621
|
-
DATA_PTR(result) =
|
624
|
+
DATA_PTR(result) = complex_im_n(DATA_PTR(number));
|
622
625
|
|
623
626
|
return result;
|
624
627
|
}
|
@@ -626,7 +629,7 @@ VALUE rb_Number_imag_n (VALUE number)
|
|
626
629
|
VALUE rb_Number_imag_u (VALUE number)
|
627
630
|
{
|
628
631
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
629
|
-
DATA_PTR(result) =
|
632
|
+
DATA_PTR(result) = complex_im_u(DATA_PTR(number));
|
630
633
|
|
631
634
|
return result;
|
632
635
|
}
|
@@ -634,7 +637,7 @@ VALUE rb_Number_imag_u (VALUE number)
|
|
634
637
|
VALUE rb_Number_imag_magnitude (VALUE number)
|
635
638
|
{
|
636
639
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
637
|
-
DATA_PTR(result) =
|
640
|
+
DATA_PTR(result) = complex_im_magnitude(DATA_PTR(number));
|
638
641
|
|
639
642
|
return result;
|
640
643
|
}
|
@@ -642,7 +645,7 @@ VALUE rb_Number_imag_magnitude (VALUE number)
|
|
642
645
|
VALUE rb_Number_imag_mignitude (VALUE number)
|
643
646
|
{
|
644
647
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
645
|
-
DATA_PTR(result) =
|
648
|
+
DATA_PTR(result) = complex_im_mignitude(DATA_PTR(number));
|
646
649
|
|
647
650
|
return result;
|
648
651
|
}
|
@@ -650,7 +653,7 @@ VALUE rb_Number_imag_mignitude (VALUE number)
|
|
650
653
|
VALUE rb_Number_imag_width (VALUE number)
|
651
654
|
{
|
652
655
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
653
|
-
DATA_PTR(result) =
|
656
|
+
DATA_PTR(result) = complex_im_width(DATA_PTR(number));
|
654
657
|
|
655
658
|
return result;
|
656
659
|
}
|
@@ -658,7 +661,7 @@ VALUE rb_Number_imag_width (VALUE number)
|
|
658
661
|
VALUE rb_Number_real_l (VALUE number)
|
659
662
|
{
|
660
663
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
661
|
-
DATA_PTR(result) =
|
664
|
+
DATA_PTR(result) = complex_re_l(DATA_PTR(number));
|
662
665
|
|
663
666
|
return result;
|
664
667
|
}
|
@@ -666,7 +669,7 @@ VALUE rb_Number_real_l (VALUE number)
|
|
666
669
|
VALUE rb_Number_real_n (VALUE number)
|
667
670
|
{
|
668
671
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
669
|
-
DATA_PTR(result) =
|
672
|
+
DATA_PTR(result) = complex_re_n(DATA_PTR(number));
|
670
673
|
|
671
674
|
return result;
|
672
675
|
}
|
@@ -674,7 +677,7 @@ VALUE rb_Number_real_n (VALUE number)
|
|
674
677
|
VALUE rb_Number_real_u (VALUE number)
|
675
678
|
{
|
676
679
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
677
|
-
DATA_PTR(result) =
|
680
|
+
DATA_PTR(result) = complex_re_u(DATA_PTR(number));
|
678
681
|
|
679
682
|
return result;
|
680
683
|
}
|
@@ -682,7 +685,7 @@ VALUE rb_Number_real_u (VALUE number)
|
|
682
685
|
VALUE rb_Number_real_magnitude (VALUE number)
|
683
686
|
{
|
684
687
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
685
|
-
DATA_PTR(result) =
|
688
|
+
DATA_PTR(result) = complex_re_magnitude(DATA_PTR(number));
|
686
689
|
|
687
690
|
return result;
|
688
691
|
}
|
@@ -690,7 +693,7 @@ VALUE rb_Number_real_magnitude (VALUE number)
|
|
690
693
|
VALUE rb_Number_real_mignitude (VALUE number)
|
691
694
|
{
|
692
695
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
693
|
-
DATA_PTR(result) =
|
696
|
+
DATA_PTR(result) = complex_re_mignitude(DATA_PTR(number));
|
694
697
|
|
695
698
|
return result;
|
696
699
|
}
|
@@ -698,7 +701,7 @@ VALUE rb_Number_real_mignitude (VALUE number)
|
|
698
701
|
VALUE rb_Number_real_width (VALUE number)
|
699
702
|
{
|
700
703
|
VALUE result = rb_obj_alloc(rb_cNumber);
|
701
|
-
DATA_PTR(result) =
|
704
|
+
DATA_PTR(result) = complex_re_width(DATA_PTR(number));
|
702
705
|
|
703
706
|
return result;
|
704
707
|
}
|