Fonction Exposant tenant compte des arguments négatifs

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

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.