diff options
Diffstat (limited to '')
-rw-r--r-- | libk/src/math/sqrt.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libk/src/math/sqrt.c b/libk/src/math/sqrt.c new file mode 100644 index 0000000..b875079 --- /dev/null +++ b/libk/src/math/sqrt.c @@ -0,0 +1,36 @@ +#include <math.h> + +float sqrtf(float num) { + if (num < 0) + return NAN; + + if (num < 2) + return num; + + float y = num; + float z = (y + (num / y)) / 2; + + while (fabsf(y - z) >= 0.00001) { + y = z; + z = (y + (num / y)) / 2; + } + return z; +} + +double sqrt(double num) { + if (num < 0) + return NAN; + + if (num < 2) + return num; + + double y = num; + double z = (y + (num / y)) / 2; + + while (fabs(y - z) >= 0.00001) { + y = z; + z = (y + (num / y)) / 2; + } + return z; +} + |