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

char *name = "Development.Shake.Progress:message from shake-0.15.5";

double f_if(float x, float y) {
        float r55325 = x;
        float r55326 = 100.0;
        float r55327 = r55325 * r55326;
        float r55328 = y;
        float r55329 = r55325 + r55328;
        float r55330 = r55327 / r55329;
        return r55330;
}

double f_id(double x, double y) {
        double r55331 = x;
        double r55332 = 100.0;
        double r55333 = r55331 * r55332;
        double r55334 = y;
        double r55335 = r55331 + r55334;
        double r55336 = r55333 / r55335;
        return r55336;
}


double f_of(float x, float y) {
        float r55337 = x;
        float r55338 = y;
        float r55339 = r55337 + r55338;
        float r55340 = 100.0;
        float r55341 = r55339 / r55340;
        float r55342 = r55337 / r55341;
        return r55342;
}

double f_od(double x, double y) {
        double r55343 = x;
        double r55344 = y;
        double r55345 = r55343 + r55344;
        double r55346 = 100.0;
        double r55347 = r55345 / r55346;
        double r55348 = r55343 / r55347;
        return r55348;
}

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 r55349, r55350, r55351, r55352, r55353, r55354;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55349);
        mpfr_init_set_str(r55350, "100.0", 10, MPFR_RNDN);
        mpfr_init(r55351);
        mpfr_init(r55352);
        mpfr_init(r55353);
        mpfr_init(r55354);
}

double f_im(double x, double y) {
        mpfr_set_d(r55349, x, MPFR_RNDN);
        ;
        mpfr_mul(r55351, r55349, r55350, MPFR_RNDN);
        mpfr_set_d(r55352, y, MPFR_RNDN);
        mpfr_add(r55353, r55349, r55352, MPFR_RNDN);
        mpfr_div(r55354, r55351, r55353, MPFR_RNDN);
        return mpfr_get_d(r55354, MPFR_RNDN);
}

static mpfr_t r55355, r55356, r55357, r55358, r55359, r55360;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55355);
        mpfr_init(r55356);
        mpfr_init(r55357);
        mpfr_init_set_str(r55358, "100.0", 10, MPFR_RNDN);
        mpfr_init(r55359);
        mpfr_init(r55360);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55355, x, MPFR_RNDN);
        mpfr_set_d(r55356, y, MPFR_RNDN);
        mpfr_add(r55357, r55355, r55356, MPFR_RNDN);
        ;
        mpfr_div(r55359, r55357, r55358, MPFR_RNDN);
        mpfr_div(r55360, r55355, r55359, MPFR_RNDN);
        return mpfr_get_d(r55360, MPFR_RNDN);
}

static mpfr_t r55361, r55362, r55363, r55364, r55365, r55366;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55361);
        mpfr_init(r55362);
        mpfr_init(r55363);
        mpfr_init_set_str(r55364, "100.0", 10, MPFR_RNDN);
        mpfr_init(r55365);
        mpfr_init(r55366);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55361, x, MPFR_RNDN);
        mpfr_set_d(r55362, y, MPFR_RNDN);
        mpfr_add(r55363, r55361, r55362, MPFR_RNDN);
        ;
        mpfr_div(r55365, r55363, r55364, MPFR_RNDN);
        mpfr_div(r55366, r55361, r55365, MPFR_RNDN);
        return mpfr_get_d(r55366, MPFR_RNDN);
}

