#include "ExtendedVector.h" double ExtendedVector::max(const vector &v) { double max = numeric_limits::min(); for (auto it = v.begin(); it != v.end(); ++it) { // ich war so erleichtert, als ich endlich std::signbit gefunden habe! if ( signbit(max - *it)) max = *it; } return max; } bool ExtendedVector::allPositive(const vector &v) { for (auto it = v.begin(); it != v.end(); ++it) { if ( signbit(*it) || (*it == 0) ) return false; } return true; } double ExtendedVector::product(const vector &v1, const vector &v2) { double product = 0; long unsigned int size = v1.size(); if ( v1.size() > v2.size() ) size = v2.size(); for (long unsigned int i = 0; i < size; i++) { product += v1[i] * v2[i]; } return product; } vector ExtendedVector::product(const vector &v, double f) { vector product; for (auto it = v.begin(); it != v.end(); ++it) { product.push_back(*it * f); } return product; } double ExtendedVector::norm(const vector &v) { return sqrt( ExtendedVector::product(v, v) ); } void ExtendedVector::normalise(vector &v) { vector *address = &v; *address = ExtendedVector::product(v, (1.0)/(ExtendedVector::norm(v))); return; }