[PATCH] Move multiprecision constant mpone into static scope

Carlos O'Donell codonell@redhat.com
Thu Dec 20 18:58:00 GMT 2012


On 12/20/2012 08:28 AM, Siddhesh Poyarekar wrote:
> Hi,
>
> The constant representation of 1 in the multiprecision implementation
> in libm is repeated in a bunch of places as a local variable.  This is
> slow in comparison to having it declared in static scope (and hence
> instantiated only once).  Attached patch does exactly that.  I have
> verified that this does not cause any regressions in the testsuite.
>
> As for verification of performance, I have tested this with the pow
> function using the test case described in this blog:
>
> http://entropymine.com/imageworsener/slowpow/
>
> using the following commandline:
>
> time ./powtest 1000000 1.0000000000000020 1.5000000050000000
>
> The patch takes off approx 0.1 second with the patch.  OK for 2.18?
>
>
> Siddhesh
>
> ChangeLog:
>
> 2012-12-20  Siddhesh Poyarekar  <siddhesh@redhat.com>
>
> 	* sysdeps/ieee754/dbl-64/mpa.c [! NO__CONST]: New constant
> 	MPONE.
> 	* sysdeps/ieee754/dbl-64/mpa.h: Declare MPONE.
> 	* sysdeps/ieee754/dbl-64/mpatan.c (__mpatan): Remove local
> 	variable MPONE.
> 	* sysdeps/ieee754/dbl-64/mpatan2.c (__mpatan2): Likewise.
> 	* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Likewise.
> 	* sysdeps/ieee754/dbl-64/mplog.c (__mplog): Remove mplog.h
> 	include directive.  Remove local variable MPONE.
> 	* sysdeps/ieee754/dbl-64/mplog.h: Remove.
> 	* sysdeps/x86_64/fpu/multiarch/mpa-avx.c: Define NO__CONST.
> 	* sysdeps/x86_64/fpu/multiarch/mpa-fma4.c: Likewise.

This looks good to me for 2.18.

Cheers,
Carlos.



More information about the Libc-alpha mailing list