#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Data.Colour.SRGB:invTransferFunction from colour-2.3.3";

double f_if(float x, float y) {
        float r34981 = x;
        float r34982 = y;
        float r34983 = r34981 + r34982;
        float r34984 = 1.0;
        float r34985 = r34982 + r34984;
        float r34986 = r34983 / r34985;
        return r34986;
}

double f_id(double x, double y) {
        double r34987 = x;
        double r34988 = y;
        double r34989 = r34987 + r34988;
        double r34990 = 1.0;
        double r34991 = r34988 + r34990;
        double r34992 = r34989 / r34991;
        return r34992;
}


double f_of(float x, float y) {
        float r34993 = x;
        float r34994 = y;
        float r34995 = r34993 + r34994;
        float r34996 = 1.0;
        float r34997 = r34994 + r34996;
        float r34998 = r34995 / r34997;
        return r34998;
}

double f_od(double x, double y) {
        double r34999 = x;
        double r35000 = y;
        double r35001 = r34999 + r35000;
        double r35002 = 1.0;
        double r35003 = r35000 + r35002;
        double r35004 = r35001 / r35003;
        return r35004;
}

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 r35005, r35006, r35007, r35008, r35009, r35010;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35005);
        mpfr_init(r35006);
        mpfr_init(r35007);
        mpfr_init_set_str(r35008, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35009);
        mpfr_init(r35010);
}

double f_im(double x, double y) {
        mpfr_set_d(r35005, x, MPFR_RNDN);
        mpfr_set_d(r35006, y, MPFR_RNDN);
        mpfr_add(r35007, r35005, r35006, MPFR_RNDN);
        ;
        mpfr_add(r35009, r35006, r35008, MPFR_RNDN);
        mpfr_div(r35010, r35007, r35009, MPFR_RNDN);
        return mpfr_get_d(r35010, MPFR_RNDN);
}

static mpfr_t r35011, r35012, r35013, r35014, r35015, r35016;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35011);
        mpfr_init(r35012);
        mpfr_init(r35013);
        mpfr_init_set_str(r35014, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35015);
        mpfr_init(r35016);
}

double f_fm(double x, double y) {
        mpfr_set_d(r35011, x, MPFR_RNDN);
        mpfr_set_d(r35012, y, MPFR_RNDN);
        mpfr_add(r35013, r35011, r35012, MPFR_RNDN);
        ;
        mpfr_add(r35015, r35012, r35014, MPFR_RNDN);
        mpfr_div(r35016, r35013, r35015, MPFR_RNDN);
        return mpfr_get_d(r35016, MPFR_RNDN);
}

static mpfr_t r35017, r35018, r35019, r35020, r35021, r35022;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35017);
        mpfr_init(r35018);
        mpfr_init(r35019);
        mpfr_init_set_str(r35020, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35021);
        mpfr_init(r35022);
}

double f_dm(double x, double y) {
        mpfr_set_d(r35017, x, MPFR_RNDN);
        mpfr_set_d(r35018, y, MPFR_RNDN);
        mpfr_add(r35019, r35017, r35018, MPFR_RNDN);
        ;
        mpfr_add(r35021, r35018, r35020, MPFR_RNDN);
        mpfr_div(r35022, r35019, r35021, MPFR_RNDN);
        return mpfr_get_d(r35022, MPFR_RNDN);
}

