xref: /llvm-project/libc/test/src/math/sqrtf128_test.cpp (revision 4eec286b51524d385524a9f7cee4b9c4f8153570)
1 //===-- Unittests for sqrtf128 --------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "SqrtTest.h"
10 
11 #include "src/math/sqrtf128.h"
12 
13 #include "src/__support/integer_literals.h"
14 
15 LIST_SQRT_TESTS(float128, LIBC_NAMESPACE::sqrtf128)
16 
17 TEST_F(LlvmLibcSqrtTest, SpecialInputs) {
18   constexpr float128 INPUTS[] = {
19       0x0.000000dee2f5b6a26c8f07f05442p-16382q,
20       0x0.000000c86d174c5ad8ae54a548e7p-16382q,
21       0x0.000020ab15cfe0b8e488e128f535p-16382q,
22       0x0.0000219e97732a9970f2511989bap-16382q,
23       0x0.000026e477546ae99ef57066f9fdp-16382q,
24       0x0.00002d0f88d27a496b3e533f5067p-16382q,
25       0x1.0000000000000000000000000001p+0q,
26       0x1.0000000000000000000000000003p+0q,
27       0x1.0000000000000000000000000005p+0q,
28       0x1.2af17a4ae6f93d11310c49c11b59p+0q,
29       0x1.c4f5074269525063a26051a0ad27p+0q,
30       0x1.035cb5f298a801dc4be9b1f8cd97p+1q,
31       0x1.274be02380427e709beab4dedeb4p+1q,
32       0x1.64e797cfdbaa3f7e2f33279dbc6p+1q,
33       0x1.d78d8352b48608b510bfd5c75315p+1q,
34       0x1.fffffffffffffffffffffffffffbp+1q,
35       0x1.fffffffffffffffffffffffffffdp+1q,
36       0x1.ffffffffffffffffffffffffffffp+1q,
37   };
38 
39   for (auto input : INPUTS) {
40     ASSERT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Sqrt, input,
41                                    LIBC_NAMESPACE::sqrtf128(input), 0.5);
42   }
43 }
44