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

char *name = "3frac (problem 3.3.3)";

double f_if(float x) {
        float r4417355 = 1;
        float r4417356 = x;
        float r4417357 = r4417356 + r4417355;
        float r4417358 = r4417355 / r4417357;
        float r4417359 = 2;
        float r4417360 = r4417359 / r4417356;
        float r4417361 = r4417358 - r4417360;
        float r4417362 = r4417356 - r4417355;
        float r4417363 = r4417355 / r4417362;
        float r4417364 = r4417361 + r4417363;
        return r4417364;
}

double f_id(double x) {
        double r4417365 = 1;
        double r4417366 = x;
        double r4417367 = r4417366 + r4417365;
        double r4417368 = r4417365 / r4417367;
        double r4417369 = 2;
        double r4417370 = r4417369 / r4417366;
        double r4417371 = r4417368 - r4417370;
        double r4417372 = r4417366 - r4417365;
        double r4417373 = r4417365 / r4417372;
        double r4417374 = r4417371 + r4417373;
        return r4417374;
}


double f_of(float x) {
        float r4417375 = x;
        float r4417376 = -1.3644885705085021;
        bool r4417377 = r4417375 <= r4417376;
        float r4417378 = 2;
        float r4417379 = 7;
        float r4417380 = pow(r4417375, r4417379);
        float r4417381 = r4417378 / r4417380;
        float r4417382 = 5;
        float r4417383 = pow(r4417375, r4417382);
        float r4417384 = r4417378 / r4417383;
        float r4417385 = r4417381 + r4417384;
        float r4417386 = r4417378 / r4417375;
        float r4417387 = r4417375 * r4417375;
        float r4417388 = r4417386 / r4417387;
        float r4417389 = r4417385 + r4417388;
        float r4417390 = 41773.77440307341;
        bool r4417391 = r4417375 <= r4417390;
        float r4417392 = 1;
        float r4417393 = r4417375 + r4417392;
        float r4417394 = r4417392 / r4417393;
        float r4417395 = r4417394 - r4417386;
        float r4417396 = r4417375 - r4417392;
        float r4417397 = r4417392 / r4417396;
        float r4417398 = r4417395 + r4417397;
        float r4417399 = r4417391 ? r4417398 : r4417389;
        float r4417400 = r4417377 ? r4417389 : r4417399;
        return r4417400;
}

double f_od(double x) {
        double r4417401 = x;
        double r4417402 = -1.3644885705085021;
        bool r4417403 = r4417401 <= r4417402;
        double r4417404 = 2;
        double r4417405 = 7;
        double r4417406 = pow(r4417401, r4417405);
        double r4417407 = r4417404 / r4417406;
        double r4417408 = 5;
        double r4417409 = pow(r4417401, r4417408);
        double r4417410 = r4417404 / r4417409;
        double r4417411 = r4417407 + r4417410;
        double r4417412 = r4417404 / r4417401;
        double r4417413 = r4417401 * r4417401;
        double r4417414 = r4417412 / r4417413;
        double r4417415 = r4417411 + r4417414;
        double r4417416 = 41773.77440307341;
        bool r4417417 = r4417401 <= r4417416;
        double r4417418 = 1;
        double r4417419 = r4417401 + r4417418;
        double r4417420 = r4417418 / r4417419;
        double r4417421 = r4417420 - r4417412;
        double r4417422 = r4417401 - r4417418;
        double r4417423 = r4417418 / r4417422;
        double r4417424 = r4417421 + r4417423;
        double r4417425 = r4417417 ? r4417424 : r4417415;
        double r4417426 = r4417403 ? r4417415 : r4417425;
        return r4417426;
}

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 r4417427, r4417428, r4417429, r4417430, r4417431, r4417432, r4417433, r4417434, r4417435, r4417436;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4417427, "1", 10, MPFR_RNDN);
        mpfr_init(r4417428);
        mpfr_init(r4417429);
        mpfr_init(r4417430);
        mpfr_init_set_str(r4417431, "2", 10, MPFR_RNDN);
        mpfr_init(r4417432);
        mpfr_init(r4417433);
        mpfr_init(r4417434);
        mpfr_init(r4417435);
        mpfr_init(r4417436);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4417428, x, MPFR_RNDN);
        mpfr_add(r4417429, r4417428, r4417427, MPFR_RNDN);
        mpfr_div(r4417430, r4417427, r4417429, MPFR_RNDN);
        ;
        mpfr_div(r4417432, r4417431, r4417428, MPFR_RNDN);
        mpfr_sub(r4417433, r4417430, r4417432, MPFR_RNDN);
        mpfr_sub(r4417434, r4417428, r4417427, MPFR_RNDN);
        mpfr_div(r4417435, r4417427, r4417434, MPFR_RNDN);
        mpfr_add(r4417436, r4417433, r4417435, MPFR_RNDN);
        return mpfr_get_d(r4417436, MPFR_RNDN);
}

