| /* { dg-require-effective-target int32plus } */ |
| typedef signed int __int32_t; |
| typedef unsigned int __uint32_t; |
| typedef union |
| { |
| float value; |
| __uint32_t word; |
| } |
| ieee_float_shape_type; |
| static const float two23 = 8.3886080000e+06; |
| static const float pi = 3.1415927410e+00; |
| static const float zero = 0.0000000000e+00; |
| static float |
| sin_pif (float x) |
| { |
| float y = 0; |
| float z = 0; |
| __int32_t n = 0; |
| __int32_t ix = 0; |
| do |
| { |
| ieee_float_shape_type gf_u = { 0 }; |
| (ix) = gf_u.word; |
| } |
| while (0); |
| if (z == y) |
| { |
| if (ix < 0x4b800000) |
| { |
| if (ix < 0x4b000000) |
| z = y + two23; |
| do |
| { |
| ieee_float_shape_type gf_u; |
| gf_u.value = (z); |
| (n) = gf_u.word; |
| } |
| while (0); |
| } |
| } |
| if (n == 0) |
| y = __kernel_sinf (pi * y, zero, 0); |
| } |
| |
| float |
| __ieee754_lgammaf_r (float x, int *signgamp) |
| { |
| float t = 0; |
| __int32_t hx = 0; |
| do |
| { |
| ieee_float_shape_type gf_u = { 0 }; |
| (hx) = gf_u.word; |
| } |
| while (0); |
| if (hx < 0) |
| t = sin_pif (x); |
| return 0; |
| } |