# C program to find square root of a number without using sqrt function.

11 views

Problem :

I have few years of experience in working with C programming. Now I am preparing for the interview and while preparing for it I came to below question for which I don’t have any working code.

C program to find square root of a number without using sqrt function”.

Can somebody help me in answering above question?

ago

## Solution :

This is very tricky question for any programmer. I have also asked this question in many interviews but most of the time I got wrong answers from the candidates. So I am trying to answer it for you.

Below is the code which needs only 6 iterations to meet to the maximum precision for the double numbers:

`#include <math.h>`
`double SquareRoot(double x) {`
`    if (x <= 0)`
`        return 0;       // if in case the negative number throws the exception`
`    int exp = 0;`
`    x = frexp(x, &exp); // extract the binary exponent from the x`
`    if (exp & 1) {      // to get the exponent to be even`
`        exp--;`
`        x *= 2;`
`    }`
`    double y = (1+x)/2; // this is our first approximation`
`    double z = 0;`
`    while (y != z) {    // we are compare doubles`
`        z = y;`
`        y = (y + x/y) / 2;`
`    }`
`    return ldexp(y, exp/2); //we can have  multiply answer by 2^(exp/2)`
`}`
ago by (2.3k points)