librairie mathématique
Le fortran est disponible sous plusieurs versions, dont plusieurs gratuites; de mémoire, même Microsoft en édite un. Un autre avantage de Purebasic cependant, qui ne saute pas directement aux yeux, est qu'il est possible de programmer directement le microprocesseur, et son unité de calcul en nombres flottants. Avec un peu d'entrainement, il n'y a évidemment pas plus rapide ni plus précis, sauf pour les calculs massivement parallèles où des solutions utilisant les GPU commencent à fleurir.
Hello !
Je complète mes réponses à vos interventions :
DOBRO:
> j'ai traduit ta procedure en purebasic. ce qui m'affiche : 1708221.5000000533
On est d'accord : c'est exactement le mauvais résultat que j'obtenais dans mon premier post
CLS :
cette solution avait été proposée dans un des reply à non premier post, mais je ne vois pas quelqu'un programmer des centaines de formules mathématiques du genre :
tangx = (cos(delta)*sin(alpha1-alpha2)) / ( cos(delta2)*sin(delta1)- sin(delta2)*cos(delta1)*cos(alpha1-alpha2) )
la programmation résultante ferait un peu Shadock
De plus, HELLE avait montré que le résultat dépendait de l'ordre d'écriture des opérations...
SULREN99
> PureBasic n'a pas été créé d'emblée pour le calcul scientifique
j'en suis bien conscient et je lui reconnais d'indéniables qualités d'ergonomie et d'universalité.
Mais autant je conçois qu'un langage comme BLITZ3D, conçu pour programmer des jeux vidéos, n'ait pas besoin de pousser la précision des calculs ( son résultat dans mon premier post était catastrophique ), autant il me semble qu'il ne faudrait pas faire grand'chose dans PureBasic pour le mettre au niveau de l'ex-GFA ou de PowerBasic (très cher !).
> indiquez moi votre pseudo en PM SVP, pour le cas où, à moins que vous soyez toujours joignable sur le forum PureBasic.
je ne suis pas sur Webastro, mais je vous répondrai volontiers sur ce forum. Si tant est que j'aie des solutions à vous proposer !!
Merci à tous pour vos contributions
Je complète mes réponses à vos interventions :
DOBRO:
> j'ai traduit ta procedure en purebasic. ce qui m'affiche : 1708221.5000000533
On est d'accord : c'est exactement le mauvais résultat que j'obtenais dans mon premier post
CLS :
cette solution avait été proposée dans un des reply à non premier post, mais je ne vois pas quelqu'un programmer des centaines de formules mathématiques du genre :
tangx = (cos(delta)*sin(alpha1-alpha2)) / ( cos(delta2)*sin(delta1)- sin(delta2)*cos(delta1)*cos(alpha1-alpha2) )
la programmation résultante ferait un peu Shadock

SULREN99
> PureBasic n'a pas été créé d'emblée pour le calcul scientifique
j'en suis bien conscient et je lui reconnais d'indéniables qualités d'ergonomie et d'universalité.
Mais autant je conçois qu'un langage comme BLITZ3D, conçu pour programmer des jeux vidéos, n'ait pas besoin de pousser la précision des calculs ( son résultat dans mon premier post était catastrophique ), autant il me semble qu'il ne faudrait pas faire grand'chose dans PureBasic pour le mettre au niveau de l'ex-GFA ou de PowerBasic (très cher !).
> indiquez moi votre pseudo en PM SVP, pour le cas où, à moins que vous soyez toujours joignable sur le forum PureBasic.
je ne suis pas sur Webastro, mais je vous répondrai volontiers sur ce forum. Si tant est que j'aie des solutions à vous proposer !!
Merci à tous pour vos contributions

Salut à tous,
en purebasic pour un résultat acceptable :
on obtient = 10000001.001298055
C'est apparement la fonction pow qui présente une perte.
Sinon en freebasic (freeware) on obtient :10000000,92740968
En delphi
on obtient =10000001,0011137
Le type extended a une précision de 10 chiffres significatifs.
Turbo delphi est gratuit.
Z@ph0d//
en purebasic pour un résultat acceptable :
Code : Tout sélectionner
value.d=1
For i=1 To 10
For j=1 To 1000
For k=1 To 1000
value=Log10(Sqr(value*value))
value=Pow(10,value)
value=Tan(ATan(value))+1.0
Next k
Next j
Next i
Debug value
C'est apparement la fonction pow qui présente une perte.
Sinon en freebasic (freeware) on obtient :10000000,92740968
En delphi
Code : Tout sélectionner
uses math;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k:word;
value:extended;
begin
value:=1;
for i:=1 to 10 do begin
for j:=1 to 1000 do begin
for k:=1 to 1000 do begin
value:=tan(arctan(power(10,log10(sqrt(value*value)))))+1;
end;
end;
end;
statictext1.caption:=floattostr(value);
end;
Le type extended a une précision de 10 chiffres significatifs.
Turbo delphi est gratuit.
Z@ph0d//
-
- Messages : 56
- Inscription : mar. 27/janv./2009 12:07
- Localisation : Très proche de Toulouse, au nord-ouest
Bonsoir,
Vous trouvez: 10000001.001298055
Sospel trouvait: 10000001.000593
en Fortran95 (voir le fil sur forum anglais qu'il signale dans son 2eme post du présent fil).
L'écart s'amenuise en saucissonnant les fonctions, mais ce n'est pas satisfaisant comme parade.
Si ce n'est que pow qui pose problème, Fred va nous arranger cela. Il le doit bien à ses fans.
Encore faudrait-il que quelqu'un se dévoue pour ouvrir une "demande d'amélioration" (il ne s'agit pas d'un bug).
@+
Vous trouvez: 10000001.001298055
Sospel trouvait: 10000001.000593
en Fortran95 (voir le fil sur forum anglais qu'il signale dans son 2eme post du présent fil).
L'écart s'amenuise en saucissonnant les fonctions, mais ce n'est pas satisfaisant comme parade.
Si ce n'est que pow qui pose problème, Fred va nous arranger cela. Il le doit bien à ses fans.
Encore faudrait-il que quelqu'un se dévoue pour ouvrir une "demande d'amélioration" (il ne s'agit pas d'un bug).
@+
Je viens de retrouver un évaluateur d'expression posté sur le forum anglais. Il y a une version de pow intégrée (entre autres) : http://www.purebasic.fr/english/viewtopic.php?t=8059
Le probleme c'est que son code en l'etat, ne fonctionne pas !!djes a écrit :Je viens de retrouver un évaluateur d'expression posté sur le forum anglais. Il y a une version de pow intégrée (entre autres) : http://www.purebasic.fr/english/viewtopic.php?t=8059
dommage !!
deja il y a des commandes assembleur
du genre
! MOV ebx,[eval_stk_index]
au lieu de
!MOV ebx,[eval_stk_index]
mais le pire c'est vers la fin du code
on trouve des
Code : Tout sélectionner
!section '.data' Data readable writeable
Code : Tout sélectionner
!Repeat 100
tu n'aurai pas une version correcte de ce code ?
