#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 r51240 = d;
        float r51241 = 10;
        float r51242 = r51240 * r51241;
        float r51243 = 20;
        float r51244 = r51240 * r51243;
        float r51245 = r51242 + r51244;
        return r51245;
}

double f_id(double d) {
        double r51246 = d;
        double r51247 = 10;
        double r51248 = r51246 * r51247;
        double r51249 = 20;
        double r51250 = r51246 * r51249;
        double r51251 = r51248 + r51250;
        return r51251;
}


double f_of(float d) {
        float r51252 = d;
        float r51253 = 20;
        float r51254 = 10;
        float r51255 = r51253 + r51254;
        float r51256 = r51252 * r51255;
        return r51256;
}

double f_od(double d) {
        double r51257 = d;
        double r51258 = 20;
        double r51259 = 10;
        double r51260 = r51258 + r51259;
        double r51261 = r51257 * r51260;
        return r51261;
}

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 r51262, r51263, r51264, r51265, r51266, r51267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51262);
        mpfr_init_set_str(r51263, "10", 10, MPFR_RNDN);
        mpfr_init(r51264);
        mpfr_init_set_str(r51265, "20", 10, MPFR_RNDN);
        mpfr_init(r51266);
        mpfr_init(r51267);
}

double f_im(double d) {
        mpfr_set_d(r51262, d, MPFR_RNDN);
        ;
        mpfr_mul(r51264, r51262, r51263, MPFR_RNDN);
        ;
        mpfr_mul(r51266, r51262, r51265, MPFR_RNDN);
        mpfr_add(r51267, r51264, r51266, MPFR_RNDN);
        return mpfr_get_d(r51267, MPFR_RNDN);
}

static mpfr_t r51268, r51269, r51270, r51271, r51272;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51268);
        mpfr_init_set_str(r51269, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r51270, "10", 10, MPFR_RNDN);
        mpfr_init(r51271);
        mpfr_init(r51272);
}

double f_fm(double d) {
        mpfr_set_d(r51268, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r51271, r51269, r51270, MPFR_RNDN);
        mpfr_mul(r51272, r51268, r51271, MPFR_RNDN);
        return mpfr_get_d(r51272, MPFR_RNDN);
}

static mpfr_t r51273, r51274, r51275, r51276, r51277;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51273);
        mpfr_init_set_str(r51274, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r51275, "10", 10, MPFR_RNDN);
        mpfr_init(r51276);
        mpfr_init(r51277);
}

double f_dm(double d) {
        mpfr_set_d(r51273, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r51276, r51274, r51275, MPFR_RNDN);
        mpfr_mul(r51277, r51273, r51276, MPFR_RNDN);
        return mpfr_get_d(r51277, MPFR_RNDN);
}

