1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00

1 Commits

Author SHA1 Message Date
baf7257d89 This commit was manufactured by cvs2svn to create tag 'V1_168'.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/tags/V1_168@14701 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2004-08-07 10:24:05 +00:00
58 changed files with 3358 additions and 4098 deletions

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.68k,v 1.8 2004-08-25 15:27:27 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.3 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -144,7 +144,6 @@ C_LIB = \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_data.o \
@ -396,7 +395,6 @@ UNIX_LIB = \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \
mount_statfs.o \
stat_chmod.o \
@ -454,14 +452,12 @@ MATH_LIB = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isinf.o \
math_isnan.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \
@ -702,6 +698,11 @@ STARTUPS := nrcrt0.o nbcrt0.o nr32crt0.o nb32crt0.o ncrt0.o mainnb.o mainb.o mai
##############################################################################
all: \
lib/libm020/libm.a \
lib/libm.a \
lib/libb/libm020/libm.a \
lib/libb/libm.a \
lib/libb32/libm020/libm.a \
lib/nrcrt0.o \
lib/nbcrt0.o \
lib/ncrt0.o \
@ -709,12 +710,7 @@ all: \
lib/n32rcrt0.o \
lib/mainnb.o \
lib/mainb.o \
lib/mainb32.o \
lib/libm.a \
lib/libm020/libm.a \
lib/libb/libm.a \
lib/libb/libm020/libm.a \
lib/libb32/libm020/libm.a
lib/mainb32.o
##############################################################################

View File

@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.os4,v 1.6 2004-08-25 15:27:27 obarthel Exp $
# $Id: GNUmakefile.os4,v 1.3 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -138,7 +138,6 @@ C_LIB = \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o \
libgen_basename.o \
libgen_dirname.o \
locale_data.o \
@ -388,7 +387,6 @@ UNIX_LIB = \
fcntl_creat.o \
fcntl_fcntl.o \
fcntl_open.o \
fcntl_get_default_file.o \
mount_convertinfo.o \
mount_statfs.o \
stat_chmod.o \
@ -446,14 +444,12 @@ MATH_LIB = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isnan.o \
math_isinf.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "amiga.lib 1.175"
#define VSTRING "amiga.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "amiga.lib 1.168"
#define VSTRING "amiga.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "c.lib 1.175"
#define VSTRING "c.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: c.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "c.lib 1.168"
#define VSTRING "c.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: c.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "debug.lib 1.175"
#define VSTRING "debug.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "debug.lib 1.168"
#define VSTRING "debug.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

View File

