Lines Matching refs:internal

16 namespace internal {
23 return internal::isMuchSmallerThan(a-b, refvalue);
43 if (a[i]!=b[i] && !internal::isApprox(a[i],b[i]))
56 internal::pstore(data2, POP(internal::pload<Packet>(data1), internal::pload<Packet>(data1+PacketSize))); \
63 internal::pstore(data2, POP(internal::pload<Packet>(data1))); \
71 inline Packet load(const T* from) const { return internal::pload<Packet>(from); }
74 inline void store(T* to, const Packet& x) const { internal::pstore(to,x); }
103 typedef typename internal::packet_traits<Scalar>::type Packet;
104 const int PacketSize = internal::packet_traits<Scalar>::size;
108 EIGEN_ALIGN16 Scalar data1[internal::packet_traits<Scalar>::size*4];
109 EIGEN_ALIGN16 Scalar data2[internal::packet_traits<Scalar>::size*4];
111 EIGEN_ALIGN16 Scalar ref[internal::packet_traits<Scalar>::size*4];
115 data1[i] = internal::random<Scalar>()/RealScalar(PacketSize);
116 data2[i] = internal::random<Scalar>()/RealScalar(PacketSize);
120 internal::pstore(data2, internal::pload<Packet>(data1));
125 internal::pstore(data2, internal::ploadu<Packet>(data1+offset));
126 VERIFY(areApprox(data1+offset, data2, PacketSize) && "internal::ploadu");
131 internal::pstoreu(data2+offset, internal::pload<Packet>(data1));
132 VERIFY(areApprox(data1, data2+offset, PacketSize) && "internal::pstoreu");
137 packets[0] = internal::pload<Packet>(data1);
138 packets[1] = internal::pload<Packet>(data1+PacketSize);
139 if (offset==0) internal::palign<0>(packets[0], packets[1]);
140 else if (offset==1) internal::palign<1>(packets[0], packets[1]);
141 else if (offset==2) internal::palign<2>(packets[0], packets[1]);
142 else if (offset==3) internal::palign<3>(packets[0], packets[1]);
143 internal::pstore(data2, packets[0]);
148 VERIFY(areApprox(ref, data2, PacketSize) && "internal::palign");
151 CHECK_CWISE2(REF_ADD, internal::padd);
152 CHECK_CWISE2(REF_SUB, internal::psub);
153 CHECK_CWISE2(REF_MUL, internal::pmul);
155 if (!internal::is_same<Scalar,int>::value)
156 CHECK_CWISE2(REF_DIV, internal::pdiv);
158 CHECK_CWISE1(internal::negate, internal::pnegate);
159 CHECK_CWISE1(numext::conj, internal::pconj);
165 internal::pstore(data2, internal::pset1<Packet>(data1[offset]));
166 VERIFY(areApprox(ref, data2, PacketSize) && "internal::pset1");
169 VERIFY(internal::isApprox(data1[0], internal::pfirst(internal::pload<Packet>(data1))) && "internal::pfirst");
177 internal::pstore(data2,internal::ploaddup<Packet>(data1+offset));
185 VERIFY(isApproxAbs(ref[0], internal::predux(internal::pload<Packet>(data1)), refvalue) && "internal::predux");
190 VERIFY(internal::isApprox(ref[0], internal::predux_mul(internal::pload<Packet>(data1))) && "internal::predux_mul");
197 packets[j] = internal::pload<Packet>(data1+j*PacketSize);
199 internal::pstore(data2, internal::preduxp(packets));
200 VERIFY(areApproxAbs(ref, data2, PacketSize, refvalue) && "internal::preduxp");
204 internal::pstore(data2, internal::preverse(internal::pload<Packet>(data1)));
205 VERIFY(areApprox(ref, data2, PacketSize) && "internal::preverse");
211 typedef typename internal::packet_traits<Scalar>::type Packet;
212 const int PacketSize = internal::packet_traits<Scalar>::size;
215 EIGEN_ALIGN16 Scalar data1[internal::packet_traits<Scalar>::size*4];
216 EIGEN_ALIGN16 Scalar data2[internal::packet_traits<Scalar>::size*4];
217 EIGEN_ALIGN16 Scalar ref[internal::packet_traits<Scalar>::size*4];
221 data1[i] = internal::random<Scalar>(-1,1) * std::pow(Scalar(10), internal::random<Scalar>(-3,3));
222 data2[i] = internal::random<Scalar>(-1,1) * std::pow(Scalar(10), internal::random<Scalar>(-3,3));
224 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasSin, std::sin, internal::psin);
225 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasCos, std::cos, internal::pcos);
226 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasTan, std::tan, internal::ptan);
230 data1[i] = internal::random<Scalar>(-1,1);
231 data2[i] = internal::random<Scalar>(-1,1);
233 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasASin, std::asin, internal::pasin);
234 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasACos, std::acos, internal::pacos);
238 data1[i] = internal::random<Scalar>(-87,88);
239 data2[i] = internal::random<Scalar>(-87,88);
241 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasExp, std::exp, internal::pexp);
245 data1[i] = internal::random<Scalar>(0,1) * std::pow(Scalar(10), internal::random<Scalar>(-6,6));
246 data2[i] = internal::random<Scalar>(0,1) * std::pow(Scalar(10), internal::random<Scalar>(-6,6));
248 if(internal::random<float>(0,1)<0.1)
249 data1[internal::random<int>(0, PacketSize)] = 0;
250 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasLog, std::log, internal::plog);
251 CHECK_CWISE1_IF(internal::packet_traits<Scalar>::HasSqrt, std::sqrt, internal::psqrt);
257 typedef typename internal::packet_traits<Scalar>::type Packet;
258 const int PacketSize = internal::packet_traits<Scalar>::size;
260 EIGEN_ALIGN16 Scalar data1[internal::packet_traits<Scalar>::size*4];
261 EIGEN_ALIGN16 Scalar data2[internal::packet_traits<Scalar>::size*4];
262 EIGEN_ALIGN16 Scalar ref[internal::packet_traits<Scalar>::size*4];
264 Array<Scalar,Dynamic,1>::Map(data1, internal::packet_traits<Scalar>::size*4).setRandom();
269 VERIFY(internal::isApprox(ref[0], internal::predux_min(internal::pload<Packet>(data1))) && "internal::predux_min");
271 CHECK_CWISE2((std::min), internal::pmin);
272 CHECK_CWISE2((std::max), internal::pmax);
273 CHECK_CWISE1(abs, internal::pabs);
278 VERIFY(internal::isApprox(ref[0], internal::predux_max(internal::pload<Packet>(data1))) && "internal::predux_max");
282 internal::pstore(data2, internal::plset(data1[0]));
283 VERIFY(areApprox(ref, data2, PacketSize) && "internal::plset");
288 typedef typename internal::packet_traits<Scalar>::type Packet;
289 const int PacketSize = internal::packet_traits<Scalar>::size;
291 internal::conj_if<ConjLhs> cj0;
292 internal::conj_if<ConjRhs> cj1;
293 internal::conj_helper<Scalar,Scalar,ConjLhs,ConjRhs> cj;
294 internal::conj_helper<Packet,Packet,ConjLhs,ConjRhs> pcj;
299 VERIFY(internal::isApprox(ref[i], cj.pmul(data1[i],data2[i])) && "conj_helper pmul");
301 internal::pstore(pval,pcj.pmul(internal::pload<Packet>(data1),internal::pload<Packet>(data2)));
308 VERIFY(internal::isApprox(ref[i], cj.pmadd(data1[i],data2[i],tmp)) && "conj_helper pmadd");
310 internal::pstore(pval,pcj.pmadd(internal::pload<Packet>(data1),internal::pload<Packet>(data2),internal::pload<Packet>(pval)));
316 typedef typename internal::packet_traits<Scalar>::type Packet;
317 const int PacketSize = internal::packet_traits<Scalar>::size;
327 data1[i] = internal::random<Scalar>() * Scalar(1e2);
328 data2[i] = internal::random<Scalar>() * Scalar(1e2);
339 internal::pstore(pval,internal::pcplxflip(internal::pload<Packet>(data1)));