#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 r27266 = 1;
        float r27267 = s;
        float r27268 = -r27267;
        float r27269 = exp(r27268);
        float r27270 = r27266 + r27269;
        float r27271 = r27266 / r27270;
        float r27272 = c_p;
        float r27273 = pow(r27271, r27272);
        float r27274 = r27266 - r27271;
        float r27275 = c_n;
        float r27276 = pow(r27274, r27275);
        float r27277 = r27273 * r27276;
        float r27278 = t;
        float r27279 = -r27278;
        float r27280 = exp(r27279);
        float r27281 = r27266 + r27280;
        float r27282 = r27266 / r27281;
        float r27283 = pow(r27282, r27272);
        float r27284 = r27266 - r27282;
        float r27285 = pow(r27284, r27275);
        float r27286 = r27283 * r27285;
        float r27287 = r27277 / r27286;
        return r27287;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27288 = 1;
        double r27289 = s;
        double r27290 = -r27289;
        double r27291 = exp(r27290);
        double r27292 = r27288 + r27291;
        double r27293 = r27288 / r27292;
        double r27294 = c_p;
        double r27295 = pow(r27293, r27294);
        double r27296 = r27288 - r27293;
        double r27297 = c_n;
        double r27298 = pow(r27296, r27297);
        double r27299 = r27295 * r27298;
        double r27300 = t;
        double r27301 = -r27300;
        double r27302 = exp(r27301);
        double r27303 = r27288 + r27302;
        double r27304 = r27288 / r27303;
        double r27305 = pow(r27304, r27294);
        double r27306 = r27288 - r27304;
        double r27307 = pow(r27306, r27297);
        double r27308 = r27305 * r27307;
        double r27309 = r27299 / r27308;
        return r27309;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27310 = s;
        float r27311 = -r27310;
        float r27312 = 752520684.5981619;
        bool r27313 = r27311 <= r27312;
        float r27314 = 1;
        float r27315 = exp(r27311);
        float r27316 = r27314 + r27315;
        float r27317 = r27314 / r27316;
        float r27318 = r27314 - r27317;
        float r27319 = t;
        float r27320 = -r27319;
        float r27321 = exp(r27320);
        float r27322 = r27321 + r27314;
        float r27323 = r27314 / r27322;
        float r27324 = r27314 - r27323;
        float r27325 = r27318 / r27324;
        float r27326 = cbrt(r27325);
        float r27327 = r27326 * r27326;
        float r27328 = c_n;
        float r27329 = pow(r27327, r27328);
        float r27330 = c_p;
        float r27331 = 1/8;
        float r27332 = r27330 * r27331;
        float r27333 = r27310 * r27310;
        float r27334 = r27332 * r27333;
        float r27335 = 1/2;
        float r27336 = r27330 * r27335;
        float r27337 = r27319 - r27310;
        float r27338 = r27336 * r27337;
        float r27339 = r27334 + r27338;
        float r27340 = exp(r27339);
        float r27341 = cbrt(r27340);
        float r27342 = r27341 * r27341;
        float r27343 = r27329 / r27342;
        float r27344 = pow(r27326, r27328);
        float r27345 = r27344 / r27341;
        float r27346 = r27343 * r27345;
        float r27347 = pow(r27318, r27328);
        float r27348 = r27314 + r27321;
        float r27349 = r27314 / r27348;
        float r27350 = r27314 - r27349;
        float r27351 = pow(r27350, r27328);
        float r27352 = r27347 / r27351;
        float r27353 = pow(r27317, r27330);
        float r27354 = log(r27335);
        float r27355 = r27319 * r27335;
        float r27356 = r27354 + r27355;
        float r27357 = r27330 * r27356;
        float r27358 = r27357 + r27314;
        float r27359 = r27353 / r27358;
        float r27360 = r27352 * r27359;
        float r27361 = r27313 ? r27346 : r27360;
        return r27361;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27362 = s;
        double r27363 = -r27362;
        double r27364 = 752520684.5981619;
        bool r27365 = r27363 <= r27364;
        double r27366 = 1;
        double r27367 = exp(r27363);
        double r27368 = r27366 + r27367;
        double r27369 = r27366 / r27368;
        double r27370 = r27366 - r27369;
        double r27371 = t;
        double r27372 = -r27371;
        double r27373 = exp(r27372);
        double r27374 = r27373 + r27366;
        double r27375 = r27366 / r27374;
        double r27376 = r27366 - r27375;
        double r27377 = r27370 / r27376;
        double r27378 = cbrt(r27377);
        double r27379 = r27378 * r27378;
        double r27380 = c_n;
        double r27381 = pow(r27379, r27380);
        double r27382 = c_p;
        double r27383 = 1/8;
        double r27384 = r27382 * r27383;
        double r27385 = r27362 * r27362;
        double r27386 = r27384 * r27385;
        double r27387 = 1/2;
        double r27388 = r27382 * r27387;
        double r27389 = r27371 - r27362;
        double r27390 = r27388 * r27389;
        double r27391 = r27386 + r27390;
        double r27392 = exp(r27391);
        double r27393 = cbrt(r27392);
        double r27394 = r27393 * r27393;
        double r27395 = r27381 / r27394;
        double r27396 = pow(r27378, r27380);
        double r27397 = r27396 / r27393;
        double r27398 = r27395 * r27397;
        double r27399 = pow(r27370, r27380);
        double r27400 = r27366 + r27373;
        double r27401 = r27366 / r27400;
        double r27402 = r27366 - r27401;
        double r27403 = pow(r27402, r27380);
        double r27404 = r27399 / r27403;
        double r27405 = pow(r27369, r27382);
        double r27406 = log(r27387);
        double r27407 = r27371 * r27387;
        double r27408 = r27406 + r27407;
        double r27409 = r27382 * r27408;
        double r27410 = r27409 + r27366;
        double r27411 = r27405 / r27410;
        double r27412 = r27404 * r27411;
        double r27413 = r27365 ? r27398 : r27412;
        return r27413;
}

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 r27414, r27415, r27416, r27417, r27418, r27419, r27420, r27421, r27422, r27423, r27424, r27425, r27426, r27427, r27428, r27429, r27430, r27431, r27432, r27433, r27434, r27435;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27414, "1", 10, MPFR_RNDN);
        mpfr_init(r27415);
        mpfr_init(r27416);
        mpfr_init(r27417);
        mpfr_init(r27418);
        mpfr_init(r27419);
        mpfr_init(r27420);
        mpfr_init(r27421);
        mpfr_init(r27422);
        mpfr_init(r27423);
        mpfr_init(r27424);
        mpfr_init(r27425);
        mpfr_init(r27426);
        mpfr_init(r27427);
        mpfr_init(r27428);
        mpfr_init(r27429);
        mpfr_init(r27430);
        mpfr_init(r27431);
        mpfr_init(r27432);
        mpfr_init(r27433);
        mpfr_init(r27434);
        mpfr_init(r27435);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27415, s, MPFR_RNDN);
        mpfr_neg(r27416, r27415, MPFR_RNDN);
        mpfr_exp(r27417, r27416, MPFR_RNDN);
        mpfr_add(r27418, r27414, r27417, MPFR_RNDN);
        mpfr_div(r27419, r27414, r27418, MPFR_RNDN);
        mpfr_set_d(r27420, c_p, MPFR_RNDN);
        mpfr_pow(r27421, r27419, r27420, MPFR_RNDN);
        mpfr_sub(r27422, r27414, r27419, MPFR_RNDN);
        mpfr_set_d(r27423, c_n, MPFR_RNDN);
        mpfr_pow(r27424, r27422, r27423, MPFR_RNDN);
        mpfr_mul(r27425, r27421, r27424, MPFR_RNDN);
        mpfr_set_d(r27426, t, MPFR_RNDN);
        mpfr_neg(r27427, r27426, MPFR_RNDN);
        mpfr_exp(r27428, r27427, MPFR_RNDN);
        mpfr_add(r27429, r27414, r27428, MPFR_RNDN);
        mpfr_div(r27430, r27414, r27429, MPFR_RNDN);
        mpfr_pow(r27431, r27430, r27420, MPFR_RNDN);
        mpfr_sub(r27432, r27414, r27430, MPFR_RNDN);
        mpfr_pow(r27433, r27432, r27423, MPFR_RNDN);
        mpfr_mul(r27434, r27431, r27433, MPFR_RNDN);
        mpfr_div(r27435, r27425, r27434, MPFR_RNDN);
        return mpfr_get_d(r27435, MPFR_RNDN);
}

static mpfr_t r27436, r27437, r27438, r27439, r27440, r27441, r27442, r27443, r27444, r27445, r27446, r27447, r27448, r27449, r27450, r27451, r27452, r27453, r27454, r27455, r27456, r27457, r27458, r27459, r27460, r27461, r27462, r27463, r27464, r27465, r27466, r27467, r27468, r27469, r27470, r27471, r27472, r27473, r27474, r27475, r27476, r27477, r27478, r27479, r27480, r27481, r27482, r27483, r27484, r27485, r27486, r27487;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2128);
        mpfr_init(r27436);
        mpfr_init(r27437);
        mpfr_init_set_str(r27438, "752520684.5981619", 10, MPFR_RNDN);
        mpfr_init(r27439);
        mpfr_init_set_str(r27440, "1", 10, MPFR_RNDN);
        mpfr_init(r27441);
        mpfr_init(r27442);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
        mpfr_init(r27446);
        mpfr_init(r27447);
        mpfr_init(r27448);
        mpfr_init(r27449);
        mpfr_init(r27450);
        mpfr_init(r27451);
        mpfr_init(r27452);
        mpfr_init(r27453);
        mpfr_init(r27454);
        mpfr_init(r27455);
        mpfr_init(r27456);
        mpfr_init_set_str(r27457, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27458);
        mpfr_init(r27459);
        mpfr_init(r27460);
        mpfr_init_set_str(r27461, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27462);
        mpfr_init(r27463);
        mpfr_init(r27464);
        mpfr_init(r27465);
        mpfr_init(r27466);
        mpfr_init(r27467);
        mpfr_init(r27468);
        mpfr_init(r27469);
        mpfr_init(r27470);
        mpfr_init(r27471);
        mpfr_init(r27472);
        mpfr_init(r27473);
        mpfr_init(r27474);
        mpfr_init(r27475);
        mpfr_init(r27476);
        mpfr_init(r27477);
        mpfr_init(r27478);
        mpfr_init(r27479);
        mpfr_init(r27480);
        mpfr_init(r27481);
        mpfr_init(r27482);
        mpfr_init(r27483);
        mpfr_init(r27484);
        mpfr_init(r27485);
        mpfr_init(r27486);
        mpfr_init(r27487);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r27436, s, MPFR_RNDN);
        mpfr_neg(r27437, r27436, MPFR_RNDN);
        ;
        mpfr_set_si(r27439, mpfr_cmp(r27437, r27438) <= 0, MPFR_RNDN);
        ;
        mpfr_exp(r27441, r27437, MPFR_RNDN);
        mpfr_add(r27442, r27440, r27441, MPFR_RNDN);
        mpfr_div(r27443, r27440, r27442, MPFR_RNDN);
        mpfr_sub(r27444, r27440, r27443, MPFR_RNDN);
        mpfr_set_d(r27445, t, MPFR_RNDN);
        mpfr_neg(r27446, r27445, MPFR_RNDN);
        mpfr_exp(r27447, r27446, MPFR_RNDN);
        mpfr_add(r27448, r27447, r27440, MPFR_RNDN);
        mpfr_div(r27449, r27440, r27448, MPFR_RNDN);
        mpfr_sub(r27450, r27440, r27449, MPFR_RNDN);
        mpfr_div(r27451, r27444, r27450, MPFR_RNDN);
        mpfr_cbrt(r27452, r27451, MPFR_RNDN);
        mpfr_mul(r27453, r27452, r27452, MPFR_RNDN);
        mpfr_set_d(r27454, c_n, MPFR_RNDN);
        mpfr_pow(r27455, r27453, r27454, MPFR_RNDN);
        mpfr_set_d(r27456, c_p, MPFR_RNDN);
        ;
        mpfr_mul(r27458, r27456, r27457, MPFR_RNDN);
        mpfr_mul(r27459, r27436, r27436, MPFR_RNDN);
        mpfr_mul(r27460, r27458, r27459, MPFR_RNDN);
        ;
        mpfr_mul(r27462, r27456, r27461, MPFR_RNDN);
        mpfr_sub(r27463, r27445, r27436, MPFR_RNDN);
        mpfr_mul(r27464, r27462, r27463, MPFR_RNDN);
        mpfr_add(r27465, r27460, r27464, MPFR_RNDN);
        mpfr_exp(r27466, r27465, MPFR_RNDN);
        mpfr_cbrt(r27467, r27466, MPFR_RNDN);
        mpfr_mul(r27468, r27467, r27467, MPFR_RNDN);
        mpfr_div(r27469, r27455, r27468, MPFR_RNDN);
        mpfr_pow(r27470, r27452, r27454, MPFR_RNDN);
        mpfr_div(r27471, r27470, r27467, MPFR_RNDN);
        mpfr_mul(r27472, r27469, r27471, MPFR_RNDN);
        mpfr_pow(r27473, r27444, r27454, MPFR_RNDN);
        mpfr_add(r27474, r27440, r27447, MPFR_RNDN);
        mpfr_div(r27475, r27440, r27474, MPFR_RNDN);
        mpfr_sub(r27476, r27440, r27475, MPFR_RNDN);
        mpfr_pow(r27477, r27476, r27454, MPFR_RNDN);
        mpfr_div(r27478, r27473, r27477, MPFR_RNDN);
        mpfr_pow(r27479, r27443, r27456, MPFR_RNDN);
        mpfr_log(r27480, r27461, MPFR_RNDN);
        mpfr_mul(r27481, r27445, r27461, MPFR_RNDN);
        mpfr_add(r27482, r27480, r27481, MPFR_RNDN);
        mpfr_mul(r27483, r27456, r27482, MPFR_RNDN);
        mpfr_add(r27484, r27483, r27440, MPFR_RNDN);
        mpfr_div(r27485, r27479, r27484, MPFR_RNDN);
        mpfr_mul(r27486, r27478, r27485, MPFR_RNDN);
        if (mpfr_get_si(r27439, MPFR_RNDN)) { mpfr_set(r27487, r27472, MPFR_RNDN); } else { mpfr_set(r27487, r27486, MPFR_RNDN); };
        return mpfr_get_d(r27487, MPFR_RNDN);
}

