#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Rosa's FloatVsDoubleBenchmark";

double f_if(float x1, float x2) {
        float r16279221 = x1;
        float r16279222 = 2;
        float r16279223 = r16279222 * r16279221;
        float r16279224 = 3;
        float r16279225 = r16279224 * r16279221;
        float r16279226 = r16279225 * r16279221;
        float r16279227 = x2;
        float r16279228 = r16279222 * r16279227;
        float r16279229 = r16279226 + r16279228;
        float r16279230 = r16279229 - r16279221;
        float r16279231 = r16279221 * r16279221;
        float r16279232 = 1;
        float r16279233 = r16279231 + r16279232;
        float r16279234 = r16279230 / r16279233;
        float r16279235 = r16279223 * r16279234;
        float r16279236 = r16279234 - r16279224;
        float r16279237 = r16279235 * r16279236;
        float r16279238 = 4;
        float r16279239 = r16279238 * r16279234;
        float r16279240 = 6;
        float r16279241 = r16279239 - r16279240;
        float r16279242 = r16279231 * r16279241;
        float r16279243 = r16279237 + r16279242;
        float r16279244 = r16279243 * r16279233;
        float r16279245 = r16279226 * r16279234;
        float r16279246 = r16279244 + r16279245;
        float r16279247 = r16279231 * r16279221;
        float r16279248 = r16279246 + r16279247;
        float r16279249 = r16279248 + r16279221;
        float r16279250 = r16279226 - r16279228;
        float r16279251 = r16279250 - r16279221;
        float r16279252 = r16279251 / r16279233;
        float r16279253 = r16279224 * r16279252;
        float r16279254 = r16279249 + r16279253;
        float r16279255 = r16279221 + r16279254;
        return r16279255;
}

double f_id(double x1, double x2) {
        double r16279256 = x1;
        double r16279257 = 2;
        double r16279258 = r16279257 * r16279256;
        double r16279259 = 3;
        double r16279260 = r16279259 * r16279256;
        double r16279261 = r16279260 * r16279256;
        double r16279262 = x2;
        double r16279263 = r16279257 * r16279262;
        double r16279264 = r16279261 + r16279263;
        double r16279265 = r16279264 - r16279256;
        double r16279266 = r16279256 * r16279256;
        double r16279267 = 1;
        double r16279268 = r16279266 + r16279267;
        double r16279269 = r16279265 / r16279268;
        double r16279270 = r16279258 * r16279269;
        double r16279271 = r16279269 - r16279259;
        double r16279272 = r16279270 * r16279271;
        double r16279273 = 4;
        double r16279274 = r16279273 * r16279269;
        double r16279275 = 6;
        double r16279276 = r16279274 - r16279275;
        double r16279277 = r16279266 * r16279276;
        double r16279278 = r16279272 + r16279277;
        double r16279279 = r16279278 * r16279268;
        double r16279280 = r16279261 * r16279269;
        double r16279281 = r16279279 + r16279280;
        double r16279282 = r16279266 * r16279256;
        double r16279283 = r16279281 + r16279282;
        double r16279284 = r16279283 + r16279256;
        double r16279285 = r16279261 - r16279263;
        double r16279286 = r16279285 - r16279256;
        double r16279287 = r16279286 / r16279268;
        double r16279288 = r16279259 * r16279287;
        double r16279289 = r16279284 + r16279288;
        double r16279290 = r16279256 + r16279289;
        return r16279290;
}