static mpfr_t r4417437, r4417438, r4417439, r4417440, r4417441, r4417442, r4417443, r4417444, r4417445, r4417446, r4417447, r4417448, r4417449, r4417450, r4417451, r4417452, r4417453, r4417454, r4417455, r4417456, r4417457, r4417458, r4417459, r4417460, r4417461, r4417462;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r4417437);
        mpfr_init_set_str(r4417438, "-1.3644885705085021", 10, MPFR_RNDN);
        mpfr_init(r4417439);
        mpfr_init_set_str(r4417440, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4417441, "7", 10, MPFR_RNDN);
        mpfr_init(r4417442);
        mpfr_init(r4417443);
        mpfr_init_set_str(r4417444, "5", 10, MPFR_RNDN);
        mpfr_init(r4417445);
        mpfr_init(r4417446);
        mpfr_init(r4417447);
        mpfr_init(r4417448);
        mpfr_init(r4417449);
        mpfr_init(r4417450);
        mpfr_init(r4417451);
        mpfr_init_set_str(r4417452, "41773.77440307341", 10, MPFR_RNDN);
        mpfr_init(r4417453);
        mpfr_init_set_str(r4417454, "1", 10, MPFR_RNDN);
        mpfr_init(r4417455);
        mpfr_init(r4417456);
        mpfr_init(r4417457);
        mpfr_init(r4417458);
        mpfr_init(r4417459);
        mpfr_init(r4417460);
        mpfr_init(r4417461);
        mpfr_init(r4417462);
}

double f_fm(double x) {
        mpfr_set_d(r4417437, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4417439, mpfr_cmp(r4417437, r4417438) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4417442, r4417437, r4417441, MPFR_RNDN);
        mpfr_div(r4417443, r4417440, r4417442, MPFR_RNDN);
        ;
        mpfr_pow(r4417445, r4417437, r4417444, MPFR_RNDN);
        mpfr_div(r4417446, r4417440, r4417445, MPFR_RNDN);
        mpfr_add(r4417447, r4417443, r4417446, MPFR_RNDN);
        mpfr_div(r4417448, r4417440, r4417437, MPFR_RNDN);
        mpfr_mul(r4417449, r4417437, r4417437, MPFR_RNDN);
        mpfr_div(r4417450, r4417448, r4417449, MPFR_RNDN);
        mpfr_add(r4417451, r4417447, r4417450, MPFR_RNDN);
        ;
        mpfr_set_si(r4417453, mpfr_cmp(r4417437, r4417452) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4417455, r4417437, r4417454, MPFR_RNDN);
        mpfr_div(r4417456, r4417454, r4417455, MPFR_RNDN);
        mpfr_sub(r4417457, r4417456, r4417448, MPFR_RNDN);
        mpfr_sub(r4417458, r4417437, r4417454, MPFR_RNDN);
        mpfr_div(r4417459, r4417454, r4417458, MPFR_RNDN);
        mpfr_add(r4417460, r4417457, r4417459, MPFR_RNDN);
        if (mpfr_get_si(r4417453, MPFR_RNDN)) { mpfr_set(r4417461, r4417460, MPFR_RNDN); } else { mpfr_set(r4417461, r4417451, MPFR_RNDN); };
        if (mpfr_get_si(r4417439, MPFR_RNDN)) { mpfr_set(r4417462, r4417451, MPFR_RNDN); } else { mpfr_set(r4417462, r4417461, MPFR_RNDN); };
        return mpfr_get_d(r4417462, MPFR_RNDN);
}

