#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 r11219 = 1.0f;
        float r11220 = s;
        float r11221 = -r11220;
        float r11222 = exp(r11221);
        float r11223 = r11219 + r11222;
        float r11224 = r11219 / r11223;
        float r11225 = c_p;
        float r11226 = pow(r11224, r11225);
        float r11227 = r11219 - r11224;
        float r11228 = c_n;
        float r11229 = pow(r11227, r11228);
        float r11230 = r11226 * r11229;
        float r11231 = t;
        float r11232 = -r11231;
        float r11233 = exp(r11232);
        float r11234 = r11219 + r11233;
        float r11235 = r11219 / r11234;
        float r11236 = pow(r11235, r11225);
        float r11237 = r11219 - r11235;
        float r11238 = pow(r11237, r11228);
        float r11239 = r11236 * r11238;
        float r11240 = r11230 / r11239;
        return r11240;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11241 = 1.0;
        double r11242 = s;
        double r11243 = -r11242;
        double r11244 = exp(r11243);
        double r11245 = r11241 + r11244;
        double r11246 = r11241 / r11245;
        double r11247 = c_p;
        double r11248 = pow(r11246, r11247);
        double r11249 = r11241 - r11246;
        double r11250 = c_n;
        double r11251 = pow(r11249, r11250);
        double r11252 = r11248 * r11251;
        double r11253 = t;
        double r11254 = -r11253;
        double r11255 = exp(r11254);
        double r11256 = r11241 + r11255;
        double r11257 = r11241 / r11256;
        double r11258 = pow(r11257, r11247);
        double r11259 = r11241 - r11257;
        double r11260 = pow(r11259, r11250);
        double r11261 = r11258 * r11260;
        double r11262 = r11252 / r11261;
        return r11262;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11263 = 1.0f;
        float r11264 = s;
        float r11265 = -r11264;
        float r11266 = exp(r11265);
        float r11267 = r11266 + r11263;
        float r11268 = r11263 / r11267;
        float r11269 = c_p;
        float r11270 = pow(r11268, r11269);
        float r11271 = r11263 - r11268;
        float r11272 = c_n;
        float r11273 = pow(r11271, r11272);
        float r11274 = r11270 * r11273;
        float r11275 = t;
        float r11276 = -r11275;
        float r11277 = exp(r11276);
        float r11278 = r11277 + r11263;
        float r11279 = r11263 / r11278;
        float r11280 = r11263 - r11279;
        float r11281 = pow(r11280, r11272);
        float r11282 = 0.5f;
        float r11283 = r11282 * r11275;
        float r11284 = log(r11282);
        float r11285 = r11283 + r11284;
        float r11286 = r11269 * r11285;
        float r11287 = r11286 + r11263;
        float r11288 = r11281 * r11287;
        float r11289 = r11274 / r11288;
        float r11290 = 6.94656542130387e-310f;
        bool r11291 = r11289 <= r11290;
        float r11292 = log(r11278);
        float r11293 = log(r11267);
        float r11294 = r11292 - r11293;
        float r11295 = r11294 * r11269;
        float r11296 = r11275 - r11264;
        float r11297 = r11296 * r11282;
        float r11298 = 0.125f;
        float r11299 = r11298 * r11264;
        float r11300 = r11264 * r11299;
        float r11301 = r11297 - r11300;
        float r11302 = r11301 * r11272;
        float r11303 = r11295 + r11302;
        float r11304 = exp(r11303);
        float r11305 = r11291 ? r11289 : r11304;
        return r11305;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11306 = 1.0;
        double r11307 = s;
        double r11308 = -r11307;
        double r11309 = exp(r11308);
        double r11310 = r11309 + r11306;
        double r11311 = r11306 / r11310;
        double r11312 = c_p;
        double r11313 = pow(r11311, r11312);
        double r11314 = r11306 - r11311;
        double r11315 = c_n;
        double r11316 = pow(r11314, r11315);
        double r11317 = r11313 * r11316;
        double r11318 = t;
        double r11319 = -r11318;
        double r11320 = exp(r11319);
        double r11321 = r11320 + r11306;
        double r11322 = r11306 / r11321;
        double r11323 = r11306 - r11322;
        double r11324 = pow(r11323, r11315);
        double r11325 = 0.5;
        double r11326 = r11325 * r11318;
        double r11327 = log(r11325);
        double r11328 = r11326 + r11327;
        double r11329 = r11312 * r11328;
        double r11330 = r11329 + r11306;
        double r11331 = r11324 * r11330;
        double r11332 = r11317 / r11331;
        double r11333 = 6.94656542130387e-310;
        bool r11334 = r11332 <= r11333;
        double r11335 = log(r11321);
        double r11336 = log(r11310);
        double r11337 = r11335 - r11336;
        double r11338 = r11337 * r11312;
        double r11339 = r11318 - r11307;
        double r11340 = r11339 * r11325;
        double r11341 = 0.125;
        double r11342 = r11341 * r11307;
        double r11343 = r11307 * r11342;
        double r11344 = r11340 - r11343;
        double r11345 = r11344 * r11315;
        double r11346 = r11338 + r11345;
        double r11347 = exp(r11346);
        double r11348 = r11334 ? r11332 : r11347;
        return r11348;
}

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 r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357, r11358, r11359, r11360, r11361, r11362, r11363, r11364, r11365, r11366, r11367, r11368, r11369, r11370;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11349, "1", 10, MPFR_RNDN);
        mpfr_init(r11350);
        mpfr_init(r11351);
        mpfr_init(r11352);
        mpfr_init(r11353);
        mpfr_init(r11354);
        mpfr_init(r11355);
        mpfr_init(r11356);
        mpfr_init(r11357);
        mpfr_init(r11358);
        mpfr_init(r11359);
        mpfr_init(r11360);
        mpfr_init(r11361);
        mpfr_init(r11362);
        mpfr_init(r11363);
        mpfr_init(r11364);
        mpfr_init(r11365);
        mpfr_init(r11366);
        mpfr_init(r11367);
        mpfr_init(r11368);
        mpfr_init(r11369);
        mpfr_init(r11370);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11350, s, MPFR_RNDN);
        mpfr_neg(r11351, r11350, MPFR_RNDN);
        mpfr_exp(r11352, r11351, MPFR_RNDN);
        mpfr_add(r11353, r11349, r11352, MPFR_RNDN);
        mpfr_div(r11354, r11349, r11353, MPFR_RNDN);
        mpfr_set_d(r11355, c_p, MPFR_RNDN);
        mpfr_pow(r11356, r11354, r11355, MPFR_RNDN);
        mpfr_sub(r11357, r11349, r11354, MPFR_RNDN);
        mpfr_set_d(r11358, c_n, MPFR_RNDN);
        mpfr_pow(r11359, r11357, r11358, MPFR_RNDN);
        mpfr_mul(r11360, r11356, r11359, MPFR_RNDN);
        mpfr_set_d(r11361, t, MPFR_RNDN);
        mpfr_neg(r11362, r11361, MPFR_RNDN);
        mpfr_exp(r11363, r11362, MPFR_RNDN);
        mpfr_add(r11364, r11349, r11363, MPFR_RNDN);
        mpfr_div(r11365, r11349, r11364, MPFR_RNDN);
        mpfr_pow(r11366, r11365, r11355, MPFR_RNDN);
        mpfr_sub(r11367, r11349, r11365, MPFR_RNDN);
        mpfr_pow(r11368, r11367, r11358, MPFR_RNDN);
        mpfr_mul(r11369, r11366, r11368, MPFR_RNDN);
        mpfr_div(r11370, r11360, r11369, MPFR_RNDN);
        return mpfr_get_d(r11370, MPFR_RNDN);
}

