#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 r37325 = x;
        float r37326 = r37325 * r37325;
        float r37327 = 1;
        float r37328 = r37326 + r37327;
        float r37329 = r37325 / r37328;
        return r37329;
}

double f_id(double x) {
        double r37330 = x;
        double r37331 = r37330 * r37330;
        double r37332 = 1;
        double r37333 = r37331 + r37332;
        double r37334 = r37330 / r37333;
        return r37334;
}


double f_of(float x) {
        float r37335 = x;
        float r37336 = -892037.4565711613;
        bool r37337 = r37335 <= r37336;
        float r37338 = 1;
        float r37339 = 5;
        float r37340 = pow(r37335, r37339);
        float r37341 = r37338 / r37340;
        float r37342 = r37338 / r37335;
        float r37343 = r37341 + r37342;
        float r37344 = 3;
        float r37345 = pow(r37335, r37344);
        float r37346 = r37338 / r37345;
        float r37347 = r37343 - r37346;
        float r37348 = 1041.212443333186;
        bool r37349 = r37335 <= r37348;
        float r37350 = r37335 * r37335;
        float r37351 = r37350 + r37338;
        float r37352 = r37335 / r37351;
        float r37353 = r37349 ? r37352 : r37347;
        float r37354 = r37337 ? r37347 : r37353;
        return r37354;
}

double f_od(double x) {
        double r37355 = x;
        double r37356 = -892037.4565711613;
        bool r37357 = r37355 <= r37356;
        double r37358 = 1;
        double r37359 = 5;
        double r37360 = pow(r37355, r37359);
        double r37361 = r37358 / r37360;
        double r37362 = r37358 / r37355;
        double r37363 = r37361 + r37362;
        double r37364 = 3;
        double r37365 = pow(r37355, r37364);
        double r37366 = r37358 / r37365;
        double r37367 = r37363 - r37366;
        double r37368 = 1041.212443333186;
        bool r37369 = r37355 <= r37368;
        double r37370 = r37355 * r37355;
        double r37371 = r37370 + r37358;
        double r37372 = r37355 / r37371;
        double r37373 = r37369 ? r37372 : r37367;
        double r37374 = r37357 ? r37367 : r37373;
        return r37374;
}

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 r37375, r37376, r37377, r37378, r37379;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37375);
        mpfr_init(r37376);
        mpfr_init_set_str(r37377, "1", 10, MPFR_RNDN);
        mpfr_init(r37378);
        mpfr_init(r37379);
}

double f_im(double x) {
        mpfr_set_d(r37375, x, MPFR_RNDN);
        mpfr_mul(r37376, r37375, r37375, MPFR_RNDN);
        ;
        mpfr_add(r37378, r37376, r37377, MPFR_RNDN);
        mpfr_div(r37379, r37375, r37378, MPFR_RNDN);
        return mpfr_get_d(r37379, MPFR_RNDN);
}

static mpfr_t r37380, r37381, r37382, r37383, r37384, r37385, r37386, r37387, r37388, r37389, r37390, r37391, r37392, r37393, r37394, r37395, r37396, r37397, r37398, r37399;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37380);
        mpfr_init_set_str(r37381, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37382);
        mpfr_init_set_str(r37383, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37384, "5", 10, MPFR_RNDN);
        mpfr_init(r37385);
        mpfr_init(r37386);
        mpfr_init(r37387);
        mpfr_init(r37388);
        mpfr_init_set_str(r37389, "3", 10, MPFR_RNDN);
        mpfr_init(r37390);
        mpfr_init(r37391);
        mpfr_init(r37392);
        mpfr_init_set_str(r37393, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37394);
        mpfr_init(r37395);
        mpfr_init(r37396);
        mpfr_init(r37397);
        mpfr_init(r37398);
        mpfr_init(r37399);
}

