OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

Tlsk Mln 2019

Právě je 06 pro 2019, 18:25

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 49 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 29 črc 2019, 12:27 
Offline
Kecálek

Registrován: 28 říj 2016, 21:03
Příspěvky: 83
Has thanked: 9 times
Been thanked: 38 times
K době běhu programu - v emulátoru mi to ukazuje čas výpočtu 3 hodiny 30 minut.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 30 črc 2019, 08:16 
Offline
Profík

Registrován: 11 lis 2013, 10:29
Příspěvky: 670
Has thanked: 96 times
Been thanked: 154 times
Na Sharpovi s ALU to zkusim az se k nemu dostanu. Zatim jsem cely tyden na sluzebce v matrixu, tak je pro me veskery realny hw mimo dosah ;-)
Jeste bude nejaky rozdil mezi skutecnou ALU pres realne obvody AM9511 nebo i8231, a nebo ALU kterou emuluje unikarta. Protoze tam Sharp vubec nemusi cekat nez ALU zacne vracet data. Rychlost vypoctu na ARMu pro Z80 znamena, ze ma vysledky temer okamzite.
Ale srovnani bude urcite zajimave.

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 31 črc 2019, 09:53 
Offline
Kecka

Registrován: 04 úno 2016, 10:21
Příspěvky: 34
Has thanked: 1 time
Been thanked: 2 times
O kolik by to urychlil přepis do ASM ? 3,5h je dost.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 12:20 
Offline
Kecálek

Registrován: 08 říj 2013, 18:00
Příspěvky: 235
Has thanked: 12 times
Been thanked: 187 times
Tak jsem se pokusil ten BASICový prográmek trošku poladit ...

10000 míst za 5 sekund ?

https://www.youtube.com/watch?v=S_d7ULRyQVs
phpBB [video]


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 12:38 
Offline
Radil
Uživatelský avatar

Registrován: 07 črc 2019, 22:14
Příspěvky: 447
Has thanked: 19 times
Been thanked: 46 times
Aneb připojíme k 386 Teslu a poklepeme se po rameni jak je ta 386 najednou rychlá :D. Těším se na výsledky té Am9511 jaký rozdíl v čase u toho reálného HW bude :-). Je vidět že koprocesory mají smysl když se počítá floating matematika.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 14:38 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14 kvě 2013, 19:10
Příspěvky: 1229
Bydliště: Kurim
Has thanked: 457 times
Been thanked: 348 times
Ted by to jeste chtelo zrychlit to vypisovani, ktere zabere vetsinu casu ;-)

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 19:14 
Offline
Kecálek

Registrován: 28 říj 2016, 21:03
Příspěvky: 83
Has thanked: 9 times
Been thanked: 38 times
Udivuje me, ze to jde tak rychle. Asi jsou tu mezi nami opravdu kouzelnici.

A az ted jsem si vsimnul, ze jsem ve svém prispevku popsal pouzitou rovnici spatne, spravne ma byt:

16 * arctg(1/5) - 4 * arctg(1/239)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 19:38 
Offline
Radil
Uživatelský avatar

Registrován: 07 črc 2019, 22:14
Příspěvky: 447
Has thanked: 19 times
Been thanked: 46 times
To Pí je jen na 10 000 míst a když ho počítá koprocesor virtualizovaný na moderním hardwaru... Z80 by to počítalo hodiny a hodiny. Čas lehce pod či kolem 7 sekund zvládají "velká" dnešní CPU na milion míst, tedy 70x rychleji :-). Ale moc se mi líbí ta možnost ten koprocesor k výpočtu vůbec využít.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 22:49 
Offline
Profík

Registrován: 11 lis 2013, 10:29
Příspěvky: 670
Has thanked: 96 times
Been thanked: 154 times
Ja si dovolim to jeste trochu zamotat. On to je a neni koprocesor. Cele je to projekt od nobomiho, tak nevim kolik toho chce, kdy a jak 'odtajnit'. Predpokladam, ze to bude jedno velke tema na setkani v Talskem mlynu (viz jine tema). Cela tahle vecicka je mnohem chytrejsi a s Teslou nebo PC to nema nic spolecneho, ale to bych uz prozrazoval moc. Mel jsem tu cest si s tim uz pohrat a na rovinu - moc genialni napad a jeste k tomu prakticky realizovany.
Dalsi priklad pouziti je pri vypoctu fraktalu. Treba se nobomi taky pochlubi ;-)

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 03 zář 2019, 23:10 
Offline
Radil
Uživatelský avatar

Registrován: 07 črc 2019, 22:14
Příspěvky: 447
Has thanked: 19 times
Been thanked: 46 times
Tak to jsem zvědavý co z toho nakonec vyleze :-). Ale už jen funkční emulace staršího HW na velmi slušné úrovni a běhající komunikace s 8bitem je velký úspěch pokud si to člověk stvoří celé sám. Škda že tam nebudu ale třeba něco prosákne i sem.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 05 zář 2019, 00:46 
Offline
Profík
Uživatelský avatar

Registrován: 24 kvě 2018, 22:32
Příspěvky: 641
Bydliště: Most, Praha
Has thanked: 181 times
Been thanked: 162 times
Tak jsem si také zkusil pí. :-) Tentokrát v C na PC. Dřív jsem používal metodu Isaac Newton (pi = 6*arcsin(1/2), pi = 3 + 1/(2^3) + 3*3/(2^5*4*5)...), ale tahle Machinova formule vypadá také docela dobře.

