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>
100template <
class T, Int n>
144 for (
Int i = 0; i < n; i++)
v_p[i] = T(0);
148 for (
Int i = 0; i < n; i++)
v_p[i] = c;
172 RigidVector(
const T& v0,
const T& v1,
const T& v2,
const T& v3,
const T& v4) {
181 RigidVector(
const T& v0,
const T& v1,
const T& v2,
const T& v3,
const T& v4,
const T& v5) {
192 for (
Int i = 0; i < n; i++)
v_p[i] = v[i];
196 for (
Int i = 0; i < n; i++)
v_p[i] = v(i);
200 for (
Int i = 0; i < n; i++)
v_p[i] = v.
v_p[i];
204 for (
Int i = 0; i < n; i++)
v_p[i] = v.
v_p[i];
209 for (
Int i = 0; i < n; i++)
v_p[i] = v(i);
214 for (
Int i = 0; i < n; i++)
v_p[i] = c;
219 for (
Int i = 0; i < n; i++)
v_p[i] = -
v_p[i];
224 for (
Int i = 0; i < n; i++)
v_p[i] += v.
v_p[i];
228 for (
Int i = 0; i < n; i++)
v_p[i] *= v.
v_p[i];
233 for (
Int i = 0; i < n; i++)
v_p[i] -= v.
v_p[i];
238 for (
Int i = 0; i < n; i++)
v_p[i] *= val;
253 for (
Int i = 0; i < n; i++) v(i) =
v_p[i];
306#ifndef CASACORE_NO_AUTO_TEMPLATES
307#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>
For temporary backward namespace compatibility, use casa as alias for casacore.
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.