quadratic/quadratic.c

43 lines
1.1 KiB
C
Raw Permalink Normal View History

2021-11-04 11:56:54 -04:00
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
2021-11-05 17:02:17 -04:00
#include <string.h>
2021-11-04 11:56:54 -04:00
2021-11-05 17:02:17 -04:00
int main(int num_arg, char **args)
2021-11-04 11:56:54 -04:00
{
double num_A, num_B, num_C;
2021-11-05 17:02:17 -04:00
if (num_arg <= 1)
{
2023-02-06 15:22:05 -05:00
system("quadratic-tui"); // make sure it is in PATH along with "quadratic" bin
2021-11-05 17:02:17 -04:00
}
else
{
num_A = atof(args[1]);
num_B = atof(args[2]);
num_C = atof(args[3]);
2021-11-05 18:20:37 -04:00
double radical = pow(num_B, 2) + (-4 * num_A * num_C);
2021-11-04 13:05:50 -04:00
2021-11-05 18:20:37 -04:00
if (radical < 0.0)
{
// roots are complex
double real_part = (-num_B) / (2 * num_A);
double imaginary_part = sqrt(radical * -1.0) / (2 * num_A);
2023-02-06 15:38:34 -05:00
printf("%g+%gi\t %g-%gi\n", real_part, imaginary_part, real_part, imaginary_part);
2021-11-05 18:20:37 -04:00
}
else
{
// roots are real
double numerator_1 = (-num_B) + sqrt(radical);
double numerator_2 = (-num_B) - sqrt(radical);
double zero_1_ptr = numerator_1 / (2 * num_A);
double zero_2_ptr = numerator_2 / (2 * num_A);
2021-11-04 11:56:54 -04:00
2022-12-06 13:57:48 -05:00
printf("%g\t %g\n", zero_1_ptr, zero_2_ptr);
2021-11-05 18:20:37 -04:00
};
2021-11-04 13:05:50 -04:00
};
2021-11-04 13:46:33 -04:00
return 0;
2021-11-04 13:28:47 -04:00
};