#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 r35023 = x;
        float r35024 = 1.0;
        float r35025 = y;
        float r35026 = z;
        float r35027 = r35025 * r35026;
        float r35028 = r35024 - r35027;
        float r35029 = r35023 * r35028;
        return r35029;
}

double f_id(double x, double y, double z) {
        double r35030 = x;
        double r35031 = 1.0;
        double r35032 = y;
        double r35033 = z;
        double r35034 = r35032 * r35033;
        double r35035 = r35031 - r35034;
        double r35036 = r35030 * r35035;
        return r35036;
}


double f_of(float x, float y, float z) {
        float r35037 = x;
        float r35038 = 1.0;
        float r35039 = y;
        float r35040 = z;
        float r35041 = r35039 * r35040;
        float r35042 = r35038 - r35041;
        float r35043 = r35037 * r35042;
        return r35043;
}

double f_od(double x, double y, double z) {
        double r35044 = x;
        double r35045 = 1.0;
        double r35046 = y;
        double r35047 = z;
        double r35048 = r35046 * r35047;
        double r35049 = r35045 - r35048;
        double r35050 = r35044 * r35049;
        return r35050;
}

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 r35051, r35052, r35053, r35054, r35055, r35056, r35057;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35051);
        mpfr_init_set_str(r35052, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35053);
        mpfr_init(r35054);
        mpfr_init(r35055);
        mpfr_init(r35056);
        mpfr_init(r35057);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35051, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35053, y, MPFR_RNDN);
        mpfr_set_d(r35054, z, MPFR_RNDN);
        mpfr_mul(r35055, r35053, r35054, MPFR_RNDN);
        mpfr_sub(r35056, r35052, r35055, MPFR_RNDN);
        mpfr_mul(r35057, r35051, r35056, MPFR_RNDN);
        return mpfr_get_d(r35057, MPFR_RNDN);
}

static mpfr_t r35058, r35059, r35060, r35061, r35062, r35063, r35064;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35058);
        mpfr_init_set_str(r35059, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35060);
        mpfr_init(r35061);
        mpfr_init(r35062);
        mpfr_init(r35063);
        mpfr_init(r35064);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35058, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35060, y, MPFR_RNDN);
        mpfr_set_d(r35061, z, MPFR_RNDN);
        mpfr_mul(r35062, r35060, r35061, MPFR_RNDN);
        mpfr_sub(r35063, r35059, r35062, MPFR_RNDN);
        mpfr_mul(r35064, r35058, r35063, MPFR_RNDN);
        return mpfr_get_d(r35064, MPFR_RNDN);
}

static mpfr_t r35065, r35066, r35067, r35068, r35069, r35070, r35071;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35065);
        mpfr_init_set_str(r35066, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35067);
        mpfr_init(r35068);
        mpfr_init(r35069);
        mpfr_init(r35070);
        mpfr_init(r35071);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35065, x, MPFR_RNDN);
        ;
        mpfr_set_d(r35067, y, MPFR_RNDN);
        mpfr_set_d(r35068, z, MPFR_RNDN);
        mpfr_mul(r35069, r35067, r35068, MPFR_RNDN);
        mpfr_sub(r35070, r35066, r35069, MPFR_RNDN);
        mpfr_mul(r35071, r35065, r35070, MPFR_RNDN);
        return mpfr_get_d(r35071, MPFR_RNDN);
}

