#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 r8168 = x1;
        float r8169 = 2;
        float r8170 = r8169 * r8168;
        float r8171 = 3;
        float r8172 = r8171 * r8168;
        float r8173 = r8172 * r8168;
        float r8174 = x2;
        float r8175 = r8169 * r8174;
        float r8176 = r8173 + r8175;
        float r8177 = r8176 - r8168;
        float r8178 = r8168 * r8168;
        float r8179 = 1;
        float r8180 = r8178 + r8179;
        float r8181 = r8177 / r8180;
        float r8182 = r8170 * r8181;
        float r8183 = r8181 - r8171;
        float r8184 = r8182 * r8183;
        float r8185 = 4;
        float r8186 = r8185 * r8181;
        float r8187 = 6;
        float r8188 = r8186 - r8187;
        float r8189 = r8178 * r8188;
        float r8190 = r8184 + r8189;
        float r8191 = r8190 * r8180;
        float r8192 = r8173 * r8181;
        float r8193 = r8191 + r8192;
        float r8194 = r8178 * r8168;
        float r8195 = r8193 + r8194;
        float r8196 = r8195 + r8168;
        float r8197 = r8173 - r8175;
        float r8198 = r8197 - r8168;
        float r8199 = r8198 / r8180;
        float r8200 = r8171 * r8199;
        float r8201 = r8196 + r8200;
        float r8202 = r8168 + r8201;
        return r8202;
}

double f_id(double x1, double x2) {
        double r8203 = x1;
        double r8204 = 2;
        double r8205 = r8204 * r8203;
        double r8206 = 3;
        double r8207 = r8206 * r8203;
        double r8208 = r8207 * r8203;
        double r8209 = x2;
        double r8210 = r8204 * r8209;
        double r8211 = r8208 + r8210;
        double r8212 = r8211 - r8203;
        double r8213 = r8203 * r8203;
        double r8214 = 1;
        double r8215 = r8213 + r8214;
        double r8216 = r8212 / r8215;
        double r8217 = r8205 * r8216;
        double r8218 = r8216 - r8206;
        double r8219 = r8217 * r8218;
        double r8220 = 4;
        double r8221 = r8220 * r8216;
        double r8222 = 6;
        double r8223 = r8221 - r8222;
        double r8224 = r8213 * r8223;
        double r8225 = r8219 + r8224;
        double r8226 = r8225 * r8215;
        double r8227 = r8208 * r8216;
        double r8228 = r8226 + r8227;
        double r8229 = r8213 * r8203;
        double r8230 = r8228 + r8229;
        double r8231 = r8230 + r8203;
        double r8232 = r8208 - r8210;
        double r8233 = r8232 - r8203;
        double r8234 = r8233 / r8215;
        double r8235 = r8206 * r8234;
        double r8236 = r8231 + r8235;
        double r8237 = r8203 + r8236;
        return r8237;
}


double f_of(float x1, float x2) {
        float r8238 = 3;
        float r8239 = x1;
        float r8240 = r8238 * r8239;
        float r8241 = r8240 * r8239;
        float r8242 = 2;
        float r8243 = x2;
        float r8244 = fma(r8242, r8243, r8239);
        float r8245 = r8241 - r8244;
        float r8246 = 1;
        float r8247 = fma(r8239, r8239, r8246);
        float r8248 = r8245 / r8247;
        float r8249 = fma(r8248, r8238, r8239);
        float r8250 = r8239 * r8239;
        float r8251 = 4;
        float r8252 = r8251 / r8247;
        float r8253 = r8243 * r8242;
        float r8254 = r8253 - r8239;
        float r8255 = fma(r8240, r8239, r8254);
        float r8256 = r8252 * r8255;
        float r8257 = 6;
        float r8258 = r8256 - r8257;
        float r8259 = r8242 * r8243;
        float r8260 = fma(r8250, r8238, r8259);
        float r8261 = r8260 - r8239;
        float r8262 = r8247 / r8239;
        float r8263 = r8262 / r8242;
        float r8264 = r8261 / r8263;
        float r8265 = fma(r8240, r8239, r8253);
        float r8266 = r8265 / r8247;
        float r8267 = r8239 / r8247;
        float r8268 = r8267 + r8238;
        float r8269 = r8266 - r8268;
        float r8270 = r8264 * r8269;
        float r8271 = fma(r8250, r8258, r8270);
        float r8272 = r8255 / r8247;
        float r8273 = fma(r8239, r8250, r8239);
        float r8274 = fma(r8241, r8272, r8273);
        float r8275 = fma(r8271, r8247, r8274);
        float r8276 = r8249 + r8275;
        return r8276;
}

