#include <math.h>
#include <stdio.h>
#define PI 3.14159265358979323846
#define POINTS 42
#define EPS 1e-7
double witch_of_agnesi(double x);
int bernoulli_lemniscate(double x, double *result);
int quadratic_hyperbola(double x, double *result);
int main(void) {
int i = 0;
double x;
double step = 2.0 * PI / (POINTS - 1);
double agnesi;
double bernoulli;
double hyperbola;
while (i < POINTS) {
x = -PI + step * i;
agnesi = witch_of_agnesi(x);
printf("%.7f | %.7f | ", x, agnesi);
if (bernoulli_lemniscate(x, &bernoulli)) {
printf("%.7f", bernoulli);
} else {
printf("-");
}
printf(" | ");
if (quadratic_hyperbola(x, &hyperbola)) {
printf("%.7f", hyperbola);
} else {
printf("-");
}
printf("\n");
i++;
}
return 0;
}
double witch_of_agnesi(double x) {
return 1.0 / (1.0 + x * x);
}
int bernoulli_lemniscate(double x, double *result) {
int is_defined = 1;
double expression = sqrt(1.0 + 4.0 * x * x) - x * x - 1.0;
if (expression < 0.0) {
is_defined = 0;
} else {
*result = sqrt(expression);
}
return is_defined;
}
int quadratic_hyperbola(double x, double *result) {
int is_defined = 1;
if (fabs(x) < EPS) {
is_defined = 0;
} else {
*result = 1.0 / (x * x);
}
return is_defined;
}