powerpc libm ULPs updated

Joseph S. Myers joseph@codesourcery.com
Thu Mar 15 13:16:00 GMT 2012


On Thu, 15 Mar 2012, Andreas Schwab wrote:

> +Test "hypot (0x1.234566p-126, 0x1.234566p-126) == 1.891441686191081936598531534017449451173e-38":
> +double: 1
> +float: 6

The float case shouldn't have that many ulps.  It looks like the PowerPC 
code has the same problem the generic code did, multiplying by 0x1p60 
which isn't big enough for nearly-subnormal values.

> +Test "hypot (0x3p125, 0x4p125) == 0x5p125":
> +float: 1

This should be exact.  It looks like the PowerPC code is using a value 
static const float twoM60 = 6.7762644e-21, which is 1ulp off 0x1p-67f (an 
*exact* 0x1p-67f would be OK).

> @@ -2205,7 +2247,7 @@ ldouble: 1
>  
>  Function: "hypot":
>  double: 1
> -float: 1
> +float: 6
>  idouble: 1
>  ifloat: 1
>  ildouble: 1

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Libc-alpha mailing list