#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 r57069 = x;
        float r57070 = y;
        float r57071 = 2.0;
        float r57072 = r57070 * r57071;
        float r57073 = 1.0;
        float r57074 = r57072 + r57073;
        float r57075 = z;
        float r57076 = r57074 * r57075;
        float r57077 = t;
        float r57078 = r57076 * r57077;
        float r57079 = 16.0;
        float r57080 = r57078 / r57079;
        float r57081 = cos(r57080);
        float r57082 = r57069 * r57081;
        float r57083 = a;
        float r57084 = r57083 * r57071;
        float r57085 = r57084 + r57073;
        float r57086 = b;
        float r57087 = r57085 * r57086;
        float r57088 = r57087 * r57077;
        float r57089 = r57088 / r57079;
        float r57090 = cos(r57089);
        float r57091 = r57082 * r57090;
        return r57091;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r57092 = x;
        double r57093 = y;
        double r57094 = 2.0;
        double r57095 = r57093 * r57094;
        double r57096 = 1.0;
        double r57097 = r57095 + r57096;
        double r57098 = z;
        double r57099 = r57097 * r57098;
        double r57100 = t;
        double r57101 = r57099 * r57100;
        double r57102 = 16.0;
        double r57103 = r57101 / r57102;
        double r57104 = cos(r57103);
        double r57105 = r57092 * r57104;
        double r57106 = a;
        double r57107 = r57106 * r57094;
        double r57108 = r57107 + r57096;
        double r57109 = b;
        double r57110 = r57108 * r57109;
        double r57111 = r57110 * r57100;
        double r57112 = r57111 / r57102;
        double r57113 = cos(r57112);
        double r57114 = r57105 * r57113;
        return r57114;
}


double f_of(float x, float y, float z, float t, float __attribute__((unused)) a, float __attribute__((unused)) b) {
        float r57115 = x;
        float r57116 = 1.0;
        float r57117 = y;
        float r57118 = 2.0;
        float r57119 = r57117 * r57118;
        float r57120 = r57116 + r57119;
        float r57121 = cbrt(r57120);
        float r57122 = 16.0;
        float r57123 = t;
        float r57124 = r57122 / r57123;
        float r57125 = z;
        float r57126 = r57124 / r57125;
        float r57127 = cbrt(r57126);
        float r57128 = r57121 / r57127;
        float r57129 = r57120 / r57126;
        float r57130 = cbrt(r57129);
        float r57131 = r57130 * r57130;
        float r57132 = r57128 * r57131;
        float r57133 = cos(r57132);
        float r57134 = 3;
        float r57135 = pow(r57133, r57134);
        float r57136 = cbrt(r57135);
        float r57137 = r57115 * r57136;
        return r57137;
}

double f_od(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r57138 = x;
        double r57139 = 1.0;
        double r57140 = y;
        double r57141 = 2.0;
        double r57142 = r57140 * r57141;
        double r57143 = r57139 + r57142;
        double r57144 = cbrt(r57143);
        double r57145 = 16.0;
        double r57146 = t;
        double r57147 = r57145 / r57146;
        double r57148 = z;
        double r57149 = r57147 / r57148;
        double r57150 = cbrt(r57149);
        double r57151 = r57144 / r57150;
        double r57152 = r57143 / r57149;
        double r57153 = cbrt(r57152);
        double r57154 = r57153 * r57153;
        double r57155 = r57151 * r57154;
        double r57156 = cos(r57155);
        double r57157 = 3;
        double r57158 = pow(r57156, r57157);
        double r57159 = cbrt(r57158);
        double r57160 = r57138 * r57159;
        return r57160;
}

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 r57161, r57162, r57163, r57164, r57165, r57166, r57167, r57168, r57169, r57170, r57171, r57172, r57173, r57174, r57175, r57176, r57177, r57178, r57179, r57180, r57181, r57182, r57183;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r57161);
        mpfr_init(r57162);
        mpfr_init_set_str(r57163, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57164);
        mpfr_init_set_str(r57165, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57166);
        mpfr_init(r57167);
        mpfr_init(r57168);
        mpfr_init(r57169);
        mpfr_init(r57170);
        mpfr_init_set_str(r57171, "16.0", 10, MPFR_RNDN);
        mpfr_init(r57172);
        mpfr_init(r57173);
        mpfr_init(r57174);
        mpfr_init(r57175);
        mpfr_init(r57176);
        mpfr_init(r57177);
        mpfr_init(r57178);
        mpfr_init(r57179);
        mpfr_init(r57180);
        mpfr_init(r57181);
        mpfr_init(r57182);
        mpfr_init(r57183);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r57161, x, MPFR_RNDN);
        mpfr_set_d(r57162, y, MPFR_RNDN);
        ;
        mpfr_mul(r57164, r57162, r57163, MPFR_RNDN);
        ;
        mpfr_add(r57166, r57164, r57165, MPFR_RNDN);
        mpfr_set_d(r57167, z, MPFR_RNDN);
        mpfr_mul(r57168, r57166, r57167, MPFR_RNDN);
        mpfr_set_d(r57169, t, MPFR_RNDN);
        mpfr_mul(r57170, r57168, r57169, MPFR_RNDN);
        ;
        mpfr_div(r57172, r57170, r57171, MPFR_RNDN);
        mpfr_cos(r57173, r57172, MPFR_RNDN);
        mpfr_mul(r57174, r57161, r57173, MPFR_RNDN);
        mpfr_set_d(r57175, a, MPFR_RNDN);
        mpfr_mul(r57176, r57175, r57163, MPFR_RNDN);
        mpfr_add(r57177, r57176, r57165, MPFR_RNDN);
        mpfr_set_d(r57178, b, MPFR_RNDN);
        mpfr_mul(r57179, r57177, r57178, MPFR_RNDN);
        mpfr_mul(r57180, r57179, r57169, MPFR_RNDN);
        mpfr_div(r57181, r57180, r57171, MPFR_RNDN);
        mpfr_cos(r57182, r57181, MPFR_RNDN);
        mpfr_mul(r57183, r57174, r57182, MPFR_RNDN);
        return mpfr_get_d(r57183, MPFR_RNDN);
}

static mpfr_t r57184, r57185, r57186, r57187, r57188, r57189, r57190, r57191, r57192, r57193, r57194, r57195, r57196, r57197, r57198, r57199, r57200, r57201, r57202, r57203, r57204, r57205, r57206;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r57184);
        mpfr_init_set_str(r57185, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57186);
        mpfr_init_set_str(r57187, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57188);
        mpfr_init(r57189);
        mpfr_init(r57190);
        mpfr_init_set_str(r57191, "16.0", 10, MPFR_RNDN);
        mpfr_init(r57192);
        mpfr_init(r57193);
        mpfr_init(r57194);
        mpfr_init(r57195);
        mpfr_init(r57196);
        mpfr_init(r57197);
        mpfr_init(r57198);
        mpfr_init(r57199);
        mpfr_init(r57200);
        mpfr_init(r57201);
        mpfr_init(r57202);
        mpfr_init_set_str(r57203, "3", 10, MPFR_RNDN);
        mpfr_init(r57204);
        mpfr_init(r57205);
        mpfr_init(r57206);
}

double f_fm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r57184, x, MPFR_RNDN);
        ;
        mpfr_set_d(r57186, y, MPFR_RNDN);
        ;
        mpfr_mul(r57188, r57186, r57187, MPFR_RNDN);
        mpfr_add(r57189, r57185, r57188, MPFR_RNDN);
        mpfr_cbrt(r57190, r57189, MPFR_RNDN);
        ;
        mpfr_set_d(r57192, t, MPFR_RNDN);
        mpfr_div(r57193, r57191, r57192, MPFR_RNDN);
        mpfr_set_d(r57194, z, MPFR_RNDN);
        mpfr_div(r57195, r57193, r57194, MPFR_RNDN);
        mpfr_cbrt(r57196, r57195, MPFR_RNDN);
        mpfr_div(r57197, r57190, r57196, MPFR_RNDN);
        mpfr_div(r57198, r57189, r57195, MPFR_RNDN);
        mpfr_cbrt(r57199, r57198, MPFR_RNDN);
        mpfr_mul(r57200, r57199, r57199, MPFR_RNDN);
        mpfr_mul(r57201, r57197, r57200, MPFR_RNDN);
        mpfr_cos(r57202, r57201, MPFR_RNDN);
        ;
        mpfr_pow(r57204, r57202, r57203, MPFR_RNDN);
        mpfr_cbrt(r57205, r57204, MPFR_RNDN);
        mpfr_mul(r57206, r57184, r57205, MPFR_RNDN);
        return mpfr_get_d(r57206, MPFR_RNDN);
}

static mpfr_t r57207, r57208, r57209, r57210, r57211, r57212, r57213, r57214, r57215, r57216, r57217, r57218, r57219, r57220, r57221, r57222, r57223, r57224, r57225, r57226, r57227, r57228, r57229;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r57207);
        mpfr_init_set_str(r57208, "1.0", 10, MPFR_RNDN);
        mpfr_init(r57209);
        mpfr_init_set_str(r57210, "2.0", 10, MPFR_RNDN);
        mpfr_init(r57211);
        mpfr_init(r57212);
        mpfr_init(r57213);
        mpfr_init_set_str(r57214, "16.0", 10, MPFR_RNDN);
        mpfr_init(r57215);
        mpfr_init(r57216);
        mpfr_init(r57217);
        mpfr_init(r57218);
        mpfr_init(r57219);
        mpfr_init(r57220);
        mpfr_init(r57221);
        mpfr_init(r57222);
        mpfr_init(r57223);
        mpfr_init(r57224);
        mpfr_init(r57225);
        mpfr_init_set_str(r57226, "3", 10, MPFR_RNDN);
        mpfr_init(r57227);
        mpfr_init(r57228);
        mpfr_init(r57229);
}

double f_dm(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        mpfr_set_d(r57207, x, MPFR_RNDN);
        ;
        mpfr_set_d(r57209, y, MPFR_RNDN);
        ;
        mpfr_mul(r57211, r57209, r57210, MPFR_RNDN);
        mpfr_add(r57212, r57208, r57211, MPFR_RNDN);
        mpfr_cbrt(r57213, r57212, MPFR_RNDN);
        ;
        mpfr_set_d(r57215, t, MPFR_RNDN);
        mpfr_div(r57216, r57214, r57215, MPFR_RNDN);
        mpfr_set_d(r57217, z, MPFR_RNDN);
        mpfr_div(r57218, r57216, r57217, MPFR_RNDN);
        mpfr_cbrt(r57219, r57218, MPFR_RNDN);
        mpfr_div(r57220, r57213, r57219, MPFR_RNDN);
        mpfr_div(r57221, r57212, r57218, MPFR_RNDN);
        mpfr_cbrt(r57222, r57221, MPFR_RNDN);
        mpfr_mul(r57223, r57222, r57222, MPFR_RNDN);
        mpfr_mul(r57224, r57220, r57223, MPFR_RNDN);
        mpfr_cos(r57225, r57224, MPFR_RNDN);
        ;
        mpfr_pow(r57227, r57225, r57226, MPFR_RNDN);
        mpfr_cbrt(r57228, r57227, MPFR_RNDN);
        mpfr_mul(r57229, r57207, r57228, MPFR_RNDN);
        return mpfr_get_d(r57229, MPFR_RNDN);
}

