#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 r28740 = d;
        float r28741 = 10;
        float r28742 = r28740 * r28741;
        float r28743 = 20;
        float r28744 = r28740 * r28743;
        float r28745 = r28742 + r28744;
        return r28745;
}

double f_id(double d) {
        double r28746 = d;
        double r28747 = 10;
        double r28748 = r28746 * r28747;
        double r28749 = 20;
        double r28750 = r28746 * r28749;
        double r28751 = r28748 + r28750;
        return r28751;
}


double f_of(float d) {
        float r28752 = d;
        float r28753 = 20;
        float r28754 = 10;
        float r28755 = r28753 + r28754;
        float r28756 = r28752 * r28755;
        return r28756;
}

double f_od(double d) {
        double r28757 = d;
        double r28758 = 20;
        double r28759 = 10;
        double r28760 = r28758 + r28759;
        double r28761 = r28757 * r28760;
        return r28761;
}

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 r28762, r28763, r28764, r28765, r28766, r28767;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28762);
        mpfr_init_set_str(r28763, "10", 10, MPFR_RNDN);
        mpfr_init(r28764);
        mpfr_init_set_str(r28765, "20", 10, MPFR_RNDN);
        mpfr_init(r28766);
        mpfr_init(r28767);
}

double f_im(double d) {
        mpfr_set_d(r28762, d, MPFR_RNDN);
        ;
        mpfr_mul(r28764, r28762, r28763, MPFR_RNDN);
        ;
        mpfr_mul(r28766, r28762, r28765, MPFR_RNDN);
        mpfr_add(r28767, r28764, r28766, MPFR_RNDN);
        return mpfr_get_d(r28767, MPFR_RNDN);
}

static mpfr_t r28768, r28769, r28770, r28771, r28772;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28768);
        mpfr_init_set_str(r28769, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28770, "10", 10, MPFR_RNDN);
        mpfr_init(r28771);
        mpfr_init(r28772);
}

double f_fm(double d) {
        mpfr_set_d(r28768, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28771, r28769, r28770, MPFR_RNDN);
        mpfr_mul(r28772, r28768, r28771, MPFR_RNDN);
        return mpfr_get_d(r28772, MPFR_RNDN);
}

static mpfr_t r28773, r28774, r28775, r28776, r28777;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28773);
        mpfr_init_set_str(r28774, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28775, "10", 10, MPFR_RNDN);
        mpfr_init(r28776);
        mpfr_init(r28777);
}

double f_dm(double d) {
        mpfr_set_d(r28773, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28776, r28774, r28775, MPFR_RNDN);
        mpfr_mul(r28777, r28773, r28776, MPFR_RNDN);
        return mpfr_get_d(r28777, MPFR_RNDN);
}

