Square Root in C

Updated on 28/08/202516,812 Views

How do you solve a common mathematical problem, like finding a square root, using one of the world's most powerful programming languages? C, with its rich set of libraries and operators, makes executing complex calculations simple and fast.

This comprehensive tutorial focuses on a key operation: calculating the Square Root in C.

We will explore different methods, from using the convenient sqrt() function to writing your own algorithm using loops and logic. Mastering how to find the Square Root in C is a great way to improve your problem-solving skills and deepen your understanding of how C handles mathematical tasks.

Want to master more real-world C programming problems? Explore our Software Engineering Courses and boost your skills in C programming with hands-on practice.

What is Square Root?

The inverse operation of squaring a number is known as the square root. When a number gets multiplied by itself then the result obtained is known as the square of a number. Here the exponent is 2. Finding out the square root’s value is just the reverse process. Squared root value is that factor of a value which is when squared gives the original value.

Example 1: Suppose “a” is a particular number. The square of a is b i.e. () and “a” is called the square root value of “b.” In square root, the exponent is ½. This mathematical operation can be defined as

Example 2: Find out the square root of 16.

Answer: The square root of 16 is 4.

Logic of sqrt in C language

In C programming the square root of a number is computed by using the sqrt() function. sqrt in C language is a predefined library function. This function is included in the <math.h> header file. So, while implementing sqrt() function in a program <math.h> header file must be included at the beginning of the program. The sqrt() function accepts a single number that is in double as input and returns a double number value as the output. If the input is a negative number, then the result is shown as -nan i.e. not a number value to the user. The sqrt() function does not support any imaginary value. While the square root of the negative number is an imaginary number, the output returns -nan. This is called domain error because the input is not supported by the sqrt() function domain.

Ready to build on your C programming foundation and launch a career in today's most in-demand tech fields? upGrad curated these expert-led programs to help you master the advanced skills top companies are looking for.

Syntax for sqrt() in C

The syntax for the sqrt function in C programming is

double sqrt(double num)

Here sqrt is the function to find out the square root of a number. “num” is the number whose square root value is to be found out. And double is the data type that is used to store large values of decimal numbers.

Algorithm for sqrt in C implementation

The algorithm used to calculate the square root value in the C language is presented below.

  1. Declare an integer value to give input for square root calculation.
  2. Declare a double data type to store the output value.
  3. Print the result.
  4. Exit the program

How to Use the sqrt() Function in C?

Example 1: C program to ask the user for input and to print the result as output.

# include <stdio.h>
# include <conio.h>
# include <math.h>
int main()
{
// Declare an integer value as input
int num;
double out;
printf(“Enter a number =);
scanf(%d”, &num);
// sqrt function implementation
out = sqrt(num);
printf(“The square root of %d is: %.2lf”,num, out);
return 0;
}

Output:

Enter a number = 225
The square root of 225 is 15.00

Keynotes:

1. Here stdio.h means single input single output. This is a built-in header file in the C programming language. It contains the information related to the input and output functions.

2. Int main() function is used as the starting point of program execution. It directs the calls to other functions in the program and thus controls program execution.

3. The math.h header represents several mathematical functions.

4. printf is an output function that indicates “print formatted”.

5. Scanf is an input function that is used to read input from the user.

Example 2: Find out the square root of a number by using a user-defined function

# include <stdio.h>
# include <conio.h>
# include <math.h>
// Declare a function
double findSqRoot (int x);
int main()
{
// Declare an integer value as input
int num;
double out;
printf(“Enter a number =);
scanf(%d”, &num);
// call function
out = findSqrRoot (num);
printf(“The square root of %d is: %.2lf”,num, out);
return 0;
}
double findSqrRoot (int x)
{
double findout
findout = sqrt(x);
return findout;
}

Output:

Enter a number = 237
The square root of 237 is 15.39

The above program is basically to find out the square root of a given number. Initially, it is important to declare the header files. The header stdio.h contains the information related to the input and output functions and the header math.h contains mathematical functions. Then a function named FindSqrRoot is declared. Then an input value is declared. printf function is used to print the output and scanf function is used to read input from the user. Again the function is defined to print the result.

C Program to find out square root using recursion

An example is represented to show the implementation of sqrt in c using recursion. Recursion is a process that calls itself repeatedly directly or indirectly. Calling a function inside the same function is known as a recursive call of a function. Implementation of sqrt in c using recursion is represented here with an example.

# include <math.h>
# include <float.h>
float SqrtNum (float num, float PrevNum)
{
float NextNum = (Prevnum num/PrevNum)/2;
if (fabs(NextNum - PrevNum) < FLT_EPSILON*NextNum)
Return NextNum;
Return SqrtNum(num, NextNum);
}

