#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 r11372 = 1;
        float r11373 = s;
        float r11374 = -r11373;
        float r11375 = exp(r11374);
        float r11376 = r11372 + r11375;
        float r11377 = r11372 / r11376;
        float r11378 = c_p;
        float r11379 = pow(r11377, r11378);
        float r11380 = r11372 - r11377;
        float r11381 = c_n;
        float r11382 = pow(r11380, r11381);
        float r11383 = r11379 * r11382;
        float r11384 = t;
        float r11385 = -r11384;
        float r11386 = exp(r11385);
        float r11387 = r11372 + r11386;
        float r11388 = r11372 / r11387;
        float r11389 = pow(r11388, r11378);
        float r11390 = r11372 - r11388;
        float r11391 = pow(r11390, r11381);
        float r11392 = r11389 * r11391;
        float r11393 = r11383 / r11392;
        return r11393;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11394 = 1;
        double r11395 = s;
        double r11396 = -r11395;
        double r11397 = exp(r11396);
        double r11398 = r11394 + r11397;
        double r11399 = r11394 / r11398;
        double r11400 = c_p;
        double r11401 = pow(r11399, r11400);
        double r11402 = r11394 - r11399;
        double r11403 = c_n;
        double r11404 = pow(r11402, r11403);
        double r11405 = r11401 * r11404;
        double r11406 = t;
        double r11407 = -r11406;
        double r11408 = exp(r11407);
        double r11409 = r11394 + r11408;
        double r11410 = r11394 / r11409;
        double r11411 = pow(r11410, r11400);
        double r11412 = r11394 - r11410;
        double r11413 = pow(r11412, r11403);
        double r11414 = r11411 * r11413;
        double r11415 = r11405 / r11414;
        return r11415;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11416 = 1;
        float r11417 = s;
        float r11418 = -r11417;
        float r11419 = exp(r11418);
        float r11420 = r11416 + r11419;
        float r11421 = r11416 / r11420;
        float r11422 = 0.8593937376150694;
        bool r11423 = r11421 <= r11422;
        float r11424 = c_p;
        float r11425 = t;
        float r11426 = -r11425;
        float r11427 = exp(r11426);
        float r11428 = log1p(r11427);
        float r11429 = log1p(r11419);
        float r11430 = r11428 - r11429;
        float r11431 = 1/8;
        float r11432 = 1/2;
        float r11433 = fma(r11431, r11417, r11432);
        float r11434 = r11432 * r11425;
        float r11435 = fma(r11418, r11433, r11434);
        float r11436 = c_n;
        float r11437 = r11435 * r11436;
        float r11438 = fma(r11424, r11430, r11437);
        float r11439 = exp(r11438);
        float r11440 = r11419 + r11416;
        float r11441 = r11416 / r11440;
        float r11442 = pow(r11441, r11424);
        float r11443 = log(r11432);
        float r11444 = fma(r11425, r11432, r11443);
        float r11445 = fma(r11424, r11444, r11416);
        float r11446 = r11442 / r11445;
        float r11447 = r11416 - r11441;
        float r11448 = pow(r11447, r11436);
        float r11449 = r11446 * r11448;
        float r11450 = r11416 + r11427;
        float r11451 = r11416 / r11450;
        float r11452 = r11416 - r11451;
        float r11453 = pow(r11452, r11436);
        float r11454 = r11449 / r11453;
        float r11455 = r11423 ? r11439 : r11454;
        return r11455;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11456 = 1;
        double r11457 = s;
        double r11458 = -r11457;
        double r11459 = exp(r11458);
        double r11460 = r11456 + r11459;
        double r11461 = r11456 / r11460;
        double r11462 = 0.8593937376150694;
        bool r11463 = r11461 <= r11462;
        double r11464 = c_p;
        double r11465 = t;
        double r11466 = -r11465;
        double r11467 = exp(r11466);
        double r11468 = log1p(r11467);
        double r11469 = log1p(r11459);
        double r11470 = r11468 - r11469;
        double r11471 = 1/8;
        double r11472 = 1/2;
        double r11473 = fma(r11471, r11457, r11472);
        double r11474 = r11472 * r11465;
        double r11475 = fma(r11458, r11473, r11474);
        double r11476 = c_n;
        double r11477 = r11475 * r11476;
        double r11478 = fma(r11464, r11470, r11477);
        double r11479 = exp(r11478);
        double r11480 = r11459 + r11456;
        double r11481 = r11456 / r11480;
        double r11482 = pow(r11481, r11464);
        double r11483 = log(r11472);
        double r11484 = fma(r11465, r11472, r11483);
        double r11485 = fma(r11464, r11484, r11456);
        double r11486 = r11482 / r11485;
        double r11487 = r11456 - r11481;
        double r11488 = pow(r11487, r11476);
        double r11489 = r11486 * r11488;
        double r11490 = r11456 + r11467;
        double r11491 = r11456 / r11490;
        double r11492 = r11456 - r11491;
        double r11493 = pow(r11492, r11476);
        double r11494 = r11489 / r11493;
        double r11495 = r11463 ? r11479 : r11494;
        return r11495;
}

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 r11496, r11497, r11498, r11499, r11500, r11501, r11502, r11503, r11504, r11505, r11506, r11507, r11508, r11509, r11510, r11511, r11512, r11513, r11514, r11515, r11516, r11517;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11496, "1", 10, MPFR_RNDN);
        mpfr_init(r11497);
        mpfr_init(r11498);
        mpfr_init(r11499);
        mpfr_init(r11500);
        mpfr_init(r11501);
        mpfr_init(r11502);
        mpfr_init(r11503);
        mpfr_init(r11504);
        mpfr_init(r11505);
        mpfr_init(r11506);
        mpfr_init(r11507);
        mpfr_init(r11508);
        mpfr_init(r11509);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
        mpfr_init(r11513);
        mpfr_init(r11514);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11497, s, MPFR_RNDN);
        mpfr_neg(r11498, r11497, MPFR_RNDN);
        mpfr_exp(r11499, r11498, MPFR_RNDN);
        mpfr_add(r11500, r11496, r11499, MPFR_RNDN);
        mpfr_div(r11501, r11496, r11500, MPFR_RNDN);
        mpfr_set_d(r11502, c_p, MPFR_RNDN);
        mpfr_pow(r11503, r11501, r11502, MPFR_RNDN);
        mpfr_sub(r11504, r11496, r11501, MPFR_RNDN);
        mpfr_set_d(r11505, c_n, MPFR_RNDN);
        mpfr_pow(r11506, r11504, r11505, MPFR_RNDN);
        mpfr_mul(r11507, r11503, r11506, MPFR_RNDN);
        mpfr_set_d(r11508, t, MPFR_RNDN);
        mpfr_neg(r11509, r11508, MPFR_RNDN);
        mpfr_exp(r11510, r11509, MPFR_RNDN);
        mpfr_add(r11511, r11496, r11510, MPFR_RNDN);
        mpfr_div(r11512, r11496, r11511, MPFR_RNDN);
        mpfr_pow(r11513, r11512, r11502, MPFR_RNDN);
        mpfr_sub(r11514, r11496, r11512, MPFR_RNDN);
        mpfr_pow(r11515, r11514, r11505, MPFR_RNDN);
        mpfr_mul(r11516, r11513, r11515, MPFR_RNDN);
        mpfr_div(r11517, r11507, r11516, MPFR_RNDN);
        return mpfr_get_d(r11517, MPFR_RNDN);
}

