#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 r11385 = 1;
        float r11386 = s;
        float r11387 = -r11386;
        float r11388 = exp(r11387);
        float r11389 = r11385 + r11388;
        float r11390 = r11385 / r11389;
        float r11391 = c_p;
        float r11392 = pow(r11390, r11391);
        float r11393 = r11385 - r11390;
        float r11394 = c_n;
        float r11395 = pow(r11393, r11394);
        float r11396 = r11392 * r11395;
        float r11397 = t;
        float r11398 = -r11397;
        float r11399 = exp(r11398);
        float r11400 = r11385 + r11399;
        float r11401 = r11385 / r11400;
        float r11402 = pow(r11401, r11391);
        float r11403 = r11385 - r11401;
        float r11404 = pow(r11403, r11394);
        float r11405 = r11402 * r11404;
        float r11406 = r11396 / r11405;
        return r11406;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11407 = 1;
        double r11408 = s;
        double r11409 = -r11408;
        double r11410 = exp(r11409);
        double r11411 = r11407 + r11410;
        double r11412 = r11407 / r11411;
        double r11413 = c_p;
        double r11414 = pow(r11412, r11413);
        double r11415 = r11407 - r11412;
        double r11416 = c_n;
        double r11417 = pow(r11415, r11416);
        double r11418 = r11414 * r11417;
        double r11419 = t;
        double r11420 = -r11419;
        double r11421 = exp(r11420);
        double r11422 = r11407 + r11421;
        double r11423 = r11407 / r11422;
        double r11424 = pow(r11423, r11413);
        double r11425 = r11407 - r11423;
        double r11426 = pow(r11425, r11416);
        double r11427 = r11424 * r11426;
        double r11428 = r11418 / r11427;
        return r11428;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11429 = 1;
        float r11430 = t;
        float r11431 = -r11430;
        float r11432 = exp(r11431);
        float r11433 = r11429 + r11432;
        float r11434 = r11429 / r11433;
        float r11435 = 3.487853581647123e-06;
        bool r11436 = r11434 <= r11435;
        float r11437 = s;
        float r11438 = -r11437;
        float r11439 = exp(r11438);
        float r11440 = r11439 + r11429;
        float r11441 = r11429 / r11440;
        float r11442 = r11429 - r11441;
        float r11443 = c_n;
        float r11444 = pow(r11442, r11443);
        float r11445 = c_p;
        float r11446 = pow(r11441, r11445);
        float r11447 = 1/2;
        float r11448 = log(r11447);
        float r11449 = r11447 * r11430;
        float r11450 = r11448 + r11449;
        float r11451 = r11450 * r11445;
        float r11452 = r11451 + r11429;
        float r11453 = r11446 / r11452;
        float r11454 = r11444 * r11453;
        float r11455 = r11432 + r11429;
        float r11456 = r11429 / r11455;
        float r11457 = r11429 - r11456;
        float r11458 = pow(r11457, r11443);
        float r11459 = r11454 / r11458;
        float r11460 = log(r11455);
        float r11461 = log(r11440);
        float r11462 = r11460 - r11461;
        float r11463 = r11462 * r11445;
        float r11464 = log(r11442);
        float r11465 = log(r11457);
        float r11466 = r11464 - r11465;
        float r11467 = r11443 * r11466;
        float r11468 = r11463 + r11467;
        float r11469 = exp(r11468);
        float r11470 = r11436 ? r11459 : r11469;
        return r11470;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11471 = 1;
        double r11472 = t;
        double r11473 = -r11472;
        double r11474 = exp(r11473);
        double r11475 = r11471 + r11474;
        double r11476 = r11471 / r11475;
        double r11477 = 3.487853581647123e-06;
        bool r11478 = r11476 <= r11477;
        double r11479 = s;
        double r11480 = -r11479;
        double r11481 = exp(r11480);
        double r11482 = r11481 + r11471;
        double r11483 = r11471 / r11482;
        double r11484 = r11471 - r11483;
        double r11485 = c_n;
        double r11486 = pow(r11484, r11485);
        double r11487 = c_p;
        double r11488 = pow(r11483, r11487);
        double r11489 = 1/2;
        double r11490 = log(r11489);
        double r11491 = r11489 * r11472;
        double r11492 = r11490 + r11491;
        double r11493 = r11492 * r11487;
        double r11494 = r11493 + r11471;
        double r11495 = r11488 / r11494;
        double r11496 = r11486 * r11495;
        double r11497 = r11474 + r11471;
        double r11498 = r11471 / r11497;
        double r11499 = r11471 - r11498;
        double r11500 = pow(r11499, r11485);
        double r11501 = r11496 / r11500;
        double r11502 = log(r11497);
        double r11503 = log(r11482);
        double r11504 = r11502 - r11503;
        double r11505 = r11504 * r11487;
        double r11506 = log(r11484);
        double r11507 = log(r11499);
        double r11508 = r11506 - r11507;
        double r11509 = r11485 * r11508;
        double r11510 = r11505 + r11509;
        double r11511 = exp(r11510);
        double r11512 = r11478 ? r11501 : r11511;
        return r11512;
}

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 r11513, r11514, r11515, r11516, r11517, r11518, r11519, r11520, r11521, r11522, r11523, r11524, r11525, r11526, r11527, r11528, r11529, r11530, r11531, r11532, r11533, r11534;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11513, "1", 10, MPFR_RNDN);
        mpfr_init(r11514);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
        mpfr_init(r11518);
        mpfr_init(r11519);
        mpfr_init(r11520);
        mpfr_init(r11521);
        mpfr_init(r11522);
        mpfr_init(r11523);
        mpfr_init(r11524);
        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(r11533);
        mpfr_init(r11534);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11514, s, MPFR_RNDN);
        mpfr_neg(r11515, r11514, MPFR_RNDN);
        mpfr_exp(r11516, r11515, MPFR_RNDN);
        mpfr_add(r11517, r11513, r11516, MPFR_RNDN);
        mpfr_div(r11518, r11513, r11517, MPFR_RNDN);
        mpfr_set_d(r11519, c_p, MPFR_RNDN);
        mpfr_pow(r11520, r11518, r11519, MPFR_RNDN);
        mpfr_sub(r11521, r11513, r11518, MPFR_RNDN);
        mpfr_set_d(r11522, c_n, MPFR_RNDN);
        mpfr_pow(r11523, r11521, r11522, MPFR_RNDN);
        mpfr_mul(r11524, r11520, r11523, MPFR_RNDN);
        mpfr_set_d(r11525, t, MPFR_RNDN);
        mpfr_neg(r11526, r11525, MPFR_RNDN);
        mpfr_exp(r11527, r11526, MPFR_RNDN);
        mpfr_add(r11528, r11513, r11527, MPFR_RNDN);
        mpfr_div(r11529, r11513, r11528, MPFR_RNDN);
        mpfr_pow(r11530, r11529, r11519, MPFR_RNDN);
        mpfr_sub(r11531, r11513, r11529, MPFR_RNDN);
        mpfr_pow(r11532, r11531, r11522, MPFR_RNDN);
        mpfr_mul(r11533, r11530, r11532, MPFR_RNDN);
        mpfr_div(r11534, r11524, r11533, MPFR_RNDN);
        return mpfr_get_d(r11534, MPFR_RNDN);
}

