#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 r27383 = 1;
        float r27384 = s;
        float r27385 = -r27384;
        float r27386 = exp(r27385);
        float r27387 = r27383 + r27386;
        float r27388 = r27383 / r27387;
        float r27389 = c_p;
        float r27390 = pow(r27388, r27389);
        float r27391 = r27383 - r27388;
        float r27392 = c_n;
        float r27393 = pow(r27391, r27392);
        float r27394 = r27390 * r27393;
        float r27395 = t;
        float r27396 = -r27395;
        float r27397 = exp(r27396);
        float r27398 = r27383 + r27397;
        float r27399 = r27383 / r27398;
        float r27400 = pow(r27399, r27389);
        float r27401 = r27383 - r27399;
        float r27402 = pow(r27401, r27392);
        float r27403 = r27400 * r27402;
        float r27404 = r27394 / r27403;
        return r27404;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27405 = 1;
        double r27406 = s;
        double r27407 = -r27406;
        double r27408 = exp(r27407);
        double r27409 = r27405 + r27408;
        double r27410 = r27405 / r27409;
        double r27411 = c_p;
        double r27412 = pow(r27410, r27411);
        double r27413 = r27405 - r27410;
        double r27414 = c_n;
        double r27415 = pow(r27413, r27414);
        double r27416 = r27412 * r27415;
        double r27417 = t;
        double r27418 = -r27417;
        double r27419 = exp(r27418);
        double r27420 = r27405 + r27419;
        double r27421 = r27405 / r27420;
        double r27422 = pow(r27421, r27411);
        double r27423 = r27405 - r27421;
        double r27424 = pow(r27423, r27414);
        double r27425 = r27422 * r27424;
        double r27426 = r27416 / r27425;
        return r27426;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27427 = c_n;
        float r27428 = 1;
        float r27429 = -r27428;
        float r27430 = s;
        float r27431 = -r27430;
        float r27432 = exp(r27431);
        float r27433 = r27432 + r27428;
        float r27434 = r27429 / r27433;
        float r27435 = log1p(r27434);
        float r27436 = t;
        float r27437 = -r27436;
        float r27438 = exp(r27437);
        float r27439 = r27438 + r27428;
        float r27440 = r27429 / r27439;
        float r27441 = log1p(r27440);
        float r27442 = r27435 - r27441;
        float r27443 = c_p;
        float r27444 = 1/8;
        float r27445 = r27444 * r27436;
        float r27446 = r27443 * r27445;
        float r27447 = 1/2;
        float r27448 = r27447 * r27443;
        float r27449 = r27430 - r27436;
        float r27450 = r27448 * r27449;
        float r27451 = fma(r27436, r27446, r27450);
        float r27452 = fma(r27427, r27442, r27451);
        float r27453 = exp(r27452);
        float r27454 = 5.393142110440259e-07;
        bool r27455 = r27453 <= r27454;
        float r27456 = log1p(r27438);
        float r27457 = log1p(r27432);
        float r27458 = r27456 - r27457;
        float r27459 = fma(r27444, r27430, r27447);
        float r27460 = r27436 * r27447;
        float r27461 = fma(r27431, r27459, r27460);
        float r27462 = r27427 * r27461;
        float r27463 = fma(r27443, r27458, r27462);
        float r27464 = exp(r27463);
        float r27465 = r27455 ? r27453 : r27464;
        return r27465;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27466 = c_n;
        double r27467 = 1;
        double r27468 = -r27467;
        double r27469 = s;
        double r27470 = -r27469;
        double r27471 = exp(r27470);
        double r27472 = r27471 + r27467;
        double r27473 = r27468 / r27472;
        double r27474 = log1p(r27473);
        double r27475 = t;
        double r27476 = -r27475;
        double r27477 = exp(r27476);
        double r27478 = r27477 + r27467;
        double r27479 = r27468 / r27478;
        double r27480 = log1p(r27479);
        double r27481 = r27474 - r27480;
        double r27482 = c_p;
        double r27483 = 1/8;
        double r27484 = r27483 * r27475;
        double r27485 = r27482 * r27484;
        double r27486 = 1/2;
        double r27487 = r27486 * r27482;
        double r27488 = r27469 - r27475;
        double r27489 = r27487 * r27488;
        double r27490 = fma(r27475, r27485, r27489);
        double r27491 = fma(r27466, r27481, r27490);
        double r27492 = exp(r27491);
        double r27493 = 5.393142110440259e-07;
        bool r27494 = r27492 <= r27493;
        double r27495 = log1p(r27477);
        double r27496 = log1p(r27471);
        double r27497 = r27495 - r27496;
        double r27498 = fma(r27483, r27469, r27486);
        double r27499 = r27475 * r27486;
        double r27500 = fma(r27470, r27498, r27499);
        double r27501 = r27466 * r27500;
        double r27502 = fma(r27482, r27497, r27501);
        double r27503 = exp(r27502);
        double r27504 = r27494 ? r27492 : r27503;
        return r27504;
}

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 r27505, r27506, r27507, r27508, r27509, r27510, r27511, r27512, r27513, r27514, r27515, r27516, r27517, r27518, r27519, r27520, r27521, r27522, r27523, r27524, r27525, r27526;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3152);
        mpfr_init_set_str(r27505, "1", 10, MPFR_RNDN);
        mpfr_init(r27506);
        mpfr_init(r27507);
        mpfr_init(r27508);
        mpfr_init(r27509);
        mpfr_init(r27510);
        mpfr_init(r27511);
        mpfr_init(r27512);
        mpfr_init(r27513);
        mpfr_init(r27514);
        mpfr_init(r27515);
        mpfr_init(r27516);
        mpfr_init(r27517);
        mpfr_init(r27518);
        mpfr_init(r27519);
        mpfr_init(r27520);
        mpfr_init(r27521);
        mpfr_init(r27522);
        mpfr_init(r27523);
        mpfr_init(r27524);
        mpfr_init(r27525);
        mpfr_init(r27526);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27506, s, MPFR_RNDN);
        mpfr_neg(r27507, r27506, MPFR_RNDN);
        mpfr_exp(r27508, r27507, MPFR_RNDN);
        mpfr_add(r27509, r27505, r27508, MPFR_RNDN);
        mpfr_div(r27510, r27505, r27509, MPFR_RNDN);
        mpfr_set_d(r27511, c_p, MPFR_RNDN);
        mpfr_pow(r27512, r27510, r27511, MPFR_RNDN);
        mpfr_sub(r27513, r27505, r27510, MPFR_RNDN);
        mpfr_set_d(r27514, c_n, MPFR_RNDN);
        mpfr_pow(r27515, r27513, r27514, MPFR_RNDN);
        mpfr_mul(r27516, r27512, r27515, MPFR_RNDN);
        mpfr_set_d(r27517, t, MPFR_RNDN);
        mpfr_neg(r27518, r27517, MPFR_RNDN);
        mpfr_exp(r27519, r27518, MPFR_RNDN);
        mpfr_add(r27520, r27505, r27519, MPFR_RNDN);
        mpfr_div(r27521, r27505, r27520, MPFR_RNDN);
        mpfr_pow(r27522, r27521, r27511, MPFR_RNDN);
        mpfr_sub(r27523, r27505, r27521, MPFR_RNDN);
        mpfr_pow(r27524, r27523, r27514, MPFR_RNDN);
        mpfr_mul(r27525, r27522, r27524, MPFR_RNDN);
        mpfr_div(r27526, r27516, r27525, MPFR_RNDN);
        return mpfr_get_d(r27526, MPFR_RNDN);
}

