* mingwex/math/ldexpl.c (ldexpl): Call __asm__("fscale")
directly, rather than via scabnl.
This commit is contained in:
parent
416bc45060
commit
f6565cd1a6
|
@ -1,3 +1,8 @@
|
||||||
|
2004-02-01 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
|
* mingwex/math/ldexpl.c (ldexpl): Call __asm__("fscale")
|
||||||
|
directly, rather than via scabnl.
|
||||||
|
|
||||||
2004-02-01 Danny Smith <dannysmith@users.sourceforge.net>
|
2004-02-01 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
* mingwex/math/powl.c (powl): Return infinity if
|
* mingwex/math/powl.c (powl): Return infinity if
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
long double ldexpl(long double x, int expn)
|
long double ldexpl(long double x, int expn)
|
||||||
{
|
{
|
||||||
if (isfinite (x) && x != 0.0L)
|
long double res;
|
||||||
{
|
if (!isfinite (x) || x == 0.0L)
|
||||||
x = scalbnl (x , expn);
|
return x;
|
||||||
if (!isfinite (x) || x == 0.0) errno = ERANGE;
|
|
||||||
}
|
__asm__ ("fscale"
|
||||||
return x;
|
: "=t" (res)
|
||||||
|
: "0" (x), "u" ((long double) expn));
|
||||||
|
|
||||||
|
if (!isfinite (res) || res == 0.0L)
|
||||||
|
errno = ERANGE;
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue