
Poďme v histórii zase o pekných pár rokov naspäť a pozrieme sa na to ako sa dalo vypočítať číslo
(inak ho poznáme tiež ako Ludolfovo číslo) na pekných pár čísiel za desatinnou bodkou, napríklad na celkové číslo 100. To je už celkom dosť - teda na nejaké to domáce použitie by to malo stačiť ... 

Vlastný program (je iba mierne upravený aby fungoval v prostredí SBC6502) som iba "zdrcol" na dĺžku, pretože ak je viacej príkazov v jednom riadku - potom výpočet prebieha o pár % rýchlejšie (v riadku 20 premenná N určuje počet platných číslic pri výpočte čísla
, počet čísel za desatinnou bodku = N-1):
10 REM ADOPTED FROM COMMODORE BASIC
11 REM number Pi - line 12 - special for SBC6502
12 ? CHR$(12):POKE 15,80:REM IGI 2020
20 N=100: REM N MAY BE INCREASED, BUT WILL SLOW EXECUTION
30 LN=INT(10*N/3)+16:ND=1:DIM A(LN):N9=0
70 PD=0:REM FIRST PRE-DIGIT IS A 0
90 FOR J=1 TO LN:A(J-1)=2:NEXT J
130 FOR J=1 TO N:Q = 0:FOR I=LN TO 1 STEP -1
160 X=10*A(I-1) + Q*I:A(I-1)=X-(2*I-1)*INT(X/(2*I-1))
180 Q=INT(X/(2*I - 1)):NEXT I
200 A(0)=Q-10*INT(Q/10):Q=INT(Q/10):IF Q=9 THEN N9=N9+1:GOTO 450
240 IF Q<>10 THEN GOTO 350
260 D=PD+1:GOSUB 500:IF N9<=0 THEN GOTO 320
280 FOR K=1 TO N9:D=0:GOSUB 500:NEXT K
310 REM END IF
320 PD=0:N9=0:GOTO 450:REM Q <> 10
350 D=PD:GOSUB 500:PD=Q:IF N9=0 THEN GOTO 450
380 FOR K=1 TO N9:D=9:GOSUB 500:NEXT K:N9=0
450 NEXT J:? PD:END
490 REM OUTPUT DIGITS
500 IF ND=0 THEN ? D;:RETURN
510 IF D=0 THEN RETURN
520 ? D;".";:ND=0:RETURN
Poznámka:
Riadok číslo 12 je špecifický pre SBC6502, pri použití programu na iný typ počítača ho proste vynecháte. Robí len ekvivalent príkazu CLS a nastaví výstup na hodnotu 80 znakov v riadku.
Rýchlosť výpočtu na 100 platných miest trvá dosť dlho, ale aj tak - ak si predstavím že sa toto kedysi počítalo ručne ... a zase na druhú stranu, v roku 1977 PC ešte neexistovalo, takže domácim nadšencom rozhodne museli stačiť 8-bity, nič iné k dispozícii nebolo.
Na záver uvádzam zdroj z ktorého som čerpal (program pre výpočet čísla
je tam uverejnený pre viacero 8 bitových počítačov):
https://rosettacode.org/wiki/Pi
___________________________________________________________
Čo hovorí wikipedia - vyčíslenie hodnoty
:
William Shanks v roku 1853 oznámil, že vypočítal
s presnosťou na 607 miest (napokon sa ukázalo, že správnych bolo len 527). V súčasnosti sa snaha o upresnenie desatinného rozvoja čísla
urýchlila vďaka výpočtovej technike. V roku 1949 určili hodnotu čísla
s presnosťou na 2 037 desatinných miest, čo pomocou počítača ENIAC trvalo 70 hodín. V roku 2011 bolo známych viac ako 10 000 000 000 000 miest čísla
.
Počítač ENIAC (Electronic Numerical Integrator And Computer), dokončený 1946 - obsahoval 17 468 elektrónok, 7 200 diód, 1 500 relé, 70 000 rezistorov, 10 000 kondenzátorov, okolo 5 miliónov ručne spájkovaných spojov, vážil 30 ton, zaberal cez 60m³ (2,6 m × 0,9 m × 26 m), spotrebovával 150 kW elektrickej energie a jeho vývoj stál 500 000 dolárov. V prevádzke ho chladili 2 letecké motory.
(Koniec 1. citátu.)
Na rôznych internetových stránkach sa vyskytuje omnoho viac číslic čísla
. Dňa 14.03.2019 Emma Harukaová Iwaová predstavila hodnotu
spočítanú na 31.416 biliónov desatinných miest. Výpočet trval 121 dní na 25 počítačoch. Tento počin je zapísaný v Guinnessovej knihe rekordov. Aj keď bolo
spočítané na viac ako bilión (1012) číslic, v aplikovanej matematike sa väčšinou používa zaokrúhlenie iba na niekoľko desiatok desatinných miest. Pritom 11 desatinných miest čísla
napríklad stačí na odhad dľžky kružnice, ktorá je veľká ako Zem a to s chybou menšou ako jeden milimeter a 39 desatinných miest stačí na akúkoľvek predstaviteľnú aplikáciu. NASA v svojich výpočtoch používa 15 desatinných miest.
(Koniec 2. citátu.)
Pretože
je iracionálne číslo, číslice v jeho desatinnom rozvoji sa nikdy nezačnú opakovať. Sled týchto číslic fascinuje matematikov a tiež aj laikov a počas posledných pár storočí sa vkladajú snahy do vypočítania viac číslic
a skúmajú sa potom jeho vlastnosti. Zatiaľ sa ale nepodarilo nájsť žiaden vzor podľa ktorého by sa číslice opakovali.
(Koniec 3. citátu.)
Poznámka:
Počítač ENIAC rozmermi vraj zaberal stredne veľký byt. Tie letecké motory mali výkon určite cez stovky kWh, čiže aj toto by sa patrilo prirátať k spotrebe počítača. Keďže to bolo v USA tak ich samotná kuchyňa je svojimi rozmermi celý náš byt - takže výsledné rozmery sa nám javia o niečo väčšie v našich pomeroch než ako to asi vidia v USA. A mať v spálni letecké motory ...

