| /* { dg-do compile } */ |
| /* |
| * ==================================================== |
| * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. |
| * |
| * Developed at SunPro, a Sun Microsystems, Inc. business. |
| * Permission to use, copy, modify, and distribute this |
| * software is freely granted, provided that this notice |
| * is preserved. |
| * ==================================================== |
| */ |
| typedef union |
| { |
| double value; |
| struct |
| { |
| unsigned int msw; |
| } parts; |
| } ieee_double_shape_type; |
| double __ieee754_hypot(double x, double y) |
| { |
| double a=x,b=y,t1,t2,y1,y2,w; |
| int j,k,ha,hb; |
| do { ieee_double_shape_type gh_u; gh_u.value = (x); (ha) = gh_u.parts.msw; } while (0);; |
| if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;} |
| if(ha > 0x5f300000) { |
| do { ieee_double_shape_type sh_u; sh_u.value = (a); sh_u.parts.msw = (ha); (a) = sh_u.value; } while (0);; |
| } |
| w = a-b; |
| if (w <= b) |
| { |
| t2 = a - t1; |
| w = t1*y1-(w*(-w)-(t1*y2+t2*b)); |
| } |
| if(k!=0) { |
| } else return w; |
| } |