#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 r57045 = x;
        float r57046 = y;
        float r57047 = r57045 - r57046;
        float r57048 = 2.0;
        float r57049 = r57045 + r57046;
        float r57050 = r57048 - r57049;
        float r57051 = r57047 / r57050;
        return r57051;
}

double f_id(double x, double y) {
        double r57052 = x;
        double r57053 = y;
        double r57054 = r57052 - r57053;
        double r57055 = 2.0;
        double r57056 = r57052 + r57053;
        double r57057 = r57055 - r57056;
        double r57058 = r57054 / r57057;
        return r57058;
}


double f_of(float x, float y) {
        float r57059 = x;
        float r57060 = y;
        float r57061 = r57059 - r57060;
        float r57062 = 2.0;
        float r57063 = r57059 + r57060;
        float r57064 = r57062 - r57063;
        float r57065 = r57061 / r57064;
        return r57065;
}

double f_od(double x, double y) {
        double r57066 = x;
        double r57067 = y;
        double r57068 = r57066 - r57067;
        double r57069 = 2.0;
        double r57070 = r57066 + r57067;
        double r57071 = r57069 - r57070;
        double r57072 = r57068 / r57071;
        return r57072;
}

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 r57073, r57074, r57075, r57076, r57077, r57078, r57079;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57073);
        mpfr_init(r57074);
        mpfr_init(r57075);
        mpfr_init_set_str(r57076, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57077);
        mpfr_init(r57078);
        mpfr_init(r57079);
}

double f_im(double x, double y) {
        mpfr_set_d(r57073, x, MPFR_RNDN);
        mpfr_set_d(r57074, y, MPFR_RNDN);
        mpfr_sub(r57075, r57073, r57074, MPFR_RNDN);
        ;
        mpfr_add(r57077, r57073, r57074, MPFR_RNDN);
        mpfr_sub(r57078, r57076, r57077, MPFR_RNDN);
        mpfr_div(r57079, r57075, r57078, MPFR_RNDN);
        return mpfr_get_d(r57079, MPFR_RNDN);
}

static mpfr_t r57080, r57081, r57082, r57083, r57084, r57085, r57086;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57080);
        mpfr_init(r57081);
        mpfr_init(r57082);
        mpfr_init_set_str(r57083, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57084);
        mpfr_init(r57085);
        mpfr_init(r57086);
}

double f_fm(double x, double y) {
        mpfr_set_d(r57080, x, MPFR_RNDN);
        mpfr_set_d(r57081, y, MPFR_RNDN);
        mpfr_sub(r57082, r57080, r57081, MPFR_RNDN);
        ;
        mpfr_add(r57084, r57080, r57081, MPFR_RNDN);
        mpfr_sub(r57085, r57083, r57084, MPFR_RNDN);
        mpfr_div(r57086, r57082, r57085, MPFR_RNDN);
        return mpfr_get_d(r57086, MPFR_RNDN);
}

static mpfr_t r57087, r57088, r57089, r57090, r57091, r57092, r57093;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57087);
        mpfr_init(r57088);
        mpfr_init(r57089);
        mpfr_init_set_str(r57090, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57091);
        mpfr_init(r57092);
        mpfr_init(r57093);
}

double f_dm(double x, double y) {
        mpfr_set_d(r57087, x, MPFR_RNDN);
        mpfr_set_d(r57088, y, MPFR_RNDN);
        mpfr_sub(r57089, r57087, r57088, MPFR_RNDN);
        ;
        mpfr_add(r57091, r57087, r57088, MPFR_RNDN);
        mpfr_sub(r57092, r57090, r57091, MPFR_RNDN);
        mpfr_div(r57093, r57089, r57092, MPFR_RNDN);
        return mpfr_get_d(r57093, MPFR_RNDN);
}