static mpfr_t r11371, r11372, r11373, r11374, r11375, r11376, r11377, r11378, r11379, r11380, r11381, r11382, r11383, r11384, r11385, r11386, r11387, r11388, r11389, r11390, r11391, r11392, r11393, r11394, r11395, r11396, r11397, r11398, r11399, r11400, r11401, r11402, r11403, r11404, r11405, r11406, r11407, r11408, r11409, r11410, r11411, r11412, r11413;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11371, "1", 10, MPFR_RNDN);
        mpfr_init(r11372);
        mpfr_init(r11373);
        mpfr_init(r11374);
        mpfr_init(r11375);
        mpfr_init(r11376);
        mpfr_init(r11377);
        mpfr_init(r11378);
        mpfr_init(r11379);
        mpfr_init(r11380);
        mpfr_init(r11381);
        mpfr_init(r11382);
        mpfr_init(r11383);
        mpfr_init(r11384);
        mpfr_init(r11385);
        mpfr_init(r11386);
        mpfr_init(r11387);
        mpfr_init(r11388);
        mpfr_init(r11389);
        mpfr_init_set_str(r11390, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11391);
        mpfr_init(r11392);
        mpfr_init(r11393);
        mpfr_init(r11394);
        mpfr_init(r11395);
        mpfr_init(r11396);
        mpfr_init(r11397);
        mpfr_init_set_str(r11398, "6.94656542130387e-310", 10, MPFR_RNDN);
        mpfr_init(r11399);
        mpfr_init(r11400);
        mpfr_init(r11401);
        mpfr_init(r11402);
        mpfr_init(r11403);
        mpfr_init(r11404);
        mpfr_init(r11405);
        mpfr_init_set_str(r11406, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11407);
        mpfr_init(r11408);
        mpfr_init(r11409);
        mpfr_init(r11410);
        mpfr_init(r11411);
        mpfr_init(r11412);
        mpfr_init(r11413);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11372, s, MPFR_RNDN);
        mpfr_neg(r11373, r11372, MPFR_RNDN);
        mpfr_exp(r11374, r11373, MPFR_RNDN);
        mpfr_add(r11375, r11374, r11371, MPFR_RNDN);
        mpfr_div(r11376, r11371, r11375, MPFR_RNDN);
        mpfr_set_d(r11377, c_p, MPFR_RNDN);
        mpfr_pow(r11378, r11376, r11377, MPFR_RNDN);
        mpfr_sub(r11379, r11371, r11376, MPFR_RNDN);
        mpfr_set_d(r11380, c_n, MPFR_RNDN);
        mpfr_pow(r11381, r11379, r11380, MPFR_RNDN);
        mpfr_mul(r11382, r11378, r11381, MPFR_RNDN);
        mpfr_set_d(r11383, t, MPFR_RNDN);
        mpfr_neg(r11384, r11383, MPFR_RNDN);
        mpfr_exp(r11385, r11384, MPFR_RNDN);
        mpfr_add(r11386, r11385, r11371, MPFR_RNDN);
        mpfr_div(r11387, r11371, r11386, MPFR_RNDN);
        mpfr_sub(r11388, r11371, r11387, MPFR_RNDN);
        mpfr_pow(r11389, r11388, r11380, MPFR_RNDN);
        ;
        mpfr_mul(r11391, r11390, r11383, MPFR_RNDN);
        mpfr_log(r11392, r11390, MPFR_RNDN);
        mpfr_add(r11393, r11391, r11392, MPFR_RNDN);
        mpfr_mul(r11394, r11377, r11393, MPFR_RNDN);
        mpfr_add(r11395, r11394, r11371, MPFR_RNDN);
        mpfr_mul(r11396, r11389, r11395, MPFR_RNDN);
        mpfr_div(r11397, r11382, r11396, MPFR_RNDN);
        ;
        mpfr_set_si(r11399, mpfr_cmp(r11397, r11398) <= 0, MPFR_RNDN);
        mpfr_log(r11400, r11386, MPFR_RNDN);
        mpfr_log(r11401, r11375, MPFR_RNDN);
        mpfr_sub(r11402, r11400, r11401, MPFR_RNDN);
        mpfr_mul(r11403, r11402, r11377, MPFR_RNDN);
        mpfr_sub(r11404, r11383, r11372, MPFR_RNDN);
        mpfr_mul(r11405, r11404, r11390, MPFR_RNDN);
        ;
        mpfr_mul(r11407, r11406, r11372, MPFR_RNDN);
        mpfr_mul(r11408, r11372, r11407, MPFR_RNDN);
        mpfr_sub(r11409, r11405, r11408, MPFR_RNDN);
        mpfr_mul(r11410, r11409, r11380, MPFR_RNDN);
        mpfr_add(r11411, r11403, r11410, MPFR_RNDN);
        mpfr_exp(r11412, r11411, MPFR_RNDN);
        if (mpfr_get_si(r11399, MPFR_RNDN)) { mpfr_set(r11413, r11397, MPFR_RNDN); } else { mpfr_set(r11413, r11412, MPFR_RNDN); };
        return mpfr_get_d(r11413, MPFR_RNDN);
}

