#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 r29735 = x;
        float r29736 = y;
        float r29737 = r29735 * r29736;
        float r29738 = z;
        float r29739 = r29737 + r29738;
        float r29740 = r29739 * r29736;
        float r29741 = t;
        float r29742 = r29740 + r29741;
        return r29742;
}

double f_id(double x, double y, double z, double t) {
        double r29743 = x;
        double r29744 = y;
        double r29745 = r29743 * r29744;
        double r29746 = z;
        double r29747 = r29745 + r29746;
        double r29748 = r29747 * r29744;
        double r29749 = t;
        double r29750 = r29748 + r29749;
        return r29750;
}


double f_of(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_od(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;
}

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 r29767, r29768, r29769, r29770, r29771, r29772, r29773, r29774;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29767);
        mpfr_init(r29768);
        mpfr_init(r29769);
        mpfr_init(r29770);
        mpfr_init(r29771);
        mpfr_init(r29772);
        mpfr_init(r29773);
        mpfr_init(r29774);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r29767, x, MPFR_RNDN);
        mpfr_set_d(r29768, y, MPFR_RNDN);
        mpfr_mul(r29769, r29767, r29768, MPFR_RNDN);
        mpfr_set_d(r29770, z, MPFR_RNDN);
        mpfr_add(r29771, r29769, r29770, MPFR_RNDN);
        mpfr_mul(r29772, r29771, r29768, MPFR_RNDN);
        mpfr_set_d(r29773, t, MPFR_RNDN);
        mpfr_add(r29774, r29772, r29773, MPFR_RNDN);
        return mpfr_get_d(r29774, MPFR_RNDN);
}

static mpfr_t r29775, r29776, r29777, r29778, r29779, r29780, r29781, r29782;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29775);
        mpfr_init(r29776);
        mpfr_init(r29777);
        mpfr_init(r29778);
        mpfr_init(r29779);
        mpfr_init(r29780);
        mpfr_init(r29781);
        mpfr_init(r29782);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r29775, x, MPFR_RNDN);
        mpfr_set_d(r29776, y, MPFR_RNDN);
        mpfr_mul(r29777, r29775, r29776, MPFR_RNDN);
        mpfr_set_d(r29778, z, MPFR_RNDN);
        mpfr_add(r29779, r29777, r29778, MPFR_RNDN);
        mpfr_mul(r29780, r29779, r29776, MPFR_RNDN);
        mpfr_set_d(r29781, t, MPFR_RNDN);
        mpfr_add(r29782, r29780, r29781, MPFR_RNDN);
        return mpfr_get_d(r29782, MPFR_RNDN);
}

static mpfr_t r29783, r29784, r29785, r29786, r29787, r29788, r29789, r29790;

void setup_mpfr_f_dm() {
        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_dm(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);
}

