Numerele în septembrie 2015, la noua reluare - Partea I: Preambulul dezastrului

La 12 septembrie 2015, dorind să mai extind fondul numeric II pe stilul cel vechi (de acumulare de masă numerică de manevră), am început din nou să lucrez la numere, la început mai sporadic (= mai cu măsură) faţă de 2009-2013 şi 2014. Am vrut să adaug, în fişier separat, numere noi, în privinţa coeficienţilor de fracţionare abundenţială.

Anume: dacă în GIG.TXT erau numere cu abundenţe fracţionate de la întreg până la a 500000-a parte, acum extinderea fondului II urma să presupună numere ale căror abundenţe să aibă fracţionare în intervalul: 500001 -> 1000000.

Separare fermă, în alt fişier decât GIG.TXT cel cu 1.611 şi ceva de miliarde de octeţi (nu am depozitat dimensiunea exactă a lui). Numele: GIGNOU.TXT.
Şi am pornit.

Aproximativ, numerele pe care le-am pus în el variau ca mărime de la 10^50 la 10^130 (iar nu am consemnat exact undeva). Urma să mă concentrez pe acea zonă abordabilă a "piramidei numerice", cea cu mai mult potenţial de fruct numeric (fără numerele mici de până în 30 de cifre, dar şi fără numerele mari, de 150-200 sau mai multe cifre.
Mai speram să se poată găsi, în adăugare la cele 22777 de numere de fond I, şi alte numere, în special de prin zona "45 -> 70", pe unde m-aş fi aşteptat să descopăr, în timp, un oarecare număr cu suma divizorilor (totală) de 4.1 ori el însuşi, sau 3.1, fără a-l socoti pe el ca divizor.

Deci mai doream numere noi, bazate pe impulsul dat de extinderea fondului II cu numerele de mai sus (separat de ce făcusem cu GIG.TXT), pe vechiul principiu al obţinerii numerelor unele din altele, prin înmulţiri (căutare în sus) sau împărţiri (căutare în jos), cu lărgirea personal hotărâtă a paletei abundenţiale.

Fişierul GIGNOU.TXT primea acum, în special prin căutări NUMSIMPL (cele mai fructuoase ca număr de rezultate), de fapt doar prin NUMSIMPL de nu mă-nşel, numere cu adevărat diferite de ceea ce fusese pus în GIG.TXT, pentru că nu mai aveau nimic comun abundenţele: intervalele [1, 500000] şi [500001, 1000000] sunt disjuncte, precum se ştie.

Pentru noua filtrare am modificat nişte validatori din TOLIL.h (VALID4, VALIDR, TRAT, poate şi pe TRAT1) şi cu această ocazie am creat pentru NUMSIMPL un validator separat, dedicat fondului 1 pentru ziua când ar fi urmat să caut direct numere de fond 1 cu NUMSIMPL, mulţumit de acumularea la fondul 2 extins (neştiind care ar fi fost acea zi, ci perspectivând). Se cheamă TRAT1 şi foloseşte direct numărul 11 ca limită superioară care nu se atinge, pentru că:

- Se face divizorul cel comun dintre numărul iniţial (prezent în depozit, folosit la căutare) şi suma divizorilor (la VALIDN() în TOLIL.h);

- Se obţin pe rând câturile împărţirii la el ale numărului şi sumei, care, câtul sumei ca numărător, iar cel al numărului ca numitor, puse într-o fracţie ireductibilă înseamnă chiar abundenţa numărului;

- Aceste numere, numărător / numitor, în cazul numerelor care corespund abundenţial sunt numere naturale accesibile (adică îndeajuns de mici să poată fi reprezentate pe tipul întreg pozitiv pe 64 de biţi). Iniţial, cum sunt calculate la VALIDN, ţin de numărul din depozit; mai departe, la NUMSIMPL, principiul căutării presupune înmulţirea numărătorului şi respectiv a numitorului cu un număr prim, respectiv cu suma divizorilor acelui număr prim (ordinea diferă în funcţie de cum se face căutarea, sus sau jos), pentru simularea abundenţei numărului care s-ar obţine înmulţind sau împărţind numărul din Fond cu factorul prim;

- Abundenţa noului număr, fiind nu neapărat fracţie ireductibilă, este supusă unui nou CMMDC (natural clasic pe 64 de biţi, de această dată, nu tot mpz_t), şi din CMMDC se returnează valoarea care corespunde numitorului, ajuns ireductibil, al fracţiei abundenţiale; este reprezentabilă totuşi pe 64 de biţi dacă se pleacă de la un număr care a fost filtrat corect pentru abundenţă;

- Numitorul cel ireductibil se înmulţeşte cu acel prag de neatins al fracţionării abundenţelor (11 pentru fracţionările până la 10, sau cum era 500001 la GIG.TXT, sau 1000001 la GIGNOU, cu comparaţie adiţională faţă de 500000);

- Numitorul iniţial, cel neredus, al abundenţei noului număr, trebuie să fie mai mic decât produsul acesta, ca noul număr să se încadreze în paleta de abundenţe, la căutarea NUMSIMPL; atunci el se acumulează în fişierul de rezultate numerice.

- Abundenţe (posibil ireductibile) care pot fi întâlnite în gama [1, 500000]: 3684752/487787, 3279472/398787, 2010003/276002; la căutarea unui număr nou, o astfel de abundenţă în NUMSIMPL se poate înmulţi cu 84/83 (dacă numărul iniţial este înmulţit cu 83), sau cu 83/84 dacă se caută în jos.

Noua fracţie are, fireşte, numărător şi numitor abordabili pe 64 de biţi, care însă pot fi reductibili şi trebuie să ajungă ireductibili, deci CMMDC; numitorul rezultat de acolo se înmulţeşte cu acel prag neatins de sus, şi se compară cu numitorul iniţial; dacă noua fracţie era deja ireductibilă, numitorul ajuns 1 devine cu această înmulţire chiar acel prag, şi dacă numitorul iniţial se încadrează în paletă, este mai mic şi numărul cel nou trebuie adunat; dacă fracţia nu era ireductibilă, încadrabilitatea în paletă respectă regula de la NUMSIMPL cu păstrarea proporţiei de reductibilitate, dată de CMMDC.

Analog funcţia TRAT (fondul 2 la NUMSIMPL).

Pentru situaţia GIGNOU am modificat funcţia TRAT a lui NUMSIMPL să aibă grijă ca, la înmulţirea numitorului ireductibil al abundenţei noului număr (cu 1000001), să se facă şi înmulţirea cu limita superioară atinsă a fondului numeric de la GIG.TXT (1000001 >> 1, adică numărul 500000), verificându-se nu doar faptul dacă înmulţit cu 1000001 devine mai mare decât numitorul iniţial (eligibil la fondul 2 extins), ci şi dacă înmulţit cu 500000 (fix) el este mai mic decât numitorul iniţial (adică să nu se încadreze la abundenţele cu numitori ireductibili egali cu maxim 500000, adică la GIG.TXT). Aşadar, verificam că noul număr este sau nu bun pentru fundul 2 extins, strict în afara GIG.TXT.

Faptul că acum erau două verificări cu înmulţire în formula de returnare a funcţiei TRAT îngreuna cumva validarea, dar era vorba de numere complet noi, în afara uriaşului GIG.TXT; în plus, din cât am văzut, 500001 -> 1000000 - urile păreau a fi ceva mai puţine cantitativ, deci ceva mai rare, faţă de cele "de dedesubt". Aşa mi s-a părut, de fapt fără să fi adunat mult timp din ele, Am putut totuşi să trec de 125 de gigaocteţi zecimali de fond numeric pentru ele, ce părea a avea oarecare profunzime (pătrundere în mulţimea numerelor naturale după ele). Dar nu am lucrat mult să le găsesc cât mai multe, atunci.

Din noiembrie 2014 mai exista un fişier de circa 15.1 (?) miliarde de octeţi, NOU.TXT, populat cu numere ai căror numitori abundenţiali erau strict peste 500000 fără limită superioară, dar cu acea formulă fără limită superioară foarte multe numere aveau numitori abundenţiali mult mai mari, dincolo de milion chiar cu mult, numere tot mai oarecare ale mulţimii numerelor naturale. O parte destul de mică a lor avea abundenţă rezonabilă, de tipul numitorului până-n milion. Experimentul NOU.TXT mă dezamăgise, repede. Era ca la RAPIDNUM.

Cam 128 de miliarde de octeţi a ajuns GIGNOU.TXT să aibă. Acum nu ţineam calculatorul să meargă încontinuu, ci se întâmpla că seara la 21:59 întrerupeam căutarea în mod abrupt, să-l sting până la ora 10, ca să nu mai stau nedormit târziu cu calculatorul aprins. Îmi propuneam o extindere măsurată, ponderată, cumpătată, cu doze şi răbdare, a fondului numeric (un motiv pentru care nu am adunat intens numere dintr-acelea), dar şi cei 128 GB însemnau o cantitate.

Cum mersesem pe principiul marelui fişier unic cu GIG.TXT, aşa făceam acum cu GIGNOU.TXT. Ar fi urmat ca în timp să-i reglez şi lui conţinutul în funcţie de intervalele puterilor de 10 ale numerelor, cu vectori de factori primi pentru fiecare interval (zona CF80.TXT, CF100.TXT, CF130.TXT; în principiu zonele numerice până la 160 de cifre). Căutarea cu NUMSIMPL s-a făcut cu CF160.TXT ca fişier de factori primi, cuprinzător pentru toate mărimile numerelor implicate în GIGNOU. Extensia fondului 2 creştea treptat.

Întrucât nu îmi făcusem voie şi răbdare să studiez o formă mai eficientă de obţinere a numerelor de fond 1 prin înlocuiri de factori primi, prin lanţuri de puteri de factori primi, generate aleator şi răbdător în stil sigma-chain (adică o formă mai performantă decât FACTORSUB-urile, care nu aduseseră multe numere noi), mergeam tot pe acumularea de multe numere de manevră, cu obţinerea unele din altele, cu acest segment nou; din cauza continuării poveştii cu numerele în acest stil, nu consideram că acum a început capitolul 4 numeric (cu paradigmă nouă), ci-l numeam "Capitolul 3 extins".

Capitolul 3 fusese lucrat în 2014, cu toate cuceririle algoritmice şi expansiunea numerică de atunci, capitolul 2 fusese, aproximativ, 15 noiembrie 2009 - 16 mai 2013, iar capitolul 1 erau momentele răzleţe din perioada 2005 - 2009, când mă interesau numerele.
Dar şi în capitolul 2, chiar şi în 1, folosisem principiul obţinerii numerelor unele din altele cu înmulţire şi împărţire. Ideea de fond 2 cu numitori abundenţiali peste 10 am pornit-o în noiembrie 2010 în capitolul 2; masă tot mai mare de manevră în capitolul 3. Deci primele 3 capitole numerice au avut în comun, în măsură mare, paradigma Unele din altele, 2 şi 3 cu fondul 2 în sine.

Însă la ideea de capitol 4 numeric m-aş fi gândit cu renunţarea la lunga şi marea folosire a volumului uriaş de numere de manevră "fond 2", îmbunătăţind procedeurile cu care am lucrat la FACTORSUB-uri (şi la cele două programe de JEDENASCIE de dinainte). Dar reînceperea lucrului la numere din septembrie 2015 a păstrat ideea de fond mare de numere auxiliare, cu disjuncţie faţă de colecţia de dinainte, GIG.TXT. Astfel, nu capitolul 4, ci capitolul 3 extins. Şi cu lucru măsurat, fără neîntrerupere.

(va urma)

Comentarii

Postări populare