#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 r55648 = x;
        float r55649 = y;
        float r55650 = r55648 - r55649;
        float r55651 = 2.0;
        float r55652 = r55648 + r55649;
        float r55653 = r55651 - r55652;
        float r55654 = r55650 / r55653;
        return r55654;
}

double f_id(double x, double y) {
        double r55655 = x;
        double r55656 = y;
        double r55657 = r55655 - r55656;
        double r55658 = 2.0;
        double r55659 = r55655 + r55656;
        double r55660 = r55658 - r55659;
        double r55661 = r55657 / r55660;
        return r55661;
}


double f_of(float x, float y) {
        float r55662 = x;
        float r55663 = y;
        float r55664 = r55662 - r55663;
        float r55665 = 2.0;
        float r55666 = r55662 + r55663;
        float r55667 = r55665 - r55666;
        float r55668 = r55664 / r55667;
        return r55668;
}

double f_od(double x, double y) {
        double r55669 = x;
        double r55670 = y;
        double r55671 = r55669 - r55670;
        double r55672 = 2.0;
        double r55673 = r55669 + r55670;
        double r55674 = r55672 - r55673;
        double r55675 = r55671 / r55674;
        return r55675;
}

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 r55676, r55677, r55678, r55679, r55680, r55681, r55682;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55676);
        mpfr_init(r55677);
        mpfr_init(r55678);
        mpfr_init_set_str(r55679, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55680);
        mpfr_init(r55681);
        mpfr_init(r55682);
}

double f_im(double x, double y) {
        mpfr_set_d(r55676, x, MPFR_RNDN);
        mpfr_set_d(r55677, y, MPFR_RNDN);
        mpfr_sub(r55678, r55676, r55677, MPFR_RNDN);
        ;
        mpfr_add(r55680, r55676, r55677, MPFR_RNDN);
        mpfr_sub(r55681, r55679, r55680, MPFR_RNDN);
        mpfr_div(r55682, r55678, r55681, MPFR_RNDN);
        return mpfr_get_d(r55682, MPFR_RNDN);
}

static mpfr_t r55683, r55684, r55685, r55686, r55687, r55688, r55689;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55683);
        mpfr_init(r55684);
        mpfr_init(r55685);
        mpfr_init_set_str(r55686, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55687);
        mpfr_init(r55688);
        mpfr_init(r55689);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55683, x, MPFR_RNDN);
        mpfr_set_d(r55684, y, MPFR_RNDN);
        mpfr_sub(r55685, r55683, r55684, MPFR_RNDN);
        ;
        mpfr_add(r55687, r55683, r55684, MPFR_RNDN);
        mpfr_sub(r55688, r55686, r55687, MPFR_RNDN);
        mpfr_div(r55689, r55685, r55688, MPFR_RNDN);
        return mpfr_get_d(r55689, MPFR_RNDN);
}

static mpfr_t r55690, r55691, r55692, r55693, r55694, r55695, r55696;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55690);
        mpfr_init(r55691);
        mpfr_init(r55692);
        mpfr_init_set_str(r55693, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55694);
        mpfr_init(r55695);
        mpfr_init(r55696);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55690, x, MPFR_RNDN);
        mpfr_set_d(r55691, y, MPFR_RNDN);
        mpfr_sub(r55692, r55690, r55691, MPFR_RNDN);
        ;
        mpfr_add(r55694, r55690, r55691, MPFR_RNDN);
        mpfr_sub(r55695, r55693, r55694, MPFR_RNDN);
        mpfr_div(r55696, r55692, r55695, MPFR_RNDN);
        return mpfr_get_d(r55696, MPFR_RNDN);
}

