Cast de gcc Linux par rapport à Forte sous Solaris - Programmation
Marsh Posté le 12-07-2002 à 22:33:08
il est possible que le problème vienne de la stratégie de compilation des différents compilo : dynamiquement, on fait quoi quand on a 5.555555555555555556, le 6 final étant déjà un choix d'arrondi avant...
peut-être peux-tu configurer ton gcc (forte, sais pas... ).
va voir sur le site de GNU, t'auras peut-être plus d'info...
Marsh Posté le 12-07-2002 à 22:34:35
j'ai laissé un mail sur la mailing de gcc, mais j'ai toujours pas eu de réponse.
Sur le site de GCC GNU y a pas grand chose qui m'aide hélas
Marsh Posté le 12-07-2002 à 22:44:40
il semble que sur le site d'apache (???) il y aurait des infos sur les différents compilos C pour linux. as-tu essayer ta compilation avec un vieux cc tout bête ? (je crois que c'est le plus proche de solaris.?)
Marsh Posté le 12-07-2002 à 22:48:39
cc ca fait pareil.
Et fortan j'ai un problème de lib
Marsh Posté le 12-07-2002 à 22:52:01
alors, j'ai fait un petit tour dans le man de gcc, c'est imbuvable !!!!!
par contre, ai vu ça dans google. j'sis pas aller voir, mais ça ressemble à kék'chose qui pourrait t'intéresser, non ?:
Distributing Xerces-C++ - [ Traduire cette page ]
... of Xerces-C) and X License (because of ICU). XML4C binaries are published for Solaris
2.6 using Forte C++ 6.2 compiler, HPUX 11.0 using aCC, Redhat Linux 7.2 ...
xml.apache.org/xerces-c/faq-distrib.html - 45k
Marsh Posté le 12-07-2002 à 22:54:39
ReplyMarsh Posté le 12-07-2002 à 23:00:30
désolé, j'avais pas regardé ! (j'suis en train de me prendre la tête sur une connerie en js, et ça m'énerve un peu...) [ ouh ! de moi-même...].
alors là, mis à part se manger le man en entier + le bouquin O'Reilly sur gcc, j'vois pas.
à moins que tu contactes les types qui ont repris gcc en main...
sinon, regarde si y a pas moyen en utilisant des unsigned de passer à côté (??? : ça avait marché une fois pour moi...)
Marsh Posté le 12-07-2002 à 23:03:23
C'est pas une option de compil qui va rattrapper une erreur de programmation !
Marsh Posté le 12-07-2002 à 23:05:31
Verdoux a écrit a écrit : C'est pas une option de compil qui va rattrapper une erreur de programmation ! |
une erreur de prog ?
qu'elle est le type de renvoyé par un log / log si aucun cast n'est fait ?
Marsh Posté le 12-07-2002 à 23:12:12
C'est juste que c'est du code pas du tout portable.
D'une plateforme à l'autre, le résultat sera différent.
Marsh Posté le 12-07-2002 à 23:14:19
ok
m'enfin bon on sait jamais avec les options de précision des compilos où tu peux les forcer à fonctionner en mode fp IEEE etc
Marsh Posté le 12-07-2002 à 23:16:43
joce a écrit a écrit : ok m'enfin bon on sait jamais avec les options de précision des compilos où tu peux les forcer à fonctionner en mode fp IEEE etc |
Ca changera rien.
Le mode IEEE garantit une borne sur l'erreur, pas que les calculs sont exactement identiques.
Marsh Posté le 12-07-2002 à 23:18:23
ok, donc y falloir que les ch'tis gars recodent leur applis s'il veulent être portable sous nunux
Marsh Posté le 13-07-2002 à 00:36:19
joce a écrit a écrit : ok, donc y falloir que les ch'tis gars recodent leur applis s'il veulent être portable sous nunux |
suffit de faire un define en fonction de l'os
et en fonction de celui ci ajouter ou retirrer
0.000000000000001 affin kil arondisse come tu le veux au resultat
c'est porc mais bon le resultat est la
mais bon doit i avoir des option a foutre au compilo pour ce genre de trucs a mon avis mais bon
Marsh Posté le 13-07-2002 à 00:40:01
ba c'est ses options que je cherche en vain
Marsh Posté le 13-07-2002 à 00:41:46
joce a écrit a écrit : ba c'est ses options que je cherche en vain |
oui mais si c'est comme le coup de la libm
RTFM je crois
Marsh Posté le 13-07-2002 à 11:41:19
joce a écrit a écrit : J'ai le code suivant : ires1 = (int) (log(64.0)/log(2.0)) ; Sous solaris, avec compilateur forte le résultat est 6. Sous Linux, avec compilateur GCC, le résultat est 5 :/ |
Juste un truc pour vérifier : ça donne quoi avec GCC sous Solaris ?
Marsh Posté le 13-07-2002 à 15:29:07
Jar Jar a écrit a écrit : Juste un truc pour vérifier : ça donne quoi avec GCC sous Solaris ? |
Ca je sais pas, au boulot il n'y a que forte d'installé je pense
Marsh Posté le 12-07-2002 à 19:48:15
J'ai le code suivant :
ires1 = (int) (log(64.0)/log(2.0)) ;
Sous solaris, avec compilateur forte le résultat est 6.
Sous Linux, avec compilateur GCC, le résultat est 5
The problem is : comment résoudre le problème sans caster explicitement en (int) ((float)log(64.0)/log(2.0)) (je ne voudrais pas changer le code de l'application).
(option de compilation ou autre ?)
Merci d'avance
---------------
Protèges carnets personnalisés & accessoires pour bébé