BigInt Bernoulli - knihovna pro velk cel sla s genertorem Bernoulliho sel
Copyright (c) 2023 Miroslav Nemecek, Panda38@seznam.cz
Datum verze: 5.3.2023

Strnka projektu: https://www.breatharian.eu/sw/bigint
Projekt na GitHub: https://github.com/Panda381/BigInt


Knihovna BigInt slou k prci s velkmi celmi sly. Knihovna
je doplnna genertorem Bernoulliho sel, kter lze pout nap.
k vpotu velkch linernch faktoril. Knihovna obsahuje
pedgenerovanou databzi 5000 sudch Bernoulliho sel (B2 a
do B10000). Knihovna je soust knihovny pro floating-point
vpoty s vysokou pesnost na Raspberry Pico.


Pouit
-------
Program se spout se 3 parametry v pkazovm dku. Prvnm
parametrem je poet generovanch Bernoulliho sel (nap. slo
5000 vygeneruje sla B2 a B10000). Druhm parametrem je typ
vstupnho souboru: 1=CSV s tabultory jako oddlova, 2=CSV
s rkami, 3=CSV se stednky, 4=zdrojov kd CPP. Tetm
parametrem je jmno vstupnho souboru.

Soubor !gener.bat je povelov soubor slou jako ukzka pouit
- vygeneruje vechny typy soubor pro 5000 sel B2 a B10000
(soubory bern_com.csv, bern_const.cpp, bern_sem.csv a
bern_tab.csv).

Soubor Bernoulli.bin je cache obsahujc databzi vygenerovanch
Bernoulliho sel. Vpoet Bernoulliho sel je zdlouhav operace
(vpoet 5000 sel zabere nkolik tdn), proto je dosaen stav
bhem vpotu prbn ukldn do souboru Bernoulli.bin. Vpoet
tak lze kdykoliv peruit a opt znovu spustit s pokraovnm
od stejnho msta. Jsou-li poadovan Bernoulliho sla, kter
se u nachzej v databzi (tj. do potu 5000), pouij se hodnoty
s databze a jejich vygenerovn je podstatn rychlej (zpis
5000 Bernoulliho sel z cache na disk zabere nkolik minut).

Sloka bernoulli-mini obsahuje zjednoduenou verzi knihovny,
psanou v C kdu. Knihovnu lze peloit jako program MS VC++
2005 nebo zalenit do projektu Raspberry Pico s ARM-GCC.
Knihovna vygeneruje prvnch 512 Bernoulliho sel (B2 a B1024)
v C kdu (bernoulli.c a bernoulli.csv) a neumouje cachovn
vpotu.


Poznmky
--------
Dva identicky generovan soubory Bernoulli.bin se mohou
liit na offsetu 5 - poloka "loop", kter nemus bt
sprvn obnovena pi peruen a pokraovn generovn
(pro sprvnou funknost nen dleit).

Program je vytvoen v Microsoft Visual Studio VC++ 2005.
Program je kompilovn v 64-bitovm mdu x64. Je mon
kompilace i pro 32-bitov md, je vak znan pomalej
a me trpt nedostatkem pamti.

Knihovna obsahuje sti kdu optimalizovan assemblerem
x64, kter jsou pekldny programem NASM 2.13.

Knihovna vznikla k vpotu Bernoulliho sel pro ely
knihovny pro vpoet sel s plovouc desetinnou rkou
s vysokou pesnost, konkrtn pro vpoet velkch
linernch faktoril. Prvnch 512 Bernoulliho sel
(B2 a B1024) umouje vpoet linernch faktoril
s pesnost sel 4096 bit, tj. 1224 slic. Pln
rozsah 5000 Bernoulliho sel (B2 a B10000) by bylo
mon pout pro vpoty velkch linernch faktoril
s pesnost 40000 bit, tj. 12240 slic.

Nejvy slo B10000 m itatel dlouh 27691 slic
(jmenovatel je 13 slic) a zabr 11504 bajt.
