diff options
149 files changed, 8449 insertions, 950 deletions
@@ -1,3 +1,281 @@ +1997-04-13 01:06 Ulrich Drepper <drepper@cygnus.com> + + * isomac.c: Improve messages. + + * math/Makefile (libm-calls): Add s_nearbyint, s_catan, s_casin, + s_ccos, s_csin, s_ctan, s_ctanh, s_cacos, s_casinh, s_cacosh, + s_catanh, s_csqrt, and s_cpow. + * math/libm-test.c: New functions ccos_test, cacos_test, cacosh_test, + casin_test, casinh_test, catan_test, catanh_test, ctanh_test, + csqrt_test, cpow_test, rint_test. + * math/math.h: Include new header mathbits.h which defines some + more (system dependent) types and some macros. + (isfinite): Use __finite instead of fpclassify. + * sysdeps/generic/mathbits.h: New file. + * sysdeps/i386/fpu/mathbits.h: New file. + * sysdeps/i386/huge_val.h: Don't define INFINITY. + * sysdeps/ieee754/huge_val.h: Likewise. + * sysdeps/m68k/huge_val.h: Likewise. + + * sysdeps/i386/fpu/fenvbits.h: Define FE_NOMASK_ENV. + * sysdeps/i386/fpu/fesetenv.c: Handle FE_NOMASK_ENV. + + * math/complex.h (_Imaginary_I): Define correctly. I misread the + standard first. + + * sysdeps/libm-i387/s_finite.S: Optimized rewrite. + * sysdeps/libm-i387/s_finitef.S: Likewise. + * sysdeps/libm-i387/s_finitel.S: Likewise. + Provided by Joe Keane <jgk@jgk.org>. + + * sysdeps/libm-i387/s_nearbyint.S: New file. + * sysdeps/libm-i387/s_nearbyintf.S: New file. + * sysdeps/libm-i387/s_nearbyintl.S: New file. + * sysdeps/libm-ieee754/s_nearbyint.S: New file. + * sysdeps/libm-ieee754/s_nearbyintf.S: New file. + * sysdeps/libm-ieee754/s_nearbyintl.S: New file. + + * sysdeps/libm-ieee754/s_cacos.c: New file. + * sysdeps/libm-ieee754/s_cacosf.c: New file. + * sysdeps/libm-ieee754/s_cacosl.c: New file. + * sysdeps/libm-ieee754/s_cacosh.c: New file. + * sysdeps/libm-ieee754/s_cacoshf.c: New file. + * sysdeps/libm-ieee754/s_cacoshl.c: New file. + * sysdeps/libm-ieee754/s_casin.c: New file. + * sysdeps/libm-ieee754/s_casinf.c: New file. + * sysdeps/libm-ieee754/s_casinl.c: New file. + * sysdeps/libm-ieee754/s_casinh.c: New file. + * sysdeps/libm-ieee754/s_casinhf.c: New file. + * sysdeps/libm-ieee754/s_casinhl.c: New file. + * sysdeps/libm-ieee754/s_catan.c: New file. + * sysdeps/libm-ieee754/s_catanf.c: New file. + * sysdeps/libm-ieee754/s_catanl.c: New file. + * sysdeps/libm-ieee754/s_catanh.c: New file. + * sysdeps/libm-ieee754/s_catanhf.c: New file. + * sysdeps/libm-ieee754/s_catanhl.c: New file. + * sysdeps/libm-ieee754/s_ccos.c: New file. + * sysdeps/libm-ieee754/s_ccosf.c: New file. + * sysdeps/libm-ieee754/s_ccosl.c: New file. + * sysdeps/libm-ieee754/s_cpow.c: New file. + * sysdeps/libm-ieee754/s_cpowf.c: New file. + * sysdeps/libm-ieee754/s_cpowl.c: New file. + * sysdeps/libm-ieee754/s_csin.c: New file. + * sysdeps/libm-ieee754/s_csinf.c: New file. + * sysdeps/libm-ieee754/s_csinl.c: New file. + * sysdeps/libm-ieee754/s_csqrt.c: New file. + * sysdeps/libm-ieee754/s_csqrtf.c: New file. + * sysdeps/libm-ieee754/s_csqrtl.c: New file. + * sysdeps/libm-ieee754/s_ctan.c: New file. + * sysdeps/libm-ieee754/s_ctanf.c: New file. + * sysdeps/libm-ieee754/s_ctanl.c: New file. + * sysdeps/libm-ieee754/s_ctanh.c: New file. + * sysdeps/libm-ieee754/s_ctanhf.c: New file. + * sysdeps/libm-ieee754/s_ctanhl.c: New file. + + * time/strftime.c (memset_space): Increment pointer. + * time/strptime.c: Interpret year number 00-59 as 2000--2059. + Patches by Karl Heuer <kwzh@gnu.ai.mit.edu>. + +1997-04-11 11:57 Miguel de Icaza <miguel@nuclecu.unam.mx> + + * sysdeps/unix/sysv/linux/sparc/syscalls.list: Remove fork, + pipe, syscall. + +1997-04-05 00:57 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * sysdeps/libm-ieee754/s_remquo.c: Change algorithm, although + probably still wrong. + * sysdeps/libm-ieee754/s_remquof.c: Likewise. + * sysdeps/libm-ieee754/s_remquol.c: Likewise. + + * math/libm-test.c (remquo_test): Corrected. + +1997-04-11 00:01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * sysdeps/m68k/fpu/__math.h (__rinttol, rinttol): New inline. + * sysdeps/m68k/fpu/s_rinttol.c: New file. + * sysdeps/m68k/fpu/s_rinttoll.c: New file. + + * math/libm-test.c (remquo_test): Use check_long to test the + quotient. + (cbrt_test): Add epsilons for long double. + +1997-04-10 18:48 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * locale/localeinfo.h: Update declaration of _nl_current. + +1997-04-11 11:27 Ulrich Drepper <drepper@cygnus.com> + + * rellnsh-sh: Use explicitely /bin/pwd to find the external program. + + * math/Makefile (headers): Add fenv.h and fenvbits.h. + (libm-support): Add s_rountol, s_roundtoll, fclrexcpt, fgetexcptflg, + fraiseexcpt, fsetexcptflg, ftestexcept, fegetround, fesetround, + fegetenv, feholdexcpt, fesetenv, feupdateenv. + (libm-calls): Add s_round. + * math/fenv.h: New file. + * math/libm-test.c: Correct tests for s_rinttol and s_rinttoll. + Add roundtol_check and roundtoll_check. + * math/math.h: Pretty printing. + * sysdeps/i386/fpu/fclrexcpt.c: New file. + * sysdeps/i386/fpu/fegetenv.c: New file. + * sysdeps/i386/fpu/fegetround.c: New file. + * sysdeps/i386/fpu/feholdexcpt.c: New file. + * sysdeps/i386/fpu/fenvbits.h: New file. + * sysdeps/i386/fpu/fesetenv.c: New file. + * sysdeps/i386/fpu/fesetround.c: New file. + * sysdeps/i386/fpu/fgetexcptflg.c: New file. + * sysdeps/i386/fpu/fraiseexcpt.c: New file. + * sysdeps/i386/fpu/fsetexcptflg.c: New file. + * sysdeps/i386/fpu/ftestexcept.c: New file. + * sysdeps/stub/fclrexcpt.c: New file. + * sysdeps/stub/fegetenv.c: New file. + * sysdeps/stub/fegetround.c: New file. + * sysdeps/stub/feholdexcpt.c: New file. + * sysdeps/stub/fenvbits.h: New file. + * sysdeps/stub/fesetenv.c: New file. + * sysdeps/stub/fesetround.c: New file. + * sysdeps/stub/fgetexcptflg.c: New file. + * sysdeps/stub/fraiseexcpt.c: New file. + * sysdeps/stub/fsetexcptflg.c: New file. + * sysdeps/stub/ftestexcept.c: New file. + + * sysdeps/libm-i387/s_trunc.S: New file. + * sysdeps/libm-i387/s_truncf.S: New file. + * sysdeps/libm-i387/s_truncl.S: New file. + + * sysdeps/libm-ieee754/s_round.c: New file. + * sysdeps/libm-ieee754/s_roundf.c: New file. + * sysdeps/libm-ieee754/s_roundl.c: New file. + + * sysdeps/libm-ieee754/s_ccosh.c: Rewritten to use fpclassify. + * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. + * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. + * sysdeps/libm-ieee754/s_cexp.c: Likewise. + * sysdeps/libm-ieee754/s_cexpf.c: Likewise. + * sysdeps/libm-ieee754/s_cexpl.c: Likewise. + * sysdeps/libm-ieee754/s_clog.c: Likewise. + * sysdeps/libm-ieee754/s_clogf.c: Likewise. + * sysdeps/libm-ieee754/s_clogl.c: Likewise. + * sysdeps/libm-ieee754/s_csinh.c. Likewise. + * sysdeps/libm-ieee754/s_csinhf.c. Likewise. + * sysdeps/libm-ieee754/s_csinhl.c. Likewise. + + * sysdeps/libm-ieee754/s_ceill.c: Corrected. The mantissa has only + 63 bits. + * sysdeps/libm-ieee754/s_floorl.c: Likewise. + + * po/pl.po: Updated. + + * string/swab.c: Correctly handle array of odd length. + + * sysdeps/generic/memmem.c: Update copyright. + +1997-04-10 20:22 Ulrich Drepper <drepper@cygnus.com> + + * hurd/Makefile (sunrpc-headers): Add clnt.h. + Proposed by Thomas Bushnell <thomas@gnu.ai.mit.edu>. + +1997-04-09 14:21 Miguel de Icaza <miguel@nuclecu.unam.mx> + + * sysdeps/sparc/dl-machine.h: Bug fix: I was not loading + the proper value from the GOT. Pass argument block to + init function. + + * sysdeps/sparc/elf/start.c: Call atexit (_fini) after calling + _init (). + + * sysdeps/sparc/fpu_control.h: Fix the FPU constants. I got them + wrong the first time. + + * sysdeps/sparc/setjmp.S: PIC code was clobbering a callee saved + register. + + * sysdeps/sparc/udiv_qrnnd.S: Add type @function. + + * sysdeps/unix/sysv/linux/sparc/init-first.h: Linux/SPARC specific + SYSDEP_CALL_INIT. + + * sysdeps/unix/sysv/linux/sparc/signum.h: Remove definition for + NSIG and duplicated SIGIOT. + +1997-04-05 00:57 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * sysdeps/libm-ieee754/s_remquo.c: Change algorithm, although + probably still wrong. + * sysdeps/libm-ieee754/s_remquof.c: Likewise. + * sysdeps/libm-ieee754/s_remquol.c: Likewise. + + * math/libm-test.c (remquo_test): Corrected. + +1997-04-03 18:35 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * Makefile (parent-tests): New target to run the tests to that + they are executed even if some subdir tests have failed. + (tests): Depend on parent-tests instead of running the tests + directly. + +1997-04-03 12:26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + Clean up name space pollution in libnss_*.so: + * nis/nss_compat/compat-pwd.c, resolv/mapv4v6addr.h, + resolv/nss_dns/dns-host.c: Replace bzero by memset, bcopy by + memcpy and bcmp by memcmp to clean up namespace. + * nss/nss_db/db-XXX.c (internal_setent): Use __dbopen instead of + dbopen. + * nss/nss_db/db-alias.c (internal_setent): Likewise. + * nss/nss_db/db-netgrp.c (_nss_db_setnetgrent): Likewise. + * db/db/db.c [_LIBC]: Define __dbopen instead of dbopen and make + the latter a weak alias. + * db/db.h: Declare __dbopen. + * db/btree/btree.h [_LIBC]: Prepend __ to all mpool functions. + * db/mpool/mpool.c [_LIBC]: Define all external functions with __ + prefix and make the old names weak aliases. + * db/mpool.h: Declare the new internal names. + +1997-04-04 23:57 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * stdio-common/vfscanf.c: Fix scanning of hexadecimal fp number. + * stdio-common/tstscanf.c: Add test case for this. + +1997-04-04 17:26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * math/libm-test.c: Fix more typos. + +1997-04-03 17:15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * math/libm-test.c (csinh_test): Fix test names. + (ccosh_test): Likewise. + + * sysdeps/libm-ieee754/s_csinh.c: Use sinh function instead of + computing it directly. + * sysdeps/libm-ieee754/s_csinhf.c: Likewise. + * sysdeps/libm-ieee754/s_csinhl.c: Likewise. + + * sysdeps/libm-ieee754/s_ccosh.c: Use cosh function instead of + computing it directly. + * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. + * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. + + * sysdeps/libm-ieee754/s_cexp.c: Use internal exp function instead + of wrapper. + * sysdeps/libm-ieee754/s_cexpf.c: Likewise. + * sysdeps/libm-ieee754/s_cexpl.c: Likewise. + * sysdeps/m68k/fpu/s_cexp.c: Likewise. Correct handling of + special values. Avoid use of fsincos if all that is needed is the + quadrant. + + * sysdeps/m68k/fpu/s_ccosh.c: New file. + * sysdeps/m68k/fpu/s_ccoshf.c: New file. + * sysdeps/m68k/fpu/s_ccoshl.c: New file. + * sysdeps/m68k/fpu/s_csinh.c: New file. + * sysdeps/m68k/fpu/s_csinhl.c: New file. + * sysdeps/m68k/fpu/s_csinhf.c: New file. + +1997-04-03 10:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * manual/Makefile (dir-add.texi): Simplify. + 1997-04-09 01:24 Ulrich Drepper <drepper@cygnus.com> * rellns-sh: Rewrite to work also in presence of symlinks. @@ -38,7 +316,7 @@ 1997-04-08 07:19 H.J. Lu <hjl@gnu.ai.mit.edu> - * libio/genops.c (_IO_flush_all_linebuffered): don't flush on + * libio/genops.c (_IO_flush_all_linebuffered): Don't flush on a read-only stream. 1997-04-09 01:19 Ulrich Drepper <drepper@cygnus.com> @@ -280,10 +280,12 @@ parent_echo-distinfo: $(addprefix +nodist+,$(generated)) +.PHONY: parent-tests +tests: parent-tests + # Run a test on the header files we use. -tests: $(objpfx)isomac - $(objpfx)./isomac '$(CC)' '$(+sysdep-includes)' \ - >$(common-objpfx)isomac.out +parent-tests: $(objpfx)isomac + $(dir $<)$(notdir $<) '$(CC)' '$(+sysdep-includes)' > $<.out $(objpfx)isomac: isomac.c $(native-compile) @@ -58,9 +58,6 @@ contact <bug-glibc@prep.ai.mit.edu> - exp2 - nearbyint - - round - - roundtol - - roundtoll each with float, double, and long double arguments. Writing these functions should be possible when following the implementation of diff --git a/db/btree/btree.h b/db/btree/btree.h index ab4c5b5..45f7c94 100644 --- a/db/btree/btree.h +++ b/db/btree/btree.h @@ -43,6 +43,18 @@ #include <mpool.h> +#ifdef _LIBC +/* In the GNU C library we must not pollute the namespace because libdb is + needed by libnss_db. */ +#define mpool_open __mpool_open +#define mpool_filter __mpool_filter +#define mpool_new __mpool_new +#define mpool_get __mpool_get +#define mpool_put __mpool_put +#define mpool_sync __mpool_sync +#define mpool_close __mpool_close +#endif + #define DEFMINKEYPAGE (2) /* Minimum keys per page */ #define MINCACHE (5) /* Minimum cached pages */ #define MINPSIZE (512) /* Minimum page size */ @@ -224,6 +224,7 @@ typedef struct { #endif __BEGIN_DECLS +DB *__dbopen __P((const char *, int, int, DBTYPE, const void *)); DB *dbopen __P((const char *, int, int, DBTYPE, const void *)); #ifdef __DBINTERFACE_PRIVATE @@ -44,6 +44,12 @@ static char sccsid[] = "@(#)db.c 8.4 (Berkeley) 2/21/94"; #include <db.h> +#ifdef _LIBC +/* In the GNU C library we must not pollute the namespace, because libdb + is needed by libnss_db. */ +#define dbopen __dbopen +#endif + DB * dbopen(fname, flags, mode, type, openinfo) const char *fname; @@ -72,6 +78,10 @@ dbopen(fname, flags, mode, type, openinfo) errno = EINVAL; return (NULL); } +#ifdef _LIBC +#undef dbopen +weak_alias (__dbopen, dbopen) +#endif static int __dberr __P((void)) @@ -85,13 +85,21 @@ typedef struct MPOOL { } MPOOL; __BEGIN_DECLS +MPOOL *__mpool_open __P((void *, int, pgno_t, pgno_t)); MPOOL *mpool_open __P((void *, int, pgno_t, pgno_t)); +void __mpool_filter __P((MPOOL *, void (*)(void *, pgno_t, void *), + void (*)(void *, pgno_t, void *), void *)); void mpool_filter __P((MPOOL *, void (*)(void *, pgno_t, void *), void (*)(void *, pgno_t, void *), void *)); +void *__mpool_new __P((MPOOL *, pgno_t *)); void *mpool_new __P((MPOOL *, pgno_t *)); +void *__mpool_get __P((MPOOL *, pgno_t, u_int)); void *mpool_get __P((MPOOL *, pgno_t, u_int)); +int __mpool_put __P((MPOOL *, void *, u_int)); int mpool_put __P((MPOOL *, void *, u_int)); +int __mpool_sync __P((MPOOL *)); int mpool_sync __P((MPOOL *)); +int __mpool_close __P((MPOOL *)); int mpool_close __P((MPOOL *)); #ifdef STATISTICS void mpool_stat __P((MPOOL *)); diff --git a/db/mpool/mpool.c b/db/mpool/mpool.c index 9956aca..7ced76f 100644 --- a/db/mpool/mpool.c +++ b/db/mpool/mpool.c @@ -50,6 +50,18 @@ static char sccsid[] = "@(#)mpool.c 8.5 (Berkeley) 7/26/94"; #define __MPOOLINTERFACE_PRIVATE #include <mpool.h> +#ifdef _LIBC +/* In the GNU C library we must not pollute the namespace because libdb is + needed by libnss_db. */ +#define mpool_open __mpool_open +#define mpool_filter __mpool_filter +#define mpool_new __mpool_new +#define mpool_get __mpool_get +#define mpool_put __mpool_put +#define mpool_sync __mpool_sync +#define mpool_close __mpool_close +#endif + static BKT *mpool_bkt __P((MPOOL *)); static BKT *mpool_look __P((MPOOL *, pgno_t)); static int mpool_write __P((MPOOL *, BKT *)); @@ -301,6 +313,23 @@ mpool_sync(mp) return (fsync(mp->fd) ? RET_ERROR : RET_SUCCESS); } +#ifdef _LIBC +#undef mpool_open +#undef mpool_filter +#undef mpool_new +#undef mpool_get +#undef mpool_put +#undef mpool_close +#undef mpool_sync +weak_alias (__mpool_open, mpool_open) +weak_alias (__mpool_filter, mpool_filter) +weak_alias (__mpool_new, mpool_new) +weak_alias (__mpool_get, mpool_get) +weak_alias (__mpool_put, mpool_put) +weak_alias (__mpool_close, mpool_close) +weak_alias (__mpool_sync, mpool_sync) +#endif + /* * mpool_bkt * Get a page from the cache (or create one). diff --git a/hurd/Makefile b/hurd/Makefile index deafb1e..a42d148 100644 --- a/hurd/Makefile +++ b/hurd/Makefile @@ -73,7 +73,7 @@ include ../Rules # from $(subdirs), and this rule arranges for the headers in question # to get installed. sunrpc-headers = netdb.h pmap_prot.h xdr.h types.h auth.h \ - rpc_msg.h auth_unix.h + rpc_msg.h auth_unix.h clnt.h installed-sunrpc-headers = $(addprefix $(inst_includedir)/rpc/, \ $(sunrpc-headers)) install-headers-nosubdir: $(installed-sunrpc-headers) @@ -207,6 +207,8 @@ main (int argc, char *argv[]) /* First get list of symbols which are defined by the compiler. */ ignore_list = get_null_defines (); + fputs ("Tested files:\n", stdout); + for (h = 0; h < NUMBER_OF_HEADERS; ++h) { char file_name[HEADER_MAX]; diff --git a/libio/genops.c b/libio/genops.c index db7fb18..c085986 100644 --- a/libio/genops.c +++ b/libio/genops.c @@ -615,7 +615,7 @@ DEFUN_VOID(_IO_flush_all_linebuffered) { _IO_FILE *fp; for (fp = _IO_list_all; fp != NULL; fp = fp->_chain) - if (fp->_flags & _IO_LINE_BUF) + if ((fp->_flags & _IO_NO_WRITES) == 0 && fp->_flags & _IO_LINE_BUF) _IO_OVERFLOW (fp, EOF); } diff --git a/locale/localeinfo.h b/locale/localeinfo.h index c029f63..b062200 100644 --- a/locale/localeinfo.h +++ b/locale/localeinfo.h @@ -104,7 +104,7 @@ extern struct locale_data *_nl_current_##category; extern const char *const _nl_category_names[LC_ALL + 1]; extern const size_t _nl_category_name_sizes[LC_ALL + 1]; -extern struct locale_data * *const _nl_current[LC_ALL]; +extern struct locale_data * *const _nl_current[LC_ALL + 1]; /* Name of the standard locale. */ extern const char _nl_C_name[]; diff --git a/manual/Makefile b/manual/Makefile index fafa7e7..c99f497 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -67,12 +67,8 @@ stamp-summary: summary.awk $(chapters) $(chapters-incl) # access to the documentation of the function, variables, and other # definitions. dir-add.texi: xtract-typefun.awk $(chapters) - if test -n "$(chapters)"; then \ - (for i in $(chapters); do \ - $(GAWK) -f $< < $$i; \ - done) | sort > $@.new; \ - ./move-if-change $@.new $@; \ - fi + $(GAWK) -f $^ | sort > $@.new; + mv -f $@.new $@ # Generate Texinfo files from the C source for the example programs. %.c.texi: examples/%.c diff --git a/manual/string.texi b/manual/string.texi index efcc23e..9d242b7 100644 --- a/manual/string.texi +++ b/manual/string.texi @@ -881,7 +881,7 @@ strstr ("hello, world", "wo") @comment string.h @comment GNU -@deftypefun {void *} memmem (const void *@var{needle}, size_t @var{needle-len},@*const void *@var{haystack}, size_t @var{haystack-len}) +@deftypefun {void *} memmem (const void *@var{haystack}, size_t @var{haystack-len},@*const void *@var{needle}, size_t @var{needle-len}) This is like @code{strstr}, but @var{needle} and @var{haystack} are byte arrays rather than null-terminated strings. @var{needle-len} is the length of @var{needle} and @var{haystack-len} is the length of diff --git a/math/Makefile b/math/Makefile index 64803a3..86418b0 100644 --- a/math/Makefile +++ b/math/Makefile @@ -22,7 +22,8 @@ subdir := math # Installed header files. headers := math.h mathcalls.h __math.h huge_val.h nan.h \ - fpu_control.h complex.h cmathcalls.h + fpu_control.h complex.h cmathcalls.h fenv.h \ + fenvbits.h # Internal header files. distribute := math_private.h machine/asm.h machine/endian.h @@ -36,7 +37,10 @@ extra-libs := libm extra-libs-others = $(extra-libs) libm-support = k_standard s_lib_version s_matherr s_signgam \ - s_rinttol s_rinttoll + s_rinttol s_rinttoll s_roundtol s_roundtoll \ + fclrexcpt fgetexcptflg fraiseexcpt fsetexcptflg \ + ftestexcept fegetround fesetround fegetenv feholdexcpt \ + fesetenv feupdateenv libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \ e_hypot e_j0 e_j1 e_jn e_lgamma_r e_log e_log10 e_pow \ e_rem_pio2 e_remainder e_scalb e_sinh e_sqrt k_cos \ @@ -49,8 +53,10 @@ libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \ w_gamma_r w_hypot w_j0 w_j1 w_jn w_lgamma w_lgamma_r \ w_log w_log10 w_pow w_remainder w_scalb w_sinh w_sqrt \ s_signbit s_fpclassify s_fmax s_fmin s_fdim s_nan s_trunc \ - s_remquo s_log2 s_exp2 \ - conj cimag creal cabs carg s_cexp s_csinh s_ccosh s_clog + s_remquo s_log2 s_exp2 s_round s_nearbyint \ + conj cimag creal cabs carg s_cexp s_csinh s_ccosh s_clog \ + s_catan s_casin s_ccos s_csin s_ctan s_ctanh s_cacos \ + s_casinh s_cacosh s_catanh s_csqrt s_cpow libm-routines = $(libm-support) $(libm-calls) \ $(patsubst %_rf,%f_r,$(libm-calls:=f)) \ $(long-m-$(long-double-fcts)) diff --git a/math/complex.h b/math/complex.h index 4214353..938823b 100644 --- a/math/complex.h +++ b/math/complex.h @@ -38,7 +38,7 @@ __BEGIN_DECLS /* Narrowest imaginary unit. This depends on the floating-point evaluation method. XXX This probably has to go into a gcc related file. */ -#define _Imaginary_I (DBL_EPSISON * 1.0i) +#define _Imaginary_I (1.0iF) /* Another more descriptive name is `I'. */ #undef I diff --git a/math/fenv.h b/math/fenv.h new file mode 100644 index 0000000..c9a8a5c --- /dev/null +++ b/math/fenv.h @@ -0,0 +1,114 @@ +/* Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* + * ISO C 9X 7.6: Floating-point environment <fenv.h> + */ + +#ifndef _FENV_H + +#define __FENV_H 1 +#include <features.h> + +/* Get the architecture dependend definitions. The following definitions + are expected to be done: + + fenv_t type for object representing an entire floating-point + environment + + FE_DFL_ENV macro of type pointer to fenv_t to be used as the argument + to functions taking an argument of type fenv_t; in this + case the default environment will be used + + fexcept_t type for object representing the floating-point exception + flags including status associated with the flags + + The following macros are defined iff the implementation supports this + kind of exception. + FE_INEXACT inxeact result + FE_DIVBYZERO devision by zero + FE_UNDERFLOW result not representable due to underflow + FE_OVERFLOW result not representable due to overflow + FE_INVALID invalid operation + + FE_ALL_EXCEPT bitwise OR of all supported exceptions + + The next macros are defined iff the appropriate rounding mode is + supported by the implementation. + FE_TONEAREST round to nearest + FE_UPWARD round toward +Inf + FE_DOWNWARD round toward -Inf + FE_TOWARDZERO round toward 0 +*/ +#include <fenvbits.h> + +__BEGIN_DECLS + +/* Floating-point exception handling. */ + +/* Clear the supported exceptions represented by EXCEPTS. */ +extern void feclearexcept __P ((int __excepts)); + +/* Store implementation-defined representation of the exception flags + indicated by EXCEPTS in the object pointed to by FLAGP. */ +extern void fegetexceptflag __P ((fexcept_t *__flagp, int __excepts)); + +/* Raise the supported exceptions represented by EXCEPTS. */ +extern void feraiseexcept __P ((int __excepts)); + +/* Set complete status for exceptions inidicated by EXCEPTS according to + the representation in the object pointed to by FLAGP. */ +extern void fesetexceptflag __P ((__const fexcept_t *__flagp, int __excepts)); + +/* Determine which of subset of the exceptions specified by EXCEPTS are + currently set. */ +extern int fetestexcept __P ((int __excepts)); + + +/* Rounding control. */ + +/* Get current rounding direction. */ +extern int fegetround __P ((void)); + +/* Establish the rounding direction represented by ROUND. */ +extern int fesetround __P ((int __round)); + + +/* Floating-point environment. */ + +/* Store the current floating-point environment in the object pointed + to by ENVP. */ +extern void fegetenv __P ((fenv_t *__envp)); + +/* Save the current environment in the object pointed to by ENVP, clear + exception flags and install a non-stop mode (if available) for all + exceptions. */ +extern int feholdexcept __P ((fenv_t *__envp)); + +/* Establish the floating-point environment represented by the object + pointed to by ENVP. */ +extern void fesetenv __P ((__const fenv_t *__envp)); + +/* Save current exceptions in temporary storage, install environment + represented by object pointed to by ENVP and raise exceptions + according to saved exceptions. */ +extern void feupdateenv __P ((__const fenv_t *__envp)); + +__END_DECLS + +#endif /* fenv.h */ diff --git a/math/libm-test.c b/math/libm-test.c index 5171d0f..356cc91 100644 --- a/math/libm-test.c +++ b/math/libm-test.c @@ -633,8 +633,9 @@ cbrt_test (void) check_isinfn ("cbrt (-inf) == -inf", FUNC(cbrt) (minus_infty)); check_isnan ("cbrt (NaN) == NaN", FUNC(cbrt) (nan_value)); - check ("cbrt (8) == 2", FUNC(cbrt) (8), 2); - check ("cbrt (-27) == -3", FUNC(cbrt) (-27.0), -3.0); + check_eps ("cbrt (8) == 2", FUNC(cbrt) (8), 2, CHOOSE (5e-17L, 0, 0)); + check_eps ("cbrt (-27) == -3", FUNC(cbrt) (-27.0), -3.0, + CHOOSE (3e-16L, 0, 0)); } @@ -1573,19 +1574,19 @@ remquo_test (void) result = FUNC(remquo) (1.625, 1.0, &quo); check ("remquo(1.625, 1.0, &x) == -0.375", result, -0.375); - check ("remquo(1.625, 1.0, &x) puts 1 in x", quo, 1); + check_long ("remquo(1.625, 1.0, &x) puts 1 in x", quo, 1); result = FUNC(remquo) (-1.625, 1.0, &quo); check ("remquo(-1.625, 1.0, &x) == 0.375", result, 0.375); - check ("remquo(-1.625, 1.0, &x) puts -1 in x", quo, -1); + check_long ("remquo(-1.625, 1.0, &x) puts -1 in x", quo, -1); result = FUNC(remquo) (1.625, -1.0, &quo); - check ("remquo(1.125, -1.0, &x) == 0.125", result, 0.125); - check ("remquo(1.125, -1.0, &x) puts -1 in x", quo, -1); + check ("remquo(1.625, -1.0, &x) == -0.375", result, -0.375); + check_long ("remquo(1.625, -1.0, &x) puts -1 in x", quo, -1); result = FUNC(remquo) (-1.625, -1.0, &quo); - check ("remquo(-1.125, -1.0, &x) == 0.125", result, 0.125); - check ("remquo(-1.125, -1.0, &x) puts 1 in x", quo, 1); + check ("remquo(-1.625, -1.0, &x) == 0.375", result, 0.375); + check_long ("remquo(-1.625, -1.0, &x) puts 1 in x", quo, 1); } @@ -1667,10 +1668,10 @@ cexp_test (void) result = FUNC(cexp) (BUILD_COMPLEX (nan_value, 1.0)); check_isnan ("real(cexp(NaN + 1i)) = NaN", __real__ result); check_isnan ("imag(cexp(NaN + 1i)) = NaN", __imag__ result); - result = FUNC(cexp) (BUILD_COMPLEX (nan_value, 1.0)); + result = FUNC(cexp) (BUILD_COMPLEX (nan_value, plus_infty)); check_isnan ("real(cexp(NaN + i inf)) = NaN", __real__ result); check_isnan ("imag(cexp(NaN + i inf)) = NaN", __imag__ result); - result = FUNC(cexp) (BUILD_COMPLEX (nan_value, 1.0)); + result = FUNC(cexp) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(cexp(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(cexp(NaN + i NaN)) = NaN", __imag__ result); @@ -1702,16 +1703,16 @@ csinh_test (void) check ("imag(csinh(-0 - 0i)) = -0", __imag__ result, minus_zero); result = FUNC(csinh) (BUILD_COMPLEX (0.0, plus_infty)); - check ("real(csinh(0 + i Inf)) = 0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(0 + i Inf)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(0 + i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (minus_zero, plus_infty)); - check ("real(csinh(-0 + i Inf)) = -0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(-0 + i Inf)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(-0 + i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (0.0, minus_infty)); - check ("real(csinh(0 - i Inf)) = 0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(0 - i Inf)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(0 - i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (minus_zero, minus_infty)); - check ("real(csinh(-0 - i Inf)) = -0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(-0 - i Inf)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(-0 - i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (plus_infty, 0.0)); @@ -1740,7 +1741,7 @@ csinh_test (void) FUNC(fabs) (__real__ result)); check_isnan ("imag(csinh(Inf - i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (minus_infty, minus_infty)); - check_isinfp ("real(csinh(-Inf - i Inf)) = -Inf", + check_isinfp ("real(csinh(-Inf - i Inf)) = +-Inf", FUNC(fabs) (__real__ result)); check_isnan ("imag(csinh(-Inf - i Inf)) = NaN", __imag__ result); @@ -1771,10 +1772,10 @@ csinh_test (void) check_isnan ("imag(csinh(-6.75 - i Inf)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (0.0, nan_value)); - check ("real(csinh(0 + i NaN)) = 0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(0 + i NaN)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(0 + i NaN)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (minus_zero, nan_value)); - check ("real(csinh(-0 + i NaN)) = -0", FUNC(fabs) (__real__ result), 0); + check ("real(csinh(-0 + i NaN)) = +-0", FUNC(fabs) (__real__ result), 0); check_isnan ("imag(csinh(-0 + i NaN)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (plus_infty, nan_value)); @@ -1784,7 +1785,7 @@ csinh_test (void) result = FUNC(csinh) (BUILD_COMPLEX (minus_infty, nan_value)); check_isinfp ("real(csinh(-Inf + i NaN)) = +-Inf", FUNC(fabs) (__real__ result)); - check_isnan ("imag(csinh(-0 + i NaN)) = NaN", __imag__ result); + check_isnan ("imag(csinh(-Inf + i NaN)) = NaN", __imag__ result); result = FUNC(csinh) (BUILD_COMPLEX (9.0, nan_value)); check_isnan ("real(csinh(9.0 + i NaN)) = NaN", __real__ result); @@ -1795,10 +1796,10 @@ csinh_test (void) result = FUNC(csinh) (BUILD_COMPLEX (nan_value, 0.0)); check_isnan ("real(csinh(NaN + i0)) = NaN", __real__ result); - check ("imag(csinh(NaN + i0)) = NaN", __imag__ result, 0.0); + check ("imag(csinh(NaN + i0)) = 0", __imag__ result, 0.0); result = FUNC(csinh) (BUILD_COMPLEX (nan_value, minus_zero)); check_isnan ("real(csinh(NaN - i0)) = NaN", __real__ result); - check ("imag(csinh(NaN - i0)) = NaN", __imag__ result, minus_zero); + check ("imag(csinh(NaN - i0)) = -0", __imag__ result, minus_zero); result = FUNC(csinh) (BUILD_COMPLEX (nan_value, 10.0)); check_isnan ("real(csinh(NaN + i10)) = NaN", __real__ result); @@ -1821,21 +1822,152 @@ csinh_test (void) static void +ccos_test (void) +{ + __complex__ MATHTYPE result; + + result = FUNC(ccos) (BUILD_COMPLEX (0.0, 0.0)); + check ("real(ccos(0 + 0i)) = 1.0", __real__ result, 1.0); + check ("imag(ccos(0 + 0i)) = 0", __imag__ result, 0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_zero, 0.0)); + check ("real(ccos(-0 + 0i)) = 1.0", __real__ result, 1.0); + check ("imag(ccos(-0 + 0i)) = -0", __imag__ result, minus_zero); + result = FUNC(ccos) (BUILD_COMPLEX (0.0, minus_zero)); + check ("real(ccos(0 - 0i)) = 1.0", __real__ result, 1.0); + check ("imag(ccos(0 - 0i)) = 0", __imag__ result, 0.0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_zero, minus_zero)); + check ("real(ccos(-0 - 0i)) = 1.0", __real__ result, 1.0); + check ("imag(ccos(-0 - 0i)) = -0", __imag__ result, minus_zero); + + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, 0.0)); + check_isnan ("real(ccos(+Inf + i0)) = NaN", __real__ result); + check ("imag(ccos(Inf + i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, minus_zero)); + check_isnan ("real(ccos(Inf - i0)) = NaN", __real__ result); + check ("imag(ccos(Inf - i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, 0.0)); + check_isnan ("real(ccos(-Inf + i0)) = NaN", __real__ result); + check ("imag(ccos(-Inf + i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, minus_zero)); + check_isnan ("real(ccos(-Inf - i0)) = NaN", __real__ result); + check ("imag(ccos(-Inf - i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + + result = FUNC(ccos) (BUILD_COMPLEX (0.0, plus_infty)); + check_isinfp ("real(ccos(0 + i Inf)) = +Inf", __real__ result); + check ("imag(ccos(0 + i Inf)) = 0", __imag__ result, 0); + result = FUNC(ccos) (BUILD_COMPLEX (0.0, minus_infty)); + check_isinfp ("real(ccos(0 - i Inf)) = +Inf", __real__ result); + check ("imag(ccos(0 - i Inf)) = 0", __imag__ result, 0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_zero, plus_infty)); + check_isinfp ("real(ccos(-0 + i Inf)) = +Inf", __real__ result); + check ("imag(ccos(-0 + i Inf)) = -0", __imag__ result, minus_zero); + result = FUNC(ccos) (BUILD_COMPLEX (minus_zero, minus_infty)); + check_isinfp ("real(ccos(-0 - i Inf)) = +Inf", __real__ result); + check ("imag(ccos(-0 - i Inf)) = -0", __imag__ result, minus_zero); + + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, plus_infty)); + check_isinfp ("real(ccos(+Inf + i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(+Inf + i Inf)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, plus_infty)); + check_isinfp ("real(ccos(-Inf + i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(-Inf + i Inf)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, minus_infty)); + check_isinfp ("real(ccos(Inf - i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(Inf - i Inf)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, minus_infty)); + check_isinfp ("real(ccos(-Inf - i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(-Inf - i Inf)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (4.625, plus_infty)); + check_isinfn ("real(ccos(4.625 + i Inf)) = -Inf", __real__ result); + check_isinfn ("imag(ccos(4.625 + i Inf)) = -Inf", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (4.625, minus_infty)); + check_isinfn ("real(ccos(4.625 - i Inf)) = -Inf", __real__ result); + check_isinfn ("imag(ccos(4.625 - i Inf)) = -Inf", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (-4.625, plus_infty)); + check_isinfn ("real(ccos(-4.625 + i Inf)) = -Inf", __real__ result); + check_isinfp ("imag(ccos(-4.625 + i Inf)) = +Inf", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (-4.625, minus_infty)); + check_isinfn ("real(ccos(-4.625 - i Inf)) = -Inf", __real__ result); + check_isinfp ("imag(ccos(-4.625 - i Inf)) = +Inf", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, 6.75)); + check_isnan ("real(ccos(+Inf + i6.75)) = NaN", __real__ result); + check_isnan ("imag(ccos(+Inf + i6.75)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, -6.75)); + check_isnan ("real(ccos(+Inf - i6.75)) = NaN", __real__ result); + check_isnan ("imag(ccos(+Inf - i6.75)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, 6.75)); + check_isnan ("real(ccos(-Inf + i6.75)) = NaN", __real__ result); + check_isnan ("imag(ccos(-Inf + i6.75)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, -6.75)); + check_isnan ("real(ccos(-Inf - i6.75)) = NaN", __real__ result); + check_isnan ("imag(ccos(-Inf - i6.75)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, 0.0)); + check_isnan ("real(ccos(NaN + i0)) = NaN", __real__ result); + check ("imag(ccos(NaN + i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, minus_zero)); + check_isnan ("real(ccos(NaN - i0)) = NaN", __real__ result); + check ("imag(ccos(NaN - i0)) = +-0", FUNC(fabs) (__imag__ result), 0); + + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, plus_infty)); + check_isinfp ("real(ccos(NaN + i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(NaN + i Inf)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, minus_infty)); + check_isinfp ("real(ccos(NaN - i Inf)) = +Inf", __real__ result); + check_isnan ("imag(ccos(NaN - i Inf)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, 9.0)); + check_isnan ("real(ccos(NaN + i9.0)) = NaN", __real__ result); + check_isnan ("imag(ccos(NaN + i9.0)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, -9.0)); + check_isnan ("real(ccos(NaN - i9.0)) = NaN", __real__ result); + check_isnan ("imag(ccos(NaN - i9.0)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (0.0, nan_value)); + check_isnan ("real(ccos(0 + i NaN)) = NaN", __real__ result); + check ("imag(ccos(0 + i NaN)) = +-0", FUNC(fabs) (__imag__ result), 0.0); + result = FUNC(ccos) (BUILD_COMPLEX (minus_zero, nan_value)); + check_isnan ("real(ccos(-0 + i NaN)) = NaN", __real__ result); + check ("imag(ccos(-0 + i NaN)) = +-0", FUNC(fabs) (__imag__ result), 0.0); + + result = FUNC(ccos) (BUILD_COMPLEX (10.0, nan_value)); + check_isnan ("real(ccos(10 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(ccos(10 + i NaN)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (-10.0, nan_value)); + check_isnan ("real(ccos(-10 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(ccos(-10 + i NaN)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (plus_infty, nan_value)); + check_isnan ("real(ccos(+Inf + i NaN)) = NaN", __real__ result); + check_isnan ("imag(ccos(+Inf + i NaN)) = NaN", __imag__ result); + result = FUNC(ccos) (BUILD_COMPLEX (minus_infty, nan_value)); + check_isnan ("real(ccos(-Inf + i NaN)) = NaN", __real__ result); + check_isnan ("imag(ccos(-Inf + i NaN)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (nan_value, nan_value)); + check_isnan ("real(ccos(NaN + i NaN)) = NaN", __real__ result); + check_isnan ("imag(ccos(NaN + i NaN)) = NaN", __imag__ result); +} + + +static void ccosh_test (void) { __complex__ MATHTYPE result; result = FUNC(ccosh) (BUILD_COMPLEX (0.0, 0.0)); - check ("real(ccosh(0 + 0i)) = 0", __real__ result, 1.0); + check ("real(ccosh(0 + 0i)) = 1.0", __real__ result, 1.0); check ("imag(ccosh(0 + 0i)) = 0", __imag__ result, 0); result = FUNC(ccosh) (BUILD_COMPLEX (minus_zero, 0.0)); - check ("real(ccosh(-0 + 0i)) = -0", __real__ result, 1.0); + check ("real(ccosh(-0 + 0i)) = 1.0", __real__ result, 1.0); check ("imag(ccosh(-0 + 0i)) = 0", __imag__ result, 0); result = FUNC(ccosh) (BUILD_COMPLEX (0.0, minus_zero)); - check ("real(ccosh(0 - 0i)) = 0", __real__ result, 1.0); + check ("real(ccosh(0 - 0i)) = 1.0", __real__ result, 1.0); check ("imag(ccosh(0 - 0i)) = -0", __imag__ result, minus_zero); result = FUNC(ccosh) (BUILD_COMPLEX (minus_zero, minus_zero)); - check ("real(ccosh(-0 - 0i)) = -0", __real__ result, 1.0); + check ("real(ccosh(-0 - 0i)) = 1.0", __real__ result, 1.0); check ("imag(ccosh(-0 - 0i)) = -0", __imag__ result, minus_zero); result = FUNC(ccosh) (BUILD_COMPLEX (0.0, plus_infty)); @@ -1843,13 +1975,13 @@ ccosh_test (void) check ("imag(ccosh(0 + i Inf)) = +-0", FUNC(fabs) (__imag__ result), 0); result = FUNC(ccosh) (BUILD_COMPLEX (minus_zero, plus_infty)); check_isnan ("real(ccosh(-0 + i Inf)) = NaN", __real__ result); - check ("imag(ccosh(-0 + i Inf)) = -0", FUNC(fabs) (__imag__ result), 0); + check ("imag(ccosh(-0 + i Inf)) = +-0", FUNC(fabs) (__imag__ result), 0); result = FUNC(ccosh) (BUILD_COMPLEX (0.0, minus_infty)); check_isnan ("real(ccosh(0 - i Inf)) = NaN", __real__ result); - check ("imag(ccosh(0 - i Inf)) = 0", FUNC(fabs) (__imag__ result), 0); + check ("imag(ccosh(0 - i Inf)) = +-0", FUNC(fabs) (__imag__ result), 0); result = FUNC(ccosh) (BUILD_COMPLEX (minus_zero, minus_infty)); check_isnan ("real(ccosh(-0 - i Inf)) = NaN", __real__ result); - check ("imag(ccosh(-0 - i Inf)) = -0", FUNC(fabs) (__imag__ result), 0); + check ("imag(ccosh(-0 - i Inf)) = +-0", FUNC(fabs) (__imag__ result), 0); result = FUNC(ccosh) (BUILD_COMPLEX (plus_infty, 0.0)); check_isinfp ("real(ccosh(+Inf + 0i)) = +Inf", __real__ result); @@ -1915,7 +2047,7 @@ ccosh_test (void) check_isnan ("imag(ccosh(+Inf + i NaN)) = NaN", __imag__ result); result = FUNC(ccosh) (BUILD_COMPLEX (minus_infty, nan_value)); check_isinfp ("real(ccosh(-Inf + i NaN)) = +Inf", __real__ result); - check_isnan ("imag(ccosh(-0 + i NaN)) = NaN", __imag__ result); + check_isnan ("imag(ccosh(-Inf + i NaN)) = NaN", __imag__ result); result = FUNC(ccosh) (BUILD_COMPLEX (9.0, nan_value)); check_isnan ("real(ccosh(9.0 + i NaN)) = NaN", __real__ result); @@ -1926,10 +2058,10 @@ ccosh_test (void) result = FUNC(ccosh) (BUILD_COMPLEX (nan_value, 0.0)); check_isnan ("real(ccosh(NaN + i0)) = NaN", __real__ result); - check ("imag(ccosh(NaN + i0)) = NaN", __imag__ result, 0.0); + check ("imag(ccosh(NaN + i0)) = +-0", FUNC(fabs) (__imag__ result), 0.0); result = FUNC(ccosh) (BUILD_COMPLEX (nan_value, minus_zero)); check_isnan ("real(ccosh(NaN - i0)) = NaN", __real__ result); - check ("imag(ccosh(NaN - i0)) = NaN", __imag__ result, minus_zero); + check ("imag(ccosh(NaN - i0)) = +-0", FUNC(fabs) (__imag__ result), 0.0); result = FUNC(ccosh) (BUILD_COMPLEX (nan_value, 10.0)); check_isnan ("real(ccosh(NaN + i10)) = NaN", __real__ result); @@ -1951,8 +2083,6 @@ ccosh_test (void) } -#if 0 -/* Enable these tests as soon as the functions are available. */ static void cacos_test (void) { @@ -2194,6 +2324,131 @@ cacosh_test (void) static void +casin_test (void) +{ + __complex__ MATHTYPE result; + + result = FUNC(casin) (BUILD_COMPLEX (0, 0)); + check ("real(casin(0 + i0)) = 0", __real__ result, 0); + check ("imag(casin(0 + i0)) = 0", __imag__ result, 0); + result = FUNC(casin) (BUILD_COMPLEX (minus_zero, 0)); + check ("real(casin(-0 + i0)) = -0", __real__ result, minus_zero); + check ("imag(casin(-0 + i0)) = 0", __imag__ result, 0); + result = FUNC(casin) (BUILD_COMPLEX (0, minus_zero)); + check ("real(casin(0 - i0)) = 0", __real__ result, 0); + check ("imag(casin(0 - i0)) = -0", __imag__ result, minus_zero); + result = FUNC(casin) (BUILD_COMPLEX (minus_zero, minus_zero)); + check ("real(casin(-0 - i0)) = -0", __real__ result, minus_zero); + check ("imag(casin(-0 - i0)) = -0", __imag__ result, minus_zero); + + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, plus_infty)); + check ("real(casin(+Inf + i Inf)) = pi/4", __real__ result, M_PI_4); + check_isinfp ("imag(casin(+Inf + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, minus_infty)); + check ("real(casin(+Inf - i Inf)) = pi/4", __real__ result, M_PI_4); + check_isinfn ("imag(casin(+Inf - i Inf)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, plus_infty)); + check ("real(casin(-Inf + i Inf)) = -pi/4", __real__ result, -M_PI_4); + check_isinfp ("imag(casin(-Inf + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, minus_infty)); + check ("real(casin(-Inf - i Inf)) = -pi/4", __real__ result, -M_PI_4); + check_isinfn ("imag(casin(-Inf - i Inf)) = -Inf", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (-10.0, plus_infty)); + check ("real(casin(-10.0 + i Inf)) = -0", __real__ result, minus_zero); + check_isinfp ("imag(casin(-10.0 + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (-10.0, minus_infty)); + check ("real(casin(-10.0 - i Inf)) = -0", __real__ result, minus_zero); + check_isinfn ("imag(casin(-10.0 - i Inf)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (0, plus_infty)); + check ("real(casin(0 + i Inf)) = 0", __real__ result, 0.0); + check_isinfp ("imag(casin(0 + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (0, minus_infty)); + check ("real(casin(0 - i Inf)) = 0", __real__ result, 0.0); + check_isinfn ("imag(casin(0 - i Inf)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_zero, plus_infty)); + check ("real(casin(-0 + i Inf)) = -0", __real__ result, minus_zero); + check_isinfp ("imag(casin(-0 + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_zero, minus_infty)); + check ("real(casin(-0 - i Inf)) = -0", __real__ result, minus_zero); + check_isinfn ("imag(casin(-0 - i Inf)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (0.1, plus_infty)); + check ("real(casin(0.1 + i Inf)) = 0", __real__ result, 0); + check_isinfp ("imag(casin(0.1 + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (0.1, minus_infty)); + check ("real(casin(0.1 - i Inf)) = 0", __real__ result, 0); + check_isinfn ("imag(casin(0.1 - i Inf)) = -Inf", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, 0)); + check ("real(casin(-Inf + i0)) = -pi/2", __real__ result, -M_PI_2); + check_isinfp ("imag(casin(-Inf + i0)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, minus_zero)); + check ("real(casin(-Inf - i0)) = -pi/2", __real__ result, -M_PI_2); + check_isinfn ("imag(casin(-Inf - i0)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, 100)); + check ("real(casin(-Inf + i100)) = -pi/2", __real__ result, -M_PI_2); + check_isinfp ("imag(casin(-Inf + i100)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, -100)); + check ("real(casin(-Inf - i100)) = -pi/2", __real__ result, -M_PI_2); + check_isinfn ("imag(casin(-Inf - i100)) = -Inf", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, 0)); + check ("real(casin(+Inf + i0)) = pi/2", __real__ result, M_PI_2); + check_isinfp ("imag(casin(+Inf + i0)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, minus_zero)); + check ("real(casin(+Inf - i0)) = pi/2", __real__ result, M_PI_2); + check_isinfn ("imag(casin(+Inf - i0)) = -Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, 0.5)); + check ("real(casin(+Inf + i0.5)) = pi/2", __real__ result, M_PI_2); + check_isinfp ("imag(casin(+Inf + i0.5)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, -0.5)); + check ("real(casin(+Inf - i0.5)) = pi/2", __real__ result, M_PI_2); + check_isinfn ("imag(casin(+Inf - i0.5)) = -Inf", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (nan_value, plus_infty)); + check_isnan ("real(casin(NaN + i Inf)) = NaN", __real__ result); + check_isinfp ("imag(casin(NaN + i Inf)) = +Inf", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (nan_value, minus_infty)); + check_isnan ("real(casin(NaN - i Inf)) = NaN", __real__ result); + check_isinfn ("imag(casin(NaN - i Inf)) = -Inf", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (0.0, nan_value)); + check ("real(casin(0 + i NaN)) = 0", __real__ result, 0.0); + check_isnan ("imag(casin(0 + i NaN)) = NaN", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (minus_zero, nan_value)); + check ("real(casin(-0 + i NaN)) = -0", __real__ result, minus_zero); + check_isnan ("imag(casin(-0 + i NaN)) = NaN", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (plus_infty, nan_value)); + check_isnan ("real(casin(+Inf + i NaN)) = NaN", __real__ result); + check_isinfp ("imag(casin(+Inf + i NaN)) = +-Inf", + FUNC(fabs) (__imag__ result)); + result = FUNC(casin) (BUILD_COMPLEX (minus_infty, nan_value)); + check_isnan ("real(casin(-Inf + i NaN)) = NaN", __real__ result); + check_isinfp ("imag(casin(-Inf + NaN)) = +-Inf", + FUNC(fabs) (__imag__ result)); + + result = FUNC(casin) (BUILD_COMPLEX (nan_value, 10.5)); + check_isnan ("real(casin(NaN + i10.5)) = NaN", __real__ result); + check_isnan ("imag(casin(NaN + i10.5)) = NaN", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (nan_value, -10.5)); + check_isnan ("real(casin(NaN - i10.5)) = NaN", __real__ result); + check_isnan ("imag(casin(NaN - i10.5)) = NaN", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (0.75, nan_value)); + check_isnan ("real(casin(0.75 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(casin(0.75 + i NaN)) = NaN", __imag__ result); + result = FUNC(casin) (BUILD_COMPLEX (-0.75, nan_value)); + check_isnan ("real(casin(-0.75 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(casin(-0.75 + i NaN)) = NaN", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (nan_value, nan_value)); + check_isnan ("real(casin(NaN + i NaN)) = NaN", __real__ result); + check_isnan ("imag(casin(NaN + i NaN)) = NaN", __imag__ result); +} + + +static void casinh_test (void) { __complex__ MATHTYPE result; @@ -2236,6 +2491,12 @@ casinh_test (void) result = FUNC(casinh) (BUILD_COMPLEX (0, minus_infty)); check_isinfp ("real(casinh(0 - i Inf)) = +Inf", __real__ result); check ("imag(casinh(0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + result = FUNC(casinh) (BUILD_COMPLEX (minus_zero, plus_infty)); + check_isinfn ("real(casinh(-0 + i Inf)) = -Inf", __real__ result); + check ("imag(casinh(-0 + i Inf)) = pi/2", __imag__ result, M_PI_2); + result = FUNC(casinh) (BUILD_COMPLEX (minus_zero, minus_infty)); + check_isinfn ("real(casinh(-0 - i Inf)) = -Inf", __real__ result); + check ("imag(casinh(-0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); result = FUNC(casinh) (BUILD_COMPLEX (0.1, plus_infty)); check_isinfp ("real(casinh(0.1 + i Inf)) = +Inf", __real__ result); check ("imag(casinh(0.1 + i Inf)) = pi/2", __imag__ result, M_PI_2); @@ -2278,17 +2539,17 @@ casinh_test (void) result = FUNC(casinh) (BUILD_COMPLEX (nan_value, 0)); check_isnan ("real(casinh(NaN + i0)) = NaN", __real__ result); - check ("imag(casinh(NaN + i0)) = 0", __imag__ resul, 0); - result = FUNC(casinh) (BUILD_COMPLEX (minus_zero, nan_value)); + check ("imag(casinh(NaN + i0)) = 0", __imag__ result, 0); + result = FUNC(casinh) (BUILD_COMPLEX (nan_value, minus_zero)); check_isnan ("real(casinh(NaN - i0)) = NaN", __real__ result); check ("imag(casinh(NaN - i0)) = -0", __imag__ result, minus_zero); result = FUNC(casinh) (BUILD_COMPLEX (nan_value, plus_infty)); - check_isinfp ("real(casinh(NaN + i Inf)) = +Inf", + check_isinfp ("real(casinh(NaN + i Inf)) = +-Inf", FUNC(fabs) (__real__ result)); check_isnan ("imag(casinh(NaN + i Inf)) = NaN", __imag__ result); result = FUNC(casinh) (BUILD_COMPLEX (nan_value, minus_infty)); - check_isinfp ("real(casinh(NaN - i Inf)) = +Inf", + check_isinfp ("real(casinh(NaN - i Inf)) = +-Inf", FUNC(fabs) (__real__ result)); check_isnan ("imag(casinh(NaN - i Inf)) = NaN", __imag__ result); @@ -2302,7 +2563,7 @@ casinh_test (void) result = FUNC(casinh) (BUILD_COMPLEX (nan_value, 0.75)); check_isnan ("real(casinh(NaN + i0.75)) = NaN", __real__ result); check_isnan ("imag(casinh(NaN + i0.75)) = NaN", __imag__ result); - result = FUNC(casinh) (BUILD_COMPLEX (-10.5, nan_value)); + result = FUNC(casinh) (BUILD_COMPLEX (-0.75, nan_value)); check_isnan ("real(casinh(NaN - i0.75)) = NaN", __real__ result); check_isnan ("imag(casinh(NaN - i0.75)) = NaN", __imag__ result); @@ -2313,6 +2574,136 @@ casinh_test (void) static void +catan_test (void) +{ + __complex__ MATHTYPE result; + + result = FUNC(catan) (BUILD_COMPLEX (0, 0)); + check ("real(catan(0 + i0)) = 0", __real__ result, 0); + check ("imag(catan(0 + i0)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (minus_zero, 0)); + check ("real(catan(-0 + i0)) = -0", __real__ result, minus_zero); + check ("imag(catan(-0 + i0)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (0, minus_zero)); + check ("real(catan(0 - i0)) = 0", __real__ result, 0); + check ("imag(catan(0 - i0)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (minus_zero, minus_zero)); + check ("real(catan(-0 - i0)) = -0", __real__ result, minus_zero); + check ("imag(catan(-0 - i0)) = -0", __imag__ result, minus_zero); + + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, plus_infty)); + check ("real(catan(+Inf + i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(+Inf + i Inf)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, minus_infty)); + check ("real(catan(+Inf - i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(+Inf - i Inf)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, plus_infty)); + check ("real(catan(-Inf + i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf + i Inf)) = 0", __imag__ result, 0.0); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, minus_infty)); + check ("real(catan(-Inf - i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf - i Inf)) = -0", __imag__ result, minus_zero); + + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, -10.0)); + check ("real(catan(+Inf - i10.0)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(+Inf - i10.0)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, -10.0)); + check ("real(catan(-Inf - i10.0)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf - i10.0)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, minus_zero)); + check ("real(catan(Inf - i0)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(Inf - i0)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, minus_zero)); + check ("real(catan(-Inf - i0)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf - i0)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, 0.0)); + check ("real(catan(Inf + i0)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(Inf + i0)) = 0", __imag__ result, 0.0); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, 0.0)); + check ("real(catan(-Inf + i0)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf + i0)) = 0", __imag__ result, 0.0); + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, 0.1)); + check ("real(catan(+Inf + i0.1)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(+Inf + i0.1)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, 0.1)); + check ("real(catan(-Inf + i0.1)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf + i0.1)) = 0", __imag__ result, 0); + + result = FUNC(catan) (BUILD_COMPLEX (0.0, minus_infty)); + check ("real(catan(0 - i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(0 - i Inf)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (minus_zero, minus_infty)); + check ("real(catan(-0 - i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-0 - i Inf)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (100.0, minus_infty)); + check ("real(catan(100 - i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(100 - i Inf)) = -0", __imag__ result, minus_zero); + result = FUNC(catan) (BUILD_COMPLEX (-100.0, minus_infty)); + check ("real(catan(-100 - i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-100 - i Inf)) = -0", __imag__ result, minus_zero); + + result = FUNC(catan) (BUILD_COMPLEX (0.0, plus_infty)); + check ("real(catan(0 + i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(0 + i Inf)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (minus_zero, plus_infty)); + check ("real(catan(-0 + i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-0 + i Inf)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (0.5, plus_infty)); + check ("real(catan(0.5 + i Inf)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(0.5 + i Inf)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (-0.5, plus_infty)); + check ("real(catan(-0.5 + i Inf)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-0.5 + i Inf)) = 0", __imag__ result, 0); + + result = FUNC(catan) (BUILD_COMPLEX (nan_value, 0.0)); + check_isnan ("real(catan(NaN + i0)) = NaN", __real__ result); + check ("imag(catan(NaN + i0)) = 0", __imag__ result, 0.0); + result = FUNC(catan) (BUILD_COMPLEX (nan_value, minus_zero)); + check_isnan ("real(catan(NaN - i0)) = NaN", __real__ result); + check ("imag(catan(NaN - i0)) = -0", __imag__ result, minus_zero); + + result = FUNC(catan) (BUILD_COMPLEX (nan_value, plus_infty)); + check_isnan ("real(catan(NaN + i Inf)) = NaN", __real__ result); + check ("imag(catan(NaN + i Inf)) = 0", __imag__ result, 0); + result = FUNC(catan) (BUILD_COMPLEX (nan_value, minus_infty)); + check_isnan ("real(catan(NaN - i Inf)) = NaN", __real__ result); + check ("imag(catan(NaN - i Inf)) = -0", __imag__ result, minus_zero); + + result = FUNC(catan) (BUILD_COMPLEX (0.0, nan_value)); + check_isnan ("real(catan(0 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(catan(0 + i NaN)) = NaN", __imag__ result); + result = FUNC(catan) (BUILD_COMPLEX (minus_zero, nan_value)); + check_isnan ("real(catan(-0 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(catan(-0 + i NaN)) = NaN", __imag__ result); + + result = FUNC(catan) (BUILD_COMPLEX (plus_infty, nan_value)); + check ("real(catan(+Inf + i NaN)) = pi/2", __real__ result, M_PI_2); + check ("imag(catan(+Inf + i NaN)) = +-0", FUNC(fabs) (__imag__ result), 0); + result = FUNC(catan) (BUILD_COMPLEX (minus_infty, nan_value)); + check ("real(catan(-Inf + i NaN)) = -pi/2", __real__ result, -M_PI_2); + check ("imag(catan(-Inf + i NaN)) = +-0", FUNC(fabs) (__imag__ result), 0); + + result = FUNC(catan) (BUILD_COMPLEX (nan_value, 10.5)); + check_isnan ("real(catan(NaN + i10.5)) = NaN", __real__ result); + check_isnan ("imag(catan(NaN + i10.5)) = NaN", __imag__ result); + result = FUNC(catan) (BUILD_COMPLEX (nan_value, -10.5)); + check_isnan ("real(catan(NaN - i10.5)) = NaN", __real__ result); + check_isnan ("imag(catan(NaN - i10.5)) = NaN", __imag__ result); + + result = FUNC(catan) (BUILD_COMPLEX (0.75, nan_value)); + check_isnan ("real(catan(0.75 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(catan(0.75 + i NaN)) = NaN", __imag__ result); + result = FUNC(catan) (BUILD_COMPLEX (-0.75, nan_value)); + check_isnan ("real(catan(-0.75 + i NaN)) = NaN", __real__ result); + check_isnan ("imag(catan(-0.75 + i NaN)) = NaN", __imag__ result); + + result = FUNC(catan) (BUILD_COMPLEX (nan_value, nan_value)); + check_isnan ("real(catan(NaN + i NaN)) = NaN", __real__ result); + check_isnan ("imag(catan(NaN + i NaN)) = NaN", __imag__ result); +} + + +static void catanh_test (void) { __complex__ MATHTYPE result; @@ -2344,11 +2735,17 @@ catanh_test (void) check ("imag(catanh(-Inf - i Inf)) = -pi/2", __imag__ result, -M_PI_2); result = FUNC(catanh) (BUILD_COMPLEX (-10.0, plus_infty)); - check ("real(catanh(-10.0 + i Inf)) = -0", __real__ result, -minus_zero); + check ("real(catanh(-10.0 + i Inf)) = -0", __real__ result, minus_zero); check ("imag(catanh(-10.0 + i Inf)) = pi/2", __imag__ result, M_PI_2); result = FUNC(catanh) (BUILD_COMPLEX (-10.0, minus_infty)); - check ("real(catanh(-10.0 - i Inf)) = -0", __real__ result, minus_infty); + check ("real(catanh(-10.0 - i Inf)) = -0", __real__ result, minus_zero); check ("imag(catanh(-10.0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + result = FUNC(catanh) (BUILD_COMPLEX (minus_zero, plus_infty)); + check ("real(catanh(-0 + i Inf)) = -0", __real__ result, minus_zero); + check ("imag(catanh(-0 + i Inf)) = pi/2", __imag__ result, M_PI_2); + result = FUNC(catanh) (BUILD_COMPLEX (minus_zero, minus_infty)); + check ("real(catanh(-0 - i Inf)) = -0", __real__ result, minus_zero); + check ("imag(catanh(-0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); result = FUNC(catanh) (BUILD_COMPLEX (0, plus_infty)); check ("real(catanh(0 + i Inf)) = 0", __real__ result, 0); check ("imag(catanh(0 + i Inf)) = pi/2", __imag__ result, M_PI_2); @@ -2390,10 +2787,10 @@ catanh_test (void) result = FUNC(catanh) (BUILD_COMPLEX (0, nan_value)); check ("real(catanh(0 + i NaN)) = 0", __real__ result, 0); - check_isnan ("imag(catanh(+Inf + i NaN)) = NaN", __imag__ result); + check_isnan ("imag(catanh(0 + i NaN)) = NaN", __imag__ result); result = FUNC(catanh) (BUILD_COMPLEX (minus_zero, nan_value)); check ("real(catanh(-0 + i NaN)) = -0", __real__ result, minus_zero); - check_isnan ("imag(catanh(-Inf + i NaN)) = NaN", __imag__ result); + check_isnan ("imag(catanh(-0 + i NaN)) = NaN", __imag__ result); result = FUNC(catanh) (BUILD_COMPLEX (plus_infty, nan_value)); check ("real(catanh(+Inf + i NaN)) = 0", __real__ result, 0); @@ -2404,8 +2801,8 @@ catanh_test (void) result = FUNC(catanh) (BUILD_COMPLEX (nan_value, 0)); check_isnan ("real(catanh(NaN + i0)) = NaN", __real__ result); - check_isnan ("imag(catanh(NaN + i0)) = NaN", __imag__ resul); - result = FUNC(catanh) (BUILD_COMPLEX (minus_zero, nan_value)); + check_isnan ("imag(catanh(NaN + i0)) = NaN", __imag__ result); + result = FUNC(catanh) (BUILD_COMPLEX (nan_value, minus_zero)); check_isnan ("real(catanh(NaN - i0)) = NaN", __real__ result); check_isnan ("imag(catanh(NaN - i0)) = NaN", __imag__ result); @@ -2426,7 +2823,7 @@ catanh_test (void) result = FUNC(catanh) (BUILD_COMPLEX (nan_value, 0.75)); check_isnan ("real(catanh(NaN + i0.75)) = NaN", __real__ result); check_isnan ("imag(catanh(NaN + i0.75)) = NaN", __imag__ result); - result = FUNC(catanh) (BUILD_COMPLEX (-10.5, nan_value)); + result = FUNC(catanh) (BUILD_COMPLEX (nan_value, -0.75)); check_isnan ("real(catanh(NaN - i0.75)) = NaN", __real__ result); check_isnan ("imag(catanh(NaN - i0.75)) = NaN", __imag__ result); @@ -2449,7 +2846,7 @@ ctanh_test (void) check ("imag(ctanh(0 - i0)) = -0", __imag__ result, minus_zero); result = FUNC(ctanh) (BUILD_COMPLEX (minus_zero, 0)); check ("real(ctanh(-0 + i0)) = -0", __real__ result, minus_zero); - check ("imag(ctanh(-0 + i0)) = -0", __imag__ result, 0); + check ("imag(ctanh(-0 + i0)) = 0", __imag__ result, 0); result = FUNC(ctanh) (BUILD_COMPLEX (minus_zero, minus_zero)); check ("real(ctanh(-0 - i0)) = -0", __real__ result, minus_zero); check ("imag(ctanh(-0 - i0)) = -0", __imag__ result, minus_zero); @@ -2472,7 +2869,7 @@ ctanh_test (void) result = FUNC(ctanh) (BUILD_COMPLEX (minus_infty, 1)); check ("real(ctanh(-Inf + i1)) = -1", __real__ result, -1); check ("imag(ctanh(-Inf + i1)) = 0", __imag__ result, 0); - result = FUNC(ctanh) (BUILD_COMPLEX (pminus_infty, minus_zero)); + result = FUNC(ctanh) (BUILD_COMPLEX (minus_infty, minus_zero)); check ("real(ctanh(-Inf - i0)) = -1", __real__ result, -1); check ("imag(ctanh(-Inf - i0)) = -0", __imag__ result, minus_zero); result = FUNC(ctanh) (BUILD_COMPLEX (minus_infty, -1)); @@ -2514,9 +2911,9 @@ ctanh_test (void) result = FUNC(ctanh) (BUILD_COMPLEX (nan_value, 0)); check_isnan ("real(ctanh(NaN + i0)) = NaN", __real__ result); check ("imag(ctanh(NaN + i0)) = 0", __imag__ result, 0); - result = FUNC(ctanh) (BUILD_COMPLEX (nan_value, minus_infty)); + result = FUNC(ctanh) (BUILD_COMPLEX (nan_value, minus_zero)); check_isnan ("real(ctanh(NaN - i0)) = NaN", __real__ result); - check ("imag(ctanh(NaN - i0)) = -0", __imag__ result, minus_infty); + check ("imag(ctanh(NaN - i0)) = -0", __imag__ result, minus_zero); result = FUNC(ctanh) (BUILD_COMPLEX (nan_value, 0.5)); check_isnan ("real(ctanh(NaN + i0.5)) = NaN", __real__ result); @@ -2542,7 +2939,6 @@ ctanh_test (void) check_isnan ("real(ctanh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(ctanh(NaN + i NaN)) = NaN", __imag__ result); } -#endif static void @@ -2639,7 +3035,7 @@ clog_test (void) result = FUNC(clog) (BUILD_COMPLEX (nan_value, plus_infty)); check_isinfp ("real(clog(NaN + i Inf)) = +Inf", __real__ result); check_isnan ("imag(clog(NaN + i Inf)) = NaN", __imag__ result); - result = FUNC(clog) (BUILD_COMPLEX (minus_infty, nan_value)); + result = FUNC(clog) (BUILD_COMPLEX (nan_value, minus_infty)); check_isinfp ("real(clog(NaN - i Inf)) = +Inf", __real__ result); check_isnan ("imag(clog(NaN - i Inf)) = NaN", __imag__ result); @@ -2675,7 +3071,6 @@ clog_test (void) } -#if 0 static void csqrt_test (void) { @@ -2709,16 +3104,16 @@ csqrt_test (void) result = FUNC(csqrt) (BUILD_COMPLEX (plus_infty, 0)); check_isinfp ("real(csqrt(+Inf + i0)) = +Inf", __real__ result); - check ("imag(csqrt(-Inf + i0)) = 0", __imag__ result, 0); + check ("imag(csqrt(+Inf + i0)) = 0", __imag__ result, 0); result = FUNC(csqrt) (BUILD_COMPLEX (plus_infty, 6)); check_isinfp ("real(csqrt(+Inf + i6)) = +Inf", __real__ result); - check ("imag(csqrt(-Inf + i6)) = 0", __imag__ result, 0); + check ("imag(csqrt(+Inf + i6)) = 0", __imag__ result, 0); result = FUNC(csqrt) (BUILD_COMPLEX (plus_infty, minus_zero)); check_isinfp ("real(csqrt(+Inf - i0)) = +Inf", __real__ result); - check ("imag(csqrt(-Inf - i0)) = -0", __imag__ result, minus_zero); + check ("imag(csqrt(+Inf - i0)) = -0", __imag__ result, minus_zero); result = FUNC(csqrt) (BUILD_COMPLEX (plus_infty, -6)); check_isinfp ("real(csqrt(+Inf - i6)) = +Inf", __real__ result); - check ("imag(csqrt(-Inf - i6)) = -0", __imag__ result, minus_zero); + check ("imag(csqrt(+Inf - i6)) = -0", __imag__ result, minus_zero); result = FUNC(csqrt) (BUILD_COMPLEX (0, plus_infty)); check_isinfp ("real(csqrt(0 + i Inf)) = +Inf", __real__ result); @@ -2796,7 +3191,23 @@ csqrt_test (void) check_isnan ("real(csqrt(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(csqrt(NaN + i NaN)) = NaN", __imag__ result); } -#endif + + +static void +cpow_test (void) +{ + __complex__ MATHTYPE result; +} + + +static void +rint_test (void) +{ + check ("rint(0) = 0", FUNC(rint) (0.0), 0.0); + check ("rint(-0) = -0", FUNC(rint) (minus_zero), minus_zero); + check_isinfp ("rint(+Inf) = +Inf", FUNC(rint) (plus_infty)); + check_isinfn ("rint(-Inf) = -Inf", FUNC(rint) (minus_infty)); +} static void @@ -2806,16 +3217,17 @@ rinttol_test (void) the rounding method and test the critical cases. So far, only unproblematic numbers are tested. */ - check_long ("rinttol(0) = 0", 0.0, 0); - check_long ("rinttol(-0) = 0", minus_zero, 0); - check_long ("rinttol(0.2) = 0", 0.2, 0); - check_long ("rinttol(-0.2) = 0", -0.2, 0); + check_long ("rinttol(0) = 0", rinttol (0.0), 0); + check_long ("rinttol(-0) = 0", rinttol (minus_zero), 0); + check_long ("rinttol(0.2) = 0", rinttol (0.2), 0); + check_long ("rinttol(-0.2) = 0", rinttol (-0.2), 0); - check_long ("rinttol(1.4) = 1", 1.4, 1); - check_long ("rinttol(-1.4) = -1", -1.4, -1); + check_long ("rinttol(1.4) = 1", rinttol (1.4), 1); + check_long ("rinttol(-1.4) = -1", rinttol (-1.4), -1); - check_long ("rinttol(8388600.3) = 8388600", 8388600.3, 8388600); - check_long ("rinttol(-8388600.3) = -8388600", -8388600.3, -8388600); + check_long ("rinttol(8388600.3) = 8388600", rinttol (8388600.3), 8388600); + check_long ("rinttol(-8388600.3) = -8388600", rinttol (-8388600.3), + -8388600); } @@ -2826,16 +3238,79 @@ rinttoll_test (void) the rounding method and test the critical cases. So far, only unproblematic numbers are tested. */ - check_longlong ("rinttoll(0) = 0", 0.0, 0); - check_longlong ("rinttoll(-0) = 0", minus_zero, 0); - check_longlong ("rinttoll(0.2) = 0", 0.2, 0); - check_longlong ("rinttoll(-0.2) = 0", -0.2, 0); + check_longlong ("rinttoll(0) = 0", rinttoll (0.0), 0); + check_longlong ("rinttoll(-0) = 0", rinttoll (minus_zero), 0); + check_longlong ("rinttoll(0.2) = 0", rinttoll (0.2), 0); + check_longlong ("rinttoll(-0.2) = 0", rinttoll (-0.2), 0); - check_longlong ("rinttoll(1.4) = 1", 1.4, 1); - check_longlong ("rinttoll(-1.4) = -1", -1.4, -1); + check_longlong ("rinttoll(1.4) = 1", rinttoll (1.4), 1); + check_longlong ("rinttoll(-1.4) = -1", rinttoll (-1.4), -1); - check_longlong ("rinttoll(8388600.3) = 8388600", 8388600.3, 8388600); - check_longlong ("rinttoll(-8388600.3) = -8388600", -8388600.3, -8388600); + check_longlong ("rinttoll(8388600.3) = 8388600", rinttoll (8388600.3), + 8388600); + check_longlong ("rinttoll(-8388600.3) = -8388600", rinttoll (-8388600.3), + -8388600); +} + + +static void +round_test (void) +{ + check ("round(0) = 0", FUNC(round) (0), 0); + check ("round(-0) = -0", FUNC(round) (minus_zero), minus_zero); + check ("round(0.2) = 0", FUNC(round) (0.2), 0.0); + check ("round(-0.2) = -0", FUNC(round) (-0.2), minus_zero); + check ("round(0.5) = 1", FUNC(round) (0.5), 1.0); + check ("round(-0.5) = -1", FUNC(round) (-0.5), -1.0); + check ("round(0.8) = 1", FUNC(round) (0.8), 1.0); + check ("round(-0.8) = -1", FUNC(round) (-0.8), -1.0); + check ("round(1.5) = 2", FUNC(round) (1.5), 2.0); + check ("round(-1.5) = -2", FUNC(round) (-1.5), -2.0); + check ("round(2097152.5) = 2097153", FUNC(round) (2097152.5), 2097153); + check ("round(-2097152.5) = -2097153", FUNC(round) (-2097152.5), -2097153); +} + + +static void +roundtol_test (void) +{ + check_long ("roundtol(0) = 0", roundtol (0), 0); + check_long ("roundtol(-0) = 0", roundtol (minus_zero), 0); + check_long ("roundtol(0.2) = 0", roundtol (0.2), 0.0); + check_long ("roundtol(-0.2) = 0", roundtol (-0.2), 0); + check_long ("roundtol(0.5) = 1", roundtol (0.5), 1); + check_long ("roundtol(-0.5) = -1", roundtol (-0.5), -1); + check_long ("roundtol(0.8) = 1", roundtol (0.8), 1); + check_long ("roundtol(-0.8) = -1", roundtol (-0.8), -1); + check_long ("roundtol(1.5) = 2", roundtol (1.5), 2); + check_long ("roundtol(-1.5) = -2", roundtol (-1.5), -2); + check_long ("roundtol(2097152.5) = 2097153", roundtol (2097152.5), 2097153); + check_long ("roundtol(-2097152.5) = -2097153", roundtol (-2097152.5), + -2097153); +} + + +static void +roundtoll_test (void) +{ + check_longlong ("roundtoll(0) = 0", roundtoll (0), 0); + check_longlong ("roundtoll(-0) = 0", roundtoll (minus_zero), 0); + check_longlong ("roundtoll(0.2) = 0", roundtoll (0.2), 0.0); + check_longlong ("roundtoll(-0.2) = 0", roundtoll (-0.2), 0); + check_longlong ("roundtoll(0.5) = 1", roundtoll (0.5), 1); + check_longlong ("roundtoll(-0.5) = -1", roundtoll (-0.5), -1); + check_longlong ("roundtoll(0.8) = 1", roundtoll (0.8), 1); + check_longlong ("roundtoll(-0.8) = -1", roundtoll (-0.8), -1); + check_longlong ("roundtoll(1.5) = 2", roundtoll (1.5), 2); + check_longlong ("roundtoll(-1.5) = -2", roundtoll (-1.5), -2); + check_longlong ("roundtoll(2097152.5) = 2097153", + roundtoll (2097152.5), 2097153); + check_longlong ("roundtoll(-2097152.5) = -2097153", + roundtoll (-2097152.5), -2097153); + check_longlong ("roundtoll(34359738368.5) = 34359738369", + roundtoll (34359738368.5), 34359738369ll); + check_longlong ("roundtoll(-34359738368.5) = -34359738369", + roundtoll (-34359738368.5), -34359738369ll); } @@ -3168,11 +3643,25 @@ main (int argc, char *argv[]) #endif cexp_test (); csinh_test (); + ccos_test (); ccosh_test (); clog_test (); - + cacos_test (); + cacosh_test (); + casin_test (); + casinh_test (); + catan_test (); + catanh_test (); + ctanh_test (); + csqrt_test (); + cpow_test (); + + rint_test (); rinttol_test (); rinttoll_test (); + round_test (); + roundtol_test (); + roundtoll_test (); identities (); inverse_functions (); diff --git a/math/math.h b/math/math.h index ce4f486..bf3ef9b 100644 --- a/math/math.h +++ b/math/math.h @@ -115,6 +115,25 @@ extern int signgam; /* ISO C 9X defines some generic macros which work on any data type. */ #if __USE_ISOC9X +/* Get the architecture specific values describing the floating-point + evaluation. The following symbols will get defined: + + float_t floating-point type at least as wide as `float' used + to evaluate `float' expressions + double_t floating-point type at least as wide as `double' used + to evaluate `double' expressions + + FLT_EVAL_METHOD + Defined to + 0 if `float_t' is `float' and `double_t' is `double' + 1 if `float_t' and `double_t' are `double' + 2 if `float_t' and `double_t' are `long double' + else `float_t' and `double_t' are unspecified + + INFINITY representation of the infinity value of type `float_t' +*/ +#include <mathbits.h> + /* All floating-point numbers can be put in one of these categories. */ enum { @@ -133,7 +152,7 @@ enum /* Return number of classification appropriate for X. */ #define fpclassify(x) \ (sizeof (x) == sizeof (float) ? \ - __fpclassifyf (x) \ + __fpclassifyf (x) \ : sizeof (x) == sizeof (double) ? \ __fpclassify (x) : __fpclassifyl (x)) @@ -145,7 +164,11 @@ enum __signbit (x) : __signbitl (x)) /* Return nonzero value if X is not +-Inf or NaN. */ -#define isfinite(x) (fpclassify (x) >= FP_ZERO) +#define isfinite(x) \ + (sizeof (x) == sizeof (float) ? \ + __finitef (x) \ + : sizeof (x) == sizeof (double) ? \ + __finite (x) : __finitel (x)) /* Return nonzero value if X is neither zero, subnormal, Inf, nor NaN. */ #define isnormal(x) (fpclassify (x) == FP_NORMAL) diff --git a/nis/nss_compat/compat-pwd.c b/nis/nss_compat/compat-pwd.c index 1a80355..194b332 100644 --- a/nis/nss_compat/compat-pwd.c +++ b/nis/nss_compat/compat-pwd.c @@ -332,7 +332,7 @@ getpwent_next_nis_netgr (struct passwd *result, ent_t *ent, char *group, if (ent->first == TRUE) { - bzero (&ent->netgrdata, sizeof (struct __netgrent)); + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); __internal_setnetgrent (group, &ent->netgrdata); ent->first = FALSE; } diff --git a/nss/nss_db/db-XXX.c b/nss/nss_db/db-XXX.c index 1596be5..f4ecb98 100644 --- a/nss/nss_db/db-XXX.c +++ b/nss/nss_db/db-XXX.c @@ -63,7 +63,7 @@ internal_setent (int stayopen) if (db == NULL) { - db = dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); + db = __dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); if (db == NULL) status = NSS_STATUS_UNAVAIL; diff --git a/nss/nss_db/db-alias.c b/nss/nss_db/db-alias.c index 2c44f4d..51a63a8 100644 --- a/nss/nss_db/db-alias.c +++ b/nss/nss_db/db-alias.c @@ -47,7 +47,7 @@ internal_setent (int stayopen) if (db == NULL) { - db = dbopen (_PATH_VARDB "aliases.db", O_RDONLY, 0, DB_BTREE, NULL); + db = __dbopen (_PATH_VARDB "aliases.db", O_RDONLY, 0, DB_BTREE, NULL); if (db == NULL) status = NSS_STATUS_UNAVAIL; diff --git a/nss/nss_db/db-netgrp.c b/nss/nss_db/db-netgrp.c index b7c172d..c27c8de 100644 --- a/nss/nss_db/db-netgrp.c +++ b/nss/nss_db/db-netgrp.c @@ -49,7 +49,7 @@ _nss_db_setnetgrent (const char *group) /* Make sure the data base file is open. */ if (db == NULL) { - db = dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); + db = __dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); if (db == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; @@ -1,28 +1,21 @@ -# Polish translation for glibc-1.90. +# Polish translation for GNU libc-2.0.3 # Copyright (C) 1996 Free Software Foundation, Inc. -# Pawe³ Krawczyk <kravietz@pipeta.chemia.pk.edu.pl>, 1996. +# Pawe³ Krawczyk <kravietz@ceti.com.pl>, 1996-97. # msgid "" msgstr "" -"Project-Id-Version: glibc 1.90\n" -"POT-Creation-Date: 1996-05-29 14:03\n" -"PO-Revision-Date: 1996-07-27 16:50+0100\n" -"Last-Translator: Pawe³ Krawczyk <kravietz@pipeta.chemia.pk.edu.pl>\n" +"Project-Id-Version: libc 2.0.3\n" +"POT-Creation-Date: 1997-03-30 19:08+0200\n" +"PO-Revision-Date: 1997-04-08 09:36+0200\n" +"Last-Translator: Pawe³ Krawczyk <kravietz@ceti.com.pl>\n" "Language-Team: Polish <pl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" -#: sunrpc/rpc_main.c:80 -#, c-format -msgid " %s [-c | -h | -l | -m] [-o outfile] [infile]\n" -msgstr " %s [-c | -h | -l | -m] [-o plik_wy] [plik_we]\n" - -#: sunrpc/rpc_main.c:83 -#, c-format -msgid " %s [-s udp|tcp]* [-o outfile] [infile]\n" -msgstr " %s [-s udp|tcp]* [-o plik_wy] [plik_we]\n" - +# collation symbol... +# collation element... dlaczego 'element ³±cz±cy' ??? -pk +# #: sunrpc/rpcinfo.c:612 msgid " rpcinfo -b prognum versnum\n" msgstr " rpcinfo -b nr_programu nr_wersji\n" @@ -43,212 +36,227 @@ msgstr " rpcinfo [ -n nr_portu ] -t host nr_programu [ nr_wersji ]\n" msgid " program vers proto port\n" msgstr " program wer. proto port\n" -#: time/zic.c:423 +#: time/zic.c:419 #, c-format msgid " (rule from \"%s\", line %d)" msgstr " (regu³a z \"%s\", linia %d)" -#: time/zic.c:420 +#: locale/programs/ld-collate.c:363 locale/programs/ld-ctype.c:1242 +msgid " done\n" +msgstr " wykonano\n" + +#: time/zic.c:416 #, c-format msgid "\"%s\", line %d: %s" msgstr "\"%s\", linia %d: %s" -#: time/zic.c:908 +#: time/zic.c:943 #, c-format msgid "\"Zone %s\" line and -l option are mutually exclusive" msgstr "Linia \"Zone %s\" i opcja -l wykluczaj± siê wzajemnie" -#: time/zic.c:916 +#: time/zic.c:951 #, c-format msgid "\"Zone %s\" line and -p option are mutually exclusive" msgstr "Linia \"Zone %s\" i opcja -p wykluczaj± siê wzajemnie" -#: time/zic.c:721 +#: time/zic.c:754 #, c-format msgid "%s in ruleless zone" msgstr "%s w strefie bez regu³" -#: assert/assert.c:48 +#: assert/assert.c:46 #, c-format msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n" -msgstr "%s%s%s:%u: %s%sAsercja `%s' nie powiod³a siê.\n" +msgstr "%s%s%s:%u: %s%sWarunek `%s' nie zosta³ spe³niony.\n" -#: assert/assert-perr.c:46 +#: assert/assert-perr.c:47 #, c-format msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n" msgstr "%s%s%s:%u %s%sNiespodziewany b³±d: %s.\n" -#: stdio-common/psignal.c:48 +#: stdio-common/psignal.c:47 #, c-format msgid "%s%sUnknown signal %d\n" msgstr "%s%sNieznany sygna³ %d\n" -#: sunrpc/rpc_util.c:258 -#, c-format -msgid "%s, line %d: " -msgstr "%s, linia %d: " - -#: time/zic.c:2035 +#: time/zic.c:2172 #, c-format msgid "%s: %d did not sign extend correctly\n" msgstr "%s: %d niepoprawnie rozszerzy³ znak\n" -#: time/zic.c:1339 +#: locale/programs/charmap.c:176 +#, c-format +msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n" +msgstr "%s: <mb_cur_max> musi byæ wiêkszy ni¿ <mb_cur_min>\n" + +#: time/zic.c:1443 #, c-format msgid "%s: Can't create %s: %s\n" msgstr "%s: Nie mogê stworzyæ %s: %s\n" -#: time/zic.c:2014 +#: time/zic.c:2150 #, c-format msgid "%s: Can't create directory %s: %s\n" msgstr "%s: Nie mogê stworzyæ katalogu %s: %s\n" -#: time/zic.c:600 +#: time/zic.c:608 #, c-format msgid "%s: Can't link from %s to %s: %s\n" msgstr "%s: Nie mogê dowi±zaæ %s do %s: %s\n" -#: time/zic.c:746 +#: time/zic.c:780 #, c-format msgid "%s: Can't open %s: %s\n" msgstr "%s: Nie mogê otworzyæ %s: %s\n" -#: time/zic.c:814 +#: time/zic.c:1433 +#, c-format +msgid "%s: Can't remove %s: %s\n" +msgstr "%s: Usuniêcie %s jest niemo¿liwe: %s\n" + +#: time/zic.c:849 #, c-format msgid "%s: Error closing %s: %s\n" msgstr "%s: B³±d przy zamykaniu %s: %s\n" -#: time/zic.c:808 +#: time/zic.c:842 #, c-format msgid "%s: Error reading %s\n" msgstr "%s: B³±d odczytu %s\n" -#: time/zic.c:1404 +#: time/zic.c:1507 #, c-format msgid "%s: Error writing %s\n" msgstr "%s: B³±d zapisu %s\n" -#: time/zdump.c:257 +#: time/zdump.c:266 #, c-format msgid "%s: Error writing standard output " msgstr "%s: B³±d zapisu na standardowe wyj¶cie " -#: time/zic.c:793 +#: time/zic.c:827 #, c-format msgid "%s: Leap line in non leap seconds file %s\n" msgstr "%s: linia Leap nie znajduje siê w pliku sekund przestêpnych %s\n" -#: time/zic.c:360 +#: time/zic.c:357 #, c-format msgid "%s: Memory exhausted: %s\n" msgstr "%s: Brak pamiêci: %s\n" -#: time/zic.c:515 +#: time/zic.c:522 #, c-format msgid "%s: More than one -L option specified\n" msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -L\n" -#: time/zic.c:475 +#: time/zic.c:482 #, c-format msgid "%s: More than one -d option specified\n" msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -d\n" -#: time/zic.c:485 +#: time/zic.c:492 #, c-format msgid "%s: More than one -l option specified\n" msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -l\n" -#: time/zic.c:495 +#: time/zic.c:502 #, c-format msgid "%s: More than one -p option specified\n" msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -p\n" -#: time/zic.c:505 +#: time/zic.c:512 #, c-format msgid "%s: More than one -y option specified\n" msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -y\n" -#: posix/getconf.c:149 -#, c-format -msgid "%s: Unrecognized variable `%s'\n" -msgstr "%s: Nierozpoznana zmienna `%s'\n" - -#: time/zic.c:1741 +#: time/zic.c:1872 #, c-format msgid "%s: command was '%s', result was %d\n" msgstr "%s: polecenie `%s' zwróci³o %d\n" -#: posix/getopt.c:686 +#: locale/programs/charmap.c:593 locale/programs/locfile.c:900 +#, c-format +msgid "%s: error in state machine" +msgstr "%s: b³±d w funkcji stanu" + +#: posix/getopt.c:783 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: z³a opcja -- %c\n" +msgstr "%s: niew³a¶ciwa opcja -- %c\n" -#: posix/getopt.c:689 +#: posix/getopt.c:786 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: b³êdna opcja -- %c\n" -#: posix/getopt.c:610 +#: posix/getopt.c:707 #, c-format msgid "%s: option `%c%s' doesn't allow an argument\n" msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentów\n" -#: posix/getopt.c:581 +#: posix/getopt.c:678 #, c-format msgid "%s: option `%s' is ambiguous\n" msgstr "%s: opcja `%s' jest niejednoznaczna\n" -#: posix/getopt.c:627 +#: posix/getopt.c:724 posix/getopt.c:897 #, c-format msgid "%s: option `%s' requires an argument\n" msgstr "%s: opcja `%s' musi mieæ argument\n" -#: posix/getopt.c:605 +#: posix/getopt.c:702 #, c-format msgid "%s: option `--%s' doesn't allow an argument\n" msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentów\n" -#: posix/getopt.c:725 +#: posix/getopt.c:881 #, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s: opcja musi mieæ argument -- %c\n" +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentów\n" -#: sunrpc/rpc_main.c:146 +#: posix/getopt.c:863 #, c-format -msgid "%s: output would overwrite %s\n" -msgstr "%s: wyj¶cie nadpisze %s\n" +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: opcja `-W %s' jest niejednoznaczna\n" + +#: posix/getopt.c:816 posix/getopt.c:946 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja musi mieæ argument -- %c\n" -#: time/zic.c:800 zic.c:1212 zic.c:1232 +#: time/zic.c:834 time/zic.c:1246 time/zic.c:1266 #, c-format msgid "%s: panic: Invalid l_value %d\n" msgstr "%s: panika: B³êdna l-warto¶æ %d\n" -#: sunrpc/rpc_main.c:152 +#: locale/programs/charmap.c:600 #, c-format -msgid "%s: unable to open " -msgstr "%s: nie mogê otworzyæ " +msgid "%s: premature end of file" +msgstr "%s: przedwczesny koniec pliku" -#: posix/getopt.c:660 +#: posix/getopt.c:757 #, c-format msgid "%s: unrecognized option `%c%s'\n" msgstr "%s: nieznana opcja `%c%s'\n" -#: posix/getopt.c:656 +#: posix/getopt.c:753 #, c-format msgid "%s: unrecognized option `--%s'\n" msgstr "%s: nieznana opcja `--%s'\n" -#: time/zic.c:432 +#: time/zic.c:441 #, c-format msgid "" -"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n" +"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d " +"directory ]\n" "\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n" msgstr "" "%s: sk³adnia: %s [ -s ] [ -v ] [ -l czas_lokalny ] [ -p regu³y_POSIX ]\n" "\t[ -d katalog ] [ -L sek_przestêpne ] [ -y yearistype ]\n" "\t[ plik ... ]\n" -#: time/zdump.c:165 +#: time/zdump.c:174 #, c-format msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n" msgstr "%s: sk³adnia: %s [ -v ] [ -c rok ] nazwa_strefy...\n" @@ -256,236 +264,549 @@ msgstr "%s: sk³adnia: %s [ -v ] [ -c rok ] nazwa_strefy...\n" #: sunrpc/clnt_perr.c:125 #, c-format msgid "(unknown authentication error - %d)" -msgstr "(nieznany b³±d uwierzytelniania - %d)" +msgstr "(nieznany b³±d autoryzacji - %d)" #: sunrpc/rpcinfo.c:555 msgid "(unknown)" msgstr "(nieznany)" -#: catgets/gencat.c:242 +#: catgets/gencat.c:254 msgid "*standard input*" msgstr "*standardowe wej¶cie*" -#: inet/rcmd.c:325 +#: stdio-common/../sysdeps/gnu/errlist.c:766 +msgid ".lib section in a.out corrupted" +msgstr "sekcja .lib w a.out jest uszkodzona" + +#: inet/rcmd.c:363 msgid ".rhosts fstat failed" -msgstr "fstat pliku .rhosts nieudany" +msgstr "fstat pliku .rhosts nieudane" -#: inet/rcmd.c:321 +#: inet/rcmd.c:359 msgid ".rhosts lstat failed" -msgstr "lstat pliku .rhosts nieudany" +msgstr "lstat pliku .rhosts nieudane" -#: inet/rcmd.c:323 +#: inet/rcmd.c:361 msgid ".rhosts not regular file" msgstr ".rhosts nie jest zwyk³ym plikiem" -#: inet/rcmd.c:329 +#: inet/rcmd.c:367 msgid ".rhosts writeable by other than owner" msgstr ".rhosts zapisywalny nie tylko przez w³a¶ciciela" -#: clnt_perr.c:133 sunrpc/clnt_perr.c:112 +#: sunrpc/clnt_perr.c:112 sunrpc/clnt_perr.c:133 #, c-format msgid "; low version = %lu, high version = %lu" -msgstr "; wersja minor = %lu, wersja major = %lu" +msgstr "; wersja poboczna = %lu, wersja g³ówna = %lu" #: sunrpc/clnt_perr.c:119 msgid "; why = " -msgstr "; why = " +msgstr "; bo = " + +#: locale/programs/ld-ctype.c:331 +#, c-format +msgid "<SP> character must not be in class `%s'" +msgstr "znak <SP> nie mo¿e znajdowaæ siê w klasie `%s'" + +#: locale/programs/ld-ctype.c:321 +#, c-format +msgid "<SP> character not in class `%s'" +msgstr "znak <SP> nie jest w klasie `%s'" +#. TRANS The experienced user will know what is wrong. +#. TRANS @c This error code is a joke. Its perror text is part of the joke. +#. TRANS @c Don't change it. +#: stdio-common/../sysdeps/gnu/errlist.c:591 msgid "?" msgstr "?" +#: sysdeps/unix/sysv/linux/siglist.h:27 +msgid "Aborted" +msgstr "Przerwane" + +#: stdio-common/../sysdeps/gnu/errlist.c:762 +msgid "Accessing a corrupted shared library" +msgstr "U¿ycie uszkodzonej biblioteki dzielonej" + +#. TRANS The requested socket address is already in use. @xref{Socket Addresses}. +#: stdio-common/../sysdeps/gnu/errlist.c:354 msgid "Address already in use" msgstr "Adres jest ju¿ w u¿yciu" -msgid "Address family not supported by protocol family" -msgstr "Rodzina adresów nie obs³ugiwana przez rodzinê protoko³ów" +#. TRANS The address family specified for a socket is not supported; it is +#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}. +#: stdio-common/../sysdeps/gnu/errlist.c:349 +msgid "Address family not supported by protocol" +msgstr "Rodzina adresów nie obs³ugiwana przez protokó³" + +#: stdio-common/../sysdeps/gnu/errlist.c:730 +msgid "Advertise error" +msgstr "B³±d podczas og³aszania" +#: stdio-common/../sysdeps/unix/siglist.c:43 +#: sysdeps/unix/sysv/linux/siglist.h:33 msgid "Alarm clock" msgstr "Budzik" +#. TRANS Argument list too long; used when the arguments passed to a new program +#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a +#. TRANS File}) occupy too much memory space. This condition never arises in the +#. TRANS GNU system. +#: stdio-common/../sysdeps/gnu/errlist.c:57 msgid "Argument list too long" msgstr "Lista argumentów za d³uga" +#: stdio-common/../sysdeps/gnu/errlist.c:770 +msgid "Attempting to link in too many shared libraries" +msgstr "Próba ³±czenia ze zbyt wieloma bibliotekami dzielonymi" + #: sunrpc/clnt_perr.c:276 msgid "Authentication OK" -msgstr "Uwierzytelnienie powiod³o siê" +msgstr "Autoryzacja OK" +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:549 msgid "Authentication error" -msgstr "B³±d podczas uwierzytelniania" +msgstr "B³±d autoryzacji" +#. TRANS Bad address; an invalid pointer was detected. +#. TRANS In the GNU system, this error never happens; you get a signal instead. +#: stdio-common/../sysdeps/gnu/errlist.c:102 msgid "Bad address" -msgstr "Z³y adres" +msgstr "B³êdny adres" +#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been +#. TRANS closed or reading from a descriptor open only for writing (or vice +#. TRANS versa). +#: stdio-common/../sysdeps/gnu/errlist.c:70 msgid "Bad file descriptor" -msgstr "Z³y deskryptor pliku" +msgstr "B³êdny deskryptor pliku" + +#: stdio-common/../sysdeps/gnu/errlist.c:718 +msgid "Bad font file format" +msgstr "B³êdny format pliku czcionek" +#: stdio-common/../sysdeps/gnu/errlist.c:610 +msgid "Bad message" +msgstr "B³êdny komunikat" + +#: stdio-common/../sysdeps/unix/siglist.c:41 +#: sysdeps/unix/sysv/linux/siglist.h:56 +msgid "Bad system call" +msgstr "B³êdne wywo³anie systemowe" + +#. TRANS A file that isn't a block special file was given in a situation that +#. TRANS requires one. For example, trying to mount an ordinary file as a file +#. TRANS system in Unix gives this error. +#: stdio-common/../sysdeps/gnu/errlist.c:109 msgid "Block device required" msgstr "Wymagane urz±dzenie blokowe" -#: sunrpc/pmap_rmt.c:336 +#: sunrpc/pmap_rmt.c:338 msgid "Broadcast select problem" msgstr "Problem przy wyborze transmisji" +#. TRANS Broken pipe; there is no process reading from the other end of a pipe. +#. TRANS Every library function that returns this error code also generates a +#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled +#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE} +#. TRANS unless it has handled or blocked @code{SIGPIPE}. +#: stdio-common/../sysdeps/gnu/errlist.c:222 +#: stdio-common/../sysdeps/unix/siglist.c:42 +#: sysdeps/unix/sysv/linux/siglist.h:32 msgid "Broken pipe" msgstr "Przerwany potok" +#: stdio-common/../sysdeps/unix/siglist.c:39 +#: sysdeps/unix/sysv/linux/siglist.h:30 msgid "Bus error" msgstr "B³±d szyny" +#: sysdeps/unix/sysv/linux/siglist.h:43 msgid "CPU time limit exceeded" msgstr "Przekroczony limit czasu procesora" -msgid "Can't assign requested address" -msgstr "Nie mogê przypisaæ ¿±danego adresu" +#: stdio-common/../sysdeps/gnu/errlist.c:758 +msgid "Can not access a needed shared library" +msgstr "Brak dostêpu do wymaganej biblioteki dzielonej" + +#: nis/ypclnt.c:695 +msgid "Can't bind to server which serves this domain" +msgstr "Po³±czenie z serwerem dla tej domeny jest niemo¿liwe" + +#: nis/ypclnt.c:707 +msgid "Can't communicate with portmapper" +msgstr "Komunikacja z portmapperem jest niemo¿liwa" + +#: nis/ypclnt.c:709 +msgid "Can't communicate with ypbind" +msgstr "Komunikacja z ypbind jest niemo¿liwa" -msgid "Can't send after socket shutdown" -msgstr "Nie mogê wysy³aæ po zamkniêciu gniazda" +#: nis/ypclnt.c:711 +msgid "Can't communicate with ypserv" +msgstr "Komunikacja z ypserv jest niemo¿liwa" +#. TRANS No memory available. The system cannot allocate more virtual memory +#. TRANS because its capacity is full. +#: stdio-common/../sysdeps/gnu/errlist.c:91 msgid "Cannot allocate memory" -msgstr "Nie mogê zarezerwowaæ pamiêci" +msgstr "Zarezerwowanie pamiêci niemo¿liwe" -#: sunrpc/pmap_rmt.c:254 +#. TRANS The requested socket address is not available; for example, you tried +#. TRANS to give a socket a name that doesn't match the local host name. +#. TRANS @xref{Socket Addresses}. +#: stdio-common/../sysdeps/gnu/errlist.c:361 +msgid "Cannot assign requested address" +msgstr "Przypisanie ¿±danego adresu niemo¿liwe" + +#: sunrpc/pmap_rmt.c:255 msgid "Cannot create socket for broadcast rpc" -msgstr "Nie mogê stworzyæ gniazda dla transmisji rpc" +msgstr "Stworzenie gniazda dla transmisji rpc niemo¿liwe" + +#: stdio-common/../sysdeps/gnu/errlist.c:774 +msgid "Cannot exec a shared library directly" +msgstr "Bezpo¶rednie uruchomienie biblioteki dzielonej jest niemo¿liwe" -#: sunrpc/pmap_rmt.c:348 +#: sunrpc/pmap_rmt.c:350 msgid "Cannot receive reply to broadcast" -msgstr "Nie dostajê odpowiedzi na transmisjê" +msgstr "Brak odpowiedzi na transmisjê" #: sunrpc/pmap_clnt.c:79 msgid "Cannot register service" -msgstr "Nie mogê zarejestrowaæ us³ugi" +msgstr "Zarejestrowanie us³ugi niemo¿liwe" + +#. TRANS The socket has already been shut down. +#: stdio-common/../sysdeps/gnu/errlist.c:422 +msgid "Cannot send after transport endpoint shutdown" +msgstr "Wysy³anie po zamkniêciu gniazda niemo¿liwe" -#: sunrpc/pmap_rmt.c:312 +#: sunrpc/pmap_rmt.c:313 msgid "Cannot send broadcast packet" -msgstr "Nie mogê wys³aæ pakietu transmisji" +msgstr "Wys³anie pakietu transmisji niemo¿liwe" -#: sunrpc/pmap_rmt.c:260 +#: sunrpc/pmap_rmt.c:261 msgid "Cannot set socket option SO_BROADCAST" -msgstr "Nie mogê ustawiæ opcji gniazda SO_BROADCAST" +msgstr "Ustawienie opcji gniazda SO_BROADCAST niemo¿liwe" +#: stdio-common/../sysdeps/gnu/errlist.c:658 +msgid "Channel number out of range" +msgstr "Numer kana³u poza zakresem" + +#: stdio-common/../sysdeps/unix/siglist.c:49 +#: sysdeps/unix/sysv/linux/siglist.h:39 msgid "Child exited" -msgstr "Proces potomny zakoñczy³" +msgstr "Proces potomny zakoñczy³ pracê" #: sunrpc/clnt_perr.c:286 msgid "Client credential too weak" -msgstr "Wiarygodno¶æ klienta jest zbyt ma³a" +msgstr "Wiarygodno¶æ klienta zbyt ma³a" + +#: stdio-common/../sysdeps/gnu/errlist.c:738 +msgid "Communication error on send" +msgstr "B³±d komunikacji podczas wysy³ania" +#. TRANS Go home and have a glass of warm, dairy-fresh milk. +#: stdio-common/../sysdeps/gnu/errlist.c:601 msgid "Computer bought the farm" -msgstr "Komputer kupil farme" +msgstr "Komputer kupi³ gospodarstwo" +#: locale/programs/ld-ctype.c:1204 +msgid "Computing table size for character classes might take a while..." +msgstr "Obliczanie rozmiaru tablicy klas znaków mo¿e chwilê potrwaæ..." + +#: locale/programs/ld-collate.c:329 +msgid "Computing table size for collation information might take a while..." +msgstr "Obliczanie rozmiaru tablicy sortowania mo¿e chwilê potrwaæ..." + +#. TRANS A remote host refused to allow the network connection (typically because +#. TRANS it is not running the requested service). +#: stdio-common/../sysdeps/gnu/errlist.c:439 msgid "Connection refused" -msgstr "Po³±czenie odrzucone" +msgstr "Odmowa po³±czenia" +#. TRANS A network connection was closed for reasons outside the control of the +#. TRANS local host, such as by the remote machine rebooting or an unrecoverable +#. TRANS protocol violation. +#: stdio-common/../sysdeps/gnu/errlist.c:389 msgid "Connection reset by peer" msgstr "Po³±czenie zerwane przez drug± stronê" +#. TRANS A socket operation with a specified timeout received no response during +#. TRANS the timeout period. +#: stdio-common/../sysdeps/gnu/errlist.c:433 msgid "Connection timed out" -msgstr "Nie doczeka³em siê po³±czenia" +msgstr "Po³±czenie nie doczekane" +#: stdio-common/../sysdeps/unix/siglist.c:48 +#: sysdeps/unix/sysv/linux/siglist.h:38 msgid "Continued" msgstr "Kontynuacja" +#: catgets/gencat.c:169 db/makedb.c:120 locale/programs/locale.c:187 +#: locale/programs/localedef.c:180 +#, c-format +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Oprogramowanie darmowe. Warunki kopiowania zamieszczone s± w kodzie " +"¼ród³owym.\n" +"Nie podlega ¿adnej gwarancji, nawet gwarancji przydatno¶ci do " +"jakiegokolwiek\n" +"zastosowania lub sprzeda¿y.\n" + +#: stdio-common/../sysdeps/unix/siglist.c:53 +msgid "Cputime limit exceeded" +msgstr "Przekroczenie limitu czasu procesora" + +#: nis/ypclnt.c:721 +msgid "Database is busy" +msgstr "Baza danych jest zajêta" + +#. TRANS No default destination address was set for the socket. You get this +#. TRANS error when you try to transmit data over a connectionless socket, +#. TRANS without first specifying a destination for the data with @code{connect}. +#: stdio-common/../sysdeps/gnu/errlist.c:417 msgid "Destination address required" msgstr "Wymagany adres docelowy" -msgid "Device busy" -msgstr "Urz±dzenie zajête" +#: stdio-common/../sysdeps/gnu/errlist.c:638 +msgid "Device not a stream" +msgstr "Urz±dzenie nie jest strumieniem" +#. TRANS No such device or address. The system tried to use the device +#. TRANS represented by a file you specified, and it couldn't find the device. +#. TRANS This can mean that the device file was installed incorrectly, or that +#. TRANS the physical device is missing or not correctly attached to the +#. TRANS computer. +#: stdio-common/../sysdeps/gnu/errlist.c:49 msgid "Device not configured" -msgstr "Urz±dzenie nie skofigurowane" - +msgstr "Urz±dzenie nie jest skonfigurowane" + +#. TRANS Resource busy; a system resource that can't be shared is already in use. +#. TRANS For example, if you try to delete a file that is the root of a currently +#. TRANS mounted filesystem, you get this error. +#: stdio-common/../sysdeps/gnu/errlist.c:116 +msgid "Device or resource busy" +msgstr "Urz±dzenie lub zasoby s± zajête" + +#. TRANS Directory not empty, where an empty directory was expected. Typically, +#. TRANS this error occurs when you are trying to delete a directory. +#: stdio-common/../sysdeps/gnu/errlist.c:468 msgid "Directory not empty" msgstr "Katalog nie jest pusty" +#. TRANS The user's disk quota was exceeded. +#: stdio-common/../sysdeps/gnu/errlist.c:486 msgid "Disc quota exceeded" msgstr "Przekroczony limit dyskowy" +#: nis/ypclnt.c:767 +msgid "Domain not bound" +msgstr "Domena nie zosta³a zwi±zana" + +#: stdio-common/../sysdeps/unix/siglist.c:36 +#: sysdeps/unix/sysv/linux/siglist.h:53 +msgid "EMT trap" +msgstr "pu³apka EMT" + #: sunrpc/clnt_perr.c:254 #, c-format msgid "Error %d" msgstr "B³±d %d" -#: string/../sysdeps/mach/_strerror.c:43 +#: string/../sysdeps/mach/_strerror.c:52 msgid "Error in unknown error system: " -msgstr "B³±d w nieznanym systemie: " +msgstr "B³±d w nieznanym systemie b³êdów: " + +#: inet/ruserpass.c:161 +msgid "Error: .netrc file is readable by others." +msgstr "B³±d: plik .netrc mo¿e byæ czytany przez ka¿dego." +#: stdio-common/../sysdeps/gnu/errlist.c:698 +msgid "Exchange full" +msgstr "Przepe³niona wymiana" + +#. TRANS Invalid executable file format. This condition is detected by the +#. TRANS @code{exec} functions; see @ref{Executing a File}. +#: stdio-common/../sysdeps/gnu/errlist.c:63 msgid "Exec format error" msgstr "B³êdny format pliku wykonywalnego" +#: locale/programs/localedef.c:216 +msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'" +msgstr "PRZERWANIE: system nie definiuje `_POSIX2_LOCALEDEF'" + #: sunrpc/clnt_perr.c:290 msgid "Failed (unspecified error)" -msgstr "Bez powodzenia (nieustalony b³±d)" +msgstr "Nieudane (nieustalony b³±d)" +#: stdio-common/../sysdeps/gnu/errlist.c:750 +msgid "File descriptor in bad state" +msgstr "Deskryptor pliku w z³ym stanie" + +#. TRANS File exists; an existing file was specified in a context where it only +#. TRANS makes sense to specify a new file. +#: stdio-common/../sysdeps/gnu/errlist.c:122 msgid "File exists" msgstr "Plik istnieje" +#: stdio-common/../sysdeps/gnu/errlist.c:714 +msgid "File locking deadlock error" +msgstr "B³±d zakleszczenia podczas blokowania pliku" + +#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for +#. TRANS Files}) or host name too long (in @code{gethostname} or +#. TRANS @code{sethostname}; @pxref{Host Identification}). +#: stdio-common/../sysdeps/gnu/errlist.c:452 msgid "File name too long" msgstr "Za d³uga nazwa pliku" +#: sysdeps/unix/sysv/linux/siglist.h:44 msgid "File size limit exceeded" msgstr "Przekroczony limit wielko¶ci pliku" +#. TRANS File too big; the size of a file would be larger than allowed by the system. +#: stdio-common/../sysdeps/gnu/errlist.c:190 msgid "File too large" msgstr "Plik jest za du¿y" +#: stdio-common/../sysdeps/unix/siglist.c:54 +msgid "Filesize limit exceeded" +msgstr "Przekroczenie limitu wielko¶ci pliku" + +#: stdio-common/../sysdeps/unix/siglist.c:37 +#: sysdeps/unix/sysv/linux/siglist.h:28 msgid "Floating point exception" msgstr "B³±d w obliczeniach zmiennoprzecinkowych" +#. TRANS Function not implemented. Some functions have commands or options defined +#. TRANS that might not be supported in all implementations, and this is the kind +#. TRANS of error you get if you request them and they are not supported. +#: stdio-common/../sysdeps/gnu/errlist.c:561 msgid "Function not implemented" msgstr "Funkcja niezaimplementowana" +#. TRANS This error code has no purpose. +#: stdio-common/../sysdeps/gnu/errlist.c:606 msgid "Gratuitous error" -msgstr "Nieuzasadniony b³±d" +msgstr "Nieoczekiwany b³±d" +#: stdio-common/../sysdeps/unix/siglist.c:30 +#: sysdeps/unix/sysv/linux/siglist.h:22 msgid "Hangup" msgstr "Roz³±czenie" +#. TRANS The remote host for a requested network connection is down. +#: stdio-common/../sysdeps/gnu/errlist.c:457 msgid "Host is down" msgstr "Host nie odpowiada" -#: resolv/herror.c:74 +#: resolv/herror.c:75 msgid "Host name lookup failure" -msgstr "Nazwa hosta nie odnaleziona" +msgstr "Odnalezienie nazwy hosta jest niemo¿liwe" +#: stdio-common/../sysdeps/unix/siglist.c:52 +#: sysdeps/unix/sysv/linux/siglist.h:42 msgid "I/O possible" -msgstr "We/Wy mo¿liwe" +msgstr "We/Wy dozwolone" +#: stdio-common/../sysdeps/unix/siglist.c:35 msgid "IOT trap" msgstr "pu³apka IOT" +#: stdio-common/../sysdeps/gnu/errlist.c:614 +msgid "Identifier removed" +msgstr "Identyfikator zosta³ usuniêty" + +#: sysdeps/unix/sysv/linux/siglist.h:25 msgid "Illegal Instruction" msgstr "Nieznana Instrukcja" +#: stdio-common/../sysdeps/unix/siglist.c:33 +msgid "Illegal instruction" +msgstr "B³êdna instrukcja" + +#. TRANS Invalid seek operation (such as on a pipe). +#: stdio-common/../sysdeps/gnu/errlist.c:201 msgid "Illegal seek" msgstr "B³êdne przesuniêcie" +#. TRANS Inappropriate file type or format. The file was the wrong type for the +#. TRANS operation, or a data file had the wrong format. +#. TRANS +#. TRANS On some systems @code{chmod} returns this error if you try to set the +#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}. +#: stdio-common/../sysdeps/gnu/errlist.c:544 msgid "Inappropriate file type or format" msgstr "Niew³a¶ciwy typ lub format pliku" +#. TRANS Inappropriate I/O control operation, such as trying to set terminal +#. TRANS modes on an ordinary file. +#: stdio-common/../sysdeps/gnu/errlist.c:176 msgid "Inappropriate ioctl for device" msgstr "Niew³a¶ciwy dostêp do urz±dzenia" +#. TRANS In the GNU system, servers supporting the @code{term} protocol return +#. TRANS this error for certain operations when the caller is not in the +#. TRANS foreground process group of the terminal. Users do not usually see this +#. TRANS error because functions such as @code{read} and @code{write} translate +#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control}, +#. TRANS for information on process groups and these signals. +#: stdio-common/../sysdeps/gnu/errlist.c:577 msgid "Inappropriate operation for background process" msgstr "Dzia³anie niedopuszczalne dla procesu w tle" +#: sysdeps/unix/sysv/linux/siglist.h:62 +msgid "Information request" +msgstr "¯±danie informacji" + +#. TRANS Input/output error; usually used for physical read or write errors. +#: stdio-common/../sysdeps/gnu/errlist.c:40 msgid "Input/output error" msgstr "B³±d wej¶cia/wyj¶cia" +#: nis/ypclnt.c:701 +msgid "Internal NIS error" +msgstr "B³±d wewnêtrzny NIS" + +#: nis/ypclnt.c:765 +msgid "Internal ypbind error" +msgstr "B³±d wewnêtrzny ypbind" + +#: stdio-common/../sysdeps/unix/siglist.c:31 +#: sysdeps/unix/sysv/linux/siglist.h:23 msgid "Interrupt" msgstr "Przerwanie" +#. TRANS Interrupted function call; an asynchronous signal occurred and prevented +#. TRANS completion of the call. When this happens, you should try the call +#. TRANS again. +#. TRANS +#. TRANS You can choose to have functions resume after a signal that is handled, +#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted +#. TRANS Primitives}. +#: stdio-common/../sysdeps/gnu/errlist.c:35 msgid "Interrupted system call" msgstr "Przerwane wywo³anie systemowe" +#: stdio-common/../sysdeps/gnu/errlist.c:654 +msgid "Interrupted system call should be restarted" +msgstr "Nale¿y wznowiæ przerwane wywo³anie systemowe" + +#. TRANS Invalid argument. This is used to indicate various kinds of problems +#. TRANS with passing the wrong argument to a library function. +#: stdio-common/../sysdeps/gnu/errlist.c:152 msgid "Invalid argument" msgstr "Z³y argument" -#: posix/regex.c:946 +#: posix/regex.c:960 msgid "Invalid back reference" msgstr "B³êdny odno¶nik wstecz" -#: posix/regex.c:944 +#: posix/regex.c:958 msgid "Invalid character class name" msgstr "B³êdna nazwa klasy znaku" @@ -497,76 +818,213 @@ msgstr "B³êdne uwierzytelnienie klienta" msgid "Invalid client verifier" msgstr "B³êdny weryfikator klienta" -#: posix/regex.c:943 +#: posix/regex.c:957 msgid "Invalid collation character" -msgstr "B³êdny znak porównania" +msgstr "B³êdny znak sortowany" -#: posix/regex.c:950 +#: posix/regex.c:964 msgid "Invalid content of \\{\\}" msgstr "B³êdna zawarto¶æ \\{\\}" +#. TRANS An attempt to make an improper link across file systems was detected. +#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but +#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}). +#: stdio-common/../sysdeps/gnu/errlist.c:129 msgid "Invalid cross-device link" msgstr "B³êdne dowi±zanie miêdzy urz±dzeniami" -#: posix/regex.c:953 +#: stdio-common/../sysdeps/gnu/errlist.c:690 +msgid "Invalid exchange" +msgstr "B³êdna wymiana" + +#. TRANS While decoding a multibyte character the function came along an invalid +#. TRANS or an incomplete sequence of bytes or the given wide character is invalid. +#: stdio-common/../sysdeps/gnu/errlist.c:567 +msgid "Invalid or incomplete multibyte or wide character" +msgstr "B³êdny lub niepe³ny znak wielobajtowy" + +#: posix/regex.c:967 msgid "Invalid preceding regular expression" msgstr "B³êdne poprzedzaj±ce wyra¿enie regularne" -#: posix/regex.c:951 +#: posix/regex.c:965 msgid "Invalid range end" msgstr "B³êdny koniec zakresu" -#: posix/regex.c:942 +#: posix/regex.c:956 msgid "Invalid regular expression" msgstr "B³êdne wyra¿enie regularne" +#: stdio-common/../sysdeps/gnu/errlist.c:706 +msgid "Invalid request code" +msgstr "Z³y kod ¿±dania" + +#: stdio-common/../sysdeps/gnu/errlist.c:694 +msgid "Invalid request descriptor" +msgstr "B³êdny deskryptor ¿±dania" + #: sunrpc/clnt_perr.c:288 msgid "Invalid server verifier" msgstr "B³êdny weryfikator serwera" +#: stdio-common/../sysdeps/gnu/errlist.c:710 +msgid "Invalid slot" +msgstr "B³êdny kana³" + +#. TRANS File is a directory; you cannot open a directory for writing, +#. TRANS or create or remove hard links to it. +#: stdio-common/../sysdeps/gnu/errlist.c:146 msgid "Is a directory" -msgstr "To jest katalog" +msgstr "Jest katalogiem" + +#: stdio-common/../sysdeps/gnu/errlist.c:794 +msgid "Is a named type file" +msgstr "Jest plikiem nazwanym" +#: stdio-common/../sysdeps/unix/siglist.c:38 +#: sysdeps/unix/sysv/linux/siglist.h:29 msgid "Killed" -msgstr "Zabity" +msgstr "Unicestwiony" + +#: stdio-common/../sysdeps/gnu/errlist.c:686 +msgid "Level 2 halted" +msgstr "Poziom 2 zatrzymany" + +#: stdio-common/../sysdeps/gnu/errlist.c:662 +msgid "Level 2 not synchronized" +msgstr "Poziom 2 brak synchronizacji" + +#: stdio-common/../sysdeps/gnu/errlist.c:666 +msgid "Level 3 halted" +msgstr "Poziom 3 zatrzymany" -#: posix/regex.c:952 +#: stdio-common/../sysdeps/gnu/errlist.c:670 +msgid "Level 3 reset" +msgstr "Poziom 3 wyzerowany" + +#: stdio-common/../sysdeps/gnu/errlist.c:626 +msgid "Link has been severed" +msgstr "Po³±czenie zosta³o przerwane" + +#: stdio-common/../sysdeps/gnu/errlist.c:674 +msgid "Link number out of range" +msgstr "Numer dowi±zania poza zakresem" + +#: nis/ypclnt.c:713 +msgid "Local domain name not set" +msgstr "Lokalna domena nie jest ustawiona" + +#: nis/ypclnt.c:703 +msgid "Local resource allocation failure" +msgstr "Wyst±pi³ b³±d podczas przydzielania lokalnych zasobów" + +#: stdio-common/../sysdeps/gnu/errlist.c:722 +msgid "Machine is not on the network" +msgstr "Maszyna nie znajduje siê w tej sieci" + +#: posix/regex.c:966 msgid "Memory exhausted" msgstr "Pamiêæ wyczerpana" +#. TRANS The size of a message sent on a socket was larger than the supported +#. TRANS maximum size. +#: stdio-common/../sysdeps/gnu/errlist.c:305 msgid "Message too long" msgstr "Komunikat za d³ugi" +# wydaje mi sie ze tu chodzi o wyczerpanie TTL i stad 'zbyt' -PK +#: stdio-common/../sysdeps/gnu/errlist.c:618 +msgid "Multihop attempted" +msgstr "Próba przej¶cia przez zbyt wiele ruterów" + +#: nis/ypclnt.c:717 +msgid "NIS client/server version mismatch - can't supply service" +msgstr "Niezgodno¶æ wersji miêdzy klientem i serwerem NIS - us³uga niemo¿liwa" + +#: nis/ypclnt.c:715 +msgid "NIS map data base is bad" +msgstr "Mapa NIS zawiera b³êdy" + +#: stdio-common/../sysdeps/gnu/errlist.c:746 +msgid "Name not unique on network" +msgstr "Istnieje ju¿ taka nazwa w sieci" + +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:554 msgid "Need authenticator" -msgstr "Wymagane uwierzytelnienie" +msgstr "Wymagana autoryzacja" +#. TRANS A network connection was reset because the remote host crashed. +#: stdio-common/../sysdeps/gnu/errlist.c:377 msgid "Network dropped connection on reset" msgstr "Sieæ przerwa³a po³±czenie po resecie" +#. TRANS A socket operation failed because the network was down. +#: stdio-common/../sysdeps/gnu/errlist.c:366 msgid "Network is down" -msgstr "Sieæ le¿y" +msgstr "Sieæ nie dzia³a" +#. TRANS A socket operation failed because the subnet containing the remote host +#. TRANS was unreachable. +#: stdio-common/../sysdeps/gnu/errlist.c:372 msgid "Network is unreachable" -msgstr "Sieæ niedostêpna" +msgstr "Sieæ jest niedostêpna" -#: resolv/herror.c:76 +#: stdio-common/../sysdeps/gnu/errlist.c:682 +msgid "No CSI structure available" +msgstr "Struktura CSI niedostêpna" + +#: stdio-common/../sysdeps/gnu/errlist.c:790 +msgid "No XENIX semaphores available" +msgstr "Brak dostêpnych semaforów XENIXowych" + +#: resolv/herror.c:77 msgid "No address associated with name" msgstr "Brak adresu zwi±zanego z nazw±" +#: stdio-common/../sysdeps/gnu/errlist.c:702 +msgid "No anode" +msgstr "Brak anody" + +#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this +#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the +#. TRANS other from network operations. +#: stdio-common/../sysdeps/gnu/errlist.c:396 msgid "No buffer space available" msgstr "Brak miejsca w buforze" +#. TRANS There are no child processes. This error happens on operations that are +#. TRANS supposed to manipulate child processes, when there aren't any processes +#. TRANS to manipulate. +#: stdio-common/../sysdeps/gnu/errlist.c:77 msgid "No child processes" msgstr "Brak procesów potomnych" +#: stdio-common/../sysdeps/gnu/errlist.c:622 +msgid "No data available" +msgstr "Brak danych" + +#. TRANS No locks available. This is used by the file locking facilities; see +#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but +#. TRANS it can result from an operation to an NFS server running another +#. TRANS operating system. +#: stdio-common/../sysdeps/gnu/errlist.c:535 msgid "No locks available" msgstr "Brak dostêpnych blokad" -#: posix/regex.c:941 +#: posix/regex.c:955 msgid "No match" msgstr "Nic nie pasuje" -#: posix/regex.c:5200 +#: stdio-common/../sysdeps/gnu/errlist.c:630 +msgid "No message of desired type" +msgstr "Brak komunikatu o po¿±danym typie" + +#: nis/ypclnt.c:705 +msgid "No more records in map database" +msgstr "Nie ma wiêcej rekordów w mapie" + +#: posix/regex.c:5324 msgid "No previous regular expression" msgstr "Brak wyra¿enia regularnego" @@ -574,86 +1032,213 @@ msgstr "Brak wyra¿enia regularnego" msgid "No remote programs registered.\n" msgstr "Brak zarejestrowanych zdalnych programów.\n" +#. TRANS The remote host for a requested network connection is not reachable. +#: stdio-common/../sysdeps/gnu/errlist.c:462 msgid "No route to host" -msgstr "Brak drogi do hosta" +msgstr "Brak drogi do systemu" +#. TRANS No space left on device; write operation on a file failed because the +#. TRANS disk is full. +#: stdio-common/../sysdeps/gnu/errlist.c:196 msgid "No space left on device" msgstr "Brak miejsca na urz±dzeniu" +#. TRANS No such file or directory. This is a ``file doesn't exist'' error +#. TRANS for ordinary files that are referenced in contexts where they are +#. TRANS expected to already exist. +#: stdio-common/../sysdeps/gnu/errlist.c:19 msgid "No such file or directory" -msgstr "Nie ma takiego pliku lub katalogu" +msgstr "Nie ma takiego pliku ani katalogu" +#: nis/ypclnt.c:699 +msgid "No such key in map" +msgstr "Brak takiego klucza w mapie" + +#: nis/ypclnt.c:697 +msgid "No such map in server's domain" +msgstr "Nie ma takiej mapy w domenie serwera" + +#. TRANS No process matches the specified process ID. +#: stdio-common/../sysdeps/gnu/errlist.c:24 msgid "No such process" msgstr "Nie ma takiego procesu" +#: stdio-common/../sysdeps/gnu/errlist.c:786 +msgid "Not a XENIX named type file" +msgstr "To nie jest nazwanego pliku w wersji XENIXa" + +#. TRANS A file that isn't a directory was specified when a directory is required. +#: stdio-common/../sysdeps/gnu/errlist.c:140 msgid "Not a directory" msgstr "To nie jest katalog" +#. TRANS Domain error; used by mathematical functions when an argument value does +#. TRANS not fall into the domain over which the function is defined. +#: stdio-common/../sysdeps/gnu/errlist.c:228 msgid "Numerical argument out of domain" msgstr "Argument numeryczny poza zakresem" +#. TRANS Range error; used by mathematical functions when the result value is +#. TRANS not representable because of overflow or underflow. +#: stdio-common/../sysdeps/gnu/errlist.c:234 msgid "Numerical result out of range" msgstr "Wynik numeryczny poza zakresem" -#: time/zic.c:1835 +# to imho jest bardziej zrozumiale - zwlaszcza ze to sie czasem zdarza +# jak sie uruchomi mountd bez -r -PK +#. TRANS An attempt was made to NFS-mount a remote file system with a file name that +#. TRANS already specifies an NFS-mounted file. +#. TRANS (This is an error on some operating systems, but we expect it to work +#. TRANS properly on the GNU system, making this error code impossible.) +#: stdio-common/../sysdeps/gnu/errlist.c:502 +msgid "Object is remote" +msgstr "Zdalny obiekt jest obiektem podmontowanym przez NFS" + +#: time/zic.c:1966 msgid "Odd number of quotation marks" msgstr "Nieparzysta liczba cudzys³owów" +#. TRANS An operation is already in progress on an object that has non-blocking +#. TRANS mode selected. +#: stdio-common/../sysdeps/gnu/errlist.c:294 msgid "Operation already in progress" -msgstr "Czynno¶æ jest ju¿ wykonywana" +msgstr "Operacja jest ju¿ wykonywana" +#. TRANS Operation not permitted; only the owner of the file (or other resource) +#. TRANS or processes with special privileges can perform the operation. +#: stdio-common/../sysdeps/gnu/errlist.c:12 msgid "Operation not permitted" -msgstr "Czynno¶æ niedozwolona" - +msgstr "Operacja niedozwolona" + +#. TRANS The operation you requested is not supported. Some socket functions +#. TRANS don't make sense for all types of sockets, and others may not be +#. TRANS implemented for all communications protocols. In the GNU system, this +#. TRANS error can happen for many calls when the object does not support the +#. TRANS particular operation; it is a generic indication that the server knows +#. TRANS nothing to do for that call. +#: stdio-common/../sysdeps/gnu/errlist.c:338 msgid "Operation not supported" -msgstr "Czynno¶æ niemo¿liwa" +msgstr "Operacja nie obs³ugiwana" +#. TRANS The wrong type of device was given to a function that expects a +#. TRANS particular sort of device. +#: stdio-common/../sysdeps/gnu/errlist.c:135 msgid "Operation not supported by device" -msgstr "Urz±dzenie nie umo¿liwia takiej operacji" - +msgstr "Operacja nie obs³ugiwana przez urz±dzenie" + +#. TRANS An operation that cannot complete immediately was initiated on an object +#. TRANS that has non-blocking mode selected. Some functions that must always +#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return +#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that +#. TRANS the operation has begun and will take some time. Attempts to manipulate +#. TRANS the object before the call completes return @code{EALREADY}. You can +#. TRANS use the @code{select} function to find out when the pending operation +#. TRANS has completed; @pxref{Waiting for I/O}. +#: stdio-common/../sysdeps/gnu/errlist.c:288 msgid "Operation now in progress" -msgstr "Czynno¶æ jest w³a¶nie wykonywana" - +msgstr "Operacja jest w³a¶nie wykonywana" + +#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above). +#. TRANS The values are always the same, on every operating system. +#. TRANS +#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a +#. TRANS separate error code. +#: stdio-common/../sysdeps/gnu/errlist.c:276 +msgid "Operation would block" +msgstr "Operacja spowoduje blokadê" + +#: stdio-common/../sysdeps/gnu/errlist.c:634 +msgid "Out of streams resources" +msgstr "Brak dodatkowych strumieni" + +#: stdio-common/../sysdeps/gnu/errlist.c:726 +msgid "Package not installed" +msgstr "Pakiet nie zosta³ zainstalowany" + +#. TRANS Permission denied; the file permissions do not allow the attempted operation. +#: nis/ypclnt.c:719 stdio-common/../sysdeps/gnu/errlist.c:96 msgid "Permission denied" msgstr "Odmowa dostêpu" +#: sysdeps/unix/sysv/linux/siglist.h:64 msgid "Power failure" msgstr "Awaria zasilania" -#: posix/regex.c:954 +#: posix/regex.c:968 msgid "Premature end of regular expression" msgstr "Niespodziewany koniec wyra¿enia regularnego" +#: stdio-common/../sysdeps/unix/siglist.c:56 +#: sysdeps/unix/sysv/linux/siglist.h:46 msgid "Profiling timer expired" msgstr "Koniec stopera profiluj±cego" +#: stdio-common/../sysdeps/gnu/errlist.c:678 +msgid "Protocol driver not attached" +msgstr "Sterownik protoko³u nie jest pod³±czony" + +#: stdio-common/../sysdeps/gnu/errlist.c:646 +msgid "Protocol error" +msgstr "B³±d protoko³u" + +#. TRANS The socket communications protocol family you requested is not supported. +#: stdio-common/../sysdeps/gnu/errlist.c:343 msgid "Protocol family not supported" -msgstr "Nie wspierana rodzina protoko³ów" +msgstr "Nie obs³ugiwana rodzina protoko³ów" +#. TRANS You specified a socket option that doesn't make sense for the +#. TRANS particular protocol being used by the socket. @xref{Socket Options}. +#: stdio-common/../sysdeps/gnu/errlist.c:316 msgid "Protocol not available" msgstr "Protokó³ niedostêpny" +#. TRANS The socket domain does not support the requested communications protocol +#. TRANS (perhaps because the requested protocol is completely invalid.) +#. TRANS @xref{Creating a Socket}. +#: stdio-common/../sysdeps/gnu/errlist.c:323 msgid "Protocol not supported" -msgstr "Protokó³ nie wspierany" +msgstr "Protokó³ nie obs³ugiwany" +#. TRANS The socket type does not support the requested communications protocol. +#: stdio-common/../sysdeps/gnu/errlist.c:310 msgid "Protocol wrong type for socket" msgstr "Typ protoko³u nie pasuje do gniazda" +#: stdio-common/../sysdeps/unix/siglist.c:32 +#: sysdeps/unix/sysv/linux/siglist.h:24 msgid "Quit" msgstr "Wyj¶cie" +#: stdio-common/../sysdeps/gnu/errlist.c:742 +msgid "RFS specific error" +msgstr "B³±d RFS" + +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:527 msgid "RPC bad procedure for program" msgstr "RPC z³a procedura dla programu" +#: nis/ypclnt.c:693 +msgid "RPC failure on NIS operation" +msgstr "B³±d RPC podczas operacji NIS" + +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:517 msgid "RPC program not available" msgstr "RPC program niedostêpny" +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:522 msgid "RPC program version wrong" msgstr "RPC z³a wersja programu" +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:507 msgid "RPC struct is bad" -msgstr "RPC z³a struktura" +msgstr "RPC b³êdna struktura" +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:512 msgid "RPC version wrong" msgstr "RPC z³a wersja" @@ -683,7 +1268,7 @@ msgstr "RPC: Niekompatybilne wersje RPC" #: sunrpc/clnt_perr.c:195 msgid "RPC: Port mapper failure" -msgstr "RPC: Zawiód³ portmapper" +msgstr "RPC: Awaria portmappera" #: sunrpc/clnt_perr.c:185 msgid "RPC: Procedure unavailable" @@ -715,7 +1300,7 @@ msgstr "RPC: Sukces" #: sunrpc/clnt_perr.c:175 msgid "RPC: Timed out" -msgstr "RPC: Czas oczekiwania wyczerpany" +msgstr "RPC: Czas oczekiwania przekroczony" #: sunrpc/clnt_perr.c:173 msgid "RPC: Unable to receive" @@ -733,81 +1318,96 @@ msgstr "RPC: Nieznany host" msgid "RPC: Unknown protocol" msgstr "RCP: Nieznany protokó³" +#: elf/dlsym.c:49 +msgid "RTLD_NEXT used in code not dynamically loaded" +msgstr "RTLD_NEXT wyst±pi³o w kodzie nie ³adowanym dynamicznie" + +#. TRANS An attempt was made to modify something on a read-only file system. +#: stdio-common/../sysdeps/gnu/errlist.c:206 msgid "Read-only file system" msgstr "System plików wy³±cznie do odczytu" -#: posix/regex.c:955 +#: posix/regex.c:969 msgid "Regular expression too big" msgstr "Wyra¿enie regularne jest za du¿e" -msgid "Reserved error 82" -msgstr "Zarezerwowany b³±d 82" - -msgid "Reserved error 83" -msgstr "Zarezerwowany b³±d 83" - -msgid "Reserved error 84" -msgstr "Zarezerwowany b³±d 84" - -msgid "Reserved error 85" -msgstr "Zarezerwowany b³±d 85" - -msgid "Reserved error 86" -msgstr "Zarezerwowany b³±d 86" - -msgid "Reserved error 87" -msgstr "Zarezerwowany b³±d 87" - -msgid "Reserved error 88" -msgstr "Zarezerwowany b³±d 88" - -msgid "Reserved error 89" -msgstr "Zarezerwowany b³±d 89" - -msgid "Reserved error 90" -msgstr "Zarezerwowany b³±d 90" - -msgid "Reserved error 91" -msgstr "Zarezerwowany b³±d 91" - -msgid "Reserved error 92" -msgstr "Zarezerwowany b³±d 92" - -msgid "Reserved error 93" -msgstr "Zarezerwowany b³±d 93" - -msgid "Reserved error 94" -msgstr "Zarezerwowany b³±d 94" +#: stdio-common/../sysdeps/gnu/errlist.c:798 +msgid "Remote I/O error" +msgstr "B³±d we/wy w odleg³ym systemie" -msgid "Reserved error 95" -msgstr "Zarezerwowany b³±d 95" +#: stdio-common/../sysdeps/gnu/errlist.c:754 +msgid "Remote address changed" +msgstr "Zmieni³ siê odleg³y adres" -msgid "Reserved error 96" -msgstr "Zarezerwowany b³±d 96" +#: inet/ruserpass.c:162 +msgid "Remove password or make file unreadable by others." +msgstr "Usuñ has³o lub uczyñ plik niedostêpnym dla innych" -msgid "Reserved error 97" -msgstr "Zarezerwowany b³±d 97" +#: catgets/gencat.c:224 db/makedb.c:227 locale/programs/locale.c:257 +#: locale/programs/localedef.c:412 +msgid "Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n" +msgstr "" +"B³êdy zg³aszaj za pomoc± skryptu `glibcbug' na adres <bugs@gnu.ai.mit.edu>.\n" -msgid "Reserved error 98" -msgstr "Zarezerwowany b³±d 98" +#: nis/ypclnt.c:691 +msgid "Request arguments bad" +msgstr "Argumenty ¿±dania s± b³êdne" -msgid "Reserved error 99" -msgstr "Zarezerwowany b³±d 99" - -#: resolv/herror.c:72 +#: resolv/herror.c:73 msgid "Resolver Error 0 (no error)" msgstr "B³±d 0 resolvera (bez b³êdów)" -#: resolv/herror.c:114 +#: resolv/herror.c:117 msgid "Resolver internal error" msgstr "B³±d wewnêtrzny resolvera" +#. TRANS Deadlock avoided; allocating a system resource would have resulted in a +#. TRANS deadlock situation. The system does not guarantee that it will notice +#. TRANS all such situations. This error means you got lucky and the system +#. TRANS noticed; it might just hang. @xref{File Locks}, for an example. +#: stdio-common/../sysdeps/gnu/errlist.c:85 msgid "Resource deadlock avoided" -msgstr "Unikniêto blokady zasobów" - +msgstr "Unikniêto zakleszczenia zasobów" + +#: stdio-common/../sysdeps/unix/siglist.c:58 +msgid "Resource lost" +msgstr "Zasoby zosta³y stracone" + +#. TRANS Resource temporarily unavailable; the call might work if you try again +#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN}; +#. TRANS they are always the same in the GNU C library. +#. TRANS +#. TRANS This error can happen in a few different situations: +#. TRANS +#. TRANS @itemize @bullet +#. TRANS @item +#. TRANS An operation that would block was attempted on an object that has +#. TRANS non-blocking mode selected. Trying the same operation again will block +#. TRANS until some external condition makes it possible to read, write, or +#. TRANS connect (whatever the operation). You can use @code{select} to find out +#. TRANS when the operation will be possible; @pxref{Waiting for I/O}. +#. TRANS +#. TRANS @strong{Portability Note:} In older Unix many systems, this condition +#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code +#. TRANS different from @code{EAGAIN}. To make your program portable, you should +#. TRANS check for both codes and treat them the same. +#. TRANS +#. TRANS @item +#. TRANS A temporary resource shortage made an operation impossible. @code{fork} +#. TRANS can return this error. It indicates that the shortage is expected to +#. TRANS pass, so your program can try the call again later and it may succeed. +#. TRANS It is probably a good idea to delay for a few seconds before trying it +#. TRANS again, to allow time for other processes to release scarce resources. +#. TRANS Such shortages are usually fairly serious and affect the whole system, +#. TRANS so usually an interactive program should report the error to the user +#. TRANS and return to its command loop. +#. TRANS @end itemize +#: stdio-common/../sysdeps/gnu/errlist.c:267 msgid "Resource temporarily unavailable" msgstr "Zasoby chwilowo niedostêpne" +#: stdio-common/../sysdeps/unix/siglist.c:40 +#: sysdeps/unix/sysv/linux/siglist.h:31 msgid "Segmentation fault" msgstr "Naruszenie ochrony pamiêci" @@ -819,135 +1419,255 @@ msgstr "Serwer odmówi³ uwierzytelnienia" msgid "Server rejected verifier" msgstr "Serwer odmówi³ weryfikacji" -msgid "Socket is already connected" -msgstr "Gniazdo jest ju¿ po³±czone" - -msgid "Socket is not connected" -msgstr "Gniazdo nie jest po³±czone" +#: stdio-common/../sysdeps/unix/siglist.c:29 +msgid "Signal 0" +msgstr "Sygna³ 0" +#. TRANS A file that isn't a socket was specified when a socket is required. +#: stdio-common/../sysdeps/gnu/errlist.c:299 msgid "Socket operation on non-socket" msgstr "Operacja typu gniazda na obiekcie który nie jest gniazdem" +#. TRANS The socket type is not supported. +#: stdio-common/../sysdeps/gnu/errlist.c:328 msgid "Socket type not supported" -msgstr "Nie wspierany typ gniazda" +msgstr "Nie obs³ugiwany typ gniazda" +#. TRANS A network connection was aborted locally. +#: stdio-common/../sysdeps/gnu/errlist.c:382 msgid "Software caused connection abort" msgstr "Oprogramowanie spowodowa³o przerwanie po³±czenia" +#: stdio-common/../sysdeps/gnu/errlist.c:734 +msgid "Srmount error" +msgstr "B³±d srmount" + +#: sysdeps/unix/sysv/linux/siglist.h:59 +msgid "Stack fault" +msgstr "B³±d stosu" + +#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS +#. TRANS system which is due to file system rearrangements on the server host. +#. TRANS Repairing this condition usually requires unmounting and remounting +#. TRANS the NFS file system on the local host. +#: stdio-common/../sysdeps/gnu/errlist.c:494 msgid "Stale NFS file handle" -msgstr "Nieaktualny NFSowy uchwyt pliku" +msgstr "Nieaktualny uchwyt pliku NFS" +#: stdio-common/../sysdeps/unix/siglist.c:47 +#: sysdeps/unix/sysv/linux/siglist.h:37 msgid "Stopped" msgstr "Zatrzymany" +#: stdio-common/../sysdeps/unix/siglist.c:46 +#: sysdeps/unix/sysv/linux/siglist.h:36 msgid "Stopped (signal)" msgstr "Zatrzymany (sygna³)" +#: stdio-common/../sysdeps/unix/siglist.c:50 +#: sysdeps/unix/sysv/linux/siglist.h:40 msgid "Stopped (tty input)" msgstr "Zatrzymany (wej¶cie z tty)" +#: stdio-common/../sysdeps/unix/siglist.c:51 +#: sysdeps/unix/sysv/linux/siglist.h:41 msgid "Stopped (tty output)" msgstr "Zatrzymany (wyj¶cie na tty)" -#: posix/regex.c:940 +#: stdio-common/../sysdeps/gnu/errlist.c:778 +msgid "Streams pipe error" +msgstr "B³±d potoku biblioteki strumieni" + +#: stdio-common/../sysdeps/gnu/errlist.c:782 +msgid "Structure needs cleaning" +msgstr "Struktura wymaga wyczyszczenia" + +#: nis/ypclnt.c:689 nis/ypclnt.c:763 posix/regex.c:954 +#: stdio-common/../sysdeps/gnu/errlist.c:7 msgid "Success" msgstr "Sukces" +#: nis/ypclnt.c:769 +msgid "System resource allocation failure" +msgstr "Wyst±pi³ b³±d podczas przydzielania zasobów systemowych" + +#: stdio-common/../sysdeps/unix/siglist.c:44 +#: sysdeps/unix/sysv/linux/siglist.h:34 msgid "Terminated" msgstr "Zakoñczony" +#. TRANS An attempt to execute a file that is currently open for writing, or +#. TRANS write to a file that is currently being executed. Often using a +#. TRANS debugger to run a program is considered having it open for writing and +#. TRANS will cause this error. (The name stands for ``text file busy''.) This +#. TRANS is not an error in the GNU system; the text is copied as necessary. +#: stdio-common/../sysdeps/gnu/errlist.c:185 msgid "Text file busy" -msgstr "Plik zajêty" +msgstr "Plik wykonywalny zajêty" -msgid "Too many levels of remote in path" -msgstr "Za du¿o poziomów w ¶cie¿ce" +#: stdio-common/../sysdeps/gnu/errlist.c:650 +msgid "Timer expired" +msgstr "Stoper wyczerpany" +#. TRANS Too many levels of symbolic links were encountered in looking up a file name. +#. TRANS This often indicates a cycle of symbolic links. +#: stdio-common/../sysdeps/gnu/errlist.c:445 msgid "Too many levels of symbolic links" -msgstr "Za du¿o poziomów symlinków" +msgstr "Za du¿o poziomów dowi±zañ" +#. TRANS Too many links; the link count of a single file would become too large. +#. TRANS @code{rename} can cause this error if the file being renamed already has +#. TRANS as many links as it can take (@pxref{Renaming Files}). +#: stdio-common/../sysdeps/gnu/errlist.c:213 msgid "Too many links" msgstr "Za du¿o dowi±zañ" +#. TRANS The current process has too many files open and can't open any more. +#. TRANS Duplicate descriptors do count toward this limit. +#. TRANS +#. TRANS In BSD and GNU, the number of open files is controlled by a resource +#. TRANS limit that can usually be increased. If you get this error, you might +#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited; +#. TRANS @pxref{Limits on Resources}. +#: stdio-common/../sysdeps/gnu/errlist.c:163 msgid "Too many open files" msgstr "Za du¿o otwartych plików" +#. TRANS There are too many distinct file openings in the entire system. Note +#. TRANS that any number of linked channels count as just one file opening; see +#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system. +#: stdio-common/../sysdeps/gnu/errlist.c:170 msgid "Too many open files in system" msgstr "Za du¿o otwartych plików w systemie" +#. TRANS This means that the per-user limit on new process would be exceeded by +#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on +#. TRANS the @code{RLIMIT_NPROC} limit. +#: stdio-common/../sysdeps/gnu/errlist.c:475 msgid "Too many processes" msgstr "Za du¿o procesów" -msgid "Too many references: can't splice" -msgstr "Za du¿o odniesieñ: nie mogê dowi±zaæ" +#. TRANS ??? +#: stdio-common/../sysdeps/gnu/errlist.c:427 +msgid "Too many references: cannot splice" +msgstr "Za du¿o odniesieñ: dowi±zanie niemo¿liwe" +#. TRANS The file quota system is confused because there are too many users. +#. TRANS @c This can probably happen in a GNU system when using NFS. +#: stdio-common/../sysdeps/gnu/errlist.c:481 msgid "Too many users" msgstr "Za du¿o u¿ytkowników" +#: stdio-common/../sysdeps/unix/siglist.c:34 +msgid "Trace/BPT trap" +msgstr "Pu³apka debuggera/BPT" + +#: sysdeps/unix/sysv/linux/siglist.h:26 msgid "Trace/breakpoint trap" -msgstr "Pu³apka debuggera" +msgstr "Pu³apka debuggera/breakpoint" -#: posix/regex.c:945 +#: posix/regex.c:959 msgid "Trailing backslash" -msgstr "Koñcz±cy backslash" +msgstr "Koñcz±cy znak `\\'" +#. TRANS In the GNU system, opening a file returns this error when the file is +#. TRANS translated by a program and the translator program dies while starting +#. TRANS up, before it has connected to the file. +#: stdio-common/../sysdeps/gnu/errlist.c:584 msgid "Translator died" msgstr "Translator przerwa³ pracê" -#: catgets/gencat.c:201 +#. TRANS You tried to connect a socket that is already connected. +#. TRANS @xref{Connecting}. +#: stdio-common/../sysdeps/gnu/errlist.c:402 +msgid "Transport endpoint is already connected" +msgstr "Drugi koniec ma ju¿ po³±czenie" + +#. TRANS The socket is not connected to anything. You get this error when you +#. TRANS try to transmit data over a socket, without first specifying a +#. TRANS destination for the data. For a connectionless socket (for datagram +#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead. +#: stdio-common/../sysdeps/gnu/errlist.c:410 +msgid "Transport endpoint is not connected" +msgstr "Drugi koniec nie jest po³±czony" + +#: catgets/gencat.c:208 db/makedb.c:209 locale/programs/locale.c:241 +#: locale/programs/localedef.c:393 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Napisz `%s --help' by uzyskaæ pomoc.\n" -#: inet/rcmd.c:118 +#: inet/rcmd.c:137 #, c-format msgid "Trying %s...\n" msgstr "Próbujê %s...\n" -#: ../sysdeps/mach/_strerror.c:58 string/../sysdeps/generic/_strerror.c:36 +#: inet/ruserpass.c:246 +#, c-format +msgid "Unknown .netrc keyword %s" +msgstr "Nieznane s³owo kluczowe .netrc %s" + +#: nis/ypclnt.c:723 +msgid "Unknown NIS error code" +msgstr "Nieznany kod b³êdu NIS" + +#: string/../sysdeps/generic/_strerror.c:44 +#: string/../sysdeps/mach/_strerror.c:67 msgid "Unknown error " msgstr "Nieznany b³±d " -#: resolv/herror.c:73 +#: resolv/herror.c:74 msgid "Unknown host" msgstr "Nieznany host" -#: resolv/herror.c:117 +#: resolv/herror.c:120 msgid "Unknown resolver error" msgstr "Nieznany b³±d resolvera" -#: resolv/herror.c:75 +#: resolv/herror.c:76 msgid "Unknown server error" msgstr "Nieznany b³±d serwera" -#: string/strsignal.c:40 +#: string/strsignal.c:41 #, c-format msgid "Unknown signal %d" msgstr "Nieznany sygna³ %d" -#: misc/error.c:92 +#: misc/error.c:100 msgid "Unknown system error" msgstr "Nieznany b³±d systemowy" -#: posix/regex.c:948 +#: nis/ypclnt.c:771 +msgid "Unknown ypbind error" +msgstr "Nieznany b³±d ypbind" + +#: posix/regex.c:962 msgid "Unmatched ( or \\(" msgstr "Niesparowane ( lub \\(" -#: posix/regex.c:956 +#: posix/regex.c:970 msgid "Unmatched ) or \\)" msgstr "Niesparowane ) lub \\)" -#: posix/regex.c:947 +#: posix/regex.c:961 msgid "Unmatched [ or [^" msgstr "Niesparowane [ lub [^" -#: posix/regex.c:949 +#: posix/regex.c:963 msgid "Unmatched \\{" msgstr "Niesparowane \\{" +#: posix/getconf.c:260 +#, c-format +msgid "Unrecognized variable `%s'" +msgstr "Nierozpoznana zmienna `%s'" + +#: stdio-common/../sysdeps/unix/siglist.c:45 +#: sysdeps/unix/sysv/linux/siglist.h:35 msgid "Urgent I/O condition" msgstr "Nag³y wypadek I/O" -#: catgets/gencat.c:204 +#: catgets/gencat.c:212 #, c-format msgid "" "Usage: %s [OPTION]... -o OUTPUT-FILE [INPUT-FILE]...\n" @@ -963,16 +1683,109 @@ msgid "" msgstr "" "Sk³adnia: %s [OPCJA]... -o PLIK_WYJ¦CIOWY [PLIK_WEJ¦CIOWY]...\n" " %s [OPCJA]... [PLIK_WYJ¦CIOWY [PLIK_WEJ¦CIOWY]...]\n" -"Obowi±zkowe argumenty d³ugich form opcji s± wymagane tak¿e dla krótkich form.\n" +"Obowi±zkowe argumenty d³ugich form opcji s± wymagane tak¿e dla krótkich " +"form.\n" " -H, --header stwórz nag³ówek C zawieraj±cy definicje symboli\n" " -h, --help wy¶wietl ten tekst pomocy i zakoñcz pracê\n" -" --new nie u¿ywaj istniej±cego katalogu, wymu¶ nowy plik wyj¶ciowy\n" +" --new nie u¿ywaj istniej±cego katalogu, wymu¶ nowy plik " +"wyj¶ciowy\n" " -o, --output=PLIK zapisz wynik do PLIKu\n" " -V, --version wy¶wietl wersjê programi i zakoñcz pracê.\n" -"Je¶li PLIK_WEJ¦CIOWY to `-', dane s± czytane ze standardowego wej¶cia.\n" -"Je¶li PLIK_WYJ¦CIOWY to `-', wyniki s± wypisywane na standardowe wyj¶cie.\n" +"Je¶li PLIKIEM_WEJ¦CIOWYM jest `-', dane s± czytane ze standardowego " +"wej¶cia.\n" +"Je¶li PLIKIEM_WYJ¦CIOWYM jest `-', wyniki s± wypisywane na standardowe " +"wyj¶cie.\n" -#: posix/getconf.c:81 +#: db/makedb.c:213 +#, c-format +msgid "" +"Usage: %s [OPTION]... INPUT-FILE OUTPUT-FILE\n" +" %s [OPTION]... -o OUTPUT-FILE INPUT-FILE\n" +" %s [OPTION]... -u INPUT-FILE\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +" -f, --fold-case convert key to lower case\n" +" -h, --help display this help and exit\n" +" -o, --output=NAME write output to file NAME\n" +" --quiet don't print messages while building database\n" +" -u, --undo print content of database file, one entry a line\n" +" -V, --version output version information and exit\n" +"If INPUT-FILE is -, input is read from standard input.\n" +msgstr "" +"Sk³adnia: %s PLIK_WEJ¦CIOWY PLIK_WYJ¦CIOWE\n" +" %s [OPCJA]... -o PLIK_WYJ¦CIOWY PLIK_WEJ¦CIOWY\n" +" %s [OPCJA]... -u PLIK_WEJ¦CIOWY\n" +"Obowi±zkowe argumenty d³ugich form opcji s± wymagane tak¿e dla krótkich " +"form.\n" +" -f, --fold-case zamien litery w kluczu na ma³e\n" +" -h, --help wy¶wietl ten tekst pomocy i zakoñcz pracê\n" +" -o, --output=PLIK zapisz wynik do pliku PLIK\n" +" --quiet nie wy¶wietlaj komunikatów podczas tworzenia bazy " +"danych\n" +" -u, --undo wy¶wietl zawarto¶æ bazy, po jednym rekordzie w linii\n" +" -V, --version wy¶wietl wersjê programi i zakoñcz pracê.\n" +"Je¶li PLIKIEM_WEJ¦CIOWYM jest `-', dane s± czytane ze standardowego " +"wej¶cia.\n" + +#: locale/programs/localedef.c:397 +#, c-format +msgid "" +"Usage: %s [OPTION]... name\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +" -c, --force create output even if warning messages were " +"issued\n" +" -h, --help display this help and exit\n" +" -f, --charmap=FILE symbolic character names defined in FILE\n" +" -i, --inputfile=FILE source definitions are found in FILE\n" +" -u, --code-set-name=NAME specify code set for mapping ISO 10646 elements\n" +" -v, --verbose print more messages\n" +" -V, --version output version information and exit\n" +" --posix be strictly POSIX conform\n" +"\n" +"System's directory for character maps: %s\n" +" locale files : %s\n" +msgstr "" +"U¿ycie: %s [OPCJA]... nazwa\n" +"Argumenty wymagane dla d³ugich opcji s± wymagane tak¿e dla krótkich form.\n" +" -c, --force utwórz wynik nawet je¶li pojawi³y siê " +"ostrze¿enia\n" +" -h, --help wy¶wietl ten tekst pomocy i zakoñcz pracê\n" +" -f, --charmap=PLIK symboliczne nazwy znaków zdefiniowane w PLIKu\n" +" -i, --inputfile=PLIK definicje ¼ród³owe pobierz z PLIKu\n" +" -u, --code-set-name=NAZWA nazwa zbioru kodów do mapowania elementów ISO " +"10646\n" +" -v, --verbose wy¶wietlaj wiêcej informacji\n" +" -V, --version wy¶wietl wersjê programu i zakoñcz pracê\n" +" --posix zachowaj ¶cis³± zgodno¶æ ze standardem POSIX\n" +"\n" +"Systemowy katalog tablic znakowych: %s\n" +" pliki lokalizacyjne: %s\n" + +#: locale/programs/locale.c:245 +#, c-format +msgid "" +"Usage: %s [OPTION]... name\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +" -a, --all-locales write names of available locales\n" +" -m, --charmaps write names of available charmaps\n" +"\n" +" -c, --category-name write names of selected categories\n" +" -k, --keyword-name write names of selected keywords\n" +msgstr "" +"U¿ycie: %s [OPCJA]... nazwa\n" +"Argumenty wymagane dla d³ugich opcji s± wymagane tak¿e dla krótkich form.\n" +" -h, --help wy¶wietl ten tekst pomocy i zakoñcz\n" +" -V, --version wy¶wietl wersjê programu i zakoñcz\n" +"\n" +" -a, --all-locales wypisz nazwy dostêpnych lokalizacji\n" +" -m, --charmaps wypisz nazwy dostêpnych map znakowych\n" +"\n" +" -c, --category-name wypisz nazwy wybranych kategorii\n" +" -k, --keyword-name wypisz nazwy wybranych s³ów kluczowych\n" + +#: posix/getconf.c:200 #, c-format msgid "Usage: %s variable_name [pathname]\n" msgstr "Sk³adnie: %s nazwa_zmiennej [¶cie¿ka]\n" @@ -981,263 +1794,634 @@ msgstr "Sk³adnie: %s nazwa_zmiennej [¶cie¿ka]\n" msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n" msgstr "Sk³adnia: rpcinfo [ -n nr_portu ] -u host nr_programu [ nr_wersji ]\n" +#: stdio-common/../sysdeps/unix/siglist.c:59 +#: sysdeps/unix/sysv/linux/siglist.h:48 msgid "User defined signal 1" msgstr "Sygna³ u¿ytkownika 1" +#: stdio-common/../sysdeps/unix/siglist.c:60 +#: sysdeps/unix/sysv/linux/siglist.h:49 msgid "User defined signal 2" msgstr "Sygna³ u¿ytkownika 2" +#: stdio-common/../sysdeps/gnu/errlist.c:642 +msgid "Value too large for defined data type" +msgstr "Warto¶æ za du¿a dla zdefiniowanego typu danych" + +#: stdio-common/../sysdeps/unix/siglist.c:55 +#: sysdeps/unix/sysv/linux/siglist.h:45 msgid "Virtual timer expired" msgstr "Wirtualny stoper wyczerpany" -#: time/zic.c:1740 +#: time/zic.c:1871 msgid "Wild result from command execution" msgstr "Osobliwy wynik wykonania polecenia" +#: stdio-common/../sysdeps/unix/siglist.c:57 +#: sysdeps/unix/sysv/linux/siglist.h:47 msgid "Window changed" msgstr "Okno zmienione" +# czy 'zapisany przez' (program, procedure) czy 'napisany przez' (kogos)? -PK +#: catgets/gencat.c:174 db/makedb.c:125 locale/programs/locale.c:192 +#: locale/programs/localedef.c:185 +#, c-format +msgid "Written by %s.\n" +msgstr "Autor: %s.\n" + +#: nis/ypclnt.c:142 +msgid "YPBINDPROC_DOMAIN: Internal error\n" +msgstr "YPBINDPROC_DOMAIN: B³±d wewnêtrzny\n" + +#: nis/ypclnt.c:146 +#, c-format +msgid "YPBINDPROC_DOMAIN: No server for domain %s\n" +msgstr "YPBINDPROC_DOMAIN: Brak serwera dla domeny %s\n" + +#: nis/ypclnt.c:150 +msgid "YPBINDPROC_DOMAIN: Resource allocation failure\n" +msgstr "YPBINDPROC_DOMAIN: Wyst±pi³ b³±d podczas przydzielania zasobów\n" + +#: nis/ypclnt.c:154 +msgid "YPBINDPROC_DOMAIN: Unknown error\n" +msgstr "YPBINDPROC_DOMAIN: Nieznany b³±d\n" + +#. TRANS You did @strong{what}? +#: stdio-common/../sysdeps/gnu/errlist.c:596 msgid "You really blew it this time" -msgstr "Tym razem da³e¶ dupy" +msgstr "Tym razem da³e¶ popaliæ" -#: time/zic.c:1013 +#: time/zic.c:1048 msgid "Zone continuation line end time is not after end time of previous line" msgstr "Koniec czasu nie znajduje siê po koñcu czasu poprzedniej linii" -#: sunrpc/rpc_parse.c:326 -msgid "array declaration expected" -msgstr "spodziewana deklaracja tablicy" +#: locale/programs/charmap.c:397 locale/programs/locfile.c:363 +#, c-format +msgid "`%1$s' definition does not end with `END %1$s'" +msgstr "definicja `%1$s' musi koñczyæ siê wyra¿eniem `END %1$s'" + +#: locale/programs/ld-monetary.c:359 locale/programs/ld-numeric.c:190 +#, c-format +msgid "`-1' must be last entry in `%s' field in `%s' category" +msgstr "`-1' musi byæ ostatnim elementem w polu `%s' kategorii `%s'" + +#: locale/programs/ld-collate.c:1655 +msgid "`...' must only be used in `...' and `UNDEFINED' entries" +msgstr "`...' mo¿e byæ u¿yte wy³±cznie dla `...' i `UNDEFINED'" + +#: locale/programs/locfile.c:560 +msgid "`from' expected after first argument to `collating-element'" +msgstr "`from' spodziewane po pierwszym argumencie `collate-element'" -#: sunrpc/auth_unix.c:314 +#: locale/programs/ld-collate.c:1112 +msgid "" +"`from' string in collation element declaration contains unknown character" +msgstr "³añcuch `from' w deklaracji elementu sortowania zawiera nieznany znak" + +#: locale/programs/charmap.c:267 +#, c-format +msgid "argument to <%s> must be a single character" +msgstr "argument <%s> musi byæ pojedynczym znakiem" + +#: locale/programs/locfile.c:237 +#, c-format +msgid "argument to `%s' must be a single character" +msgstr "argument `%s' musi byæ pojedynczym znakiem" + +#: sunrpc/auth_unix.c:323 msgid "auth_none.c - Fatal marshalling problem" msgstr "auth_none.c - Problem z prze³±czaniem" -#: inet/rcmd.c:327 +#: inet/rcmd.c:365 msgid "bad .rhosts owner" msgstr "nieodpowiedni w³a¶ciciel .rhosts" -#: time/zic.c:1136 +#: locale/programs/charmap.c:212 locale/programs/locfile.c:231 +msgid "bad argument" +msgstr "b³êdny argument" + +#: time/zic.c:1170 msgid "blank FROM field on Link line" msgstr "puste pole FROM w linii Link" -#: time/zic.c:1140 +#: time/zic.c:1174 msgid "blank TO field on Link line" msgstr "puste pole TO w linii Link" -#: malloc/mcheck.c:174 +#: malloc/mcheck.c:191 msgid "block freed twice" msgstr "blok zwalniany dwa razy" -#: malloc/mcheck.c:177 +#: malloc/mcheck.c:194 msgid "bogus mcheck_status, library is buggy" -msgstr "z³y mcheck_status, biblioteka jest zapluskwiona" +msgstr "b³êdny mcheck_status, biblioteka zawiera b³êdy" -#: sunrpc/pmap_rmt.c:177 +#: sunrpc/pmap_rmt.c:179 msgid "broadcast: ioctl (get interface configuration)" msgstr "transmisja: ioctl (info o konfiguracji interfejsu)" -#: sunrpc/pmap_rmt.c:184 +#: sunrpc/pmap_rmt.c:186 msgid "broadcast: ioctl (get interface flags)" msgstr "transmisja: ioctl (info o flagach interjesu)" -#: sunrpc/svc_udp.c:398 +#: sunrpc/svc_udp.c:402 msgid "cache_set: victim not found" msgstr "cache_set: brak ofiary" +# jak ladnie przetlumaczyc ten until time? -PK +#: time/zic.c:1698 +msgid "can't determine time zone abbreviation to use just after until time" +msgstr "okre¶lenie skrótu strefy czasowej po koñcu przedzia³u czasu jest niemo¿liwe" + #: sunrpc/svc_simple.c:64 #, c-format msgid "can't reassign procedure number %d\n" -msgstr "nie mogê przypisaæ procedury nr %d\n" +msgstr "przypisanie procedury nr %d jest niemo¿liwe\n" + +#: locale/programs/localedef.c:291 +#, c-format +msgid "cannot `stat' locale file `%s'" +msgstr "otwarcie pliku lokalizacji `%s' jest niemo¿liwe" -#: catgets/gencat.c:248 +# collation = sortowanie czy laczenie??? -PK +#: locale/programs/ld-collate.c:1317 +#, c-format +msgid "cannot insert collation element `%.*s'" +msgstr "wstawienie elementu sortowania `%.*s' jest niemo¿liwe" + +#: locale/programs/ld-collate.c:1496 locale/programs/ld-collate.c:1501 +msgid "cannot insert into result table" +msgstr "wstawienie do tablicy wyników jest niemo¿liwe" + +#: locale/programs/ld-collate.c:1169 locale/programs/ld-collate.c:1211 +#, c-format +msgid "cannot insert new collating symbol definition: %s" +msgstr "wstawienie definicji nowego symbolu sortowania niemo¿liwe: %s" + +#: db/makedb.c:161 +#, c-format +msgid "cannot open database file `%s': %s" +msgstr "otwarcie pliku bazy danych `%s' jest niemo¿liwe: %s" + +#: catgets/gencat.c:260 db/makedb.c:180 #, c-format msgid "cannot open input file `%s'" -msgstr "nie mogê otworzyæ wej¶ciowego pliku `%s'" +msgstr "otwarcie wej¶ciowego pliku `%s' niemo¿liwe" + +#: locale/programs/localedef.c:224 +#, c-format +msgid "cannot open locale definition file `%s'" +msgstr "otwarcie pliku definicji lokalnych `%s' niemo¿liwe" -#: catgets/gencat.c:753 gencat.c:794 +#: catgets/gencat.c:765 catgets/gencat.c:806 db/makedb.c:189 #, c-format msgid "cannot open output file `%s'" -msgstr "nie mogê otworzyæ wyj¶ciowego pliku `%s'" +msgstr "otwarcie wyj¶ciowego pliku `%s' niemo¿liwe" + +#: locale/programs/locfile.c:1008 +#, c-format +msgid "cannot open output file `%s' for category `%s'" +msgstr "otwarcie wyj¶ciowego pliku `%s' dla kategorii `%s' niemo¿liwe" + +#: locale/programs/ld-collate.c:1363 +msgid "cannot process order specification" +msgstr "przetwarzanie specyfikacji kolejno¶ci jest niemo¿liwe" + +#: locale/programs/locale.c:304 +#, c-format +msgid "cannot read character map directory `%s'" +msgstr "odczyt katalogu mapy znaków `%s' niemo¿liwy" + +#: locale/programs/locale.c:279 +#, c-format +msgid "cannot read locale directory `%s'" +msgstr "odczyt katalogu lokalizacji %s' jest niemo¿liwy" + +#: locale/programs/localedef.c:313 +#, c-format +msgid "cannot read locale file `%s'" +msgstr "odczyt pliku lokalizacji `%s' niemo¿liwy" + +#: locale/programs/localedef.c:338 +#, c-format +msgid "cannot write output files to `%s'" +msgstr "zapis plików wyj¶ciowych do `%s' niemo¿liwy" + +#: locale/programs/localedef.c:381 +msgid "category data requested more than once: should not happen" +msgstr "wielokrotne ¿±danie kategorii danych: nie powinno wyst±piæ" + +#: locale/programs/ld-ctype.c:266 +#, c-format +msgid "character %s'%s' in class `%s' must be in class `%s'" +msgstr "znak %s'%s' z klasy`%s' musi byæ w klasie `%s'" + +#: locale/programs/ld-ctype.c:291 +#, c-format +msgid "character %s'%s' in class `%s' must not be in class `%s'" +msgstr "znak %s'%s' z klasy `%s' nie mo¿e byæ w klasie `%s'" + +#: locale/programs/ld-ctype.c:313 +msgid "character <SP> not defined in character map" +msgstr "znak <SP> nie zdefiniowany w tablicy znaków" + +#: locale/programs/ld-ctype.c:944 locale/programs/ld-ctype.c:1007 +#: locale/programs/ld-ctype.c:1015 locale/programs/ld-ctype.c:1023 +#: locale/programs/ld-ctype.c:1031 locale/programs/ld-ctype.c:1039 +#: locale/programs/ld-ctype.c:1047 locale/programs/ld-ctype.c:1073 +#: locale/programs/ld-ctype.c:1081 locale/programs/ld-ctype.c:1119 +#: locale/programs/ld-ctype.c:1146 locale/programs/ld-ctype.c:1157 +#, c-format +msgid "character `%s' not defined while needed as default value" +msgstr "znak `%s', wymagany jako domy¶lny, nie zosta³ zdefiniowany" + +#: locale/programs/ld-ctype.c:806 +#, c-format +msgid "character class `%s' already defined" +msgstr "klasa znaków `%s' jest ju¿ zdefiniowana" + +#: locale/programs/ld-ctype.c:838 +#, c-format +msgid "character map `%s' already defined" +msgstr "tablica znaków `%s' jest ju¿ zdefiniowana" + +#: locale/programs/charmap.c:76 +#, c-format +msgid "character map file `%s' not found" +msgstr "nie znaleziono pliku tablicy znaków `%s'" #: sunrpc/clnt_raw.c:106 msgid "clnt_raw.c - Fatal header serialization error." -msgstr "clnt_raw.c - Fatalny b³±d serializacji nag³ówka." +msgstr "clnt_raw.c - Krytyczny b³±d serializacji nag³ówka." -#: inet/rcmd.c:112 +#: locale/programs/ld-collate.c:1332 +#, c-format +msgid "collation element `%.*s' appears more than once: ignore line" +msgstr "element sortowania `%.*s' wyst±pi³ wielokrotnie: linia pominiêta" + +#: locale/programs/ld-collate.c:1350 +#, c-format +msgid "collation symbol `%.*s' appears more than once: ignore line" +msgstr "element sortowania `%.*s' wyst±pi³ wielokrotnie: linia pominiêta" + +#: locale/programs/locfile.c:544 +#, c-format +msgid "collation symbol expected after `%s'" +msgstr "oczekiwano symbolu sortowania po `%s'" + +#: inet/rcmd.c:130 #, c-format msgid "connect to address %s: " msgstr "po³±czenie do adresu %s: " -#: sunrpc/rpc_scan.c:109 -msgid "constant or identifier expected" -msgstr "spodziewana sta³a lub identyfikator" - #: sunrpc/svc_simple.c:70 msgid "couldn't create an rpc server\n" -msgstr "nie mogê stworzyæ serwera rpc\n" - -#: sunrpc/portmap.c:122 -msgid "couldn't do tcp_create\n" -msgstr "nie mogê odpaliæ tcp_create\n" - -#: sunrpc/portmap.c:100 -msgid "couldn't do udp_create\n" -msgstr "nie moge odpaliæ udp_create\n" +msgstr "stworzenie serwera rpc niemo¿liwe\n" #: sunrpc/svc_simple.c:77 #, c-format msgid "couldn't register prog %d vers %d\n" -msgstr "nie mogê zarejestrowaæ prog %d wer. %d\n" +msgstr "rejestracja prog %d wer. %d niemo¿liwa\n" -#: sunrpc/rpc_parse.c:77 -msgid "definition keyword expected" -msgstr "spodziewane s³owo kluczowe definition" +#: locale/programs/charmap.c:86 +#, c-format +msgid "default character map file `%s' not found" +msgstr "nie znaleziono domy¶lnej tablicy znaków `%s'" + +#: locale/programs/ld-time.c:154 +#, c-format +msgid "" +"direction flag in string %d in `era' field in category `%s' is not '+' nor " +"'-'" +msgstr "" +"znacznik kierunku w ³añcuchu %d w polu `era' w kategorii `%s' nie jest '+'\n" +"lub '-'" + +#: locale/programs/ld-time.c:164 +#, c-format +msgid "" +"direction flag in string %d in `era' field in category `%s' is not a single " +"character" +msgstr "" +"znacznik kierunku w ³añcuchu %d w polu `era' w kategorii `%s' nie jest\n" +"pojedynczym znakiem" + +#: locale/programs/charset.c:87 locale/programs/charset.c:132 +#, c-format +msgid "duplicate character name `%s'" +msgstr "dwukrotne wyst±pienie nazwy znaku `%s'" + +#: locale/programs/ld-collate.c:1144 +msgid "duplicate collating element definition" +msgstr "podwójna definicja elementu sortowania" + +#: locale/programs/ld-collate.c:1290 +#, c-format +msgid "duplicate definition for character `%.*s'" +msgstr "wielokrotna definicja znaku `%.*s'" + +#: db/makedb.c:311 +msgid "duplicate key" +msgstr "dwukrotne wyst±pienie klucza" -#: catgets/gencat.c:367 +#: catgets/gencat.c:379 msgid "duplicate set definition" -msgstr "podwójne definicje" +msgstr "podwójna definicja zbioru" -#: time/zic.c:928 +#: time/zic.c:963 #, c-format msgid "duplicate zone name %s (file \"%s\", line %d)" msgstr "podwójna nazwa strefy %s (plik \"%s\", linia %d)" -#: catgets/gencat.c:530 +#: catgets/gencat.c:542 msgid "duplicated message identifier" msgstr "podwójny identyfikator komunikatu" -#: catgets/gencat.c:503 +#: catgets/gencat.c:515 msgid "duplicated message number" msgstr "podwójny numer komunikatu" -#: sunrpc/svc_udp.c:344 +#: locale/programs/ld-collate.c:1699 +msgid "empty weight name: line ignored" +msgstr "pusta nazwa wagi: linia zignorowana" + +#: sunrpc/svc_udp.c:348 msgid "enablecache: cache already enabled" msgstr "enablecache: bufor jest ju¿ aktywny" -#: sunrpc/svc_udp.c:349 +#: sunrpc/svc_udp.c:353 msgid "enablecache: could not allocate cache" msgstr "enablecache: niemo¿liwa alokacja bufora" -#: sunrpc/svc_udp.c:356 +#: sunrpc/svc_udp.c:360 msgid "enablecache: could not allocate cache data" msgstr "enablecache: niemo¿liwa alokacja danych bufora" -#: sunrpc/svc_udp.c:362 +#: sunrpc/svc_udp.c:366 msgid "enablecache: could not allocate cache fifo" msgstr "enablecache: niemo¿liwa alokacja kolejki dla bufora" -#: sunrpc/rpc_util.c:300 +# ellipsis = wyrzutnia jezykowa - sprawdzilem. nawet pamietam ze cos takiego +# istnieje ze szkoly, ale za cholere nie pamietam co to jest ;) -PK +#: locale/programs/ld-collate.c:1422 +msgid "end point of ellipsis range is bigger then start" +msgstr "koniec zakresu wyrzutni wiêkszy niz pocz±tek" + +#: locale/programs/ld-collate.c:1152 +msgid "error while inserting collation element into hash table" +msgstr "b³±d podczas wstawiania elementu sortowanego do tablicy mieszaj±cej" + +#: locale/programs/ld-collate.c:1164 +msgid "error while inserting to hash table" +msgstr "b³±d podczas wstawiania do tablicy mieszaj±cej" + +#: locale/programs/locfile.c:487 +msgid "expect string argument for `copy'" +msgstr "spodziewanym argumentem dla `copy' jest ³añcuch" + +#: time/zic.c:854 +msgid "expected continuation line not found" +msgstr "brak spodziewanej linii kontynuacji" + +#: locale/programs/locfile.c:1032 #, c-format -msgid "expected '%s'" -msgstr "spodziewane '%s'" +msgid "failure while writing data for category `%s'" +msgstr "niepowodzenie przy zapisie danych kategorii `%s'" -#: sunrpc/rpc_util.c:312 +#: nis/ypclnt.c:187 +msgid "fcntl: F_SETFD" +msgstr "fcntl: F_SETFD" + +#: locale/programs/ld-monetary.c:155 locale/programs/ld-numeric.c:95 #, c-format -msgid "expected '%s' or '%s'" -msgstr "spodziewane '%s' lub '%s'" +msgid "field `%s' in category `%s' not defined" +msgstr "pole `%s' w kategorii `%s' nie jest zdefiniowane" -#: sunrpc/rpc_util.c:325 +#: locale/programs/ld-messages.c:81 locale/programs/ld-messages.c:102 #, c-format -msgid "expected '%s', '%s' or '%s'" -msgstr "spodziewane '%s', '%s' lub '%s'" +msgid "field `%s' in category `%s' undefined" +msgstr "pole `%s' w kategorii `%s' nie jest zdefiniowane" -#: time/zic.c:819 -msgid "expected continuation line not found" -msgstr "brak spodziewanej linii kontynuacji" +#: locale/programs/locfile.c:569 +msgid "from-value of `collating-element' must be a string" +msgstr "argument from-value definicji `collating-element' musi byæ ³añcuchem" -#: sunrpc/rpc_parse.c:384 -msgid "expected type specifier" -msgstr "spodziewany specyfikator typu" +#: locale/programs/linereader.c:328 +msgid "garbage at end of character code specification" +msgstr "¶mieci na koñcu specyfikacji kodu znaku" + +#: locale/programs/linereader.c:214 +msgid "garbage at end of number" +msgstr "¶mieci na koñcu liczby" + +#: locale/programs/ld-time.c:183 +#, c-format +msgid "" +"garbage at end of offset value in string %d in `era' field in category `%s'" +msgstr "" +"¶mieci na koñcu warto¶ci offset w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: locale/programs/ld-time.c:238 +#, c-format +msgid "" +"garbage at end of starting date in string %d in `era' field in category `%s'" +msgstr "" +"¶mieci na koñcu pierwszej daty w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: locale/programs/ld-time.c:311 +#, c-format +msgid "" +"garbage at end of stopping date in string %d in `era' field in category `%s'" +msgstr "" +"¶mieci na koñcu drugiej daty w ³añcuchu %d w polu `era' w kategorii `%s'" #: sunrpc/get_myaddr.c:73 msgid "get_myaddress: ioctl (get interface configuration)" -msgstr "get_myaddress: ioctl (info o konfiguracji interfejsu)" +msgstr "get_myaddress: ioctl (informacja o konfiguracji interfejsu)" -#: time/zic.c:1113 +#: time/zic.c:1147 msgid "illegal CORRECTION field on Leap line" msgstr "b³êdne pole CORRECTION w linii Leap" -#: time/zic.c:1117 +#: time/zic.c:1151 msgid "illegal Rolling/Stationary field on Leap line" msgstr "b³êdne ple Rolling/Stationary w linii Leap" -#: sunrpc/rpc_scan.c:281 -msgid "illegal character in file: " -msgstr "b³êdny znak w pliku: " +#: locale/programs/ld-collate.c:1770 +msgid "illegal character constant in string" +msgstr "b³êdna sta³a znakowa w ³añcuchu" -#: sunrpc/rpc_parse.c:146 -msgid "illegal result type" -msgstr "b³êdny typ wyniku" +#: locale/programs/ld-collate.c:1119 +msgid "illegal collation element" +msgstr "b³êdny element sortowania" + +#: locale/programs/charmap.c:196 +msgid "illegal definition" +msgstr "niepoprawna definicja" + +#: locale/programs/charmap.c:349 +msgid "illegal encoding given" +msgstr "niepoprawne kodowanie" -#: catgets/gencat.c:340 gencat.c:417 +#: locale/programs/linereader.c:546 +msgid "illegal escape sequence at end of string" +msgstr "niepoprawna sekwencja escape na koñcu ³añcucha" + +#: locale/programs/charset.c:101 +msgid "illegal names for character range" +msgstr "niepoprawne nazwy dla zakresu znaków" + +#: locale/programs/ld-time.c:176 +#, c-format +msgid "illegal number for offset in string %d in `era' field in category `%s'" +msgstr "" +"nieprawid³owa warto¶æ offset w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: catgets/gencat.c:352 catgets/gencat.c:429 msgid "illegal set number" msgstr "b³êdny numer zbioru" -#: time/zic.c:777 +#: locale/programs/ld-time.c:230 +#, c-format +msgid "illegal starting date in string %d in `era' field in category `%s'" +msgstr "" +"nieprawid³owa pierwsza data w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: locale/programs/ld-time.c:303 +#, c-format +msgid "illegal stopping date in string %d in `era' field in category `%s'" +msgstr "nieprawid³owa druga data w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: locale/programs/ld-ctype.c:812 +#, c-format +msgid "implementation limit: no more than %d character classes allowed" +msgstr "ograniczenie implementacji: dozwolone maksymalnie %d klas znaków" + +#: locale/programs/ld-ctype.c:844 +#, c-format +msgid "implementation limit: no more than %d character maps allowed" +msgstr "ograniczenie implementacji: dozwolone maksymalnie %d map znaków" + +#: db/makedb.c:163 +msgid "incorrectly formatted file" +msgstr "nieprawid³owy format pliku" + +#: time/zic.c:811 msgid "input line of unknown type" msgstr "nieznany typ linii wej¶ciowej" -#: time/zic.c:984 +#: time/zic.c:1760 +msgid "internal error - addtype called with bad isdst" +msgstr "b³±d wewnêtrzny - addtype wywo³ane ze b³êdnym isdst" + +#: time/zic.c:1768 +msgid "internal error - addtype called with bad ttisgmt" +msgstr "b³±d wewnêtrzny - addtype wywo³ane ze b³êdnym ttisgmt" + +#: time/zic.c:1764 +msgid "internal error - addtype called with bad ttisstd" +msgstr "b³±d wewnêtrzny - addtype wywo³ane ze b³êdnym ttisstd" + +#: locale/programs/ld-ctype.c:304 +#, c-format +msgid "internal error in %s, line %u" +msgstr "b³±d wewnêtrzny w %s, linia %u" + +#: time/zic.c:1019 msgid "invalid GMT offset" -msgstr "b³êdne przesuniêcie GMT" +msgstr "nieprawid³owe przesuniêcie GMT" -#: time/zic.c:987 +#: time/zic.c:1022 msgid "invalid abbreviation format" -msgstr "b³êdny format skrótu" +msgstr "nieprawid³owy format skrótu" -#: time/zic.c:1078 zic.c:1277 zic.c:1291 +#: time/zic.c:1112 time/zic.c:1313 time/zic.c:1327 msgid "invalid day of month" -msgstr "z³y dzieñ miesi±ca" +msgstr "nieprawid³owy dzieñ miesi±ca" -#: time/zic.c:1236 +#: time/zic.c:1270 msgid "invalid ending year" -msgstr "z³y rok koñcowy" +msgstr "nieprawid³owy rok koñcowy" -#: time/zic.c:1050 +#: time/zic.c:1084 msgid "invalid leaping year" -msgstr "z³y rok przestêpny" +msgstr "nieprawid³owy rok przestêpny" -#: time/zic.c:1065 zic.c:1168 +#: time/zic.c:1099 time/zic.c:1202 msgid "invalid month name" -msgstr "z³y miesi±c" +msgstr "nieprawid³owy miesi±c" -#: time/zic.c:883 +#: time/zic.c:918 msgid "invalid saved time" -msgstr "z³y czas oszczêdno¶ci" +msgstr "b³êdny czas oszczêdno¶ci" -#: time/zic.c:1216 +#: time/zic.c:1250 msgid "invalid starting year" -msgstr "z³y rok pocz±tkowy" +msgstr "nieprawid³owy rok pocz±tkowy" -#: time/zic.c:1094 zic.c:1196 +#: time/zic.c:1128 time/zic.c:1230 msgid "invalid time of day" -msgstr "z³a pora dnia" +msgstr "nieprawid³owa pora dnia" -#: time/zic.c:1282 +#: time/zic.c:1318 msgid "invalid weekday name" -msgstr "z³y dzieñ tygonia" +msgstr "nieprawid³owy dzieñ tygodnia" + +#: locale/programs/ld-collate.c:1415 +msgid "line after ellipsis must contain character definition" +msgstr "linia za wyrzutni± musi zawieraæ definicjê znaku" + +#: locale/programs/ld-collate.c:1394 +msgid "line before ellipsis does not contain definition for character constant" +msgstr "linia przed wyrzutni± nie mo¿e zawieraæ definicji sta³ej znakowej" -#: time/zic.c:757 +#: time/zic.c:791 msgid "line too long" msgstr "za d³uga linia" -#: catgets/gencat.c:598 +#: locale/programs/localedef.c:285 +#, c-format +msgid "locale file `%s', used in `copy' statement, not found" +msgstr "brak pliku lokalizacji `%s' u¿ytego w wyra¿eniu `copy'" + +#: catgets/gencat.c:610 msgid "malformed line ignored" -msgstr "ignorujê niepoprawn± liniê" +msgstr "b³êdna linia zosta³a pominiêta" -#: malloc/mcheck.c:168 +#: malloc/mcheck.c:185 msgid "memory clobbered before allocated block" -msgstr "pamiêæ zniknê³a zanim zaalokowa³em blok" +msgstr "zniknê³a pamiêæ przed przydzielonym blokiem" -#: malloc/mcheck.c:171 +#: malloc/mcheck.c:188 msgid "memory clobbered past end of allocated block" -msgstr "pamiêæ zniknê³a po alokacji bloku" +msgstr "zniknê³a pamiêæ za koñcem przydzielonego bloku" -#: malloc/mcheck.c:165 +#: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173 +#: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1442 +#: locale/programs/ld-collate.c:1471 locale/programs/locfile.c:962 +#: locale/programs/xmalloc.c:68 posix/getconf.c:250 +msgid "memory exhausted" +msgstr "pamiêæ zosta³a wyczerpana" + +#: malloc/obstack.c:462 +msgid "memory exhausted\n" +msgstr "pamiêæ zosta³a wyczerpana\n" + +#: malloc/mcheck.c:182 msgid "memory is consistent, library is buggy" -msgstr "pamiêæ jest zwarta, biblioteka ma pluskwy" +msgstr "pamiêæ jest zwarta, biblioteka zawiera b³êdy" + +#: locale/programs/ld-time.c:350 +#, c-format +msgid "missing era format in string %d in `era' field in category `%s'" +msgstr "brak formatu ery w ³añcuchu %d w polu `era' w kategorii `%s'" -#: time/zic.c:878 +#: locale/programs/ld-time.c:339 +#, c-format +msgid "missing era name in string %d in `era' field in category `%s'" +msgstr "brak nazwy ery w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: time/zic.c:913 msgid "nameless rule" msgstr "bezimienna regu³a" @@ -1246,37 +2430,59 @@ msgstr "bezimienna regu³a" msgid "never registered prog %d\n" msgstr "program %d nie by³ nigdy zarejestrowany\n" -#: rpc_parse.c:313 sunrpc/rpc_parse.c:305 -msgid "no array-of-pointer declarations -- use typedef" -msgstr "brak deklaracji tablicy wska¼ników - u¿yj typedef" +#: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116 +#, c-format +msgid "no correct regular expression for field `%s' in category `%s': %s" +msgstr "" +"brak poprawnego wyra¿enia regularnego dla pola `%s' w kategorii `%s': %s" -#: time/zic.c:1955 +#: time/zic.c:2086 msgid "no day in month matches rule" msgstr "¿aden z dni miesi±ca nie pasuje do regu³y" -#: sunrpc/portmap.c:452 -msgid "portmap CALLIT: cannot fork.\n" -msgstr "portmap CALLIT: nie mogê rozwidliæ procesu\n" +#: locale/programs/ld-collate.c:260 +msgid "no definition of `UNDEFINED'" +msgstr "brak definicji `UNDEFINED'" -#: portmap.c:117 sunrpc/portmap.c:95 -msgid "portmap cannot bind" -msgstr "portmap nie mo¿e zwi±zaæ" +#: locale/programs/locfile.c:501 +msgid "no other keyword shall be specified when `copy' is used" +msgstr "¿adne s³owo kluczowe nie powinno wystêpowaæ razem z `copy'" -#: portmap.c:113 sunrpc/portmap.c:87 -msgid "portmap cannot create socket" -msgstr "portmap nie mo¿e stworzyæ gniazda" +#: locale/programs/localedef.c:344 +msgid "no output file produced because warning were issued" +msgstr "brak pliku wyj¶ciowego - wyst±pi³y ostrze¿enia" + +#: locale/programs/charmap.c:315 locale/programs/charmap.c:466 +#: locale/programs/charmap.c:545 +msgid "no symbolic name given" +msgstr "brak nazwy symbolicznej" + +#: locale/programs/charmap.c:380 locale/programs/charmap.c:512 +#: locale/programs/charmap.c:578 +msgid "no symbolic name given for end of range" +msgstr "brak nazwy symbolicznej dla koñca zakresu" + +#: locale/programs/ld-collate.c:244 +#, c-format +msgid "no weight defined for symbol `%s'" +msgstr "brak definicji wagi dla symbolu `%s'" -#: rpc_scan.c:464 sunrpc/rpc_scan.c:456 -msgid "preprocessor error" -msgstr "b³±d preprocesora" +#: locale/programs/charmap.c:430 +msgid "only WIDTH definitions are allowed to follow the CHARMAP definition" +msgstr "po definicji CHARMAP mog± wystêpowaæ tylko definicje WIDTH" -#: rpcinfo.c:350 sunrpc/rpcinfo.c:222 +#: db/makedb.c:327 +#, c-format +msgid "problems while reading `%s'" +msgstr "wyst±pi³y problemy podczas czytania `%s'" + +#: sunrpc/rpcinfo.c:222 sunrpc/rpcinfo.c:350 #, c-format msgid "program %lu is not available\n" msgstr "program %lu jest niedostêpny\n" -#: rpcinfo.c:282 rpcinfo.c:371 rpcinfo.c:408 rpcinfo.c:429 -#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:462 +#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:282 sunrpc/rpcinfo.c:371 +#: sunrpc/rpcinfo.c:408 sunrpc/rpcinfo.c:429 sunrpc/rpcinfo.c:462 #, c-format msgid "program %lu version %lu is not available\n" msgstr "program %lu wersja %lu jest niedostêpny\n" @@ -1286,25 +2492,25 @@ msgstr "program %lu wersja %lu jest niedostêpny\n" msgid "program %lu version %lu ready and waiting\n" msgstr "program %lu wersja %lu gotowy i oczekuje\n" -#: inet/rcmd.c:154 +#: inet/rcmd.c:172 #, c-format -msgid "rcmd: select (setting up stderr): %s\n" -msgstr "rcmd: select (ustawienie stderr): %s\n" +msgid "rcmd: select (setting up stderr): %m\n" +msgstr "rcmd: select (podczas ustawiania stderr): %m\n" -#: inet/rcmd.c:86 +#: inet/rcmd.c:104 msgid "rcmd: socket: All ports in use\n" msgstr "rcmd: socket: Wszystkie porty zajête\n" -#: inet/rcmd.c:141 +#: inet/rcmd.c:160 #, c-format -msgid "rcmd: write (setting up stderr): %s\n" -msgstr "rcmd: write (ustawianie stderr): %s\n" +msgid "rcmd: write (setting up stderr): %m\n" +msgstr "rcmd: write (podczas ustawiania stderr): %m\n" #: sunrpc/svc_simple.c:83 msgid "registerrpc: out of memory\n" msgstr "registerrpc: brak pamiêci\n" -#: time/zic.c:1690 +#: time/zic.c:1821 msgid "repeated leap second moment" msgstr "powtórzone sekundy przestêpne" @@ -1316,7 +2522,7 @@ msgstr "rpcinfo: nieznany host %s\n" #: sunrpc/rpcinfo.c:626 #, c-format msgid "rpcinfo: %s is unknown service\n" -msgstr "rpcinfo: nieznana us³ug %s\n" +msgstr "rpcinfo: nieznana us³uga %s\n" #: sunrpc/rpcinfo.c:600 #, c-format @@ -1326,171 +2532,536 @@ msgstr "rpcinfo: Nie mogê usun±æ rejestracji prog %s wer. %s\n" #: sunrpc/rpcinfo.c:576 #, c-format msgid "rpcinfo: broadcast failed: %s\n" -msgstr "rpcinfo: nieudana transmisja: %s\n" +msgstr "rpcinfo: rozg³aszanie nieudane: %s\n" #: sunrpc/rpcinfo.c:505 msgid "rpcinfo: can't contact portmapper" -msgstr "rpcinfo: nie mogê skontaktowaæ siê z portmapperem" +msgstr "rpcinfo: kontakt z portmapperem niemo¿liwy" #: sunrpc/rpcinfo.c:510 msgid "rpcinfo: can't contact portmapper: " -msgstr "rpcinfo: nie mogê skontaktowaæ siê z portmapperem: " +msgstr "rpcinfo: kontakt z portmapperem niemo¿liwy: " -#: sunrpc/portmap.c:138 -msgid "run_svc returned unexpectedly\n" -msgstr "run_svc powróci³ niespodziewanie\n" +#: time/zic.c:704 time/zic.c:706 +msgid "same rule name in multiple files" +msgstr "ta sama nazwa nazwa regu³y w ró¿nych plikach" -#: inet/rcmd.c:158 +#: inet/rcmd.c:175 msgid "select: protocol failure in circuit setup\n" msgstr "select: b³±d protoko³u podczas ustawiania\n" -#: inet/rcmd.c:176 -msgid "socket: protocol failure in circuit setup.\n" -msgstr "socket: b³±d protoko³u podczas ustawiania.\n" +#: inet/rcmd.c:193 +msgid "socket: protocol failure in circuit setup\n" +msgstr "socket: protokó³ zawiód³ podczas konfiguracji po³±czenia\n" + +#: locale/programs/locfile.c:622 +msgid "sorting order `forward' and `backward' are mutually exclusive" +msgstr "porz±dki sortowania `forward' i `backward' wykluczaj± siê wzajemnie" -#: time/zic.c:742 +#: locale/programs/ld-collate.c:1571 locale/programs/ld-collate.c:1617 +msgid "" +"specification of sorting weight for collation symbol does not make sense" +msgstr "specyfikacja wagi dla elementu sortowania nie ma sensu" + +#: time/zic.c:775 msgid "standard input" msgstr "standardowe wej¶cie" -#: time/zdump.c:259 +#: time/zdump.c:268 msgid "standard output" msgstr "standardowe wyj¶cie" -#: time/zic.c:1240 +#: locale/programs/ld-time.c:257 +#, c-format +msgid "starting date is illegal in string %d in `era' field in category `%s'" +msgstr "" +"nieprawid³owa pierwsza data w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: time/zic.c:1274 msgid "starting year greater than ending year" -msgstr "rok pocz±tkowy pó¼niejszy od koñcowego" +msgstr "pierwszy rok jest pó¼niejszy ni¿ drugi" -#: sunrpc/svc_tcp.c:199 svc_tcp.c:204 +#: locale/programs/ld-time.c:330 +#, c-format +msgid "stopping date is illegal in string %d in `era' field in category `%s'" +msgstr "nieprawid³owa druga data w ³añcuchu %d w polu `era' w kategorii `%s'" + +#: sunrpc/svc_tcp.c:201 sunrpc/svc_tcp.c:206 msgid "svc_tcp: makefd_xprt: out of memory\n" msgstr "svc_tcp: makefd_xprt: brak pamiêci\n" -#: sunrpc/svc_tcp.c:147 +#: sunrpc/svc_tcp.c:149 msgid "svctcp_.c - cannot getsockname or listen" -msgstr "svctcp_.c - nie mogê odpaliæ getsockname lub listen" +msgstr "svctcp_.c - wykonanie getsockname lub listen niemo¿liwe" -#: sunrpc/svc_tcp.c:134 +#: sunrpc/svc_tcp.c:136 msgid "svctcp_.c - udp socket creation problem" msgstr "svctcp_.c - problemy przy tworzeniu gniazda udp" -#: sunrpc/svc_tcp.c:154 svc_tcp.c:161 +#: sunrpc/svc_tcp.c:156 sunrpc/svc_tcp.c:163 msgid "svctcp_create: out of memory\n" msgstr "svctcp_create: brak pamiêci\n" -#: sunrpc/svc_udp.c:119 +#: sunrpc/svc_udp.c:123 msgid "svcudp_create - cannot getsockname" -msgstr "svcudp_create - nie mogê odpaliæ getsockname" +msgstr "svcudp_create - wykonanie getsockname niemo¿liwe" -#: sunrpc/svc_udp.c:107 +#: sunrpc/svc_udp.c:111 msgid "svcudp_create: socket creation problem" msgstr "svcudp_create: problemy przy tworzeniu gniazda" -#: catgets/gencat.c:369 gencat.c:505 gencat.c:532 +#: locale/programs/ld-collate.c:1194 +#, c-format +msgid "" +"symbol for multicharacter collating element `%.*s' duplicates element " +"definition" +msgstr "" +"symbol zarezerwowany dla wieloznakowego elementu sortowania `%.*s' powiela " +"definicjê tego elementu" + +#: locale/programs/ld-collate.c:1067 +#, c-format +msgid "" +"symbol for multicharacter collating element `%.*s' duplicates other element " +"definition" +msgstr "" +"symbol zarezerwowany dla wieloznakowego elementu sortowania `%.*s' powiela " +"definicjê innego elementu" + +#: locale/programs/ld-collate.c:1203 +#, c-format +msgid "" +"symbol for multicharacter collating element `%.*s' duplicates other symbol " +"definition" +msgstr "" +"symbol zarezerwowany dla wieloznakowego elementu sortowania `%.*s' powiela " +"definicjê innego symbolu" + +#: locale/programs/ld-collate.c:1076 +#, c-format +msgid "" +"symbol for multicharacter collating element `%.*s' duplicates symbol " +"definition" +msgstr "" +"symbol zarezerwowany dla wieloznakowego elementu sortowania `%.*s' powiela " +"definicjê tego symbolu" + +#: locale/programs/ld-collate.c:1058 locale/programs/ld-collate.c:1185 +#, c-format +msgid "" +"symbol for multicharacter collating element `%.*s' duplicates symbolic name " +"in charset" +msgstr "" +"symbol zarezerwowany dla wieloznakowego elementu sortowania `%.*s' powiela " +"nazwê symboliczn± z zestawu znaków" + +#: locale/programs/charmap.c:314 locale/programs/charmap.c:348 +#: locale/programs/charmap.c:378 locale/programs/charmap.c:465 +#: locale/programs/charmap.c:511 locale/programs/charmap.c:544 +#: locale/programs/charmap.c:576 +#, c-format +msgid "syntax error in %s definition: %s" +msgstr "b³±d sk³adniowy w definicji %s: %s" + +#: locale/programs/locfile.c:642 +msgid "syntax error in `order_start' directive" +msgstr "b³±d sk³adniowy w dyrektywie `order_start'" + +#: locale/programs/locfile.c:384 +msgid "syntax error in character class definition" +msgstr "b³±d sk³adniowy definicji klasy znaków" + +#: locale/programs/locfile.c:442 +msgid "syntax error in character conversion definition" +msgstr "b³±d sk³adniowy w definicji konwersji znaku" + +#: locale/programs/locfile.c:684 +msgid "syntax error in collating order definition" +msgstr "b³±d sk³adniowy w definicji kolejno¶ci sortowania" + +#: locale/programs/locfile.c:534 +msgid "syntax error in collation definition" +msgstr "b³±d sk³adniowy w definicji sortowania" + +#: locale/programs/locfile.c:357 +msgid "syntax error in definition of LC_CTYPE category" +msgstr "b³±d sk³adniowy w definicji kategorii LC_CTYPE" + +#: locale/programs/locfile.c:300 +msgid "syntax error in definition of new character class" +msgstr "b³±d sk³adniowy w definicji nowej klasy znaków" + +#: locale/programs/locfile.c:310 +msgid "syntax error in definition of new character map" +msgstr "b³±d sk³adniowy w definicji nowej mapy znaków" + +#: locale/programs/locfile.c:895 +msgid "syntax error in message locale definition" +msgstr "b³±d sk³adniowy w definicji lokalnych komunikatów" + +#: locale/programs/locfile.c:806 +msgid "syntax error in monetary locale definition" +msgstr "b³±d sk³adniowy w definicji lokalnej waluty" + +#: locale/programs/locfile.c:833 +msgid "syntax error in numeric locale definition" +msgstr "b³±d sk³adniowy w lokalnej definicji numerycznej" + +#: locale/programs/locfile.c:744 +msgid "syntax error in order specification" +msgstr "b³±d sk³adniowy w specyfikacji kolejno¶ci" + +#: locale/programs/charmap.c:195 locale/programs/charmap.c:211 +#, c-format +msgid "syntax error in prolog: %s" +msgstr "b³±d sk³adniowy w prologu: %s" + +#: locale/programs/locfile.c:871 +msgid "syntax error in time locale definition" +msgstr "b³±d sk³adniowy w lokalnej definicji czasu" + +#: locale/programs/locfile.c:277 +msgid "syntax error: not inside a locale definition section" +msgstr "b³±d sk³adniowy: nie wewn±trz sekcji definicji lokalnych" + +#: catgets/gencat.c:381 catgets/gencat.c:517 catgets/gencat.c:544 msgid "this is the first definition" msgstr "to pierwsza definicja" -#: time/zic.c:1083 +#: time/zic.c:1117 msgid "time before zero" -msgstr "czas przez zerem" +msgstr "czas przed zerem" -#: time/zic.c:1091 zic.c:1855 zic.c:1874 +#: time/zic.c:1125 time/zic.c:1986 time/zic.c:2005 msgid "time overflow" msgstr "przepe³nienie czasu" -#: sunrpc/rpc_util.c:285 -msgid "too many files!\n" -msgstr "za du¿o plików!\n" +#: locale/programs/charset.c:44 +msgid "too few bytes in character encoding" +msgstr "za ma³o bajtów w kodzie znaku" -#: time/zic.c:1684 +#: locale/programs/charset.c:46 +msgid "too many bytes in character encoding" +msgstr "za du¿o bajtów w kodzie znaku" + +#: locale/programs/locales.h:72 +msgid "too many character classes defined" +msgstr "zdefiniowane zbyt wiele klas znaków" + +#: time/zic.c:1815 msgid "too many leap seconds" msgstr "za du¿o sekund przestêpnych" -#: time/zic.c:1656 +#: time/zic.c:1787 msgid "too many local time types" msgstr "za du¿o lokalnych typów czasu" -#: time/zic.c:1622 +#: time/zic.c:1741 msgid "too many transitions?!" msgstr "za duzo konwersji?!" -#: time/zic.c:1978 +#: locale/programs/ld-collate.c:1626 +msgid "too many weights" +msgstr "za du¿o wag" + +#: time/zic.c:2109 msgid "too many, or too long, time zone abbreviations" -msgstr "za du¿o, lub za d³ugie, skróty stref czasowych" +msgstr "za d³ugie lub za du¿o skrótów stref czasowych" + +#: locale/programs/linereader.h:146 +msgid "trailing garbage at end of line" +msgstr "¶miecie na koñcu linii" #: sunrpc/svc_simple.c:132 #, c-format msgid "trouble replying to prog %d\n" msgstr "problem przy odpowiadaniu programowi %d\n" -#: time/zic.c:1247 +#: locale/programs/ld-collate.c:1386 +msgid "two lines in a row containing `...' are not allowed" +msgstr "dwie kolejne linie zawieraj±ce `...' nie s± dozwolone" + +#: time/zic.c:1281 msgid "typed single year" msgstr "podany pojedyñczy rok" -#: catgets/gencat.c:466 +#: posix/getconf.c:239 +msgid "undefined" +msgstr "nieokre¶lone" + +#: locale/programs/charmap.c:617 locale/programs/charmap.c:628 +#, c-format +msgid "unknown character `%s'" +msgstr "nieznany znak `%s'" + +#: locale/programs/ld-messages.c:193 locale/programs/ld-messages.c:204 +#: locale/programs/ld-messages.c:215 locale/programs/ld-messages.c:226 +#: locale/programs/ld-time.c:698 +#, c-format +msgid "unknown character in field `%s' of category `%s'" +msgstr "nieznany znak w polu `%s' kategorii `%s'" + +#: locale/programs/locfile.c:607 +msgid "unknown collation directive" +msgstr "nieznana dyrektywa sortuj±ca" + +#: catgets/gencat.c:478 #, c-format msgid "unknown directive `%s': line ignored" msgstr "nieznana dyrektywa `%s': linia zignorowana" -#: catgets/gencat.c:445 +#: catgets/gencat.c:457 #, c-format msgid "unknown set `%s'" msgstr "nieznany zestaw `%s'" -msgid "unknown signal" -msgstr "nieznany sygna³" +#: locale/programs/ld-collate.c:1370 locale/programs/ld-collate.c:1561 +#: locale/programs/ld-collate.c:1735 +#, c-format +msgid "unknown symbol `%.*s': line ignored" +msgstr "nieznany symbol `%.*s': linia zignorowana" -#: time/zic.c:714 +#: time/zic.c:747 msgid "unruly zone" msgstr "strefa bez regu³" -#: catgets/gencat.c:950 +#: catgets/gencat.c:962 msgid "unterminated message" msgstr "niezakoñczony komunikat" -#: sunrpc/rpc_scan.c:319 -msgid "unterminated string constant" -msgstr "niezakoñczona sta³a tekstowa" +#: locale/programs/linereader.c:515 locale/programs/linereader.c:550 +msgid "unterminated string" +msgstr "niezakoñczony ³añcuch" -#: sunrpc/rpc_main.c:78 -#, c-format -msgid "usage: %s infile\n" -msgstr "sk³adnia: %s plik_we\n" +#: locale/programs/linereader.c:385 +msgid "unterminated symbolic name" +msgstr "niezakoñczona nazwa symboliczna" -#: time/zic.c:1921 +#: locale/programs/ld-collate.c:1688 +msgid "unterminated weight name" +msgstr "niezakoñczona nazwa wagi" + +#: locale/programs/charset.c:119 +msgid "upper limit in range is not smaller then lower limit" +msgstr "górna granica zakresu nie jest mniejsza ni¿ dolna" + +#: time/zic.c:2052 msgid "use of 2/29 in non leap-year" msgstr "u¿ycie 2/29 w roku nieprzestêpnym" -#: sunrpc/rpc_parse.c:330 -msgid "variable-length array declaration expected" -msgstr "spodziewana tablica o zmiennej d³ugo¶ci" +#: locale/programs/charmap.c:438 locale/programs/charmap.c:492 +#, c-format +msgid "value for %s must be an integer" +msgstr "warto¶æ %s musi byæ liczb± ca³kowit±" -#: sunrpc/rpc_parse.c:370 -msgid "voids allowed only inside union and program definitions" -msgstr "typ void dozwolony tylko w unii i definicjach programów" +#: locale/programs/charmap.c:233 +#, c-format +msgid "value for <%s> must lie between 1 and 4" +msgstr "warto¶æ <%s> musi byæ z zakresu 1 do 4" + +#: locale/programs/ld-monetary.c:149 locale/programs/ld-numeric.c:89 +#, c-format +msgid "value for field `%s' in category `%s' must not be the empty string" +msgstr "warto¶æ pola `%s' w kategorii `%s' nie mo¿e byæ pustym ³añcuchem" + +#: locale/programs/charmap.c:245 +msgid "value of <mb_cur_max> must be greater than the value of <mb_cur_min>" +msgstr "warto¶æ <mb_cur_max> musi byæ wiêksza ni¿ warto¶æ <mb_cur_min>" + +#: locale/programs/ld-monetary.c:139 +msgid "" +"value of field `int_curr_symbol' in category `LC_MONETARY' does not " +"correspond to a valid name in ISO 4217" +msgstr "" +"zawarto¶æ pola `int_curr_symbol' w kategorii `LC_MONETARY' nie jest zgodna z " +"nazwami ISO 4217" + +#: locale/programs/ld-monetary.c:133 +msgid "" +"value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length" +msgstr "" +"zawarto¶æ pola `int_curr_symbol' w kategorii `LC_MONETARY' ma z³± d³ugo¶æ" + +#: locale/programs/ld-monetary.c:371 locale/programs/ld-numeric.c:199 +#, c-format +msgid "values for field `%s' in category `%s' must be smaller than 127" +msgstr "warto¶ci pola `%s' w kategorii `%s' musz± byæ mniejsze ni¿ 127" -#: login/setutent_r.c:47 +#: locale/programs/ld-monetary.c:367 +#, c-format +msgid "values for field `%s' in category `%s' must not be zero" +msgstr "warto¶ci pola `%s' w kategorii `%s' nie mog± byæ zerowe" + +#: login/utmp_file.c:84 msgid "while opening UTMP file" msgstr "podczas otwierania pliku UTMP" -#: catgets/gencat.c:977 +#: catgets/gencat.c:989 msgid "while opening old catalog file" msgstr "podczas otwierania starego katalogu" -#: time/zic.c:1041 +#: db/makedb.c:354 +msgid "while reading database" +msgstr "podczas czytania bazy" + +#: db/makedb.c:316 +msgid "while writing data base file" +msgstr "podczas zapisywania pliku bazy" + +#: db/makedb.c:142 +msgid "wrong number of arguments" +msgstr "z³a liczba argumentów" + +#: time/zic.c:1075 msgid "wrong number of fields on Leap line" msgstr "z³a liczba pól w linii Leap" -#: time/zic.c:1132 +#: time/zic.c:1166 msgid "wrong number of fields on Link line" msgstr "z³a liczba pól w linii Link" -#: time/zic.c:874 +#: time/zic.c:909 msgid "wrong number of fields on Rule line" msgstr "z³a liczba pól w linii Rule" -#: time/zic.c:944 +#: time/zic.c:979 msgid "wrong number of fields on Zone continuation line" msgstr "z³a liczba pól w linii kontynuacji Zone" -#: time/zic.c:902 +#: time/zic.c:937 msgid "wrong number of fields on Zone line" msgstr "z³a liczba pól w linii Zone" + +#: nis/ypclnt.c:811 +msgid "yp_update: cannot convert host to netname\n" +msgstr "yp_update: konwersja nazwy hosta na nazwê sieci jest niemo¿liwa\n" + +#: nis/ypclnt.c:823 +msgid "yp_update: cannot get server address\n" +msgstr "yp_update: uzyskanie adresu serwera jest niemo¿liwe\n" + +msgid " %s [-c | -h | -l | -m] [-o outfile] [infile]\n" +msgstr " %s [-c | -h | -l | -m] [-o plik_wy] [plik_we]\n" + +msgid " %s [-s udp|tcp]* [-o outfile] [infile]\n" +msgstr " %s [-s udp|tcp]* [-o plik_wy] [plik_we]\n" + +msgid "%s, line %d: " +msgstr "%s, linia %d: " + +msgid "%s: output would overwrite %s\n" +msgstr "%s: wyj¶cie nadpisze %s\n" + +msgid "%s: unable to open " +msgstr "%s: otwarcie jest niemo¿liwe " + +msgid "Reserved error 82" +msgstr "Zarezerwowany b³±d 82" + +msgid "Reserved error 83" +msgstr "Zarezerwowany b³±d 83" + +msgid "Reserved error 84" +msgstr "Zarezerwowany b³±d 84" + +msgid "Reserved error 85" +msgstr "Zarezerwowany b³±d 85" + +msgid "Reserved error 86" +msgstr "Zarezerwowany b³±d 86" + +msgid "Reserved error 87" +msgstr "Zarezerwowany b³±d 87" + +msgid "Reserved error 88" +msgstr "Zarezerwowany b³±d 88" + +msgid "Reserved error 89" +msgstr "Zarezerwowany b³±d 89" + +msgid "Reserved error 90" +msgstr "Zarezerwowany b³±d 90" + +msgid "Reserved error 91" +msgstr "Zarezerwowany b³±d 91" + +msgid "Reserved error 92" +msgstr "Zarezerwowany b³±d 92" + +msgid "Reserved error 93" +msgstr "Zarezerwowany b³±d 93" + +msgid "Reserved error 94" +msgstr "Zarezerwowany b³±d 94" + +msgid "Reserved error 95" +msgstr "Zarezerwowany b³±d 95" + +msgid "Reserved error 96" +msgstr "Zarezerwowany b³±d 96" + +msgid "Reserved error 97" +msgstr "Zarezerwowany b³±d 97" + +msgid "Reserved error 98" +msgstr "Zarezerwowany b³±d 98" + +msgid "Reserved error 99" +msgstr "Zarezerwowany b³±d 99" + +msgid "Too many levels of remote in path" +msgstr "Za du¿o poziomów zagnie¿d¿enia w ¶cie¿ce" + +msgid "array declaration expected" +msgstr "spodziewana deklaracja tablicy" + +msgid "constant or identifier expected" +msgstr "spodziewana sta³a lub identyfikator" + +msgid "couldn't do tcp_create\n" +msgstr "wykonanie tcp_create jest niemo¿liwe\n" + +msgid "couldn't do udp_create\n" +msgstr "wykonanie udp_create jest niemo¿liwe\n" + +msgid "definition keyword expected" +msgstr "spodziewane s³owo kluczowe definition" + +msgid "expected '%s'" +msgstr "spodziewane '%s'" + +msgid "expected '%s' or '%s'" +msgstr "spodziewane '%s' lub '%s'" + +msgid "expected '%s', '%s' or '%s'" +msgstr "spodziewane '%s', '%s' lub '%s'" + +msgid "expected type specifier" +msgstr "spodziewany specyfikator typu" + +msgid "illegal result type" +msgstr "b³êdny typ wyniku" + +msgid "no array-of-pointer declarations -- use typedef" +msgstr "brak deklaracji tablicy wska¼ników - u¿yj typedef" + +msgid "portmap CALLIT: cannot fork.\n" +msgstr "portmap CALLIT: nie mogê rozwidliæ procesu\n" + +msgid "portmap cannot create socket" +msgstr "portmap nie mo¿e stworzyæ gniazda" + +msgid "run_svc returned unexpectedly\n" +msgstr "run_svc powróci³ niespodziewanie\n" + +msgid "unknown signal" +msgstr "nieznany sygna³" + +msgid "usage: %s infile\n" +msgstr "sk³adnia: %s plik_we\n" + +msgid "variable-length array declaration expected" +msgstr "spodziewana tablica o zmiennej d³ugo¶ci" + +msgid "voids allowed only inside union and program definitions" +msgstr "typ void dozwolony tylko w unii i definicjach programów" @@ -22,30 +22,12 @@ if test $# -ne 2; then exit 1 fi -# A problem with this script is that we must be able to handle symbolic -# links somewhere in the paths of either path. To resolve symlinks we use -# the `pwd' program. But some `pwd' programs are no real programs but -# instead aliases (defined by the user) or builtins (as in bash-2). Both -# kinds have in common that they might not give the correct result. E.g., -# the builtin in bash-2 returns the path which was used to change to the -# directory and not the real path. -# -# To prevent this problem we make sure the real `pwd' somewhere in the -# path is used. Currently there is only support for bash-2 available. -# If other shells also have problems we have to add more code here. - -if test "$BASH_VERSINFO" = "2"; then - unalias pwd - unset pwd - enable -n pwd -fi - # Make both paths absolute. if test -d $1; then - to=`cd $1 && pwd` + to=`cd $1 && /bin/pwd` else temp=`echo $1 | sed 's%/*[^/]*$%%'` - to=`cd $temp && pwd` + to=`cd $temp && /bin/pwd` to="$to/`echo $1 | sed 's%.*/\([^/][^/]*\)$%\1%'`" fi to=`echo $to | sed 's%^/%%'` @@ -57,9 +39,10 @@ else fi if test -z "$from"; then - from=`pwd`; + from=`/bin/pwd | sed 's%^/%%'` +else + from=`cd $from && /bin/pwd | sed 's%^/%%'` fi -from=`cd $from && pwd | sed 's%^/%%'` while test -n "$to" && test -n "$from"; do preto=`echo $to | sed 's%^\([^/]*\)/.*%\1%'` diff --git a/resolv/mapv4v6addr.h b/resolv/mapv4v6addr.h index 4295398..a638393 100644 --- a/resolv/mapv4v6addr.h +++ b/resolv/mapv4v6addr.h @@ -64,12 +64,12 @@ map_v4v6_address (const char *src, char *dst) int i; /* Stash a temporary copy so our caller can update in place. */ - bcopy (src, tmp, INADDRSZ); + memcpy (tmp, src, INADDRSZ); /* Mark this ipv6 addr as a mapped ipv4. */ for (i = 0; i < 10; i++) *p++ = 0x00; *p++ = 0xff; *p++ = 0xff; /* Retrieve the saved copy and we're done. */ - bcopy (tmp, (void *) p, INADDRSZ); + memcpy ((void *) p, tmp, INADDRSZ); } diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index 959aa2f..754f995 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -197,8 +197,8 @@ _nss_dns_gethostbyaddr_r (const char *addr, int len, int af, int size, n, status; if (af == AF_INET6 && len == IN6ADDRSZ && - (bcmp (uaddr, mapped, sizeof mapped) == 0 - || bcmp (uaddr, tunnelled, sizeof tunnelled) == 0)) + (memcmp (uaddr, mapped, sizeof mapped) == 0 + || memcmp (uaddr, tunnelled, sizeof tunnelled) == 0)) { /* Unmap. */ addr += sizeof mapped; @@ -260,7 +260,7 @@ _nss_dns_gethostbyaddr_r (const char *addr, int len, int af, result->h_addrtype = af; result->h_length = len; - bcopy (addr, host_data->host_addr, len); + memcpy (host_data->host_addr, addr, len); host_data->h_addr_ptrs[0] = (char *) host_data->host_addr; host_data->h_addr_ptrs[1] = NULL; if (af == AF_INET && (_res.options & RES_USE_INET6)) @@ -520,7 +520,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, cp += n; continue; } - bcopy (cp, *hap++ = bp, n); + memcpy (*hap++ = bp, cp, n); bp += n; cp += n; linebuflen -= n; diff --git a/stdio-common/tstscanf.c b/stdio-common/tstscanf.c index 277d4e1..eb2f30d 100644 --- a/stdio-common/tstscanf.c +++ b/stdio-common/tstscanf.c @@ -160,6 +160,12 @@ main (int argc, char **argv) if (res != 2 || a != 123 || b != 456 || n != 6) return 1; + + res = sscanf ("0", "%lg", &a); + printf ("res = %d, a = %g\n", res, a); + + if (res != 1 || a != 0) + exit (EXIT_FAILURE); } exit(EXIT_SUCCESS); diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index 4780f51..3738e44 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -925,24 +925,24 @@ __vfscanf (FILE *s, const char *format, va_list argptr) else negative = 0; - if (c == '0' && tolower (c == inchar ()) == 'x') + is_hexa = 0; + exp_char = 'e'; + if (c == '0') { - /* It is a number in hexadecimal format. */ - ADDW ('0'); - ADDW ('x'); + ADDW (c); + c = inchar (); + if (tolower (c) == 'x') + { + /* It is a number in hexadecimal format. */ + ADDW (c); - is_hexa = 1; - exp_char = 'p'; + is_hexa = 1; + exp_char = 'p'; - /* Grouping is not allowed. */ - flags &= ~GROUP; - c = inchar (); - } - else - { - /* It not a hexadecimal prefix. */ - is_hexa = 0; - exp_char = 'e'; + /* Grouping is not allowed. */ + flags &= ~GROUP; + c = inchar (); + } } got_dot = got_e = 0; diff --git a/string/swab.c b/string/swab.c index 9d7858c..c9cf700 100644 --- a/string/swab.c +++ b/string/swab.c @@ -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 @@ -21,6 +21,7 @@ void swab (const char *from, char *to, ssize_t n) { + n &= ~((ssize_t) 1); while (n > 1) { const char b0 = from[--n], b1 = from[--n]; diff --git a/sysdeps/generic/mathbits.h b/sysdeps/generic/mathbits.h new file mode 100644 index 0000000..e4db3dc --- /dev/null +++ b/sysdeps/generic/mathbits.h @@ -0,0 +1,35 @@ +/* Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _MATHBITS_H +#define _MATHBITS_H 1 + +/* Normally, there is no long double type and the `float' and `double' + expressions are evaluated as `double'. */ +typedef double float_t; /* `float' expressions are evaluated as + `double'. */ +typedef double double_t; /* `double' expressions are evaluated as + `double'. */ + +/* Signal that both types are `double'. */ +#define FLT_EVAL_METHOD 1 + +/* Define `INFINITY' as value of type `float_t'. */ +#define INFINITY HUGE_VAL + +#endif /* mathbits.h */ diff --git a/sysdeps/generic/memmem.c b/sysdeps/generic/memmem.c index 099897a..e891e26 100644 --- a/sysdeps/generic/memmem.c +++ b/sysdeps/generic/memmem.c @@ -1,48 +1,48 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <ansidecl.h> #include <stddef.h> #include <string.h> /* Return the first occurrence of NEEDLE in HAYSTACK. */ -PTR -DEFUN(memmem, (haystack, haystack_len, - needle, needle_len), - CONST PTRCONST haystack AND CONST size_t haystack_len AND - CONST PTRCONST needle AND CONST size_t needle_len) +void * +memmem (haystack, haystack_len, needle, needle_len) + const void *haystack; + size_t haystack_len; + const void *needle; + size_t needle_len; { - register CONST char *begin; - register CONST char *CONST last_possible - = (CONST char *) haystack + haystack_len - needle_len; + const char *begin; + const char *const last_possible + = (const char *) haystack + haystack_len - needle_len; if (needle_len == 0) /* The first occurrence of the empty string is deemed to occur at the end of the string. */ - return (PTR) &((CONST char *) haystack)[haystack_len - 1]; + return (void *) &((const char *) haystack)[haystack_len - 1]; - for (begin = (CONST char *) haystack; begin <= last_possible; ++begin) - if (begin[0] == ((CONST char *) needle)[0] && - !memcmp ((CONST PTR) &begin[1], - (CONST PTR) ((CONST char *) needle + 1), + for (begin = (const char *) haystack; begin <= last_possible; ++begin) + if (begin[0] == ((const char *) needle)[0] && + !memcmp ((const void *) &begin[1], + (const void *) ((const char *) needle + 1), needle_len - 1)) - return (PTR) begin; + return (void *) begin; return NULL; } diff --git a/sysdeps/i386/fpu/fclrexcpt.c b/sysdeps/i386/fpu/fclrexcpt.c new file mode 100644 index 0000000..0b43776 --- /dev/null +++ b/sysdeps/i386/fpu/fclrexcpt.c @@ -0,0 +1,40 @@ +/* Clear given exceptions in current floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +feclearexcept (int excepts) +{ + fenv_t temp; + + /* Mask out unsupported bits/exceptions. */ + excepts &= FE_ALL_EXCEPT; + + /* Bah, we have to clear selected exceptions. Since there is no + `fldsw' instruction we have to do it the hard way. */ + __asm__ ("fnstenv %0" : "=m" (*&temp)); + + /* Clear the relevant bits. */ + temp.status_word &= excepts ^ FE_ALL_EXCEPT; + + /* Put the new data in effect. */ + __asm__ ("fldenv %0" : : "m" (*&temp)); +} diff --git a/sysdeps/i386/fpu/fegetenv.c b/sysdeps/i386/fpu/fegetenv.c new file mode 100644 index 0000000..452449d --- /dev/null +++ b/sysdeps/i386/fpu/fegetenv.c @@ -0,0 +1,27 @@ +/* Store current floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fegetenv (fenv_t *envp) +{ + __asm__ ("fnstenv %0" : "=m" (*envp)); +} diff --git a/sysdeps/i386/fpu/fegetround.c b/sysdeps/i386/fpu/fegetround.c new file mode 100644 index 0000000..4dfa32d --- /dev/null +++ b/sysdeps/i386/fpu/fegetround.c @@ -0,0 +1,31 @@ +/* Return current rounding direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fegetround (void) +{ + int cw; + + __asm__ ("fnstcw %0" : "=m" (*&cw)); + + return cw & 0xc00; +} diff --git a/sysdeps/i386/fpu/feholdexcpt.c b/sysdeps/i386/fpu/feholdexcpt.c new file mode 100644 index 0000000..c9a0f73 --- /dev/null +++ b/sysdeps/i386/fpu/feholdexcpt.c @@ -0,0 +1,36 @@ +/* Store current floating-point environment and clear exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +feholdexcept (fenv_t *envp) +{ + unsigned short int work; + + /* Store the environment. */ + __asm__ ("fnstenv %0" : "=m" (*envp)); + + /* Now set all exceptions to non-stop. */ + work = envp->control_word | 0x3f; + __asm__ ("fldcw %0" : : "m" (*&work)); + + return 1; +} diff --git a/sysdeps/i386/fpu/fenvbits.h b/sysdeps/i386/fpu/fenvbits.h new file mode 100644 index 0000000..bea89a1 --- /dev/null +++ b/sysdeps/i386/fpu/fenvbits.h @@ -0,0 +1,91 @@ +/* Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This file should never be included directly. */ + +#ifndef _FENVBITS_H +#define _FENVBITS_H 1 + +/* Define bits representing the exception. We use the bit positions + of the appropriate bits in the FPU control word. */ +enum + { + FE_INVALID = 0x01, +#define FE_INVALID FE_INVALID + __FE_DENORM = 0x02, + FE_DIVBYZERO = 0x04, +#define FE_DIVBYZERO FE_DIVBYZERO + FE_OVERFLOW = 0x08, +#define FE_OVERFLOW FE_OVERFLOW + FE_UNDERFLOW = 0x10, +#define FE_UNDERFLOW FE_UNDERFLOW + FE_INEXACT = 0x20 +#define FE_INEXACT FE_INEXACT + }; + +#define FE_ALL_EXCEPT \ + (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) + +/* The ix87 FPU supports all of the four defined rounding modes. We + use again the bit positions in the FPU control word as the values + for the appropriate macros. */ +enum + { + FE_TONEAREST = 0, +#define FE_TONEAREST FE_TONEAREST + FE_DOWNWARD = 0x400, +#define FE_DOWNWARD FE_DOWNWARD + FE_UPWARD = 0x800, +#define FE_UPWARD FE_UPWARD + FE_TOWARDSZERO = 0xc00 +#define FE_TOWARDSZERO FE_TOWARDSZERO + }; + + +/* Type representing exception flags. */ +typedef unsigned short int fexcept_t; + + +/* Type representing floating-point environment. This function corresponds to the layout of the block written by the `fstenv'. */ +typedef struct + { + unsigned short int control_word; + unsigned short int __unused1; + unsigned short int status_word; + unsigned short int __unused2; + unsigned short int tags; + unsigned short int __unused3; + unsigned int eip; + unsigned short int cs_selector; + unsigned int opcode:11; + unsigned int __unused4:5; + unsigned int data_offset; + unsigned short int data_selector; + unsigned short int __unused5; + } +fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((fenv_t *) -1) + +#ifdef __USE_GNU +/* Floating-point environment where none of the exception is masked. */ +# define FE_NOMASK_ENV ((fenv_t *) -2) +#endif + +#endif /* fenvbits.h */ diff --git a/sysdeps/i386/fpu/fesetenv.c b/sysdeps/i386/fpu/fesetenv.c new file mode 100644 index 0000000..e7300ea --- /dev/null +++ b/sysdeps/i386/fpu/fesetenv.c @@ -0,0 +1,76 @@ +/* Install given floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +#include <assert.h> + + +void +fesetenv (const fenv_t *envp) +{ + fenv_t temp; + + /* The memory block used by fstenv/fldenv has a size of 28 bytes. */ + assert (sizeof (fenv_t) == 28); + + /* Install the environment specified by ENVP. But there are a few + values which we do not want to come from the saved environment. + Therefore, we get the current environment and replace the values + we want to use from the environment specified by the parameter. */ + __asm__ ("fnstenv %0" : "=m" (*&temp)); + + if (envp == FE_DFL_ENV) + { + temp.control_word |= FE_ALL_EXCEPT; + temp.control_word &= ~FE_TOWARDSZERO; + temp.status_word &= ~FE_ALL_EXCEPT; + temp.eip = 0; + temp.cs_selector = 0; + temp.opcode = 0; + temp.data_offset = 0; + temp.data_selector = 0; + } + else if (envp == FE_NOMASK_ENV) + { + temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDSZERO); + temp.status_word &= ~FE_ALL_EXCEPT; + temp.eip = 0; + temp.cs_selector = 0; + temp.opcode = 0; + temp.data_offset = 0; + temp.data_selector = 0; + } + else + { + temp.control_word &= ~(FE_ALL_EXCEPT | FE_TOWARDSZERO); + temp.control_word |= (envp->control_word + & (FE_ALL_EXCEPT | FE_TOWARDSZERO)); + temp.status_word &= ~FE_ALL_EXCEPT; + temp.status_word |= envp->status_word & FE_ALL_EXCEPT; + temp.eip = envp->eip; + temp.cs_selector = envp->cs_selector; + temp.opcode = envp->opcode; + temp.data_offset = envp->data_offset; + temp.data_selector = envp->data_selector; + } + + __asm__ ("fldenv %0" : : "m" (temp)); +} diff --git a/sysdeps/i386/fpu/fesetround.c b/sysdeps/i386/fpu/fesetround.c new file mode 100644 index 0000000..844c586 --- /dev/null +++ b/sysdeps/i386/fpu/fesetround.c @@ -0,0 +1,38 @@ +/* Set current rounding direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fesetround (int round) +{ + unsigned short int cw; + + if ((round & ~0xc00) != 0) + /* ROUND is no valid rounding mode. */ + return 0; + + __asm__ ("fnstcw %0" : "=m" (*&cw)); + cw &= ~0xc00; + cw |= round; + __asm__ ("fldcw %0" : : "m" (*&cw)); + + return 1; +} diff --git a/sysdeps/i386/fpu/feupdateenv.c b/sysdeps/i386/fpu/feupdateenv.c new file mode 100644 index 0000000..0f7abc2 --- /dev/null +++ b/sysdeps/i386/fpu/feupdateenv.c @@ -0,0 +1,39 @@ +/* Install given floating-point environment and raise exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +feupdateenv (const fenv_t *envp) +{ + fexcept_t temp; + + /* Save current exceptions. */ + __asm__ ("fnstsw %0" : "=m" (*&temp)); + temp &= FE_ALL_EXCEPT; + + /* Install new environment. */ + fesetenv (envp); + + /* Raise the safed exception. Incidently for us the implementation + defined format of the values in objects of type fexcept_t is the + same as the ones specified using the FE_* constants. */ + feraiseexcept ((int) temp); +} diff --git a/sysdeps/i386/fpu/fgetexcptflg.c b/sysdeps/i386/fpu/fgetexcptflg.c new file mode 100644 index 0000000..1db3953 --- /dev/null +++ b/sysdeps/i386/fpu/fgetexcptflg.c @@ -0,0 +1,32 @@ +/* Store current representation for exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fegetexceptflag (fexcept_t *flagp, int excepts) +{ + fexcept_t temp; + + /* Get the current exceptions. */ + __asm__ ("fnstsw %0" : "=m" (*&temp)); + + *flagp = temp & excepts & FE_ALL_EXCEPT; +} diff --git a/sysdeps/i386/fpu/fraiseexcpt.c b/sysdeps/i386/fpu/fraiseexcpt.c new file mode 100644 index 0000000..90e992a --- /dev/null +++ b/sysdeps/i386/fpu/fraiseexcpt.c @@ -0,0 +1,75 @@ +/* Raise given exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> +#include <math.h> + +void +feraiseexcept (int excepts) +{ + /* Raise exceptions represented by EXPECTS. But we must raise only + one signal at a time. It is important the if the overflow/underflow + exception and the inexact exception are given at the same time, + the overflow/underflow exception follows the inexact exception. */ + + /* First: invalid exception. */ + if ((FE_INVALID & excepts) != 0) + { + /* One example of a invalid operation is 0 * Infinity. */ + double d = 0.0 * HUGE_VAL; + (void) &d; + /* Now force the exception. */ + __asm__ ("fwait"); + } + + /* Next: division by zero. */ + if ((FE_DIVBYZERO & excepts) != 0) + { + double d; + __asm__ ("fld1; fldz; fdivp %%st, %%st(1); fwait" : "=t" (d)); + (void) &d; + } + + /* Next: overflow. */ + if ((FE_OVERFLOW & excepts) != 0) + { + long double d = LDBL_MAX * LDBL_MAX; + (void) &d; + /* Now force the exception. */ + __asm__ ("fwait"); + } + + /* Next: underflow. */ + if ((FE_UNDERFLOW & excepts) != 0) + { + long double d = LDBL_MIN / 16.0; + (void) &d; + /* Now force the exception. */ + __asm__ ("fwait"); + } + + /* Last: inexact. */ + if ((FE_INEXACT & excepts) != 0) + { + long double d; + __asm__ ("fld1; fldpi; fdivp %%st, %%st(1); fwait" : "=t" (d)); + (void) &d; + } +} diff --git a/sysdeps/i386/fpu/fsetexcptflg.c b/sysdeps/i386/fpu/fsetexcptflg.c new file mode 100644 index 0000000..598b8d2 --- /dev/null +++ b/sysdeps/i386/fpu/fsetexcptflg.c @@ -0,0 +1,40 @@ +/* Set floating-point environment exception handling. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> +#include <math.h> + +void +fesetexceptflag (const fexcept_t *flagp, int excepts) +{ + fenv_t temp; + + /* Get the current environment. We have to do this since we cannot + separately set the status word. */ + __asm__ ("fnstenv %0" : "=m" (*&temp)); + + temp.status_word &= ~(excepts & FE_ALL_EXCEPT); + temp.status_word |= *flagp & excepts & FE_ALL_EXCEPT; + + /* Store the new status word (along with the rest of the environment. + Possibly new exceptions are set but they won't get executed unless + the next floating-point instruction. */ + __asm__ ("fldenv %0" : : "m" (*&temp)); +} diff --git a/sysdeps/i386/fpu/ftestexcept.c b/sysdeps/i386/fpu/ftestexcept.c new file mode 100644 index 0000000..c69170f --- /dev/null +++ b/sysdeps/i386/fpu/ftestexcept.c @@ -0,0 +1,32 @@ +/* Test exception in current environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fetestexcept (int excepts) +{ + int temp; + + /* Get current exceptions. */ + __asm__ ("fnstsw %0" : "=a" (temp)); + + return temp & excepts & FE_ALL_EXCEPT; +} diff --git a/sysdeps/i386/fpu/mathbits.h b/sysdeps/i386/fpu/mathbits.h new file mode 100644 index 0000000..7885afe --- /dev/null +++ b/sysdeps/i386/fpu/mathbits.h @@ -0,0 +1,36 @@ +/* Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _MATHBITS_H +#define _MATHBITS_H 1 + +/* The ix87 FPUs evaluate all values in the 80 bit floating-point format + which is also available for the user as `long double'. Therefore + we define: */ +typedef long double float_t; /* `float' expressions are evaluated as + `long double'. */ +typedef long double double_t; /* `double' expressions are evaluated as + `long double'. */ + +/* Signal that both types are `long double'. */ +#define FLT_EVAL_METHOD 2 + +/* Define `INFINITY' as value of type `float_t'. */ +#define INFINITY HUGE_VALL + +#endif /* mathbits.h */ diff --git a/sysdeps/i386/huge_val.h b/sysdeps/i386/huge_val.h index 0aad849..fa07145 100644 --- a/sysdeps/i386/huge_val.h +++ b/sysdeps/i386/huge_val.h @@ -65,12 +65,6 @@ static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; #define HUGE_VALL (__huge_vall.__ld) #endif /* GCC. */ - -/* Expression representing positive infinity. Here it is the same as - HUGE_VALF. */ -#define INFINITY HUGE_VALF - #endif /* __USE_ISOC9X. */ - #endif /* huge_val.h */ diff --git a/sysdeps/ieee754/huge_val.h b/sysdeps/ieee754/huge_val.h index ef9fa65..9d1785b 100644 --- a/sysdeps/ieee754/huge_val.h +++ b/sysdeps/ieee754/huge_val.h @@ -69,12 +69,6 @@ static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes }; same as `double'. */ #define HUGE_VALL HUGE_VAL - -/* Expression representing positive infinity. Here it is the same as - HUGE_VALF. */ -#define INFINITY HUGE_VALF - #endif /* __USE_ISOC9X. */ - #endif /* huge_val.h */ diff --git a/sysdeps/libm-i387/s_finite.S b/sysdeps/libm-i387/s_finite.S index 7c67e19..384fc1c 100644 --- a/sysdeps/libm-i387/s_finite.S +++ b/sysdeps/libm-i387/s_finite.S @@ -1,18 +1,14 @@ /* - * Written by J.T. Conklin <jtc@netbsd.org>. - * Public domain. + * Written by Joe Keane <jgk@jgk.org>. */ #include <machine/asm.h> -RCSID("$NetBSD: s_finite.S,v 1.4 1995/05/08 23:57:41 jtc Exp $") - ENTRY(__finite) movl 8(%esp),%eax - andl $0x7ff00000, %eax - cmpl $0x7ff00000, %eax - setne %al - andl $0x000000ff, %eax + orl $0x800fffff, %eax + incl %eax + shrl $31, %eax ret END (__finite) weak_alias (__finite, finite) diff --git a/sysdeps/libm-i387/s_finitef.S b/sysdeps/libm-i387/s_finitef.S index ee26c87..51b4d0d 100644 --- a/sysdeps/libm-i387/s_finitef.S +++ b/sysdeps/libm-i387/s_finitef.S @@ -1,18 +1,14 @@ /* - * Written by J.T. Conklin <jtc@netbsd.org>. - * Public domain. + * Written by Joe Keane <jgk@jgk.org>. */ #include <machine/asm.h> -RCSID("$NetBSD: s_finitef.S,v 1.3 1995/05/09 00:00:02 jtc Exp $") - ENTRY(__finitef) movl 4(%esp),%eax - andl $0x7f800000, %eax - cmpl $0x7f800000, %eax - setne %al - andl $0x000000ff, %eax + orl $0x807fffff, %eax + incl %eax + shrl $31, %eax ret END (__finitef) weak_alias (__finitef, finitef) diff --git a/sysdeps/libm-i387/s_finitel.S b/sysdeps/libm-i387/s_finitel.S index 944b249..acc5ad4 100644 --- a/sysdeps/libm-i387/s_finitel.S +++ b/sysdeps/libm-i387/s_finitel.S @@ -1,20 +1,14 @@ /* - * Written by J.T. Conklin <jtc@netbsd.org>. - * Public domain. - * - * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. + * Written by Joe Keane <jgk@jgk.org>. */ #include <machine/asm.h> -RCSID("$NetBSD: $") - ENTRY(__finitel) movl 12(%esp),%eax - andl $0x7fff, %eax - cmpl $0x7fff, %eax - setne %al - andl $0x000000ff, %eax + orl $0xffff8000, %eax + incl %eax + shrl $31, %eax ret END (__finitel) weak_alias (__finitel, finitel) diff --git a/sysdeps/libm-i387/s_nearbyint.S b/sysdeps/libm-i387/s_nearbyint.S new file mode 100644 index 0000000..566c075 --- /dev/null +++ b/sysdeps/libm-i387/s_nearbyint.S @@ -0,0 +1,23 @@ +/* + * Written by J.T. Conklin <jtc@netbsd.org>. + * Public domain. + */ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ + +#include <machine/asm.h> + +ENTRY(__nearbyint) + fldl 4(%esp) + pushl %eax + pushl %ecx + fnstcw (%esp) + movl (%esp), %eax + andl $~0x20, %eax + movl %eax, 4(%esp) + fldcw 4(%esp) + frndint + fclex + fldcw (%esp) + ret +END (__nearbyint) +weak_alias (__nearbyint, nearbyint) diff --git a/sysdeps/libm-i387/s_nearbyintf.S b/sysdeps/libm-i387/s_nearbyintf.S new file mode 100644 index 0000000..7154340 --- /dev/null +++ b/sysdeps/libm-i387/s_nearbyintf.S @@ -0,0 +1,23 @@ +/* + * Written by J.T. Conklin <jtc@netbsd.org>. + * Public domain. + */ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ + +#include <machine/asm.h> + +ENTRY(__nearbyintf) + flds 4(%esp) + pushl %eax + pushl %ecx + fnstcw (%esp) + movl (%esp), %eax + andl $~0x20, %eax + movl %eax, 4(%esp) + fldcw 4(%esp) + frndint + fclex + fldcw (%esp) + ret +END (__nearbyintf) +weak_alias (__nearbyintf, nearbyintf) diff --git a/sysdeps/libm-i387/s_nearbyintl.S b/sysdeps/libm-i387/s_nearbyintl.S new file mode 100644 index 0000000..c50b42d --- /dev/null +++ b/sysdeps/libm-i387/s_nearbyintl.S @@ -0,0 +1,23 @@ +/* + * Written by J.T. Conklin <jtc@netbsd.org>. + * Public domain. + */ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ + +#include <machine/asm.h> + +ENTRY(__nearbyintl) + fldt 4(%esp) + pushl %eax + pushl %ecx + fnstcw (%esp) + movl (%esp), %eax + andl $~0x20, %eax + movl %eax, 4(%esp) + fldcw 4(%esp) + frndint + fclex + fldcw (%esp) + ret +END (__nearbyintl) +weak_alias (__nearbyintl, nearbyintl) diff --git a/sysdeps/libm-i387/s_trunc.S b/sysdeps/libm-i387/s_trunc.S new file mode 100644 index 0000000..3100d71 --- /dev/null +++ b/sysdeps/libm-i387/s_trunc.S @@ -0,0 +1,36 @@ +/* Truncate double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <machine/asm.h> + +ENTRY(__trunc) + fldl 4(%esp) + subl $8, %esp + fstcw 4(%esp) + movl $0xc00, %edx + orl 4(%esp), %edx + movl %edx, (%esp) + fldcw (%esp) + frndint + fldcw 4(%esp) + addl $8, %esp + ret +END(__trunc) +weak_alias (__trunc, trunc) diff --git a/sysdeps/libm-i387/s_truncf.S b/sysdeps/libm-i387/s_truncf.S new file mode 100644 index 0000000..275e5f7 --- /dev/null +++ b/sysdeps/libm-i387/s_truncf.S @@ -0,0 +1,36 @@ +/* Truncate float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <machine/asm.h> + +ENTRY(__truncf) + flds 4(%esp) + subl $8, %esp + fstcw 4(%esp) + movl $0xc00, %edx + orl 4(%esp), %edx + movl %edx, (%esp) + fldcw (%esp) + frndint + fldcw 4(%esp) + addl $8, %esp + ret +END(__truncf) +weak_alias (__truncf, truncf) diff --git a/sysdeps/libm-i387/s_truncl.S b/sysdeps/libm-i387/s_truncl.S new file mode 100644 index 0000000..4c0bb0c --- /dev/null +++ b/sysdeps/libm-i387/s_truncl.S @@ -0,0 +1,36 @@ +/* Truncate long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <machine/asm.h> + +ENTRY(__truncl) + fldt 4(%esp) + subl $8, %esp + fstcw 4(%esp) + movl $0xc00, %edx + orl 4(%esp), %edx + movl %edx, (%esp) + fldcw (%esp) + frndint + fldcw 4(%esp) + addl $8, %esp + ret +END(__truncl) +weak_alias (__truncl, truncl) diff --git a/sysdeps/libm-ieee754/s_cacos.c b/sysdeps/libm-ieee754/s_cacos.c new file mode 100644 index 0000000..9b00759 --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacos.c @@ -0,0 +1,41 @@ +/* Return cosine of complex double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +__complex__ double +__cacos (__complex__ double x) +{ + __complex__ double y; + __complex__ double res; + + y = __casin (x); + + __real__ res = (double) M_PI_2 - __real__ y; + __imag__ res = -__imag__ y; + + return res; +} +weak_alias (__cacos, cacos) +#ifdef NO_LONG_DOUBLE +strong_alias (__cacos, __cacosl) +weak_alias (__cacos, cacosl) +#endif diff --git a/sysdeps/libm-ieee754/s_cacosf.c b/sysdeps/libm-ieee754/s_cacosf.c new file mode 100644 index 0000000..6fb132d --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacosf.c @@ -0,0 +1,37 @@ +/* Return cosine of complex float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +__complex__ float +__cacosf (__complex__ float x) +{ + __complex__ float y; + __complex__ float res; + + y = __casinf (x); + + __real__ res = (float) M_PI_2 - __real__ y; + __imag__ res = -__imag__ y; + + return res; +} +weak_alias (__cacosf, cacosf) diff --git a/sysdeps/libm-ieee754/s_cacosh.c b/sysdeps/libm-ieee754/s_cacosh.c new file mode 100644 index 0000000..d938c64 --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacosh.c @@ -0,0 +1,88 @@ +/* Return arc hyperbole cosine for double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__cacosh (__complex__ double x) +{ + __complex__ double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VAL; + + if (rcls == FP_NAN) + __imag__ res = __nan (""); + else + __imag__ res = __copysign ((rcls == FP_INFINITE + ? (__real__ x < 0.0 + ? M_PI - M_PI_4 : M_PI_4) + : M_PI_2), __imag__ x); + } + else if (rcls == FP_INFINITE) + { + __real__ res = HUGE_VAL; + + if (icls >= FP_ZERO) + __imag__ res = __copysign (signbit (__real__ x) ? M_PI : 0.0, + __imag__ x); + else + __imag__ res = __nan (""); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + __real__ res = 0.0; + __imag__ res = __copysign (M_PI_2, __imag__ x); + } + else + { + __complex__ double y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) - 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrt (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clog (y); + } + + return res; +} +weak_alias (__cacosh, cacosh) +#ifdef NO_LONG_DOUBLE +strong_alias (__cacosh, __cacoshl) +weak_alias (__cacosh, cacoshl) +#endif diff --git a/sysdeps/libm-ieee754/s_cacoshf.c b/sysdeps/libm-ieee754/s_cacoshf.c new file mode 100644 index 0000000..bcfebea --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacoshf.c @@ -0,0 +1,84 @@ +/* Return arc hyperbole cosine for float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__cacoshf (__complex__ float x) +{ + __complex__ float res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VALF; + + if (rcls == FP_NAN) + __imag__ res = __nanf (""); + else + __imag__ res = __copysignf ((rcls == FP_INFINITE + ? (__real__ x < 0.0 + ? M_PI - M_PI_4 : M_PI_4) + : M_PI_2), __imag__ x); + } + else if (rcls == FP_INFINITE) + { + __real__ res = HUGE_VALF; + + if (icls >= FP_ZERO) + __imag__ res = __copysignf (signbit (__real__ x) ? M_PI : 0.0, + __imag__ x); + else + __imag__ res = __nanf (""); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + __real__ res = 0.0; + __imag__ res = __copysignf (M_PI_2, __imag__ x); + } + else + { + __complex__ float y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) - 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrtf (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clogf (y); + } + + return res; +} +weak_alias (__cacoshf, cacoshf) diff --git a/sysdeps/libm-ieee754/s_cacoshl.c b/sysdeps/libm-ieee754/s_cacoshl.c new file mode 100644 index 0000000..ed5980c --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacoshl.c @@ -0,0 +1,84 @@ +/* Return arc hyperbole cosine for long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__cacoshl (__complex__ long double x) +{ + __complex__ long double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VALL; + + if (rcls == FP_NAN) + __imag__ res = __nanl (""); + else + __imag__ res = __copysignl ((rcls == FP_INFINITE + ? (__real__ x < 0.0 + ? M_PI - M_PI_4 : M_PI_4) + : M_PI_2), __imag__ x); + } + else if (rcls == FP_INFINITE) + { + __real__ res = HUGE_VALL; + + if (icls >= FP_ZERO) + __imag__ res = __copysignl (signbit (__real__ x) ? M_PI : 0.0, + __imag__ x); + else + __imag__ res = __nanl (""); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + __real__ res = 0.0; + __imag__ res = __copysignl (M_PI_2, __imag__ x); + } + else + { + __complex__ long double y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) - 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrtl (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clogl (y); + } + + return res; +} +weak_alias (__cacoshl, cacoshl) diff --git a/sysdeps/libm-ieee754/s_cacosl.c b/sysdeps/libm-ieee754/s_cacosl.c new file mode 100644 index 0000000..7a60de5 --- /dev/null +++ b/sysdeps/libm-ieee754/s_cacosl.c @@ -0,0 +1,37 @@ +/* Return cosine of complex long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +__complex__ long double +__cacosl (__complex__ long double x) +{ + __complex__ long double y; + __complex__ long double res; + + y = __casinl (x); + + __real__ res = M_PI_2 - __real__ y; + __imag__ res = -__imag__ y; + + return res; +} +weak_alias (__cacosl, cacosl) diff --git a/sysdeps/libm-ieee754/s_casin.c b/sysdeps/libm-ieee754/s_casin.c new file mode 100644 index 0000000..516aea0 --- /dev/null +++ b/sysdeps/libm-ieee754/s_casin.c @@ -0,0 +1,66 @@ +/* Return arc sine of complex double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__casin (__complex__ double x) +{ + __complex__ double res; + + if (isnan (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0) + { + res = x; + } + else if (__isinf (__real__ x) || __isinf (__imag__ x)) + { + __real__ res = __nan (""); + __imag__ res = __copysign (HUGE_VAL, __imag__ x); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + __complex__ double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __casinh (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__casin, casin) +#ifdef NO_LONG_DOUBLE +strong_alias (__casin, __casinl) +weak_alias (__casin, casinl) +#endif diff --git a/sysdeps/libm-ieee754/s_casinf.c b/sysdeps/libm-ieee754/s_casinf.c new file mode 100644 index 0000000..aaf0d66 --- /dev/null +++ b/sysdeps/libm-ieee754/s_casinf.c @@ -0,0 +1,62 @@ +/* Return arc sine of complex float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__casinf (__complex__ float x) +{ + __complex__ float res; + + if (isnan (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0) + { + res = x; + } + else if (__isinff (__real__ x) || __isinff (__imag__ x)) + { + __real__ res = __nanf (""); + __imag__ res = __copysignf (HUGE_VALF, __imag__ x); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + __complex__ float y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __casinhf (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__casinf, casinf) diff --git a/sysdeps/libm-ieee754/s_casinh.c b/sysdeps/libm-ieee754/s_casinh.c new file mode 100644 index 0000000..da7d1ed --- /dev/null +++ b/sysdeps/libm-ieee754/s_casinh.c @@ -0,0 +1,84 @@ +/* Return arc hyperbole sine for double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__casinh (__complex__ double x) +{ + __complex__ double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysign (HUGE_VAL, __real__ x); + + if (rcls == FP_NAN) + __imag__ res = __nan (""); + else + __imag__ res = __copysign (rcls >= FP_ZERO ? M_PI_2 : M_PI_4, + __imag__ x); + } + else if (rcls <= FP_INFINITE) + { + __real__ res = __real__ x; + if ((rcls == FP_INFINITE && icls >= FP_ZERO) + || (rcls == FP_NAN && icls == FP_ZERO)) + __imag__ res = __copysign (0.0, __imag__ x); + else + __imag__ res = __nan (""); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + __complex__ double y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) + 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrt (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clog (y); + } + + return res; +} +weak_alias (__casinh, casinh) +#ifdef NO_LONG_DOUBLE +strong_alias (__casinh, __casinhl) +weak_alias (__casinh, casinhl) +#endif diff --git a/sysdeps/libm-ieee754/s_casinhf.c b/sysdeps/libm-ieee754/s_casinhf.c new file mode 100644 index 0000000..e8441f4 --- /dev/null +++ b/sysdeps/libm-ieee754/s_casinhf.c @@ -0,0 +1,80 @@ +/* Return arc hyperbole sine for float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__casinhf (__complex__ float x) +{ + __complex__ float res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysignf (HUGE_VALF, __real__ x); + + if (rcls == FP_NAN) + __imag__ res = __nanf (""); + else + __imag__ res = __copysignf (rcls >= FP_ZERO ? M_PI_2 : M_PI_4, + __imag__ x); + } + else if (rcls <= FP_INFINITE) + { + __real__ res = __real__ x; + if ((rcls == FP_INFINITE && icls >= FP_ZERO) + || (rcls == FP_NAN && icls == FP_ZERO)) + __imag__ res = __copysignf (0.0, __imag__ x); + else + __imag__ res = __nanf (""); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + __complex__ float y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) + 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrtf (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clogf (y); + } + + return res; +} +weak_alias (__casinhf, casinhf) diff --git a/sysdeps/libm-ieee754/s_casinhl.c b/sysdeps/libm-ieee754/s_casinhl.c new file mode 100644 index 0000000..cc6757b --- /dev/null +++ b/sysdeps/libm-ieee754/s_casinhl.c @@ -0,0 +1,80 @@ +/* Return arc hyperbole sine for long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__casinhl (__complex__ long double x) +{ + __complex__ long double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysignl (HUGE_VALL, __real__ x); + + if (rcls == FP_NAN) + __imag__ res = __nanl (""); + else + __imag__ res = __copysignl (rcls >= FP_ZERO ? M_PI_2 : M_PI_4, + __imag__ x); + } + else if (rcls <= FP_INFINITE) + { + __real__ res = __real__ x; + if ((rcls == FP_INFINITE && icls >= FP_ZERO) + || (rcls == FP_NAN && icls == FP_ZERO)) + __imag__ res = __copysignl (0.0, __imag__ x); + else + __imag__ res = __nanl (""); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + __complex__ long double y; + + __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) + 1.0; + __imag__ y = 2.0 * __real__ x * __imag__ x; + + y = __csqrtl (y); + + __real__ y += __real__ x; + __imag__ y += __imag__ x; + + res = __clogl (y); + } + + return res; +} +weak_alias (__casinhl, casinhl) diff --git a/sysdeps/libm-ieee754/s_casinl.c b/sysdeps/libm-ieee754/s_casinl.c new file mode 100644 index 0000000..cc750d4 --- /dev/null +++ b/sysdeps/libm-ieee754/s_casinl.c @@ -0,0 +1,62 @@ +/* Return arc sine of complex long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__casinl (__complex__ long double x) +{ + __complex__ long double res; + + if (isnan (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0) + { + res = x; + } + else if (__isinfl (__real__ x) || __isinfl (__imag__ x)) + { + __real__ res = __nanl (""); + __imag__ res = __copysignl (HUGE_VALL, __imag__ x); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + __complex__ long double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __casinhl (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__casinl, casinl) diff --git a/sysdeps/libm-ieee754/s_catan.c b/sysdeps/libm-ieee754/s_catan.c new file mode 100644 index 0000000..bab87e9 --- /dev/null +++ b/sysdeps/libm-ieee754/s_catan.c @@ -0,0 +1,89 @@ +/* Return arc tangent of complex double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ double +__catan (__complex__ double x) +{ + __complex__ double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (rcls == FP_INFINITE) + { + __real__ res = __copysign (M_PI_2, __real__ x); + __imag__ res = __copysign (0.0, __imag__ x); + } + else if (icls == FP_INFINITE) + { + if (rcls >= FP_ZERO) + __real__ res = __copysign (M_PI_2, __real__ x); + else + __real__ res = __nan (""); + __imag__ res = __copysign (0.0, __imag__ x); + } + else if (icls == FP_ZERO || icls == FP_INFINITE) + { + __real__ res = __nan (""); + __imag__ res = __copysign (0.0, __imag__ x); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + double r2, num, den; + + r2 = __real__ x * __real__ x; + + den = 1 - r2 - __imag__ x * __imag__ x; + + __real__ res = 0.5 * __atan ((2.0 * __real__ x) / den); + + num = __imag__ x + 1.0; + num = r2 + num * num; + + den = __imag__ x - 1.0; + den = r2 + den * den; + + __imag__ res = 0.25 * __ieee754_log (num / den); + } + + return res; +} +weak_alias (__catan, catan) +#ifdef NO_LONG_DOUBLE +strong_alias (__catan, __catanl) +weak_alias (__catan, catanl) +#endif diff --git a/sysdeps/libm-ieee754/s_catanf.c b/sysdeps/libm-ieee754/s_catanf.c new file mode 100644 index 0000000..92bdac9 --- /dev/null +++ b/sysdeps/libm-ieee754/s_catanf.c @@ -0,0 +1,85 @@ +/* Return arc tangent of complex float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ float +__catanf (__complex__ float x) +{ + __complex__ float res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (rcls == FP_INFINITE) + { + __real__ res = __copysignf (M_PI_2, __real__ x); + __imag__ res = __copysignf (0.0, __imag__ x); + } + else if (icls == FP_INFINITE) + { + if (rcls >= FP_ZERO) + __real__ res = __copysignf (M_PI_2, __real__ x); + else + __real__ res = __nanf (""); + __imag__ res = __copysignf (0.0, __imag__ x); + } + else if (icls == FP_ZERO || icls == FP_INFINITE) + { + __real__ res = __nanf (""); + __imag__ res = __copysignf (0.0, __imag__ x); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + float r2, num, den; + + r2 = __real__ x * __real__ x; + + den = 1 - r2 - __imag__ x * __imag__ x; + + __real__ res = 0.5 * __atanf ((2.0 * __real__ x) / den); + + num = __imag__ x + 1.0; + num = r2 + num * num; + + den = __imag__ x - 1.0; + den = r2 + den * den; + + __imag__ res = 0.25 * __ieee754_logf (num / den); + } + + return res; +} +weak_alias (__catanf, catanf) diff --git a/sysdeps/libm-ieee754/s_catanh.c b/sysdeps/libm-ieee754/s_catanh.c new file mode 100644 index 0000000..6c4b10e --- /dev/null +++ b/sysdeps/libm-ieee754/s_catanh.c @@ -0,0 +1,84 @@ +/* Return arc hyperbole tangent for double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ double +__catanh (__complex__ double x) +{ + __complex__ double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysign (0.0, __real__ x); + __imag__ res = __copysign (M_PI_2, __imag__ x); + } + else if (rcls == FP_INFINITE || rcls == FP_ZERO) + { + __real__ res = __copysign (0.0, __real__ x); + if (icls >= FP_ZERO) + __imag__ res = __copysign (M_PI_2, __imag__ x); + else + __imag__ res = __nan (""); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + double i2, num, den; + + i2 = __imag__ x * __imag__ x; + + num = 1.0 - __real__ x; + num = i2 + num * num; + + den = 1.0 + __real__ x; + den = i2 + den * den; + + __real__ res = 0.25 * __ieee754_log (num / den); + + den = 1 - __real__ x * __real__ x - i2; + + __imag__ res = 0.5 * __atan ((2.0 * __imag__ x) / den); + } + + return res; +} +weak_alias (__catanh, catanh) +#ifdef NO_LONG_DOUBLE +strong_alias (__catanh, __catanhl) +weak_alias (__catanh, catanhl) +#endif diff --git a/sysdeps/libm-ieee754/s_catanhf.c b/sysdeps/libm-ieee754/s_catanhf.c new file mode 100644 index 0000000..5d195be --- /dev/null +++ b/sysdeps/libm-ieee754/s_catanhf.c @@ -0,0 +1,80 @@ +/* Return arc hyperbole tangent for float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ float +__catanhf (__complex__ float x) +{ + __complex__ float res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysignf (0.0, __real__ x); + __imag__ res = __copysignf (M_PI_2, __imag__ x); + } + else if (rcls == FP_INFINITE || rcls == FP_ZERO) + { + __real__ res = __copysignf (0.0, __real__ x); + if (icls >= FP_ZERO) + __imag__ res = __copysignf (M_PI_2, __imag__ x); + else + __imag__ res = __nanf (""); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + float i2, num, den; + + i2 = __imag__ x * __imag__ x; + + num = 1.0 - __real__ x; + num = i2 + num * num; + + den = 1.0 + __real__ x; + den = i2 + den * den; + + __real__ res = 0.25 * __ieee754_logf (num / den); + + den = 1 - __real__ x * __real__ x - i2; + + __imag__ res = 0.5 * __atanf ((2.0 * __imag__ x) / den); + } + + return res; +} +weak_alias (__catanhf, catanhf) diff --git a/sysdeps/libm-ieee754/s_catanhl.c b/sysdeps/libm-ieee754/s_catanhl.c new file mode 100644 index 0000000..d8396a7 --- /dev/null +++ b/sysdeps/libm-ieee754/s_catanhl.c @@ -0,0 +1,80 @@ +/* Return arc hyperbole tangent for long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ long double +__catanhl (__complex__ long double x) +{ + __complex__ long double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = __copysignl (0.0, __real__ x); + __imag__ res = __copysignl (M_PI_2, __imag__ x); + } + else if (rcls == FP_INFINITE || rcls == FP_ZERO) + { + __real__ res = __copysignl (0.0, __real__ x); + if (icls >= FP_ZERO) + __imag__ res = __copysignl (M_PI_2, __imag__ x); + else + __imag__ res = __nanl (""); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + long double i2, num, den; + + i2 = __imag__ x * __imag__ x; + + num = 1.0 - __real__ x; + num = i2 + num * num; + + den = 1.0 + __real__ x; + den = i2 + den * den; + + __real__ res = 0.25 * __ieee754_logl (num / den); + + den = 1 - __real__ x * __real__ x - i2; + + __imag__ res = 0.5 * __atanl ((2.0 * __imag__ x) / den); + } + + return res; +} +weak_alias (__catanhl, catanhl) diff --git a/sysdeps/libm-ieee754/s_catanl.c b/sysdeps/libm-ieee754/s_catanl.c new file mode 100644 index 0000000..2fd8a4f --- /dev/null +++ b/sysdeps/libm-ieee754/s_catanl.c @@ -0,0 +1,85 @@ +/* Return arc tangent of complex long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ long double +__catanl (__complex__ long double x) +{ + __complex__ long double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (rcls == FP_INFINITE) + { + __real__ res = __copysignl (M_PI_2, __real__ x); + __imag__ res = __copysignl (0.0, __imag__ x); + } + else if (icls == FP_INFINITE) + { + if (rcls >= FP_ZERO) + __real__ res = __copysignl (M_PI_2, __real__ x); + else + __real__ res = __nanl (""); + __imag__ res = __copysignl (0.0, __imag__ x); + } + else if (icls == FP_ZERO || icls == FP_INFINITE) + { + __real__ res = __nanl (""); + __imag__ res = __copysignl (0.0, __imag__ x); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else if (rcls == FP_ZERO && icls == FP_ZERO) + { + res = x; + } + else + { + long double r2, num, den; + + r2 = __real__ x * __real__ x; + + den = 1 - r2 - __imag__ x * __imag__ x; + + __real__ res = 0.5 * __atanl ((2.0 * __real__ x) / den); + + num = __imag__ x + 1.0; + num = r2 + num * num; + + den = __imag__ x - 1.0; + den = r2 + den * den; + + __imag__ res = 0.25 * __ieee754_logl (num / den); + } + + return res; +} +weak_alias (__catanl, catanl) diff --git a/sysdeps/libm-ieee754/s_ccos.c b/sysdeps/libm-ieee754/s_ccos.c new file mode 100644 index 0000000..8a4b55d --- /dev/null +++ b/sysdeps/libm-ieee754/s_ccos.c @@ -0,0 +1,64 @@ +/* Return cosine of complex double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__ccos (__complex__ double x) +{ + __complex__ double res; + + if (!isfinite (__real__ x) || __isnan (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nan (""); + __imag__ res = 0.0; + } + else if (__isinf (__imag__ x)) + { + __real__ res = HUGE_VAL; + __imag__ res = __nan (""); + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + __complex__ double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + res = __ccosh (y); + } + + return res; +} +weak_alias (__ccos, ccos) +#ifdef NO_LONG_DOUBLE +strong_alias (__ccos, __ccosl) +weak_alias (__ccos, ccosl) +#endif diff --git a/sysdeps/libm-ieee754/s_ccosf.c b/sysdeps/libm-ieee754/s_ccosf.c new file mode 100644 index 0000000..9d1a972 --- /dev/null +++ b/sysdeps/libm-ieee754/s_ccosf.c @@ -0,0 +1,60 @@ +/* Return cosine of complex float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__ccosf (__complex__ float x) +{ + __complex__ float res; + + if (!isfinite (__real__ x) || __isnanf (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nanf (""); + __imag__ res = 0.0; + } + else if (__isinff (__imag__ x)) + { + __real__ res = HUGE_VALF; + __imag__ res = __nanf (""); + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + __complex__ float y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + res = __ccoshf (y); + } + + return res; +} +weak_alias (__ccosf, ccosf) diff --git a/sysdeps/libm-ieee754/s_ccosh.c b/sysdeps/libm-ieee754/s_ccosh.c index f01b245..b9d7b82 100644 --- a/sysdeps/libm-ieee754/s_ccosh.c +++ b/sysdeps/libm-ieee754/s_ccosh.c @@ -21,47 +21,47 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ double __ccosh (__complex__ double x) { __complex__ double retval; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); __real__ x = fabs (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - double exp_val = __exp (__real__ x); - double rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + double cosh_val = __ieee754_cosh (__real__ x); - __real__ retval = 0.5 * (exp_val + rec_exp_val) * __cos (__imag__ x); - __imag__ retval = 0.5 * (exp_val + rec_exp_val) * __sin (__imag__ x); + __real__ retval = cosh_val * __cos (__imag__ x); + __imag__ retval = cosh_val * __sin (__imag__ x); } else { - if (__real__ x == 0) - { - __imag__ retval = 0.0; - __real__ retval = __nan ("") + __nan (""); - } - else - { - __real__ retval = __nan (""); - __imag__ retval = __nan ("") + __nan (""); - } + __imag__ retval = __real__ x == 0.0 ? 0.0 : __nan (""); + __real__ retval = __nan ("") + __nan (""); } } - else if (__isinf (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = HUGE_VAL; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysign (HUGE_VAL, __cos (__imag__ x)); __imag__ retval = __copysign (HUGE_VAL, __sin (__imag__ x)); } @@ -74,16 +74,8 @@ __ccosh (__complex__ double x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nan (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nan (""); - __imag__ retval = __nan (""); - } + __real__ retval = __nan (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nan (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_ccoshf.c b/sysdeps/libm-ieee754/s_ccoshf.c index 9f2774b..758ec5b 100644 --- a/sysdeps/libm-ieee754/s_ccoshf.c +++ b/sysdeps/libm-ieee754/s_ccoshf.c @@ -21,49 +21,47 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ float __ccoshf (__complex__ float x) { __complex__ float retval; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); __real__ x = fabsf (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - float exp_val = __expf (__real__ x); - float rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + float cosh_val = __ieee754_coshf (__real__ x); - __real__ retval = (0.5 * (exp_val + rec_exp_val) - * __cosf (__imag__ x)); - __imag__ retval = (0.5 * (exp_val + rec_exp_val) - * __sinf (__imag__ x)); + __real__ retval = cosh_val * __cosf (__imag__ x); + __imag__ retval = cosh_val * __sinf (__imag__ x); } else { - if (__real__ x == 0) - { - __imag__ retval = 0.0; - __real__ retval = __nanf ("") + __nanf (""); - } - else - { - __real__ retval = __nanf (""); - __imag__ retval = __nanf ("") + __nanf (""); - } + __imag__ retval = __real__ x == 0.0 ? 0.0 : __nanf (""); + __real__ retval = __nanf ("") + __nanf (""); } } - else if (__isinff (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = HUGE_VALF; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysignf (HUGE_VALF, __cosf (__imag__ x)); __imag__ retval = __copysignf (HUGE_VALF, __sinf (__imag__ x)); } @@ -76,16 +74,8 @@ __ccoshf (__complex__ float x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nanf (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nanf (""); - __imag__ retval = __nanf (""); - } + __real__ retval = __nanf (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nanf (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_ccoshl.c b/sysdeps/libm-ieee754/s_ccoshl.c index fd55341..5e8c399 100644 --- a/sysdeps/libm-ieee754/s_ccoshl.c +++ b/sysdeps/libm-ieee754/s_ccoshl.c @@ -21,49 +21,47 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ long double __ccoshl (__complex__ long double x) { __complex__ long double retval; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); __real__ x = fabsl (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - long double exp_val = __expl (__real__ x); - long double rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + long double cosh_val = __ieee754_coshl (__real__ x); - __real__ retval = (0.5 * (exp_val + rec_exp_val) - * __cosl (__imag__ x)); - __imag__ retval = (0.5 * (exp_val + rec_exp_val) - * __sinl (__imag__ x)); + __real__ retval = cosh_val * __cosl (__imag__ x); + __imag__ retval = cosh_val * __sinl (__imag__ x); } else { - if (__real__ x == 0) - { - __imag__ retval = 0.0; - __real__ retval = __nanl ("") + __nanl (""); - } - else - { - __real__ retval = __nanl (""); - __imag__ retval = __nanl ("") + __nanl (""); - } + __imag__ retval = __real__ x == 0.0 ? 0.0 : __nanl (""); + __real__ retval = __nanl ("") + __nanl (""); } } - else if (__isinfl (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = HUGE_VALL; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysignl (HUGE_VALL, __cosl (__imag__ x)); __imag__ retval = __copysignl (HUGE_VALL, __sinl (__imag__ x)); } @@ -76,16 +74,8 @@ __ccoshl (__complex__ long double x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nanl (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nanl (""); - __imag__ retval = __nanl (""); - } + __real__ retval = __nanl (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nanl (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_ccosl.c b/sysdeps/libm-ieee754/s_ccosl.c new file mode 100644 index 0000000..a41d48b --- /dev/null +++ b/sysdeps/libm-ieee754/s_ccosl.c @@ -0,0 +1,60 @@ +/* Return cosine of complex long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__ccosl (__complex__ long double x) +{ + __complex__ long double res; + + if (!isfinite (__real__ x) || __isnanl (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nanl (""); + __imag__ res = 0.0; + } + else if (__isinfl (__imag__ x)) + { + __real__ res = HUGE_VALL; + __imag__ res = __nanl (""); + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + __complex__ long double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + res = __ccoshl (y); + } + + return res; +} +weak_alias (__ccosl, ccosl) diff --git a/sysdeps/libm-ieee754/s_ceill.c b/sysdeps/libm-ieee754/s_ceill.c index c5c8648..773be32 100644 --- a/sysdeps/libm-ieee754/s_ceill.c +++ b/sysdeps/libm-ieee754/s_ceill.c @@ -48,34 +48,34 @@ static long double huge = 1.0e4930; GET_LDOUBLE_WORDS(se,i0,i1,x); sx = (se>>15)&1; j0 = (se&0x7fff)-0x3fff; - if(j0<32) { + if(j0<31) { if(j0<0) { /* raise inexact if x != 0 */ if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */ if(sx) {es=0x8000;i0=0;i1=0;} else if((i0|i1)!=0) { es=0x3fff;i0=0;i1=0;} } } else { - i = (0xffffffff)>>j0; + i = (0x7fffffff)>>j0; if(((i0&i)|i1)==0) return x; /* x is integral */ if(huge+x>0.0) { /* raise inexact flag */ if(sx==0) { - if (j0>0) i0 += (0x80000000)>>(j0-1); + if (j0>0) i0 += (0x80000000)>>j0; else ++se; } i0 &= (~i); i1=0; } } - } else if (j0>63) { + } else if (j0>62) { if(j0==0x4000) return x+x; /* inf or NaN */ else return x; /* x is integral */ } else { - i = ((u_int32_t)(0xffffffff))>>(j0-32); + i = ((u_int32_t)(0xffffffff))>>(j0-31); if((i1&i)==0) return x; /* x is integral */ if(huge+x>0.0) { /* raise inexact flag */ if(sx==0) { - if(j0==32) i0+=1; + if(j0==31) i0+=1; else { - j = i1 + (1<<(64-j0)); + j = i1 + (1<<(63-j0)); if(j<i1) i0+=1; /* got a carry */ i1 = j; } diff --git a/sysdeps/libm-ieee754/s_cexpf.c b/sysdeps/libm-ieee754/s_cexpf.c index c5d8f0c..0d43721 100644 --- a/sysdeps/libm-ieee754/s_cexpf.c +++ b/sysdeps/libm-ieee754/s_cexpf.c @@ -21,17 +21,23 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ float __cexpf (__complex__ float x) { __complex__ float retval; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - float exp_val = __expf (__real__ x); + /* Imaginary part is finite. */ + float exp_val = __ieee754_expf (__real__ x); if (isfinite (exp_val)) { @@ -52,14 +58,17 @@ __cexpf (__complex__ float x) __imag__ retval = __nanf (""); } } - else if (__isinff (__real__ x)) + else if (rcls == FP_INFINITE) { - if (isfinite (__imag__ x)) + /* Real part is infinite. */ + if (icls >= FP_ZERO) { + /* Imaginary part is finite. */ float value = signbit (__real__ x) ? 0.0 : HUGE_VALF; - if (__imag__ x == 0.0) + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = value; __imag__ retval = __imag__ x; } @@ -82,7 +91,7 @@ __cexpf (__complex__ float x) } else { - /* If the real part is NaN the result is NaN + iNan. */ + /* If the real part is NaN the result is NaN + iNaN. */ __real__ retval = __nanf (""); __imag__ retval = __nanf (""); } diff --git a/sysdeps/libm-ieee754/s_cexpl.c b/sysdeps/libm-ieee754/s_cexpl.c index f1cdf43..ac27e1e 100644 --- a/sysdeps/libm-ieee754/s_cexpl.c +++ b/sysdeps/libm-ieee754/s_cexpl.c @@ -1,4 +1,4 @@ -/* Return value of complex exponential function for float complex value. +/* Return value of complex exponential function for long double complex value. Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -21,17 +21,23 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ long double __cexpl (__complex__ long double x) { __complex__ long double retval; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - long double exp_val = __expl (__real__ x); + /* Imaginary part is finite. */ + long double exp_val = __ieee754_expl (__real__ x); if (isfinite (exp_val)) { @@ -52,14 +58,17 @@ __cexpl (__complex__ long double x) __imag__ retval = __nanl (""); } } - else if (__isinfl (__real__ x)) + else if (rcls == FP_INFINITE) { - if (isfinite (__imag__ x)) + /* Real part is infinite. */ + if (icls >= FP_ZERO) { + /* Imaginary part is finite. */ long double value = signbit (__real__ x) ? 0.0 : HUGE_VALL; - if (__imag__ x == 0.0) + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = value; __imag__ retval = __imag__ x; } @@ -89,4 +98,4 @@ __cexpl (__complex__ long double x) return retval; } -weak_alias (__cexp, cexp) +weak_alias (__cexpl, cexpl) diff --git a/sysdeps/libm-ieee754/s_clog.c b/sysdeps/libm-ieee754/s_clog.c index f00753b..c14a734 100644 --- a/sysdeps/libm-ieee754/s_clog.c +++ b/sysdeps/libm-ieee754/s_clog.c @@ -28,17 +28,20 @@ __complex__ double __clog (__complex__ double x) { __complex__ double result; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - if (__real__ x == 0.0 && __imag__ x == 0.0) + if (rcls == FP_ZERO && icls == FP_ZERO) { + /* Real and imaginary part are 0.0. */ __imag__ result = signbit (__real__ x) ? M_PI : 0.0; - if (signbit (__imag__ x)) - __imag__ result = __copysign (__imag__ result, -1.0); + __imag__ result = __copysign (__imag__ result, __imag__ x); /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabs (__real__ x); } - else if (!__isnan (__real__ x) && !__isnan (__imag__ x)) + else if (rcls != FP_NAN && icls != FP_NAN) { + /* Neither real nor imaginary part is NaN. */ __real__ result = __ieee754_log (__ieee754_hypot (__real__ x, __imag__ x)); __imag__ result = __ieee754_atan2 (__imag__ x, __real__ x); @@ -46,7 +49,8 @@ __clog (__complex__ double x) else { __imag__ result = __nan (""); - if (__isinf (__real__ x) || __isinf (__imag__ x)) + if (rcls == FP_INFINITE || icls == FP_INFINITE) + /* Real or imaginary part is infinite. */ __real__ result = HUGE_VAL; else __real__ result = __nan (""); diff --git a/sysdeps/libm-ieee754/s_clogf.c b/sysdeps/libm-ieee754/s_clogf.c index 4eafc82..9c9aa83 100644 --- a/sysdeps/libm-ieee754/s_clogf.c +++ b/sysdeps/libm-ieee754/s_clogf.c @@ -28,17 +28,20 @@ __complex__ float __clogf (__complex__ float x) { __complex__ float result; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - if (__real__ x == 0.0 && __imag__ x == 0.0) + if (rcls == FP_ZERO && icls == FP_ZERO) { + /* Real and imaginary part are 0.0. */ __imag__ result = signbit (__real__ x) ? M_PI : 0.0; - if (signbit (__imag__ x)) - __imag__ result = __copysignf (__imag__ result, -1.0); + __imag__ result = __copysignf (__imag__ result, __imag__ x); /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabsf (__real__ x); } - else if (!__isnanf (__real__ x) && !__isnanf (__imag__ x)) + else if (rcls != FP_NAN && icls != FP_NAN) { + /* Neither real nor imaginary part is NaN. */ __real__ result = __ieee754_logf (__ieee754_hypotf (__real__ x, __imag__ x)); __imag__ result = __ieee754_atan2f (__imag__ x, __real__ x); @@ -46,7 +49,8 @@ __clogf (__complex__ float x) else { __imag__ result = __nanf (""); - if (__isinff (__real__ x) || __isinff (__imag__ x)) + if (rcls == FP_INFINITE || icls == FP_INFINITE) + /* Real or imaginary part is infinite. */ __real__ result = HUGE_VALF; else __real__ result = __nanf (""); diff --git a/sysdeps/libm-ieee754/s_clogl.c b/sysdeps/libm-ieee754/s_clogl.c index a299a95..51bee37 100644 --- a/sysdeps/libm-ieee754/s_clogl.c +++ b/sysdeps/libm-ieee754/s_clogl.c @@ -28,17 +28,20 @@ __complex__ long double __clogl (__complex__ long double x) { __complex__ long double result; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - if (__real__ x == 0.0 && __imag__ x == 0.0) + if (rcls == FP_ZERO && icls == FP_ZERO) { + /* Real and imaginary part are 0.0. */ __imag__ result = signbit (__real__ x) ? M_PI : 0.0; - if (signbit (__imag__ x)) - __imag__ result = __copysignl (__imag__ result, -1.0); + __imag__ result = __copysignl (__imag__ result, __imag__ x); /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabsl (__real__ x); } - else if (!__isnanl (__real__ x) && !__isnanl (__imag__ x)) + else if (rcls != FP_NAN && icls != FP_NAN) { + /* Neither real nor imaginary part is NaN. */ __real__ result = __ieee754_logl (__ieee754_hypotl (__real__ x, __imag__ x)); __imag__ result = __ieee754_atan2l (__imag__ x, __real__ x); @@ -46,7 +49,8 @@ __clogl (__complex__ long double x) else { __imag__ result = __nanl (""); - if (__isinfl (__real__ x) || __isinfl (__imag__ x)) + if (rcls == FP_INFINITE || icls == FP_INFINITE) + /* Real or imaginary part is infinite. */ __real__ result = HUGE_VALL; else __real__ result = __nanl (""); diff --git a/sysdeps/libm-ieee754/s_cpow.c b/sysdeps/libm-ieee754/s_cpow.c new file mode 100644 index 0000000..074b38b --- /dev/null +++ b/sysdeps/libm-ieee754/s_cpow.c @@ -0,0 +1,34 @@ +/* Complex power of double values. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__cpow (__complex__ double x, __complex__ double c) +{ + return __cexp (c * __clog (x)); +} +weak_alias (__cpow, cpow) +#ifdef NO_LONG_DOUBLE +strong_alias (__cpow, __cpowl) +weak_alias (__cpow, cpowl) +#endif diff --git a/sysdeps/libm-ieee754/s_cpowf.c b/sysdeps/libm-ieee754/s_cpowf.c new file mode 100644 index 0000000..fa4541c --- /dev/null +++ b/sysdeps/libm-ieee754/s_cpowf.c @@ -0,0 +1,30 @@ +/* Complex power of float values. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__cpowf (__complex__ float x, __complex__ float c) +{ + return __cexpf (c * __clogf (x)); +} +weak_alias (__cpowf, cpowf) diff --git a/sysdeps/libm-ieee754/s_cpowl.c b/sysdeps/libm-ieee754/s_cpowl.c new file mode 100644 index 0000000..69097d5 --- /dev/null +++ b/sysdeps/libm-ieee754/s_cpowl.c @@ -0,0 +1,30 @@ +/* Complex power of long double values. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__cpowl (__complex__ long double x, __complex__ long double c) +{ + return __cexpl (c * __clogl (x)); +} +weak_alias (__cpowl, cpowl) diff --git a/sysdeps/libm-ieee754/s_csin.c b/sysdeps/libm-ieee754/s_csin.c new file mode 100644 index 0000000..4639bca --- /dev/null +++ b/sysdeps/libm-ieee754/s_csin.c @@ -0,0 +1,67 @@ +/* Complex sine function for double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ double +__csin (__complex__ double x) +{ + __complex__ double res; + + if (!isfinite (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nan (""); + __imag__ res = 0.0; + } + else if (__isinf (__imag__ x)) + { + __real__ res = __nan (""); + __imag__ res = __imag__ x; + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + __complex__ double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __csinh (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__csin, csin) +#ifdef NO_LONG_DOUBLE +strong_alias (__csin, __csinl) +weak_alias (__csin, csinl) +#endif diff --git a/sysdeps/libm-ieee754/s_csinf.c b/sysdeps/libm-ieee754/s_csinf.c new file mode 100644 index 0000000..f7f10e6 --- /dev/null +++ b/sysdeps/libm-ieee754/s_csinf.c @@ -0,0 +1,63 @@ +/* Complex sine function for float. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ float +__csinf (__complex__ float x) +{ + __complex__ float res; + + if (!isfinite (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nanf (""); + __imag__ res = 0.0; + } + else if (__isinff (__imag__ x)) + { + __real__ res = __nanf (""); + __imag__ res = __imag__ x; + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + __complex__ float y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __csinhf (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__csinf, csinf) diff --git a/sysdeps/libm-ieee754/s_csinh.c b/sysdeps/libm-ieee754/s_csinh.c index aab041b..05cec85 100644 --- a/sysdeps/libm-ieee754/s_csinh.c +++ b/sysdeps/libm-ieee754/s_csinh.c @@ -21,32 +21,38 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ double __csinh (__complex__ double x) { __complex__ double retval; int negate = signbit (__real__ x); + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); __real__ x = fabs (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - double exp_val = __exp (__real__ x); - double rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + double sinh_val = __ieee754_sinh (__real__ x); - __real__ retval = 0.5 * (exp_val - rec_exp_val) * __cos (__imag__ x); - __imag__ retval = 0.5 * (exp_val - rec_exp_val) * __sin (__imag__ x); + __real__ retval = sinh_val * __cos (__imag__ x); + __imag__ retval = sinh_val * __sin (__imag__ x); if (negate) __real__ retval = -__real__ retval; } else { - if (__real__ x == 0) + if (rcls == FP_ZERO) { + /* Real part is 0.0. */ __real__ retval = __copysign (0.0, negate ? -1.0 : 1.0); __imag__ retval = __nan ("") + __nan (""); } @@ -57,15 +63,18 @@ __csinh (__complex__ double x) } } } - else if (__isinf (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = negate ? -HUGE_VAL : HUGE_VAL; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysign (HUGE_VAL, __cos (__imag__ x)); __imag__ retval = __copysign (HUGE_VAL, __sin (__imag__ x)); @@ -81,16 +90,8 @@ __csinh (__complex__ double x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nan (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nan (""); - __imag__ retval = __nan (""); - } + __real__ retval = __nan (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nan (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_csinhf.c b/sysdeps/libm-ieee754/s_csinhf.c index 204bbfe..93f83cf 100644 --- a/sysdeps/libm-ieee754/s_csinhf.c +++ b/sysdeps/libm-ieee754/s_csinhf.c @@ -21,34 +21,38 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ float __csinhf (__complex__ float x) { __complex__ float retval; int negate = signbit (__real__ x); + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); __real__ x = fabsf (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - float exp_val = __expf (__real__ x); - float rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + float sinh_val = __ieee754_sinhf (__real__ x); - __real__ retval = (0.5 * (exp_val - rec_exp_val) - * __cosf (__imag__ x)); - __imag__ retval = (0.5 * (exp_val - rec_exp_val) - * __sinf (__imag__ x)); + __real__ retval = sinh_val * __cosf (__imag__ x); + __imag__ retval = sinh_val * __sinf (__imag__ x); if (negate) __real__ retval = -__real__ retval; } else { - if (__real__ x == 0) + if (rcls == FP_ZERO) { + /* Real part is 0.0. */ __real__ retval = __copysignf (0.0, negate ? -1.0 : 1.0); __imag__ retval = __nanf ("") + __nanf (""); } @@ -59,15 +63,18 @@ __csinhf (__complex__ float x) } } } - else if (__isinff (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = negate ? -HUGE_VALF : HUGE_VALF; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysignf (HUGE_VALF, __cosf (__imag__ x)); __imag__ retval = __copysignf (HUGE_VALF, __sinf (__imag__ x)); @@ -83,16 +90,8 @@ __csinhf (__complex__ float x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nanf (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nanf (""); - __imag__ retval = __nanf (""); - } + __real__ retval = __nanf (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nanf (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_csinhl.c b/sysdeps/libm-ieee754/s_csinhl.c index e403dd4..8388a40 100644 --- a/sysdeps/libm-ieee754/s_csinhl.c +++ b/sysdeps/libm-ieee754/s_csinhl.c @@ -21,34 +21,38 @@ #include <complex.h> #include <math.h> +#include "math_private.h" + __complex__ long double __csinhl (__complex__ long double x) { __complex__ long double retval; int negate = signbit (__real__ x); + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); - __real__ x = fabs (__real__ x); + __real__ x = fabsl (__real__ x); - if (isfinite (__real__ x)) + if (rcls >= FP_ZERO) { - if (isfinite (__imag__ x)) + /* Real part is finite. */ + if (icls >= FP_ZERO) { - long double exp_val = __expl (__real__ x); - long double rec_exp_val = 1.0 / exp_val; + /* Imaginary part is finite. */ + long double sinh_val = __ieee754_sinhl (__real__ x); - __real__ retval = (0.5 * (exp_val - rec_exp_val) - * __cosl (__imag__ x)); - __imag__ retval = (0.5 * (exp_val - rec_exp_val) - * __sinl (__imag__ x)); + __real__ retval = sinh_val * __cosl (__imag__ x); + __imag__ retval = sinh_val * __sinl (__imag__ x); if (negate) __real__ retval = -__real__ retval; } else { - if (__real__ x == 0) + if (rcls == FP_ZERO) { + /* Real part is 0.0. */ __real__ retval = __copysignl (0.0, negate ? -1.0 : 1.0); __imag__ retval = __nanl ("") + __nanl (""); } @@ -59,15 +63,18 @@ __csinhl (__complex__ long double x) } } } - else if (__isinfl (__real__ x)) + else if (rcls == FP_INFINITE) { - if (__imag__ x == 0.0) + /* Real part is infinite. */ + if (icls == FP_ZERO) { + /* Imaginary part is 0.0. */ __real__ retval = negate ? -HUGE_VALL : HUGE_VALL; __imag__ retval = __imag__ x; } - else if (isfinite (__imag__ x)) + else if (icls > FP_ZERO) { + /* Imaginary part is finite. */ __real__ retval = __copysignl (HUGE_VALL, __cosl (__imag__ x)); __imag__ retval = __copysignl (HUGE_VALL, __sinl (__imag__ x)); @@ -83,16 +90,8 @@ __csinhl (__complex__ long double x) } else { - if (__imag__ x == 0.0) - { - __real__ retval = __nanl (""); - __imag__ retval = __imag__ x; - } - else - { - __real__ retval = __nanl (""); - __imag__ retval = __nanl (""); - } + __real__ retval = __nanl (""); + __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nanl (""); } return retval; diff --git a/sysdeps/libm-ieee754/s_csinl.c b/sysdeps/libm-ieee754/s_csinl.c new file mode 100644 index 0000000..513c144 --- /dev/null +++ b/sysdeps/libm-ieee754/s_csinl.c @@ -0,0 +1,63 @@ +/* Complex sine function for long double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + + +__complex__ long double +__csinl (__complex__ long double x) +{ + __complex__ long double res; + + if (!isfinite (__real__ x) || isnan (__imag__ x)) + { + if (__real__ x == 0.0 || __imag__ x == 0.0) + { + __real__ res = __nanl (""); + __imag__ res = 0.0; + } + else if (__isinfl (__imag__ x)) + { + __real__ res = __nanl (""); + __imag__ res = __imag__ x; + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + __complex__ long double y; + + __real__ y = -__imag__ x; + __imag__ y = __real__ x; + + y = __csinhl (y); + + __real__ res = __imag__ y; + __imag__ res = -__real__ y; + } + + return res; +} +weak_alias (__csinl, csinl) diff --git a/sysdeps/libm-ieee754/s_csqrt.c b/sysdeps/libm-ieee754/s_csqrt.c new file mode 100644 index 0000000..c5c609b --- /dev/null +++ b/sysdeps/libm-ieee754/s_csqrt.c @@ -0,0 +1,111 @@ +/* Complex square root of double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ double +__csqrt (__complex__ double x) +{ + __complex__ double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VAL; + __imag__ res = __imag__ x; + } + else if (rcls == FP_INFINITE) + { + if (__real__ x < 0.0) + { + __real__ res = icls == FP_NAN ? __nan ("") : 0; + __imag__ res = __copysign (HUGE_VAL, __imag__ x); + } + else + { + __real__ res = __real__ x; + __imag__ res = (icls == FP_NAN + ? __nan ("") : __copysign (0.0, __imag__ x)); + } + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + if (icls == FP_ZERO) + { + if (__real__ x < 0.0) + { + __real__ res = 0.0; + __imag__ res = __copysign (__ieee754_sqrt (-__real__ x), + __imag__ x); + } + else + { + __real__ res = fabs (__ieee754_sqrt (__real__ x)); + __imag__ res = __copysign (0.0, __imag__ x); + } + } + else if (rcls == FP_ZERO) + { + double r = __ieee754_sqrt (0.5 * fabs (__imag__ x)); + + __real__ res = __copysign (r, __imag__ x); + __imag__ res = r; + } + else + { + __complex__ double q; + double t, r; + + if (fabs (__imag__ x) < 2.0e-4 * fabs (__real__ x)) + t = 0.25 * __imag__ x * (__imag__ x / __real__ x); + else + t = 0.5 * (__ieee754_hypot (__real__ x, __imag__ x) - __real__ x); + + r = __ieee754_sqrt (t); + + __real__ q = __imag__ x / (2.0 * r); + __imag__ q = r; + + /* Heron iteration in complex arithmetic. */ + res = 0.5 * (q + q / x); + } + } + + return res; +} +weak_alias (__csqrt, csqrt) +#ifdef NO_LONG_DOUBLE +strong_alias (__csqrt, __csqrtl) +weak_alias (__csqrt, csqrtl) +#endif diff --git a/sysdeps/libm-ieee754/s_csqrtf.c b/sysdeps/libm-ieee754/s_csqrtf.c new file mode 100644 index 0000000..2289045 --- /dev/null +++ b/sysdeps/libm-ieee754/s_csqrtf.c @@ -0,0 +1,107 @@ +/* Complex square root of float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ float +__csqrtf (__complex__ float x) +{ + __complex__ float res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VALF; + __imag__ res = __imag__ x; + } + else if (rcls == FP_INFINITE) + { + if (__real__ x < 0.0) + { + __real__ res = icls == FP_NAN ? __nanf ("") : 0; + __imag__ res = __copysignf (HUGE_VALF, __imag__ x); + } + else + { + __real__ res = __real__ x; + __imag__ res = (icls == FP_NAN + ? __nanf ("") : __copysignf (0.0, __imag__ x)); + } + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + if (icls == FP_ZERO) + { + if (__real__ x < 0.0) + { + __real__ res = 0.0; + __imag__ res = __copysignf (__ieee754_sqrtf (-__real__ x), + __imag__ x); + } + else + { + __real__ res = fabsf (__ieee754_sqrtf (__real__ x)); + __imag__ res = __copysignf (0.0, __imag__ x); + } + } + else if (rcls == FP_ZERO) + { + float r = __ieee754_sqrtf (0.5 * fabsf (__imag__ x)); + + __real__ res = __copysignf (r, __imag__ x); + __imag__ res = r; + } + else + { + __complex__ float q; + float t, r; + + if (fabsf (__imag__ x) < 2.0e-4 * fabsf (__real__ x)) + t = 0.25 * __imag__ x * (__imag__ x / __real__ x); + else + t = 0.5 * (__ieee754_hypotf (__real__ x, __imag__ x) - __real__ x); + + r = __ieee754_sqrtf (t); + + __real__ q = __imag__ x / (2.0 * r); + __imag__ q = r; + + /* Heron iteration in complex arithmetic. */ + res = 0.5 * (q + q / x); + } + } + + return res; +} +weak_alias (__csqrtf, csqrtf) diff --git a/sysdeps/libm-ieee754/s_csqrtl.c b/sysdeps/libm-ieee754/s_csqrtl.c new file mode 100644 index 0000000..3de7310 --- /dev/null +++ b/sysdeps/libm-ieee754/s_csqrtl.c @@ -0,0 +1,107 @@ +/* Complex square root of long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ long double +__csqrtl (__complex__ long double x) +{ + __complex__ long double res; + int rcls = fpclassify (__real__ x); + int icls = fpclassify (__imag__ x); + + if (rcls <= FP_INFINITE || icls <= FP_INFINITE) + { + if (icls == FP_INFINITE) + { + __real__ res = HUGE_VALL; + __imag__ res = __imag__ x; + } + else if (rcls == FP_INFINITE) + { + if (__real__ x < 0.0) + { + __real__ res = icls == FP_NAN ? __nanl ("") : 0; + __imag__ res = __copysignl (HUGE_VALL, __imag__ x); + } + else + { + __real__ res = __real__ x; + __imag__ res = (icls == FP_NAN + ? __nanl ("") : __copysignl (0.0, __imag__ x)); + } + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + if (icls == FP_ZERO) + { + if (__real__ x < 0.0) + { + __real__ res = 0.0; + __imag__ res = __copysignl (__ieee754_sqrtl (-__real__ x), + __imag__ x); + } + else + { + __real__ res = fabsl (__ieee754_sqrtl (__real__ x)); + __imag__ res = __copysignl (0.0, __imag__ x); + } + } + else if (rcls == FP_ZERO) + { + long double r = __ieee754_sqrtl (0.5 * fabsl (__imag__ x)); + + __real__ res = __copysignl (r, __imag__ x); + __imag__ res = r; + } + else + { + __complex__ long double q; + long double t, r; + + if (fabsl (__imag__ x) < 2.0e-4 * fabsl (__real__ x)) + t = 0.25 * __imag__ x * (__imag__ x / __real__ x); + else + t = 0.5 * (__ieee754_hypotl (__real__ x, __imag__ x) - __real__ x); + + r = __ieee754_sqrtl (t); + + __real__ q = __imag__ x / (2.0 * r); + __imag__ q = r; + + /* Heron iteration in complex arithmetic. */ + res = 0.5 * (q + q / x); + } + } + + return res; +} +weak_alias (__csqrtl, csqrtl) diff --git a/sysdeps/libm-ieee754/s_ctan.c b/sysdeps/libm-ieee754/s_ctan.c new file mode 100644 index 0000000..f448395 --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctan.c @@ -0,0 +1,64 @@ +/* Complex tangent function for double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ double +__ctan (__complex__ double x) +{ + __complex__ double res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinf (__imag__ x)) + { + __real__ res = __copysign (0.0, __real__ x); + __imag__ res = __copysign (1.0, __imag__ x); + } + else if (__real__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + double den = (__cos (2.0 * __real__ x) + + __ieee754_cosh (2.0 * __imag__ x)); + + __real__ res = __sin (2.0 * __real__ x) / den; + __imag__ res = __ieee754_sinh (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctan, ctan) +#ifdef NO_LONG_DOUBLE +strong_alias (__ctan, __ctanl) +weak_alias (__ctan, ctanl) +#endif diff --git a/sysdeps/libm-ieee754/s_ctanf.c b/sysdeps/libm-ieee754/s_ctanf.c new file mode 100644 index 0000000..99011fa --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctanf.c @@ -0,0 +1,60 @@ +/* Complex tangent function for float. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ float +__ctanf (__complex__ float x) +{ + __complex__ float res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinff (__imag__ x)) + { + __real__ res = __copysignf (0.0, __real__ x); + __imag__ res = __copysignf (1.0, __imag__ x); + } + else if (__real__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + float den = (__cosf (2.0 * __real__ x) + + __ieee754_coshf (2.0 * __imag__ x)); + + __real__ res = __sinf (2.0 * __real__ x) / den; + __imag__ res = __ieee754_sinhf (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctanf, ctanf) diff --git a/sysdeps/libm-ieee754/s_ctanh.c b/sysdeps/libm-ieee754/s_ctanh.c new file mode 100644 index 0000000..7c9b319 --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctanh.c @@ -0,0 +1,64 @@ +/* Complex hyperbole tangent for double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ double +__ctanh (__complex__ double x) +{ + __complex__ double res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinf (__real__ x)) + { + __real__ res = __copysign (1.0, __real__ x); + __imag__ res = __copysign (0.0, __imag__ x); + } + else if (__imag__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nan (""); + __imag__ res = __nan (""); + } + } + else + { + double den = (__ieee754_cosh (2.0 * __real__ x) + + __cos (2.0 * __imag__ x)); + + __real__ res = __ieee754_sinh (2.0 * __real__ x) / den; + __imag__ res = __sin (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctanh, ctanh) +#ifdef NO_LONG_DOUBLE +strong_alias (__ctanh, __ctanhl) +weak_alias (__ctanh, ctanhl) +#endif diff --git a/sysdeps/libm-ieee754/s_ctanhf.c b/sysdeps/libm-ieee754/s_ctanhf.c new file mode 100644 index 0000000..1bdbc0f --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctanhf.c @@ -0,0 +1,60 @@ +/* Complex hyperbole tangent for float. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ float +__ctanhf (__complex__ float x) +{ + __complex__ float res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinff (__real__ x)) + { + __real__ res = __copysignf (1.0, __real__ x); + __imag__ res = __copysignf (0.0, __imag__ x); + } + else if (__imag__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nanf (""); + __imag__ res = __nanf (""); + } + } + else + { + float den = (__ieee754_coshf (2.0 * __real__ x) + + __cosf (2.0 * __imag__ x)); + + __real__ res = __ieee754_sinhf (2.0 * __real__ x) / den; + __imag__ res = __sinf (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctanhf, ctanhf) diff --git a/sysdeps/libm-ieee754/s_ctanhl.c b/sysdeps/libm-ieee754/s_ctanhl.c new file mode 100644 index 0000000..b34aeb7 --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctanhl.c @@ -0,0 +1,60 @@ +/* Complex hyperbole tangent for long double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ long double +__ctanhl (__complex__ long double x) +{ + __complex__ long double res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinfl (__real__ x)) + { + __real__ res = __copysignl (1.0, __real__ x); + __imag__ res = __copysignl (0.0, __imag__ x); + } + else if (__imag__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + long double den = (__ieee754_coshl (2.0 * __real__ x) + + __cosl (2.0 * __imag__ x)); + + __real__ res = __ieee754_sinhl (2.0 * __real__ x) / den; + __imag__ res = __sinl (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctanhl, ctanhl) diff --git a/sysdeps/libm-ieee754/s_ctanl.c b/sysdeps/libm-ieee754/s_ctanl.c new file mode 100644 index 0000000..82f86fc --- /dev/null +++ b/sysdeps/libm-ieee754/s_ctanl.c @@ -0,0 +1,60 @@ +/* Complex tangent function for long double. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <complex.h> +#include <math.h> + +#include "math_private.h" + + +__complex__ long double +__ctanl (__complex__ long double x) +{ + __complex__ double res; + + if (!finite (__real__ x) || !finite (__imag__ x)) + { + if (__isinfl (__imag__ x)) + { + __real__ res = __copysignl (0.0, __real__ x); + __imag__ res = __copysignl (1.0, __imag__ x); + } + else if (__real__ x == 0.0) + { + res = x; + } + else + { + __real__ res = __nanl (""); + __imag__ res = __nanl (""); + } + } + else + { + long double den = (__cosl (2.0 * __real__ x) + + __ieee754_coshl (2.0 * __imag__ x)); + + __real__ res = __sinl (2.0 * __real__ x) / den; + __imag__ res = __ieee754_sinhl (2.0 * __imag__ x) / den; + } + + return res; +} +weak_alias (__ctanl, ctanl) diff --git a/sysdeps/libm-ieee754/s_floorl.c b/sysdeps/libm-ieee754/s_floorl.c index 8cd81c6..0eb0bec 100644 --- a/sysdeps/libm-ieee754/s_floorl.c +++ b/sysdeps/libm-ieee754/s_floorl.c @@ -48,7 +48,7 @@ static long double huge = 1.0e4930; GET_LDOUBLE_WORDS(se,i0,i1,x); sx = (se>>15)&1; j0 = (se&0x7fff)-0x3fff; - if(j0<32) { + if(j0<31) { if(j0<0) { /* raise inexact if x != 0 */ if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */ if(sx==0) {se=0;i0=i1=0;} @@ -56,26 +56,26 @@ static long double huge = 1.0e4930; { se=0xbfff;i0;i1=0;} } } else { - i = (0xffffffff)>>j0; + i = (0x7fffffff)>>j0; if(((i0&i)|i1)==0) return x; /* x is integral */ if(huge+x>0.0) { /* raise inexact flag */ if(sx) { - if (j0>0) i0 += (0x80000000)>>(j0-1); + if (j0>0) i0 += (0x80000000)>>j0; else ++se; i0 &= (~i); i1=0; } } - } else if (j0>63) { + } else if (j0>62) { if(j0==0x4000) return x+x; /* inf or NaN */ else return x; /* x is integral */ } else { - i = ((u_int32_t)(0xffffffff))>>(j0-32); + i = ((u_int32_t)(0xffffffff))>>(j0-31); if((i1&i)==0) return x; /* x is integral */ if(huge+x>0.0) { /* raise inexact flag */ if(sx) { - if(j0==32) i0+=1; + if(j0==31) i0+=1; else { - j = i1+(1<<(64-j0)); + j = i1+(1<<(63-j0)); if(j<i1) i0 +=1 ; /* got a carry */ i1=j; } diff --git a/sysdeps/libm-ieee754/s_nearbyint.c b/sysdeps/libm-ieee754/s_nearbyint.c new file mode 100644 index 0000000..32f5bf9 --- /dev/null +++ b/sysdeps/libm-ieee754/s_nearbyint.c @@ -0,0 +1,98 @@ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ +/* + * ==================================================== + * 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_rint.c,v 1.8 1995/05/10 20:48:04 jtc Exp $"; +#endif + +/* + * rint(x) + * Return x rounded to integral value according to the prevailing + * rounding mode. + * Method: + * Using floating addition. + * Exception: + * Inexact flag raised if x not equal to rint(x). + */ + +#include <fenv.h> +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +TWO52[2]={ + 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ + -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ +}; + +#ifdef __STDC__ + double __nearbyint(double x) +#else + double __nearbyint(x) + double x; +#endif +{ + fenv_t env; + int32_t i0,j0,sx; + u_int32_t i,i1; + double w,t; + EXTRACT_WORDS(i0,i1,x); + sx = (i0>>31)&1; + 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); + feholdexcept (&env); + w = TWO52[sx]+x; + t = w-TWO52[sx]; + fesetenv (&env); + 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 = ((u_int32_t)(0xffffffff))>>(j0-20); + if((i1&i)==0) return x; /* x is integral */ + i>>=1; + if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20)); + } + INSERT_WORDS(x,i0,i1); + feholdexcept (&env); + w = TWO52[sx]+x; + t = w-TWO52[sx]; + fesetenv (&env); + return t; +} +weak_alias (__nearbyint, nearbyint) +#ifdef NO_LONG_DOUBLE +strong_alias (__nearbyint, __nearbyintl) +weak_alias (__nearbyint, nearbyintl) +#endif diff --git a/sysdeps/libm-ieee754/s_nearbyintf.c b/sysdeps/libm-ieee754/s_nearbyintf.c new file mode 100644 index 0000000..dc33fa5 --- /dev/null +++ b/sysdeps/libm-ieee754/s_nearbyintf.c @@ -0,0 +1,80 @@ +/* s_rintf.c -- float version of s_rint.c. + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ + +/* + * ==================================================== + * 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_rintf.c,v 1.4 1995/05/10 20:48:06 jtc Exp $"; +#endif + +#include <fenv.h> +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +TWO23[2]={ + 8.3886080000e+06, /* 0x4b000000 */ + -8.3886080000e+06, /* 0xcb000000 */ +}; + +#ifdef __STDC__ + float __rintf(float x) +#else + float __rintf(x) + float x; +#endif +{ + fenv_t env; + int32_t i0,j0,sx; + u_int32_t 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); + feholdexcept (&env); + w = TWO23[sx]+x; + t = w-TWO23[sx]; + fesetenv (&env); + 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); + feholdexcept (&env); + w = TWO23[sx]+x; + t = w-TWO23[sx]; + fesetenv (&env); + return t; +} +weak_alias (__rintf, rintf) diff --git a/sysdeps/libm-ieee754/s_nearbyintl.c b/sysdeps/libm-ieee754/s_nearbyintl.c new file mode 100644 index 0000000..b6a8654 --- /dev/null +++ b/sysdeps/libm-ieee754/s_nearbyintl.c @@ -0,0 +1,104 @@ +/* s_rintl.c -- long double version of s_rint.c. + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + */ +/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */ + +/* + * ==================================================== + * 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: $"; +#endif + +/* + * rintl(x) + * Return x rounded to integral value according to the prevailing + * rounding mode. + * Method: + * Using floating addition. + * Exception: + * Inexact flag raised if x not equal to rintl(x). + */ + +#include <fenv.h> +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const long double +#else +static long double +#endif +TWO63[2]={ + 9.223372036854775808000000e+18, /* 0x403E, 0x00000000, 0x00000000 */ + -9.223372036854775808000000e+18 /* 0xC03E, 0x00000000, 0x00000000 */ +}; + +#ifdef __STDC__ + long double __rintl(long double x) +#else + long double __rintl(x) + long double x; +#endif +{ + fenv_t env; + int32_t se,j0,sx; + u_int32_t i,i0,i1; + long double w,t; + GET_LDOUBLE_WORDS(se,i0,i1,x); + sx = (se>>15)&1; + j0 = (se&0x7fff)-0x3fff; + if(j0<31) { + if(j0<0) { + if(((se&0x7fff)|i0|i1)==0) return x; + i1 |= i0; + i0 &= 0xe0000000; + i0 |= (i1|-i1)&0x80000000; + SET_LDOUBLE_MSW(x,i0); + feholdexcept (&env); + w = TWO63[sx]+x; + t = w-TWO63[sx]; + fesetenv (&env); + GET_LDOUBLE_EXP(i0,t); + SET_LDOUBLE_EXP(t,(i0&0x7fff)|(sx<<15)); + return t; + } else { + i = (0x7fffffff)>>j0; + if(((i0&i)|i1)==0) return x; /* x is integral */ + i>>=1; + if(((i0&i)|i1)!=0) { + if(j0==31) i1 = 0x40000000; else + i0 = (i0&(~i))|((0x20000000)>>j0); + /* Shouldn't this be + if (j0 >= 30) i1 = 0x80000000 >> (j0 - 30); + i0 = (i0&(~i))|((0x20000000)>>j0); + If yes, this should be correct in s_rint and + s_rintf, too. -- drepper@cygnus.com */ + } + } + } else if (j0>62) { + if(j0==0x4000) return x+x; /* inf or NaN */ + else return x; /* x is integral */ + } else { + i = ((u_int32_t)(0xffffffff))>>(j0-31); + if((i1&i)==0) return x; /* x is integral */ + i>>=1; + if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-31)); + } + SET_LDOUBLE_WORDS(x,se,i0,i1); + feholdexcept (&env); + w = TWO63[sx]+x; + t = w-TWO63[sx]; + fesetenv (&env); + return t; +} +weak_alias (__rintl, rintl) diff --git a/sysdeps/libm-ieee754/s_remquo.c b/sysdeps/libm-ieee754/s_remquo.c index 53f26c6..4103155 100644 --- a/sysdeps/libm-ieee754/s_remquo.c +++ b/sysdeps/libm-ieee754/s_remquo.c @@ -49,12 +49,7 @@ __remquo (double x, double y, int *quo) return (x * y) / (x * y); if (hy <= 0x7fbfffff) - { - x = __ieee754_fmod (x, 8 * y); /* now x < 8y */ - - if (fabs (x) >= 4 * fabs (y)) - cquo += 4; - } + x = __ieee754_fmod (x, 8 * y); /* now x < 8y */ if (((hx - hy) | (lx - ly)) == 0) { @@ -66,14 +61,19 @@ __remquo (double x, double y, int *quo) y = fabs (y); cquo = 0; - if (x >= 2 * y) + if (x >= 4 * y) { x -= 4 * y; + cquo += 4; + } + if (x >= 2 * y) + { + x -= 2 * y; cquo += 2; } if (x >= y) { - x -= 2 * y; + x -= y; ++cquo; } @@ -83,24 +83,30 @@ __remquo (double x, double y, int *quo) { x -= y; if (x + x >= y) - x -= y; + { + x -= y; + ++cquo; + } } } else { double y_half = 0.5 * y; - if(x > y_half) + if (x > y_half) { x -= y; if (x >= y_half) - x -= y; + { + x -= y; + ++cquo; + } } } *quo = qs ? -cquo : cquo; - GET_HIGH_WORD (hx, x); - SET_HIGH_WORD (x, hx ^ sx); + if (sx) + x = -x; return x; } weak_alias (__remquo, remquo) diff --git a/sysdeps/libm-ieee754/s_remquof.c b/sysdeps/libm-ieee754/s_remquof.c index 0968fe6..6fa02e4 100644 --- a/sysdeps/libm-ieee754/s_remquof.c +++ b/sysdeps/libm-ieee754/s_remquof.c @@ -48,12 +48,7 @@ __remquof (float x, float y, int *quo) return (x * y) / (x * y); if (hy <= 0x7dffffff) - { - x = __ieee754_fmodf (x, 8 * y); /* now x < 8y */ - - if (fabs (x) >= 4 * fabs (y)) - cquo += 4; - } + x = __ieee754_fmodf (x, 8 * y); /* now x < 8y */ if ((hx - hy) == 0) { @@ -65,14 +60,19 @@ __remquof (float x, float y, int *quo) y = fabsf (y); cquo = 0; - if (x >= 2 * y) + if (x >= 4 * y) { x -= 4 * y; + cquo += 4; + } + if (x >= 2 * y) + { + x -= 2 * y; cquo += 2; } if (x >= y) { - x -= 2 * y; + x -= y; ++cquo; } @@ -82,24 +82,30 @@ __remquof (float x, float y, int *quo) { x -= y; if (x + x >= y) - x -= y; + { + x -= y; + ++cquo; + } } } else { float y_half = 0.5 * y; - if(x > y_half) + if (x > y_half) { x -= y; if (x >= y_half) - x -= y; + { + x -= y; + ++cquo; + } } } *quo = qs ? -cquo : cquo; - GET_FLOAT_WORD (hx, x); - SET_FLOAT_WORD (x, hx ^ sx); + if (sx) + x = -x; return x; } weak_alias (__remquof, remquof) diff --git a/sysdeps/libm-ieee754/s_remquol.c b/sysdeps/libm-ieee754/s_remquol.c index 9515b21..9ef4249 100644 --- a/sysdeps/libm-ieee754/s_remquol.c +++ b/sysdeps/libm-ieee754/s_remquol.c @@ -23,15 +23,15 @@ #include "math_private.h" -static const double zero = 0.0; +static const long double zero = 0.0; long double -__remquol (long double x, long double y, int *quo) +__remquol (long double x, long double p, int *quo) { int32_t ex,ep,hx,hp; u_int32_t sx,lx,lp; - int cquo; + int cquo,qs; GET_LDOUBLE_WORDS (ex, hx, lx, x); GET_LDOUBLE_WORDS (ep, hp, lp, p); @@ -49,12 +49,7 @@ __remquol (long double x, long double y, int *quo) return (x * p) / (x * p); if (ep <= 0x7ffb) - { - x = __ieee754_fmodl (x, 8 * p); /* now x < 8p */ - - if (fabsl (x) >= 4 * fabsl (p)) - cquo += 4; - } + x = __ieee754_fmodl (x, 8 * p); /* now x < 8p */ if (((ex - ep) | (hx - hp) | (lx - lp)) == 0) { @@ -66,14 +61,19 @@ __remquol (long double x, long double y, int *quo) p = fabsl (p); cquo = 0; - if (x >= 2 * p) + if (x >= 4 * p) { x -= 4 * p; + cquo += 4; + } + if (x >= 2 * p) + { + x -= 2 * p; cquo += 2; } if (x >= p) { - x -= 2 * p; + x -= p; ++cquo; } @@ -83,24 +83,30 @@ __remquol (long double x, long double y, int *quo) { x -= p; if (x + x >= p) - x -= p; + { + x -= p; + ++cquo; + } } } else { long double p_half = 0.5 * p; - if(x > p_half) + if (x > p_half) { x -= p; if (x >= p_half) - x -= p; + { + x -= p; + ++cquo; + } } } *quo = qs ? -cquo : cquo; - GET_LDOUBLE_EXP (ex, x); - SET_LDOUBLE_EXP (x, ex ^ sx); + if (sx) + x = -x; return x; } weak_alias (__remquol, remquol) diff --git a/sysdeps/libm-ieee754/s_round.c b/sysdeps/libm-ieee754/s_round.c new file mode 100644 index 0000000..fdb17f8 --- /dev/null +++ b/sysdeps/libm-ieee754/s_round.c @@ -0,0 +1,97 @@ +/* Round double to integer away from zero. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <math.h> + +#include "math_private.h" + + +static const double huge = 1.0e300; + + +double +__round (double x) +{ + int32_t i0, j0; + u_int32_t i1; + + EXTRACT_WORDS (i0, i1, x); + j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + if (j0 < 20) + { + if (j0 < 0) + { + if (huge + x > 0.0) + { + i0 &= 0x80000000; + if (j0 == -1) + i0 |= 0x3ff00000; + i1 = 0; + } + } + else + { + u_int32_t i = 0x000fffff >> j0; + if (((i0 & i) | i1) == 0) + /* X is integral. */ + return x; + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + i0 += 0x00080000 >> j0; + i0 &= ~i; + i1 = 0; + } + } + } + else if (j0 > 51) + { + if (j0 == 0x400) + /* Inf or NaN. */ + return x + x; + else + return x; + } + else + { + u_int32_t i = 0xffffffff >> (j0 - 20); + if ((i1 & i) == 0) + /* X is integral. */ + return x; + + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + u_int32_t j = i1 + (1 << (51 - j0)); + if (j < i1) + i0 += 1; + i1 = j; + } + i1 &= ~i; + } + + INSERT_WORDS (x, i0, i1); + return x; +} +weak_alias (__round, round) +#ifdef NO_LONG_DOUBLE +strong_alias (__round, __roundl) +weak_alias (__round, roundl) +#endif diff --git a/sysdeps/libm-ieee754/s_roundf.c b/sysdeps/libm-ieee754/s_roundf.c new file mode 100644 index 0000000..5dc0e36 --- /dev/null +++ b/sysdeps/libm-ieee754/s_roundf.c @@ -0,0 +1,73 @@ +/* Round float to integer away from zero. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <math.h> + +#include "math_private.h" + + +static const float huge = 1.0e30; + + +float +__roundf (float x) +{ + int32_t i0, j0; + + GET_FLOAT_WORD (i0, x); + j0 = ((i0 >> 23) & 0xff) - 0x7f; + if (j0 < 23) + { + if (j0 < 0) + { + if (huge + x > 0.0F) + { + i0 &= 0x80000000; + if (j0 == -1) + i0 |= 0x3f800000; + } + } + else + { + u_int32_t i = 0x007fffff >> j0; + if ((i0 & i) == 0) + /* X is integral. */ + return x; + if (huge + x > 0.0F) + { + /* Raise inexact if x != 0. */ + i0 += 0x00400000 >> j0; + i0 &= ~i; + } + } + } + else + { + if (j0 == 0x80) + /* Inf or NaN. */ + return x + x; + else + return x; + } + + SET_FLOAT_WORD (x, i0); + return x; +} +weak_alias (__roundf, roundf) diff --git a/sysdeps/libm-ieee754/s_roundl.c b/sysdeps/libm-ieee754/s_roundl.c new file mode 100644 index 0000000..db87154 --- /dev/null +++ b/sysdeps/libm-ieee754/s_roundl.c @@ -0,0 +1,100 @@ +/* Round long double to integer away from zero. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <math.h> + +#include "math_private.h" + + +static const long double huge = 1.0e4930; + + +long double +__roundl (long double x) +{ + int32_t j0; + u_int32_t se, i1, i0; + + GET_LDOUBLE_WORDS (se, i0, i1, x); + j0 = (se & 0x7fff) - 0x3fff; + if (j0 < 31) + { + if (j0 < 0) + { + if (huge + x > 0.0) + { + se &= 0x8000; + if (j0 == -1) + se |= 0x3fff; + i0 = i1 = 0; + } + } + else + { + u_int32_t i = 0x7fffffff >> j0; + if (((i0 & i) | i1) == 0) + /* X is integral. */ + return x; + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + u_int32_t j = i0 + 0x40000000 >> j0; + if (j < i0) + se += 1; + i0 = (j & ~i) | 0x80000000; + i1 = 0; + } + } + } + else if (j0 > 62) + { + if (j0 == 0x4000) + /* Inf or NaN. */ + return x + x; + else + return x; + } + else + { + u_int32_t i = 0xffffffff >> (j0 - 31); + if ((i1 & i) == 0) + /* X is integral. */ + return x; + + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + u_int32_t j = i1 + (1 << (62 - j0)); + if (j < i1) + { + u_int32_t k = i0 + 1; + if (k < i0) + se += 1; + i0 = k; + } + i1 = j; + } + i1 &= ~i; + } + + SET_LDOUBLE_WORDS (x, se, i0, i1); + return x; +} +weak_alias (__roundl, roundl) diff --git a/sysdeps/libm-ieee754/s_roundtol.c b/sysdeps/libm-ieee754/s_roundtol.c new file mode 100644 index 0000000..6649369 --- /dev/null +++ b/sysdeps/libm-ieee754/s_roundtol.c @@ -0,0 +1,177 @@ +/* Round long double value to long int. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <math.h> + +#include "math_private.h" + + +#ifdef NO_LONG_DOUBLE +/* The `long double' is in fact the IEEE `double' type. */ + +long int +__roundtol (long double x) +{ + int32_t j0; + u_int32_t i1, i0; + long int result; + + EXTRACT_WORDS (i0, i1, x); + j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + if (j0 < 20) + { + if (j0 < 0) + result = j0 < -1 ? 0 : ((i0 & 0x80000000) ? -1 : 1); + else + { + u_int32_t i = 0xfffff >> j0; + if (((i0 & i) | i1) == 0) + result = (long int) ((i0 & 0xfffff) | 0x100000) >> j0; + else + { + /* X is not integral. */ + u_int32_t j = i0 + (0x80000 >> j0); + if (j < i0) + result = (long int) 0x80000 >> (20 - j0); + else + result = (j | 0x100000) >> (20 - j0); + } + } + } + else if (j0 >= 8 * sizeof (long int) || j0 > 51) + { + /* The number is too large. It is left implementation defined + what happens. */ + result = (long int) x; + } + else + { + i = ((u_int32_t) (0xffffffff)) >> (j0 - 20); + if ((i1 & i) != 0) + { + /* x is not integral. */ + u_int32_t j = i1 + (0x80000000 >> (j0 - 20)); + if (j < i1) + { + j = i0 + 1; + if ((j & 0xfffff) == 0) + { + if (sizeof (long int) <= 4) + /* Overflow. */ + result = (long int) x; + else + result = 1l << (j0 + 1); + } + else + result = (long int) ((i0 & 0xfffff) | 0x100000) << (j0 - 31); + } + else + { + result = (long int) ((i0 & 0xfffff) | 0x100000) << (j0 - 31); + if (sizeof (long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + else + { + result = (long int) ((i0 & 0xfffff) | 0x100000) << (j0 - 31); + if (sizeof (long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + + return i0 & 0x80000000 ? -result : result; +} +#else +long int +__roundtol (long double x) +{ + int32_t j0; + u_int32_t se, i1, i0; + long int result; + + GET_LDOUBLE_WORDS (se, i0, i1, x); + j0 = (se & 0x7fff) - 0x3fff; + if (j0 < 31) + { + if (j0 < 0) + result = j0 < -1 ? 0 : 1; + else + { + u_int32_t i = 0x7fffffff >> j0; + if (((i0 & i) | i1) == 0) + result = (long int) i0 >> j0; + else + { + /* X is not integral. */ + u_int32_t j = i0 + (0x40000000 >> j0); + if (j < i0) + result = 0x80000000l >> (30 - j0); + else + result = j >> (31 - j0); + } + } + } + else if ((unsigned int) j0 >= 8 * sizeof (long int) || j0 > 62) + { + /* The number is too large. It is left implementation defined + what happens. */ + result = (long int) x; + } + else + { + u_int32_t i = ((u_int32_t) (0xffffffff)) >> (j0 - 31); + if ((i1 & i) != 0) + { + /* x is not integral. */ + u_int32_t j = i1 + (0x80000000 >> (j0 - 31)); + if (j < i1) + { + j = i0 + 1; + if (j == 0) + { + if (sizeof (long int) <= 4) + /* Overflow. */ + result = (long int) x; + else + result = 1l << (j0 + 1); + } + else + result = (long int) i0 << (j0 - 31); + } + else + { + result = (long int) i0 << (j0 - 31); + if (sizeof (long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + else + { + result = (long int) i0 << (j0 - 31); + if (sizeof (long int) > 4 && j0 > 31) + result |= i1 >> (63 - j0); + } + } + + return se & 0x8000 ? -result : result; +} +#endif +weak_alias (__roundtol, roundtol) diff --git a/sysdeps/libm-ieee754/s_roundtoll.c b/sysdeps/libm-ieee754/s_roundtoll.c new file mode 100644 index 0000000..8d99130 --- /dev/null +++ b/sysdeps/libm-ieee754/s_roundtoll.c @@ -0,0 +1,179 @@ +/* Round long double value to long long int. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <math.h> + +#include "math_private.h" + + +#ifdef NO_LONG_DOUBLE +/* The `long double' is in fact the IEEE `double' type. */ + +long long int +__roundtoll (long double x) +{ + int32_t j0; + u_int32_t i1, i0; + long long int result; + + EXTRACT_WORDS (i0, i1, x); + j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + if (j0 < 20) + { + if (j0 < 0) + result = j0 < -1 ? 0 : ((i0 & 0x80000000) ? -1 : 1); + else + { + u_int32_t i = 0xfffff >> j0; + if (((i0 & i) | i1) == 0) + result = (long long int) ((i0 & 0xfffff) | 0x100000) >> j0; + else + { + /* X is not integral. */ + u_int32_t j = i0 + (0x80000 >> j0); + if (j < i0) + result = (long long int) 0x80000 >> (20 - j0); + else + result = (j | 0x100000) >> (20 - j0); + } + } + } + else if (j0 >= 8 * sizeof (long long int) || j0 > 51) + { + /* The number is too large. It is left implementation defined + what happens. */ + result = (long long int) x; + } + else + { + i = ((u_int32_t) (0xffffffff)) >> (j0 - 20); + if ((i1 & i) != 0) + { + /* x is not integral. */ + u_int32_t j = i1 + (0x80000000 >> (j0 - 20)); + if (j < i1) + { + j = i0 + 1; + if ((j & 0xfffff) == 0) + { + if (sizeof (long long int) <= 4) + /* Overflow. */ + result = (long long int) x; + else + result = 1ll << (j0 + 1); + } + else + result = ((long long int) ((i0 & 0xfffff) | 0x100000) + << (j0 - 31)); + } + else + { + result = ((long long int) ((i0 & 0xfffff) | 0x100000) + << (j0 - 31)); + if (sizeof (long long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + else + { + result = (long long int) ((i0 & 0xfffff) | 0x100000) << (j0 - 31); + if (sizeof (long long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + + return i0 & 0x80000000 ? -result : result; +} +#else +long long int +__roundtoll (long double x) +{ + int32_t j0; + u_int32_t se, i1, i0; + long long int result; + + GET_LDOUBLE_WORDS (se, i0, i1, x); + j0 = (se & 0x7fff) - 0x3fff; + if (j0 < 31) + { + if (j0 < 0) + result = j0 < -1 ? 0 : 1; + else + { + u_int32_t i = 0x7fffffff >> j0; + if (((i0 & i) | i1) == 0) + result = (long long int) i0 >> j0; + else + { + /* X is not integral. */ + u_int32_t j = i0 + (0x40000000 >> j0); + if (j < i0) + result = 0x80000000l >> (30 - j0); + else + result = j >> (31 - j0); + } + } + } + else if ((unsigned int) j0 >= 8 * sizeof (long long int) || j0 > 62) + { + /* The number is too large. It is left implementation defined + what happens. */ + result = (long long int) x; + } + else + { + u_int32_t i = ((u_int32_t) (0xffffffff)) >> (j0 - 31); + if ((i1 & i) != 0) + { + /* x is not integral. */ + u_int32_t j = i1 + (0x80000000 >> (j0 - 31)); + if (j < i1) + { + j = i0 + 1; + if (j == 0) + { + if (sizeof (long long int) <= 4) + /* Overflow. */ + result = (long long int) x; + else + result = 1ll << (j0 + 1); + } + else + result = (long long int) i0 << (j0 - 31); + } + else + { + result = (long long int) i0 << (j0 - 31); + if (sizeof (long long int) > 4 && j0 > 31) + result |= j >> (63 - j0); + } + } + else + { + result = (long long int) i0 << (j0 - 31); + if (sizeof (long long int) > 4 && j0 > 31) + result |= i1 >> (63 - j0); + } + } + + return se & 0x8000 ? -result : result; +} +#endif +weak_alias (__roundtoll, roundtoll) diff --git a/sysdeps/m68k/fpu/__math.h b/sysdeps/m68k/fpu/__math.h index 9b52b32..68a6d90 100644 --- a/sysdeps/m68k/fpu/__math.h +++ b/sysdeps/m68k/fpu/__math.h @@ -282,6 +282,13 @@ __inline_functions (float,f) __inline_functions (long double,l) #undef __inline_functions +__m81_defun (long int, __rinttol, (long double __x)) +{ + long int __result; + __asm ("fmove%.l %1, %0" : "=dm" (__result) : "f" (__x)); + return __result; +} + #if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ /* Define inline versions of the user visible functions. */ @@ -349,6 +356,7 @@ __inline_forward_c(int,ilogbl, (long double __value), (__value)) #endif #ifdef __USE_ISOC9X __inline_forward_c(long double,nearbyintl, (long double __value), (__value)) +__inline_forward_c(long int,rinttol, (long double __value), (__value)) #endif #endif /* Use misc or ISO C9X */ diff --git a/sysdeps/m68k/fpu/s_ccosh.c b/sysdeps/m68k/fpu/s_ccosh.c new file mode 100644 index 0000000..439eae1 --- /dev/null +++ b/sysdeps/m68k/fpu/s_ccosh.c @@ -0,0 +1,119 @@ +/* Complex cosine hyperbole function. m68k fpu version + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define __LIBC_M81_MATH_INLINES +#include <complex.h> +#include <math.h> + +#ifndef SUFF +#define SUFF +#endif +#ifndef huge_val +#define huge_val HUGE_VAL +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__ccosh) (__complex__ float_type x) +{ + __complex__ float_type retval; + + __real__ x = s(fabs) (__real__ x); + + if (m81(__finite) (__real__ x)) + { + if (m81(__finite) (__imag__ x)) + { + float_type cosh_val; + float_type sin_ix, cos_ix; + + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) + : "f" (__imag__ x)); + cosh_val = m81(__ieee754_cosh) (__real__ x); + __real__ retval = cos_ix * cosh_val; + __imag__ retval = sin_ix * cosh_val; + } + else if (__real__ x == 0) + { + __imag__ retval = 0.0; + __real__ retval = huge_val - huge_val; + } + else + __real__ retval = __imag__ retval = huge_val - huge_val; + } + else if (m81(__isinf) (__real__ x)) + { + if (__imag__ x == 0) + { + __real__ retval = huge_val; + __imag__ retval = __imag__ x; + } + else if (m81(__finite) (__imag__ x)) + { + float_type remainder, pi_2; + int quadrant; + __real__ retval = __imag__ retval = huge_val; + + __asm ("fmovecr %#0,%0\n\tfscale%.w %#-1,%0" : "=f" (pi_2)); + __asm ("fmod%.x %2,%0\n\tfmove%.l %/fpsr,%1" + : "=f" (remainder), "=dm" (quadrant) + : "f" (pi_2), "0" (__imag__ x)); + quadrant = (quadrant >> 16) & 0x83; + if (quadrant & 0x80) + quadrant ^= 0x83; + switch (quadrant) + { + default: + break; + case 1: + __real__ retval = -__real__ retval; + break; + case 2: + __real__ retval = -__real__ retval; + case 3: + __imag__ retval = -__imag__ retval; + break; + } + } + else + { + /* The subtraction raises the invalid exception. */ + __real__ retval = huge_val; + __imag__ retval = huge_val - huge_val; + } + } + else if (__imag__ x == 0) + { + __real__ retval = 0.0/0.0; + __imag__ retval = __imag__ x; + } + else + __real__ retval = __imag__ retval = 0.0/0.0; + + return retval; +} +#define weak_aliasx(a,b) weak_alias(a,b) +weak_aliasx (s(__ccosh), s(ccosh)) diff --git a/sysdeps/m68k/fpu/s_ccoshf.c b/sysdeps/m68k/fpu/s_ccoshf.c new file mode 100644 index 0000000..7d07668 --- /dev/null +++ b/sysdeps/m68k/fpu/s_ccoshf.c @@ -0,0 +1,4 @@ +#define SUFF f +#define float_type float +#define huge_val HUGE_VALF +#include <s_ccosh.c> diff --git a/sysdeps/m68k/fpu/s_ccoshl.c b/sysdeps/m68k/fpu/s_ccoshl.c new file mode 100644 index 0000000..6f1d1e5 --- /dev/null +++ b/sysdeps/m68k/fpu/s_ccoshl.c @@ -0,0 +1,4 @@ +#define SUFF l +#define float_type long double +#define huge_val HUGE_VALL +#include <s_ccosh.c> diff --git a/sysdeps/m68k/fpu/s_cexp.c b/sysdeps/m68k/fpu/s_cexp.c index d5c7645..4846ec1 100644 --- a/sysdeps/m68k/fpu/s_cexp.c +++ b/sysdeps/m68k/fpu/s_cexp.c @@ -40,18 +40,24 @@ __complex__ float_type s(__cexp) (__complex__ float_type x) { __complex__ float_type retval; - float_type sin_ix, cos_ix; if (m81(__finite) (__real__ x)) { if (m81(__finite) (__imag__ x)) { - float_type exp_val = s(__exp) (__real__ x); + float_type exp_val = m81(__ieee754_exp) (__real__ x); - __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) - : "f" (__imag__ x)); - __real__ retval = exp_val * cos_ix; - __imag__ retval = exp_val * sin_ix; + __real__ retval = __imag__ retval = exp_val; + if (m81(__finite) (exp_val)) + { + float_type sin_ix, cos_ix; + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) + : "f" (__imag__ x)); + __real__ retval *= cos_ix; + __imag__ retval *= sin_ix; + } + else + goto fix_sign; } else /* If the imaginary part is +-inf or NaN and the real part is @@ -62,16 +68,41 @@ s(__cexp) (__complex__ float_type x) { if (m81(__finite) (__imag__ x)) { - if (m81(__signbit) (__real__ x) == 0 && __imag__ x == 0.0) - retval = huge_val; + float_type value = m81(__signbit) (__real__ x) ? 0.0 : huge_val; + + if (__imag__ x == 0.0) + { + __real__ retval = value; + __imag__ retval = __imag__ x; + } else { - float_type value = m81(__signbit) (__real__ x) ? 0.0 : huge_val; + float_type remainder, pi_2; + int quadrant; + __real__ retval = value; + __imag__ retval = value; - __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) - : "f" (__imag__ x)); - __real__ retval = value * cos_ix; - __imag__ retval = value * sin_ix; + fix_sign: + __asm ("fmovecr %#0,%0\n\tfscale%.w %#-1,%0" : "=f" (pi_2)); + __asm ("fmod%.x %2,%0\n\tfmove%.l %/fpsr,%1" + : "=f" (remainder), "=dm" (quadrant) + : "f" (pi_2), "0" (__imag__ x)); + quadrant = (quadrant >> 16) & 0x83; + if (quadrant & 0x80) + quadrant ^= 0x83; + switch (quadrant) + { + default: + break; + case 1: + __real__ retval = -__real__ retval; + break; + case 2: + __real__ retval = -__real__ retval; + case 3: + __imag__ retval = -__imag__ retval; + break; + } } } else if (m81(__signbit) (__real__ x) == 0) @@ -80,7 +111,10 @@ s(__cexp) (__complex__ float_type x) __imag__ retval = 0.0/0.0; } else - retval = 0.0; + { + __real__ retval = 0.0; + __imag__ retval = s(__copysign) (0.0, __imag__ x); + } } else /* If the real part is NaN the result is NaN + iNaN. */ diff --git a/sysdeps/m68k/fpu/s_csinh.c b/sysdeps/m68k/fpu/s_csinh.c new file mode 100644 index 0000000..c409ed0 --- /dev/null +++ b/sysdeps/m68k/fpu/s_csinh.c @@ -0,0 +1,128 @@ +/* Complex sine hyperbole function. m68k fpu version + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define __LIBC_M81_MATH_INLINES +#include <complex.h> +#include <math.h> + +#ifndef SUFF +#define SUFF +#endif +#ifndef huge_val +#define huge_val HUGE_VAL +#endif +#ifndef float_type +#define float_type double +#endif + +#define CONCATX(a,b) __CONCAT(a,b) +#define s(name) CONCATX(name,SUFF) +#define m81(func) __m81_u(s(func)) + +__complex__ float_type +s(__csinh) (__complex__ float_type x) +{ + __complex__ float_type retval; + int negate = m81(__signbit) (__real__ x); + + __real__ x = s(fabs) (__real__ x); + + if (m81(__finite) (__real__ x)) + { + if (m81(__finite) (__imag__ x)) + { + float_type sinh_val; + float_type sin_ix, cos_ix; + + __asm ("fsincos%.x %2,%1:%0" : "=f" (sin_ix), "=f" (cos_ix) + : "f" (__imag__ x)); + sinh_val = m81(__ieee754_sinh) (__real__ x); + __real__ retval = cos_ix * sinh_val; + __imag__ retval = sin_ix * sinh_val; + + if (negate) + __real__ retval = -__real__ retval; + } + else if (__real__ x == 0) + { + __real__ retval = 0.0; + __imag__ retval = 0.0/0.0; + + if (negate) + __real__ retval = -__real__ retval; + } + else + __real__ retval = __imag__ retval = 0.0/0.0; + } + else if (m81(__isinf) (__real__ x)) + { + if (__imag__ x == 0.0) + { + __real__ retval = negate ? -huge_val : huge_val; + __imag__ retval = __imag__ x; + } + else if (m81(__finite) (__imag__ x)) + { + float_type remainder, pi_2; + int quadrant; + __real__ retval = __imag__ retval = huge_val; + + __asm ("fmovecr %#0,%0\n\tfscale%.w %#-1,%0" : "=f" (pi_2)); + __asm ("fmod%.x %2,%0\n\tfmove%.l %/fpsr,%1" + : "=f" (remainder), "=dm" (quadrant) + : "f" (pi_2), "0" (__imag__ x)); + quadrant = (quadrant >> 16) & 0x83; + if (quadrant & 0x80) + quadrant ^= 0x83; + if (negate) + quadrant ^= 1; + switch (quadrant) + { + default: + break; + case 1: + __real__ retval = -__real__ retval; + break; + case 2: + __real__ retval = -__real__ retval; + case 3: + __imag__ retval = -__imag__ retval; + break; + } + } + else + { + /* The subtraction raises the invalid exception. */ + __real__ retval = huge_val; + __imag__ retval = huge_val - huge_val; + } + } + else if (__imag__ x == 0.0) + { + __real__ retval = 0.0/0.0; + __imag__ retval = __imag__ x; + } + else + __real__ retval = __imag__ retval = 0.0/0.0; + + return retval; +} +#define weak_aliasx(a,b) weak_alias(a,b) +weak_aliasx (s(__csinh), s(csinh)) diff --git a/sysdeps/m68k/fpu/s_csinhf.c b/sysdeps/m68k/fpu/s_csinhf.c new file mode 100644 index 0000000..42c114b --- /dev/null +++ b/sysdeps/m68k/fpu/s_csinhf.c @@ -0,0 +1,4 @@ +#define SUFF f +#define float_type float +#define huge_val HUGE_VALF +#include <s_csinh.c> diff --git a/sysdeps/m68k/fpu/s_csinhl.c b/sysdeps/m68k/fpu/s_csinhl.c new file mode 100644 index 0000000..c8aa5c7 --- /dev/null +++ b/sysdeps/m68k/fpu/s_csinhl.c @@ -0,0 +1,4 @@ +#define SUFF l +#define float_type long double +#define huge_val HUGE_VALL +#include <s_csinh.c> diff --git a/sysdeps/m68k/fpu/s_rinttol.c b/sysdeps/m68k/fpu/s_rinttol.c new file mode 100644 index 0000000..7476d78 --- /dev/null +++ b/sysdeps/m68k/fpu/s_rinttol.c @@ -0,0 +1,31 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define __LIBC_M81_MATH_INLINES +#include <math.h> + +long int +__rinttol (long double x) +{ + return __m81_u(__rinttol) (x); +} + +weak_alias (__rinttol, rinttol) diff --git a/sysdeps/m68k/fpu/s_rinttoll.c b/sysdeps/m68k/fpu/s_rinttoll.c new file mode 100644 index 0000000..bad8082 --- /dev/null +++ b/sysdeps/m68k/fpu/s_rinttoll.c @@ -0,0 +1,62 @@ +/* Round argument to nearest integral value according to current rounding + direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define __LIBC_M81_MATH_INLINES +#include <math.h> +#include "math_private.h" + +long long int +__rinttoll (long double x) +{ + int32_t se, sx; + u_int32_t h, l; + long long int result; + + x = __m81_u(__rintl) (x); + + /* We could use __fixxfdi from libgcc, but here we can take advantage of + the known floating point format. */ + GET_LDOUBLE_WORDS (se, h, l, x); + + sx = se & (1 << 15); + se = (se ^ sx) - 0x3fff; + + if (se < 64) + { + if (se > 31) + result = (((long long int) (h >> (63 - se)) << 32) + | (l >> (63 - se)) | (h << (se - 31))); + else + result = h >> (31 - se); + if (sx) + result = -result; + } + else + /* Too large. The number is either +-inf or NaN or it is too + large to be effected by rounding. The standard leaves it + undefined what to return when the number is too large to fit in + a `long long int'. */ + result = -1LL; + + return result; +} + +weak_alias (__rinttoll, rinttoll) diff --git a/sysdeps/m68k/huge_val.h b/sysdeps/m68k/huge_val.h index 79e87dc..8d45aae 100644 --- a/sysdeps/m68k/huge_val.h +++ b/sysdeps/m68k/huge_val.h @@ -65,12 +65,6 @@ static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; #define HUGE_VALL (__huge_vall.__ld) #endif /* GCC. */ - -/* Expression representing positive infinity. Here it is the same as - HUGE_VALF. */ -#define INFINITY HUGE_VALF - #endif /* __USE_ISOC9X. */ - #endif /* huge_val.h */ diff --git a/sysdeps/sparc/dl-machine.h b/sysdeps/sparc/dl-machine.h index ceaf9ee..1ab3762 100644 --- a/sysdeps/sparc/dl-machine.h +++ b/sysdeps/sparc/dl-machine.h @@ -295,10 +295,10 @@ _start:\n\ or %l2,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l2\n\ or %l3,%lo(_dl_default_scope),%l3\n\ add %o7,%l2,%l1\n\ - # %l1 has the GOT. %l3 has _dl_default_scope offset\n\ - # Now, load _dl_default_scope [2]\n\ - add %l3,4,%l3\n\ + # %l1 has the GOT. %l3 has _dl_default_scope GOT offset\n\ ld [%l1+%l3],%l4\n\ + # %l4 has pointer to _dl_default_scope. Now, load _dl_default_scope [2]\n\ + ld [%l4+8],%l4\n\ # %l4 has _dl_default_scope [2]\n\ # call _dl_init_next until it returns 0, pass _dl_default_scope [2]\n\ 3:\n\ @@ -308,7 +308,8 @@ _start:\n\ bz,a 4f\n\ nop\n\ call %o0\n\ - nop\n\ + /* Pass pointer to argument block to this init function */\n\ + add %sp,64,%o0\n\ b,a 3b\n\ 4:\n\ # Clear the _dl_starting_up variable and pass _dl_fini in %g1 as per ELF ABI.\n\ diff --git a/sysdeps/sparc/elf/start.c b/sysdeps/sparc/elf/start.c index f9c97f8..f1e8019 100644 --- a/sysdeps/sparc/elf/start.c +++ b/sysdeps/sparc/elf/start.c @@ -60,8 +60,8 @@ _start (void) #ifdef ELF_INIT_FINI { extern void _fini (void); - atexit (_fini); _init (); + atexit (_fini); } #endif exit (main (argc, argv, envp)); diff --git a/sysdeps/sparc/fpu_control.h b/sysdeps/sparc/fpu_control.h index cfd8584..5ef3824 100644 --- a/sysdeps/sparc/fpu_control.h +++ b/sysdeps/sparc/fpu_control.h @@ -31,12 +31,12 @@ #define _FPU_SINGLE 0x10000000 /* DO NOT USE */ /* rounding control / Sparc */ -#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */ -#define _FPU_RC_DOWN 0x80000000 -#define _FPU_RC_UP 0xc0000000 +#define _FPU_RC_DOWN 0xc0000000 +#define _FPU_RC_UP 0x80000000 #define _FPU_RC_ZERO 0x40000000 +#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */ -#define _FPU_RESERVED 0x300000 /* Reserved bits in cw */ +#define _FPU_RESERVED 0x30300000 /* Reserved bits in cw */ /* Now two recommended cw */ @@ -45,26 +45,16 @@ - extended precision - rounding to nearest - exceptions on overflow, zero divide and NaN */ -#define _FPU_DEFAULT 0x1f +#define _FPU_DEFAULT 0x1e /* IEEE: same as above, but exceptions */ #define _FPU_IEEE 0x0 -/* private namespace. It should only be used by crt0.o. */ -extern unsigned short __fpu_control; - /* Type of the control word. */ -typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); +typedef unsigned int fpu_control_t; #define _FPU_GETCW(cw) __asm__ ("st %%fsr,%0" : "=m" (*&cw)) -#define _FPU_SETCW(cw) __asm__ ("ld %0,%%fsr" : "=m" (*&cw)) - -#if 0 -/* The intel original macros */ -/* Macros for accessing the hardware control word. */ -#define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) -#define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) -#endif +#define _FPU_SETCW(cw) __asm__ ("ld %0,%%fsr" : : "m" (*&cw)) /* Default control word set at startup. */ extern fpu_control_t __fpu_control; diff --git a/sysdeps/sparc/setjmp.S b/sysdeps/sparc/setjmp.S index f07a348..9e93668 100644 --- a/sysdeps/sparc/setjmp.S +++ b/sysdeps/sparc/setjmp.S @@ -31,15 +31,15 @@ ENTRY (__sigsetjmp) call 1f nop 1: - sethi %hi(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 - or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 - add %l7,%o7,%l7 + sethi %hi(_GLOBAL_OFFSET_TABLE_-(2b-.)),%g2 + or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%g2 + add %g2,%o7,%g2 sethi %hi(C_SYMBOL_NAME (__sigjmp_save)), %g3 or %g3,%lo(C_SYMBOL_NAME (__sigjmp_save)), %g3 st %sp, [%o0 + (JB_SP * 4)] st %fp, [%o0 + (JB_FP * 4)] mov %g1,%o7 - ld [%l7+%g3],%g1 + ld [%g2+%g3],%g1 jmp %g1 st %o7, [%o0+(JB_PC*4)] #else diff --git a/sysdeps/sparc/udiv_qrnnd.S b/sysdeps/sparc/udiv_qrnnd.S index e5d3067..9126b64 100644 --- a/sysdeps/sparc/udiv_qrnnd.S +++ b/sysdeps/sparc/udiv_qrnnd.S @@ -26,7 +26,6 @@ ! n1 i1 ! n0 i2 ! d i3 - #include "DEFS.h" #include "sysdep.h" #undef ret /* Kludge for glibc */ @@ -38,6 +37,7 @@ LC1: .double 0r2147483648 .align 4 .global __udiv_qrnnd + .type __udiv_qrnnd,@function FUNC(__udiv_qrnnd) !#PROLOGUE# 0 save %sp,-104,%sp diff --git a/sysdeps/stub/fclrexcpt.c b/sysdeps/stub/fclrexcpt.c new file mode 100644 index 0000000..50373e0 --- /dev/null +++ b/sysdeps/stub/fclrexcpt.c @@ -0,0 +1,27 @@ +/* Clear given exceptions in current floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +feclearexcept (int excepts) +{ +} +stub_warning (feclearexcept) diff --git a/sysdeps/stub/fegetenv.c b/sysdeps/stub/fegetenv.c new file mode 100644 index 0000000..5d10d84 --- /dev/null +++ b/sysdeps/stub/fegetenv.c @@ -0,0 +1,27 @@ +/* Store current floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fegetenv (fenv_t *envp) +{ +} +stub_warning (fegetenv) diff --git a/sysdeps/stub/fegetround.c b/sysdeps/stub/fegetround.c new file mode 100644 index 0000000..db673c8 --- /dev/null +++ b/sysdeps/stub/fegetround.c @@ -0,0 +1,28 @@ +/* Return current rounding direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fegetround (void) +{ + return 0; +} +stub_warning (fegetround) diff --git a/sysdeps/stub/feholdexcpt.c b/sysdeps/stub/feholdexcpt.c new file mode 100644 index 0000000..c52dbcf --- /dev/null +++ b/sysdeps/stub/feholdexcpt.c @@ -0,0 +1,28 @@ +/* Store current floating-point environment and clear exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +feholdexcept (fenv_t *envp) +{ + return 0; /* Signal failure. */ +} +stub_warning (feholdexcept) diff --git a/sysdeps/stub/fenvbits.h b/sysdeps/stub/fenvbits.h new file mode 100644 index 0000000..cb8868c --- /dev/null +++ b/sysdeps/stub/fenvbits.h @@ -0,0 +1,63 @@ +/* Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This file should never be included directly. */ + +#ifndef _FENVBITS_H +#define _FENVBITS_H 1 + +/* Here should be the exception be defined: + FE_INVALID + FE_DIVBYZERO + FE_OVERFLOW + FE_UNDERFLOW + FE_INEXACT + We define no macro which signals no exception is supported. */ + +#define FE_ALL_EXCEPT 0 + + +/* Here should the rounding modes be defined: + FE_TONEAREST + FE_DOWNWARD + FE_UPWARD + FE_TOWARDSZERO + We define no macro which signals no rounding mode is selectable. */ + + +/* Type representing exception flags. + XXX Probably we should also include the signal handler here. */ +typedef struct + { + unsigned int flags; + } +fexcept_t; + + +/* Type representing floating-point environment. */ +typedef struct + { + fexcept_t excepts; + /* XXX I don't know what else we should save. */ + } +fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((fenv_t *) -1l) + +#endif /* fenvbits.h */ diff --git a/sysdeps/stub/fesetenv.c b/sysdeps/stub/fesetenv.c new file mode 100644 index 0000000..57cad7c --- /dev/null +++ b/sysdeps/stub/fesetenv.c @@ -0,0 +1,27 @@ +/* Install given floating-point environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fesetenv (const fenv_t *envp) +{ +} +stub_warning (fesetenv) diff --git a/sysdeps/stub/fesetround.c b/sysdeps/stub/fesetround.c new file mode 100644 index 0000000..ed1d20f --- /dev/null +++ b/sysdeps/stub/fesetround.c @@ -0,0 +1,28 @@ +/* Set current rounding direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fesetround (int round) +{ + return 0; /* Signal we are unable to set the direction. */ +} +stub_warning (fesetround) diff --git a/sysdeps/stub/feupdateenv.c b/sysdeps/stub/feupdateenv.c new file mode 100644 index 0000000..2e9c8fd --- /dev/null +++ b/sysdeps/stub/feupdateenv.c @@ -0,0 +1,27 @@ +/* Install given floating-point environment and raise exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +feupdateenv (const fenv_t *envp) +{ +} +stub_warning (feupdateenv) diff --git a/sysdeps/stub/fgetexcptflg.c b/sysdeps/stub/fgetexcptflg.c new file mode 100644 index 0000000..18beff4 --- /dev/null +++ b/sysdeps/stub/fgetexcptflg.c @@ -0,0 +1,27 @@ +/* Store current representation for exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fegetexceptflag (fexcept_t *flagp, int excepts) +{ +} +stub_warning (fegetexceptflag) diff --git a/sysdeps/stub/fraiseexcpt.c b/sysdeps/stub/fraiseexcpt.c new file mode 100644 index 0000000..b03192c --- /dev/null +++ b/sysdeps/stub/fraiseexcpt.c @@ -0,0 +1,27 @@ +/* Raise given exceptions. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +feraiseexcept (int excepts) +{ +} +stub_warning (feraiseexcept) diff --git a/sysdeps/stub/fsetexcptflg.c b/sysdeps/stub/fsetexcptflg.c new file mode 100644 index 0000000..e352244 --- /dev/null +++ b/sysdeps/stub/fsetexcptflg.c @@ -0,0 +1,27 @@ +/* Set floating-point environment exception handling. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +void +fesetexceptflag (const fexcept_t *flagp, int excepts) +{ +} +stub_warning (fesetexceptflag) diff --git a/sysdeps/stub/ftestexcept.c b/sysdeps/stub/ftestexcept.c new file mode 100644 index 0000000..7227c21 --- /dev/null +++ b/sysdeps/stub/ftestexcept.c @@ -0,0 +1,28 @@ +/* Test exception in current environment. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <fenv.h> + +int +fetestexcept (int excepts) +{ + return 0; +} +stub_warning (fetestexcept) diff --git a/sysdeps/unix/sysv/linux/sparc/init-first.h b/sysdeps/unix/sysv/linux/sparc/init-first.h new file mode 100644 index 0000000..39822fc --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/init-first.h @@ -0,0 +1,52 @@ +/* Prepare arguments for library initialization function. + Copyright (C) 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* The job of this fragment it to find argc and friends for INIT. + This is done in one of two ways: either in the stack context + of program start, or having dlopen pass them in. */ + +#define SYSDEP_CALL_INIT(NAME, INIT) \ +void NAME (void *arg) \ +{ \ + int argc; \ + char **argv, **envp; \ + /* The next variable is only here to work around a bug in gcc <= 2.7.2.2. \ + If the address would be taken inside the expression the optimizer \ + would try to be too smart and throws it away. Grrr. */ \ + int *dummy_addr = &_dl_starting_up; \ + \ + __libc_multiple_libcs = dummy_addr && !_dl_starting_up; \ + \ + if (!__libc_multiple_libcs) \ + { \ + argc = *(int *) arg; \ + argv = (char **) (arg + 4); \ + envp = &argv[argc+1]; \ + } \ + else \ + { \ + argc = (int) arg; \ + argv = ((char ***) &arg)[1]; \ + envp = ((char ***) &arg)[2]; \ + } \ + \ + INIT (argc, argv, envp); \ +} + + diff --git a/sysdeps/unix/sysv/linux/sparc/signum.h b/sysdeps/unix/sysv/linux/sparc/signum.h index d50a636..3437c16 100644 --- a/sysdeps/unix/sysv/linux/sparc/signum.h +++ b/sysdeps/unix/sysv/linux/sparc/signum.h @@ -29,7 +29,6 @@ * to make it OSF/1 binary compatible, at least for normal binaries. */ #define _NSIG 32 /* Biggest signal number + 1. */ -#define NSIG _NSIG #define SIGHUP 1 #define SIGINT 2 @@ -67,6 +66,4 @@ #define SIGUSR1 30 #define SIGUSR2 31 -/* Linux/SPARC does not have SIGPWR */ -#define SIGIOT SIGABRT #endif /* <signal.h> included. */ diff --git a/sysdeps/unix/sysv/linux/sparc/syscalls.list b/sysdeps/unix/sysv/linux/sparc/syscalls.list index 3d59984..7883d70 100644 --- a/sysdeps/unix/sysv/linux/sparc/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/syscalls.list @@ -1,6 +1,3 @@ # File name Caller Syscall name # args Strong name Weak names -fork - fork 0 __fork fork -pipe - pipe 1 __pipe pipe s_llseek llseek _llseek 5 __sys_llseek -syscall - syscall 0 __syscall syscall diff --git a/time/strftime.c b/time/strftime.c index 690cf2a..898bd6c 100644 --- a/time/strftime.c +++ b/time/strftime.c @@ -179,7 +179,7 @@ static const char spaces[16] = " "; # define memset_space(P, Len) \ do { \ int _len = (Len); \ - \ + \ do \ { \ int _this = _len > 16 ? 16 : _len; \ @@ -190,7 +190,7 @@ static const char spaces[16] = " "; while (_len > 0); \ } while (0) #else -# define memset_space(P, Len) memset ((P), ' ', (Len)) +# define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) #endif #define add(n, f) \ diff --git a/time/strptime.c b/time/strptime.c index 89cfa8e..fd457af 100644 --- a/time/strptime.c +++ b/time/strptime.c @@ -537,7 +537,7 @@ strptime_internal (buf, format, tm, decided) case 'y': /* Match year within century. */ get_number (0, 99); - tm->tm_year = val; + tm->tm_year = val >= 50 ? val : val + 100; break; case 'Y': /* Match year including century number. */ |