missed one error with clang

This commit is contained in:
Nikita Edel 2026-03-11 19:41:31 +01:00
parent b47ee34a61
commit c0198bb8a7
2 changed files with 18 additions and 5 deletions

View file

@ -36,7 +36,20 @@ double Math::random()
//the value of the argument rounded to the nearest long value. //the value of the argument rounded to the nearest long value.
__int64 Math::round( double d ) __int64 Math::round( double d )
{ {
return (__int64)floor( d + 0.5 ); // 4jcraft fixes the fact that if double is a huge
// number than the cast of d to int64_t overflows
d = floor( d + 0.5 );
// if smaller or bigger than representable int64 than return the max
if(d >= (double)INT64_MAX) {
return INT64_MAX;
} else if (d <= (double)INT64_MIN) {
return INT64_MIN;
}
return (int64_t) d;
} }
int Math::_max(int a, int b) int Math::_max(int a, int b)

View file

@ -25,13 +25,13 @@ void Mth::init()
float Mth::sin(float i) float Mth::sin(float i)
{ {
if(_sin == NULL) init(); // 4J - added if(_sin == NULL) init(); // 4J - added
return _sin[(int) (i * sinScale) & 65535]; return _sin[(int)fmodf(i * sinScale, 65536.0f) & 65535];
} }
float Mth::cos(float i) float Mth::cos(float i)
{ {
if(_sin == NULL) init(); // 4J - added if(_sin == NULL) init(); // 4J - added
return _sin[(int) (i * sinScale + 65536 / 4) & 65535]; return _sin[(int)fmodf(i * sinScale + 16384.0f, 65536.0f) & 65535];
} }
float Mth::sqrt(float x) float Mth::sqrt(float x)