[PATCH 0/9] Optimized expf, exp2f, logf, log2f and powf

H.J. Lu hjl.tools@gmail.com
Sat Sep 23 23:03:00 GMT 2017


On 9/20/17, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
> On 19/09/17 13:49, Szabolcs Nagy wrote:
>> updated patchset, now with logf, log2f and powf too.
>> some libm_alias_float changes in math/w_*_compat.c got reverted.
>>
>> Szabolcs Nagy (9):
>>   Optimized generic expf and exp2f with wrappers
>>   New expf and exp2f version without SVID compat wrapper
>>   Do not wrap expf and exp2f
>>   New generic logf
>>   New generic log2f
>>   New generic powf
>>   New symbol version for logf, log2f and powf without SVID compat
>>   Do not wrap logf, log2f and powf
>>   AArch64: update libm-test-ulps
>>
>
> now i added these to an nsz/math branch so others can test it.
>

I created hjl/nsz/math branch to replace x86-64 assembly versions of
e_expf with generic
e_expf.c.  I got

FAIL: math/test-float-clog10
FAIL: math/test-float-exp
FAIL: math/test-float-finite-clog10
FAIL: math/test-float-finite-exp
FAIL: math/test-ifloat-clog10
FAIL: math/test-ifloat-exp

which are caused by

hjl@gnu-efi-2 build-x86_64-linux]$ cat math/test-float-exp.out
testing float (without inline functions)
Failure: Test: exp_downward (-0x1p-20)
Result:
 is:          9.99998986e-01   0x1.ffffdep-1
 should be:   9.99999046e-01   0x1.ffffe0p-1
 difference:  5.96046447e-08   0x1.000000p-24
 ulp       :  1.0000
 max.ulp   :  0.0000
Failure: Test: exp_downward (0x5.8b90b8p+4)
Result:
 is:          3.40279831e+38   0x1.ffff06p+127
 should be:   3.40279851e+38   0x1.ffff08p+127
 difference:  2.02824096e+31   0x1.000000p+104
 ulp       :  1.0000
 max.ulp   :  0.0000
Maximal error of `exp_downward'
 is      : 1 ulp
 accepted: 0 ulp
Failure: Test: exp_towardzero (-0x1p-20)
Result:
 is:          9.99998986e-01   0x1.ffffdep-1
 should be:   9.99999046e-01   0x1.ffffe0p-1
 difference:  5.96046447e-08   0x1.000000p-24
 ulp       :  1.0000
 max.ulp   :  0.0000
Failure: Test: exp_towardzero (0x5.8b90b8p+4)
Result:
 is:          3.40279831e+38   0x1.ffff06p+127
 should be:   3.40279851e+38   0x1.ffff08p+127
 difference:  2.02824096e+31   0x1.000000p+104
 ulp       :  1.0000
 max.ulp   :  0.0000
Maximal error of `exp_towardzero'
 is      : 1 ulp
 accepted: 0 ulp

Test suite completed:
  356 test cases plus 352 tests for exception flags and
    352 tests for errno executed.
  6 errors occurred.
[hjl@gnu-efi-2 build-x86_64-linux]$

Arjan, have you measured performance assembly versions of expf vs generic expf?

-- 
H.J.



More information about the Libc-alpha mailing list