mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-13 18:03:13 +08:00
fix a couple of issues with pcplxflip
This commit is contained in:
parent
939f0327b6
commit
6e01780541
@ -225,6 +225,11 @@ template<typename Packet> inline typename unpacket_traits<Packet>::type predux_m
|
|||||||
template<typename Packet> inline Packet preverse(const Packet& a)
|
template<typename Packet> inline Packet preverse(const Packet& a)
|
||||||
{ return a; }
|
{ return a; }
|
||||||
|
|
||||||
|
|
||||||
|
/** \internal \returns \a a with real and imaginary part flipped (for complex type only) */
|
||||||
|
template<typename Packet> inline Packet pcplxflip(const Packet& a)
|
||||||
|
{ return Packet(imag(a),real(a)); }
|
||||||
|
|
||||||
/**************************
|
/**************************
|
||||||
* Special math functions
|
* Special math functions
|
||||||
***************************/
|
***************************/
|
||||||
|
@ -215,9 +215,9 @@ template<> EIGEN_STRONG_INLINE Packet2cf pdiv<Packet2cf>(const Packet2cf& a, con
|
|||||||
return Packet2cf(pdiv(res.v, vec_add(s,vec_perm(s, s, p16uc_COMPLEX_REV))));
|
return Packet2cf(pdiv(res.v, vec_add(s,vec_perm(s, s, p16uc_COMPLEX_REV))));
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE Packet2cf pcplxflip/*<Packet2cf>*/(const Packet2cf& x)
|
template<> EIGEN_STRONG_INLINE Packet2cf pcplxflip<Packet2cf>(const Packet2cf& x)
|
||||||
{
|
{
|
||||||
return Packet2cf(vec_perm(x, x, p16uc_COMPLEX_REV));
|
return Packet2cf(vec_perm(x.v, x.v, p16uc_COMPLEX_REV));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace internal
|
} // end namespace internal
|
||||||
|
@ -144,7 +144,7 @@ template<> EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf& a)
|
|||||||
return Packet2cf(a_r128);
|
return Packet2cf(a_r128);
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE Packet2cf pcplxflip(const Packet2cf& a)
|
template<> EIGEN_STRONG_INLINE Packet2cf pcplxflip<Packet2cf>(const Packet2cf& a)
|
||||||
{
|
{
|
||||||
return Packet2cf(vrev64q_f32(a.v));
|
return Packet2cf(vrev64q_f32(a.v));
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ template<> EIGEN_STRONG_INLINE Packet2cf pdiv<Packet2cf>(const Packet2cf& a, con
|
|||||||
return Packet2cf(_mm_div_ps(res.v,_mm_add_ps(s,_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(s), 0xb1)))));
|
return Packet2cf(_mm_div_ps(res.v,_mm_add_ps(s,_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(s), 0xb1)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE Packet2cf pcplxflip/*<Packet2cf>*/(const Packet2cf& x)
|
template<> EIGEN_STRONG_INLINE Packet2cf pcplxflip<Packet2cf>(const Packet2cf& x)
|
||||||
{
|
{
|
||||||
return Packet2cf(vec4f_swizzle1(x.v, 1, 0, 3, 2));
|
return Packet2cf(vec4f_swizzle1(x.v, 1, 0, 3, 2));
|
||||||
}
|
}
|
||||||
@ -433,7 +433,7 @@ template<> EIGEN_STRONG_INLINE Packet1cd pdiv<Packet1cd>(const Packet1cd& a, con
|
|||||||
return Packet1cd(_mm_div_pd(res.v, _mm_add_pd(s,_mm_shuffle_pd(s, s, 0x1))));
|
return Packet1cd(_mm_div_pd(res.v, _mm_add_pd(s,_mm_shuffle_pd(s, s, 0x1))));
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)
|
template<> EIGEN_STRONG_INLINE Packet1cd pcplxflip<Packet1cd>(const Packet1cd& x)
|
||||||
{
|
{
|
||||||
return Packet1cd(preverse(x.v));
|
return Packet1cd(preverse(x.v));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user