1/* { dg-do run } */ 2/* { dg-options "-O2 -ffast-math" } */ 3 4extern float fabsf(float); 5extern float sqrtf(float); 6 7static __attribute__((noinline)) void f (float *dst, float *src) 8{ 9 int i, j; 10 for (i = 0; i < 2; i++) 11 { 12 float len; 13 dst[0] = src[0]; 14 dst[1] = src[1]; 15 len = sqrtf (dst[0] * dst[0] + dst[1] * dst[1]); 16 if (len > 0.5f) 17 { 18 len = 1.0f / len; 19 dst[0] *= len; 20 dst[1] *= len; 21 } 22 } 23} 24 25extern void abort (void); 26 27int main() 28{ 29 float dst[2], src[2]; 30 src[0] = 2.0f; 31 src[1] = 5.0f; 32 f (dst, src); 33 if (fabsf (dst[0] * dst[0] + dst[1] * dst[1] - 1.0f) > 0.01f) 34 abort (); 35 return 0; 36} 37