#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 r55503 = x;
        float r55504 = y;
        float r55505 = r55503 * r55504;
        float r55506 = z;
        float r55507 = t;
        float r55508 = a;
        float r55509 = r55507 - r55508;
        float r55510 = r55506 * r55509;
        float r55511 = r55505 + r55510;
        float r55512 = b;
        float r55513 = r55512 - r55504;
        float r55514 = r55506 * r55513;
        float r55515 = r55504 + r55514;
        float r55516 = r55511 / r55515;
        return r55516;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55517 = x;
        double r55518 = y;
        double r55519 = r55517 * r55518;
        double r55520 = z;
        double r55521 = t;
        double r55522 = a;
        double r55523 = r55521 - r55522;
        double r55524 = r55520 * r55523;
        double r55525 = r55519 + r55524;
        double r55526 = b;
        double r55527 = r55526 - r55518;
        double r55528 = r55520 * r55527;
        double r55529 = r55518 + r55528;
        double r55530 = r55525 / r55529;
        return r55530;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55531 = x;
        float r55532 = y;
        float r55533 = r55531 * r55532;
        float r55534 = z;
        float r55535 = t;
        float r55536 = a;
        float r55537 = r55535 - r55536;
        float r55538 = r55534 * r55537;
        float r55539 = r55533 + r55538;
        float r55540 = b;
        float r55541 = r55540 - r55532;
        float r55542 = r55534 * r55541;
        float r55543 = r55532 + r55542;
        float r55544 = r55539 / r55543;
        return r55544;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55545 = x;
        double r55546 = y;
        double r55547 = r55545 * r55546;
        double r55548 = z;
        double r55549 = t;
        double r55550 = a;
        double r55551 = r55549 - r55550;
        double r55552 = r55548 * r55551;
        double r55553 = r55547 + r55552;
        double r55554 = b;
        double r55555 = r55554 - r55546;
        double r55556 = r55548 * r55555;
        double r55557 = r55546 + r55556;
        double r55558 = r55553 / r55557;
        return r55558;
}

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 r55559, r55560, r55561, r55562, r55563, r55564, r55565, r55566, r55567, r55568, r55569, r55570, r55571, r55572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55559);
        mpfr_init(r55560);
        mpfr_init(r55561);
        mpfr_init(r55562);
        mpfr_init(r55563);
        mpfr_init(r55564);
        mpfr_init(r55565);
        mpfr_init(r55566);
        mpfr_init(r55567);
        mpfr_init(r55568);
        mpfr_init(r55569);
        mpfr_init(r55570);
        mpfr_init(r55571);
        mpfr_init(r55572);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55559, x, MPFR_RNDN);
        mpfr_set_d(r55560, y, MPFR_RNDN);
        mpfr_mul(r55561, r55559, r55560, MPFR_RNDN);
        mpfr_set_d(r55562, z, MPFR_RNDN);
        mpfr_set_d(r55563, t, MPFR_RNDN);
        mpfr_set_d(r55564, a, MPFR_RNDN);
        mpfr_sub(r55565, r55563, r55564, MPFR_RNDN);
        mpfr_mul(r55566, r55562, r55565, MPFR_RNDN);
        mpfr_add(r55567, r55561, r55566, MPFR_RNDN);
        mpfr_set_d(r55568, b, MPFR_RNDN);
        mpfr_sub(r55569, r55568, r55560, MPFR_RNDN);
        mpfr_mul(r55570, r55562, r55569, MPFR_RNDN);
        mpfr_add(r55571, r55560, r55570, MPFR_RNDN);
        mpfr_div(r55572, r55567, r55571, MPFR_RNDN);
        return mpfr_get_d(r55572, MPFR_RNDN);
}

static mpfr_t r55573, r55574, r55575, r55576, r55577, r55578, r55579, r55580, r55581, r55582, r55583, r55584, r55585, r55586;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55573);
        mpfr_init(r55574);
        mpfr_init(r55575);
        mpfr_init(r55576);
        mpfr_init(r55577);
        mpfr_init(r55578);
        mpfr_init(r55579);
        mpfr_init(r55580);
        mpfr_init(r55581);
        mpfr_init(r55582);
        mpfr_init(r55583);
        mpfr_init(r55584);
        mpfr_init(r55585);
        mpfr_init(r55586);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55573, x, MPFR_RNDN);
        mpfr_set_d(r55574, y, MPFR_RNDN);
        mpfr_mul(r55575, r55573, r55574, MPFR_RNDN);
        mpfr_set_d(r55576, z, MPFR_RNDN);
        mpfr_set_d(r55577, t, MPFR_RNDN);
        mpfr_set_d(r55578, a, MPFR_RNDN);
        mpfr_sub(r55579, r55577, r55578, MPFR_RNDN);
        mpfr_mul(r55580, r55576, r55579, MPFR_RNDN);
        mpfr_add(r55581, r55575, r55580, MPFR_RNDN);
        mpfr_set_d(r55582, b, MPFR_RNDN);
        mpfr_sub(r55583, r55582, r55574, MPFR_RNDN);
        mpfr_mul(r55584, r55576, r55583, MPFR_RNDN);
        mpfr_add(r55585, r55574, r55584, MPFR_RNDN);
        mpfr_div(r55586, r55581, r55585, MPFR_RNDN);
        return mpfr_get_d(r55586, MPFR_RNDN);
}

static mpfr_t r55587, r55588, r55589, r55590, r55591, r55592, r55593, r55594, r55595, r55596, r55597, r55598, r55599, r55600;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55587);
        mpfr_init(r55588);
        mpfr_init(r55589);
        mpfr_init(r55590);
        mpfr_init(r55591);
        mpfr_init(r55592);
        mpfr_init(r55593);
        mpfr_init(r55594);
        mpfr_init(r55595);
        mpfr_init(r55596);
        mpfr_init(r55597);
        mpfr_init(r55598);
        mpfr_init(r55599);
        mpfr_init(r55600);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55587, x, MPFR_RNDN);
        mpfr_set_d(r55588, y, MPFR_RNDN);
        mpfr_mul(r55589, r55587, r55588, MPFR_RNDN);
        mpfr_set_d(r55590, z, MPFR_RNDN);
        mpfr_set_d(r55591, t, MPFR_RNDN);
        mpfr_set_d(r55592, a, MPFR_RNDN);
        mpfr_sub(r55593, r55591, r55592, MPFR_RNDN);
        mpfr_mul(r55594, r55590, r55593, MPFR_RNDN);
        mpfr_add(r55595, r55589, r55594, MPFR_RNDN);
        mpfr_set_d(r55596, b, MPFR_RNDN);
        mpfr_sub(r55597, r55596, r55588, MPFR_RNDN);
        mpfr_mul(r55598, r55590, r55597, MPFR_RNDN);
        mpfr_add(r55599, r55588, r55598, MPFR_RNDN);
        mpfr_div(r55600, r55595, r55599, MPFR_RNDN);
        return mpfr_get_d(r55600, MPFR_RNDN);
}

