Aucune implémentation particulière n'est requise. La norme C++ n'en parle pas beaucoup. La norme C aborde un certain nombre de détails sur le modèle conceptuel supposé pour les nombres à virgule flottante, avec un signe, un exposant, un significant dans une base b
, et ainsi de suite. Il, cependant, précise que cela est purement descriptive, et non une exigence sur la mise en œuvre (C11, note 21):
Le modèle à virgule flottante vise à préciser la description de chaque caractéristique et à virgule flottante ne nécessite pas que l'arithmétique en virgule flottante de l'implémentation soit identique.
Cela dit, bien que les détails peuvent varier, au moins désinvolture il me semble que la production (par exemple) une mise en œuvre conforme de double
qui ne correspondait pas assez en étroite collaboration avec le modèle habituel (c.-à-un significand et exposant) serait difficile (ou du moins difficile à faire avec la performance compétitive, de toute façon). Cependant, il ne serait pas particulièrement difficile de le faire varier d'une autre manière, par exemple en réarrangeant l'ordre ou en utilisant une base différente. La définition de std::numeric_limits<T>::digits
(et std::numeric_limits<T>::digits10
) implique assez directement que ce qui est répertorié en tant que type à virgule flottante doit conserver (au moins approximativement) la même précision pour tous les nombres sur une plage assez étendue de grandeurs. De loin, la façon la plus évidente d'y parvenir est d'avoir un certain nombre de bits/chiffres consacrés à un significand, et un autre ensemble (séparé) de bits consacré à un exposant.
Votre citation ne répond pas vraiment à la question. La question demande s'il existe des restrictions sur les formats de virgule flottante autorisés. Votre réponse montre que les formats à virgule flottante doivent être documentés par l'implémenteur. C'est lié mais pas vraiment la même chose. – hvd
@hvd: Cela (l'implémenteur doit fournir la documentation) EST la seule restriction, à part les plages et opérations requises que la bibliothèque mathématique doit implémenter. –
@hvd Je ne suis pas sûr de comprendre. Est-ce qu'une simple "ceci est la seule restriction" dans la réponse serait suffisante pour vous? – TartanLlama