updating sqrt to work with doubles

This commit is contained in:
hugogogo
2026-05-09 14:43:26 +02:00
parent 8edf428fed
commit ae9787ba6d
3 changed files with 48 additions and 22 deletions

View File

@@ -1,15 +1,41 @@
#include "libft.h"
/*
** return the square root of nb
** or the integer value of it
*/
int ft_sqrt(int nb)
* return the square root of nb
* NewtonRaphson method : https://en.wikipedia.org/wiki/Newton%27s_method#Use_of_Newton's_method_to_compute_square_roots
*/
double ft_sqrt(double x)
{
int i;
double precision;
i = 0;
while ((i*i) < nb)
i++;
return (i);
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;
}