2222 defined(__NetBSD__ )
2323#include <ieeefp.h>
2424
25- int npy_get_floatstatus (void )
25+ int
26+ npy_get_floatstatus (void )
2627{
2728 int fpstatus = fpgetsticky ();
2829 return ((FP_X_DZ & fpstatus ) ? NPY_FPE_DIVIDEBYZERO : 0 ) |
@@ -31,30 +32,35 @@ int npy_get_floatstatus(void)
3132 ((FP_X_INV & fpstatus ) ? NPY_FPE_INVALID : 0 );
3233}
3334
34- int npy_clear_floatstatus (void )
35+ int
36+ npy_clear_floatstatus (void )
3537{
3638 int fpstatus = npy_get_floatstatus ();
3739 fpsetsticky (0 );
3840
3941 return fpstatus ;
4042}
4143
42- void npy_set_floatstatus_divbyzero (void )
44+ void
45+ npy_set_floatstatus_divbyzero (void )
4346{
4447 fpsetsticky (FP_X_DZ );
4548}
4649
47- void npy_set_floatstatus_overflow (void )
50+ void
51+ npy_set_floatstatus_overflow (void )
4852{
4953 fpsetsticky (FP_X_OFL );
5054}
5155
52- void npy_set_floatstatus_underflow (void )
56+ void
57+ npy_set_floatstatus_underflow (void )
5358{
5459 fpsetsticky (FP_X_UFL );
5560}
5661
57- void npy_set_floatstatus_invalid (void )
62+ void
63+ npy_set_floatstatus_invalid (void )
5864{
5965 fpsetsticky (FP_X_INV );
6066}
@@ -71,7 +77,8 @@ void npy_set_floatstatus_invalid(void)
7177# include "numpy/fenv/fenv.h"
7278# endif
7379
74- int npy_get_floatstatus (void )
80+ int
81+ npy_get_floatstatus (void )
7582{
7683 int fpstatus = fetestexcept (FE_DIVBYZERO | FE_OVERFLOW |
7784 FE_UNDERFLOW | FE_INVALID );
@@ -82,7 +89,8 @@ int npy_get_floatstatus(void)
8289 ((FE_INVALID & fpstatus ) ? NPY_FPE_INVALID : 0 );
8390}
8491
85- int npy_clear_floatstatus (void )
92+ int
93+ npy_clear_floatstatus (void )
8694{
8795 /* testing float status is 50-100 times faster than clearing on x86 */
8896 int fpstatus = npy_get_floatstatus ();
@@ -95,22 +103,26 @@ int npy_clear_floatstatus(void)
95103}
96104
97105
98- void npy_set_floatstatus_divbyzero (void )
106+ void
107+ npy_set_floatstatus_divbyzero (void )
99108{
100109 feraiseexcept (FE_DIVBYZERO );
101110}
102111
103- void npy_set_floatstatus_overflow (void )
112+ void
113+ npy_set_floatstatus_overflow (void )
104114{
105115 feraiseexcept (FE_OVERFLOW );
106116}
107117
108- void npy_set_floatstatus_underflow (void )
118+ void
119+ npy_set_floatstatus_underflow (void )
109120{
110121 feraiseexcept (FE_UNDERFLOW );
111122}
112123
113- void npy_set_floatstatus_invalid (void )
124+ void
125+ npy_set_floatstatus_invalid (void )
114126{
115127 feraiseexcept (FE_INVALID );
116128}
@@ -119,7 +131,8 @@ void npy_set_floatstatus_invalid(void)
119131#include <float.h>
120132#include <fpxcp.h>
121133
122- int npy_get_floatstatus (void )
134+ int
135+ npy_get_floatstatus (void )
123136{
124137 int fpstatus = fp_read_flag ();
125138 return ((FP_DIV_BY_ZERO & fpstatus ) ? NPY_FPE_DIVIDEBYZERO : 0 ) |
@@ -128,25 +141,29 @@ int npy_get_floatstatus(void)
128141 ((FP_INVALID & fpstatus ) ? NPY_FPE_INVALID : 0 );
129142}
130143
131- int npy_clear_floatstatus (void )
144+ int
145+ npy_clear_floatstatus (void )
132146{
133147 int fpstatus = npy_get_floatstatus ();
134148 fp_swap_flag (0 );
135149
136150 return fpstatus ;
137151}
138152
139- void npy_set_floatstatus_divbyzero (void )
153+ void
154+ npy_set_floatstatus_divbyzero (void )
140155{
141156 fp_raise_xcp (FP_DIV_BY_ZERO );
142157}
143158
144- void npy_set_floatstatus_overflow (void )
159+ void
160+ npy_set_floatstatus_overflow (void )
145161{
146162 fp_raise_xcp (FP_OVERFLOW );
147163}
148164
149- void npy_set_floatstatus_underflow (void )
165+ void
166+ npy_set_floatstatus_underflow (void )
150167{
151168 fp_raise_xcp (FP_UNDERFLOW );
152169}
@@ -164,7 +181,8 @@ void npy_set_floatstatus_invalid(void)
164181#include <float.h>
165182
166183
167- int npy_get_floatstatus (void )
184+ int
185+ npy_get_floatstatus (void )
168186{
169187#if defined(_WIN64 )
170188 int fpstatus = _statusfp ();
@@ -180,7 +198,8 @@ int npy_get_floatstatus(void)
180198 ((SW_INVALID & fpstatus ) ? NPY_FPE_INVALID : 0 );
181199}
182200
183- int npy_clear_floatstatus (void )
201+ int
202+ npy_clear_floatstatus (void )
184203{
185204 int fpstatus = npy_get_floatstatus ();
186205 _clearfp ();
@@ -193,16 +212,19 @@ int npy_clear_floatstatus(void)
193212
194213#include <machine/fpu.h>
195214
196- int npy_get_floatstatus (void )
215+ int
216+ npy_get_floatstatus (void )
197217{
198218 unsigned long fpstatus = ieee_get_fp_control ();
219+
199220 return ((IEEE_STATUS_DZE & fpstatus ) ? NPY_FPE_DIVIDEBYZERO : 0 ) |
200221 ((IEEE_STATUS_OVF & fpstatus ) ? NPY_FPE_OVERFLOW : 0 ) |
201222 ((IEEE_STATUS_UNF & fpstatus ) ? NPY_FPE_UNDERFLOW : 0 ) |
202223 ((IEEE_STATUS_INV & fpstatus ) ? NPY_FPE_INVALID : 0 );
203224}
204225
205- int npy_clear_floatstatus (void )
226+ int
227+ npy_clear_floatstatus (void )
206228{
207229 long fpstatus = npy_get_floatstatus ();
208230 /* clear status bits as well as disable exception mode if on */
@@ -213,12 +235,14 @@ int npy_clear_floatstatus(void)
213235
214236#else
215237
216- int npy_get_floatstatus (void )
238+ int
239+ npy_get_floatstatus (void )
217240{
218241 return 0 ;
219242}
220243
221- int npy_clear_floatstatus (void )
244+ int
245+ npy_clear_floatstatus (void )
222246{
223247 return 0 ;
224248}
@@ -234,26 +258,32 @@ int npy_clear_floatstatus(void)
234258 * global here, because that would cause
235259 * a race condition.
236260 */
237- static volatile double _npy_floatstatus_x ,
238- _npy_floatstatus_zero = 0.0 , _npy_floatstatus_big = 1e300 ,
239- _npy_floatstatus_small = 1e-300 , _npy_floatstatus_inf ;
240-
241- void npy_set_floatstatus_divbyzero (void )
261+ static volatile double _npy_floatstatus_x ;
262+ static volatile double _npy_floatstatus_zero = 0.0 ;
263+ static volatile double _npy_floatstatus_big = 1e300 ;
264+ static volatile double _npy_floatstatus_small = 1e-300 ;
265+ static volatile double _npy_floatstatus_inf ;
266+
267+ void
268+ npy_set_floatstatus_divbyzero (void )
242269{
243270 _npy_floatstatus_x = 1.0 / _npy_floatstatus_zero ;
244271}
245272
246- void npy_set_floatstatus_overflow (void )
273+ void
274+ npy_set_floatstatus_overflow (void )
247275{
248276 _npy_floatstatus_x = _npy_floatstatus_big * 1e300 ;
249277}
250278
251- void npy_set_floatstatus_underflow (void )
279+ void
280+ npy_set_floatstatus_underflow (void )
252281{
253282 _npy_floatstatus_x = _npy_floatstatus_small * 1e-300 ;
254283}
255284
256- void npy_set_floatstatus_invalid (void )
285+ void
286+ npy_set_floatstatus_invalid (void )
257287{
258288 _npy_floatstatus_inf = NPY_INFINITY ;
259289 _npy_floatstatus_x = _npy_floatstatus_inf - NPY_INFINITY ;
0 commit comments