diff options
39 files changed, 802 insertions, 266 deletions
@@ -1,7 +1,7 @@ List of known bugs (certainly very incomplete) ---------------------------------------------- -Time-stamp: <1997-11-05T16:59:11+0100 drepper> +Time-stamp: <1997-11-12T04:42:03+0100 drepper> This following list contains those bugs which I'm aware of. Please make sure that bugs you report are not listed here. If you can fix one @@ -55,6 +55,11 @@ Severity: [ *] to [***] checked for errors, but the whole file containing the same category. [PR libc/207] + +[ *] The libm-ieee `asin' function gives wrong results (at least for 0.5). + +[ *] _IO_getline can loop forever, at least with C++ + [PR libc/332] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ulrich Drepper drepper@cygnus.com @@ -1,3 +1,101 @@ +1997-11-13 01:07 Ulrich Drepper <drepper@cygnus.com> + + * manual/arith.texi: Update documentation according to most recent + ISO C 9X draft. + Document fma, fdim, fmin, and fmax. + * manual/math.texi: Allow multiple defitino of mul etc. + + * math/complex.h (I): Define using _Complex_U not _Imaginary_I. + + * math/libm-test.c: Add tests for fma. + + * math/math.h: Describe DECIMAL_DIG macro. Pretty print. + + * sysdeps/alpha/fpu/bits/mathdef.h: Define INFINITY as of type float. + Define DECIMAL_DIG. + * sysdeps/generic/bits/mathdef.h: Likewise. + * sysdeps/i386/bits/mathdef.h: Likewise. + * sysdeps/m68k/fpu/bits/mathdef.h: Likewise. + * sysdeps/powerpc/bits/mathdef.h: Likewise. + * sysdeps/sparc/fpu/bits/mathdef.h: Likewise. + + * sysdeps/ieee754/bits/nan.h: Define NAN as of type float. + * sysdeps/m68k/bits/nan.h. Likewise. Remove NANF and NANL. + +1997-11-12 17:50 Ulrich Drepper <drepper@cygnus.com> + + * sunrpc/xcrypt.c: Don't process #ident preprocessor instruction. + Reported by Philip Blundell <pb@nexus.co.uk>. + + * string/strndup.c: Use K&R like definition. + + * sysdeps/unix/sysv/linux/getcwd.c: New file. Use kernel information + instead of longish search for the name. + * sysdeps/posix/getcwd.c: Add support for use of the code as a + backup solution. + +1997-11-12 15:31 Philip Blundell <pb@nexus.co.uk> + + * sysdeps/unix/sysv/linux/arm/sysdep.h (SYS_ify): Don't add + SWI_BASE in twice. + + * sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter): + Use correct name to access PC. + + * sysdeps/unix/arm/sysdep.S: Include <bits/errno.h> not <errnos.h>. + + * sysdeps/generic/bits/types.h: Add __ino64_t and __off64_t. + * sysdeps/generic/bits/stat.h: Add struct stat64. + +1997-11-12 16:08 Ulrich Drepper <drepper@cygnus.com> + + * intl/loadmsgcat.c [_LIBC] (fstat): Don't define as __fstat since + now we have a definition as _fxstat. + * libio/fileops.c: Likewise. + * libio/oldfileops.c: Likewise. + Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>. + +1997-11-12 Andreas Jaeger <aj@arthur.rhein-neckar.de> + + * sysdeps/wordsize-32/inttypes.h (SIG_ATOMIC_MAX): Correct value. + * sysdeps/wordsize-64/inttypes.h (SIG_ATOMIC_MAX): Likewise. + +1997-11-11 Paul Eggert <eggert@twinsun.com> + + Add overflow checking for 64-bit time_t and 32-bit int. + + * time/time.h (__offtime): Now returns int. + + * time/offtime.c (__offtime): Return nonzero if successful; + check for tm_year overflow. + (DIV): New macro. + (LEAPS_THRU_END_OF): Handle negative years correctly. + + * time/tzset.c (__tz_convert): Return NULL if offtime cannot convert. + + * time/mktime.c (ranged_convert): New function. + (ydhms_tm_diff): Return nonzero if TP is null. + (__mktime_internal): Handle cases correctly even if they are near or + past the limits of time_t values that can be broken down to struct tm. + (print_tm, check_result, main): Diagnose localtime failures. + + * manual/time.texi: Document the fact that localtime returns 0 + if the time can't be represented. + +1997-11-12 06:03 Ulrich Drepper <drepper@cygnus.com> + + * time/strftime.c (memset_space, memset_zero): Use MEMPCPY, not + mempcpy. Patch by Ken'ichi Handa <handa@etl.go.jp>. + + * manual/time.texi: Document %F and %f format for strftime. + + * manual/arith.texi: Document copysign, nextafter and nan. + +1997-11-06 Andreas Jaeger <aj@arthur.rhein-neckar.de> + + * test-installation.pl: New file. Tests for some installation + problems. + 1997-11-11 21:30 Ulrich Drepper <drepper@cygnus.com> * include/sys/stat.h: Define stat, fstat, lstat and *64 variants diff --git a/bits/mathdef.h b/bits/mathdef.h index 93b60bd25f..15140997c0 100644 --- a/bits/mathdef.h +++ b/bits/mathdef.h @@ -31,10 +31,13 @@ typedef double double_t; /* `double' expressions are evaluated as /* Signal that both types are `double'. */ #define FLT_EVAL_METHOD 1 -/* Define `INFINITY' as value of type `float_t'. */ -#define INFINITY HUGE_VAL +/* Define `INFINITY' as value of type `float'. */ +#define INFINITY HUGE_VALF /* The values returned by `ilogb' for 0 and NaN respectively. */ #define FP_ILOGB0 0x80000001 #define FP_ILOGBNAN 0x7fffffff + +/* Number of decimal digits for the `double' type. */ +#define DECIMAL_DIG 15 diff --git a/bits/stat.h b/bits/stat.h index dab0cd00cb..3648fed738 100644 --- a/bits/stat.h +++ b/bits/stat.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -70,5 +70,23 @@ struct stat #define __S_IWRITE 0200 /* Write by owner. */ #define __S_IEXEC 0100 /* Execute by owner. */ +#ifdef __USE_LARGEFILE64 +struct stat64 + { + __dev_t st_dev; /* Device. */ + + __ino64_t st_ino; /* File serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __off64_t st_size; /* Size of file, in bytes. */ + + __time_t st_atime; /* Time of last access. */ + __time_t st_mtime; /* Time of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + }; +#endif + #endif /* bits/stat.h */ diff --git a/bits/types.h b/bits/types.h index fdb36f0b54..51fadd196e 100644 --- a/bits/types.h +++ b/bits/types.h @@ -67,6 +67,8 @@ typedef __u_quad_t __fsid_t; /* Type of file system IDs. */ typedef long int __clock_t; /* Type of CPU usage counts. */ typedef long int __rlim_t; /* Type for resource measurement. */ typedef __quad_t __rlim64_t; /* Type for resource measurement (LFS). */ +typedef __quad_t __ino64_t; /* Type for file serial numbers. */ +typedef __loff_t __off64_t; /* Type of file izes and offsets. */ /* Everythin' else. */ typedef long int __daddr_t; /* The type of a disk address. */ diff --git a/include/sys/stat.h b/include/sys/stat.h index be9bdd0c42..16950eb039 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -8,6 +8,7 @@ #define stat(fname, buf) __xstat (_STAT_VER, fname, buf) #define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) #define lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) +#define __lstat(fname, buf) __lxstat (_STAT_VER, fname, buf) #define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) #define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) #define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c index a67223ff7e..de0534269f 100644 --- a/intl/loadmsgcat.c +++ b/intl/loadmsgcat.c @@ -48,7 +48,6 @@ /* Rename the non ISO C functions. This is required by the standard because some ISO C functions will require linking with this object file and the name space must not be polluted. */ -# define fstat __fstat # define open __open # define close __close # define read __read diff --git a/libio/fileops.c b/libio/fileops.c index ffc57f1d37..a0cc2f7d0e 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -45,7 +45,6 @@ extern int errno; #ifdef _LIBC # define open(Name, Flags, Prot) __open (Name, Flags, Prot) # define close(FD) __close (FD) -# define fstat(FD, Statbuf) __fstat (FD, Statbuf) # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence) # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes) # define write(FD, Buf, NBytes) __write (FD, Buf, NBytes) diff --git a/libio/oldfileops.c b/libio/oldfileops.c index 71a2bc27a1..b426e88364 100644 --- a/libio/oldfileops.c +++ b/libio/oldfileops.c @@ -49,7 +49,6 @@ extern int errno; #ifdef _LIBC # define open(Name, Flags, Prot) __open (Name, Flags, Prot) # define close(FD) __close (FD) -# define fstat(FD, Statbuf) __fstat (FD, Statbuf) # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence) # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes) # define write(FD, Buf, NBytes) __write (FD, Buf, NBytes) diff --git a/manual/arith.texi b/manual/arith.texi index d0863f98df..a5ba31dde8 100644 --- a/manual/arith.texi +++ b/manual/arith.texi @@ -1,3 +1,19 @@ +@c We need some definitions here. +@ifclear cdor +@ifhtml +@set cdot · +@end ifhtml +@iftex +@set cdot @cdot +@end iftex +@ifclear cdot +@set cdot x +@end ifclear +@macro mul +@value{cdot} +@end macro +@end ifclear + @node Arithmetic, Date and Time, Mathematics, Top @chapter Low-Level Arithmetic Functions @@ -18,6 +34,8 @@ These functions are declared in the header files @file{math.h} and * Normalization Functions:: Hacks for radix-2 representations. * Rounding and Remainders:: Determining the integer and fractional parts of a float. +* Arithmetic on FP Values:: Setting and Modifying Single Bits of FP Values. +* Special arithmetic on FPs:: Special Arithmetic on FPs. * Integer Division:: Functions for performing integer division. * Parsing of Numbers:: Functions for ``reading'' numbers @@ -40,7 +58,7 @@ these situations. There is a special value for infinity. @comment math.h @comment ISO -@deftypevr Macro float_t INFINITY +@deftypevr Macro float INFINITY An expression representing the infinite value. @code{INFINITY} values are produced by mathematical operations like @code{1.0 / 0.0}. It is possible to continue the computations with this value since the basic @@ -85,7 +103,7 @@ a NaN. @comment math.h @comment GNU -@deftypevr Macro double NAN +@deftypevr Macro float NAN An expression representing a value which is ``not a number''. This macro is a GNU extension, available only on machines that support ``not a number'' values---that is to say, on all machines that support IEEE @@ -106,15 +124,39 @@ imaginary part of the numbers. In mathematics one uses the symbol ``i'' to mark a number as imaginary. For convenience the @file{complex.h} header defines two macros which allow to use a similar easy notation. -@deftypevr Macro float_t _Imaginary_I -This macro is a (compiler specific) representation of the value ``1i''. -I.e., it is the value for which +@deftypevr Macro {const float complex} _Complex_I +This macro is a representation of the complex number ``@math{0+1i}''. +Computing + +@smallexample +_Complex_I * _Complex_I = -1 +@end smallexample + +@noindent +leads to a real-valued result. If no @code{imaginary} types are +available it is easiest to use this value to construct complex numbers +from real values: + +@smallexample +3.0 - _Complex_I * 4.0 +@end smallexample + +@noindent +Without an optimizing compiler this is more expensive than the use of +@code{_Imaginary_I} but with is better than nothing. You can avoid all +the hassles if you use the @code{I} macro below if the name is not +problem. + +@deftypevr Macro {const float imaginary} _Imaginary_I +This macro is a representation of the value ``@math{1i}''. I.e., it is +the value for which @smallexample _Imaginary_I * _Imaginary_I = -1 @end smallexample @noindent +The result is not of type @code{float imaginary} but instead @code{float}. One can use it to easily construct complex number like in @smallexample @@ -129,11 +171,16 @@ imaginary part -4.0. @noindent A more intuitive approach is to use the following macro. -@deftypevr Macro float_t I +@deftypevr Macro {const float imaginary} I This macro has exactly the same value as @code{_Imaginary_I}. The problem is that the name @code{I} very easily can clash with macros or variables in programs and so it might be a good idea to avoid this name and stay at the safe side by using @code{_Imaginary_I}. + +If the implementation does not support the @code{imaginary} types +@code{I} is defined as @code{_Complex_I} which is the second best +solution. It still can be used in the same way but requires a most +clever compiler to get the same results. @end deftypevr @@ -379,7 +426,7 @@ whose imaginary part is @var{y}, the absolute value is @w{@code{sqrt @pindex math.h @pindex stdlib.h -Prototypes for @code{abs} and @code{labs} are in @file{stdlib.h}; +Prototypes for @code{abs}, @code{labs} and @code{llabs} are in @file{stdlib.h}; @code{fabs}, @code{fabsf} and @code{fabsl} are declared in @file{math.h}; @code{cabs}, @code{cabsf} and @code{cabsl} are declared in @file{complex.h}. @@ -400,6 +447,15 @@ This is similar to @code{abs}, except that both the argument and result are of type @code{long int} rather than @code{int}. @end deftypefun +@comment stdlib.h +@comment ISO +@deftypefun {long long int} llabs (long long int @var{number}) +This is similar to @code{abs}, except that both the argument and result +are of type @code{long long int} rather than @code{int}. + +This function is defined in @w{ISO C 9X}. +@end deftypefun + @comment math.h @comment ISO @deftypefun double fabs (double @var{number}) @@ -512,29 +568,6 @@ The value returned by @code{logb} is one less than the value that @code{frexp} would store into @code{*@var{exponent}}. @end deftypefun -@comment math.h -@comment ISO -@deftypefun double copysign (double @var{value}, double @var{sign}) -@deftypefunx float copysignf (float @var{value}, float @var{sign}) -@deftypefunx {long double} copysignl (long double @var{value}, long double @var{sign}) -These functions return a value whose absolute value is the -same as that of @var{value}, and whose sign matches that of @var{sign}. -This function appears in BSD and was standardized in @w{ISO C 9X}. -@end deftypefun - -@comment math.h -@comment ISO -@deftypefun int signbit (@emph{float-type} @var{x}) -@code{signbit} is a generic macro which can work on all floating-point -types. It returns a nonzero value if the value of @var{x} has its sign -bit set. - -This is not the same as @code{x < 0.0} since in some floating-point -formats (e.g., @w{IEEE 754}) the zero value is optionally signed. The -comparison @code{-0.0 < 0.0} will not be true while @code{signbit -(-0.0)} will return a nonzero value. -@end deftypefun - @node Rounding and Remainders @section Rounding and Remainder Functions @cindex rounding functions @@ -652,6 +685,161 @@ If @var{denominator} is zero, @code{drem} fails and sets @code{errno} to @end deftypefun |
