def racine(n):
    def aux(gauche, droite):
        

        if gauche > droite:
            return droite
        
        milieu = (gauche + droite) // 2
        
        if milieu * milieu == n:
            return milieu
        
        elif milieu * milieu > n:
            return aux(gauche, milieu - 1)
        
        else:
            return aux(milieu + 1, droite)
    return aux(0, n)



def racine_decimale(n, precision=1e-6):

    def aux(gauche, droite):
        milieu = (gauche + droite) / 2
    
        if droite - gauche < precision:
            return milieu
        
        if milieu * milieu == n:
            return milieu
        
        elif milieu * milieu < n:
            return aux(milieu, droite)
        
        else:
            return aux(gauche, milieu)
    
    partie_entiere = racine(n)
    
    return aux(partie_entiere, partie_entiere + 1)
