#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 r56792 = x;
        float r56793 = y;
        float r56794 = r56792 - r56793;
        float r56795 = r56792 + r56793;
        float r56796 = r56794 / r56795;
        return r56796;
}

double f_id(double x, double y) {
        double r56797 = x;
        double r56798 = y;
        double r56799 = r56797 - r56798;
        double r56800 = r56797 + r56798;
        double r56801 = r56799 / r56800;
        return r56801;
}


double f_of(float x, float y) {
        float r56802 = x;
        float r56803 = y;
        float r56804 = r56802 - r56803;
        float r56805 = r56802 + r56803;
        float r56806 = r56804 / r56805;
        return r56806;
}

double f_od(double x, double y) {
        double r56807 = x;
        double r56808 = y;
        double r56809 = r56807 - r56808;
        double r56810 = r56807 + r56808;
        double r56811 = r56809 / r56810;
        return r56811;
}

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 r56812, r56813, r56814, r56815, r56816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56812);
        mpfr_init(r56813);
        mpfr_init(r56814);
        mpfr_init(r56815);
        mpfr_init(r56816);
}

double f_im(double x, double y) {
        mpfr_set_d(r56812, x, MPFR_RNDN);
        mpfr_set_d(r56813, y, MPFR_RNDN);
        mpfr_sub(r56814, r56812, r56813, MPFR_RNDN);
        mpfr_add(r56815, r56812, r56813, MPFR_RNDN);
        mpfr_div(r56816, r56814, r56815, MPFR_RNDN);
        return mpfr_get_d(r56816, MPFR_RNDN);
}

static mpfr_t r56817, r56818, r56819, r56820, r56821;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56817);
        mpfr_init(r56818);
        mpfr_init(r56819);
        mpfr_init(r56820);
        mpfr_init(r56821);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56817, x, MPFR_RNDN);
        mpfr_set_d(r56818, y, MPFR_RNDN);
        mpfr_sub(r56819, r56817, r56818, MPFR_RNDN);
        mpfr_add(r56820, r56817, r56818, MPFR_RNDN);
        mpfr_div(r56821, r56819, r56820, MPFR_RNDN);
        return mpfr_get_d(r56821, MPFR_RNDN);
}

static mpfr_t r56822, r56823, r56824, r56825, r56826;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56822);
        mpfr_init(r56823);
        mpfr_init(r56824);
        mpfr_init(r56825);
        mpfr_init(r56826);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56822, x, MPFR_RNDN);
        mpfr_set_d(r56823, y, MPFR_RNDN);
        mpfr_sub(r56824, r56822, r56823, MPFR_RNDN);
        mpfr_add(r56825, r56822, r56823, MPFR_RNDN);
        mpfr_div(r56826, r56824, r56825, MPFR_RNDN);
        return mpfr_get_d(r56826, MPFR_RNDN);
}

