#ifndef VECTORXD_H #define VECTORXD_H #include #define tmpl template tmpl class VectorXD { public: VectorXD(); VectorXD(const double scalars[X]); VectorXD(const VectorXD& other); VectorXD& setScalar(unsigned i, double value); double getScalar(unsigned i); bool isNull() const; bool equal(const VectorXD& other) const; VectorXD& add(double k); VectorXD& add(double scalars[X]); VectorXD& add(const VectorXD& other); VectorXD& sub(double k); VectorXD& sub(double scalars[X]); VectorXD& sub(const VectorXD& other); VectorXD& mult(double k); VectorXD& mult(const VectorXD& k); VectorXD& div(double k); double dotProduct(const VectorXD& other) const; VectorXD& crossProduct(const VectorXD& other); double norm() const; VectorXD operator+() const; VectorXD operator+(const double& k) const; VectorXD& operator+=(const double& k); VectorXD operator+(const VectorXD& other) const; VectorXD& operator+=(const VectorXD& other); VectorXD operator-() const; VectorXD operator-(const double& k) const; VectorXD& operator-=(const double& k); VectorXD operator-(const VectorXD& other) const; VectorXD& operator-=(const VectorXD& other); VectorXD operator*(const double& k) const; VectorXD& operator*=(const double& k); VectorXD operator*(const VectorXD& other) const; VectorXD& operator*=(const VectorXD& other); VectorXD operator/(const double& k) const; VectorXD& operator/=(const double& k); bool operator==(const VectorXD& other) const; bool operator!=(const VectorXD& other) const; bool operator!() const; operator bool() const; protected: double _scalars[X]; }; tmpl QDebug operator<<(QDebug dbg, const VectorXD& v); #include "vectorxd.hxx" #endif // VECTORXD_H