Class: GSL::Tensor
- Inherits:
-
Object
show all
- Defined in:
- lib/gs2crmod/gsl_data_3d.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(narray) ⇒ Tensor
Returns a new instance of Tensor.
32
33
34
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 32
def initialize(narray)
@narray = narray
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 70
def method_missing(meth, *args)
result = @narray.send(meth, *args.reverse)
if result.kind_of? NArray
self.class.new(result)
else
result
end
rescue NoMethodError
self.class.new(NMath.send(meth, @narray))
end
|
Instance Attribute Details
#narray ⇒ Object
Returns the value of attribute narray.
28
29
30
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 28
def narray
@narray
end
|
Class Method Details
.alloc(*args) ⇒ Object
29
30
31
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 29
def self.alloc(*args)
new(NArray.float(*args.reverse))
end
|
.method_missing(meth, *args) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 21
def method_missing(meth, *args)
ans = new(NArray.send(meth, *args.reverse))
ans
end
|
Instance Method Details
#[](*args) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 38
def [](*args)
case ans = @narray[*args.reverse]
when Numeric
ans
else
self.class.new(@narray[*args.reverse])
end
end
|
#[]=(*args, value) ⇒ Object
52
53
54
55
56
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 52
def []=(*args, value)
@narray[*args.reverse] = value
end
|
#inspect ⇒ Object
35
36
37
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 35
def inspect
"GSL::Tensor.new(#{@narray.inspect})"
end
|
#iterate(&block) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 80
def iterate(&block)
shp = shape
cumul = 1
cumulshp = []
for i in 1..shape.size
cumulshp[shp.size-i] = cumul
cumul *= shp[shp.size-i]
end
(cumulshp[0]*shp[0]).times do |n|
indexes = cumulshp.map{|cumul| idx = (n/cumul).floor; n -= idx*cumul; idx}
yield(*indexes)
end
end
|
#iterate_row_maj(&block) ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 96
def iterate_row_maj(&block)
shp = shape
cumul = 1
cumulshp = []
for i in 0...shape.size
cumulshp[i] = cumul
cumul *= shp[i]
end
(cumulshp[-1]*shp[-1]).times do |n|
indexes = cumulshp.reverse.map{|cumul| idx = (n/cumul).floor; n -= idx*cumul; idx}.reverse
yield(*indexes)
end
end
|
#reshape!(*args) ⇒ Object
60
61
62
63
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 60
def reshape!(*args)
@narray.reshape!(*args.reverse)
end
|
#shape ⇒ Object
57
58
59
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 57
def shape
@narray.shape.reverse
end
|
#to_a ⇒ Object
64
65
66
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 64
def to_a
@narray.transpose(*(0...@narray.shape.size).to_a.reverse).to_a
end
|
#transpose(*args) ⇒ Object
67
68
69
|
# File 'lib/gs2crmod/gsl_data_3d.rb', line 67
def transpose(*args)
self.class.new(@narray.transpose(*args))
end
|