#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Language.Haskell.HsColour.ColourHighlight:unbase from hscolour-1.23";

double f_if(float x, float y, float z, float t) {
        float r29751 = x;
        float r29752 = y;
        float r29753 = r29751 * r29752;
        float r29754 = z;
        float r29755 = r29753 + r29754;
        float r29756 = r29755 * r29752;
        float r29757 = t;
        float r29758 = r29756 + r29757;
        return r29758;
}

double f_id(double x, double y, double z, double t) {
        double r29759 = x;
        double r29760 = y;
        double r29761 = r29759 * r29760;
        double r29762 = z;
        double r29763 = r29761 + r29762;
        double r29764 = r29763 * r29760;
        double r29765 = t;
        double r29766 = r29764 + r29765;
        return r29766;
}


double f_of(float x, float y, float z, float t) {
        float r29767 = x;
        float r29768 = y;
        float r29769 = r29767 * r29768;
        float r29770 = z;
        float r29771 = r29769 + r29770;
        float r29772 = r29771 * r29768;
        float r29773 = t;
        float r29774 = r29772 + r29773;
        return r29774;
}

double f_od(double x, double y, double z, double t) {
        double r29775 = x;
        double r29776 = y;
        double r29777 = r29775 * r29776;
        double r29778 = z;
        double r29779 = r29777 + r29778;
        double r29780 = r29779 * r29776;
        double r29781 = t;
        double r29782 = r29780 + r29781;
        return r29782;
}

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 r29783, r29784, r29785, r29786, r29787, r29788, r29789, r29790;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29783);
        mpfr_init(r29784);
        mpfr_init(r29785);
        mpfr_init(r29786);
        mpfr_init(r29787);
        mpfr_init(r29788);
        mpfr_init(r29789);
        mpfr_init(r29790);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r29783, x, MPFR_RNDN);
        mpfr_set_d(r29784, y, MPFR_RNDN);
        mpfr_mul(r29785, r29783, r29784, MPFR_RNDN);
        mpfr_set_d(r29786, z, MPFR_RNDN);
        mpfr_add(r29787, r29785, r29786, MPFR_RNDN);
        mpfr_mul(r29788, r29787, r29784, MPFR_RNDN);
        mpfr_set_d(r29789, t, MPFR_RNDN);
        mpfr_add(r29790, r29788, r29789, MPFR_RNDN);
        return mpfr_get_d(r29790, MPFR_RNDN);
}

static mpfr_t r29791, r29792, r29793, r29794, r29795, r29796, r29797, r29798;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29791);
        mpfr_init(r29792);
        mpfr_init(r29793);
        mpfr_init(r29794);
        mpfr_init(r29795);
        mpfr_init(r29796);
        mpfr_init(r29797);
        mpfr_init(r29798);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r29791, x, MPFR_RNDN);
        mpfr_set_d(r29792, y, MPFR_RNDN);
        mpfr_mul(r29793, r29791, r29792, MPFR_RNDN);
        mpfr_set_d(r29794, z, MPFR_RNDN);
        mpfr_add(r29795, r29793, r29794, MPFR_RNDN);
        mpfr_mul(r29796, r29795, r29792, MPFR_RNDN);
        mpfr_set_d(r29797, t, MPFR_RNDN);
        mpfr_add(r29798, r29796, r29797, MPFR_RNDN);
        return mpfr_get_d(r29798, MPFR_RNDN);
}

static mpfr_t r29799, r29800, r29801, r29802, r29803, r29804, r29805, r29806;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29799);
        mpfr_init(r29800);
        mpfr_init(r29801);
        mpfr_init(r29802);
        mpfr_init(r29803);
        mpfr_init(r29804);
        mpfr_init(r29805);
        mpfr_init(r29806);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r29799, x, MPFR_RNDN);
        mpfr_set_d(r29800, y, MPFR_RNDN);
        mpfr_mul(r29801, r29799, r29800, MPFR_RNDN);
        mpfr_set_d(r29802, z, MPFR_RNDN);
        mpfr_add(r29803, r29801, r29802, MPFR_RNDN);
        mpfr_mul(r29804, r29803, r29800, MPFR_RNDN);
        mpfr_set_d(r29805, t, MPFR_RNDN);
        mpfr_add(r29806, r29804, r29805, MPFR_RNDN);
        return mpfr_get_d(r29806, MPFR_RNDN);
}

