#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 r26478 = d1;
        float r26479 = d2;
        float r26480 = r26478 * r26479;
        float r26481 = d3;
        float r26482 = r26478 * r26481;
        float r26483 = r26480 + r26482;
        return r26483;
}

double f_id(double d1, double d2, double d3) {
        double r26484 = d1;
        double r26485 = d2;
        double r26486 = r26484 * r26485;
        double r26487 = d3;
        double r26488 = r26484 * r26487;
        double r26489 = r26486 + r26488;
        return r26489;
}


double f_of(float d1, float d2, float d3) {
        float r26490 = d1;
        float r26491 = d3;
        float r26492 = d2;
        float r26493 = r26491 + r26492;
        float r26494 = r26490 * r26493;
        return r26494;
}

double f_od(double d1, double d2, double d3) {
        double r26495 = d1;
        double r26496 = d3;
        double r26497 = d2;
        double r26498 = r26496 + r26497;
        double r26499 = r26495 * r26498;
        return r26499;
}

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 r26500, r26501, r26502, r26503, r26504, r26505;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init(r26505);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r26500, d1, MPFR_RNDN);
        mpfr_set_d(r26501, d2, MPFR_RNDN);
        mpfr_mul(r26502, r26500, r26501, MPFR_RNDN);
        mpfr_set_d(r26503, d3, MPFR_RNDN);
        mpfr_mul(r26504, r26500, r26503, MPFR_RNDN);
        mpfr_add(r26505, r26502, r26504, MPFR_RNDN);
        return mpfr_get_d(r26505, MPFR_RNDN);
}

static mpfr_t r26506, r26507, r26508, r26509, r26510;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26506);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r26506, d1, MPFR_RNDN);
        mpfr_set_d(r26507, d3, MPFR_RNDN);
        mpfr_set_d(r26508, d2, MPFR_RNDN);
        mpfr_add(r26509, r26507, r26508, MPFR_RNDN);
        mpfr_mul(r26510, r26506, r26509, MPFR_RNDN);
        return mpfr_get_d(r26510, MPFR_RNDN);
}

static mpfr_t r26511, r26512, r26513, r26514, r26515;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26511);
        mpfr_init(r26512);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r26511, d1, MPFR_RNDN);
        mpfr_set_d(r26512, d3, MPFR_RNDN);
        mpfr_set_d(r26513, d2, MPFR_RNDN);
        mpfr_add(r26514, r26512, r26513, MPFR_RNDN);
        mpfr_mul(r26515, r26511, r26514, MPFR_RNDN);
        return mpfr_get_d(r26515, MPFR_RNDN);
}

