O cronologie șerpuită a numerelor, din 2014 (Partea I)

Aici continuă înscrierea de idei din fișierul de jurnal expunător al numerelor, cel început în 2014 - și anume, avem o primă parte de cronologizare a treburilor pe care le făcusem în căutarea numerelor până atunci.

*
Borland C++ long double, MIRACL (Flash, Big), GMP, MPIR, iar GMP. Adițional: PARI/GP.
Pe vremuri: Borland Pascal, unde erau real, extended, comp.
În octombrie 2008: încercări cu double, long double (nu era inițializată variabila de long double).
Noiembrie 2009: scurtă încercare cu BigInteger din Java, care era lent.

Primăvara 2010: long double nu mai era satisfăcător, având limitare.
Rezultatele fuseseră deja găsite sau mai erau tot mai puține de găsit.
long double din Borland C++ 5.5.1 Command Line Tools: pe 80 de biți.

Dar reprezintă exact în memorie acele numere al căror cel mai mare divizor impar este sub 2^64.
Adică să se împartă la 2 de suficiente ori încât să scadă sub 2 la puterea 64, altfel se face trunchiere (fapt fatal la numerele cu sume de divizori, se schimbă totul).
2^64 are 20 de cifre. Puteau fi numere de vreo 25 de cifre (excepțional cu mai multe) care să se încadreze, dar altele deja nu se încadrau.

Abundențe intuibile.
Și atunci era nevoie de un tip de date mai mare decât long double.
Așa am ajuns la câteva biblioteci de precizie aritmetică arbitrară.

MIRACL, ARPREC, NTL, plus un așa-zis long double pe 128 de biți (de fapt nu am avut peste 80), plus altceva pe lângă bibliotecile de mai devreme (era și TTMATH).
Era una la care lucrase un italian, Ivano Primi: HPA (High Precision Arithmetic).
Eșecuri: NTL, HPA, TTMATH, ARPREC, acel long double de „128” de biți.

MIRACL era cea mai corectă și ordonată dintre cele pe care le-am încercat (toate pentru C/C++), dar era înceată față de long double (fapt valabil în general pentru precizia arbitrară, unde tipurile de date sunt artificiale, implementate software, pe când tipurile native cum era long double sunt implementate hardware).
La alte biblioteci erau erori în surse (probleme la facerea obj-urilor și a LIB-ului).

Am văzut și GMP-ul (GNU Bignum Library), recomandată ca fiind bună la calcule cu numere mari, dar era pentru Linux, era cu Makefile, compatibilă cu GCC, despre care aveam impresia că e mai lent decât Borland C++ (încercasem cu el sub Windows, o singură dată, în cadru destul de limitat).

În plus nu aveam deschidere spre Linux atunci (nu instalasem niciodată), nu am știut cum se folosește un kit de instalare bazat pe Makefile (căutam executabil / batch), și am crezut că GMP nu este bibliotecă bună de instalat, de fapt. Pentru Windows, în abordare clasică, într-adevăr, nu era, fiind în regimul Makefile. Iar de Cygwin nu știam în 2010, și eram nevolnic și limitat în gândire ca să nu îl caut.

MIRACL avea compatibilitate cu Windows.

Din GMP a derivat MPIR care are compatibilitate cu Windowsul, dar nu am avut atunci deschidere și interes îndeajuns, ca să aflu că există MPIR.
În plus și GMP putea fi folosit cu GCC sub Windows, la Cygwin; dar nu am avut deschiderea necesară nici spre a face așa ceva. Oricum tot mai bine de folosit sub Linux.

Și în mai 2010 am început lucrul pe MIRACL.
Prima dată am instalat MIRACL-ul în seara de 13 martie 2010, am avut un fișier de test numit factu.cpp, am văzut lentoarea firească față de long double, m-au impresionat ordinea și compilarea fără erori a bibliotecii, dar am șters-o atunci, când long double mai avea rezultate de găsit în el. Nu m-a mulțumit viteza MIRACL, în plus mai aveam așteptări de la „bătrânul” long double.

În luna mai am pus din nou MIRACL, și l-am șters iar amăgindu-mă cu acel long double pe 128 de biți, dar după ce m-am dezamăgit am re-pus MIRACL-ul. Era după 14 sau 15 mai 2010.

(va urma)

Comentarii

Postări populare