26#ifndef SCIMATH_RIGIDVECTOR_H
27#define SCIMATH_RIGIDVECTOR_H
29#include <casacore/casa/aips.h>
30#include <casacore/casa/Arrays/Vector.h>
31#include <casacore/casa/BasicSL/Complex.h>
32#include <casacore/casa/iosfwd.h>
37template <
class T, Int n>
class SquareMatrix;
145 for (
Int i=0; i<n; i++)
v_p[i]=
T(0);
149 for (
Int i=0; i<n; i++)
v_p[i]=c;
174 const T&
v4,
const T&
v5) {
180 for (
Int i=0; i<n; i++)
v_p[i]=v[i];
184 for (
Int i=0; i<n; i++)
v_p[i]=v(i);
197 for (
Int i=0; i<n; i++)
v_p[i]=v(i);
202 for (
Int i=0; i<n; i++)
v_p[i]=c;
212 for (
Int i=0; i<n; i++)
v_p[i]+=v.
v_p[i];
216 for (
Int i=0; i<n; i++)
v_p[i]*=v.
v_p[i];
221 for (
Int i=0; i<n; i++)
v_p[i]-=v.
v_p[i];
226 for (
Int i=0; i<n; i++)
v_p[i]*=val;
241 for (
Int i=0; i<n; i++) v(i)=
v_p[i];
294#ifndef CASACORE_NO_AUTO_TEMPLATES
295#include <casacore/scimath/Mathematics/RigidVector.tcc>
RigidVector(const RigidVector< T, n > &v)
Copy constructor, copy semantics.
RigidVector< T, n > & operator-=(const RigidVector< T, n > &v)
Subtraction.
RigidVector(const T v[n])
Construct from a c-array (copy semantics)
RigidVector(const T &v0, const T &v1)
Construct a 2-element vector, fails for wrong size vectors.
RigidVector(const Vector< T > &v)
Construct from a Vector.
RigidVector< T, n > & operator=(const T &c)
Assign a scalar, sets all elements to c.
Vector< T > vector() const
Convert to a regular Vector.
RigidVector(const T &v0, const T &v1, const T &v2, const T &v3)
Construct a 4-element vector, fails for wrong size vectors.
friend ostream & operator<<(ostream &os, const RigidVector< T, n > &v)
Write out a RigidVector using the Vector output method.
RigidVector< T, n > & operator-()
Negation.
RigidVector< T, n > & operator*=(const T &val)
Multiplication by scalar.
RigidVector()
RigidVector(Int dummy) { for (Int i=0; i<n; i++) v_p[i]=T(0); } Default constructor.
RigidVector< T, n > & operator=(const RigidVector< T, n > &v)
Assign from a RigidVector.
friend RigidVector< T, n > operator-(const RigidVector< T, n > &l, const RigidVector< T, n > &r)
Subtract two RigidVectors.
RigidVector< T, n > sqrt(const RigidVector< T, n > &v)
Square Root.
friend RigidVector< Complex, 4 > operator*(const SquareMatrix< Complex, 4 > &m, const RigidVector< Float, 4 > &v)
Special matrix multiply of Complex matrix * Float vector.
friend RigidVector< T, n > operator*(const T &f, const RigidVector< T, n > &v)
Multiply a RigidVector by a scalar.
friend RigidVector< T, n > operator*(const RigidVector< T, n > &v, const T &f)
Multiply a RigidVector by a scalar.
RigidVector< T, n > & operator+=(const RigidVector< T, n > &v)
Addition
T & operator()(Int i)
Indexing by reference.
RigidVector(const T &v0, const T &v1, const T &v2, const T &v3, const T &v4)
Construct a 5-element vector, fails for wrong size vectors.
const T & operator()(Int i) const
Indexing by const reference.
RigidVector(const T &c)
Construct from scalar, sets all elements to c.
RigidVector(const T &v0, const T &v1, const T &v2)
Construct a 3-element vector, fails for wrong size vectors.
RigidVector< T, n > & operator=(const Vector< T > &v)
Assign from a Vector.
RigidVector(const T &v0, const T &v1, const T &v2, const T &v3, const T &v4, const T &v5)
Construct a 6-element vector, fails for wrong size vectors.
RigidVector< T, n > & operator*=(const SquareMatrix< T, n > &m)
Multiply vector by matrix: v*=M is equivalent to v=M*v;.
friend RigidVector< T, n > operator+(const RigidVector< T, n > &l, const RigidVector< T, n > &r)
Add two RigidVectors.
friend T operator*(const RigidVector< T, n > &l, const RigidVector< T, n > &r)
The innerproduct of 2 RigidVectors.
RigidVector< T, n > & operator*=(const RigidVector< T, n > &v)
T v_p[n]
// The following are needed for Image<RigidVector>
this file contains all the compiler specific defines
LatticeExprNode sum(const LatticeExprNode &expr)
Mathematical operations involving RigidVectors
RigidVector< Complex, 4 > operator*(const SquareMatrix< Complex, 4 > &m, const RigidVector< Complex, 4 > &v)
Multiply vector by matrix.
RigidVector< Float, 4 > operator*(const SquareMatrix< Float, 4 > &m, const RigidVector< Float, 4 > &v)
Multiply vector by matrix.