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

double f_if(float x, float y) {
        float r35427 = x;
        float r35428 = y;
        float r35429 = r35427 + r35428;
        float r35430 = r35427 * r35428;
        float r35431 = r35429 - r35430;
        return r35431;
}

double f_id(double x, double y) {
        double r35432 = x;
        double r35433 = y;
        double r35434 = r35432 + r35433;
        double r35435 = r35432 * r35433;
        double r35436 = r35434 - r35435;
        return r35436;
}


double f_of(float x, float y) {
        float r35437 = x;
        float r35438 = y;
        float r35439 = r35437 + r35438;
        float r35440 = r35437 * r35438;
        float r35441 = r35439 - r35440;
        return r35441;
}

double f_od(double x, double y) {
        double r35442 = x;
        double r35443 = y;
        double r35444 = r35442 + r35443;
        double r35445 = r35442 * r35443;
        double r35446 = r35444 - r35445;
        return r35446;
}

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 r35447, r35448, r35449, r35450, r35451;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35447);
        mpfr_init(r35448);
        mpfr_init(r35449);
        mpfr_init(r35450);
        mpfr_init(r35451);
}

double f_im(double x, double y) {
        mpfr_set_d(r35447, x, MPFR_RNDN);
        mpfr_set_d(r35448, y, MPFR_RNDN);
        mpfr_add(r35449, r35447, r35448, MPFR_RNDN);
        mpfr_mul(r35450, r35447, r35448, MPFR_RNDN);
        mpfr_sub(r35451, r35449, r35450, MPFR_RNDN);
        return mpfr_get_d(r35451, MPFR_RNDN);
}

static mpfr_t r35452, r35453, r35454, r35455, r35456;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35452);
        mpfr_init(r35453);
        mpfr_init(r35454);
        mpfr_init(r35455);
        mpfr_init(r35456);
}

double f_fm(double x, double y) {
        mpfr_set_d(r35452, x, MPFR_RNDN);
        mpfr_set_d(r35453, y, MPFR_RNDN);
        mpfr_add(r35454, r35452, r35453, MPFR_RNDN);
        mpfr_mul(r35455, r35452, r35453, MPFR_RNDN);
        mpfr_sub(r35456, r35454, r35455, MPFR_RNDN);
        return mpfr_get_d(r35456, MPFR_RNDN);
}

static mpfr_t r35457, r35458, r35459, r35460, r35461;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35457);
        mpfr_init(r35458);
        mpfr_init(r35459);
        mpfr_init(r35460);
        mpfr_init(r35461);
}

double f_dm(double x, double y) {
        mpfr_set_d(r35457, x, MPFR_RNDN);
        mpfr_set_d(r35458, y, MPFR_RNDN);
        mpfr_add(r35459, r35457, r35458, MPFR_RNDN);
        mpfr_mul(r35460, r35457, r35458, MPFR_RNDN);
        mpfr_sub(r35461, r35459, r35460, MPFR_RNDN);
        return mpfr_get_d(r35461, MPFR_RNDN);
}

