Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/*
2
 * ====================================================
3
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
4
 *
5
 * Developed at SunPro, a Sun Microsystems, Inc. business.
6
 * Permission to use, copy, modify, and distribute this
7
 * software is freely granted, provided that this notice
8
 * is preserved.
9
 * ====================================================
10
 */
11
 
12
/*
13
FUNCTION
14
	<>, <>, <>, <>, <>, <>---test for exceptional numbers
15
 
16
INDEX
17
	isnan
18
INDEX
19
	isinf
20
INDEX
21
	finite
22
 
23
INDEX
24
	isnanf
25
INDEX
26
	isinff
27
INDEX
28
	finitef
29
 
30
ANSI_SYNOPSIS
31
	#include 
32
	int isnan(double <[arg]>);
33
	int isinf(double <[arg]>);
34
	int finite(double <[arg]>);
35
	int isnanf(float <[arg]>);
36
	int isinff(float <[arg]>);
37
	int finitef(float <[arg]>);
38
 
39
TRAD_SYNOPSIS
40
	#include 
41
	int isnan(<[arg]>)
42
	double <[arg]>;
43
	int isinf(<[arg]>)
44
	double <[arg]>;
45
	int finite(<[arg]>);
46
	double <[arg]>;
47
	int isnanf(<[arg]>);
48
	float <[arg]>;
49
	int isinff(<[arg]>);
50
	float <[arg]>;
51
	int finitef(<[arg]>);
52
	float <[arg]>;
53
 
54
 
55
DESCRIPTION
56
	These functions provide information on the floating-point
57
	argument supplied.
58
 
59
	There are five major number formats:
60
	o+
61
	o zero
62
	  A number which contains all zero bits.
63
	o subnormal
64
	  A number with a zero exponent but a nonzero fraction.
65
	o normal
66
	  A number with an exponent and a fraction.
67
     	o infinity
68
	  A number with an all 1's exponent and a zero fraction.
69
	o NAN
70
	  A number with an all 1's exponent and a nonzero fraction.
71
 
72
	o-
73
 
74
	<> returns 1 if the argument is a nan. <>
75
	returns 1 if the argument is infinity.  <> returns 1 if the
76
	argument is zero, subnormal or normal.
77
 
78
	Note that by the C99 standard, <> and <> are macros
79
	taking any type of floating-point and are declared in
80
	<>.  Newlib has chosen to declare these as macros in
81
	<> and as functions in <>.
82
 
83
	The <>, <> and <> functions perform the same
84
	operations as their <>, <> and <>
85
	counterparts, but on single-precision floating-point numbers.
86
 
87
QUICKREF
88
	isnan - pure
89
QUICKREF
90
	isinf - pure
91
QUICKREF
92
	finite - pure
93
QUICKREF
94
	isnan - pure
95
QUICKREF
96
	isinf - pure
97
QUICKREF
98
	finite - pure
99
*/
100
 
101
/*
102
 * __isnand(x) returns 1 is x is nan, else 0;
103
 * no branching!
104
 */
105
 
106
#include "fdlibm.h"
107
 
108
#ifndef _DOUBLE_IS_32BITS
109
 
110
int
111
_DEFUN (__isnand, (x),
112
	double x)
113
{
114
	__int32_t hx,lx;
115
	EXTRACT_WORDS(hx,lx,x);
116
	hx &= 0x7fffffff;
117
	hx |= (__uint32_t)(lx|(-lx))>>31;
118
	hx = 0x7ff00000 - hx;
119
	return (int)(((__uint32_t)(hx))>>31);
120
}
121
 
122
#endif /* _DOUBLE_IS_32BITS */