home *** CD-ROM | disk | FTP | other *** search
- From: glenn@qed.physics.su.OZ.AU (Glenn Geers)
- Newsgroups: alt.sources
- Subject: Alternative 80386 math lib v2.0 part03/06
- Message-ID: <1990Dec16.210323.28153@metro.ucc.su.OZ.AU>
- Date: 16 Dec 90 21:03:23 GMT
-
- Submitted-by: root@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'
-