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

char *name = "Expression, p6";

double f_if(float a, float b, float c, float d) {
        float r9303 = a;
        float r9304 = b;
        float r9305 = c;
        float r9306 = d;
        float r9307 = r9305 + r9306;
        float r9308 = r9304 + r9307;
        float r9309 = r9303 + r9308;
        float r9310 = 2.0f;
        float r9311 = r9309 * r9310;
        return r9311;
}

double f_id(double a, double b, double c, double d) {
        double r9312 = a;
        double r9313 = b;
        double r9314 = c;
        double r9315 = d;
        double r9316 = r9314 + r9315;
        double r9317 = r9313 + r9316;
        double r9318 = r9312 + r9317;
        double r9319 = 2.0;
        double r9320 = r9318 * r9319;
        return r9320;
}


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

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

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 r9339, r9340, r9341, r9342, r9343, r9344, r9345, r9346, r9347;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9339);
        mpfr_init(r9340);
        mpfr_init(r9341);
        mpfr_init(r9342);
        mpfr_init(r9343);
        mpfr_init(r9344);
        mpfr_init(r9345);
        mpfr_init_set_str(r9346, "2", 10, MPFR_RNDN);
        mpfr_init(r9347);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9339, a, MPFR_RNDN);
        mpfr_set_d(r9340, b, MPFR_RNDN);
        mpfr_set_d(r9341, c, MPFR_RNDN);
        mpfr_set_d(r9342, d, MPFR_RNDN);
        mpfr_add(r9343, r9341, r9342, MPFR_RNDN);
        mpfr_add(r9344, r9340, r9343, MPFR_RNDN);
        mpfr_add(r9345, r9339, r9344, MPFR_RNDN);
        ;
        mpfr_mul(r9347, r9345, r9346, MPFR_RNDN);
        return mpfr_get_d(r9347, MPFR_RNDN);
}

static mpfr_t r9348, r9349, r9350, r9351, r9352, r9353, r9354, r9355, r9356;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9348);
        mpfr_init(r9349);
        mpfr_init(r9350);
        mpfr_init(r9351);
        mpfr_init(r9352);
        mpfr_init(r9353);
        mpfr_init(r9354);
        mpfr_init_set_str(r9355, "2", 10, MPFR_RNDN);
        mpfr_init(r9356);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9348, b, MPFR_RNDN);
        mpfr_set_d(r9349, c, MPFR_RNDN);
        mpfr_set_d(r9350, a, MPFR_RNDN);
        mpfr_set_d(r9351, d, MPFR_RNDN);
        mpfr_add(r9352, r9350, r9351, MPFR_RNDN);
        mpfr_add(r9353, r9349, r9352, MPFR_RNDN);
        mpfr_add(r9354, r9348, r9353, MPFR_RNDN);
        ;
        mpfr_mul(r9356, r9354, r9355, MPFR_RNDN);
        return mpfr_get_d(r9356, MPFR_RNDN);
}

static mpfr_t r9357, r9358, r9359, r9360, r9361, r9362, r9363, r9364, r9365;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9357);
        mpfr_init(r9358);
        mpfr_init(r9359);
        mpfr_init(r9360);
        mpfr_init(r9361);
        mpfr_init(r9362);
        mpfr_init(r9363);
        mpfr_init_set_str(r9364, "2", 10, MPFR_RNDN);
        mpfr_init(r9365);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9357, b, MPFR_RNDN);
        mpfr_set_d(r9358, c, MPFR_RNDN);
        mpfr_set_d(r9359, a, MPFR_RNDN);
        mpfr_set_d(r9360, d, MPFR_RNDN);
        mpfr_add(r9361, r9359, r9360, MPFR_RNDN);
        mpfr_add(r9362, r9358, r9361, MPFR_RNDN);
        mpfr_add(r9363, r9357, r9362, MPFR_RNDN);
        ;
        mpfr_mul(r9365, r9363, r9364, MPFR_RNDN);
        return mpfr_get_d(r9365, MPFR_RNDN);
}

