#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 r56120 = x;
        float r56121 = y;
        float r56122 = r56120 - r56121;
        float r56123 = 2.0f;
        float r56124 = r56120 + r56121;
        float r56125 = r56123 - r56124;
        float r56126 = r56122 / r56125;
        return r56126;
}

double f_id(double x, double y) {
        double r56127 = x;
        double r56128 = y;
        double r56129 = r56127 - r56128;
        double r56130 = 2.0;
        double r56131 = r56127 + r56128;
        double r56132 = r56130 - r56131;
        double r56133 = r56129 / r56132;
        return r56133;
}


double f_of(float x, float y) {
        float r56134 = x;
        float r56135 = y;
        float r56136 = r56134 - r56135;
        float r56137 = 2.0f;
        float r56138 = r56134 + r56135;
        float r56139 = r56137 - r56138;
        float r56140 = r56136 / r56139;
        return r56140;
}

double f_od(double x, double y) {
        double r56141 = x;
        double r56142 = y;
        double r56143 = r56141 - r56142;
        double r56144 = 2.0;
        double r56145 = r56141 + r56142;
        double r56146 = r56144 - r56145;
        double r56147 = r56143 / r56146;
        return r56147;
}

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 r56148, r56149, r56150, r56151, r56152, r56153, r56154;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r56148);
        mpfr_init(r56149);
        mpfr_init(r56150);
        mpfr_init_set_str(r56151, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56152);
        mpfr_init(r56153);
        mpfr_init(r56154);
}

double f_im(double x, double y) {
        mpfr_set_d(r56148, x, MPFR_RNDN);
        mpfr_set_d(r56149, y, MPFR_RNDN);
        mpfr_sub(r56150, r56148, r56149, MPFR_RNDN);
        ;
        mpfr_add(r56152, r56148, r56149, MPFR_RNDN);
        mpfr_sub(r56153, r56151, r56152, MPFR_RNDN);
        mpfr_div(r56154, r56150, r56153, MPFR_RNDN);
        return mpfr_get_d(r56154, MPFR_RNDN);
}

static mpfr_t r56155, r56156, r56157, r56158, r56159, r56160, r56161;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r56155);
        mpfr_init(r56156);
        mpfr_init(r56157);
        mpfr_init_set_str(r56158, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56159);
        mpfr_init(r56160);
        mpfr_init(r56161);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56155, x, MPFR_RNDN);
        mpfr_set_d(r56156, y, MPFR_RNDN);
        mpfr_sub(r56157, r56155, r56156, MPFR_RNDN);
        ;
        mpfr_add(r56159, r56155, r56156, MPFR_RNDN);
        mpfr_sub(r56160, r56158, r56159, MPFR_RNDN);
        mpfr_div(r56161, r56157, r56160, MPFR_RNDN);
        return mpfr_get_d(r56161, MPFR_RNDN);
}

static mpfr_t r56162, r56163, r56164, r56165, r56166, r56167, r56168;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r56162);
        mpfr_init(r56163);
        mpfr_init(r56164);
        mpfr_init_set_str(r56165, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56166);
        mpfr_init(r56167);
        mpfr_init(r56168);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56162, x, MPFR_RNDN);
        mpfr_set_d(r56163, y, MPFR_RNDN);
        mpfr_sub(r56164, r56162, r56163, MPFR_RNDN);
        ;
        mpfr_add(r56166, r56162, r56163, MPFR_RNDN);
        mpfr_sub(r56167, r56165, r56166, MPFR_RNDN);
        mpfr_div(r56168, r56164, r56167, MPFR_RNDN);
        return mpfr_get_d(r56168, MPFR_RNDN);
}

