diff --git a/Library/Convert.c b/Library/Convert.c index 32814e0..eb53c5f 100644 --- a/Library/Convert.c +++ b/Library/Convert.c @@ -642,6 +642,24 @@ char *reverse(char *Buffer, int i, int j) return Buffer; } +float sqrtf(float x) +{ + if (x < 0.0f) + return NAN; + + if (x < 1e-7f) + return 0.0f; + + float guess = x / 2.0f; + for (short i = 0; i < 10; i++) + { + if (guess == 0.0f) + return 0.0f; + guess = (guess + x / guess) / 2.0f; + } + return guess; +} + char *strtok(char *src, const char *delim) { static char *src1; diff --git a/include/convert.h b/include/convert.h index 4e7cfe1..21ae612 100644 --- a/include/convert.h +++ b/include/convert.h @@ -5,6 +5,8 @@ extern "C" { #endif +#define NAN (__builtin_nanf("")) + int isdigit(int c); int isspace(int c); int isempty(char *str); @@ -15,6 +17,8 @@ extern "C" void swap(char *x, char *y); char *reverse(char *Buffer, int i, int j); + float sqrtf(float x); + void backspace(char s[]); void append(char s[], char n);