#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 r45428 = x;
        float r45429 = y;
        float r45430 = r45428 * r45429;
        float r45431 = z;
        float r45432 = r45430 + r45431;
        float r45433 = r45432 * r45429;
        float r45434 = t;
        float r45435 = r45433 + r45434;
        return r45435;
}

double f_id(double x, double y, double z, double t) {
        double r45436 = x;
        double r45437 = y;
        double r45438 = r45436 * r45437;
        double r45439 = z;
        double r45440 = r45438 + r45439;
        double r45441 = r45440 * r45437;
        double r45442 = t;
        double r45443 = r45441 + r45442;
        return r45443;
}


double f_of(float x, float y, float z, float t) {
        float r45444 = x;
        float r45445 = y;
        float r45446 = r45444 * r45445;
        float r45447 = z;
        float r45448 = r45446 + r45447;
        float r45449 = r45448 * r45445;
        float r45450 = t;
        float r45451 = r45449 + r45450;
        return r45451;
}

double f_od(double x, double y, double z, double t) {
        double r45452 = x;
        double r45453 = y;
        double r45454 = r45452 * r45453;
        double r45455 = z;
        double r45456 = r45454 + r45455;
        double r45457 = r45456 * r45453;
        double r45458 = t;
        double r45459 = r45457 + r45458;
        return r45459;
}

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 r45460, r45461, r45462, r45463, r45464, r45465, r45466, r45467;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r45460);
        mpfr_init(r45461);
        mpfr_init(r45462);
        mpfr_init(r45463);
        mpfr_init(r45464);
        mpfr_init(r45465);
        mpfr_init(r45466);
        mpfr_init(r45467);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45460, x, MPFR_RNDN);
        mpfr_set_d(r45461, y, MPFR_RNDN);
        mpfr_mul(r45462, r45460, r45461, MPFR_RNDN);
        mpfr_set_d(r45463, z, MPFR_RNDN);
        mpfr_add(r45464, r45462, r45463, MPFR_RNDN);
        mpfr_mul(r45465, r45464, r45461, MPFR_RNDN);
        mpfr_set_d(r45466, t, MPFR_RNDN);
        mpfr_add(r45467, r45465, r45466, MPFR_RNDN);
        return mpfr_get_d(r45467, MPFR_RNDN);
}

static mpfr_t r45468, r45469, r45470, r45471, r45472, r45473, r45474, r45475;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45468);
        mpfr_init(r45469);
        mpfr_init(r45470);
        mpfr_init(r45471);
        mpfr_init(r45472);
        mpfr_init(r45473);
        mpfr_init(r45474);
        mpfr_init(r45475);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45468, x, MPFR_RNDN);
        mpfr_set_d(r45469, y, MPFR_RNDN);
        mpfr_mul(r45470, r45468, r45469, MPFR_RNDN);
        mpfr_set_d(r45471, z, MPFR_RNDN);
        mpfr_add(r45472, r45470, r45471, MPFR_RNDN);
        mpfr_mul(r45473, r45472, r45469, MPFR_RNDN);
        mpfr_set_d(r45474, t, MPFR_RNDN);
        mpfr_add(r45475, r45473, r45474, MPFR_RNDN);
        return mpfr_get_d(r45475, MPFR_RNDN);
}

static mpfr_t r45476, r45477, r45478, r45479, r45480, r45481, r45482, r45483;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45476);
        mpfr_init(r45477);
        mpfr_init(r45478);
        mpfr_init(r45479);
        mpfr_init(r45480);
        mpfr_init(r45481);
        mpfr_init(r45482);
        mpfr_init(r45483);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45476, x, MPFR_RNDN);
        mpfr_set_d(r45477, y, MPFR_RNDN);
        mpfr_mul(r45478, r45476, r45477, MPFR_RNDN);
        mpfr_set_d(r45479, z, MPFR_RNDN);
        mpfr_add(r45480, r45478, r45479, MPFR_RNDN);
        mpfr_mul(r45481, r45480, r45477, MPFR_RNDN);
        mpfr_set_d(r45482, t, MPFR_RNDN);
        mpfr_add(r45483, r45481, r45482, MPFR_RNDN);
        return mpfr_get_d(r45483, MPFR_RNDN);
}

