fix f64 tcc eq crash

pull/2347/head
Alexander Medvednikov 2019-10-13 04:27:57 +03:00
parent ae3ec380f8
commit 91690a1b54
1 changed files with 15 additions and 7 deletions

View File

@ -28,18 +28,26 @@ pub fn ptr_str(ptr voidptr) string {
// compare floats using C epsilon // compare floats using C epsilon
// == // ==
pub fn (a f64) eq(b f64) bool { pub fn (a f64) eq(b f64) bool {
$if tinyc { $if windows {
return a -b <= 0.01 $if tinyc {
return a -b <= 0.01
} $else {
return C.fabs(a - b) <= C.DBL_EPSILON
}
} $else { } $else {
return C.fabs(a - b) <= C.DBL_EPSILON return C.fabs(a - b) <= C.DBL_EPSILON
} }
} }
pub fn (a f32) eq(b f32) bool { pub fn (a f32) eq(b f32) bool {
$if tinyc { $if windows {
return a -b <= 0.01 $if tinyc {
return a -b <= 0.01
} $else {
return C.fabs(a - b) <= C.DBL_EPSILON
}
} $else { } $else {
return C.fabsf(a - b) <= C.FLT_EPSILON return C.fabs(a - b) <= C.DBL_EPSILON
} }
} }
pub fn (a f64) eqbit(b f64) bool { pub fn (a f64) eqbit(b f64) bool {
return C.DEFAULT_EQUAL(a, b) return C.DEFAULT_EQUAL(a, b)