Skip to content

Commit 1a9b2b6

Browse files
[test] Improve testing logging and accuracy
Logging only the number of diff does not help solving or reproducing bug, so log every comparison instead. No functional change intended.
1 parent 6e9e932 commit 1a9b2b6

14 files changed

+285
-411
lines changed

test/test_complex_exponential.cpp

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,14 @@ struct complex_exponential_test
5454
std::transform(exp_input.cbegin(), exp_input.cend(), expected.begin(),
5555
[](const value_type& v)
5656
{ using std::exp; return exp(v); });
57-
batch_type in, out;
5857
for (size_t i = 0; i < nb_input; i += size)
5958
{
59+
batch_type in, out, ref;
6060
detail::load_batch(in, exp_input, i);
6161
out = exp(in);
62-
detail::store_batch(out, res, i);
62+
detail::load_batch(ref, expected, i);
63+
CHECK_BATCH_EQ(ref, out);
6364
}
64-
size_t diff = detail::get_nb_diff(res, expected);
65-
CHECK_EQ(diff, 0);
6665
}
6766

6867
void test_expm1()
@@ -71,111 +70,104 @@ struct complex_exponential_test
7170
[](const value_type& v)
7271
{ using xsimd::expm1; return expm1(v); });
7372

74-
batch_type in, out;
7573
for (size_t i = 0; i < nb_input; i += size)
7674
{
75+
batch_type in, out, ref;
7776
detail::load_batch(in, exp_input, i);
7877
out = expm1(in);
79-
detail::store_batch(out, res, i);
78+
detail::load_batch(ref, expected, i);
79+
CHECK_BATCH_EQ(ref, out);
8080
}
81-
size_t diff = detail::get_nb_diff(res, expected);
82-
CHECK_EQ(diff, 0);
8381
}
8482

8583
void test_huge_exp()
8684
{
8785
std::transform(huge_exp_input.cbegin(), huge_exp_input.cend(), expected.begin(),
8886
[](const value_type& v)
8987
{ using std::exp; return exp(v); });
90-
batch_type in, out;
9188
for (size_t i = 0; i < nb_input; i += size)
9289
{
90+
batch_type in, out, ref;
9391
detail::load_batch(in, huge_exp_input, i);
9492
out = exp(in);
95-
detail::store_batch(out, res, i);
93+
detail::load_batch(ref, expected, i);
94+
CHECK_BATCH_EQ(ref, out);
9695
}
97-
size_t diff = detail::get_nb_diff(res, expected);
98-
CHECK_EQ(diff, 0);
9996
}
10097

10198
void test_log()
10299
{
103100
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
104101
[](const value_type& v)
105102
{ using std::log; return log(v); });
106-
batch_type in, out;
107103
for (size_t i = 0; i < nb_input; i += size)
108104
{
105+
batch_type in, out, ref;
109106
detail::load_batch(in, log_input, i);
110107
out = log(in);
111-
detail::store_batch(out, res, i);
108+
detail::load_batch(ref, expected, i);
109+
CHECK_BATCH_EQ(ref, out);
112110
}
113-
size_t diff = detail::get_nb_diff(res, expected);
114-
CHECK_EQ(diff, 0);
115111
}
116112

117113
void test_log2()
118114
{
119115
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
120116
[](const value_type& v)
121117
{ using xsimd::log2; return log2(v); });
122-
batch_type in, out;
123118
for (size_t i = 0; i < nb_input; i += size)
124119
{
120+
batch_type in, out, ref;
125121
detail::load_batch(in, log_input, i);
126122
out = log2(in);
127-
detail::store_batch(out, res, i);
123+
detail::load_batch(ref, expected, i);
124+
CHECK_BATCH_EQ(ref, out);
128125
}
129-
size_t diff = detail::get_nb_diff(res, expected);
130-
CHECK_EQ(diff, 0);
131126
}
132127

133128
void test_log10()
134129
{
135130
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
136131
[](const value_type& v)
137132
{ using std::log10; return log10(v); });
138-
batch_type in, out;
139133
for (size_t i = 0; i < nb_input; i += size)
140134
{
135+
batch_type in, out, ref;
141136
detail::load_batch(in, log_input, i);
142137
out = log10(in);
143-
detail::store_batch(out, res, i);
138+
detail::load_batch(ref, expected, i);
139+
CHECK_BATCH_EQ(ref, out);
144140
}
145-
size_t diff = detail::get_nb_diff(res, expected);
146-
CHECK_EQ(diff, 0);
147141
}
148142

149143
void test_log1p()
150144
{
151145
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
152146
[](const value_type& v)
153147
{ using xsimd::log1p; return log1p(v); });
154-
batch_type in, out;
155148
for (size_t i = 0; i < nb_input; i += size)
156149
{
150+
batch_type in, out, ref;
157151
detail::load_batch(in, log_input, i);
158152
out = log1p(in);
159-
detail::store_batch(out, res, i);
153+
detail::load_batch(ref, expected, i);
154+
CHECK_BATCH_EQ(ref, out);
160155
}
161-
size_t diff = detail::get_nb_diff(res, expected);
162-
CHECK_EQ(diff, 0);
163156
}
164157

