A sokadik Mandelbrot halmaz nézegető elkészítéséhez kerestem egy könyvtárat, amivel javítani tudnám a felbontást, azaz a számítások pontosságát. Sajnos a long double is 1e-20 lépésköz környékén már nem üzemképes. Rá is találtam a GMP-re. Ez van Linux és cygwin alatt is.
Install: apt-get install libgmpxx4ldbl libgmp3-dev
Az előző lib-ek, azutóbbi a header file miatt kell.
A Makefile-ban ez kell a g++ meghívásához: LDFLAGS += -l gmpxx -l gmp
Ezzel kész is a környezet kialakítása. Én definiáltam egy "real" típus. Ha itt nem "long double"-t definiálok, hanem mpf_class-t, akkor szinte minden ugyanúgy működik, mint egyébként.
Érdemes még valahol az elején berakni egy mpf_set_default_prec(128) utasítást, feltéve, ha 128 bites pontosságot szerenénk. De lehet 1000 bites is.
Kiíratás is normálisan megy: cout << "Real:" << setprecision(75) << re_var << endl;
Persze nem szabad elfelejteni, hogy itt már nem tudja használni az FPU-t. Az én méréseim szerint kb. 2 nagyságrenddel lassabb, mint a beépített típusok.
További infó: http://gmplib.org/
Legyünk akkurátusak minden nap!
+jegyzések