#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, A";

double f_if(float x, float y) {
        float r56860 = x;
        float r56861 = 16.0f;
        float r56862 = 116.0f;
        float r56863 = r56861 / r56862;
        float r56864 = r56860 - r56863;
        float r56865 = 3.0f;
        float r56866 = r56864 * r56865;
        float r56867 = y;
        float r56868 = r56866 * r56867;
        return r56868;
}

double f_id(double x, double y) {
        double r56869 = x;
        double r56870 = 16.0;
        double r56871 = 116.0;
        double r56872 = r56870 / r56871;
        double r56873 = r56869 - r56872;
        double r56874 = 3.0;
        double r56875 = r56873 * r56874;
        double r56876 = y;
        double r56877 = r56875 * r56876;
        return r56877;
}


double f_of(float x, float y) {
        float r56878 = x;
        float r56879 = 3.0f;
        float r56880 = r56878 * r56879;
        float r56881 = 0.41379310344827586f;
        float r56882 = r56880 - r56881;
        float r56883 = y;
        float r56884 = r56882 * r56883;
        return r56884;
}

double f_od(double x, double y) {
        double r56885 = x;
        double r56886 = 3.0;
        double r56887 = r56885 * r56886;
        double r56888 = 0.41379310344827586;
        double r56889 = r56887 - r56888;
        double r56890 = y;
        double r56891 = r56889 * r56890;
        return r56891;
}

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 r56892, r56893, r56894, r56895, r56896, r56897, r56898, r56899, r56900;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r56892);
        mpfr_init_set_str(r56893, "16.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r56894, "116.0", 10, MPFR_RNDN);
        mpfr_init(r56895);
        mpfr_init(r56896);
        mpfr_init_set_str(r56897, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56898);
        mpfr_init(r56899);
        mpfr_init(r56900);
}

double f_im(double x, double y) {
        mpfr_set_d(r56892, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r56895, r56893, r56894, MPFR_RNDN);
        mpfr_sub(r56896, r56892, r56895, MPFR_RNDN);
        ;
        mpfr_mul(r56898, r56896, r56897, MPFR_RNDN);
        mpfr_set_d(r56899, y, MPFR_RNDN);
        mpfr_mul(r56900, r56898, r56899, MPFR_RNDN);
        return mpfr_get_d(r56900, MPFR_RNDN);
}

static mpfr_t r56901, r56902, r56903, r56904, r56905, r56906, r56907;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r56901);
        mpfr_init_set_str(r56902, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56903);
        mpfr_init_set_str(r56904, "0.41379310344827586", 10, MPFR_RNDN);
        mpfr_init(r56905);
        mpfr_init(r56906);
        mpfr_init(r56907);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56901, x, MPFR_RNDN);
        ;
        mpfr_mul(r56903, r56901, r56902, MPFR_RNDN);
        ;
        mpfr_sub(r56905, r56903, r56904, MPFR_RNDN);
        mpfr_set_d(r56906, y, MPFR_RNDN);
        mpfr_mul(r56907, r56905, r56906, MPFR_RNDN);
        return mpfr_get_d(r56907, MPFR_RNDN);
}

static mpfr_t r56908, r56909, r56910, r56911, r56912, r56913, r56914;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r56908);
        mpfr_init_set_str(r56909, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56910);
        mpfr_init_set_str(r56911, "0.41379310344827586", 10, MPFR_RNDN);
        mpfr_init(r56912);
        mpfr_init(r56913);
        mpfr_init(r56914);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56908, x, MPFR_RNDN);
        ;
        mpfr_mul(r56910, r56908, r56909, MPFR_RNDN);
        ;
        mpfr_sub(r56912, r56910, r56911, MPFR_RNDN);
        mpfr_set_d(r56913, y, MPFR_RNDN);
        mpfr_mul(r56914, r56912, r56913, MPFR_RNDN);
        return mpfr_get_d(r56914, MPFR_RNDN);
}

