#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I";

double f_if(float x, float y, float z) {
        float r55638 = x;
        float r55639 = 1.0f;
        float r55640 = y;
        float r55641 = z;
        float r55642 = r55640 * r55641;
        float r55643 = r55639 - r55642;
        float r55644 = r55638 * r55643;
        return r55644;
}

double f_id(double x, double y, double z) {
        double r55645 = x;
        double r55646 = 1.0;
        double r55647 = y;
        double r55648 = z;
        double r55649 = r55647 * r55648;
        double r55650 = r55646 - r55649;
        double r55651 = r55645 * r55650;
        return r55651;
}


double f_of(float x, float y, float z) {
        float r55652 = x;
        float r55653 = 1.0f;
        float r55654 = y;
        float r55655 = z;
        float r55656 = r55654 * r55655;
        float r55657 = r55653 - r55656;
        float r55658 = r55652 * r55657;
        return r55658;
}

double f_od(double x, double y, double z) {
        double r55659 = x;
        double r55660 = 1.0;
        double r55661 = y;
        double r55662 = z;
        double r55663 = r55661 * r55662;
        double r55664 = r55660 - r55663;
        double r55665 = r55659 * r55664;
        return r55665;
}

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 r55666, r55667, r55668, r55669, r55670, r55671, r55672;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r55666);
        mpfr_init_set_str(r55667, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55668);
        mpfr_init(r55669);
        mpfr_init(r55670);
        mpfr_init(r55671);
        mpfr_init(r55672);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55666, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55668, y, MPFR_RNDN);
        mpfr_set_d(r55669, z, MPFR_RNDN);
        mpfr_mul(r55670, r55668, r55669, MPFR_RNDN);
        mpfr_sub(r55671, r55667, r55670, MPFR_RNDN);
        mpfr_mul(r55672, r55666, r55671, MPFR_RNDN);
        return mpfr_get_d(r55672, MPFR_RNDN);
}

static mpfr_t r55673, r55674, r55675, r55676, r55677, r55678, r55679;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55673);
        mpfr_init_set_str(r55674, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55675);
        mpfr_init(r55676);
        mpfr_init(r55677);
        mpfr_init(r55678);
        mpfr_init(r55679);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55673, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55675, y, MPFR_RNDN);
        mpfr_set_d(r55676, z, MPFR_RNDN);
        mpfr_mul(r55677, r55675, r55676, MPFR_RNDN);
        mpfr_sub(r55678, r55674, r55677, MPFR_RNDN);
        mpfr_mul(r55679, r55673, r55678, MPFR_RNDN);
        return mpfr_get_d(r55679, MPFR_RNDN);
}

static mpfr_t r55680, r55681, r55682, r55683, r55684, r55685, r55686;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55680);
        mpfr_init_set_str(r55681, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55682);
        mpfr_init(r55683);
        mpfr_init(r55684);
        mpfr_init(r55685);
        mpfr_init(r55686);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55680, x, MPFR_RNDN);
        ;
        mpfr_set_d(r55682, y, MPFR_RNDN);
        mpfr_set_d(r55683, z, MPFR_RNDN);
        mpfr_mul(r55684, r55682, r55683, MPFR_RNDN);
        mpfr_sub(r55685, r55681, r55684, MPFR_RNDN);
        mpfr_mul(r55686, r55680, r55685, MPFR_RNDN);
        return mpfr_get_d(r55686, MPFR_RNDN);
}

