12 template<
typename T,
typename U>
17 template<
typename T,
typename U>
23 template<
typename T,
typename U>
32 <<
"\n actual = " << actual
33 <<
"\n expected = " << expected <<
"\n\n";
37 #define VERIFY_IS_EQUAL_OR_NANS(a, b) VERIFY(test_is_equal_or_nans(a, b)) 49 for(
int k=0; k<100; ++k)
51 T x = internal::random<T>();
70 for(
int k=0; k<100; ++k)
72 T x = internal::random<T>();
81 for (
int i=0;
i<1000; ++
i) {
90 const T inf = std::numeric_limits<T>::infinity();
91 const T nan = std::numeric_limits<T>::quiet_NaN();
102 typedef typename std::complex<T> ComplexT;
104 for (
int i=0;
i<1000; ++
i) {
105 const ComplexT
x = internal::random<ComplexT>();
113 const T inf = std::numeric_limits<T>::infinity();
114 const T nan = std::numeric_limits<T>::quiet_NaN();
117 const int kNumCorners = 20;
118 const ComplexT
corners[kNumCorners][2] = {
119 {ComplexT(zero, zero), ComplexT(zero, zero)},
120 {ComplexT(-zero, zero), ComplexT(zero, zero)},
121 {ComplexT(zero, -zero), ComplexT(zero, zero)},
122 {ComplexT(-zero, -zero), ComplexT(zero, zero)},
123 {ComplexT(one, inf), ComplexT(inf, inf)},
124 {ComplexT(nan, inf), ComplexT(inf, inf)},
125 {ComplexT(one, -inf), ComplexT(inf, -inf)},
126 {ComplexT(nan, -inf), ComplexT(inf, -inf)},
127 {ComplexT(-inf, one), ComplexT(zero, inf)},
128 {ComplexT(inf, one), ComplexT(inf, zero)},
129 {ComplexT(-inf, -one), ComplexT(zero, -inf)},
130 {ComplexT(inf, -one), ComplexT(inf, -zero)},
131 {ComplexT(-inf, nan), ComplexT(nan, inf)},
132 {ComplexT(inf, nan), ComplexT(inf, nan)},
133 {ComplexT(zero, nan), ComplexT(nan, nan)},
134 {ComplexT(one, nan), ComplexT(nan, nan)},
135 {ComplexT(nan, zero), ComplexT(nan, nan)},
136 {ComplexT(nan, one), ComplexT(nan, nan)},
137 {ComplexT(nan, -one), ComplexT(nan, nan)},
138 {ComplexT(nan, nan), ComplexT(nan, nan)},
141 for (
int i=0;
i<kNumCorners; ++
i) {
142 const ComplexT&
x = corners[
i][0];
143 const ComplexT sqrtx = corners[
i][1];
159 const T inf = std::numeric_limits<T>::infinity();
160 const T nan = std::numeric_limits<T>::quiet_NaN();
162 for (
int i=0;
i<1000; ++
i) {
165 const T invx = one /
x;
180 typedef typename std::complex<T> ComplexT;
183 const T inf = std::numeric_limits<T>::infinity();
184 const T nan = std::numeric_limits<T>::quiet_NaN();
186 for (
int i=0;
i<1000; ++
i) {
187 const ComplexT
x = internal::random<ComplexT>();
188 const ComplexT invx = ComplexT(one, zero) /
x;
199 #if (EIGEN_COMP_GNUC) 201 const int kNumCorners = 20;
202 const ComplexT
corners[kNumCorners][2] = {
204 {ComplexT(zero, zero), ComplexT(zero, zero)},
205 {ComplexT(-zero, zero), ComplexT(zero, zero)},
206 {ComplexT(zero, -zero), ComplexT(zero, zero)},
207 {ComplexT(-zero, -zero), ComplexT(zero, zero)},
208 {ComplexT(one, inf), ComplexT(inf, inf)},
209 {ComplexT(nan, inf), ComplexT(inf, inf)},
210 {ComplexT(one, -inf), ComplexT(inf, -inf)},
211 {ComplexT(nan, -inf), ComplexT(inf, -inf)},
213 {ComplexT(-inf, one), ComplexT(zero, inf)},
214 {ComplexT(inf, one), ComplexT(inf, zero)},
215 {ComplexT(-inf, -one), ComplexT(zero, -inf)},
216 {ComplexT(inf, -one), ComplexT(inf, -zero)},
217 {ComplexT(-inf, nan), ComplexT(nan, inf)},
218 {ComplexT(inf, nan), ComplexT(inf, nan)},
219 {ComplexT(zero, nan), ComplexT(nan, nan)},
220 {ComplexT(one, nan), ComplexT(nan, nan)},
221 {ComplexT(nan, zero), ComplexT(nan, nan)},
222 {ComplexT(nan, one), ComplexT(nan, nan)},
223 {ComplexT(nan, -one), ComplexT(nan, nan)},
224 {ComplexT(nan, nan), ComplexT(nan, nan)},
227 for (
int i=0;
i<kNumCorners; ++
i) {
228 const ComplexT&
x = corners[
i][0];
229 const ComplexT rsqrtx = ComplexT(one, zero) / corners[
i][1];
bool check_if_equal_or_nans(const T &actual, const U &expected)
EIGEN_DONT_INLINE Scalar zero()
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
#define VERIFY_IS_APPROX(a, b)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const
#define VERIFY_IS_EQUAL(a, b)
#define VERIFY_IS_EQUAL_OR_NANS(a, b)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArgReturnType arg() const
Eigen::Triplet< double > T
EIGEN_DEVICE_FUNC const RsqrtReturnType rsqrt() const
mp::number< mp::cpp_dec_float< 100 >, mp::et_on > Real
#define CALL_SUBTEST(FUNC)
bool test_is_equal_or_nans(const T &actual, const U &expected)
void corners(const MatrixType &m)
EIGEN_DEVICE_FUNC const ImagReturnType imag() const
Jet< T, N > sqrt(const Jet< T, N > &f)
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
EIGEN_DECLARE_TEST(numext)