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

char *name = "Main:bigenough2 from A";

double f_if(float x, float y, float z) {
        float r28939 = x;
        float r28940 = y;
        float r28941 = z;
        float r28942 = r28941 + r28939;
        float r28943 = r28940 * r28942;
        float r28944 = r28939 + r28943;
        return r28944;
}

double f_id(double x, double y, double z) {
        double r28945 = x;
        double r28946 = y;
        double r28947 = z;
        double r28948 = r28947 + r28945;
        double r28949 = r28946 * r28948;
        double r28950 = r28945 + r28949;
        return r28950;
}


double f_of(float x, float y, float z) {
        float r28951 = x;
        float r28952 = y;
        float r28953 = z;
        float r28954 = r28953 + r28951;
        float r28955 = r28952 * r28954;
        float r28956 = r28951 + r28955;
        return r28956;
}

double f_od(double x, double y, double z) {
        double r28957 = x;
        double r28958 = y;
        double r28959 = z;
        double r28960 = r28959 + r28957;
        double r28961 = r28958 * r28960;
        double r28962 = r28957 + r28961;
        return r28962;
}

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 r28963, r28964, r28965, r28966, r28967, r28968;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r28963);
        mpfr_init(r28964);
        mpfr_init(r28965);
        mpfr_init(r28966);
        mpfr_init(r28967);
        mpfr_init(r28968);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r28963, x, MPFR_RNDN);
        mpfr_set_d(r28964, y, MPFR_RNDN);
        mpfr_set_d(r28965, z, MPFR_RNDN);
        mpfr_add(r28966, r28965, r28963, MPFR_RNDN);
        mpfr_mul(r28967, r28964, r28966, MPFR_RNDN);
        mpfr_add(r28968, r28963, r28967, MPFR_RNDN);
        return mpfr_get_d(r28968, MPFR_RNDN);
}

static mpfr_t r28969, r28970, r28971, r28972, r28973, r28974;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r28969);
        mpfr_init(r28970);
        mpfr_init(r28971);
        mpfr_init(r28972);
        mpfr_init(r28973);
        mpfr_init(r28974);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r28969, x, MPFR_RNDN);
        mpfr_set_d(r28970, y, MPFR_RNDN);
        mpfr_set_d(r28971, z, MPFR_RNDN);
        mpfr_add(r28972, r28971, r28969, MPFR_RNDN);
        mpfr_mul(r28973, r28970, r28972, MPFR_RNDN);
        mpfr_add(r28974, r28969, r28973, MPFR_RNDN);
        return mpfr_get_d(r28974, MPFR_RNDN);
}

static mpfr_t r28975, r28976, r28977, r28978, r28979, r28980;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r28975);
        mpfr_init(r28976);
        mpfr_init(r28977);
        mpfr_init(r28978);
        mpfr_init(r28979);
        mpfr_init(r28980);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r28975, x, MPFR_RNDN);
        mpfr_set_d(r28976, y, MPFR_RNDN);
        mpfr_set_d(r28977, z, MPFR_RNDN);
        mpfr_add(r28978, r28977, r28975, MPFR_RNDN);
        mpfr_mul(r28979, r28976, r28978, MPFR_RNDN);
        mpfr_add(r28980, r28975, r28979, MPFR_RNDN);
        return mpfr_get_d(r28980, MPFR_RNDN);
}

