il y A des bugs de ce type dans les compilos C. Ici au taf sur une certaine routine pas si tordue on est obligée de désactiver spéficiquement les optimisations sinon elle fait une grosse bourde d'alignement de variables qui fout tout en l'air. C'est pas un compilo tordu, c'est armcc fourni par arm corp.
C’est donc un compile tordu (Keil)et connu pour avoir pas mal de problèmes
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
En l’occurence ce qui découle de l’erreur de base (supposer que cette fonction ne peux pas retourner -0) est la seule et véritable erreur.
Le JIT prétendant que function(X) ne peux pas retourner -0 il optimise en enlevant des choses qui sont en théorie inutile car ne “peuvent pas arriver” sauf que ça arrive.
L’erreur n’est pas dans l’optimisation à supprimer certaines vérifications, si les sites conditions ne peuvent vraiment pas arriver c’est du code inutile et “mort”.
La l’unique erreur c’est cette assumption. Donc ce n’est pas une erreur de qualité du code mais une erreur de compréhension des maths de la personne qui a introduit cette optimisation.
Le code fait exactement ce qu’on lui a demandé: “ça ne peux pas retourner -0”
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Ou une erreur de la doc de la fonction ? Ou une erreur d'implémentation par rapport à une spec ?
Godzil Le 04/01/2019 à 21:37Edité par Godzil le 04/01/2019 à 22:21 Non une erreur de compréhension des maths.
Je viens de vérifier exactement quelle est la fonction, c’est
ex - 1
Expm1(-0) doit retourne -0. C’est dans la norme IEEE sur les flottants.
C’est bien une méconnaissance des maths qui est responsable.
(Edit1: correction d’une connerie
Edit2: re corrrection de ma re connerie)
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Godzil Le 04/01/2019 à 22:07Edité par Godzil le 04/01/2019 à 22:13 Oui mais c’est bel est bien correct.
C’est parce que tu travaille pas dans le domaine R complet.
-0 est différent de 0 car c’est pour représenter un nombre infiniment proche de 0, mais est légèrement en dessous.
Ce qui fait que exp(-0) est très légèrement moins que 1, et ce très légèrement moins que 1 - 1 “normal” donne un 0 très légèrement en dessous de 0, soit -0.
On travaille en flottant la, pas en entier, ni entier approximatif.
(Comprendre le “très légèrement en dessous de 0” comme quand tu travaille avec les limites “tendent vers 0 du côté des nombres négatifs )
Expm1 est fait spécialement pour traiter le cas de e^x-1 quand -1 < x < 1, sinon le faire “naïvement” à la mains avec un appel à exp(x)-1 provoquerait des erreurs d’arrondies
(C’est l’IEEE754 au passage. Elle n’est pas parfaite mais ce genre de choix comme pour expm1 n’est pas une erreur)
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Bah c'est du même ordre que quand tu dis que 23+1 = 0 ^^
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Bah je crayonne Nil et Zéro, dans R, par la définition même de 0, il n'a pas de signe...
Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Bien sûr, mais quand on travaille avec les flottants, on ne travaille pas dans |R ^^ On travaille dans un ensemble discret, avec des opérations qui ne sont plus associatives vu qu'on n'a par exemple pas toujours (a + b) + c = a + (b + c).
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Oui donc c'est un problème de compréhension de la norme, pas des maths, comme dit.
Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
oui mais attention on a bien dit expm1(-0) pas expm(0)
vu que la fonction expm1 accepte de recevoir en argument -0 (qui est zero - epsilon) elle doit retourner le résultat correct et important de zero - epsilon.
l'importance de expm1 n'est pas arbitraire, cette fonction admet un développement limité très simple en zéro, ce qui la rend facile a calculer, la fonction est proportionnelle a f(x)=x quand x est proche de zéro, et ses variations sont aussi celles de f(x)=x
Tous les efforts sont faits pour bien rappeler que cette fonction garde le signe de son argument même dans les cas limites. C'est tout a fait légitime et exact mathématiquement.
Zeph Le 05/01/2019 à 23:51 D'où tu tiens que -0 = zero - epsilon ? Ça me semble faux, -0 est une conséquence de la représentation des flottants IEEE mais c'est une valeur qui est strictement égale à zéro. Partant de là, on revient à la conclusion précédente : c'est un comportement peut-être logique mais à côté duquel il est clairement facile de passer quand on ne considère que l'approche mathématique de la fonction concernée.
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 06/01/2019 à 00:05 Oui, d'où justement la différence avec les définitions mathématiques habituelles, puisque malgré cette propriété je ne connais pas un langage dans lequel 0f != -0f (et de façon plus fiable je suppose que c'est clairement défini dans la spécification, si quelqu'un est motivé).
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
C’est plus que de la motivation qu’il faut parce que malheureusement IEEE754 ne fait pas partit des standard “gratuit” :/
L’acces au document officiel est payant :/
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
A moins que tu ne cherche à écrire une usine, et sur ton produit final est du gaz, non il faut éviter.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.