Загрузка данных


#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;
}