From 7834c3baaeac5093ae0e2fb69ff41d08407e8213 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Thu, 2 Nov 2023 23:52:56 +0000 Subject: [PATCH] add gavin howard's bc to README --- C/out/samples | Bin 18384 -> 22488 bytes README.md | 14 ++++++++++++-- time.txt | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/C/out/samples b/C/out/samples index 48739642adf71262cb66f85e59175b25948af3dd..aa3b71b843fca9c72f0ace7b8a1e8e40ce368208 100755 GIT binary patch literal 22488 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 literal 18384 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 S@&fiJzhr2f>o9Pz?7skg%`2+_ diff --git a/README.md b/README.md index 9e669f34..4e191ce3 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ The name of this repository is a pun on two meanings of "time to": "how much tim | Squiggle | 1,536s | 14* | | SquigglePy | 1.602s | 18* | | R | 7,000s | 49 | +| Gavin Howard's bc | 15.9s | 59 | | Python (CPython) | 16,641s | 56 | Time measurements taken with the [time](https://man7.org/linux/man-pages/man1/time.1.html) tool, using 1M samples. But different implementations use different algorithms and, occasionally, different time measuring methodologies (for the C, Nim and Lua implementations, I run the program 100 times and take the mean). Their speed was also measured under different loads in my machine. So I think that these time estimates are accurate within maybe ~2x or so. @@ -125,17 +126,26 @@ OCaml was like meeting an old and forgotten friend. I found its syntax a bit clu I restricted myself to using the standard library, but it's likely that using Jane Street's Base or Core would have produced less clunky code. +### bc + +The beautiful thing about bc is that it's an arbitrary precision calculator: + +- it's not going to get floating point overflows, unlike practically everything else. Try `1000000001.0 ** 1000000.0` in OCaml, and you will get infinity, try p(1000000000.0, 1000000.0) and you will get a large power of 10 in bc. +- you can always trade get more precision (at the cost of longer running times). Could be useful if you were working with tricky long tails. + +I decided to go with [Gavin Howard's bc](https://git.gavinhoward.com/gavin/bc), because I've been following the guy some time, and I respect him. It also had some crucial extensions, like a random number generator and + ### Overall thoughts Overall I don't think that this is a fair comparison of the languages intrinsically, because I'm just differentially good at them, because I've chosen to put more effort in ones than in others. But it is still useful to me personally, and perhaps mildly informative to others. ## Languages I may add later +- [x] bc (the standard posix calculator) +- [x] OCaml - [ ] PyMC -- [ ] bc (the standard posix calculator) - [ ] Zig - [ ] Rust -- [x] OCaml - [ ] Forth - [ ] Julia (TuringML, MCHammer) - [ ] Lisp diff --git a/time.txt b/time.txt index 5d4fba1c..c2a1c8cd 100644 --- a/time.txt +++ b/time.txt @@ -149,3 +149,13 @@ Mean: 0.884629 real 0m0.164s user 0m0.159s sys 0m0.004s + +## squiggle.bc + +make time +time ghbc -l squiggle.bc estimate.bc +.8882048395568279 + +real 0m15.906s +user 0m15.900s +sys 0m0.000s