#include "libft.h"

/*
 * return the square root of nb
 * Newton–Raphson method : https://en.wikipedia.org/wiki/Newton%27s_method#Use_of_Newton's_method_to_compute_square_roots
 */
double ft_sqrt(double x)
{
	double precision;

	if (x < 0)
		return -1; // handle negative numbers
	if (x == 0)
		return 0;

	precision = 0.00001;

	// Newton-Raphson
	double guess = x;
	double prev_guess;
	do
	{
		prev_guess = guess;
		guess = (guess + x / guess) / 2.0;
	} while (prev_guess - guess > precision);
	return guess;

	// // binary search
	// double low = 0
	// double high = x;
	// double mid;
	// while (high - low > precision)
	// {
	// 	mid = (low + high) / 2.0;
	// 	if (mid * mid < x)
	// 		low = mid;
	// 	else
	// 		high = mid;
	// }
	// return (low + high) / 2.0;
}
