Add a pinsertlast function replacing the last entry of a packet by a scalar.

(useful to vectorize LinSpaced)
This commit is contained in:
Gael Guennebaud
2016-10-25 16:48:49 +02:00
parent 2634f9386c
commit 13fc18d3a2
4 changed files with 53 additions and 0 deletions

View File

@@ -289,6 +289,16 @@ template<typename Scalar> void packetmath()
VERIFY(isApproxAbs(result[i], (selector.select[i] ? data1[i] : data2[i]), refvalue));
}
}
if (PacketTraits::HasBlend) {
// pinsertlast
for (int i=0; i<PacketSize; ++i)
ref[i] = data1[i];
Scalar s = internal::random<Scalar>();
ref[PacketSize-1] = s;
internal::pstore(data2, internal::pinsertlast(internal::pload<Packet>(data1),s));
VERIFY(areApprox(ref, data2, PacketSize) && "internal::pinsertlast");
}
}
template<typename Scalar> void packetmath_real()