#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 r58342 = x;
        float r58343 = y;
        float r58344 = r58342 / r58343;
        float r58345 = 1.0;
        float r58346 = r58344 + r58345;
        float r58347 = r58342 * r58346;
        float r58348 = r58342 + r58345;
        float r58349 = r58347 / r58348;
        return r58349;
}

double f_id(double x, double y) {
        double r58350 = x;
        double r58351 = y;
        double r58352 = r58350 / r58351;
        double r58353 = 1.0;
        double r58354 = r58352 + r58353;
        double r58355 = r58350 * r58354;
        double r58356 = r58350 + r58353;
        double r58357 = r58355 / r58356;
        return r58357;
}


double f_of(float x, float y) {
        float r58358 = x;
        float r58359 = 1.0;
        float r58360 = r58358 + r58359;
        float r58361 = y;
        float r58362 = r58358 / r58361;
        float r58363 = r58362 + r58359;
        float r58364 = r58360 / r58363;
        float r58365 = r58358 / r58364;
        return r58365;
}

double f_od(double x, double y) {
        double r58366 = x;
        double r58367 = 1.0;
        double r58368 = r58366 + r58367;
        double r58369 = y;
        double r58370 = r58366 / r58369;
        double r58371 = r58370 + r58367;
        double r58372 = r58368 / r58371;
        double r58373 = r58366 / r58372;
        return r58373;
}

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 r58374, r58375, r58376, r58377, r58378, r58379, r58380, r58381;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r58374);
        mpfr_init(r58375);
        mpfr_init(r58376);
        mpfr_init_set_str(r58377, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58378);
        mpfr_init(r58379);
        mpfr_init(r58380);
        mpfr_init(r58381);
}

double f_im(double x, double y) {
        mpfr_set_d(r58374, x, MPFR_RNDN);
        mpfr_set_d(r58375, y, MPFR_RNDN);
        mpfr_div(r58376, r58374, r58375, MPFR_RNDN);
        ;
        mpfr_add(r58378, r58376, r58377, MPFR_RNDN);
        mpfr_mul(r58379, r58374, r58378, MPFR_RNDN);
        mpfr_add(r58380, r58374, r58377, MPFR_RNDN);
        mpfr_div(r58381, r58379, r58380, MPFR_RNDN);
        return mpfr_get_d(r58381, MPFR_RNDN);
}

static mpfr_t r58382, r58383, r58384, r58385, r58386, r58387, r58388, r58389;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r58382);
        mpfr_init_set_str(r58383, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58384);
        mpfr_init(r58385);
        mpfr_init(r58386);
        mpfr_init(r58387);
        mpfr_init(r58388);
        mpfr_init(r58389);
}

double f_fm(double x, double y) {
        mpfr_set_d(r58382, x, MPFR_RNDN);
        ;
        mpfr_add(r58384, r58382, r58383, MPFR_RNDN);
        mpfr_set_d(r58385, y, MPFR_RNDN);
        mpfr_div(r58386, r58382, r58385, MPFR_RNDN);
        mpfr_add(r58387, r58386, r58383, MPFR_RNDN);
        mpfr_div(r58388, r58384, r58387, MPFR_RNDN);
        mpfr_div(r58389, r58382, r58388, MPFR_RNDN);
        return mpfr_get_d(r58389, MPFR_RNDN);
}

static mpfr_t r58390, r58391, r58392, r58393, r58394, r58395, r58396, r58397;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r58390);
        mpfr_init_set_str(r58391, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58392);
        mpfr_init(r58393);
        mpfr_init(r58394);
        mpfr_init(r58395);
        mpfr_init(r58396);
        mpfr_init(r58397);
}

double f_dm(double x, double y) {
        mpfr_set_d(r58390, x, MPFR_RNDN);
        ;
        mpfr_add(r58392, r58390, r58391, MPFR_RNDN);
        mpfr_set_d(r58393, y, MPFR_RNDN);
        mpfr_div(r58394, r58390, r58393, MPFR_RNDN);
        mpfr_add(r58395, r58394, r58391, MPFR_RNDN);
        mpfr_div(r58396, r58392, r58395, MPFR_RNDN);
        mpfr_div(r58397, r58390, r58396, MPFR_RNDN);
        return mpfr_get_d(r58397, MPFR_RNDN);
}