165158
void test_sign()
166159
{
167160
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
168161
[](const value_type& v)
169162
{ using xsimd::sign; return sign(v); });
170-
batch_type in, out;
171163
for (size_t i = 0; i < nb_input; i += size)
172164
{
165+
batch_type in, out, ref;
173166
detail::load_batch(in, log_input, i);
174167
out = sign(in);
175-
detail::store_batch(out, res, i);
168+
detail::load_batch(ref, expected, i);
169+
CHECK_BATCH_EQ(ref, out);
176170
}
177-
size_t diff = detail::get_nb_diff(res, expected);
178-
CHECK_EQ(diff, 0);
179171
}
180172
};
181173

test/test_complex_hyperbolic.cpp

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -55,95 +55,89 @@ struct complex_hyperbolic_test
5555
std::transform(input.cbegin(), input.cend(), expected.begin(),
5656
[](const value_type& v)
5757
{ using std::sinh; return sinh(v); });
58-
batch_type in, out;
5958
for (size_t i = 0; i < nb_input; i += size)
6059
{
60+
batch_type in, out, ref;
6161
detail::load_batch(in, input, i);
6262
out = sinh(in);
63-
detail::store_batch(out, res, i);
63+
detail::load_batch(ref, expected, i);
64+
CHECK_BATCH_EQ(ref, out);
6465
}
65-
size_t diff = detail::get_nb_diff(res, expected);
66-
CHECK_EQ(diff, 0);
6766
}
6867

6968
void test_cosh()
7069
{
7170
std::transform(input.cbegin(), input.cend(), expected.begin(),
7271
[](const value_type& v)
7372
{ using std::cosh; return cosh(v); });
74-
batch_type in, out;
7573
for (size_t i = 0; i < nb_input; i += size)
7674
{
75+
batch_type in, out, ref;
7776
detail::load_batch(in, input, i);
7877
out = cosh(in);
79-
detail::store_batch(out, res, i);
78+
detail::load_batch(ref, expected, i);
79+
CHECK_BATCH_EQ(ref, out);
8080
}
81-
size_t diff = detail::get_nb_diff(res, expected);
82-
CHECK_EQ(diff, 0);
8381
}
8482

8583
void test_tanh()
8684
{
8785
std::transform(input.cbegin(), input.cend(), expected.begin(),
8886
[](const value_type& v)
8987
{ using std::tanh; return tanh(v); });
90-
batch_type in, out;
9188
for (size_t i = 0; i < nb_input; i += size)
9289
{
90+
batch_type in, out, ref;
9391
detail::load_batch(in, input, i);
9492
out = tanh(in);
95-
detail::store_batch(out, res, i);
93+
detail::load_batch(ref, expected, i);
94+
CHECK_BATCH_EQ(ref, out);
9695
}
97-
size_t diff = detail::get_nb_diff(res, expected);
98-
CHECK_EQ(diff, 0);
9996
}
10097

10198
void test_asinh()
10299
{
103100
std::transform(input.cbegin(), input.cend(), expected.begin(),
104101
[](const value_type& v)
105102
{ using std::asinh; return asinh(v); });
106-
batch_type in, out;
107103
for (size_t i = 0; i < nb_input; i += size)
108104
{
105+
batch_type in, out, ref;
109106
detail::load_batch(in, input, i);
110107
out = asinh(in);
111-
detail::store_batch(out, res, i);
108+
detail::load_batch(ref, expected, i);
109+
CHECK_BATCH_EQ(ref, out);
112110
}
113-
size_t diff = detail::get_nb_diff(res, expected);
114-
CHECK_EQ(diff, 0);
115111
}
116112

117113
void test_acosh()
118114
{
119115
std::transform(acosh_input.cbegin(), acosh_input.cend(), expected.begin(),
120116
[](const value_type& v)
121117
{ using std::acosh; return acosh(v); });
122-
batch_type in, out;
123118
for (size_t i = 0; i < nb_input; i += size)
124119
{
120+
batch_type in, out, ref;
125121
detail::load_batch(in, acosh_input, i);
126122
out = acosh(in);
127-
detail::store_batch(out, res, i);
123+
detail::load_batch(ref, expected, i);
124+
CHECK_BATCH_EQ(ref, out);
128125
}
129-
size_t diff = detail::get_nb_diff(res, expected);
130-
CHECK_EQ(diff, 0);
131126
}
132127

133128
void test_atanh()
134129
{
135130
std::transform(atanh_input.cbegin(), atanh_input.cend(), expected.begin(),
136131
[](const value_type& v)
137132
{ using std::atanh; return atanh(v); });
138-
batch_type in, out;
139133
for (size_t i = 0; i < nb_input; i += size)
140134
{
135+
batch_type in, out, ref;
141136
detail::load_batch(in, atanh_input, i);
142137
out = atanh(in);
143-
detail::store_batch(out, res, i);
138+
detail::load_batch(ref, expected, i);
139+
CHECK_BATCH_EQ(ref, out);
144140
}
145-
size_t diff = detail::get_nb_diff(res, expected);
146-
CHECK_EQ(diff, 0);
147141
}
148142
};
149143

