carray 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/ca_iter_block.c +32 -30
  4. data/ca_iter_dimension.c +24 -22
  5. data/ca_iter_window.c +25 -23
  6. data/ca_obj_array.c +58 -56
  7. data/ca_obj_bitarray.c +27 -27
  8. data/ca_obj_bitfield.c +46 -45
  9. data/ca_obj_block.c +77 -72
  10. data/ca_obj_fake.c +20 -20
  11. data/ca_obj_farray.c +22 -22
  12. data/ca_obj_field.c +31 -30
  13. data/ca_obj_grid.c +63 -62
  14. data/ca_obj_mapping.c +35 -32
  15. data/ca_obj_object.c +54 -54
  16. data/ca_obj_reduce.c +13 -13
  17. data/ca_obj_refer.c +42 -39
  18. data/ca_obj_repeat.c +50 -47
  19. data/ca_obj_select.c +24 -24
  20. data/ca_obj_shift.c +61 -58
  21. data/ca_obj_transpose.c +52 -51
  22. data/ca_obj_unbound_repeat.c +28 -27
  23. data/ca_obj_window.c +77 -72
  24. data/carray.gemspec +0 -2
  25. data/carray.h +190 -163
  26. data/carray_access.c +137 -136
  27. data/carray_attribute.c +24 -13
  28. data/carray_call_cfunc.c +21 -21
  29. data/carray_cast.c +106 -110
  30. data/carray_cast_func.rb +17 -17
  31. data/carray_class.c +3 -3
  32. data/carray_conversion.c +15 -15
  33. data/carray_copy.c +27 -27
  34. data/carray_core.c +22 -21
  35. data/carray_element.c +55 -47
  36. data/carray_generate.c +32 -32
  37. data/carray_iterator.c +36 -35
  38. data/carray_loop.c +37 -37
  39. data/carray_mask.c +21 -21
  40. data/carray_math.rb +18 -18
  41. data/carray_numeric.c +1 -1
  42. data/carray_operator.c +19 -18
  43. data/carray_order.c +30 -30
  44. data/carray_random.c +34 -32
  45. data/carray_sort_addr.c +12 -12
  46. data/carray_stat.c +127 -127
  47. data/carray_stat_proc.rb +152 -141
  48. data/carray_test.c +16 -16
  49. data/carray_utils.c +58 -56
  50. data/ext/calculus/carray_calculus.c +19 -20
  51. data/ext/calculus/carray_interp.c +12 -11
  52. data/ext/fortio/lib/fortio/fortran_sequential.rb +2 -2
  53. data/ext/fortio/ruby_fortio.c +1 -1
  54. data/ext/imagemap/carray_imagemap.c +14 -14
  55. data/ext/narray/ca_wrap_narray.c +30 -21
  56. data/extconf.rb +5 -0
  57. data/lib/carray/base/basic.rb +4 -3
  58. data/lib/carray/base/serialize.rb +3 -3
  59. data/lib/carray/graphics/gnuplot.rb +10 -7
  60. data/lib/carray/io/csv.rb +14 -9
  61. data/lib/carray/io/imagemagick.rb +7 -0
  62. data/lib/carray/io/sqlite3.rb +6 -4
  63. data/mkmath.rb +20 -20
  64. data/ruby_carray.c +2 -0
  65. data/ruby_ccomplex.c +3 -3
  66. data/test/test_130.rb +23 -0
  67. data/test/test_ALL.rb +2 -1
  68. data/test/test_order.rb +3 -3
  69. data/test/test_stat.rb +2 -2
  70. data/version.h +4 -4
  71. metadata +4 -37
  72. data/examples/ex001.rb +0 -10
  73. data/examples/test-int.rb +0 -13
  74. data/lib/carray/autoload/autoload_io_excel.rb +0 -5
  75. data/lib/carray/io/excel.rb +0 -26
data/carray_test.c CHANGED
@@ -45,7 +45,7 @@ ca_check_rank (void *ap, int rank)
45
45
  }
46
46
 
47
47
  void
48
- ca_check_shape (void *ap, int rank, int32_t *dim)
48
+ ca_check_shape (void *ap, int rank, ca_size_t *dim)
49
49
  {
50
50
  CArray *ca = (CArray *) ap;
51
51
  int i;
@@ -110,7 +110,7 @@ ca_check_same_shape (void *ap1, void *ap2)
110
110
  }
111
111
 
112
112
  void
113
- ca_check_index (void *ap, int32_t *idx)
113
+ ca_check_index (void *ap, ca_size_t *idx)
114
114
  {
115
115
  CArray *ca = (CArray *) ap;
116
116
  int i;
@@ -154,10 +154,10 @@ ca_has_same_shape (void *ap1, void *ap2)
154
154
  }
155
155
 
156
156
  int
157
- ca_is_valid_index (void *ap, int32_t *idx)
157
+ ca_is_valid_index (void *ap, ca_size_t *idx)
158
158
  {
159
159
  CArray *ca = (CArray *) ap;
160
- int32_t i;
160
+ int8_t i;
161
161
  for (i=0; i<ca->rank; i++) {
162
162
  if ( idx[i] < 0 || idx[i] >= ca->dim[i] ) {
163
163
  return 0;
@@ -231,7 +231,7 @@ static VALUE
231
231
  rb_ca_is_valid_index (int argc, VALUE *argv, VALUE self)
232
232
  {
233
233
  CArray *ca;
234
- int32_t idx;
234
+ ca_size_t idx;
235
235
  int i;
236
236
 
237
237
  Data_Get_Struct(self, CArray, ca);
@@ -241,7 +241,7 @@ rb_ca_is_valid_index (int argc, VALUE *argv, VALUE self)
241
241
  "invalid # of arguments (%i for %i)", argc, ca->rank);
242
242
  }
243
243
  for (i=0; i<ca->rank; i++) {
244
- idx = NUM2INT(argv[i]);
244
+ idx = NUM2SIZE(argv[i]);
245
245
  if ( idx < 0 ) {
246
246
  idx += ca->dim[i];
247
247
  }
@@ -264,10 +264,10 @@ static VALUE
264
264
  rb_ca_is_valid_addr (VALUE self, VALUE raddr)
265
265
  {
266
266
  CArray *ca;
267
- int32_t addr;
267
+ ca_size_t addr;
268
268
 
269
269
  Data_Get_Struct(self, CArray, ca);
270
- addr = NUM2LONG(raddr);
270
+ addr = NUM2SIZE(raddr);
271
271
  if ( addr < 0 ) {
272
272
  addr += ca->elements;
273
273
  }
@@ -363,8 +363,8 @@ ca_equal (void *ap, void *bp)
363
363
  int flag = 1;
364
364
  int masked_a, masked_b;
365
365
  boolean8_t *ma, *mb;
366
- int32_t i;
367
- int32_t bytes;
366
+ ca_size_t i;
367
+ ca_size_t bytes;
368
368
  char *pa;
369
369
  char *pb;
370
370
  ca_eql_func eql;
@@ -497,9 +497,9 @@ rb_ca_equal (VALUE self, VALUE other)
497
497
  */
498
498
 
499
499
  int32_t
500
- ca_mem_hash (char *mp, int32_t mlen)
500
+ ca_mem_hash (char *mp, ca_size_t mlen)
501
501
  {
502
- register int32_t len = mlen;
502
+ register ca_size_t len = mlen;
503
503
  register char *p = mp;
504
504
  register int32_t key = 0;
505
505
  while (len--) {
@@ -509,13 +509,13 @@ ca_mem_hash (char *mp, int32_t mlen)
509
509
  return key;
510
510
  }
511
511
 
512
- static long
512
+ static int32_t
513
513
  ca_hash (CArray *ca)
514
514
  {
515
- long hash;
515
+ int32_t hash;
516
516
 
517
517
  if ( ca_is_any_masked(ca) ) {
518
- int32_t bytes = ca->bytes;
518
+ ca_size_t bytes = ca->bytes;
519
519
  boolean8_t *m = (boolean8_t*) ca->mask->ptr;
520
520
  /* char *tptr = ALLOC_N(char, ca_length(ca)); */
521
521
  char *tptr = malloc_with_check(ca_length(ca));
@@ -556,7 +556,7 @@ VALUE
556
556
  rb_ca_hash (VALUE self)
557
557
  {
558
558
  CArray *ca;
559
- long hash;
559
+ int32_t hash;
560
560
 
561
561
  Data_Get_Struct(self, CArray, ca);
562
562
  hash = ca_hash(ca);
data/carray_utils.c CHANGED
@@ -71,20 +71,20 @@ ca_debug () {}
71
71
 
72
72
  /* ------------------------------------------------------------------- */
73
73
 
74
- int32_t
74
+ ca_size_t
75
75
  ca_set_iterator (int n, ...)
76
76
  {
77
77
  CArray *ca;
78
78
  char **p;
79
- int *s;
80
- int32_t max = -1;
79
+ ca_size_t *s;
80
+ ca_size_t max = -1;
81
81
  int all_scalar = 1;
82
82
  va_list args;
83
83
  va_start(args, n);
84
84
  while ( n-- ) {
85
85
  ca = va_arg(args, CArray *);
86
86
  p = va_arg(args, char **);
87
- s = va_arg(args, int *);
87
+ s = va_arg(args, ca_size_t *);
88
88
  *p = ca->ptr;
89
89
  if ( ca_is_scalar(ca) ) {
90
90
  *s = 0;
@@ -112,11 +112,11 @@ ca_set_iterator (int n, ...)
112
112
 
113
113
  /* ------------------------------------------------------------------- */
114
114
 
115
- int32_t
115
+ ca_size_t
116
116
  ca_get_loop_count (int n, ...)
117
117
  {
118
118
  CArray *ca;
119
- int32_t elements = -1;
119
+ ca_size_t elements = -1;
120
120
  int32_t is_scalar = 1;
121
121
  va_list args;
122
122
  va_start(args, n);
@@ -162,9 +162,10 @@ ca_get_loop_count (int n, ...)
162
162
  */
163
163
 
164
164
  void
165
- ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
165
+ ca_parse_range (VALUE arg, ca_size_t size,
166
+ ca_size_t *poffset, ca_size_t *pcount, ca_size_t *pstep)
166
167
  {
167
- int32_t first, start, last, count, step, bound, excl;
168
+ ca_size_t first, start, last, count, step, bound, excl;
168
169
 
169
170
  retry:
170
171
 
@@ -175,7 +176,7 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
175
176
  }
176
177
  else if ( rb_obj_is_kind_of(arg, rb_cInteger) ) {
177
178
  /* i */
178
- start = FIX2INT(arg);
179
+ start = NUM2SIZE(arg);
179
180
  CA_CHECK_INDEX(start, size);
180
181
  *poffset = start;
181
182
  *pcount = 1;
@@ -183,8 +184,8 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
183
184
  }
184
185
  else if ( rb_obj_is_kind_of(arg, rb_cRange) ) {
185
186
  /* i..j */
186
- first = NUM2INT(RANGE_BEG(arg));
187
- last = NUM2INT(RANGE_END(arg));
187
+ first = NUM2SIZE(RANGE_BEG(arg));
188
+ last = NUM2SIZE(RANGE_END(arg));
188
189
  excl = RTEST(RANGE_EXCL(arg));
189
190
  CA_CHECK_INDEX(first, size);
190
191
  if ( last < 0 ) {
@@ -198,7 +199,7 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
198
199
  "invalid index range");
199
200
  }
200
201
  *poffset = first;
201
- *pcount = abs(last - first) + 1;
202
+ *pcount = llabs(last - first) + 1;
202
203
  *pstep = 1;
203
204
  }
204
205
  else if ( TYPE(arg) == T_ARRAY ) {
@@ -210,12 +211,12 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
210
211
  VALUE arg0 = rb_ary_entry(arg, 0);
211
212
  VALUE arg1 = rb_ary_entry(arg, 1);
212
213
  if ( NIL_P(arg0) ) { /* [nil,k] */
213
- step = NUM2INT(arg1);
214
+ step = NUM2SIZE(arg1);
214
215
  if ( step == 0 ) {
215
216
  rb_raise(rb_eRuntimeError, "step should not be 0");
216
217
  }
217
218
  start = 0;
218
- count = (size-1)/abs(step) + 1;
219
+ count = (size-1)/llabs(step) + 1;
219
220
  bound = start + (count - 1)*step;
220
221
  CA_CHECK_INDEX(start, size);
221
222
  CA_CHECK_INDEX(bound, size);
@@ -224,10 +225,10 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
224
225
  *pstep = step;
225
226
  }
226
227
  else if ( rb_obj_is_kind_of(arg0, rb_cRange) ) { /* [i..j,k] */
227
- start = NUM2INT(RANGE_BEG(arg0));
228
- last = NUM2INT(RANGE_END(arg0));
228
+ start = NUM2SIZE(RANGE_BEG(arg0));
229
+ last = NUM2SIZE(RANGE_END(arg0));
229
230
  excl = RTEST(RANGE_EXCL(arg0));
230
- step = NUM2INT(arg1);
231
+ step = NUM2SIZE(arg1);
231
232
  if ( step == 0 ) {
232
233
  rb_raise(rb_eRuntimeError, "step should not be 0");
233
234
  }
@@ -245,7 +246,7 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
245
246
  count = 1;
246
247
  }
247
248
  else {
248
- count = abs(last - start)/abs(step) + 1;
249
+ count = llabs(last - start)/llabs(step) + 1;
249
250
  }
250
251
  bound = start + (count - 1)*step;
251
252
  CA_CHECK_INDEX(bound, size);
@@ -254,8 +255,8 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
254
255
  *pstep = step;
255
256
  }
256
257
  else { /* [i,n] */
257
- start = NUM2INT(arg0);
258
- count = NUM2INT(arg1);
258
+ start = NUM2SIZE(arg0);
259
+ count = NUM2SIZE(arg1);
259
260
  bound = start + (count - 1);
260
261
  CA_CHECK_INDEX(start, size);
261
262
  CA_CHECK_INDEX(bound, size);
@@ -265,9 +266,9 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
265
266
  }
266
267
  }
267
268
  else if ( RARRAY_LEN(arg) == 3 ) { /* [i,n,k] */
268
- start = NUM2INT(rb_ary_entry(arg, 0));
269
- count = NUM2INT(rb_ary_entry(arg, 1));
270
- step = NUM2INT(rb_ary_entry(arg, 2));
269
+ start = NUM2SIZE(rb_ary_entry(arg, 0));
270
+ count = NUM2SIZE(rb_ary_entry(arg, 1));
271
+ step = NUM2SIZE(rb_ary_entry(arg, 2));
271
272
  if ( step == 0 ) {
272
273
  rb_raise(rb_eRuntimeError, "step should not be 0");
273
274
  }
@@ -288,10 +289,10 @@ ca_parse_range (VALUE arg, int size, int *poffset, int *pcount, int *pstep)
288
289
  }
289
290
 
290
291
  void
291
- ca_parse_range_without_check (VALUE arg, int size,
292
- int *poffset, int *pcount, int *pstep)
292
+ ca_parse_range_without_check (VALUE arg, ca_size_t size,
293
+ ca_size_t *poffset, ca_size_t *pcount, ca_size_t *pstep)
293
294
  {
294
- int32_t first, start, last, count, step, bound, excl;
295
+ ca_size_t first, start, last, count, step, bound, excl;
295
296
 
296
297
  retry:
297
298
 
@@ -302,15 +303,15 @@ ca_parse_range_without_check (VALUE arg, int size,
302
303
  }
303
304
  else if ( rb_obj_is_kind_of(arg, rb_cInteger) ) {
304
305
  /* i */
305
- start = FIX2INT(arg);
306
+ start = NUM2SIZE(arg);
306
307
  *poffset = start;
307
308
  *pcount = 1;
308
309
  *pstep = 1;
309
310
  }
310
311
  else if ( rb_obj_is_kind_of(arg, rb_cRange) ) {
311
312
  /* i..j */
312
- first = NUM2INT(RANGE_BEG(arg));
313
- last = NUM2INT(RANGE_END(arg));
313
+ first = NUM2SIZE(RANGE_BEG(arg));
314
+ last = NUM2SIZE(RANGE_END(arg));
314
315
  excl = RTEST(RANGE_EXCL(arg));
315
316
  if ( excl ) {
316
317
  last += ( (last>=first) ? -1 : 1 );
@@ -329,30 +330,30 @@ ca_parse_range_without_check (VALUE arg, int size,
329
330
  VALUE arg1 = rb_ary_entry(arg, 1);
330
331
  if ( NIL_P(arg0) ) { /* [nil,k] */
331
332
  start = 0;
332
- step = NUM2INT(arg1);
333
- count = (size-1)/abs(step) + 1;
333
+ step = NUM2SIZE(arg1);
334
+ count = (size-1)/llabs(step) + 1;
334
335
  bound = start + (count - 1)*step;
335
336
  *poffset = start;
336
337
  *pcount = count;
337
338
  *pstep = step;
338
339
  }
339
340
  else if ( rb_obj_is_kind_of(arg0, rb_cRange) ) { /* [i..j,k] */
340
- start = NUM2INT(RANGE_BEG(arg0));
341
- last = NUM2INT(RANGE_END(arg0));
341
+ start = NUM2SIZE(RANGE_BEG(arg0));
342
+ last = NUM2SIZE(RANGE_END(arg0));
342
343
  excl = RTEST(RANGE_EXCL(arg0));
343
- step = NUM2INT(arg1);
344
+ step = NUM2SIZE(arg1);
344
345
  if ( excl ) {
345
346
  last += ( (last>=start) ? -1 : 1 );
346
347
  }
347
- count = (last - start)/abs(step) + 1;
348
+ count = (last - start)/llabs(step) + 1;
348
349
  bound = start + (count - 1)*step;
349
350
  *poffset = start;
350
351
  *pcount = count;
351
352
  *pstep = step;
352
353
  }
353
354
  else { /* [i,n] */
354
- start = NUM2INT(arg0);
355
- count = NUM2INT(arg1);
355
+ start = NUM2SIZE(arg0);
356
+ count = NUM2SIZE(arg1);
356
357
  bound = start + (count - 1);
357
358
  *poffset = start;
358
359
  *pcount = count;
@@ -360,9 +361,9 @@ ca_parse_range_without_check (VALUE arg, int size,
360
361
  }
361
362
  }
362
363
  else if ( RARRAY_LEN(arg) == 3 ) { /* [i,n,k] */
363
- start = NUM2INT(rb_ary_entry(arg, 0));
364
- count = NUM2INT(rb_ary_entry(arg, 1));
365
- step = NUM2INT(rb_ary_entry(arg, 2));
364
+ start = NUM2SIZE(rb_ary_entry(arg, 0));
365
+ count = NUM2SIZE(rb_ary_entry(arg, 1));
366
+ step = NUM2SIZE(rb_ary_entry(arg, 2));
366
367
  bound = start + (count - 1)*step;
367
368
  *poffset = start;
368
369
  *pcount = count;
@@ -377,8 +378,8 @@ ca_parse_range_without_check (VALUE arg, int size,
377
378
  }
378
379
  }
379
380
 
380
- int32_t
381
- ca_bounds_normalize_index (int8_t bounds, int32_t size0, int32_t k)
381
+ ca_size_t
382
+ ca_bounds_normalize_index (int8_t bounds, ca_size_t size0, ca_size_t k)
382
383
  {
383
384
  switch ( bounds ) {
384
385
  case CA_BOUNDS_MASK:
@@ -428,7 +429,7 @@ rb_ca_s_scan_float (int argc, VALUE *argv, VALUE self)
428
429
  double value;
429
430
  int count;
430
431
 
431
- rb_scan_args(argc, argv, "11", &rstr, &rfval);
432
+ rb_scan_args(argc, argv, "11", (VALUE *)&rstr, (VALUE *)&rfval);
432
433
 
433
434
  if ( NIL_P(rstr) ) {
434
435
  return ( NIL_P(rfval) ) ? rb_float_new(0.0/0.0) : rfval;
@@ -453,10 +454,10 @@ rb_ca_s_scan_int (int argc, VALUE *argv, VALUE self)
453
454
  long value;
454
455
  int count;
455
456
 
456
- rb_scan_args(argc, argv, "11", &rstr, &rfval);
457
+ rb_scan_args(argc, argv, "11", (VALUE *) &rstr, (VALUE *) &rfval);
457
458
 
458
459
  if ( NIL_P(rstr) ) {
459
- return ( NIL_P(rfval) ) ? INT2FIX(0) : rfval;
460
+ return ( NIL_P(rfval) ) ? INT2NUM(0) : rfval;
460
461
  }
461
462
 
462
463
  Check_Type(rstr, T_STRING);
@@ -464,15 +465,15 @@ rb_ca_s_scan_int (int argc, VALUE *argv, VALUE self)
464
465
  count = sscanf(StringValuePtr(rstr), "%li", &value);
465
466
 
466
467
  if ( count == 1 ) {
467
- return LONG2NUM(value);
468
+ return SIZE2NUM(value);
468
469
  }
469
470
  else {
470
- return ( NIL_P(rfval) ) ? INT2FIX(0) : rfval;
471
+ return ( NIL_P(rfval) ) ? INT2NUM(0) : rfval;
471
472
  }
472
473
  }
473
474
 
474
475
  static const struct {
475
- char *name;
476
+ const char *name;
476
477
  int data_type;
477
478
  } ca_name_to_type[] = {
478
479
  { "fixlen", CA_FIXLEN },
@@ -510,10 +511,11 @@ rb_ca_guess_type (VALUE obj)
510
511
  VALUE inspect;
511
512
 
512
513
  if ( TYPE(obj) == T_FIXNUM ) {
513
- return NUM2INT(obj);
514
+ return NUM2SIZE(obj);
514
515
  }
515
516
  else if ( TYPE(obj) == T_STRING ) {
516
- char *name0, *name = StringValuePtr(obj);
517
+ const char *name0;
518
+ char *name = StringValuePtr(obj);
517
519
  int i;
518
520
  i = 0;
519
521
  while ( ( name0 = ca_name_to_type[i].name ) ) {
@@ -539,20 +541,20 @@ rb_ca_guess_type (VALUE obj)
539
541
 
540
542
  void
541
543
  rb_ca_guess_type_and_bytes (VALUE rtype, VALUE rbytes,
542
- int8_t *data_type, int32_t *bytes)
544
+ int8_t *data_type, ca_size_t *bytes)
543
545
  {
544
546
  *data_type = rb_ca_guess_type(rtype);
545
547
 
546
548
  if ( *data_type == CA_FIXLEN ) {
547
549
  if ( TYPE(rtype) == T_CLASS ) {
548
- *bytes = NUM2INT(rb_const_get(rtype, rb_intern("DATA_SIZE")));
550
+ *bytes = NUM2SIZE(rb_const_get(rtype, rb_intern("DATA_SIZE")));
549
551
  }
550
552
  else {
551
553
  if ( NIL_P(rbytes) ) {
552
554
  *bytes = 0;
553
555
  }
554
556
  else {
555
- *bytes = NUM2INT(rbytes);
557
+ *bytes = NUM2SIZE(rbytes);
556
558
  }
557
559
  }
558
560
  }
@@ -572,10 +574,10 @@ rb_ca_s_guess_type_and_bytes (int argc, VALUE *argv, VALUE klass)
572
574
  {
573
575
  VALUE rtype, rbytes;
574
576
  int8_t data_type;
575
- int32_t bytes;
576
- rb_scan_args(argc, argv, "11", &rtype, &rbytes);
577
+ ca_size_t bytes;
578
+ rb_scan_args(argc, argv, "11", (VALUE *) &rtype, (VALUE *) &rbytes);
577
579
  rb_ca_guess_type_and_bytes(rtype, rbytes, &data_type, &bytes);
578
- return rb_assoc_new(INT2FIX(data_type), LONG2NUM(bytes));
580
+ return rb_assoc_new(INT2NUM(data_type), SIZE2NUM(bytes));
579
581
  }
580
582
 
581
583
  VALUE
@@ -18,7 +18,7 @@
18
18
  /* ----------------------------------------------------------------- */
19
19
 
20
20
  static double
21
- simpson (double *x, double *y, int n)
21
+ simpson (double *x, double *y, ca_size_t n)
22
22
  {
23
23
  double s;
24
24
 
@@ -53,7 +53,7 @@ simpson (double *x, double *y, int n)
53
53
  else {
54
54
  double x0, x1, x2;
55
55
  double h, m, c0, c1, c2;
56
- int i;
56
+ ca_size_t i;
57
57
  s = 0.0;
58
58
  for (i=0; i<n-2; i+=2) {
59
59
  x0 = x[i];
@@ -100,10 +100,10 @@ rb_ca_integrate (volatile VALUE self, volatile VALUE vsc)
100
100
 
101
101
  /* ----------------------------------------------------------------- */
102
102
 
103
- static int
104
- linear_index (int n, double *y, double yy, double *idx)
103
+ static ca_size_t
104
+ linear_index (ca_size_t n, double *y, double yy, double *idx)
105
105
  {
106
- int a, b, c, x1;
106
+ ca_size_t a, b, c, x1;
107
107
  double ya, yb, yc;
108
108
  double y1, y2;
109
109
  double rest;
@@ -120,7 +120,7 @@ linear_index (int n, double *y, double yy, double *idx)
120
120
 
121
121
  /* check for equally spaced scale */
122
122
 
123
- a = (int)((yy-y[0])/(y[n-1]-y[0])*(n-1));
123
+ a = (ca_size_t)((yy-y[0])/(y[n-1]-y[0])*(n-1));
124
124
 
125
125
  if ( a >= 0 && a < n-1 ) {
126
126
  if ( (y[a] - yy) * (y[a+1] - yy) <= 0 ) { /* lucky case */
@@ -193,11 +193,11 @@ rb_ca_binary_search_linear_index (volatile VALUE self, volatile VALUE vx)
193
193
  {
194
194
  volatile VALUE out, out0;
195
195
  CArray *ca, *sc, *cx, *co0, *co;
196
- int32_t n;
196
+ ca_size_t n;
197
197
  double *x;
198
198
  double *px;
199
199
  double *po;
200
- int i;
200
+ ca_size_t i;
201
201
 
202
202
  Data_Get_Struct(self, CArray, ca);
203
203
 
@@ -246,7 +246,7 @@ rb_ca_binary_search_linear_index (volatile VALUE self, volatile VALUE vx)
246
246
  ca_detach_n(3, sc, cx, co);
247
247
 
248
248
  if ( rb_ca_is_scalar(vx) ) {
249
- return rb_funcall(out0, rb_intern("[]"), 1, INT2FIX(0));
249
+ return rb_funcall(out0, rb_intern("[]"), 1, INT2NUM(0));
250
250
  }
251
251
  else {
252
252
  return out0;
@@ -496,10 +496,10 @@ deriv_penta (double *x, double *y, double xx)
496
496
  }
497
497
 
498
498
  static double
499
- interpolate_linear (double *x, double *y, int n, double xx)
499
+ interpolate_linear (double *x, double *y, ca_size_t n, double xx)
500
500
  {
501
501
  double ri;
502
- int i0;
502
+ ca_size_t i0;
503
503
  if ( n == 1) {
504
504
  return y[0];
505
505
  }
@@ -524,10 +524,10 @@ interpolate_linear (double *x, double *y, int n, double xx)
524
524
  }
525
525
 
526
526
  static double
527
- interpolate_cubic (double *x, double *y, int n, double xx)
527
+ interpolate_cubic (double *x, double *y, ca_size_t n, double xx)
528
528
  {
529
529
  double ri;
530
- int i0;
530
+ ca_size_t i0;
531
531
  if ( n == 1) {
532
532
  return y[0];
533
533
  }
@@ -558,10 +558,10 @@ interpolate_cubic (double *x, double *y, int n, double xx)
558
558
  }
559
559
 
560
560
  static double
561
- differentiate (double *x, double *y, int n, double xx)
561
+ differentiate (double *x, double *y, ca_size_t n, double xx)
562
562
  {
563
563
  double ri;
564
- int i0;
564
+ ca_size_t i0;
565
565
  switch ( n ) {
566
566
  case 1:
567
567
  return 0.0/0.0;
@@ -600,7 +600,7 @@ rb_ca_interpolate (int argc, VALUE *argv, VALUE self)
600
600
  char *typename = NULL;
601
601
  int type = 0;
602
602
  double *px, *po;
603
- int32_t i;
603
+ ca_size_t i;
604
604
 
605
605
  Data_Get_Struct(self, CArray, ca);
606
606
 
@@ -612,7 +612,6 @@ rb_ca_interpolate (int argc, VALUE *argv, VALUE self)
612
612
  typename = StringValuePtr(rtype);
613
613
  }
614
614
 
615
-
616
615
  if ( typename == NULL || ! strncmp("cubic", typename, 5) ) {
617
616
  type = 3;
618
617
  }
@@ -698,7 +697,7 @@ rb_ca_interpolate (int argc, VALUE *argv, VALUE self)
698
697
  ca_detach_n(4, cv, sc, cx, co);
699
698
 
700
699
  if ( rb_ca_is_scalar(vx) ) {
701
- return rb_funcall(out0, rb_intern("[]"), 1, INT2FIX(0));
700
+ return rb_funcall(out0, rb_intern("[]"), 1, INT2NUM(0));
702
701
  }
703
702
  else {
704
703
  return out0;
@@ -713,7 +712,7 @@ rb_ca_differentiate (volatile VALUE self,
713
712
  volatile VALUE out0, out;
714
713
  CArray *ca, *cv, *sc, *cx, *co0, *co;
715
714
  double *px, *po;
716
- int32_t i;
715
+ ca_size_t i;
717
716
 
718
717
  Data_Get_Struct(self, CArray, ca);
719
718
 
@@ -769,7 +768,7 @@ rb_ca_differentiate (volatile VALUE self,
769
768
  ca_detach_n(4, cv, sc, cx, co);
770
769
 
771
770
  if ( rb_ca_is_scalar(vx) ) {
772
- return rb_funcall(out0, rb_intern("[]"), 1, INT2FIX(0));
771
+ return rb_funcall(out0, rb_intern("[]"), 1, INT2NUM(0));
773
772
  }
774
773
  else {
775
774
  return out0;