This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

__builtin_isnormal question


Is there a bug in __builtin_isnormal or am I just confused as to what it
means?  There doesn't seem to be any actual definition/documentation for
the function.  __builtin_isnormal(0.0) is returning false.  That seems
wrong to me, 0.0 is a normal (as opposed to a denormalized) number isn't
it?  Or is zero special?

Steve Ellcey
sellcey@cavium.com

#include <math.h>
#include <stdio.h>
#include <values.h>
int main()
{
	double x;
	x = 0.0;
	printf("%e %e %e\n", x, DBL_MIN, DBL_MAX);
        printf("normal is %s\n", __builtin_isnormal(x) ? "TRUE" : "FALSE");
	x = 1.0;
	printf("%e %e %e\n", x, DBL_MIN, DBL_MAX);
        printf("normal is %s\n", __builtin_isnormal(x) ? "TRUE" : "FALSE");
	return 0;
}

% gcc x.c -o x
% ./x
0.000000e+00 2.225074e-308 1.797693e+308
normal is FALSE
1.000000e+00 2.225074e-308 1.797693e+308
normal is TRUE


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]