Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

FCVT.C-ASCll Plutajuće tačke za pretvaranje u C


FCVT.C je implementacija (skoro zastarelog) POSIX funkcija ECVT() i FCVT() koje su korisne u pretvaranju IEEE-754 duplo-preciznih brojeva plutajućih tačaka u formate ASCll koje ljudi mogu da pročitaju.

Ove funkcije su prividno zamenjene ekvivalentnom funkcionalnošću u sprintf-u(), iako i nije neka uteha uopšte ako pokušavate da implementirate set printf()-sličnih funkcija na svoju ruku bez regresa za bilo šta u “stdio”. Kao što sam ja uradio. Otuda ova implementacija, koja bi trebalo da bude dobra kao što i jeste, ili kao početna tačka za prevođenje na druge programske jezike.

Ponašanje i interfejs su identični, i imena su slična sa funkcijama koje zamenjuju. Za više detalja videti vašu lokalnu ECVT(3) stranu u priručniku. Ako je nemate pri ruci, moguće da još uvek ima neki priručnik dostupan ovde .

Dostupne su dve verzije: “mala/brza” i “bolno tačna”. Obe verzije su testirane na 32bit i 64-bit mašinama obe orijentacije.

Mali, brzi i uglavnom precizni

char *e_cvt(double value, int ndigit, int *decpt, int *sign);
char *f_cvt(double value, int ndigit, int *decpt, int *sign);

Ova verzija koristi aritmetiku plutajućih tačaka i precizna je do značajnog broja decimala koje mogu biti prezentovane tačno za deo frakcije od uskladištenog binarnog broja. Ova verzija neće propisno konvertovati precizno predstavljen skalarni binarni broj čije ispravne decimale prevazilaze 6(ili 15) značajnih decimalnih brojeva koje odgovaraju na 24 (ili 53) značajne bitove u uskladištenom prikazu.

Skinite izvorni kod: fcvt-1.1.tar.gz
Pretražite izvorni kod:fcvt-1.1
Izvinite ali nema te strane u priručniku. Ako vam stvarno treba iz nekog razloga pošaljite mi poruku i ja ću vam je odmah “šibnuti”.

Moraćete da se povežete protiv matematičke biblioteke (npr. fdlibm ili vaš lokalni libm) da bi koristili ovu verziju.

Bolno tačna verzija

char *fcvtf(float  value, int ndigit, int *decpt, int *sign);
char *ecvtf(float  value, int ndigit, int *decpt, int *sign);
char *fcvtd(double value, int ndigit, int *decpt, int *sign);
char *ecvtd(double value, int ndigit, int *decpt, int *sign);

Ova verzija je obimnija i sporija i koristi višestruko preciznu integralnu aritmetiku da bi izbegla bilo kakav gubitak u preciznosti. Reprodukovaće tačnu decimalu, ekvivalent od bilo kog precizno uskladištenog skaliranog binarnog broja, i u integralnim i frakcionim delovima. Radi tako što konvertuje plutajuće brojeve u 256-bitni (2048-bit za duple) fiksno pokazni broj, (multiplicirajući “mantissu” od njenog binarnog eksponenta), i zatim konvertujući to do decimale (zadržavajući proizvoljnu količinu preciznosti, kao što je potrebno, tokom procesa).

(Ponovljen integral pomnožen sa deset, korišćen tokom konverzije dela binarne frakcije do decimale, iziskuje dva dodatna bita preciznosti za svako izvedeno množenje. Neke verzije fcvt odbacuju ove najmanje značajne bitove, vodeći u najboljem slučaju do nepravilnog zaokruživanja ili u najgorem slučaju do nasumičnog otpada u output-u ).

Ova verzija uključuje samo one funkcije koje zahteva od biblioteke višestruko preciznih integrala . Moraćete da usnimite tu biblioteku fcvt2 Makelife da bi saopštili kompajleru gde da nađe uključene fajlove.

-Skinite izvorni kod: fcvt2-1.0.tar.gz
-Pretražite izvorni kod: fcvt2-1.0
Izvinite ali nema te strane u priručniku. Ako vam stvarno treba iz nekog razloga, pošaljite mi poruku i ja ću vam je odmah “šibnuti”.

Epilog

Fcvt i Fcvt2 su distribuirani u ime MIT licence. Nijedan od njih vas neće inficirati (ili vaš projekat) nekim virusom.

Ako nađete neke bagove,kvarove ili imate sugestije, molim vas pošaljite ih na lan domena ovog sajta. Hvala !



Published (Last edited): 07-10-2012 , source: http://piumarta.com/software/fcvt/