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

char *name = "ReportTypes:explainFloat from gipeda-0.1.2.1";

double f_if(float x) {
        float r40980 = 100.0;
        float r40981 = x;
        float r40982 = r40981 - r40981;
        float r40983 = r40982 / r40981;
        float r40984 = r40980 * r40983;
        return r40984;
}

double f_id(double x) {
        double r40985 = 100.0;
        double r40986 = x;
        double r40987 = r40986 - r40986;
        double r40988 = r40987 / r40986;
        double r40989 = r40985 * r40988;
        return r40989;
}


double f_of(float x) {
        float r40990 = 100.0;
        float r40991 = x;
        float r40992 = r40991 - r40991;
        float r40993 = r40992 / r40991;
        float r40994 = r40990 * r40993;
        return r40994;
}

double f_od(double x) {
        double r40995 = 100.0;
        double r40996 = x;
        double r40997 = r40996 - r40996;
        double r40998 = r40997 / r40996;
        double r40999 = r40995 * r40998;
        return r40999;
}

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 r41000, r41001, r41002, r41003, r41004;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41000, "100.0", 10, MPFR_RNDN);
        mpfr_init(r41001);
        mpfr_init(r41002);
        mpfr_init(r41003);
        mpfr_init(r41004);
}

double f_im(double x) {
        ;
        mpfr_set_d(r41001, x, MPFR_RNDN);
        mpfr_sub(r41002, r41001, r41001, MPFR_RNDN);
        mpfr_div(r41003, r41002, r41001, MPFR_RNDN);
        mpfr_mul(r41004, r41000, r41003, MPFR_RNDN);
        return mpfr_get_d(r41004, MPFR_RNDN);
}

static mpfr_t r41005, r41006, r41007, r41008, r41009;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41005, "100.0", 10, MPFR_RNDN);
        mpfr_init(r41006);
        mpfr_init(r41007);
        mpfr_init(r41008);
        mpfr_init(r41009);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r41006, x, MPFR_RNDN);
        mpfr_sub(r41007, r41006, r41006, MPFR_RNDN);
        mpfr_div(r41008, r41007, r41006, MPFR_RNDN);
        mpfr_mul(r41009, r41005, r41008, MPFR_RNDN);
        return mpfr_get_d(r41009, MPFR_RNDN);
}

static mpfr_t r41010, r41011, r41012, r41013, r41014;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41010, "100.0", 10, MPFR_RNDN);
        mpfr_init(r41011);
        mpfr_init(r41012);
        mpfr_init(r41013);
        mpfr_init(r41014);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r41011, x, MPFR_RNDN);
        mpfr_sub(r41012, r41011, r41011, MPFR_RNDN);
        mpfr_div(r41013, r41012, r41011, MPFR_RNDN);
        mpfr_mul(r41014, r41010, r41013, MPFR_RNDN);
        return mpfr_get_d(r41014, MPFR_RNDN);
}

