J'ai écrit une petite bibliothèque (en C++ 11) pour calculer avec des quaternions, mais j'ai rapidement réalisé qu'il y a beaucoup de problèmes de précision/précision étant donné que quelques opérations en virgule flottante sont impliqués. Cela m'a conduit à regarder std :: complex et IEEE 754. std :: complex fait un bon travail sur les NaNs en particulier. Est-ce la seule chose dont j'ai besoin pour devenir "conforme à la norme IEEE 754"? Plus généralement, existe-t-il une «recette» pour transformer une bibliothèque numérique autrement naïve en une bibliothèque «conforme à la norme IEEE 754»?Comment rendre ma bibliothèque C++ compatible avec IEEE 754
Remarque: le problème est pas de savoir si le compilateur est IEEE 754, mais si je devais prendre des mesures spéciales dans mes propres algorithmes pour satisfaire IEEE 754. Après tout, je suis dans la même position que celui qui a écrit std :: complexe, et ils ont pris des mesures supplémentaires, par exemple pour NaNs.
Note de côté: si vous tenez compte de la vitesse soyez au courant de [mauvaise performance de 'std :: complex'] (https://www.youtube.com/watch?v=he-XVt1xIE0) – Drop
Merci! En effet, je prévois de rendre la conformité IEEE 754 optionnelle. Mais un papier d'Intel (bien sûr!) M'a averti des crashs de fusées et plus si ma lib n'était pas IEEE-754. – Frank
Les opérations de quaternion (comme la multiplication) traitent souvent des sommes courantes des produits (signés). Vous pouvez regarder [Résumé Kahan] (https://en.wikipedia.org/wiki/Kahan_summation_algorithm) comme un moyen relativement peu coûteux d'améliorer la précision avec la conformité IEEE-754. Vous pourriez également envisager une mise en œuvre relativement mature comme la classe de quaternion de Boost. J'imagine que les concepts complexes comme les coupures de branches, etc., deviennent beaucoup plus étranges dans un sens théorique avec les quaternions, si vous voulez être cohérent. –