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

double f_if(float x, float y) {
        float r55613 = x;
        float r55614 = y;
        float r55615 = r55613 - r55614;
        float r55616 = r55613 + r55614;
        float r55617 = r55615 / r55616;
        return r55617;
}

double f_id(double x, double y) {
        double r55618 = x;
        double r55619 = y;
        double r55620 = r55618 - r55619;
        double r55621 = r55618 + r55619;
        double r55622 = r55620 / r55621;
        return r55622;
}


double f_of(float x, float y) {
        float r55623 = x;
        float r55624 = y;
        float r55625 = r55623 - r55624;
        float r55626 = r55623 + r55624;
        float r55627 = r55625 / r55626;
        return r55627;
}

double f_od(double x, double y) {
        double r55628 = x;
        double r55629 = y;
        double r55630 = r55628 - r55629;
        double r55631 = r55628 + r55629;
        double r55632 = r55630 / r55631;
        return r55632;
}

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 r55633, r55634, r55635, r55636, r55637;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55633);
        mpfr_init(r55634);
        mpfr_init(r55635);
        mpfr_init(r55636);
        mpfr_init(r55637);
}

double f_im(double x, double y) {
        mpfr_set_d(r55633, x, MPFR_RNDN);
        mpfr_set_d(r55634, y, MPFR_RNDN);
        mpfr_sub(r55635, r55633, r55634, MPFR_RNDN);
        mpfr_add(r55636, r55633, r55634, MPFR_RNDN);
        mpfr_div(r55637, r55635, r55636, MPFR_RNDN);
        return mpfr_get_d(r55637, MPFR_RNDN);
}

static mpfr_t r55638, r55639, r55640, r55641, r55642;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55638);
        mpfr_init(r55639);
        mpfr_init(r55640);
        mpfr_init(r55641);
        mpfr_init(r55642);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55638, x, MPFR_RNDN);
        mpfr_set_d(r55639, y, MPFR_RNDN);
        mpfr_sub(r55640, r55638, r55639, MPFR_RNDN);
        mpfr_add(r55641, r55638, r55639, MPFR_RNDN);
        mpfr_div(r55642, r55640, r55641, MPFR_RNDN);
        return mpfr_get_d(r55642, MPFR_RNDN);
}

static mpfr_t r55643, r55644, r55645, r55646, r55647;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55643);
        mpfr_init(r55644);
        mpfr_init(r55645);
        mpfr_init(r55646);
        mpfr_init(r55647);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55643, x, MPFR_RNDN);
        mpfr_set_d(r55644, y, MPFR_RNDN);
        mpfr_sub(r55645, r55643, r55644, MPFR_RNDN);
        mpfr_add(r55646, r55643, r55644, MPFR_RNDN);
        mpfr_div(r55647, r55645, r55646, MPFR_RNDN);
        return mpfr_get_d(r55647, MPFR_RNDN);
}

