#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 r11166 = 1.0f;
        float r11167 = s;
        float r11168 = -r11167;
        float r11169 = exp(r11168);
        float r11170 = r11166 + r11169;
        float r11171 = r11166 / r11170;
        float r11172 = c_p;
        float r11173 = pow(r11171, r11172);
        float r11174 = r11166 - r11171;
        float r11175 = c_n;
        float r11176 = pow(r11174, r11175);
        float r11177 = r11173 * r11176;
        float r11178 = t;
        float r11179 = -r11178;
        float r11180 = exp(r11179);
        float r11181 = r11166 + r11180;
        float r11182 = r11166 / r11181;
        float r11183 = pow(r11182, r11172);
        float r11184 = r11166 - r11182;
        float r11185 = pow(r11184, r11175);
        float r11186 = r11183 * r11185;
        float r11187 = r11177 / r11186;
        return r11187;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11188 = 1.0;
        double r11189 = s;
        double r11190 = -r11189;
        double r11191 = exp(r11190);
        double r11192 = r11188 + r11191;
        double r11193 = r11188 / r11192;
        double r11194 = c_p;
        double r11195 = pow(r11193, r11194);
        double r11196 = r11188 - r11193;
        double r11197 = c_n;
        double r11198 = pow(r11196, r11197);
        double r11199 = r11195 * r11198;
        double r11200 = t;
        double r11201 = -r11200;
        double r11202 = exp(r11201);
        double r11203 = r11188 + r11202;
        double r11204 = r11188 / r11203;
        double r11205 = pow(r11204, r11194);
        double r11206 = r11188 - r11204;
        double r11207 = pow(r11206, r11197);
        double r11208 = r11205 * r11207;
        double r11209 = r11199 / r11208;
        return r11209;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11210 = 1.0f;
        float r11211 = s;
        float r11212 = -r11211;
        float r11213 = exp(r11212);
        float r11214 = r11213 + r11210;
        float r11215 = r11210 / r11214;
        float r11216 = c_p;
        float r11217 = pow(r11215, r11216);
        float r11218 = r11210 - r11215;
        float r11219 = c_n;
        float r11220 = pow(r11218, r11219);
        float r11221 = r11217 * r11220;
        float r11222 = t;
        float r11223 = -r11222;
        float r11224 = exp(r11223);
        float r11225 = r11224 + r11210;
        float r11226 = r11210 / r11225;
        float r11227 = r11210 - r11226;
        float r11228 = pow(r11227, r11219);
        float r11229 = 0.5f;
        float r11230 = r11229 * r11222;
        float r11231 = log(r11229);
        float r11232 = r11230 + r11231;
        float r11233 = r11216 * r11232;
        float r11234 = r11233 + r11210;
        float r11235 = r11228 * r11234;
        float r11236 = r11221 / r11235;
        float r11237 = 6.94656542130387e-310f;
        bool r11238 = r11236 <= r11237;
        float r11239 = log(r11225);
        float r11240 = log(r11214);
        float r11241 = r11239 - r11240;
        float r11242 = r11241 * r11216;
        float r11243 = r11222 - r11211;
        float r11244 = r11243 * r11229;
        float r11245 = 0.125f;
        float r11246 = r11245 * r11211;
        float r11247 = r11211 * r11246;
        float r11248 = r11244 - r11247;
        float r11249 = r11248 * r11219;
        float r11250 = r11242 + r11249;
        float r11251 = exp(r11250);
        float r11252 = r11238 ? r11236 : r11251;
        return r11252;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11253 = 1.0;
        double r11254 = s;
        double r11255 = -r11254;
        double r11256 = exp(r11255);
        double r11257 = r11256 + r11253;
        double r11258 = r11253 / r11257;
        double r11259 = c_p;
        double r11260 = pow(r11258, r11259);
        double r11261 = r11253 - r11258;
        double r11262 = c_n;
        double r11263 = pow(r11261, r11262);
        double r11264 = r11260 * r11263;
        double r11265 = t;
        double r11266 = -r11265;
        double r11267 = exp(r11266);
        double r11268 = r11267 + r11253;
        double r11269 = r11253 / r11268;
        double r11270 = r11253 - r11269;
        double r11271 = pow(r11270, r11262);
        double r11272 = 0.5;
        double r11273 = r11272 * r11265;
        double r11274 = log(r11272);
        double r11275 = r11273 + r11274;
        double r11276 = r11259 * r11275;
        double r11277 = r11276 + r11253;
        double r11278 = r11271 * r11277;
        double r11279 = r11264 / r11278;
        double r11280 = 6.94656542130387e-310;
        bool r11281 = r11279 <= r11280;
        double r11282 = log(r11268);
        double r11283 = log(r11257);
        double r11284 = r11282 - r11283;
        double r11285 = r11284 * r11259;
        double r11286 = r11265 - r11254;
        double r11287 = r11286 * r11272;
        double r11288 = 0.125;
        double r11289 = r11288 * r11254;
        double r11290 = r11254 * r11289;
        double r11291 = r11287 - r11290;
        double r11292 = r11291 * r11262;
        double r11293 = r11285 + r11292;
        double r11294 = exp(r11293);
        double r11295 = r11281 ? r11279 : r11294;
        return r11295;
}

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 r11296, r11297, r11298, r11299, r11300, r11301, r11302, r11303, r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11296, "1", 10, MPFR_RNDN);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init(r11299);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
        mpfr_init(r11304);
        mpfr_init(r11305);
        mpfr_init(r11306);
        mpfr_init(r11307);
        mpfr_init(r11308);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init(r11312);
        mpfr_init(r11313);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init(r11316);
        mpfr_init(r11317);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11297, s, MPFR_RNDN);
        mpfr_neg(r11298, r11297, MPFR_RNDN);
        mpfr_exp(r11299, r11298, MPFR_RNDN);
        mpfr_add(r11300, r11296, r11299, MPFR_RNDN);
        mpfr_div(r11301, r11296, r11300, MPFR_RNDN);
        mpfr_set_d(r11302, c_p, MPFR_RNDN);
        mpfr_pow(r11303, r11301, r11302, MPFR_RNDN);
        mpfr_sub(r11304, r11296, r11301, MPFR_RNDN);
        mpfr_set_d(r11305, c_n, MPFR_RNDN);
        mpfr_pow(r11306, r11304, r11305, MPFR_RNDN);
        mpfr_mul(r11307, r11303, r11306, MPFR_RNDN);
        mpfr_set_d(r11308, t, MPFR_RNDN);
        mpfr_neg(r11309, r11308, MPFR_RNDN);
        mpfr_exp(r11310, r11309, MPFR_RNDN);
        mpfr_add(r11311, r11296, r11310, MPFR_RNDN);
        mpfr_div(r11312, r11296, r11311, MPFR_RNDN);
        mpfr_pow(r11313, r11312, r11302, MPFR_RNDN);
        mpfr_sub(r11314, r11296, r11312, MPFR_RNDN);
        mpfr_pow(r11315, r11314, r11305, MPFR_RNDN);
        mpfr_mul(r11316, r11313, r11315, MPFR_RNDN);
        mpfr_div(r11317, r11307, r11316, MPFR_RNDN);
        return mpfr_get_d(r11317, MPFR_RNDN);
}

