mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 14:30:06 +00:00
Optimized isnan for 64-bit machines.
This commit is contained in:
parent
deb13bcda9
commit
15e7f0a44d
@ -1,3 +1,7 @@
|
||||
2009-08-26 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c: New file.
|
||||
|
||||
2009-08-25 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c: Add llround aliases.
|
||||
|
39
sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
Normal file
39
sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
Normal file
@ -0,0 +1,39 @@
|
||||
/* @(#)s_isnan.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* isnan(x) returns 1 is x is nan, else 0;
|
||||
* no branching!
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
int __isnan(double x)
|
||||
#else
|
||||
int __isnan(x)
|
||||
double x;
|
||||
#endif
|
||||
{
|
||||
int64_t hx;
|
||||
EXTRACT_WORDS64(hx,x);
|
||||
hx &= UINT64_C(0x7fffffffffffffff);
|
||||
hx = UINT64_C(0x7ff0000000000000) - hx;
|
||||
return (int)(((uint64_t)hx)>>63);
|
||||
}
|
||||
hidden_def (__isnan)
|
||||
weak_alias (__isnan, isnan)
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__isnan, __isnanl)
|
||||
weak_alias (__isnan, isnanl)
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user