aboutsummaryrefslogtreecommitdiff
path: root/writeups
diff options
context:
space:
mode:
authorDavid Timber <dxdt@dev.snart.me>2024-11-02 22:33:52 +0100
committerDavid Timber <dxdt@dev.snart.me>2024-11-02 22:33:52 +0100
commit0bf2a61aed938df9a2dd5188818255c977d4a77b (patch)
tree170277d98155b9ff5c34743212edac9f0889d846 /writeups
parent66f7f30bd0e598864d782117c1da2137a524eb2e (diff)
writeups/multiprecision: fix print error ...
- Remove '--suppress-common-lines' option when producing diff
Diffstat (limited to 'writeups')
-rw-r--r--writeups/multiprecision/Makefile6
-rwxr-xr-xwriteups/multiprecision/fibo.mjs33
2 files changed, 15 insertions, 24 deletions
diff --git a/writeups/multiprecision/Makefile b/writeups/multiprecision/Makefile
index cdb10d8..cd266c6 100644
--- a/writeups/multiprecision/Makefile
+++ b/writeups/multiprecision/Makefile
@@ -16,7 +16,7 @@ b: fibo.mjs
mv b.tmp b
c: fibo.mjs
- ./fibo.mjs 0 | cat -n > c.tmp
+ ./fibo.mjs 2 | cat -n > c.tmp
mv c.tmp c
d: fibo-crude-mp
@@ -32,11 +32,11 @@ test: a b d
diff b d
sxsdiff-a-c: a c
- ! diff --suppress-common-lines -y a c > sxsdiff-a-c.tmp
+ ! diff -y a c > sxsdiff-a-c.tmp
mv sxsdiff-a-c.tmp sxsdiff-a-c
sxsdiff-c-e: c e
- ! diff --suppress-common-lines -y c e > sxsdiff-c-e.tmp
+ ! diff -y c e > sxsdiff-c-e.tmp
mv sxsdiff-c-e.tmp sxsdiff-c-e
doplot: a c e
diff --git a/writeups/multiprecision/fibo.mjs b/writeups/multiprecision/fibo.mjs
index 1cc9b10..223581f 100755
--- a/writeups/multiprecision/fibo.mjs
+++ b/writeups/multiprecision/fibo.mjs
@@ -1,37 +1,28 @@
#!/bin/env node
-function do_fibo (num_f) {
+function do_fibo (num_f, str_f) {
let a, b, c;
+ if (typeof str_f === 'undefined') {
+ str_f = (n) => n.toString();
+ }
+
a = num_f('0');
b = num_f('1');
for (let i = 0; i < 101; i += 1) {
c = a + b;
- console.info(c.toString());
+ console.info(str_f(c));
b = a;
a = c;
}
}
-function parse_flag (s) {
- s = s.toLowerCase();
-
- if (s === 'true') {
- return true;
- }
- else if (s === 'false') {
- return false;
- }
+const flag = process.argv.length > 2 ? process.argv[2] : 0;
- return Number(s);
-}
-
-const flag = process.argv.length > 2 ? parse_flag(process.argv[2]) : true;
-
-if (flag) {
- do_fibo(BigInt);
-}
-else {
- do_fibo(Number);
+switch (flag) {
+case '0': do_fibo(Number); break;
+case '1': do_fibo(BigInt); break;
+case '2': do_fibo(Number, (n) => n.toFixed()); break;
+default: throw new Error(process.argv[1] + ": " + flag + ": unknown flag");
}