Function InvGamma(ByVal X As Double, Optional ByVal t As Variant = 2)
'Calcul de la fonction inverse de Gamma : x=Gamma^-1(y)
'par l'algo de newton

'Traitement des paramètres
t = CDbl(t)

'Test validité de la valeur de x
If X < 0.88560319435496 Then InvGamma = "#NOMBRE!": Exit Function

'Définition variable
Dim x0 As Double

'Methode de Newton
'Valeur initiale
Select Case t
    Case Is > 1.46163233
    Y = Log(X)
    x0 = (0.00002215 * Y ^ 4 + 1.717 * Y ^ 3 + 33.952 * Y ^ 2 + 62.771 * Y + 29.377) ^ 0.25
    Case Is > 0
    x0 = X / (X ^ 2 + (X - 1) / 3 ^ 0.5)
    Case Else
    x0 = t
End Select

'Calculs et renvoi
InvGamma = Newton("FactGamma(X) - " & Str(X), x0)

End Function