static mpfr_t r11518, r11519, r11520, r11521, r11522, r11523, r11524, r11525, r11526, r11527, r11528, r11529, r11530, r11531, r11532, r11533, r11534, r11535, r11536, r11537, r11538, r11539, r11540, r11541, r11542, r11543, r11544, r11545, r11546, r11547, r11548, r11549, r11550, r11551, r11552, r11553, r11554, r11555, r11556, r11557;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11518, "1", 10, MPFR_RNDN);
        mpfr_init(r11519);
        mpfr_init(r11520);
        mpfr_init(r11521);
        mpfr_init(r11522);
        mpfr_init(r11523);
        mpfr_init_set_str(r11524, "0.8593937376150694", 10, MPFR_RNDN);
        mpfr_init(r11525);
        mpfr_init(r11526);
        mpfr_init(r11527);
        mpfr_init(r11528);
        mpfr_init(r11529);
        mpfr_init(r11530);
        mpfr_init(r11531);
        mpfr_init(r11532);
        mpfr_init_set_str(r11533, "1/8", 10, MPFR_RNDN);
        mpfr_init_set_str(r11534, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11535);
        mpfr_init(r11536);
        mpfr_init(r11537);
        mpfr_init(r11538);
        mpfr_init(r11539);
        mpfr_init(r11540);
        mpfr_init(r11541);
        mpfr_init(r11542);
        mpfr_init(r11543);
        mpfr_init(r11544);
        mpfr_init(r11545);
        mpfr_init(r11546);
        mpfr_init(r11547);
        mpfr_init(r11548);
        mpfr_init(r11549);
        mpfr_init(r11550);
        mpfr_init(r11551);
        mpfr_init(r11552);
        mpfr_init(r11553);
        mpfr_init(r11554);
        mpfr_init(r11555);
        mpfr_init(r11556);
        mpfr_init(r11557);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11519, s, MPFR_RNDN);
        mpfr_neg(r11520, r11519, MPFR_RNDN);
        mpfr_exp(r11521, r11520, MPFR_RNDN);
        mpfr_add(r11522, r11518, r11521, MPFR_RNDN);
        mpfr_div(r11523, r11518, r11522, MPFR_RNDN);
        ;
        mpfr_set_si(r11525, mpfr_cmp(r11523, r11524) <= 0, MPFR_RNDN);
        mpfr_set_d(r11526, c_p, MPFR_RNDN);
        mpfr_set_d(r11527, t, MPFR_RNDN);
        mpfr_neg(r11528, r11527, MPFR_RNDN);
        mpfr_exp(r11529, r11528, MPFR_RNDN);
        mpfr_log1p(r11530, r11529, MPFR_RNDN);
        mpfr_log1p(r11531, r11521, MPFR_RNDN);
        mpfr_sub(r11532, r11530, r11531, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r11535, r11533, r11519, r11534, MPFR_RNDN);
        mpfr_mul(r11536, r11534, r11527, MPFR_RNDN);
        mpfr_fma(r11537, r11520, r11535, r11536, MPFR_RNDN);
        mpfr_set_d(r11538, c_n, MPFR_RNDN);
        mpfr_mul(r11539, r11537, r11538, MPFR_RNDN);
        mpfr_fma(r11540, r11526, r11532, r11539, MPFR_RNDN);
        mpfr_exp(r11541, r11540, MPFR_RNDN);
        mpfr_add(r11542, r11521, r11518, MPFR_RNDN);
        mpfr_div(r11543, r11518, r11542, MPFR_RNDN);
        mpfr_pow(r11544, r11543, r11526, MPFR_RNDN);
        mpfr_log(r11545, r11534, MPFR_RNDN);
        mpfr_fma(r11546, r11527, r11534, r11545, MPFR_RNDN);
        mpfr_fma(r11547, r11526, r11546, r11518, MPFR_RNDN);
        mpfr_div(r11548, r11544, r11547, MPFR_RNDN);
        mpfr_sub(r11549, r11518, r11543, MPFR_RNDN);
        mpfr_pow(r11550, r11549, r11538, MPFR_RNDN);
        mpfr_mul(r11551, r11548, r11550, MPFR_RNDN);
        mpfr_add(r11552, r11518, r11529, MPFR_RNDN);
        mpfr_div(r11553, r11518, r11552, MPFR_RNDN);
        mpfr_sub(r11554, r11518, r11553, MPFR_RNDN);
        mpfr_pow(r11555, r11554, r11538, MPFR_RNDN);
        mpfr_div(r11556, r11551, r11555, MPFR_RNDN);
        if (mpfr_get_si(r11525, MPFR_RNDN)) { mpfr_set(r11557, r11541, MPFR_RNDN); } else { mpfr_set(r11557, r11556, MPFR_RNDN); };
        return mpfr_get_d(r11557, MPFR_RNDN);
}

