#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "x / (x^2 + 1)";

double f_if(float x) {
        float r8561 = x;
        float r8562 = r8561 * r8561;
        float r8563 = 1.0f;
        float r8564 = r8562 + r8563;
        float r8565 = r8561 / r8564;
        return r8565;
}

double f_id(double x) {
        double r8566 = x;
        double r8567 = r8566 * r8566;
        double r8568 = 1.0;
        double r8569 = r8567 + r8568;
        double r8570 = r8566 / r8569;
        return r8570;
}


double f_of(float x) {
        float r8571 = x;
        float r8572 = -1.672730902351307e+29f;
        bool r8573 = r8571 <= r8572;
        float r8574 = 486.47459210704136f;
        bool r8575 = r8571 <= r8574;
        float r8576 = !r8575;
        bool r8577 = r8573 || r8576;
        float r8578 = 1.0f;
        float r8579 = r8578 / r8571;
        float r8580 = 5.0f;
        float r8581 = pow(r8571, r8580);
        float r8582 = r8578 / r8581;
        float r8583 = r8579 + r8582;
        float r8584 = 3.0f;
        float r8585 = pow(r8571, r8584);
        float r8586 = r8578 / r8585;
        float r8587 = r8583 - r8586;
        float r8588 = r8571 * r8571;
        float r8589 = r8588 + r8578;
        float r8590 = r8578 / r8589;
        float r8591 = r8571 * r8590;
        float r8592 = r8577 ? r8587 : r8591;
        return r8592;
}

double f_od(double x) {
        double r8593 = x;
        double r8594 = -1.672730902351307e+29;
        bool r8595 = r8593 <= r8594;
        double r8596 = 486.47459210704136;
        bool r8597 = r8593 <= r8596;
        double r8598 = !r8597;
        bool r8599 = r8595 || r8598;
        double r8600 = 1.0;
        double r8601 = r8600 / r8593;
        double r8602 = 5.0;
        double r8603 = pow(r8593, r8602);
        double r8604 = r8600 / r8603;
        double r8605 = r8601 + r8604;
        double r8606 = 3.0;
        double r8607 = pow(r8593, r8606);
        double r8608 = r8600 / r8607;
        double r8609 = r8605 - r8608;
        double r8610 = r8593 * r8593;
        double r8611 = r8610 + r8600;
        double r8612 = r8600 / r8611;
        double r8613 = r8593 * r8612;
        double r8614 = r8599 ? r8609 : r8613;
        return r8614;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r8615, r8616, r8617, r8618, r8619;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8615);
        mpfr_init(r8616);
        mpfr_init_set_str(r8617, "1", 10, MPFR_RNDN);
        mpfr_init(r8618);
        mpfr_init(r8619);
}

double f_im(double x) {
        mpfr_set_d(r8615, x, MPFR_RNDN);
        mpfr_mul(r8616, r8615, r8615, MPFR_RNDN);
        ;
        mpfr_add(r8618, r8616, r8617, MPFR_RNDN);
        mpfr_div(r8619, r8615, r8618, MPFR_RNDN);
        return mpfr_get_d(r8619, MPFR_RNDN);
}

static mpfr_t r8620, r8621, r8622, r8623, r8624, r8625, r8626, r8627, r8628, r8629, r8630, r8631, r8632, r8633, r8634, r8635, r8636, r8637, r8638, r8639, r8640, r8641;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8620);
        mpfr_init_set_str(r8621, "-1.672730902351307e+29", 10, MPFR_RNDN);
        mpfr_init(r8622);
        mpfr_init_set_str(r8623, "486.47459210704136", 10, MPFR_RNDN);
        mpfr_init(r8624);
        mpfr_init(r8625);
        mpfr_init(r8626);
        mpfr_init_set_str(r8627, "1", 10, MPFR_RNDN);
        mpfr_init(r8628);
        mpfr_init_set_str(r8629, "5", 10, MPFR_RNDN);
        mpfr_init(r8630);
        mpfr_init(r8631);
        mpfr_init(r8632);
        mpfr_init_set_str(r8633, "3", 10, MPFR_RNDN);
        mpfr_init(r8634);
        mpfr_init(r8635);
        mpfr_init(r8636);
        mpfr_init(r8637);
        mpfr_init(r8638);
        mpfr_init(r8639);
        mpfr_init(r8640);
        mpfr_init(r8641);
}

