diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-04-01 00:51:26 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-04-01 00:51:26 -0700 |
commit | cd5602baccd5aa32cd7b7f47f2244c9bb303c9a1 (patch) | |
tree | 124f08071e1502eae616d938538beb7288b36435 /mpi | |
parent | 9b4c602ae4ebd222f1fcd3d0ba272375a69d955d (diff) | |
download | txr-cd5602baccd5aa32cd7b7f47f2244c9bb303c9a1.tar.gz txr-cd5602baccd5aa32cd7b7f47f2244c9bb303c9a1.tar.bz2 txr-cd5602baccd5aa32cd7b7f47f2244c9bb303c9a1.zip |
Replace Perl program that came with MPI.
* mpi/make-logtab: File removed.
* mpi/make-logtab.txr: New file.
Diffstat (limited to 'mpi')
-rwxr-xr-x | mpi/make-logtab | 32 | ||||
-rw-r--r-- | mpi/make-logtab.txr | 26 |
2 files changed, 26 insertions, 32 deletions
diff --git a/mpi/make-logtab b/mpi/make-logtab deleted file mode 100755 index ea0e91a1..00000000 --- a/mpi/make-logtab +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env perl - -# -# make-logtab -# -# Generate a table of logarithms of 2 in various bases, for use in -# estimating the output sizes of various bases. -# -# by Michael J. Fromberger <sting@linguist.dartmouth.edu> -# Developed 1999-2006. -# Assigned to the public domain as of 2002; see README. -# -# $Id: make-logtab,v 1.2 2006/07/07 19:35:02 sting Exp $ -# - -$ARRAYNAME = $ENV{'ARRAYNAME'} || "s_logv_2"; -$ARRAYTYPE = $ENV{'ARRAYTYPE'} || "double"; - -printf("const %s %s[] = {\n %0.9f, %0.9f, ", - $ARRAYTYPE, $ARRAYNAME, 0, 0); -$brk = 2; -for($ix = 2; $ix < 64; $ix++) { - printf("%0.9f, ", (log(2)/log($ix))); - $brk = ($brk + 1) & 3; - if(!$brk) { - printf("\t/* %2d %2d %2d %2d */\n ", - $ix - 3, $ix - 2, $ix - 1, $ix); - } -} -printf("%0.9f\n};\n\n", (log(2)/log($ix))); - -exit 0; diff --git a/mpi/make-logtab.txr b/mpi/make-logtab.txr new file mode 100644 index 00000000..5566dd66 --- /dev/null +++ b/mpi/make-logtab.txr @@ -0,0 +1,26 @@ +@(bind logs @(tuples 4 ^(0.0 0.0 ,*(take 63 (mapcar* [chain log2 /] (range 2)))))) +@(do (set *pprint-flo-format* "~0,9f")) +@(output) +/* + * A table of the logs of 2 for various bases (the 0 and 1 entries of + * this table are meaningless and should not be referenced). + * + * This table is used to compute output lengths for the mp_toradix() + * function. Since a number n in radix r takes up about log_r(n) + * digits, we estimate the output size by taking the least integer + * greater than log_r(n), where: + * + * log_r(n) = log_2(n) * log_r(2) + * + * This table, therefore, is a table of log_r(2) for 2 <= r <= 36, + * which are the output bases supported. + */ + +const double s_logv_2[] = { +@ (repeat) + @(rep)@logs, @(last)@logs,@(end) +@ (last) + @(rep)@logs, @(last)@logs@(end) +@ (end) +}; +@(end) |