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

char *name = "FastMath test1";

double f_if(float d) {
        float r28269 = d;
        float r28270 = 10;
        float r28271 = r28269 * r28270;
        float r28272 = 20;
        float r28273 = r28269 * r28272;
        float r28274 = r28271 + r28273;
        return r28274;
}

double f_id(double d) {
        double r28275 = d;
        double r28276 = 10;
        double r28277 = r28275 * r28276;
        double r28278 = 20;
        double r28279 = r28275 * r28278;
        double r28280 = r28277 + r28279;
        return r28280;
}


double f_of(float d) {
        float r28281 = 20;
        float r28282 = 10;
        float r28283 = r28281 + r28282;
        float r28284 = d;
        float r28285 = r28283 * r28284;
        return r28285;
}

double f_od(double d) {
        double r28286 = 20;
        double r28287 = 10;
        double r28288 = r28286 + r28287;
        double r28289 = d;
        double r28290 = r28288 * r28289;
        return r28290;
}

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 r28291, r28292, r28293, r28294, r28295, r28296;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28291);
        mpfr_init_set_str(r28292, "10", 10, MPFR_RNDN);
        mpfr_init(r28293);
        mpfr_init_set_str(r28294, "20", 10, MPFR_RNDN);
        mpfr_init(r28295);
        mpfr_init(r28296);
}

double f_im(double d) {
        mpfr_set_d(r28291, d, MPFR_RNDN);
        ;
        mpfr_mul(r28293, r28291, r28292, MPFR_RNDN);
        ;
        mpfr_mul(r28295, r28291, r28294, MPFR_RNDN);
        mpfr_add(r28296, r28293, r28295, MPFR_RNDN);
        return mpfr_get_d(r28296, MPFR_RNDN);
}

static mpfr_t r28297, r28298, r28299, r28300, r28301;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r28297, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28298, "10", 10, MPFR_RNDN);
        mpfr_init(r28299);
        mpfr_init(r28300);
        mpfr_init(r28301);
}

double f_fm(double d) {
        ;
        ;
        mpfr_add(r28299, r28297, r28298, MPFR_RNDN);
        mpfr_set_d(r28300, d, MPFR_RNDN);
        mpfr_mul(r28301, r28299, r28300, MPFR_RNDN);
        return mpfr_get_d(r28301, MPFR_RNDN);
}

static mpfr_t r28302, r28303, r28304, r28305, r28306;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r28302, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28303, "10", 10, MPFR_RNDN);
        mpfr_init(r28304);
        mpfr_init(r28305);
        mpfr_init(r28306);
}

double f_dm(double d) {
        ;
        ;
        mpfr_add(r28304, r28302, r28303, MPFR_RNDN);
        mpfr_set_d(r28305, d, MPFR_RNDN);
        mpfr_mul(r28306, r28304, r28305, MPFR_RNDN);
        return mpfr_get_d(r28306, MPFR_RNDN);
}

