#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 r56673 = x;
        float r56674 = y;
        float r56675 = r56674 - r56673;
        float r56676 = 6.0;
        float r56677 = r56675 * r56676;
        float r56678 = z;
        float r56679 = r56677 * r56678;
        float r56680 = r56673 + r56679;
        return r56680;
}

double f_id(double x, double y, double z) {
        double r56681 = x;
        double r56682 = y;
        double r56683 = r56682 - r56681;
        double r56684 = 6.0;
        double r56685 = r56683 * r56684;
        double r56686 = z;
        double r56687 = r56685 * r56686;
        double r56688 = r56681 + r56687;
        return r56688;
}


double f_of(float x, float y, float z) {
        float r56689 = z;
        float r56690 = 6.0;
        float r56691 = r56689 * r56690;
        float r56692 = y;
        float r56693 = x;
        float r56694 = r56692 - r56693;
        float r56695 = r56691 * r56694;
        float r56696 = r56695 + r56693;
        return r56696;
}

double f_od(double x, double y, double z) {
        double r56697 = z;
        double r56698 = 6.0;
        double r56699 = r56697 * r56698;
        double r56700 = y;
        double r56701 = x;
        double r56702 = r56700 - r56701;
        double r56703 = r56699 * r56702;
        double r56704 = r56703 + r56701;
        return r56704;
}

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 r56705, r56706, r56707, r56708, r56709, r56710, r56711, r56712;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56705);
        mpfr_init(r56706);
        mpfr_init(r56707);
        mpfr_init_set_str(r56708, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56709);
        mpfr_init(r56710);
        mpfr_init(r56711);
        mpfr_init(r56712);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r56705, x, MPFR_RNDN);
        mpfr_set_d(r56706, y, MPFR_RNDN);
        mpfr_sub(r56707, r56706, r56705, MPFR_RNDN);
        ;
        mpfr_mul(r56709, r56707, r56708, MPFR_RNDN);
        mpfr_set_d(r56710, z, MPFR_RNDN);
        mpfr_mul(r56711, r56709, r56710, MPFR_RNDN);
        mpfr_add(r56712, r56705, r56711, MPFR_RNDN);
        return mpfr_get_d(r56712, MPFR_RNDN);
}

static mpfr_t r56713, r56714, r56715, r56716, r56717, r56718, r56719, r56720;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56713);
        mpfr_init_set_str(r56714, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56715);
        mpfr_init(r56716);
        mpfr_init(r56717);
        mpfr_init(r56718);
        mpfr_init(r56719);
        mpfr_init(r56720);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r56713, z, MPFR_RNDN);
        ;
        mpfr_mul(r56715, r56713, r56714, MPFR_RNDN);
        mpfr_set_d(r56716, y, MPFR_RNDN);
        mpfr_set_d(r56717, x, MPFR_RNDN);
        mpfr_sub(r56718, r56716, r56717, MPFR_RNDN);
        mpfr_mul(r56719, r56715, r56718, MPFR_RNDN);
        mpfr_add(r56720, r56719, r56717, MPFR_RNDN);
        return mpfr_get_d(r56720, MPFR_RNDN);
}

static mpfr_t r56721, r56722, r56723, r56724, r56725, r56726, r56727, r56728;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56721);
        mpfr_init_set_str(r56722, "6.0", 10, MPFR_RNDN);
        mpfr_init(r56723);
        mpfr_init(r56724);
        mpfr_init(r56725);
        mpfr_init(r56726);
        mpfr_init(r56727);
        mpfr_init(r56728);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r56721, z, MPFR_RNDN);
        ;
        mpfr_mul(r56723, r56721, r56722, MPFR_RNDN);
        mpfr_set_d(r56724, y, MPFR_RNDN);
        mpfr_set_d(r56725, x, MPFR_RNDN);
        mpfr_sub(r56726, r56724, r56725, MPFR_RNDN);
        mpfr_mul(r56727, r56723, r56726, MPFR_RNDN);
        mpfr_add(r56728, r56727, r56725, MPFR_RNDN);
        return mpfr_get_d(r56728, MPFR_RNDN);
}

