#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 r9309 = a;
        float r9310 = b;
        float r9311 = c;
        float r9312 = r9310 + r9311;
        float r9313 = d;
        float r9314 = r9312 + r9313;
        float r9315 = r9309 * r9314;
        return r9315;
}

double f_id(double a, double b, double c, double d) {
        double r9316 = a;
        double r9317 = b;
        double r9318 = c;
        double r9319 = r9317 + r9318;
        double r9320 = d;
        double r9321 = r9319 + r9320;
        double r9322 = r9316 * r9321;
        return r9322;
}


double f_of(float a, float b, float c, float d) {
        float r9323 = a;
        float r9324 = b;
        float r9325 = d;
        float r9326 = r9324 + r9325;
        float r9327 = c;
        float r9328 = r9327 * r9323;
        float r9329 = fma(r9323, r9326, r9328);
        return r9329;
}

double f_od(double a, double b, double c, double d) {
        double r9330 = a;
        double r9331 = b;
        double r9332 = d;
        double r9333 = r9331 + r9332;
        double r9334 = c;
        double r9335 = r9334 * r9330;
        double r9336 = fma(r9330, r9333, r9335);
        return r9336;
}

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 r9337, r9338, r9339, r9340, r9341, r9342, r9343;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9337);
        mpfr_init(r9338);
        mpfr_init(r9339);
        mpfr_init(r9340);
        mpfr_init(r9341);
        mpfr_init(r9342);
        mpfr_init(r9343);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9337, a, MPFR_RNDN);
        mpfr_set_d(r9338, b, MPFR_RNDN);
        mpfr_set_d(r9339, c, MPFR_RNDN);
        mpfr_add(r9340, r9338, r9339, MPFR_RNDN);
        mpfr_set_d(r9341, d, MPFR_RNDN);
        mpfr_add(r9342, r9340, r9341, MPFR_RNDN);
        mpfr_mul(r9343, r9337, r9342, MPFR_RNDN);
        return mpfr_get_d(r9343, MPFR_RNDN);
}

static mpfr_t r9344, r9345, r9346, r9347, r9348, r9349, r9350;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9344);
        mpfr_init(r9345);
        mpfr_init(r9346);
        mpfr_init(r9347);
        mpfr_init(r9348);
        mpfr_init(r9349);
        mpfr_init(r9350);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9344, a, MPFR_RNDN);
        mpfr_set_d(r9345, b, MPFR_RNDN);
        mpfr_set_d(r9346, d, MPFR_RNDN);
        mpfr_add(r9347, r9345, r9346, MPFR_RNDN);
        mpfr_set_d(r9348, c, MPFR_RNDN);
        mpfr_mul(r9349, r9348, r9344, MPFR_RNDN);
        mpfr_fma(r9350, r9344, r9347, r9349, MPFR_RNDN);
        return mpfr_get_d(r9350, MPFR_RNDN);
}

static mpfr_t r9351, r9352, r9353, r9354, r9355, r9356, r9357;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9351);
        mpfr_init(r9352);
        mpfr_init(r9353);
        mpfr_init(r9354);
        mpfr_init(r9355);
        mpfr_init(r9356);
        mpfr_init(r9357);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9351, a, MPFR_RNDN);
        mpfr_set_d(r9352, b, MPFR_RNDN);
        mpfr_set_d(r9353, d, MPFR_RNDN);
        mpfr_add(r9354, r9352, r9353, MPFR_RNDN);
        mpfr_set_d(r9355, c, MPFR_RNDN);
        mpfr_mul(r9356, r9355, r9351, MPFR_RNDN);
        mpfr_fma(r9357, r9351, r9354, r9356, MPFR_RNDN);
        return mpfr_get_d(r9357, MPFR_RNDN);
}