double f_of(float x1, float x2) {
        float r16279291 = x1;
        float r16279292 = 2;
        float r16279293 = r16279292 * r16279291;
        float r16279294 = 3;
        float r16279295 = r16279294 * r16279291;
        float r16279296 = r16279295 * r16279291;
        float r16279297 = x2;
        float r16279298 = r16279292 * r16279297;
        float r16279299 = r16279296 + r16279298;
        float r16279300 = r16279299 - r16279291;
        float r16279301 = r16279291 * r16279291;
        float r16279302 = 1;
        float r16279303 = r16279301 + r16279302;
        float r16279304 = r16279300 / r16279303;
        float r16279305 = r16279293 * r16279304;
        float r16279306 = r16279304 - r16279294;
        float r16279307 = r16279305 * r16279306;
        float r16279308 = 4;
        float r16279309 = r16279308 * r16279304;
        float r16279310 = 6;
        float r16279311 = r16279309 - r16279310;
        float r16279312 = r16279301 * r16279311;
        float r16279313 = r16279307 + r16279312;
        float r16279314 = r16279313 * r16279303;
        float r16279315 = r16279296 * r16279304;
        float r16279316 = r16279314 + r16279315;
        float r16279317 = r16279301 * r16279291;
        float r16279318 = r16279316 + r16279317;
        float r16279319 = r16279318 + r16279291;
        float r16279320 = r16279296 - r16279298;
        float r16279321 = r16279320 - r16279291;
        float r16279322 = r16279321 / r16279303;
        float r16279323 = r16279294 * r16279322;
        float r16279324 = r16279319 + r16279323;
        float r16279325 = r16279291 + r16279324;
        return r16279325;
}

double f_od(double x1, double x2) {
        double r16279326 = x1;
        double r16279327 = 2;
        double r16279328 = r16279327 * r16279326;
        double r16279329 = 3;
        double r16279330 = r16279329 * r16279326;
        double r16279331 = r16279330 * r16279326;
        double r16279332 = x2;
        double r16279333 = r16279327 * r16279332;
        double r16279334 = r16279331 + r16279333;
        double r16279335 = r16279334 - r16279326;
        double r16279336 = r16279326 * r16279326;
        double r16279337 = 1;
        double r16279338 = r16279336 + r16279337;
        double r16279339 = r16279335 / r16279338;
        double r16279340 = r16279328 * r16279339;
        double r16279341 = r16279339 - r16279329;
        double r16279342 = r16279340 * r16279341;
        double r16279343 = 4;
        double r16279344 = r16279343 * r16279339;
        double r16279345 = 6;
        double r16279346 = r16279344 - r16279345;
        double r16279347 = r16279336 * r16279346;
        double r16279348 = r16279342 + r16279347;
        double r16279349 = r16279348 * r16279338;
        double r16279350 = r16279331 * r16279339;
        double r16279351 = r16279349 + r16279350;
        double r16279352 = r16279336 * r16279326;
        double r16279353 = r16279351 + r16279352;
        double r16279354 = r16279353 + r16279326;
        double r16279355 = r16279331 - r16279333;
        double r16279356 = r16279355 - r16279326;
        double r16279357 = r16279356 / r16279338;
        double r16279358 = r16279329 * r16279357;
        double r16279359 = r16279354 + r16279358;
        double r16279360 = r16279326 + r16279359;
        return r16279360;
}

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 r16279361, r16279362, r16279363, r16279364, r16279365, r16279366, r16279367, r16279368, r16279369, r16279370, r16279371, r16279372, r16279373, r16279374, r16279375, r16279376, r16279377, r16279378, r16279379, r16279380, r16279381, r16279382, r16279383, r16279384, r16279385, r16279386, r16279387, r16279388, r16279389, r16279390, r16279391, r16279392, r16279393, r16279394, r16279395;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r16279361);
        mpfr_init_set_str(r16279362, "2", 10, MPFR_RNDN);
        mpfr_init(r16279363);
        mpfr_init_set_str(r16279364, "3", 10, MPFR_RNDN);
        mpfr_init(r16279365);
        mpfr_init(r16279366);
        mpfr_init(r16279367);
        mpfr_init(r16279368);
        mpfr_init(r16279369);
        mpfr_init(r16279370);
        mpfr_init(r16279371);
        mpfr_init_set_str(r16279372, "1", 10, MPFR_RNDN);
        mpfr_init(r16279373);
        mpfr_init(r16279374);
        mpfr_init(r16279375);
        mpfr_init(r16279376);
        mpfr_init(r16279377);
        mpfr_init_set_str(r16279378, "4", 10, MPFR_RNDN);
        mpfr_init(r16279379);
        mpfr_init_set_str(r16279380, "6", 10, MPFR_RNDN);
        mpfr_init(r16279381);
        mpfr_init(r16279382);
        mpfr_init(r16279383);
        mpfr_init(r16279384);
        mpfr_init(r16279385);
        mpfr_init(r16279386);
        mpfr_init(r16279387);
        mpfr_init(r16279388);
        mpfr_init(r16279389);
        mpfr_init(r16279390);
        mpfr_init(r16279391);
        mpfr_init(r16279392);
        mpfr_init(r16279393);
        mpfr_init(r16279394);
        mpfr_init(r16279395);
}

