[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, gawk_mpfr, updated. b1062311a3caab9ec89c
From: |
John Haque |
Subject: |
[gawk-diffs] [SCM] gawk branch, gawk_mpfr, updated. b1062311a3caab9ec89c0f104bd9b4334174f23c |
Date: |
Tue, 17 Apr 2012 18:19:41 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, gawk_mpfr has been updated
via b1062311a3caab9ec89c0f104bd9b4334174f23c (commit)
via f0345a29c71a3215adaa0e2fdfefc0c439ea6561 (commit)
via cc2747c5e55da93a7791d2cd5127aaa6ca64d27e (commit)
via db344a800133d00132fd85b546532affb4b3cf77 (commit)
via abde9f31440e862d4fd51605d8fade099b602cb5 (commit)
via 19a22c41661c3b032c9cdcfd6913373526c025c8 (commit)
via b85b04e80466b60892bb1533e33af267ecb1c2a6 (commit)
via d2650f4a9fed079621db60fb2f61ef1bca266bfa (commit)
via 2ce7559261a641c222eecf7bc2718e0832613d14 (commit)
via 089476b5415e9844175a2fbf1bde6faf18ae0b61 (commit)
via 0714b773d7f4853fb2ba95a7b36d0230bad81dc9 (commit)
via c7f51459f7da3e0c693f8a950726869d99e5bcf2 (commit)
via 1e495ca269aa2653bf804088ebe532b67110a3ef (commit)
via b467a6d3d604723e0c152dceb09e998c059bfa40 (commit)
via 42b4bf2e5656427243f63bc7174cc7eddf1faa9c (commit)
via e047ee7530cdd62f7501a82505d9f38e57f02415 (commit)
via db9a7ab5c200863f3dcadb6358327fd7b95971ad (commit)
via b630ded7a3489fc10a104f761013eb3b588fd408 (commit)
via 366e06bf71b500939fa3a70e3cce91d9a7776e14 (commit)
via a95b07bee7574ddf1ef6a9ca6f773cbaf4988707 (commit)
via a19298ed002eb20d91c37fd5067de18466211f83 (commit)
via 58b5aa30bc83d715b1d0708e686eed50ccf11f15 (commit)
via 815ea6c85b3494f6f850fcef17aeb23ca9426f4c (commit)
via 1c931f6f51c050ee9ad0b837dd2d0233f1dc3221 (commit)
via 982aa5c89f762f2385f5fe4e7f7faf4b3fed2b1b (commit)
via 0ae96bfbc93e44099abb5e3b59719236b5045087 (commit)
via 4341f63af3b49a3f213c8cbd6d88985ea7312957 (commit)
via a2353048716e96cc0b3d5c69bc6159902602abe9 (commit)
via 511ce662d8020896a812290d70458f777b460db9 (commit)
via 17e726c4b68adf30bd7fa541f4610580a8930b38 (commit)
via d2d2d24b400c8d7b3cc167687d25001f5b30152e (commit)
via 623485504abc2f256f51f49370f24b1e35dce1cb (commit)
via f6bbdea8c4e2d3bd13cbbddd65fe67bcd7621fd2 (commit)
via 06cbd595d6e01a489edcca12b64eae7c4835c833 (commit)
via 7ec7b66a3c3a4d3596537a119d0f97135ab16ea4 (commit)
via 8a2eed59fd54d901721376426b34c0c128bf0cfb (commit)
via b8123662e8cb41e033771151500d927456953ab2 (commit)
via 0d561c8510c16521787976f801744d32498102e2 (commit)
via 715956735ebfc71820332a214e11bcf30c4b69c7 (commit)
via ac3a3b5a09051f68ec1d521cfe1e39f44cb0a07a (commit)
via bd7e60f71231f3f74c6f6efdaf856c71eeaa61ef (commit)
via 4321116ab54f5177ae4a4d1dcd2a7dd7e1bd6419 (commit)
via d4dffed3fadd53db64a4a6a9c760820fdfa96e96 (commit)
via 6a07091fffd37926934da36e8b238c58e5a3eb10 (commit)
via 3c801c3229e7c9a59e569a7f4f89498db81400f4 (commit)
via 41985db446e0c3d47fb1b30c450924ca7ec7b7b5 (commit)
via a497d91a785f1f8d73d2f00bacaaf10734f81fcb (commit)
via ecbe8b0fcb8174830b52c6f96efdb42600055576 (commit)
via 9867e9cc604823c73027275efdca9c64cd2b11c0 (commit)
via bf2031d59be508cb045b1317eb524dcf9f2ef402 (commit)
from e729adf120f279fd65578a410ca8d2d93a56f0f0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b1062311a3caab9ec89c0f104bd9b4334174f23c
commit b1062311a3caab9ec89c0f104bd9b4334174f23c
Merge: e729adf f0345a2
Author: john haque <address@hidden>
Date: Tue Apr 17 13:00:13 2012 -0500
Merge branch 'master' into gawk_mpfr.
diff --cc ChangeLog
index 67d016a,e4170c0..848ab3b
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,92 -1,111 +1,200 @@@
+2012-04-16 Eli Zaretskii <address@hidden>
+
+ * io.c (read_with_timeout) [__MINGW32__]: Just call the blocking
+ 'read', as 'select' is only available for sockets.
+ * mpfr.c (set_ROUNDMODE) [!HAVE_MPFR]: Renamed from set_RNDMODE.
+ * main.c (load_procinfo): Declare name[] also when HAVE_MPFR is
+ defined even though HAVE_GETGROUPS etc. are not.
+
+2012-04-12 John Haque <address@hidden>
+
+ * array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c,
+ field.c, mpfr.c, profile.c: Change RND_MODE to ROUND_MODE.
+
+2012-04-11 John Haque <address@hidden>
+
+ * main.c (varinit): Change RNDMODE to ROUNDMODE.
+
+2012-04-11 Arnold D. Robbins <address@hidden>
+
+ * main.c: Change --arbitrary-precision to --bignum.
+
+2012-04-02 John Haque <address@hidden>
+
+ Add support for arbitrary-precision arithmetic.
+
+ * mpfr.c: New file.
+ * awk.h (struct exp_node): Add union to handle different number types.
+ (MPFN, MPZN): New flag values.
+ (DO_MPFR, do_mpfr): New defines.
+ (PREC_node, RNDMODE_node): Add declarations.
+ (PRECISION, RND_MODE, MNR, MFNR, mpzval, do_ieee_fmt): Add declarations.
+ (make_number, str2number, format_val, cmp_numbers): Ditto.
+ (force_number): Change definition.
+ (Func_pre_exec, Func_post_exec): New typedefs.
+ (POP_NUMBER, TOP_NUMBER): Change definitions.
+ (get_number_ui, get_number_si, get_number_d, get_number_uj,
+ iszero, IEEE_FMT, mpg_float, mpg_integer, mpg_float,
+ mpg_integer): New defines.
+ * awkgram.y (tokentab): Add alternate function entries for MPFR/GMP.
+ (snode): Choose the appropriate function.
+ (negate_num): New function to negate a number.
+ (grammar): Use it.
+ (yylex): Adjust number handling code.
+ * array.c (value_info, asort_actual, sort_user_func): Adjust for
+ MPFR/GMP numbers.
+ (do_adump, indent): Minor changes.
+ (sort_up_index_number, sort_up_value_number, sort_up_value_type): Use
+ cmp_numbers() for numeric comparisons.
+ * builtin.c (mpz2mpfr): New function.
+ (format_tree): Adjust to handle MPFR and GMP numbers.
+ * eval.c (register_exec_hook): New function to manage interpreter hooks.
+ (num_exec_hook, pre_execute, post_execute): New and adjusted
definitions.
+ (h_interpret): Renamed from debug_interpret.
+ (init_interpret): Changed to use the new name.
+ (flags2str): New entries for MPFN and MPZN.
+ (cmp_nodes): Reworked to use seperate routine for numeric comparisons.
+ (set_IGNORECASE, set_BINMODE, set_LINT, update_NR, update_FNR,
+ update_NF): Adjust code and some cleanup.
+ * field.c (rebuild_record): Field copying code reworked to handle
+ MPFR/GMP numbers.
+ (set_NF): Minor adjustment.
+ * io.c (INCREMENT_REC): New macro.
+ (inrec, do_getline): Use the new macro.
+ (nextfile, set_NR, set_FNR, get_read_timeout, pty_vs_pipe): Adjust code
+ to handle MPFR/GMP numbers.
+ * interpret.h (r_interpret): Adjust TOP_NUMBER/POP_NUMBER usage.
+ (EXEC_HOOK): New macro and definition.
+ (DEBUGGING): Removed.
+ * main.c (DEFAULT_PREC, DEFAULT_RNDMODE): New defines.
+ (opttab): New entry for option arbitrary-precision.
+ (main): Handle the new option.
+ (usage): Add to usage message.
+ (varinit): Add PREC and RNDMODE.
+ (load_procinfo): Install MPFR and GMP related items.
+ (version): Append MPFR and GMP versions to message.
+ * msg.c (err) : Adjust FNR handling with MPFR/GMP.
+ * node.c (r_format_val): Renamed from format_val.
+ (r_force_number): Return NODE * instead of AWKNUM.
+ (make_number, str2number, format_val, cmp_numpers: Defined and
initialized.
+ (r_unref): Free MPFR/MPZ numbers.
+ (get_numbase): Renamed from isnondecimal and return the base.
+ (cmp_awknums): New function to compare two AWKNUMs.
+ * command.y (yylex): Adjust number handling code.
+ (grammar): Minor adjustments to handle negative numbers.
+ * debug.c (init_debug): New function.
+ (do_info, do_set_var, watchpoint_triggered, serialize,
+ initialize_watch_item, do_watch, print_watch_item): Minor adjustments.
+ (debug_pre_execute): Adjusted to handle MPFR and GMP numbers.
+
+ 2012-03-30 Arnold D. Robbins <address@hidden>
+
+ * configure.ac (GAWK_AC_NORETURN): Do as macro instead of inline.
+
+ 2012-03-29 Arnold D. Robbins <address@hidden>
+
+ * dfa.h, dfa.c: Sync with grep. Major cleanups and some changes
+ there.
+ * re.c (research): Pass size_t* to dfaexec to match type change.
+ * configure.ac (AH_VERBATIM[_Noreturn]): Added from Paul Eggert to
+ ease compiling.
+ (AC_INIT): Bump version.
+ * configure, configh.in, version.c: Regenerated.
+
+ 2012-03-28 Arnold D. Robbins <address@hidden>
+
+ * 4.0.1: Release tar ball made.
+
+ 2012-03-28 Arnold D. Robbins <address@hidden>
+
+ * getopt.c: Add DJGPP to list of platforms where it's ok
+ to include <stdlib.h>.
+ * awkgram.y, builtin.c, ext.c, mbsupport.h, re.c: Update
+ copyright year.
+
+ 2012-03-21 Corinna Vinschen <address@hidden>
+
+ * getopt.c: Add Cygwin to list of platforms where it's ok
+ to include <stdlib.h>.
+
+ 2012-03-20 Arnold D. Robbins <address@hidden>
+
+ Get new getopt to work on Linux and C90 compilers:
+
+ * getopt.c: Undef ELIDE_CODE for gawk.
+ (_getopt_internal_r): Init first.needs_free to 0. In test for -W
+ move executable code to after declarations for C90 compilers.
+ * getopt1.c: Undef ELIDE_CODE for gawk.
+
+ Minor bug fix with printf, thanks to John Haque:
+
+ * builtin.c (format_tree): Initialize base to zero at the top
+ of the while loop.
+
+ Getting next tar ball ready:
+
+ * configure.ac: Remove duplicate check for wcscoll. Thanks
+ to Stepan Kasal.
+
+ 2012-03-16 Arnold D. Robbins <address@hidden>
+
+ * getopt.c, getopt.h, getopt1.c, getopt_int.h, regcomp.c,
+ regex.c, regex.h, regex_internal.c, regex_internal.h,
+ regexec.c: Sync with GLIBC, what the heck.
+
+ 2012-03-14 Eli Zaretskii <address@hidden>
+
+ * mbsupport.h (btowc): Change for non-DJGPP.
+ * re.c (dfaerror): Add call to exit for DJGPP.
+
+ 2012-03-14 Arnold D. Robbins <address@hidden>
+
+ * regex_internal.c (re_string_skip_chars): Fix calculation of
+ remain_len with m.b. chars. Thanks to Stanislav Brabec
+ <address@hidden>.
+
+ 2012-02-28 Arnold D. Robbins <address@hidden>
+
+ * main.c (init_groupset): Make `getgroups' failing a non-fatal
+ error. After all, what's the big deal? Should help on Plan 9.
+
+ 2012-02-27 Arnold D. Robbins <address@hidden>
+
+ * dfa.c (parse_bracket_exp): Revert changes 2012-02-15 to stay
+ in sync with grep.
+ * dfa.h (dfarerror): Add __attribute__ from grep.
+
+ 2012-02-15 Arnold D. Robbins <address@hidden>
+
+ Fix warnings from GCC 4.6.2 -Wall option.
+
+ * awkgram.y (newline_eof): New function to replace body of
+ NEWLINE_EOF macro.
+ (yylex): Replace body of NEWLINE_EOF macro.
+ * dfa.c (parse_bracket_exp): Init variables to zero.
+ * ext.c (dummy, junk): Remove.
+ * regex_internal.c (re_string_reconstruct): Remove buf array. It was
+ set but not used.
+
+ 2012-02-10 Arnold D. Robbins <address@hidden>
+
+ * dfa.c: Sync with GNU grep.
+
+ 2012-02-07 Arnold D. Robbins <address@hidden>
+
+ * main.c (main): Move init of `output_fp' to before parsing of
+ program so that error messages from msg.c don't dump core.
+ Thanks to Michael Haardt <address@hidden>.
+
+ 2012-01-13 Arnold D. Robbins <address@hidden>
+
+ * dfa.c [is_valid_unibtye_character]: Fix from GNU grep to
+ bug reported by me from Scott Deifik for DJGPP.
+
+ 2012-01-03 Arnold D. Robbins <address@hidden>
+
+ * dfa.c: Sync with GNU grep.
+
2012-01-02 Arnold D. Robbins <address@hidden>
* io.c (Read_can_timeout, Read_timeout, Read_default_timeout):
diff --cc Makefile.in
index 3775dc4,5c0d027..b3da3c8
--- a/Makefile.in
+++ b/Makefile.in
@@@ -72,12 -72,12 +72,12 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
++ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
++ $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
++ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
++ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
diff --cc README_d/ChangeLog
index e319a9c,b29f67a..0310bd8
--- a/README_d/ChangeLog
+++ b/README_d/ChangeLog
@@@ -1,8 -1,6 +1,14 @@@
+2012-04-11 John Haque <address@hidden>
- README.hacking: New file.
++
++ * README.hacking: New file.
+
+2012-04-01 John Haque <address@hidden>
- README.mpfr: New file.
++
++ * README.mpfr: New file.
++
+ 2012-03-28 Arnold D. Robbins <address@hidden>
+
+ * 4.0.1: Release tar ball made.
2011-07-29 Arnold D. Robbins <address@hidden>
diff --cc aclocal.m4
index bc66ce5,2af369c..c2a9c00
--- a/aclocal.m4
+++ b/aclocal.m4
@@@ -963,8 -963,8 +963,9 @@@ m4_include([m4/lib-link.m4]
m4_include([m4/lib-prefix.m4])
m4_include([m4/libsigsegv.m4])
m4_include([m4/longlong.m4])
+m4_include([m4/mpfr.m4])
m4_include([m4/nls.m4])
+ m4_include([m4/noreturn.m4])
m4_include([m4/po.m4])
m4_include([m4/progtest.m4])
m4_include([m4/readline.m4])
diff --cc awklib/Makefile.in
index 1b1a274,5c1fc27..8ff83c4
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@@ -67,12 -67,12 +67,12 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
++ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
++ $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
++ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
++ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
diff --cc builtin.c
index b17cea9,ac70fce..9134e02
--- a/builtin.c
+++ b/builtin.c
@@@ -770,8 -728,8 +770,9 @@@ format_tree
cur = &fw;
fw = 0;
prec = 0;
+ base = 0;
argnum = 0;
+ base = 0;
have_prec = FALSE;
signchar = FALSE;
zero_flag = FALSE;
diff --cc doc/Makefile.in
index f0571c4,7c8d9db..e475208
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@@ -68,12 -68,12 +68,12 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
++ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
++ $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
++ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
++ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
diff --cc doc/gawk.info
index c5702ee,ca6b661..bf27982
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -9323,15 -9303,6 +9328,15 @@@ specific to `gawk' are marked with a po
every `print' statement. Its default value is `"\n"', the newline
character. (*Note Output Separators::.)
+`PREC #'
+ The working precision of arbitrary precision floating-point
+ numbers, 53 by default (*note Setting Precision::).
+
- `RNDMODE #'
++`ROUNDMODE #'
+ The rounding mode to use for arbitrary precision arithmetic on
+ numbers, by default `"N"' (`roundTiesToEven' in the IEEE-754
+ standard) (*note Setting Rounding Mode::).
+
`RS'
This is `awk''s input record separator. Its default value is a
string containing a single newline character, which means that an
@@@ -13646,745 -13601,9 +13652,745 @@@ writing, the latest version of GNU `get
usage messages, warnings, and fatal errors in the local language.
-File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev:
Internationalization, Up: Top
+File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Advanced
Features, Prev: Internationalization, Up: Top
+
+11 Arbitrary Precision Arithmetic with `gawk'
+*********************************************
+
+ There's a credibility gap: We don't know how much of the
+ computer's answers to believe. Novice computer users solve this
+ problem by implicitly trusting in the computer as an infallible
+ authority; they tend to believe that all digits of a printed
+ answer are significant. Disillusioned computer users have just the
+ opposite approach; they are constantly afraid that their answers
+ are almost meaningless.
+
+ Donald Knuth(1)
+
+ This minor node decsribes how to use the arbitrary precision (also
+known as "multiple precision" or "infinite precision") numeric
+capabilites in `gawk' to produce maximally accurate results when you
+need it. But first you should check if your version of `gawk' supports
+arbitrary precision arithmetic. The easiest way to find out is to look
+at the output of the following command:
+
+ $ gawk --version
+ -| GNU Awk 4.1.0 (GNU MPFR 3.1.0, GNU MP 5.0.3)
+ -| Copyright (C) 1989, 1991-2012 Free Software Foundation.
+ ...
+
+ `gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP
+(http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic
+on numbers. So if you do not see the names of these libraries in the
+output, then your version of `gawk' does not support arbitrary
+precision arithmetic.
+
+ Even if you aren't interested in arbitrary precision arithmetic, you
+may still benifit from knowing about how `gawk' handles numbers in
+general, and the limitations of doing arithmetic with ordinary `gawk'
+numbers.
+
+* Menu:
+
+* Floating-point Programming:: Effective Floating-point Programming.
+* Floating-point Representation:: Binary Floating-point Representation.
+* Floating-point Context:: Floating-point Context.
+* Rounding Mode:: Floating-point Rounding Mode.
+* Arbitrary Precision Floats:: Arbitrary Precision Floating-point
+ Arithmetic with `gawk'.
+* Setting Precision:: Setting the Working Precision.
+* Setting Rounding Mode:: Setting the Rounding Mode.
+* Floating-point Constants:: Representing Floating-point
Constants.
+* Changing Precision:: Changing the Precision of a Number.
+* Exact Arithmetic:: Exact Arithmetic with Floating-point
Numbers.
+* Integer Programming:: Effective Integer Programming.
+* Arbitrary Precision Integers:: Arbitrary Precision Integer
+ Arithmetic with `gawk'.
+* MPFR and GMP Libraries:: Information About the MPFR and GMP
Libraries.
+
+ ---------- Footnotes ----------
+
+ (1) Donald E. Knuth. `The Art of Computer Programming'. Volume 2,
+`Seminumerical Algorithms', third edition, 1998, ISBN 0-201-89683-4, p.
+229.
+
+
+File: gawk.info, Node: Floating-point Programming, Next: Floating-point
Representation, Up: Arbitrary Precision Arithmetic
+
+11.1 Effective Floating-point Programming
+=========================================
+
+Numerical programming is an extensive area; if you need to develop
+sophisticated numerical algorithms then `gawk' may not be the ideal
+tool, and this documentation may not be sufficient. It might require a
+book or two to communicate how to compute with ideal accuracy and
+precision and the result often depends on the particular application.
+
+ NOTE: A floating-point calculation's "accuracy" is how close it
+ comes to the real value. This is as opposed to the "precision",
+ which usually refers to the number of bits used to represent the
+ number (see the Wikipedia article
+ (http://en.wikipedia.org/wiki/Accuracy_and_precision) for more
+ information).
+
+ Binary floating-point representations and arithmetic are inexact.
+Simple values like 0.1 cannot be precisely represented using binary
+floating-point numbers, and the limited precision of floating-point
+numbers means that slight changes in the order of operations or the
+precision of intermediate storage can change the result. To make
+matters worse with arbitrary precision floating-point, you can set the
+precision before starting a computation, but then you cannot be sure of
+the number of significant decimal places in the final result.
+
+ Sometimes you need to think more about what you really want and
+what's really happening. Consider the two numbers in the following
+example:
+
+ x = 0.875 # 1/2 + 1/4 + 1/8
+ y = 0.425
+
+ Unlike the number in `y', the number stored in `x' is exactly
+representable in binary since it can be written as a finite sum of one
+or more fractions whose denominators are all powers of two. When
+`gawk' reads a floating-point number from program source, it
+automatically rounds that number to whatever precision your machine
+supports. If you try to print the numeric content of a variable using
+an output format string of `"%.17g"', it may not produce the same
+number as you assigned to it:
+
+ $ gawk 'BEGIN { x = 0.875; y = 0.425
+ > printf("%0.17g, %0.17g\n", x, y) }'
+ -| 0.875, 0.42499999999999999
+
+ Often the error is so small you do not even notice it, and if you do,
+you can always specify how much precision you would like in your output.
+Usually this is a format string like `"%.15g"', which when used in the
+previous example, produces an output identical to the input.
+
+ Because the underlying representation can be little bit off from the
+exact value, comparing floats to see if they are equal is generally not
+a good idea. Here is an example where it does not work like you expect:
+
+ $ gawk 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ The loss of accuracy during a single computation with floating-point
+numbers usually isn't enough to worry about. However, if you compute a
+value which is the result of a sequence of floating point operations,
+the error can accumulate and greatly affect the computation itself.
+Here is an attempt to compute the value of the constant pi using one of
+its many series representations:
+
+ BEGIN {
+ x = 1.0 / sqrt(3.0)
+ n = 6
+ for (i = 1; i < 30; i++) {
+ n = n * 2.0
+ x = (sqrt(x * x + 1) - 1) / x
+ printf("%.15f\n", n * x)
+ }
+ }
+
+ When run, the early errors propagating through later computations
+cause the loop to terminate prematurely after an attempt to divide by
+zero.
+
+ $ gawk -f pi.awk
+ -| 3.215390309173475
+ -| 3.159659942097510
+ -| 3.146086215131467
+ -| 3.142714599645573
+ ...
+ -| 3.224515243534819
+ -| 2.791117213058638
+ -| 0.000000000000000
+ error--> gawk: pi.awk:6: fatal: division by zero attempted
+
+ Here is one more example where the inaccuracies in internal
+representations yield an unexpected result:
+
+ $ gawk 'BEGIN {
+ > for (d = 1.1; d <= 1.5; d += 0.1)
+ > i++
+ > print i
+ > }'
+ -| 4
+
+ Can computation using aribitrary precision help with the previous
+examples? If you are impatient to know, see *note Exact Arithmetic::.
+
+ Instead of aribitrary precision floating-point arithmetic, often all
+you need is an adjustment of your logic or a different order for the
+operations in your calculation. The stability and the accuracy of the
+computation of the constant pi in the previous example can be enhanced
+by using the following simple algebraic transformation:
+
+ (sqrt(x * x + 1) - 1) / x = x / (sqrt(x * x + 1) + x)
+
+ There is no need to be unduly suspicious about the results from
+floating-point arithmetic. The lesson to remember is that
+floating-point math is always more complex than the math using pencil
+and paper. In order to take advantage of the power of computer
+floating-point, you need to know its limitations and work within them.
+For most casual use of floating-point arithmetic, you will often get
+the expected result in the end if you simply round the display of your
+final results to the correct number of significant decimal digits.
+Avoid presenting numerical data in a manner that implies better
+precision than is actually the case.
+
+
+File: gawk.info, Node: Floating-point Representation, Next: Floating-point
Context, Prev: Floating-point Programming, Up: Arbitrary Precision Arithmetic
+
+11.2 Binary Floating-point Representation
+=========================================
+
+Although floating-point representations vary from machine to machine,
+the most commonly encountered representation is that defined by the
+IEEE 754 Standard. An IEEE-754 format value has three components:
+
+ * a sign bit telling whether the number is positive or negative,
+
+ * an "exponent" giving its order of magnitude, E,
+
+ * and a "significand", S, specifying the actual digits of the number.
+
+ The value of the number is then S * 2^E. The first bit of a
+non-zero binary significand is always one, so the significand in an
+IEEE-754 format only includes the fractional part, leaving the leading
+one implicit.
+
+ Three of the standard IEEE-754 types are 32-bit single precision,
+64-bit double precision and 128-bit quadruple precision. The standard
+also specifies extended precision formats to allow greater precisions
+and larger exponent ranges.
+
+
+File: gawk.info, Node: Floating-point Context, Next: Rounding Mode, Prev:
Floating-point Representation, Up: Arbitrary Precision Arithmetic
+
+11.3 Floating-point Context
+===========================
+
+A floating-point context defines the environment for arithmetic
+operations. It governs precision, sets rules for rounding and limits
+range for exponents. The context has the following primary components:
+
+`precision'
+ Precision of the floating-point format in bits.
+
+`emax'
+ Maximum exponent allowed for this format.
+
+`emin'
+ Minimum exponent allowed for this format.
+
+`underflow behavior'
+ The format may or may not support gradual underflow.
+
+`rounding'
+ The rounding mode of this context.
+
+ *note table-ieee-formats:: lists the precision and exponent field
+values for the basic IEEE-754 binary formats:
+
+Name Total bits Precision emin emax
+---------------------------------------------------------------------------
+Single 32 24 -126 +127
+Double 64 53 -1022 +1023
+Quadruple 128 113 -16382 +16383
+
+Table 11.1: Basic IEEE Formats
+
+ NOTE: The precision numbers include the implied leading one that
+ gives them one extra bit of significand.
+
+ A floating-point context can also determine which signals are treated
+as exceptions, and can set rules for arithmetic with special values.
+Please consult the IEEE-754 standard or other resources for details.
+
+ `gawk' ordinarily uses the hardware double precision representation
+for numbers. On most systems, this is IEEE-754 floating-point format,
+corresponding to 64-bit binary with 53 bits of precision.
+
+ NOTE: In case an underflow occurs, the standard allows, but does
+ not require, the result from an arithmetic operation to be a
+ number smaller than the smallest nonzero normalized number. Such
+ numbers do not have as many significant digits as normal numbers,
+ and are called "denormals" or "subnormals". The alternative,
+ simply returning a zero, is called "flush to zero". The basic
+ IEEE-754 binary formats support subnormal numbers.
+
+
+File: gawk.info, Node: Rounding Mode, Next: Arbitrary Precision Floats,
Prev: Floating-point Context, Up: Arbitrary Precision Arithmetic
+
+11.4 Floating-point Rounding Mode
+=================================
+
+The "rounding mode" specifies the behavior for the results of numerical
+operations when discarding extra precision. Each rounding mode indicates
+how the least significant returned digit of a rounded result is to be
- calculated. The `RNDMODE' variable (*note Setting Rounding Mode::)
++calculated. The `ROUNDMODE' variable (*note Setting Rounding Mode::)
+provides program level control over the rounding mode. *note
+table-rounding-modes:: lists the IEEE-754 defined rounding modes:
+
- Rounding Mode IEEE Name `RNDMODE'
++Rounding Mode IEEE Name `ROUNDMODE'
+---------------------------------------------------------------------------
+Round to nearest, ties to even `roundTiesToEven' `"N"' or `"n"'
+Round toward plus Infinity `roundTowardPositive' `"U"' or `"u"'
+Round toward negative Infinity `roundTowardNegative' `"D"' or `"d"'
+Round toward zero `roundTowardZero' `"Z"' or `"z"'
+Round to nearest, ties away `roundTiesToAway' `"A"' or `"a"'
+from zero
+
+Table 11.2: Rounding Modes
+
+ The default mode `roundTiesToEven' is the most preferred, but the
+least intuitive. This method does the obvious thing for most values, by
+rounding them up or down to the nearest digit. For example, rounding
+1.132 to two digits yields 1.13, and rounding 1.157 yields 1.16.
+
+ However, when it comes to rounding a value that is exactly halfway
+between, things do not work the way you probably learned in school. In
+this case, the number is rounded to the nearest even digit. So
+rounding 0.125 to two digits rounds down to 0.12, but rounding 0.6875
+to three digits rounds up to 0.688. You probably have already
+encountered this rounding mode when using the `printf' routine to
+format floating-point numbers. For example:
+
+ BEGIN {
+ x = -4.5
+ for (i = 1; i < 10; i++) {
+ x += 1.0
+ printf("%4.1f => %2.0f\n", x, x)
+ }
+ }
+
+produces the following output when run(1):
+
+ -3.5 => -4
+ -2.5 => -2
+ -1.5 => -2
+ -0.5 => 0
+ 0.5 => 0
+ 1.5 => 2
+ 2.5 => 2
+ 3.5 => 4
+ 4.5 => 4
+
+ The theory behind the rounding mode `roundTiesToEven' is that it
+more or less evenly distributes upward and downward rounds of exact
+halves, which might cause the round-off error to cancel itself out.
+This is the default rounding mode used in IEEE-754 computing functions
+and operators.
+
+ The other rounding modes are rarely used. Round toward positive
+infinity (`roundTowardPositive') and round toward negative infinity
+(`roundTowardNegative') are often used to implement interval arithmetic,
+where you adjust the rounding mode to calculate upper and lower bounds
+for the range of output. The `roundTowardZero' mode can be used for
+converting floating-point numbers to integers. The rounding mode
+`roundTiesToAway' rounds the result to the nearest number and selects
+the number with the larger magnitude if a tie occurs.
+
+ Some numerical analysts will tell you that your choice of rounding
+style has tremendous impact on the final outcome, and advise you to
+wait until final output for any rounding. Instead, you can often
+achieve this goal by setting the precision initially to some value
+sufficiently larger than the final desired precision, so that the
+accumulation of round-off error does not influence the outcome. If you
+suspect that results from your computation are sensitive to
+accumulation of round-off error, one way to be sure is to look for a
+significant difference in output when you change the rounding mode.
+
+ ---------- Footnotes ----------
+
+ (1) It is possible for the output to be completely different if the
+C library in your system does not use the IEEE-754 even-rounding rule
+to round halfway cases for `printf()'.
+
+
+File: gawk.info, Node: Arbitrary Precision Floats, Next: Setting Precision,
Prev: Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.5 Arbitrary Precision Floating-point Arithmetic with `gawk'
+==============================================================
+
+`gawk' uses the GNU MPFR library for arbitrary precision floating-point
+arithmetic. The MPFR library provides precise control over precisions
+and rounding modes, and gives correctly rounded reproducible
+platform-independent results. With the command-line option `--bignum'
+or `-M', all floating-point arithmetic operators and numeric functions
+can yield results to any desired precision level supported by MPFR.
- Two built-in variables `PREC' (*note Setting Precision::) and `RNDMODE'
- (*note Setting Rounding Mode::) provide control over the working
- precision and the rounding mode. The precision and the rounding mode
- are set globally for every operation to follow.
++Two built-in variables `PREC' (*note Setting Precision::) and
++`ROUNDMODE' (*note Setting Rounding Mode::) provide control over the
++working precision and the rounding mode. The precision and the
++rounding mode are set globally for every operation to follow.
+
+ The default working precision for arbitrary precision floats is 53,
- and the default value for `RNDMODE' is `"N"', which selects the IEEE-754
- `roundTiesToEven' (*note Rounding Mode::) rounding mode.(1) `gawk' uses
- the default exponent range in MPFR (EMAX = 2^30 - 1, EMIN = -EMAX) for
- all floating-point contexts. There is no explicit mechanism to adjust
- the exponent range. MPFR does not implement subnormal numbers by
- default, and this behavior cannot be changed in `gawk'.
++and the default value for `ROUNDMODE' is `"N"', which selects the
++IEEE-754 `roundTiesToEven' (*note Rounding Mode::) rounding mode.(1)
++`gawk' uses the default exponent range in MPFR (EMAX = 2^30 - 1, EMIN =
++-EMAX) for all floating-point contexts. There is no explicit mechanism
++to adjust the exponent range. MPFR does not implement subnormal
++numbers by default, and this behavior cannot be changed in `gawk'.
+
+ NOTE: When emulating an IEEE-754 format (*note Setting
+ Precision::), `gawk' internally adjusts the exponent range to the
+ value defined for the format and also performs computations needed
+ for gradual underflow (subnormal numbers).
+
+ NOTE: MPFR numbers are variable-size entities, consuming only as
+ much space as needed to store the significant digits. Since the
+ performance using MPFR numbers pales in comparison to doing math
+ using the underlying machine types, you should consider using only
+ as much precision as needed by your program.
+
+ ---------- Footnotes ----------
+
+ (1) The default precision is 53, since according to the MPFR
+documentation, the library should be able to exactly reproduce all
+computations with double-precision machine floating-point numbers
+(`double' type in C), except the default exponent range is much wider
+and subnormal numbers are not implemented.
+
+
+File: gawk.info, Node: Setting Precision, Next: Setting Rounding Mode,
Prev: Arbitrary Precision Floats, Up: Arbitrary Precision Arithmetic
+
+11.6 Setting the Working Precision
+==================================
+
+`gawk' uses a global working precision; it does not keep track of the
+precision or accuracy of individual numbers. Performing an arithmetic
+operation or calling a built-in function rounds the result to the
+current working precision. The default working precision is 53 which
+can be modified using the built-in variable `PREC'. You can also set the
+value to one of the following pre-defined case-insensitive strings to
+emulate an IEEE-754 binary format:
+
+`PREC' IEEE-754 Binary Format
+---------------------------------------------------
+`"half"' 16-bit half-precision.
+`"single"' Basic 32-bit single precision.
+`"double"' Basic 64-bit double precision.
+`"quad"' Basic 128-bit quadruple precision.
+`"oct"' 256-bit octuple precision.
+
+ The following example illustrates the effects of changing precision
+on arithmetic operations:
+
+ $ gawk -M -vPREC=100 'BEGIN { x = 1.0e-400; print x + 0; \
+ > PREC = "double"; print x + 0 }'
+ -| 1e-400
+ -| 0
+
+ Binary and decimal precisions are related approximately according to
+the formula:
+
+ PREC = 3.322 * DPS
+
+Here, PREC denotes the binary precision (measured in bits) and DPS
+(short for decimal places) is the decimal digits. We can easily
+calculate how many decimal digits the 53-bit significand of an IEEE
+double is equivalent to: 53 / 3.332 which is equal to about 15.95. But
+what does 15.95 digits actually mean? It depends whether you are
+concerned about how many digits you can rely on, or how many digits you
+need.
+
+ It is important to know how many bits it takes to uniquely identify
+a double-precision value (the C type `double'). If you want to convert
+from `double' to decimal and back to `double' (e.g., saving a `double'
+representing an intermediate result to a file, and later reading it
+back to restart the computation), then a few more decimal digits are
+required. 17 digits is generally enough for a `double'.
+
+ It can also be important to know what decimal numbers can be uniquely
+represented with a `double'. If you want to convert from decimal to
+`double' and back again, 15 digits is the most that you can get. Stated
+differently, you should not present the numbers from your
+floating-point computations with more than 15 significant digits in
+them.
+
+ Conversely, it takes a precision of 332 bits to hold an approximation
+of constant pi that is accurate to 100 decimal places. You should
+always add some extra bits in order to avoid the confusing round-off
+issues that occur because numbers are stored internally in binary.
+
+
+File: gawk.info, Node: Setting Rounding Mode, Next: Floating-point
Constants, Prev: Setting Precision, Up: Arbitrary Precision Arithmetic
+
+11.7 Setting the Rounding Mode
+==============================
+
- The built-in variable `RNDMODE' has the default value `"N"', which
++The built-in variable `ROUNDMODE' has the default value `"N"', which
+selects the IEEE-754 rounding mode `roundTiesToEven'. The other
- possible values for `RNDMODE' are `"U"' for rounding mode
++possible values for `ROUNDMODE' are `"U"' for rounding mode
+`roundTowardPositive', `"D"' for `roundTowardNegative', and `"Z"' for
+`roundTowardZero'. `gawk' also accepts `"A"' to select the IEEE-754
+mode `roundTiesToAway' if your version of the MPFR library supports it;
- otherwise setting `RNDMODE' to this value has no effect. *Note Rounding
- Mode::, for the meanings of the various rounding modes.
++otherwise setting `ROUNDMODE' to this value has no effect. *Note
++Rounding Mode::, for the meanings of the various rounding modes.
+
+ Here is an example of how to change the default rounding behavior of
+`printf''s output:
+
- $ gawk -M -vRNDMODE="Z" 'BEGIN { printf("%.2f\n", 1.378) }'
++ $ gawk -M -vROUNDMODE="Z" 'BEGIN { printf("%.2f\n", 1.378) }'
+ -| 1.37
+
+
+File: gawk.info, Node: Floating-point Constants, Next: Changing Precision,
Prev: Setting Rounding Mode, Up: Arbitrary Precision Arithmetic
+
+11.8 Representing Floating-point Constants
+==========================================
+
+Be wary of floating-point constants! When reading a floating-point
+constant from program source code, `gawk' uses the default precision,
+unless overridden by an assignment to the special variable `PREC' on
+the command line, to store it internally as a MPFR number. Changing
+the precision using `PREC' in the program text does not change the
+precision of a constant. If you need to represent a floating-point
+constant at a higher precision than the default and cannot use a
+command line assignment to `PREC', you should either specify the
+constant as a string, or a rational number whenever possible. The
+following example illustrates the differences among various ways to
+print a floating-point constant:
+
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 0.1) }'
+ -| 0.1000000000000000055511151
+ $ gawk -M -vPREC = 113 'BEGIN { printf("%0.25f\n", 0.1) }'
+ -| 0.1000000000000000000000000
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", "0.1") }'
+ -| 0.1000000000000000000000000
+ $ gawk -M 'BEGIN { PREC = 113; printf("%0.25f\n", 1/10) }'
+ -| 0.1000000000000000000000000
+
+ In the first case, the number is stored with the default precision
+of 53.
+
+
+File: gawk.info, Node: Changing Precision, Next: Exact Arithmetic, Prev:
Floating-point Constants, Up: Arbitrary Precision Arithmetic
+
+11.9 Changing the Precision of a Number
+=======================================
+
+ The point is that in any variable-precision package, a decision is
+ made on how to treat numbers given as data, or arising in
+ intermediate results, which are represented in floating-point
+ format to a precision lower than working precision. Do we promote
+ them to full membership of the high-precision club, or do we treat
+ them and all their associates as second-class citizens? Sometimes
+ the first course is proper, sometimes the second, and it takes
+ careful analysis to tell which.
+
+ Dirk Laurie(1)
+
+ `gawk' does not implicitly modify the precision of any previously
+computed results when the working precision is changed with an
+assignment to `PREC'. The precision of a number is always the one that
+was used at the time of its creation, and there is no way for the user
+to explicitly change it afterwards. However, since the result of a
+floating-point arithmetic operation is always an arbitrary precision
+floating-point value--with a precision set by the value of `PREC'--one
+of the following workarounds effectively accomplishes the desired
+behavior:
+
+ x = x + 0.0
+
+or:
+
+ x += 0.0
+
+ ---------- Footnotes ----------
+
+ (1) Dirk Laurie. `Variable-precision Arithmetic Considered Perilous
+- A Detective Story'. Electronic Transactions on Numerical Analysis.
+Volume 28, pp. 168-173, 2008.
+
+
+File: gawk.info, Node: Exact Arithmetic, Next: Integer Programming, Prev:
Changing Precision, Up: Arbitrary Precision Arithmetic
+
+11.10 Exact Arithmetic with Floating-point Numbers
+==================================================
+
+ CAUTION: Never depend on the exactness of floating-point
+ arithmetic, even for apparently simple expressions!
-11 Advanced Features of `gawk'
+ Can arbitrary precision arithmetic give exact results? There are no
+easy answers. The standard rules of algebra often do not apply when
+using floating-point arithmetic. Among other things, the distributive
+and associative laws do not hold completely, and order of operation may
+be important for your computation. Rounding error, cumulative precision
+loss and underflow are often troublesome.
+
+ When `gawk' tests the expressions `0.1 + 12.2' and `12.3' for
+equality using the machine double precision arithmetic, it decides that
+they are not equal! (*Note Floating-point Programming::.) You can get
+the result you want by increasing the precision; 56 in this case will
+get the job done:
+
+ $ gawk -M -vPREC=56 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 1
+
+ If adding more bits is good, perhaps adding even more bits of
+precision is better? Here is what happens if we use an even larger
+value of `PREC':
+
+ $ gawk -M -vPREC=201 'BEGIN { print (0.1 + 12.2 == 12.3) }'
+ -| 0
+
+ This is not a bug in `gawk' or in the MPFR library. It is easy to
+forget that the finite number of bits used to store the value is often
+just an approximation after proper rounding. The test for equality
+succeeds if and only if _all_ bits in the two operands are exactly the
+same. Since this is not necessarily true after floating-point
+computations with a particular precision and effective rounding rule, a
+straight test for equality may not work.
+
+ So, don't assume that floating-point values can be compared for
+equality. You should also exercise caution when using other forms of
+comparisons. The standard way to compare between floating-point
+numbers is to determine how much error (or "tolerance") you will allow
+in a comparison and check to see if one value is within this error
+range of the other.
+
+ In applications where 15 or fewer decimal places suffice, hardware
+double precision arithmetic can be adequate, and is usually much faster.
+But you do need to keep in mind that every floating-point operation can
+suffer a new rounding error with catastrophic consequences as
+illustrated by our attempt to compute the value of the constant pi,
+(*note Floating-point Programming::). Extra precision can greatly
+enhance the stability and the accuracy of your computation in such
+cases.
+
+ Repeated addition is not necessarily equivalent to multiplication in
+floating-point arithmetic. In the last example (*note Floating-point
+Programming::), you may or may not succeed in getting the correct
+result by choosing an arbitrarily large value for `PREC'. Reformulation
+of the problem at hand is often the correct approach in such situations.
+
+
+File: gawk.info, Node: Integer Programming, Next: Arbitrary Precision
Integers, Prev: Exact Arithmetic, Up: Arbitrary Precision Arithmetic
+
+11.11 Effective Integer Programming
+===================================
+
+As has been mentioned already, `gawk' ordinarily uses hardware double
+precision with 64-bit IEEE binary floating-point representation for
+numbers on most systems. A large integer like 9007199254740997 has a
+binary representation that, although finite, is more than 53 bits long;
+it must also be rounded to 53 bits. The biggest integer that can be
+stored in a C `double' is usually the same as the largest possible
+value of a `double'. If your system `double' is an IEEE 64-bit
+`double', this largest possible value is an integer and can be
+represented precisely. What more should one know about integers?
+
+ If you want to know what is the largest integer, such that it and
+all smaller integers can be stored in 64-bit doubles without losing
+precision, then the answer is 2^53. The next representable number is
+the even number 2^53 + 2, meaning it is unlikely that you will be able
+to make `gawk' print 2^53 + 1 in integer format. The range of integers
+exactly representable by a 64-bit double is [-2^53, 2^53]. If you ever
+see an integer outside this range in `gawk' using 64-bit doubles, you
+have reason to be very suspicious about the accuracy of the output.
+Here is a simple program with erroneous output:
+
+ $ gawk 'BEGIN { i = 2^53 - 1; for (j = 0; j < 4; j++) print i + j }'
+ -| 9007199254740991
+ -| 9007199254740992
+ -| 9007199254740992
+ -| 9007199254740994
+
+ The lesson is to not assume that any large integer printed by `gawk'
+represents an exact result from your computation, especially if it wraps
+around on your screen.
+
+
+File: gawk.info, Node: Arbitrary Precision Integers, Next: MPFR and GMP
Libraries, Prev: Integer Programming, Up: Arbitrary Precision Arithmetic
+
+11.12 Arbitrary Precision Integer Arithmetic with `gawk'
+========================================================
+
+If the option `--bignum' or `-M' is specified, `gawk' performs all
+integer arithmetic using GMP arbitrary precision integers. Any number
+that looks like an integer in a program source or data file is stored
+as an arbitrary precision integer. The size of the integer is limited
+only by your computer's memory. The current floating-point context has
+no effect on operations involving integers. For example, the following
+computes 5^4^3^2, the result of which is beyond the limits of ordinary
+`gawk' numbers:
+
+ $ gawk -M 'BEGIN {
+ > x = 5^4^3^2
+ > print "# of digits =", length(x)
+ > print substr(x, 1, 20), "...", substr(x, length(x) - 19, 20)
+ > }'
+ -| # of digits = 183231
+ -| 62060698786608744707 ... 92256259918212890625
+
+ If you were to compute the same value using arbitrary precision
+floating-point values instead, the precision needed for correct output
+(using the formula `prec = 3.322 * dps'), would be 3.322 x 183231, or
+608693.
+
+ The result from an arithmetic operation with an integer and a
+floating-point value is a floating-point value with a precision equal
+to the working precision. The following program calculates the eighth
+term in Sylvester's sequence(1) using a recurrence:
+
+ $ gawk -M 'BEGIN {
+ > s = 2.0
+ > for (i = 1; i <= 7; i++)
+ > s = s * (s - 1) + 1
+ > print s
+ > }'
+ -| 113423713055421845118910464
+
+ The output differs from the acutal number,
+113423713055421844361000443, because the default precision of 53 is not
+enough to represent the floating-point results exactly. You can either
+increase the precision (100 is enough in this case), or replace the
+floating-point constant `2.0' with an integer, to perform all
+computations using integer arithmetic to get the correct output.
+
+ It will sometimes be necessary for `gawk' to implicitly convert an
+arbitrary precision integer into an arbitrary precision floating-point
+value. This is primarily because the MPFR library does not always
+provide the relevant interface to process arbitrary precision integers
+or mixed-mode numbers as needed by an operation or function. In such a
+case, the precision is set to the minimum value necessary for exact
+conversion, and the working precision is not used for this purpose. If
+this is not what you need or want, you can employ a subterfuge like
+this:
+
+ gawk -M 'BEGIN { n = 13; print (n + 0.0) % 2.0 }'
+
+ You can avoid this issue altogether by specifying the number as a
+float to begin with:
+
+ gawk -M 'BEGIN { n = 13.0; print n % 2.0 }'
+
+ Note that for the particular example above, there is unlikely to be a
+reason for simply not using the following:
+
+ gawk -M 'BEGIN { n = 13; print n % 2 }'
+
+ ---------- Footnotes ----------
+
+ (1) Weisstein, Eric W. `Sylvester's Sequence'. From MathWorld-A
+Wolfram Web Resource.
+`http://mathworld.wolfram.com/SylvestersSequence.html'
+
+
+File: gawk.info, Node: MPFR and GMP Libraries, Prev: Arbitrary Precision
Integers, Up: Arbitrary Precision Arithmetic
+
+11.13 Information About the MPFR and GMP Libraries
+==================================================
+
+There are a few elements available in the `PROCINFO' array to provide
+information about the MPFR and GMP libraries. *Note Auto-set::, for
+more information.
+
+
+File: gawk.info, Node: Advanced Features, Next: Library Functions, Prev:
Arbitrary Precision Arithmetic, Up: Top
+
+12 Advanced Features of `gawk'
******************************
Write documentation as if whoever reads it is a violent psychopath
@@@ -26353,10 -25564,10 +26359,10 @@@ Inde
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
- * cos() function: Numeric Functions. (line 14)
+ * cos() function: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 323)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 329)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
* ctime() user-defined function: Function Example. (line 72)
* currency symbols, localization: Explaining gettext. (line 103)
@@@ -27044,8 -26253,8 +27050,8 @@@
(line 26)
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 6)
- * gawk, regular expressions, precedence: Regexp Operators. (line 157)
+ * gawk, regular expressions, precedence: Regexp Operators. (line 161)
-* gawk, RT variable in <1>: Auto-set. (line 196)
+* gawk, RT variable in <1>: Auto-set. (line 213)
* gawk, RT variable in <2>: Getline/Variable/File.
(line 10)
* gawk, RT variable in <3>: Multiple Line. (line 129)
@@@ -27226,9 -26429,7 +27232,9 @@@
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
* INT signal (MS-Windows): Profiling. (line 206)
- * int() function: Numeric Functions. (line 22)
+ * int() function: Numeric Functions. (line 23)
+* integer, arbitrary precision: Arbitrary Precision Integers.
+ (line 6)
* integers: Basic Data Typing. (line 21)
* integers, unsigned: Basic Data Typing. (line 30)
* interacting with other programs: I/O Functions. (line 63)
@@@ -27738,19 -26932,17 +27744,19 @@@
* POSIX awk, OFMT variable and: OFMT. (line 27)
* POSIX awk, period (.), using: Regexp Operators. (line 50)
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
- * POSIX awk, regular expressions and: Regexp Operators. (line 157)
+ * POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
-* POSIX mode: Options. (line 222)
+* POSIX mode: Options. (line 228)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
-* POSIXLY_CORRECT environment variable: Options. (line 307)
+* POSIXLY_CORRECT environment variable: Options. (line 313)
+* PREC variable <1>: Setting Precision. (line 6)
+* PREC variable: User-modified. (line 134)
* precedence <1>: Precedence. (line 6)
* precedence: Increment Ops. (line 61)
- * precedence, regexp operators: Regexp Operators. (line 152)
+ * precedence, regexp operators: Regexp Operators. (line 156)
* print debugger command: Viewing And Changing Data.
(line 36)
* print statement: Printing. (line 16)
@@@ -27938,11 -27130,8 +27944,8 @@@
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 74)
-* RLENGTH variable: Auto-set. (line 183)
+* RLENGTH variable: Auto-set. (line 200)
* RLENGTH variable, match() function and: String Functions. (line 223)
- * RNDMODE variable <1>: Setting Rounding Mode.
- (line 6)
- * RNDMODE variable: User-modified. (line 138)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
* Robbins, Arnold <3>: Contributors. (line 108)
@@@ -27961,9 -27150,8 +27964,12 @@@
* robot, the: Dynamic Extensions. (line 6)
* Rommel, Kai Uwe: Contributors. (line 43)
* round() user-defined function: Round Function. (line 16)
+* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
-* RS variable <1>: User-modified. (line 134)
++* ROUNDMODE variable <1>: Setting Rounding Mode.
++ (line 6)
++* ROUNDMODE variable: User-modified. (line 138)
+* RS variable <1>: User-modified. (line 143)
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift() function (gawk): Bitwise Functions. (line 51)
@@@ -28418,441 -27606,420 +28424,441 @@@
Tag Table:
- Node: Top1346
- Node: Foreword31547
- Node: Preface35892
- Ref: Preface-Footnote-138945
- Ref: Preface-Footnote-239051
- Node: History39283
- Node: Names41674
- Ref: Names-Footnote-143151
- Node: This Manual43223
- Ref: This Manual-Footnote-148161
- Node: Conventions48261
- Node: Manual History50395
- Ref: Manual History-Footnote-153665
- Ref: Manual History-Footnote-253706
- Node: How To Contribute53780
- Node: Acknowledgments54924
- Node: Getting Started59420
- Node: Running gawk61799
- Node: One-shot62985
- Node: Read Terminal64210
- Ref: Read Terminal-Footnote-165860
- Ref: Read Terminal-Footnote-266136
- Node: Long66307
- Node: Executable Scripts67683
- Ref: Executable Scripts-Footnote-169552
- Ref: Executable Scripts-Footnote-269654
- Node: Comments70105
- Node: Quoting72572
- Node: DOS Quoting77195
- Node: Sample Data Files77870
- Node: Very Simple80902
- Node: Two Rules85501
- Node: More Complex87648
- Ref: More Complex-Footnote-190578
- Node: Statements/Lines90663
- Ref: Statements/Lines-Footnote-195125
- Node: Other Features95390
- Node: When96318
- Node: Invoking Gawk98465
- Node: Command Line99850
- Node: Options100633
- Ref: Options-Footnote-1114990
- Node: Other Arguments115015
- Node: Naming Standard Input117673
- Node: Environment Variables118767
- Node: AWKPATH Variable119211
- Ref: AWKPATH Variable-Footnote-1121808
- Node: Other Environment Variables122068
- Node: Exit Status124560
- Node: Include Files125235
- Node: Obsolete128720
- Node: Undocumented129406
- Node: Regexp129647
- Node: Regexp Usage131036
- Node: Escape Sequences133062
- Node: Regexp Operators138825
- Ref: Regexp Operators-Footnote-1146022
- Ref: Regexp Operators-Footnote-2146169
- Node: Bracket Expressions146267
- Ref: table-char-classes148157
- Node: GNU Regexp Operators150680
- Node: Case-sensitivity154403
- Ref: Case-sensitivity-Footnote-1157371
- Ref: Case-sensitivity-Footnote-2157606
- Node: Leftmost Longest157714
- Node: Computed Regexps158915
- Node: Reading Files162325
- Node: Records164329
- Ref: Records-Footnote-1173003
- Node: Fields173040
- Ref: Fields-Footnote-1176073
- Node: Nonconstant Fields176159
- Node: Changing Fields178361
- Node: Field Separators184342
- Node: Default Field Splitting186971
- Node: Regexp Field Splitting188088
- Node: Single Character Fields191430
- Node: Command Line Field Separator192489
- Node: Field Splitting Summary195930
- Ref: Field Splitting Summary-Footnote-1199122
- Node: Constant Size199223
- Node: Splitting By Content203807
- Ref: Splitting By Content-Footnote-1207533
- Node: Multiple Line207573
- Ref: Multiple Line-Footnote-1213420
- Node: Getline213599
- Node: Plain Getline215815
- Node: Getline/Variable217904
- Node: Getline/File219045
- Node: Getline/Variable/File220367
- Ref: Getline/Variable/File-Footnote-1221966
- Node: Getline/Pipe222053
- Node: Getline/Variable/Pipe224613
- Node: Getline/Coprocess225720
- Node: Getline/Variable/Coprocess226963
- Node: Getline Notes227677
- Node: Getline Summary229619
- Ref: table-getline-variants229962
- Node: Read Timeout230818
- Ref: Read Timeout-Footnote-1234563
- Node: Command line directories234620
- Node: Printing235250
- Node: Print236881
- Node: Print Examples238218
- Node: Output Separators241002
- Node: OFMT242762
- Node: Printf244120
- Node: Basic Printf245026
- Node: Control Letters246565
- Node: Format Modifiers250377
- Node: Printf Examples256386
- Node: Redirection259101
- Node: Special Files266085
- Node: Special FD266618
- Ref: Special FD-Footnote-1270243
- Node: Special Network270317
- Node: Special Caveats271167
- Node: Close Files And Pipes271963
- Ref: Close Files And Pipes-Footnote-1278986
- Ref: Close Files And Pipes-Footnote-2279134
- Node: Expressions279284
- Node: Values280416
- Node: Constants281092
- Node: Scalar Constants281772
- Ref: Scalar Constants-Footnote-1282631
- Node: Nondecimal-numbers282813
- Node: Regexp Constants285872
- Node: Using Constant Regexps286347
- Node: Variables289402
- Node: Using Variables290057
- Node: Assignment Options291781
- Node: Conversion293653
- Ref: table-locale-affects299029
- Ref: Conversion-Footnote-1299653
- Node: All Operators299762
- Node: Arithmetic Ops300392
- Node: Concatenation302897
- Ref: Concatenation-Footnote-1305690
- Node: Assignment Ops305810
- Ref: table-assign-ops310798
- Node: Increment Ops312206
- Node: Truth Values and Conditions315676
- Node: Truth Values316759
- Node: Typing and Comparison317808
- Node: Variable Typing318597
- Ref: Variable Typing-Footnote-1322494
- Node: Comparison Operators322616
- Ref: table-relational-ops323026
- Node: POSIX String Comparison326575
- Ref: POSIX String Comparison-Footnote-1327531
- Node: Boolean Ops327669
- Ref: Boolean Ops-Footnote-1331747
- Node: Conditional Exp331838
- Node: Function Calls333570
- Node: Precedence337164
- Node: Locales340833
- Node: Patterns and Actions341922
- Node: Pattern Overview342976
- Node: Regexp Patterns344645
- Node: Expression Patterns345188
- Node: Ranges348873
- Node: BEGIN/END351839
- Node: Using BEGIN/END352601
- Ref: Using BEGIN/END-Footnote-1355332
- Node: I/O And BEGIN/END355438
- Node: BEGINFILE/ENDFILE357720
- Node: Empty360613
- Node: Using Shell Variables360929
- Node: Action Overview363214
- Node: Statements365571
- Node: If Statement367425
- Node: While Statement368924
- Node: Do Statement370968
- Node: For Statement372124
- Node: Switch Statement375276
- Node: Break Statement377373
- Node: Continue Statement379363
- Node: Next Statement381156
- Node: Nextfile Statement383546
- Node: Exit Statement386091
- Node: Built-in Variables388507
- Node: User-modified389602
- Ref: User-modified-Footnote-1397955
- Node: Auto-set398017
- Ref: Auto-set-Footnote-1407863
- Node: ARGC and ARGV408068
- Node: Arrays411919
- Node: Array Basics413424
- Node: Array Intro414250
- Node: Reference to Elements418568
- Node: Assigning Elements420838
- Node: Array Example421329
- Node: Scanning an Array423061
- Node: Controlling Scanning425375
- Ref: Controlling Scanning-Footnote-1430308
- Node: Delete430624
- Ref: Delete-Footnote-1433059
- Node: Numeric Array Subscripts433116
- Node: Uninitialized Subscripts435299
- Node: Multi-dimensional436927
- Node: Multi-scanning440021
- Node: Arrays of Arrays441612
- Node: Functions446257
- Node: Built-in447079
- Node: Calling Built-in448157
- Node: Numeric Functions450145
- Ref: Numeric Functions-Footnote-1453910
- Ref: Numeric Functions-Footnote-2454267
- Ref: Numeric Functions-Footnote-3454315
- Node: String Functions454584
- Ref: String Functions-Footnote-1478081
- Ref: String Functions-Footnote-2478210
- Ref: String Functions-Footnote-3478458
- Node: Gory Details478545
- Ref: table-sub-escapes480224
- Ref: table-sub-posix-92481578
- Ref: table-sub-proposed482921
- Ref: table-posix-sub484271
- Ref: table-gensub-escapes485817
- Ref: Gory Details-Footnote-1487024
- Ref: Gory Details-Footnote-2487075
- Node: I/O Functions487226
- Ref: I/O Functions-Footnote-1493881
- Node: Time Functions494028
- Ref: Time Functions-Footnote-1504920
- Ref: Time Functions-Footnote-2504988
- Ref: Time Functions-Footnote-3505146
- Ref: Time Functions-Footnote-4505257
- Ref: Time Functions-Footnote-5505369
- Ref: Time Functions-Footnote-6505596
- Node: Bitwise Functions505862
- Ref: table-bitwise-ops506420
- Ref: Bitwise Functions-Footnote-1510580
- Node: Type Functions510764
- Node: I18N Functions511234
- Node: User-defined512861
- Node: Definition Syntax513665
- Ref: Definition Syntax-Footnote-1518575
- Node: Function Example518644
- Node: Function Caveats521238
- Node: Calling A Function521659
- Node: Variable Scope522774
- Node: Pass By Value/Reference524749
- Node: Return Statement528189
- Node: Dynamic Typing531170
- Node: Indirect Calls531905
- Node: Internationalization541590
- Node: I18N and L10N543029
- Node: Explaining gettext543715
- Ref: Explaining gettext-Footnote-1548781
- Ref: Explaining gettext-Footnote-2548965
- Node: Programmer i18n549130
- Node: Translator i18n553330
- Node: String Extraction554123
- Ref: String Extraction-Footnote-1555084
- Node: Printf Ordering555170
- Ref: Printf Ordering-Footnote-1557954
- Node: I18N Portability558018
- Ref: I18N Portability-Footnote-1560467
- Node: I18N Example560530
- Ref: I18N Example-Footnote-1563165
- Node: Gawk I18N563237
- Node: Arbitrary Precision Arithmetic563854
- Ref: Arbitrary Precision Arithmetic-Footnote-1566729
- Node: Floating-point Programming566877
- Node: Floating-point Representation572147
- Node: Floating-point Context573251
- Ref: table-ieee-formats574086
- Node: Rounding Mode575456
- Ref: table-rounding-modes576081
- Ref: Rounding Mode-Footnote-1579202
- Node: Arbitrary Precision Floats579383
- Ref: Arbitrary Precision Floats-Footnote-1581420
- Node: Setting Precision581731
- Node: Setting Rounding Mode584489
- Node: Floating-point Constants585398
- Node: Changing Precision586817
- Ref: Changing Precision-Footnote-1588217
- Node: Exact Arithmetic588390
- Node: Integer Programming591403
- Node: Arbitrary Precision Integers593183
- Ref: Arbitrary Precision Integers-Footnote-1596207
- Node: MPFR and GMP Libraries596353
- Node: Advanced Features596738
- Node: Nondecimal Data598261
- Node: Array Sorting599844
- Node: Controlling Array Traversal600541
- Node: Array Sorting Functions608778
- Ref: Array Sorting Functions-Footnote-1612452
- Ref: Array Sorting Functions-Footnote-2612545
- Node: Two-way I/O612739
- Ref: Two-way I/O-Footnote-1618171
- Node: TCP/IP Networking618241
- Node: Profiling621085
- Node: Library Functions628539
- Ref: Library Functions-Footnote-1631546
- Node: Library Names631717
- Ref: Library Names-Footnote-1635188
- Ref: Library Names-Footnote-2635408
- Node: General Functions635494
- Node: Strtonum Function636447
- Node: Assert Function639377
- Node: Round Function642703
- Node: Cliff Random Function644246
- Node: Ordinal Functions645262
- Ref: Ordinal Functions-Footnote-1648332
- Ref: Ordinal Functions-Footnote-2648584
- Node: Join Function648793
- Ref: Join Function-Footnote-1650564
- Node: Gettimeofday Function650764
- Node: Data File Management654479
- Node: Filetrans Function655111
- Node: Rewind Function659250
- Node: File Checking660637
- Node: Empty Files661731
- Node: Ignoring Assigns663961
- Node: Getopt Function665514
- Ref: Getopt Function-Footnote-1676818
- Node: Passwd Functions677021
- Ref: Passwd Functions-Footnote-1685996
- Node: Group Functions686084
- Node: Walking Arrays694168
- Node: Sample Programs695737
- Node: Running Examples696402
- Node: Clones697130
- Node: Cut Program698354
- Node: Egrep Program708199
- Ref: Egrep Program-Footnote-1715972
- Node: Id Program716082
- Node: Split Program719698
- Ref: Split Program-Footnote-1723217
- Node: Tee Program723345
- Node: Uniq Program726148
- Node: Wc Program733577
- Ref: Wc Program-Footnote-1737843
- Ref: Wc Program-Footnote-2738043
- Node: Miscellaneous Programs738135
- Node: Dupword Program739323
- Node: Alarm Program741354
- Node: Translate Program746103
- Ref: Translate Program-Footnote-1750490
- Ref: Translate Program-Footnote-2750718
- Node: Labels Program750852
- Ref: Labels Program-Footnote-1754223
- Node: Word Sorting754307
- Node: History Sorting758191
- Node: Extract Program760030
- Ref: Extract Program-Footnote-1767513
- Node: Simple Sed767641
- Node: Igawk Program770703
- Ref: Igawk Program-Footnote-1785860
- Ref: Igawk Program-Footnote-2786061
- Node: Anagram Program786199
- Node: Signature Program789267
- Node: Debugger790367
- Node: Debugging791319
- Node: Debugging Concepts791752
- Node: Debugging Terms793608
- Node: Awk Debugging796205
- Node: Sample Debugging Session797097
- Node: Debugger Invocation797617
- Node: Finding The Bug798946
- Node: List of Debugger Commands805434
- Node: Breakpoint Control806768
- Node: Debugger Execution Control810432
- Node: Viewing And Changing Data813792
- Node: Execution Stack817148
- Node: Debugger Info818615
- Node: Miscellaneous Debugger Commands822596
- Node: Readline Support828041
- Node: Limitations828872
- Node: Language History831124
- Node: V7/SVR3.1832636
- Node: SVR4834957
- Node: POSIX836399
- Node: BTL837407
- Node: POSIX/GNU838141
- Node: Common Extensions843292
- Node: Ranges and Locales844399
- Ref: Ranges and Locales-Footnote-1849003
- Node: Contributors849224
- Node: Installation853485
- Node: Gawk Distribution854379
- Node: Getting854863
- Node: Extracting855689
- Node: Distribution contents857381
- Node: Unix Installation862603
- Node: Quick Installation863220
- Node: Additional Configuration Options865182
- Node: Configuration Philosophy866659
- Node: Non-Unix Installation869001
- Node: PC Installation869459
- Node: PC Binary Installation870758
- Node: PC Compiling872606
- Node: PC Testing875550
- Node: PC Using876726
- Node: Cygwin880911
- Node: MSYS881911
- Node: VMS Installation882425
- Node: VMS Compilation883028
- Ref: VMS Compilation-Footnote-1884035
- Node: VMS Installation Details884093
- Node: VMS Running885728
- Node: VMS Old Gawk887335
- Node: Bugs887809
- Node: Other Versions891661
- Node: Notes896976
- Node: Compatibility Mode897668
- Node: Additions898451
- Node: Accessing The Source899263
- Node: Adding Code900688
- Node: New Ports906655
- Node: Dynamic Extensions910768
- Node: Internals912208
- Node: Plugin License920727
- Node: Loading Extensions921365
- Node: Sample Library923175
- Node: Internal File Description923865
- Node: Internal File Ops927580
- Ref: Internal File Ops-Footnote-1932304
- Node: Using Internal File Ops932444
- Node: Future Extensions934821
- Node: Basic Concepts937325
- Node: Basic High Level938082
- Ref: Basic High Level-Footnote-1942117
- Node: Basic Data Typing942302
- Node: Floating Point Issues946827
- Node: String Conversion Precision947910
- Ref: String Conversion Precision-Footnote-1949610
- Node: Unexpected Results949719
- Node: POSIX Floating Point Problems951545
- Ref: POSIX Floating Point Problems-Footnote-1955250
- Node: Glossary955288
- Node: Copying980264
- Node: GNU Free Documentation License1017821
- Node: Index1042958
+ Node: Top1352
-Node: Foreword30423
-Node: Preface34768
-Ref: Preface-Footnote-137821
-Ref: Preface-Footnote-237927
-Node: History38159
-Node: Names40550
-Ref: Names-Footnote-142027
-Node: This Manual42099
-Ref: This Manual-Footnote-147037
-Node: Conventions47137
-Node: Manual History49271
-Ref: Manual History-Footnote-152541
-Ref: Manual History-Footnote-252582
-Node: How To Contribute52656
-Node: Acknowledgments53800
-Node: Getting Started58131
-Node: Running gawk60510
-Node: One-shot61696
-Node: Read Terminal62921
-Ref: Read Terminal-Footnote-164571
-Ref: Read Terminal-Footnote-264847
-Node: Long65018
-Node: Executable Scripts66394
-Ref: Executable Scripts-Footnote-168263
-Ref: Executable Scripts-Footnote-268365
-Node: Comments68912
-Node: Quoting71379
-Node: DOS Quoting76002
-Node: Sample Data Files76677
-Node: Very Simple79709
-Node: Two Rules84308
-Node: More Complex86455
-Ref: More Complex-Footnote-189385
-Node: Statements/Lines89470
-Ref: Statements/Lines-Footnote-193932
-Node: Other Features94197
-Node: When95125
-Node: Invoking Gawk97272
-Node: Command Line98657
-Node: Options99440
-Ref: Options-Footnote-1113585
-Node: Other Arguments113610
-Node: Naming Standard Input116268
-Node: Environment Variables117362
-Node: AWKPATH Variable117806
-Ref: AWKPATH Variable-Footnote-1120403
-Node: Other Environment Variables120663
-Node: Exit Status123155
-Node: Include Files123830
-Node: Obsolete127315
-Node: Undocumented128001
-Node: Regexp128242
-Node: Regexp Usage129631
-Node: Escape Sequences131657
-Node: Regexp Operators137420
-Ref: Regexp Operators-Footnote-1144800
-Ref: Regexp Operators-Footnote-2144947
-Node: Bracket Expressions145045
-Ref: table-char-classes146935
-Node: GNU Regexp Operators149458
-Node: Case-sensitivity153181
-Ref: Case-sensitivity-Footnote-1156149
-Ref: Case-sensitivity-Footnote-2156384
-Node: Leftmost Longest156492
-Node: Computed Regexps157693
-Node: Reading Files161103
-Node: Records163107
-Ref: Records-Footnote-1171781
-Node: Fields171818
-Ref: Fields-Footnote-1174851
-Node: Nonconstant Fields174937
-Node: Changing Fields177139
-Node: Field Separators183120
-Node: Default Field Splitting185749
-Node: Regexp Field Splitting186866
-Node: Single Character Fields190208
-Node: Command Line Field Separator191267
-Node: Field Splitting Summary194708
-Ref: Field Splitting Summary-Footnote-1197900
-Node: Constant Size198001
-Node: Splitting By Content202585
-Ref: Splitting By Content-Footnote-1206311
-Node: Multiple Line206351
-Ref: Multiple Line-Footnote-1212198
-Node: Getline212377
-Node: Plain Getline214593
-Node: Getline/Variable216682
-Node: Getline/File217823
-Node: Getline/Variable/File219145
-Ref: Getline/Variable/File-Footnote-1220744
-Node: Getline/Pipe220831
-Node: Getline/Variable/Pipe223391
-Node: Getline/Coprocess224498
-Node: Getline/Variable/Coprocess225741
-Node: Getline Notes226455
-Node: Getline Summary228397
-Ref: table-getline-variants228740
-Node: Read Timeout229596
-Ref: Read Timeout-Footnote-1233341
-Node: Command line directories233398
-Node: Printing234028
-Node: Print235659
-Node: Print Examples236996
-Node: Output Separators239780
-Node: OFMT241540
-Node: Printf242898
-Node: Basic Printf243804
-Node: Control Letters245343
-Node: Format Modifiers249155
-Node: Printf Examples255164
-Node: Redirection257879
-Node: Special Files264863
-Node: Special FD265396
-Ref: Special FD-Footnote-1269021
-Node: Special Network269095
-Node: Special Caveats269945
-Node: Close Files And Pipes270741
-Ref: Close Files And Pipes-Footnote-1277764
-Ref: Close Files And Pipes-Footnote-2277912
-Node: Expressions278062
-Node: Values279194
-Node: Constants279870
-Node: Scalar Constants280550
-Ref: Scalar Constants-Footnote-1281409
-Node: Nondecimal-numbers281591
-Node: Regexp Constants284650
-Node: Using Constant Regexps285125
-Node: Variables288180
-Node: Using Variables288835
-Node: Assignment Options290559
-Node: Conversion292431
-Ref: table-locale-affects297807
-Ref: Conversion-Footnote-1298431
-Node: All Operators298540
-Node: Arithmetic Ops299170
-Node: Concatenation301675
-Ref: Concatenation-Footnote-1304468
-Node: Assignment Ops304588
-Ref: table-assign-ops309576
-Node: Increment Ops310984
-Node: Truth Values and Conditions314454
-Node: Truth Values315537
-Node: Typing and Comparison316586
-Node: Variable Typing317375
-Ref: Variable Typing-Footnote-1321272
-Node: Comparison Operators321394
-Ref: table-relational-ops321804
-Node: POSIX String Comparison325353
-Ref: POSIX String Comparison-Footnote-1326309
-Node: Boolean Ops326447
-Ref: Boolean Ops-Footnote-1330525
-Node: Conditional Exp330616
-Node: Function Calls332348
-Node: Precedence335942
-Node: Locales339611
-Node: Patterns and Actions340700
-Node: Pattern Overview341754
-Node: Regexp Patterns343423
-Node: Expression Patterns343966
-Node: Ranges347651
-Node: BEGIN/END350617
-Node: Using BEGIN/END351379
-Ref: Using BEGIN/END-Footnote-1354110
-Node: I/O And BEGIN/END354216
-Node: BEGINFILE/ENDFILE356498
-Node: Empty359391
-Node: Using Shell Variables359707
-Node: Action Overview361992
-Node: Statements364349
-Node: If Statement366203
-Node: While Statement367702
-Node: Do Statement369746
-Node: For Statement370902
-Node: Switch Statement374054
-Node: Break Statement376151
-Node: Continue Statement378141
-Node: Next Statement379934
-Node: Nextfile Statement382324
-Node: Exit Statement384869
-Node: Built-in Variables387285
-Node: User-modified388380
-Ref: User-modified-Footnote-1396406
-Node: Auto-set396468
-Ref: Auto-set-Footnote-1405759
-Node: ARGC and ARGV405964
-Node: Arrays409815
-Node: Array Basics411320
-Node: Array Intro412146
-Node: Reference to Elements416464
-Node: Assigning Elements418734
-Node: Array Example419225
-Node: Scanning an Array420957
-Node: Controlling Scanning423271
-Ref: Controlling Scanning-Footnote-1428204
-Node: Delete428520
-Ref: Delete-Footnote-1430955
-Node: Numeric Array Subscripts431012
-Node: Uninitialized Subscripts433195
-Node: Multi-dimensional434823
-Node: Multi-scanning437917
-Node: Arrays of Arrays439508
-Node: Functions444153
-Node: Built-in444975
-Node: Calling Built-in446053
-Node: Numeric Functions448041
-Ref: Numeric Functions-Footnote-1451873
-Ref: Numeric Functions-Footnote-2452230
-Ref: Numeric Functions-Footnote-3452278
-Node: String Functions452547
-Ref: String Functions-Footnote-1476044
-Ref: String Functions-Footnote-2476173
-Ref: String Functions-Footnote-3476421
-Node: Gory Details476508
-Ref: table-sub-escapes478187
-Ref: table-sub-posix-92479541
-Ref: table-sub-proposed480884
-Ref: table-posix-sub482234
-Ref: table-gensub-escapes483780
-Ref: Gory Details-Footnote-1484987
-Ref: Gory Details-Footnote-2485038
-Node: I/O Functions485189
-Ref: I/O Functions-Footnote-1491844
-Node: Time Functions491991
-Ref: Time Functions-Footnote-1502883
-Ref: Time Functions-Footnote-2502951
-Ref: Time Functions-Footnote-3503109
-Ref: Time Functions-Footnote-4503220
-Ref: Time Functions-Footnote-5503332
-Ref: Time Functions-Footnote-6503559
-Node: Bitwise Functions503825
-Ref: table-bitwise-ops504383
-Ref: Bitwise Functions-Footnote-1508543
-Node: Type Functions508727
-Node: I18N Functions509197
-Node: User-defined510824
-Node: Definition Syntax511628
-Ref: Definition Syntax-Footnote-1516538
-Node: Function Example516607
-Node: Function Caveats519201
-Node: Calling A Function519622
-Node: Variable Scope520737
-Node: Pass By Value/Reference522712
-Node: Return Statement526152
-Node: Dynamic Typing529133
-Node: Indirect Calls529868
-Node: Internationalization539553
-Node: I18N and L10N540979
-Node: Explaining gettext541665
-Ref: Explaining gettext-Footnote-1546731
-Ref: Explaining gettext-Footnote-2546915
-Node: Programmer i18n547080
-Node: Translator i18n551280
-Node: String Extraction552073
-Ref: String Extraction-Footnote-1553034
-Node: Printf Ordering553120
-Ref: Printf Ordering-Footnote-1555904
-Node: I18N Portability555968
-Ref: I18N Portability-Footnote-1558417
-Node: I18N Example558480
-Ref: I18N Example-Footnote-1561115
-Node: Gawk I18N561187
-Node: Advanced Features561804
-Node: Nondecimal Data563317
-Node: Array Sorting564900
-Node: Controlling Array Traversal565597
-Node: Array Sorting Functions573834
-Ref: Array Sorting Functions-Footnote-1577508
-Ref: Array Sorting Functions-Footnote-2577601
-Node: Two-way I/O577795
-Ref: Two-way I/O-Footnote-1583227
-Node: TCP/IP Networking583297
-Node: Profiling586141
-Node: Library Functions593595
-Ref: Library Functions-Footnote-1596602
-Node: Library Names596773
-Ref: Library Names-Footnote-1600244
-Ref: Library Names-Footnote-2600464
-Node: General Functions600550
-Node: Strtonum Function601503
-Node: Assert Function604433
-Node: Round Function607759
-Node: Cliff Random Function609302
-Node: Ordinal Functions610318
-Ref: Ordinal Functions-Footnote-1613388
-Ref: Ordinal Functions-Footnote-2613640
-Node: Join Function613849
-Ref: Join Function-Footnote-1615620
-Node: Gettimeofday Function615820
-Node: Data File Management619535
-Node: Filetrans Function620167
-Node: Rewind Function624306
-Node: File Checking625693
-Node: Empty Files626787
-Node: Ignoring Assigns629017
-Node: Getopt Function630570
-Ref: Getopt Function-Footnote-1641874
-Node: Passwd Functions642077
-Ref: Passwd Functions-Footnote-1651052
-Node: Group Functions651140
-Node: Walking Arrays659224
-Node: Sample Programs660793
-Node: Running Examples661458
-Node: Clones662186
-Node: Cut Program663410
-Node: Egrep Program673255
-Ref: Egrep Program-Footnote-1681028
-Node: Id Program681138
-Node: Split Program684754
-Ref: Split Program-Footnote-1688273
-Node: Tee Program688401
-Node: Uniq Program691204
-Node: Wc Program698633
-Ref: Wc Program-Footnote-1702899
-Ref: Wc Program-Footnote-2703099
-Node: Miscellaneous Programs703191
-Node: Dupword Program704379
-Node: Alarm Program706410
-Node: Translate Program711159
-Ref: Translate Program-Footnote-1715546
-Ref: Translate Program-Footnote-2715774
-Node: Labels Program715908
-Ref: Labels Program-Footnote-1719279
-Node: Word Sorting719363
-Node: History Sorting723247
-Node: Extract Program725086
-Ref: Extract Program-Footnote-1732569
-Node: Simple Sed732697
-Node: Igawk Program735759
-Ref: Igawk Program-Footnote-1750916
-Ref: Igawk Program-Footnote-2751117
-Node: Anagram Program751255
-Node: Signature Program754323
-Node: Debugger755423
-Node: Debugging756375
-Node: Debugging Concepts756808
-Node: Debugging Terms758664
-Node: Awk Debugging761261
-Node: Sample Debugging Session762153
-Node: Debugger Invocation762673
-Node: Finding The Bug764002
-Node: List of Debugger Commands770490
-Node: Breakpoint Control771824
-Node: Debugger Execution Control775488
-Node: Viewing And Changing Data778848
-Node: Execution Stack782204
-Node: Debugger Info783671
-Node: Miscellaneous Debugger Commands787652
-Node: Readline Support793097
-Node: Limitations793928
-Node: Language History796180
-Node: V7/SVR3.1797692
-Node: SVR4800013
-Node: POSIX801455
-Node: BTL802463
-Node: POSIX/GNU803197
-Node: Common Extensions808348
-Node: Ranges and Locales809455
-Ref: Ranges and Locales-Footnote-1814059
-Node: Contributors814280
-Node: Installation818541
-Node: Gawk Distribution819435
-Node: Getting819919
-Node: Extracting820745
-Node: Distribution contents822437
-Node: Unix Installation827659
-Node: Quick Installation828276
-Node: Additional Configuration Options830238
-Node: Configuration Philosophy831715
-Node: Non-Unix Installation834057
-Node: PC Installation834515
-Node: PC Binary Installation835814
-Node: PC Compiling837662
-Node: PC Testing840606
-Node: PC Using841782
-Node: Cygwin845967
-Node: MSYS846967
-Node: VMS Installation847481
-Node: VMS Compilation848084
-Ref: VMS Compilation-Footnote-1849091
-Node: VMS Installation Details849149
-Node: VMS Running850784
-Node: VMS Old Gawk852391
-Node: Bugs852865
-Node: Other Versions856717
-Node: Notes862032
-Node: Compatibility Mode862724
-Node: Additions863507
-Node: Accessing The Source864319
-Node: Adding Code865744
-Node: New Ports871711
-Node: Dynamic Extensions875824
-Node: Internals877264
-Node: Plugin License885783
-Node: Loading Extensions886421
-Node: Sample Library888231
-Node: Internal File Description888921
-Node: Internal File Ops892636
-Ref: Internal File Ops-Footnote-1897360
-Node: Using Internal File Ops897500
-Node: Future Extensions899877
-Node: Basic Concepts902381
-Node: Basic High Level903138
-Ref: Basic High Level-Footnote-1907173
-Node: Basic Data Typing907358
-Node: Floating Point Issues911883
-Node: String Conversion Precision912966
-Ref: String Conversion Precision-Footnote-1914666
-Node: Unexpected Results914775
-Node: POSIX Floating Point Problems916601
-Ref: POSIX Floating Point Problems-Footnote-1920306
-Node: Glossary920344
-Node: Copying945320
-Node: GNU Free Documentation License982877
-Node: Index1008014
++Node: Foreword31559
++Node: Preface35904
++Ref: Preface-Footnote-138957
++Ref: Preface-Footnote-239063
++Node: History39295
++Node: Names41686
++Ref: Names-Footnote-143163
++Node: This Manual43235
++Ref: This Manual-Footnote-148173
++Node: Conventions48273
++Node: Manual History50407
++Ref: Manual History-Footnote-153677
++Ref: Manual History-Footnote-253718
++Node: How To Contribute53792
++Node: Acknowledgments54936
++Node: Getting Started59432
++Node: Running gawk61811
++Node: One-shot62997
++Node: Read Terminal64222
++Ref: Read Terminal-Footnote-165872
++Ref: Read Terminal-Footnote-266148
++Node: Long66319
++Node: Executable Scripts67695
++Ref: Executable Scripts-Footnote-169564
++Ref: Executable Scripts-Footnote-269666
++Node: Comments70213
++Node: Quoting72680
++Node: DOS Quoting77303
++Node: Sample Data Files77978
++Node: Very Simple81010
++Node: Two Rules85609
++Node: More Complex87756
++Ref: More Complex-Footnote-190686
++Node: Statements/Lines90771
++Ref: Statements/Lines-Footnote-195233
++Node: Other Features95498
++Node: When96426
++Node: Invoking Gawk98573
++Node: Command Line99958
++Node: Options100741
++Ref: Options-Footnote-1115098
++Node: Other Arguments115123
++Node: Naming Standard Input117781
++Node: Environment Variables118875
++Node: AWKPATH Variable119319
++Ref: AWKPATH Variable-Footnote-1121916
++Node: Other Environment Variables122176
++Node: Exit Status124668
++Node: Include Files125343
++Node: Obsolete128828
++Node: Undocumented129514
++Node: Regexp129755
++Node: Regexp Usage131144
++Node: Escape Sequences133170
++Node: Regexp Operators138933
++Ref: Regexp Operators-Footnote-1146313
++Ref: Regexp Operators-Footnote-2146460
++Node: Bracket Expressions146558
++Ref: table-char-classes148448
++Node: GNU Regexp Operators150971
++Node: Case-sensitivity154694
++Ref: Case-sensitivity-Footnote-1157662
++Ref: Case-sensitivity-Footnote-2157897
++Node: Leftmost Longest158005
++Node: Computed Regexps159206
++Node: Reading Files162616
++Node: Records164620
++Ref: Records-Footnote-1173294
++Node: Fields173331
++Ref: Fields-Footnote-1176364
++Node: Nonconstant Fields176450
++Node: Changing Fields178652
++Node: Field Separators184633
++Node: Default Field Splitting187262
++Node: Regexp Field Splitting188379
++Node: Single Character Fields191721
++Node: Command Line Field Separator192780
++Node: Field Splitting Summary196221
++Ref: Field Splitting Summary-Footnote-1199413
++Node: Constant Size199514
++Node: Splitting By Content204098
++Ref: Splitting By Content-Footnote-1207824
++Node: Multiple Line207864
++Ref: Multiple Line-Footnote-1213711
++Node: Getline213890
++Node: Plain Getline216106
++Node: Getline/Variable218195
++Node: Getline/File219336
++Node: Getline/Variable/File220658
++Ref: Getline/Variable/File-Footnote-1222257
++Node: Getline/Pipe222344
++Node: Getline/Variable/Pipe224904
++Node: Getline/Coprocess226011
++Node: Getline/Variable/Coprocess227254
++Node: Getline Notes227968
++Node: Getline Summary229910
++Ref: table-getline-variants230253
++Node: Read Timeout231109
++Ref: Read Timeout-Footnote-1234854
++Node: Command line directories234911
++Node: Printing235541
++Node: Print237172
++Node: Print Examples238509
++Node: Output Separators241293
++Node: OFMT243053
++Node: Printf244411
++Node: Basic Printf245317
++Node: Control Letters246856
++Node: Format Modifiers250668
++Node: Printf Examples256677
++Node: Redirection259392
++Node: Special Files266376
++Node: Special FD266909
++Ref: Special FD-Footnote-1270534
++Node: Special Network270608
++Node: Special Caveats271458
++Node: Close Files And Pipes272254
++Ref: Close Files And Pipes-Footnote-1279277
++Ref: Close Files And Pipes-Footnote-2279425
++Node: Expressions279575
++Node: Values280707
++Node: Constants281383
++Node: Scalar Constants282063
++Ref: Scalar Constants-Footnote-1282922
++Node: Nondecimal-numbers283104
++Node: Regexp Constants286163
++Node: Using Constant Regexps286638
++Node: Variables289693
++Node: Using Variables290348
++Node: Assignment Options292072
++Node: Conversion293944
++Ref: table-locale-affects299320
++Ref: Conversion-Footnote-1299944
++Node: All Operators300053
++Node: Arithmetic Ops300683
++Node: Concatenation303188
++Ref: Concatenation-Footnote-1305981
++Node: Assignment Ops306101
++Ref: table-assign-ops311089
++Node: Increment Ops312497
++Node: Truth Values and Conditions315967
++Node: Truth Values317050
++Node: Typing and Comparison318099
++Node: Variable Typing318888
++Ref: Variable Typing-Footnote-1322785
++Node: Comparison Operators322907
++Ref: table-relational-ops323317
++Node: POSIX String Comparison326866
++Ref: POSIX String Comparison-Footnote-1327822
++Node: Boolean Ops327960
++Ref: Boolean Ops-Footnote-1332038
++Node: Conditional Exp332129
++Node: Function Calls333861
++Node: Precedence337455
++Node: Locales341124
++Node: Patterns and Actions342213
++Node: Pattern Overview343267
++Node: Regexp Patterns344936
++Node: Expression Patterns345479
++Node: Ranges349164
++Node: BEGIN/END352130
++Node: Using BEGIN/END352892
++Ref: Using BEGIN/END-Footnote-1355623
++Node: I/O And BEGIN/END355729
++Node: BEGINFILE/ENDFILE358011
++Node: Empty360904
++Node: Using Shell Variables361220
++Node: Action Overview363505
++Node: Statements365862
++Node: If Statement367716
++Node: While Statement369215
++Node: Do Statement371259
++Node: For Statement372415
++Node: Switch Statement375567
++Node: Break Statement377664
++Node: Continue Statement379654
++Node: Next Statement381447
++Node: Nextfile Statement383837
++Node: Exit Statement386382
++Node: Built-in Variables388798
++Node: User-modified389893
++Ref: User-modified-Footnote-1398248
++Node: Auto-set398310
++Ref: Auto-set-Footnote-1408156
++Node: ARGC and ARGV408361
++Node: Arrays412212
++Node: Array Basics413717
++Node: Array Intro414543
++Node: Reference to Elements418861
++Node: Assigning Elements421131
++Node: Array Example421622
++Node: Scanning an Array423354
++Node: Controlling Scanning425668
++Ref: Controlling Scanning-Footnote-1430601
++Node: Delete430917
++Ref: Delete-Footnote-1433352
++Node: Numeric Array Subscripts433409
++Node: Uninitialized Subscripts435592
++Node: Multi-dimensional437220
++Node: Multi-scanning440314
++Node: Arrays of Arrays441905
++Node: Functions446550
++Node: Built-in447372
++Node: Calling Built-in448450
++Node: Numeric Functions450438
++Ref: Numeric Functions-Footnote-1454270
++Ref: Numeric Functions-Footnote-2454627
++Ref: Numeric Functions-Footnote-3454675
++Node: String Functions454944
++Ref: String Functions-Footnote-1478441
++Ref: String Functions-Footnote-2478570
++Ref: String Functions-Footnote-3478818
++Node: Gory Details478905
++Ref: table-sub-escapes480584
++Ref: table-sub-posix-92481938
++Ref: table-sub-proposed483281
++Ref: table-posix-sub484631
++Ref: table-gensub-escapes486177
++Ref: Gory Details-Footnote-1487384
++Ref: Gory Details-Footnote-2487435
++Node: I/O Functions487586
++Ref: I/O Functions-Footnote-1494241
++Node: Time Functions494388
++Ref: Time Functions-Footnote-1505280
++Ref: Time Functions-Footnote-2505348
++Ref: Time Functions-Footnote-3505506
++Ref: Time Functions-Footnote-4505617
++Ref: Time Functions-Footnote-5505729
++Ref: Time Functions-Footnote-6505956
++Node: Bitwise Functions506222
++Ref: table-bitwise-ops506780
++Ref: Bitwise Functions-Footnote-1510940
++Node: Type Functions511124
++Node: I18N Functions511594
++Node: User-defined513221
++Node: Definition Syntax514025
++Ref: Definition Syntax-Footnote-1518935
++Node: Function Example519004
++Node: Function Caveats521598
++Node: Calling A Function522019
++Node: Variable Scope523134
++Node: Pass By Value/Reference525109
++Node: Return Statement528549
++Node: Dynamic Typing531530
++Node: Indirect Calls532265
++Node: Internationalization541950
++Node: I18N and L10N543389
++Node: Explaining gettext544075
++Ref: Explaining gettext-Footnote-1549141
++Ref: Explaining gettext-Footnote-2549325
++Node: Programmer i18n549490
++Node: Translator i18n553690
++Node: String Extraction554483
++Ref: String Extraction-Footnote-1555444
++Node: Printf Ordering555530
++Ref: Printf Ordering-Footnote-1558314
++Node: I18N Portability558378
++Ref: I18N Portability-Footnote-1560827
++Node: I18N Example560890
++Ref: I18N Example-Footnote-1563525
++Node: Gawk I18N563597
++Node: Arbitrary Precision Arithmetic564214
++Ref: Arbitrary Precision Arithmetic-Footnote-1567089
++Node: Floating-point Programming567237
++Node: Floating-point Representation572507
++Node: Floating-point Context573611
++Ref: table-ieee-formats574446
++Node: Rounding Mode575816
++Ref: table-rounding-modes576443
++Ref: Rounding Mode-Footnote-1579566
++Node: Arbitrary Precision Floats579747
++Ref: Arbitrary Precision Floats-Footnote-1581788
++Node: Setting Precision582099
++Node: Setting Rounding Mode584857
++Node: Floating-point Constants585774
++Node: Changing Precision587193
++Ref: Changing Precision-Footnote-1588593
++Node: Exact Arithmetic588766
++Node: Integer Programming591779
++Node: Arbitrary Precision Integers593559
++Ref: Arbitrary Precision Integers-Footnote-1596583
++Node: MPFR and GMP Libraries596729
++Node: Advanced Features597114
++Node: Nondecimal Data598637
++Node: Array Sorting600220
++Node: Controlling Array Traversal600917
++Node: Array Sorting Functions609154
++Ref: Array Sorting Functions-Footnote-1612828
++Ref: Array Sorting Functions-Footnote-2612921
++Node: Two-way I/O613115
++Ref: Two-way I/O-Footnote-1618547
++Node: TCP/IP Networking618617
++Node: Profiling621461
++Node: Library Functions628915
++Ref: Library Functions-Footnote-1631922
++Node: Library Names632093
++Ref: Library Names-Footnote-1635564
++Ref: Library Names-Footnote-2635784
++Node: General Functions635870
++Node: Strtonum Function636823
++Node: Assert Function639753
++Node: Round Function643079
++Node: Cliff Random Function644622
++Node: Ordinal Functions645638
++Ref: Ordinal Functions-Footnote-1648708
++Ref: Ordinal Functions-Footnote-2648960
++Node: Join Function649169
++Ref: Join Function-Footnote-1650940
++Node: Gettimeofday Function651140
++Node: Data File Management654855
++Node: Filetrans Function655487
++Node: Rewind Function659626
++Node: File Checking661013
++Node: Empty Files662107
++Node: Ignoring Assigns664337
++Node: Getopt Function665890
++Ref: Getopt Function-Footnote-1677194
++Node: Passwd Functions677397
++Ref: Passwd Functions-Footnote-1686372
++Node: Group Functions686460
++Node: Walking Arrays694544
++Node: Sample Programs696113
++Node: Running Examples696778
++Node: Clones697506
++Node: Cut Program698730
++Node: Egrep Program708575
++Ref: Egrep Program-Footnote-1716348
++Node: Id Program716458
++Node: Split Program720074
++Ref: Split Program-Footnote-1723593
++Node: Tee Program723721
++Node: Uniq Program726524
++Node: Wc Program733953
++Ref: Wc Program-Footnote-1738219
++Ref: Wc Program-Footnote-2738419
++Node: Miscellaneous Programs738511
++Node: Dupword Program739699
++Node: Alarm Program741730
++Node: Translate Program746479
++Ref: Translate Program-Footnote-1750866
++Ref: Translate Program-Footnote-2751094
++Node: Labels Program751228
++Ref: Labels Program-Footnote-1754599
++Node: Word Sorting754683
++Node: History Sorting758567
++Node: Extract Program760406
++Ref: Extract Program-Footnote-1767889
++Node: Simple Sed768017
++Node: Igawk Program771079
++Ref: Igawk Program-Footnote-1786236
++Ref: Igawk Program-Footnote-2786437
++Node: Anagram Program786575
++Node: Signature Program789643
++Node: Debugger790743
++Node: Debugging791695
++Node: Debugging Concepts792128
++Node: Debugging Terms793984
++Node: Awk Debugging796581
++Node: Sample Debugging Session797473
++Node: Debugger Invocation797993
++Node: Finding The Bug799322
++Node: List of Debugger Commands805810
++Node: Breakpoint Control807144
++Node: Debugger Execution Control810808
++Node: Viewing And Changing Data814168
++Node: Execution Stack817524
++Node: Debugger Info818991
++Node: Miscellaneous Debugger Commands822972
++Node: Readline Support828417
++Node: Limitations829248
++Node: Language History831500
++Node: V7/SVR3.1833012
++Node: SVR4835333
++Node: POSIX836775
++Node: BTL837783
++Node: POSIX/GNU838517
++Node: Common Extensions843668
++Node: Ranges and Locales844775
++Ref: Ranges and Locales-Footnote-1849379
++Node: Contributors849600
++Node: Installation853861
++Node: Gawk Distribution854755
++Node: Getting855239
++Node: Extracting856065
++Node: Distribution contents857757
++Node: Unix Installation862979
++Node: Quick Installation863596
++Node: Additional Configuration Options865558
++Node: Configuration Philosophy867035
++Node: Non-Unix Installation869377
++Node: PC Installation869835
++Node: PC Binary Installation871134
++Node: PC Compiling872982
++Node: PC Testing875926
++Node: PC Using877102
++Node: Cygwin881287
++Node: MSYS882287
++Node: VMS Installation882801
++Node: VMS Compilation883404
++Ref: VMS Compilation-Footnote-1884411
++Node: VMS Installation Details884469
++Node: VMS Running886104
++Node: VMS Old Gawk887711
++Node: Bugs888185
++Node: Other Versions892037
++Node: Notes897352
++Node: Compatibility Mode898044
++Node: Additions898827
++Node: Accessing The Source899639
++Node: Adding Code901064
++Node: New Ports907031
++Node: Dynamic Extensions911144
++Node: Internals912584
++Node: Plugin License921103
++Node: Loading Extensions921741
++Node: Sample Library923551
++Node: Internal File Description924241
++Node: Internal File Ops927956
++Ref: Internal File Ops-Footnote-1932680
++Node: Using Internal File Ops932820
++Node: Future Extensions935197
++Node: Basic Concepts937701
++Node: Basic High Level938458
++Ref: Basic High Level-Footnote-1942493
++Node: Basic Data Typing942678
++Node: Floating Point Issues947203
++Node: String Conversion Precision948286
++Ref: String Conversion Precision-Footnote-1949986
++Node: Unexpected Results950095
++Node: POSIX Floating Point Problems951921
++Ref: POSIX Floating Point Problems-Footnote-1955626
++Node: Glossary955664
++Node: Copying980640
++Node: GNU Free Documentation License1018197
++Node: Index1043334
End Tag Table
diff --cc m4/ChangeLog
index 22dc64d,9e6800a..782171a
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@@ -1,6 -1,11 +1,15 @@@
+2012-04-01 John Haque <address@hidden>
++
+ * mpfr.m4: New file.
+
+ 2012-03-30 Arnold D. Robbins <address@hidden>
+
+ * noreturn.m4: New file.
+
+ 2012-03-28 Arnold D. Robbins <address@hidden>
+
+ * 4.0.1: Release tar ball made.
+
2011-06-23 Arnold D. Robbins <address@hidden>
* ChangeLog.0: Rotated ChangeLog into this file.
diff --cc pc/ChangeLog
index 27a485c,4d2cce3..8d340b4
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@@ -1,37 -1,61 +1,95 @@@
+2012-04-16 Eli Zaretskii <address@hidden>
+
+ * Makefile.tst (PGAWK): Redefine as "../gawk.exe -p".
+ (MPFR_TESTS): New variable, a list of MPFR-related tests.
+ (mpfr-tests): A new target.
+ (badargs): Reset GREP_OPTIONS to empty, to avoid gratuitous
+ failures when the user has something like -nH there.
+ (mpfrieee, mpfrexprange, mpfrrnd, mpfrnr, mpfrsort, mpfrbigint):
+ New tests.
+
+ * Makefile (default): Add descriptions of mingw32-mpfr and
+ mingw32-libreadline-mpfr targets.
+ (PRSPFILE, DRSPFILE, PRSP, DRSP, PLDRSP, DLDRSP, DO_PLNK)
+ (DO_PBIND, DO_DLNK, DO_DBIND, PLDJG, DLDJG, PLMINGW32)
+ (DLMINGW32, PAWKOBJS1, PAWKOBJS2, DAWKOBJS2, PGAWKOBJS)
+ (DGAWKOBJS): Remove unused variables.
+ (djgpp, djgpp-debug, mingw32): Don't use them.
+ (mingw32): Add -D__USE_MINGW_ANSI_STDIO to compilation flags.
+ (mingw32-readline, mingw32-mpfr, mingw32-readline-mpfr): New targets.
+ (CFLAGS, AWKOBJS2): Don't reference obsolete DYN_FLAGS and DYN_OBJ
+ variables.
+ (AWKOBJS2): Add symbol$O.
+ (AWKOBJS3): New variable, lists MPFR-related object files.
+ (AWKOBJS): Add $(AWKOBJS3).
+ (all): Remove pgawk.exe and dgawk.exe.
+ (pgawk.exe, dgawk.exe, $(PRSPFILE) $(DRSPFILE), eval_p$O)
+ (profile_p$O): Remove targets.
+ (random$O, debug$O): Don't depend on floatmagic.h
+ (eval$O): Depend on interpret.h.
+ (clean): Prepend '-' to command line, to ignore errors due to
+ non-existent files.
+
+ * config.h: Comment out "#undef HAVE_LIBREADLINE" (again).
+
+ 2012-03-29 Arnold D. Robbins <address@hidden>
+
+ * config.h: Add definition for _Noreturn.
+
+ 2012-03-28 Arnold D. Robbins <address@hidden>
+
+ * 4.0.1: Release tar ball made.
+
+ 2012-03-20 Arnold D. Robbins <address@hidden>
+
+ * Makefile.tst (printfbad3): New test.
+
+ 2012-03-14 Eli Zaretskii <address@hidden>
+
+ * gawkmisc.pc (btowc): New version for DJGPP.
+
+ 2012-03-01 Scott Deifik <address@hidden>
+
+ * Makefile.tst: Sync with mainline version.
+
+ 2012-03-01 Eli Zaretskii <address@hidden>
+
+ * Makefile: Quiet confusing info messages from the linker when
+ gawk is linked against readline as a shared library.
+
+ 2012-02-22 Eli Zaretskii <address@hidden>
+
+ * Makefile.tst: Update CMP and CP definitions, add "Expect xxxx to
+ fail with MinGW" messages as needed.
+
+ 2012-02-15 Arnold D. Robbins <address@hidden>
+
+ * gawkmisc.pc (execvp): Modify signature, return -1
+ on error.
+
+ 2012-02-11 Eli Zaretskii <address@hidden>
+
+ Fix dependencies in pc/Makefile.
+ * Makefile ($(ALLOBJS) $(LIBOBJS) eval_p$O profile_p$O): Add eval_d$O,
+ debug$O, and command$O.
+
+ Support MinGW build with the readline library.
+ * Makefile (default): Add a line for the mingw32-readline target.
+ (mingw32-readline): New target, passes -DHAVE_LIBREADLINE to the
+ compiler and adds -lreadline to the linker command line.
+
+ * config.sed: Comment out "#undef HAVE_LIBREADLINE", so that it
+ could be #define'd on the compiler command line.
+
+ 2012-02-10 Arnold D. Robbins <address@hidden>
+
+ * gawkmisc.pc (execvp): New function based on code from Eli
+ Zaretskii to make dgawk's restarting the debugger work.
+
+ 2012-01-27 Scott Deifik <address@hidden>
+
+ * Makefile.tst: Sync with mainline version.
+
2011-12-12 Scott Deifik <address@hidden>
* Makefile.tst: Sync with mainline version.
diff --cc pc/Makefile
index f01849a,af3044d..21fe0bf
--- a/pc/Makefile
+++ b/pc/Makefile
@@@ -154,30 -165,17 +154,37 @@@ LMINGW32 = $(CC) $(LF) -o $@ $(GAWKOBJS
mingw32:
$(MAK) all \
- CC=gcc O=.o CF="-O2 -gdwarf-2 -g3" OBJ=popen.o \
- LNK=LMINGW32 PLNK=PLMINGW32 DLNK=DLMINGW32 \
- LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP=
+ CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP=
+
+mingw32-readline:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
+mingw32-mpfr:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lmpfr -lgmp -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
+mingw32-readline-mpfr:
+ $(MAK) all \
+ CC=gcc O=.o \
+ CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2
-gdwarf-2 -g3" \
+ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \
+ LF2="-lmpfr -lgmp -lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
+ mingw32-readline:
+ $(MAK) all \
+ CC=gcc O=.o CF="-DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" OBJ=popen.o \
+ LNK=LMINGW32 PLNK=PLMINGW32 DLNK=DLMINGW32 \
+ LF="-gdwarf-2 -g3" \
+ LF2="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP=
+
# Define BIND for BINDless compiles, otherwise $($(BIND)) may break.
BIND = EMPTY
PBIND = EMPTY
diff --cc pc/Makefile.tst
index 83a8a32,c10430a..ab56653
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@@ -793,36 -800,11 +803,41 @@@ exit
@-AWK="$(AWKPROG)" $(srcdir)/address@hidden > _$@ 2>&1
@-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+mpfrieee:
+ @echo mpfrieee
+ @$(AWK) -M -vPREC=double -f $(srcdir)/address@hidden > _$@ 2>&1
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo mpfrexprange
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo mpfrrnd
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+mpfrnr:
+ @echo mpfrnr
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/address@hidden
$(srcdir)/address@hidden > _$@
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+mpfrsort:
+ @echo mpfrsort
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/address@hidden > _$@ 2>&1
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+mpfrbigint:
+ @echo mpfrbigint
+ @$(AWK) -M -f $(srcdir)/address@hidden > _$@ 2>&1
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+ rri1::
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH=$(srcdir) $(AWK) -f address@hidden < $(srcdir)/address@hidden
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
diff --cc test/Makefile.in
index 4eb9590,64d4851..838eca8
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@@ -67,12 -67,12 +67,12 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/noreturn.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/mpfr.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/readline.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
- $(top_srcdir)/configure.ac
++ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
++ $(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
++ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
++ $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@@ -2921,8 -2884,13 +2929,13 @@@ printfbad1
@AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
@-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ printfbad3:
+ @echo printfbad3
+ @AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
procinfs:
- @echo procinfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
@-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
diff --cc test/Maketests
index 4bc06e5,b616856..9682572
--- a/test/Maketests
+++ b/test/Maketests
@@@ -1075,8 -1080,13 +1075,13 @@@ printfbad1
@AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
@-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+ printfbad3:
+ @echo printfbad3
+ @AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
procinfs:
- @echo procinfs
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f address@hidden >_$@ 2>&1 || echo EXIT
CODE: $$? >>_$@
@-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 1 +
ChangeLog | 110 +++-
Makefile.in | 10 +-
NEWS | 8 +-
README | 6 +-
README.git | 53 ++-
README_d/ChangeLog | 10 +-
aclocal.m4 | 1 +
awkgram.c | 36 +-
awkgram.y | 38 +-
awklib/ChangeLog | 4 +
awklib/Makefile.in | 10 +-
builtin.c | 5 +-
configh.in | 13 +
configure | 5 +-
configure.ac | 7 +-
dfa.c | 2246 ++++++++++++++++++++++++++-------------------------
dfa.h | 19 +-
doc/ChangeLog | 9 +
doc/Makefile.in | 10 +-
doc/awkcard.in | 7 +-
doc/gawk.info | 962 +++++++++++-----------
doc/gawk.texi | 21 +-
doc/texinfo.tex | 1161 +++++++++++++++++++-------
ext.c | 14 +-
extension/ChangeLog | 9 +-
getopt.c | 133 +++-
getopt.h | 11 +-
getopt1.c | 10 +-
getopt_int.h | 5 +-
io.c | 2 +-
m4/ChangeLog | 9 +
m4/noreturn.m4 | 38 +
main.c | 19 +-
mbsupport.h | 6 +-
missing_d/ChangeLog | 4 +
pc/ChangeLog | 58 ++
pc/Makefile | 7 +
pc/Makefile.tst | 115 ++-
pc/config.h | 19 +-
pc/config.sed | 2 +
pc/gawkmisc.pc | 23 +-
pc/testoutcmp.awk | 19 +
po/ChangeLog | 4 +
po/da.gmo | Bin 48739 -> 46123 bytes
po/da.po | 1461 +++++++++++++++++-----------------
po/de.gmo | Bin 52166 -> 49358 bytes
po/de.po | 1076 ++++++++++++-------------
po/es.gmo | Bin 51471 -> 48746 bytes
po/es.po | 1079 ++++++++++++-------------
po/fi.gmo | Bin 51684 -> 48930 bytes
po/fi.po | 1075 ++++++++++++-------------
po/fr.gmo | Bin 53311 -> 50390 bytes
po/fr.po | 1076 ++++++++++++-------------
po/gawk.pot | 970 ++++++++++------------
po/it.gmo | Bin 44316 -> 41479 bytes
po/it.po | 1065 ++++++++++++------------
po/ja.gmo | Bin 55596 -> 52218 bytes
po/ja.po | 1064 ++++++++++++------------
po/nl.gmo | Bin 49267 -> 46629 bytes
po/nl.po | 1077 ++++++++++++-------------
po/pl.gmo | Bin 50946 -> 48745 bytes
po/pl.po | 1095 ++++++++++++-------------
po/sv.gmo | Bin 48752 -> 46113 bytes
po/sv.po | 1077 ++++++++++++-------------
posix/ChangeLog | 4 +
re.c | 5 +-
regcomp.c | 42 +-
regex.c | 5 +-
regex.h | 18 +-
regex_internal.c | 37 +-
regex_internal.h | 10 +-
regexec.c | 27 +-
test/ChangeLog | 15 +
test/Makefile.am | 80 +-
test/Makefile.in | 95 ++-
test/Maketests | 5 +
test/printfbad3.awk | 22 +
test/printfbad3.ok | 1 +
vms/ChangeLog | 24 +
vms/descrip.mms | 2 +-
vms/vms-conf.h | 20 +-
vms/vmsbuild.com | 2 +-
vms/vmstest.com | 16 +-
84 files changed, 9418 insertions(+), 8386 deletions(-)
create mode 100644 m4/noreturn.m4
create mode 100644 test/printfbad3.awk
create mode 100644 test/printfbad3.ok
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, gawk_mpfr, updated. b1062311a3caab9ec89c0f104bd9b4334174f23c,
John Haque <=