1define(square_root, 2 `ifelse(eval($1<0),1,negative-square-root, 3 `square_root_aux($1, 1, eval(($1+1)/2))')') 4define(square_root_aux, 5 `ifelse($3, $2, $3, 6 $3, eval($1/$2), $3, 7 `square_root_aux($1, $3, eval(($3+($1/$3))/2))')') 8