Retourner au contenu associé (journal : Cohérence des fonctions d'arrondi)
Posté par gipoisson le 30 novembre 2016 à 18:52. En réponse au journal Cohérence des fonctions d'arrondi. Évalué à 1.
Quid de bibliothèques de haute précision ? Par exemple, GNU MPFR implémente les cinq modes d'arrondis d'IEEE754-2008.
/* linuxfr.c */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <mpfr.h> void exemplifier(mpfr_t, mpfr_rnd_t, char **, size_t); int main(int argc, char* argv[]) { mpfr_t x; mpfr_init2(x, 64); char *eleven[] = {"11.5", "-11.5"}; char *twelve[] = {"12.5", "-12.5"}; exemplifier(x, MPFR_RNDN, eleven, 2); exemplifier(x, MPFR_RNDN, twelve, 2); exemplifier(x, MPFR_RNDZ, eleven, 2); exemplifier(x, MPFR_RNDZ, twelve, 2); exemplifier(x, MPFR_RNDU, eleven, 2); exemplifier(x, MPFR_RNDU, twelve, 2); exemplifier(x, MPFR_RNDD, eleven, 2); exemplifier(x, MPFR_RNDD, twelve, 2); exemplifier(x, MPFR_RNDA, eleven, 2); exemplifier(x, MPFR_RNDA, twelve, 2); mpfr_clear(x); mpfr_free_cache(); return 0; } void exemplifier(mpfr_t val, mpfr_rnd_t rnd, char **lit, size_t size) { size_t i = 0; fprintf(stdout, "\n"); for(i = 0; i < size; ++i) { mpfr_set_str(val, lit[i], 10, rnd); mpfr_out_str(stdout, 10, 10, val, rnd); fprintf(stdout, "\t"); } fprintf(stdout, "\n"); }
Disclaimer: n'ayant pas de grande aisance en C, je me fie au compilateur pour m'indiquer les éventuelles bourdes de ce que j'aurais commises.
gcc -lmpfr -lgmp -std=c11 -g -O3 -Wall -pedantic -Wextra -ggdb -fomit-frame-pointer -fstack-protector-all -ftrapv -pipe -flto linuxfr.c -o linuxfr
1.150000000e1 -1.150000000e1 1.250000000e1 -1.250000000e1 1.150000000e1 -1.150000000e1 1.250000000e1 -1.250000000e1 1.150000000e1 -1.150000000e1 1.250000000e1 -1.250000000e1 1.150000000e1 -1.150000000e1 1.250000000e1 -1.250000000e1 1.150000000e1 -1.150000000e1 1.250000000e1 -1.250000000e1
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Haute précision
Posté par gipoisson . En réponse au journal Cohérence des fonctions d'arrondi. Évalué à 1.
Quid de bibliothèques de haute précision ? Par exemple, GNU MPFR implémente les cinq modes d'arrondis d'IEEE754-2008.
Disclaimer: n'ayant pas de grande aisance en C, je me fie au compilateur pour m'indiquer les éventuelles bourdes de ce que j'aurais commises.