double f_im(double x1, double x2) {
        mpfr_set_d(r16279361, x1, MPFR_RNDN);
        ;
        mpfr_mul(r16279363, r16279362, r16279361, MPFR_RNDN);
        ;
        mpfr_mul(r16279365, r16279364, r16279361, MPFR_RNDN);
        mpfr_mul(r16279366, r16279365, r16279361, MPFR_RNDN);
        mpfr_set_d(r16279367, x2, MPFR_RNDN);
        mpfr_mul(r16279368, r16279362, r16279367, MPFR_RNDN);
        mpfr_add(r16279369, r16279366, r16279368, MPFR_RNDN);
        mpfr_sub(r16279370, r16279369, r16279361, MPFR_RNDN);
        mpfr_mul(r16279371, r16279361, r16279361, MPFR_RNDN);
        ;
        mpfr_add(r16279373, r16279371, r16279372, MPFR_RNDN);
        mpfr_div(r16279374, r16279370, r16279373, MPFR_RNDN);
        mpfr_mul(r16279375, r16279363, r16279374, MPFR_RNDN);
        mpfr_sub(r16279376, r16279374, r16279364, MPFR_RNDN);
        mpfr_mul(r16279377, r16279375, r16279376, MPFR_RNDN);
        ;
        mpfr_mul(r16279379, r16279378, r16279374, MPFR_RNDN);
        ;
        mpfr_sub(r16279381, r16279379, r16279380, MPFR_RNDN);
        mpfr_mul(r16279382, r16279371, r16279381, MPFR_RNDN);
        mpfr_add(r16279383, r16279377, r16279382, MPFR_RNDN);
        mpfr_mul(r16279384, r16279383, r16279373, MPFR_RNDN);
        mpfr_mul(r16279385, r16279366, r16279374, MPFR_RNDN);
        mpfr_add(r16279386, r16279384, r16279385, MPFR_RNDN);
        mpfr_mul(r16279387, r16279371, r16279361, MPFR_RNDN);
        mpfr_add(r16279388, r16279386, r16279387, MPFR_RNDN);
        mpfr_add(r16279389, r16279388, r16279361, MPFR_RNDN);
        mpfr_sub(r16279390, r16279366, r16279368, MPFR_RNDN);
        mpfr_sub(r16279391, r16279390, r16279361, MPFR_RNDN);
        mpfr_div(r16279392, r16279391, r16279373, MPFR_RNDN);
        mpfr_mul(r16279393, r16279364, r16279392, MPFR_RNDN);
        mpfr_add(r16279394, r16279389, r16279393, MPFR_RNDN);
        mpfr_add(r16279395, r16279361, r16279394, MPFR_RNDN);
        return mpfr_get_d(r16279395, MPFR_RNDN);
}

static mpfr_t r16279396, r16279397, r16279398, r16279399, r16279400, r16279401, r16279402, r16279403, r16279404, r16279405, r16279406, r16279407, r16279408, r16279409, r16279410, r16279411, r16279412, r16279413, r16279414, r16279415, r16279416, r16279417, r16279418, r16279419, r16279420, r16279421, r16279422, r16279423, r16279424, r16279425, r16279426, r16279427, r16279428, r16279429, r16279430;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r16279396);
        mpfr_init_set_str(r16279397, "2", 10, MPFR_RNDN);
        mpfr_init(r16279398);
        mpfr_init_set_str(r16279399, "3", 10, MPFR_RNDN);
        mpfr_init(r16279400);
        mpfr_init(r16279401);
        mpfr_init(r16279402);
        mpfr_init(r16279403);
        mpfr_init(r16279404);
        mpfr_init(r16279405);
        mpfr_init(r16279406);
        mpfr_init_set_str(r16279407, "1", 10, MPFR_RNDN);
        mpfr_init(r16279408);
        mpfr_init(r16279409);
        mpfr_init(r16279410);
        mpfr_init(r16279411);
        mpfr_init(r16279412);
        mpfr_init_set_str(r16279413, "4", 10, MPFR_RNDN);
        mpfr_init(r16279414);
        mpfr_init_set_str(r16279415, "6", 10, MPFR_RNDN);
        mpfr_init(r16279416);
        mpfr_init(r16279417);
        mpfr_init(r16279418);
        mpfr_init(r16279419);
        mpfr_init(r16279420);
        mpfr_init(r16279421);
        mpfr_init(r16279422);
        mpfr_init(r16279423);
        mpfr_init(r16279424);
        mpfr_init(r16279425);
        mpfr_init(r16279426);
        mpfr_init(r16279427);
        mpfr_init(r16279428);
        mpfr_init(r16279429);
        mpfr_init(r16279430);
}

