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

char *name = "FastMath dist3";

double f_if(float d1, float d2, float d3) {
        float r11899 = d1;
        float r11900 = d2;
        float r11901 = r11899 * r11900;
        float r11902 = d3;
        float r11903 = 5.0f;
        float r11904 = r11902 + r11903;
        float r11905 = r11904 * r11899;
        float r11906 = r11901 + r11905;
        float r11907 = 32.0f;
        float r11908 = r11899 * r11907;
        float r11909 = r11906 + r11908;
        return r11909;
}

double f_id(double d1, double d2, double d3) {
        double r11910 = d1;
        double r11911 = d2;
        double r11912 = r11910 * r11911;
        double r11913 = d3;
        double r11914 = 5.0;
        double r11915 = r11913 + r11914;
        double r11916 = r11915 * r11910;
        double r11917 = r11912 + r11916;
        double r11918 = 32.0;
        double r11919 = r11910 * r11918;
        double r11920 = r11917 + r11919;
        return r11920;
}


double f_of(float d1, float d2, float d3) {
        float r11921 = d1;
        float r11922 = 37.0f;
        float r11923 = d2;
        float r11924 = r11922 + r11923;
        float r11925 = d3;
        float r11926 = r11925 * r11921;
        float r11927 = fma(r11921, r11924, r11926);
        return r11927;
}

double f_od(double d1, double d2, double d3) {
        double r11928 = d1;
        double r11929 = 37.0;
        double r11930 = d2;
        double r11931 = r11929 + r11930;
        double r11932 = d3;
        double r11933 = r11932 * r11928;
        double r11934 = fma(r11928, r11931, r11933);
        return r11934;
}

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 r11935, r11936, r11937, r11938, r11939, r11940, r11941, r11942, r11943, r11944, r11945;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11935);
        mpfr_init(r11936);
        mpfr_init(r11937);
        mpfr_init(r11938);
        mpfr_init_set_str(r11939, "5", 10, MPFR_RNDN);
        mpfr_init(r11940);
        mpfr_init(r11941);
        mpfr_init(r11942);
        mpfr_init_set_str(r11943, "32", 10, MPFR_RNDN);
        mpfr_init(r11944);
        mpfr_init(r11945);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r11935, d1, MPFR_RNDN);
        mpfr_set_d(r11936, d2, MPFR_RNDN);
        mpfr_mul(r11937, r11935, r11936, MPFR_RNDN);
        mpfr_set_d(r11938, d3, MPFR_RNDN);
        ;
        mpfr_add(r11940, r11938, r11939, MPFR_RNDN);
        mpfr_mul(r11941, r11940, r11935, MPFR_RNDN);
        mpfr_add(r11942, r11937, r11941, MPFR_RNDN);
        ;
        mpfr_mul(r11944, r11935, r11943, MPFR_RNDN);
        mpfr_add(r11945, r11942, r11944, MPFR_RNDN);
        return mpfr_get_d(r11945, MPFR_RNDN);
}

static mpfr_t r11946, r11947, r11948, r11949, r11950, r11951, r11952;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11946);
        mpfr_init_set_str(r11947, "37", 10, MPFR_RNDN);
        mpfr_init(r11948);
        mpfr_init(r11949);
        mpfr_init(r11950);
        mpfr_init(r11951);
        mpfr_init(r11952);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r11946, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11948, d2, MPFR_RNDN);
        mpfr_add(r11949, r11947, r11948, MPFR_RNDN);
        mpfr_set_d(r11950, d3, MPFR_RNDN);
        mpfr_mul(r11951, r11950, r11946, MPFR_RNDN);
        mpfr_fma(r11952, r11946, r11949, r11951, MPFR_RNDN);
        return mpfr_get_d(r11952, MPFR_RNDN);
}

static mpfr_t r11953, r11954, r11955, r11956, r11957, r11958, r11959;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11953);
        mpfr_init_set_str(r11954, "37", 10, MPFR_RNDN);
        mpfr_init(r11955);
        mpfr_init(r11956);
        mpfr_init(r11957);
        mpfr_init(r11958);
        mpfr_init(r11959);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r11953, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r11955, d2, MPFR_RNDN);
        mpfr_add(r11956, r11954, r11955, MPFR_RNDN);
        mpfr_set_d(r11957, d3, MPFR_RNDN);
        mpfr_mul(r11958, r11957, r11953, MPFR_RNDN);
        mpfr_fma(r11959, r11953, r11956, r11958, MPFR_RNDN);
        return mpfr_get_d(r11959, MPFR_RNDN);
}

