30#ifndef INCLUDED_SIMPLE_VECTOR_HPP
31#define INCLUDED_SIMPLE_VECTOR_HPP
40template<
typename T, std::
size_t N>
51 using pointer =
typename data_type::pointer;
76 static constexpr std::size_t
size() {
return N; }
103 for (
unsigned int i=0;
i<
N; ++
i)
106 if (
i<
N-1)
os <<
" ";
144template<
class T, std::
size_t N >
147template<
class T, std::
size_t N >
150template<
class T, std::
size_t N >
153template<
class T, std::
size_t N >
156template<
class T, std::
size_t N >
159template<
class T, std::
size_t N >
163template<
typename T, std::
size_t N>
170template<
typename U,
typename V, std::
size_t N>
178template<
typename U,
typename V, std::
size_t N>
183 return std::move(
res);
186template<
typename U,
typename V, std::
size_t N>
191 return std::move(
res);
194template<
typename U,
typename V, std::
size_t N>
202template<
typename U,
typename V, std::
size_t N>
207 return std::move(
res);
210template<
typename U,
typename V, std::
size_t N>
215 return std::move(
res);
218template<
typename U,
typename V, std::
size_t N>
223 return std::move(
res);
226template<
typename U,
typename V, std::
size_t N>
231 return std::move(
res);
234template<
typename U,
typename V, std::
size_t N>
239 return std::move(
res);
242template<
typename U,
typename V, std::
size_t N>
247 return std::move(
res);
250template<
typename U,
typename V, std::
size_t N>
255 return std::move(
res);
258template<
typename U,
typename V, std::
size_t N>
263 return std::move(
res);
267template<
typename U,
typename V, std::
size_t N>
270 typename std::common_type<U,V>::type
res(
lhs[0]*
rhs[0]);
271 for (
unsigned int i=1;
i<
N; ++
i)
273 return std::move(
res);
276template<
typename U, std::
size_t N>
279template<
typename U, std::
size_t N>
283 auto m = std::fabs(
v[0]);
284 for (
unsigned int i=1;
i<
N; ++
i)
m =
max(
m,std::fabs(
v[
i]));
289template<
typename U,
typename V, std::
size_t N>
295template<
typename U,
typename V, std::
size_t N>
const_iterator begin() const
Definition vector.hpp:115
reverse_iterator rbegin()
Definition vector.hpp:120
const_reference front() const
Definition vector.hpp:87
vector & operator*=(const vector &other)
Definition vector.hpp:133
typename data_type::reference reference
Definition vector.hpp:49
typename data_type::iterator iterator
Definition vector.hpp:53
const_reverse_iterator rbegin() const
Definition vector.hpp:121
reference operator[](size_type pos)
Definition vector.hpp:80
const_reference operator[](size_type pos) const
Definition vector.hpp:81
const_reference y() const
Definition vector.hpp:93
vector & operator+=(const T &element)
Definition vector.hpp:130
const_iterator cend() const
Definition vector.hpp:119
vector & operator=(vector &&) &=default
reference w()
Definition vector.hpp:96
typename data_type::value_type value_type
Definition vector.hpp:46
typename data_type::pointer pointer
Definition vector.hpp:51
typename data_type::size_type size_type
Definition vector.hpp:47
typename data_type::const_iterator const_iterator
Definition vector.hpp:54
reference x()
Definition vector.hpp:90
const_reference w() const
Definition vector.hpp:97
const_reference z() const
Definition vector.hpp:95
vector & operator-=(const T &element)
Definition vector.hpp:132
typename data_type::reverse_iterator reverse_iterator
Definition vector.hpp:55
vector & operator+=(const vector &other)
Definition vector.hpp:129
vector(const vector &)=default
data_type data
Definition vector.hpp:140
static constexpr std::size_t size()
Definition vector.hpp:76
iterator end()
Definition vector.hpp:117
reverse_iterator rend()
Definition vector.hpp:123
const_reverse_iterator rend() const
Definition vector.hpp:124
typename data_type::const_reverse_iterator const_reverse_iterator
Definition vector.hpp:56
vector(std::array< T, N > &&_data)
Definition vector.hpp:68
vector & operator-=(const vector &other)
Definition vector.hpp:131
const_reverse_iterator crend() const
Definition vector.hpp:125
iterator begin()
Definition vector.hpp:114
vector(const T &element)
Definition vector.hpp:61
vector & operator/=(const T &element)
Definition vector.hpp:136
vector(const vector< T2, N > &other)
Definition vector.hpp:66
const_reference operator()(size_type i) const
Definition vector.hpp:84
reference z()
Definition vector.hpp:94
const_reference x() const
Definition vector.hpp:91
reference operator()(size_type i)
Definition vector.hpp:83
const_reverse_iterator crbegin() const
Definition vector.hpp:122
const_reference back() const
Definition vector.hpp:89
vector(const T *ptr)
Definition vector.hpp:64
vector(const std::array< T, N > &_data)
Definition vector.hpp:67
typename data_type::const_pointer const_pointer
Definition vector.hpp:52
vector & operator*=(const T &element)
Definition vector.hpp:134
std::array< T, N > data_type
Definition vector.hpp:45
reference back()
Definition vector.hpp:88
reference y()
Definition vector.hpp:92
vector & operator/=(const vector &other)
Definition vector.hpp:135
vector & operator=(const T &element) &
Definition vector.hpp:72
reference front()
Definition vector.hpp:86
const_iterator end() const
Definition vector.hpp:118
typename data_type::const_reference const_reference
Definition vector.hpp:50
vector & operator=(const vector &) &=default
const_iterator cbegin() const
Definition vector.hpp:116
vector(vector &&)=default
friend std::ostream & operator<<(std::ostream &os, const vector &v)
Definition vector.hpp:100
typename data_type::difference_type difference_type
Definition vector.hpp:48
math::vector< typename std::common_type< U, V >::type, N > operator*(const math::vector< U, N > &lhs, const math::vector< V, N > &rhs)
Definition vector.hpp:219
math::vector< T, N > operator-(math::vector< T, N > v)
Definition vector.hpp:164
U norm_inf(const math::vector< U, N > &v)
Definition vector.hpp:280
math::vector< typename std::common_type< U, V >::type, N > operator/(const math::vector< U, N > &lhs, const math::vector< V, N > &rhs)
Definition vector.hpp:243
bool operator>(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:157
std::common_type< U, V >::type dot(const math::vector< U, N > &lhs, const math::vector< V, N > &rhs)
Definition vector.hpp:268
bool operator<=(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:154
bool operator<(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:151
bool operator>=(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:160
std::enable_if< N==3, math::vector< typenamestd::common_type< U, V >::type, N > >::type cross(const math::vector< U, N > &lhs, const math::vector< V, N > &rhs)
Definition vector.hpp:290
bool operator!=(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:148
U norm2(const math::vector< U, N > &v)
Definition vector.hpp:277
bool operator==(const math::vector< T, N > &lhs, const math::vector< T, N > &rhs)
Definition vector.hpp:145
math::vector< typename std::common_type< U, V >::type, N > operator+(const math::vector< U, N > &lhs, const math::vector< V, N > &rhs)
Definition vector.hpp:171