double f_od(double x1, double x2) {
        double r8277 = 3;
        double r8278 = x1;
        double r8279 = r8277 * r8278;
        double r8280 = r8279 * r8278;
        double r8281 = 2;
        double r8282 = x2;
        double r8283 = fma(r8281, r8282, r8278);
        double r8284 = r8280 - r8283;
        double r8285 = 1;
        double r8286 = fma(r8278, r8278, r8285);
        double r8287 = r8284 / r8286;
        double r8288 = fma(r8287, r8277, r8278);
        double r8289 = r8278 * r8278;
        double r8290 = 4;
        double r8291 = r8290 / r8286;
        double r8292 = r8282 * r8281;
        double r8293 = r8292 - r8278;
        double r8294 = fma(r8279, r8278, r8293);
        double r8295 = r8291 * r8294;
        double r8296 = 6;
        double r8297 = r8295 - r8296;
        double r8298 = r8281 * r8282;
        double r8299 = fma(r8289, r8277, r8298);
        double r8300 = r8299 - r8278;
        double r8301 = r8286 / r8278;
        double r8302 = r8301 / r8281;
        double r8303 = r8300 / r8302;
        double r8304 = fma(r8279, r8278, r8292);
        double r8305 = r8304 / r8286;
        double r8306 = r8278 / r8286;
        double r8307 = r8306 + r8277;
        double r8308 = r8305 - r8307;
        double r8309 = r8303 * r8308;
        double r8310 = fma(r8289, r8297, r8309);
        double r8311 = r8294 / r8286;
        double r8312 = fma(r8278, r8289, r8278);
        double r8313 = fma(r8280, r8311, r8312);
        double r8314 = fma(r8310, r8286, r8313);
        double r8315 = r8288 + r8314;
        return r8315;
}

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 r8316, r8317, r8318, r8319, r8320, r8321, r8322, r8323, r8324, r8325, r8326, r8327, r8328, r8329, r8330, r8331, r8332, r8333, r8334, r8335, r8336, r8337, r8338, r8339, r8340, r8341, r8342, r8343, r8344, r8345, r8346, r8347, r8348, r8349, r8350;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8316);
        mpfr_init_set_str(r8317, "2", 10, MPFR_RNDN);
        mpfr_init(r8318);
        mpfr_init_set_str(r8319, "3", 10, MPFR_RNDN);
        mpfr_init(r8320);
        mpfr_init(r8321);
        mpfr_init(r8322);
        mpfr_init(r8323);
        mpfr_init(r8324);
        mpfr_init(r8325);
        mpfr_init(r8326);
        mpfr_init_set_str(r8327, "1", 10, MPFR_RNDN);
        mpfr_init(r8328);
        mpfr_init(r8329);
        mpfr_init(r8330);
        mpfr_init(r8331);
        mpfr_init(r8332);
        mpfr_init_set_str(r8333, "4", 10, MPFR_RNDN);
        mpfr_init(r8334);
        mpfr_init_set_str(r8335, "6", 10, MPFR_RNDN);
        mpfr_init(r8336);
        mpfr_init(r8337);
        mpfr_init(r8338);
        mpfr_init(r8339);
        mpfr_init(r8340);
        mpfr_init(r8341);
        mpfr_init(r8342);
        mpfr_init(r8343);
        mpfr_init(r8344);
        mpfr_init(r8345);
        mpfr_init(r8346);
        mpfr_init(r8347);
        mpfr_init(r8348);
        mpfr_init(r8349);
        mpfr_init(r8350);
}

