#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 r55262 = x;
        float r55263 = y;
        float r55264 = r55262 * r55263;
        float r55265 = z;
        float r55266 = t;
        float r55267 = a;
        float r55268 = r55266 - r55267;
        float r55269 = r55265 * r55268;
        float r55270 = r55264 + r55269;
        float r55271 = b;
        float r55272 = r55271 - r55263;
        float r55273 = r55265 * r55272;
        float r55274 = r55263 + r55273;
        float r55275 = r55270 / r55274;
        return r55275;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55276 = x;
        double r55277 = y;
        double r55278 = r55276 * r55277;
        double r55279 = z;
        double r55280 = t;
        double r55281 = a;
        double r55282 = r55280 - r55281;
        double r55283 = r55279 * r55282;
        double r55284 = r55278 + r55283;
        double r55285 = b;
        double r55286 = r55285 - r55277;
        double r55287 = r55279 * r55286;
        double r55288 = r55277 + r55287;
        double r55289 = r55284 / r55288;
        return r55289;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55290 = x;
        float r55291 = y;
        float r55292 = r55290 * r55291;
        float r55293 = z;
        float r55294 = t;
        float r55295 = a;
        float r55296 = r55294 - r55295;
        float r55297 = r55293 * r55296;
        float r55298 = r55292 + r55297;
        float r55299 = b;
        float r55300 = r55299 - r55291;
        float r55301 = r55293 * r55300;
        float r55302 = r55291 + r55301;
        float r55303 = r55298 / r55302;
        return r55303;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55304 = x;
        double r55305 = y;
        double r55306 = r55304 * r55305;
        double r55307 = z;
        double r55308 = t;
        double r55309 = a;
        double r55310 = r55308 - r55309;
        double r55311 = r55307 * r55310;
        double r55312 = r55306 + r55311;
        double r55313 = b;
        double r55314 = r55313 - r55305;
        double r55315 = r55307 * r55314;
        double r55316 = r55305 + r55315;
        double r55317 = r55312 / r55316;
        return r55317;
}

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 r55318, r55319, r55320, r55321, r55322, r55323, r55324, r55325, r55326, r55327, r55328, r55329, r55330, r55331;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55318);
        mpfr_init(r55319);
        mpfr_init(r55320);
        mpfr_init(r55321);
        mpfr_init(r55322);
        mpfr_init(r55323);
        mpfr_init(r55324);
        mpfr_init(r55325);
        mpfr_init(r55326);
        mpfr_init(r55327);
        mpfr_init(r55328);
        mpfr_init(r55329);
        mpfr_init(r55330);
        mpfr_init(r55331);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55318, x, MPFR_RNDN);
        mpfr_set_d(r55319, y, MPFR_RNDN);
        mpfr_mul(r55320, r55318, r55319, MPFR_RNDN);
        mpfr_set_d(r55321, z, MPFR_RNDN);
        mpfr_set_d(r55322, t, MPFR_RNDN);
        mpfr_set_d(r55323, a, MPFR_RNDN);
        mpfr_sub(r55324, r55322, r55323, MPFR_RNDN);
        mpfr_mul(r55325, r55321, r55324, MPFR_RNDN);
        mpfr_add(r55326, r55320, r55325, MPFR_RNDN);
        mpfr_set_d(r55327, b, MPFR_RNDN);
        mpfr_sub(r55328, r55327, r55319, MPFR_RNDN);
        mpfr_mul(r55329, r55321, r55328, MPFR_RNDN);
        mpfr_add(r55330, r55319, r55329, MPFR_RNDN);
        mpfr_div(r55331, r55326, r55330, MPFR_RNDN);
        return mpfr_get_d(r55331, MPFR_RNDN);
}

static mpfr_t r55332, r55333, r55334, r55335, r55336, r55337, r55338, r55339, r55340, r55341, r55342, r55343, r55344, r55345;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55332);
        mpfr_init(r55333);
        mpfr_init(r55334);
        mpfr_init(r55335);
        mpfr_init(r55336);
        mpfr_init(r55337);
        mpfr_init(r55338);
        mpfr_init(r55339);
        mpfr_init(r55340);
        mpfr_init(r55341);
        mpfr_init(r55342);
        mpfr_init(r55343);
        mpfr_init(r55344);
        mpfr_init(r55345);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55332, x, MPFR_RNDN);
        mpfr_set_d(r55333, y, MPFR_RNDN);
        mpfr_mul(r55334, r55332, r55333, MPFR_RNDN);
        mpfr_set_d(r55335, z, MPFR_RNDN);
        mpfr_set_d(r55336, t, MPFR_RNDN);
        mpfr_set_d(r55337, a, MPFR_RNDN);
        mpfr_sub(r55338, r55336, r55337, MPFR_RNDN);
        mpfr_mul(r55339, r55335, r55338, MPFR_RNDN);
        mpfr_add(r55340, r55334, r55339, MPFR_RNDN);
        mpfr_set_d(r55341, b, MPFR_RNDN);
        mpfr_sub(r55342, r55341, r55333, MPFR_RNDN);
        mpfr_mul(r55343, r55335, r55342, MPFR_RNDN);
        mpfr_add(r55344, r55333, r55343, MPFR_RNDN);
        mpfr_div(r55345, r55340, r55344, MPFR_RNDN);
        return mpfr_get_d(r55345, MPFR_RNDN);
}

static mpfr_t r55346, r55347, r55348, r55349, r55350, r55351, r55352, r55353, r55354, r55355, r55356, r55357, r55358, r55359;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55346);
        mpfr_init(r55347);
        mpfr_init(r55348);
        mpfr_init(r55349);
        mpfr_init(r55350);
        mpfr_init(r55351);
        mpfr_init(r55352);
        mpfr_init(r55353);
        mpfr_init(r55354);
        mpfr_init(r55355);
        mpfr_init(r55356);
        mpfr_init(r55357);
        mpfr_init(r55358);
        mpfr_init(r55359);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55346, x, MPFR_RNDN);
        mpfr_set_d(r55347, y, MPFR_RNDN);
        mpfr_mul(r55348, r55346, r55347, MPFR_RNDN);
        mpfr_set_d(r55349, z, MPFR_RNDN);
        mpfr_set_d(r55350, t, MPFR_RNDN);
        mpfr_set_d(r55351, a, MPFR_RNDN);
        mpfr_sub(r55352, r55350, r55351, MPFR_RNDN);
        mpfr_mul(r55353, r55349, r55352, MPFR_RNDN);
        mpfr_add(r55354, r55348, r55353, MPFR_RNDN);
        mpfr_set_d(r55355, b, MPFR_RNDN);
        mpfr_sub(r55356, r55355, r55347, MPFR_RNDN);
        mpfr_mul(r55357, r55349, r55356, MPFR_RNDN);
        mpfr_add(r55358, r55347, r55357, MPFR_RNDN);
        mpfr_div(r55359, r55354, r55358, MPFR_RNDN);
        return mpfr_get_d(r55359, MPFR_RNDN);
}

