ARTS 2.5.4 (git: 4c0d3b4d)
|
The ComplexVectorView class. More...
#include <matpack_complex.h>
Public Types | |
using | iterator = ComplexIterator1D |
![]() | |
using | const_iterator = ConstComplexIterator1D |
Public Member Functions | |
constexpr | ComplexVectorView (const ComplexVectorView &)=default |
ComplexVectorView (const ComplexVector &) | |
Bail out immediately if somebody tries to create a ComplexVectorView from a const Complex*Vector. More... | |
ComplexVectorView (ComplexVector &v) | |
Create ComplexVectorView from a ComplexVector. More... | |
Complex & | operator[] (Index n) |
Plain Index operator. More... | |
Complex & | get (Index n) |
Get element implementation without assertions. More... | |
Numeric & | get_real (Index n) |
Get element implementation without assertions. More... | |
Numeric & | get_imag (Index n) |
Get element implementation without assertions. More... | |
VectorView | real () |
Get a view of the real part of the vector. More... | |
VectorView | imag () |
Get a view of the imaginary part of the vector. More... | |
ComplexVectorView | operator[] (const Range &r) |
Index operator for subrange. More... | |
ComplexIterator1D | begin () |
Return iterator to first element. More... | |
ComplexIterator1D | end () |
Return iterator behind last element. More... | |
ComplexVectorView & | operator= (const ConstComplexVectorView &v) |
Assignment operator. More... | |
ComplexVectorView & | operator= (const ComplexVectorView &v) |
Assignment from ComplexVectorView to ComplexVectorView. More... | |
ComplexVectorView & | operator= (const ComplexVector &v) |
Assignment from ComplexVector. More... | |
ComplexVectorView & | operator= (const Array< Complex > &v) |
Assignment operator from Array<Complex>. More... | |
ComplexVectorView & | operator= (Complex x) |
Assigning a scalar to a ComplexVectorView will set all elements to this value. More... | |
ComplexVectorView & | operator= (const ConstVectorView &v) |
ComplexVectorView & | operator= (const VectorView &v) |
ComplexVectorView & | operator= (const Vector &v) |
ComplexVectorView & | operator= (const Array< Numeric > &v) |
ComplexVectorView & | operator= (Numeric x) |
Assigning a scalar to a ComplexVectorView will set all elements to this value. More... | |
ComplexVectorView | operator*= (Complex x) |
Multiplication by scalar. More... | |
ComplexVectorView | operator/= (Complex x) |
Division by scalar. More... | |
ComplexVectorView | operator+= (Complex x) |
Addition of scalar. More... | |
ComplexVectorView | operator-= (Complex x) |
Subtraction of scalar. More... | |
ComplexVectorView | operator*= (Numeric x) |
Multiplication by scalar. More... | |
ComplexVectorView | operator/= (Numeric x) |
Division by scalar. More... | |
ComplexVectorView | operator+= (Numeric x) |
Addition of scalar. More... | |
ComplexVectorView | operator-= (Numeric x) |
Subtraction of scalar. More... | |
ComplexVectorView | operator*= (const ConstComplexVectorView &x) |
Element-vise multiplication by another vector. More... | |
ComplexVectorView | operator/= (const ConstComplexVectorView &x) |
Element-vise division by another vector. More... | |
ComplexVectorView | operator+= (const ConstComplexVectorView &x) |
Element-vise addition of another vector. More... | |
ComplexVectorView | operator-= (const ConstComplexVectorView &x) |
Element-vise subtraction of another vector. More... | |
ComplexVectorView | operator*= (const ConstVectorView &x) |
Element-vise multiplication by another vector. More... | |
ComplexVectorView | operator/= (const ConstVectorView &x) |
Element-vise division by another vector. More... | |
ComplexVectorView | operator+= (const ConstVectorView &x) |
Element-vise addition of another vector. More... | |
ComplexVectorView | operator-= (const ConstVectorView &x) |
Element-vise subtraction of another vector. More... | |
operator ComplexMatrixView () | |
Conversion to 1 column matrix. More... | |
const Complex * | get_c_array () const ARTS_NOEXCEPT |
Conversion to plain C-array. More... | |
Complex * | get_c_array () ARTS_NOEXCEPT |
Conversion to plain C-array. More... | |
~ComplexVectorView () override=default | |
Destructor. More... | |
ComplexVectorView (Complex &a) | |
A special constructor, which allows to make a VectorView from a scalar. More... | |
ConstComplexIterator1D | begin () const |
Return const iterator to first element. More... | |
ConstComplexIterator1D | end () const |
Return const iterator behind last element. More... | |
const Complex & | get (Index n) const |
Get element implementation without assertions. More... | |
const Numeric & | get_imag (Index n) const |
Get element implementation without assertions. More... | |
const Numeric & | get_real (Index n) const |
Get element implementation without assertions. More... | |
ConstVectorView | imag () const |
Get a view of the imaginary part of the vector. More... | |
ConstVectorView | real () const |
Get a view of the real part of the vector. More... | |
![]() | |
constexpr | ConstComplexVectorView (const ConstComplexVectorView &)=default |
constexpr | ConstComplexVectorView (ConstComplexVectorView &&)=default |
ConstComplexVectorView & | operator= (const ConstComplexVectorView &)=default |
ConstComplexVectorView & | operator= (ConstComplexVectorView &&)=default |
bool | empty () const noexcept |
Index | nelem () const noexcept |
Complex | sum () const |
Returns true if variable size is zero. More... | |
const Complex & | operator[] (Index n) const |
Plain const index operator. More... | |
const Complex & | get (Index n) const |
Get element implementation without assertions. More... | |
const Numeric & | get_real (Index n) const |
Get element implementation without assertions. More... | |
const Numeric & | get_imag (Index n) const |
Get element implementation without assertions. More... | |
ConstVectorView | real () const |
Get a view of the real part of the vector. More... | |
ConstVectorView | imag () const |
Get a view of the imaginary part of the vector. More... | |
ConstComplexVectorView | operator[] (const Range &r) const |
Const index operator for subrange. More... | |
ConstComplexIterator1D | begin () const |
Return const iterator to first element. More... | |
ConstComplexIterator1D | end () const |
Return const iterator behind last element. More... | |
operator ConstComplexMatrixView () const | |
Conversion to const 1 column matrix. More... | |
virtual | ~ConstComplexVectorView ()=default |
Destructor. More... | |
ConstComplexVectorView (const Complex &a) | |
A special constructor, which allows to make a ConstComplexVectorView from a scalar. More... | |
Protected Member Functions | |
ComplexVectorView ()=default | |
ComplexVectorView (Complex *data, const Range &range) | |
Explicit constructor. More... | |
ComplexVectorView (Complex *data, const Range &p, const Range &n) | |
Recursive constructor. More... | |
![]() | |
ConstComplexVectorView ()=default | |
ConstComplexVectorView (Complex *data, const Range &range) | |
Explicit constructor. More... | |
ConstComplexVectorView (Complex *data, const Range &p, const Range &n) | |
Recursive constructor. More... | |
Friends | |
class | ConstComplexIterator2D |
class | ComplexIterator2D |
class | ComplexMatrixView |
Additional Inherited Members | |
![]() | |
Range | mrange {0, 0} |
The range of mdata that is actually used. More... | |
Complex * | mdata {nullptr} |
Pointer to the plain C array that holds the data. More... | |
The ComplexVectorView class.
This contains the main implementation of a complex vector. The class
ComplexVector is just a special case of subvector which also allocates storage.
Unfortunately, names of element functions of derived classes hide the names of the original class, even if the arguments are different. This means that we have to redefine those element functions that can have different arguments, for example the constant index operators and iterators.
Definition at line 388 of file matpack_complex.h.
Definition at line 405 of file matpack_complex.h.
|
constexprdefault |
ComplexVectorView::ComplexVectorView | ( | const ComplexVector & | ) |
Bail out immediately if somebody tries to create a ComplexVectorView from a const Complex*Vector.
Definition at line 152 of file matpack_complex.cc.
References ARTS_ASSERT.
ComplexVectorView::ComplexVectorView | ( | ComplexVector & | v | ) |
Create ComplexVectorView from a ComplexVector.
Definition at line 163 of file matpack_complex.cc.
References ConstComplexVectorView::mdata, ConstComplexVectorView::mrange, and v.
|
overridedefault |
Destructor.
ComplexVectorView::ComplexVectorView | ( | Complex & | a | ) |
A special constructor, which allows to make a VectorView from a scalar.
Definition at line 447 of file matpack_complex.cc.
|
protecteddefault |
Referenced by operator[]().
Explicit constructor.
This one is used by Vector to initialize its own VectorView part.
Definition at line 453 of file matpack_complex.cc.
Recursive constructor.
This is used to construct sub ranges from sub ranges. That means that the new range has to be interpreted relative to the original range. The new range may contain -1 for the extent which acts as a joker. However, the used Range constructor converts this to an explicit range, consistent with the original Range.
*data | The actual data. |
p | Previous range. |
n | New Range. |
Definition at line 468 of file matpack_complex.cc.
ComplexIterator1D ComplexVectorView::begin | ( | ) |
Return iterator to first element.
Definition at line 176 of file matpack_complex.cc.
References ConstComplexVectorView::mdata, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by ComplexVector::ComplexVector(), copy(), MapToEigenCol(), ComplexMatrixView::operator*=(), operator*=(), ComplexMatrixView::operator+=(), operator+=(), ComplexMatrixView::operator-=(), operator-=(), ComplexMatrixView::operator/=(), operator/=(), and operator=().
ConstComplexIterator1D ConstComplexVectorView::begin | ( | ) | const |
Return const iterator to first element.
Definition at line 338 of file matpack_complex.cc.
ComplexIterator1D ComplexVectorView::end | ( | ) |
Return iterator behind last element.
Definition at line 181 of file matpack_complex.cc.
References ConstComplexVectorView::mdata, Range::mextent, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by ComplexMatrixView::operator*=(), ComplexMatrixView::operator+=(), ComplexMatrixView::operator-=(), ComplexMatrixView::operator/=(), operator=(), and ComplexVector::operator=().
ConstComplexIterator1D ConstComplexVectorView::end | ( | ) | const |
Return const iterator behind last element.
Definition at line 339 of file matpack_complex.cc.
Get element implementation without assertions.
Definition at line 415 of file matpack_complex.h.
References ConstComplexVectorView::mdata, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by get_imag(), ComplexMatrixView::get_imag(), ConstComplexMatrixView::get_imag(), get_real(), ComplexMatrixView::get_real(), ConstComplexMatrixView::get_real(), ComplexMatrixView::operator()(), ConstComplexMatrixView::operator()(), and operator[]().
Get element implementation without assertions.
Definition at line 313 of file matpack_complex.h.
Complex * ComplexVectorView::get_c_array | ( | ) |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the VectorView is not pointing to the beginning of a Vector or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 438 of file matpack_complex.cc.
References ARTS_ASSERT, ConstComplexVectorView::mdata, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
const Complex * ComplexVectorView::get_c_array | ( | ) | const |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the VectorView is not pointing to the beginning of a Vector or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 426 of file matpack_complex.cc.
References ARTS_ASSERT, ConstComplexVectorView::mdata, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by diagonalize(), and inv().
Get element implementation without assertions.
Definition at line 425 of file matpack_complex.h.
Get element implementation without assertions.
Definition at line 323 of file matpack_complex.h.
Get element implementation without assertions.
Definition at line 420 of file matpack_complex.h.
Get element implementation without assertions.
Definition at line 318 of file matpack_complex.h.
|
inline |
Get a view of the imaginary part of the vector.
Definition at line 433 of file matpack_complex.h.
References ConstComplexVectorView::mdata, Range::mextent, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by get_imag(), and ComplexMatrixView::get_imag().
|
inline |
Get a view of the imaginary part of the vector.
Definition at line 331 of file matpack_complex.h.
ComplexVectorView::operator ComplexMatrixView | ( | ) |
Conversion to 1 column matrix.
Definition at line 411 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator*= | ( | Complex | x | ) |
Multiplication by scalar.
Definition at line 247 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator*= | ( | const ConstComplexVectorView & | x | ) |
Element-vise multiplication by another vector.
Definition at line 303 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstComplexVectorView::begin(), and ConstComplexVectorView::nelem().
ComplexVectorView ComplexVectorView::operator*= | ( | const ConstVectorView & | x | ) |
Element-vise multiplication by another vector.
Definition at line 317 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstVectorView::begin(), ConstComplexVectorView::nelem(), and ConstVectorView::nelem().
ComplexVectorView ComplexVectorView::operator*= | ( | Numeric | x | ) |
Multiplication by scalar.
Definition at line 254 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator+= | ( | Complex | x | ) |
Addition of scalar.
Definition at line 275 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator+= | ( | const ConstComplexVectorView & | x | ) |
Element-vise addition of another vector.
Definition at line 357 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator+= | ( | const ConstVectorView & | x | ) |
Element-vise addition of another vector.
Definition at line 371 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstVectorView::begin(), ConstComplexVectorView::nelem(), and ConstVectorView::nelem().
ComplexVectorView ComplexVectorView::operator+= | ( | Numeric | x | ) |
Addition of scalar.
Definition at line 282 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator-= | ( | Complex | x | ) |
Subtraction of scalar.
Definition at line 289 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator-= | ( | const ConstComplexVectorView & | x | ) |
Element-vise subtraction of another vector.
Definition at line 384 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstComplexVectorView::begin(), and ConstComplexVectorView::nelem().
ComplexVectorView ComplexVectorView::operator-= | ( | const ConstVectorView & | x | ) |
Element-vise subtraction of another vector.
Definition at line 398 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstVectorView::begin(), ConstComplexVectorView::nelem(), and ConstVectorView::nelem().
ComplexVectorView ComplexVectorView::operator-= | ( | Numeric | x | ) |
Subtraction of scalar.
Definition at line 296 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator/= | ( | Complex | x | ) |
Division by scalar.
Definition at line 261 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator/= | ( | const ConstComplexVectorView & | x | ) |
Element-vise division by another vector.
Definition at line 330 of file matpack_complex.cc.
References ARTS_ASSERT, and ConstComplexVectorView::nelem().
ComplexVectorView ComplexVectorView::operator/= | ( | const ConstVectorView & | x | ) |
Element-vise division by another vector.
Definition at line 344 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), ConstVectorView::begin(), ConstComplexVectorView::nelem(), and ConstVectorView::nelem().
ComplexVectorView ComplexVectorView::operator/= | ( | Numeric | x | ) |
Division by scalar.
Definition at line 268 of file matpack_complex.cc.
ComplexVectorView & ComplexVectorView::operator= | ( | Complex | x | ) |
Assigning a scalar to a ComplexVectorView will set all elements to this value.
Definition at line 234 of file matpack_complex.cc.
ComplexVectorView & ComplexVectorView::operator= | ( | const Array< Complex > & | v | ) |
Assignment operator from Array<Complex>.
This copies the data from an Array<Complex> to this VectorView. Dimensions must agree! Resizing would destroy the selection that we might have done in this VectorView by setting its range.
Array<Complex> can be useful to collect things in, because there is a .push_back method for it. Then, after collecting we usually have to transfer the content to a Vector. With this assignment operator that's easy.
Definition at line 1541 of file matpack_complex.cc.
References ARTS_ASSERT, Range::mextent, ConstComplexVectorView::mrange, and v.
ComplexVectorView & ComplexVectorView::operator= | ( | const Array< Numeric > & | v | ) |
ComplexVectorView & ComplexVectorView::operator= | ( | const ComplexVector & | v | ) |
Assignment from ComplexVector.
This is important to avoid a bug when assigning a Vector to a Complex*VectorView.
Definition at line 221 of file matpack_complex.cc.
References ARTS_ASSERT, Range::mextent, ConstComplexVectorView::mrange, and v.
ComplexVectorView & ComplexVectorView::operator= | ( | const ComplexVectorView & | v | ) |
Assignment from ComplexVectorView to ComplexVectorView.
This is a tricky one. The problem is that since ComplexVectorView is derived from ConstComplexVectorView, a default = operator is generated by the compiler, which does not do what we want. So we need this one to override the default.
Definition at line 208 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), copy(), Range::mextent, ConstComplexVectorView::mrange, and v.
ComplexVectorView & ComplexVectorView::operator= | ( | const ConstComplexVectorView & | v | ) |
Assignment operator.
This copies the data from another VectorView t o this Complex*VectorView. Dimensions must agree! Resizing would destroy the selection that we might have done in this VectorView by setting its range.
Definition at line 191 of file matpack_complex.cc.
References ARTS_ASSERT, begin(), copy(), Range::mextent, ConstComplexVectorView::mrange, and v.
Referenced by ComplexVector::operator=().
ComplexVectorView & ComplexVectorView::operator= | ( | const ConstVectorView & | v | ) |
ComplexVectorView & ComplexVectorView::operator= | ( | const Vector & | v | ) |
ComplexVectorView & ComplexVectorView::operator= | ( | const VectorView & | v | ) |
ComplexVectorView & ComplexVectorView::operator= | ( | Numeric | x | ) |
Assigning a scalar to a ComplexVectorView will set all elements to this value.
Definition at line 241 of file matpack_complex.cc.
ComplexVectorView ComplexVectorView::operator[] | ( | const Range & | r | ) |
Index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Vector. This allows correct recursive behavior.
Definition at line 171 of file matpack_complex.cc.
References ComplexVectorView(), ConstComplexVectorView::mdata, and ConstComplexVectorView::mrange.
Plain Index operator.
Definition at line 408 of file matpack_complex.h.
References ARTS_ASSERT, get(), Range::mextent, and ConstComplexVectorView::mrange.
|
inline |
Get a view of the real part of the vector.
Definition at line 430 of file matpack_complex.h.
References ConstComplexVectorView::mdata, Range::mextent, ConstComplexVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by abs_xsec_per_speciesAddLines(), lm_hitran_2017::convtp(), Absorption::LineMixing::ecs_absorption_impl(), get_real(), ComplexMatrixView::get_real(), propmat_clearskyAddLines(), and Absorption::LineMixing::EquivalentLines::sort_by_frequency().
|
inline |
Get a view of the real part of the vector.
Definition at line 328 of file matpack_complex.h.
|
friend |
Definition at line 483 of file matpack_complex.h.
|
friend |
Definition at line 484 of file matpack_complex.h.
|
friend |
Definition at line 482 of file matpack_complex.h.