#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 r58194 = x;
        float r58195 = y;
        float r58196 = r58194 / r58195;
        float r58197 = 1.0;
        float r58198 = r58196 + r58197;
        float r58199 = r58194 * r58198;
        float r58200 = r58194 + r58197;
        float r58201 = r58199 / r58200;
        return r58201;
}

double f_id(double x, double y) {
        double r58202 = x;
        double r58203 = y;
        double r58204 = r58202 / r58203;
        double r58205 = 1.0;
        double r58206 = r58204 + r58205;
        double r58207 = r58202 * r58206;
        double r58208 = r58202 + r58205;
        double r58209 = r58207 / r58208;
        return r58209;
}


double f_of(float x, float y) {
        float r58210 = x;
        float r58211 = 1.0;
        float r58212 = r58210 + r58211;
        float r58213 = y;
        float r58214 = r58210 / r58213;
        float r58215 = r58214 + r58211;
        float r58216 = r58212 / r58215;
        float r58217 = r58210 / r58216;
        return r58217;
}

double f_od(double x, double y) {
        double r58218 = x;
        double r58219 = 1.0;
        double r58220 = r58218 + r58219;
        double r58221 = y;
        double r58222 = r58218 / r58221;
        double r58223 = r58222 + r58219;
        double r58224 = r58220 / r58223;
        double r58225 = r58218 / r58224;
        return r58225;
}

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 r58226, r58227, r58228, r58229, r58230, r58231, r58232, r58233;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r58226);
        mpfr_init(r58227);
        mpfr_init(r58228);
        mpfr_init_set_str(r58229, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58230);
        mpfr_init(r58231);
        mpfr_init(r58232);
        mpfr_init(r58233);
}

double f_im(double x, double y) {
        mpfr_set_d(r58226, x, MPFR_RNDN);
        mpfr_set_d(r58227, y, MPFR_RNDN);
        mpfr_div(r58228, r58226, r58227, MPFR_RNDN);
        ;
        mpfr_add(r58230, r58228, r58229, MPFR_RNDN);
        mpfr_mul(r58231, r58226, r58230, MPFR_RNDN);
        mpfr_add(r58232, r58226, r58229, MPFR_RNDN);
        mpfr_div(r58233, r58231, r58232, MPFR_RNDN);
        return mpfr_get_d(r58233, MPFR_RNDN);
}

static mpfr_t r58234, r58235, r58236, r58237, r58238, r58239, r58240, r58241;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r58234);
        mpfr_init_set_str(r58235, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58236);
        mpfr_init(r58237);
        mpfr_init(r58238);
        mpfr_init(r58239);
        mpfr_init(r58240);
        mpfr_init(r58241);
}

double f_fm(double x, double y) {
        mpfr_set_d(r58234, x, MPFR_RNDN);
        ;
        mpfr_add(r58236, r58234, r58235, MPFR_RNDN);
        mpfr_set_d(r58237, y, MPFR_RNDN);
        mpfr_div(r58238, r58234, r58237, MPFR_RNDN);
        mpfr_add(r58239, r58238, r58235, MPFR_RNDN);
        mpfr_div(r58240, r58236, r58239, MPFR_RNDN);
        mpfr_div(r58241, r58234, r58240, MPFR_RNDN);
        return mpfr_get_d(r58241, MPFR_RNDN);
}

static mpfr_t r58242, r58243, r58244, r58245, r58246, r58247, r58248, r58249;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r58242);
        mpfr_init_set_str(r58243, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58244);
        mpfr_init(r58245);
        mpfr_init(r58246);
        mpfr_init(r58247);
        mpfr_init(r58248);
        mpfr_init(r58249);
}

double f_dm(double x, double y) {
        mpfr_set_d(r58242, x, MPFR_RNDN);
        ;
        mpfr_add(r58244, r58242, r58243, MPFR_RNDN);
        mpfr_set_d(r58245, y, MPFR_RNDN);
        mpfr_div(r58246, r58242, r58245, MPFR_RNDN);
        mpfr_add(r58247, r58246, r58243, MPFR_RNDN);
        mpfr_div(r58248, r58244, r58247, MPFR_RNDN);
        mpfr_div(r58249, r58242, r58248, MPFR_RNDN);
        return mpfr_get_d(r58249, MPFR_RNDN);
}

