Tensor manipulations¶ ↑
The tensor library is developed by J. Burguet and distributed as an add-on package of GSL. See here and here.
Class methods¶ ↑
-
GSL::Tensor.new(rank, dimention)
-
GSL::Tensor.alloc(rank, dimention)
-
GSL::Tensor[rank, dimention]
Create a tensor of rank
rank
and dimensiondimention
.
-
GSL::Tensor.calloc(rank, dimention)
Creates a tensor of rank
rank
and dimensiondimention
, and initializes all the elements to zero.
-
GSL::Tensor.copy(tensor)
Create a tensor copying the existing tensor
tensor
.
-
GSL::Tensor.memcpy(dest, src)
Copies the tensor
src
to anotherdest
. The two tensors must have the same shape.
-
GSL::Tensor.swap(a, b)
Exchanges the elements of the tensor
a
andb
.
Instance methods¶ ↑
Accessing tensor elements¶ ↑
-
GSL::Tensor#set_zero
Sets all the element of the tensor
self
to zero.
-
GSL::Tensor#set_all(x)
Sets all the element of the tensor
self
tox
.
-
GSL::Tensor#set(indices, x)
-
GSL::Tensor#[indices]=x
Sets the element of the given indices to
x
.
-
GSL::Tensor#get(indices)
-
GSL::Tensor#[indices]
Returns the tensor element. If the number of indices given is smaller than the rank of the tensor, the method GSL::Tensor#subtensor is called.
Ex:
>> t = Tensor.new(2, 3) => #<GSL::Tensor:0x762ae8> >> t.set(1, 2, 2, 123) => #<GSL::Tensor:0x762ae8> >> t.get(1, 2, 2) => 123.0 >> t[0, 0, 2] = 456 => 456 >> t[0, 0, 2] => 456.0
-
GSL::Tensor#subtensor(indices)
-
GSL::Tensor#[indices]
Return a subtensor.
Ex:
>> require("gsl") => true >> t = Vector[1..125].to_tensor(3, 5) => GSL::Tensor: [ 1.000e+00 2.000e+00 3.000e+00 4.000e+00 5.000e+00 6.000e+00 7.000e+00 ... ] >> t[0] => GSL::Tensor::View: [ 1.000e+00 2.000e+00 3.000e+00 4.000e+00 5.000e+00 6.000e+00 7.000e+00 8.000e+00 9.000e+00 1.000e+01 1.100e+01 1.200e+01 1.300e+01 1.400e+01 1.500e+01 1.600e+01 1.700e+01 1.800e+01 1.900e+01 2.000e+01 2.100e+01 2.200e+01 2.300e+01 2.400e+01 2.500e+01 ] >> t[0,2] => GSL::Tensor::View: [ 1.100e+01 1.200e+01 1.300e+01 1.400e+01 1.500e+01 ] >> t[3,1] => GSL::Tensor::View: [ 8.100e+01 8.200e+01 8.300e+01 8.400e+01 8.500e+01 ] >> t[1][2] => GSL::Tensor::View: [ 3.600e+01 3.700e+01 3.800e+01 3.900e+01 4.000e+01 ]
-
GSL::Tensor#swap_indices(i, j)
-
GSL::Tensor#data
Returns the data as
GSL::Vector::View
.
-
GSL::Tensor#to_v
Creates a new vector from the tensor.
-
GSL::Tensor#to_vector
Converts the tensor of rank 1 into a
GSL::Vector::View
object.
-
GSL::Tensor#to_matrix
Converts the tensor of rank 2 into a
GSL::Matrix::View
object.
IO¶ ↑
-
GSL::Tensor#fwrite(io)
-
GSL::Tensor#fwrite(filename)
-
GSL::Tensor#fread(io)
-
GSL::Tensor#fread(filename)
-
GSL::Tensor#fprintf(io, format=ā%gā)
-
GSL::Tensor#fprintf(filename, format=ā%gā)
-
GSL::Tensor#fscanf(io)
-
GSL::Tensor#fscanf(filename)
Max, min¶ ↑
-
GSL::Tensor#max
-
GSL::Tensor#min
-
GSL::Tensor#minmax
-
GSL::Tensor#max_index
-
GSL::Tensor#min_index
-
GSL::Tensor#minmax_index
Tensor operations¶ ↑
-
GSL::Tensor#add(b)
-
GSL::Tensor#+(b)
Creates a new tensor adding two tensors
self
andb
.
-
GSL::Tensor#add!(b)
Adds the element of tensor
b
to the elements ofself
,in-place
.
-
GSL::Tensor#sub(b)
-
GSL::Tensor#+(b)
Creates a new tensor subtracting the tensors
b
fromself
.
-
GSL::Tensor#sub!(b)
Subtracts the element of tensor
b
from the elements ofself
,in-place
.
-
GSL::Tensor#mul_elements(b)
This calculate element-by-element multiplication of
self
andb
, and returns a new tensor.
-
GSL::Tensor#mul_elements!(b)
Multiplies the elements of tensor
self
to the elements ofb
,in-place
.
-
GSL::Tensor#div_elements(b)
-
GSL::Tensor#/(b)
This calculate element-by-element division of
self
andb
, and returns a new tensor. Multiplies the elements of tensorb
to the elements ofself
,in-place
.
-
GSL::Tensor#div_elements!(b)
Divides the elements of tensor
self
to the elements ofb
,in-place
.
-
GSL::Tensor#add_constant(x)
Creates a new tensor adding the constant
x
to the tensorself
.
-
GSL::Tensor#add_constant!(x)
Adds the constant
x
to the elements of tensorself
,in-place
.
-
GSL::Tensor#scale(x)
Creates a new tensor scaling the tensor
self
by the constantx
.
-
GSL::Tensor#scale!(x)
Multiplies the constant
x
to the elements of tensorself
,in-place
.
-
GSL::Tensor#add_diagonal(x)
Creates a new tensor adding the constant
x
to the diagonal elements of the tensorself
.
-
GSL::Tensor#add_diagonal!(x)
Adds the constant
x
to the diagonal elements of tensorself
,in-place
.
-
GSL::Tensor#product(b)
-
GSL::Tensor#*(b)
Calculate tensorian product of
self
andb
.
-
GSL::Tensor#contract(i, j)
-
GSL::Tensor#equal?(b, eps = 1e-10)
-
GSL::Tensor#==(b)
Returns
true
if the tensors have same size and elements equal to absolute accuraryeps
for all the indices, andfalse
otherwise.
Tensor properties¶ ↑
-
GSL::Tensor#isnull
Returns 1 if all the elements of the tensor are zero, and 0 otherwise.
-
GSL::Tensor#isnull?
Returns
true
if all the elements of the tensor are zero, andfalse
otherwise.
-
GSL::Tensor#rank
Returns the rank
-
GSL::Tensor#dimension
Returns the dimension
-
GSL::Tensor#size
Returns the size