@ -1,69 +0,0 @@
/*
* $Id: fcntl_get_default_file.c,v 1.1 2004-08-25 15:27:27 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
*/
#ifndef _FCNTL_HEADERS_H
#include "fcntl_headers.h"
#endif /* _FCNTL_HEADERS_H */
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
/****************************************************************************/
int
__get_default_file(int file_descriptor,long * file_ptr)
{
struct fd * fd;
int result = -1;
assert( file_descriptor >= 0 && file_descriptor < __num_fd );
assert( __fd[file_descriptor] != NULL );
assert( FLAG_IS_SET(__fd[file_descriptor]->fd_Flags,FDF_IN_USE) );
assert( file_ptr != NULL );
fd = __get_file_descriptor(file_descriptor);
if(fd == NULL)
{
errno = EBADF;
goto out;
}
(*file_ptr) = (long)fd->fd_DefaultFile;
result = 0;
out:
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: assert.h,v 1.2 2004-08-25 15:27:28 obarthel Exp $
* $Id: assert.h,v 1.1.1.1 2004-07-26 16:32:49 obarthel Exp $
*
* :ts=4
*
@ -36,12 +36,6 @@
/****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
#ifndef assert
/****************************************************************************/
@ -73,10 +67,4 @@ extern void __assertion_failure(const char *file_name,int line_number,const char
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/****************************************************************************/
#endif /* _ASSERT_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: ctype.h,v 1.3 2004-08-07 10:42:04 obarthel Exp $
* $Id: ctype.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -63,6 +63,12 @@ extern int toupper(int c);
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
#define isascii(c) ((unsigned)(c) <= 127)
/****************************************************************************/
/*
* If requested, reimplement the character classification functions as macros;
* note that the macro variants ignore the current locale and default to the
@ -107,12 +113,6 @@ extern const unsigned char * const __ctype_table;
/****************************************************************************/
/* The following is not part of the ISO 'C' (1994) standard. */
#define isascii(c) ((unsigned)(c) <= 127)
/****************************************************************************/
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@ -1,5 +1,5 @@
/*
* $Id: dos.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
* $Id: dos.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -112,18 +112,6 @@ extern void __set_a4(unsigned long value);
/****************************************************************************/
/*
* Obtain the low level 'file' handle or socket ID bound to a file
* descriptor. This function returns 0 for success and non-zero
* otherwise (if, for example, the file descriptor value you
* provided is not valid; errno will be set to the appropriate
* error code, too). Put a pointer to the file handle variable you
* want to be filled in into the second parameter to this function.
*/
extern int __get_default_file(int file_descriptor,long * file_ptr);
/****************************************************************************/
/*
* This will be set to TRUE if the current program was launched from
* the internet superserver ('inetd') or an equivalent facility.

View File

@ -1,5 +1,5 @@
/*
* $Id: math.h,v 1.4 2004-08-16 09:33:13 obarthel Exp $
* $Id: math.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -89,8 +89,6 @@ extern double rint(double x);
extern float rintf(float x);
extern int isinf(double x);
extern int isnan(double x);
extern double logb(double x);
extern double hypot(double x,double y);
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdarg.h,v 1.2 2004-09-09 08:25:30 obarthel Exp $
* $Id: stdarg.h,v 1.1.1.1 2004-07-26 16:32:53 obarthel Exp $
*
* :ts=4
*
@ -57,25 +57,12 @@ typedef char * va_list;
/****************************************************************************/
#else
/****************************************************************************/
#if defined(__GNUC__)
/* Use the compiler supplied, machine specific <stdarg.h> file. */
#undef _STDARG_H
#include_next "stdarg.h"
#include <sys/amigaos-va.h>
#else
#error "Unknown compiler"
#endif /* __GNUC__ */
/****************************************************************************/
#if defined(__GNUC__)
#undef _STDARG_H
#include_next "stdarg.h"
#else
#error "Unknown compiler"
#endif /* __GNUC__ */
#endif /* __amigaos4__ */
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio.h,v 1.3 2004-08-25 15:27:28 obarthel Exp $
* $Id: stdio.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -62,7 +62,7 @@ extern "C" {
* correspond to a real limitation for this 'C' runtime library and is
* included solely for ISO 'C' (1994) compliance.
*/
#define FOPEN_MAX 64
#define FOPEN_MAX 8
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: time.h,v 1.6 2004-09-10 07:39:20 obarthel Exp $
* $Id: time.h,v 1.2 2004-08-07 09:15:33 obarthel Exp $
*
* :ts=4
*
@ -52,7 +52,7 @@ extern "C" {
structure and try to get by with this definition. Sometimes it works,
sometimes it doesn't. Not sure if there really is a good solution for
this problem... */
#if !defined(__TIMEVAL_ALREADY_DEFINED) && !defined(__USE_CLIB2_TIMEVAL)
#ifndef DEVICES_TIMER_H
/****************************************************************************/
@ -73,23 +73,11 @@ extern "C" {
/****************************************************************************/
/* This will define the 'struct timeval' */
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif /* DEVICES_TIMER_H */
/****************************************************************************/
#endif /* INCLUDE_VERSION */
/****************************************************************************/
#endif /* !__TIMEVAL_ALREADY_DEFINED && !__USE_CLIB2_TIMEVAL */
/****************************************************************************/
/* If the timeval is still undefined or should be defined locally,
define our own now... */
#if !defined(__TIMEVAL_ALREADY_DEFINED)
#else
/****************************************************************************/
@ -106,7 +94,11 @@ struct timeval
/****************************************************************************/
#endif /* !__TIMEVAL_ALREADY_DEFINED */
#endif /* INCLUDE_VERSION */
/****************************************************************************/
#endif /* DEVICES_TIMER_H */
/****************************************************************************/

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "m.lib 1.175"
#define VSTRING "m.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: m.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "m.lib 1.168"
#define VSTRING "m.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: m.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "m881.lib 1.175"
#define VSTRING "m881.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "m881.lib 1.168"
#define VSTRING "m881.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: m881.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

View File

@ -1,5 +1,5 @@
/*
* $Id: math_acos.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_acos.c,v 1.1.1.1 2004-07-26 16:30:37 obarthel Exp $
*
* :ts=4
*
@ -226,7 +226,7 @@ acos(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_asin.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_asin.c,v 1.1.1.1 2004-07-26 16:30:38 obarthel Exp $
*
* :ts=4
*
@ -237,7 +237,7 @@ asin(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_atan2.c,v 1.3 2004-08-27 11:40:49 obarthel Exp $
* $Id: math_atan2.c,v 1.1.1.1 2004-07-26 16:30:39 obarthel Exp $
*
* :ts=4
*
@ -63,7 +63,7 @@ extern double __atan(double x);
/****************************************************************************/
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
const double pi = 3.14159265358979323846;
const double pi_over_2 = pi / 2.0;
@ -107,7 +107,7 @@ __atan2(double y,double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}
}
@ -135,7 +135,7 @@ __atan(double x)
}
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
double pi,pi_over_2;
double result;
@ -186,7 +186,7 @@ __atan2(double y,double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}
}
@ -201,6 +201,9 @@ __atan2(double y,double x)
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double
tiny = 1.0e-300,
zero = 0.0,
@ -210,7 +213,7 @@ pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
INLINE static const double
__atan2(double y,double x)
__atan2(double x,double y)
{
double z;
int k,m,hx,hy,ix,iy;
@ -319,11 +322,19 @@ __atan2(double y,double x)
/****************************************************************************/
double
atan2(double y,double x)
atan2(double x,double y)
{
double result;
result = __atan2(y,x);
if(x != 0.0 && y != 0.0)
{
result = __atan2(x,y);
}
else
{
result = HUGE_VAL;
errno = EDOM;
}
return(result);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_data.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_data.c,v 1.1.1.1 2004-07-26 16:30:40 obarthel Exp $
*
* :ts=4
*
@ -48,5 +48,3 @@ struct Library * MathIeeeDoubTransBase;
/****************************************************************************/
double __huge_val;
double __not_a_number;
double __infinity;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_exp.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
* $Id: math_exp.c,v 1.1.1.1 2004-07-26 16:30:41 obarthel Exp $
*
* :ts=4
*
@ -194,7 +194,7 @@ __exp(double x)
}
else
{
k = (int)(invln2*x+halF[xsb]);
k = invln2*x+halF[xsb];
t = k;
hi = x - t*ln2HI[0]; /* t*ln2HI is exact here */
lo = t*ln2LO[0];

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fmod.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_fmod.c,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
*
* :ts=4
*
@ -284,7 +284,7 @@ fmod(double x,double y)
}
else
{
result = x;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: math_fp_support.h,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_fp_support.h,v 1.1.1.1 2004-07-26 16:30:44 obarthel Exp $
*
* :ts=4
*
@ -36,47 +36,9 @@
/****************************************************************************/
/* If any of the three supported floating point support flavours is
enabled, make sure that the generic 'FLOATING_POINT_SUPPORT' symbol
is defined, too.*/
#if (defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT) || defined(PPC_FLOATING_POINT_SUPPORT))
#define FLOATING_POINT_SUPPORT
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT || PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
/* This selects whether or not the 'long double' type should be used. So far,
only 'double' can be supported, and 'long double' defaults to 'double'. */
/*#define USE_LONG_DOUBLE*/
/****************************************************************************/
#if defined(USE_LONG_DOUBLE)
typedef long double __long_double_t;
#else
typedef double __long_double_t;
#endif /* USE_LONG_DOUBLE */
/****************************************************************************/
/* 'Portable' raw representations of three IEEE floating point formats. */
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
#endif
/****************************************************************************/

View File

@ -1,5 +1,5 @@
/*
* $Id: math_headers.h,v 1.4 2004-08-27 13:49:17 obarthel Exp $
* $Id: math_headers.h,v 1.1.1.1 2004-07-26 16:30:45 obarthel Exp $
*
* :ts=4
*
@ -38,7 +38,6 @@
#include <limits.h>
#include <errno.h>
#include <float.h>
#include <math.h>
/****************************************************************************/
@ -148,33 +147,6 @@ do { \
(d) = sl_u.value; \
} while (0)
/* A union which permits us to convert between a float and a 32 bit
int. */
typedef union
{
float value;
unsigned int word;
} ieee_float_shape_type;
/* Get a 32 bit int from a float. */
#define GET_FLOAT_WORD(i,d) \
do { \
ieee_float_shape_type gf_u; \
gf_u.value = (d); \
(i) = gf_u.word; \
} while (0)
/* Set a float from a 32 bit int. */
#define SET_FLOAT_WORD(d,i) \
do { \
ieee_float_shape_type sf_u; \
sf_u.word = (i); \
(d) = sf_u.value; \
} while (0)
extern double __kernel_cos(double x, double y);
extern double __kernel_sin(double x, double y, int iy);
extern int __rem_pio2(double x, double *y);
@ -192,9 +164,4 @@ extern double __scalbn(double x, int n);
/****************************************************************************/
extern double __not_a_number;
extern double __infinity;
/****************************************************************************/
#endif /* _MATH_HEADERS_H */

View File

@ -1,171 +0,0 @@
/*
* $Id: math_hypot.c,v 1.1 2004-08-16 09:33:11 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
*
*
* PowerPC math library based in part on work by Sun Microsystems
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
*/
#ifndef _MATH_HEADERS_H
#include "math_headers.h"
#endif /* _MATH_HEADERS_H */
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
INLINE static const double
__hypot(double x,double y)
{
double yx;
x = fabs(x);
y = fabs(y);
if ( x < y )
{
double temp = x;
x = y;
y = temp;
}
if (x == 0.)
{
return 0.;
}
else
{
yx = y/x;
return x*sqrt(1. + yx*yx);
}
}
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
static const double one = 1.0;
INLINE static const double
__hypot(double x,double y)
{
int n0;
double a=x,b=y,t1,t2,y1,y2,w;
int j,k,ha,hb;
n0 = ((*(int*)&one)>>29)^1; /* high word index */
ha = *(n0+(int*)&x)&0x7fffffff; /* high word of x */
hb = *(n0+(int*)&y)&0x7fffffff; /* high word of y */
if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
*(n0+(int*)&a) = ha; /* a <- |a| */
*(n0+(int*)&b) = hb; /* b <- |b| */
if((ha-hb)>0x3c00000) {return a+b;} /* x/y > 2**60 */
k=0;
if(ha > 0x5f300000) { /* a>2**500 */
if(ha >= 0x7ff00000) { /* Inf or NaN */
w = a+b; /* for sNaN */
if(((ha&0xfffff)|*(1-n0+(int*)&a))==0) w = a;
if(((hb^0x7ff00000)|*(1-n0+(int*)&b))==0) w = b;
return w;
}
/* scale a and b by 2**-600 */
ha -= 0x25800000; hb -= 0x25800000; k += 600;
*(n0+(int*)&a) = ha;
*(n0+(int*)&b) = hb;
}
if(hb < 0x20b00000) { /* b < 2**-500 */
if(hb <= 0x000fffff) { /* subnormal b or 0 */
if((hb|(*(1-n0+(int*)&b)))==0) return a;
t1=0;
*(n0+(int*)&t1) = 0x7fd00000; /* t1=2^1022 */
b *= t1;
a *= t1;
k -= 1022;
} else { /* scale a and b by 2^600 */
ha += 0x25800000; /* a *= 2^600 */
hb += 0x25800000; /* b *= 2^600 */
k -= 600;
*(n0+(int*)&a) = ha;
*(n0+(int*)&b) = hb;
}
}
/* medium size a and b */
w = a-b;
if (w>b) {
t1 = 0;
*(n0+(int*)&t1) = ha;
t2 = a-t1;
w = sqrt(t1*t1-(b*(-b)-t2*(a+t1)));
} else {
a = a+a;
y1 = 0;
*(n0+(int*)&y1) = hb;
y2 = b - y1;
t1 = 0;
*(n0+(int*)&t1) = ha+0x00100000;
t2 = a - t1;
w = sqrt(t1*y1-(w*(-w)-(t1*y2+t2*b)));
}
if(k!=0) {
t1 = 1.0;
*(n0+(int*)&t1) += (k<<20);
return t1*w;
} else return w;
}
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
double
hypot(double x,double y)
{
double result;
result = __hypot(x,y);
return(result);
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_init_exit.c,v 1.3 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_init_exit.c,v 1.1.1.1 2004-07-26 16:30:46 obarthel Exp $
*
* :ts=4
*
@ -121,87 +121,41 @@ __math_init(void)
#endif /* IEEE_FLOATING_POINT_SUPPORT */
/* Now fill in the HUGE_VAL constant, which is set to
the largest representable floating point value. */
* +Infinity.
*/
if(sizeof(__huge_val) == 4) /* single precision */
{
static const unsigned long largest_fp_value[1] =
static const unsigned long infinity[] =
{
/* Exponent = +126, Mantissa = 8,388,607 */
0x7f7fffff
0x7F800000
};
static const unsigned long not_a_number[1] =
{
/* Exponent = 255 and fraction != 0.0 */
0x7fffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[1] =
{
/* Exponent = 255 and fraction = 0.0 */
0x7f800000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
else if (sizeof(__huge_val) == 8) /* double precision */
{
static const unsigned long largest_fp_value[2] =
static const unsigned long infinity[] =
{
/* Exponent = +1022, Mantissa = 4,503,599,627,370,495 */
0x7fefffff,0xffffffff
0x7FF00000,0x00000000
};
static const unsigned long not_a_number[2] =
{
/* Exponent = 2047 and fraction != 0.0 */
0x7fffffff,0xffffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[2] =
{
/* Exponent = 2047 and fraction = 0.0 */
0x7ff00000,0x00000000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(__huge_val) == 12) /* extended precision */
{
static const unsigned long largest_fp_value[3] =
static const unsigned long infinity[] =
{
/* Exponent = +32766, Mantissa = 18,446,744,073,709,551,615 */
0x7ffe0000,0xffffffff,0xffffffff
0x7FFF0000,0x00000000,0x00000000
};
static const unsigned long not_a_number[3] =
{
/* Exponent = 32767 and fraction != 0.0 */
0x7fff0000,0xffffffff,0xffffffff
};
assert( sizeof(infinity) == sizeof(__huge_val) );
static const unsigned long infinity[3] =
{
/* Exponent = 32767 and fraction = 0.0 */
0x7fff0000,0x00000000,0x00000000
};
assert( sizeof(largest_fp_value) == sizeof(__huge_val) );
memmove((void *)&__huge_val,largest_fp_value,sizeof(largest_fp_value));
memmove((void *)&__not_a_number,not_a_number,sizeof(not_a_number));
memmove((void *)&__infinity,infinity,sizeof(infinity));
memmove((void *)&__huge_val,infinity,sizeof(infinity));
}
#endif /* USE_LONG_DOUBLE */
result = OK;

View File

@ -1,5 +1,5 @@
/*
* $Id: math_isinf.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_isinf.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -45,6 +45,26 @@
/****************************************************************************/
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
/****************************************************************************/
int
isinf(double number)
{
@ -73,7 +93,6 @@ isinf(double number)
/* Exponent = 2047 and fraction = 0.0 */
is_infinity = (((x.raw[0] & 0x7FFFFFFF) == 0x7FF00000) && (x.raw[1] == 0));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(number) == 12) /* extended precision */
{
union ieee_long_double x;
@ -83,7 +102,6 @@ isinf(double number)
/* Exponent = 32767 and fraction = 0.0 */
is_infinity = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && (x.raw[1] & 0x7FFFFFFF) == 0 && (x.raw[2] == 0));
}
#endif /* USE_LONG_DOUBLE */
else
{
/* Can't happen */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_isnan.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: math_isnan.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -45,6 +45,26 @@
/****************************************************************************/
union ieee_long_double
{
long double value;
unsigned long raw[3];
};
union ieee_double
{
double value;
unsigned long raw[2];
};
union ieee_single
{
float value;
unsigned long raw[1];
};
/****************************************************************************/
int
isnan(double number)
{
@ -72,17 +92,15 @@ isnan(double number)
/* Exponent = 2047 and fraction != 0.0 */
result = (((x.raw[0] & 0x7FF00000) == 0x7FF00000) && ((x.raw[0] & 0x000FFFFF) != 0 || (x.raw[1] != 0)));
}
#if defined(USE_LONG_DOUBLE)
else if (sizeof(number) == 12) /* extended precision */
{
union ieee_long_double x;
x.value = number;
/* Exponent = 32766 and fraction != 0.0 */
/* Exponent = 32767 and fraction != 0.0 */
result = (((x.raw[0] & 0x7FFF0000) == 0x7FFF0000) && ((x.raw[1] & 0x7FFFFFFF) != 0 || x.raw[2] != 0));
}
#endif /* USE_LONG_DOUBLE */
else
{
/* Can't happen */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_kernel_tan.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
* $Id: math_kernel_tan.c,v 1.1.1.1 2004-07-26 16:30:48 obarthel Exp $
*
* :ts=4
*
@ -82,21 +82,7 @@ double __kernel_tan(double x, double y, int iy)
unsigned int low;
GET_LOW_WORD(low,x);
if(((ix|low)|(iy+1))==0) return one/fabs(x);
else {
if (iy == 1)
return x;
else { /* compute -1 / (x+y) carefully */
double a, t;
z = w = x + y;
SET_LOW_WORD(z,0);
v = y - (z - x);
t = a = -one / w;
SET_LOW_WORD(t,0);
s = one + t * z;
return t + a * (s + t * v);
}
}
else return (iy==1)? x: -one/x;
}
}
if(ix>=0x3FE59428) { /* |x|>=0.6744 */

View File

@ -1,136 +0,0 @@
/*
* $Id: math_logb.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2004 by Olaf Barthel <olsen@sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
*
*
* PowerPC math library based in part on work by Sun Microsystems
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
*/
#ifndef _MATH_HEADERS_H
#include "math_headers.h"
#endif /* _MATH_HEADERS_H */
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
INLINE static const double
__logb(double x)
{
double result;
result = log(x) / log((double)FLT_RADIX);
return(result);
}
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
INLINE static const double
__logb(double x)
{
unsigned int lx,ix;
EXTRACT_WORDS(ix,lx,x);
ix &= 0x7fffffff; /* high |x| */
if((ix|lx)==0)
return -1.0/fabs(x);
if(ix>=0x7ff00000)
return x*x;
if((ix>>=20)==0) /* IEEE 754 logb */
return -1022.0;
else
return (double) (ix-1023);
}
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
double
logb(double x)
{
double result;
int sign;
if(x == 0.0)
{
result = -HUGE_VAL;
goto out;
}
if(isnan(x))
{
result = x;
goto out;
}
sign = isinf(x);
if(sign != 0)
{
if(sign < 0)
result = (-x);
else
result = x;
goto out;
}
result = __logb(x);
out:
return(result);
}
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_pow.c,v 1.2 2004-08-27 11:40:49 obarthel Exp $
* $Id: math_pow.c,v 1.1.1.1 2004-07-26 16:30:52 obarthel Exp $
*
* :ts=4
*
@ -286,12 +286,11 @@ __pow(double x,double y)
}
/* (x<0)**(non-int) is NaN */
n = ((unsigned int)hx>>31)+1;
if((n|yisint)==0) return (x-x)/(x-x);
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
if((n|(yisint-1))==0)
s = -one;/* (-ve)**(odd int) */
/* REDHAT LOCAL: This used to be
if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
but ANSI C says a right shift of a signed negative quantity is
implementation defined. */
if(((((unsigned int)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
/* |y| is huge */
if(iy>0x41e00000) { /* if |y| > 2**31 */
@ -300,11 +299,11 @@ __pow(double x,double y)
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
}
/* over/underflow if x is not close to one */
if(ix<0x3fefffff) return (hy<0)? s*huge*huge:s*tiny*tiny;
if(ix>0x3ff00000) return (hy>0)? s*huge*huge:s*tiny*tiny;
if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
/* now |1-x| is tiny <= 2**-20, suffice to compute
log(x) by x-x^2/2+x^3/3-x^4/4 */
t = ax-one; /* t has 20 trailing zeros */
t = ax-1; /* t has 20 trailing zeros */
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
v = t*ivln2_l-w*ivln2;
@ -312,7 +311,7 @@ __pow(double x,double y)
SET_LOW_WORD(t1,0);
t2 = v-(t1-u);
} else {
double ss,s2,s_h,s_l,t_h,t_l;
double s2,s_h,s_l,t_h,t_l;
n = 0;
/* take care subnormal number */
if(ix<0x00100000)
@ -326,11 +325,11 @@ __pow(double x,double y)
else {k=0;n+=1;ix -= 0x00100000;}
SET_HIGH_WORD(ax,ix);
/* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
v = one/(ax+bp[k]);
ss = u*v;
s_h = ss;
s = u*v;
s_h = s;
SET_LOW_WORD(s_h,0);
/* t_h=ax+bp[k] High */
t_h = zero;
@ -338,29 +337,33 @@ __pow(double x,double y)
t_l = ax - (t_h-bp[k]);
s_l = v*((u-s_h*t_h)-s_h*t_l);
/* compute log(ax) */
s2 = ss*ss;
s2 = s*s;
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
r += s_l*(s_h+ss);
r += s_l*(s_h+s);
s2 = s_h*s_h;
t_h = 3.0+s2+r;
SET_LOW_WORD(t_h,0);
t_l = r-((t_h-3.0)-s2);
/* u+v = ss*(1+...) */
/* u+v = s*(1+...) */
u = s_h*t_h;
v = s_l*t_h+t_l*ss;
/* 2/(3log2)*(ss+...) */
v = s_l*t_h+t_l*s;
/* 2/(3log2)*(s+...) */
p_h = u+v;
SET_LOW_WORD(p_h,0);
p_l = v-(p_h-u);
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
z_l = cp_l*p_h+p_l*cp+dp_l[k];
/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
t = (double)n;
t1 = (((z_h+z_l)+dp_h[k])+t);
SET_LOW_WORD(t1,0);
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
}
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
if(((((unsigned int)hx>>31)-1)|(yisint-1))==0)
s = -one;/* (-ve)**(odd int) */
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
y1 = y;
SET_LOW_WORD(y1,0);

View File

@ -1,5 +1,5 @@
/*
* $Id: math_rint.c,v 1.3 2004-08-27 13:49:17 obarthel Exp $
* $Id: math_rint.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -54,10 +54,6 @@
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
double
rint(double x)
{
@ -66,71 +62,5 @@ rint(double x)
/****************************************************************************/
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/
static const double
TWO52[2]={
4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
-4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
};
double
rint(double x)
{
int i0,j0,sx;
unsigned i,i1;
double w,t;
GET_HIGH_WORD(i0,x);
sx = (i0>>31)&1;
GET_LOW_WORD(i1,x);
j0 = ((i0>>20)&0x7ff)-0x3ff;
if(j0<20) {
if(j0<0) {
if(((i0&0x7fffffff)|i1)==0) return x;
i1 |= (i0&0x0fffff);
i0 &= 0xfffe0000;
i0 |= ((i1|-i1)>>12)&0x80000;
SET_HIGH_WORD(x,i0);
w = TWO52[sx]+x;
t = w-TWO52[sx];
GET_HIGH_WORD(i0,t);
SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
return t;
} else {
i = (0x000fffff)>>j0;
if(((i0&i)|i1)==0) return x; /* x is integral */
i>>=1;
if(((i0&i)|i1)!=0) {
if(j0==19) i1 = 0x40000000; else
i0 = (i0&(~i))|((0x20000)>>j0);
}
}
} else if (j0>51) {
if(j0==0x400) return x+x; /* inf or NaN */
else return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff))>>(j0-20);
if((i1&i)==0) return x; /* x is integral */
i>>=1;
if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
}
SET_HIGH_WORD(x,i0);
SET_LOW_WORD(x,i1);
w = TWO52[sx]+x;
return w-TWO52[sx];
}
/****************************************************************************/
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_rintf.c,v 1.2 2004-08-27 13:49:17 obarthel Exp $
* $Id: math_rintf.c,v 1.1 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -54,10 +54,6 @@
/****************************************************************************/
#if defined(IEEE_FLOATING_POINT_SUPPORT) || defined(M68881_FLOATING_POINT_SUPPORT)
/****************************************************************************/
float
rintf(float x)
{
@ -66,64 +62,5 @@ rintf(float x)
/****************************************************************************/
#endif /* IEEE_FLOATING_POINT_SUPPORT || M68881_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#if defined(PPC_FLOATING_POINT_SUPPORT)
/****************************************************************************/
/* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. */
/****************************************************************************/
static const float
TWO23[2]={
8.3886080000e+06, /* 0x4b000000 */
-8.3886080000e+06, /* 0xcb000000 */
};
float
rintf(float x)
{
int i0,j0,sx;
unsigned int i,i1;
float w,t;
GET_FLOAT_WORD(i0,x);
sx = (i0>>31)&1;
j0 = ((i0>>23)&0xff)-0x7f;
if(j0<23) {
if(j0<0) {
if((i0&0x7fffffff)==0) return x;
i1 = (i0&0x07fffff);
i0 &= 0xfff00000;
i0 |= ((i1|-i1)>>9)&0x400000;
SET_FLOAT_WORD(x,i0);
w = TWO23[sx]+x;
t = w-TWO23[sx];
GET_FLOAT_WORD(i0,t);
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
return t;
} else {
i = (0x007fffff)>>j0;
if((i0&i)==0) return x; /* x is integral */
i>>=1;
if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
}
} else {
if(j0==0x80) return x+x; /* inf or NaN */
else return x; /* x is integral */
}
SET_FLOAT_WORD(x,i0);
w = TWO23[sx]+x;
return w-TWO23[sx];
}
/****************************************************************************/
#endif /* PPC_FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */

View File

@ -1,5 +1,5 @@
/*
* $Id: math_sqrt.c,v 1.2 2004-08-21 18:57:40 obarthel Exp $
* $Id: math_sqrt.c,v 1.1.1.1 2004-07-26 16:30:53 obarthel Exp $
*
* :ts=4
*
@ -251,7 +251,7 @@ sqrt(double x)
}
else
{
result = 0;
result = HUGE_VAL;
errno = EDOM;
}

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "net.lib 1.175"
#define VSTRING "net.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: net.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "net.lib 1.168"
#define VSTRING "net.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: net.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#
# $Id: smakefile,v 1.7 2004-08-25 15:27:27 obarthel Exp $
# $Id: smakefile,v 1.4 2004-08-07 09:15:32 obarthel Exp $
#
# :ts=8
#
@ -163,8 +163,7 @@ FCNTL_OBJ = \
fcntl_lseek.o \
fcntl_open.o \
fcntl_read.o \
fcntl_write.o \
fcntl_get_default_file.o
fcntl_write.o
LIBGEN_OBJ = \
libgen_basename.o \
@ -190,14 +189,12 @@ MATH_OBJ = \
math_floor.o \
math_fmod.o \
math_frexp.o \
math_hypot.o \
math_init_exit.o \
math_isinf.o \
math_isnan.o \
math_ldexp.o \
math_log.o \
math_log10.o \
math_logb.o \
math_modf.o \
math_pow.o \
math_rint.o \

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "stack.lib 1.175"
#define VSTRING "stack.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "stack.lib 1.168"
#define VSTRING "stack.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: stack.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_protos.h,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: stdio_protos.h,v 1.1.1.1 2004-07-26 16:31:39 obarthel Exp $
*
* :ts=4
*
@ -200,4 +200,22 @@ extern void __duplicate_fd(struct fd * duplicate_fd,struct fd * original_fd);
/****************************************************************************/
#if defined(FLOATING_POINT_SUPPORT)
/****************************************************************************/
/* stdio_isnotanumber.c */
extern int __is_not_a_number(long double number);
/****************************************************************************/
/* stdio_isinfinity.c */
extern int __is_infinity(long double number);
/****************************************************************************/
#endif /* FLOATING_POINT_SUPPORT */
/****************************************************************************/
#endif /* _STDIO_PROTOS_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_puts.c,v 1.2 2004-09-10 07:39:19 obarthel Exp $
* $Id: stdio_puts.c,v 1.1.1.1 2004-07-26 16:31:40 obarthel Exp $
*
* :ts=4
*
@ -94,7 +94,7 @@ puts(const char *s)
out:
/* Note: if buffering is disabled for this stream, then we still
/* Note: if buffering is disabled for this stdout, then we still
may have buffered data around, queued to be printed right now.
This is intended to improve performance as it takes more effort
to write a single character to a file than to write a bunch. */

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_vfprintf.c,v 1.5 2004-09-10 07:39:19 obarthel Exp $
* $Id: stdio_vfprintf.c,v 1.2 2004-08-07 09:15:32 obarthel Exp $
*
* :ts=4
*
@ -72,7 +72,7 @@
/****************************************************************************/
static int
get_num_leading_digits(__long_double_t v)
get_num_leading_digits(long double v)
{
int num_digits;
@ -262,6 +262,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -343,6 +344,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -564,6 +566,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -620,6 +623,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -630,26 +634,25 @@ vfprintf(FILE * stream,const char * format, va_list arg)
const char * buffer_stop = &buffer[sizeof(buffer)-1];
char * buffer_start = buffer;
__long_double_t v;
int sign;
long double v;
output_buffer = buffer_start;
D(("sizeof(long double) == %ld",sizeof(v)));
if(parameter_size == parameter_size_long_double)
v = va_arg(arg, __long_double_t);
v = va_arg(arg, long double);
else
v = va_arg(arg, double);
if((sign = isinf(v)) != 0)
if(isinf(v) != 0)
{
SHOWMSG("infinity");
strcpy(output_buffer,"Inf");
output_len = 3;
if(sign < 0)
if(v < 0.0)
SET_FLAG(format_flags,FORMATF_IsNegative);
fill_character = ' ';
@ -673,7 +676,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
else
{
BOOL strip_trailing_zeroes = FALSE;
__long_double_t roundoff_fudge = 0.0;
long double roundoff_fudge = 0.0;
int max_digits = -1;
int exponent = 0;
int digit;
@ -710,7 +713,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
/* Figure out whether 'e' or 'f' format should be used. */
if(conversion_type == 'g' || conversion_type == 'e')
{
__long_double_t local_v = v;
long double local_v = v;
int local_exponent = 0;
/* Put one single digit in front of the decimal point. */
@ -975,7 +978,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
/* Remove the parameter from the argument vector and
don't produce any output. */
if(parameter_size == parameter_size_long_double)
(void)va_arg(arg, __long_double_t);
(void)va_arg(arg, long double);
else
(void)va_arg(arg, double);
@ -1009,6 +1012,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1163,6 +1167,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1218,6 +1223,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(arg == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1236,6 +1242,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(short_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1260,6 +1267,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1280,6 +1288,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1301,6 +1310,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
if(int_ptr == NULL)
{
errno = EFAULT;
result = EOF;
goto out;
}
}
@ -1513,7 +1523,7 @@ vfprintf(FILE * stream,const char * format, va_list arg)
may have buffered data around, queued to be printed right now.
This is intended to improve performance as it takes more effort
to write a single character to a file than to write a bunch. */
if(result != EOF && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE)
if(result > 0 && (iob->iob_Flags & IOBF_BUFFER_MODE) == IOBF_BUFFER_MODE_NONE)
{
if(__iob_write_buffer_is_valid(iob) && __flush_iob_write_buffer(iob) < 0)
result = EOF;

View File

@ -1,5 +1,5 @@
/*
* $Id: stdio_vfscanf.c,v 1.2 2004-08-08 10:55:57 obarthel Exp $
* $Id: stdio_vfscanf.c,v 1.1.1.1 2004-07-26 16:31:48 obarthel Exp $
*
* :ts=4
*
@ -456,8 +456,8 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
#if defined(FLOATING_POINT_SUPPORT)
{
__long_double_t sum = 0.0;
__long_double_t new_sum;
long double sum = 0.0;
long double new_sum;
BOOL is_negative = FALSE;
BOOL decimal_point_matches = FALSE;
BOOL have_exponent = FALSE;
@ -495,7 +495,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
SHOWMSG("extended format (long double)");
next_parameter = va_arg(arg,__long_double_t *);
next_parameter = va_arg(arg,long double *);
}
assert( next_parameter != NULL );
@ -520,7 +520,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
}
else
{
*((__long_double_t *)next_parameter) = 0;
*((long double *)next_parameter) = 0;
}
}
@ -869,7 +869,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
}
else
{
*((__long_double_t *)next_parameter) = sum;
*((long double *)next_parameter) = sum;
}
num_assignments++;
@ -912,7 +912,7 @@ __vfscanf(FILE *stream, const char *format, va_list arg)
{
SHOWMSG("extended format (long double)");
next_parameter = va_arg(arg,__long_double_t *);
next_parameter = va_arg(arg,long double *);
}
assert( next_parameter != NULL );

View File

@ -1,5 +1,5 @@
/*
* $Id: stdlib_qsort.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: stdlib_qsort.c,v 1.1.1.1 2004-07-26 16:32:02 obarthel Exp $
*
* :ts=4
*
@ -81,7 +81,7 @@
/* For an 68030 and beyond the alignment does not matter and you can skip the
second half of the test (everything beyond the 'nbytes >= sizeof(long)'). */
#if defined(M68020)
#define IS_WORD_ALIGNED(a,b) (1)
#define IS_WORD_ALIGNED(a,b) 1
#else
#define IS_WORD_ALIGNED(a,b) (((((unsigned long)(a)) | ((unsigned long)(b))) & 1) == 0)
#endif /* M68020 */

View File

@ -1,5 +1,5 @@
/*
* $Id: string_headers.h,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_headers.h,v 1.1.1.1 2004-07-26 16:32:14 obarthel Exp $
*
* :ts=4
*
@ -57,21 +57,4 @@
/****************************************************************************/
/* Address is neither aligned to a word or long word boundary. */
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
/* Address is aligned to a word boundary, but not to a long
word boundary. */
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
/* Address is aligned to a long word boundary. For an 68030 and beyond the
alignment does not matter. */
#if defined(M68020)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 3) == 0)
#else
#define IS_LONG_ALIGNED(a) (1)
#endif /* M68020 */
/****************************************************************************/
#endif /* _STRING_HEADERS_H */

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memchr.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memchr.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
/* Check if one of the four bytes which make up a long word is zero. */
#define LONG_CONTAINS_ZERO_OCTET(x) (((x) + 0xfefefeff) & ~((x) | 0x7f7f7f7f))

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memcmp.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memcmp.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static int
__memcmp(const char *m1,const char *m2,size_t len)
{
@ -148,16 +154,8 @@ __memcmp(const char *m1,const char *m2,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
int
memcmp(const void *ptr1, const void *ptr2, unsigned long len)
#else
int
memcmp(const void *ptr1, const void *ptr2, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
int result = 0;

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memcpy.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memcpy.c,v 1.1.1.1 2004-07-26 16:32:15 obarthel Exp $
*
* :ts=4
*
@ -184,16 +184,8 @@ extern void __bcopy(const void *src,void *dst,size_t len);
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memcpy(void *dst, const void *src, unsigned long len)
#else
void *
memcpy(void *dst, const void *src, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = dst;
@ -229,6 +221,12 @@ memcpy(void *dst, const void *src, size_t len)
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memcpy(unsigned char * to,unsigned char * from,size_t len)
{
@ -324,16 +322,8 @@ __memcpy(unsigned char * to,unsigned char * from,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memcpy(void *dst, const void *src, unsigned long len)
#else
void *
memcpy(void *dst, const void *src, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = dst;

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memmove.c,v 1.2 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memmove.c,v 1.1.1.1 2004-07-26 16:32:16 obarthel Exp $
*
* :ts=4
*
@ -351,6 +351,12 @@ memmove(void *dest, const void * src, size_t len)
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memmove(unsigned char * to,unsigned char * from,size_t len)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: string_memset.c,v 1.3 2004-08-14 11:11:01 obarthel Exp $
* $Id: string_memset.c,v 1.1.1.1 2004-07-26 16:32:17 obarthel Exp $
*
* :ts=4
*
@ -43,6 +43,12 @@
/****************************************************************************/
#define IS_UNALIGNED(a) ((((unsigned long)(a)) & 1) != 0)
#define IS_SHORT_ALIGNED(a) ((((unsigned long)(a)) & 3) == 2)
#define IS_LONG_ALIGNED(a) ((((unsigned long)(a)) & 1) == 0)
/****************************************************************************/
INLINE static void
__memset(unsigned char * to,unsigned char value,size_t len)
{
@ -126,16 +132,8 @@ __memset(unsigned char * to,unsigned char value,size_t len)
/****************************************************************************/
/* This is ugly: GCC 2.95.x assumes that 'unsigned long'<27>is used in the built-in
memcmp/memcpy/memset functions instead of 'size_t'. This can produce warnings
where none are necessary. */
#if defined(__GNUC__) && (__GNUC__ < 3)
void *
memset(void *ptr, int val, unsigned long len)
#else
void *
memset(void *ptr, int val, size_t len)
#endif /* __GNUC__ && __GNUC__ < 3 */
{
void * result = ptr;
unsigned char * m = ptr;

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 175
#define DATE "10.9.2004"
#define VERS "unix.lib 1.175"
#define VSTRING "unix.lib 1.175 (10.9.2004)\r\n"
#define VERSTAG "\0$VER: unix.lib 1.175 (10.9.2004)"
#define REVISION 168
#define DATE "7.8.2004"
#define VERS "unix.lib 1.168"
#define VSTRING "unix.lib 1.168 (7.8.2004)\r\n"
#define VERSTAG "\0$VER: unix.lib 1.168 (7.8.2004)"

View File

@ -1 +1 @@
175
168