#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 r55425 = x;
        float r55426 = y;
        float r55427 = r55425 * r55426;
        float r55428 = z;
        float r55429 = t;
        float r55430 = a;
        float r55431 = r55429 - r55430;
        float r55432 = r55428 * r55431;
        float r55433 = r55427 + r55432;
        float r55434 = b;
        float r55435 = r55434 - r55426;
        float r55436 = r55428 * r55435;
        float r55437 = r55426 + r55436;
        float r55438 = r55433 / r55437;
        return r55438;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55439 = x;
        double r55440 = y;
        double r55441 = r55439 * r55440;
        double r55442 = z;
        double r55443 = t;
        double r55444 = a;
        double r55445 = r55443 - r55444;
        double r55446 = r55442 * r55445;
        double r55447 = r55441 + r55446;
        double r55448 = b;
        double r55449 = r55448 - r55440;
        double r55450 = r55442 * r55449;
        double r55451 = r55440 + r55450;
        double r55452 = r55447 / r55451;
        return r55452;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55453 = x;
        float r55454 = y;
        float r55455 = r55453 * r55454;
        float r55456 = z;
        float r55457 = t;
        float r55458 = a;
        float r55459 = r55457 - r55458;
        float r55460 = r55456 * r55459;
        float r55461 = r55455 + r55460;
        float r55462 = b;
        float r55463 = r55462 - r55454;
        float r55464 = r55456 * r55463;
        float r55465 = r55454 + r55464;
        float r55466 = r55461 / r55465;
        return r55466;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55467 = x;
        double r55468 = y;
        double r55469 = r55467 * r55468;
        double r55470 = z;
        double r55471 = t;
        double r55472 = a;
        double r55473 = r55471 - r55472;
        double r55474 = r55470 * r55473;
        double r55475 = r55469 + r55474;
        double r55476 = b;
        double r55477 = r55476 - r55468;
        double r55478 = r55470 * r55477;
        double r55479 = r55468 + r55478;
        double r55480 = r55475 / r55479;
        return r55480;
}

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 r55481, r55482, r55483, r55484, r55485, r55486, r55487, r55488, r55489, r55490, r55491, r55492, r55493, r55494;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55481);
        mpfr_init(r55482);
        mpfr_init(r55483);
        mpfr_init(r55484);
        mpfr_init(r55485);
        mpfr_init(r55486);
        mpfr_init(r55487);
        mpfr_init(r55488);
        mpfr_init(r55489);
        mpfr_init(r55490);
        mpfr_init(r55491);
        mpfr_init(r55492);
        mpfr_init(r55493);
        mpfr_init(r55494);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55481, x, MPFR_RNDN);
        mpfr_set_d(r55482, y, MPFR_RNDN);
        mpfr_mul(r55483, r55481, r55482, MPFR_RNDN);
        mpfr_set_d(r55484, z, MPFR_RNDN);
        mpfr_set_d(r55485, t, MPFR_RNDN);
        mpfr_set_d(r55486, a, MPFR_RNDN);
        mpfr_sub(r55487, r55485, r55486, MPFR_RNDN);
        mpfr_mul(r55488, r55484, r55487, MPFR_RNDN);
        mpfr_add(r55489, r55483, r55488, MPFR_RNDN);
        mpfr_set_d(r55490, b, MPFR_RNDN);
        mpfr_sub(r55491, r55490, r55482, MPFR_RNDN);
        mpfr_mul(r55492, r55484, r55491, MPFR_RNDN);
        mpfr_add(r55493, r55482, r55492, MPFR_RNDN);
        mpfr_div(r55494, r55489, r55493, MPFR_RNDN);
        return mpfr_get_d(r55494, MPFR_RNDN);
}

static mpfr_t r55495, r55496, r55497, r55498, r55499, r55500, r55501, r55502, r55503, r55504, r55505, r55506, r55507, r55508;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55495);
        mpfr_init(r55496);
        mpfr_init(r55497);
        mpfr_init(r55498);
        mpfr_init(r55499);
        mpfr_init(r55500);
        mpfr_init(r55501);
        mpfr_init(r55502);
        mpfr_init(r55503);
        mpfr_init(r55504);
        mpfr_init(r55505);
        mpfr_init(r55506);
        mpfr_init(r55507);
        mpfr_init(r55508);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55495, x, MPFR_RNDN);
        mpfr_set_d(r55496, y, MPFR_RNDN);
        mpfr_mul(r55497, r55495, r55496, MPFR_RNDN);
        mpfr_set_d(r55498, z, MPFR_RNDN);
        mpfr_set_d(r55499, t, MPFR_RNDN);
        mpfr_set_d(r55500, a, MPFR_RNDN);
        mpfr_sub(r55501, r55499, r55500, MPFR_RNDN);
        mpfr_mul(r55502, r55498, r55501, MPFR_RNDN);
        mpfr_add(r55503, r55497, r55502, MPFR_RNDN);
        mpfr_set_d(r55504, b, MPFR_RNDN);
        mpfr_sub(r55505, r55504, r55496, MPFR_RNDN);
        mpfr_mul(r55506, r55498, r55505, MPFR_RNDN);
        mpfr_add(r55507, r55496, r55506, MPFR_RNDN);
        mpfr_div(r55508, r55503, r55507, MPFR_RNDN);
        return mpfr_get_d(r55508, MPFR_RNDN);
}

static mpfr_t r55509, r55510, r55511, r55512, r55513, r55514, r55515, r55516, r55517, r55518, r55519, r55520, r55521, r55522;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55509);
        mpfr_init(r55510);
        mpfr_init(r55511);
        mpfr_init(r55512);
        mpfr_init(r55513);
        mpfr_init(r55514);
        mpfr_init(r55515);
        mpfr_init(r55516);
        mpfr_init(r55517);
        mpfr_init(r55518);
        mpfr_init(r55519);
        mpfr_init(r55520);
        mpfr_init(r55521);
        mpfr_init(r55522);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55509, x, MPFR_RNDN);
        mpfr_set_d(r55510, y, MPFR_RNDN);
        mpfr_mul(r55511, r55509, r55510, MPFR_RNDN);
        mpfr_set_d(r55512, z, MPFR_RNDN);
        mpfr_set_d(r55513, t, MPFR_RNDN);
        mpfr_set_d(r55514, a, MPFR_RNDN);
        mpfr_sub(r55515, r55513, r55514, MPFR_RNDN);
        mpfr_mul(r55516, r55512, r55515, MPFR_RNDN);
        mpfr_add(r55517, r55511, r55516, MPFR_RNDN);
        mpfr_set_d(r55518, b, MPFR_RNDN);
        mpfr_sub(r55519, r55518, r55510, MPFR_RNDN);
        mpfr_mul(r55520, r55512, r55519, MPFR_RNDN);
        mpfr_add(r55521, r55510, r55520, MPFR_RNDN);
        mpfr_div(r55522, r55517, r55521, MPFR_RNDN);
        return mpfr_get_d(r55522, MPFR_RNDN);
}

