#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 r48707 = d1;
        float r48708 = 10.0f;
        float r48709 = r48707 * r48708;
        float r48710 = d2;
        float r48711 = r48707 * r48710;
        float r48712 = r48709 + r48711;
        float r48713 = 20.0f;
        float r48714 = r48707 * r48713;
        float r48715 = r48712 + r48714;
        return r48715;
}

double f_id(double d1, double d2) {
        double r48716 = d1;
        double r48717 = 10.0;
        double r48718 = r48716 * r48717;
        double r48719 = d2;
        double r48720 = r48716 * r48719;
        double r48721 = r48718 + r48720;
        double r48722 = 20.0;
        double r48723 = r48716 * r48722;
        double r48724 = r48721 + r48723;
        return r48724;
}


double f_of(float d1, float d2) {
        float r48725 = d1;
        float r48726 = d2;
        float r48727 = 30.0f;
        float r48728 = r48726 + r48727;
        float r48729 = r48725 * r48728;
        return r48729;
}

double f_od(double d1, double d2) {
        double r48730 = d1;
        double r48731 = d2;
        double r48732 = 30.0;
        double r48733 = r48731 + r48732;
        double r48734 = r48730 * r48733;
        return r48734;
}

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 r48735, r48736, r48737, r48738, r48739, r48740, r48741, r48742, r48743;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r48735);
        mpfr_init_set_str(r48736, "10", 10, MPFR_RNDN);
        mpfr_init(r48737);
        mpfr_init(r48738);
        mpfr_init(r48739);
        mpfr_init(r48740);
        mpfr_init_set_str(r48741, "20", 10, MPFR_RNDN);
        mpfr_init(r48742);
        mpfr_init(r48743);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r48735, d1, MPFR_RNDN);
        ;
        mpfr_mul(r48737, r48735, r48736, MPFR_RNDN);
        mpfr_set_d(r48738, d2, MPFR_RNDN);
        mpfr_mul(r48739, r48735, r48738, MPFR_RNDN);
        mpfr_add(r48740, r48737, r48739, MPFR_RNDN);
        ;
        mpfr_mul(r48742, r48735, r48741, MPFR_RNDN);
        mpfr_add(r48743, r48740, r48742, MPFR_RNDN);
        return mpfr_get_d(r48743, MPFR_RNDN);
}

static mpfr_t r48744, r48745, r48746, r48747, r48748;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48744);
        mpfr_init(r48745);
        mpfr_init_set_str(r48746, "30", 10, MPFR_RNDN);
        mpfr_init(r48747);
        mpfr_init(r48748);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r48744, d1, MPFR_RNDN);
        mpfr_set_d(r48745, d2, MPFR_RNDN);
        ;
        mpfr_add(r48747, r48745, r48746, MPFR_RNDN);
        mpfr_mul(r48748, r48744, r48747, MPFR_RNDN);
        return mpfr_get_d(r48748, MPFR_RNDN);
}

static mpfr_t r48749, r48750, r48751, r48752, r48753;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48749);
        mpfr_init(r48750);
        mpfr_init_set_str(r48751, "30", 10, MPFR_RNDN);
        mpfr_init(r48752);
        mpfr_init(r48753);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r48749, d1, MPFR_RNDN);
        mpfr_set_d(r48750, d2, MPFR_RNDN);
        ;
        mpfr_add(r48752, r48750, r48751, MPFR_RNDN);
        mpfr_mul(r48753, r48749, r48752, MPFR_RNDN);
        return mpfr_get_d(r48753, MPFR_RNDN);
}