Nejdříve jsem si zkusil řadu přes integer aritmetiku, modulo 1M (inspirace od lukz). Potom jsem naportoval program od lukze do C s double matematikou. Úplně jsem ho nepochopil :cry: , takže skončil jen u otrockého přepisu. Kupodivu funguje správně, i když nechápu jak, takže klobouk dolů před autorem. :god: A nakonec jsem program přepsal do ATpadu - 8-bitový procesor ATmega328 s 2 KB RAM a krystalem 24 MHz. Kvůli málo RAM počítám jen 500 míst a výsledek v porovnávací tabulce přepočítávám (doba je úměrná kvadrátu počtu míst).

Přikládám programy ve 4 variantách - původní konverze od lukze, double aritmetika, int aritmetika a ATpad zdroják. Jsou tam připravené poveláky, které změří čas a zkontrolují výstup (pro kontrolu jsem si stáhnul z netu tabulku pí s 1M místy, se kterou to kontroluji).

download: https://www.uschovna.cz/zasilka/QB56ICRPAWIL5S2S-2KM/

Na PC (3.2 GHz) vypočítá 1M míst za půl hodiny až hodinu. Zajímavé, že s double matikou je rychlejší 32-bitová verze, ale s int matikou je rychlejší 64-bitová verze. ATpad (24 MHz) vypočítá pí na 1500 míst (resp. 9x 500 míst) za 25 sekund. (ten malý mikročip je tedy 5000x rychlejší než ten obrovský ENIAC :mrgreen:) Používá int aritmetiku s 8-bitovými registry. Hw podporu má jen 8-bitové násobení, ostatní se počítá softwarově. Časy v sekundách (na PC jsou časy 10 a 100 míst příliš krátké na měření):
Příloha:
BigPi_tab.png
BigPi_tab.png [ 8.2 KiB | Zobrazeno 484 krát ]

Příloha:
ATpad.jpg
ATpad.jpg [ 71.73 KiB | Zobrazeno 484 krát ]


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 05 zář 2019, 09:01 
Offline
Pan Generální

Registrován: 16 čer 2014, 12:23
Příspěvky: 2601
Bydliště: Jesenice u Prahy
Has thanked: 16 times
Been thanked: 150 times
A na kterém místě se liší výpočet podle jednotlivých formulí ? :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 05 zář 2019, 09:13 
Offline
Profík
Uživatelský avatar

Registrován: 24 kvě 2018, 22:32
Příspěvky: 641
Bydliště: Most, Praha
Has thanked: 181 times
Been thanked: 162 times
Liší se v rychlosti iterace (přesnost je stejná = nekonečná), jak rychle klesají členy řady. Vzorec s arcsin má sice jednodušší výpočet (méně operací), ale iteruje pomaleji, tak by měl být výpočet trochu pomalejší (neměřil jsem).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 05 zář 2019, 11:10 
Offline
Kecálek

Registrován: 28 říj 2016, 21:03
Příspěvky: 83
Has thanked: 9 times
Been thanked: 38 times
Tak jsem rád, že se na ten program někdo další kouknul. Byla to trochu moje idea, že když to bude ve vysokoúrovňovém BASICu, tak to půjde snad snadno přepsat na jiné systémy.

Možná struktura programu není úplně jasná, tak přidám ještě vysvětlení.

Podobně jako na Eniacu, nejdříve vypočteme prvních pár desetinných míst od všech členů 16 arctg (1/5) i od všech členů -4 arctg (1/239). Tato desetinná místa se posčítají a uloží do pole R(). Pak se posuneme dál a počítáme desetinná čísla menšího řádu. A tak dále, dokud není všech 1506 míst spočteno. To se řeší v cyklu
FOR K=0TON, ukládání pomocí R(K)=S.

Nakonec musíme ještě provést jednu úpravu. V každém R(K) je jedna šestice desetinných čísel. Ale protože jsme sčítali hodně členů, tak i když každý z nich měl šest desetinných míst, výsledek součtu může mít i víc číslic. Musíme pak přenést nejvyšší číslice z nižšího řádu do nejnižších míst vyššího řádu, abychom dostali správný výsledek. To řesí ten další cyklus
FOR K=NTO0STEP-1, ve kterém se ukládá opravená hodnota R(K).

Například:
Kód:
R(0)= 3141589
       R(1)= 3653585
              R(2)= 4793228
                    R(3)= 10462634
     3 141592 653589 793238 462634
Číslice na konci už nejsou přesné, protože v tomto příkladu není zahrnuta hodnota z R(4).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Počítání pí
PříspěvekNapsal: 05 zář 2019, 13:01 
Offline
Profík
Uživatelský avatar

Registrován: 24 kvě 2018, 22:32
Příspěvky: 641
Bydliště: Most, Praha
Has thanked: 181 times
Been thanked: 162 times
To jsi sepsal jen podle toho všeobecného popisu, nebo jsi někde našel nějakou konkrétnější ukázku? Na netu jsem našel jen obecné vzorce k metodě, tohle bych z toho nevypotil. Dávkovat výpočty je zajímavé, i když stejně mi není jasné jaktože to funguje a neztratí přesnost. :mrgreen: :oops:

Ty délky polí 316 a 1075 jsi nějak odvodil nebo to vzniklo zkusmo? Zkoušel jsem měnit a vypadají správně (zmenšení začne dělat chyby), jen teda nevím proč zrovna takové hodnoty.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 49 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz