#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 r56862 = x;
        float r56863 = y;
        float r56864 = r56862 - r56863;
        float r56865 = r56862 + r56863;
        float r56866 = r56864 / r56865;
        return r56866;
}

double f_id(double x, double y) {
        double r56867 = x;
        double r56868 = y;
        double r56869 = r56867 - r56868;
        double r56870 = r56867 + r56868;
        double r56871 = r56869 / r56870;
        return r56871;
}


double f_of(float x, float y) {
        float r56872 = x;
        float r56873 = y;
        float r56874 = r56872 - r56873;
        float r56875 = r56872 + r56873;
        float r56876 = r56874 / r56875;
        return r56876;
}

double f_od(double x, double y) {
        double r56877 = x;
        double r56878 = y;
        double r56879 = r56877 - r56878;
        double r56880 = r56877 + r56878;
        double r56881 = r56879 / r56880;
        return r56881;
}

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 r56882, r56883, r56884, r56885, r56886;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56882);
        mpfr_init(r56883);
        mpfr_init(r56884);
        mpfr_init(r56885);
        mpfr_init(r56886);
}

double f_im(double x, double y) {
        mpfr_set_d(r56882, x, MPFR_RNDN);
        mpfr_set_d(r56883, y, MPFR_RNDN);
        mpfr_sub(r56884, r56882, r56883, MPFR_RNDN);
        mpfr_add(r56885, r56882, r56883, MPFR_RNDN);
        mpfr_div(r56886, r56884, r56885, MPFR_RNDN);
        return mpfr_get_d(r56886, MPFR_RNDN);
}

static mpfr_t r56887, r56888, r56889, r56890, r56891;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56887);
        mpfr_init(r56888);
        mpfr_init(r56889);
        mpfr_init(r56890);
        mpfr_init(r56891);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56887, x, MPFR_RNDN);
        mpfr_set_d(r56888, y, MPFR_RNDN);
        mpfr_sub(r56889, r56887, r56888, MPFR_RNDN);
        mpfr_add(r56890, r56887, r56888, MPFR_RNDN);
        mpfr_div(r56891, r56889, r56890, MPFR_RNDN);
        return mpfr_get_d(r56891, MPFR_RNDN);
}

static mpfr_t r56892, r56893, r56894, r56895, r56896;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56892);
        mpfr_init(r56893);
        mpfr_init(r56894);
        mpfr_init(r56895);
        mpfr_init(r56896);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56892, x, MPFR_RNDN);
        mpfr_set_d(r56893, y, MPFR_RNDN);
        mpfr_sub(r56894, r56892, r56893, MPFR_RNDN);
        mpfr_add(r56895, r56892, r56893, MPFR_RNDN);
        mpfr_div(r56896, r56894, r56895, MPFR_RNDN);
        return mpfr_get_d(r56896, MPFR_RNDN);
}

