Skip to content

Commit ca8b14d

Browse files
authored
[libc][math] Implement fast pass for double precision atan2 with 1 ULP errors. (#100648)
1 parent 0fa53d5 commit ca8b14d

File tree

14 files changed

+510
-1
lines changed

14 files changed

+510
-1
lines changed

libc/config/darwin/arm/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ set(TARGET_LIBM_ENTRYPOINTS
120120
libc.src.math.acoshf
121121
libc.src.math.asinf
122122
libc.src.math.asinhf
123+
libc.src.math.atan2
123124
libc.src.math.atan2f
124125
libc.src.math.atanf
125126
libc.src.math.atanhf

libc/config/linux/aarch64/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ set(TARGET_LIBM_ENTRYPOINTS
343343
libc.src.math.acoshf
344344
libc.src.math.asinf
345345
libc.src.math.asinhf
346+
libc.src.math.atan2
346347
libc.src.math.atan2f
347348
libc.src.math.atanf
348349
libc.src.math.atanhf

libc/config/linux/arm/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ set(TARGET_LIBM_ENTRYPOINTS
213213
libc.src.math.acoshf
214214
libc.src.math.asinf
215215
libc.src.math.asinhf
216+
libc.src.math.atan2
216217
libc.src.math.atan2f
217218
libc.src.math.atanf
218219
libc.src.math.atanhf

libc/config/linux/riscv/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,7 @@ set(TARGET_LIBM_ENTRYPOINTS
365365
libc.src.math.acoshf
366366
libc.src.math.asinf
367367
libc.src.math.asinhf
368+
libc.src.math.atan2
368369
libc.src.math.atan2f
369370
libc.src.math.atanf
370371
libc.src.math.atanhf

libc/config/linux/x86_64/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,7 @@ set(TARGET_LIBM_ENTRYPOINTS
365365
libc.src.math.acoshf
366366
libc.src.math.asinf
367367
libc.src.math.asinhf
368+
libc.src.math.atan2
368369
libc.src.math.atan2f
369370
libc.src.math.atanf
370371
libc.src.math.atanhf

libc/config/windows/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ set(TARGET_LIBM_ENTRYPOINTS
118118
libc.src.math.acoshf
119119
libc.src.math.asinf
120120
libc.src.math.asinhf
121+
libc.src.math.atan2
121122
libc.src.math.atan2f
122123
libc.src.math.atanf
123124
libc.src.math.atanhf

libc/docs/math/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ Higher Math Functions
260260
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
261261
| atan | |check| | | | | | 7.12.4.3 | F.10.1.3 |
262262
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
263-
| atan2 | |check| | | | | | 7.12.4.4 | F.10.1.4 |
263+
| atan2 | |check| | 1 ULP | | | | 7.12.4.4 | F.10.1.4 |
264264
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
265265
| atan2pi | | | | | | 7.12.4.11 | F.10.1.11 |
266266
+-----------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+

libc/spec/stdc.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,7 @@ def StdC : StandardSpec<"stdc"> {
692692

693693
FunctionSpec<"atanf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
694694

695+
FunctionSpec<"atan2", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
695696
FunctionSpec<"atan2f", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
696697

697698
FunctionSpec<"acoshf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,

libc/src/math/generic/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3848,6 +3848,26 @@ add_entrypoint_object(
38483848
libc.src.__support.macros.optimization
38493849
)
38503850

3851+
add_entrypoint_object(
3852+
atan2
3853+
SRCS
3854+
atan2.cpp
3855+
HDRS
3856+
../atan2.h
3857+
COMPILE_OPTIONS
3858+
-O3
3859+
DEPENDS
3860+
.inv_trigf_utils
3861+
libc.src.__support.FPUtil.double_double
3862+
libc.src.__support.FPUtil.dyadic_float
3863+
libc.src.__support.FPUtil.fp_bits
3864+
libc.src.__support.FPUtil.multiply_add
3865+
libc.src.__support.FPUtil.nearest_integer
3866+
libc.src.__support.FPUtil.polyeval
3867+
libc.src.__support.FPUtil.rounding_mode
3868+
libc.src.__support.macros.optimization
3869+
)
3870+
38513871
add_entrypoint_object(
38523872
scalblnf16
38533873
SRCS

0 commit comments

Comments
 (0)