static mpfr_t r11318, r11319, r11320, r11321, r11322, r11323, r11324, r11325, r11326, r11327, r11328, r11329, r11330, r11331, r11332, r11333, r11334, r11335, r11336, r11337, r11338, r11339, r11340, r11341, r11342, r11343, r11344, r11345, r11346, r11347, r11348, r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357, r11358, r11359, r11360;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11318, "1", 10, MPFR_RNDN);
        mpfr_init(r11319);
        mpfr_init(r11320);
        mpfr_init(r11321);
        mpfr_init(r11322);
        mpfr_init(r11323);
        mpfr_init(r11324);
        mpfr_init(r11325);
        mpfr_init(r11326);
        mpfr_init(r11327);
        mpfr_init(r11328);
        mpfr_init(r11329);
        mpfr_init(r11330);
        mpfr_init(r11331);
        mpfr_init(r11332);
        mpfr_init(r11333);
        mpfr_init(r11334);
        mpfr_init(r11335);
        mpfr_init(r11336);
        mpfr_init_set_str(r11337, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11338);
        mpfr_init(r11339);
        mpfr_init(r11340);
        mpfr_init(r11341);
        mpfr_init(r11342);
        mpfr_init(r11343);
        mpfr_init(r11344);
        mpfr_init_set_str(r11345, "6.94656542130387e-310", 10, MPFR_RNDN);
        mpfr_init(r11346);
        mpfr_init(r11347);
        mpfr_init(r11348);
        mpfr_init(r11349);
        mpfr_init(r11350);
        mpfr_init(r11351);
        mpfr_init(r11352);
        mpfr_init_set_str(r11353, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11354);
        mpfr_init(r11355);
        mpfr_init(r11356);
        mpfr_init(r11357);
        mpfr_init(r11358);
        mpfr_init(r11359);
        mpfr_init(r11360);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11319, s, MPFR_RNDN);
        mpfr_neg(r11320, r11319, MPFR_RNDN);
        mpfr_exp(r11321, r11320, MPFR_RNDN);
        mpfr_add(r11322, r11321, r11318, MPFR_RNDN);
        mpfr_div(r11323, r11318, r11322, MPFR_RNDN);
        mpfr_set_d(r11324, c_p, MPFR_RNDN);
        mpfr_pow(r11325, r11323, r11324, MPFR_RNDN);
        mpfr_sub(r11326, r11318, r11323, MPFR_RNDN);
        mpfr_set_d(r11327, c_n, MPFR_RNDN);
        mpfr_pow(r11328, r11326, r11327, MPFR_RNDN);
        mpfr_mul(r11329, r11325, r11328, MPFR_RNDN);
        mpfr_set_d(r11330, t, MPFR_RNDN);
        mpfr_neg(r11331, r11330, MPFR_RNDN);
        mpfr_exp(r11332, r11331, MPFR_RNDN);
        mpfr_add(r11333, r11332, r11318, MPFR_RNDN);
        mpfr_div(r11334, r11318, r11333, MPFR_RNDN);
        mpfr_sub(r11335, r11318, r11334, MPFR_RNDN);
        mpfr_pow(r11336, r11335, r11327, MPFR_RNDN);
        ;
        mpfr_mul(r11338, r11337, r11330, MPFR_RNDN);
        mpfr_log(r11339, r11337, MPFR_RNDN);
        mpfr_add(r11340, r11338, r11339, MPFR_RNDN);
        mpfr_mul(r11341, r11324, r11340, MPFR_RNDN);
        mpfr_add(r11342, r11341, r11318, MPFR_RNDN);
        mpfr_mul(r11343, r11336, r11342, MPFR_RNDN);
        mpfr_div(r11344, r11329, r11343, MPFR_RNDN);
        ;
        mpfr_set_si(r11346, mpfr_cmp(r11344, r11345) <= 0, MPFR_RNDN);
        mpfr_log(r11347, r11333, MPFR_RNDN);
        mpfr_log(r11348, r11322, MPFR_RNDN);
        mpfr_sub(r11349, r11347, r11348, MPFR_RNDN);
        mpfr_mul(r11350, r11349, r11324, MPFR_RNDN);
        mpfr_sub(r11351, r11330, r11319, MPFR_RNDN);
        mpfr_mul(r11352, r11351, r11337, MPFR_RNDN);
        ;
        mpfr_mul(r11354, r11353, r11319, MPFR_RNDN);
        mpfr_mul(r11355, r11319, r11354, MPFR_RNDN);
        mpfr_sub(r11356, r11352, r11355, MPFR_RNDN);
        mpfr_mul(r11357, r11356, r11327, MPFR_RNDN);
        mpfr_add(r11358, r11350, r11357, MPFR_RNDN);
        mpfr_exp(r11359, r11358, MPFR_RNDN);
        if (mpfr_get_si(r11346, MPFR_RNDN)) { mpfr_set(r11360, r11344, MPFR_RNDN); } else { mpfr_set(r11360, r11359, MPFR_RNDN); };
        return mpfr_get_d(r11360, MPFR_RNDN);
}

