Sqrt function not working

1.2k views Asked by At

So I'm trying to make a program that calculates the quadratic formula, but when I try to compile the code, I get the following:"undefined reference to sqrt" But I tried defining sqrt via math.h and 2 other times in the code. I have attached my code Any help would be greatly appreciated

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

double sqrt(double);

int main (void) {
  double sqrt(double);
  int a,b,c;
  double discriminant,squarerootofdis,root1, root2;
  printf("Please enter the coefficient of x^2:");
  scanf("%d",&a);
  printf("Please enter the coefficient of x:");
  scanf("%d",&b);
  printf("Please enter the integer value of the ploynomial:");
  scanf("%d",&c);
  if (a==0 && b==0)
    {printf("This case is extremely degenerate");}
  else if (a==0 && b!=0)
    {root1=-c/b;
      printf("Degenerate     one real root: %lf\n",root1);}
  else{
    discriminant = ((b*b)-(4*a*c)); 
    squarerootofdis = sqrt(discriminant);
    root1 = (squarerootofdis-b)/(2*a);
    root2 = (-squarerootofdis-b)/(2*a);
    if (discriminant>0)
      printf("Two real roots: %lf\n %lf\n", root1, root2);
    else if (discriminant == 0)
      printf("Degenerate     one real root: %lf\n",root1);
    else if (discriminant<0)
      printf("Two complex roots: %lf\n %lf\n", root1, root2);
  }
}
3

There are 3 answers

0
Sourav Ghosh On

Did you compile with -lm linked?

Header file will provide the decalration to the sqrt() function. To have the definition, you need to link with the math library consisting of the function definition.

Example:

gcc test.c -o output -lm
2
Bart Friederichs On

To use the sqrt function (or any function defined in math.h), you'll have to link the m library:

~$ gcc -lm yourcode.c -o program
0
Sohil Omer On

Please use the below command

gcc test.c -lmath