Kohta SE alkaa...

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Ai mikä? No se kun ohjelmoin tietokoneeni ymmärtäämään yli 8 tavuisia numeroita! Tuo "doublenakin" tunnettu tietotyyppi saa luvan jäädä pienex purilaisex verrattuna johonkin 128-tavusta koostuvaan lukuun!

8 tavulla voidaan raakasti katsoen saavuttaa luku, joka on 2^64 on noin 1,844674407*10^19. Eli jos toi on kertolaskun tulos, jossa kahta 32 bittistä, 4 tavuista lukua on kerrottu, niin luku 4 294 967 296 on se maximi, minkä laskimemme ymmärtävät.

Mitä tämä rajoitus on käytännössä merkinnyt? Ei ole ollut mitään toivoa ennustaa 1 kuutiometrin tilasta esimerkiksi kuutiomikrometrin 10^-18m^3 kokoisten partikkeleiden liikkeitä, sillä se ylittää kertolaskussa jo tuon 1,8*10^19:sta... Tai, no ehkä juuri sen vielä, mutta atomitason nanometrin luokkaa olevat liikkeet on ainakin jääneet haaveeksi(10^-27m^3). Nyt tuon ohjelmistoni teon jälkeen se olisi jo helppoa! Olen itse asiassa kerran MSX:ällä ja AMIGALLA ja ohjelmoinutkin nuo sysdeemit, joten vain muutto C++ - muotoon tulisi eteen! Tämän jälkeen jo saamme uudelleen "Maxwellin tai Laplacen"- demonimme kiinni, ja voisimme alkaa ennustaa paikkoja maailmankaikkeudessa nanometriäkin tarkemmin!

Yksi pieni mutta on: "Eettiset vaikeutemme Raamatun kanssa, sillä se esittää, että Juumalalla on edessään AINOASTAAN 100 miljoonaa enkeliä! Siis tarkkuudet, jotka ylittävät rutkasti 10^8=>10^-8 tarkkuuden ovat Juumalattomia! Noh, kyllä ne Taivaalliset sotajoukot saavatkin vähän hermoilla, josko Pedon Kuvani tuohon asti ylettyy?!

Mutta kysympä vaan, KUKA ne laskut laskee? Jos esimerksi 1/3- lukua pistää 1024-tavua peräjälkeen monesti koroittamaan johonkin potenssiin, voi tietokoneemme alkaa savuta?!

Mutta älkää suotta pelätkö: Ainoastaan teen aluksi pelkät, yhteen, vähennys, kerto-, ja jakolaskut, joten ei syytä huoleen: Ne ovat vielä melko yksinkertaisia toteuttaa usealla(sadalla) tavulla!

Itse asiassa ajattelin patentoida ohjelmani, joten nyt kiirettä: KUKA EHTII TEHDÄ ENSIN! Ajattelin lisätä myös etumerkkejä, kuten imaginääriyksikön luvun eteen! Myös äärettömyys-vektorin käyttöönottoa ylivuototilanteissa A/0+ - pannaan mietintään!

Kommentit (3)

Vierailija
Agison
Ai mikä? No se kun ohjelmoin tietokoneeni ymmärtäämään yli 8 tavuisia numeroita! Tuo "doublenakin" tunnettu tietotyyppi saa luvan jäädä pienex purilaisex verrattuna johonkin 128-tavusta koostuvaan lukuun!

Eikö olisi helpompaa käyttää valmiita kirjastoja?
http://gmplib.org/

Siellä on demokin:
[code:1ff6d3qw]The result of executing 2^1484 * 2^1292 is:

computation took 0 ms
output conversion took 0 ms
45631838124520248562485875195332346616601180343446461899250018084643252984031088
37226860528120676025312252725302009100888336374218654403494546477948381134613578
72468237810771527792989802250334939035646049252835920725368309230123399626755978
92382855552356516447144517325503865232526193999692634287291578469320506842027833
55085858755250987827122871324702044443373855349980462897810233793422153168341031
95172719099551454507354304459332265406583557071591119192401472814302659475776993
90241819773293082889446476988003771006334150811549662303079701308086460031326888
46084238573056377646048059068820705879003041140149380067111148467534373219124289
52307789136618871100522836484771360028279606408882427381824700632680277636782466
02112926065716277753839359354483978492882634228403225501103137824328620476217555
473079799787524062850502927251931136[/code:1ff6d3qw]

[code:1ff6d3qw]The result of executing 2^1221484 * 2^121292 is:

computation took 48 ms
result is about 404216 digits, not printing it[/code:1ff6d3qw]

Niin, tuon kirjaston tarkkuutta/numerokokoa ei rajoita mikään muu kuin laitteistossa olevan muistin määrä. Kirjasto myös väittää olevansa nopein "big number library" ja sitä on kehitetty vuodesta 1991 alkaen. LGPL lisenssin alla, mikä on kohtuu vapaa lisenssi. Ja sillä on noin parikymmentä kehittäjää (aktiivisuudesta en tiedä). Ja se osaa myös liukulukulaskentaa.

Että onnea projektillesi jos meinaat tuon päihittää.

Vierailija

Tehkää 128-bit liukulukulaskenta RTL-koodit FPGA:lle. Sitten vaikka 30 rinnakkaista kopiota. Jokaisella kellojaksolla valmistuu 30 laskua. Kello voi olla vaikka 500 MHz.

Peruslaskutoimituksilla pyörittelemällä saa hyvin logaritmit, trigonometrian jne., niin kuin varmaan tiedätte. Esim neliöjuuri lasketaan AMD:n prossuissa Newtonin menetelmällä iteratiivisesti (tosin eka kierros taulukosta).

Jakolasku on hidas, kannattaa kiertää bittisiirroilla tai kertolaskuilla.

Uusimmat

Suosituimmat