static mpfr_t r27527, r27528, r27529, r27530, r27531, r27532, r27533, r27534, r27535, r27536, r27537, r27538, r27539, r27540, r27541, r27542, r27543, r27544, r27545, r27546, r27547, r27548, r27549, r27550, r27551, r27552, r27553, r27554, r27555, r27556, r27557, r27558, r27559, r27560, r27561, r27562, r27563, r27564, r27565;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r27527);
        mpfr_init_set_str(r27528, "1", 10, MPFR_RNDN);
        mpfr_init(r27529);
        mpfr_init(r27530);
        mpfr_init(r27531);
        mpfr_init(r27532);
        mpfr_init(r27533);
        mpfr_init(r27534);
        mpfr_init(r27535);
        mpfr_init(r27536);
        mpfr_init(r27537);
        mpfr_init(r27538);
        mpfr_init(r27539);
        mpfr_init(r27540);
        mpfr_init(r27541);
        mpfr_init(r27542);
        mpfr_init(r27543);
        mpfr_init_set_str(r27544, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27545);
        mpfr_init(r27546);
        mpfr_init_set_str(r27547, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27548);
        mpfr_init(r27549);
        mpfr_init(r27550);
        mpfr_init(r27551);
        mpfr_init(r27552);
        mpfr_init(r27553);
        mpfr_init_set_str(r27554, "5.393142110440259e-07", 10, MPFR_RNDN);
        mpfr_init(r27555);
        mpfr_init(r27556);
        mpfr_init(r27557);
        mpfr_init(r27558);
        mpfr_init(r27559);
        mpfr_init(r27560);
        mpfr_init(r27561);
        mpfr_init(r27562);
        mpfr_init(r27563);
        mpfr_init(r27564);
        mpfr_init(r27565);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r27527, c_n, MPFR_RNDN);
        ;
        mpfr_neg(r27529, r27528, MPFR_RNDN);
        mpfr_set_d(r27530, s, MPFR_RNDN);
        mpfr_neg(r27531, r27530, MPFR_RNDN);
        mpfr_exp(r27532, r27531, MPFR_RNDN);
        mpfr_add(r27533, r27532, r27528, MPFR_RNDN);
        mpfr_div(r27534, r27529, r27533, MPFR_RNDN);
        mpfr_log1p(r27535, r27534, MPFR_RNDN);
        mpfr_set_d(r27536, t, MPFR_RNDN);
        mpfr_neg(r27537, r27536, MPFR_RNDN);
        mpfr_exp(r27538, r27537, MPFR_RNDN);
        mpfr_add(r27539, r27538, r27528, MPFR_RNDN);
        mpfr_div(r27540, r27529, r27539, MPFR_RNDN);
        mpfr_log1p(r27541, r27540, MPFR_RNDN);
        mpfr_sub(r27542, r27535, r27541, MPFR_RNDN);
        mpfr_set_d(r27543, c_p, MPFR_RNDN);
        ;
        mpfr_mul(r27545, r27544, r27536, MPFR_RNDN);
        mpfr_mul(r27546, r27543, r27545, MPFR_RNDN);
        ;
        mpfr_mul(r27548, r27547, r27543, MPFR_RNDN);
        mpfr_sub(r27549, r27530, r27536, MPFR_RNDN);
        mpfr_mul(r27550, r27548, r27549, MPFR_RNDN);
        mpfr_fma(r27551, r27536, r27546, r27550, MPFR_RNDN);
        mpfr_fma(r27552, r27527, r27542, r27551, MPFR_RNDN);
        mpfr_exp(r27553, r27552, MPFR_RNDN);
        ;
        mpfr_set_si(r27555, mpfr_cmp(r27553, r27554) <= 0, MPFR_RNDN);
        mpfr_log1p(r27556, r27538, MPFR_RNDN);
        mpfr_log1p(r27557, r27532, MPFR_RNDN);
        mpfr_sub(r27558, r27556, r27557, MPFR_RNDN);
        mpfr_fma(r27559, r27544, r27530, r27547, MPFR_RNDN);
        mpfr_mul(r27560, r27536, r27547, MPFR_RNDN);
        mpfr_fma(r27561, r27531, r27559, r27560, MPFR_RNDN);
        mpfr_mul(r27562, r27527, r27561, MPFR_RNDN);
        mpfr_fma(r27563, r27543, r27558, r27562, MPFR_RNDN);
        mpfr_exp(r27564, r27563, MPFR_RNDN);
        if (mpfr_get_si(r27555, MPFR_RNDN)) { mpfr_set(r27565, r27553, MPFR_RNDN); } else { mpfr_set(r27565, r27564, MPFR_RNDN); };
        return mpfr_get_d(r27565, MPFR_RNDN);
}

