Tutorial :simplify complex roots


i have made a program to compute roots of quauation but it does not simplify the roots.can anyone help me to simplify them

#include<stdio.h>  #include<conio.h>  #include<math.h>  void main(void)  {      int a,b,c;      float d,d2;      printf(" Enter a,b and c:");      scanf("%d %d %d",&a,&b,&c);      d=b*b-4*a*c;        if(d<0)      {          printf("(%d+i%d)/%d\n",-b,sqrt(-d),2*a) ;          printf("(%d-i%d)/%d\n",-b,sqrt(-d),2*a);      }      else      {          printf("(%d+%d)/%d\n",-b,sqrt(d),2*a);          printf("(%d-%d)/%d\n",-b,sqrt(d),2*a);      }    getch();  }  


You can't compute the square root of a negative number. d is negative and you're trying to find its square root. The whole point of complex solutions and the imaginary unit i is to write -1 as i^2, and then when d < 0 you have:

sqrt(d) = sqrt(i^2 * (-d)) = i*sqrt(-d)  

So change to this:

if(d<0)  {      printf("(%d+i%lf)/%d",-b,sqrt(-d),2*a);      printf("(%d-i%lf)/%d",-b,sqrt(-d),2*a);  }  

I don't know why you had parantheses around your printf arguments, I removed those.

The second %d should also be changed to %lf since sqrt returns a double.


If you want to compute square roots tof negative numbers, find a C99 compiler (basically, anything besides MSVC will do), include <complex.h> header, use complex data type and csqrt function.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »