#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 r58106 = x;
        float r58107 = y;
        float r58108 = 2.0;
        float r58109 = r58107 * r58108;
        float r58110 = 1.0;
        float r58111 = r58109 + r58110;
        float r58112 = z;
        float r58113 = r58111 * r58112;
        float r58114 = t;
        float r58115 = r58113 * r58114;
        float r58116 = 16.0;
        float r58117 = r58115 / r58116;
        float r58118 = cos(r58117);
        float r58119 = r58106 * r58118;
        float r58120 = a;
        float r58121 = r58120 * r58108;
        float r58122 = r58121 + r58110;
        float r58123 = b;
        float r58124 = r58122 * r58123;
        float r58125 = r58124 * r58114;
        float r58126 = r58125 / r58116;
        float r58127 = cos(r58126);
        float r58128 = r58119 * r58127;
        return r58128;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r58129 = x;
        double r58130 = y;
        double r58131 = 2.0;
        double r58132 = r58130 * r58131;
        double r58133 = 1.0;
        double r58134 = r58132 + r58133;
        double r58135 = z;
        double r58136 = r58134 * r58135;
        double r58137 = t;
        double r58138 = r58136 * r58137;
        double r58139 = 16.0;
        double r58140 = r58138 / r58139;
        double r58141 = cos(r58140);
        double r58142 = r58129 * r58141;
        double r58143 = a;
        double r58144 = r58143 * r58131;
        double r58145 = r58144 + r58133;
        double r58146 = b;
        double r58147 = r58145 * r58146;
        double r58148 = r58147 * r58137;
        double r58149 = r58148 / r58139;
        double r58150 = cos(r58149);
        double r58151 = r58142 * r58150;
        return r58151;
}


double f_of(float x, float y, float z, float t, float __attribute__((unused)) a, float __attribute__((unused)) b) {
        float r58152 = x;
        float r58153 = 2.0;
        float r58154 = y;
        float r58155 = r58153 * r58154;
        float r58156 = 1.0;
        float r58157 = r58155 + r58156;
        float r58158 = 16.0;
        float r58159 = t;
        float r58160 = z;
        float r58161 = r58159 * r58160;
        float r58162 = r58158 / r58161;
        float r58163 = r58157 / r58162;
        float r58164 = cbrt(r58163);
        float r58165 = r58164 * r58164;
        float r58166 = cbrt(r58157);
        float r58167 = cbrt(r58162);
        float r58168 = r58166 / r58167;
        float r58169 = r58165 * r58168;
        float r58170 = cos(r58169);
        float r58171 = r58152 * r58170;
        return r58171;
}

double f_od(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r58172 = x;
        double r58173 = 2.0;
        double r58174 = y;
        double r58175 = r58173 * r58174;
        double r58176 = 1.0;
        double r58177 = r58175 + r58176;
        double r58178 = 16.0;
        double r58179 = t;
        double r58180 = z;
        double r58181 = r58179 * r58180;
        double r58182 = r58178 / r58181;
        double r58183 = r58177 / r58182;
        double r58184 = cbrt(r58183);
        double r58185 = r58184 * r58184;
        double r58186 = cbrt(r58177);
        double r58187 = cbrt(r58182);
        double r58188 = r58186 / r58187;
        double r58189 = r58185 * r58188;
        double r58190 = cos(r58189);
        double r58191 = r58172 * r58190;
        return r58191;
}

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 r58192, r58193, r58194, r58195, r58196, r58197, r58198, r58199, r58200, r58201, r58202, r58203, r58204, r58205, r58206, r58207, r58208, r58209, r58210, r58211, r58212, r58213, r58214;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58192);
        mpfr_init(r58193);
        mpfr_init_set_str(r58194, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58195);
        mpfr_init_set_str(r58196, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58197);
        mpfr_init(r58198);
        mpfr_init(r58199);
        mpfr_init(r58200);
        mpfr_init(r58201);
        mpfr_init_set_str(r58202, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58203);
        mpfr_init(r58204);
        mpfr_init(r58205);
        mpfr_init(r58206);
        mpfr_init(r58207);
        mpfr_init(r58208);
        mpfr_init(r58209);
        mpfr_init(r58210);
        mpfr_init(r58211);
        mpfr_init(r58212);
        mpfr_init(r58213);
        mpfr_init(r58214);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r58192, x, MPFR_RNDN);
        mpfr_set_d(r58193, y, MPFR_RNDN);
        ;
        mpfr_mul(r58195, r58193, r58194, MPFR_RNDN);
        ;
        mpfr_add(r58197, r58195, r58196, MPFR_RNDN);
        mpfr_set_d(r58198, z, MPFR_RNDN);
        mpfr_mul(r58199, r58197, r58198, MPFR_RNDN);
        mpfr_set_d(r58200, t, MPFR_RNDN);
        mpfr_mul(r58201, r58199, r58200, MPFR_RNDN);
        ;
        mpfr_div(r58203, r58201, r58202, MPFR_RNDN);
        mpfr_cos(r58204, r58203, MPFR_RNDN);
        mpfr_mul(r58205, r58192, r58204, MPFR_RNDN);
        mpfr_set_d(r58206, a, MPFR_RNDN);
        mpfr_mul(r58207, r58206, r58194, MPFR_RNDN);
        mpfr_add(r58208, r58207, r58196, MPFR_RNDN);
        mpfr_set_d(r58209, b, MPFR_RNDN);
        mpfr_mul(r58210, r58208, r58209, MPFR_RNDN);
        mpfr_mul(r58211, r58210, r58200, MPFR_RNDN);
        mpfr_div(r58212, r58211, r58202, MPFR_RNDN);
        mpfr_cos(r58213, r58212, MPFR_RNDN);
        mpfr_mul(r58214, r58205, r58213, MPFR_RNDN);
        return mpfr_get_d(r58214, MPFR_RNDN);
}