double f_im(double x1, double x2) {
        mpfr_set_d(r8316, x1, MPFR_RNDN);
        ;
        mpfr_mul(r8318, r8317, r8316, MPFR_RNDN);
        ;
        mpfr_mul(r8320, r8319, r8316, MPFR_RNDN);
        mpfr_mul(r8321, r8320, r8316, MPFR_RNDN);
        mpfr_set_d(r8322, x2, MPFR_RNDN);
        mpfr_mul(r8323, r8317, r8322, MPFR_RNDN);
        mpfr_add(r8324, r8321, r8323, MPFR_RNDN);
        mpfr_sub(r8325, r8324, r8316, MPFR_RNDN);
        mpfr_mul(r8326, r8316, r8316, MPFR_RNDN);
        ;
        mpfr_add(r8328, r8326, r8327, MPFR_RNDN);
        mpfr_div(r8329, r8325, r8328, MPFR_RNDN);
        mpfr_mul(r8330, r8318, r8329, MPFR_RNDN);
        mpfr_sub(r8331, r8329, r8319, MPFR_RNDN);
        mpfr_mul(r8332, r8330, r8331, MPFR_RNDN);
        ;
        mpfr_mul(r8334, r8333, r8329, MPFR_RNDN);
        ;
        mpfr_sub(r8336, r8334, r8335, MPFR_RNDN);
        mpfr_mul(r8337, r8326, r8336, MPFR_RNDN);
        mpfr_add(r8338, r8332, r8337, MPFR_RNDN);
        mpfr_mul(r8339, r8338, r8328, MPFR_RNDN);
        mpfr_mul(r8340, r8321, r8329, MPFR_RNDN);
        mpfr_add(r8341, r8339, r8340, MPFR_RNDN);
        mpfr_mul(r8342, r8326, r8316, MPFR_RNDN);
        mpfr_add(r8343, r8341, r8342, MPFR_RNDN);
        mpfr_add(r8344, r8343, r8316, MPFR_RNDN);
        mpfr_sub(r8345, r8321, r8323, MPFR_RNDN);
        mpfr_sub(r8346, r8345, r8316, MPFR_RNDN);
        mpfr_div(r8347, r8346, r8328, MPFR_RNDN);
        mpfr_mul(r8348, r8319, r8347, MPFR_RNDN);
        mpfr_add(r8349, r8344, r8348, MPFR_RNDN);
        mpfr_add(r8350, r8316, r8349, MPFR_RNDN);
        return mpfr_get_d(r8350, MPFR_RNDN);
}

static mpfr_t r8351, r8352, r8353, r8354, r8355, r8356, r8357, r8358, r8359, r8360, r8361, r8362, r8363, r8364, r8365, r8366, r8367, r8368, r8369, r8370, r8371, r8372, r8373, r8374, r8375, r8376, r8377, r8378, r8379, r8380, r8381, r8382, r8383, r8384, r8385, r8386, r8387, r8388, r8389;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8351, "3", 10, MPFR_RNDN);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init(r8354);
        mpfr_init_set_str(r8355, "2", 10, MPFR_RNDN);
        mpfr_init(r8356);
        mpfr_init(r8357);
        mpfr_init(r8358);
        mpfr_init_set_str(r8359, "1", 10, MPFR_RNDN);
        mpfr_init(r8360);
        mpfr_init(r8361);
        mpfr_init(r8362);
        mpfr_init(r8363);
        mpfr_init_set_str(r8364, "4", 10, MPFR_RNDN);
        mpfr_init(r8365);
        mpfr_init(r8366);
        mpfr_init(r8367);
        mpfr_init(r8368);
        mpfr_init(r8369);
        mpfr_init_set_str(r8370, "6", 10, MPFR_RNDN);
        mpfr_init(r8371);
        mpfr_init(r8372);
        mpfr_init(r8373);
        mpfr_init(r8374);
        mpfr_init(r8375);
        mpfr_init(r8376);
        mpfr_init(r8377);
        mpfr_init(r8378);
        mpfr_init(r8379);
        mpfr_init(r8380);
        mpfr_init(r8381);
        mpfr_init(r8382);
        mpfr_init(r8383);
        mpfr_init(r8384);
        mpfr_init(r8385);
        mpfr_init(r8386);
        mpfr_init(r8387);
        mpfr_init(r8388);
        mpfr_init(r8389);
}

