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

char *name = "Data.Colour.RGB:hslsv from colour-2.3.3, E";

double f_if(float x, float y) {
        float r56045 = x;
        float r56046 = y;
        float r56047 = r56045 - r56046;
        float r56048 = r56047 / r56045;
        return r56048;
}

double f_id(double x, double y) {
        double r56049 = x;
        double r56050 = y;
        double r56051 = r56049 - r56050;
        double r56052 = r56051 / r56049;
        return r56052;
}


double f_of(float x, float y) {
        float r56053 = 1.0f;
        float r56054 = y;
        float r56055 = x;
        float r56056 = r56054 / r56055;
        float r56057 = r56053 - r56056;
        return r56057;
}

double f_od(double x, double y) {
        double r56058 = 1.0;
        double r56059 = y;
        double r56060 = x;
        double r56061 = r56059 / r56060;
        double r56062 = r56058 - r56061;
        return r56062;
}

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 r56063, r56064, r56065, r56066;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r56063);
        mpfr_init(r56064);
        mpfr_init(r56065);
        mpfr_init(r56066);
}

double f_im(double x, double y) {
        mpfr_set_d(r56063, x, MPFR_RNDN);
        mpfr_set_d(r56064, y, MPFR_RNDN);
        mpfr_sub(r56065, r56063, r56064, MPFR_RNDN);
        mpfr_div(r56066, r56065, r56063, MPFR_RNDN);
        return mpfr_get_d(r56066, MPFR_RNDN);
}

static mpfr_t r56067, r56068, r56069, r56070, r56071;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r56067, "1", 10, MPFR_RNDN);
        mpfr_init(r56068);
        mpfr_init(r56069);
        mpfr_init(r56070);
        mpfr_init(r56071);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r56068, y, MPFR_RNDN);
        mpfr_set_d(r56069, x, MPFR_RNDN);
        mpfr_div(r56070, r56068, r56069, MPFR_RNDN);
        mpfr_sub(r56071, r56067, r56070, MPFR_RNDN);
        return mpfr_get_d(r56071, MPFR_RNDN);
}

static mpfr_t r56072, r56073, r56074, r56075, r56076;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r56072, "1", 10, MPFR_RNDN);
        mpfr_init(r56073);
        mpfr_init(r56074);
        mpfr_init(r56075);
        mpfr_init(r56076);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r56073, y, MPFR_RNDN);
        mpfr_set_d(r56074, x, MPFR_RNDN);
        mpfr_div(r56075, r56073, r56074, MPFR_RNDN);
        mpfr_sub(r56076, r56072, r56075, MPFR_RNDN);
        return mpfr_get_d(r56076, MPFR_RNDN);
}

