Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 24 additions & 32 deletions test/test_complex_exponential.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,14 @@ struct complex_exponential_test
std::transform(exp_input.cbegin(), exp_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::exp; return exp(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, exp_input, i);
out = exp(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

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

batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, exp_input, i);
out = expm1(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_huge_exp()
{
std::transform(huge_exp_input.cbegin(), huge_exp_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::exp; return exp(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, huge_exp_input, i);
out = exp(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_log()
{
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::log; return log(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, log_input, i);
out = log(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_log2()
{
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
[](const value_type& v)
{ using xsimd::log2; return log2(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, log_input, i);
out = log2(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_log10()
{
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::log10; return log10(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, log_input, i);
out = log10(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_log1p()
{
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
[](const value_type& v)
{ using xsimd::log1p; return log1p(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, log_input, i);
out = log1p(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_sign()
{
std::transform(log_input.cbegin(), log_input.cend(), expected.begin(),
[](const value_type& v)
{ using xsimd::sign; return sign(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, log_input, i);
out = sign(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}
};

Expand Down
42 changes: 18 additions & 24 deletions test/test_complex_hyperbolic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,95 +55,89 @@ struct complex_hyperbolic_test
std::transform(input.cbegin(), input.cend(), expected.begin(),
[](const value_type& v)
{ using std::sinh; return sinh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, input, i);
out = sinh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_cosh()
{
std::transform(input.cbegin(), input.cend(), expected.begin(),
[](const value_type& v)
{ using std::cosh; return cosh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, input, i);
out = cosh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_tanh()
{
std::transform(input.cbegin(), input.cend(), expected.begin(),
[](const value_type& v)
{ using std::tanh; return tanh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, input, i);
out = tanh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_asinh()
{
std::transform(input.cbegin(), input.cend(), expected.begin(),
[](const value_type& v)
{ using std::asinh; return asinh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, input, i);
out = asinh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_acosh()
{
std::transform(acosh_input.cbegin(), acosh_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::acosh; return acosh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, acosh_input, i);
out = acosh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_atanh()
{
std::transform(atanh_input.cbegin(), atanh_input.cend(), expected.begin(),
[](const value_type& v)
{ using std::atanh; return atanh(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, atanh_input, i);
out = atanh(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}
};

Expand Down
46 changes: 20 additions & 26 deletions test/test_complex_power.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,15 @@ struct complex_power_test
std::transform(lhs_np.cbegin(), lhs_np.cend(), real_expected.begin(),
[](const value_type& v)
{ using std::abs; return abs(v); });
batch_type in;
real_batch_type out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in;
real_batch_type out, ref;
detail::load_batch(in, lhs_np, i);
out = abs(in);
detail::store_batch(out, real_res, i);
detail::load_batch(ref, real_expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(real_res, real_expected);
CHECK_EQ(diff, 0);
}

void test_arg()
Expand All @@ -84,16 +83,15 @@ struct complex_power_test
std::transform(lhs_np.cbegin(), lhs_np.cend(), real_expected.begin(),
[](const value_type& v)
{ using std::arg; return arg(v); });
batch_type in;
real_batch_type out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in;
real_batch_type out, ref;
detail::load_batch(in, lhs_np, i);
out = arg(in);
detail::store_batch(out, real_res, i);
detail::load_batch(ref, real_expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(real_res, real_expected);
CHECK_EQ(diff, 0);
}

void test_pow()
Expand Down Expand Up @@ -154,63 +152,59 @@ struct complex_power_test
std::transform(lhs_nn.cbegin(), lhs_nn.cend(), expected.begin(),
[](const value_type& v)
{ using std::sqrt; return sqrt(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, lhs_nn, i);
out = sqrt(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_sqrt_pn()
{
std::transform(lhs_pn.cbegin(), lhs_pn.cend(), expected.begin(),
[](const value_type& v)
{ using std::sqrt; return sqrt(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, lhs_pn, i);
out = sqrt(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_sqrt_np()
{
std::transform(lhs_np.cbegin(), lhs_np.cend(), expected.begin(),
[](const value_type& v)
{ using std::sqrt; return sqrt(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, lhs_np, i);
out = sqrt(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}

void test_sqrt_pp()
{
std::transform(lhs_pp.cbegin(), lhs_pp.cend(), expected.begin(),
[](const value_type& v)
{ using std::sqrt; return sqrt(v); });
batch_type in, out;
for (size_t i = 0; i < nb_input; i += size)
{
batch_type in, out, ref;
detail::load_batch(in, lhs_pp, i);
out = sqrt(in);
detail::store_batch(out, res, i);
detail::load_batch(ref, expected, i);
CHECK_BATCH_EQ(ref, out);
}
size_t diff = detail::get_nb_diff(res, expected);
CHECK_EQ(diff, 0);
}
};

Expand Down
Loading
Loading