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