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

char *name = "FastMath test2";

double f_if(float d1, float d2) {
        float r12254 = d1;
        float r12255 = 10;
        float r12256 = r12254 * r12255;
        float r12257 = d2;
        float r12258 = r12254 * r12257;
        float r12259 = r12256 + r12258;
        float r12260 = 20;
        float r12261 = r12254 * r12260;
        float r12262 = r12259 + r12261;
        return r12262;
}

double f_id(double d1, double d2) {
        double r12263 = d1;
        double r12264 = 10;
        double r12265 = r12263 * r12264;
        double r12266 = d2;
        double r12267 = r12263 * r12266;
        double r12268 = r12265 + r12267;
        double r12269 = 20;
        double r12270 = r12263 * r12269;
        double r12271 = r12268 + r12270;
        return r12271;
}


double f_of(float d1, float d2) {
        float r12272 = d2;
        float r12273 = 30;
        float r12274 = r12272 + r12273;
        float r12275 = d1;
        float r12276 = r12274 * r12275;
        return r12276;
}

double f_od(double d1, double d2) {
        double r12277 = d2;
        double r12278 = 30;
        double r12279 = r12277 + r12278;
        double r12280 = d1;
        double r12281 = r12279 * r12280;
        return r12281;
}

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 r12282, r12283, r12284, r12285, r12286, r12287, r12288, r12289, r12290;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12282);
        mpfr_init_set_str(r12283, "10", 10, MPFR_RNDN);
        mpfr_init(r12284);
        mpfr_init(r12285);
        mpfr_init(r12286);
        mpfr_init(r12287);
        mpfr_init_set_str(r12288, "20", 10, MPFR_RNDN);
        mpfr_init(r12289);
        mpfr_init(r12290);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r12282, d1, MPFR_RNDN);
        ;
        mpfr_mul(r12284, r12282, r12283, MPFR_RNDN);
        mpfr_set_d(r12285, d2, MPFR_RNDN);
        mpfr_mul(r12286, r12282, r12285, MPFR_RNDN);
        mpfr_add(r12287, r12284, r12286, MPFR_RNDN);
        ;
        mpfr_mul(r12289, r12282, r12288, MPFR_RNDN);
        mpfr_add(r12290, r12287, r12289, MPFR_RNDN);
        return mpfr_get_d(r12290, MPFR_RNDN);
}

static mpfr_t r12291, r12292, r12293, r12294, r12295;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12291);
        mpfr_init_set_str(r12292, "30", 10, MPFR_RNDN);
        mpfr_init(r12293);
        mpfr_init(r12294);
        mpfr_init(r12295);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r12291, d2, MPFR_RNDN);
        ;
        mpfr_add(r12293, r12291, r12292, MPFR_RNDN);
        mpfr_set_d(r12294, d1, MPFR_RNDN);
        mpfr_mul(r12295, r12293, r12294, MPFR_RNDN);
        return mpfr_get_d(r12295, MPFR_RNDN);
}

static mpfr_t r12296, r12297, r12298, r12299, r12300;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12296);
        mpfr_init_set_str(r12297, "30", 10, MPFR_RNDN);
        mpfr_init(r12298);
        mpfr_init(r12299);
        mpfr_init(r12300);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r12296, d2, MPFR_RNDN);
        ;
        mpfr_add(r12298, r12296, r12297, MPFR_RNDN);
        mpfr_set_d(r12299, d1, MPFR_RNDN);
        mpfr_mul(r12300, r12298, r12299, MPFR_RNDN);
        return mpfr_get_d(r12300, MPFR_RNDN);
}

