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

char *name = "Codec.Picture.Types:toneMapping from JuicyPixels-3.2.6.1";

double f_if(float x, float y) {
        float r57005 = x;
        float r57006 = y;
        float r57007 = r57005 / r57006;
        float r57008 = 1.0;
        float r57009 = r57007 + r57008;
        float r57010 = r57005 * r57009;
        float r57011 = r57005 + r57008;
        float r57012 = r57010 / r57011;
        return r57012;
}

double f_id(double x, double y) {
        double r57013 = x;
        double r57014 = y;
        double r57015 = r57013 / r57014;
        double r57016 = 1.0;
        double r57017 = r57015 + r57016;
        double r57018 = r57013 * r57017;
        double r57019 = r57013 + r57016;
        double r57020 = r57018 / r57019;
        return r57020;
}


double f_of(float x, float y) {
        float r57021 = x;
        float r57022 = 1;
        float r57023 = r57021 / r57022;
        float r57024 = y;
        float r57025 = r57021 / r57024;
        float r57026 = 1.0;
        float r57027 = r57025 + r57026;
        float r57028 = r57021 + r57026;
        float r57029 = r57027 / r57028;
        float r57030 = r57023 * r57029;
        return r57030;
}

double f_od(double x, double y) {
        double r57031 = x;
        double r57032 = 1;
        double r57033 = r57031 / r57032;
        double r57034 = y;
        double r57035 = r57031 / r57034;
        double r57036 = 1.0;
        double r57037 = r57035 + r57036;
        double r57038 = r57031 + r57036;
        double r57039 = r57037 / r57038;
        double r57040 = r57033 * r57039;
        return r57040;
}

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 r57041, r57042, r57043, r57044, r57045, r57046, r57047, r57048;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57041);
        mpfr_init(r57042);
        mpfr_init(r57043);
        mpfr_init_set_str(r57044, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57045);
        mpfr_init(r57046);
        mpfr_init(r57047);
        mpfr_init(r57048);
}

double f_im(double x, double y) {
        mpfr_set_d(r57041, x, MPFR_RNDN);
        mpfr_set_d(r57042, y, MPFR_RNDN);
        mpfr_div(r57043, r57041, r57042, MPFR_RNDN);
        ;
        mpfr_add(r57045, r57043, r57044, MPFR_RNDN);
        mpfr_mul(r57046, r57041, r57045, MPFR_RNDN);
        mpfr_add(r57047, r57041, r57044, MPFR_RNDN);
        mpfr_div(r57048, r57046, r57047, MPFR_RNDN);
        return mpfr_get_d(r57048, MPFR_RNDN);
}

static mpfr_t r57049, r57050, r57051, r57052, r57053, r57054, r57055, r57056, r57057, r57058;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57049);
        mpfr_init_set_str(r57050, "1", 10, MPFR_RNDN);
        mpfr_init(r57051);
        mpfr_init(r57052);
        mpfr_init(r57053);
        mpfr_init_set_str(r57054, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57055);
        mpfr_init(r57056);
        mpfr_init(r57057);
        mpfr_init(r57058);
}

double f_fm(double x, double y) {
        mpfr_set_d(r57049, x, MPFR_RNDN);
        ;
        mpfr_div(r57051, r57049, r57050, MPFR_RNDN);
        mpfr_set_d(r57052, y, MPFR_RNDN);
        mpfr_div(r57053, r57049, r57052, MPFR_RNDN);
        ;
        mpfr_add(r57055, r57053, r57054, MPFR_RNDN);
        mpfr_add(r57056, r57049, r57054, MPFR_RNDN);
        mpfr_div(r57057, r57055, r57056, MPFR_RNDN);
        mpfr_mul(r57058, r57051, r57057, MPFR_RNDN);
        return mpfr_get_d(r57058, MPFR_RNDN);
}

static mpfr_t r57059, r57060, r57061, r57062, r57063, r57064, r57065, r57066, r57067, r57068;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57059);
        mpfr_init_set_str(r57060, "1", 10, MPFR_RNDN);
        mpfr_init(r57061);
        mpfr_init(r57062);
        mpfr_init(r57063);
        mpfr_init_set_str(r57064, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57065);
        mpfr_init(r57066);
        mpfr_init(r57067);
        mpfr_init(r57068);
}

double f_dm(double x, double y) {
        mpfr_set_d(r57059, x, MPFR_RNDN);
        ;
        mpfr_div(r57061, r57059, r57060, MPFR_RNDN);
        mpfr_set_d(r57062, y, MPFR_RNDN);
        mpfr_div(r57063, r57059, r57062, MPFR_RNDN);
        ;
        mpfr_add(r57065, r57063, r57064, MPFR_RNDN);
        mpfr_add(r57066, r57059, r57064, MPFR_RNDN);
        mpfr_div(r57067, r57065, r57066, MPFR_RNDN);
        mpfr_mul(r57068, r57061, r57067, MPFR_RNDN);
        return mpfr_get_d(r57068, MPFR_RNDN);
}

