Eigen::internal::Packet1cd Struct Reference

#include <Complex.h>

Public Member Functions

EIGEN_STRONG_INLINE Packet1cd ()
 
EIGEN_STRONG_INLINE Packet1cd (const __m128d &a)
 
EIGEN_STRONG_INLINE Packet1cd ()
 
EIGEN_STRONG_INLINE Packet1cd (const std::complex< double > &a)
 
EIGEN_STRONG_INLINE Packet1cd (const Packet2d &a)
 
EIGEN_STRONG_INLINE Packet1cd (const Packet1cd &a)
 
EIGEN_STRONG_INLINE Packet1cdoperator= (const Packet1cd &b)
 
EIGEN_STRONG_INLINE Packet1cd conjugate (void) const
 
EIGEN_STRONG_INLINE Packet1cdoperator*= (const Packet1cd &b)
 
EIGEN_STRONG_INLINE Packet1cd operator* (const Packet1cd &b) const
 
EIGEN_STRONG_INLINE Packet1cdoperator+= (const Packet1cd &b)
 
EIGEN_STRONG_INLINE Packet1cd operator+ (const Packet1cd &b) const
 
EIGEN_STRONG_INLINE Packet1cdoperator-= (const Packet1cd &b)
 
EIGEN_STRONG_INLINE Packet1cd operator- (const Packet1cd &b) const
 
EIGEN_STRONG_INLINE Packet1cdoperator/= (const Packet1cd &b)
 
EIGEN_STRONG_INLINE Packet1cd operator/ (const Packet1cd &b) const
 
EIGEN_STRONG_INLINE Packet1cd operator- (void) const
 
EIGEN_STRONG_INLINE Packet1cd ()
 
EIGEN_STRONG_INLINE Packet1cd (const __m128d &a)
 
EIGEN_STRONG_INLINE Packet1cd ()
 
EIGEN_STRONG_INLINE Packet1cd (const Packet2d &a)
 

Public Attributes

Packet2d v
 

Constructor & Destructor Documentation

