110#ifndef __FIBER_VVector_HPP
111#define __FIBER_VVector_HPP "Created 27.02.2001 21:42:27 by werner"
113#include <eagle/Vector.hpp>
129template <
class FirstVector,
class SecondVector,
class value>
150 : first (
A. first, V,
Mult())
151 , second(
A.second, V,
Mult())
156 : first (
A. first, V,
Div())
157 , second(
A.second, V,
Div())
162 : first (L.first , R.first ,
Add())
163 , second(L.second, R.second,
Add())
168 : first (L.first , R.first ,
Sub())
169 , second(L.second, R.second,
Sub())
174 : first (L.first ,
Sub())
175 , second(L.second,
Sub())
224template <
int VN,
class Vvalue,
int N,
class value>
231template <
class Vvalue,
int N,
class value>
238template <
int VN,
class Vvalue,
class value>
255template <
int A,
int B>
258 enum { result =
A/
B };
283template <
int N,
class value>
284 class ALIGN16
VVector :
public MixedVector< GrandMacOsGCCDivisionCalculator<N,VectorizationTrait<value>::N>::result,
285 typename VectorizationTrait<value>::vectorized_t,
286 N%VectorizationTrait<value>::N,
329 for(
int i=0; i<N; i++)
340 for(
int i=0; i<N; i++)
354 return *
reinterpret_cast<const Vector_t*
>(
this);
360 return *
reinterpret_cast<Vector_t*
>(
this);
391 const value*
ptr(
int i=0)
const
399 return vec().const_ptr(i);
406 : MixedVector_t(
A,
Mult(), V)
409 VVector(
const VVector&
A,
const value&V,
const Div&)
410 : MixedVector_t(
A,V, Div())
413 VVector(
const VVector&L,
const VVector&R,
const Add&)
414 : MixedVector_t(L,R,
Add())
417 VVector(
const VVector&L,
const VVector&R,
const Sub&)
418 : MixedVector_t(L,R,
Sub())
421 VVector(
const VVector&L,
const Sub&)
422 : MixedVector_t(L,
Sub())
432 MixedVector_t::operator+=(V);
439 MixedVector_t::operator-=(V);
446 MixedVector_t::operator*=(v);
453 MixedVector_t::operator/=(v);
505template <
int N,
class T>
520template <
int N,
class value>
527template <
int N,
class value>
528inline VVector<N, value>
operator/(
const VVector<N, value>&
A,
double V)
530 return VVector<N, value>(
A, V,
Div() );
536template <
int N,
class value>
537inline value
norm2(
const VVector<N,value>&
A)
539 return InnerProduct(
A,
A);
543template <
int N,
class value>
544inline value
norm(
const VVector<N,value>&
A)
551#if defined(_IOSTREAM_) || defined(_GLIBCXX_OSTREAM) || _CPP_IOSTREAM || defined(__SGI_STL_IOSTREAM) || defined(__clang__)
553template <
int N,
class value>
558 for(
int i=0; i<N-1; i++)
569template <
int N,
class value>
constexpr duration< __common_rep_t< _Rep1, __disable_if_is_duration< _Rep2 > >, _Period > operator/(const duration< _Rep1, _Period > &__d, const _Rep2 &__s)
complex< _Tp > sqrt(const complex< _Tp > &)
basic_ostream< char > ostream
Definition VVector.hpp:226
Vectorized vector.
Definition VVector.hpp:288
VVector(const VVector< N, T > &V)
Construct vectorized vector from another vectorized vector of another type.
Definition VVector.hpp:337
VVector(const VVector &V)
Copy constructor.
Definition VVector.hpp:320
const Vector_t & vec() const
Access the vectorized vector as an usual vector.
Definition VVector.hpp:352
friend VVector operator/(const VVector &A, const value &V)
Vector / Scalar.
Definition VVector.hpp:474
VVector & operator-=(const VVector &V)
Vector -= Vector.
Definition VVector.hpp:437
VVector & operator*=(const value &v)
Vector *= scalar.
Definition VVector.hpp:444
VVector(const MixedVector_t &MV)
Upcast constructor.
Definition VVector.hpp:345
Eagle::Vector< value, N > Vector_t
The corresponding unvectorized vector type.
Definition VVector.hpp:301
VVector VVector_t
The vectorized vector type.
Definition VVector.hpp:304
Eagle::Assignment< Vector_t, 0 > operator=(const value &x)
Allow assignment per comma operator.
Definition VVector.hpp:495
Vector_t & vec()
Access the vectorized vector as an usual vector.
Definition VVector.hpp:358
value & operator[](int i)
Array operator.
Definition VVector.hpp:376
value value_type
The element type.
Definition VVector.hpp:307
const value & operator[](int i) const
Array operator.
Definition VVector.hpp:380
friend VVector operator-(const VVector &A, const VVector &B)
Vector - Vector.
Definition VVector.hpp:486
void set(const value &s)
Set with all vector elements set to the same scalar value.
Definition VVector.hpp:314
friend VVector operator*(const VVector &A, const value &V)
Vector * Scalar.
Definition VVector.hpp:462
MixedVector< GrandMacOsGCCDivisionCalculator< N, VectorizationTrait< value >::N >::result, typenameVectorizationTrait< value >::vectorized_t, N%VectorizationTrait< value >::N, value >::result MixedVector_t
The result of mixing an aligned vector with an unaligned vector.
Definition VVector.hpp:298
const VVector & vvec() const
Return the type itself. Useful for base class access in derived classes.
Definition VVector.hpp:364
VVector & vvec()
Return the type itself. Useful for base class access in derived classes.
Definition VVector.hpp:370
VVector(const Eagle::Vector< T, N > &V)
Construct vectorized vector from usual vector of another type.
Definition VVector.hpp:326
VVector & operator+=(const VVector &V)
Vector += Vector.
Definition VVector.hpp:430
const value * const_ptr(int i=0) const
get actual data storage
Definition VVector.hpp:397
value * ptr(int i=0)
get actual data storage
Definition VVector.hpp:385
const value * ptr(int i=0) const
get actual data storage
Definition VVector.hpp:391
VVector & operator/=(const value &v)
Vector /= scalar.
Definition VVector.hpp:451
friend VVector operator*(const value &V, const VVector &A)
Scalar * Vector.
Definition VVector.hpp:468
VVector()
Default constructor.
Definition VVector.hpp:310
friend VVector operator+(const VVector &A, const VVector &B)
Vector + Vector.
Definition VVector.hpp:480
A type that is constructed from a pair of - preferedly vectorial - types and forwards arithmetic oper...
Definition VVector.hpp:131
VectorPair(const VectorPair &L, const VectorPair &R, const Sub &)
Subtraction.
Definition VVector.hpp:167
VectorPair(const VectorPair &A, const value &V, const Div &)
Division by scalar.
Definition VVector.hpp:155
VectorPair(const VectorPair &V)
Copy constructor.
Definition VVector.hpp:140
VectorPair & operator/=(const value &v)
Vector /= scalar.
Definition VVector.hpp:207
VectorPair()
Default constructor.
Definition VVector.hpp:136
VectorPair(const VectorPair &L, const Sub &)
Unary minus.
Definition VVector.hpp:173
VectorPair(const VectorPair &A, const value &V, const Mult &)
Scalar multiplication.
Definition VVector.hpp:149
VectorPair(const VectorPair &L, const VectorPair &R, const Add &)
Addition.
Definition VVector.hpp:161
VectorPair & operator+=(const VectorPair &A)
Vector += Vector.
Definition VVector.hpp:183
friend value InnerProduct(const VectorPair &A, const VectorPair &B)
Multiply and sum component-wise, .
Definition VVector.hpp:216
VectorPair & operator*=(const value &v)
Vector *= scalar.
Definition VVector.hpp:199
VectorPair & operator-=(const VectorPair &A)
Vector -= Vector.
Definition VVector.hpp:191
Anemone_Context_t operator<<(Anemone &A, VRenderContext &VC)
Column< C, Value > operator*(const Column< C, Value > &A, double V)
double norm2(const PhysicalSpace::bivector &v)
double norm(const PhysicalSpace::bivector &v)
This is an ugly hackaround class to cure some problem of the gcc 4.0 an 4.2 compiler under MacOS,...
Definition VVector.hpp:257