mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| baf7257d89 |
@ -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
|
||||
|
||||
##############################################################################
|
||||
|
||||
|
||||
@ -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 \
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
3156
library/changes
3156
library/changes
File diff suppressed because it is too large
Load Diff
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
@ -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);
|
||||
}
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@ -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__ */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@ -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
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
@ -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);
|
||||
|
||||
@ -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 */
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
3075
library/releasenotes
3075
library/releasenotes
File diff suppressed because it is too large
Load Diff
@ -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 \
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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. */
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 );
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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))
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
168
|
||||
|
||||
Reference in New Issue
Block a user