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

char *name = "Harley's example";

double f_if(float c_p, float c_n, float t, float s) {
        float r48355 = 1;
        float r48356 = s;
        float r48357 = -r48356;
        float r48358 = exp(r48357);
        float r48359 = r48355 + r48358;
        float r48360 = r48355 / r48359;
        float r48361 = c_p;
        float r48362 = pow(r48360, r48361);
        float r48363 = r48355 - r48360;
        float r48364 = c_n;
        float r48365 = pow(r48363, r48364);
        float r48366 = r48362 * r48365;
        float r48367 = t;
        float r48368 = -r48367;
        float r48369 = exp(r48368);
        float r48370 = r48355 + r48369;
        float r48371 = r48355 / r48370;
        float r48372 = pow(r48371, r48361);
        float r48373 = r48355 - r48371;
        float r48374 = pow(r48373, r48364);
        float r48375 = r48372 * r48374;
        float r48376 = r48366 / r48375;
        return r48376;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48377 = 1;
        double r48378 = s;
        double r48379 = -r48378;
        double r48380 = exp(r48379);
        double r48381 = r48377 + r48380;
        double r48382 = r48377 / r48381;
        double r48383 = c_p;
        double r48384 = pow(r48382, r48383);
        double r48385 = r48377 - r48382;
        double r48386 = c_n;
        double r48387 = pow(r48385, r48386);
        double r48388 = r48384 * r48387;
        double r48389 = t;
        double r48390 = -r48389;
        double r48391 = exp(r48390);
        double r48392 = r48377 + r48391;
        double r48393 = r48377 / r48392;
        double r48394 = pow(r48393, r48383);
        double r48395 = r48377 - r48393;
        double r48396 = pow(r48395, r48386);
        double r48397 = r48394 * r48396;
        double r48398 = r48388 / r48397;
        return r48398;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48399 = s;
        float r48400 = -7.932299271849923e-193;
        bool r48401 = r48399 <= r48400;
        float r48402 = 1;
        float r48403 = -r48399;
        float r48404 = exp(r48403);
        float r48405 = r48402 + r48404;
        float r48406 = r48402 / r48405;
        float r48407 = r48402 - r48406;
        float r48408 = c_n;
        float r48409 = pow(r48407, r48408);
        float r48410 = t;
        float r48411 = -r48410;
        float r48412 = exp(r48411);
        float r48413 = r48402 + r48412;
        float r48414 = r48402 / r48413;
        float r48415 = r48402 - r48414;
        float r48416 = pow(r48415, r48408);
        float r48417 = r48409 / r48416;
        float r48418 = c_p;
        float r48419 = pow(r48406, r48418);
        float r48420 = 1/2;
        float r48421 = log(r48420);
        float r48422 = r48410 * r48420;
        float r48423 = r48421 + r48422;
        float r48424 = r48423 * r48418;
        float r48425 = r48424 + r48402;
        float r48426 = r48419 / r48425;
        float r48427 = r48417 * r48426;
        float r48428 = 8.481265547598255e-45;
        bool r48429 = r48399 <= r48428;
        float r48430 = r48399 * r48420;
        float r48431 = r48418 - r48408;
        float r48432 = r48430 * r48431;
        float r48433 = r48402 + r48432;
        float r48434 = r48429 ? r48433 : r48427;
        float r48435 = r48401 ? r48427 : r48434;
        return r48435;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48436 = s;
        double r48437 = -7.932299271849923e-193;
        bool r48438 = r48436 <= r48437;
        double r48439 = 1;
        double r48440 = -r48436;
        double r48441 = exp(r48440);
        double r48442 = r48439 + r48441;
        double r48443 = r48439 / r48442;
        double r48444 = r48439 - r48443;
        double r48445 = c_n;
        double r48446 = pow(r48444, r48445);
        double r48447 = t;
        double r48448 = -r48447;
        double r48449 = exp(r48448);
        double r48450 = r48439 + r48449;
        double r48451 = r48439 / r48450;
        double r48452 = r48439 - r48451;
        double r48453 = pow(r48452, r48445);
        double r48454 = r48446 / r48453;
        double r48455 = c_p;
        double r48456 = pow(r48443, r48455);
        double r48457 = 1/2;
        double r48458 = log(r48457);
        double r48459 = r48447 * r48457;
        double r48460 = r48458 + r48459;
        double r48461 = r48460 * r48455;
        double r48462 = r48461 + r48439;
        double r48463 = r48456 / r48462;
        double r48464 = r48454 * r48463;
        double r48465 = 8.481265547598255e-45;
        bool r48466 = r48436 <= r48465;
        double r48467 = r48436 * r48457;
        double r48468 = r48455 - r48445;
        double r48469 = r48467 * r48468;
        double r48470 = r48439 + r48469;
        double r48471 = r48466 ? r48470 : r48464;
        double r48472 = r48438 ? r48464 : r48471;
        return r48472;
}

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 r48473, r48474, r48475, r48476, r48477, r48478, r48479, r48480, r48481, r48482, r48483, r48484, r48485, r48486, r48487, r48488, r48489, r48490, r48491, r48492, r48493, r48494;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r48473, "1", 10, MPFR_RNDN);
        mpfr_init(r48474);
        mpfr_init(r48475);
        mpfr_init(r48476);
        mpfr_init(r48477);
        mpfr_init(r48478);
        mpfr_init(r48479);
        mpfr_init(r48480);
        mpfr_init(r48481);
        mpfr_init(r48482);
        mpfr_init(r48483);
        mpfr_init(r48484);
        mpfr_init(r48485);
        mpfr_init(r48486);
        mpfr_init(r48487);
        mpfr_init(r48488);
        mpfr_init(r48489);
        mpfr_init(r48490);
        mpfr_init(r48491);
        mpfr_init(r48492);
        mpfr_init(r48493);
        mpfr_init(r48494);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48474, s, MPFR_RNDN);
        mpfr_neg(r48475, r48474, MPFR_RNDN);
        mpfr_exp(r48476, r48475, MPFR_RNDN);
        mpfr_add(r48477, r48473, r48476, MPFR_RNDN);
        mpfr_div(r48478, r48473, r48477, MPFR_RNDN);
        mpfr_set_d(r48479, c_p, MPFR_RNDN);
        mpfr_pow(r48480, r48478, r48479, MPFR_RNDN);
        mpfr_sub(r48481, r48473, r48478, MPFR_RNDN);
        mpfr_set_d(r48482, c_n, MPFR_RNDN);
        mpfr_pow(r48483, r48481, r48482, MPFR_RNDN);
        mpfr_mul(r48484, r48480, r48483, MPFR_RNDN);
        mpfr_set_d(r48485, t, MPFR_RNDN);
        mpfr_neg(r48486, r48485, MPFR_RNDN);
        mpfr_exp(r48487, r48486, MPFR_RNDN);
        mpfr_add(r48488, r48473, r48487, MPFR_RNDN);
        mpfr_div(r48489, r48473, r48488, MPFR_RNDN);
        mpfr_pow(r48490, r48489, r48479, MPFR_RNDN);
        mpfr_sub(r48491, r48473, r48489, MPFR_RNDN);
        mpfr_pow(r48492, r48491, r48482, MPFR_RNDN);
        mpfr_mul(r48493, r48490, r48492, MPFR_RNDN);
        mpfr_div(r48494, r48484, r48493, MPFR_RNDN);
        return mpfr_get_d(r48494, MPFR_RNDN);
}

