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

char *name = "Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r58352 = x;
        float r58353 = y;
        float r58354 = 2.0;
        float r58355 = r58353 * r58354;
        float r58356 = 1.0;
        float r58357 = r58355 + r58356;
        float r58358 = z;
        float r58359 = r58357 * r58358;
        float r58360 = t;
        float r58361 = r58359 * r58360;
        float r58362 = 16.0;
        float r58363 = r58361 / r58362;
        float r58364 = cos(r58363);
        float r58365 = r58352 * r58364;
        float r58366 = a;
        float r58367 = r58366 * r58354;
        float r58368 = r58367 + r58356;
        float r58369 = b;
        float r58370 = r58368 * r58369;
        float r58371 = r58370 * r58360;
        float r58372 = r58371 / r58362;
        float r58373 = cos(r58372);
        float r58374 = r58365 * r58373;
        return r58374;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r58375 = x;
        double r58376 = y;
        double r58377 = 2.0;
        double r58378 = r58376 * r58377;
        double r58379 = 1.0;
        double r58380 = r58378 + r58379;
        double r58381 = z;
        double r58382 = r58380 * r58381;
        double r58383 = t;
        double r58384 = r58382 * r58383;
        double r58385 = 16.0;
        double r58386 = r58384 / r58385;
        double r58387 = cos(r58386);
        double r58388 = r58375 * r58387;
        double r58389 = a;
        double r58390 = r58389 * r58377;
        double r58391 = r58390 + r58379;
        double r58392 = b;
        double r58393 = r58391 * r58392;
        double r58394 = r58393 * r58383;
        double r58395 = r58394 / r58385;
        double r58396 = cos(r58395);
        double r58397 = r58388 * r58396;
        return r58397;
}


double f_of(float x, float y, float z, float t, float __attribute__((unused)) a, float __attribute__((unused)) b) {
        float r58398 = x;
        float r58399 = 1.0;
        float r58400 = y;
        float r58401 = 2.0;
        float r58402 = r58400 * r58401;
        float r58403 = r58399 + r58402;
        float r58404 = cbrt(r58403);
        float r58405 = 16.0;
        float r58406 = t;
        float r58407 = r58405 / r58406;
        float r58408 = z;
        float r58409 = r58407 / r58408;
        float r58410 = cbrt(r58409);
        float r58411 = r58404 / r58410;
        float r58412 = r58403 / r58409;
        float r58413 = cbrt(r58412);
        float r58414 = r58413 * r58413;
        float r58415 = r58411 * r58414;
        float r58416 = cos(r58415);
        float r58417 = 3;
        float r58418 = pow(r58416, r58417);
        float r58419 = cbrt(r58418);
        float r58420 = r58398 * r58419;
        return r58420;
}

double f_od(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r58421 = x;
        double r58422 = 1.0;
        double r58423 = y;
        double r58424 = 2.0;
        double r58425 = r58423 * r58424;
        double r58426 = r58422 + r58425;
        double r58427 = cbrt(r58426);
        double r58428 = 16.0;
        double r58429 = t;
        double r58430 = r58428 / r58429;
        double r58431 = z;
        double r58432 = r58430 / r58431;
        double r58433 = cbrt(r58432);
        double r58434 = r58427 / r58433;
        double r58435 = r58426 / r58432;
        double r58436 = cbrt(r58435);
        double r58437 = r58436 * r58436;
        double r58438 = r58434 * r58437;
        double r58439 = cos(r58438);
        double r58440 = 3;
        double r58441 = pow(r58439, r58440);
        double r58442 = cbrt(r58441);
        double r58443 = r58421 * r58442;
        return r58443;
}

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 r58444, r58445, r58446, r58447, r58448, r58449, r58450, r58451, r58452, r58453, r58454, r58455, r58456, r58457, r58458, r58459, r58460, r58461, r58462, r58463, r58464, r58465, r58466;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58444);
        mpfr_init(r58445);
        mpfr_init_set_str(r58446, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58447);
        mpfr_init_set_str(r58448, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58449);
        mpfr_init(r58450);
        mpfr_init(r58451);
        mpfr_init(r58452);
        mpfr_init(r58453);
        mpfr_init_set_str(r58454, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58455);
        mpfr_init(r58456);
        mpfr_init(r58457);
        mpfr_init(r58458);
        mpfr_init(r58459);
        mpfr_init(r58460);
        mpfr_init(r58461);
        mpfr_init(r58462);
        mpfr_init(r58463);
        mpfr_init(r58464);
        mpfr_init(r58465);
        mpfr_init(r58466);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r58444, x, MPFR_RNDN);
        mpfr_set_d(r58445, y, MPFR_RNDN);
        ;
        mpfr_mul(r58447, r58445, r58446, MPFR_RNDN);
        ;
        mpfr_add(r58449, r58447, r58448, MPFR_RNDN);
        mpfr_set_d(r58450, z, MPFR_RNDN);
        mpfr_mul(r58451, r58449, r58450, MPFR_RNDN);
        mpfr_set_d(r58452, t, MPFR_RNDN);
        mpfr_mul(r58453, r58451, r58452, MPFR_RNDN);
        ;
        mpfr_div(r58455, r58453, r58454, MPFR_RNDN);
        mpfr_cos(r58456, r58455, MPFR_RNDN);
        mpfr_mul(r58457, r58444, r58456, MPFR_RNDN);
        mpfr_set_d(r58458, a, MPFR_RNDN);
        mpfr_mul(r58459, r58458, r58446, MPFR_RNDN);
        mpfr_add(r58460, r58459, r58448, MPFR_RNDN);
        mpfr_set_d(r58461, b, MPFR_RNDN);
        mpfr_mul(r58462, r58460, r58461, MPFR_RNDN);
        mpfr_mul(r58463, r58462, r58452, MPFR_RNDN);
        mpfr_div(r58464, r58463, r58454, MPFR_RNDN);
        mpfr_cos(r58465, r58464, MPFR_RNDN);
        mpfr_mul(r58466, r58457, r58465, MPFR_RNDN);
        return mpfr_get_d(r58466, MPFR_RNDN);
}

