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

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

double f_if(float x, float y) {
        float r35043 = x;
        float r35044 = 1.0;
        float r35045 = r35043 + r35044;
        float r35046 = y;
        float r35047 = r35045 * r35046;
        float r35048 = r35047 - r35043;
        return r35048;
}

double f_id(double x, double y) {
        double r35049 = x;
        double r35050 = 1.0;
        double r35051 = r35049 + r35050;
        double r35052 = y;
        double r35053 = r35051 * r35052;
        double r35054 = r35053 - r35049;
        return r35054;
}


double f_of(float x, float y) {
        float r35055 = x;
        float r35056 = 1.0;
        float r35057 = r35055 + r35056;
        float r35058 = y;
        float r35059 = r35057 * r35058;
        float r35060 = r35059 - r35055;
        return r35060;
}

double f_od(double x, double y) {
        double r35061 = x;
        double r35062 = 1.0;
        double r35063 = r35061 + r35062;
        double r35064 = y;
        double r35065 = r35063 * r35064;
        double r35066 = r35065 - r35061;
        return r35066;
}

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 r35067, r35068, r35069, r35070, r35071, r35072;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r35067);
        mpfr_init_set_str(r35068, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35069);
        mpfr_init(r35070);
        mpfr_init(r35071);
        mpfr_init(r35072);
}

double f_im(double x, double y) {
        mpfr_set_d(r35067, x, MPFR_RNDN);
        ;
        mpfr_add(r35069, r35067, r35068, MPFR_RNDN);
        mpfr_set_d(r35070, y, MPFR_RNDN);
        mpfr_mul(r35071, r35069, r35070, MPFR_RNDN);
        mpfr_sub(r35072, r35071, r35067, MPFR_RNDN);
        return mpfr_get_d(r35072, MPFR_RNDN);
}

static mpfr_t r35073, r35074, r35075, r35076, r35077, r35078;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r35073);
        mpfr_init_set_str(r35074, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35075);
        mpfr_init(r35076);
        mpfr_init(r35077);
        mpfr_init(r35078);
}

double f_fm(double x, double y) {
        mpfr_set_d(r35073, x, MPFR_RNDN);
        ;
        mpfr_add(r35075, r35073, r35074, MPFR_RNDN);
        mpfr_set_d(r35076, y, MPFR_RNDN);
        mpfr_mul(r35077, r35075, r35076, MPFR_RNDN);
        mpfr_sub(r35078, r35077, r35073, MPFR_RNDN);
        return mpfr_get_d(r35078, MPFR_RNDN);
}

static mpfr_t r35079, r35080, r35081, r35082, r35083, r35084;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r35079);
        mpfr_init_set_str(r35080, "1.0", 10, MPFR_RNDN);
        mpfr_init(r35081);
        mpfr_init(r35082);
        mpfr_init(r35083);
        mpfr_init(r35084);
}

double f_dm(double x, double y) {
        mpfr_set_d(r35079, x, MPFR_RNDN);
        ;
        mpfr_add(r35081, r35079, r35080, MPFR_RNDN);
        mpfr_set_d(r35082, y, MPFR_RNDN);
        mpfr_mul(r35083, r35081, r35082, MPFR_RNDN);
        mpfr_sub(r35084, r35083, r35079, MPFR_RNDN);
        return mpfr_get_d(r35084, MPFR_RNDN);
}

