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 '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 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 End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFunction Puiss(Nb As Double, Expo As Double) As Double ' FONCTION EXPOSANT TENANT COMPTE DES D'ARGUMENTS TEL QUE (-2)^(1/3) SANS ERREUR If Abs(Expo) < 1 And ((1 / Expo) And 1) Then Puiss = Sgn(Nb) * Abs(Nb) ^ Expo Else Puiss = Nb ^ Expo End If End Function