double f_fm(double x) {
        mpfr_set_d(r37380, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37382, mpfr_cmp(r37380, r37381) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37385, r37380, r37384, MPFR_RNDN);
        mpfr_div(r37386, r37383, r37385, MPFR_RNDN);
        mpfr_div(r37387, r37383, r37380, MPFR_RNDN);
        mpfr_add(r37388, r37386, r37387, MPFR_RNDN);
        ;
        mpfr_pow(r37390, r37380, r37389, MPFR_RNDN);
        mpfr_div(r37391, r37383, r37390, MPFR_RNDN);
        mpfr_sub(r37392, r37388, r37391, MPFR_RNDN);
        ;
        mpfr_set_si(r37394, mpfr_cmp(r37380, r37393) <= 0, MPFR_RNDN);
        mpfr_mul(r37395, r37380, r37380, MPFR_RNDN);
        mpfr_add(r37396, r37395, r37383, MPFR_RNDN);
        mpfr_div(r37397, r37380, r37396, MPFR_RNDN);
        if (mpfr_get_si(r37394, MPFR_RNDN)) { mpfr_set(r37398, r37397, MPFR_RNDN); } else { mpfr_set(r37398, r37392, MPFR_RNDN); };
        if (mpfr_get_si(r37382, MPFR_RNDN)) { mpfr_set(r37399, r37392, MPFR_RNDN); } else { mpfr_set(r37399, r37398, MPFR_RNDN); };
        return mpfr_get_d(r37399, MPFR_RNDN);
}

static mpfr_t r37400, r37401, r37402, r37403, r37404, r37405, r37406, r37407, r37408, r37409, r37410, r37411, r37412, r37413, r37414, r37415, r37416, r37417, r37418, r37419;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r37400);
        mpfr_init_set_str(r37401, "-892037.4565711613", 10, MPFR_RNDN);
        mpfr_init(r37402);
        mpfr_init_set_str(r37403, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37404, "5", 10, MPFR_RNDN);
        mpfr_init(r37405);
        mpfr_init(r37406);
        mpfr_init(r37407);
        mpfr_init(r37408);
        mpfr_init_set_str(r37409, "3", 10, MPFR_RNDN);
        mpfr_init(r37410);
        mpfr_init(r37411);
        mpfr_init(r37412);
        mpfr_init_set_str(r37413, "1041.212443333186", 10, MPFR_RNDN);
        mpfr_init(r37414);
        mpfr_init(r37415);
        mpfr_init(r37416);
        mpfr_init(r37417);
        mpfr_init(r37418);
        mpfr_init(r37419);
}

double f_dm(double x) {
        mpfr_set_d(r37400, x, MPFR_RNDN);
        ;
        mpfr_set_si(r37402, mpfr_cmp(r37400, r37401) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r37405, r37400, r37404, MPFR_RNDN);
        mpfr_div(r37406, r37403, r37405, MPFR_RNDN);
        mpfr_div(r37407, r37403, r37400, MPFR_RNDN);
        mpfr_add(r37408, r37406, r37407, MPFR_RNDN);
        ;
        mpfr_pow(r37410, r37400, r37409, MPFR_RNDN);
        mpfr_div(r37411, r37403, r37410, MPFR_RNDN);
        mpfr_sub(r37412, r37408, r37411, MPFR_RNDN);
        ;
        mpfr_set_si(r37414, mpfr_cmp(r37400, r37413) <= 0, MPFR_RNDN);
        mpfr_mul(r37415, r37400, r37400, MPFR_RNDN);
        mpfr_add(r37416, r37415, r37403, MPFR_RNDN);
        mpfr_div(r37417, r37400, r37416, MPFR_RNDN);
        if (mpfr_get_si(r37414, MPFR_RNDN)) { mpfr_set(r37418, r37417, MPFR_RNDN); } else { mpfr_set(r37418, r37412, MPFR_RNDN); };
        if (mpfr_get_si(r37402, MPFR_RNDN)) { mpfr_set(r37419, r37412, MPFR_RNDN); } else { mpfr_set(r37419, r37418, MPFR_RNDN); };
        return mpfr_get_d(r37419, MPFR_RNDN);
}