static mpfr_t r11535, r11536, r11537, r11538, r11539, r11540, r11541, r11542, r11543, r11544, r11545, r11546, r11547, r11548, r11549, r11550, r11551, r11552, r11553, r11554, r11555, r11556, r11557, r11558, r11559, r11560, r11561, r11562, r11563, r11564, r11565, r11566, r11567, r11568, r11569, r11570, r11571, r11572, r11573, r11574, r11575, r11576;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11535, "1", 10, MPFR_RNDN);
        mpfr_init(r11536);
        mpfr_init(r11537);
        mpfr_init(r11538);
        mpfr_init(r11539);
        mpfr_init(r11540);
        mpfr_init_set_str(r11541, "3.487853581647123e-06", 10, MPFR_RNDN);
        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_set_str(r11553, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11554);
        mpfr_init(r11555);
        mpfr_init(r11556);
        mpfr_init(r11557);
        mpfr_init(r11558);
        mpfr_init(r11559);
        mpfr_init(r11560);
        mpfr_init(r11561);
        mpfr_init(r11562);
        mpfr_init(r11563);
        mpfr_init(r11564);
        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(r11573);
        mpfr_init(r11574);
        mpfr_init(r11575);
        mpfr_init(r11576);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11536, t, MPFR_RNDN);
        mpfr_neg(r11537, r11536, MPFR_RNDN);
        mpfr_exp(r11538, r11537, MPFR_RNDN);
        mpfr_add(r11539, r11535, r11538, MPFR_RNDN);
        mpfr_div(r11540, r11535, r11539, MPFR_RNDN);
        ;
        mpfr_set_si(r11542, mpfr_cmp(r11540, r11541) <= 0, MPFR_RNDN);
        mpfr_set_d(r11543, s, MPFR_RNDN);
        mpfr_neg(r11544, r11543, MPFR_RNDN);
        mpfr_exp(r11545, r11544, MPFR_RNDN);
        mpfr_add(r11546, r11545, r11535, MPFR_RNDN);
        mpfr_div(r11547, r11535, r11546, MPFR_RNDN);
        mpfr_sub(r11548, r11535, r11547, MPFR_RNDN);
        mpfr_set_d(r11549, c_n, MPFR_RNDN);
        mpfr_pow(r11550, r11548, r11549, MPFR_RNDN);
        mpfr_set_d(r11551, c_p, MPFR_RNDN);
        mpfr_pow(r11552, r11547, r11551, MPFR_RNDN);
        ;
        mpfr_log(r11554, r11553, MPFR_RNDN);
        mpfr_mul(r11555, r11553, r11536, MPFR_RNDN);
        mpfr_add(r11556, r11554, r11555, MPFR_RNDN);
        mpfr_mul(r11557, r11556, r11551, MPFR_RNDN);
        mpfr_add(r11558, r11557, r11535, MPFR_RNDN);
        mpfr_div(r11559, r11552, r11558, MPFR_RNDN);
        mpfr_mul(r11560, r11550, r11559, MPFR_RNDN);
        mpfr_add(r11561, r11538, r11535, MPFR_RNDN);
        mpfr_div(r11562, r11535, r11561, MPFR_RNDN);
        mpfr_sub(r11563, r11535, r11562, MPFR_RNDN);
        mpfr_pow(r11564, r11563, r11549, MPFR_RNDN);
        mpfr_div(r11565, r11560, r11564, MPFR_RNDN);
        mpfr_log(r11566, r11561, MPFR_RNDN);
        mpfr_log(r11567, r11546, MPFR_RNDN);
        mpfr_sub(r11568, r11566, r11567, MPFR_RNDN);
        mpfr_mul(r11569, r11568, r11551, MPFR_RNDN);
        mpfr_log(r11570, r11548, MPFR_RNDN);
        mpfr_log(r11571, r11563, MPFR_RNDN);
        mpfr_sub(r11572, r11570, r11571, MPFR_RNDN);
        mpfr_mul(r11573, r11549, r11572, MPFR_RNDN);
        mpfr_add(r11574, r11569, r11573, MPFR_RNDN);
        mpfr_exp(r11575, r11574, MPFR_RNDN);
        if (mpfr_get_si(r11542, MPFR_RNDN)) { mpfr_set(r11576, r11565, MPFR_RNDN); } else { mpfr_set(r11576, r11575, MPFR_RNDN); };
        return mpfr_get_d(r11576, MPFR_RNDN);
}

