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

char *name = "Expression, p14";

double f_if(float a, float b, float c, float d) {
        float r23433 = a;
        float r23434 = b;
        float r23435 = c;
        float r23436 = r23434 + r23435;
        float r23437 = d;
        float r23438 = r23436 + r23437;
        float r23439 = r23433 * r23438;
        return r23439;
}

double f_id(double a, double b, double c, double d) {
        double r23440 = a;
        double r23441 = b;
        double r23442 = c;
        double r23443 = r23441 + r23442;
        double r23444 = d;
        double r23445 = r23443 + r23444;
        double r23446 = r23440 * r23445;
        return r23446;
}


double f_of(float a, float b, float c, float d) {
        float r23447 = a;
        float r23448 = d;
        float r23449 = b;
        float r23450 = r23448 + r23449;
        float r23451 = c;
        float r23452 = r23447 * r23451;
        float r23453 = fma(r23447, r23450, r23452);
        return r23453;
}

double f_od(double a, double b, double c, double d) {
        double r23454 = a;
        double r23455 = d;
        double r23456 = b;
        double r23457 = r23455 + r23456;
        double r23458 = c;
        double r23459 = r23454 * r23458;
        double r23460 = fma(r23454, r23457, r23459);
        return r23460;
}

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 r23461, r23462, r23463, r23464, r23465, r23466, r23467;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r23461);
        mpfr_init(r23462);
        mpfr_init(r23463);
        mpfr_init(r23464);
        mpfr_init(r23465);
        mpfr_init(r23466);
        mpfr_init(r23467);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r23461, a, MPFR_RNDN);
        mpfr_set_d(r23462, b, MPFR_RNDN);
        mpfr_set_d(r23463, c, MPFR_RNDN);
        mpfr_add(r23464, r23462, r23463, MPFR_RNDN);
        mpfr_set_d(r23465, d, MPFR_RNDN);
        mpfr_add(r23466, r23464, r23465, MPFR_RNDN);
        mpfr_mul(r23467, r23461, r23466, MPFR_RNDN);
        return mpfr_get_d(r23467, MPFR_RNDN);
}

static mpfr_t r23468, r23469, r23470, r23471, r23472, r23473, r23474;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r23468);
        mpfr_init(r23469);
        mpfr_init(r23470);
        mpfr_init(r23471);
        mpfr_init(r23472);
        mpfr_init(r23473);
        mpfr_init(r23474);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r23468, a, MPFR_RNDN);
        mpfr_set_d(r23469, d, MPFR_RNDN);
        mpfr_set_d(r23470, b, MPFR_RNDN);
        mpfr_add(r23471, r23469, r23470, MPFR_RNDN);
        mpfr_set_d(r23472, c, MPFR_RNDN);
        mpfr_mul(r23473, r23468, r23472, MPFR_RNDN);
        mpfr_fma(r23474, r23468, r23471, r23473, MPFR_RNDN);
        return mpfr_get_d(r23474, MPFR_RNDN);
}

static mpfr_t r23475, r23476, r23477, r23478, r23479, r23480, r23481;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r23475);
        mpfr_init(r23476);
        mpfr_init(r23477);
        mpfr_init(r23478);
        mpfr_init(r23479);
        mpfr_init(r23480);
        mpfr_init(r23481);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r23475, a, MPFR_RNDN);
        mpfr_set_d(r23476, d, MPFR_RNDN);
        mpfr_set_d(r23477, b, MPFR_RNDN);
        mpfr_add(r23478, r23476, r23477, MPFR_RNDN);
        mpfr_set_d(r23479, c, MPFR_RNDN);
        mpfr_mul(r23480, r23475, r23479, MPFR_RNDN);
        mpfr_fma(r23481, r23475, r23478, r23480, MPFR_RNDN);
        return mpfr_get_d(r23481, MPFR_RNDN);
}