double f_fm(double x1, double x2) {
        ;
        mpfr_set_d(r8352, x1, MPFR_RNDN);
        mpfr_mul(r8353, r8351, r8352, MPFR_RNDN);
        mpfr_mul(r8354, r8353, r8352, MPFR_RNDN);
        ;
        mpfr_set_d(r8356, x2, MPFR_RNDN);
        mpfr_fma(r8357, r8355, r8356, r8352, MPFR_RNDN);
        mpfr_sub(r8358, r8354, r8357, MPFR_RNDN);
        ;
        mpfr_fma(r8360, r8352, r8352, r8359, MPFR_RNDN);
        mpfr_div(r8361, r8358, r8360, MPFR_RNDN);
        mpfr_fma(r8362, r8361, r8351, r8352, MPFR_RNDN);
        mpfr_mul(r8363, r8352, r8352, MPFR_RNDN);
        ;
        mpfr_div(r8365, r8364, r8360, MPFR_RNDN);
        mpfr_mul(r8366, r8356, r8355, MPFR_RNDN);
        mpfr_sub(r8367, r8366, r8352, MPFR_RNDN);
        mpfr_fma(r8368, r8353, r8352, r8367, MPFR_RNDN);
        mpfr_mul(r8369, r8365, r8368, MPFR_RNDN);
        ;
        mpfr_sub(r8371, r8369, r8370, MPFR_RNDN);
        mpfr_mul(r8372, r8355, r8356, MPFR_RNDN);
        mpfr_fma(r8373, r8363, r8351, r8372, MPFR_RNDN);
        mpfr_sub(r8374, r8373, r8352, MPFR_RNDN);
        mpfr_div(r8375, r8360, r8352, MPFR_RNDN);
        mpfr_div(r8376, r8375, r8355, MPFR_RNDN);
        mpfr_div(r8377, r8374, r8376, MPFR_RNDN);
        mpfr_fma(r8378, r8353, r8352, r8366, MPFR_RNDN);
        mpfr_div(r8379, r8378, r8360, MPFR_RNDN);
        mpfr_div(r8380, r8352, r8360, MPFR_RNDN);
        mpfr_add(r8381, r8380, r8351, MPFR_RNDN);
        mpfr_sub(r8382, r8379, r8381, MPFR_RNDN);
        mpfr_mul(r8383, r8377, r8382, MPFR_RNDN);
        mpfr_fma(r8384, r8363, r8371, r8383, MPFR_RNDN);
        mpfr_div(r8385, r8368, r8360, MPFR_RNDN);
        mpfr_fma(r8386, r8352, r8363, r8352, MPFR_RNDN);
        mpfr_fma(r8387, r8354, r8385, r8386, MPFR_RNDN);
        mpfr_fma(r8388, r8384, r8360, r8387, MPFR_RNDN);
        mpfr_add(r8389, r8362, r8388, MPFR_RNDN);
        return mpfr_get_d(r8389, MPFR_RNDN);
}

