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

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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r55555 = x;
        float r55556 = y;
        float r55557 = r55555 * r55556;
        float r55558 = z;
        float r55559 = t;
        float r55560 = a;
        float r55561 = r55559 - r55560;
        float r55562 = r55558 * r55561;
        float r55563 = r55557 + r55562;
        float r55564 = b;
        float r55565 = r55564 - r55556;
        float r55566 = r55558 * r55565;
        float r55567 = r55556 + r55566;
        float r55568 = r55563 / r55567;
        return r55568;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55569 = x;
        double r55570 = y;
        double r55571 = r55569 * r55570;
        double r55572 = z;
        double r55573 = t;
        double r55574 = a;
        double r55575 = r55573 - r55574;
        double r55576 = r55572 * r55575;
        double r55577 = r55571 + r55576;
        double r55578 = b;
        double r55579 = r55578 - r55570;
        double r55580 = r55572 * r55579;
        double r55581 = r55570 + r55580;
        double r55582 = r55577 / r55581;
        return r55582;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55583 = x;
        float r55584 = y;
        float r55585 = r55583 * r55584;
        float r55586 = z;
        float r55587 = t;
        float r55588 = a;
        float r55589 = r55587 - r55588;
        float r55590 = r55586 * r55589;
        float r55591 = r55585 + r55590;
        float r55592 = b;
        float r55593 = r55592 - r55584;
        float r55594 = r55586 * r55593;
        float r55595 = r55584 + r55594;
        float r55596 = r55591 / r55595;
        return r55596;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55597 = x;
        double r55598 = y;
        double r55599 = r55597 * r55598;
        double r55600 = z;
        double r55601 = t;
        double r55602 = a;
        double r55603 = r55601 - r55602;
        double r55604 = r55600 * r55603;
        double r55605 = r55599 + r55604;
        double r55606 = b;
        double r55607 = r55606 - r55598;
        double r55608 = r55600 * r55607;
        double r55609 = r55598 + r55608;
        double r55610 = r55605 / r55609;
        return r55610;
}

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 r55611, r55612, r55613, r55614, r55615, r55616, r55617, r55618, r55619, r55620, r55621, r55622, r55623, r55624;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55611);
        mpfr_init(r55612);
        mpfr_init(r55613);
        mpfr_init(r55614);
        mpfr_init(r55615);
        mpfr_init(r55616);
        mpfr_init(r55617);
        mpfr_init(r55618);
        mpfr_init(r55619);
        mpfr_init(r55620);
        mpfr_init(r55621);
        mpfr_init(r55622);
        mpfr_init(r55623);
        mpfr_init(r55624);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55611, x, MPFR_RNDN);
        mpfr_set_d(r55612, y, MPFR_RNDN);
        mpfr_mul(r55613, r55611, r55612, MPFR_RNDN);
        mpfr_set_d(r55614, z, MPFR_RNDN);
        mpfr_set_d(r55615, t, MPFR_RNDN);
        mpfr_set_d(r55616, a, MPFR_RNDN);
        mpfr_sub(r55617, r55615, r55616, MPFR_RNDN);
        mpfr_mul(r55618, r55614, r55617, MPFR_RNDN);
        mpfr_add(r55619, r55613, r55618, MPFR_RNDN);
        mpfr_set_d(r55620, b, MPFR_RNDN);
        mpfr_sub(r55621, r55620, r55612, MPFR_RNDN);
        mpfr_mul(r55622, r55614, r55621, MPFR_RNDN);
        mpfr_add(r55623, r55612, r55622, MPFR_RNDN);
        mpfr_div(r55624, r55619, r55623, MPFR_RNDN);
        return mpfr_get_d(r55624, MPFR_RNDN);
}

static mpfr_t r55625, r55626, r55627, r55628, r55629, r55630, r55631, r55632, r55633, r55634, r55635, r55636, r55637, r55638;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55625);
        mpfr_init(r55626);
        mpfr_init(r55627);
        mpfr_init(r55628);
        mpfr_init(r55629);
        mpfr_init(r55630);
        mpfr_init(r55631);
        mpfr_init(r55632);
        mpfr_init(r55633);
        mpfr_init(r55634);
        mpfr_init(r55635);
        mpfr_init(r55636);
        mpfr_init(r55637);
        mpfr_init(r55638);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55625, x, MPFR_RNDN);
        mpfr_set_d(r55626, y, MPFR_RNDN);
        mpfr_mul(r55627, r55625, r55626, MPFR_RNDN);
        mpfr_set_d(r55628, z, MPFR_RNDN);
        mpfr_set_d(r55629, t, MPFR_RNDN);
        mpfr_set_d(r55630, a, MPFR_RNDN);
        mpfr_sub(r55631, r55629, r55630, MPFR_RNDN);
        mpfr_mul(r55632, r55628, r55631, MPFR_RNDN);
        mpfr_add(r55633, r55627, r55632, MPFR_RNDN);
        mpfr_set_d(r55634, b, MPFR_RNDN);
        mpfr_sub(r55635, r55634, r55626, MPFR_RNDN);
        mpfr_mul(r55636, r55628, r55635, MPFR_RNDN);
        mpfr_add(r55637, r55626, r55636, MPFR_RNDN);
        mpfr_div(r55638, r55633, r55637, MPFR_RNDN);
        return mpfr_get_d(r55638, MPFR_RNDN);
}

static mpfr_t r55639, r55640, r55641, r55642, r55643, r55644, r55645, r55646, r55647, r55648, r55649, r55650, r55651, r55652;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55639);
        mpfr_init(r55640);
        mpfr_init(r55641);
        mpfr_init(r55642);
        mpfr_init(r55643);
        mpfr_init(r55644);
        mpfr_init(r55645);
        mpfr_init(r55646);
        mpfr_init(r55647);
        mpfr_init(r55648);
        mpfr_init(r55649);
        mpfr_init(r55650);
        mpfr_init(r55651);
        mpfr_init(r55652);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55639, x, MPFR_RNDN);
        mpfr_set_d(r55640, y, MPFR_RNDN);
        mpfr_mul(r55641, r55639, r55640, MPFR_RNDN);
        mpfr_set_d(r55642, z, MPFR_RNDN);
        mpfr_set_d(r55643, t, MPFR_RNDN);
        mpfr_set_d(r55644, a, MPFR_RNDN);
        mpfr_sub(r55645, r55643, r55644, MPFR_RNDN);
        mpfr_mul(r55646, r55642, r55645, MPFR_RNDN);
        mpfr_add(r55647, r55641, r55646, MPFR_RNDN);
        mpfr_set_d(r55648, b, MPFR_RNDN);
        mpfr_sub(r55649, r55648, r55640, MPFR_RNDN);
        mpfr_mul(r55650, r55642, r55649, MPFR_RNDN);
        mpfr_add(r55651, r55640, r55650, MPFR_RNDN);
        mpfr_div(r55652, r55647, r55651, MPFR_RNDN);
        return mpfr_get_d(r55652, MPFR_RNDN);
}

