#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 r48885 = d1;
        float r48886 = d2;
        float r48887 = r48885 * r48886;
        float r48888 = d3;
        float r48889 = 5.0f;
        float r48890 = r48888 + r48889;
        float r48891 = r48890 * r48885;
        float r48892 = r48887 + r48891;
        float r48893 = 32.0f;
        float r48894 = r48885 * r48893;
        float r48895 = r48892 + r48894;
        return r48895;
}

double f_id(double d1, double d2, double d3) {
        double r48896 = d1;
        double r48897 = d2;
        double r48898 = r48896 * r48897;
        double r48899 = d3;
        double r48900 = 5.0;
        double r48901 = r48899 + r48900;
        double r48902 = r48901 * r48896;
        double r48903 = r48898 + r48902;
        double r48904 = 32.0;
        double r48905 = r48896 * r48904;
        double r48906 = r48903 + r48905;
        return r48906;
}


double f_of(float d1, float d2, float d3) {
        float r48907 = 37.0f;
        float r48908 = d3;
        float r48909 = d2;
        float r48910 = r48908 + r48909;
        float r48911 = r48907 + r48910;
        float r48912 = d1;
        float r48913 = r48911 * r48912;
        return r48913;
}

double f_od(double d1, double d2, double d3) {
        double r48914 = 37.0;
        double r48915 = d3;
        double r48916 = d2;
        double r48917 = r48915 + r48916;
        double r48918 = r48914 + r48917;
        double r48919 = d1;
        double r48920 = r48918 * r48919;
        return r48920;
}

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 r48921, r48922, r48923, r48924, r48925, r48926, r48927, r48928, r48929, r48930, r48931;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r48921);
        mpfr_init(r48922);
        mpfr_init(r48923);
        mpfr_init(r48924);
        mpfr_init_set_str(r48925, "5", 10, MPFR_RNDN);
        mpfr_init(r48926);
        mpfr_init(r48927);
        mpfr_init(r48928);
        mpfr_init_set_str(r48929, "32", 10, MPFR_RNDN);
        mpfr_init(r48930);
        mpfr_init(r48931);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r48921, d1, MPFR_RNDN);
        mpfr_set_d(r48922, d2, MPFR_RNDN);
        mpfr_mul(r48923, r48921, r48922, MPFR_RNDN);
        mpfr_set_d(r48924, d3, MPFR_RNDN);
        ;
        mpfr_add(r48926, r48924, r48925, MPFR_RNDN);
        mpfr_mul(r48927, r48926, r48921, MPFR_RNDN);
        mpfr_add(r48928, r48923, r48927, MPFR_RNDN);
        ;
        mpfr_mul(r48930, r48921, r48929, MPFR_RNDN);
        mpfr_add(r48931, r48928, r48930, MPFR_RNDN);
        return mpfr_get_d(r48931, MPFR_RNDN);
}

static mpfr_t r48932, r48933, r48934, r48935, r48936, r48937, r48938;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r48932, "37", 10, MPFR_RNDN);
        mpfr_init(r48933);
        mpfr_init(r48934);
        mpfr_init(r48935);
        mpfr_init(r48936);
        mpfr_init(r48937);
        mpfr_init(r48938);
}

double f_fm(double d1, double d2, double d3) {
        ;
        mpfr_set_d(r48933, d3, MPFR_RNDN);
        mpfr_set_d(r48934, d2, MPFR_RNDN);
        mpfr_add(r48935, r48933, r48934, MPFR_RNDN);
        mpfr_add(r48936, r48932, r48935, MPFR_RNDN);
        mpfr_set_d(r48937, d1, MPFR_RNDN);
        mpfr_mul(r48938, r48936, r48937, MPFR_RNDN);
        return mpfr_get_d(r48938, MPFR_RNDN);
}

static mpfr_t r48939, r48940, r48941, r48942, r48943, r48944, r48945;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r48939, "37", 10, MPFR_RNDN);
        mpfr_init(r48940);
        mpfr_init(r48941);
        mpfr_init(r48942);
        mpfr_init(r48943);
        mpfr_init(r48944);
        mpfr_init(r48945);
}

double f_dm(double d1, double d2, double d3) {
        ;
        mpfr_set_d(r48940, d3, MPFR_RNDN);
        mpfr_set_d(r48941, d2, MPFR_RNDN);
        mpfr_add(r48942, r48940, r48941, MPFR_RNDN);
        mpfr_add(r48943, r48939, r48942, MPFR_RNDN);
        mpfr_set_d(r48944, d1, MPFR_RNDN);
        mpfr_mul(r48945, r48943, r48944, MPFR_RNDN);
        return mpfr_get_d(r48945, MPFR_RNDN);
}