static mpfr_t r48495, r48496, r48497, r48498, r48499, r48500, r48501, r48502, r48503, r48504, r48505, r48506, r48507, r48508, r48509, r48510, r48511, r48512, r48513, r48514, r48515, r48516, r48517, r48518, r48519, r48520, r48521, r48522, r48523, r48524, r48525, r48526, r48527, r48528, r48529, r48530, r48531;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r48495);
        mpfr_init_set_str(r48496, "-7.932299271849923e-193", 10, MPFR_RNDN);
        mpfr_init(r48497);
        mpfr_init_set_str(r48498, "1", 10, MPFR_RNDN);
        mpfr_init(r48499);
        mpfr_init(r48500);
        mpfr_init(r48501);
        mpfr_init(r48502);
        mpfr_init(r48503);
        mpfr_init(r48504);
        mpfr_init(r48505);
        mpfr_init(r48506);
        mpfr_init(r48507);
        mpfr_init(r48508);
        mpfr_init(r48509);
        mpfr_init(r48510);
        mpfr_init(r48511);
        mpfr_init(r48512);
        mpfr_init(r48513);
        mpfr_init(r48514);
        mpfr_init(r48515);
        mpfr_init_set_str(r48516, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48517);
        mpfr_init(r48518);
        mpfr_init(r48519);
        mpfr_init(r48520);
        mpfr_init(r48521);
        mpfr_init(r48522);
        mpfr_init(r48523);
        mpfr_init_set_str(r48524, "8.481265547598255e-45", 10, MPFR_RNDN);
        mpfr_init(r48525);
        mpfr_init(r48526);
        mpfr_init(r48527);
        mpfr_init(r48528);
        mpfr_init(r48529);
        mpfr_init(r48530);
        mpfr_init(r48531);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48495, s, MPFR_RNDN);
        ;
        mpfr_set_si(r48497, mpfr_cmp(r48495, r48496) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r48499, r48495, MPFR_RNDN);
        mpfr_exp(r48500, r48499, MPFR_RNDN);
        mpfr_add(r48501, r48498, r48500, MPFR_RNDN);
        mpfr_div(r48502, r48498, r48501, MPFR_RNDN);
        mpfr_sub(r48503, r48498, r48502, MPFR_RNDN);
        mpfr_set_d(r48504, c_n, MPFR_RNDN);
        mpfr_pow(r48505, r48503, r48504, MPFR_RNDN);
        mpfr_set_d(r48506, t, MPFR_RNDN);
        mpfr_neg(r48507, r48506, MPFR_RNDN);
        mpfr_exp(r48508, r48507, MPFR_RNDN);
        mpfr_add(r48509, r48498, r48508, MPFR_RNDN);
        mpfr_div(r48510, r48498, r48509, MPFR_RNDN);
        mpfr_sub(r48511, r48498, r48510, MPFR_RNDN);
        mpfr_pow(r48512, r48511, r48504, MPFR_RNDN);
        mpfr_div(r48513, r48505, r48512, MPFR_RNDN);
        mpfr_set_d(r48514, c_p, MPFR_RNDN);
        mpfr_pow(r48515, r48502, r48514, MPFR_RNDN);
        ;
        mpfr_log(r48517, r48516, MPFR_RNDN);
        mpfr_mul(r48518, r48506, r48516, MPFR_RNDN);
        mpfr_add(r48519, r48517, r48518, MPFR_RNDN);
        mpfr_mul(r48520, r48519, r48514, MPFR_RNDN);
        mpfr_add(r48521, r48520, r48498, MPFR_RNDN);
        mpfr_div(r48522, r48515, r48521, MPFR_RNDN);
        mpfr_mul(r48523, r48513, r48522, MPFR_RNDN);
        ;
        mpfr_set_si(r48525, mpfr_cmp(r48495, r48524) <= 0, MPFR_RNDN);
        mpfr_mul(r48526, r48495, r48516, MPFR_RNDN);
        mpfr_sub(r48527, r48514, r48504, MPFR_RNDN);
        mpfr_mul(r48528, r48526, r48527, MPFR_RNDN);
        mpfr_add(r48529, r48498, r48528, MPFR_RNDN);
        if (mpfr_get_si(r48525, MPFR_RNDN)) { mpfr_set(r48530, r48529, MPFR_RNDN); } else { mpfr_set(r48530, r48523, MPFR_RNDN); };
        if (mpfr_get_si(r48497, MPFR_RNDN)) { mpfr_set(r48531, r48523, MPFR_RNDN); } else { mpfr_set(r48531, r48530, MPFR_RNDN); };
        return mpfr_get_d(r48531, MPFR_RNDN);
}