Realita na SBC6502:
Tak som pustil na 4MHz verzii SBC6502 výpočet čísla
na platných 2038 miest (riadok 20 N=2038), t.j. bude platných 2037 desatinných miest (čiže kopírujem výpočet ENIACu) - zbehlo to za 38 hodín a 12 minút. (Ak bude procesor 65C02 bežať na 6MHz tak to zbehne za 1528 minút, alebo slušnejšie preložené do zrozumiteľnejšej formy bude výpočet hotový za 25hodín a 28minút.)
Ak zoberiem do úvahy že ENIAC sa dal naprogramovať (konkrétne "predrátkovať" na konkrétnu úlohu a vlastne bežal vo svojom natívnom strojovom kóde) a zvládol to za 70 hodín a mne to bežalo v Basicu na počítači ktorý vznikol o cca 30 rokov neskôr (1977) - tak je to slušný posun v rýchlosti výpočtu. Prepočítavalo mi to 53.375 čísla za hodinu - teda pri nastavení na uvedené konkrétne číslo 2038. Ak je číslo menšie tak doba prepočtu sa úmerne skracuje, t.j. výpočet zbehne rýchlejšie. Ak by to bolo naprogramované v strojovom kóde tak by rýchlosť výpočtu bola minimálne o 2 rády vyššia. Je jasné že výpočtom prekračujeme napr. presnosť NASA celkom o dosť veľkú hodnotu, pre nás je zaujímavé že tak veľkú presnosť dostaneme na 8-bite.
A koľko to trvá na 100 miest na Vašom 8-bitovom počítači ? - tak to si musíte vyskúšať sami.
Čas výpočtu (uvedené časy platia pre x-tal = 4MHz):
100 miest na 4MHz SBC6502 - 5min.38sec.,
pre 15 číslic trvá výpočet 10.29sec.
10 platných čísel - zbehne za 5.38sec
na 6MHz je to potom úmerne kratšie.
Pri použití x-talu 4.9152MHz sú takéto dosiahnuté časy:
100 miest = 4min.36sec
15 miest = 8sec.
10 miest = 3.9sec
Takže - ak chcete ešte pred týmito Vianocami niečím slušne rozhýbať registre a zásobník Vášho už postaršieho procesoru ktorý je pritom stále v ešte produktívnom veku - máte možnosť. Tak isto kondenzátory sa Vám poďakujú za to že ich držíte v zformovanom stave ...
(Ak zadáte výpočet pre N=2038 tak sa mašinka rozhodne a zaručene prevetrá ...)
Poznámka:
Program je priamo funkčný aj pre SBC UK101.
____________________________________________________________
03.10.2022
Výpočet čísla
inou metódou (a to podstatne rýchlejšou):
SBC6502 - 59 - basic programs - vypočet čísla Π, iná verzia.
V závere článku sú prevedené kontrolné merania rýchosti výpočtu.
____________________________________________________________
Návrat do všetkých pokračovaní o SBC6502:
http://blog.3b2.sk/igi/post/SBC6502-0-UvodIntroduction.aspx
_____________________________________________________
Vaše hodnotenie, Rate post