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

double f_if(float x, float y) {
        float r56827 = x;
        float r56828 = y;
        float r56829 = r56827 - r56828;
        float r56830 = 2.0;
        float r56831 = r56827 + r56828;
        float r56832 = r56830 - r56831;
        float r56833 = r56829 / r56832;
        return r56833;
}

double f_id(double x, double y) {
        double r56834 = x;
        double r56835 = y;
        double r56836 = r56834 - r56835;
        double r56837 = 2.0;
        double r56838 = r56834 + r56835;
        double r56839 = r56837 - r56838;
        double r56840 = r56836 / r56839;
        return r56840;
}


double f_of(float x, float y) {
        float r56841 = x;
        float r56842 = y;
        float r56843 = r56841 - r56842;
        float r56844 = 2.0;
        float r56845 = r56841 + r56842;
        float r56846 = r56844 - r56845;
        float r56847 = r56843 / r56846;
        return r56847;
}

double f_od(double x, double y) {
        double r56848 = x;
        double r56849 = y;
        double r56850 = r56848 - r56849;
        double r56851 = 2.0;
        double r56852 = r56848 + r56849;
        double r56853 = r56851 - r56852;
        double r56854 = r56850 / r56853;
        return r56854;
}

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 r56855, r56856, r56857, r56858, r56859, r56860, r56861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56855);
        mpfr_init(r56856);
        mpfr_init(r56857);
        mpfr_init_set_str(r56858, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56859);
        mpfr_init(r56860);
        mpfr_init(r56861);
}

double f_im(double x, double y) {
        mpfr_set_d(r56855, x, MPFR_RNDN);
        mpfr_set_d(r56856, y, MPFR_RNDN);
        mpfr_sub(r56857, r56855, r56856, MPFR_RNDN);
        ;
        mpfr_add(r56859, r56855, r56856, MPFR_RNDN);
        mpfr_sub(r56860, r56858, r56859, MPFR_RNDN);
        mpfr_div(r56861, r56857, r56860, MPFR_RNDN);
        return mpfr_get_d(r56861, MPFR_RNDN);
}

static mpfr_t r56862, r56863, r56864, r56865, r56866, r56867, r56868;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56862);
        mpfr_init(r56863);
        mpfr_init(r56864);
        mpfr_init_set_str(r56865, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56866);
        mpfr_init(r56867);
        mpfr_init(r56868);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56862, x, MPFR_RNDN);
        mpfr_set_d(r56863, y, MPFR_RNDN);
        mpfr_sub(r56864, r56862, r56863, MPFR_RNDN);
        ;
        mpfr_add(r56866, r56862, r56863, MPFR_RNDN);
        mpfr_sub(r56867, r56865, r56866, MPFR_RNDN);
        mpfr_div(r56868, r56864, r56867, MPFR_RNDN);
        return mpfr_get_d(r56868, MPFR_RNDN);
}

static mpfr_t r56869, r56870, r56871, r56872, r56873, r56874, r56875;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56869);
        mpfr_init(r56870);
        mpfr_init(r56871);
        mpfr_init_set_str(r56872, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56873);
        mpfr_init(r56874);
        mpfr_init(r56875);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56869, x, MPFR_RNDN);
        mpfr_set_d(r56870, y, MPFR_RNDN);
        mpfr_sub(r56871, r56869, r56870, MPFR_RNDN);
        ;
        mpfr_add(r56873, r56869, r56870, MPFR_RNDN);
        mpfr_sub(r56874, r56872, r56873, MPFR_RNDN);
        mpfr_div(r56875, r56871, r56874, MPFR_RNDN);
        return mpfr_get_d(r56875, MPFR_RNDN);
}

