<< Zpět

 

  Česky: , English:

BigInt Bernoulli

Knihovna pro velká celá čísla s generátorem Bernoulliho čísel

a s databází předgenerovaných 5000 sudých Bernoulliho čísel B2 .. B10000

Projekt na GitHub: https://github.com/Panda381/BigInt

Knihovna BigInt slouží k práci s velkými celými čísly. Knihovna je doplněna generátorem Bernoulliho čísel, která lze použít např. k výpočtu velkých lineárních faktoriálů. Knihovna obsahuje předgenerovanou databázi 5000 sudých Bernoulliho čísel (B2 až do B10000). Knihovna je součástí knihovny pro floating-point výpočty s vysokou přesností na Raspberry Pico.

Použití

Program se spouští se 3 parametry v příkazovém řádku. Prvním parametrem je počet generovaných Bernoulliho čísel (např. číslo 5000 vygeneruje čísla B2 až B10000). Druhým parametrem je typ výstupního souboru: 1=CSV s tabulátory jako oddělovač, 2=CSV s čárkami, 3=CSV se středníky, 4=zdrojový kód CPP. Třetím parametrem je jméno výstupního souboru.

Soubor !gener.bat je povelový soubor sloužící jako ukázka použití - vygeneruje všechny 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 obsahující databázi vygenerovaných Bernoulliho čísel. Výpočet Bernoulliho čísel je zdlouhavá operace (výpočet 5000 čísel zabere několik týdnů), proto je dosažený stav během výpočtu průběžně ukládán do souboru Bernoulli.bin. Výpočet tak lze kdykoliv přerušit a opět znovu spustit s pokračováním od stejného místa. Jsou-li požadovaná Bernoulliho čísla, která se už nacházejí v databázi (tj. do počtu 5000), použijí se hodnoty s databáze a jejich vygenerování je podstatně rychlejší (zápis 5000 Bernoulliho čísel z cache na disk zabere několik minut).

Složka bernoulli-mini obsahuje zjednodušenou verzi knihovny, psanou v C kódu. Knihovnu lze přeložit jako program MS VC++ 2005 nebo začlenit do projektu Raspberry Pico s ARM-GCC. Knihovna vygeneruje prvních 512 Bernoulliho čísel (B2 až B1024) v C kódu (bernoulli.c a bernoulli.csv) a neumožňuje cachování výpočtu.

Poznámky

Dva identicky generované soubory Bernoulli.bin se mohou lišit na offsetu 5 - položka "loop", která nemusí být správně obnovena při přerušení a pokračování generování (pro správnou funkčnost není důležité).

Program je vytvořen v Microsoft Visual Studio VC++ 2005. Program je kompilován v 64-bitovém módu x64. Je možná kompilace i pro 32-bitový mód, je však značně pomalejší a může trpět nedostatkem paměti.

Knihovna obsahuje části kódu optimalizované assemblerem x64, které jsou překládány programem NASM 2.13.

Knihovna vznikla k výpočtu Bernoulliho čísel pro účely knihovny pro výpočet čísel s plovoucí desetinnou čárkou s vysokou přesností, konkrétně pro výpočet velkých lineárních faktoriálů. Prvních 512 Bernoulliho čísel (B2 až B1024) umožňuje výpočet lineárních faktoriálů s přesností čísel 4096 bitů, tj. 1224 číslic. Plný rozsah 5000 Bernoulliho čísel (B2 až B10000) by bylo možné použít pro výpočty velkých lineárních faktoriálů s přesností 40000 bitů, tj. 12240 číslic.

Nejvyšší číslo B10000 má čitatel dlouhý 27691 číslic (jmenovatel je 13 číslic) a zabírá 11504 bajtů.

 

Odkaz ke stažení knihovny: bernoulli.zip

Miroslav Němeček

<< Zpět