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

char *name = "FastMath dist";

double f_if(float d1, float d2, float d3) {
        float r29277 = d1;
        float r29278 = d2;
        float r29279 = r29277 * r29278;
        float r29280 = d3;
        float r29281 = r29277 * r29280;
        float r29282 = r29279 + r29281;
        return r29282;
}

double f_id(double d1, double d2, double d3) {
        double r29283 = d1;
        double r29284 = d2;
        double r29285 = r29283 * r29284;
        double r29286 = d3;
        double r29287 = r29283 * r29286;
        double r29288 = r29285 + r29287;
        return r29288;
}


double f_of(float d1, float d2, float d3) {
        float r29289 = d1;
        float r29290 = d2;
        float r29291 = r29289 * r29290;
        float r29292 = d3;
        float r29293 = r29289 * r29292;
        float r29294 = r29291 + r29293;
        return r29294;
}

double f_od(double d1, double d2, double d3) {
        double r29295 = d1;
        double r29296 = d2;
        double r29297 = r29295 * r29296;
        double r29298 = d3;
        double r29299 = r29295 * r29298;
        double r29300 = r29297 + r29299;
        return r29300;
}

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 r29301, r29302, r29303, r29304, r29305, r29306;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r29301);
        mpfr_init(r29302);
        mpfr_init(r29303);
        mpfr_init(r29304);
        mpfr_init(r29305);
        mpfr_init(r29306);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r29301, d1, MPFR_RNDN);
        mpfr_set_d(r29302, d2, MPFR_RNDN);
        mpfr_mul(r29303, r29301, r29302, MPFR_RNDN);
        mpfr_set_d(r29304, d3, MPFR_RNDN);
        mpfr_mul(r29305, r29301, r29304, MPFR_RNDN);
        mpfr_add(r29306, r29303, r29305, MPFR_RNDN);
        return mpfr_get_d(r29306, MPFR_RNDN);
}

static mpfr_t r29307, r29308, r29309, r29310, r29311, r29312;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r29307);
        mpfr_init(r29308);
        mpfr_init(r29309);
        mpfr_init(r29310);
        mpfr_init(r29311);
        mpfr_init(r29312);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r29307, d1, MPFR_RNDN);
        mpfr_set_d(r29308, d2, MPFR_RNDN);
        mpfr_mul(r29309, r29307, r29308, MPFR_RNDN);
        mpfr_set_d(r29310, d3, MPFR_RNDN);
        mpfr_mul(r29311, r29307, r29310, MPFR_RNDN);
        mpfr_add(r29312, r29309, r29311, MPFR_RNDN);
        return mpfr_get_d(r29312, MPFR_RNDN);
}

static mpfr_t r29313, r29314, r29315, r29316, r29317, r29318;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r29313);
        mpfr_init(r29314);
        mpfr_init(r29315);
        mpfr_init(r29316);
        mpfr_init(r29317);
        mpfr_init(r29318);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r29313, d1, MPFR_RNDN);
        mpfr_set_d(r29314, d2, MPFR_RNDN);
        mpfr_mul(r29315, r29313, r29314, MPFR_RNDN);
        mpfr_set_d(r29316, d3, MPFR_RNDN);
        mpfr_mul(r29317, r29313, r29316, MPFR_RNDN);
        mpfr_add(r29318, r29315, r29317, MPFR_RNDN);
        return mpfr_get_d(r29318, MPFR_RNDN);
}

