mirror of git://sourceware.org/git/glibc.git
Sat Mar 16 20:08:22 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/alpha/memchr.S: new file. * sysdeps/alpha/memchr.c: obsolete file removed. Sat Mar 16 16:26:09 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> * misc/Makefile (headers): Add sysexits.h. * misc/sysexits.h: New file. Thu Mar 14 15:20:45 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/e_atan2.c (__ieee754_atan2): Change atan call to __atan. * sysdeps/libm-ieee754/e_atan2f.c (__ieee754_atan2f): Change atanf call to __atanf. * sysdeps/m68k/fpu/e_acos.c, sysdeps/m68k/fpu/e_acosf.c, sysdeps/m68k/fpu/e_asin.c, sysdeps/m68k/fpu/e_asinf.c, sysdeps/m68k/fpu/e_atanh.c, sysdeps/m68k/fpu/e_atanhf.c, sysdeps/m68k/fpu/e_cosh.c, sysdeps/m68k/fpu/e_coshf.c, sysdeps/m68k/fpu/e_exp.c, sysdeps/m68k/fpu/e_expf.c, sysdeps/m68k/fpu/e_fmod.c, sysdeps/m68k/fpu/e_fmodf.c, sysdeps/m68k/fpu/e_log.c, sysdeps/m68k/fpu/e_log10.c, sysdeps/m68k/fpu/e_log10f.c, sysdeps/m68k/fpu/e_logf.c, sysdeps/m68k/fpu/e_pow.c, sysdeps/m68k/fpu/e_powf.c, sysdeps/m68k/fpu/e_remainder.c, sysdeps/m68k/fpu/e_remainderf.c, sysdeps/m68k/fpu/e_scalb.c, sysdeps/m68k/fpu/e_scalbf.c, sysdeps/m68k/fpu/e_sinh.c, sysdeps/m68k/fpu/e_sinhf.c, sysdeps/m68k/fpu/e_sqrt.c, sysdeps/m68k/fpu/e_sqrtf.c, sysdeps/m68k/fpu/k_cos.c, sysdeps/m68k/fpu/k_cosf.c, sysdeps/m68k/fpu/k_sin.c, sysdeps/m68k/fpu/k_sinf.c, sysdeps/m68k/fpu/k_tan.c, sysdeps/m68k/fpu/k_tanf.c, sysdeps/m68k/fpu/s_atan.c, sysdeps/m68k/fpu/s_atanf.c, sysdeps/m68k/fpu/s_ceil.c, sysdeps/m68k/fpu/s_ceilf.c, sysdeps/m68k/fpu/s_cos.c, sysdeps/m68k/fpu/s_cosf.c, sysdeps/m68k/fpu/s_expm1.c, sysdeps/m68k/fpu/s_expm1f.c, sysdeps/m68k/fpu/s_fabs.c, sysdeps/m68k/fpu/s_fabsf.c, sysdeps/m68k/fpu/s_finite.c, sysdeps/m68k/fpu/s_finitef.c, sysdeps/m68k/fpu/s_floor.c, sysdeps/m68k/fpu/s_floorf.c, sysdeps/m68k/fpu/s_frexp.c, sysdeps/m68k/fpu/s_frexpf.c, sysdeps/m68k/fpu/s_ilogb.c, sysdeps/m68k/fpu/s_ilogbf.c, sysdeps/m68k/fpu/s_isinf.c, sysdeps/m68k/fpu/s_isinff.c, sysdeps/m68k/fpu/s_isnan.c, sysdeps/m68k/fpu/s_isnanf.c, sysdeps/m68k/fpu/s_ldexp.c, sysdeps/m68k/fpu/s_ldexpf.c, sysdeps/m68k/fpu/s_log1p.c, sysdeps/m68k/fpu/s_log1pf.c, sysdeps/m68k/fpu/s_logb.c, sysdeps/m68k/fpu/s_logbf.c, sysdeps/m68k/fpu/s_modf.c, sysdeps/m68k/fpu/s_modff.c, sysdeps/m68k/fpu/s_rint.c, sysdeps/m68k/fpu/s_rintf.c, sysdeps/m68k/fpu/s_scalbn.c, sysdeps/m68k/fpu/s_scalbnf.c, sysdeps/m68k/fpu/s_significand.c, sysdeps/m68k/fpu/s_significandf.c, sysdeps/m68k/fpu/s_sin.c, sysdeps/m68k/fpu/s_sinf.c, sysdeps/m68k/fpu/s_tan.c, sysdeps/m68k/fpu/s_tanf.c, sysdeps/m68k/fpu/s_tanh.c, sysdeps/m68k/fpu/s_tanhf.c: New files, for m68881 port of fdlibm. * sysdeps/m68k/fpu/__math.h: Rewritten for fdlibm. * sysdeps/m68k/fpu/isinfl.c: Rewritten to get argument type right. * sysdeps/m68k/fpu/isnanl.c: Likewise. Thu Mar 14 06:01:07 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> * posix/glob.c (glob): In GLOB_BRACE brace expansion, fix buffer size calculation to include trailing invariant portion. Don't use alloca; instead use a dynamic auto array for GCC, malloc for non-GCC. Handle nested braces properly. * elf/elf.h (Elf32_auxv_t): Specify prototype (void) for `a_un.a_fcn'. * libc-symbols.h (lint): New macro. Fri Mar 15 01:18:00 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libio/iosetvbuf.c: Add weak alias setvbuf.
This commit is contained in:
parent
d3b7d2ac93
commit
6025c399e9
76
ChangeLog
76
ChangeLog
|
@ -1,3 +1,79 @@
|
||||||
|
Sat Mar 16 20:08:22 1996 David Mosberger-Tang <davidm@azstarnet.com>
|
||||||
|
|
||||||
|
* sysdeps/alpha/memchr.S: new file.
|
||||||
|
* sysdeps/alpha/memchr.c: obsolete file removed.
|
||||||
|
|
||||||
|
Sat Mar 16 16:26:09 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* misc/Makefile (headers): Add sysexits.h.
|
||||||
|
* misc/sysexits.h: New file.
|
||||||
|
|
||||||
|
Thu Mar 14 15:20:45 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* sysdeps/libm-ieee754/e_atan2.c (__ieee754_atan2): Change atan
|
||||||
|
call to __atan.
|
||||||
|
* sysdeps/libm-ieee754/e_atan2f.c (__ieee754_atan2f): Change atanf
|
||||||
|
call to __atanf.
|
||||||
|
|
||||||
|
* sysdeps/m68k/fpu/e_acos.c, sysdeps/m68k/fpu/e_acosf.c,
|
||||||
|
sysdeps/m68k/fpu/e_asin.c, sysdeps/m68k/fpu/e_asinf.c,
|
||||||
|
sysdeps/m68k/fpu/e_atanh.c, sysdeps/m68k/fpu/e_atanhf.c,
|
||||||
|
sysdeps/m68k/fpu/e_cosh.c, sysdeps/m68k/fpu/e_coshf.c,
|
||||||
|
sysdeps/m68k/fpu/e_exp.c, sysdeps/m68k/fpu/e_expf.c,
|
||||||
|
sysdeps/m68k/fpu/e_fmod.c, sysdeps/m68k/fpu/e_fmodf.c,
|
||||||
|
sysdeps/m68k/fpu/e_log.c, sysdeps/m68k/fpu/e_log10.c,
|
||||||
|
sysdeps/m68k/fpu/e_log10f.c, sysdeps/m68k/fpu/e_logf.c,
|
||||||
|
sysdeps/m68k/fpu/e_pow.c, sysdeps/m68k/fpu/e_powf.c,
|
||||||
|
sysdeps/m68k/fpu/e_remainder.c, sysdeps/m68k/fpu/e_remainderf.c,
|
||||||
|
sysdeps/m68k/fpu/e_scalb.c, sysdeps/m68k/fpu/e_scalbf.c,
|
||||||
|
sysdeps/m68k/fpu/e_sinh.c, sysdeps/m68k/fpu/e_sinhf.c,
|
||||||
|
sysdeps/m68k/fpu/e_sqrt.c, sysdeps/m68k/fpu/e_sqrtf.c,
|
||||||
|
sysdeps/m68k/fpu/k_cos.c, sysdeps/m68k/fpu/k_cosf.c,
|
||||||
|
sysdeps/m68k/fpu/k_sin.c, sysdeps/m68k/fpu/k_sinf.c,
|
||||||
|
sysdeps/m68k/fpu/k_tan.c, sysdeps/m68k/fpu/k_tanf.c,
|
||||||
|
sysdeps/m68k/fpu/s_atan.c, sysdeps/m68k/fpu/s_atanf.c,
|
||||||
|
sysdeps/m68k/fpu/s_ceil.c, sysdeps/m68k/fpu/s_ceilf.c,
|
||||||
|
sysdeps/m68k/fpu/s_cos.c, sysdeps/m68k/fpu/s_cosf.c,
|
||||||
|
sysdeps/m68k/fpu/s_expm1.c, sysdeps/m68k/fpu/s_expm1f.c,
|
||||||
|
sysdeps/m68k/fpu/s_fabs.c, sysdeps/m68k/fpu/s_fabsf.c,
|
||||||
|
sysdeps/m68k/fpu/s_finite.c, sysdeps/m68k/fpu/s_finitef.c,
|
||||||
|
sysdeps/m68k/fpu/s_floor.c, sysdeps/m68k/fpu/s_floorf.c,
|
||||||
|
sysdeps/m68k/fpu/s_frexp.c, sysdeps/m68k/fpu/s_frexpf.c,
|
||||||
|
sysdeps/m68k/fpu/s_ilogb.c, sysdeps/m68k/fpu/s_ilogbf.c,
|
||||||
|
sysdeps/m68k/fpu/s_isinf.c, sysdeps/m68k/fpu/s_isinff.c,
|
||||||
|
sysdeps/m68k/fpu/s_isnan.c, sysdeps/m68k/fpu/s_isnanf.c,
|
||||||
|
sysdeps/m68k/fpu/s_ldexp.c, sysdeps/m68k/fpu/s_ldexpf.c,
|
||||||
|
sysdeps/m68k/fpu/s_log1p.c, sysdeps/m68k/fpu/s_log1pf.c,
|
||||||
|
sysdeps/m68k/fpu/s_logb.c, sysdeps/m68k/fpu/s_logbf.c,
|
||||||
|
sysdeps/m68k/fpu/s_modf.c, sysdeps/m68k/fpu/s_modff.c,
|
||||||
|
sysdeps/m68k/fpu/s_rint.c, sysdeps/m68k/fpu/s_rintf.c,
|
||||||
|
sysdeps/m68k/fpu/s_scalbn.c, sysdeps/m68k/fpu/s_scalbnf.c,
|
||||||
|
sysdeps/m68k/fpu/s_significand.c,
|
||||||
|
sysdeps/m68k/fpu/s_significandf.c, sysdeps/m68k/fpu/s_sin.c,
|
||||||
|
sysdeps/m68k/fpu/s_sinf.c, sysdeps/m68k/fpu/s_tan.c,
|
||||||
|
sysdeps/m68k/fpu/s_tanf.c, sysdeps/m68k/fpu/s_tanh.c,
|
||||||
|
sysdeps/m68k/fpu/s_tanhf.c: New files, for m68881 port of fdlibm.
|
||||||
|
|
||||||
|
* sysdeps/m68k/fpu/__math.h: Rewritten for fdlibm.
|
||||||
|
|
||||||
|
* sysdeps/m68k/fpu/isinfl.c: Rewritten to get argument type right.
|
||||||
|
* sysdeps/m68k/fpu/isnanl.c: Likewise.
|
||||||
|
|
||||||
|
Thu Mar 14 06:01:07 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* posix/glob.c (glob): In GLOB_BRACE brace expansion, fix buffer size
|
||||||
|
calculation to include trailing invariant portion. Don't use alloca;
|
||||||
|
instead use a dynamic auto array for GCC, malloc for non-GCC.
|
||||||
|
Handle nested braces properly.
|
||||||
|
|
||||||
|
* elf/elf.h (Elf32_auxv_t): Specify prototype (void) for `a_un.a_fcn'.
|
||||||
|
|
||||||
|
* libc-symbols.h (lint): New macro.
|
||||||
|
|
||||||
|
Fri Mar 15 01:18:00 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* libio/iosetvbuf.c: Add weak alias setvbuf.
|
||||||
|
|
||||||
Thu Mar 14 06:01:07 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
|
Thu Mar 14 06:01:07 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
|
||||||
|
|
||||||
* string/strnlen.c: New file.
|
* string/strnlen.c: New file.
|
||||||
|
|
|
@ -415,9 +415,9 @@ typedef struct
|
||||||
int a_type; /* Entry type */
|
int a_type; /* Entry type */
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
long a_val; /* Integer value */
|
long int a_val; /* Integer value */
|
||||||
void *a_ptr; /* Pointer value */
|
void *a_ptr; /* Pointer value */
|
||||||
void (*a_fcn) (); /* Function pointer value */
|
void (*a_fcn) (void); /* Function pointer value */
|
||||||
} a_un;
|
} a_un;
|
||||||
} Elf32_auxv_t;
|
} Elf32_auxv_t;
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,9 @@ Cambridge, MA 02139, USA. */
|
||||||
#define _LIBC 1
|
#define _LIBC 1
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
/* This disables sccsid/rcsid strings in lots of code of non-GNU origin. */
|
||||||
|
#define lint 1
|
||||||
/*
|
/*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -26,7 +26,7 @@ headers := sys/uio.h sys/ioctl.h sys/ptrace.h ioctls.h sys/file.h \
|
||||||
a.out.h nlist.h stab.h stab.def sgtty.h sys/dir.h sys/cdefs.h \
|
a.out.h nlist.h stab.h stab.def sgtty.h sys/dir.h sys/cdefs.h \
|
||||||
ttyent.h syscall.h syslog.h sys/syslog.h paths.h sys/reboot.h \
|
ttyent.h syscall.h syslog.h sys/syslog.h paths.h sys/reboot.h \
|
||||||
sys/mman.h sys/param.h fstab.h mntent.h search.h utmp.h \
|
sys/mman.h sys/param.h fstab.h mntent.h search.h utmp.h \
|
||||||
err.h error.h sys/queue.h
|
err.h error.h sys/queue.h sysexits.h
|
||||||
|
|
||||||
routines := brk sbrk sstk ioctl \
|
routines := brk sbrk sstk ioctl \
|
||||||
readv writev \
|
readv writev \
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1987, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* @(#)sysexits.h 8.1 (Berkeley) 6/2/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SYSEXITS_H_
|
||||||
|
#define _SYSEXITS_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SYSEXITS.H -- Exit status codes for system programs.
|
||||||
|
*
|
||||||
|
* This include file attempts to categorize possible error
|
||||||
|
* exit statuses for system programs, notably delivermail
|
||||||
|
* and the Berkeley network.
|
||||||
|
*
|
||||||
|
* Error numbers begin at EX__BASE to reduce the possibility of
|
||||||
|
* clashing with other exit statuses that random programs may
|
||||||
|
* already return. The meaning of the codes is approximately
|
||||||
|
* as follows:
|
||||||
|
*
|
||||||
|
* EX_USAGE -- The command was used incorrectly, e.g., with
|
||||||
|
* the wrong number of arguments, a bad flag, a bad
|
||||||
|
* syntax in a parameter, or whatever.
|
||||||
|
* EX_DATAERR -- The input data was incorrect in some way.
|
||||||
|
* This should only be used for user's data & not
|
||||||
|
* system files.
|
||||||
|
* EX_NOINPUT -- An input file (not a system file) did not
|
||||||
|
* exist or was not readable. This could also include
|
||||||
|
* errors like "No message" to a mailer (if it cared
|
||||||
|
* to catch it).
|
||||||
|
* EX_NOUSER -- The user specified did not exist. This might
|
||||||
|
* be used for mail addresses or remote logins.
|
||||||
|
* EX_NOHOST -- The host specified did not exist. This is used
|
||||||
|
* in mail addresses or network requests.
|
||||||
|
* EX_UNAVAILABLE -- A service is unavailable. This can occur
|
||||||
|
* if a support program or file does not exist. This
|
||||||
|
* can also be used as a catchall message when something
|
||||||
|
* you wanted to do doesn't work, but you don't know
|
||||||
|
* why.
|
||||||
|
* EX_SOFTWARE -- An internal software error has been detected.
|
||||||
|
* This should be limited to non-operating system related
|
||||||
|
* errors as possible.
|
||||||
|
* EX_OSERR -- An operating system error has been detected.
|
||||||
|
* This is intended to be used for such things as "cannot
|
||||||
|
* fork", "cannot create pipe", or the like. It includes
|
||||||
|
* things like getuid returning a user that does not
|
||||||
|
* exist in the passwd file.
|
||||||
|
* EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
|
||||||
|
* etc.) does not exist, cannot be opened, or has some
|
||||||
|
* sort of error (e.g., syntax error).
|
||||||
|
* EX_CANTCREAT -- A (user specified) output file cannot be
|
||||||
|
* created.
|
||||||
|
* EX_IOERR -- An error occurred while doing I/O on some file.
|
||||||
|
* EX_TEMPFAIL -- temporary failure, indicating something that
|
||||||
|
* is not really an error. In sendmail, this means
|
||||||
|
* that a mailer (e.g.) could not create a connection,
|
||||||
|
* and the request should be reattempted later.
|
||||||
|
* EX_PROTOCOL -- the remote system returned something that
|
||||||
|
* was "not possible" during a protocol exchange.
|
||||||
|
* EX_NOPERM -- You did not have sufficient permission to
|
||||||
|
* perform the operation. This is not intended for
|
||||||
|
* file system problems, which should use NOINPUT or
|
||||||
|
* CANTCREAT, but rather for higher level permissions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define EX_OK 0 /* successful termination */
|
||||||
|
|
||||||
|
#define EX__BASE 64 /* base value for error messages */
|
||||||
|
|
||||||
|
#define EX_USAGE 64 /* command line usage error */
|
||||||
|
#define EX_DATAERR 65 /* data format error */
|
||||||
|
#define EX_NOINPUT 66 /* cannot open input */
|
||||||
|
#define EX_NOUSER 67 /* addressee unknown */
|
||||||
|
#define EX_NOHOST 68 /* host name unknown */
|
||||||
|
#define EX_UNAVAILABLE 69 /* service unavailable */
|
||||||
|
#define EX_SOFTWARE 70 /* internal software error */
|
||||||
|
#define EX_OSERR 71 /* system error (e.g., can't fork) */
|
||||||
|
#define EX_OSFILE 72 /* critical OS file missing */
|
||||||
|
#define EX_CANTCREAT 73 /* can't create (user) output file */
|
||||||
|
#define EX_IOERR 74 /* input/output error */
|
||||||
|
#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
|
||||||
|
#define EX_PROTOCOL 76 /* remote error in protocol */
|
||||||
|
#define EX_NOPERM 77 /* permission denied */
|
||||||
|
#define EX_CONFIG 78 /* configuration error */
|
||||||
|
|
||||||
|
#define EX__MAX 78 /* maximum listed value */
|
||||||
|
|
||||||
|
#endif /* !_SYSEXITS_H_ */
|
121
posix/glob.c
121
posix/glob.c
|
@ -268,50 +268,123 @@ glob (pattern, flags, errfunc, pglob)
|
||||||
const char *begin = strchr (pattern, '{');
|
const char *begin = strchr (pattern, '{');
|
||||||
if (begin != NULL)
|
if (begin != NULL)
|
||||||
{
|
{
|
||||||
const char *end = strchr (begin + 1, '}');
|
|
||||||
if (end != NULL && end != begin + 1)
|
|
||||||
{
|
|
||||||
size_t restlen = strlen (end + 1) + 1;
|
|
||||||
const char *p, *comma;
|
|
||||||
char *buf;
|
|
||||||
size_t bufsz = 0;
|
|
||||||
int firstc;
|
int firstc;
|
||||||
|
size_t restlen;
|
||||||
|
const char *p, *end, *next;
|
||||||
|
unsigned int depth = 0;
|
||||||
|
|
||||||
|
/* Find the end of the brace expression, by counting braces.
|
||||||
|
While we're at it, notice the first comma at top brace level. */
|
||||||
|
end = begin + 1;
|
||||||
|
next = NULL;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
switch (*end++)
|
||||||
|
{
|
||||||
|
case ',':
|
||||||
|
if (depth == 0 && next == NULL)
|
||||||
|
next = end;
|
||||||
|
continue;
|
||||||
|
case '{':
|
||||||
|
++depth;
|
||||||
|
continue;
|
||||||
|
case '}':
|
||||||
|
if (depth-- == 0)
|
||||||
|
break;
|
||||||
|
continue;
|
||||||
|
case '\0':
|
||||||
|
return glob (pattern, flags &~ GLOB_BRACE, errfunc, pglob);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
restlen = strlen (end) + 1;
|
||||||
|
if (next == NULL)
|
||||||
|
next = end;
|
||||||
|
|
||||||
|
/* We have a brace expression. BEGIN points to the opening {,
|
||||||
|
NEXT points past the terminator of the first element, and END
|
||||||
|
points past the final }. We will accumulate result names from
|
||||||
|
recursive runs for each brace alternative in the buffer using
|
||||||
|
GLOB_APPEND. */
|
||||||
|
|
||||||
if (!(flags & GLOB_APPEND))
|
if (!(flags & GLOB_APPEND))
|
||||||
{
|
{
|
||||||
|
/* This call is to set a new vector, so clear out the
|
||||||
|
vector so we can append to it. */
|
||||||
pglob->gl_pathc = 0;
|
pglob->gl_pathc = 0;
|
||||||
pglob->gl_pathv = NULL;
|
pglob->gl_pathv = NULL;
|
||||||
}
|
}
|
||||||
firstc = pglob->gl_pathc;
|
firstc = pglob->gl_pathc;
|
||||||
for (p = begin + 1;; p = comma + 1)
|
|
||||||
|
/* In this loop P points to the beginning of the current element
|
||||||
|
and NEXT points past its terminator. */
|
||||||
|
p = begin + 1;
|
||||||
|
while (1)
|
||||||
{
|
{
|
||||||
|
/* Construct a whole name that is one of the brace
|
||||||
|
alternatives in a temporary buffer. */
|
||||||
int result;
|
int result;
|
||||||
comma = strchr (p, ',');
|
size_t bufsz = (begin - pattern) + (next - 1 - p) + restlen;
|
||||||
if (comma == NULL)
|
#ifdef __GNUC__
|
||||||
comma = strchr (p, '\0');
|
char onealt[bufsz];
|
||||||
if ((begin - pattern) + (comma - p) + 1 > bufsz)
|
#else
|
||||||
|
char *onealt = malloc (bufsz);
|
||||||
|
if (onealt == NULL)
|
||||||
{
|
{
|
||||||
if (bufsz * 2 < comma - p + 1)
|
if (!(flags & GLOB_APPEND))
|
||||||
bufsz *= 2;
|
globfree (&pglob);
|
||||||
else
|
return GLOB_NOSPACE;
|
||||||
bufsz = comma - p + 1;
|
|
||||||
buf = __alloca (bufsz);
|
|
||||||
}
|
}
|
||||||
memcpy (buf, pattern, begin - pattern);
|
#endif
|
||||||
memcpy (buf + (begin - pattern), p, comma - p);
|
memcpy (onealt, pattern, begin - pattern);
|
||||||
memcpy (buf + (begin - pattern) + (comma - p), end, restlen);
|
memcpy (&onealt[begin - pattern], p, next - 1 - p);
|
||||||
result = glob (buf, ((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) |
|
memcpy (&onealt[(begin - pattern) + (next - 1 - p)],
|
||||||
|
end, restlen);
|
||||||
|
result = glob (onealt,
|
||||||
|
((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) |
|
||||||
GLOB_APPEND), errfunc, pglob);
|
GLOB_APPEND), errfunc, pglob);
|
||||||
|
#ifndef __GNUC__
|
||||||
|
free (onealt);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If we got an error, return it. */
|
||||||
if (result && result != GLOB_NOMATCH)
|
if (result && result != GLOB_NOMATCH)
|
||||||
|
{
|
||||||
|
if (!(flags & GLOB_APPEND))
|
||||||
|
globfree (pglob);
|
||||||
return result;
|
return result;
|
||||||
if (*comma == '\0')
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Advance past this alternative and process the next. */
|
||||||
|
p = next;
|
||||||
|
depth = 0;
|
||||||
|
scan:
|
||||||
|
switch (*p++)
|
||||||
|
{
|
||||||
|
case ',':
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
/* Found the next alternative. Loop to glob it. */
|
||||||
|
next = p;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
goto scan;
|
||||||
|
case '{':
|
||||||
|
++depth;
|
||||||
|
goto scan;
|
||||||
|
case '}':
|
||||||
|
if (depth-- == 0)
|
||||||
|
/* End of the brace expression. Break out of the loop. */
|
||||||
|
break;
|
||||||
|
goto scan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pglob->gl_pathc == firstc &&
|
if (pglob->gl_pathc == firstc &&
|
||||||
!(flags & (GLOB_NOCHECK|GLOB_NOMAGIC)))
|
!(flags & (GLOB_NOCHECK|GLOB_NOMAGIC)))
|
||||||
return GLOB_NOMATCH;
|
return GLOB_NOMATCH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Find the filename. */
|
/* Find the filename. */
|
||||||
filename = strrchr (pattern, '/');
|
filename = strrchr (pattern, '/');
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
Contributed by David Mosberger (davidm@cs.arizona.edu).
|
||||||
|
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
/* Finds characters in a memory area. Optimized for the Alpha
|
||||||
|
architecture:
|
||||||
|
|
||||||
|
- memory accessed as aligned quadwords only
|
||||||
|
- uses cmpbge to compare 8 bytes in parallel
|
||||||
|
- does binary search to find 0 byte in last
|
||||||
|
quadword (HAKMEM needed 12 instructions to
|
||||||
|
do this instead of the 9 instructions that
|
||||||
|
binary search needs).
|
||||||
|
|
||||||
|
For correctness consider that:
|
||||||
|
|
||||||
|
- only minimum number of quadwords may be accessed
|
||||||
|
- the third argument is an unsigned long
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
#ifdef __linux__
|
||||||
|
# include <alpha/regdef.h>
|
||||||
|
#else
|
||||||
|
#include <regdef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.set noreorder
|
||||||
|
.set noat
|
||||||
|
|
||||||
|
ENTRY(memchr)
|
||||||
|
beq a2, not_found
|
||||||
|
ldq_u t0, 0(a0) # load first quadword (a0 may be misaligned)
|
||||||
|
addq a0, a2, t4
|
||||||
|
and a1, 0xff, a1 # a1 = 00000000000000ch
|
||||||
|
ldq_u t5, -1(t4)
|
||||||
|
sll a1, 8, t1 # t1 = 000000000000ch00
|
||||||
|
cmpult a2, 9, t3
|
||||||
|
or t1, a1, a1 # a1 = 000000000000chch
|
||||||
|
sll a1, 16, t1 # t1 = 00000000chch0000
|
||||||
|
lda t2, -1(zero)
|
||||||
|
or t1, a1, a1 # a1 = 00000000chchchch
|
||||||
|
sll a1, 32, t1 # t1 = chchchch00000000
|
||||||
|
extql t0, a0, t6
|
||||||
|
or t1, a1, a1 # a1 = chchchchchchchch
|
||||||
|
|
||||||
|
beq t3, first_quad
|
||||||
|
|
||||||
|
extqh t5, a0, t5
|
||||||
|
mov a0, v0
|
||||||
|
or t6, t5, t0 # t0 = quadword starting at a0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Deal with the case where at most 8 bytes remain to be searched
|
||||||
|
# in t0. E.g.:
|
||||||
|
# a2 = 6
|
||||||
|
# t0 = ????c6c5c4c3c2c1
|
||||||
|
last_quad:
|
||||||
|
negq a2, t5
|
||||||
|
srl t2, t5, t5 # t5 = mask of a2 bits set
|
||||||
|
xor a1, t0, t0
|
||||||
|
cmpbge zero, t0, t1
|
||||||
|
and t1, t5, t1
|
||||||
|
beq t1, not_found
|
||||||
|
|
||||||
|
found_it:
|
||||||
|
# now, determine which byte matched:
|
||||||
|
negq t1, t2
|
||||||
|
and t1, t2, t1
|
||||||
|
|
||||||
|
and t1, 0x0f, t0
|
||||||
|
addq v0, 4, t2
|
||||||
|
cmoveq t0, t2, v0
|
||||||
|
|
||||||
|
and t1, 0x33, t0
|
||||||
|
addq v0, 2, t2
|
||||||
|
cmoveq t0, t2, v0
|
||||||
|
|
||||||
|
and t1, 0x55, t0
|
||||||
|
addq v0, 1, t2
|
||||||
|
cmoveq t0, t2, v0
|
||||||
|
|
||||||
|
done: ret
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Deal with the case where a2 > 8 bytes remain to be
|
||||||
|
# searched. a0 may not be aligned.
|
||||||
|
#
|
||||||
|
first_quad:
|
||||||
|
andnot a0, 0x7, v0
|
||||||
|
insqh t2, a0, t1 # t1 = 0000ffffffffffff (a0<0:2> ff bytes)
|
||||||
|
xor t0, a1, t0
|
||||||
|
or t0, t1, t0 # t0 = ====ffffffffffff
|
||||||
|
cmpbge zero, t0, t1
|
||||||
|
bne t1, found_it
|
||||||
|
|
||||||
|
/* at least one byte left to process */
|
||||||
|
|
||||||
|
ldq t0, 8(v0)
|
||||||
|
addq v0, 8, v0
|
||||||
|
/*
|
||||||
|
* Make a2 point to last quad to be accessed (the
|
||||||
|
* last quad may or may not be partial).
|
||||||
|
*/
|
||||||
|
subq t4, 1, a2
|
||||||
|
andnot a2, 0x7, a2
|
||||||
|
cmpult v0, a2, t1
|
||||||
|
beq t1, final
|
||||||
|
|
||||||
|
/* at least two quads remain to be accessed */
|
||||||
|
|
||||||
|
subq a2, v0, t3 # t3 <- number of quads to be processed in loop
|
||||||
|
and t3, 8, t3 # odd number of quads?
|
||||||
|
bne t3, odd_quad_count
|
||||||
|
|
||||||
|
/* at least three quads remain to be accessed */
|
||||||
|
|
||||||
|
mov t0, t3 # move prefetched value into correct register
|
||||||
|
|
||||||
|
.align 3
|
||||||
|
unrolled_loop:
|
||||||
|
ldq t0, 8(v0) # prefetch t0
|
||||||
|
xor a1, t3, t1
|
||||||
|
cmpbge zero, t1, t1
|
||||||
|
bne t1, found_it
|
||||||
|
|
||||||
|
addq v0, 8, v0
|
||||||
|
odd_quad_count:
|
||||||
|
xor a1, t0, t1
|
||||||
|
ldq t3, 8(v0) # prefetch t3
|
||||||
|
cmpbge zero, t1, t1
|
||||||
|
bne t1, found_it
|
||||||
|
|
||||||
|
addq v0, 8, v0
|
||||||
|
cmpult v0, a2, t5
|
||||||
|
bne t5, unrolled_loop
|
||||||
|
|
||||||
|
mov t3, t0 # move prefetched value into t0
|
||||||
|
final: subq t4, v0, a2 # a2 <- number of bytes left to do
|
||||||
|
bne a2, last_quad
|
||||||
|
|
||||||
|
not_found:
|
||||||
|
mov zero, v0
|
||||||
|
ret
|
||||||
|
|
||||||
|
.end memchr
|
|
@ -1,86 +0,0 @@
|
||||||
/* Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public License as
|
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version.
|
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
|
||||||
Cambridge, MA 02139, USA. */
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/* Search no more than N bytes of S for C. */
|
|
||||||
|
|
||||||
void *
|
|
||||||
memchr (const void *s, int c, size_t n)
|
|
||||||
{
|
|
||||||
const char *char_ptr;
|
|
||||||
const unsigned long int *longword_ptr;
|
|
||||||
unsigned long int charmask;
|
|
||||||
size_t x;
|
|
||||||
|
|
||||||
c = (unsigned char) c;
|
|
||||||
|
|
||||||
/* Handle the first few characters by reading one character at a time.
|
|
||||||
Do this until STR is aligned on a 8-byte border. */
|
|
||||||
for (char_ptr = s; n > 0 && ((unsigned long int) char_ptr & 7) != 0;
|
|
||||||
--n, ++char_ptr)
|
|
||||||
if (*char_ptr == c)
|
|
||||||
return (void *) char_ptr;
|
|
||||||
|
|
||||||
if (n == (size_t)0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
x = n;
|
|
||||||
|
|
||||||
longword_ptr = (unsigned long int *) char_ptr;
|
|
||||||
|
|
||||||
/* Set up a longword, each of whose bytes is C. */
|
|
||||||
charmask = c | (c << 8);
|
|
||||||
charmask |= charmask << 16;
|
|
||||||
charmask |= charmask << 32;
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
const unsigned long int longword = *longword_ptr++;
|
|
||||||
int ge, le;
|
|
||||||
|
|
||||||
if (x < 4)
|
|
||||||
x = (size_t) 0;
|
|
||||||
else
|
|
||||||
x -= 4;
|
|
||||||
|
|
||||||
/* Set bits in GE if bytes in CHARMASK are >= bytes in LONGWORD. */
|
|
||||||
asm ("cmpbge %1, %2, %0" : "=r" (ge) : "r" (charmask), "r" (longword));
|
|
||||||
|
|
||||||
/* Set bits in LE if bytes in CHARMASK are <= bytes in LONGWORD. */
|
|
||||||
asm ("cmpbge %2, %1, %0" : "=r" (le) : "r" (charmask), "r" (longword));
|
|
||||||
|
|
||||||
/* Bytes that are both <= and >= are == to C. */
|
|
||||||
if (ge & le)
|
|
||||||
{
|
|
||||||
/* Which of the bytes was the C? */
|
|
||||||
|
|
||||||
unsigned char *cp = (unsigned char *) (longword_ptr - 1);
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 7; i++)
|
|
||||||
if (cp[i] == c)
|
|
||||||
return &cp[i];
|
|
||||||
return &cp[7];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x == (size_t)0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
|
@ -74,7 +74,7 @@ pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
||||||
if(((ix|((lx|-lx)>>31))>0x7ff00000)||
|
if(((ix|((lx|-lx)>>31))>0x7ff00000)||
|
||||||
((iy|((ly|-ly)>>31))>0x7ff00000)) /* x or y is NaN */
|
((iy|((ly|-ly)>>31))>0x7ff00000)) /* x or y is NaN */
|
||||||
return x+y;
|
return x+y;
|
||||||
if((hx-0x3ff00000|lx)==0) return atan(y); /* x=1.0 */
|
if((hx-0x3ff00000|lx)==0) return __atan(y); /* x=1.0 */
|
||||||
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
||||||
|
|
||||||
/* when y = 0 */
|
/* when y = 0 */
|
||||||
|
@ -114,7 +114,7 @@ pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
|
||||||
k = (iy-ix)>>20;
|
k = (iy-ix)>>20;
|
||||||
if(k > 60) z=pi_o_2+0.5*pi_lo; /* |y/x| > 2**60 */
|
if(k > 60) z=pi_o_2+0.5*pi_lo; /* |y/x| > 2**60 */
|
||||||
else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
|
else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
|
||||||
else z=atan(fabs(y/x)); /* safe to do y/x */
|
else z=__atan(fabs(y/x)); /* safe to do y/x */
|
||||||
switch (m) {
|
switch (m) {
|
||||||
case 0: return z ; /* atan(+,+) */
|
case 0: return z ; /* atan(+,+) */
|
||||||
case 1: {
|
case 1: {
|
||||||
|
|
|
@ -49,7 +49,7 @@ pi_lo = 1.5099578832e-07; /* 0x34222168 */
|
||||||
if((ix>0x7f800000)||
|
if((ix>0x7f800000)||
|
||||||
(iy>0x7f800000)) /* x or y is NaN */
|
(iy>0x7f800000)) /* x or y is NaN */
|
||||||
return x+y;
|
return x+y;
|
||||||
if(hx==0x3f800000) return atanf(y); /* x=1.0 */
|
if(hx==0x3f800000) return __atanf(y); /* x=1.0 */
|
||||||
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
||||||
|
|
||||||
/* when y = 0 */
|
/* when y = 0 */
|
||||||
|
@ -89,7 +89,7 @@ pi_lo = 1.5099578832e-07; /* 0x34222168 */
|
||||||
k = (iy-ix)>>23;
|
k = (iy-ix)>>23;
|
||||||
if(k > 60) z=pi_o_2+(float)0.5*pi_lo; /* |y/x| > 2**60 */
|
if(k > 60) z=pi_o_2+(float)0.5*pi_lo; /* |y/x| > 2**60 */
|
||||||
else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
|
else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
|
||||||
else z=atanf(fabsf(y/x)); /* safe to do y/x */
|
else z=__atanf(fabsf(y/x)); /* safe to do y/x */
|
||||||
switch (m) {
|
switch (m) {
|
||||||
case 0: return z ; /* atan(+,+) */
|
case 0: return z ; /* atan(+,+) */
|
||||||
case 1: {
|
case 1: {
|
||||||
|
|
|
@ -19,8 +19,6 @@ Cambridge, MA 02139, USA. */
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#define __need_Emath
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#ifdef __NO_MATH_INLINES
|
#ifdef __NO_MATH_INLINES
|
||||||
/* This is used when defining the functions themselves. Define them with
|
/* This is used when defining the functions themselves. Define them with
|
||||||
|
@ -34,59 +32,87 @@ Cambridge, MA 02139, USA. */
|
||||||
#define __MATH_INLINES 1
|
#define __MATH_INLINES 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __inline_mathop2(func, op) \
|
/* Define a const math function. */
|
||||||
__m81_inline double \
|
#define __m81_defun(rettype, func, args) \
|
||||||
__m81_u(func)(double __mathop_x) __attribute__((__const__)); \
|
__m81_inline rettype \
|
||||||
__m81_inline double \
|
__m81_u(func) args __attribute__((__const__)); \
|
||||||
__m81_u(func)(double __mathop_x) \
|
__m81_inline rettype \
|
||||||
|
__m81_u(func) args
|
||||||
|
|
||||||
|
#define __inline_mathop(func, op) \
|
||||||
|
__m81_defun (double, func, (double __mathop_x)) \
|
||||||
{ \
|
{ \
|
||||||
double __result; \
|
double __result; \
|
||||||
__asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\
|
__asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\
|
||||||
return __result; \
|
return __result; \
|
||||||
}
|
}
|
||||||
#define __inline_mathop(op) __inline_mathop2(op, op)
|
|
||||||
|
|
||||||
__inline_mathop(acos)
|
#define __inline_mathopf(func, op) \
|
||||||
__inline_mathop(asin)
|
__m81_defun (float, func, (float __mathop_x)) \
|
||||||
__inline_mathop(atan)
|
{ \
|
||||||
__inline_mathop(cos)
|
float __result; \
|
||||||
__inline_mathop(sin)
|
__asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\
|
||||||
__inline_mathop(tan)
|
return __result; \
|
||||||
__inline_mathop(cosh)
|
}
|
||||||
__inline_mathop(sinh)
|
|
||||||
__inline_mathop(tanh)
|
|
||||||
__inline_mathop2(exp, etox)
|
|
||||||
__inline_mathop2(fabs, abs)
|
|
||||||
__inline_mathop(log10)
|
|
||||||
__inline_mathop2(log, logn)
|
|
||||||
__inline_mathop(sqrt)
|
|
||||||
|
|
||||||
__inline_mathop2(__rint, int)
|
/* ieee style elementary functions */
|
||||||
__inline_mathop2(__expm1, etoxm1)
|
__inline_mathop(__ieee754_acos, acos)
|
||||||
|
__inline_mathop(__ieee754_asin, asin)
|
||||||
|
__inline_mathop(__ieee754_cosh, cosh)
|
||||||
|
__inline_mathop(__ieee754_sinh, sinh)
|
||||||
|
__inline_mathop(__ieee754_exp, etox)
|
||||||
|
__inline_mathop(__ieee754_log10, log10)
|
||||||
|
__inline_mathop(__ieee754_log, logn)
|
||||||
|
__inline_mathop(__ieee754_sqrt, sqrt)
|
||||||
|
__inline_mathop(__ieee754_atanh, atanh)
|
||||||
|
|
||||||
#ifdef __USE_MISC
|
/* ieee style elementary float functions */
|
||||||
#ifndef __NO_MATH_INLINES
|
__inline_mathopf(__ieee754_acosf, acos)
|
||||||
__inline_mathop2(rint, int)
|
__inline_mathopf(__ieee754_asinf, asin)
|
||||||
__inline_mathop2(expm1, etoxm1)
|
__inline_mathopf(__ieee754_coshf, cosh)
|
||||||
#endif
|
__inline_mathopf(__ieee754_sinhf, sinh)
|
||||||
__inline_mathop2(log1p, lognp1)
|
__inline_mathopf(__ieee754_expf, etox)
|
||||||
__inline_mathop(atanh)
|
__inline_mathopf(__ieee754_log10f, log10)
|
||||||
#endif
|
__inline_mathopf(__ieee754_logf, logn)
|
||||||
|
__inline_mathopf(__ieee754_sqrtf, sqrt)
|
||||||
|
__inline_mathopf(__ieee754_atanhf, atan)
|
||||||
|
|
||||||
__m81_inline double
|
__inline_mathop(__atan, atan)
|
||||||
__m81_u(__drem)(double __x, double __y) __attribute__ ((__const__));
|
__inline_mathop(__cos, cos)
|
||||||
__m81_inline double
|
__inline_mathop(__sin, sin)
|
||||||
__m81_u(__drem)(double __x, double __y)
|
__inline_mathop(__tan, tan)
|
||||||
|
__inline_mathop(__tanh, tanh)
|
||||||
|
__inline_mathop(__fabs, abs)
|
||||||
|
__inline_mathop(__sqrt, sqrt)
|
||||||
|
|
||||||
|
__inline_mathop(__rint, int)
|
||||||
|
__inline_mathop(__expm1, etoxm1)
|
||||||
|
__inline_mathop(__log1p, lognp1)
|
||||||
|
__inline_mathop(__logb, log2)
|
||||||
|
__inline_mathop(__significand, getman)
|
||||||
|
|
||||||
|
__inline_mathopf(__atanf, atan)
|
||||||
|
__inline_mathopf(__cosf, cos)
|
||||||
|
__inline_mathopf(__sinf, sin)
|
||||||
|
__inline_mathopf(__tanf, tan)
|
||||||
|
__inline_mathopf(__tanhf, tanh)
|
||||||
|
__inline_mathopf(__fabsf, abs)
|
||||||
|
__inline_mathopf(__sqrtf, sqrt)
|
||||||
|
|
||||||
|
__inline_mathopf(__rintf, int)
|
||||||
|
__inline_mathopf(__expm1f, etoxm1)
|
||||||
|
__inline_mathopf(__log1pf, lognp1)
|
||||||
|
__inline_mathopf(__logbf, log2)
|
||||||
|
__inline_mathopf(__significandf, getman)
|
||||||
|
|
||||||
|
__m81_defun (double, __ieee754_remainder, (double __x, double __y))
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
__asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
__asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_defun (double, __ldexp, (double __x, int __e))
|
||||||
__m81_u(ldexp)(double __x, int __e) __attribute__ ((__const__));
|
|
||||||
__m81_inline double
|
|
||||||
__m81_u(ldexp)(double __x, int __e)
|
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
double __double_e = (double) __e;
|
double __double_e = (double) __e;
|
||||||
|
@ -94,10 +120,7 @@ __m81_u(ldexp)(double __x, int __e)
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_defun (double, __ieee754_fmod, (double __x, double __y))
|
||||||
__m81_u(fmod)(double __x, double __y) __attribute__ ((__const__));
|
|
||||||
__m81_inline double
|
|
||||||
__m81_u(fmod)(double __x, double __y)
|
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
__asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
__asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
||||||
|
@ -105,7 +128,7 @@ __m81_u(fmod)(double __x, double __y)
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_inline double
|
||||||
__m81_u(frexp)(double __value, int *__expptr)
|
__m81_u(__frexp)(double __value, int *__expptr)
|
||||||
{
|
{
|
||||||
double __mantissa, __exponent;
|
double __mantissa, __exponent;
|
||||||
__asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value));
|
__asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value));
|
||||||
|
@ -114,10 +137,7 @@ __m81_u(frexp)(double __value, int *__expptr)
|
||||||
return __mantissa;
|
return __mantissa;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_defun (double, __floor, (double __x))
|
||||||
__m81_u(floor)(double __x) __attribute__ ((__const__));
|
|
||||||
__m81_inline double
|
|
||||||
__m81_u(floor)(double __x)
|
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
unsigned long int __ctrl_reg;
|
unsigned long int __ctrl_reg;
|
||||||
|
@ -133,16 +153,13 @@ __m81_u(floor)(double __x)
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_defun (double, __ieee754_pow, (double __x, double __y))
|
||||||
__m81_u(pow)(double __x, double __y) __attribute__ ((__const__));
|
|
||||||
__m81_inline double
|
|
||||||
__m81_u(pow)(double __x, double __y)
|
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
if (__x == 0.0)
|
if (__x == 0.0)
|
||||||
{
|
{
|
||||||
if (__y <= 0.0)
|
if (__y <= 0.0)
|
||||||
__result = __infnan (EDOM);
|
__result = 0.0 / 0.0;
|
||||||
else
|
else
|
||||||
__result = 0.0;
|
__result = 0.0;
|
||||||
}
|
}
|
||||||
|
@ -162,22 +179,19 @@ __m81_u(pow)(double __x, double __y)
|
||||||
if (__y == __temp)
|
if (__y == __temp)
|
||||||
{
|
{
|
||||||
int i = (int) __y;
|
int i = (int) __y;
|
||||||
__result = __m81_u (exp) (__y * __m81_u (log) (-__x));
|
__result = __m81_u(__ieee754_exp)(__y * __m81_u(__ieee754_log)(-__x));
|
||||||
if (i & 1)
|
if (i & 1)
|
||||||
__result = -__result;
|
__result = -__result;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
__result = __infnan (EDOM);
|
__result = 0.0 / 0.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
__result = __m81_u(exp)(__y * __m81_u(log)(__x));
|
__result = __m81_u(__ieee754_exp)(__y * __m81_u(__ieee754_log)(__x));
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_defun (double, __ceil, (double __x))
|
||||||
__m81_u(ceil)(double __x) __attribute__ ((__const__));
|
|
||||||
__m81_inline double
|
|
||||||
__m81_u(ceil)(double __x)
|
|
||||||
{
|
{
|
||||||
double __result;
|
double __result;
|
||||||
unsigned long int __ctrl_reg;
|
unsigned long int __ctrl_reg;
|
||||||
|
@ -194,30 +208,25 @@ __m81_u(ceil)(double __x)
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline double
|
__m81_inline double
|
||||||
__m81_u(modf)(double __value, double *__iptr)
|
__m81_u(__modf)(double __value, double *__iptr)
|
||||||
{
|
{
|
||||||
double __modf_int = __m81_u(floor)(__value);
|
double __modf_int;
|
||||||
|
__asm ("fintrz%.x %1, %0" : "=f" (__modf_int) : "f" (__value));
|
||||||
*__iptr = __modf_int;
|
*__iptr = __modf_int;
|
||||||
return __value - __modf_int;
|
return __value - __modf_int;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline int
|
__m81_defun (int, __isinf, (double __value))
|
||||||
__m81_u(__isinf)(double __value) __attribute__ ((__const__));
|
|
||||||
__m81_inline int
|
|
||||||
__m81_u(__isinf)(double __value)
|
|
||||||
{
|
{
|
||||||
/* There is no branch-condition for infinity,
|
/* There is no branch-condition for infinity,
|
||||||
so we must extract and examine the condition codes manually. */
|
so we must extract and examine the condition codes manually. */
|
||||||
unsigned long int __fpsr;
|
unsigned long int __fpsr;
|
||||||
__asm("ftst%.x %1\n"
|
__asm("ftst%.x %1\n"
|
||||||
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
||||||
return (__fpsr & (2 << (3 * 8))) ? (__value < 0 ? -1 : 1) : 0;
|
return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline int
|
__m81_defun (int, __isnan, (double __value))
|
||||||
__m81_u(__isnan)(double __value) __attribute__ ((__const__));
|
|
||||||
__m81_inline int
|
|
||||||
__m81_u(__isnan)(double __value)
|
|
||||||
{
|
{
|
||||||
char __result;
|
char __result;
|
||||||
__asm("ftst%.x %1\n"
|
__asm("ftst%.x %1\n"
|
||||||
|
@ -225,23 +234,210 @@ __m81_u(__isnan)(double __value)
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline int
|
__m81_defun (int, __finite, (double __value))
|
||||||
__m81_u(__isinfl)(long double __value) __attribute__ ((__const__));
|
{
|
||||||
__m81_inline int
|
/* There is no branch-condition for infinity, so we must extract and
|
||||||
__m81_u(__isinfl)(long double __value)
|
examine the condition codes manually. */
|
||||||
|
unsigned long int __fpsr;
|
||||||
|
__asm ("ftst%.x %1\n"
|
||||||
|
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
||||||
|
return (__fpsr & (3 << 24)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __ilogb, (double __x))
|
||||||
|
{
|
||||||
|
double __result;
|
||||||
|
__asm("fgetexp%.x %1, %0" : "=f" (__result) : "f" (__x));
|
||||||
|
return (int) __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (double, __ieee754_scalb, (double __x, double __n))
|
||||||
|
{
|
||||||
|
double __result;
|
||||||
|
__asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__n), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (double, __scalbn, (double __x, int __n))
|
||||||
|
{
|
||||||
|
double __result;
|
||||||
|
double __double_n = (double) __n;
|
||||||
|
__asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__double_n), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ieee754_remainderf, (float __x, float __y))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
__asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ldexpf, (float __x, int __e))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
float __float_e = (float) __e;
|
||||||
|
__asm("fscale%.x %1, %0" : "=f" (__result) : "f" (__float_e), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ieee754_fmodf, (float __x, float __y))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
__asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_inline float
|
||||||
|
__m81_u(__frexpf)(float __value, int *__expptr)
|
||||||
|
{
|
||||||
|
float __mantissa, __exponent;
|
||||||
|
__asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value));
|
||||||
|
__asm("fgetman%.x %1, %0" : "=f" (__mantissa) : "f" (__value));
|
||||||
|
*__expptr = (int) __exponent;
|
||||||
|
return __mantissa;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __floorf, (float __x))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
unsigned long int __ctrl_reg;
|
||||||
|
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
|
||||||
|
/* Set rounding towards negative infinity. */
|
||||||
|
__asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */
|
||||||
|
: "dmi" ((__ctrl_reg & ~0x10) | 0x20));
|
||||||
|
/* Convert X to an integer, using -Inf rounding. */
|
||||||
|
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
|
||||||
|
/* Restore the previous rounding mode. */
|
||||||
|
__asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */
|
||||||
|
: "dmi" (__ctrl_reg));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ieee754_powf, (float __x, float __y))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
if (__x == 0.0f)
|
||||||
|
{
|
||||||
|
if (__y <= 0.0f)
|
||||||
|
__result = 0.0f / 0.0f;
|
||||||
|
else
|
||||||
|
__result = 0.0f;
|
||||||
|
}
|
||||||
|
else if (__y == 0.0f || __x == 1.0f)
|
||||||
|
__result = 1.0;
|
||||||
|
else if (__y == 1.0f)
|
||||||
|
__result = __x;
|
||||||
|
else if (__y == 2.0f)
|
||||||
|
__result = __x * __x;
|
||||||
|
else if (__x == 10.0f)
|
||||||
|
__asm("ftentox%.x %1, %0" : "=f" (__result) : "f" (__y));
|
||||||
|
else if (__x == 2.0f)
|
||||||
|
__asm("ftwotox%.x %1, %0" : "=f" (__result) : "f" (__y));
|
||||||
|
else if (__x < 0.0f)
|
||||||
|
{
|
||||||
|
float __temp = __m81_u(__rintf)(__y);
|
||||||
|
if (__y == __temp)
|
||||||
|
{
|
||||||
|
int i = (int) __y;
|
||||||
|
__result = __m81_u(__ieee754_expf)(__y * __m81_u(__ieee754_logf)(-__x));
|
||||||
|
if (i & 1)
|
||||||
|
__result = -__result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
__result = 0.0f / 0.0f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
__result = __m81_u(__ieee754_expf)(__y * __m81_u(__ieee754_logf)(__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ceilf, (float __x))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
unsigned long int __ctrl_reg;
|
||||||
|
__asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg));
|
||||||
|
/* Set rounding towards positive infinity. */
|
||||||
|
__asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */
|
||||||
|
: "dmi" (__ctrl_reg | 0x30));
|
||||||
|
/* Convert X to an integer, using +Inf rounding. */
|
||||||
|
__asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x));
|
||||||
|
/* Restore the previous rounding mode. */
|
||||||
|
__asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */
|
||||||
|
: "dmi" (__ctrl_reg));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_inline float
|
||||||
|
__m81_u(__modff)(float __value, float *__iptr)
|
||||||
|
{
|
||||||
|
float __modf_int;
|
||||||
|
__asm ("fintrz%.x %1, %0" : "=f" (__modf_int) : "f" (__value));
|
||||||
|
*__iptr = __modf_int;
|
||||||
|
return __value - __modf_int;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __isinff, (float __value))
|
||||||
{
|
{
|
||||||
/* There is no branch-condition for infinity,
|
/* There is no branch-condition for infinity,
|
||||||
so we must extract and examine the condition codes manually. */
|
so we must extract and examine the condition codes manually. */
|
||||||
unsigned long int __fpsr;
|
unsigned long int __fpsr;
|
||||||
__asm("ftst%.x %1\n"
|
__asm("ftst%.x %1\n"
|
||||||
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
||||||
return (__fpsr & (2 << (3 * 8))) ? (__value < 0 ? -1 : 1) : 0;
|
return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
__m81_inline int
|
__m81_defun (int, __isnanf, (float __value))
|
||||||
__m81_u(__isnanl)(long double __value) __attribute__ ((__const__));
|
{
|
||||||
__m81_inline int
|
char __result;
|
||||||
__m81_u(__isnanl)(long double __value)
|
__asm("ftst%.x %1\n"
|
||||||
|
"fsun %0" : "=dm" (__result) : "f" (__value));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __finitef, (float __value))
|
||||||
|
{
|
||||||
|
/* There is no branch-condition for infinity, so we must extract and
|
||||||
|
examine the condition codes manually. */
|
||||||
|
unsigned long int __fpsr;
|
||||||
|
__asm ("ftst%.x %1\n"
|
||||||
|
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
||||||
|
return (__fpsr & (3 << 24)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __ilogbf, (float __x))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
__asm("fgetexp%.x %1, %0" : "=f" (__result) : "f" (__x));
|
||||||
|
return (int) __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __ieee754_scalbf, (float __x, float __n))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
__asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__n), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (float, __scalbnf, (float __x, int __n))
|
||||||
|
{
|
||||||
|
float __result;
|
||||||
|
float __float_n = (float) __n;
|
||||||
|
__asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__float_n), "0" (__x));
|
||||||
|
return __result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __isinfl, (long double __value))
|
||||||
|
{
|
||||||
|
/* There is no branch-condition for infinity,
|
||||||
|
so we must extract and examine the condition codes manually. */
|
||||||
|
unsigned long int __fpsr;
|
||||||
|
__asm("ftst%.x %1\n"
|
||||||
|
"fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value));
|
||||||
|
return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
__m81_defun (int, __isnanl, (long double __value))
|
||||||
{
|
{
|
||||||
char __result;
|
char __result;
|
||||||
__asm("ftst%.x %1\n"
|
__asm("ftst%.x %1\n"
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC __ieee754_acos
|
||||||
|
#endif
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(FUNC, (x), double x)
|
||||||
|
{
|
||||||
|
return __m81_u(FUNC)(x);
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC __ieee754_acosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(FUNC, (x), float x)
|
||||||
|
{
|
||||||
|
return __m81_u(FUNC)(x);
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_asin
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_asinf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_atanh
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_atanhf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_cosh
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_coshf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_exp
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_expf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC __ieee754_fmod
|
||||||
|
#endif
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(FUNC, (x, y), double x AND double y)
|
||||||
|
{
|
||||||
|
return __m81_u(FUNC)(x, y);
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC __ieee754_fmodf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(FUNC, (x, y), float x AND float y)
|
||||||
|
{
|
||||||
|
return __m81_u(FUNC)(x, y);
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_log
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_log10
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_log10f
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_logf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_pow
|
||||||
|
#include <e_fmod.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_powf
|
||||||
|
#include <e_fmodf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_remainder
|
||||||
|
#include <e_fmod.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_remainderf
|
||||||
|
#include <e_fmodf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_scalb
|
||||||
|
#include <e_fmod.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_scalbf
|
||||||
|
#include <e_fmodf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_sinh
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_sinhf
|
||||||
|
#include <e_acosf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_sqrt
|
||||||
|
#include <e_acos.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC __ieee754_sqrtf
|
||||||
|
#include <e_acosf.c>
|
|
@ -1,4 +1,29 @@
|
||||||
#define FUNC __isinfl
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
#include <isinf.c>
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__isinfl, (x), long double x)
|
||||||
|
{
|
||||||
|
return __m81_u(__isinfl)(x);
|
||||||
|
}
|
||||||
|
|
||||||
weak_alias (__isinfl, isinfl)
|
weak_alias (__isinfl, isinfl)
|
||||||
|
|
|
@ -1,4 +1,29 @@
|
||||||
#define FUNC __isnanl
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
#include <isinf.c>
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__isnanl, (x), long double x)
|
||||||
|
{
|
||||||
|
return __m81_u(__isnanl)(x);
|
||||||
|
}
|
||||||
|
|
||||||
weak_alias (__isnanl, isnanl)
|
weak_alias (__isnanl, isnanl)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__kernel_cos, (x, y), double x AND double y)
|
||||||
|
{
|
||||||
|
return __cos (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__kernel_cosf, (x, y), float x AND float y)
|
||||||
|
{
|
||||||
|
return __cosf (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__kernel_sin, (x, y, iy), double x AND double y AND int iy)
|
||||||
|
{
|
||||||
|
return __sin (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__kernel_sinf, (x, y, iy), float x AND float y AND int iy)
|
||||||
|
{
|
||||||
|
return __sinf (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__kernel_tan, (x, y, iy), double x AND double y AND int iy)
|
||||||
|
{
|
||||||
|
if (iy == 1)
|
||||||
|
return __tan (x + y);
|
||||||
|
else
|
||||||
|
return -1.0 / __tan (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__kernel_tanf, (x, y, iy), float x AND float y AND int iy)
|
||||||
|
{
|
||||||
|
if (iy == 1)
|
||||||
|
return __tanf (x + y);
|
||||||
|
else
|
||||||
|
return -1.0 / __tanf (x + y);
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC atan
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x), double x)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC atanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x), float x)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC ceil
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC ceilf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC cos
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC cosf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC expm1
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC expm1f
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC fabs
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC fabsf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC finite
|
||||||
|
#include <s_isinf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC finitef
|
||||||
|
#include <s_isinff.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC floor
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC floorf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__frexp, (value, expptr), double value AND int *expptr)
|
||||||
|
{
|
||||||
|
return __m81_u(__frexp)(value, expptr);
|
||||||
|
}
|
||||||
|
weak_alias (__frexp, frexp)
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__frexpf, (value, expptr), float value AND int *expptr)
|
||||||
|
{
|
||||||
|
return __m81_u(__frexpf)(value, expptr);
|
||||||
|
}
|
||||||
|
weak_alias (__frexpf, frexpf)
|
|
@ -0,0 +1,29 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__ilogb, (x), double x)
|
||||||
|
{
|
||||||
|
return __m81_u(__ilogb)(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__ilogb, ilogb)
|
|
@ -0,0 +1,29 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__ilogbf, (x), float x)
|
||||||
|
{
|
||||||
|
return __m81_u(__ilogbf)(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__ilogbf, ilogbf)
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC isinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x), double x)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC isinff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
int
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x), float x)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC isnan
|
||||||
|
#include <s_isinf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC isnanf
|
||||||
|
#include <s_isinff.c>
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC ldexp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x, exp), double x AND int exp)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x, exp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#ifndef FUNC
|
||||||
|
#define FUNC ldexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__CONCATX(__,FUNC), (x, exp), float x AND int exp)
|
||||||
|
{
|
||||||
|
return __m81_u(__CONCATX(__,FUNC))(x, exp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define weak_aliasx(a,b) weak_alias(a,b)
|
||||||
|
weak_aliasx (__CONCATX(__,FUNC), FUNC)
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC log1p
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC log1pf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC logb
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC logbf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
double
|
||||||
|
DEFUN(__modf, (x, exp), double x AND double *iptr)
|
||||||
|
{
|
||||||
|
return __m81_u(__modf)(x, iptr);
|
||||||
|
}
|
||||||
|
weak_alias(__modf, modf)
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#define __NO_MATH_INLINES
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
float
|
||||||
|
DEFUN(__modff, (x, exp), float x AND float *iptr)
|
||||||
|
{
|
||||||
|
return __m81_u(__modff)(x, iptr);
|
||||||
|
}
|
||||||
|
weak_alias(__modff, modff)
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC rint
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC rintf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC scalbn
|
||||||
|
#include <s_ldexp.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC scalbnf
|
||||||
|
#include <s_ldexpf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC significand
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC significandf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC sin
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC sinf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC tan
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC tanf
|
||||||
|
#include <s_atanf.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC tanh
|
||||||
|
#include <s_atan.c>
|
|
@ -0,0 +1,2 @@
|
||||||
|
#define FUNC tanhf
|
||||||
|
#include <s_atanf.c>
|
Loading…
Reference in New Issue