#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, D";

double f_if(float x, float y, float z) {
        float r35741 = x;
        float r35742 = y;
        float r35743 = r35742 - r35741;
        float r35744 = 6.0;
        float r35745 = r35743 * r35744;
        float r35746 = 2.0;
        float r35747 = 3.0;
        float r35748 = r35746 / r35747;
        float r35749 = z;
        float r35750 = r35748 - r35749;
        float r35751 = r35745 * r35750;
        float r35752 = r35741 + r35751;
        return r35752;
}

double f_id(double x, double y, double z) {
        double r35753 = x;
        double r35754 = y;
        double r35755 = r35754 - r35753;
        double r35756 = 6.0;
        double r35757 = r35755 * r35756;
        double r35758 = 2.0;
        double r35759 = 3.0;
        double r35760 = r35758 / r35759;
        double r35761 = z;
        double r35762 = r35760 - r35761;
        double r35763 = r35757 * r35762;
        double r35764 = r35753 + r35763;
        return r35764;
}


double f_of(float x, float y, float z) {
        float r35765 = x;
        float r35766 = y;
        float r35767 = r35766 - r35765;
        float r35768 = 6.0;
        float r35769 = r35767 * r35768;
        float r35770 = 2.0;
        float r35771 = 3.0;
        float r35772 = r35770 / r35771;
        float r35773 = z;
        float r35774 = r35772 - r35773;
        float r35775 = r35769 * r35774;
        float r35776 = r35765 + r35775;
        return r35776;
}

double f_od(double x, double y, double z) {
        double r35777 = x;
        double r35778 = y;
        double r35779 = r35778 - r35777;
        double r35780 = 6.0;
        double r35781 = r35779 * r35780;
        double r35782 = 2.0;
        double r35783 = 3.0;
        double r35784 = r35782 / r35783;
        double r35785 = z;
        double r35786 = r35784 - r35785;
        double r35787 = r35781 * r35786;
        double r35788 = r35777 + r35787;
        return r35788;
}

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 r35789, r35790, r35791, r35792, r35793, r35794, r35795, r35796, r35797, r35798, r35799, r35800;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35789);
        mpfr_init(r35790);
        mpfr_init(r35791);
        mpfr_init_set_str(r35792, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35793);
        mpfr_init_set_str(r35794, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35795, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35796);
        mpfr_init(r35797);
        mpfr_init(r35798);
        mpfr_init(r35799);
        mpfr_init(r35800);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35789, x, MPFR_RNDN);
        mpfr_set_d(r35790, y, MPFR_RNDN);
        mpfr_sub(r35791, r35790, r35789, MPFR_RNDN);
        ;
        mpfr_mul(r35793, r35791, r35792, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35796, r35794, r35795, MPFR_RNDN);
        mpfr_set_d(r35797, z, MPFR_RNDN);
        mpfr_sub(r35798, r35796, r35797, MPFR_RNDN);
        mpfr_mul(r35799, r35793, r35798, MPFR_RNDN);
        mpfr_add(r35800, r35789, r35799, MPFR_RNDN);
        return mpfr_get_d(r35800, MPFR_RNDN);
}

static mpfr_t r35801, r35802, r35803, r35804, r35805, r35806, r35807, r35808, r35809, r35810, r35811, r35812;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35801);
        mpfr_init(r35802);
        mpfr_init(r35803);
        mpfr_init_set_str(r35804, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35805);
        mpfr_init_set_str(r35806, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35807, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35808);
        mpfr_init(r35809);
        mpfr_init(r35810);
        mpfr_init(r35811);
        mpfr_init(r35812);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35801, x, MPFR_RNDN);
        mpfr_set_d(r35802, y, MPFR_RNDN);
        mpfr_sub(r35803, r35802, r35801, MPFR_RNDN);
        ;
        mpfr_mul(r35805, r35803, r35804, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35808, r35806, r35807, MPFR_RNDN);
        mpfr_set_d(r35809, z, MPFR_RNDN);
        mpfr_sub(r35810, r35808, r35809, MPFR_RNDN);
        mpfr_mul(r35811, r35805, r35810, MPFR_RNDN);
        mpfr_add(r35812, r35801, r35811, MPFR_RNDN);
        return mpfr_get_d(r35812, MPFR_RNDN);
}

static mpfr_t r35813, r35814, r35815, r35816, r35817, r35818, r35819, r35820, r35821, r35822, r35823, r35824;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35813);
        mpfr_init(r35814);
        mpfr_init(r35815);
        mpfr_init_set_str(r35816, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35817);
        mpfr_init_set_str(r35818, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35819, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35820);
        mpfr_init(r35821);
        mpfr_init(r35822);
        mpfr_init(r35823);
        mpfr_init(r35824);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35813, x, MPFR_RNDN);
        mpfr_set_d(r35814, y, MPFR_RNDN);
        mpfr_sub(r35815, r35814, r35813, MPFR_RNDN);
        ;
        mpfr_mul(r35817, r35815, r35816, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35820, r35818, r35819, MPFR_RNDN);
        mpfr_set_d(r35821, z, MPFR_RNDN);
        mpfr_sub(r35822, r35820, r35821, MPFR_RNDN);
        mpfr_mul(r35823, r35817, r35822, MPFR_RNDN);
        mpfr_add(r35824, r35813, r35823, MPFR_RNDN);
        return mpfr_get_d(r35824, MPFR_RNDN);
}