static mpfr_t r48532, r48533, r48534, r48535, r48536, r48537, r48538, r48539, r48540, r48541, r48542, r48543, r48544, r48545, r48546, r48547, r48548, r48549, r48550, r48551, r48552, r48553, r48554, r48555, r48556, r48557, r48558, r48559, r48560, r48561, r48562, r48563, r48564, r48565, r48566, r48567, r48568;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r48532);
        mpfr_init_set_str(r48533, "-7.932299271849923e-193", 10, MPFR_RNDN);
        mpfr_init(r48534);
        mpfr_init_set_str(r48535, "1", 10, MPFR_RNDN);
        mpfr_init(r48536);
        mpfr_init(r48537);
        mpfr_init(r48538);
        mpfr_init(r48539);
        mpfr_init(r48540);
        mpfr_init(r48541);
        mpfr_init(r48542);
        mpfr_init(r48543);
        mpfr_init(r48544);
        mpfr_init(r48545);
        mpfr_init(r48546);
        mpfr_init(r48547);
        mpfr_init(r48548);
        mpfr_init(r48549);
        mpfr_init(r48550);
        mpfr_init(r48551);
        mpfr_init(r48552);
        mpfr_init_set_str(r48553, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48554);
        mpfr_init(r48555);
        mpfr_init(r48556);
        mpfr_init(r48557);
        mpfr_init(r48558);
        mpfr_init(r48559);
        mpfr_init(r48560);
        mpfr_init_set_str(r48561, "8.481265547598255e-45", 10, MPFR_RNDN);
        mpfr_init(r48562);
        mpfr_init(r48563);
        mpfr_init(r48564);
        mpfr_init(r48565);
        mpfr_init(r48566);
        mpfr_init(r48567);
        mpfr_init(r48568);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48532, s, MPFR_RNDN);
        ;
        mpfr_set_si(r48534, mpfr_cmp(r48532, r48533) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r48536, r48532, MPFR_RNDN);
        mpfr_exp(r48537, r48536, MPFR_RNDN);
        mpfr_add(r48538, r48535, r48537, MPFR_RNDN);
        mpfr_div(r48539, r48535, r48538, MPFR_RNDN);
        mpfr_sub(r48540, r48535, r48539, MPFR_RNDN);
        mpfr_set_d(r48541, c_n, MPFR_RNDN);
        mpfr_pow(r48542, r48540, r48541, MPFR_RNDN);
        mpfr_set_d(r48543, t, MPFR_RNDN);
        mpfr_neg(r48544, r48543, MPFR_RNDN);
        mpfr_exp(r48545, r48544, MPFR_RNDN);
        mpfr_add(r48546, r48535, r48545, MPFR_RNDN);
        mpfr_div(r48547, r48535, r48546, MPFR_RNDN);
        mpfr_sub(r48548, r48535, r48547, MPFR_RNDN);
        mpfr_pow(r48549, r48548, r48541, MPFR_RNDN);
        mpfr_div(r48550, r48542, r48549, MPFR_RNDN);
        mpfr_set_d(r48551, c_p, MPFR_RNDN);
        mpfr_pow(r48552, r48539, r48551, MPFR_RNDN);
        ;
        mpfr_log(r48554, r48553, MPFR_RNDN);
        mpfr_mul(r48555, r48543, r48553, MPFR_RNDN);
        mpfr_add(r48556, r48554, r48555, MPFR_RNDN);
        mpfr_mul(r48557, r48556, r48551, MPFR_RNDN);
        mpfr_add(r48558, r48557, r48535, MPFR_RNDN);
        mpfr_div(r48559, r48552, r48558, MPFR_RNDN);
        mpfr_mul(r48560, r48550, r48559, MPFR_RNDN);
        ;
        mpfr_set_si(r48562, mpfr_cmp(r48532, r48561) <= 0, MPFR_RNDN);
        mpfr_mul(r48563, r48532, r48553, MPFR_RNDN);
        mpfr_sub(r48564, r48551, r48541, MPFR_RNDN);
        mpfr_mul(r48565, r48563, r48564, MPFR_RNDN);
        mpfr_add(r48566, r48535, r48565, MPFR_RNDN);
        if (mpfr_get_si(r48562, MPFR_RNDN)) { mpfr_set(r48567, r48566, MPFR_RNDN); } else { mpfr_set(r48567, r48560, MPFR_RNDN); };
        if (mpfr_get_si(r48534, MPFR_RNDN)) { mpfr_set(r48568, r48560, MPFR_RNDN); } else { mpfr_set(r48568, r48567, MPFR_RNDN); };
        return mpfr_get_d(r48568, MPFR_RNDN);
}

