HITCHER_I
Commodore
- Registriert
- Okt. 2006
- Beiträge
- 4.803
bc ist ein Taschenrechner mit beliebiger Genauigkeit, und damit kann man die Kreiszahl pi ausrechnen,
indem man zB. arctan(1)*4 berechnet.
https://linux.die.net/man/1/bc
Nur ist der normale bc vom manpage oben ziemlich alt, und langsam,
darum nehmen wir lieber den neuen vom Gavin Howard, der den weiter optimiert und beschleunigt hat.
https://github.com/gavinhoward/bc/blob/master/README.md Nicht vergessen mit configure -O3 zu configurieren.
Und die Formel für pi= arctan(1)*4 ist auch überholt, da gibt es eine etwas schnellere.
pi=24*atan(1/8)+8*atan(1/57)+4*atan(1/239)
Der Pi4 4GB@2 GHz schafft 100.000 Stellen nun in 34m, 22s.
OS ist Ubuntu 21.10 ARM64 - raspi.
Wer mag, kann das ja mal mit dem alten bc ausprobieren, mir dauert das zu lange.
Zum Vergleich, mit der einfachen Formel und alten bc brauchen 10.000 Stellen schon 3m, 8s,
mit dem neuen bc und selber Formel nur 11,825s.
edit:
Habe die Dateien nochmal zusammengestellt, mit denen man das am Pi oder anderem ARM SBC testen kann, bc (für ARM64) ist inkludiert. https://www.computerbase.de/forum/attachments/gh-bc-zip.1322742/
indem man zB. arctan(1)*4 berechnet.
https://linux.die.net/man/1/bc
Nur ist der normale bc vom manpage oben ziemlich alt, und langsam,
darum nehmen wir lieber den neuen vom Gavin Howard, der den weiter optimiert und beschleunigt hat.
https://github.com/gavinhoward/bc/blob/master/README.md Nicht vergessen mit configure -O3 zu configurieren.
Und die Formel für pi= arctan(1)*4 ist auch überholt, da gibt es eine etwas schnellere.
pi=24*atan(1/8)+8*atan(1/57)+4*atan(1/239)
Der Pi4 4GB@2 GHz schafft 100.000 Stellen nun in 34m, 22s.
OS ist Ubuntu 21.10 ARM64 - raspi.
Code:
$ time echo "scale=100000; 24*atan(1/8)+8*atan(1/57)+4*atan(1/239)" | ./bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
...
02212235719254536715191834872587423919410890444115959932760044506556\
20646116465566548759424736925233695599303035509581762617623184956190\
64948396730020377638743693439998294302091470736189479326927624451865\
60239559053705128978163455423320114975994896278424327483788032701418\
67695262118097500640514975588965029300486760520801049153788541390942\
45316917199876289412772211294645682948602814931815602496778879498137\
77216229359437811004448060797672429276249510784153446429150842764520\
00204276947069804177583220909702029165734725158290463091035903784297\
75726517208772447409522671663060054697163879431711968734846887381866\
56751279298575016363411314627530499019135646823804329970695770150789\
337728658035712790913767420805655493624632
real 34m22,038s
user 34m17,482s
sys 0m4,285s
Zum Vergleich, mit der einfachen Formel und alten bc brauchen 10.000 Stellen schon 3m, 8s,
mit dem neuen bc und selber Formel nur 11,825s.
Code:
$ time echo "scale=10000; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
...
91403599895353945909440704691209140938700126456001623742880210927645\
79310657922955249887275846101264836999892256959688159205600101655256\
375676
real 3m7,932s
user 3m7,904s
sys 0m0,027s
$ time echo "scale=10000; 4*atan(1)" | ./bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
...
91403599895353945909440704691209140938700126456001623742880210927645\
79310657922955249887275846101264836999892256959688159205600101655256\
375676
real 0m11,825s
user 0m11,805s
sys 0m0,023s
edit:
Habe die Dateien nochmal zusammengestellt, mit denen man das am Pi oder anderem ARM SBC testen kann, bc (für ARM64) ist inkludiert. https://www.computerbase.de/forum/attachments/gh-bc-zip.1322742/
Zuletzt bearbeitet: