Mercurial > mxe-octave
view src/build-msvctools/math/exp2.S @ 5579:2734b3818171
Avoid double-free with librsb (bug #58957).
* src/librsb.mk: Add work-around to avoid double-free (provided by Michele
Martone).
* src/mingw-of-sparsersb-1-no-render.patch: Remove patch.
* dist-files.mk: Remove file from list.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Mon, 02 Nov 2020 08:55:18 +0100 |
parents | f8299bb6c872 |
children |
line wrap: on
line source
/* * Written by J.T. Conklin <jtc@netbsd.org>. * Adapted for exp2 by Ulrich Drepper <drepper@cygnus.com>. * Public domain. */ .file "exp2.S" .text .align 4 .globl _exp2 .def _exp2; .scl 2; .type 32; .endef _exp2: fldl 4(%esp) /* I added the following ugly construct because exp(+-Inf) resulted in NaN. The ugliness results from the bright minds at Intel. For the i686 the code can be written better. -- drepper@cygnus.com. */ fxam /* Is NaN or +-Inf? */ fstsw %ax movb $0x45, %dh andb %ah, %dh cmpb $0x05, %dh je 1f /* Is +-Inf, jump. */ fld %st frndint /* int(x) */ fsubr %st,%st(1) /* fract(x) */ fxch f2xm1 /* 2^(fract(x)) - 1 */ fld1 faddp /* 2^(fract(x)) */ fscale /* e^x */ fstp %st(1) ret 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ fstp %st fldz /* Set result to 0. */ 2: ret