this repo has no description
1/*
2 * xmm_misc.c
3 * xmmLibm
4 *
5 * Created by Ian Ollmann on 8/18/05.
6 * Copyright 2005 Apple Computer. All rights reserved.
7 *
8 */
9
10#include "xmmLibm_prefix.h"
11#include "math.h"
12
13#if defined(BUILDING_FOR_CARBONCORE_LEGACY)
14
15double __inf ( void )
16{
17 return __builtin_inf();
18}
19
20#else /* BUILDING_FOR_CARBONCORE_LEGACY */
21
22/******************************************************************************
23* No other functions are called by these routines outside of fpmacros.c. *
24******************************************************************************/
25
26int __math_errhandling ( void )
27{
28 return (MATH_ERREXCEPT); // return the bitmask indicating the error discipline(s) in use.
29}
30
31int __isfinited( double x )
32{
33 return __inline_isfinited(x);
34}
35
36int __isfinitef( float x )
37{
38 return __inline_isfinitef(x);
39}
40
41int __isfinite( long double x )
42{
43 return __inline_isfinite(x);
44}
45
46//legacy
47int finite( double x )
48{
49 return __isfinited( x );
50}
51
52int __isinfd( double x )
53{
54 return __inline_isinfd(x);
55}
56
57int __isinff( float x )
58{
59 return __inline_isinff(x);
60}
61
62int __isinf( long double x )
63{
64 return __inline_isinf(x);
65}
66
67int __isnand( double x )
68{
69 return __inline_isnand(x);
70}
71
72int __isnanf( float x )
73{
74 return __inline_isnanf(x);
75}
76
77int __isnan( long double x )
78{
79 return __inline_isnan(x);
80}
81
82int __isnormald( double x )
83{
84 return __inline_isnormald( x );
85}
86
87int __isnormalf( float x )
88{
89 return __inline_isnormalf( x );
90}
91
92int __isnormal( long double x )
93{
94 return __inline_isnormal( x );
95}
96
97int __signbitd( double x )
98{
99 return __inline_signbitd(x);
100}
101
102int __signbitf( float x )
103{
104 return __inline_signbitf(x);
105}
106
107int __signbitl( long double x )
108{
109 return __inline_signbit(x);
110}
111
112int __fpclassifyd( double x )
113{
114 x = __builtin_fabs(x);
115 if( EXPECT_FALSE( x == 0.0 ) )
116 return FP_ZERO;
117
118 if( EXPECT_FALSE( x < 0x1.0p-1022 ) )
119 return FP_SUBNORMAL;
120
121 if( EXPECT_TRUE( x < __builtin_inf() ) )
122 return FP_NORMAL;
123
124 if( EXPECT_TRUE( x == __builtin_inf() ) )
125 return FP_INFINITE;
126
127 return FP_NAN;
128}
129
130int __fpclassifyf( float x )
131{
132 x = __builtin_fabsf(x);
133 if( EXPECT_FALSE( x == 0.0f ) )
134 return FP_ZERO;
135
136 if( EXPECT_FALSE( x < 0x1.0p-126f ) )
137 return FP_SUBNORMAL;
138
139 if( EXPECT_TRUE( x < __builtin_inff() ) )
140 return FP_NORMAL;
141
142 if( EXPECT_TRUE( x == __builtin_inff() ) )
143 return FP_INFINITE;
144
145 return FP_NAN;
146}
147
148int __fpclassify( long double x )
149{
150 x = __builtin_fabsl(x);
151 if( EXPECT_FALSE( x == 0.0L ) )
152 return FP_ZERO;
153
154 if( EXPECT_FALSE( x < 0x1.0p-16382L ) )
155 return FP_SUBNORMAL;
156
157 if( EXPECT_TRUE( x < __builtin_infl() ) )
158 return FP_NORMAL;
159
160 if( EXPECT_TRUE( x == __builtin_infl() ) )
161 return FP_INFINITE;
162
163 return FP_NAN;
164}
165
166float __inff( void )
167{
168 return __builtin_inff();
169}
170
171long double __infl( void )
172{
173 return __builtin_infl();
174}
175
176float __nan( void )
177{
178 return __builtin_nanf("");
179}
180
181
182
183
184#endif /* BUILDING_FOR_CARBONCORE_LEGACY */
185