◆ Packet1cd() [1/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( )
inline

◆ Packet1cd() [2/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const __m128d &  a)
inlineexplicit
262 : v(a) {}
const Scalar * a
Definition: level2_cplx_impl.h:32
Packet2d v
Definition: LSX/Complex.h:263

◆ Packet1cd() [3/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( )
inline
326 {}

◆ Packet1cd() [4/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const std::complex< double > &  a)
inlineexplicit
327  {
328  v[0] = std::real(a);
329  v[1] = std::imag(a);
330  }
AnnoyingScalar imag(const AnnoyingScalar &)
Definition: AnnoyingScalar.h:132
float real
Definition: datatypes.h:10

References a, imag(), and v.

◆ Packet1cd() [5/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const Packet2d a)
inlineexplicit
331 : v(a) {}

◆ Packet1cd() [6/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const Packet1cd a)
inline
332 : v(a.v) {}

◆ Packet1cd() [7/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( )
inline
220 {}

◆ Packet1cd() [8/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const __m128d &  a)
inlineexplicit
221 : v(a) {}

◆ Packet1cd() [9/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( )
inline
32 {}

◆ Packet1cd() [10/10]

EIGEN_STRONG_INLINE Eigen::internal::Packet1cd::Packet1cd ( const Packet2d a)
inlineexplicit
33 : v(a) {}

Member Function Documentation

◆ conjugate()

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::conjugate ( void  ) const
inline
337  {
338  static const v2u64 p2ul_CONJ_XOR = {0x0, 0x8000000000000000};
339  return (Packet1cd)pxor(v, (Packet2d)p2ul_CONJ_XOR);
340  }
__m128d Packet2d
Definition: LSX/PacketMath.h:36
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2315
EIGEN_STRONG_INLINE Packet1cd()
Definition: LSX/Complex.h:261

References Eigen::internal::pxor(), and v.

◆ operator*()

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::operator* ( const Packet1cd b) const
inline
360 { return Packet1cd(*this) *= b; }
Scalar * b
Definition: benchVecAdd.cpp:17

References b, and Packet1cd().

◆ operator*=()

EIGEN_STRONG_INLINE Packet1cd& Eigen::internal::Packet1cd::operator*= ( const Packet1cd b)
inline
341  {
342  Packet2d v1, v2;
343 
344  // Get the real values of a | a1_re | a1_re
345  v1 = (Packet2d)__builtin_msa_ilvev_d((v2i64)v, (v2i64)v);
346  // Get the imag values of a | a1_im | a1_im
347  v2 = (Packet2d)__builtin_msa_ilvod_d((v2i64)v, (v2i64)v);
348  // Multiply the real a with b
349  v1 = pmul(v1, b.v);
350  // Multiply the imag a with b
351  v2 = pmul(v2, b.v);
352  // Conjugate v2
353  v2 = Packet1cd(v2).conjugate().v;
354  // Swap real/imag elements in v2.
355  v2 = (Packet2d)__builtin_msa_shf_w((v4i32)v2, EIGEN_MSA_SHF_I8(2, 3, 0, 1));
356  // Add and return the result
357  v = padd(v1, v2);
358  return *this;
359  }
#define EIGEN_MSA_SHF_I8(a, b, c, d)
Definition: MSA/PacketMath.h:51
Map< RowVectorXf > v2(M2.data(), M2.size())
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9;Map< RowVectorXf > v1(M1.data(), M1.size())
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:318
EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf &a, const Packet4cf &b)
Definition: AVX/Complex.h:88

References b, EIGEN_MSA_SHF_I8, Packet1cd(), Eigen::internal::padd(), Eigen::internal::pmul(), v, v1(), and v2().

◆ operator+()

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::operator+ ( const Packet1cd b) const
inline
365 { return Packet1cd(*this) += b; }

References b, and Packet1cd().

◆ operator+=()

EIGEN_STRONG_INLINE Packet1cd& Eigen::internal::Packet1cd::operator+= ( const Packet1cd b)
inline
361  {
362  v = padd(v, b.v);
363  return *this;
364  }

References b, Eigen::internal::padd(), and v.

◆ operator-() [1/2]

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::operator- ( const Packet1cd b) const
inline
370 { return Packet1cd(*this) -= b; }

References b, and Packet1cd().

◆ operator-() [2/2]

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::operator- ( void  ) const
inline
379 { return Packet1cd(pnegate(v)); }
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition: AltiVec/Complex.h:264

References Packet1cd(), Eigen::internal::pnegate(), and v.

◆ operator-=()

EIGEN_STRONG_INLINE Packet1cd& Eigen::internal::Packet1cd::operator-= ( const Packet1cd b)
inline
366  {
367  v = psub(v, b.v);
368  return *this;
369  }
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:337

References b, Eigen::internal::psub(), and v.

◆ operator/()

EIGEN_STRONG_INLINE Packet1cd Eigen::internal::Packet1cd::operator/ ( const Packet1cd b) const
inline
378 { return Packet1cd(*this) /= b; }

References b, and Packet1cd().

◆ operator/=()

EIGEN_STRONG_INLINE Packet1cd& Eigen::internal::Packet1cd::operator/= ( const Packet1cd b)
inline
371  {
372  *this *= b.conjugate();
373  Packet2d s = pmul<Packet2d>(b.v, b.v);
374  s = padd(s, preverse<Packet2d>(s));
375  v = pdiv(v, s);
376  return *this;
377  }
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:368
EIGEN_STRONG_INLINE Packet2d pmul< Packet2d >(const Packet2d &a, const Packet2d &b)
Definition: LSX/PacketMath.h:741

References b, Eigen::internal::padd(), Eigen::internal::pdiv(), Eigen::internal::pmul< Packet2d >(), s, and v.

◆ operator=()

EIGEN_STRONG_INLINE Packet1cd& Eigen::internal::Packet1cd::operator= ( const Packet1cd b)
inline
333  {
334  v = b.v;
335  return *this;
336  }

References b, and v.

Member Data Documentation

◆ v


The documentation for this struct was generated from the following file: