Eigen::internal::Packet2cf Struct Reference

#include <Complex.h>

Public Member Functions

EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const Packet4f &a)
 
EIGEN_STRONG_INLINE Packet2cf pmul (const Packet2cf &a, const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cfoperator*= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator* (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cfoperator+= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator+ (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cfoperator-= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator- (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cf operator- (void) const
 
EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const __m128 &a)
 
EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const std::complex< float > &a, const std::complex< float > &b)
 
EIGEN_STRONG_INLINE Packet2cf (const Packet4f &a)
 
EIGEN_STRONG_INLINE Packet2cf (const Packet2cf &a)
 
EIGEN_STRONG_INLINE Packet2cfoperator= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf conjugate (void) const
 
EIGEN_STRONG_INLINE Packet2cfoperator*= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator* (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cfoperator+= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator+ (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cfoperator-= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator- (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cf operator/ (const Packet2cf &b) const
 
EIGEN_STRONG_INLINE Packet2cfoperator/= (const Packet2cf &b)
 
EIGEN_STRONG_INLINE Packet2cf operator- (void) const
 
EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const Packet4f &a)
 
EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const __m128 &a)
 
EIGEN_STRONG_INLINE Packet2cf ()
 
EIGEN_STRONG_INLINE Packet2cf (const Packet4f &a)
 

Public Attributes

Packet4f v
 
union {
   Packet4f   v
 
   Packet1cd   cd [2]
 
}; 
 

Constructor & Destructor Documentation

◆ Packet2cf() [1/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inlineexplicit

◆ Packet2cf() [2/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const Packet4f a)
inlineexplicit
40 : v(a) {}
const Scalar * a
Definition: level2_cplx_impl.h:32
Packet4f v
Definition: AltiVec/Complex.h:78

◆ Packet2cf() [3/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inline
23 {}

◆ Packet2cf() [4/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const __m128 &  a)
inlineexplicit
24 : v(a) {}

◆ Packet2cf() [5/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inline
27 {}

◆ Packet2cf() [6/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const std::complex< float > &  a,
const std::complex< float > &  b 
)
inlineexplicit
28  {
30  v = t;
31  }
AnnoyingScalar imag(const AnnoyingScalar &)
Definition: AnnoyingScalar.h:132
Scalar * b
Definition: benchVecAdd.cpp:17
float real
Definition: datatypes.h:10
__vector float Packet4f
Definition: AltiVec/PacketMath.h:33
t
Definition: plotPSD.py:36

References a, b, imag(), plotPSD::t, and v.

◆ Packet2cf() [7/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const Packet4f a)
inlineexplicit
32 : v(a) {}

◆ Packet2cf() [8/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const Packet2cf a)
inline
33 : v(a.v) {}

◆ Packet2cf() [9/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inline
45 {}

◆ Packet2cf() [10/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const Packet4f a)
inlineexplicit
46 : v(a) {}

◆ Packet2cf() [11/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inline
22 {}

◆ Packet2cf() [12/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const __m128 &  a)
inlineexplicit
23 : v(a) {}

◆ Packet2cf() [13/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( )
inline
38 {}

◆ Packet2cf() [14/14]

EIGEN_STRONG_INLINE Eigen::internal::Packet2cf::Packet2cf ( const Packet4f a)
inlineexplicit
39 : v(a) {}

Member Function Documentation

◆ conjugate()

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::conjugate ( void  ) const
inline
38  {
39  return Packet2cf((Packet4f)__builtin_msa_bnegi_d((v2u64)v, 63));
40  }
EIGEN_STRONG_INLINE Packet2cf()
Definition: AltiVec/Complex.h:39

References Packet2cf(), and v.

◆ operator*() [1/2]

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::operator* ( const Packet2cf b) const
inline
64 { return Packet2cf(*this) *= b; }

References b, and Packet2cf().

◆ operator*() [2/2]

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::operator* ( const Packet2cf b) const
inline
60 { return Packet2cf(*this) *= b; }

References b, and Packet2cf().

◆ operator*=() [1/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator*= ( const Packet2cf b)
inline
60  {
61  v = pmul(Packet2cf(*this), b).v;
62  return *this;
63  }
EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf &a, const Packet2cf &b)
Definition: AltiVec/Complex.h:42

References b, Packet2cf(), pmul(), and v.

◆ operator*=() [2/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator*= ( const Packet2cf b)
inline
41  {
42  Packet4f v1, v2;
43 
44  // Get the real values of a | a1_re | a1_re | a2_re | a2_re |
45  v1 = (Packet4f)__builtin_msa_ilvev_w((v4i32)v, (v4i32)v);
46  // Get the imag values of a | a1_im | a1_im | a2_im | a2_im |
47  v2 = (Packet4f)__builtin_msa_ilvod_w((v4i32)v, (v4i32)v);
48  // Multiply the real a with b
49  v1 = pmul(v1, b.v);
50  // Multiply the imag a with b
51  v2 = pmul(v2, b.v);
52  // Conjugate v2
53  v2 = Packet2cf(v2).conjugate().v;
54  // Swap real/imag elements in v2.
55  v2 = (Packet4f)__builtin_msa_shf_w((v4i32)v2, EIGEN_MSA_SHF_I8(1, 0, 3, 2));
56  // Add and return the result
57  v = padd(v1, v2);
58  return *this;
59  }
#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

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

◆ operator+() [1/2]

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

References b, and Packet2cf().

◆ operator+() [2/2]

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

References b, and Packet2cf().

◆ operator+=() [1/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator+= ( const Packet2cf b)
inline
66  {
67  v = padd(v, b.v);
68  return *this;
69  }

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

◆ operator+=() [2/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator+= ( const Packet2cf b)
inline
61  {
62  v = padd(v, b.v);
63  return *this;
64  }

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

◆ operator-() [1/4]

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

References b, and Packet2cf().

◆ operator-() [2/4]

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

References b, and Packet2cf().

◆ operator-() [3/4]

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::operator- ( void  ) const
inline
76 { return Packet2cf(-v); }

References Packet2cf(), and v.

◆ operator-() [4/4]

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

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

◆ operator-=() [1/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator-= ( const Packet2cf b)
inline
71  {
72  v = psub(v, b.v);
73  return *this;
74  }
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition: GenericPacketMath.h:337

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

◆ operator-=() [2/2]

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator-= ( const Packet2cf b)
inline
66  {
67  v = psub(v, b.v);
68  return *this;
69  }

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

◆ operator/()

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::operator/ ( const Packet2cf b) const
inline
71 { return pdiv_complex(Packet2cf(*this), b); }
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pdiv_complex(const Packet &x, const Packet &y)
Definition: GenericPacketMathFunctions.h:1318

References b, Packet2cf(), and Eigen::internal::pdiv_complex().

◆ operator/=()

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator/= ( const Packet2cf b)
inline
72  {
73  *this = Packet2cf(*this) / b;
74  return *this;
75  }

References b, and Packet2cf().

◆ operator=()

EIGEN_STRONG_INLINE Packet2cf& Eigen::internal::Packet2cf::operator= ( const Packet2cf b)
inline
34  {
35  v = b.v;
36  return *this;
37  }

References b, and v.

◆ pmul()

EIGEN_STRONG_INLINE Packet2cf Eigen::internal::Packet2cf::pmul ( const Packet2cf a,
const Packet2cf b 
)
inline
42  {
43  Packet4f v1, v2;
44 
45  // Permute and multiply the real parts of a and b
46  v1 = vec_perm(a.v, a.v, p16uc_PSET32_WODD);
47  // Get the imaginary parts of a
48  v2 = vec_perm(a.v, a.v, p16uc_PSET32_WEVEN);
49  // multiply a_re * b
50  v1 = vec_madd(v1, b.v, p4f_ZERO);
51  // multiply a_im * b and get the conjugate result
52  v2 = vec_madd(v2, b.v, p4f_ZERO);
53  v2 = reinterpret_cast<Packet4f>(pxor(v2, reinterpret_cast<Packet4f>(p4ui_CONJ_XOR)));
54  // permute back to a proper order
55  v2 = vec_perm(v2, v2, p16uc_COMPLEX32_REV);
56 
57  return Packet2cf(padd<Packet4f>(v1, v2));
58  }
EIGEN_STRONG_INLINE Packet4f padd< Packet4f >(const Packet4f &a, const Packet4f &b)
Definition: AltiVec/PacketMath.h:1066
static Packet16uc p16uc_PSET32_WEVEN
Definition: AltiVec/PacketMath.h:132
static Packet4ui p4ui_CONJ_XOR
Definition: AltiVec/Complex.h:21
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2315
static Packet16uc p16uc_PSET32_WODD
Definition: AltiVec/PacketMath.h:129
static Packet16uc p16uc_COMPLEX32_REV
Definition: AltiVec/PacketMath.h:148

References a, b, Eigen::internal::p16uc_COMPLEX32_REV, Eigen::internal::p16uc_PSET32_WEVEN, Eigen::internal::p16uc_PSET32_WODD, Eigen::internal::p4ui_CONJ_XOR, Packet2cf(), Eigen::internal::padd< Packet4f >(), Eigen::internal::pxor(), v1(), and v2().

Referenced by operator*=().

Member Data Documentation

◆ 

union { ... }

◆ cd

Packet1cd Eigen::internal::Packet2cf::cd[2]

◆ v


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