carray 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/ca_iter_block.c +32 -30
- data/ca_iter_dimension.c +24 -22
- data/ca_iter_window.c +25 -23
- data/ca_obj_array.c +58 -56
- data/ca_obj_bitarray.c +27 -27
- data/ca_obj_bitfield.c +46 -45
- data/ca_obj_block.c +77 -72
- data/ca_obj_fake.c +20 -20
- data/ca_obj_farray.c +22 -22
- data/ca_obj_field.c +31 -30
- data/ca_obj_grid.c +63 -62
- data/ca_obj_mapping.c +35 -32
- data/ca_obj_object.c +54 -54
- data/ca_obj_reduce.c +13 -13
- data/ca_obj_refer.c +42 -39
- data/ca_obj_repeat.c +50 -47
- data/ca_obj_select.c +24 -24
- data/ca_obj_shift.c +61 -58
- data/ca_obj_transpose.c +52 -51
- data/ca_obj_unbound_repeat.c +28 -27
- data/ca_obj_window.c +77 -72
- data/carray.gemspec +0 -2
- data/carray.h +190 -163
- data/carray_access.c +137 -136
- data/carray_attribute.c +24 -13
- data/carray_call_cfunc.c +21 -21
- data/carray_cast.c +106 -110
- data/carray_cast_func.rb +17 -17
- data/carray_class.c +3 -3
- data/carray_conversion.c +15 -15
- data/carray_copy.c +27 -27
- data/carray_core.c +22 -21
- data/carray_element.c +55 -47
- data/carray_generate.c +32 -32
- data/carray_iterator.c +36 -35
- data/carray_loop.c +37 -37
- data/carray_mask.c +21 -21
- data/carray_math.rb +18 -18
- data/carray_numeric.c +1 -1
- data/carray_operator.c +19 -18
- data/carray_order.c +30 -30
- data/carray_random.c +34 -32
- data/carray_sort_addr.c +12 -12
- data/carray_stat.c +127 -127
- data/carray_stat_proc.rb +152 -141
- data/carray_test.c +16 -16
- data/carray_utils.c +58 -56
- data/ext/calculus/carray_calculus.c +19 -20
- data/ext/calculus/carray_interp.c +12 -11
- data/ext/fortio/lib/fortio/fortran_sequential.rb +2 -2
- data/ext/fortio/ruby_fortio.c +1 -1
- data/ext/imagemap/carray_imagemap.c +14 -14
- data/ext/narray/ca_wrap_narray.c +30 -21
- data/extconf.rb +5 -0
- data/lib/carray/base/basic.rb +4 -3
- data/lib/carray/base/serialize.rb +3 -3
- data/lib/carray/graphics/gnuplot.rb +10 -7
- data/lib/carray/io/csv.rb +14 -9
- data/lib/carray/io/imagemagick.rb +7 -0
- data/lib/carray/io/sqlite3.rb +6 -4
- data/mkmath.rb +20 -20
- data/ruby_carray.c +2 -0
- data/ruby_ccomplex.c +3 -3
- data/test/test_130.rb +23 -0
- data/test/test_ALL.rb +2 -1
- data/test/test_order.rb +3 -3
- data/test/test_stat.rb +2 -2
- data/version.h +4 -4
- metadata +4 -37
- data/examples/ex001.rb +0 -10
- data/examples/test-int.rb +0 -13
- data/lib/carray/autoload/autoload_io_excel.rb +0 -5
- data/lib/carray/io/excel.rb +0 -26
data/carray.gemspec
CHANGED
@@ -41,7 +41,5 @@ Gem::Specification::new do |s|
|
|
41
41
|
s.required_ruby_version = ">= 1.8.1"
|
42
42
|
s.add_runtime_dependency 'narray', '~> 0.6.1.1'
|
43
43
|
s.add_runtime_dependency 'narray_miss', '~> 1.3'
|
44
|
-
s.add_runtime_dependency 'axlsx', '~> 2.0'
|
45
|
-
s.add_runtime_dependency 'spreadsheet', '~> 1.1'
|
46
44
|
s.add_runtime_dependency 'sqlite3', '~> 1.3'
|
47
45
|
end
|
data/carray.h
CHANGED
@@ -179,6 +179,7 @@ typedef int8_t boolean8_t;
|
|
179
179
|
typedef dummy_t cmplx256_t;
|
180
180
|
#endif
|
181
181
|
|
182
|
+
|
182
183
|
#include <stddef.h>
|
183
184
|
|
184
185
|
#define CA_ALIGN_VOIDP offsetof(struct { char c; void *x; }, x)
|
@@ -198,7 +199,6 @@ typedef int8_t boolean8_t;
|
|
198
199
|
|
199
200
|
#define CA_OBJ_TYPE_MAX 256
|
200
201
|
#define CA_RANK_MAX 16
|
201
|
-
#define CA_LENGTH_MAX 0x7fffffff
|
202
202
|
#define CA_ATTACH_MAX 0x80000000
|
203
203
|
|
204
204
|
#define CA_FLAG_SCALAR 1
|
@@ -272,17 +272,34 @@ enum {
|
|
272
272
|
|
273
273
|
/* -------------------------------------------------------------------- */
|
274
274
|
|
275
|
+
#ifdef HAVE_TYPE_INT64_T
|
276
|
+
typedef int64_t ca_size_t;
|
277
|
+
#define CA_SIZE CA_INT64
|
278
|
+
#define NUM2SIZE(x) NUM2LL(x)
|
279
|
+
#define SIZE2NUM(x) LL2NUM(x)
|
280
|
+
#define CA_LENGTH_MAX 0x7fffffffffffffff
|
281
|
+
#else
|
282
|
+
typedef int32_t ca_size_t;
|
283
|
+
#define CA_SIZE CA_INT32
|
284
|
+
#define NUM2SIZE(x) NUM2LONG(x)
|
285
|
+
#define SIZE2NUM(x) LONG2NUM(x)
|
286
|
+
#define CA_LENGTH_MAX 0x7fffffff
|
287
|
+
#endif
|
288
|
+
|
289
|
+
/* -------------------------------------------------------------------- */
|
290
|
+
|
291
|
+
|
275
292
|
typedef struct {
|
276
293
|
int32_t obj_type;
|
277
294
|
int32_t entity_type;
|
278
295
|
void (*free_object) (void *ap);
|
279
296
|
void * (*clone) (void *ap);
|
280
|
-
char * (*ptr_at_addr) (void *ap,
|
281
|
-
char * (*ptr_at_index) (void *ap,
|
282
|
-
void (*fetch_addr) (void *ap,
|
283
|
-
void (*fetch_index) (void *ap,
|
284
|
-
void (*store_addr) (void *ap,
|
285
|
-
void (*store_index) (void *ap,
|
297
|
+
char * (*ptr_at_addr) (void *ap, ca_size_t addr);
|
298
|
+
char * (*ptr_at_index) (void *ap, ca_size_t *idx);
|
299
|
+
void (*fetch_addr) (void *ap, ca_size_t addr, void *data);
|
300
|
+
void (*fetch_index) (void *ap, ca_size_t *idx, void *data);
|
301
|
+
void (*store_addr) (void *ap, ca_size_t addr, void *data);
|
302
|
+
void (*store_index) (void *ap, ca_size_t *idx, void *data);
|
286
303
|
void (*allocate) (void *ap);
|
287
304
|
void (*attach) (void *ap);
|
288
305
|
void (*sync) (void *ap);
|
@@ -296,12 +313,12 @@ typedef struct {
|
|
296
313
|
/* default operation_function */
|
297
314
|
|
298
315
|
void * ca_array_func_clone (void *ap);
|
299
|
-
char * ca_array_func_ptr_at_addr (void *ap,
|
300
|
-
char * ca_array_func_ptr_at_index (void *ap,
|
301
|
-
void ca_array_func_fetch_addr (void *ap,
|
302
|
-
void ca_array_func_fetch_index (void *ap,
|
303
|
-
void ca_array_func_store_addr (void *ap,
|
304
|
-
void ca_array_func_store_index (void *ap,
|
316
|
+
char * ca_array_func_ptr_at_addr (void *ap, ca_size_t addr);
|
317
|
+
char * ca_array_func_ptr_at_index (void *ap, ca_size_t *idx);
|
318
|
+
void ca_array_func_fetch_addr (void *ap, ca_size_t addr, void *ptr);
|
319
|
+
void ca_array_func_fetch_index (void *ap, ca_size_t *idx, void *ptr);
|
320
|
+
void ca_array_func_store_addr (void *ap, ca_size_t addr, void *ptr);
|
321
|
+
void ca_array_func_store_index (void *ap, ca_size_t *idx, void *ptr);
|
305
322
|
void ca_array_func_allocate (void *ap);
|
306
323
|
void ca_array_func_attach (void *ap);
|
307
324
|
void ca_array_func_sync (void *ap);
|
@@ -322,9 +339,9 @@ struct _CArray {
|
|
322
339
|
int8_t data_type;
|
323
340
|
int8_t rank;
|
324
341
|
int32_t flags;
|
325
|
-
|
326
|
-
|
327
|
-
|
342
|
+
ca_size_t bytes;
|
343
|
+
ca_size_t elements;
|
344
|
+
ca_size_t *dim;
|
328
345
|
char *ptr;
|
329
346
|
CArray *mask;
|
330
347
|
}; /* 28 + 4*rank (bytes) */
|
@@ -336,12 +353,12 @@ typedef struct {
|
|
336
353
|
int8_t data_type;
|
337
354
|
int8_t rank;
|
338
355
|
int32_t flags;
|
339
|
-
|
340
|
-
|
341
|
-
|
356
|
+
ca_size_t bytes;
|
357
|
+
ca_size_t elements;
|
358
|
+
ca_size_t *dim;
|
342
359
|
char *ptr;
|
343
360
|
CArray *mask;
|
344
|
-
|
361
|
+
ca_size_t _dim;
|
345
362
|
} CScalar; /* 32 (bytes) */
|
346
363
|
|
347
364
|
typedef struct {
|
@@ -349,9 +366,9 @@ typedef struct {
|
|
349
366
|
int8_t data_type;
|
350
367
|
int8_t rank;
|
351
368
|
int32_t flags;
|
352
|
-
|
353
|
-
|
354
|
-
|
369
|
+
ca_size_t bytes;
|
370
|
+
ca_size_t elements;
|
371
|
+
ca_size_t *dim;
|
355
372
|
char *ptr;
|
356
373
|
CArray *mask;
|
357
374
|
CArray *parent;
|
@@ -364,9 +381,9 @@ typedef struct {
|
|
364
381
|
int8_t data_type;
|
365
382
|
int8_t rank;
|
366
383
|
int32_t flags;
|
367
|
-
|
368
|
-
|
369
|
-
|
384
|
+
ca_size_t bytes;
|
385
|
+
ca_size_t elements;
|
386
|
+
ca_size_t *dim;
|
370
387
|
char *ptr;
|
371
388
|
CArray *mask;
|
372
389
|
CArray *parent;
|
@@ -377,8 +394,8 @@ typedef struct {
|
|
377
394
|
/* 1 : deformed */
|
378
395
|
/* -2 : divided */
|
379
396
|
/* 2 : spanned */
|
380
|
-
|
381
|
-
|
397
|
+
ca_size_t ratio;
|
398
|
+
ca_size_t offset;
|
382
399
|
CArray *mask0;
|
383
400
|
} CARefer; /* 52 + 4*(rank) (bytes) */
|
384
401
|
|
@@ -387,9 +404,9 @@ typedef struct {
|
|
387
404
|
int8_t data_type;
|
388
405
|
int8_t rank;
|
389
406
|
int32_t flags;
|
390
|
-
|
391
|
-
|
392
|
-
|
407
|
+
ca_size_t bytes;
|
408
|
+
ca_size_t elements;
|
409
|
+
ca_size_t *dim;
|
393
410
|
char *ptr;
|
394
411
|
CArray *mask;
|
395
412
|
CArray *parent;
|
@@ -397,13 +414,13 @@ typedef struct {
|
|
397
414
|
uint8_t nosync;
|
398
415
|
/* ---------- */
|
399
416
|
int8_t maxdim_index;
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
417
|
+
ca_size_t maxdim_step;
|
418
|
+
ca_size_t maxdim_step0;
|
419
|
+
ca_size_t offset;
|
420
|
+
ca_size_t *start;
|
421
|
+
ca_size_t *step;
|
422
|
+
ca_size_t *count;
|
423
|
+
ca_size_t *size0;
|
407
424
|
} CABlock; /* 68 + 20*(rank) (bytes) */
|
408
425
|
|
409
426
|
typedef struct {
|
@@ -411,9 +428,9 @@ typedef struct {
|
|
411
428
|
int8_t data_type;
|
412
429
|
int8_t rank;
|
413
430
|
int32_t flags;
|
414
|
-
|
415
|
-
|
416
|
-
|
431
|
+
ca_size_t bytes;
|
432
|
+
ca_size_t elements;
|
433
|
+
ca_size_t *dim;
|
417
434
|
char *ptr;
|
418
435
|
CArray *mask;
|
419
436
|
CArray *parent;
|
@@ -421,9 +438,9 @@ typedef struct {
|
|
421
438
|
uint8_t nosync;
|
422
439
|
/* ---------- */
|
423
440
|
uint8_t bounds;
|
424
|
-
|
425
|
-
|
426
|
-
|
441
|
+
ca_size_t *start;
|
442
|
+
ca_size_t *count;
|
443
|
+
ca_size_t *size0;
|
427
444
|
char *fill;
|
428
445
|
} CAWindow; /* 56 + 16*(rank) + 1*(bytes) (bytes) */
|
429
446
|
|
@@ -432,9 +449,9 @@ typedef struct {
|
|
432
449
|
int8_t data_type;
|
433
450
|
int8_t rank;
|
434
451
|
int32_t flags;
|
435
|
-
|
436
|
-
|
437
|
-
|
452
|
+
ca_size_t bytes;
|
453
|
+
ca_size_t elements;
|
454
|
+
ca_size_t *dim;
|
438
455
|
char *ptr;
|
439
456
|
CArray *mask;
|
440
457
|
CArray *parent;
|
@@ -455,9 +472,9 @@ typedef struct {
|
|
455
472
|
int8_t data_type;
|
456
473
|
int8_t rank;
|
457
474
|
int32_t flags;
|
458
|
-
|
459
|
-
|
460
|
-
|
475
|
+
ca_size_t bytes;
|
476
|
+
ca_size_t elements;
|
477
|
+
ca_size_t *dim;
|
461
478
|
char *ptr;
|
462
479
|
CArray *mask;
|
463
480
|
/* -------------*/
|
@@ -469,20 +486,20 @@ typedef struct {
|
|
469
486
|
int8_t data_type;
|
470
487
|
int8_t rank;
|
471
488
|
int32_t flags;
|
472
|
-
|
473
|
-
|
474
|
-
|
489
|
+
ca_size_t bytes;
|
490
|
+
ca_size_t elements;
|
491
|
+
ca_size_t *dim;
|
475
492
|
char *ptr;
|
476
493
|
CArray *mask;
|
477
494
|
CArray *parent;
|
478
495
|
uint32_t attach;
|
479
496
|
uint8_t nosync;
|
480
497
|
/* -------------*/
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
498
|
+
ca_size_t *count;
|
499
|
+
ca_size_t repeat_level;
|
500
|
+
ca_size_t repeat_num;
|
501
|
+
ca_size_t contig_level;
|
502
|
+
ca_size_t contig_num;
|
486
503
|
} CARepeat; /* 60 + 8*(rank) (bytes) */
|
487
504
|
|
488
505
|
typedef struct {
|
@@ -490,9 +507,9 @@ typedef struct {
|
|
490
507
|
int8_t data_type;
|
491
508
|
int8_t rank;
|
492
509
|
int32_t flags;
|
493
|
-
|
494
|
-
|
495
|
-
|
510
|
+
ca_size_t bytes;
|
511
|
+
ca_size_t elements;
|
512
|
+
ca_size_t *dim;
|
496
513
|
char *ptr;
|
497
514
|
CArray *mask;
|
498
515
|
CArray *parent;
|
@@ -500,7 +517,7 @@ typedef struct {
|
|
500
517
|
uint8_t nosync;
|
501
518
|
/* -------------*/
|
502
519
|
int8_t rep_rank;
|
503
|
-
|
520
|
+
ca_size_t *rep_dim;
|
504
521
|
} CAUnboundRepeat; /* 44 + 8*(rank) (bytes) */
|
505
522
|
|
506
523
|
/*
|
@@ -513,29 +530,29 @@ typedef struct {
|
|
513
530
|
int8_t data_type;
|
514
531
|
int8_t rank;
|
515
532
|
int32_t flags;
|
516
|
-
|
517
|
-
|
518
|
-
|
533
|
+
ca_size_t bytes;
|
534
|
+
ca_size_t elements;
|
535
|
+
ca_size_t *dim;
|
519
536
|
char *ptr;
|
520
537
|
CArray *mask;
|
521
538
|
CArray *parent;
|
522
539
|
uint32_t attach;
|
523
540
|
uint8_t nosync;
|
524
541
|
/* ---- */
|
525
|
-
|
526
|
-
|
542
|
+
ca_size_t count;
|
543
|
+
ca_size_t offset;
|
527
544
|
} CAReduce;
|
528
545
|
|
529
546
|
/* -------------------------------------------------------------------- */
|
530
547
|
|
531
548
|
typedef struct {
|
532
549
|
int8_t rank;
|
533
|
-
|
550
|
+
ca_size_t dim[CA_RANK_MAX];
|
534
551
|
CArray *reference;
|
535
|
-
CArray * (*kernel_at_addr)(void *,
|
536
|
-
CArray * (*kernel_at_index)(void *,
|
537
|
-
CArray * (*kernel_move_to_addr)(void *,
|
538
|
-
CArray * (*kernel_move_to_index)(void *,
|
552
|
+
CArray * (*kernel_at_addr)(void *, ca_size_t, CArray *);
|
553
|
+
CArray * (*kernel_at_index)(void *, ca_size_t *, CArray *);
|
554
|
+
CArray * (*kernel_move_to_addr)(void *, ca_size_t, CArray *);
|
555
|
+
CArray * (*kernel_move_to_index)(void *, ca_size_t *, CArray *);
|
539
556
|
} CAIterator;
|
540
557
|
|
541
558
|
/* -------------------------------------------------------------------- */
|
@@ -597,7 +614,7 @@ extern int ca_obj_num;
|
|
597
614
|
|
598
615
|
#define CA_CHECK_DIM(rank, dim) \
|
599
616
|
{ \
|
600
|
-
|
617
|
+
int8_t i_; \
|
601
618
|
for (i_=0; i_<rank; i_++) { \
|
602
619
|
if ( dim[i_] < 0 ) { \
|
603
620
|
rb_raise(rb_eRuntimeError, "negative size dimension at %i-dim", i_); \
|
@@ -623,12 +640,12 @@ extern int ca_obj_num;
|
|
623
640
|
index += (dim); \
|
624
641
|
} \
|
625
642
|
if ( index < 0 || index >= (dim) ) { \
|
626
|
-
rb_raise(rb_eIndexError, "index out of range ( %
|
643
|
+
rb_raise(rb_eIndexError, "index out of range ( %lld <=> 0..%lld )", (ca_size_t) index, (ca_size_t) dim-1); \
|
627
644
|
}
|
628
645
|
|
629
646
|
#define CA_CHECK_BOUND(ca, idx) \
|
630
647
|
{ \
|
631
|
-
|
648
|
+
int8_t i; \
|
632
649
|
for (i=0; i<ca->rank; i++) { \
|
633
650
|
if ( idx[i] < 0 || idx[i] >= ca->dim[i] ) { \
|
634
651
|
rb_raise(rb_eRuntimeError, "index out of range at %i-dim ( %i <=> 0..%i )", i, idx[i], ca->dim[i]-1); \
|
@@ -663,12 +680,12 @@ boolean8_t OBJ2BOOL (VALUE v);
|
|
663
680
|
|
664
681
|
unsigned long rb_obj2ulong (VALUE);
|
665
682
|
long rb_obj2long (VALUE);
|
666
|
-
#define OBJ2LONG(x)
|
683
|
+
#define OBJ2LONG(x) rb_obj2long((VALUE)x)
|
667
684
|
#define OBJ2ULONG(x) rb_obj2ulong((VALUE)x)
|
668
685
|
|
669
686
|
long long rb_obj2ll (VALUE);
|
670
687
|
unsigned long long rb_obj2ull (VALUE);
|
671
|
-
#define OBJ2LL(x)
|
688
|
+
#define OBJ2LL(x) rb_obj2ll((VALUE)x)
|
672
689
|
#define OBJ2ULL(x) rb_obj2ull((VALUE)x)
|
673
690
|
|
674
691
|
double OBJ2DBL (VALUE v);
|
@@ -704,11 +721,11 @@ enum {
|
|
704
721
|
}; /* CA_INDEX_TYPE */
|
705
722
|
|
706
723
|
typedef union {
|
707
|
-
|
724
|
+
ca_size_t scalar;
|
708
725
|
struct {
|
709
|
-
|
710
|
-
|
711
|
-
|
726
|
+
ca_size_t start;
|
727
|
+
ca_size_t step;
|
728
|
+
ca_size_t count;
|
712
729
|
} block;
|
713
730
|
struct {
|
714
731
|
ID id;
|
@@ -728,10 +745,20 @@ typedef struct {
|
|
728
745
|
|
729
746
|
/* -------------------------------------------------------------------- */
|
730
747
|
|
731
|
-
typedef void (*ca_monop_func_t)(
|
732
|
-
|
733
|
-
|
734
|
-
typedef void (*
|
748
|
+
typedef void (*ca_monop_func_t)(ca_size_t n, boolean8_t *m,
|
749
|
+
char *ptr1, ca_size_t i1,
|
750
|
+
char *ptr2, ca_size_t i2);
|
751
|
+
typedef void (*ca_binop_func_t)(ca_size_t n, boolean8_t *m,
|
752
|
+
char *ptr1, ca_size_t i1,
|
753
|
+
char *ptr2, ca_size_t i2,
|
754
|
+
char *ptr3, ca_size_t i3);
|
755
|
+
typedef void (*ca_moncmp_func_t)(ca_size_t n, boolean8_t *m,
|
756
|
+
char *ptr1, ca_size_t i1,
|
757
|
+
boolean8_t *ptr2, ca_size_t i2);
|
758
|
+
typedef void (*ca_bincmp_func_t)(ca_size_t n, boolean8_t *m,
|
759
|
+
char *ptr1, ca_size_t b1, ca_size_t i1,
|
760
|
+
char *ptr2, ca_size_t b2, ca_size_t i2,
|
761
|
+
char *ptr3, ca_size_t b3, ca_size_t i3);
|
735
762
|
|
736
763
|
VALUE rb_ca_call_monop (VALUE self, ca_monop_func_t func[]);
|
737
764
|
VALUE rb_ca_call_monop_bang (VALUE self, ca_monop_func_t func[]);
|
@@ -739,10 +766,10 @@ VALUE rb_ca_call_binop (VALUE self, VALUE other, ca_binop_func_t func[]);
|
|
739
766
|
VALUE rb_ca_call_binop_bang (VALUE self, VALUE other, ca_binop_func_t func[]);
|
740
767
|
VALUE rb_ca_call_moncmp (VALUE self, ca_moncmp_func_t func[]);
|
741
768
|
VALUE rb_ca_call_bincmp (VALUE self, VALUE other, ca_bincmp_func_t func[]);
|
742
|
-
void ca_monop_not_implement(
|
743
|
-
void ca_binop_not_implement(
|
744
|
-
void ca_moncmp_not_implement(
|
745
|
-
void ca_bincmp_not_implement(
|
769
|
+
void ca_monop_not_implement(ca_size_t n, char *ptr1, char *ptr2);
|
770
|
+
void ca_binop_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3);
|
771
|
+
void ca_moncmp_not_implement(ca_size_t n, char *ptr1, char *ptr2);
|
772
|
+
void ca_bincmp_not_implement(ca_size_t n, char *ptr1, char *ptr2, char *ptr3);
|
746
773
|
VALUE ca_math_call (VALUE mod, VALUE arg, ID id);
|
747
774
|
|
748
775
|
/* -------------------------------------------------------------------- */
|
@@ -750,50 +777,50 @@ VALUE ca_math_call (VALUE mod, VALUE arg, ID id);
|
|
750
777
|
/* --- ca_obj_array.c --- */
|
751
778
|
|
752
779
|
int carray_setup (CArray *ca,
|
753
|
-
int8_t data_type, int8_t rank,
|
754
|
-
|
780
|
+
int8_t data_type, int8_t rank, ca_size_t *dim,
|
781
|
+
ca_size_t bytes, CArray *mask);
|
755
782
|
|
756
783
|
int carray_safe_setup (CArray *ca,
|
757
|
-
int8_t data_type, int8_t rank,
|
758
|
-
|
784
|
+
int8_t data_type, int8_t rank, ca_size_t *dim,
|
785
|
+
ca_size_t bytes, CArray *mask);
|
759
786
|
|
760
787
|
int ca_wrap_setup_null (CArray *ca,
|
761
|
-
int8_t data_type, int8_t rank,
|
762
|
-
|
788
|
+
int8_t data_type, int8_t rank, ca_size_t *dim,
|
789
|
+
ca_size_t bytes, CArray *mask);
|
763
790
|
|
764
791
|
void free_carray (void *ap);
|
765
792
|
void free_ca_wrap (void *ap);
|
766
793
|
|
767
794
|
CArray *carray_new (int8_t data_type,
|
768
|
-
int8_t rank,
|
795
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes, CArray *ma);
|
769
796
|
CArray *carray_new_safe (int8_t data_type,
|
770
|
-
int8_t rank,
|
797
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes, CArray *mask);
|
771
798
|
VALUE rb_carray_new (int8_t data_type,
|
772
|
-
int8_t rank,
|
799
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes, CArray *mask);
|
773
800
|
VALUE rb_carray_new_safe (int8_t data_type,
|
774
|
-
int8_t rank,
|
801
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes, CArray *mask);
|
775
802
|
|
776
803
|
CAWrap *ca_wrap_new (int8_t data_type,
|
777
|
-
int8_t rank,
|
804
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes,
|
778
805
|
CArray *mask, char *ptr);
|
779
806
|
|
780
807
|
CAWrap *ca_wrap_new_null (int8_t data_type,
|
781
|
-
int8_t rank,
|
808
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes,
|
782
809
|
CArray *mask);
|
783
810
|
|
784
|
-
CScalar *cscalar_new (int8_t data_type,
|
785
|
-
CScalar *cscalar_new2 (int8_t data_type,
|
786
|
-
VALUE rb_cscalar_new (int8_t data_type,
|
787
|
-
VALUE rb_cscalar_new_with_value (int8_t data_type,
|
811
|
+
CScalar *cscalar_new (int8_t data_type, ca_size_t bytes, CArray *ma);
|
812
|
+
CScalar *cscalar_new2 (int8_t data_type, ca_size_t bytes, char *val);
|
813
|
+
VALUE rb_cscalar_new (int8_t data_type, ca_size_t bytes, CArray *mask);
|
814
|
+
VALUE rb_cscalar_new_with_value (int8_t data_type, ca_size_t bytes, VALUE rval);
|
788
815
|
|
789
816
|
/* --- ca_obj_refer.c --- */
|
790
817
|
|
791
818
|
CARefer *ca_refer_new (CArray *ca,
|
792
|
-
int8_t data_type, int8_t rank,
|
793
|
-
|
819
|
+
int8_t data_type, int8_t rank, ca_size_t *dim,
|
820
|
+
ca_size_t bytes, ca_size_t offset);
|
794
821
|
VALUE rb_ca_refer_new (VALUE self,
|
795
|
-
int8_t data_type, int8_t rank,
|
796
|
-
|
822
|
+
int8_t data_type, int8_t rank, ca_size_t *dim,
|
823
|
+
ca_size_t bytes, ca_size_t offset);
|
797
824
|
|
798
825
|
/* --- ca_obj_farray.c --- */
|
799
826
|
|
@@ -802,12 +829,12 @@ VALUE rb_ca_farray (VALUE self);
|
|
802
829
|
/* --- ca_obj_block.c --- */
|
803
830
|
|
804
831
|
CABlock *ca_block_new (CArray *carray,
|
805
|
-
int8_t rank,
|
806
|
-
|
807
|
-
|
808
|
-
VALUE rb_ca_block_new (VALUE cary, int8_t rank,
|
809
|
-
|
810
|
-
|
832
|
+
int8_t rank, ca_size_t *dim,
|
833
|
+
ca_size_t *start, ca_size_t *step, ca_size_t *count,
|
834
|
+
ca_size_t offset);
|
835
|
+
VALUE rb_ca_block_new (VALUE cary, int8_t rank, ca_size_t *dim,
|
836
|
+
ca_size_t *start, ca_size_t *step, ca_size_t *count,
|
837
|
+
ca_size_t offset);
|
811
838
|
|
812
839
|
/* --- ca_obj_select.c --- */
|
813
840
|
|
@@ -816,7 +843,7 @@ VALUE rb_ca_select_new_share (VALUE cary, VALUE select);
|
|
816
843
|
|
817
844
|
/* --- ca_obj_grid.c --- */
|
818
845
|
|
819
|
-
VALUE rb_ca_grid_new (VALUE cary,
|
846
|
+
VALUE rb_ca_grid_new (VALUE cary, ca_size_t *dim, CArray **grid);
|
820
847
|
VALUE rb_ca_grid (int argc, VALUE *argv, VALUE self);
|
821
848
|
|
822
849
|
/* --- ca_obj_mapping.c --- */
|
@@ -827,27 +854,27 @@ VALUE rb_ca_mapping (int argc, VALUE *argv, VALUE self);
|
|
827
854
|
/* --- ca_obj_field.c --- */
|
828
855
|
|
829
856
|
VALUE rb_ca_field_new (VALUE cary,
|
830
|
-
|
857
|
+
ca_size_t offset, int8_t data_type, ca_size_t bytes);
|
831
858
|
VALUE rb_ca_field (int argc, VALUE *argv, VALUE self);
|
832
859
|
|
833
860
|
/* --- ca_obj_fake.c --- */
|
834
861
|
|
835
|
-
VALUE rb_ca_fake_new (VALUE cary, int8_t data_type,
|
862
|
+
VALUE rb_ca_fake_new (VALUE cary, int8_t data_type, ca_size_t bytes);
|
836
863
|
VALUE rb_ca_fake_type (VALUE self, VALUE rtype, VALUE rbytes);
|
837
864
|
|
838
865
|
/* --- ca_obj_repeat.c --- */
|
839
866
|
|
840
|
-
CARepeat *ca_repeat_new (CArray *carray, int8_t rank,
|
867
|
+
CARepeat *ca_repeat_new (CArray *carray, int8_t rank, ca_size_t *count);
|
841
868
|
|
842
|
-
VALUE rb_ca_repeat_new (VALUE cary, int8_t rank,
|
869
|
+
VALUE rb_ca_repeat_new (VALUE cary, int8_t rank, ca_size_t *count);
|
843
870
|
VALUE rb_ca_repeat (int argc, VALUE *argv, VALUE self);
|
844
871
|
|
845
|
-
VALUE rb_ca_ubrep_new (VALUE cary, int32_t rep_rank,
|
872
|
+
VALUE rb_ca_ubrep_new (VALUE cary, int32_t rep_rank, ca_size_t *rep_dim);
|
846
873
|
VALUE ca_ubrep_bind_with (VALUE self, VALUE other);
|
847
874
|
|
848
875
|
/* --- ca_obj_reduce.c --- */
|
849
876
|
|
850
|
-
CAReduce *ca_reduce_new (CArray *carray,
|
877
|
+
CAReduce *ca_reduce_new (CArray *carray, ca_size_t count, ca_size_t offset);
|
851
878
|
|
852
879
|
/* --- ca_iter_dimension --- */
|
853
880
|
|
@@ -895,14 +922,14 @@ int ca_is_object_type (void *ap);
|
|
895
922
|
void ca_check_type (void *ap, int8_t data_type);
|
896
923
|
#define ca_check_data_type(ap, data_type) ca_check_type(ap, data_type)
|
897
924
|
void ca_check_rank (void *ap, int rank);
|
898
|
-
void ca_check_shape (void *ap, int rank,
|
925
|
+
void ca_check_shape (void *ap, int rank, ca_size_t *dim);
|
899
926
|
void ca_check_same_data_type (void *ap1, void *ap2);
|
900
927
|
void ca_check_same_rank (void *ap1, void *ap2);
|
901
928
|
void ca_check_same_elements (void *ap1, void *ap2);
|
902
929
|
void ca_check_same_shape (void *ap1, void *ap2);
|
903
|
-
void ca_check_index (void *ap,
|
930
|
+
void ca_check_index (void *ap, ca_size_t *idx);
|
904
931
|
void ca_check_data_class (VALUE rtype);
|
905
|
-
int ca_is_valid_index (void *ap,
|
932
|
+
int ca_is_valid_index (void *ap, ca_size_t *idx);
|
906
933
|
|
907
934
|
/* API : allocate, attach, update, sync, detach */
|
908
935
|
|
@@ -924,25 +951,25 @@ void *ca_clone (void *ap); /* use rb_obj_clone() */
|
|
924
951
|
CArray *ca_copy (void *ap); /* use rb_ca_copy() */
|
925
952
|
CArray *ca_template (void *ap); /* use rb_ca_template() */
|
926
953
|
CArray *ca_template_safe (void *ap); /* use rb_ca_template() */
|
927
|
-
CArray *ca_template_safe2 (void *ap, int8_t data_type,
|
954
|
+
CArray *ca_template_safe2 (void *ap, int8_t data_type, ca_size_t bytes);
|
928
955
|
/* use rb_ca_template() */
|
929
956
|
|
930
|
-
void ca_paste (void *ap,
|
931
|
-
void ca_cut (void *ap,
|
957
|
+
void ca_paste (void *ap, ca_size_t *idx, void *sp);
|
958
|
+
void ca_cut (void *ap, ca_size_t *offset, void *sp);
|
932
959
|
void ca_fill (void *ap, void *ptr);
|
933
960
|
|
934
961
|
/* API : fetch, store */
|
935
962
|
|
936
|
-
void ca_addr2index (void *ap,
|
937
|
-
|
963
|
+
void ca_addr2index (void *ap, ca_size_t addr, ca_size_t *idx);
|
964
|
+
ca_size_t ca_index2addr (void *ap, ca_size_t *idx);
|
938
965
|
|
939
|
-
void *ca_ptr_at_index (void *ap,
|
940
|
-
void *ca_ptr_at_addr (void *ap,
|
966
|
+
void *ca_ptr_at_index (void *ap, ca_size_t *idx);
|
967
|
+
void *ca_ptr_at_addr (void *ap, ca_size_t addr);
|
941
968
|
|
942
|
-
void ca_fetch_index (void *ap,
|
943
|
-
void ca_fetch_addr (void *ap,
|
944
|
-
void ca_store_index (void *ap,
|
945
|
-
void ca_store_addr (void *ap,
|
969
|
+
void ca_fetch_index (void *ap, ca_size_t *idx, void *ptr);
|
970
|
+
void ca_fetch_addr (void *ap, ca_size_t addr, void *ptr);
|
971
|
+
void ca_store_index (void *ap, ca_size_t *idx, void *ptr);
|
972
|
+
void ca_store_addr (void *ap, ca_size_t addr, void *ptr);
|
946
973
|
|
947
974
|
void ca_copy_data (void *ap, char *ptr);
|
948
975
|
void ca_sync_data (void *ap, char *ptr);
|
@@ -962,21 +989,21 @@ void ca_create_mask (void *ap);
|
|
962
989
|
void ca_clear_mask (void *ap);
|
963
990
|
void ca_setup_mask (void *ap, CArray *mask);
|
964
991
|
void ca_copy_mask (void *ap, void *ao);
|
965
|
-
void ca_copy_mask_overlay_n (void *ap,
|
966
|
-
void ca_copy_mask_overlay (void *ap,
|
967
|
-
void ca_copy_mask_overwrite_n (void *ap,
|
968
|
-
void ca_copy_mask_overwrite (void *ap,
|
969
|
-
|
970
|
-
|
992
|
+
void ca_copy_mask_overlay_n (void *ap, ca_size_t elements, int n, CArray **slist);
|
993
|
+
void ca_copy_mask_overlay (void *ap, ca_size_t elements, int n, ...);
|
994
|
+
void ca_copy_mask_overwrite_n (void *ap, ca_size_t elements, int n, CArray **slist);
|
995
|
+
void ca_copy_mask_overwrite (void *ap, ca_size_t elements, int n, ...);
|
996
|
+
ca_size_t ca_count_masked (void *ap);
|
997
|
+
ca_size_t ca_count_not_masked (void *ap);
|
971
998
|
void ca_unmask (void *ap, char *fill_value);
|
972
999
|
CArray *ca_unmasked_copy (void *ap, char *fill_value);
|
973
1000
|
|
974
1001
|
/* API : cast, conversion */
|
975
1002
|
|
976
|
-
typedef void (*ca_cast_func_t)(
|
1003
|
+
typedef void (*ca_cast_func_t)(ca_size_t, CArray *, void *, CArray *, void *, boolean8_t *);
|
977
1004
|
extern ca_cast_func_t ca_cast_func_table[CA_NTYPE][CA_NTYPE];
|
978
|
-
void ca_cast_block(
|
979
|
-
void ca_cast_block_with_mask (
|
1005
|
+
void ca_cast_block(ca_size_t n, void *a1, void *ptr1, void *a2, void *ptr2);
|
1006
|
+
void ca_cast_block_with_mask (ca_size_t n, void *ap1, void *ptr1,
|
980
1007
|
void *ap2, void *ptr2, boolean8_t *m);
|
981
1008
|
void ca_ptr2ptr (void *ca1, void *ptr1, void *ca2, void *ptr2);
|
982
1009
|
void ca_ptr2val (void *ap1, void *ptr1, int8_t data_type2, void *ptr2);
|
@@ -986,7 +1013,7 @@ VALUE ca_ptr2obj (void *ap, void *ptr); /* use rb_ca_ptr2obj() */
|
|
986
1013
|
void ca_obj2ptr (void *ap, VALUE obj, void *ptr); /* use rb_ca_ptr2obj() */
|
987
1014
|
|
988
1015
|
void ca_block_from_carray(CArray *cs,
|
989
|
-
|
1016
|
+
ca_size_t *start, ca_size_t *step, ca_size_t *count, CArray *ca);
|
990
1017
|
|
991
1018
|
#define ca_wrap_writable(obj, data_type) \
|
992
1019
|
(obj = rb_ca_wrap_writable(obj, INT2NUM(data_type)), (CArray*) DATA_PTR(obj))
|
@@ -994,7 +1021,7 @@ void ca_block_from_carray(CArray *cs,
|
|
994
1021
|
(obj = rb_ca_wrap_readonly(obj, INT2NUM(data_type)), (CArray*) DATA_PTR(obj))
|
995
1022
|
|
996
1023
|
VALUE rb_carray_wrap_ptr (int8_t data_type,
|
997
|
-
int8_t rank,
|
1024
|
+
int8_t rank, ca_size_t *dim, ca_size_t bytes,
|
998
1025
|
CArray *mask, char *ptr, VALUE refer);
|
999
1026
|
|
1000
1027
|
void * ca_to_cptr (void *ap);
|
@@ -1004,19 +1031,19 @@ void * ca_to_cptr (void *ap);
|
|
1004
1031
|
boolean8_t *ca_allocate_mask_iterator (int n, ...);
|
1005
1032
|
boolean8_t *ca_allocate_mask_iterator_n (int n, CArray **slist);
|
1006
1033
|
|
1007
|
-
|
1008
|
-
|
1034
|
+
ca_size_t ca_get_loop_count (int n, ...);
|
1035
|
+
ca_size_t ca_set_iterator (int n, ...);
|
1009
1036
|
|
1010
|
-
void ca_swap_bytes (char *p,
|
1011
|
-
void ca_parse_range (VALUE vrange,
|
1012
|
-
|
1013
|
-
void ca_parse_range_without_check (VALUE arg,
|
1014
|
-
|
1037
|
+
void ca_swap_bytes (char *p, ca_size_t bytes, ca_size_t elements);
|
1038
|
+
void ca_parse_range (VALUE vrange, ca_size_t size,
|
1039
|
+
ca_size_t *offset, ca_size_t *count, ca_size_t *step);
|
1040
|
+
void ca_parse_range_without_check (VALUE arg, ca_size_t size,
|
1041
|
+
ca_size_t *offset, ca_size_t *count, ca_size_t *step);
|
1015
1042
|
|
1016
1043
|
int ca_equal (void *ap, void *bp);
|
1017
1044
|
void ca_zerodiv(void);
|
1018
1045
|
int32_t ca_rand (double rmax);
|
1019
|
-
|
1046
|
+
ca_size_t ca_bounds_normalize_index (int8_t bounds, ca_size_t size0, ca_size_t k);
|
1020
1047
|
|
1021
1048
|
/* API : high level */
|
1022
1049
|
|
@@ -1036,12 +1063,12 @@ VALUE ca_wrap_struct (void *ap);
|
|
1036
1063
|
/* query data_type */
|
1037
1064
|
int8_t rb_ca_guess_type (VALUE obj);
|
1038
1065
|
void rb_ca_guess_type_and_bytes (VALUE rtype, VALUE rbytes,
|
1039
|
-
int8_t *data_type,
|
1066
|
+
int8_t *data_type, ca_size_t *bytes);
|
1040
1067
|
int rb_ca_is_type (VALUE arg, int type);
|
1041
1068
|
|
1042
1069
|
/* scan index */
|
1043
|
-
void rb_ca_scan_index (int ca_rank,
|
1044
|
-
|
1070
|
+
void rb_ca_scan_index (int ca_rank, ca_size_t *ca_dim, ca_size_t elements,
|
1071
|
+
long argc, VALUE *argv, CAIndexInfo *info);
|
1045
1072
|
|
1046
1073
|
/* cast */
|
1047
1074
|
void rb_ca_cast_self (volatile VALUE *self);
|
@@ -1141,15 +1168,15 @@ VALUE rb_ca_addr2index (VALUE self, VALUE raddr);
|
|
1141
1168
|
/* elemental access like ca[i,j,k] or ca[addr] */
|
1142
1169
|
VALUE rb_ca_ptr2obj (VALUE self, void *ptr);
|
1143
1170
|
#define rb_ca_fetch_ptr(self, ptr) rb_ca_ptr2obj(self, ptr)
|
1144
|
-
VALUE rb_ca_fetch_index (VALUE self,
|
1145
|
-
VALUE rb_ca_fetch_addr (VALUE self,
|
1171
|
+
VALUE rb_ca_fetch_index (VALUE self, ca_size_t *idx);
|
1172
|
+
VALUE rb_ca_fetch_addr (VALUE self, ca_size_t addr);
|
1146
1173
|
VALUE rb_ca_fetch (VALUE self, VALUE index);
|
1147
1174
|
VALUE rb_ca_fetch2 (VALUE self, int n, VALUE *vindex);
|
1148
1175
|
|
1149
1176
|
VALUE rb_ca_obj2ptr (VALUE self, VALUE val, void *ptr);
|
1150
1177
|
#define rb_ca_store_ptr(self, ptr, val) rb_ca_obj2ptr(self, val, ptr)
|
1151
|
-
VALUE rb_ca_store_index (VALUE self,
|
1152
|
-
VALUE rb_ca_store_addr (VALUE self,
|
1178
|
+
VALUE rb_ca_store_index (VALUE self, ca_size_t *idx, VALUE val);
|
1179
|
+
VALUE rb_ca_store_addr (VALUE self, ca_size_t addr, VALUE val);
|
1153
1180
|
VALUE rb_ca_store (VALUE self, VALUE index, VALUE val);
|
1154
1181
|
VALUE rb_ca_store2 (VALUE self, int n, VALUE *vindex, VALUE val);
|
1155
1182
|
VALUE rb_ca_store_all (VALUE self, VALUE val);
|
@@ -1166,7 +1193,7 @@ VALUE rb_ca_elem_test_masked (VALUE self, VALUE vidx1);
|
|
1166
1193
|
/* data type conversion */
|
1167
1194
|
VALUE rb_ca_ptr2ptr (VALUE ra1, void *ptr1, VALUE ra2, void *ptr2);
|
1168
1195
|
#define rb_ca_cast_ptr (VALUE ra1, void *ptr1, VALUE ra2, void *ptr2);
|
1169
|
-
VALUE rb_ca_cast_block (
|
1196
|
+
VALUE rb_ca_cast_block (ca_size_t n, VALUE ra1, void *ptr1,
|
1170
1197
|
VALUE ra2, void *ptr2);
|
1171
1198
|
|
1172
1199
|
VALUE rb_ca_to_type (VALUE self, VALUE rtype, VALUE rbytes);
|