static mpfr_t r8390, r8391, r8392, r8393, r8394, r8395, r8396, r8397, r8398, r8399, r8400, r8401, r8402, r8403, r8404, r8405, r8406, r8407, r8408, r8409, r8410, r8411, r8412, r8413, r8414, r8415, r8416, r8417, r8418, r8419, r8420, r8421, r8422, r8423, r8424, r8425, r8426, r8427, r8428;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8390, "3", 10, MPFR_RNDN);
        mpfr_init(r8391);
        mpfr_init(r8392);
        mpfr_init(r8393);
        mpfr_init_set_str(r8394, "2", 10, MPFR_RNDN);
        mpfr_init(r8395);
        mpfr_init(r8396);
        mpfr_init(r8397);
        mpfr_init_set_str(r8398, "1", 10, MPFR_RNDN);
        mpfr_init(r8399);
        mpfr_init(r8400);
        mpfr_init(r8401);
        mpfr_init(r8402);
        mpfr_init_set_str(r8403, "4", 10, MPFR_RNDN);
        mpfr_init(r8404);
        mpfr_init(r8405);
        mpfr_init(r8406);
        mpfr_init(r8407);
        mpfr_init(r8408);
        mpfr_init_set_str(r8409, "6", 10, MPFR_RNDN);
        mpfr_init(r8410);
        mpfr_init(r8411);
        mpfr_init(r8412);
        mpfr_init(r8413);
        mpfr_init(r8414);
        mpfr_init(r8415);
        mpfr_init(r8416);
        mpfr_init(r8417);
        mpfr_init(r8418);
        mpfr_init(r8419);
        mpfr_init(r8420);
        mpfr_init(r8421);
        mpfr_init(r8422);
        mpfr_init(r8423);
        mpfr_init(r8424);
        mpfr_init(r8425);
        mpfr_init(r8426);
        mpfr_init(r8427);
        mpfr_init(r8428);
}

double f_dm(double x1, double x2) {
        ;
        mpfr_set_d(r8391, x1, MPFR_RNDN);
        mpfr_mul(r8392, r8390, r8391, MPFR_RNDN);
        mpfr_mul(r8393, r8392, r8391, MPFR_RNDN);
        ;
        mpfr_set_d(r8395, x2, MPFR_RNDN);
        mpfr_fma(r8396, r8394, r8395, r8391, MPFR_RNDN);
        mpfr_sub(r8397, r8393, r8396, MPFR_RNDN);
        ;
        mpfr_fma(r8399, r8391, r8391, r8398, MPFR_RNDN);
        mpfr_div(r8400, r8397, r8399, MPFR_RNDN);
        mpfr_fma(r8401, r8400, r8390, r8391, MPFR_RNDN);
        mpfr_mul(r8402, r8391, r8391, MPFR_RNDN);
        ;
        mpfr_div(r8404, r8403, r8399, MPFR_RNDN);
        mpfr_mul(r8405, r8395, r8394, MPFR_RNDN);
        mpfr_sub(r8406, r8405, r8391, MPFR_RNDN);
        mpfr_fma(r8407, r8392, r8391, r8406, MPFR_RNDN);
        mpfr_mul(r8408, r8404, r8407, MPFR_RNDN);
        ;
        mpfr_sub(r8410, r8408, r8409, MPFR_RNDN);
        mpfr_mul(r8411, r8394, r8395, MPFR_RNDN);
        mpfr_fma(r8412, r8402, r8390, r8411, MPFR_RNDN);
        mpfr_sub(r8413, r8412, r8391, MPFR_RNDN);
        mpfr_div(r8414, r8399, r8391, MPFR_RNDN);
        mpfr_div(r8415, r8414, r8394, MPFR_RNDN);
        mpfr_div(r8416, r8413, r8415, MPFR_RNDN);
        mpfr_fma(r8417, r8392, r8391, r8405, MPFR_RNDN);
        mpfr_div(r8418, r8417, r8399, MPFR_RNDN);
        mpfr_div(r8419, r8391, r8399, MPFR_RNDN);
        mpfr_add(r8420, r8419, r8390, MPFR_RNDN);
        mpfr_sub(r8421, r8418, r8420, MPFR_RNDN);
        mpfr_mul(r8422, r8416, r8421, MPFR_RNDN);
        mpfr_fma(r8423, r8402, r8410, r8422, MPFR_RNDN);
        mpfr_div(r8424, r8407, r8399, MPFR_RNDN);
        mpfr_fma(r8425, r8391, r8402, r8391, MPFR_RNDN);
        mpfr_fma(r8426, r8393, r8424, r8425, MPFR_RNDN);
        mpfr_fma(r8427, r8423, r8399, r8426, MPFR_RNDN);
        mpfr_add(r8428, r8401, r8427, MPFR_RNDN);
        return mpfr_get_d(r8428, MPFR_RNDN);
}

