diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index f191057a1..6d7842021 100755 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -2459,8 +2459,11 @@ template<> EIGEN_STRONG_INLINE Packet2d pldexp(const Packet2d& a, cons } template<> EIGEN_STRONG_INLINE Packet2d pfrexp (const Packet2d& a, Packet2d& exponent) { - Packet2d ret = { pfrexp(a[0], exponent[0]), pfrexp(a[1], exponent[1]) }; - return ret; + double exp[2] = { exponent[0], exponent[1] }; + Packet2d ret = { pfrexp(a[0], exp[0]), pfrexp(a[1], exp[1]) }; + exponent[0] = exp[0]; + exponent[1] = exp[1]; + return ret; // This doesn't currently work (no integer_packet for Packet2d - but adding it causes other problems) // return pfrexp_double(a, exponent); }