#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 r21142 = x1;
        float r21143 = 2;
        float r21144 = r21143 * r21142;
        float r21145 = 3;
        float r21146 = r21145 * r21142;
        float r21147 = r21146 * r21142;
        float r21148 = x2;
        float r21149 = r21143 * r21148;
        float r21150 = r21147 + r21149;
        float r21151 = r21150 - r21142;
        float r21152 = r21142 * r21142;
        float r21153 = 1;
        float r21154 = r21152 + r21153;
        float r21155 = r21151 / r21154;
        float r21156 = r21144 * r21155;
        float r21157 = r21155 - r21145;
        float r21158 = r21156 * r21157;
        float r21159 = 4;
        float r21160 = r21159 * r21155;
        float r21161 = 6;
        float r21162 = r21160 - r21161;
        float r21163 = r21152 * r21162;
        float r21164 = r21158 + r21163;
        float r21165 = r21164 * r21154;
        float r21166 = r21147 * r21155;
        float r21167 = r21165 + r21166;
        float r21168 = r21152 * r21142;
        float r21169 = r21167 + r21168;
        float r21170 = r21169 + r21142;
        float r21171 = r21147 - r21149;
        float r21172 = r21171 - r21142;
        float r21173 = r21172 / r21154;
        float r21174 = r21145 * r21173;
        float r21175 = r21170 + r21174;
        float r21176 = r21142 + r21175;
        return r21176;
}

double f_id(double x1, double x2) {
        double r21177 = x1;
        double r21178 = 2;
        double r21179 = r21178 * r21177;
        double r21180 = 3;
        double r21181 = r21180 * r21177;
        double r21182 = r21181 * r21177;
        double r21183 = x2;
        double r21184 = r21178 * r21183;
        double r21185 = r21182 + r21184;
        double r21186 = r21185 - r21177;
        double r21187 = r21177 * r21177;
        double r21188 = 1;
        double r21189 = r21187 + r21188;
        double r21190 = r21186 / r21189;
        double r21191 = r21179 * r21190;
        double r21192 = r21190 - r21180;
        double r21193 = r21191 * r21192;
        double r21194 = 4;
        double r21195 = r21194 * r21190;
        double r21196 = 6;
        double r21197 = r21195 - r21196;
        double r21198 = r21187 * r21197;
        double r21199 = r21193 + r21198;
        double r21200 = r21199 * r21189;
        double r21201 = r21182 * r21190;
        double r21202 = r21200 + r21201;
        double r21203 = r21187 * r21177;
        double r21204 = r21202 + r21203;
        double r21205 = r21204 + r21177;
        double r21206 = r21182 - r21184;
        double r21207 = r21206 - r21177;
        double r21208 = r21207 / r21189;
        double r21209 = r21180 * r21208;
        double r21210 = r21205 + r21209;
        double r21211 = r21177 + r21210;
        return r21211;
}


double f_of(float x1, float x2) {
        float r21212 = x1;
        float r21213 = 3;
        float r21214 = r21212 * r21212;
        float r21215 = r21214 * r21213;
        float r21216 = x2;
        float r21217 = 2;
        float r21218 = fma(r21216, r21217, r21212);
        float r21219 = r21215 - r21218;
        float r21220 = 1;
        float r21221 = fma(r21212, r21212, r21220);
        float r21222 = r21219 / r21221;
        float r21223 = r21213 * r21212;
        float r21224 = r21216 * r21217;
        float r21225 = fma(r21223, r21212, r21224);
        float r21226 = cbrt(r21225);
        float r21227 = r21226 * r21226;
        float r21228 = sqrt(r21221);
        float r21229 = r21227 / r21228;
        float r21230 = r21226 / r21228;
        float r21231 = r21212 / r21221;
        float r21232 = r21213 + r21231;
        float r21233 = -r21232;
        float r21234 = fma(r21229, r21230, r21233);
        float r21235 = r21217 * r21212;
        float r21236 = r21234 * r21235;
        float r21237 = r21224 - r21212;
        float r21238 = fma(r21214, r21213, r21237);
        float r21239 = r21238 / r21221;
        float r21240 = 4;
        float r21241 = r21221 / r21240;
        float r21242 = r21238 / r21241;
        float r21243 = 6;
        float r21244 = -r21243;
        float r21245 = r21214 * r21244;
        float r21246 = fma(r21214, r21242, r21245);
        float r21247 = fma(r21236, r21239, r21246);
        float r21248 = r21239 * r21215;
        float r21249 = fma(r21247, r21221, r21248);
        float r21250 = fma(r21221, r21212, r21249);
        float r21251 = fma(r21213, r21222, r21250);
        float r21252 = r21212 + r21251;
        return r21252;
}