C Program to find out square root without math.h

An sqrt example is represented to show the sqrt in c without math.h. In C language math.h header represents several mathematical functions. The functions present in this library consider a double as input argument and give a double as output. double sqrt(double number) returns a double value. The implementation of sqrt in c without math.h is represented here.

#include <stdio.h>
Void main()
{
int num;
float temp, sqrt;
printf(“Enter a number: \n”);
scanf(‘’%d”, &num);
sqrt = num / 2;
temp = 0;
while(sqrt ! = temp)
{
temp = sqrt;
sqrt = (num/temp temp)/2;
}
Printf(“Square root of%d’ is ‘%f’”, num, sqrt);
}

In this program first, the user must enter a number for which the square root is to be calculated. The number is divided by two and the result is stored in sqrt. The previous value of sqrt is stored as the temp. Then a loop is generated in which the sqrt variable is different from temp. At the same time, the value of temp and the previous value of sqrt continuously get updated. The square root of the number will be printed only when the loop ends.

Return Values for sqrt() in C

The sqrt() function takes a double number as input and outputs a value that is also a double number. The result is displayed to the user as -nan, or without a number value if the input is a negative number.

Exceptions for sqrt() in C

Any imaginary value is not supported by the sqrt() function. The output returns -nan if the square root of a negative number is an imaginary number. Because the input does not support the sqrt() function domain, this is known as a domain error.

Conclusion

You've now explored the essential methods for calculating the Square Root in C. This guide has walked you through both the straightforward approach using the sqrt() function from the math.h library and the more foundational logic of implementing it from scratch.

Mastering how to find the Square Root in C is more than just a mathematical exercise; it’s a great way to strengthen your problem-solving skills and your understanding of core C programming principles. Keep practicing, and you'll be ready to tackle even more complex computational tasks.

FAQs

1. What is the C programming language?

C is a powerful, general-purpose, and high-level programming language developed in the early 1970s. It is a prominent language because it offers a rare combination of simplicity, efficiency, and low-level control over system memory. C is used to develop a wide range of applications, from operating systems and embedded systems to complex software and games. Its function-rich library, portability, and fast execution speed are key reasons for its enduring popularity.How do you calculate the square root of a number?

2. How do you calculate the square root of a number?

The square root is the inverse operation of squaring a number. When a number is multiplied by itself, the result is its square. Finding the square root is the reverse process: it is the value that, when multiplied by itself, gives the original number. For example, the square of 5 is 25, so the square root of 25 is 5. This mathematical concept is fundamental to writing a program to find the Square Root in C.

3. What is a sqrt() function in C language?

In C programming, the sqrt() function is the predefined library function used to compute the square root of a number. It is part of the standard C math library and is declared in the <math.h> header file. The function takes a single argument of type double and returns its square root, also as a double. This is the standard and most efficient way to calculate a Square Root in C.

4. What is the use of the math.h header?

The <math.h> header file is a crucial part of the C standard library that contains declarations for a wide range of common mathematical functions. To use any of these functions, including sqrt(), you must include this header at the top of your C file with the line #include <math.h>. Most functions in this library, such as pow() (for power), sin() (for sine), and log() (for logarithm), take double values as arguments and return a double.

5. What is the syntax for the sqrt() function?

The syntax for the sqrt() function is quite simple. It is declared in the <math.h> header as double sqrt(double x);. This means it is a function named sqrt that accepts one argument x of type double and returns a value of type double. When you call it, you simply pass the number for which you want to find the square root, for example: double result = sqrt(25.0);.

6. How do you compile a C program that uses sqrt()?

When you compile a C program that uses functions from the <math.h> library, you often need to explicitly tell the compiler to link against the math library. With the GCC compiler on Linux, you do this by adding the -lm flag at the end of your compilation command. For example: gcc my_program.c -o my_program -lm. Forgetting this flag is a common mistake that will result in an "undefined reference to sqrt" error.

7. What does the sqrt() function return for negative numbers?

The square root of a negative number is not a real number. The sqrt() function in C is defined to work with real numbers, so it cannot compute the square root of a negative input. According to the C standard, if you pass a negative value to sqrt(), it will result in a domain error, and the function will return a NaN (Not-a-Number) value to indicate that the result is undefined. A good program for Square Root in C should always check for negative input before calling the function.

8. What is the return type of sqrt() and why is it double?

The return type of the sqrt() function is double. This is because the square root of many numbers, including integers that are not perfect squares (like 2 or 3), is an irrational number with an infinite number of decimal places. The double data type provides a high degree of precision for representing these floating-point numbers, making it a suitable choice for a general-purpose mathematical function.

9. What is a double data type?