static mpfr_t r27566, r27567, r27568, r27569, r27570, r27571, r27572, r27573, r27574, r27575, r27576, r27577, r27578, r27579, r27580, r27581, r27582, r27583, r27584, r27585, r27586, r27587, r27588, r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596, r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r27566);
        mpfr_init_set_str(r27567, "1", 10, MPFR_RNDN);
        mpfr_init(r27568);
        mpfr_init(r27569);
        mpfr_init(r27570);
        mpfr_init(r27571);
        mpfr_init(r27572);
        mpfr_init(r27573);
        mpfr_init(r27574);
        mpfr_init(r27575);
        mpfr_init(r27576);
        mpfr_init(r27577);
        mpfr_init(r27578);
        mpfr_init(r27579);
        mpfr_init(r27580);
        mpfr_init(r27581);
        mpfr_init(r27582);
        mpfr_init_set_str(r27583, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27584);
        mpfr_init(r27585);
        mpfr_init_set_str(r27586, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27587);
        mpfr_init(r27588);
        mpfr_init(r27589);
        mpfr_init(r27590);
        mpfr_init(r27591);
        mpfr_init(r27592);
        mpfr_init_set_str(r27593, "5.393142110440259e-07", 10, MPFR_RNDN);
        mpfr_init(r27594);
        mpfr_init(r27595);
        mpfr_init(r27596);
        mpfr_init(r27597);
        mpfr_init(r27598);
        mpfr_init(r27599);
        mpfr_init(r27600);
        mpfr_init(r27601);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r27566, c_n, MPFR_RNDN);
        ;
        mpfr_neg(r27568, r27567, MPFR_RNDN);
        mpfr_set_d(r27569, s, MPFR_RNDN);
        mpfr_neg(r27570, r27569, MPFR_RNDN);
        mpfr_exp(r27571, r27570, MPFR_RNDN);
        mpfr_add(r27572, r27571, r27567, MPFR_RNDN);
        mpfr_div(r27573, r27568, r27572, MPFR_RNDN);
        mpfr_log1p(r27574, r27573, MPFR_RNDN);
        mpfr_set_d(r27575, t, MPFR_RNDN);
        mpfr_neg(r27576, r27575, MPFR_RNDN);
        mpfr_exp(r27577, r27576, MPFR_RNDN);
        mpfr_add(r27578, r27577, r27567, MPFR_RNDN);
        mpfr_div(r27579, r27568, r27578, MPFR_RNDN);
        mpfr_log1p(r27580, r27579, MPFR_RNDN);
        mpfr_sub(r27581, r27574, r27580, MPFR_RNDN);
        mpfr_set_d(r27582, c_p, MPFR_RNDN);
        ;
        mpfr_mul(r27584, r27583, r27575, MPFR_RNDN);
        mpfr_mul(r27585, r27582, r27584, MPFR_RNDN);
        ;
        mpfr_mul(r27587, r27586, r27582, MPFR_RNDN);
        mpfr_sub(r27588, r27569, r27575, MPFR_RNDN);
        mpfr_mul(r27589, r27587, r27588, MPFR_RNDN);
        mpfr_fma(r27590, r27575, r27585, r27589, MPFR_RNDN);
        mpfr_fma(r27591, r27566, r27581, r27590, MPFR_RNDN);
        mpfr_exp(r27592, r27591, MPFR_RNDN);
        ;
        mpfr_set_si(r27594, mpfr_cmp(r27592, r27593) <= 0, MPFR_RNDN);
        mpfr_log1p(r27595, r27577, MPFR_RNDN);
        mpfr_log1p(r27596, r27571, MPFR_RNDN);
        mpfr_sub(r27597, r27595, r27596, MPFR_RNDN);
        mpfr_fma(r27598, r27583, r27569, r27586, MPFR_RNDN);
        mpfr_mul(r27599, r27575, r27586, MPFR_RNDN);
        mpfr_fma(r27600, r27570, r27598, r27599, MPFR_RNDN);
        mpfr_mul(r27601, r27566, r27600, MPFR_RNDN);
        mpfr_fma(r27602, r27582, r27597, r27601, MPFR_RNDN);
        mpfr_exp(r27603, r27602, MPFR_RNDN);
        if (mpfr_get_si(r27594, MPFR_RNDN)) { mpfr_set(r27604, r27592, MPFR_RNDN); } else { mpfr_set(r27604, r27603, MPFR_RNDN); };
        return mpfr_get_d(r27604, MPFR_RNDN);
}