double f_od(double x1, double x2) {
        double r21253 = x1;
        double r21254 = 3;
        double r21255 = r21253 * r21253;
        double r21256 = r21255 * r21254;
        double r21257 = x2;
        double r21258 = 2;
        double r21259 = fma(r21257, r21258, r21253);
        double r21260 = r21256 - r21259;
        double r21261 = 1;
        double r21262 = fma(r21253, r21253, r21261);
        double r21263 = r21260 / r21262;
        double r21264 = r21254 * r21253;
        double r21265 = r21257 * r21258;
        double r21266 = fma(r21264, r21253, r21265);
        double r21267 = cbrt(r21266);
        double r21268 = r21267 * r21267;
        double r21269 = sqrt(r21262);
        double r21270 = r21268 / r21269;
        double r21271 = r21267 / r21269;
        double r21272 = r21253 / r21262;
        double r21273 = r21254 + r21272;
        double r21274 = -r21273;
        double r21275 = fma(r21270, r21271, r21274);
        double r21276 = r21258 * r21253;
        double r21277 = r21275 * r21276;
        double r21278 = r21265 - r21253;
        double r21279 = fma(r21255, r21254, r21278);
        double r21280 = r21279 / r21262;
        double r21281 = 4;
        double r21282 = r21262 / r21281;
        double r21283 = r21279 / r21282;
        double r21284 = 6;
        double r21285 = -r21284;
        double r21286 = r21255 * r21285;
        double r21287 = fma(r21255, r21283, r21286);
        double r21288 = fma(r21277, r21280, r21287);
        double r21289 = r21280 * r21256;
        double r21290 = fma(r21288, r21262, r21289);
        double r21291 = fma(r21262, r21253, r21290);
        double r21292 = fma(r21254, r21263, r21291);
        double r21293 = r21253 + r21292;
        return r21293;
}

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 r21294, r21295, r21296, r21297, r21298, r21299, r21300, r21301, r21302, r21303, r21304, r21305, r21306, r21307, r21308, r21309, r21310, r21311, r21312, r21313, r21314, r21315, r21316, r21317, r21318, r21319, r21320, r21321, r21322, r21323, r21324, r21325, r21326, r21327, r21328;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21294);
        mpfr_init_set_str(r21295, "2", 10, MPFR_RNDN);
        mpfr_init(r21296);
        mpfr_init_set_str(r21297, "3", 10, MPFR_RNDN);
        mpfr_init(r21298);
        mpfr_init(r21299);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init_set_str(r21305, "1", 10, MPFR_RNDN);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init_set_str(r21311, "4", 10, MPFR_RNDN);
        mpfr_init(r21312);
        mpfr_init_set_str(r21313, "6", 10, MPFR_RNDN);
        mpfr_init(r21314);
        mpfr_init(r21315);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init(r21319);
        mpfr_init(r21320);
        mpfr_init(r21321);
        mpfr_init(r21322);
        mpfr_init(r21323);
        mpfr_init(r21324);
        mpfr_init(r21325);
        mpfr_init(r21326);
        mpfr_init(r21327);
        mpfr_init(r21328);
}