A double is a fundamental data type in C used to store double-precision floating-point numbers. It is designed to hold very large or very small decimal numbers with a much higher degree of precision than a standard float. Because mathematical operations like finding a square root often result in non-integer values, double is the standard data type used for most functions in the <math.h> library.

10. Can I use an integer with the sqrt() function?

Yes, you can. While the sqrt() function is defined to take a double as an argument, C will automatically perform an implicit type conversion and promote an integer value to a double when you pass it to the function. For example, if you call sqrt(9), the integer 9 will be converted to the double 9.0 before the calculation is performed.

11. How can I implement a program to find the square root without using the sqrt() function?

Yes, you can write a program for Square Root in C from scratch using numerical methods. A common and efficient approach is the Babylonian method (or Heron's method), which is an iterative algorithm. You start with an initial guess and then repeatedly refine that guess using the formula nextGuess = 0.5 * (currentGuess + number / currentGuess). After a certain number of iterations, the guess will converge to a very close approximation of the actual square root.

12. What is the difference between sqrt() and pow()?

The sqrt(x) function is a specialized function specifically for calculating the square root of x. The pow(x, y) function is a more general function for calculating x raised to the power of y. You can technically calculate a square root using pow(x, 0.5), but using sqrt(x) is generally more efficient and more readable, as it clearly communicates your intent to find the square root.

13. What is int main()?

The int main() function is the mandatory starting point for execution in every C program. When you run your compiled program, the operating system calls the main() function first. From here, main() controls the program's flow by calling other functions and executing statements. The int indicates that the function returns an integer value to the operating system, which is typically 0 to signify that the program executed successfully.

14. What is printf() function?

The printf() function, which stands for "print formatted," is one of the most common output functions in C. It is used to print text and the values of variables to the standard output (usually the console). It uses format specifiers (like %d for integers and %f for doubles) to control how the data is displayed. For example, printf("The square root is: %f", result);.

15. What is the scanf() function?

The scanf() function is a standard input function in C used to read formatted input from the user (usually from the keyboard). It uses format specifiers to interpret the input and store it in variables. For example, scanf("%lf", &number); would be used to read a double value from the user and store it in the number variable. It is important to use it carefully to avoid security issues like buffer overflows.

16. How can I handle user input errors in my program?

When you expect a number but the user enters text, scanf() can fail and leave your program in an unstable state. A more robust way to handle user input is to read the input as a string using fgets() and then try to convert it to a number using a function like sscanf() or strtod(). This allows you to check the return value of the conversion function to see if the input was valid before you proceed with your calculation for the Square Root in C.

17. What is the precision of the sqrt() function's result?

The sqrt() function in C returns a double, which provides double-precision floating-point accuracy. This typically corresponds to about 15 to 17 decimal digits of precision. While this is highly accurate for most scientific and engineering applications, it's important to remember that it is still an approximation for irrational numbers and should not be compared using direct equality (==) due to potential floating-point inaccuracies.

18. Are there versions of sqrt() for other data types like float?

Yes. In addition to the standard sqrt() which works with double, the <math.h> library also provides sqrtf() for float values and sqrtl() for long double values. Using the specific version that matches your data type can sometimes offer a minor performance benefit and can help you avoid unnecessary type casting in your program for Square Root in C.

19. How can I learn to solve more C programming challenges like this?

The best way to improve your problem-solving skills is through a combination of structured learning and consistent practice. A comprehensive program, like the software development courses offered by upGrad, can provide a strong foundation in C and algorithms. You should then apply this knowledge by regularly solving problems on coding platforms, which will expose you to a wide variety of challenges and help you master the logic needed for any program for Square Root in C and much more.

20. What is the main takeaway from learning to write a program for a square root in C?

The main takeaway is understanding the trade-offs between using a pre-built library function and implementing an algorithm yourself. While using the standard sqrt() function is the practical and efficient choice for most applications, learning to write your own program for Square Root in C using a method like the Babylonian algorithm teaches you about numerical methods, iteration, and the importance of handling edge cases. It is a fundamental exercise that deepens your understanding of computational problem-solving.


image

Take a Free C Programming Quiz

Answer quick questions and assess your C programming knowledge

right-top-arrow
image
Pavan Vadapalli

Author|900 articles published

Pavan Vadapalli is the Director of Engineering , bringing over 18 years of experience in software engineering, technology leadership, and startup innovation. Holding a B.Tech and an MBA from the India....

image
Join 10M+ Learners & Transform Your Career
Learn on a personalised AI-powered platform that offers best-in-class content, live sessions & mentorship from leading industry experts.
advertise-arrow

Free Courses

Start Learning For Free

Explore Our Free Software Tutorials and Elevate your Career.

upGrad Learner Support

Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)

text

Indian Nationals

text

Foreign Nationals

Disclaimer

  1. The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.

  2. The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not .