Module: NDAV::Numo::NArray
- Defined in:
- lib/ndav/numo/narray.rb
Defined Under Namespace
Modules: Converter, FromNDAV, MemoryViewable
Constant Summary
collapse
- CLASS_TO_FORMAT =
{
::Numo::Int8 => "c",
::Numo::UInt8 => "C",
::Numo::Int16 => "s",
::Numo::UInt16 => "S",
::Numo::Int32 => "l",
::Numo::UInt32 => "L",
::Numo::Int64 => "q",
::Numo::UInt64 => "Q",
::Numo::SFloat => "f",
::Numo::DFloat => "d"
}
- FORMAT_TO_CLASS =
CLASS_TO_FORMAT.invert
Class Method Summary
collapse
Class Method Details
.address_for_read(obj) ⇒ Object
8
9
10
11
12
13
14
|
# File 'ext/narray.c', line 8
static VALUE
ndav_numo_narray_s_address_for_read(VALUE self, VALUE obj)
{
void* ptr = na_get_pointer_for_read(obj);
return PTR2NUM(ptr);
}
|
.readonly?(obj) ⇒ Boolean
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'ext/narray.c', line 16
static VALUE
ndav_numo_narray_s_readonly_p(VALUE self, VALUE obj)
{
if (OBJ_FROZEN(obj)) {
return Qtrue;
}
narray_t *na;
GetNArray(obj, na);
return NA_TYPE(na) == NARRAY_VIEW_T && OBJ_FROZEN(NA_VIEW_DATA(na)) ? Qtrue : Qfalse;
}
|
.strides(obj) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'ext/narray.c', line 29
static VALUE
ndav_numo_narray_s_strides(VALUE self, VALUE obj)
{
narray_t *na;
GetNArray(obj, na);
int ndim = NA_NDIM(na);
size_t *shape = NA_SHAPE(na);
VALUE strides = rb_ary_new_capa(ndim);
unsigned char type = NA_TYPE(na);
bool is_row_major = TEST_ROW_MAJOR(obj);
ssize_t stride;
if (type == NARRAY_DATA_T) {
stride = na_get_elmsz(obj);
}
for (int i = ndim; i > 0; --i) {
int axis = is_row_major ? i - 1 : ndim - i;
switch (type) {
case NARRAY_DATA_T:
rb_ary_store(strides, axis, SSIZET2NUM(stride));
stride *= shape[i - 1];
break;
case NARRAY_VIEW_T:
if (NA_IS_INDEX_AT(na, i - 1)) {
return Qnil;
}
rb_ary_store(strides, axis, SSIZET2NUM(NA_STRIDE_AT(na, i - 1)));
break;
default:
return Qnil;
}
}
return strides;
}
|