#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 r28811 = d1;
        float r28812 = 3;
        float r28813 = r28811 * r28812;
        float r28814 = d2;
        float r28815 = r28811 * r28814;
        float r28816 = r28813 + r28815;
        float r28817 = d3;
        float r28818 = r28811 * r28817;
        float r28819 = r28816 + r28818;
        return r28819;
}

double f_id(double d1, double d2, double d3) {
        double r28820 = d1;
        double r28821 = 3;
        double r28822 = r28820 * r28821;
        double r28823 = d2;
        double r28824 = r28820 * r28823;
        double r28825 = r28822 + r28824;
        double r28826 = d3;
        double r28827 = r28820 * r28826;
        double r28828 = r28825 + r28827;
        return r28828;
}


double f_of(float d1, float d2, float d3) {
        float r28829 = d1;
        float r28830 = d2;
        float r28831 = 3;
        float r28832 = r28830 + r28831;
        float r28833 = d3;
        float r28834 = r28832 + r28833;
        float r28835 = r28829 * r28834;
        return r28835;
}

double f_od(double d1, double d2, double d3) {
        double r28836 = d1;
        double r28837 = d2;
        double r28838 = 3;
        double r28839 = r28837 + r28838;
        double r28840 = d3;
        double r28841 = r28839 + r28840;
        double r28842 = r28836 * r28841;
        return r28842;
}

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 r28843, r28844, r28845, r28846, r28847, r28848, r28849, r28850, r28851;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28843);
        mpfr_init_set_str(r28844, "3", 10, MPFR_RNDN);
        mpfr_init(r28845);
        mpfr_init(r28846);
        mpfr_init(r28847);
        mpfr_init(r28848);
        mpfr_init(r28849);
        mpfr_init(r28850);
        mpfr_init(r28851);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r28843, d1, MPFR_RNDN);
        ;
        mpfr_mul(r28845, r28843, r28844, MPFR_RNDN);
        mpfr_set_d(r28846, d2, MPFR_RNDN);
        mpfr_mul(r28847, r28843, r28846, MPFR_RNDN);
        mpfr_add(r28848, r28845, r28847, MPFR_RNDN);
        mpfr_set_d(r28849, d3, MPFR_RNDN);
        mpfr_mul(r28850, r28843, r28849, MPFR_RNDN);
        mpfr_add(r28851, r28848, r28850, MPFR_RNDN);
        return mpfr_get_d(r28851, MPFR_RNDN);
}

static mpfr_t r28852, r28853, r28854, r28855, r28856, r28857, r28858;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28852);
        mpfr_init(r28853);
        mpfr_init_set_str(r28854, "3", 10, MPFR_RNDN);
        mpfr_init(r28855);
        mpfr_init(r28856);
        mpfr_init(r28857);
        mpfr_init(r28858);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r28852, d1, MPFR_RNDN);
        mpfr_set_d(r28853, d2, MPFR_RNDN);
        ;
        mpfr_add(r28855, r28853, r28854, MPFR_RNDN);
        mpfr_set_d(r28856, d3, MPFR_RNDN);
        mpfr_add(r28857, r28855, r28856, MPFR_RNDN);
        mpfr_mul(r28858, r28852, r28857, MPFR_RNDN);
        return mpfr_get_d(r28858, MPFR_RNDN);
}

static mpfr_t r28859, r28860, r28861, r28862, r28863, r28864, r28865;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28859);
        mpfr_init(r28860);
        mpfr_init_set_str(r28861, "3", 10, MPFR_RNDN);
        mpfr_init(r28862);
        mpfr_init(r28863);
        mpfr_init(r28864);
        mpfr_init(r28865);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r28859, d1, MPFR_RNDN);
        mpfr_set_d(r28860, d2, MPFR_RNDN);
        ;
        mpfr_add(r28862, r28860, r28861, MPFR_RNDN);
        mpfr_set_d(r28863, d3, MPFR_RNDN);
        mpfr_add(r28864, r28862, r28863, MPFR_RNDN);
        mpfr_mul(r28865, r28859, r28864, MPFR_RNDN);
        return mpfr_get_d(r28865, MPFR_RNDN);
}

