• [^] # Re: Quelques infos

    Posté par (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 4.

    c'est très pénible de calculer en virgule fixe

    Je ne connais pas bien le domaine mais comme il existe des calculs en "entier infini", il existe aussi des calculs en flottant infini.

    Je ne vois pas en quoi l'ordre change la vitesse.

    Par ce que a+b+c+d sera plus lent que (a+b)+(c+d) car tu enlèves une dépendance read-after-write.

    Au passage, les derniers gcc vectorisent tout seul !

    Enfin, si on l'aide beaucoup beaucoup beaucoup...

    Sachez que GCC ne modifient pas les calculs sur les flottants car justement l'ordre des opérandes joue énormément sur la précision du résultat. Il ne pas simplifier x*2.0/2.0 par exemple.

    C'est le cas par défaut. Mais cela n'est plus vrai avec l'option --fast-math.


    D'ailleurs comment choisi-t-on d'utiliser un type d'arrondi plutôt qu'un autre ?

    Selon le résultat attendu ?


    C'est choix par équation ou par opération ?

    Les gérer ? Comment ça ? Il suffit de vérifier à la fin qu'on n'a pas de NaN, -INF ou INF je pense. Si on sait ce qu'on fait, on ne trimballe pas de NaN.

    Par exemple, "<" définit tous les comportements à avoir avec NaN < NaN, NaN < nombre, etc... Ce qui est tellement lent qu'il existe des intrasecs pour faire un test qui se fout des NAN. Je me demandais donc quelle était l'utilité. En gros, le but est de faire de la détection d'errreurs ?

    "La première sécurité est la liberté"