Re:A deeper introduction to Unix DC
by staycoolboy on Monday June 08, 2020 @03:20PM
(#23459801)
I love reading examples of these "great-great-grandparent" applications hidden in /bin. I've used dc in shell scripts for years, but for the simplest of simple computations (e.g., automating FDISK partitioning and doing sector math). Had no idea it could do this.
Re:A deeper introduction to Unix DC
by c0l0 on Monday June 08, 2020 @09:21AM
(#23456237)
dc is worth having installed because of this CLI gem alone:
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq" | dc
I've never tried to understand what's really going on to produce the result, but also wouldn't really know where to start - maybe someone in HN's audience can enlighten me? :)
Re:A deeper introduction to Unix DC
by em500 on Monday June 08, 2020 @09:39AM
(#23456372)
dc and bc are standard POSIX utils (and also part of busybox for embedded systems) so for most unix-like systems they're installed by default unless you take active measures to exclude them.
Re:A deeper introduction to Unix DC
by yjftsjthsd-h on Monday June 08, 2020 @05:59PM
(#23461283)
> Many GNU/Linux distros (at least Debian and RHEL) install neither `dc` nor `bc` by default, afaik.
Yeah, I recently wrote a script that used bc and immediately discovered that it didn't work on at least Arch Linux (and I think others, although I only seem to have added it to the Arch ansible config...); conveniently, I only needed the most trivial of calculations, so I just shifted to awk, which has better default availability.
Re:A deeper introduction to Unix DC
by seryoiupfurds on Monday June 08, 2020 @05:46PM
(#23461171)
[Monte Carlo approximation of Pi.
Registers:
u - routine : execute i if sum of squares less than 1
i - routine : increment register x
z - routine : iterator - execute u while n > m++
r - routine : RANDU PRNG
m - variable: number of samples
x - variable: number of samples inside circle
s - variable: seed for r
k - variable: scale for division
n - variable: number of iterations (user input)
]c
[lrx 2^ lrx 2^ + 1>i]su
[lx 1+ sx]si
[lu x lm 1+ d sm ln>z]sz
[0k ls 65539 * 2 31^ % d ss lkk 2 31 ^ /]sr
? sn
5dksk
1 ss
lzx
lx lm / 4*
p
$ dc pi.dc
100000
3.13372
[0] https://en.wikipedia.org/wiki/Bc_(programming_language)#Hist...
TIL this and a cool CSS trick.
Many GNU/Linux distros (at least Debian and RHEL) install neither `dc` nor `bc` by default, afaik.
Yeah, I recently wrote a script that used bc and immediately discovered that it didn't work on at least Arch Linux (and I think others, although I only seem to have added it to the Arch ansible config...); conveniently, I only needed the most trivial of calculations, so I just shifted to awk, which has better default availability.