static mpfr_t r58215, r58216, r58217, r58218, r58219, r58220, r58221, r58222, r58223, r58224, r58225, r58226, r58227, r58228, r58229, r58230, r58231, r58232, r58233, r58234;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58215);
        mpfr_init_set_str(r58216, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58217);
        mpfr_init(r58218);
        mpfr_init_set_str(r58219, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58220);
        mpfr_init_set_str(r58221, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58222);
        mpfr_init(r58223);
        mpfr_init(r58224);
        mpfr_init(r58225);
        mpfr_init(r58226);
        mpfr_init(r58227);
        mpfr_init(r58228);
        mpfr_init(r58229);
        mpfr_init(r58230);
        mpfr_init(r58231);
        mpfr_init(r58232);
        mpfr_init(r58233);
        mpfr_init(r58234);
}

double f_fm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r58215, x, MPFR_RNDN);
        ;
        mpfr_set_d(r58217, y, MPFR_RNDN);
        mpfr_mul(r58218, r58216, r58217, MPFR_RNDN);
        ;
        mpfr_add(r58220, r58218, r58219, MPFR_RNDN);
        ;
        mpfr_set_d(r58222, t, MPFR_RNDN);
        mpfr_set_d(r58223, z, MPFR_RNDN);
        mpfr_mul(r58224, r58222, r58223, MPFR_RNDN);
        mpfr_div(r58225, r58221, r58224, MPFR_RNDN);
        mpfr_div(r58226, r58220, r58225, MPFR_RNDN);
        mpfr_cbrt(r58227, r58226, MPFR_RNDN);
        mpfr_mul(r58228, r58227, r58227, MPFR_RNDN);
        mpfr_cbrt(r58229, r58220, MPFR_RNDN);
        mpfr_cbrt(r58230, r58225, MPFR_RNDN);
        mpfr_div(r58231, r58229, r58230, MPFR_RNDN);
        mpfr_mul(r58232, r58228, r58231, MPFR_RNDN);
        mpfr_cos(r58233, r58232, MPFR_RNDN);
        mpfr_mul(r58234, r58215, r58233, MPFR_RNDN);
        return mpfr_get_d(r58234, MPFR_RNDN);
}

static mpfr_t r58235, r58236, r58237, r58238, r58239, r58240, r58241, r58242, r58243, r58244, r58245, r58246, r58247, r58248, r58249, r58250, r58251, r58252, r58253, r58254;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r58235);
        mpfr_init_set_str(r58236, "2.0", 10, MPFR_RNDN);
        mpfr_init(r58237);
        mpfr_init(r58238);
        mpfr_init_set_str(r58239, "1.0", 10, MPFR_RNDN);
        mpfr_init(r58240);
        mpfr_init_set_str(r58241, "16.0", 10, MPFR_RNDN);
        mpfr_init(r58242);
        mpfr_init(r58243);
        mpfr_init(r58244);
        mpfr_init(r58245);
        mpfr_init(r58246);
        mpfr_init(r58247);
        mpfr_init(r58248);
        mpfr_init(r58249);
        mpfr_init(r58250);
        mpfr_init(r58251);
        mpfr_init(r58252);
        mpfr_init(r58253);
        mpfr_init(r58254);
}

double f_dm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r58235, x, MPFR_RNDN);
        ;
        mpfr_set_d(r58237, y, MPFR_RNDN);
        mpfr_mul(r58238, r58236, r58237, MPFR_RNDN);
        ;
        mpfr_add(r58240, r58238, r58239, MPFR_RNDN);
        ;
        mpfr_set_d(r58242, t, MPFR_RNDN);
        mpfr_set_d(r58243, z, MPFR_RNDN);
        mpfr_mul(r58244, r58242, r58243, MPFR_RNDN);
        mpfr_div(r58245, r58241, r58244, MPFR_RNDN);
        mpfr_div(r58246, r58240, r58245, MPFR_RNDN);
        mpfr_cbrt(r58247, r58246, MPFR_RNDN);
        mpfr_mul(r58248, r58247, r58247, MPFR_RNDN);
        mpfr_cbrt(r58249, r58240, MPFR_RNDN);
        mpfr_cbrt(r58250, r58245, MPFR_RNDN);
        mpfr_div(r58251, r58249, r58250, MPFR_RNDN);
        mpfr_mul(r58252, r58248, r58251, MPFR_RNDN);
        mpfr_cos(r58253, r58252, MPFR_RNDN);
        mpfr_mul(r58254, r58235, r58253, MPFR_RNDN);
        return mpfr_get_d(r58254, MPFR_RNDN);
}

