Notez que Maple (et Matlab) vous montrent une représentation radix-10 d'un nombre à virgule flottante double précision du matériel.
donc vous devriez peut-être plus préoccupés par la valeur matérielle double précision sous-jacente.
> restart:
> kernelopts(version);
Maple 2015.0, X86 64 LINUX, Feb 17 2015, Build ID 1022128
> X:=Vector(1,datatype=float[8]): # double precision container
> p:=proc(x) x[1]:=DBL_EPSILON; end proc:
> evalhf(p(X)):
> lprint(X[1]);
HFloat(.222044604925031308e-15)
> printf("%Y\n", X[1]);
3CB0000000000000
Ce dernier résultat est « formaté en ordre des octets indépendant format vidage hexadécimal IEEE (largeur de 16 caractères) », selon la documentation. Alors, que vous donne Matlab quand vous printf
son eps
dans le format équivalent? Une rapide recherche sur le Web semble révéler que cela donnera 3CB0000000000000 à côté de ce 2.220446049250313e-16 que vous avez vu.
En d'autres termes: le matériel double représentation de précision est la même dans les deux systèmes. Ils le représentent différemment dans la base 10. Notez que la valeur base 10 affichée par Maple a 18 décimales. Les chiffres après le 15 sont des artefacts d'une sorte, stockés de sorte qu'en général les numéros stockés en interne peuvent aller-retour correctement pour des conversions répétées dans les deux sens. Notez que la double précision matérielle se rapporte à quelque chose entre 15 et 16 décimales. Ainsi, si vous voulez comparer les deux systèmes, vous pouvez (et devriez probablement) comparer les valeurs de double précision matérielle stockées et non les représentations de base 10 après la 15ème place.
Dans Maple, 'evalhf (DBL_EPSILON)' 'donne ,222044604925031308 10^-15', qui est le même que' eps' dans Matlab. Alors quel est le problème? –
Quel genre de calcul faites-vous dans lequel 30 + flottant compte vraiment? : ~ – NKN
Il est conçu pour prouver un point sur la machine epsilon, que je ne comprends pas. – BigD4J