#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 r26046 = d1;
        float r26047 = 3;
        float r26048 = r26046 * r26047;
        float r26049 = d2;
        float r26050 = r26046 * r26049;
        float r26051 = r26048 + r26050;
        float r26052 = d3;
        float r26053 = r26046 * r26052;
        float r26054 = r26051 + r26053;
        return r26054;
}

double f_id(double d1, double d2, double d3) {
        double r26055 = d1;
        double r26056 = 3;
        double r26057 = r26055 * r26056;
        double r26058 = d2;
        double r26059 = r26055 * r26058;
        double r26060 = r26057 + r26059;
        double r26061 = d3;
        double r26062 = r26055 * r26061;
        double r26063 = r26060 + r26062;
        return r26063;
}


double f_of(float d1, float d2, float d3) {
        float r26064 = d2;
        float r26065 = 3;
        float r26066 = r26064 + r26065;
        float r26067 = d1;
        float r26068 = d3;
        float r26069 = r26067 * r26068;
        float r26070 = fma(r26066, r26067, r26069);
        return r26070;
}

double f_od(double d1, double d2, double d3) {
        double r26071 = d2;
        double r26072 = 3;
        double r26073 = r26071 + r26072;
        double r26074 = d1;
        double r26075 = d3;
        double r26076 = r26074 * r26075;
        double r26077 = fma(r26073, r26074, r26076);
        return r26077;
}

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 r26078, r26079, r26080, r26081, r26082, r26083, r26084, r26085, r26086;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26078);
        mpfr_init_set_str(r26079, "3", 10, MPFR_RNDN);
        mpfr_init(r26080);
        mpfr_init(r26081);
        mpfr_init(r26082);
        mpfr_init(r26083);
        mpfr_init(r26084);
        mpfr_init(r26085);
        mpfr_init(r26086);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r26078, d1, MPFR_RNDN);
        ;
        mpfr_mul(r26080, r26078, r26079, MPFR_RNDN);
        mpfr_set_d(r26081, d2, MPFR_RNDN);
        mpfr_mul(r26082, r26078, r26081, MPFR_RNDN);
        mpfr_add(r26083, r26080, r26082, MPFR_RNDN);
        mpfr_set_d(r26084, d3, MPFR_RNDN);
        mpfr_mul(r26085, r26078, r26084, MPFR_RNDN);
        mpfr_add(r26086, r26083, r26085, MPFR_RNDN);
        return mpfr_get_d(r26086, MPFR_RNDN);
}

static mpfr_t r26087, r26088, r26089, r26090, r26091, r26092, r26093;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26087);
        mpfr_init_set_str(r26088, "3", 10, MPFR_RNDN);
        mpfr_init(r26089);
        mpfr_init(r26090);
        mpfr_init(r26091);
        mpfr_init(r26092);
        mpfr_init(r26093);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r26087, d2, MPFR_RNDN);
        ;
        mpfr_add(r26089, r26087, r26088, MPFR_RNDN);
        mpfr_set_d(r26090, d1, MPFR_RNDN);
        mpfr_set_d(r26091, d3, MPFR_RNDN);
        mpfr_mul(r26092, r26090, r26091, MPFR_RNDN);
        mpfr_fma(r26093, r26089, r26090, r26092, MPFR_RNDN);
        return mpfr_get_d(r26093, MPFR_RNDN);
}

static mpfr_t r26094, r26095, r26096, r26097, r26098, r26099, r26100;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26094);
        mpfr_init_set_str(r26095, "3", 10, MPFR_RNDN);
        mpfr_init(r26096);
        mpfr_init(r26097);
        mpfr_init(r26098);
        mpfr_init(r26099);
        mpfr_init(r26100);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r26094, d2, MPFR_RNDN);
        ;
        mpfr_add(r26096, r26094, r26095, MPFR_RNDN);
        mpfr_set_d(r26097, d1, MPFR_RNDN);
        mpfr_set_d(r26098, d3, MPFR_RNDN);
        mpfr_mul(r26099, r26097, r26098, MPFR_RNDN);
        mpfr_fma(r26100, r26096, r26097, r26099, MPFR_RNDN);
        return mpfr_get_d(r26100, MPFR_RNDN);
}

