37 Vector3(
const T &x1 = 0,
const T &y1 = 0,
const T &z1 = 0)
43 explicit Vector3(
const std::array<T,3> &v)
44 :
x(v[0]),
y(v[1]),
z(v[2])
49 :
x(static_cast<
T>(other.
x)),
y(static_cast<
T>(other.
y)),
z(static_cast<
T>(other.
z))
53 :
x(v.x),
y(v.y),
z(v.z)
63 void set(
const T &x1,
const T &y1,
const T &z1)
181 assert(index >= 0 && index < 3);
183 T const* ptr[3] = {&
x, &
y, &
z};
195 assert(index >= 0 && index < 3);
197 T* ptr[3] = {&
x, &
y, &
z};
208 return x *
x +
y *
y +
z *
z;
218 return sqrt(
norm2());
261 void print(
const int precision = 5)
const;
298 return (u.x * v.
x + u.y * v.
y + u.z * v.
z);
361 return (u.x * v.
x + u.y * v.
y + u.z * v.
z);
378 return Vector3<T>(u.y * v.
z - u.z * v.
y, -u.x * v.
z + u.z * v.
x, u.x * v.
y - u.y * v.
x);
395 return Vector3<T>(u.y * v.
z - u.z * v.
y, -u.x * v.
z + u.z * v.
x, u.x * v.
y - u.y * v.
x);
439 if (u.x == v.
x && u.y == v.
y && u.z == v.
z)
454 int valid_precision = precision > 0 ? precision : 5;
455 std::cout.precision(valid_precision);
456 std::cout <<
"(" << std::setw(10) << x <<
"," << std::setw(10) << y <<
"," << std::setw(10) << z <<
")"
470template <
class T>
static std::ostream &operator<<(std::ostream &os,
const Vector3<T> &u)
472 os <<
"(" << std::setw(10) << u.x <<
"," << std::setw(10) << u.y <<
"," << std::setw(10) << u.z <<
")";
3 elements vector
Definition vector3.h:24
Vector3< T > & operator*=(const T &s)
Overload operator "*=" for (Vector3)*scalar.
Definition vector3.h:140
Vector3(const Vector3< T > &v)
Definition vector3.h:40
Vector3< T > & operator=(Vector3< T > &&u) noexcept
Move assignment operator.
Definition vector3.h:98
Vector3(const std::array< T, 3 > &v)
Definition vector3.h:43
T norm2(void) const
Get the square of norm of a Vector3.
Definition vector3.h:206
Vector3< T > & operator=(const T &u)
Definition vector3.h:84
Vector3< T > & operator/=(const T &s)
Overload operator "/=" for Vector3.
Definition vector3.h:154
Vector3< T > & operator+=(const Vector3< T > &u)
Overload operator "+=" for Vector3.
Definition vector3.h:112
T operator[](int index) const
Over load "[]" for accessing elements with pointers.
Definition vector3.h:179
T & operator[](int index)
Overload operator "[]" for accesing elements.
Definition vector3.h:193
Vector3(const Vector3< U > &other)
Definition vector3.h:48
Vector3< T > & operator-=(const Vector3< T > &u)
Overload operator "-=" for Vector3.
Definition vector3.h:126
void set(const T &x1, const T &y1, const T &z1)
set a 3d vector
Definition vector3.h:63
Vector3< T > & operator=(const Vector3< T > &u)
Overload operator "=" for Vector3.
Definition vector3.h:76
T x
Definition vector3.h:26
void print(const int precision=5) const
Print a Vector3 on standard output with formats.
Definition vector3.h:451
Vector3< T > operator-() const
Overload operator "-" to get (-Vector3)
Definition vector3.h:168
Vector3< T > & reverse(void)
Get (-Vector3)
Definition vector3.h:243
Vector3(const T &x1=0, const T &y1=0, const T &z1=0)
Default constructor.
Definition vector3.h:37
T norm(void) const
Get the norm of a Vector3.
Definition vector3.h:216
Vector3< T > & normalize(void)
Normalize a Vector3.
Definition vector3.h:226
T y
Definition vector3.h:27
Vector3(Vector3< T > &&v) noexcept
Definition vector3.h:52
T z
Definition vector3.h:28
#define T
Definition exp.cpp:237
Definition clebsch_gordan_coeff.cpp:8
ComplexMatrix operator-(const ComplexMatrix &m1, const ComplexMatrix &m2)
Definition complexmatrix.cpp:154
std::complex< double > dot(const ComplexArray &cd1, const ComplexArray &cd2)
Take "dot-product" of two ComplexArray: sum of cd1(conjugate)[i] * cd2[i].
Definition complexarray.cpp:352
constexpr double epsilon
Definition vector3.h:16
ComplexArray operator*(const double r, const ComplexArray &cd)
Scale a ComplexArray cd by real r.
Definition complexarray.cpp:173
Vector3< T > operator^(const Vector3< T > &u, const Vector3< T > &v)
Overload "^" for cross product of two Vector3.
Definition vector3.h:376
bool operator!=(const Matrix3 &m1, const Matrix3 &m2)
Overload operator "!=" to assert the inequality between two 3x3 matrices.
Definition matrix3.cpp:189
bool operator<(const Vector3< T > &u, const Vector3< T > &v)
Definition vector3.h:406
Matrix3 operator/(const Matrix3 &m, const double &s)
Overload operator "/" for a (Matrix3)/(scalar) i.e. m/s.
Definition matrix3.cpp:133
Vector3< T > cross(const Vector3< T > &u, const Vector3< T > &v)
Cross product of two Vector3.
Definition vector3.h:393
bool operator==(const Matrix3 &m1, const Matrix3 &m2)
Overload operator "==" to assert the equality between two 3x3 matrices.
Definition matrix3.cpp:171
ComplexMatrix operator+(const ComplexMatrix &m1, const ComplexMatrix &m2)
Definition complexmatrix.cpp:143