static mpfr_t r4417463, r4417464, r4417465, r4417466, r4417467, r4417468, r4417469, r4417470, r4417471, r4417472, r4417473, r4417474, r4417475, r4417476, r4417477, r4417478, r4417479, r4417480, r4417481, r4417482, r4417483, r4417484, r4417485, r4417486, r4417487, r4417488;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r4417463);
        mpfr_init_set_str(r4417464, "-1.3644885705085021", 10, MPFR_RNDN);
        mpfr_init(r4417465);
        mpfr_init_set_str(r4417466, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4417467, "7", 10, MPFR_RNDN);
        mpfr_init(r4417468);
        mpfr_init(r4417469);
        mpfr_init_set_str(r4417470, "5", 10, MPFR_RNDN);
        mpfr_init(r4417471);
        mpfr_init(r4417472);
        mpfr_init(r4417473);
        mpfr_init(r4417474);
        mpfr_init(r4417475);
        mpfr_init(r4417476);
        mpfr_init(r4417477);
        mpfr_init_set_str(r4417478, "41773.77440307341", 10, MPFR_RNDN);
        mpfr_init(r4417479);
        mpfr_init_set_str(r4417480, "1", 10, MPFR_RNDN);
        mpfr_init(r4417481);
        mpfr_init(r4417482);
        mpfr_init(r4417483);
        mpfr_init(r4417484);
        mpfr_init(r4417485);
        mpfr_init(r4417486);
        mpfr_init(r4417487);
        mpfr_init(r4417488);
}

double f_dm(double x) {
        mpfr_set_d(r4417463, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4417465, mpfr_cmp(r4417463, r4417464) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4417468, r4417463, r4417467, MPFR_RNDN);
        mpfr_div(r4417469, r4417466, r4417468, MPFR_RNDN);
        ;
        mpfr_pow(r4417471, r4417463, r4417470, MPFR_RNDN);
        mpfr_div(r4417472, r4417466, r4417471, MPFR_RNDN);
        mpfr_add(r4417473, r4417469, r4417472, MPFR_RNDN);
        mpfr_div(r4417474, r4417466, r4417463, MPFR_RNDN);
        mpfr_mul(r4417475, r4417463, r4417463, MPFR_RNDN);
        mpfr_div(r4417476, r4417474, r4417475, MPFR_RNDN);
        mpfr_add(r4417477, r4417473, r4417476, MPFR_RNDN);
        ;
        mpfr_set_si(r4417479, mpfr_cmp(r4417463, r4417478) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r4417481, r4417463, r4417480, MPFR_RNDN);
        mpfr_div(r4417482, r4417480, r4417481, MPFR_RNDN);
        mpfr_sub(r4417483, r4417482, r4417474, MPFR_RNDN);
        mpfr_sub(r4417484, r4417463, r4417480, MPFR_RNDN);
        mpfr_div(r4417485, r4417480, r4417484, MPFR_RNDN);
        mpfr_add(r4417486, r4417483, r4417485, MPFR_RNDN);
        if (mpfr_get_si(r4417479, MPFR_RNDN)) { mpfr_set(r4417487, r4417486, MPFR_RNDN); } else { mpfr_set(r4417487, r4417477, MPFR_RNDN); };
        if (mpfr_get_si(r4417465, MPFR_RNDN)) { mpfr_set(r4417488, r4417477, MPFR_RNDN); } else { mpfr_set(r4417488, r4417487, MPFR_RNDN); };
        return mpfr_get_d(r4417488, MPFR_RNDN);
}

