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

char *name = "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, E";

double f_if(float x, float y, float z) {
        float r56599 = x;
        float r56600 = y;
        float r56601 = r56600 - r56599;
        float r56602 = 6.0;
        float r56603 = r56601 * r56602;
        float r56604 = z;
        float r56605 = r56603 * r56604;
        float r56606 = r56599 + r56605;
        return r56606;
}

double f_id(double x, double y, double z) {
        double r56607 = x;
        double r56608 = y;
        double r56609 = r56608 - r56607;
        double r56610 = 6.0;
        double r56611 = r56609 * r56610;
        double r56612 = z;
        double r56613 = r56611 * r56612;
        double r56614 = r56607 + r56613;
        return r56614;
}


double f_of(float x, float y, float z) {
        float r56615 = z;
        float r56616 = 6.0;
        float r56617 = r56615 * r56616;
        float r56618 = y;
        float r56619 = x;
        float r56620 = r56618 - r56619;
        float r56621 = r56617 * r56620;
        float r56622 = r56621 + r56619;
        return r56622;
}

double f_od(double x, double y, double z) {
        double r56623 = z;
        double r56624 = 6.0;
        double r56625 = r56623 * r56624;
        double r56626 = y;
        double r56627 = x;
        double r56628 = r56626 - r56627;
        double r56629 = r56625 * r56628;
        double r56630 = r56629 + r56627;
        return r56630;
}

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 r56631, r56632, r56633, r56634, r56635, r56636, r56637, r56638;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56631);
        mpfr_init(r56632);
        mpfr_init(r56633);
        mpfr_init_set_str(r56634, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56635);
        mpfr_init(r56636);
        mpfr_init(r56637);
        mpfr_init(r56638);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r56631, x, MPFR_RNDN);
        mpfr_set_d(r56632, y, MPFR_RNDN);
        mpfr_sub(r56633, r56632, r56631, MPFR_RNDN);
        ;
        mpfr_mul(r56635, r56633, r56634, MPFR_RNDN);
        mpfr_set_d(r56636, z, MPFR_RNDN);
        mpfr_mul(r56637, r56635, r56636, MPFR_RNDN);
        mpfr_add(r56638, r56631, r56637, MPFR_RNDN);
        return mpfr_get_d(r56638, MPFR_RNDN);
}

static mpfr_t r56639, r56640, r56641, r56642, r56643, r56644, r56645, r56646;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56639);
        mpfr_init_set_str(r56640, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56641);
        mpfr_init(r56642);
        mpfr_init(r56643);
        mpfr_init(r56644);
        mpfr_init(r56645);
        mpfr_init(r56646);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r56639, z, MPFR_RNDN);
        ;
        mpfr_mul(r56641, r56639, r56640, MPFR_RNDN);
        mpfr_set_d(r56642, y, MPFR_RNDN);
        mpfr_set_d(r56643, x, MPFR_RNDN);
        mpfr_sub(r56644, r56642, r56643, MPFR_RNDN);
        mpfr_mul(r56645, r56641, r56644, MPFR_RNDN);
        mpfr_add(r56646, r56645, r56643, MPFR_RNDN);
        return mpfr_get_d(r56646, MPFR_RNDN);
}

static mpfr_t r56647, r56648, r56649, r56650, r56651, r56652, r56653, r56654;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56647);
        mpfr_init_set_str(r56648, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56649);
        mpfr_init(r56650);
        mpfr_init(r56651);
        mpfr_init(r56652);
        mpfr_init(r56653);
        mpfr_init(r56654);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r56647, z, MPFR_RNDN);
        ;
        mpfr_mul(r56649, r56647, r56648, MPFR_RNDN);
        mpfr_set_d(r56650, y, MPFR_RNDN);
        mpfr_set_d(r56651, x, MPFR_RNDN);
        mpfr_sub(r56652, r56650, r56651, MPFR_RNDN);
        mpfr_mul(r56653, r56649, r56652, MPFR_RNDN);
        mpfr_add(r56654, r56653, r56651, MPFR_RNDN);
        return mpfr_get_d(r56654, MPFR_RNDN);
}

