Hello Martin, 2016-08-18 15:31 GMT+02:00 Martin Storsjö <[email protected]>: > --- > The (l)rint(f) functions call an inline assembly snippet to > do the rounding - that does seem to round in the right way, but I'm > not sure if that relies on the fpscr being set in the right mode? > --- > mingw-w64-crt/math/llrint.c | 2 +- > mingw-w64-crt/math/llrintf.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mingw-w64-crt/math/llrint.c b/mingw-w64-crt/math/llrint.c > index 1fc11e8..d52fd15 100644 > --- a/mingw-w64-crt/math/llrint.c > +++ b/mingw-w64-crt/math/llrint.c > @@ -11,7 +11,7 @@ long long llrint (double x) > #if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || > defined(__i386__) > __asm__ __volatile__ ("fistpll %0" : "=m" (retval) : "t" (x) : "st"); > #else > - retval = (long long)x; > + retval = x >= 0 ? (long long)floor(x + 0.5) : (long long)ceil(x - 0.5); > #endif > return retval; > } > diff --git a/mingw-w64-crt/math/llrintf.c b/mingw-w64-crt/math/llrintf.c > index aabd81f..cb2b668 100644 > --- a/mingw-w64-crt/math/llrintf.c > +++ b/mingw-w64-crt/math/llrintf.c > @@ -11,7 +11,7 @@ long long llrintf (float x) > #if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || > defined(__i386__) > __asm__ __volatile__ ("fistpll %0" : "=m" (retval) : "t" (x) : "st"); > #else > - retval = (long long)x; > + retval = x >= 0 ? (long long)floorf(x + 0.5) : (long long)ceilf(x - 0.5); > #endif > return retval; > } > -- > 2.7.4
There is no other way to have here rounding, right? If so patch is ok. Kai ------------------------------------------------------------------------------ _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
