1 /* 2 * funder.c - manually provoke SP exceptions for mathlib 3 * 4 * Copyright (c) 2009-2018, Arm Limited. 5 * SPDX-License-Identifier: MIT 6 */ 7 8 #include <fenv.h> 9 #include "math_private.h" 10 __mathlib_flt_infnan2(float x,float y)11__inline float __mathlib_flt_infnan2(float x, float y) 12 { 13 return x+y; 14 } 15 __mathlib_flt_infnan(float x)16__inline float __mathlib_flt_infnan(float x) 17 { 18 return x+x; 19 } 20 __mathlib_flt_underflow(void)21float __mathlib_flt_underflow(void) 22 { 23 #ifdef CLANG_EXCEPTIONS 24 feraiseexcept(FE_UNDERFLOW); 25 #endif 26 return 0x1p-95F * 0x1p-95F; 27 } 28 __mathlib_flt_overflow(void)29float __mathlib_flt_overflow(void) 30 { 31 #ifdef CLANG_EXCEPTIONS 32 feraiseexcept(FE_OVERFLOW); 33 #endif 34 return 0x1p+97F * 0x1p+97F; 35 } 36 __mathlib_flt_invalid(void)37float __mathlib_flt_invalid(void) 38 { 39 #ifdef CLANG_EXCEPTIONS 40 feraiseexcept(FE_INVALID); 41 #endif 42 return 0.0f / 0.0f; 43 } 44 __mathlib_flt_divzero(void)45float __mathlib_flt_divzero(void) 46 { 47 #ifdef CLANG_EXCEPTIONS 48 feraiseexcept(FE_DIVBYZERO); 49 #endif 50 return 1.0f / 0.0f; 51 } 52