#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 r55359 = x;
        float r55360 = y;
        float r55361 = r55359 * r55360;
        float r55362 = z;
        float r55363 = t;
        float r55364 = a;
        float r55365 = r55363 - r55364;
        float r55366 = r55362 * r55365;
        float r55367 = r55361 + r55366;
        float r55368 = b;
        float r55369 = r55368 - r55360;
        float r55370 = r55362 * r55369;
        float r55371 = r55360 + r55370;
        float r55372 = r55367 / r55371;
        return r55372;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55373 = x;
        double r55374 = y;
        double r55375 = r55373 * r55374;
        double r55376 = z;
        double r55377 = t;
        double r55378 = a;
        double r55379 = r55377 - r55378;
        double r55380 = r55376 * r55379;
        double r55381 = r55375 + r55380;
        double r55382 = b;
        double r55383 = r55382 - r55374;
        double r55384 = r55376 * r55383;
        double r55385 = r55374 + r55384;
        double r55386 = r55381 / r55385;
        return r55386;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55387 = x;
        float r55388 = y;
        float r55389 = r55387 * r55388;
        float r55390 = z;
        float r55391 = t;
        float r55392 = a;
        float r55393 = r55391 - r55392;
        float r55394 = r55390 * r55393;
        float r55395 = r55389 + r55394;
        float r55396 = b;
        float r55397 = r55396 - r55388;
        float r55398 = r55390 * r55397;
        float r55399 = r55388 + r55398;
        float r55400 = r55395 / r55399;
        return r55400;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55401 = x;
        double r55402 = y;
        double r55403 = r55401 * r55402;
        double r55404 = z;
        double r55405 = t;
        double r55406 = a;
        double r55407 = r55405 - r55406;
        double r55408 = r55404 * r55407;
        double r55409 = r55403 + r55408;
        double r55410 = b;
        double r55411 = r55410 - r55402;
        double r55412 = r55404 * r55411;
        double r55413 = r55402 + r55412;
        double r55414 = r55409 / r55413;
        return r55414;
}

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 r55415, r55416, r55417, r55418, r55419, r55420, r55421, r55422, r55423, r55424, r55425, r55426, r55427, r55428;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55415);
        mpfr_init(r55416);
        mpfr_init(r55417);
        mpfr_init(r55418);
        mpfr_init(r55419);
        mpfr_init(r55420);
        mpfr_init(r55421);
        mpfr_init(r55422);
        mpfr_init(r55423);
        mpfr_init(r55424);
        mpfr_init(r55425);
        mpfr_init(r55426);
        mpfr_init(r55427);
        mpfr_init(r55428);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55415, x, MPFR_RNDN);
        mpfr_set_d(r55416, y, MPFR_RNDN);
        mpfr_mul(r55417, r55415, r55416, MPFR_RNDN);
        mpfr_set_d(r55418, z, MPFR_RNDN);
        mpfr_set_d(r55419, t, MPFR_RNDN);
        mpfr_set_d(r55420, a, MPFR_RNDN);
        mpfr_sub(r55421, r55419, r55420, MPFR_RNDN);
        mpfr_mul(r55422, r55418, r55421, MPFR_RNDN);
        mpfr_add(r55423, r55417, r55422, MPFR_RNDN);
        mpfr_set_d(r55424, b, MPFR_RNDN);
        mpfr_sub(r55425, r55424, r55416, MPFR_RNDN);
        mpfr_mul(r55426, r55418, r55425, MPFR_RNDN);
        mpfr_add(r55427, r55416, r55426, MPFR_RNDN);
        mpfr_div(r55428, r55423, r55427, MPFR_RNDN);
        return mpfr_get_d(r55428, MPFR_RNDN);
}

static mpfr_t r55429, r55430, r55431, r55432, r55433, r55434, r55435, r55436, r55437, r55438, r55439, r55440, r55441, r55442;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55429);
        mpfr_init(r55430);
        mpfr_init(r55431);
        mpfr_init(r55432);
        mpfr_init(r55433);
        mpfr_init(r55434);
        mpfr_init(r55435);
        mpfr_init(r55436);
        mpfr_init(r55437);
        mpfr_init(r55438);
        mpfr_init(r55439);
        mpfr_init(r55440);
        mpfr_init(r55441);
        mpfr_init(r55442);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55429, x, MPFR_RNDN);
        mpfr_set_d(r55430, y, MPFR_RNDN);
        mpfr_mul(r55431, r55429, r55430, MPFR_RNDN);
        mpfr_set_d(r55432, z, MPFR_RNDN);
        mpfr_set_d(r55433, t, MPFR_RNDN);
        mpfr_set_d(r55434, a, MPFR_RNDN);
        mpfr_sub(r55435, r55433, r55434, MPFR_RNDN);
        mpfr_mul(r55436, r55432, r55435, MPFR_RNDN);
        mpfr_add(r55437, r55431, r55436, MPFR_RNDN);
        mpfr_set_d(r55438, b, MPFR_RNDN);
        mpfr_sub(r55439, r55438, r55430, MPFR_RNDN);
        mpfr_mul(r55440, r55432, r55439, MPFR_RNDN);
        mpfr_add(r55441, r55430, r55440, MPFR_RNDN);
        mpfr_div(r55442, r55437, r55441, MPFR_RNDN);
        return mpfr_get_d(r55442, MPFR_RNDN);
}

static mpfr_t r55443, r55444, r55445, r55446, r55447, r55448, r55449, r55450, r55451, r55452, r55453, r55454, r55455, r55456;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55443);
        mpfr_init(r55444);
        mpfr_init(r55445);
        mpfr_init(r55446);
        mpfr_init(r55447);
        mpfr_init(r55448);
        mpfr_init(r55449);
        mpfr_init(r55450);
        mpfr_init(r55451);
        mpfr_init(r55452);
        mpfr_init(r55453);
        mpfr_init(r55454);
        mpfr_init(r55455);
        mpfr_init(r55456);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55443, x, MPFR_RNDN);
        mpfr_set_d(r55444, y, MPFR_RNDN);
        mpfr_mul(r55445, r55443, r55444, MPFR_RNDN);
        mpfr_set_d(r55446, z, MPFR_RNDN);
        mpfr_set_d(r55447, t, MPFR_RNDN);
        mpfr_set_d(r55448, a, MPFR_RNDN);
        mpfr_sub(r55449, r55447, r55448, MPFR_RNDN);
        mpfr_mul(r55450, r55446, r55449, MPFR_RNDN);
        mpfr_add(r55451, r55445, r55450, MPFR_RNDN);
        mpfr_set_d(r55452, b, MPFR_RNDN);
        mpfr_sub(r55453, r55452, r55444, MPFR_RNDN);
        mpfr_mul(r55454, r55446, r55453, MPFR_RNDN);
        mpfr_add(r55455, r55444, r55454, MPFR_RNDN);
        mpfr_div(r55456, r55451, r55455, MPFR_RNDN);
        return mpfr_get_d(r55456, MPFR_RNDN);
}