static mpfr_t r11361, r11362, r11363, r11364, r11365, r11366, r11367, r11368, r11369, r11370, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11361, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r11371);
        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_set_str(r11380, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11381);
        mpfr_init(r11382);
        mpfr_init(r11383);
        mpfr_init(r11384);
        mpfr_init(r11385);
        mpfr_init(r11386);
        mpfr_init(r11387);
        mpfr_init_set_str(r11388, "6.94656542130387e-310", 10, MPFR_RNDN);
        mpfr_init(r11389);
        mpfr_init(r11390);
        mpfr_init(r11391);
        mpfr_init(r11392);
        mpfr_init(r11393);
        mpfr_init(r11394);
        mpfr_init(r11395);
        mpfr_init_set_str(r11396, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11397);
        mpfr_init(r11398);
        mpfr_init(r11399);
        mpfr_init(r11400);
        mpfr_init(r11401);
        mpfr_init(r11402);
        mpfr_init(r11403);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11362, s, MPFR_RNDN);
        mpfr_neg(r11363, r11362, MPFR_RNDN);
        mpfr_exp(r11364, r11363, MPFR_RNDN);
        mpfr_add(r11365, r11364, r11361, MPFR_RNDN);
        mpfr_div(r11366, r11361, r11365, MPFR_RNDN);
        mpfr_set_d(r11367, c_p, MPFR_RNDN);
        mpfr_pow(r11368, r11366, r11367, MPFR_RNDN);
        mpfr_sub(r11369, r11361, r11366, MPFR_RNDN);
        mpfr_set_d(r11370, c_n, MPFR_RNDN);
        mpfr_pow(r11371, r11369, r11370, MPFR_RNDN);
        mpfr_mul(r11372, r11368, r11371, MPFR_RNDN);
        mpfr_set_d(r11373, t, MPFR_RNDN);
        mpfr_neg(r11374, r11373, MPFR_RNDN);
        mpfr_exp(r11375, r11374, MPFR_RNDN);
        mpfr_add(r11376, r11375, r11361, MPFR_RNDN);
        mpfr_div(r11377, r11361, r11376, MPFR_RNDN);
        mpfr_sub(r11378, r11361, r11377, MPFR_RNDN);
        mpfr_pow(r11379, r11378, r11370, MPFR_RNDN);
        ;
        mpfr_mul(r11381, r11380, r11373, MPFR_RNDN);
        mpfr_log(r11382, r11380, MPFR_RNDN);
        mpfr_add(r11383, r11381, r11382, MPFR_RNDN);
        mpfr_mul(r11384, r11367, r11383, MPFR_RNDN);
        mpfr_add(r11385, r11384, r11361, MPFR_RNDN);
        mpfr_mul(r11386, r11379, r11385, MPFR_RNDN);
        mpfr_div(r11387, r11372, r11386, MPFR_RNDN);
        ;
        mpfr_set_si(r11389, mpfr_cmp(r11387, r11388) <= 0, MPFR_RNDN);
        mpfr_log(r11390, r11376, MPFR_RNDN);
        mpfr_log(r11391, r11365, MPFR_RNDN);
        mpfr_sub(r11392, r11390, r11391, MPFR_RNDN);
        mpfr_mul(r11393, r11392, r11367, MPFR_RNDN);
        mpfr_sub(r11394, r11373, r11362, MPFR_RNDN);
        mpfr_mul(r11395, r11394, r11380, MPFR_RNDN);
        ;
        mpfr_mul(r11397, r11396, r11362, MPFR_RNDN);
        mpfr_mul(r11398, r11362, r11397, MPFR_RNDN);
        mpfr_sub(r11399, r11395, r11398, MPFR_RNDN);
        mpfr_mul(r11400, r11399, r11370, MPFR_RNDN);
        mpfr_add(r11401, r11393, r11400, MPFR_RNDN);
        mpfr_exp(r11402, r11401, MPFR_RNDN);
        if (mpfr_get_si(r11389, MPFR_RNDN)) { mpfr_set(r11403, r11387, MPFR_RNDN); } else { mpfr_set(r11403, r11402, MPFR_RNDN); };
        return mpfr_get_d(r11403, MPFR_RNDN);
}

