double sqrt(double n) {
        if (n < 0) return Double.NaN;
        double err = 1e-15, t = n;
        while (Math.abs(t - n / t) > t * err) {
            t = (t + n / t) / 2;
        }
        return t;
    }