double f_im(double x1, double x2) {
        mpfr_set_d(r21294, x1, MPFR_RNDN);
        ;
        mpfr_mul(r21296, r21295, r21294, MPFR_RNDN);
        ;
        mpfr_mul(r21298, r21297, r21294, MPFR_RNDN);
        mpfr_mul(r21299, r21298, r21294, MPFR_RNDN);
        mpfr_set_d(r21300, x2, MPFR_RNDN);
        mpfr_mul(r21301, r21295, r21300, MPFR_RNDN);
        mpfr_add(r21302, r21299, r21301, MPFR_RNDN);
        mpfr_sub(r21303, r21302, r21294, MPFR_RNDN);
        mpfr_mul(r21304, r21294, r21294, MPFR_RNDN);
        ;
        mpfr_add(r21306, r21304, r21305, MPFR_RNDN);
        mpfr_div(r21307, r21303, r21306, MPFR_RNDN);
        mpfr_mul(r21308, r21296, r21307, MPFR_RNDN);
        mpfr_sub(r21309, r21307, r21297, MPFR_RNDN);
        mpfr_mul(r21310, r21308, r21309, MPFR_RNDN);
        ;
        mpfr_mul(r21312, r21311, r21307, MPFR_RNDN);
        ;
        mpfr_sub(r21314, r21312, r21313, MPFR_RNDN);
        mpfr_mul(r21315, r21304, r21314, MPFR_RNDN);
        mpfr_add(r21316, r21310, r21315, MPFR_RNDN);
        mpfr_mul(r21317, r21316, r21306, MPFR_RNDN);
        mpfr_mul(r21318, r21299, r21307, MPFR_RNDN);
        mpfr_add(r21319, r21317, r21318, MPFR_RNDN);
        mpfr_mul(r21320, r21304, r21294, MPFR_RNDN);
        mpfr_add(r21321, r21319, r21320, MPFR_RNDN);
        mpfr_add(r21322, r21321, r21294, MPFR_RNDN);
        mpfr_sub(r21323, r21299, r21301, MPFR_RNDN);
        mpfr_sub(r21324, r21323, r21294, MPFR_RNDN);
        mpfr_div(r21325, r21324, r21306, MPFR_RNDN);
        mpfr_mul(r21326, r21297, r21325, MPFR_RNDN);
        mpfr_add(r21327, r21322, r21326, MPFR_RNDN);
        mpfr_add(r21328, r21294, r21327, MPFR_RNDN);
        return mpfr_get_d(r21328, MPFR_RNDN);
}

static mpfr_t r21329, r21330, r21331, r21332, r21333, r21334, r21335, r21336, r21337, r21338, r21339, r21340, r21341, r21342, r21343, r21344, r21345, r21346, r21347, r21348, r21349, r21350, r21351, r21352, r21353, r21354, r21355, r21356, r21357, r21358, r21359, r21360, r21361, r21362, r21363, r21364, r21365, r21366, r21367, r21368, r21369;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21329);
        mpfr_init_set_str(r21330, "3", 10, MPFR_RNDN);
        mpfr_init(r21331);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init_set_str(r21334, "2", 10, MPFR_RNDN);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init_set_str(r21337, "1", 10, MPFR_RNDN);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init(r21341);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
        mpfr_init(r21348);
        mpfr_init(r21349);
        mpfr_init(r21350);
        mpfr_init(r21351);
        mpfr_init(r21352);
        mpfr_init(r21353);
        mpfr_init(r21354);
        mpfr_init(r21355);
        mpfr_init(r21356);
        mpfr_init_set_str(r21357, "4", 10, MPFR_RNDN);
        mpfr_init(r21358);
        mpfr_init(r21359);
        mpfr_init_set_str(r21360, "6", 10, MPFR_RNDN);
        mpfr_init(r21361);
        mpfr_init(r21362);
        mpfr_init(r21363);
        mpfr_init(r21364);
        mpfr_init(r21365);
        mpfr_init(r21366);
        mpfr_init(r21367);
        mpfr_init(r21368);
        mpfr_init(r21369);
}