double f_fm(double x1, double x2) {
        mpfr_set_d(r16279396, x1, MPFR_RNDN);
        ;
        mpfr_mul(r16279398, r16279397, r16279396, MPFR_RNDN);
        ;
        mpfr_mul(r16279400, r16279399, r16279396, MPFR_RNDN);
        mpfr_mul(r16279401, r16279400, r16279396, MPFR_RNDN);
        mpfr_set_d(r16279402, x2, MPFR_RNDN);
        mpfr_mul(r16279403, r16279397, r16279402, MPFR_RNDN);
        mpfr_add(r16279404, r16279401, r16279403, MPFR_RNDN);
        mpfr_sub(r16279405, r16279404, r16279396, MPFR_RNDN);
        mpfr_mul(r16279406, r16279396, r16279396, MPFR_RNDN);
        ;
        mpfr_add(r16279408, r16279406, r16279407, MPFR_RNDN);
        mpfr_div(r16279409, r16279405, r16279408, MPFR_RNDN);
        mpfr_mul(r16279410, r16279398, r16279409, MPFR_RNDN);
        mpfr_sub(r16279411, r16279409, r16279399, MPFR_RNDN);
        mpfr_mul(r16279412, r16279410, r16279411, MPFR_RNDN);
        ;
        mpfr_mul(r16279414, r16279413, r16279409, MPFR_RNDN);
        ;
        mpfr_sub(r16279416, r16279414, r16279415, MPFR_RNDN);
        mpfr_mul(r16279417, r16279406, r16279416, MPFR_RNDN);
        mpfr_add(r16279418, r16279412, r16279417, MPFR_RNDN);
        mpfr_mul(r16279419, r16279418, r16279408, MPFR_RNDN);
        mpfr_mul(r16279420, r16279401, r16279409, MPFR_RNDN);
        mpfr_add(r16279421, r16279419, r16279420, MPFR_RNDN);
        mpfr_mul(r16279422, r16279406, r16279396, MPFR_RNDN);
        mpfr_add(r16279423, r16279421, r16279422, MPFR_RNDN);
        mpfr_add(r16279424, r16279423, r16279396, MPFR_RNDN);
        mpfr_sub(r16279425, r16279401, r16279403, MPFR_RNDN);
        mpfr_sub(r16279426, r16279425, r16279396, MPFR_RNDN);
        mpfr_div(r16279427, r16279426, r16279408, MPFR_RNDN);
        mpfr_mul(r16279428, r16279399, r16279427, MPFR_RNDN);
        mpfr_add(r16279429, r16279424, r16279428, MPFR_RNDN);
        mpfr_add(r16279430, r16279396, r16279429, MPFR_RNDN);
        return mpfr_get_d(r16279430, MPFR_RNDN);
}

