#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 r35308 = x;
        float r35309 = y;
        float r35310 = r35309 - r35308;
        float r35311 = 6.0;
        float r35312 = r35310 * r35311;
        float r35313 = 2.0;
        float r35314 = 3.0;
        float r35315 = r35313 / r35314;
        float r35316 = z;
        float r35317 = r35315 - r35316;
        float r35318 = r35312 * r35317;
        float r35319 = r35308 + r35318;
        return r35319;
}

double f_id(double x, double y, double z) {
        double r35320 = x;
        double r35321 = y;
        double r35322 = r35321 - r35320;
        double r35323 = 6.0;
        double r35324 = r35322 * r35323;
        double r35325 = 2.0;
        double r35326 = 3.0;
        double r35327 = r35325 / r35326;
        double r35328 = z;
        double r35329 = r35327 - r35328;
        double r35330 = r35324 * r35329;
        double r35331 = r35320 + r35330;
        return r35331;
}


double f_of(float x, float y, float z) {
        float r35332 = x;
        float r35333 = y;
        float r35334 = r35333 - r35332;
        float r35335 = 6.0;
        float r35336 = r35334 * r35335;
        float r35337 = 2.0;
        float r35338 = 3.0;
        float r35339 = r35337 / r35338;
        float r35340 = z;
        float r35341 = r35339 - r35340;
        float r35342 = r35336 * r35341;
        float r35343 = r35332 + r35342;
        return r35343;
}

double f_od(double x, double y, double z) {
        double r35344 = x;
        double r35345 = y;
        double r35346 = r35345 - r35344;
        double r35347 = 6.0;
        double r35348 = r35346 * r35347;
        double r35349 = 2.0;
        double r35350 = 3.0;
        double r35351 = r35349 / r35350;
        double r35352 = z;
        double r35353 = r35351 - r35352;
        double r35354 = r35348 * r35353;
        double r35355 = r35344 + r35354;
        return r35355;
}

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 r35356, r35357, r35358, r35359, r35360, r35361, r35362, r35363, r35364, r35365, r35366, r35367;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35356);
        mpfr_init(r35357);
        mpfr_init(r35358);
        mpfr_init_set_str(r35359, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35360);
        mpfr_init_set_str(r35361, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35362, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35363);
        mpfr_init(r35364);
        mpfr_init(r35365);
        mpfr_init(r35366);
        mpfr_init(r35367);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35356, x, MPFR_RNDN);
        mpfr_set_d(r35357, y, MPFR_RNDN);
        mpfr_sub(r35358, r35357, r35356, MPFR_RNDN);
        ;
        mpfr_mul(r35360, r35358, r35359, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35363, r35361, r35362, MPFR_RNDN);
        mpfr_set_d(r35364, z, MPFR_RNDN);
        mpfr_sub(r35365, r35363, r35364, MPFR_RNDN);
        mpfr_mul(r35366, r35360, r35365, MPFR_RNDN);
        mpfr_add(r35367, r35356, r35366, MPFR_RNDN);
        return mpfr_get_d(r35367, MPFR_RNDN);
}

static mpfr_t r35368, r35369, r35370, r35371, r35372, r35373, r35374, r35375, r35376, r35377, r35378, r35379;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35368);
        mpfr_init(r35369);
        mpfr_init(r35370);
        mpfr_init_set_str(r35371, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35372);
        mpfr_init_set_str(r35373, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35374, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35375);
        mpfr_init(r35376);
        mpfr_init(r35377);
        mpfr_init(r35378);
        mpfr_init(r35379);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35368, x, MPFR_RNDN);
        mpfr_set_d(r35369, y, MPFR_RNDN);
        mpfr_sub(r35370, r35369, r35368, MPFR_RNDN);
        ;
        mpfr_mul(r35372, r35370, r35371, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35375, r35373, r35374, MPFR_RNDN);
        mpfr_set_d(r35376, z, MPFR_RNDN);
        mpfr_sub(r35377, r35375, r35376, MPFR_RNDN);
        mpfr_mul(r35378, r35372, r35377, MPFR_RNDN);
        mpfr_add(r35379, r35368, r35378, MPFR_RNDN);
        return mpfr_get_d(r35379, MPFR_RNDN);
}

static mpfr_t r35380, r35381, r35382, r35383, r35384, r35385, r35386, r35387, r35388, r35389, r35390, r35391;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r35380);
        mpfr_init(r35381);
        mpfr_init(r35382);
        mpfr_init_set_str(r35383, "6.0", 10, MPFR_RNDN);
        mpfr_init(r35384);
        mpfr_init_set_str(r35385, "2.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r35386, "3.0", 10, MPFR_RNDN);
        mpfr_init(r35387);
        mpfr_init(r35388);
        mpfr_init(r35389);
        mpfr_init(r35390);
        mpfr_init(r35391);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35380, x, MPFR_RNDN);
        mpfr_set_d(r35381, y, MPFR_RNDN);
        mpfr_sub(r35382, r35381, r35380, MPFR_RNDN);
        ;
        mpfr_mul(r35384, r35382, r35383, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35387, r35385, r35386, MPFR_RNDN);
        mpfr_set_d(r35388, z, MPFR_RNDN);
        mpfr_sub(r35389, r35387, r35388, MPFR_RNDN);
        mpfr_mul(r35390, r35384, r35389, MPFR_RNDN);
        mpfr_add(r35391, r35380, r35390, MPFR_RNDN);
        return mpfr_get_d(r35391, MPFR_RNDN);
}