double f_fm(double x1, double x2) {
        mpfr_set_d(r21329, x1, MPFR_RNDN);
        ;
        mpfr_mul(r21331, r21329, r21329, MPFR_RNDN);
        mpfr_mul(r21332, r21331, r21330, MPFR_RNDN);
        mpfr_set_d(r21333, x2, MPFR_RNDN);
        ;
        mpfr_fma(r21335, r21333, r21334, r21329, MPFR_RNDN);
        mpfr_sub(r21336, r21332, r21335, MPFR_RNDN);
        ;
        mpfr_fma(r21338, r21329, r21329, r21337, MPFR_RNDN);
        mpfr_div(r21339, r21336, r21338, MPFR_RNDN);
        mpfr_mul(r21340, r21330, r21329, MPFR_RNDN);
        mpfr_mul(r21341, r21333, r21334, MPFR_RNDN);
        mpfr_fma(r21342, r21340, r21329, r21341, MPFR_RNDN);
        mpfr_cbrt(r21343, r21342, MPFR_RNDN);
        mpfr_mul(r21344, r21343, r21343, MPFR_RNDN);
        mpfr_sqrt(r21345, r21338, MPFR_RNDN);
        mpfr_div(r21346, r21344, r21345, MPFR_RNDN);
        mpfr_div(r21347, r21343, r21345, MPFR_RNDN);
        mpfr_div(r21348, r21329, r21338, MPFR_RNDN);
        mpfr_add(r21349, r21330, r21348, MPFR_RNDN);
        mpfr_neg(r21350, r21349, MPFR_RNDN);
        mpfr_fma(r21351, r21346, r21347, r21350, MPFR_RNDN);
        mpfr_mul(r21352, r21334, r21329, MPFR_RNDN);
        mpfr_mul(r21353, r21351, r21352, MPFR_RNDN);
        mpfr_sub(r21354, r21341, r21329, MPFR_RNDN);
        mpfr_fma(r21355, r21331, r21330, r21354, MPFR_RNDN);
        mpfr_div(r21356, r21355, r21338, MPFR_RNDN);
        ;
        mpfr_div(r21358, r21338, r21357, MPFR_RNDN);
        mpfr_div(r21359, r21355, r21358, MPFR_RNDN);
        ;
        mpfr_neg(r21361, r21360, MPFR_RNDN);
        mpfr_mul(r21362, r21331, r21361, MPFR_RNDN);
        mpfr_fma(r21363, r21331, r21359, r21362, MPFR_RNDN);
        mpfr_fma(r21364, r21353, r21356, r21363, MPFR_RNDN);
        mpfr_mul(r21365, r21356, r21332, MPFR_RNDN);
        mpfr_fma(r21366, r21364, r21338, r21365, MPFR_RNDN);
        mpfr_fma(r21367, r21338, r21329, r21366, MPFR_RNDN);
        mpfr_fma(r21368, r21330, r21339, r21367, MPFR_RNDN);
        mpfr_add(r21369, r21329, r21368, MPFR_RNDN);
        return mpfr_get_d(r21369, MPFR_RNDN);
}

static mpfr_t r21370, r21371, r21372, r21373, r21374, r21375, r21376, r21377, r21378, r21379, r21380, r21381, r21382, r21383, r21384, r21385, r21386, r21387, r21388, r21389, r21390, r21391, r21392, r21393, r21394, r21395, r21396, r21397, r21398, r21399, r21400, r21401, r21402, r21403, r21404, r21405, r21406, r21407, r21408, r21409, r21410;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21370);
        mpfr_init_set_str(r21371, "3", 10, MPFR_RNDN);
        mpfr_init(r21372);
        mpfr_init(r21373);
        mpfr_init(r21374);
        mpfr_init_set_str(r21375, "2", 10, MPFR_RNDN);
        mpfr_init(r21376);
        mpfr_init(r21377);
        mpfr_init_set_str(r21378, "1", 10, MPFR_RNDN);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
        mpfr_init(r21383);
        mpfr_init(r21384);
        mpfr_init(r21385);
        mpfr_init(r21386);
        mpfr_init(r21387);
        mpfr_init(r21388);
        mpfr_init(r21389);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init(r21392);
        mpfr_init(r21393);
        mpfr_init(r21394);
        mpfr_init(r21395);
        mpfr_init(r21396);
        mpfr_init(r21397);
        mpfr_init_set_str(r21398, "4", 10, MPFR_RNDN);
        mpfr_init(r21399);
        mpfr_init(r21400);
        mpfr_init_set_str(r21401, "6", 10, MPFR_RNDN);
        mpfr_init(r21402);
        mpfr_init(r21403);
        mpfr_init(r21404);
        mpfr_init(r21405);
        mpfr_init(r21406);
        mpfr_init(r21407);
        mpfr_init(r21408);
        mpfr_init(r21409);
        mpfr_init(r21410);
}

