Alternative 80386 math lib v2.0 part03/06
Glenn Geers
glenn at qed.physics.su.OZ.AU
Mon Dec 17 08:03:23 AEST 1990
Submitted-by: root at trantor
Archive-name: mathlib2.0/part03
---- Cut Here and feed the following to sh ----
#!/bin/sh
# this is mathlib.03 (part 3 of mathlib2.0)
# do not concatenate these parts, unpack them in order with /bin/sh
# file erff.c continued
#
if test ! -r _shar_seq_.tmp; then
echo 'Please unpack part 1 first!'
exit 1
fi
(read Scheck
if test "$Scheck" != 3; then
echo Please unpack part "$Scheck" next!
exit 1
else
exit 0
fi
) < _shar_seq_.tmp || exit 1
if test ! -f _shar_wnt_.tmp; then
echo 'x - still skipping erff.c'
else
echo 'x - continuing file erff.c'
sed 's/^X//' << 'SHAR_EOF' >> 'erff.c' &&
X skip++;
X }
X }
X if (!skip) {
X ysq = ONE/(y*y);
X xnum = P[5]*ysq;
X xden = ysq;
X for (i = 0; i <= 3; i++) {
X xnum = (xnum+P[i])*ysq;
X xden = (xden+Q[i])*ysq;
X }
X result = ysq*(xnum+P[4])/(xden+Q[4]);
X result = (SQRPI-result)/y;
X if (jint != 2) {
X i = (int)(y*SIXTEN); ysq = (double)i/SIXTEN;
X result *= exp(-ysq*ysq)*exp(-(y-ysq)*(y+ysq));
X }
X }
X }
X if (jint == 0) { /* Fix up for negative argument, erf, etc. */
X result = HALF-result; result += HALF;
X if (x < ZERO)
X result = -result;
X }
X else if (jint == 1) {
X if (x < ZERO)
X result = TWO-result;
X }
X else if (x < ZERO) {
X if (x < XNEG)
X result = XINF;
X else {
X i = (int)(x*SIXTEN); ysq = (double)i/SIXTEN;
X y = exp(ysq*ysq)*exp((x-ysq)*(x+ysq));
X result = -result; result += y+y;
X }
X }
X return result;
}
X
/*
X * This subprogram computes approximate values for erf(x).
X * (see comments heading calerf()).
X *
X * Author/date: W. J. Cody, January 8, 1985
X */
float
erff(float x)
{
X return ((float)calerf(x,0));
}
X
/*
X * This subprogram computes approximate values for erfc(x).
X * (see comments heading calerf()).
X *
X * Author/date: W. J. Cody, January 8, 1985
X */
float
erfcf(float x)
{
X return ((float)calerf(x,1));
}
X
/*
X * This subprogram computes approximate values for exp(x*x) * erfc(x).
X * (see comments heading calerf()).
X *
X * Author/date: W. J. Cody, March 30, 1987
X */
float
erfcxf(float x)
{
X return ((float)calerf(x,2));
}
SHAR_EOF
echo 'File erff.c is complete' &&
chmod 0644 erff.c ||
echo 'restore of erff.c failed'
Wc_c="`wc -c < 'erff.c'`"
test 9376 -eq "$Wc_c" ||
echo 'erff.c: original size 9376, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= nextafterf.c ==============
if test -f 'nextafterf.c' -a X"$1" != X"-c"; then
echo 'x - skipping nextafterf.c (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting nextafterf.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'nextafterf.c' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
** A mix of C and assembler - well I've got the functions so I might
** as well use them!
**
*/
X
#include "fpumath.h"
X
asm(".align 4");
asm(".Lulp:");
asm(".double 5.9604644775390625e-08");
X
asm(".align 4");
asm(".Lulpup:");
asm(".double 1.1920928955078125e-07");
X
float
nextafterf(float x, float y)
{
X asm("subl $8, %esp");
X
X if (isnanf(x) || isnanf(y))
X return(quiet_nanf(1.0));
X
X if (isinff(x))
X if (y > x)
X return(-max_normalf());
X else
X if (y < x)
X return(max_normalf());
X
X if (x == 0.0) {
X if (y > 0.0)
X return(min_subnormalf());
X else
X return(-min_subnormalf());
X }
X
X if (isnormalf(x)) {
X if ((x == min_normalf()) && y < x)
X return(max_subnormalf());
X
X if ((x == max_normalf()) && y > x)
X return(infinityf());
X
X if ((x == -max_normalf()) && y < x)
X return(-infinityf());
X
X asm("movl 8(%ebp), %eax");
X asm("andl $0x7f800000, %eax");
X asm("movl %eax, -8(%ebp)");
X asm("flds -8(%ebp)");
X
X if (fabsf(x) <= 2.0 && y < x)
X asm("fldl .Lulp");
X else
X asm("fldl .Lulpup");
X
X asm("fmulp");
X
X if (y > x) {
X asm("flds 8(%ebp)");
X asm("faddp");
X asm("leave");
X asm("ret");
X }
X if (y < x) {
X asm("flds 8(%ebp)");
X asm("fsubp");
X asm("leave");
X asm("ret");
X }
X }
X else
X if (issubnormalf(x)) {
X if ((x == max_subnormalf()) && y > x)
X return(min_normalf());
X
X if ((x == -max_subnormalf()) && y < x)
X return(-min_normalf());
X
X if (y > x)
X return(x + min_subnormalf());
X
X if (y < x)
X return(x - min_subnormalf());
X }
X
X return(x);
}
SHAR_EOF
chmod 0644 nextafterf.c ||
echo 'restore of nextafterf.c failed'
Wc_c="`wc -c < 'nextafterf.c'`"
test 1717 -eq "$Wc_c" ||
echo 'nextafterf.c: original size 1717, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= acos.s ==============
if test -f 'acos.s' -a X"$1" != X"-c"; then
echo 'x - skipping acos.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting acos.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'acos.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
Lhalfpi:
X .double 1.57079632679489661923
X
X .align 4
X .globl acos
acos:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X
X ftst
X fstsw %ax
X sahf
X jz .Lzero
X
X fst %st(1)
X fmull 8(%ebp)
X fld1
X fsubp
X fsqrt
X fdivp
X fld1
X fpatan
X jnc .Ldone
X
X fldpi
X faddp
X leave
X ret
X
Lzero:
X fldl .Lhalfpi
X
Ldone:
X leave
X ret
SHAR_EOF
chmod 0644 acos.s ||
echo 'restore of acos.s failed'
Wc_c="`wc -c < 'acos.s'`"
test 544 -eq "$Wc_c" ||
echo 'acos.s: original size 544, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= copysign.s ==============
if test -f 'copysign.s' -a X"$1" != X"-c"; then
echo 'x - skipping copysign.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting copysign.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'copysign.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
globl copysign
copysign:
X pushl %ebp
X movl %esp,%ebp
X
X movl 20(%ebp), %eax
X andl $0x80000000, %eax
X cmpl $0x80000000, %eax
X je .Lneg
X andl $0x7fffffff, 12(%ebp)
X fldl 8(%ebp) /* Store argument for return */
X leave
X ret
Lneg:
X orl $0x80000000, 12(%ebp)
X fldl 8(%ebp) /* Store argument for return */
X leave
X ret
SHAR_EOF
chmod 0644 copysign.s ||
echo 'restore of copysign.s failed'
Wc_c="`wc -c < 'copysign.s'`"
test 555 -eq "$Wc_c" ||
echo 'copysign.s: original size 555, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= drem.s ==============
if test -f 'drem.s' -a X"$1" != X"-c"; then
echo 'x - skipping drem.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting drem.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'drem.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl drem
drem:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 16(%ebp)
X fldl 8(%ebp)
Lnotred:
X fprem1
X
X fstsw %ax
X sahf
X jp .Lnotred
X
X leave
X ret
SHAR_EOF
chmod 0644 drem.s ||
echo 'restore of drem.s failed'
Wc_c="`wc -c < 'drem.s'`"
test 381 -eq "$Wc_c" ||
echo 'drem.s: original size 381, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= fabs.s ==============
if test -f 'fabs.s' -a X"$1" != X"-c"; then
echo 'x - skipping fabs.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting fabs.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'fabs.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl fabs
fabs:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fabs
X
X leave
X ret
SHAR_EOF
chmod 0644 fabs.s ||
echo 'restore of fabs.s failed'
Wc_c="`wc -c < 'fabs.s'`"
test 322 -eq "$Wc_c" ||
echo 'fabs.s: original size 322, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= hypot.s ==============
if test -f 'hypot.s' -a X"$1" != X"-c"; then
echo 'x - skipping hypot.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting hypot.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'hypot.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
globl hypot
hypot:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fmull 8(%ebp)
X fldl 16(%ebp)
X fmull 16(%ebp)
X faddp
X fsqrt
X
X leave
X ret
SHAR_EOF
chmod 0644 hypot.s ||
echo 'restore of hypot.s failed'
Wc_c="`wc -c < 'hypot.s'`"
test 377 -eq "$Wc_c" ||
echo 'hypot.s: original size 377, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= logb.s ==============
if test -f 'logb.s' -a X"$1" != X"-c"; then
echo 'x - skipping logb.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting logb.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'logb.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl logb
logb:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fxtract
X fldl %st(1)
X
X leave
X ret
SHAR_EOF
chmod 0644 logb.s ||
echo 'restore of logb.s failed'
Wc_c="`wc -c < 'logb.s'`"
test 339 -eq "$Wc_c" ||
echo 'logb.s: original size 339, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= scalb.s ==============
if test -f 'scalb.s' -a X"$1" != X"-c"; then
echo 'x - skipping scalb.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting scalb.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'scalb.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl scalb
scalb:
X pushl %ebp
X movl %esp,%ebp
X
X fildl 16(%ebp)
X fldl 8(%ebp)
X fscale
X
X leave
X ret
SHAR_EOF
chmod 0644 scalb.s ||
echo 'restore of scalb.s failed'
Wc_c="`wc -c < 'scalb.s'`"
test 343 -eq "$Wc_c" ||
echo 'scalb.s: original size 343, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= tan.s ==============
if test -f 'tan.s' -a X"$1" != X"-c"; then
echo 'x - skipping tan.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting tan.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'tan.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl tan
tan:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fptan
X fstp %st(0)
X
X leave
X ret
SHAR_EOF
chmod 0644 tan.s ||
echo 'restore of tan.s failed'
Wc_c="`wc -c < 'tan.s'`"
test 334 -eq "$Wc_c" ||
echo 'tan.s: original size 334, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= asin.s ==============
if test -f 'asin.s' -a X"$1" != X"-c"; then
echo 'x - skipping asin.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting asin.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'asin.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl asin
asin:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fst %st(1)
X fst %st(2)
X fmulp
X fld1
X fsubp
X fsqrt
X fld1
X fdivp
X fmulp
X fld1
X fpatan
X
X leave
X ret
SHAR_EOF
chmod 0644 asin.s ||
echo 'restore of asin.s failed'
Wc_c="`wc -c < 'asin.s'`"
test 401 -eq "$Wc_c" ||
echo 'asin.s: original size 401, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ceil.s ==============
if test -f 'ceil.s' -a X"$1" != X"-c"; then
echo 'x - skipping ceil.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ceil.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ceil.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Could use ceil(x) = -floor(-x) but this is quicker.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl ceil
ceil:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X fldl 8(%ebp) /* load data */
X
X fstcw -12(%ebp) /* store control word */
X fstcw -16(%ebp) /* store it again */
X orw $0x0800, -16(%ebp) /* round toward +inf */
X fldcw -16(%ebp) /* store new control word */
X frndint /* rounding gives ceil(x) */
X fldcw -12(%ebp) /* restore original control word */
X
X leave
X ret
SHAR_EOF
chmod 0644 ceil.s ||
echo 'restore of ceil.s failed'
Wc_c="`wc -c < 'ceil.s'`"
test 682 -eq "$Wc_c" ||
echo 'ceil.s: original size 682, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= exp.s ==============
if test -f 'exp.s' -a X"$1" != X"-c"; then
echo 'x - skipping exp.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting exp.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'exp.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl exp
exp:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X
X leave
X ret
SHAR_EOF
chmod 0644 exp.s ||
echo 'restore of exp.s failed'
Wc_c="`wc -c < 'exp.s'`"
test 400 -eq "$Wc_c" ||
echo 'exp.s: original size 400, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= expm1.s ==============
if test -f 'expm1.s' -a X"$1" != X"-c"; then
echo 'x - skipping expm1.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting expm1.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'expm1.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl expm1
expm1:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X fldl 8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X
X fstpl -8(%ebp)
X
X fldl 8(%ebp)
X fchs
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X
X fld1
X fsubp
X fmull -8(%ebp)
X
X leave
X ret
SHAR_EOF
chmod 0644 expm1.s ||
echo 'restore of expm1.s failed'
Wc_c="`wc -c < 'expm1.s'`"
test 573 -eq "$Wc_c" ||
echo 'expm1.s: original size 573, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= finite.s ==============
if test -f 'finite.s' -a X"$1" != X"-c"; then
echo 'x - skipping finite.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting finite.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'finite.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl finite
finite:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x7ff00000, %eax
X cmpl $0x7ff00000, %eax
X je .Lnotfinite
X
X movl $1, %eax
X leave
X ret
X
Lnotfinite:
X movl $0, %eax
X leave
X ret
SHAR_EOF
chmod 0644 finite.s ||
echo 'restore of finite.s failed'
Wc_c="`wc -c < 'finite.s'`"
test 447 -eq "$Wc_c" ||
echo 'finite.s: original size 447, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log.s ==============
if test -f 'log.s' -a X"$1" != X"-c"; then
echo 'x - skipping log.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log
log:
X pushl %ebp
X movl %esp,%ebp
X
X fldln2
X fldl 8(%ebp)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log.s ||
echo 'restore of log.s failed'
Wc_c="`wc -c < 'log.s'`"
test 329 -eq "$Wc_c" ||
echo 'log.s: original size 329, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log1p.s ==============
if test -f 'log1p.s' -a X"$1" != X"-c"; then
echo 'x - skipping log1p.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log1p.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log1p.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log1p
log1p:
X pushl %ebp
X movl %esp,%ebp
X
X fldln2
X fldl 8(%ebp)
X fld1
X faddp
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log1p.s ||
echo 'restore of log1p.s failed'
Wc_c="`wc -c < 'log1p.s'`"
test 346 -eq "$Wc_c" ||
echo 'log1p.s: original size 346, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= pow.s ==============
if test -f 'pow.s' -a X"$1" != X"-c"; then
echo 'x - skipping pow.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting pow.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'pow.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** This file started life as a C implemenation of pow, it then evolved
** into an embeded asm version (with some C) and finally, all assembler.
** It's actually hacked assembler produced by gcc.
**
** Copyright 1990 G. Geers
**
*/
X
text
LC0:
X .ascii "pow: DOMAIN error\12\0"
X .align 4
LC1:
X .double 0d0.00000000000000000000e+00
X .align 4
LC2:
X .double 0d1.00000000000000000000e+00
X .align 4
globl pow
pow:
X pushl %ebp
X movl %esp,%ebp
X subl $28,%esp
X pushl %edi
X pushl %esi
X pushl %ebx
X movl 16(%ebp),%esi
X movl 20(%ebp),%edi
X movl $0,-4(%ebp)
X movl $1,%ebx
X fldl 8(%ebp)
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X jae .L2
X movl %ebx,-4(%ebp)
X pushl %edi
X pushl %esi
/**/
X fldl 16(%ebp)
X
X fstcw -8(%ebp)
X fstcw -12(%ebp)
X orw $0x0400, -12(%ebp)
X fldcw -12(%ebp)
X
X frndint
X fldcw -8(%ebp)
/**/
X fstpl -16(%ebp)
X pushl %edi
X pushl %esi
X fldl (%esp)
X addl $8,%esp
X fsubl -16(%ebp)
X fstpl -16(%ebp)
X addl $8,%esp
X fldl -16(%ebp)
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X je .L3
X movl $33,errno
X pushl $.LC0
X pushl $_iob+32
X call fprintf
X fldl .LC1
X jmp .L1
X .align 4
L3:
X pushl %edi
X pushl %esi
/**/
X fldl 16(%ebp)
X fistpl -8(%ebp)
X movl -8(%ebp),%eax
/**/
X testl %eax,%eax
X jge .L5
X incl %eax
L5:
X andl $-2,%eax
X movl -8(%ebp),%ecx
X subl %eax,%ecx
X movl %ecx,%eax
X testl %eax,%eax
X je .L2
X xorl %ebx,%ebx
L2:
X fldl 8(%ebp)
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X jne .L6
X pushl %edi
X pushl %esi
X fldl (%esp)
X addl $8,%esp
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X je .L6
X fldl .LC1
X jmp .L1
X .align 4
L6:
X pushl %edi
X pushl %esi
X fldl (%esp)
X addl $8,%esp
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X jne .L8
X fldl .LC2
X jmp .L1
X .align 4
L8:
/APP
X fldl 16(%ebp)
X fldl 8(%ebp)
/NO_APP
X cmpl $0,-4(%ebp)
X je .L10
/APP
X fchs
/NO_APP
L10:
/APP
X fyl2x
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
/NO_APP
X testl %ebx,%ebx
X jne .L1
/APP
X fchs
/NO_APP
L1:
X leal -28(%ebp),%esp
X popl %ebx
X popl %esi
X popl %edi
X leave
X ret
SHAR_EOF
chmod 0644 pow.s ||
echo 'restore of pow.s failed'
Wc_c="`wc -c < 'pow.s'`"
test 2128 -eq "$Wc_c" ||
echo 'pow.s: original size 2128, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sin.s ==============
if test -f 'sin.s' -a X"$1" != X"-c"; then
echo 'x - skipping sin.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sin.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sin.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl sin
sin:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fsin
X
X leave
X ret
SHAR_EOF
chmod 0644 sin.s ||
echo 'restore of sin.s failed'
Wc_c="`wc -c < 'sin.s'`"
test 320 -eq "$Wc_c" ||
echo 'sin.s: original size 320, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= atan.s ==============
if test -f 'atan.s' -a X"$1" != X"-c"; then
echo 'x - skipping atan.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting atan.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'atan.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl atan
atan:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fld1
X fpatan
X
X leave
X ret
SHAR_EOF
chmod 0644 atan.s ||
echo 'restore of atan.s failed'
Wc_c="`wc -c < 'atan.s'`"
test 331 -eq "$Wc_c" ||
echo 'atan.s: original size 331, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= cos.s ==============
if test -f 'cos.s' -a X"$1" != X"-c"; then
echo 'x - skipping cos.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting cos.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'cos.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl cos
cos:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fcos
X
X leave
X ret
SHAR_EOF
chmod 0644 cos.s ||
echo 'restore of cos.s failed'
Wc_c="`wc -c < 'cos.s'`"
test 320 -eq "$Wc_c" ||
echo 'cos.s: original size 320, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= exp10.s ==============
if test -f 'exp10.s' -a X"$1" != X"-c"; then
echo 'x - skipping exp10.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting exp10.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'exp10.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl exp10
exp10:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fldl2t
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X
X leave
X ret
SHAR_EOF
chmod 0644 exp10.s ||
echo 'restore of exp10.s failed'
Wc_c="`wc -c < 'exp10.s'`"
test 404 -eq "$Wc_c" ||
echo 'exp10.s: original size 404, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= floor.s ==============
if test -f 'floor.s' -a X"$1" != X"-c"; then
echo 'x - skipping floor.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting floor.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'floor.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl floor
floor:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X fldl 8(%ebp) /* load data */
X
X fstcw -12(%ebp) /* store control word */
X fstcw -16(%ebp) /* store it again */
X orw $0x0400, -16(%ebp) /* round toward -inf */
X fldcw -16(%ebp) /* store new control word */
X
X frndint /* rounding gives floor(x) */
X fldcw -12(%ebp) /* restore original control word */
X
X leave
X ret
SHAR_EOF
chmod 0644 floor.s ||
echo 'restore of floor.s failed'
Wc_c="`wc -c < 'floor.s'`"
test 628 -eq "$Wc_c" ||
echo 'floor.s: original size 628, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log10.s ==============
if test -f 'log10.s' -a X"$1" != X"-c"; then
echo 'x - skipping log10.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log10.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log10.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log10
log10:
X pushl %ebp
X movl %esp,%ebp
X
X fldlg2
X fldl 8(%ebp)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log10.s ||
echo 'restore of log10.s failed'
Wc_c="`wc -c < 'log10.s'`"
test 333 -eq "$Wc_c" ||
echo 'log10.s: original size 333, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= rint.s ==============
if test -f 'rint.s' -a X"$1" != X"-c"; then
echo 'x - skipping rint.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting rint.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'rint.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl rint
rint:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X frndint
X
X leave
X ret
SHAR_EOF
chmod 0644 rint.s ||
echo 'restore of rint.s failed'
Wc_c="`wc -c < 'rint.s'`"
test 326 -eq "$Wc_c" ||
echo 'rint.s: original size 326, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sqrt.s ==============
if test -f 'sqrt.s' -a X"$1" != X"-c"; then
echo 'x - skipping sqrt.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sqrt.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sqrt.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
** sqrt in the prevailing precision
*/
X
X .align 4
X .globl sqrt
sqrt:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fsqrt
X
X leave
X ret
SHAR_EOF
chmod 0644 sqrt.s ||
echo 'restore of sqrt.s failed'
Wc_c="`wc -c < 'sqrt.s'`"
test 359 -eq "$Wc_c" ||
echo 'sqrt.s: original size 359, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= exp2.s ==============
if test -f 'exp2.s' -a X"$1" != X"-c"; then
echo 'x - skipping exp2.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting exp2.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'exp2.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl exp2
exp2:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X
X leave
X ret
SHAR_EOF
chmod 0644 exp2.s ||
echo 'restore of exp2.s failed'
Wc_c="`wc -c < 'exp2.s'`"
test 387 -eq "$Wc_c" ||
echo 'exp2.s: original size 387, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log2.s ==============
if test -f 'log2.s' -a X"$1" != X"-c"; then
echo 'x - skipping log2.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log2.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log2.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log2
log2:
X pushl %ebp
X movl %esp,%ebp
X
X fld1
X fldl 8(%ebp)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log2.s ||
echo 'restore of log2.s failed'
Wc_c="`wc -c < 'log2.s'`"
test 329 -eq "$Wc_c" ||
echo 'log2.s: original size 329, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sinh.s ==============
if test -f 'sinh.s' -a X"$1" != X"-c"; then
echo 'x - skipping sinh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sinh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sinh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
** This file started life as a C program but has been massively hacked.
**
** The coefficients are from Hart, et.al. via Berkeley
**
*/
X
data
X .align 4
p0:
X .double 0d-6.30767364049771680000e+05
X .align 4
p1:
X .double 0d-8.99127202203950870000e+04
X .align 4
p2:
X .double 0d-2.89421135598956380000e+03
X .align 4
p3:
X .double 0d-2.63056321339749710000e+01
X .align 4
q0:
X .double 0d-6.30767364049771680000e+05
X .align 4
q1:
X .double 0d1.52151737879001900000e+04
X .align 4
q2:
X .double 0d-1.73678953558233700000e+02
X
text
X .align 4
LC0:
X .double 0d2.10000000000000000000e+01
X .align 4
LC1:
X .double 0d5.00000000000000000000e-01
X
X .align 4
globl sinh
X
sinh:
X pushl %ebp
X movl %esp,%ebp
X subl $72,%esp
X fldl 8(%ebp)
X fstpl -8(%ebp)
X movl $1,%edx
X fldl -8(%ebp)
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X jae .L2
X fldl -8(%ebp)
X fchs
X fstpl -8(%ebp)
X movl $-1,%edx
L2:
X fldl .LC0
X fldl -8(%ebp)
X fcompp
X fnstsw %ax
X sahf
X jbe .L3
X fldl -8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fldl .LC1
X fmulp
X testl %edx,%edx
X jg .L7
X fchs
L7:
X leave
X ret
L3:
X fldl .LC1
X fldl -8(%ebp)
X fcompp
X fnstsw %ax
X sahf
X jbe .L6
X fldl 8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fst %st(1)
X fld1
X fdivp
X fsubrp
X fldl .LC1
X fmulp
X leave
X ret
L6:
X fldl -8(%ebp)
X fmull -8(%ebp)
X fstl -16(%ebp)
X fmull p3
X faddl p2
X fmull -16(%ebp)
X faddl p1
X fmull -16(%ebp)
X faddl p0
X fmull -8(%ebp)
X fstpl -72(%ebp)
X fldl -16(%ebp)
X faddl q2
X fmull -16(%ebp)
X faddl q1
X fmull -16(%ebp)
X faddl q0
X fstpl -56(%ebp)
X fldl -72(%ebp)
X fdivl -56(%ebp)
X pushl %edx
X fildl (%esp)
X addl $4,%esp
X fstpl -64(%ebp)
X fmull -64(%ebp)
X leal -76(%ebp),%esp
X leave
X ret
SHAR_EOF
chmod 0644 sinh.s ||
echo 'restore of sinh.s failed'
Wc_c="`wc -c < 'sinh.s'`"
test 1943 -eq "$Wc_c" ||
echo 'sinh.s: original size 1943, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= cosh.s ==============
if test -f 'cosh.s' -a X"$1" != X"-c"; then
echo 'x - skipping cosh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting cosh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'cosh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
LC2:
X .double 0.500
X
X .align 4
X .globl cosh
cosh:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X ftst
X fstsw %ax
X sahf
X ja .Lpos
X fchs
X
Lpos:
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fst %st(1)
X
X fld1
X fdivp
X faddp
X
X fldl .LC2
X fmulp
X
X leave
X ret
SHAR_EOF
chmod 0644 cosh.s ||
echo 'restore of cosh.s failed'
Wc_c="`wc -c < 'cosh.s'`"
test 533 -eq "$Wc_c" ||
echo 'cosh.s: original size 533, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= tanh.s ==============
if test -f 'tanh.s' -a X"$1" != X"-c"; then
echo 'x - skipping tanh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting tanh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'tanh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl tanh
tanh:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X fldl 8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fstl %st(1)
X fstl -16(%ebp)
X
X fld1
X fdivp
X
X fsubr
X faddl -16(%ebp)
X fdivrp
X
X leave
X ret
SHAR_EOF
chmod 0644 tanh.s ||
echo 'restore of tanh.s failed'
Wc_c="`wc -c < 'tanh.s'`"
test 493 -eq "$Wc_c" ||
echo 'tanh.s: original size 493, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= asinh.s ==============
if test -f 'asinh.s' -a X"$1" != X"-c"; then
echo 'x - skipping asinh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting asinh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'asinh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl asinh
asinh:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X
X fmull 8(%ebp)
X fld1
X faddp
X fsqrt
X faddl 8(%ebp)
X fldln2
X fxch %st(1)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 asinh.s ||
echo 'restore of asinh.s failed'
Wc_c="`wc -c < 'asinh.s'`"
test 397 -eq "$Wc_c" ||
echo 'asinh.s: original size 397, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= acosh.s ==============
if test -f 'acosh.s' -a X"$1" != X"-c"; then
echo 'x - skipping acosh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting acosh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'acosh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl acosh
acosh:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 8(%ebp)
X
X fmull 8(%ebp)
X fld1
X fsubrp
X fsqrt
X faddl 8(%ebp)
X fldln2
X fxch %st(1)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 acosh.s ||
echo 'restore of acosh.s failed'
Wc_c="`wc -c < 'acosh.s'`"
test 398 -eq "$Wc_c" ||
echo 'acosh.s: original size 398, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= atanh.s ==============
if test -f 'atanh.s' -a X"$1" != X"-c"; then
echo 'x - skipping atanh.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting atanh.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'atanh.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
Lhalf:
X .double 0.500
X
X .align 4
X .globl atanh
atanh:
X pushl %ebp
X movl %esp,%ebp
X
X fld1
X faddl 8(%ebp)
X fld1
X fsubl 8(%ebp)
X fdivrp
X
X fldln2
X fxch %st(1)
X fyl2x
X
X fldl .Lhalf
X fmulp
X
X leave
X ret
SHAR_EOF
chmod 0644 atanh.s ||
echo 'restore of atanh.s failed'
Wc_c="`wc -c < 'atanh.s'`"
test 438 -eq "$Wc_c" ||
echo 'atanh.s: original size 438, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= atan2.s ==============
if test -f 'atan2.s' -a X"$1" != X"-c"; then
echo 'x - skipping atan2.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting atan2.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'atan2.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
Lpi:
X .double 3.14159265358979323846
X
X .align 4
Lmpi:
X .double -3.14159265358979323846
X
X .align 4
Lhalfpi:
X .double 1.57079632679489661923
X
X .align 4
Lmhalfpi:
X .double -1.57079632679489661923
X
X .align 4
X .globl atan2
atan2:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 16(%ebp)
X ftst
X fnstsw %ax
X sahf
X fldl 8(%ebp)
X jz .Lgotzero
X jc .Lgotneg
X
X fdivp
X fld1
X fpatan
X
X leave
X ret
X
Lgotneg:
X ftst
X fnstsw %ax
X sahf
X jc .Lneg1
X
X fdivp
X fld1
X fpatan
X fldl .Lmpi
X fsubrp
X
X leave
X ret
X
Lneg1:
X fdivp
X fld1
X fpatan
X fldl .Lpi
X fsubrp
X
X leave
X ret
X
Lgotzero:
X ftst
X fnstsw %ax
X sahf
X jz .Lzero
X jc .Lneg
X
X fldl .Lhalfpi
X
X leave
X ret
X
Lzero:
X fldz
X
X leave
X ret
X
Lneg:
X fldl .Lmhalfpi
X
X leave
X ret
SHAR_EOF
chmod 0644 atan2.s ||
echo 'restore of atan2.s failed'
Wc_c="`wc -c < 'atan2.s'`"
test 931 -eq "$Wc_c" ||
echo 'atan2.s: original size 931, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= fmod.s ==============
if test -f 'fmod.s' -a X"$1" != X"-c"; then
echo 'x - skipping fmod.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting fmod.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'fmod.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl fmod
fmod:
X pushl %ebp
X movl %esp,%ebp
X
X fldl 16(%ebp)
X fldl 8(%ebp)
Lnotred:
X fprem
X
X fstsw %ax
X sahf
X jp .Lnotred
X
X leave
X ret
SHAR_EOF
chmod 0644 fmod.s ||
echo 'restore of fmod.s failed'
Wc_c="`wc -c < 'fmod.s'`"
test 380 -eq "$Wc_c" ||
echo 'fmod.s: original size 380, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ieee_ext.s ==============
if test -f 'ieee_ext.s' -a X"$1" != X"-c"; then
echo 'x - skipping ieee_ext.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ieee_ext.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ieee_ext.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl isnan
isnan:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x7ff00000, %eax
X cmpl $0x7ff00000, %eax
X jne .Lnotnan
X movl 12(%ebp), %eax
X andl $0xfffff, %eax
X orl 8(%ebp), %eax
X je .Lnotnan
X
X movl $1, %eax
X leave
X ret
X
Lnotnan:
X movl $0, %eax
X
Ldone:
X leave
X ret
X
X .align 4
X .globl isinf
isinf:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x7ff00000, %eax
X cmpl $0x7ff00000, %eax
X je .Lcouldbeinf
X
Lnotinf:
X movl $0, %eax
X leave
X ret
X
Lcouldbeinf:
X movl 12(%ebp), %eax
X andl $0xfffff, %eax
X orl 8(%ebp), %eax
X jne .Lnotinf
X
X movl $1, %eax
X leave
X ret
X
X .align 4
X .globl iszero
iszero:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X cmpl $0x0, %eax
X je .Lcouldbezero
Lnotzero:
X movl $0, %eax
X leave
X ret
X
Lcouldbezero:
X andl $0xfffff, %eax
X orl 8(%ebp), %eax
X jne .Lnotzero
X
X movl $1, %eax
X leave
X ret
X
X .align 4
X .globl signbit
signbit:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x80000000, %eax
X cmpl $0x80000000, %eax
X jne .Lpos
X movl $1, %eax
X leave
X ret
X
Lpos:
X movl $0, %eax
X leave
X ret
X
X .align 4
X .globl issubnormal
issubnormal:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x7ff00000, %eax
X cmpl $0x0, %eax
X je .Lcouldbesub
X
Lnotsubnorm:
X movl $0, %eax
X leave
X ret
X
Lcouldbesub:
X movl 12(%ebp), %eax
X andl $0xfffff, %eax
X orl 8(%ebp), %eax
X je .Lnotsubnorm
X
X movl $1, %eax
X leave
X ret
X
X .align 4
X .globl isnormal
isnormal:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x7ff00000, %eax /* mask sign bit */
X xorl $0x7ff00000, %eax
X cmpl $0x0, %eax
X je .Lnotnorm
X cmpl $0x7ff00000, %eax
X je .Lnotnorm
X
Lnorm:
X movl $1, %eax
X leave
X ret
X
Lcouldbenorm:
X movl 12(%ebp), %eax
X andl $0xfffff, %eax
X orl 8(%ebp), %eax
X je .Lnorm
X
Lnotnorm:
X movl $0, %eax
X leave
X ret
SHAR_EOF
chmod 0644 ieee_ext.s ||
echo 'restore of ieee_ext.s failed'
Wc_c="`wc -c < 'ieee_ext.s'`"
test 1994 -eq "$Wc_c" ||
echo 'ieee_ext.s: original size 1994, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= infinity.s ==============
if test -f 'infinity.s' -a X"$1" != X"-c"; then
echo 'x - skipping infinity.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting infinity.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'infinity.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl infinity
infinity:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x7ff00000, -12(%ebp)
X movl $0x0, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
SHAR_EOF
chmod 0644 infinity.s ||
echo 'restore of infinity.s failed'
Wc_c="`wc -c < 'infinity.s'`"
test 394 -eq "$Wc_c" ||
echo 'infinity.s: original size 394, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sqrtp.s ==============
if test -f 'sqrtp.s' -a X"$1" != X"-c"; then
echo 'x - skipping sqrtp.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sqrtp.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sqrtp.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
** sqrt in 64 bit precision always
*/
X
X .align 4
X .globl sqrtp
sqrtp:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X fnstcw -12(%ebp) /* store current control word */
X fnstcw -16(%ebp) /* store again */
X andw $0xf2ff, -12(%ebp) /* enable 64 bit precision */
X fldcw -12(%ebp)
X
X fldl 8(%ebp)
X fsqrt
X
X fldcw -16(%ebp) /* restore original control word */
X
X leave
X ret
SHAR_EOF
chmod 0644 sqrtp.s ||
echo 'restore of sqrtp.s failed'
Wc_c="`wc -c < 'sqrtp.s'`"
test 605 -eq "$Wc_c" ||
echo 'sqrtp.s: original size 605, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ieee_values.s ==============
if test -f 'ieee_values.s' -a X"$1" != X"-c"; then
echo 'x - skipping ieee_values.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ieee_values.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ieee_values.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl max_normal
X
max_normal:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x7fefffff, -12(%ebp)
X movl $0xffffffff, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
X
X .align 4
X .globl min_normal
X
min_normal:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x00100000, -12(%ebp)
X movl $0x00000001, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
X
X .align 4
X .globl min_subnormal
X
min_subnormal:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x0, -12(%ebp)
X movl $0x00000001, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
X
X .align 4
X .globl max_subnormal
X
max_subnormal:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x000fffff, -12(%ebp)
X movl $0xffffffff, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
X
X .align 4
X .globl quiet_nan
X
quiet_nan:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x7fffffff, -12(%ebp)
X movl $0xffffffff, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
X
X .align 4
X .globl signaling_nan
X
signaling_nan:
X pushl %ebp
X movl %esp,%ebp
X subl $8, %esp
X
X movl $0x7ff00000, -12(%ebp)
X movl $0x00000001, -16(%ebp)
X
X fldl -16(%ebp)
X
X leave
X ret
SHAR_EOF
chmod 0644 ieee_values.s ||
echo 'restore of ieee_values.s failed'
Wc_c="`wc -c < 'ieee_values.s'`"
test 1295 -eq "$Wc_c" ||
echo 'ieee_values.s: original size 1295, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= acosf.s ==============
if test -f 'acosf.s' -a X"$1" != X"-c"; then
echo 'x - skipping acosf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting acosf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'acosf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
Lhalfpi:
X .double 1.57079632679489661923
X
X .align 4
X .globl acosf
acosf:
X pushl %ebp
X movl %esp,%ebp
X
X flds 8(%ebp)
X
X ftst
X fstsw %ax
X sahf
X jz .Lzero
X
X fst %st(1)
X fmuls 8(%ebp)
X fld1
X fsubp
X fsqrt
X fdivp
X fld1
X fpatan
X jnc .Ldone
X
X fldpi
X faddp
X leave
X ret
X
Lzero:
X flds .Lhalfpi
X
Ldone:
X leave
X ret
SHAR_EOF
chmod 0644 acosf.s ||
echo 'restore of acosf.s failed'
Wc_c="`wc -c < 'acosf.s'`"
test 546 -eq "$Wc_c" ||
echo 'acosf.s: original size 546, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= copysignf.s ==============
if test -f 'copysignf.s' -a X"$1" != X"-c"; then
echo 'x - skipping copysignf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting copysignf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'copysignf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
globl copysignf
copysignf:
X pushl %ebp
X movl %esp,%ebp
X
X movl 12(%ebp), %eax
X andl $0x80000000, %eax
X cmpl $0x80000000, %eax
X je .Lneg
X andl $0x7fffffff, 8(%ebp)
X flds 8(%ebp) /* Store argument for return */
X leave
X ret
Lneg:
X orl $0x80000000, 8(%ebp)
X flds 8(%ebp) /* Store argument for return */
X leave
X ret
SHAR_EOF
chmod 0644 copysignf.s ||
echo 'restore of copysignf.s failed'
Wc_c="`wc -c < 'copysignf.s'`"
test 555 -eq "$Wc_c" ||
echo 'copysignf.s: original size 555, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= fabsf.s ==============
if test -f 'fabsf.s' -a X"$1" != X"-c"; then
echo 'x - skipping fabsf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting fabsf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'fabsf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl fabsf
fabsf:
X pushl %ebp
X movl %esp,%ebp
X
X flds 8(%ebp)
X fabs
X
X leave
X ret
SHAR_EOF
chmod 0644 fabsf.s ||
echo 'restore of fabsf.s failed'
Wc_c="`wc -c < 'fabsf.s'`"
test 324 -eq "$Wc_c" ||
echo 'fabsf.s: original size 324, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log10f.s ==============
if test -f 'log10f.s' -a X"$1" != X"-c"; then
echo 'x - skipping log10f.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log10f.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log10f.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log10f
log10f:
X pushl %ebp
X movl %esp,%ebp
X
X fldlg2
X flds 8(%ebp)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log10f.s ||
echo 'restore of log10f.s failed'
Wc_c="`wc -c < 'log10f.s'`"
test 335 -eq "$Wc_c" ||
echo 'log10f.s: original size 335, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sinf.s ==============
if test -f 'sinf.s' -a X"$1" != X"-c"; then
echo 'x - skipping sinf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sinf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sinf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl sinf
sinf:
X pushl %ebp
X movl %esp,%ebp
X
X flds 8(%ebp)
X fsin
X
X leave
X ret
SHAR_EOF
chmod 0644 sinf.s ||
echo 'restore of sinf.s failed'
Wc_c="`wc -c < 'sinf.s'`"
test 322 -eq "$Wc_c" ||
echo 'sinf.s: original size 322, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= acoshf.s ==============
if test -f 'acoshf.s' -a X"$1" != X"-c"; then
echo 'x - skipping acoshf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting acoshf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'acoshf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl acoshf
acoshf:
X pushl %ebp
X movl %esp,%ebp
X
X flds 8(%ebp)
X
X fmuls 8(%ebp)
X fld1
X fsubrp
X fsqrt
X fadds 8(%ebp)
X fldln2
X fxch %st(1)
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 acoshf.s ||
echo 'restore of acoshf.s failed'
Wc_c="`wc -c < 'acoshf.s'`"
test 400 -eq "$Wc_c" ||
echo 'acoshf.s: original size 400, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= cosf.s ==============
if test -f 'cosf.s' -a X"$1" != X"-c"; then
echo 'x - skipping cosf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting cosf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'cosf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl cosf
cosf:
X pushl %ebp
X movl %esp,%ebp
X
X flds 8(%ebp)
X fcos
X
X leave
X ret
SHAR_EOF
chmod 0644 cosf.s ||
echo 'restore of cosf.s failed'
Wc_c="`wc -c < 'cosf.s'`"
test 322 -eq "$Wc_c" ||
echo 'cosf.s: original size 322, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= finitef.s ==============
if test -f 'finitef.s' -a X"$1" != X"-c"; then
echo 'x - skipping finitef.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting finitef.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'finitef.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl finitef
finitef:
X pushl %ebp
X movl %esp,%ebp
X
X movl 8(%ebp), %eax
X andl $0x7ff00000, %eax
X cmpl $0x7ff00000, %eax
X je .Lnotfinite
X
X movl $1, %eax
X leave
X ret
X
Lnotfinite:
X movl $0, %eax
X leave
X ret
SHAR_EOF
chmod 0644 finitef.s ||
echo 'restore of finitef.s failed'
Wc_c="`wc -c < 'finitef.s'`"
test 448 -eq "$Wc_c" ||
echo 'finitef.s: original size 448, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= log1pf.s ==============
if test -f 'log1pf.s' -a X"$1" != X"-c"; then
echo 'x - skipping log1pf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting log1pf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'log1pf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
*/
X
X .align 4
X .globl log1pf
log1pf:
X pushl %ebp
X movl %esp,%ebp
X
X fldln2
X flds 8(%ebp)
X fld1
X faddp
X fyl2x
X
X leave
X ret
SHAR_EOF
chmod 0644 log1pf.s ||
echo 'restore of log1pf.s failed'
Wc_c="`wc -c < 'log1pf.s'`"
test 348 -eq "$Wc_c" ||
echo 'log1pf.s: original size 348, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= sinhf.s ==============
if test -f 'sinhf.s' -a X"$1" != X"-c"; then
echo 'x - skipping sinhf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting sinhf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'sinhf.s' &&
/*
** This file is part of the alternative 80386 math library and is
** covered by the GNU General Public license with my modification
** as noted in the README file that accompanied this file.
**
** Copyright 1990 G. Geers
**
** This file started life as a C program but has been massively hacked.
**
*/
X
data
X .align 4
p0:
X .double 0d-6.30767364049771680000e+05
X .align 4
p1:
X .double 0d-8.99127202203950870000e+04
X .align 4
p2:
X .double 0d-2.89421135598956380000e+03
X .align 4
p3:
X .double 0d-2.63056321339749710000e+01
X .align 4
q0:
X .double 0d-6.30767364049771680000e+05
X .align 4
q1:
X .double 0d1.52151737879001900000e+04
X .align 4
q2:
X .double 0d-1.73678953558233700000e+02
X
text
X .align 4
LC0:
X .double 0d2.10000000000000000000e+01
X .align 4
LC1:
X .double 0d5.00000000000000000000e-01
X .align 4
X
globl sinhf
sinhf:
X pushl %ebp
X movl %esp,%ebp
X subl $88,%esp
X movl 8(%ebp),%ecx
X movl %ecx,-4(%ebp)
X movl $1,%edx
X pushl %ecx
X flds (%esp)
X addl $4,%esp
X ftst
X fstp %st(0)
X fnstsw %ax
X sahf
X jae .L2
X flds -4(%ebp)
X fchs
X fstps -4(%ebp)
X movl $-1,%edx
L2:
X flds -4(%ebp)
X fldl .LC0
X fcompp
X fnstsw %ax
X sahf
X jae .L3
X flds 8(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fldl .LC1
X fmulp
X testl %edx,%edx
X jg .L7
X fchs
L7:
X leave
X ret
L3:
X flds -4(%ebp)
X fldl .LC1
X fcompp
X fnstsw %ax
X sahf
X jae .L6
X flds -4(%ebp)
X fldl2e
X fmulp
X fstl %st(1)
X frndint
X fstl %st(2)
X fsubrp
X f2xm1
X fld1
X faddp
X fscale
X fst %st(1)
X fld1
X fdivp
X fsubrp
X fldl .LC1
X fmulp
X leave
X ret
L6:
X flds -4(%ebp)
X fmuls -4(%ebp)
X fstps -88(%ebp)
X flds -88(%ebp)
X fstpl -12(%ebp)
X fldl -12(%ebp)
X fmull p3
X faddl p2
X fmull -12(%ebp)
X faddl p1
X fmull -12(%ebp)
X faddl p0
X flds -4(%ebp)
X fstpl -20(%ebp)
X fmull -20(%ebp)
X fstpl -88(%ebp)
X fldl -12(%ebp)
X faddl q2
X fmull -12(%ebp)
X faddl q1
X fmull -12(%ebp)
X faddl q0
X fstpl -60(%ebp)
X fldl -88(%ebp)
X fdivl -60(%ebp)
X pushl %edx
X fildl (%esp)
X addl $4,%esp
X fstps -64(%ebp)
X flds -64(%ebp)
X fstpl -72(%ebp)
X fmull -72(%ebp)
X addl $-4,%esp
X fstps (%esp)
X flds (%esp)
X addl $4,%esp
X leave
X ret
SHAR_EOF
chmod 0644 sinhf.s ||
echo 'restore of sinhf.s failed'
Wc_c="`wc -c < 'sinhf.s'`"
test 2072 -eq "$Wc_c" ||
echo 'sinhf.s: original size 2072, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= asinf.s ==============
if test -f 'asinf.s' -a X"$1" != X"-c"; then
echo 'x - skipping asinf.s (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting asinf.s (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'asinf.s' &&
/*
SHAR_EOF
true || echo 'restore of asinf.s failed'
fi
echo 'End of mathlib2.0 part 3'
echo 'File asinf.s is continued in part 4'
echo 4 > _shar_seq_.tmp
exit 0
--
Glenn Geers | "So when it's over, we're back to people.
Department of Theoretical Physics | Just to prove that human touch can have
The University of Sydney | no equal."
Sydney NSW 2006 Australia | - Basia Trzetrzelewska, 'Prime Time TV'
More information about the Alt.sources
mailing list