static mpfr_t r27488, r27489, r27490, r27491, r27492, r27493, r27494, r27495, r27496, r27497, r27498, r27499, r27500, r27501, r27502, r27503, r27504, r27505, r27506, r27507, r27508, r27509, r27510, r27511, r27512, r27513, r27514, r27515, r27516, r27517, r27518, r27519, r27520, r27521, r27522, r27523, r27524, r27525, r27526, r27527, r27528, r27529, r27530, r27531, r27532, r27533, r27534, r27535, r27536, r27537, r27538, r27539;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2128);
        mpfr_init(r27488);
        mpfr_init(r27489);
        mpfr_init_set_str(r27490, "752520684.5981619", 10, MPFR_RNDN);
        mpfr_init(r27491);
        mpfr_init_set_str(r27492, "1", 10, MPFR_RNDN);
        mpfr_init(r27493);
        mpfr_init(r27494);
        mpfr_init(r27495);
        mpfr_init(r27496);
        mpfr_init(r27497);
        mpfr_init(r27498);
        mpfr_init(r27499);
        mpfr_init(r27500);
        mpfr_init(r27501);
        mpfr_init(r27502);
        mpfr_init(r27503);
        mpfr_init(r27504);
        mpfr_init(r27505);
        mpfr_init(r27506);
        mpfr_init(r27507);
        mpfr_init(r27508);
        mpfr_init_set_str(r27509, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27510);
        mpfr_init(r27511);
        mpfr_init(r27512);
        mpfr_init_set_str(r27513, "1/2", 10, MPFR_RNDN);
        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);
        mpfr_init(r27527);
        mpfr_init(r27528);
        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);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r27488, s, MPFR_RNDN);
        mpfr_neg(r27489, r27488, MPFR_RNDN);
        ;
        mpfr_set_si(r27491, mpfr_cmp(r27489, r27490) <= 0, MPFR_RNDN);
        ;
        mpfr_exp(r27493, r27489, MPFR_RNDN);
        mpfr_add(r27494, r27492, r27493, MPFR_RNDN);
        mpfr_div(r27495, r27492, r27494, MPFR_RNDN);
        mpfr_sub(r27496, r27492, r27495, MPFR_RNDN);
        mpfr_set_d(r27497, t, MPFR_RNDN);
        mpfr_neg(r27498, r27497, MPFR_RNDN);
        mpfr_exp(r27499, r27498, MPFR_RNDN);
        mpfr_add(r27500, r27499, r27492, MPFR_RNDN);
        mpfr_div(r27501, r27492, r27500, MPFR_RNDN);
        mpfr_sub(r27502, r27492, r27501, MPFR_RNDN);
        mpfr_div(r27503, r27496, r27502, MPFR_RNDN);
        mpfr_cbrt(r27504, r27503, MPFR_RNDN);
        mpfr_mul(r27505, r27504, r27504, MPFR_RNDN);
        mpfr_set_d(r27506, c_n, MPFR_RNDN);
        mpfr_pow(r27507, r27505, r27506, MPFR_RNDN);
        mpfr_set_d(r27508, c_p, MPFR_RNDN);
        ;
        mpfr_mul(r27510, r27508, r27509, MPFR_RNDN);
        mpfr_mul(r27511, r27488, r27488, MPFR_RNDN);
        mpfr_mul(r27512, r27510, r27511, MPFR_RNDN);
        ;
        mpfr_mul(r27514, r27508, r27513, MPFR_RNDN);
        mpfr_sub(r27515, r27497, r27488, MPFR_RNDN);
        mpfr_mul(r27516, r27514, r27515, MPFR_RNDN);
        mpfr_add(r27517, r27512, r27516, MPFR_RNDN);
        mpfr_exp(r27518, r27517, MPFR_RNDN);
        mpfr_cbrt(r27519, r27518, MPFR_RNDN);
        mpfr_mul(r27520, r27519, r27519, MPFR_RNDN);
        mpfr_div(r27521, r27507, r27520, MPFR_RNDN);
        mpfr_pow(r27522, r27504, r27506, MPFR_RNDN);
        mpfr_div(r27523, r27522, r27519, MPFR_RNDN);
        mpfr_mul(r27524, r27521, r27523, MPFR_RNDN);
        mpfr_pow(r27525, r27496, r27506, MPFR_RNDN);
        mpfr_add(r27526, r27492, r27499, MPFR_RNDN);
        mpfr_div(r27527, r27492, r27526, MPFR_RNDN);
        mpfr_sub(r27528, r27492, r27527, MPFR_RNDN);
        mpfr_pow(r27529, r27528, r27506, MPFR_RNDN);
        mpfr_div(r27530, r27525, r27529, MPFR_RNDN);
        mpfr_pow(r27531, r27495, r27508, MPFR_RNDN);
        mpfr_log(r27532, r27513, MPFR_RNDN);
        mpfr_mul(r27533, r27497, r27513, MPFR_RNDN);
        mpfr_add(r27534, r27532, r27533, MPFR_RNDN);
        mpfr_mul(r27535, r27508, r27534, MPFR_RNDN);
        mpfr_add(r27536, r27535, r27492, MPFR_RNDN);
        mpfr_div(r27537, r27531, r27536, MPFR_RNDN);
        mpfr_mul(r27538, r27530, r27537, MPFR_RNDN);
        if (mpfr_get_si(r27491, MPFR_RNDN)) { mpfr_set(r27539, r27524, MPFR_RNDN); } else { mpfr_set(r27539, r27538, MPFR_RNDN); };
        return mpfr_get_d(r27539, MPFR_RNDN);
}

