ublas icon indicating copy to clipboard operation
ublas copied to clipboard

Use function call operator for indexing instead of at

Open bassoy opened this issue 2 years ago • 2 comments

Discussed in https://github.com/boostorg/ublas/discussions/141

Originally posted by bassoy October 21, 2021 Right now index accessing is performed using the at member function in tensor e.g. in tensor_dynamic, see also in example.

for(auto i = 0u; i < B.size(0); ++i)
  for(auto j = 0u; j < B.size(1); ++j)
        C.at(i,j) = std::conj(B.at(i,j));

Is it possible to overload operator() for this purpose? Note that operator() will also be used for creating subtensors.

for(auto i = 0u; i < B.size(0); ++i)
  for(auto j = 0u; j < B.size(1); ++j)
        C(i,j) = std::conj(B(i,j));

We could also use operator[] for accessing single indices and multi-indices.

for(auto i = 0u; i < B.size(0); ++i)
  for(auto j = 0u; j < B.size(1); ++j)
        C[i,j] = std::conj(B[i,j]);

This will be again closer to a Matlab or Octave or R notation.

bassoy avatar Feb 09 '22 14:02 bassoy

The implementation should follow https://github.com/boostorg/ublas/discussions/141#discussioncomment-2141497

bassoy avatar Feb 09 '22 14:02 bassoy

I want to work for the proposal here. Can you guide me through this?

adrishyantee avatar Feb 10 '22 15:02 adrishyantee