static mpfr_t r11558, r11559, r11560, r11561, r11562, r11563, r11564, r11565, r11566, r11567, r11568, r11569, r11570, r11571, r11572, r11573, r11574, r11575, r11576, r11577, r11578, r11579, r11580, r11581, r11582, r11583, r11584, r11585, r11586, r11587, r11588, r11589, r11590, r11591, r11592, r11593, r11594, r11595, r11596, r11597;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11558, "1", 10, MPFR_RNDN);
        mpfr_init(r11559);
        mpfr_init(r11560);
        mpfr_init(r11561);
        mpfr_init(r11562);
        mpfr_init(r11563);
        mpfr_init_set_str(r11564, "0.8593937376150694", 10, MPFR_RNDN);
        mpfr_init(r11565);
        mpfr_init(r11566);
        mpfr_init(r11567);
        mpfr_init(r11568);
        mpfr_init(r11569);
        mpfr_init(r11570);
        mpfr_init(r11571);
        mpfr_init(r11572);
        mpfr_init_set_str(r11573, "1/8", 10, MPFR_RNDN);
        mpfr_init_set_str(r11574, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11575);
        mpfr_init(r11576);
        mpfr_init(r11577);
        mpfr_init(r11578);
        mpfr_init(r11579);
        mpfr_init(r11580);
        mpfr_init(r11581);
        mpfr_init(r11582);
        mpfr_init(r11583);
        mpfr_init(r11584);
        mpfr_init(r11585);
        mpfr_init(r11586);
        mpfr_init(r11587);
        mpfr_init(r11588);
        mpfr_init(r11589);
        mpfr_init(r11590);
        mpfr_init(r11591);
        mpfr_init(r11592);
        mpfr_init(r11593);
        mpfr_init(r11594);
        mpfr_init(r11595);
        mpfr_init(r11596);
        mpfr_init(r11597);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11559, s, MPFR_RNDN);
        mpfr_neg(r11560, r11559, MPFR_RNDN);
        mpfr_exp(r11561, r11560, MPFR_RNDN);
        mpfr_add(r11562, r11558, r11561, MPFR_RNDN);
        mpfr_div(r11563, r11558, r11562, MPFR_RNDN);
        ;
        mpfr_set_si(r11565, mpfr_cmp(r11563, r11564) <= 0, MPFR_RNDN);
        mpfr_set_d(r11566, c_p, MPFR_RNDN);
        mpfr_set_d(r11567, t, MPFR_RNDN);
        mpfr_neg(r11568, r11567, MPFR_RNDN);
        mpfr_exp(r11569, r11568, MPFR_RNDN);
        mpfr_log1p(r11570, r11569, MPFR_RNDN);
        mpfr_log1p(r11571, r11561, MPFR_RNDN);
        mpfr_sub(r11572, r11570, r11571, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r11575, r11573, r11559, r11574, MPFR_RNDN);
        mpfr_mul(r11576, r11574, r11567, MPFR_RNDN);
        mpfr_fma(r11577, r11560, r11575, r11576, MPFR_RNDN);
        mpfr_set_d(r11578, c_n, MPFR_RNDN);
        mpfr_mul(r11579, r11577, r11578, MPFR_RNDN);
        mpfr_fma(r11580, r11566, r11572, r11579, MPFR_RNDN);
        mpfr_exp(r11581, r11580, MPFR_RNDN);
        mpfr_add(r11582, r11561, r11558, MPFR_RNDN);
        mpfr_div(r11583, r11558, r11582, MPFR_RNDN);
        mpfr_pow(r11584, r11583, r11566, MPFR_RNDN);
        mpfr_log(r11585, r11574, MPFR_RNDN);
        mpfr_fma(r11586, r11567, r11574, r11585, MPFR_RNDN);
        mpfr_fma(r11587, r11566, r11586, r11558, MPFR_RNDN);
        mpfr_div(r11588, r11584, r11587, MPFR_RNDN);
        mpfr_sub(r11589, r11558, r11583, MPFR_RNDN);
        mpfr_pow(r11590, r11589, r11578, MPFR_RNDN);
        mpfr_mul(r11591, r11588, r11590, MPFR_RNDN);
        mpfr_add(r11592, r11558, r11569, MPFR_RNDN);
        mpfr_div(r11593, r11558, r11592, MPFR_RNDN);
        mpfr_sub(r11594, r11558, r11593, MPFR_RNDN);
        mpfr_pow(r11595, r11594, r11578, MPFR_RNDN);
        mpfr_div(r11596, r11591, r11595, MPFR_RNDN);
        if (mpfr_get_si(r11565, MPFR_RNDN)) { mpfr_set(r11597, r11581, MPFR_RNDN); } else { mpfr_set(r11597, r11596, MPFR_RNDN); };
        return mpfr_get_d(r11597, MPFR_RNDN);
}