static mpfr_t r16279431, r16279432, r16279433, r16279434, r16279435, r16279436, r16279437, r16279438, r16279439, r16279440, r16279441, r16279442, r16279443, r16279444, r16279445, r16279446, r16279447, r16279448, r16279449, r16279450, r16279451, r16279452, r16279453, r16279454, r16279455, r16279456, r16279457, r16279458, r16279459, r16279460, r16279461, r16279462, r16279463, r16279464, r16279465;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r16279431);
        mpfr_init_set_str(r16279432, "2", 10, MPFR_RNDN);
        mpfr_init(r16279433);
        mpfr_init_set_str(r16279434, "3", 10, MPFR_RNDN);
        mpfr_init(r16279435);
        mpfr_init(r16279436);
        mpfr_init(r16279437);
        mpfr_init(r16279438);
        mpfr_init(r16279439);
        mpfr_init(r16279440);
        mpfr_init(r16279441);
        mpfr_init_set_str(r16279442, "1", 10, MPFR_RNDN);
        mpfr_init(r16279443);
        mpfr_init(r16279444);
        mpfr_init(r16279445);
        mpfr_init(r16279446);
        mpfr_init(r16279447);
        mpfr_init_set_str(r16279448, "4", 10, MPFR_RNDN);
        mpfr_init(r16279449);
        mpfr_init_set_str(r16279450, "6", 10, MPFR_RNDN);
        mpfr_init(r16279451);
        mpfr_init(r16279452);
        mpfr_init(r16279453);
        mpfr_init(r16279454);
        mpfr_init(r16279455);
        mpfr_init(r16279456);
        mpfr_init(r16279457);
        mpfr_init(r16279458);
        mpfr_init(r16279459);
        mpfr_init(r16279460);
        mpfr_init(r16279461);
        mpfr_init(r16279462);
        mpfr_init(r16279463);
        mpfr_init(r16279464);
        mpfr_init(r16279465);
}

double f_dm(double x1, double x2) {
        mpfr_set_d(r16279431, x1, MPFR_RNDN);
        ;
        mpfr_mul(r16279433, r16279432, r16279431, MPFR_RNDN);
        ;
        mpfr_mul(r16279435, r16279434, r16279431, MPFR_RNDN);
        mpfr_mul(r16279436, r16279435, r16279431, MPFR_RNDN);
        mpfr_set_d(r16279437, x2, MPFR_RNDN);
        mpfr_mul(r16279438, r16279432, r16279437, MPFR_RNDN);
        mpfr_add(r16279439, r16279436, r16279438, MPFR_RNDN);
        mpfr_sub(r16279440, r16279439, r16279431, MPFR_RNDN);
        mpfr_mul(r16279441, r16279431, r16279431, MPFR_RNDN);
        ;
        mpfr_add(r16279443, r16279441, r16279442, MPFR_RNDN);
        mpfr_div(r16279444, r16279440, r16279443, MPFR_RNDN);
        mpfr_mul(r16279445, r16279433, r16279444, MPFR_RNDN);
        mpfr_sub(r16279446, r16279444, r16279434, MPFR_RNDN);
        mpfr_mul(r16279447, r16279445, r16279446, MPFR_RNDN);
        ;
        mpfr_mul(r16279449, r16279448, r16279444, MPFR_RNDN);
        ;
        mpfr_sub(r16279451, r16279449, r16279450, MPFR_RNDN);
        mpfr_mul(r16279452, r16279441, r16279451, MPFR_RNDN);
        mpfr_add(r16279453, r16279447, r16279452, MPFR_RNDN);
        mpfr_mul(r16279454, r16279453, r16279443, MPFR_RNDN);
        mpfr_mul(r16279455, r16279436, r16279444, MPFR_RNDN);
        mpfr_add(r16279456, r16279454, r16279455, MPFR_RNDN);
        mpfr_mul(r16279457, r16279441, r16279431, MPFR_RNDN);
        mpfr_add(r16279458, r16279456, r16279457, MPFR_RNDN);
        mpfr_add(r16279459, r16279458, r16279431, MPFR_RNDN);
        mpfr_sub(r16279460, r16279436, r16279438, MPFR_RNDN);
        mpfr_sub(r16279461, r16279460, r16279431, MPFR_RNDN);
        mpfr_div(r16279462, r16279461, r16279443, MPFR_RNDN);
        mpfr_mul(r16279463, r16279434, r16279462, MPFR_RNDN);
        mpfr_add(r16279464, r16279459, r16279463, MPFR_RNDN);
        mpfr_add(r16279465, r16279431, r16279464, MPFR_RNDN);
        return mpfr_get_d(r16279465, MPFR_RNDN);
}

