Page 1 sur 1

math

Publié : mer. 09/mars/2005 23:15
par Le Soldat Inconnu
quelques fonctions manquantes :

Math :
Exponentielle
Sign() (obtenir le signe d'une valeur) pour rappel il suffit de de faire le test suivant :

Code : Tout sélectionner

Long.l = 57
If Long & $80000000
  Debug Str(Long) + " : signe -"
Else
  Debug Str(Long) + " : signe +"
EndIf

Trigo :
Pi() (ou au minimum une constante #Pi)
CosH, ..., ACosH, ...
Conversion degré/radian et radian/degré

Pour les probabilités :
Factorielle
NCR (combinaison sans répétition) NCR(p,n) = n!/(p!*(n-p)!)
NPR (arrangement sans répétition) NPR(p,n) = n!/(n-p)!


Bon, toutes ces fonctions peuvent être programmé mais ce serait mieux de les avoir directement dans PB :D

Publié : mer. 09/mars/2005 23:19
par djes
tu oublies le atan2 (peut-être qu'il existe d'ailleurs 8) )

Une version vite faite et très courte qui a l'air de marcher (ne pas oublier d'activer l'assembleur dans les options) :

Code : Tout sélectionner

Procedure.f ATan2(y.f, x.f)
 FLD y      ;Get y onto the FPU stack
 FLD x      ;Get x onto the FPU stack 
 FPATAN     ;Get the ATAN(y/x), Put result in ST(1) then pop the stack 
 
 ;!fstp dword [esp+8]      ;pas besoin, pure renvoie la dernière valeur st()

EndProcedure

Publié : jeu. 10/mars/2005 0:15
par filperj
Autre petit truc:

Code : Tout sélectionner

signe = (n>>30)|1
donnera à "signe" la valeur -1 si "n"(entier) est strictement inférieur à zéro, la valeur +1 sinon.
8) 8) 8) 8) 8) 8)
(Faites pas attention, j'avais juste envie de me la péter un peu :lol: )