test/test_complex_power.cpp

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,15 @@ struct complex_power_test
6666
std::transform(lhs_np.cbegin(), lhs_np.cend(), real_expected.begin(),
6767
[](const value_type& v)
6868
{ using std::abs; return abs(v); });
69-
batch_type in;
70-
real_batch_type out;
7169
for (size_t i = 0; i < nb_input; i += size)
7270
{
71+
batch_type in;
72+
real_batch_type out, ref;
7373
detail::load_batch(in, lhs_np, i);
7474
out = abs(in);
75-
detail::store_batch(out, real_res, i);
75+
detail::load_batch(ref, real_expected, i);
76+
CHECK_BATCH_EQ(ref, out);
7677
}
77-
size_t diff = detail::get_nb_diff(real_res, real_expected);
78-
CHECK_EQ(diff, 0);
7978
}
8079

8180
void test_arg()
@@ -84,16 +83,15 @@ struct complex_power_test
8483
std::transform(lhs_np.cbegin(), lhs_np.cend(), real_expected.begin(),
8584
[](const value_type& v)
8685
{ using std::arg; return arg(v); });
87-
batch_type in;
88-
real_batch_type out;
8986
for (size_t i = 0; i < nb_input; i += size)
9087
{
88+
batch_type in;
89+
real_batch_type out, ref;
9190
detail::load_batch(in, lhs_np, i);
9291
out = arg(in);
93-
detail::store_batch(out, real_res, i);
92+
detail::load_batch(ref, real_expected, i);
93+
CHECK_BATCH_EQ(ref, out);
9494
}
95-
size_t diff = detail::get_nb_diff(real_res, real_expected);
96-
CHECK_EQ(diff, 0);
9795
}
9896

9997
void test_pow()
@@ -154,63 +152,59 @@ struct complex_power_test
154152
std::transform(lhs_nn.cbegin(), lhs_nn.cend(), expected.begin(),
155153
[](const value_type& v)
156154
{ using std::sqrt; return sqrt(v); });
157-
batch_type in, out;
158155
for (size_t i = 0; i < nb_input; i += size)
159156
{
157+
batch_type in, out, ref;
160158
detail::load_batch(in, lhs_nn, i);
161159
out = sqrt(in);
162-
detail::store_batch(out, res, i);
160+
detail::load_batch(ref, expected, i);
161+
CHECK_BATCH_EQ(ref, out);
163162
}
164-
size_t diff = detail::get_nb_diff(res, expected);
165-
CHECK_EQ(diff, 0);
166163
}
167164

168165
void test_sqrt_pn()
169166
{
170167
std::transform(lhs_pn.cbegin(), lhs_pn.cend(), expected.begin(),
171168
[](const value_type& v)
172169
{ using std::sqrt; return sqrt(v); });
173-
batch_type in, out;
174170
for (size_t i = 0; i < nb_input; i += size)
175171
{
172+
batch_type in, out, ref;
176173
detail::load_batch(in, lhs_pn, i);
177174
out = sqrt(in);
178-
detail::store_batch(out, res, i);
175+
detail::load_batch(ref, expected, i);
176+
CHECK_BATCH_EQ(ref, out);
179177
}
180-
size_t diff = detail::get_nb_diff(res, expected);
181-
CHECK_EQ(diff, 0);
182178
}
183179

184180
void test_sqrt_np()
185181
{
186182
std::transform(lhs_np.cbegin(), lhs_np.cend(), expected.begin(),
187183
[](const value_type& v)
188184
{ using std::sqrt; return sqrt(v); });
189-
batch_type in, out;
190185
for (size_t i = 0; i < nb_input; i += size)
191186
{
187+
batch_type in, out, ref;
192188
detail::load_batch(in, lhs_np, i);
193189
out = sqrt(in);
194-
detail::store_batch(out, res, i);
190+
detail::load_batch(ref, expected, i);
191+
CHECK_BATCH_EQ(ref, out);
195192
}
196-
size_t diff = detail::get_nb_diff(res, expected);
197-
CHECK_EQ(diff, 0);
198193
}
199194

200195
void test_sqrt_pp()
201196
{
202197
std::transform(lhs_pp.cbegin(), lhs_pp.cend(), expected.begin(),
203198
[](const value_type& v)
204199
{ using std::sqrt; return sqrt(v); });
205-
batch_type in, out;
206200
for (size_t i = 0; i < nb_input; i += size)
207201
{
202+
batch_type in, out, ref;
208203
detail::load_batch(in, lhs_pp, i);
209204
out = sqrt(in);
210-
detail::store_batch(out, res, i);
205+
detail::load_batch(ref, expected, i);
206+
CHECK_BATCH_EQ(ref, out);
211207
}
212-
size_t diff = detail::get_nb_diff(res, expected);
213-
CHECK_EQ(diff, 0);
214208
}
215209
};
216210

0 commit comments

Comments
 (0)