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

char *name = "FastMath test3";

double f_if(float d1, float d2, float d3) {
        float r11759 = d1;
        float r11760 = 3.0f;
        float r11761 = r11759 * r11760;
        float r11762 = d2;
        float r11763 = r11759 * r11762;
        float r11764 = r11761 + r11763;
        float r11765 = d3;
        float r11766 = r11759 * r11765;
        float r11767 = r11764 + r11766;
        return r11767;
}

double f_id(double d1, double d2, double d3) {
        double r11768 = d1;
        double r11769 = 3.0;
        double r11770 = r11768 * r11769;
        double r11771 = d2;
        double r11772 = r11768 * r11771;
        double r11773 = r11770 + r11772;
        double r11774 = d3;
        double r11775 = r11768 * r11774;
        double r11776 = r11773 + r11775;
        return r11776;
}


double f_of(float d1, float d2, float d3) {
        float r11777 = d1;
        float r11778 = 3.0f;
        float r11779 = d2;
        float r11780 = r11778 + r11779;
        float r11781 = d3;
        float r11782 = r11781 * r11777;
        float r11783 = fma(r11777, r11780, r11782);
        return r11783;
}

double f_od(double d1, double d2, double d3) {
        double r11784 = d1;
        double r11785 = 3.0;
        double r11786 = d2;
        double r11787 = r11785 + r11786;
        double r11788 = d3;
        double r11789 = r11788 * r11784;
        double r11790 = fma(r11784, r11787, r11789);
        return r11790;
}

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 r11791, r11792, r11793, r11794, r11795, r11796, r11797, r11798, r11799;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11791);
        mpfr_init_set_str(r11792, "3", 10, MPFR_RNDN);
        mpfr_init(r11793);
        mpfr_init(r11794);
        mpfr_init(r11795);
        mpfr_init(r11796);
        mpfr_init(r11797);
        mpfr_init(r11798);
        mpfr_init(r11799);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r11791, d1, MPFR_RNDN);
        ;
        mpfr_mul(r11793, r11791, r11792, MPFR_RNDN);
        mpfr_set_d(r11794, d2, MPFR_RNDN);
        mpfr_mul(r11795, r11791, r11794, MPFR_RNDN);
        mpfr_add(r11796, r11793, r11795, MPFR_RNDN);
        mpfr_set_d(r11797, d3, MPFR_RNDN);
        mpfr_mul(r11798, r11791, r11797, MPFR_RNDN);
        mpfr_add(r11799, r11796, r11798, MPFR_RNDN);
        return mpfr_get_d(r11799, MPFR_RNDN);
}

static mpfr_t r11800, r11801, r11802, r11803, r11804, r11805, r11806;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11800);
        mpfr_init_set_str(r11801, "3", 10, MPFR_RNDN);
        mpfr_init(r11802);
        mpfr_init(r11803);
        mpfr_init(r11804);
        mpfr_init(r11805);
        mpfr_init(r11806);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r11800, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11802, d2, MPFR_RNDN);
        mpfr_add(r11803, r11801, r11802, MPFR_RNDN);
        mpfr_set_d(r11804, d3, MPFR_RNDN);
        mpfr_mul(r11805, r11804, r11800, MPFR_RNDN);
        mpfr_fma(r11806, r11800, r11803, r11805, MPFR_RNDN);
        return mpfr_get_d(r11806, MPFR_RNDN);
}

static mpfr_t r11807, r11808, r11809, r11810, r11811, r11812, r11813;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11807);
        mpfr_init_set_str(r11808, "3", 10, MPFR_RNDN);
        mpfr_init(r11809);
        mpfr_init(r11810);
        mpfr_init(r11811);
        mpfr_init(r11812);
        mpfr_init(r11813);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r11807, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11809, d2, MPFR_RNDN);
        mpfr_add(r11810, r11808, r11809, MPFR_RNDN);
        mpfr_set_d(r11811, d3, MPFR_RNDN);
        mpfr_mul(r11812, r11811, r11807, MPFR_RNDN);
        mpfr_fma(r11813, r11807, r11810, r11812, MPFR_RNDN);
        return mpfr_get_d(r11813, MPFR_RNDN);
}

