#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 r8558 = x;
        float r8559 = r8558 * r8558;
        float r8560 = 1.0f;
        float r8561 = r8559 + r8560;
        float r8562 = r8558 / r8561;
        return r8562;
}

double f_id(double x) {
        double r8563 = x;
        double r8564 = r8563 * r8563;
        double r8565 = 1.0;
        double r8566 = r8564 + r8565;
        double r8567 = r8563 / r8566;
        return r8567;
}


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

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

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 r8612, r8613, r8614, r8615, r8616;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8612);
        mpfr_init(r8613);
        mpfr_init_set_str(r8614, "1", 10, MPFR_RNDN);
        mpfr_init(r8615);
        mpfr_init(r8616);
}

double f_im(double x) {
        mpfr_set_d(r8612, x, MPFR_RNDN);
        mpfr_mul(r8613, r8612, r8612, MPFR_RNDN);
        ;
        mpfr_add(r8615, r8613, r8614, MPFR_RNDN);
        mpfr_div(r8616, r8612, r8615, MPFR_RNDN);
        return mpfr_get_d(r8616, MPFR_RNDN);
}

static mpfr_t r8617, r8618, r8619, r8620, r8621, r8622, r8623, r8624, r8625, r8626, r8627, r8628, r8629, r8630, r8631, r8632, r8633, r8634, r8635, r8636, r8637, r8638;

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

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

static mpfr_t r8639, r8640, r8641, r8642, r8643, r8644, r8645, r8646, r8647, r8648, r8649, r8650, r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659, r8660;

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

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