double f_dm(double x1, double x2) {
        mpfr_set_d(r21370, x1, MPFR_RNDN);
        ;
        mpfr_mul(r21372, r21370, r21370, MPFR_RNDN);
        mpfr_mul(r21373, r21372, r21371, MPFR_RNDN);
        mpfr_set_d(r21374, x2, MPFR_RNDN);
        ;
        mpfr_fma(r21376, r21374, r21375, r21370, MPFR_RNDN);
        mpfr_sub(r21377, r21373, r21376, MPFR_RNDN);
        ;
        mpfr_fma(r21379, r21370, r21370, r21378, MPFR_RNDN);
        mpfr_div(r21380, r21377, r21379, MPFR_RNDN);
        mpfr_mul(r21381, r21371, r21370, MPFR_RNDN);
        mpfr_mul(r21382, r21374, r21375, MPFR_RNDN);
        mpfr_fma(r21383, r21381, r21370, r21382, MPFR_RNDN);
        mpfr_cbrt(r21384, r21383, MPFR_RNDN);
        mpfr_mul(r21385, r21384, r21384, MPFR_RNDN);
        mpfr_sqrt(r21386, r21379, MPFR_RNDN);
        mpfr_div(r21387, r21385, r21386, MPFR_RNDN);
        mpfr_div(r21388, r21384, r21386, MPFR_RNDN);
        mpfr_div(r21389, r21370, r21379, MPFR_RNDN);
        mpfr_add(r21390, r21371, r21389, MPFR_RNDN);
        mpfr_neg(r21391, r21390, MPFR_RNDN);
        mpfr_fma(r21392, r21387, r21388, r21391, MPFR_RNDN);
        mpfr_mul(r21393, r21375, r21370, MPFR_RNDN);
        mpfr_mul(r21394, r21392, r21393, MPFR_RNDN);
        mpfr_sub(r21395, r21382, r21370, MPFR_RNDN);
        mpfr_fma(r21396, r21372, r21371, r21395, MPFR_RNDN);
        mpfr_div(r21397, r21396, r21379, MPFR_RNDN);
        ;
        mpfr_div(r21399, r21379, r21398, MPFR_RNDN);
        mpfr_div(r21400, r21396, r21399, MPFR_RNDN);
        ;
        mpfr_neg(r21402, r21401, MPFR_RNDN);
        mpfr_mul(r21403, r21372, r21402, MPFR_RNDN);
        mpfr_fma(r21404, r21372, r21400, r21403, MPFR_RNDN);
        mpfr_fma(r21405, r21394, r21397, r21404, MPFR_RNDN);
        mpfr_mul(r21406, r21397, r21373, MPFR_RNDN);
        mpfr_fma(r21407, r21405, r21379, r21406, MPFR_RNDN);
        mpfr_fma(r21408, r21379, r21370, r21407, MPFR_RNDN);
        mpfr_fma(r21409, r21371, r21380, r21408, MPFR_RNDN);
        mpfr_add(r21410, r21370, r21409, MPFR_RNDN);
        return mpfr_get_d(r21410, MPFR_RNDN);
}