double f_fm(double x) {
        mpfr_set_d(r8620, x, MPFR_RNDN);
        ;
        mpfr_set_si(r8622, mpfr_cmp(r8620, r8621) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8624, mpfr_cmp(r8620, r8623) <= 0, MPFR_RNDN);
        mpfr_set_si(r8625, !mpfr_get_si(r8624, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8626, mpfr_get_si(r8622, MPFR_RNDN) || mpfr_get_si(r8625, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r8628, r8627, r8620, MPFR_RNDN);
        ;
        mpfr_pow(r8630, r8620, r8629, MPFR_RNDN);
        mpfr_div(r8631, r8627, r8630, MPFR_RNDN);
        mpfr_add(r8632, r8628, r8631, MPFR_RNDN);
        ;
        mpfr_pow(r8634, r8620, r8633, MPFR_RNDN);
        mpfr_div(r8635, r8627, r8634, MPFR_RNDN);
        mpfr_sub(r8636, r8632, r8635, MPFR_RNDN);
        mpfr_mul(r8637, r8620, r8620, MPFR_RNDN);
        mpfr_add(r8638, r8637, r8627, MPFR_RNDN);
        mpfr_div(r8639, r8627, r8638, MPFR_RNDN);
        mpfr_mul(r8640, r8620, r8639, MPFR_RNDN);
        if (mpfr_get_si(r8626, MPFR_RNDN)) { mpfr_set(r8641, r8636, MPFR_RNDN); } else { mpfr_set(r8641, r8640, MPFR_RNDN); };
        return mpfr_get_d(r8641, MPFR_RNDN);
}

static mpfr_t r8642, r8643, r8644, r8645, r8646, r8647, r8648, r8649, r8650, r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659, r8660, r8661, r8662, r8663;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8642);
        mpfr_init_set_str(r8643, "-1.672730902351307e+29", 10, MPFR_RNDN);
        mpfr_init(r8644);
        mpfr_init_set_str(r8645, "486.47459210704136", 10, MPFR_RNDN);
        mpfr_init(r8646);
        mpfr_init(r8647);
        mpfr_init(r8648);
        mpfr_init_set_str(r8649, "1", 10, MPFR_RNDN);
        mpfr_init(r8650);
        mpfr_init_set_str(r8651, "5", 10, MPFR_RNDN);
        mpfr_init(r8652);
        mpfr_init(r8653);
        mpfr_init(r8654);
        mpfr_init_set_str(r8655, "3", 10, MPFR_RNDN);
        mpfr_init(r8656);
        mpfr_init(r8657);
        mpfr_init(r8658);
        mpfr_init(r8659);
        mpfr_init(r8660);
        mpfr_init(r8661);
        mpfr_init(r8662);
        mpfr_init(r8663);
}

double f_dm(double x) {
        mpfr_set_d(r8642, x, MPFR_RNDN);
        ;
        mpfr_set_si(r8644, mpfr_cmp(r8642, r8643) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8646, mpfr_cmp(r8642, r8645) <= 0, MPFR_RNDN);
        mpfr_set_si(r8647, !mpfr_get_si(r8646, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8648, mpfr_get_si(r8644, MPFR_RNDN) || mpfr_get_si(r8647, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r8650, r8649, r8642, MPFR_RNDN);
        ;
        mpfr_pow(r8652, r8642, r8651, MPFR_RNDN);
        mpfr_div(r8653, r8649, r8652, MPFR_RNDN);
        mpfr_add(r8654, r8650, r8653, MPFR_RNDN);
        ;
        mpfr_pow(r8656, r8642, r8655, MPFR_RNDN);
        mpfr_div(r8657, r8649, r8656, MPFR_RNDN);
        mpfr_sub(r8658, r8654, r8657, MPFR_RNDN);
        mpfr_mul(r8659, r8642, r8642, MPFR_RNDN);
        mpfr_add(r8660, r8659, r8649, MPFR_RNDN);
        mpfr_div(r8661, r8649, r8660, MPFR_RNDN);
        mpfr_mul(r8662, r8642, r8661, MPFR_RNDN);
        if (mpfr_get_si(r8648, MPFR_RNDN)) { mpfr_set(r8663, r8658, MPFR_RNDN); } else { mpfr_set(r8663, r8662, MPFR_RNDN); };
        return mpfr_get_d(r8663, MPFR_RNDN);
}

