#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 r55367 = x;
        float r55368 = y;
        float r55369 = r55367 * r55368;
        float r55370 = z;
        float r55371 = t;
        float r55372 = a;
        float r55373 = r55371 - r55372;
        float r55374 = r55370 * r55373;
        float r55375 = r55369 + r55374;
        float r55376 = b;
        float r55377 = r55376 - r55368;
        float r55378 = r55370 * r55377;
        float r55379 = r55368 + r55378;
        float r55380 = r55375 / r55379;
        return r55380;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55381 = x;
        double r55382 = y;
        double r55383 = r55381 * r55382;
        double r55384 = z;
        double r55385 = t;
        double r55386 = a;
        double r55387 = r55385 - r55386;
        double r55388 = r55384 * r55387;
        double r55389 = r55383 + r55388;
        double r55390 = b;
        double r55391 = r55390 - r55382;
        double r55392 = r55384 * r55391;
        double r55393 = r55382 + r55392;
        double r55394 = r55389 / r55393;
        return r55394;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55395 = x;
        float r55396 = y;
        float r55397 = r55395 * r55396;
        float r55398 = z;
        float r55399 = t;
        float r55400 = a;
        float r55401 = r55399 - r55400;
        float r55402 = r55398 * r55401;
        float r55403 = r55397 + r55402;
        float r55404 = b;
        float r55405 = r55404 - r55396;
        float r55406 = r55398 * r55405;
        float r55407 = r55396 + r55406;
        float r55408 = r55403 / r55407;
        return r55408;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55409 = x;
        double r55410 = y;
        double r55411 = r55409 * r55410;
        double r55412 = z;
        double r55413 = t;
        double r55414 = a;
        double r55415 = r55413 - r55414;
        double r55416 = r55412 * r55415;
        double r55417 = r55411 + r55416;
        double r55418 = b;
        double r55419 = r55418 - r55410;
        double r55420 = r55412 * r55419;
        double r55421 = r55410 + r55420;
        double r55422 = r55417 / r55421;
        return r55422;
}

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 r55423, r55424, r55425, r55426, r55427, r55428, r55429, r55430, r55431, r55432, r55433, r55434, r55435, r55436;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55423);
        mpfr_init(r55424);
        mpfr_init(r55425);
        mpfr_init(r55426);
        mpfr_init(r55427);
        mpfr_init(r55428);
        mpfr_init(r55429);
        mpfr_init(r55430);
        mpfr_init(r55431);
        mpfr_init(r55432);
        mpfr_init(r55433);
        mpfr_init(r55434);
        mpfr_init(r55435);
        mpfr_init(r55436);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55423, x, MPFR_RNDN);
        mpfr_set_d(r55424, y, MPFR_RNDN);
        mpfr_mul(r55425, r55423, r55424, MPFR_RNDN);
        mpfr_set_d(r55426, z, MPFR_RNDN);
        mpfr_set_d(r55427, t, MPFR_RNDN);
        mpfr_set_d(r55428, a, MPFR_RNDN);
        mpfr_sub(r55429, r55427, r55428, MPFR_RNDN);
        mpfr_mul(r55430, r55426, r55429, MPFR_RNDN);
        mpfr_add(r55431, r55425, r55430, MPFR_RNDN);
        mpfr_set_d(r55432, b, MPFR_RNDN);
        mpfr_sub(r55433, r55432, r55424, MPFR_RNDN);
        mpfr_mul(r55434, r55426, r55433, MPFR_RNDN);
        mpfr_add(r55435, r55424, r55434, MPFR_RNDN);
        mpfr_div(r55436, r55431, r55435, MPFR_RNDN);
        return mpfr_get_d(r55436, MPFR_RNDN);
}

static mpfr_t r55437, r55438, r55439, r55440, r55441, r55442, r55443, r55444, r55445, r55446, r55447, r55448, r55449, r55450;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55437);
        mpfr_init(r55438);
        mpfr_init(r55439);
        mpfr_init(r55440);
        mpfr_init(r55441);
        mpfr_init(r55442);
        mpfr_init(r55443);
        mpfr_init(r55444);
        mpfr_init(r55445);
        mpfr_init(r55446);
        mpfr_init(r55447);
        mpfr_init(r55448);
        mpfr_init(r55449);
        mpfr_init(r55450);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55437, x, MPFR_RNDN);
        mpfr_set_d(r55438, y, MPFR_RNDN);
        mpfr_mul(r55439, r55437, r55438, MPFR_RNDN);
        mpfr_set_d(r55440, z, MPFR_RNDN);
        mpfr_set_d(r55441, t, MPFR_RNDN);
        mpfr_set_d(r55442, a, MPFR_RNDN);
        mpfr_sub(r55443, r55441, r55442, MPFR_RNDN);
        mpfr_mul(r55444, r55440, r55443, MPFR_RNDN);
        mpfr_add(r55445, r55439, r55444, MPFR_RNDN);
        mpfr_set_d(r55446, b, MPFR_RNDN);
        mpfr_sub(r55447, r55446, r55438, MPFR_RNDN);
        mpfr_mul(r55448, r55440, r55447, MPFR_RNDN);
        mpfr_add(r55449, r55438, r55448, MPFR_RNDN);
        mpfr_div(r55450, r55445, r55449, MPFR_RNDN);
        return mpfr_get_d(r55450, MPFR_RNDN);
}

static mpfr_t r55451, r55452, r55453, r55454, r55455, r55456, r55457, r55458, r55459, r55460, r55461, r55462, r55463, r55464;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55451);
        mpfr_init(r55452);
        mpfr_init(r55453);
        mpfr_init(r55454);
        mpfr_init(r55455);
        mpfr_init(r55456);
        mpfr_init(r55457);
        mpfr_init(r55458);
        mpfr_init(r55459);
        mpfr_init(r55460);
        mpfr_init(r55461);
        mpfr_init(r55462);
        mpfr_init(r55463);
        mpfr_init(r55464);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55451, x, MPFR_RNDN);
        mpfr_set_d(r55452, y, MPFR_RNDN);
        mpfr_mul(r55453, r55451, r55452, MPFR_RNDN);
        mpfr_set_d(r55454, z, MPFR_RNDN);
        mpfr_set_d(r55455, t, MPFR_RNDN);
        mpfr_set_d(r55456, a, MPFR_RNDN);
        mpfr_sub(r55457, r55455, r55456, MPFR_RNDN);
        mpfr_mul(r55458, r55454, r55457, MPFR_RNDN);
        mpfr_add(r55459, r55453, r55458, MPFR_RNDN);
        mpfr_set_d(r55460, b, MPFR_RNDN);
        mpfr_sub(r55461, r55460, r55452, MPFR_RNDN);
        mpfr_mul(r55462, r55454, r55461, MPFR_RNDN);
        mpfr_add(r55463, r55452, r55462, MPFR_RNDN);
        mpfr_div(r55464, r55459, r55463, MPFR_RNDN);
        return mpfr_get_d(r55464, MPFR_RNDN);
}

