#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 r35154 = x;
        float r35155 = 1.0;
        float r35156 = y;
        float r35157 = z;
        float r35158 = r35156 * r35157;
        float r35159 = r35155 - r35158;
        float r35160 = r35154 * r35159;
        return r35160;
}

double f_id(double x, double y, double z) {
        double r35161 = x;
        double r35162 = 1.0;
        double r35163 = y;
        double r35164 = z;
        double r35165 = r35163 * r35164;
        double r35166 = r35162 - r35165;
        double r35167 = r35161 * r35166;
        return r35167;
}


double f_of(float x, float y, float z) {
        float r35168 = x;
        float r35169 = 1.0;
        float r35170 = y;
        float r35171 = z;
        float r35172 = r35170 * r35171;
        float r35173 = r35169 - r35172;
        float r35174 = r35168 * r35173;
        return r35174;
}

double f_od(double x, double y, double z) {
        double r35175 = x;
        double r35176 = 1.0;
        double r35177 = y;
        double r35178 = z;
        double r35179 = r35177 * r35178;
        double r35180 = r35176 - r35179;
        double r35181 = r35175 * r35180;
        return r35181;
}

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 r35182, r35183, r35184, r35185, r35186, r35187, r35188;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35182);
        mpfr_init_set_str(r35183, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35184);
        mpfr_init(r35185);
        mpfr_init(r35186);
        mpfr_init(r35187);
        mpfr_init(r35188);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35182, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35184, y, MPFR_RNDN);
        mpfr_set_d(r35185, z, MPFR_RNDN);
        mpfr_mul(r35186, r35184, r35185, MPFR_RNDN);
        mpfr_sub(r35187, r35183, r35186, MPFR_RNDN);
        mpfr_mul(r35188, r35182, r35187, MPFR_RNDN);
        return mpfr_get_d(r35188, MPFR_RNDN);
}

static mpfr_t r35189, r35190, r35191, r35192, r35193, r35194, r35195;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35189);
        mpfr_init_set_str(r35190, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35191);
        mpfr_init(r35192);
        mpfr_init(r35193);
        mpfr_init(r35194);
        mpfr_init(r35195);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35189, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35191, y, MPFR_RNDN);
        mpfr_set_d(r35192, z, MPFR_RNDN);
        mpfr_mul(r35193, r35191, r35192, MPFR_RNDN);
        mpfr_sub(r35194, r35190, r35193, MPFR_RNDN);
        mpfr_mul(r35195, r35189, r35194, MPFR_RNDN);
        return mpfr_get_d(r35195, MPFR_RNDN);
}

static mpfr_t r35196, r35197, r35198, r35199, r35200, r35201, r35202;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35196);
        mpfr_init_set_str(r35197, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35198);
        mpfr_init(r35199);
        mpfr_init(r35200);
        mpfr_init(r35201);
        mpfr_init(r35202);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35196, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35198, y, MPFR_RNDN);
        mpfr_set_d(r35199, z, MPFR_RNDN);
        mpfr_mul(r35200, r35198, r35199, MPFR_RNDN);
        mpfr_sub(r35201, r35197, r35200, MPFR_RNDN);
        mpfr_mul(r35202, r35196, r35201, MPFR_RNDN);
        return mpfr_get_d(r35202, MPFR_RNDN);
}

