#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 r56764 = x;
        float r56765 = y;
        float r56766 = r56764 - r56765;
        float r56767 = r56766 / r56764;
        return r56767;
}

double f_id(double x, double y) {
        double r56768 = x;
        double r56769 = y;
        double r56770 = r56768 - r56769;
        double r56771 = r56770 / r56768;
        return r56771;
}


double f_of(float x, float y) {
        float r56772 = x;
        float r56773 = y;
        float r56774 = r56772 - r56773;
        float r56775 = r56774 / r56772;
        return r56775;
}

double f_od(double x, double y) {
        double r56776 = x;
        double r56777 = y;
        double r56778 = r56776 - r56777;
        double r56779 = r56778 / r56776;
        return r56779;
}

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 r56780, r56781, r56782, r56783;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56780);
        mpfr_init(r56781);
        mpfr_init(r56782);
        mpfr_init(r56783);
}

double f_im(double x, double y) {
        mpfr_set_d(r56780, x, MPFR_RNDN);
        mpfr_set_d(r56781, y, MPFR_RNDN);
        mpfr_sub(r56782, r56780, r56781, MPFR_RNDN);
        mpfr_div(r56783, r56782, r56780, MPFR_RNDN);
        return mpfr_get_d(r56783, MPFR_RNDN);
}

static mpfr_t r56784, r56785, r56786, r56787;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56784);
        mpfr_init(r56785);
        mpfr_init(r56786);
        mpfr_init(r56787);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56784, x, MPFR_RNDN);
        mpfr_set_d(r56785, y, MPFR_RNDN);
        mpfr_sub(r56786, r56784, r56785, MPFR_RNDN);
        mpfr_div(r56787, r56786, r56784, MPFR_RNDN);
        return mpfr_get_d(r56787, MPFR_RNDN);
}

static mpfr_t r56788, r56789, r56790, r56791;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56788);
        mpfr_init(r56789);
        mpfr_init(r56790);
        mpfr_init(r56791);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56788, x, MPFR_RNDN);
        mpfr_set_d(r56789, y, MPFR_RNDN);
        mpfr_sub(r56790, r56788, r56789, MPFR_RNDN);
        mpfr_div(r56791, r56790, r56788, MPFR_RNDN);
        return mpfr_get_d(r56791, MPFR_RNDN);
}

