# ax^3+bx²+cx+d=0

def resol(a,b,c,d):
    p = (3*a*c - b*b) / (3*a*a)
    q = (2*(b**3)-9*a*b*c + 27*a*a*d)/(27*(a**3))
    delta = (27*q*q + 4*(p**3))/27
    if delta >= 0:
        u = (-q - delta**0.5)/2
        v = (-q + delta**0.5)/2
        s = u/2
        for _ in range(50):
            s = ( 2*s + u/(s*s) )/3
        u = s
        s = v/2
        for _ in range(50):
            s = ( 2*s + v/(s*s) )/3
        v = s
        s = u + v - b/(3*a)
        
        return s
    else:
        return "Le recours aux nombres complexes s'impose."