Multidimensional slice

Rafael rfkadyrov at gmail.com
Wed Dec 19 01:58:36 PST 2012


Hi, all!
In advance, excuse me for my terrible english.

I try to learn the D language. One of the areas of my work is 
numerical calculations, and there are lot of linear algebra 
objects and operations. For beginning I started with 
implementation of matrix calculations. Note, that I am doing this 
is only in order to learn a language.
So, I try to implement operations with density and sparse 
matrixes with uniform interface. And was confused with slice 
operations. For example:

uint rows = 100, cols = 100;
auto A = new MatrixDensity!double(rows, cols);
auto S = new MatrixSparse!double(rows, cols);
auto x = new VectorColumn!double(rows);
auto y = new VectorRow!double(cols);

//and now it possible to implement:
auto a_ij = A[i, j]; //opIndex(uint row, uint col)
S[i, j] = a_ij; //opIndexAssign(T value, uint row, uint col)
y = S[i]; //opIndex(uint row)
A[i] = y; //opIndexAssign(VectorRow!T value, uint row)

//Then I want to do something like
x = S[0..$, 1]; //get column
S[0..$, 2] = A[0..$, 2]; //get and set column
auto B = A[0..10, 0..10]; //get submatrix block of matrix A

I.e. I want to implement multimentional slices to realize simple, 
generalized and "human readable" syntax for matrix and vectors 
operations (like a Matlab syntax for example). Or may be I use 
not right way for realization?




More information about the Digitalmars-d-learn mailing list