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

char *name = "Data.Colour.CIE:cieLABView from colour-2.3.3, A";

double f_if(float x) {
        float r36035 = 841.0;
        float r36036 = 108.0;
        float r36037 = r36035 / r36036;
        float r36038 = x;
        float r36039 = r36037 * r36038;
        float r36040 = 4.0;
        float r36041 = 29.0;
        float r36042 = r36040 / r36041;
        float r36043 = r36039 + r36042;
        return r36043;
}

double f_id(double x) {
        double r36044 = 841.0;
        double r36045 = 108.0;
        double r36046 = r36044 / r36045;
        double r36047 = x;
        double r36048 = r36046 * r36047;
        double r36049 = 4.0;
        double r36050 = 29.0;
        double r36051 = r36049 / r36050;
        double r36052 = r36048 + r36051;
        return r36052;
}


double f_of(float x) {
        float r36053 = 841.0;
        float r36054 = 108.0;
        float r36055 = r36053 / r36054;
        float r36056 = x;
        float r36057 = r36055 * r36056;
        float r36058 = 4.0;
        float r36059 = 29.0;
        float r36060 = r36058 / r36059;
        float r36061 = r36057 + r36060;
        return r36061;
}

double f_od(double x) {
        double r36062 = 841.0;
        double r36063 = 108.0;
        double r36064 = r36062 / r36063;
        double r36065 = x;
        double r36066 = r36064 * r36065;
        double r36067 = 4.0;
        double r36068 = 29.0;
        double r36069 = r36067 / r36068;
        double r36070 = r36066 + r36069;
        return r36070;
}

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 r36071, r36072, r36073, r36074, r36075, r36076, r36077, r36078, r36079;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r36071, "841.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36072, "108.0", 10, MPFR_RNDN);
        mpfr_init(r36073);
        mpfr_init(r36074);
        mpfr_init(r36075);
        mpfr_init_set_str(r36076, "4.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36077, "29.0", 10, MPFR_RNDN);
        mpfr_init(r36078);
        mpfr_init(r36079);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r36073, r36071, r36072, MPFR_RNDN);
        mpfr_set_d(r36074, x, MPFR_RNDN);
        mpfr_mul(r36075, r36073, r36074, MPFR_RNDN);
        ;
        ;
        mpfr_div(r36078, r36076, r36077, MPFR_RNDN);
        mpfr_add(r36079, r36075, r36078, MPFR_RNDN);
        return mpfr_get_d(r36079, MPFR_RNDN);
}

static mpfr_t r36080, r36081, r36082, r36083, r36084, r36085, r36086, r36087, r36088;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r36080, "841.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36081, "108.0", 10, MPFR_RNDN);
        mpfr_init(r36082);
        mpfr_init(r36083);
        mpfr_init(r36084);
        mpfr_init_set_str(r36085, "4.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36086, "29.0", 10, MPFR_RNDN);
        mpfr_init(r36087);
        mpfr_init(r36088);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r36082, r36080, r36081, MPFR_RNDN);
        mpfr_set_d(r36083, x, MPFR_RNDN);
        mpfr_mul(r36084, r36082, r36083, MPFR_RNDN);
        ;
        ;
        mpfr_div(r36087, r36085, r36086, MPFR_RNDN);
        mpfr_add(r36088, r36084, r36087, MPFR_RNDN);
        return mpfr_get_d(r36088, MPFR_RNDN);
}

static mpfr_t r36089, r36090, r36091, r36092, r36093, r36094, r36095, r36096, r36097;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r36089, "841.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36090, "108.0", 10, MPFR_RNDN);
        mpfr_init(r36091);
        mpfr_init(r36092);
        mpfr_init(r36093);
        mpfr_init_set_str(r36094, "4.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r36095, "29.0", 10, MPFR_RNDN);
        mpfr_init(r36096);
        mpfr_init(r36097);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r36091, r36089, r36090, MPFR_RNDN);
        mpfr_set_d(r36092, x, MPFR_RNDN);
        mpfr_mul(r36093, r36091, r36092, MPFR_RNDN);
        ;
        ;
        mpfr_div(r36096, r36094, r36095, MPFR_RNDN);
        mpfr_add(r36097, r36093, r36096, MPFR_RNDN);
        return mpfr_get_d(r36097, MPFR_RNDN);
}

