#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 r51362 = d1;
        float r51363 = d2;
        float r51364 = r51362 * r51363;
        float r51365 = d3;
        float r51366 = r51362 * r51365;
        float r51367 = r51364 + r51366;
        return r51367;
}

double f_id(double d1, double d2, double d3) {
        double r51368 = d1;
        double r51369 = d2;
        double r51370 = r51368 * r51369;
        double r51371 = d3;
        double r51372 = r51368 * r51371;
        double r51373 = r51370 + r51372;
        return r51373;
}


double f_of(float d1, float d2, float d3) {
        float r51374 = d1;
        float r51375 = d2;
        float r51376 = r51374 * r51375;
        float r51377 = d3;
        float r51378 = r51374 * r51377;
        float r51379 = r51376 + r51378;
        return r51379;
}

double f_od(double d1, double d2, double d3) {
        double r51380 = d1;
        double r51381 = d2;
        double r51382 = r51380 * r51381;
        double r51383 = d3;
        double r51384 = r51380 * r51383;
        double r51385 = r51382 + r51384;
        return r51385;
}

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 r51386, r51387, r51388, r51389, r51390, r51391;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51386);
        mpfr_init(r51387);
        mpfr_init(r51388);
        mpfr_init(r51389);
        mpfr_init(r51390);
        mpfr_init(r51391);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r51386, d1, MPFR_RNDN);
        mpfr_set_d(r51387, d2, MPFR_RNDN);
        mpfr_mul(r51388, r51386, r51387, MPFR_RNDN);
        mpfr_set_d(r51389, d3, MPFR_RNDN);
        mpfr_mul(r51390, r51386, r51389, MPFR_RNDN);
        mpfr_add(r51391, r51388, r51390, MPFR_RNDN);
        return mpfr_get_d(r51391, MPFR_RNDN);
}

static mpfr_t r51392, r51393, r51394, r51395, r51396, r51397;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51392);
        mpfr_init(r51393);
        mpfr_init(r51394);
        mpfr_init(r51395);
        mpfr_init(r51396);
        mpfr_init(r51397);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r51392, d1, MPFR_RNDN);
        mpfr_set_d(r51393, d2, MPFR_RNDN);
        mpfr_mul(r51394, r51392, r51393, MPFR_RNDN);
        mpfr_set_d(r51395, d3, MPFR_RNDN);
        mpfr_mul(r51396, r51392, r51395, MPFR_RNDN);
        mpfr_add(r51397, r51394, r51396, MPFR_RNDN);
        return mpfr_get_d(r51397, MPFR_RNDN);
}

static mpfr_t r51398, r51399, r51400, r51401, r51402, r51403;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51398);
        mpfr_init(r51399);
        mpfr_init(r51400);
        mpfr_init(r51401);
        mpfr_init(r51402);
        mpfr_init(r51403);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r51398, d1, MPFR_RNDN);
        mpfr_set_d(r51399, d2, MPFR_RNDN);
        mpfr_mul(r51400, r51398, r51399, MPFR_RNDN);
        mpfr_set_d(r51401, d3, MPFR_RNDN);
        mpfr_mul(r51402, r51398, r51401, MPFR_RNDN);
        mpfr_add(r51403, r51400, r51402, MPFR_RNDN);
        return mpfr_get_d(r51403, MPFR_RNDN);
}

