#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 r11788 = d1;
        float r11789 = 3.0f;
        float r11790 = r11788 * r11789;
        float r11791 = d2;
        float r11792 = r11788 * r11791;
        float r11793 = r11790 + r11792;
        float r11794 = d3;
        float r11795 = r11788 * r11794;
        float r11796 = r11793 + r11795;
        return r11796;
}

double f_id(double d1, double d2, double d3) {
        double r11797 = d1;
        double r11798 = 3.0;
        double r11799 = r11797 * r11798;
        double r11800 = d2;
        double r11801 = r11797 * r11800;
        double r11802 = r11799 + r11801;
        double r11803 = d3;
        double r11804 = r11797 * r11803;
        double r11805 = r11802 + r11804;
        return r11805;
}


double f_of(float d1, float d2, float d3) {
        float r11806 = d1;
        float r11807 = 3.0f;
        float r11808 = d2;
        float r11809 = r11807 + r11808;
        float r11810 = d3;
        float r11811 = r11810 * r11806;
        float r11812 = fma(r11806, r11809, r11811);
        return r11812;
}

double f_od(double d1, double d2, double d3) {
        double r11813 = d1;
        double r11814 = 3.0;
        double r11815 = d2;
        double r11816 = r11814 + r11815;
        double r11817 = d3;
        double r11818 = r11817 * r11813;
        double r11819 = fma(r11813, r11816, r11818);
        return r11819;
}

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 r11820, r11821, r11822, r11823, r11824, r11825, r11826, r11827, r11828;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11820);
        mpfr_init_set_str(r11821, "3", 10, MPFR_RNDN);
        mpfr_init(r11822);
        mpfr_init(r11823);
        mpfr_init(r11824);
        mpfr_init(r11825);
        mpfr_init(r11826);
        mpfr_init(r11827);
        mpfr_init(r11828);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r11820, d1, MPFR_RNDN);
        ;
        mpfr_mul(r11822, r11820, r11821, MPFR_RNDN);
        mpfr_set_d(r11823, d2, MPFR_RNDN);
        mpfr_mul(r11824, r11820, r11823, MPFR_RNDN);
        mpfr_add(r11825, r11822, r11824, MPFR_RNDN);
        mpfr_set_d(r11826, d3, MPFR_RNDN);
        mpfr_mul(r11827, r11820, r11826, MPFR_RNDN);
        mpfr_add(r11828, r11825, r11827, MPFR_RNDN);
        return mpfr_get_d(r11828, MPFR_RNDN);
}

static mpfr_t r11829, r11830, r11831, r11832, r11833, r11834, r11835;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11829);
        mpfr_init_set_str(r11830, "3", 10, MPFR_RNDN);
        mpfr_init(r11831);
        mpfr_init(r11832);
        mpfr_init(r11833);
        mpfr_init(r11834);
        mpfr_init(r11835);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r11829, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11831, d2, MPFR_RNDN);
        mpfr_add(r11832, r11830, r11831, MPFR_RNDN);
        mpfr_set_d(r11833, d3, MPFR_RNDN);
        mpfr_mul(r11834, r11833, r11829, MPFR_RNDN);
        mpfr_fma(r11835, r11829, r11832, r11834, MPFR_RNDN);
        return mpfr_get_d(r11835, MPFR_RNDN);
}

static mpfr_t r11836, r11837, r11838, r11839, r11840, r11841, r11842;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11836);
        mpfr_init_set_str(r11837, "3", 10, MPFR_RNDN);
        mpfr_init(r11838);
        mpfr_init(r11839);
        mpfr_init(r11840);
        mpfr_init(r11841);
        mpfr_init(r11842);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r11836, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11838, d2, MPFR_RNDN);
        mpfr_add(r11839, r11837, r11838, MPFR_RNDN);
        mpfr_set_d(r11840, d3, MPFR_RNDN);
        mpfr_mul(r11841, r11840, r11836, MPFR_RNDN);
        mpfr_fma(r11842, r11836, r11839, r11841, MPFR_RNDN);
        return mpfr_get_d(r11842, MPFR_RNDN);
}

