34template <
class T,
unsigned int D>
class SVector;
46inline const T
square(
const T& x) {
return x*x; }
57inline const T
maximum(
const T& lhs,
const T& rhs) {
58 return (lhs > rhs) ? lhs : rhs;
70inline const T
minimum(
const T& lhs,
const T& rhs) {
71 return (lhs < rhs) ? lhs : rhs;
84 return (x-
static_cast<int>(x) < 0.5) ?
static_cast<int>(x) :
static_cast<int>(x+1);
97inline const int sign(
const T& x) {
return (x==0)? 0 : (x<0)? -1 : 1; }
102template <
unsigned int I>
104 template <
class A,
class B,
class T>
105 static inline T
f(
const A& lhs,
const B& rhs,
const T& x) {
116 template <
class A,
class B,
class T>
117 static inline T
f(
const A& lhs,
const B& rhs,
const T& x) {
118 return lhs.apply(0) * rhs.apply(0);
131template <
class T,
unsigned int D>
139template <
class A,
class T,
unsigned int D>
147template <
class A,
class T,
unsigned int D>
156template <
class A,
class B,
class T,
unsigned int D>
165template <
unsigned int I>
167 template <
class A,
class T>
168 static inline T
f(
const A& rhs,
const T& x) {
179 template <
class A,
class T>
180 static inline T
f(
const A& rhs,
const T& x) {
181 return square(rhs.apply(0));
194template <
class T,
unsigned int D>
202template <
class A,
class T,
unsigned int D>
215template <
class T,
unsigned int D>
217 return sqrt(
mag2(rhs));
223template <
class A,
class T,
unsigned int D>
225 return sqrt(
mag2(rhs));
245template <
class A,
class T>
262 return sqrt(
Lmag2(rhs));
268template <
class A,
class T>
270 return sqrt(
Lmag2(rhs));
295template <
class A,
class T>
308template <
class T,
class A>
321template <
class A,
class B,
class T>
340template <
class T,
unsigned int D>
348template <
class A,
class T,
unsigned int D>
357template <
class T,
unsigned int D>
367template <
class A,
class T,
unsigned int D>
const T minimum(const T &lhs, const T &rhs)
Definition: Functions.hh:70
T mag(const SVector< T, D > &rhs)
Definition: Functions.hh:216
const T maximum(const T &lhs, const T &rhs)
Definition: Functions.hh:57
T dot(const SVector< T, D > &lhs, const SVector< T, D > &rhs)
Definition: Functions.hh:132
SVector< T, 3 > cross(const SVector< T, 3 > &lhs, const SVector< T, 3 > &rhs)
Definition: Functions.hh:283
T Lmag2(const SVector< T, 4 > &rhs)
Definition: Functions.hh:238
const T square(const T &x)
Definition: Functions.hh:46
const int sign(const T &x)
Definition: Functions.hh:97
int round(const T &x)
Definition: Functions.hh:83
T Lmag(const SVector< T, 4 > &rhs)
Definition: Functions.hh:261
SVector< T, D > unit(const SVector< T, D > &rhs)
Definition: Functions.hh:341
T mag2(const SVector< T, D > &rhs)
Definition: Functions.hh:195
Definition: Expression.hh:113
Definition: Expression.hh:172
Definition: BinaryOperators.hh:626
Definition: Expression.hh:43
T apply(unsigned int i) const
Definition: Expression.hh:55
Definition: SVector.hh:51
T apply(unsigned int i) const
access the parse tree
SVector< T, D > & unit()
transform vector into a vector of lenght 1