1bbb75554SSiva Chandra //===-- sinf/cosf data tables ---------------------------------------------===// 2bbb75554SSiva Chandra // 3bbb75554SSiva Chandra // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4bbb75554SSiva Chandra // See https://llvm.org/LICENSE.txt for license information. 5bbb75554SSiva Chandra // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6bbb75554SSiva Chandra // 7bbb75554SSiva Chandra //===----------------------------------------------------------------------===// 8bbb75554SSiva Chandra 9bbb75554SSiva Chandra #include "math_utils.h" 10bbb75554SSiva Chandra #include "sincosf_utils.h" 11bbb75554SSiva Chandra 12bbb75554SSiva Chandra #include <stdint.h> 13bbb75554SSiva Chandra 14bbb75554SSiva Chandra namespace __llvm_libc { 15bbb75554SSiva Chandra 16bbb75554SSiva Chandra // The constants and polynomials for sine and cosine. The 2nd entry 17bbb75554SSiva Chandra // computes -cos (x) rather than cos (x) to get negation for free. 18*75d2fcb0SSiva Chandra Reddy constexpr sincos_t SINCOSF_TABLE[2] = { 19bbb75554SSiva Chandra {{1.0, -1.0, -1.0, 1.0}, 20b0cd3abfSTue Ly 0x1.45f306dc9c883p+23, 21b0cd3abfSTue Ly 0x1.921fb54442d18p+0, 22b0cd3abfSTue Ly 0x1p+0, 23b0cd3abfSTue Ly -0x1.ffffffd0c621cp-2, 24b0cd3abfSTue Ly 0x1.55553e1068f19p-5, 25b0cd3abfSTue Ly -0x1.6c087e89a359dp-10, 26b0cd3abfSTue Ly 0x1.99343027bf8c3p-16, 27b0cd3abfSTue Ly -0x1.555545995a603p-3, 28b0cd3abfSTue Ly 0x1.1107605230bc4p-7, 29b0cd3abfSTue Ly -0x1.994eb3774cf24p-13}, 30bbb75554SSiva Chandra {{1.0, -1.0, -1.0, 1.0}, 31b0cd3abfSTue Ly 0x1.45f306dc9c883p+23, 32b0cd3abfSTue Ly 0x1.921fb54442d18p+0, 33b0cd3abfSTue Ly -0x1p+0, 34b0cd3abfSTue Ly 0x1.ffffffd0c621cp-2, 35b0cd3abfSTue Ly -0x1.55553e1068f19p-5, 36b0cd3abfSTue Ly 0x1.6c087e89a359dp-10, 37b0cd3abfSTue Ly -0x1.99343027bf8c3p-16, 38b0cd3abfSTue Ly -0x1.555545995a603p-3, 39b0cd3abfSTue Ly 0x1.1107605230bc4p-7, 40b0cd3abfSTue Ly -0x1.994eb3774cf24p-13}, 41bbb75554SSiva Chandra }; 42bbb75554SSiva Chandra 43bbb75554SSiva Chandra // Table with 4/PI to 192 bit precision. To avoid unaligned accesses 44bbb75554SSiva Chandra // only 8 new bits are added per entry, making the table 4 times larger. 45*75d2fcb0SSiva Chandra Reddy constexpr uint32_t INV_PIO4[24] = { 46bbb75554SSiva Chandra 0xa2, 0xa2f9, 0xa2f983, 0xa2f9836e, 0xf9836e4e, 0x836e4e44, 47bbb75554SSiva Chandra 0x6e4e4415, 0x4e441529, 0x441529fc, 0x1529fc27, 0x29fc2757, 0xfc2757d1, 48bbb75554SSiva Chandra 0x2757d1f5, 0x57d1f534, 0xd1f534dd, 0xf534ddc0, 0x34ddc0db, 0xddc0db62, 49bbb75554SSiva Chandra 0xc0db6295, 0xdb629599, 0x6295993c, 0x95993c43, 0x993c4390, 0x3c439041}; 50bbb75554SSiva Chandra 51bbb75554SSiva Chandra } // namespace __llvm_libc 52