#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 r51782 = d1;
        float r51783 = d2;
        float r51784 = r51782 * r51783;
        float r51785 = d3;
        float r51786 = r51782 * r51785;
        float r51787 = r51784 + r51786;
        return r51787;
}

double f_id(double d1, double d2, double d3) {
        double r51788 = d1;
        double r51789 = d2;
        double r51790 = r51788 * r51789;
        double r51791 = d3;
        double r51792 = r51788 * r51791;
        double r51793 = r51790 + r51792;
        return r51793;
}


double f_of(float d1, float d2, float d3) {
        float r51794 = d1;
        float r51795 = d2;
        float r51796 = r51794 * r51795;
        float r51797 = d3;
        float r51798 = r51794 * r51797;
        float r51799 = r51796 + r51798;
        return r51799;
}

double f_od(double d1, double d2, double d3) {
        double r51800 = d1;
        double r51801 = d2;
        double r51802 = r51800 * r51801;
        double r51803 = d3;
        double r51804 = r51800 * r51803;
        double r51805 = r51802 + r51804;
        return r51805;
}

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 r51806, r51807, r51808, r51809, r51810, r51811;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51806);
        mpfr_init(r51807);
        mpfr_init(r51808);
        mpfr_init(r51809);
        mpfr_init(r51810);
        mpfr_init(r51811);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r51806, d1, MPFR_RNDN);
        mpfr_set_d(r51807, d2, MPFR_RNDN);
        mpfr_mul(r51808, r51806, r51807, MPFR_RNDN);
        mpfr_set_d(r51809, d3, MPFR_RNDN);
        mpfr_mul(r51810, r51806, r51809, MPFR_RNDN);
        mpfr_add(r51811, r51808, r51810, MPFR_RNDN);
        return mpfr_get_d(r51811, MPFR_RNDN);
}

static mpfr_t r51812, r51813, r51814, r51815, r51816, r51817;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51812);
        mpfr_init(r51813);
        mpfr_init(r51814);
        mpfr_init(r51815);
        mpfr_init(r51816);
        mpfr_init(r51817);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r51812, d1, MPFR_RNDN);
        mpfr_set_d(r51813, d2, MPFR_RNDN);
        mpfr_mul(r51814, r51812, r51813, MPFR_RNDN);
        mpfr_set_d(r51815, d3, MPFR_RNDN);
        mpfr_mul(r51816, r51812, r51815, MPFR_RNDN);
        mpfr_add(r51817, r51814, r51816, MPFR_RNDN);
        return mpfr_get_d(r51817, MPFR_RNDN);
}

static mpfr_t r51818, r51819, r51820, r51821, r51822, r51823;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51818);
        mpfr_init(r51819);
        mpfr_init(r51820);
        mpfr_init(r51821);
        mpfr_init(r51822);
        mpfr_init(r51823);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r51818, d1, MPFR_RNDN);
        mpfr_set_d(r51819, d2, MPFR_RNDN);
        mpfr_mul(r51820, r51818, r51819, MPFR_RNDN);
        mpfr_set_d(r51821, d3, MPFR_RNDN);
        mpfr_mul(r51822, r51818, r51821, MPFR_RNDN);
        mpfr_add(r51823, r51820, r51822, MPFR_RNDN);
        return mpfr_get_d(r51823, MPFR_RNDN);
}

