summaryrefslogtreecommitdiffstats
path: root/mpi
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-04-01 00:51:26 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-04-01 00:51:26 -0700
commitcd5602baccd5aa32cd7b7f47f2244c9bb303c9a1 (patch)
tree124f08071e1502eae616d938538beb7288b36435 /mpi
parent9b4c602ae4ebd222f1fcd3d0ba272375a69d955d (diff)
downloadtxr-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-xmpi/make-logtab32
-rw-r--r--mpi/make-logtab.txr26
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)