#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 r55651 = x;
        float r55652 = y;
        float r55653 = r55651 * r55652;
        float r55654 = z;
        float r55655 = t;
        float r55656 = a;
        float r55657 = r55655 - r55656;
        float r55658 = r55654 * r55657;
        float r55659 = r55653 + r55658;
        float r55660 = b;
        float r55661 = r55660 - r55652;
        float r55662 = r55654 * r55661;
        float r55663 = r55652 + r55662;
        float r55664 = r55659 / r55663;
        return r55664;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55665 = x;
        double r55666 = y;
        double r55667 = r55665 * r55666;
        double r55668 = z;
        double r55669 = t;
        double r55670 = a;
        double r55671 = r55669 - r55670;
        double r55672 = r55668 * r55671;
        double r55673 = r55667 + r55672;
        double r55674 = b;
        double r55675 = r55674 - r55666;
        double r55676 = r55668 * r55675;
        double r55677 = r55666 + r55676;
        double r55678 = r55673 / r55677;
        return r55678;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55679 = x;
        float r55680 = y;
        float r55681 = r55679 * r55680;
        float r55682 = z;
        float r55683 = t;
        float r55684 = a;
        float r55685 = r55683 - r55684;
        float r55686 = r55682 * r55685;
        float r55687 = r55681 + r55686;
        float r55688 = b;
        float r55689 = r55688 - r55680;
        float r55690 = r55682 * r55689;
        float r55691 = r55680 + r55690;
        float r55692 = r55687 / r55691;
        return r55692;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55693 = x;
        double r55694 = y;
        double r55695 = r55693 * r55694;
        double r55696 = z;
        double r55697 = t;
        double r55698 = a;
        double r55699 = r55697 - r55698;
        double r55700 = r55696 * r55699;
        double r55701 = r55695 + r55700;
        double r55702 = b;
        double r55703 = r55702 - r55694;
        double r55704 = r55696 * r55703;
        double r55705 = r55694 + r55704;
        double r55706 = r55701 / r55705;
        return r55706;
}

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 r55707, r55708, r55709, r55710, r55711, r55712, r55713, r55714, r55715, r55716, r55717, r55718, r55719, r55720;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55707);
        mpfr_init(r55708);
        mpfr_init(r55709);
        mpfr_init(r55710);
        mpfr_init(r55711);
        mpfr_init(r55712);
        mpfr_init(r55713);
        mpfr_init(r55714);
        mpfr_init(r55715);
        mpfr_init(r55716);
        mpfr_init(r55717);
        mpfr_init(r55718);
        mpfr_init(r55719);
        mpfr_init(r55720);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55707, x, MPFR_RNDN);
        mpfr_set_d(r55708, y, MPFR_RNDN);
        mpfr_mul(r55709, r55707, r55708, MPFR_RNDN);
        mpfr_set_d(r55710, z, MPFR_RNDN);
        mpfr_set_d(r55711, t, MPFR_RNDN);
        mpfr_set_d(r55712, a, MPFR_RNDN);
        mpfr_sub(r55713, r55711, r55712, MPFR_RNDN);
        mpfr_mul(r55714, r55710, r55713, MPFR_RNDN);
        mpfr_add(r55715, r55709, r55714, MPFR_RNDN);
        mpfr_set_d(r55716, b, MPFR_RNDN);
        mpfr_sub(r55717, r55716, r55708, MPFR_RNDN);
        mpfr_mul(r55718, r55710, r55717, MPFR_RNDN);
        mpfr_add(r55719, r55708, r55718, MPFR_RNDN);
        mpfr_div(r55720, r55715, r55719, MPFR_RNDN);
        return mpfr_get_d(r55720, MPFR_RNDN);
}

static mpfr_t r55721, r55722, r55723, r55724, r55725, r55726, r55727, r55728, r55729, r55730, r55731, r55732, r55733, r55734;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55721);
        mpfr_init(r55722);
        mpfr_init(r55723);
        mpfr_init(r55724);
        mpfr_init(r55725);
        mpfr_init(r55726);
        mpfr_init(r55727);
        mpfr_init(r55728);
        mpfr_init(r55729);
        mpfr_init(r55730);
        mpfr_init(r55731);
        mpfr_init(r55732);
        mpfr_init(r55733);
        mpfr_init(r55734);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55721, x, MPFR_RNDN);
        mpfr_set_d(r55722, y, MPFR_RNDN);
        mpfr_mul(r55723, r55721, r55722, MPFR_RNDN);
        mpfr_set_d(r55724, z, MPFR_RNDN);
        mpfr_set_d(r55725, t, MPFR_RNDN);
        mpfr_set_d(r55726, a, MPFR_RNDN);
        mpfr_sub(r55727, r55725, r55726, MPFR_RNDN);
        mpfr_mul(r55728, r55724, r55727, MPFR_RNDN);
        mpfr_add(r55729, r55723, r55728, MPFR_RNDN);
        mpfr_set_d(r55730, b, MPFR_RNDN);
        mpfr_sub(r55731, r55730, r55722, MPFR_RNDN);
        mpfr_mul(r55732, r55724, r55731, MPFR_RNDN);
        mpfr_add(r55733, r55722, r55732, MPFR_RNDN);
        mpfr_div(r55734, r55729, r55733, MPFR_RNDN);
        return mpfr_get_d(r55734, MPFR_RNDN);
}

static mpfr_t r55735, r55736, r55737, r55738, r55739, r55740, r55741, r55742, r55743, r55744, r55745, r55746, r55747, r55748;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55735);
        mpfr_init(r55736);
        mpfr_init(r55737);
        mpfr_init(r55738);
        mpfr_init(r55739);
        mpfr_init(r55740);
        mpfr_init(r55741);
        mpfr_init(r55742);
        mpfr_init(r55743);
        mpfr_init(r55744);
        mpfr_init(r55745);
        mpfr_init(r55746);
        mpfr_init(r55747);
        mpfr_init(r55748);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55735, x, MPFR_RNDN);
        mpfr_set_d(r55736, y, MPFR_RNDN);
        mpfr_mul(r55737, r55735, r55736, MPFR_RNDN);
        mpfr_set_d(r55738, z, MPFR_RNDN);
        mpfr_set_d(r55739, t, MPFR_RNDN);
        mpfr_set_d(r55740, a, MPFR_RNDN);
        mpfr_sub(r55741, r55739, r55740, MPFR_RNDN);
        mpfr_mul(r55742, r55738, r55741, MPFR_RNDN);
        mpfr_add(r55743, r55737, r55742, MPFR_RNDN);
        mpfr_set_d(r55744, b, MPFR_RNDN);
        mpfr_sub(r55745, r55744, r55736, MPFR_RNDN);
        mpfr_mul(r55746, r55738, r55745, MPFR_RNDN);
        mpfr_add(r55747, r55736, r55746, MPFR_RNDN);
        mpfr_div(r55748, r55743, r55747, MPFR_RNDN);
        return mpfr_get_d(r55748, MPFR_RNDN);
}

