Root/
Source at commit 1146 created 12 years 11 months ago. By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing). | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2002 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * The contents of this file constitute Original Code as defined in and␊ |
7 | * are subject to the Apple Public Source License Version 1.1 (the␊ |
8 | * "License"). You may not use this file except in compliance with the␊ |
9 | * License. Please obtain a copy of the License at␊ |
10 | * http://www.apple.com/publicsource and read it before using this file.␊ |
11 | * ␊ |
12 | * This Original Code and all software distributed under the License are␊ |
13 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
14 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
15 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
16 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the␊ |
17 | * License for the specific language governing rights and limitations␊ |
18 | * under the License.␊ |
19 | * ␊ |
20 | * @APPLE_LICENSE_HEADER_END@␊ |
21 | */␊ |
22 | ␊ |
23 | /*******************************************************************************␊ |
24 | * *␊ |
25 | * File: fenv.h␉ *␊ |
26 | * *␊ |
27 | * Contains: typedefs and prototypes for C99 floating point environment. *␊ |
28 | * *␊ |
29 | *******************************************************************************/␊ |
30 | ␊ |
31 | #ifndef __FENV__␊ |
32 | #define __FENV__␊ |
33 | ␊ |
34 | #if defined( __i386__ ) || defined( __x86_64__ )␊ |
35 | #error Wrong arch. This is PowerPC only.␊ |
36 | #endif␊ |
37 | ␊ |
38 | #if defined(__GNUC__) && (__GNUC__ >= 4) ␊ |
39 | #pragma GCC fenv␊ |
40 | #endif␊ |
41 | ␊ |
42 | #ifdef __cplusplus␊ |
43 | extern "C" {␊ |
44 | #endif␊ |
45 | ␊ |
46 | /*␊ |
47 | A collection of functions designed to provide access to the floating␊ |
48 | point environment for numerical programming. It is modeled after␊ |
49 | the floating-point requirements in C9X.␊ |
50 | ␊ |
51 | The file <fenv.h> declares many functions in support of numerical␊ |
52 | programming. Programs that test flags or run under␊ |
53 | non-default modes must do so under the effect of an enabling␊ |
54 | "fenv_access" pragma.␊ |
55 | */␊ |
56 | ␊ |
57 | /********************************************************************************␊ |
58 | * *␊ |
59 | * fenv_t is a type for representing the entire floating-point *␊ |
60 | * environment in a single object. *␊ |
61 | * *␊ |
62 | * fexcept_t is a type for representing the floating-point *␊ |
63 | * exception flag state collectively. *␊ |
64 | * *␊ |
65 | ********************************************************************************/␊ |
66 | typedef unsigned int␉␉␉fenv_t;␊ |
67 | typedef unsigned int␉␉␉fexcept_t;␊ |
68 | ␊ |
69 | /* Definitions of floating-point exception macros */␊ |
70 | #define FE_INEXACT 0x02000000␊ |
71 | #define FE_DIVBYZERO 0x04000000␊ |
72 | #define FE_UNDERFLOW 0x08000000␊ |
73 | #define FE_OVERFLOW 0x10000000␊ |
74 | #define FE_INVALID 0x20000000␊ |
75 | #define FE_ALL_EXCEPT 0x3E000000␊ |
76 | ␊ |
77 | /* Definitions of rounding direction macros */␊ |
78 | #define FE_TONEAREST 0x00000000␊ |
79 | #define FE_TOWARDZERO 0x00000001␊ |
80 | #define FE_UPWARD 0x00000002␊ |
81 | #define FE_DOWNWARD 0x00000003␊ |
82 | ␊ |
83 | /* default environment object */␊ |
84 | extern const fenv_t _FE_DFL_ENV;␊ |
85 | #define FE_DFL_ENV &_FE_DFL_ENV /* pointer to default environment */␊ |
86 | ␊ |
87 | /*******************************************************************************␊ |
88 | * The following functions provide access to the exception flags. The *␊ |
89 | * "int" input argument can be constructed by bitwise ORs of the exception *␊ |
90 | * macros: for example: FE_OVERFLOW | FE_INEXACT. *␊ |
91 | *******************************************************************************/␊ |
92 | ␊ |
93 | /*******************************************************************************␊ |
94 | * The function "feclearexcept" clears the supported exceptions represented *␊ |
95 | * by its argument. *␊ |
96 | *******************************************************************************/␊ |
97 | ␊ |
98 | extern int feclearexcept(int);␊ |
99 | ␊ |
100 | ␊ |
101 | /*******************************************************************************␊ |
102 | * The function "fegetexceptflag" stores a representation of the exception *␊ |
103 | * flags indicated by its integer argument through the fexcept_t pointer *␊ |
104 | * argument. *␊ |
105 | *******************************************************************************/␊ |
106 | ␊ |
107 | extern int fegetexceptflag(fexcept_t *, int);␊ |
108 | ␊ |
109 | ␊ |
110 | /*******************************************************************************␊ |
111 | * The function "feraiseexcept" raises the supported exceptions *␊ |
112 | * represented by its argument. *␊ |
113 | *******************************************************************************/␊ |
114 | ␊ |
115 | extern int feraiseexcept(int);␊ |
116 | ␊ |
117 | ␊ |
118 | /*******************************************************************************␊ |
119 | * The function "fesetexceptflag" sets or clears the exception flags indicated *␊ |
120 | * by the its integer argument according to the representation in the *␊ |
121 | * object pointed to by the fexcept_t pointer argument. The value of the *␊ |
122 | * object must have been set by a previous call to "fegetexceptflag". *␊ |
123 | * This function does not raise exceptions; it just sets the state of *␊ |
124 | * the flags. *␊ |
125 | *******************************************************************************/␊ |
126 | ␊ |
127 | extern int fesetexceptflag(const fexcept_t *, int);␊ |
128 | ␊ |
129 | ␊ |
130 | /*******************************************************************************␊ |
131 | * The function "fetestexcept" determines which of the specified subset of *␊ |
132 | * the exception flags are currently set. The integer argument specifies *␊ |
133 | * the exception flags to be queried as a bitwise OR of the exception *␊ |
134 | * macros. This function returns the bitwise OR of the exception macros *␊ |
135 | * corresponding to the currently set exceptions included in "excepts". *␊ |
136 | *******************************************************************************/␊ |
137 | ␊ |
138 | extern int fetestexcept(int);␊ |
139 | ␊ |
140 | ␊ |
141 | /*******************************************************************************␊ |
142 | * The following functions provide control of rounding direction modes. *␊ |
143 | *******************************************************************************/␊ |
144 | ␊ |
145 | /*******************************************************************************␊ |
146 | * The function "fegetround" returns the value of the rounding direction *␊ |
147 | * macro which represents the current rounding direction. *␊ |
148 | *******************************************************************************/␊ |
149 | ␊ |
150 | extern int fegetround(void);␊ |
151 | ␊ |
152 | ␊ |
153 | /*******************************************************************************␊ |
154 | * The function "fesetround" establishes the rounding direction represented *␊ |
155 | * by its argument. It returns zero if and only if the argument matches *␊ |
156 | * a rounding direction macro. If not, the rounding direction is not *␊ |
157 | * changed. *␊ |
158 | *******************************************************************************/␊ |
159 | ␊ |
160 | extern int fesetround(int);␊ |
161 | ␊ |
162 | ␊ |
163 | /*******************************************************************************␊ |
164 | * The following functions manage the floating-point environment, exception *␊ |
165 | * flags and dynamic modes, as one entity. *␊ |
166 | *******************************************************************************/␊ |
167 | ␊ |
168 | extern int fegetenv(fenv_t *);␊ |
169 | extern int feholdexcept(fenv_t *);␊ |
170 | extern int fesetenv(const fenv_t *);␊ |
171 | extern int feupdateenv(const fenv_t *);␊ |
172 | ␊ |
173 | ␊ |
174 | #ifdef __cplusplus␊ |
175 | }␊ |
176 | #endif␊ |
177 | ␊ |
178 | #endif /* __FENV__ */␊ |
179 | ␊ |
180 |