1*71db0c75SAndroid Build Coastguard Worker //===-- Unittests for fmul ------------------------------------------------===//
2*71db0c75SAndroid Build Coastguard Worker //
3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information.
5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*71db0c75SAndroid Build Coastguard Worker //
7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
8*71db0c75SAndroid Build Coastguard Worker
9*71db0c75SAndroid Build Coastguard Worker #include "MulTest.h"
10*71db0c75SAndroid Build Coastguard Worker
11*71db0c75SAndroid Build Coastguard Worker #include "src/math/fmul.h"
12*71db0c75SAndroid Build Coastguard Worker
13*71db0c75SAndroid Build Coastguard Worker #include "test/UnitTest/Test.h"
14*71db0c75SAndroid Build Coastguard Worker #include "utils/MPFRWrapper/MPFRUtils.h"
15*71db0c75SAndroid Build Coastguard Worker
LIST_MUL_TESTS(float,double,LIBC_NAMESPACE::fmul)16*71db0c75SAndroid Build Coastguard Worker LIST_MUL_TESTS(float, double, LIBC_NAMESPACE::fmul)
17*71db0c75SAndroid Build Coastguard Worker
18*71db0c75SAndroid Build Coastguard Worker TEST_F(LlvmLibcMulTest, SpecialInputs) {
19*71db0c75SAndroid Build Coastguard Worker namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
20*71db0c75SAndroid Build Coastguard Worker double INPUTS[][2] = {
21*71db0c75SAndroid Build Coastguard Worker {0x1.0100010002p8, 0x1.fffcp14},
22*71db0c75SAndroid Build Coastguard Worker {0x1.000000b92144p-7, 0x1.62p7},
23*71db0c75SAndroid Build Coastguard Worker };
24*71db0c75SAndroid Build Coastguard Worker
25*71db0c75SAndroid Build Coastguard Worker for (size_t i = 0; i < 2; ++i) {
26*71db0c75SAndroid Build Coastguard Worker double a = INPUTS[i][0];
27*71db0c75SAndroid Build Coastguard Worker
28*71db0c75SAndroid Build Coastguard Worker for (int j = 0; j < 180; ++j) {
29*71db0c75SAndroid Build Coastguard Worker a *= 0.5;
30*71db0c75SAndroid Build Coastguard Worker mpfr::BinaryInput<double> input{a, INPUTS[i][1]};
31*71db0c75SAndroid Build Coastguard Worker ASSERT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Mul, input,
32*71db0c75SAndroid Build Coastguard Worker LIBC_NAMESPACE::fmul(a, INPUTS[i][1]),
33*71db0c75SAndroid Build Coastguard Worker 0.5);
34*71db0c75SAndroid Build Coastguard Worker }
35*71db0c75SAndroid Build Coastguard Worker }
36*71db0c75SAndroid Build Coastguard Worker }
37