LINUX.ORG.RU

Захотелось странного: пробросить математические функции из bc в dc.

 ,


0

1

bc, который транслирует в dc при скармливании из исходников libmath.b выдал такую простынку:

<<EOF base64 -d | gzip -d > libmath.dc
H4sIAJuptFIAA5VWyW7bOhRFUHRjdNcfuF68jQXb1CwBToG3fHA2hTZFAxVwnixANa0NAcPIqvOQ
tuk8p/OP9lxSthUncaKFTFkkz7085w4kR9Ck1Wrtkk2ZmqoeCTnvZmqueqm609qVOSasTOWqJ+fk
UF9PDfnjBB9sGtxN1V2sm8lZJ1MzLMszu6tyEu3th6l6yBCrD5SqB9qWnPV3ALQzwpPhGeOBjZ0C
D7zYKfEAbGcfHnnXU/VIuyJo8IDk/kROGe0RUAB1cSAXQPcBNJJz+DqSmSwwZjgTdskx4LfvA1OO
LXOSIrMtBSAYYXv3UnWvtSuSfZHMRFKKZCqSQiS5SMYiyUQySuagRNC1OzTMFBsM4KxFPc8jWARo
ySzeqJNHspwwHfPK5Bx+aYPwC6ODseYAXfSogmyc9XIlLNmChre6S642ceRg32NNtkOdSveZFl3r
3772JFVPzprv+dQePE3VU16wDAjoNbuQbdbnGbaWcoqtpSzqyjw7pgysW3VqDlJ1cIY2lSrtweOV
LENrornNOeANx4vj0fIcpDXq6l8LrpTGdinLjkkV95g6B3TeAY0qV85Kt+f4XPv7Qv/VzHWXyHVU
tZYjr0DdIjde0RrnZ21kzl9i41gqWYBXHLjT79R4f7mR98NUHa54VzXqwXtFt91DgO93eKuO9a15
FeucK88BQ8gGFAReQB6XGJ0neAXTiCJDiCwx/w/bfAE0DcbZMtZYzBtSDCvVCV0O6TwSjC5XWRdz
koXrqHM9hLlJVvjNMW/Jq/NT4nrBp329/tcgX9KKC+b2hOivMdMLI9+NIztw3Tj0vMgVcWD7QSAi
ktNVeTststalfLsRzvMjO45CP3Rs4cVOY/R3TdBjx/XiyHPDMPB838GLGzS2+L61OySH0/EtDcnj
NH6Hl4Bf3qObvGGP7Dh0Y9/3YS2OIhH6kRsKuBA2NvdxI1zg27EXxsKJXc8L/cbon5qgR74t3DAC
26DT9u0wiJqHw+clfR8X9H1a0PcZ9H3gkkE+JyYCXWfmiKPyy3rnx2xX9yl+61j9ZcV3aPA1VV9N
6cnlCAlrNfXym6756mTN/7ax9hyl6uj02mNaMvrxosyaWvPaVPTtN9U5tj9UHaE6yBcuLK5pzvpg
xBWmPLfCHNFFj2vqwVa9A6Tqhy70ZdfUPVPm4OUP6PNdN9KiarSL+wgKddke/EzVT72TO63pEmxt
4cmeOv2WsN41/sDEXrFsHH9oidcYjrX8bXpJB0JC08Kqy/l7w+XqV6p+HRNz7XK1p/VMyqqncM8o
2ckFaZD3O/2XKfhJ/1Kh2c1XN6iKMlyF0NvRjLjjlLcwi9++zPtmMW861lC4HVWSVxtlftOS+Y3u
RC+u+U9N6TKxcJtjAS0lVQrjJYz/Y9zCOMJ4BaPEeBnjuPUXaRDzXa0LAAA=
EOF

Для спокойствия можно проверить, чтобы в *.dc не было "!" вне контекста "!< / !> / !=".

Подобие юнит-теста (l<буква>x, конечно, не очень удобно, зато можно удваивать куб и квадратурить круг по обратно-польски):

dc -f libmath.dc -e '64k 5 lsxp 5 lcxp 5 laxp 5 llxp 5 lexp 2 5 ljxp'
echo "======"
echo 'scale=64; s(5); c(5); a(5); l(5); e(5); j(2,5)' | bc -l



Последнее исправление: zora (всего исправлений: 2)
Ответ на: комментарий от anonymous

И с плавающей точкой? Но все равно сомневаюсь, что можно будет получить, скажем, 1000-ый знак sqrt(2) за приемлимое время.

В то же время dc вполне удобен.

zora
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.