60

Bah tel que tu le dis, j'ai compris que tu gères déjà sin(x).
Si tu gères sin(x) avec une fonction (les types c'est toi qui vois si tu fais aussi une calculatrice d'entiers infinis ça sera pas double, et unary_neg c'est le - unaire, appliqué à ton format de données)
double my_sin(double x)
{
  if (x < 0)
    return unary_neg(my_sin(unary_neg(x)));
// Ton code de calcul de sin(x) qui existe déjà normalement
}
avatar
;)

61

normalement il faut empiler le - unaire comme un operateur normal, avec une prioritée supérieur aux + -*/ (donc l'algo de l'aiguille marche encore), mais apparemment, j'ai un petit probleme avec ca, ce ne doit pas etre grand chose.
Enfin si tu veux parler de ca, tu peux venir sur #ti-fr j'y suis toutes les journées vu que je suis en stage.

62

grr c quoi ce bugsad
je represente le -1 par un !
et quand je fais:
if (pTmp->Op == '!' ) *(pTmp2-1) = (*(pTmp2-1));
il me met !1 = 1 normal
si je met:
if (pTmp->Op == '!' ) *(pTmp2-1) = (*(pTmp2-1));
il me met !1=-1E1228 sad
je ne comprend vraiment pas!

63

tu peux optimiser en :
if (pTmp->Op == '!') (void)0;

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

64

mouarf grin
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

65

heu non en fait j'ai mal ecrit mon probleme:

je represente le - unaire par un !
et quand je fais:
if (pTmp->Op == '!' ) *(pTmp2-1) = (*(pTmp2-1));
il me met !1 = 1 normal
si je met:
if (pTmp->Op == '!' ) *(pTmp2-1) = -(*(pTmp2-1));
il me met !1=-1E1228
je ne comprend vraiment pas.

66

ou sinon, -1 <=> 0-1

67

oui, mais je comprend pas cette erreursad

68

y'a pas une erreur de casting quelque part à côté?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

69

et si tu fais *(pTmp2-1) = 42.8 ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

70

je laisse tomber ça me saoule.................

71

?

72

Pollux
: et si tu fais *(pTmp2-1) = 42.8 ?

> j'ai bien 42.8.. donc le probleme vientdrait pas de tigcc?

73

Peut-être que *(pTmp2-1) contenait un 1 invalide... Que donne "assert(!memcmp(pTmp2-1,&one,sizeof(float)))" avec "float one=1.0" ?
Sinon y a des chances que ça vienne de TIGCC, oui.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

74

il me met Cond? je comprend pas ce que ca veut dire..

75

ou sinon, -1 <=> 0-1

En effettongue
d'ailleurs
*(pTmp2-1) = 0. - *(pTmp2-1);
marche parfaitement.. je pense que ca vient de tigcc.

76

./74>
? il te met une boîte de dialogue et quitte le programme ?

si oui tu peux essayer de comparer le contenu des deux trucs en hexa...

./75> c probable, mais ça pourrait (théoriquement) venir d'un float invalide qui fait bugger certaines fonctions de float et pas d'autres ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

77

bdg + Add error.

78

JackosKing VNR :
if (pTmp->Op == '!' ) *(pTmp2-1) = -(*(pTmp2-1)); il me met !1=-1E1228

A mon avis tu forces le typage de sorte que le compilateur ne sais pas que tu as des floats à cet endroit là, et du coup ça met un entier négatif à la place d'un float, d'où l'erreur de représentation.
So much code to write, so little time.

79

float *pTmp2 = (float*)malloc(psExpression->uSize*sizeof(float));
> c pourtant bien défini en float? sad

80

C'est sur PedroM que tu testes ? Si c'est le cas, c'est peut etre un bug de ma part.

81

Oui, je teste sur pedrom. (d'ailleur j'ai pas de rom ti officielle, donc je peut pas te dire si ca plante sur les rom tissad ).

82

et vti ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

83

Le code de PedroM pour neg:
;bcd bcdneg (bcd x);
bcdneg:
	move.w	4(a7),d0
	ori.w	#$F000,d0
	move.w	d0,-10(a6)
	move.l	6(a7),-8(a6)
	move.l	10(a7),-4(a6)
	rts


Completement foireux !!!!!!
Merci pour le bug report smile

84

Marrant tigcc n'optimise pas 0-x en -x grin

85

Oui.. c pas toptongue
Au fait, il parait que Pedrom supporte les memes nombres que la rom TI? pour les utilisers ainsi que leurs opérations respectives, il faut que je fasse quoi?

86

Ben math.h ?

87

Je croyais que les fonctions de math.h etaient en statiques.
donc si j'utilise une fonction de :
http://tigcc.ticalc.org/doc/timath.html
alors ca appelera une romcall de pedrom et donc tes routines de calcul ASM?

88

Oui. Mais les fonctions de math de PedroM sont loin d'etre geniales grin

89

Erf, ie? si je les recode en C j'ai des chances de faire plus rapide? tongue
sinon au niveau opération de base en bcd, c'est bien codé? parce qu'à la limite je peux refaire les fonctions de cos etc.. mais les fonctions de base, ca devient plus chiansad.

90

Le BCD autorise pas des trucs geniallissimes en termes de vitesse.
Maisles operations de base marchent raisonnablement (A part bcdneg).
Tu peux toujours recoder les fonctions en C, puis apres tu me les files pour que je les mettes dans PedroM wink