#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 r37526 = x;
        float r37527 = r37526 * r37526;
        float r37528 = 1;
        float r37529 = r37527 + r37528;
        float r37530 = r37526 / r37529;
        return r37530;
}

double f_id(double x) {
        double r37531 = x;
        double r37532 = r37531 * r37531;
        double r37533 = 1;
        double r37534 = r37532 + r37533;
        double r37535 = r37531 / r37534;
        return r37535;
}


double f_of(float x) {
        float r37536 = x;
        float r37537 = -892037.4565711613;
        bool r37538 = r37536 <= r37537;
        float r37539 = 1;
        float r37540 = 5;
        float r37541 = pow(r37536, r37540);
        float r37542 = r37539 / r37541;
        float r37543 = r37539 / r37536;
        float r37544 = r37542 + r37543;
        float r37545 = 3;
        float r37546 = pow(r37536, r37545);
        float r37547 = r37539 / r37546;
        float r37548 = r37544 - r37547;
        float r37549 = 1041.212443333186;
        bool r37550 = r37536 <= r37549;
        float r37551 = r37536 * r37536;
        float r37552 = r37551 + r37539;
        float r37553 = r37536 / r37552;
        float r37554 = r37550 ? r37553 : r37548;
        float r37555 = r37538 ? r37548 : r37554;
        return r37555;
}

double f_od(double x) {
        double r37556 = x;
        double r37557 = -892037.4565711613;
        bool r37558 = r37556 <= r37557;
        double r37559 = 1;
        double r37560 = 5;
        double r37561 = pow(r37556, r37560);
        double r37562 = r37559 / r37561;
        double r37563 = r37559 / r37556;
        double r37564 = r37562 + r37563;
        double r37565 = 3;
        double r37566 = pow(r37556, r37565);
        double r37567 = r37559 / r37566;
        double r37568 = r37564 - r37567;
        double r37569 = 1041.212443333186;
        bool r37570 = r37556 <= r37569;
        double r37571 = r37556 * r37556;
        double r37572 = r37571 + r37559;
        double r37573 = r37556 / r37572;
        double r37574 = r37570 ? r37573 : r37568;
        double r37575 = r37558 ? r37568 : r37574;
        return r37575;
}

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 r37576, r37577, r37578, r37579, r37580;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37576);
        mpfr_init(r37577);
        mpfr_init_set_str(r37578, "1", 10, MPFR_RNDN);
        mpfr_init(r37579);
        mpfr_init(r37580);
}

double f_im(double x) {
        mpfr_set_d(r37576, x, MPFR_RNDN);
        mpfr_mul(r37577, r37576, r37576, MPFR_RNDN);
        ;
        mpfr_add(r37579, r37577, r37578, MPFR_RNDN);
        mpfr_div(r37580, r37576, r37579, MPFR_RNDN);
        return mpfr_get_d(r37580, MPFR_RNDN);
}

static mpfr_t r37581, r37582, r37583, r37584, r37585, r37586, r37587, r37588, r37589, r37590, r37591, r37592, r37593, r37594, r37595, r37596, r37597, r37598, r37599, r37600;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37581);
        mpfr_init_set_str(r37582, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37583);
        mpfr_init_set_str(r37584, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37585, "5", 10, MPFR_RNDN);
        mpfr_init(r37586);
        mpfr_init(r37587);
        mpfr_init(r37588);
        mpfr_init(r37589);
        mpfr_init_set_str(r37590, "3", 10, MPFR_RNDN);
        mpfr_init(r37591);
        mpfr_init(r37592);
        mpfr_init(r37593);
        mpfr_init_set_str(r37594, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37595);
        mpfr_init(r37596);
        mpfr_init(r37597);
        mpfr_init(r37598);
        mpfr_init(r37599);
        mpfr_init(r37600);
}

double f_fm(double x) {
        mpfr_set_d(r37581, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37583, mpfr_cmp(r37581, r37582) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37586, r37581, r37585, MPFR_RNDN);
        mpfr_div(r37587, r37584, r37586, MPFR_RNDN);
        mpfr_div(r37588, r37584, r37581, MPFR_RNDN);
        mpfr_add(r37589, r37587, r37588, MPFR_RNDN);
        ;
        mpfr_pow(r37591, r37581, r37590, MPFR_RNDN);
        mpfr_div(r37592, r37584, r37591, MPFR_RNDN);
        mpfr_sub(r37593, r37589, r37592, MPFR_RNDN);
        ;
        mpfr_set_si(r37595, mpfr_cmp(r37581, r37594) <= 0, MPFR_RNDN);
        mpfr_mul(r37596, r37581, r37581, MPFR_RNDN);
        mpfr_add(r37597, r37596, r37584, MPFR_RNDN);
        mpfr_div(r37598, r37581, r37597, MPFR_RNDN);
        if (mpfr_get_si(r37595, MPFR_RNDN)) { mpfr_set(r37599, r37598, MPFR_RNDN); } else { mpfr_set(r37599, r37593, MPFR_RNDN); };
        if (mpfr_get_si(r37583, MPFR_RNDN)) { mpfr_set(r37600, r37593, MPFR_RNDN); } else { mpfr_set(r37600, r37599, MPFR_RNDN); };
        return mpfr_get_d(r37600, MPFR_RNDN);
}

static mpfr_t r37601, r37602, r37603, r37604, r37605, r37606, r37607, r37608, r37609, r37610, r37611, r37612, r37613, r37614, r37615, r37616, r37617, r37618, r37619, r37620;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37601);
        mpfr_init_set_str(r37602, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37603);
        mpfr_init_set_str(r37604, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37605, "5", 10, MPFR_RNDN);
        mpfr_init(r37606);
        mpfr_init(r37607);
        mpfr_init(r37608);
        mpfr_init(r37609);
        mpfr_init_set_str(r37610, "3", 10, MPFR_RNDN);
        mpfr_init(r37611);
        mpfr_init(r37612);
        mpfr_init(r37613);
        mpfr_init_set_str(r37614, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37615);
        mpfr_init(r37616);
        mpfr_init(r37617);
        mpfr_init(r37618);
        mpfr_init(r37619);
        mpfr_init(r37620);
}

double f_dm(double x) {
        mpfr_set_d(r37601, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37603, mpfr_cmp(r37601, r37602) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37606, r37601, r37605, MPFR_RNDN);
        mpfr_div(r37607, r37604, r37606, MPFR_RNDN);
        mpfr_div(r37608, r37604, r37601, MPFR_RNDN);
        mpfr_add(r37609, r37607, r37608, MPFR_RNDN);
        ;
        mpfr_pow(r37611, r37601, r37610, MPFR_RNDN);
        mpfr_div(r37612, r37604, r37611, MPFR_RNDN);
        mpfr_sub(r37613, r37609, r37612, MPFR_RNDN);
        ;
        mpfr_set_si(r37615, mpfr_cmp(r37601, r37614) <= 0, MPFR_RNDN);
        mpfr_mul(r37616, r37601, r37601, MPFR_RNDN);
        mpfr_add(r37617, r37616, r37604, MPFR_RNDN);
        mpfr_div(r37618, r37601, r37617, MPFR_RNDN);
        if (mpfr_get_si(r37615, MPFR_RNDN)) { mpfr_set(r37619, r37618, MPFR_RNDN); } else { mpfr_set(r37619, r37613, MPFR_RNDN); };
        if (mpfr_get_si(r37603, MPFR_RNDN)) { mpfr_set(r37620, r37613, MPFR_RNDN); } else { mpfr_set(r37620, r37619, MPFR_RNDN); };
        return mpfr_get_d(r37620, MPFR_RNDN);
}

