mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Implement more @export / @private improvements. Make @private default… (#729)
This commit is contained in:
committed by
GitHub
parent
3b49b87784
commit
5e457be605
@@ -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
|
||||
{
|
||||
|
||||
@@ -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")
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user