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