static mpfr_t r58467, r58468, r58469, r58470, r58471, r58472, r58473, r58474, r58475, r58476, r58477, r58478, r58479, r58480, r58481, r58482, r58483, r58484, r58485, r58486, r58487, r58488, r58489;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58467);
        mpfr_init_set_str(r58468, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58469);
        mpfr_init_set_str(r58470, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58471);
        mpfr_init(r58472);
        mpfr_init(r58473);
        mpfr_init_set_str(r58474, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58475);
        mpfr_init(r58476);
        mpfr_init(r58477);
        mpfr_init(r58478);
        mpfr_init(r58479);
        mpfr_init(r58480);
        mpfr_init(r58481);
        mpfr_init(r58482);
        mpfr_init(r58483);
        mpfr_init(r58484);
        mpfr_init(r58485);
        mpfr_init_set_str(r58486, "3", 10, MPFR_RNDN);
        mpfr_init(r58487);
        mpfr_init(r58488);
        mpfr_init(r58489);
}

double f_fm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r58467, x, MPFR_RNDN);
        ;
        mpfr_set_d(r58469, y, MPFR_RNDN);
        ;
        mpfr_mul(r58471, r58469, r58470, MPFR_RNDN);
        mpfr_add(r58472, r58468, r58471, MPFR_RNDN);
        mpfr_cbrt(r58473, r58472, MPFR_RNDN);
        ;
        mpfr_set_d(r58475, t, MPFR_RNDN);
        mpfr_div(r58476, r58474, r58475, MPFR_RNDN);
        mpfr_set_d(r58477, z, MPFR_RNDN);
        mpfr_div(r58478, r58476, r58477, MPFR_RNDN);
        mpfr_cbrt(r58479, r58478, MPFR_RNDN);
        mpfr_div(r58480, r58473, r58479, MPFR_RNDN);
        mpfr_div(r58481, r58472, r58478, MPFR_RNDN);
        mpfr_cbrt(r58482, r58481, MPFR_RNDN);
        mpfr_mul(r58483, r58482, r58482, MPFR_RNDN);
        mpfr_mul(r58484, r58480, r58483, MPFR_RNDN);
        mpfr_cos(r58485, r58484, MPFR_RNDN);
        ;
        mpfr_pow(r58487, r58485, r58486, MPFR_RNDN);
        mpfr_cbrt(r58488, r58487, MPFR_RNDN);
        mpfr_mul(r58489, r58467, r58488, MPFR_RNDN);
        return mpfr_get_d(r58489, MPFR_RNDN);
}

static mpfr_t r58490, r58491, r58492, r58493, r58494, r58495, r58496, r58497, r58498, r58499, r58500, r58501, r58502, r58503, r58504, r58505, r58506, r58507, r58508, r58509, r58510, r58511, r58512;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58490);
        mpfr_init_set_str(r58491, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58492);
        mpfr_init_set_str(r58493, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58494);
        mpfr_init(r58495);
        mpfr_init(r58496);
        mpfr_init_set_str(r58497, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58498);
        mpfr_init(r58499);
        mpfr_init(r58500);
        mpfr_init(r58501);
        mpfr_init(r58502);
        mpfr_init(r58503);
        mpfr_init(r58504);
        mpfr_init(r58505);
        mpfr_init(r58506);
        mpfr_init(r58507);
        mpfr_init(r58508);
        mpfr_init_set_str(r58509, "3", 10, MPFR_RNDN);
        mpfr_init(r58510);
        mpfr_init(r58511);
        mpfr_init(r58512);
}

double f_dm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r58490, x, MPFR_RNDN);
        ;
        mpfr_set_d(r58492, y, MPFR_RNDN);
        ;
        mpfr_mul(r58494, r58492, r58493, MPFR_RNDN);
        mpfr_add(r58495, r58491, r58494, MPFR_RNDN);
        mpfr_cbrt(r58496, r58495, MPFR_RNDN);
        ;
        mpfr_set_d(r58498, t, MPFR_RNDN);
        mpfr_div(r58499, r58497, r58498, MPFR_RNDN);
        mpfr_set_d(r58500, z, MPFR_RNDN);
        mpfr_div(r58501, r58499, r58500, MPFR_RNDN);
        mpfr_cbrt(r58502, r58501, MPFR_RNDN);
        mpfr_div(r58503, r58496, r58502, MPFR_RNDN);
        mpfr_div(r58504, r58495, r58501, MPFR_RNDN);
        mpfr_cbrt(r58505, r58504, MPFR_RNDN);
        mpfr_mul(r58506, r58505, r58505, MPFR_RNDN);
        mpfr_mul(r58507, r58503, r58506, MPFR_RNDN);
        mpfr_cos(r58508, r58507, MPFR_RNDN);
        ;
        mpfr_pow(r58510, r58508, r58509, MPFR_RNDN);
        mpfr_cbrt(r58511, r58510, MPFR_RNDN);
        mpfr_mul(r58512, r58490, r58511, MPFR_RNDN);
        return mpfr_get_d(r58512, MPFR_RNDN);
}

