Em bc
, scale
é uma variável especial usada para limitar a escala (o número de dígitos após a vírgula) do resultado de alguns operadores, como /
(divisão ). Não é a precisão em números exibida por bc
, é usada em computação.
Por exemplo, em scale=1; 1/3
, o resultado é 0.3
( 3/10
), que está bem longe de 1/3
.
Você deve usar valores de grande escala para o seu cálculo e somente reduzir scale
para exibição (por exemplo, dividindo por 1
no final).
Compare:
$ echo "scale=100; r=1/3*300; scale=3; r/1" | bc
99.999
com:
$ echo "scale=3; 1/3*300" | bc
99.900
Eu escrevia:
n=10
echo "
s = 0.030
f = 0.150
n = $n
r = 20
scale = 100
d = (f - s) / n
scale = 3
for (i = s; i <= f; i += d) i/1" |
bc |
sed 's/^\./0./;s/0*$//' |
while read f; do
h5totxt "hsli$f.h5" | harminv -vt 0.1 -w 2-3 -a 0.9 -f 200
done