Make quality improvements

- Write some more unit tests
- memcpy() on ARM is now faster
- Address the Musl complex math FIXME comments
- Some libm funcs like pow() now support setting errno
- Import the latest and greatest math functions from ARM
- Use more accurate atan2f() and log1pf() implementations
- atoi() and atol() will no longer saturate or clobber errno
This commit is contained in:
Justine Tunney 2024-02-25 14:57:28 -08:00
parent af8f2bd19f
commit 592f6ebc20
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
122 changed files with 6305 additions and 3859 deletions

View file

@ -1,15 +1,8 @@
#ifndef COSMOPOLITAN_LIBC_TINYMATH_SINCOSF_INTERNAL_H_
#define COSMOPOLITAN_LIBC_TINYMATH_SINCOSF_INTERNAL_H_
#include "libc/tinymath/internal.h"
#include "libc/tinymath/arm.internal.h"
COSMOPOLITAN_C_START_
/*
* Header for sinf, cosf and sincosf.
*
* Copyright (c) 2018-2021, Arm Limited.
* SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
*/
/* 2PI * 2^-64. */
static const double pi63 = 0x1.921FB54442D18p-62;
/* PI / 4. */
@ -26,10 +19,10 @@ typedef struct
} sincos_t;
/* Polynomial data (the cosine polynomial is negated in the 2nd entry). */
extern const sincos_t __sincosf_table[2] ;
extern const sincos_t __sincosf_table[2] HIDDEN;
/* Table with 4/PI to 192 bit precision. */
extern const uint32_t __inv_pio4[] ;
extern const uint32_t __inv_pio4[] HIDDEN;
/* Top 12 bits of the float representation with the sign bit cleared. */
static inline uint32_t