static mpfr_t r11577, r11578, r11579, r11580, r11581, r11582, r11583, r11584, r11585, r11586, r11587, r11588, r11589, r11590, r11591, r11592, r11593, r11594, r11595, r11596, r11597, r11598, r11599, r11600, r11601, r11602, r11603, r11604, r11605, r11606, r11607, r11608, r11609, r11610, r11611, r11612, r11613, r11614, r11615, r11616, r11617, r11618;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11577, "1", 10, MPFR_RNDN);
        mpfr_init(r11578);
        mpfr_init(r11579);
        mpfr_init(r11580);
        mpfr_init(r11581);
        mpfr_init(r11582);
        mpfr_init_set_str(r11583, "3.487853581647123e-06", 10, MPFR_RNDN);
        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_set_str(r11595, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11596);
        mpfr_init(r11597);
        mpfr_init(r11598);
        mpfr_init(r11599);
        mpfr_init(r11600);
        mpfr_init(r11601);
        mpfr_init(r11602);
        mpfr_init(r11603);
        mpfr_init(r11604);
        mpfr_init(r11605);
        mpfr_init(r11606);
        mpfr_init(r11607);
        mpfr_init(r11608);
        mpfr_init(r11609);
        mpfr_init(r11610);
        mpfr_init(r11611);
        mpfr_init(r11612);
        mpfr_init(r11613);
        mpfr_init(r11614);
        mpfr_init(r11615);
        mpfr_init(r11616);
        mpfr_init(r11617);
        mpfr_init(r11618);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11578, t, MPFR_RNDN);
        mpfr_neg(r11579, r11578, MPFR_RNDN);
        mpfr_exp(r11580, r11579, MPFR_RNDN);
        mpfr_add(r11581, r11577, r11580, MPFR_RNDN);
        mpfr_div(r11582, r11577, r11581, MPFR_RNDN);
        ;
        mpfr_set_si(r11584, mpfr_cmp(r11582, r11583) <= 0, MPFR_RNDN);
        mpfr_set_d(r11585, s, MPFR_RNDN);
        mpfr_neg(r11586, r11585, MPFR_RNDN);
        mpfr_exp(r11587, r11586, MPFR_RNDN);
        mpfr_add(r11588, r11587, r11577, MPFR_RNDN);
        mpfr_div(r11589, r11577, r11588, MPFR_RNDN);
        mpfr_sub(r11590, r11577, r11589, MPFR_RNDN);
        mpfr_set_d(r11591, c_n, MPFR_RNDN);
        mpfr_pow(r11592, r11590, r11591, MPFR_RNDN);
        mpfr_set_d(r11593, c_p, MPFR_RNDN);
        mpfr_pow(r11594, r11589, r11593, MPFR_RNDN);
        ;
        mpfr_log(r11596, r11595, MPFR_RNDN);
        mpfr_mul(r11597, r11595, r11578, MPFR_RNDN);
        mpfr_add(r11598, r11596, r11597, MPFR_RNDN);
        mpfr_mul(r11599, r11598, r11593, MPFR_RNDN);
        mpfr_add(r11600, r11599, r11577, MPFR_RNDN);
        mpfr_div(r11601, r11594, r11600, MPFR_RNDN);
        mpfr_mul(r11602, r11592, r11601, MPFR_RNDN);
        mpfr_add(r11603, r11580, r11577, MPFR_RNDN);
        mpfr_div(r11604, r11577, r11603, MPFR_RNDN);
        mpfr_sub(r11605, r11577, r11604, MPFR_RNDN);
        mpfr_pow(r11606, r11605, r11591, MPFR_RNDN);
        mpfr_div(r11607, r11602, r11606, MPFR_RNDN);
        mpfr_log(r11608, r11603, MPFR_RNDN);
        mpfr_log(r11609, r11588, MPFR_RNDN);
        mpfr_sub(r11610, r11608, r11609, MPFR_RNDN);
        mpfr_mul(r11611, r11610, r11593, MPFR_RNDN);
        mpfr_log(r11612, r11590, MPFR_RNDN);
        mpfr_log(r11613, r11605, MPFR_RNDN);
        mpfr_sub(r11614, r11612, r11613, MPFR_RNDN);
        mpfr_mul(r11615, r11591, r11614, MPFR_RNDN);
        mpfr_add(r11616, r11611, r11615, MPFR_RNDN);
        mpfr_exp(r11617, r11616, MPFR_RNDN);
        if (mpfr_get_si(r11584, MPFR_RNDN)) { mpfr_set(r11618, r11607, MPFR_RNDN); } else { mpfr_set(r11618, r11617, MPFR_RNDN); };
        return mpfr_get_d(r11618, MPFR_RNDN);
}

