#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 r11768 = d1;
        float r11769 = 3;
        float r11770 = r11768 * r11769;
        float r11771 = d2;
        float r11772 = r11768 * r11771;
        float r11773 = r11770 + r11772;
        float r11774 = d3;
        float r11775 = r11768 * r11774;
        float r11776 = r11773 + r11775;
        return r11776;
}

double f_id(double d1, double d2, double d3) {
        double r11777 = d1;
        double r11778 = 3;
        double r11779 = r11777 * r11778;
        double r11780 = d2;
        double r11781 = r11777 * r11780;
        double r11782 = r11779 + r11781;
        double r11783 = d3;
        double r11784 = r11777 * r11783;
        double r11785 = r11782 + r11784;
        return r11785;
}


double f_of(float d1, float d2, float d3) {
        float r11786 = d1;
        float r11787 = d2;
        float r11788 = 3;
        float r11789 = d3;
        float r11790 = r11788 + r11789;
        float r11791 = r11787 + r11790;
        float r11792 = r11786 * r11791;
        return r11792;
}

double f_od(double d1, double d2, double d3) {
        double r11793 = d1;
        double r11794 = d2;
        double r11795 = 3;
        double r11796 = d3;
        double r11797 = r11795 + r11796;
        double r11798 = r11794 + r11797;
        double r11799 = r11793 * r11798;
        return r11799;
}

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 r11800, r11801, r11802, r11803, r11804, r11805, r11806, r11807, r11808;

void setup_mpfr_f_im() {
        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);
        mpfr_init(r11807);
        mpfr_init(r11808);
}

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

static mpfr_t r11809, r11810, r11811, r11812, r11813, r11814, r11815;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11809);
        mpfr_init(r11810);
        mpfr_init_set_str(r11811, "3", 10, MPFR_RNDN);
        mpfr_init(r11812);
        mpfr_init(r11813);
        mpfr_init(r11814);
        mpfr_init(r11815);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r11809, d1, MPFR_RNDN);
        mpfr_set_d(r11810, d2, MPFR_RNDN);
        ;
        mpfr_set_d(r11812, d3, MPFR_RNDN);
        mpfr_add(r11813, r11811, r11812, MPFR_RNDN);
        mpfr_add(r11814, r11810, r11813, MPFR_RNDN);
        mpfr_mul(r11815, r11809, r11814, MPFR_RNDN);
        return mpfr_get_d(r11815, MPFR_RNDN);
}

static mpfr_t r11816, r11817, r11818, r11819, r11820, r11821, r11822;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11816);
        mpfr_init(r11817);
        mpfr_init_set_str(r11818, "3", 10, MPFR_RNDN);
        mpfr_init(r11819);
        mpfr_init(r11820);
        mpfr_init(r11821);
        mpfr_init(r11822);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r11816, d1, MPFR_RNDN);
        mpfr_set_d(r11817, d2, MPFR_RNDN);
        ;
        mpfr_set_d(r11819, d3, MPFR_RNDN);
        mpfr_add(r11820, r11818, r11819, MPFR_RNDN);
        mpfr_add(r11821, r11817, r11820, MPFR_RNDN);
        mpfr_mul(r11822, r11816, r11821, MPFR_RNDN);
        return mpfr_get_d(r11822, MPFR_RNDN);
}