static mpfr_t r11414, r11415, r11416, r11417, r11418, r11419, r11420, r11421, r11422, r11423, r11424, r11425, r11426, r11427, r11428, r11429, r11430, r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438, r11439, r11440, r11441, r11442, r11443, r11444, r11445, r11446, r11447, r11448, r11449, r11450, r11451, r11452, r11453, r11454, r11455, r11456;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11414, "1", 10, MPFR_RNDN);
        mpfr_init(r11415);
        mpfr_init(r11416);
        mpfr_init(r11417);
        mpfr_init(r11418);
        mpfr_init(r11419);
        mpfr_init(r11420);
        mpfr_init(r11421);
        mpfr_init(r11422);
        mpfr_init(r11423);
        mpfr_init(r11424);
        mpfr_init(r11425);
        mpfr_init(r11426);
        mpfr_init(r11427);
        mpfr_init(r11428);
        mpfr_init(r11429);
        mpfr_init(r11430);
        mpfr_init(r11431);
        mpfr_init(r11432);
        mpfr_init_set_str(r11433, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11434);
        mpfr_init(r11435);
        mpfr_init(r11436);
        mpfr_init(r11437);
        mpfr_init(r11438);
        mpfr_init(r11439);
        mpfr_init(r11440);
        mpfr_init_set_str(r11441, "6.94656542130387e-310", 10, MPFR_RNDN);
        mpfr_init(r11442);
        mpfr_init(r11443);
        mpfr_init(r11444);
        mpfr_init(r11445);
        mpfr_init(r11446);
        mpfr_init(r11447);
        mpfr_init(r11448);
        mpfr_init_set_str(r11449, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11450);
        mpfr_init(r11451);
        mpfr_init(r11452);
        mpfr_init(r11453);
        mpfr_init(r11454);
        mpfr_init(r11455);
        mpfr_init(r11456);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11415, s, MPFR_RNDN);
        mpfr_neg(r11416, r11415, MPFR_RNDN);
        mpfr_exp(r11417, r11416, MPFR_RNDN);
        mpfr_add(r11418, r11417, r11414, MPFR_RNDN);
        mpfr_div(r11419, r11414, r11418, MPFR_RNDN);
        mpfr_set_d(r11420, c_p, MPFR_RNDN);
        mpfr_pow(r11421, r11419, r11420, MPFR_RNDN);
        mpfr_sub(r11422, r11414, r11419, MPFR_RNDN);
        mpfr_set_d(r11423, c_n, MPFR_RNDN);
        mpfr_pow(r11424, r11422, r11423, MPFR_RNDN);
        mpfr_mul(r11425, r11421, r11424, MPFR_RNDN);
        mpfr_set_d(r11426, t, MPFR_RNDN);
        mpfr_neg(r11427, r11426, MPFR_RNDN);
        mpfr_exp(r11428, r11427, MPFR_RNDN);
        mpfr_add(r11429, r11428, r11414, MPFR_RNDN);
        mpfr_div(r11430, r11414, r11429, MPFR_RNDN);
        mpfr_sub(r11431, r11414, r11430, MPFR_RNDN);
        mpfr_pow(r11432, r11431, r11423, MPFR_RNDN);
        ;
        mpfr_mul(r11434, r11433, r11426, MPFR_RNDN);
        mpfr_log(r11435, r11433, MPFR_RNDN);
        mpfr_add(r11436, r11434, r11435, MPFR_RNDN);
        mpfr_mul(r11437, r11420, r11436, MPFR_RNDN);
        mpfr_add(r11438, r11437, r11414, MPFR_RNDN);
        mpfr_mul(r11439, r11432, r11438, MPFR_RNDN);
        mpfr_div(r11440, r11425, r11439, MPFR_RNDN);
        ;
        mpfr_set_si(r11442, mpfr_cmp(r11440, r11441) <= 0, MPFR_RNDN);
        mpfr_log(r11443, r11429, MPFR_RNDN);
        mpfr_log(r11444, r11418, MPFR_RNDN);
        mpfr_sub(r11445, r11443, r11444, MPFR_RNDN);
        mpfr_mul(r11446, r11445, r11420, MPFR_RNDN);
        mpfr_sub(r11447, r11426, r11415, MPFR_RNDN);
        mpfr_mul(r11448, r11447, r11433, MPFR_RNDN);
        ;
        mpfr_mul(r11450, r11449, r11415, MPFR_RNDN);
        mpfr_mul(r11451, r11415, r11450, MPFR_RNDN);
        mpfr_sub(r11452, r11448, r11451, MPFR_RNDN);
        mpfr_mul(r11453, r11452, r11423, MPFR_RNDN);
        mpfr_add(r11454, r11446, r11453, MPFR_RNDN);
        mpfr_exp(r11455, r11454, MPFR_RNDN);
        if (mpfr_get_si(r11442, MPFR_RNDN)) { mpfr_set(r11456, r11440, MPFR_RNDN); } else { mpfr_set(r11456, r11455, MPFR_RNDN); };
        return mpfr_get_d(r11456, MPFR_RNDN);
}

