#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 r55800 = x;
        float r55801 = y;
        float r55802 = r55801 - r55800;
        float r55803 = 6.0f;
        float r55804 = r55802 * r55803;
        float r55805 = z;
        float r55806 = r55804 * r55805;
        float r55807 = r55800 + r55806;
        return r55807;
}

double f_id(double x, double y, double z) {
        double r55808 = x;
        double r55809 = y;
        double r55810 = r55809 - r55808;
        double r55811 = 6.0;
        double r55812 = r55810 * r55811;
        double r55813 = z;
        double r55814 = r55812 * r55813;
        double r55815 = r55808 + r55814;
        return r55815;
}


double f_of(float x, float y, float z) {
        float r55816 = y;
        float r55817 = x;
        float r55818 = r55816 - r55817;
        float r55819 = z;
        float r55820 = r55818 * r55819;
        float r55821 = 6.0f;
        float r55822 = r55820 * r55821;
        float r55823 = r55822 + r55817;
        return r55823;
}

double f_od(double x, double y, double z) {
        double r55824 = y;
        double r55825 = x;
        double r55826 = r55824 - r55825;
        double r55827 = z;
        double r55828 = r55826 * r55827;
        double r55829 = 6.0;
        double r55830 = r55828 * r55829;
        double r55831 = r55830 + r55825;
        return r55831;
}

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 r55832, r55833, r55834, r55835, r55836, r55837, r55838, r55839;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r55832);
        mpfr_init(r55833);
        mpfr_init(r55834);
        mpfr_init_set_str(r55835, "6.0", 10, MPFR_RNDN);
        mpfr_init(r55836);
        mpfr_init(r55837);
        mpfr_init(r55838);
        mpfr_init(r55839);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55832, x, MPFR_RNDN);
        mpfr_set_d(r55833, y, MPFR_RNDN);
        mpfr_sub(r55834, r55833, r55832, MPFR_RNDN);
        ;
        mpfr_mul(r55836, r55834, r55835, MPFR_RNDN);
        mpfr_set_d(r55837, z, MPFR_RNDN);
        mpfr_mul(r55838, r55836, r55837, MPFR_RNDN);
        mpfr_add(r55839, r55832, r55838, MPFR_RNDN);
        return mpfr_get_d(r55839, MPFR_RNDN);
}

static mpfr_t r55840, r55841, r55842, r55843, r55844, r55845, r55846, r55847;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55840);
        mpfr_init(r55841);
        mpfr_init(r55842);
        mpfr_init(r55843);
        mpfr_init(r55844);
        mpfr_init_set_str(r55845, "6.0", 10, MPFR_RNDN);
        mpfr_init(r55846);
        mpfr_init(r55847);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55840, y, MPFR_RNDN);
        mpfr_set_d(r55841, x, MPFR_RNDN);
        mpfr_sub(r55842, r55840, r55841, MPFR_RNDN);
        mpfr_set_d(r55843, z, MPFR_RNDN);
        mpfr_mul(r55844, r55842, r55843, MPFR_RNDN);
        ;
        mpfr_mul(r55846, r55844, r55845, MPFR_RNDN);
        mpfr_add(r55847, r55846, r55841, MPFR_RNDN);
        return mpfr_get_d(r55847, MPFR_RNDN);
}

static mpfr_t r55848, r55849, r55850, r55851, r55852, r55853, r55854, r55855;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55848);
        mpfr_init(r55849);
        mpfr_init(r55850);
        mpfr_init(r55851);
        mpfr_init(r55852);
        mpfr_init_set_str(r55853, "6.0", 10, MPFR_RNDN);
        mpfr_init(r55854);
        mpfr_init(r55855);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55848, y, MPFR_RNDN);
        mpfr_set_d(r55849, x, MPFR_RNDN);
        mpfr_sub(r55850, r55848, r55849, MPFR_RNDN);
        mpfr_set_d(r55851, z, MPFR_RNDN);
        mpfr_mul(r55852, r55850, r55851, MPFR_RNDN);
        ;
        mpfr_mul(r55854, r55852, r55853, MPFR_RNDN);
        mpfr_add(r55855, r55854, r55849, MPFR_RNDN);
        return mpfr_get_d(r55855, MPFR_RNDN);
}

