[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
precision of bc/dc and properties of logarithms (was: neatroff for Russi
From: |
G. Branden Robinson |
Subject: |
precision of bc/dc and properties of logarithms (was: neatroff for Russian) |
Date: |
Fri, 28 Apr 2023 00:48:56 -0500 |
[dropped Oliver from CC]
Hi Alex,
At 2023-04-28T01:41:20+0200, Alejandro Colomar wrote:
> > $ python3 -c "import math; print(math.log(1114112, 2))"
> > 20.087462841250343
>
> You don't need python3 for that:
>
> $ echo 'l(1114112) / l(2)' | bc -l
> 20.08746284125033940845
>
> You might notice there's a difference in the decimals. bc(1) is the
> more accurate, according to Wolfram Alpha. (My physical calculator
> doesn't have enough precision to contrast). All digits provided by
> bc(1) are correct, while python3 is printing more than it's capable
> of. I guess python3 is using a 'double', which usually has around 15
> digits of precission. bc(1) on the contrary, is likely to be using
> 'long double', for being able to provide so many digits.
bc is a wrapper around dc, which touts itself as having
arbitrary-precision.
I'd have used bc, but I forgot one of the properties of logarithms.
Shame on me!
log_a(x) = log_b(x) / log_b(a)
> Of course, bc(1) is way smaller:
>
> $ ls $(which python3.11) -lh
> -rwxr-xr-x 1 root root 6.6M Mar 13 13:18 /usr/bin/python3.11
> $ ls $(which bc) -lh
> -rwxr-xr-x 1 root root 95K Sep 5 2021 /usr/bin/bc
>
> And of course it's faster:
>
> $ time echo 'l(1114112) / l(2)' | bc -l
> 20.08746284125033940845
Even with a fork() and exec() to launch dc, and even counting dc's own
size,[1] it's _still_ smaller and faster compared to Python. :P
Regards,
Branden
[1] Oh, wait. GNU bc is not a wrapper. Per its man page:
DIFFERENCES
This version of bc was implemented from the POSIX P1003.2/D11 draft
and contains several differences and extensions relative to the
draft and traditional implementations. It is not implemented in the
traditional way using dc(1). This version is a single process which
parses and runs a byte code translation of the program.
signature.asc
Description: PGP signature
- Re: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian, (continued)
- neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Ralph Corderoy, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Oliver Corff, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Oliver Corff, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Robin Haberkorn, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), G. Branden Robinson, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Oliver Corff, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), G. Branden Robinson, 2023/04/26
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Alejandro Colomar, 2023/04/27
- precision of bc/dc and properties of logarithms (was: neatroff for Russian),
G. Branden Robinson <=
- Re: bc and dc. (Was: neatroff for Russian.), Ralph Corderoy, 2023/04/28
- Re: bc and dc. (Was: neatroff for Russian.), Alejandro Colomar, 2023/04/28
- Re: bc and dc., Ralph Corderoy, 2023/04/28
- Re: bc and dc., Alejandro Colomar, 2023/04/28
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Oliver Corff, 2023/04/29
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Dave Kemper, 2023/04/29
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), G. Branden Robinson, 2023/04/30
- Re: Perl and linguistics. (Was: neatroff for Russian.), Ralph Corderoy, 2023/04/30
- Re: neatroff for Russian. (Was: Questions concerning hyphenation patterns for non-Latin languages, e.g. Russian), Dave Kemper, 2023/04/29
- Re: neatroff for Russian., Ralph Corderoy, 2023/04/27