Fonction Exposant tenant compte des arguments négatifs

0/5 (1 avis)

Snippet vu 5 044 fois - Téléchargée 11 fois

Contenu du snippet

Function Puiss(Nb As Double, Expo As Double) As Double
' FONCTION EXPOSANT TENANT COMPTE DES D'ARGUMENTS TEL QUE (-2)^(1/3) ou (-2)^(5/3) SANS ERREUR
' Les seules erreurs renvoyées concernent les solutions en nombre complexe (i²=-1)
'Paramètres
Dim A As Double
Dim B As Double
Dim P As Double
Dim E As Double
Dim C As Double
Dim D As Double
Dim G As Double
Dim H As Double
P = 10 ^ -15
'Algo décomposition Expo
A = Int(Expo)
E = Int(Expo)
B = 1
C = 1
D = 0
G = Expo
While Abs(Expo - A / B) > P
    G = 1 / (G - E)
    E = Int(G)
    H = A * E + C
    C = A
    A = H
    H = B * E + D
    D = B
    B = H
Wend
'Calcul exposant entier
Nb = Nb ^ A
'Calcul exposant decimal
If Abs(1 / B) < 1 And (B And 1) Then
    Puiss = Sgn(Nb) * Abs(Nb) ^ (1 / B)
Else
    Puiss = Nb ^ (1 / B)
End If
End Function
' *********** EXEMPLE **********
Sub es()
Debug.Print Puiss(-2, 1 / 3) '-1,25992104989487
Debug.Print Puiss(-2, 5 / 3) '-3,1748021039364
Debug.Print Puiss(-2, -5 / 3) '-0,314980262473718
'Debug.Print (-2) ^ (1 / 3) 'renvoi une erreur
'Debug.Print Puiss(-2, 5 / 3) 'renvoi une erreur
'Debug.Print Puiss(-2, -5 / 3) 'renvoi une erreur

End Sub


Compatibilité : VBA

A voir également

Ajouter un commentaire Commentaire
mais la fonction feuille Puissance prends bien en compte les exposants négatifs

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.