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

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

double f_if(float x, float y) {
        float r35456 = x;
        float r35457 = y;
        float r35458 = 200.0;
        float r35459 = r35457 / r35458;
        float r35460 = r35456 - r35459;
        return r35460;
}

double f_id(double x, double y) {
        double r35461 = x;
        double r35462 = y;
        double r35463 = 200.0;
        double r35464 = r35462 / r35463;
        double r35465 = r35461 - r35464;
        return r35465;
}


double f_of(float x, float y) {
        float r35466 = x;
        float r35467 = y;
        float r35468 = 200.0;
        float r35469 = r35467 / r35468;
        float r35470 = r35466 - r35469;
        return r35470;
}

double f_od(double x, double y) {
        double r35471 = x;
        double r35472 = y;
        double r35473 = 200.0;
        double r35474 = r35472 / r35473;
        double r35475 = r35471 - r35474;
        return r35475;
}

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 r35476, r35477, r35478, r35479, r35480;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35476);
        mpfr_init(r35477);
        mpfr_init_set_str(r35478, "200.0", 10, MPFR_RNDN);
        mpfr_init(r35479);
        mpfr_init(r35480);
}

double f_im(double x, double y) {
        mpfr_set_d(r35476, x, MPFR_RNDN);
        mpfr_set_d(r35477, y, MPFR_RNDN);
        ;
        mpfr_div(r35479, r35477, r35478, MPFR_RNDN);
        mpfr_sub(r35480, r35476, r35479, MPFR_RNDN);
        return mpfr_get_d(r35480, MPFR_RNDN);
}

static mpfr_t r35481, r35482, r35483, r35484, r35485;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35481);
        mpfr_init(r35482);
        mpfr_init_set_str(r35483, "200.0", 10, MPFR_RNDN);
        mpfr_init(r35484);
        mpfr_init(r35485);
}

double f_fm(double x, double y) {
        mpfr_set_d(r35481, x, MPFR_RNDN);
        mpfr_set_d(r35482, y, MPFR_RNDN);
        ;
        mpfr_div(r35484, r35482, r35483, MPFR_RNDN);
        mpfr_sub(r35485, r35481, r35484, MPFR_RNDN);
        return mpfr_get_d(r35485, MPFR_RNDN);
}

static mpfr_t r35486, r35487, r35488, r35489, r35490;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35486);
        mpfr_init(r35487);
        mpfr_init_set_str(r35488, "200.0", 10, MPFR_RNDN);
        mpfr_init(r35489);
        mpfr_init(r35490);
}

double f_dm(double x, double y) {
        mpfr_set_d(r35486, x, MPFR_RNDN);
        mpfr_set_d(r35487, y, MPFR_RNDN);
        ;
        mpfr_div(r35489, r35487, r35488, MPFR_RNDN);
        mpfr_sub(r35490, r35486, r35489, MPFR_RNDN);
        return mpfr_get_d(r35490, MPFR_RNDN);
}

