#ifndef __JMATH__JVECTORND__ #define __JMATH__JVECTORND__ #include #include #include "JLang/JManip.hh" /** * \author mdejong */ namespace JMATH {} namespace JPP { using namespace JMATH; } namespace JMATH { /** * Nx1 matrix. */ struct JVectorND : public std::vector { /** * Default constructor. */ JVectorND() : std::vector() {} /** * Constructor. * * \param size size */ JVectorND(size_t size) : std::vector(size, 0.0) {} /** * Reset. */ void reset() { for (iterator i = this->begin(); i != this->end(); ++i) { *i = 0.0; } } /** * Get dot product. * * \param vector vector * \return dot product */ double getDot(const JVectorND& vector) const { double dot = 0.0; const double* p = this-> data(); const double* q = vector.data(); for (size_t i = this->size(); i != 0; --i, ++p, ++q) { dot += (*p) * (*q); } return dot; } /** * Print ASCII formatted output. * * \param out output stream * \param object Nx1 matrix * \return output stream */ friend inline std::ostream& operator<<(std::ostream& out, const JVectorND& object) { using namespace std; const JFormat format(out, getFormat(JFormat_t(9, 3, std::ios::fixed | std::ios::showpos))); for (JVectorND::const_iterator i = object.begin(); i != object.end(); ++i) { out << format << *i << ' '; } out << endl; return out; } }; } #endif