Implement more @export / @private improvements. Make @private default… (#729)

This commit is contained in:
Christoffer Lerno
2023-02-13 08:31:40 +01:00
committed by GitHub
parent 3b49b87784
commit 5e457be605
88 changed files with 697 additions and 624 deletions

View File

@@ -19,10 +19,10 @@ $if (!env::COMPILER_LIBC_AVAILABLE):
*/
/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
private const double C0 = -0x1ffffffd0c5e81.0p-54; /* -0.499999997251031003120 */
private const double C1 = 0x155553e1053a42.0p-57; /* 0.0416666233237390631894 */
private const double C2 = -0x16c087e80f1e27.0p-62; /* -0.00138867637746099294692 */
private const double C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */
const double C0 @private = -0x1ffffffd0c5e81.0p-54; /* -0.499999997251031003120 */
const double C1 @private = 0x155553e1053a42.0p-57; /* 0.0416666233237390631894 */
const double C2 @private = -0x16c087e80f1e27.0p-62; /* -0.00138867637746099294692 */
const double C3 @private = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */
fn float __cosdf(double x) @extern("__cosdf") @weak
{

View File

@@ -2,21 +2,21 @@ module std::math::nolibc::atan;
$if (!env::COMPILER_LIBC_AVAILABLE):
private const double[*] ATANHI = {
const double[*] ATANHI @private = {
4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
};
private const double[*] ATANLO = {
const double[*] ATANLO @private = {
2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */
3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */
1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */
6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */
};
private const double[*] AT = {
const double[*] AT @private = {
3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */
-1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */
1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */
@@ -91,21 +91,21 @@ fn double _atan(double x) @weak @extern("atan")
return sign ? -z : z;
}
private const float[*] ATANHIF = {
const float[*] ATANHIF @private = {
4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
};
private const float[*] ATANLOF = {
const float[*] ATANLOF @private = {
5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
};
private const float[*] ATF = {
const float[*] ATF @private = {
3.3333328366e-01,
-1.9999158382e-01,
1.4253635705e-01,
@@ -177,9 +177,9 @@ fn float _atanf(float x) @weak @extern("atanf")
return sign ? -z : z;
}
private const PI_LO = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
const PI_LO @private = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
private macro void extract_words(double d, uint* hi, uint* lo)
macro void extract_words(double d, uint* hi, uint* lo) @private
{
ulong rep = bitcast(d, ulong);
*hi = (uint)(rep >> 32);
@@ -254,8 +254,8 @@ fn double _atan2(double y, double x) @weak @extern("atan2")
}
}
private const float PI_F = 3.1415927410e+00; /* 0x40490fdb */
private const float PI_LO_F = -8.7422776573e-08; /* 0xb3bbbd2e */
const float PI_F @private = 3.1415927410e+00; /* 0x40490fdb */
const float PI_LO_F @private = -8.7422776573e-08; /* 0xb3bbbd2e */
fn float _atan2f(float y, float x) @weak @extern("atan2f")
{

View File

@@ -2,7 +2,7 @@ module std::math::nolibc;
$if (!env::COMPILER_LIBC_AVAILABLE):
private macro uint _top12f(float x) => bitcast(x, uint) >> 20;
macro uint _top12f(float x) @private => bitcast(x, uint) >> 20;
fn float _exp2f(float x) @extern("exp2f") @weak
@@ -44,7 +44,7 @@ fn float _exp2f(float x) @extern("exp2f") @weak
return (float)y;
}
private fn double _exp2_specialcase(double tmp, ulong sbits, ulong ki)
fn double _exp2_specialcase(double tmp, ulong sbits, ulong ki) @private
{
if (ki & 0x80000000 == 0)
{
@@ -77,7 +77,7 @@ private fn double _exp2_specialcase(double tmp, ulong sbits, ulong ki)
}
private macro uint _top12d(double x)
macro uint _top12d(double x) @private
{
return (uint)(bitcast(x, ulong) >> 52);
}

View File

@@ -3,15 +3,15 @@ module std::math::nolibc;
const double TOINT = 1 / math::DOUBLE_EPSILON;
const double TOINT15 = 1.5 / math::DOUBLE_EPSILON;
const float TOINTF = (float)(1 / math::FLOAT_EPSILON);
private const double S1PI2 = math::PI_2; /* 0x3FF921FB, 0x54442D18 */
private const double S2PI2 = math::PI; /* 0x400921FB, 0x54442D18 */
private const double S3PI2 = math::PI + math::PI_2; /* 0x4012D97C, 0x7F3321D2 */
private const double S4PI2 = math::PI + math::PI; /* 0x401921FB, 0x54442D18 */
const double S1PI2 @private = math::PI_2; /* 0x3FF921FB, 0x54442D18 */
const double S2PI2 @private = math::PI; /* 0x400921FB, 0x54442D18 */
const double S3PI2 @private = math::PI + math::PI_2; /* 0x4012D97C, 0x7F3321D2 */
const double S4PI2 @private = math::PI + math::PI; /* 0x401921FB, 0x54442D18 */
// Shared between expf, exp2f and powf.
private const EXP2F_TABLE_BITS = 5;
private const EXP2F_POLY_ORDER = 3;
private struct Exp2fData
const EXP2F_TABLE_BITS @private = 5;
const EXP2F_POLY_ORDER @private = 3;
struct Exp2fData @private
{
ulong[1 << EXP2F_TABLE_BITS] tab;
double shift_scaled;
@@ -21,7 +21,7 @@ private struct Exp2fData
double[EXP2F_POLY_ORDER] poly_scaled;
}
private const Exp2fData __EXP2F_DATA = {
const Exp2fData __EXP2F_DATA @private = {
.tab = {
0x3ff0000000000000, 0x3fefd9b0d3158574, 0x3fefb5586cf9890f, 0x3fef9301d0125b51,
0x3fef72b83c7d517b, 0x3fef54873168b9aa, 0x3fef387a6e756238, 0x3fef1e9df51fdee1,
@@ -49,7 +49,7 @@ const EXP_TABLE_BITS = 7;
const EXP_POLY_ORDER = 5;
const EXP2_POLY_ORDER = 5;
const EXP_DATA_WIDTH = 1 << EXP_TABLE_BITS;
private struct Exp2Data
struct Exp2Data @private
{
double invln2N;
double shift;