Dancing in Pairs
Square Root
A number is square root of if
Most programming languages have an in-built sqrt function. But it can be easily calculated using binary search.
float sqrt(n) {
low = 0.0;
high = (float)n+1;
while ((high-low) > 0.00001) {
mid = (low+high) / 2;
if (mid*mid < n) {
low = mid;
}
else {
high = mid;
}
}
return low;
}
Note that we do not check high - low == some_value This is because we never equate float values. Instead, we use a small epsilon value and use that as an error tolerance.
Newton Raphson Method:
#include <stdio.h>
// Function to get absolute value of the number given by user.
float absolute(float num)
{
if(num < 0){
num = -num;
}
return num;
}
// Function to calculate square root of the number using Newton-Raphson method
float square_root(int x)
{
const float difference = 0.00001;
float guess = 1.0;
while(absolute(guess * guess - x) >= difference){
guess = (x/guess + guess)/2.0;
}
return guess;
}
int main()
{
int number;
float root;
printf("Enter a number: ");
scanf("%i", &number);
root = square_root(number);
printf("The square root of %i is: %f", number, root);
return 0;
}
Related challenge for Square Root