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

char *name = "cos(2*x)/(cos^2(x)*sin^2(x))";

double f_if(float x, float cos, float sin) {
        float r22251 = 2;
        float r22252 = x;
        float r22253 = r22251 * r22252;
        float r22254 = cos(r22253);
        float r22255 = cos;
        float r22256 = pow(r22255, r22251);
        float r22257 = sin;
        float r22258 = pow(r22257, r22251);
        float r22259 = r22252 * r22258;
        float r22260 = r22259 * r22252;
        float r22261 = r22256 * r22260;
        float r22262 = r22254 / r22261;
        return r22262;
}

double f_id(double x, double cos, double sin) {
        double r22263 = 2;
        double r22264 = x;
        double r22265 = r22263 * r22264;
        double r22266 = cos(r22265);
        double r22267 = cos;
        double r22268 = pow(r22267, r22263);
        double r22269 = sin;
        double r22270 = pow(r22269, r22263);
        double r22271 = r22264 * r22270;
        double r22272 = r22271 * r22264;
        double r22273 = r22268 * r22272;
        double r22274 = r22266 / r22273;
        return r22274;
}


double f_of(float x, float cos, float sin) {
        float r22275 = 2;
        float r22276 = x;
        float r22277 = r22275 * r22276;
        float r22278 = cos(r22277);
        float r22279 = cos;
        float r22280 = r22276 * r22279;
        float r22281 = sin;
        float r22282 = r22280 * r22281;
        float r22283 = fabs(r22282);
        float r22284 = r22279 * r22281;
        float r22285 = r22276 * r22284;
        float r22286 = fabs(r22285);
        float r22287 = r22283 * r22286;
        float r22288 = r22278 / r22287;
        float r22289 = 2.050901824264872e-261;
        bool r22290 = r22288 <= r22289;
        float r22291 = cos(r22276);
        float r22292 = r22291 * r22291;
        float r22293 = r22276 * r22281;
        float r22294 = r22279 * r22293;
        float r22295 = fabs(r22294);
        float r22296 = pow(r22295, r22275);
        float r22297 = r22292 / r22296;
        float r22298 = sin(r22276);
        float r22299 = r22298 * r22298;
        float r22300 = r22299 / r22296;
        float r22301 = r22297 - r22300;
        float r22302 = 1.649318375652456e+295;
        bool r22303 = r22288 <= r22302;
        float r22304 = r22303 ? r22288 : r22301;
        float r22305 = r22290 ? r22301 : r22304;
        return r22305;
}

double f_od(double x, double cos, double sin) {
        double r22306 = 2;
        double r22307 = x;
        double r22308 = r22306 * r22307;
        double r22309 = cos(r22308);
        double r22310 = cos;
        double r22311 = r22307 * r22310;
        double r22312 = sin;
        double r22313 = r22311 * r22312;
        double r22314 = fabs(r22313);
        double r22315 = r22310 * r22312;
        double r22316 = r22307 * r22315;
        double r22317 = fabs(r22316);
        double r22318 = r22314 * r22317;
        double r22319 = r22309 / r22318;
        double r22320 = 2.050901824264872e-261;
        bool r22321 = r22319 <= r22320;
        double r22322 = cos(r22307);
        double r22323 = r22322 * r22322;
        double r22324 = r22307 * r22312;
        double r22325 = r22310 * r22324;
        double r22326 = fabs(r22325);
        double r22327 = pow(r22326, r22306);
        double r22328 = r22323 / r22327;
        double r22329 = sin(r22307);
        double r22330 = r22329 * r22329;
        double r22331 = r22330 / r22327;
        double r22332 = r22328 - r22331;
        double r22333 = 1.649318375652456e+295;
        bool r22334 = r22319 <= r22333;
        double r22335 = r22334 ? r22319 : r22332;
        double r22336 = r22321 ? r22332 : r22335;
        return r22336;
}

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 r22337, r22338, r22339, r22340, r22341, r22342, r22343, r22344, r22345, r22346, r22347, r22348;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r22337, "2", 10, MPFR_RNDN);
        mpfr_init(r22338);
        mpfr_init(r22339);
        mpfr_init(r22340);
        mpfr_init(r22341);
        mpfr_init(r22342);
        mpfr_init(r22343);
        mpfr_init(r22344);
        mpfr_init(r22345);
        mpfr_init(r22346);
        mpfr_init(r22347);
        mpfr_init(r22348);
}

double f_im(double x, double cos, double sin) {
        ;
        mpfr_set_d(r22338, x, MPFR_RNDN);
        mpfr_mul(r22339, r22337, r22338, MPFR_RNDN);
        mpfr_cos(r22340, r22339, MPFR_RNDN);
        mpfr_set_d(r22341, cos, MPFR_RNDN);
        mpfr_pow(r22342, r22341, r22337, MPFR_RNDN);
        mpfr_set_d(r22343, sin, MPFR_RNDN);
        mpfr_pow(r22344, r22343, r22337, MPFR_RNDN);
        mpfr_mul(r22345, r22338, r22344, MPFR_RNDN);
        mpfr_mul(r22346, r22345, r22338, MPFR_RNDN);
        mpfr_mul(r22347, r22342, r22346, MPFR_RNDN);
        mpfr_div(r22348, r22340, r22347, MPFR_RNDN);
        return mpfr_get_d(r22348, MPFR_RNDN);
}

static mpfr_t r22349, r22350, r22351, r22352, r22353, r22354, r22355, r22356, r22357, r22358, r22359, r22360, r22361, r22362, r22363, r22364, r22365, r22366, r22367, r22368, r22369, r22370, r22371, r22372, r22373, r22374, r22375, r22376, r22377, r22378, r22379;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r22349, "2", 10, MPFR_RNDN);
        mpfr_init(r22350);
        mpfr_init(r22351);
        mpfr_init(r22352);
        mpfr_init(r22353);
        mpfr_init(r22354);
        mpfr_init(r22355);
        mpfr_init(r22356);
        mpfr_init(r22357);
        mpfr_init(r22358);
        mpfr_init(r22359);
        mpfr_init(r22360);
        mpfr_init(r22361);
        mpfr_init(r22362);
        mpfr_init_set_str(r22363, "2.050901824264872e-261", 10, MPFR_RNDN);
        mpfr_init(r22364);
        mpfr_init(r22365);
        mpfr_init(r22366);
        mpfr_init(r22367);
        mpfr_init(r22368);
        mpfr_init(r22369);
        mpfr_init(r22370);
        mpfr_init(r22371);
        mpfr_init(r22372);
        mpfr_init(r22373);
        mpfr_init(r22374);
        mpfr_init(r22375);
        mpfr_init_set_str(r22376, "1.649318375652456e+295", 10, MPFR_RNDN);
        mpfr_init(r22377);
        mpfr_init(r22378);
        mpfr_init(r22379);
}

double f_fm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r22350, x, MPFR_RNDN);
        mpfr_mul(r22351, r22349, r22350, MPFR_RNDN);
        mpfr_cos(r22352, r22351, MPFR_RNDN);
        mpfr_set_d(r22353, cos, MPFR_RNDN);
        mpfr_mul(r22354, r22350, r22353, MPFR_RNDN);
        mpfr_set_d(r22355, sin, MPFR_RNDN);
        mpfr_mul(r22356, r22354, r22355, MPFR_RNDN);
        mpfr_abs(r22357, r22356, MPFR_RNDN);
        mpfr_mul(r22358, r22353, r22355, MPFR_RNDN);
        mpfr_mul(r22359, r22350, r22358, MPFR_RNDN);
        mpfr_abs(r22360, r22359, MPFR_RNDN);
        mpfr_mul(r22361, r22357, r22360, MPFR_RNDN);
        mpfr_div(r22362, r22352, r22361, MPFR_RNDN);
        ;
        mpfr_set_si(r22364, mpfr_cmp(r22362, r22363) <= 0, MPFR_RNDN);
        mpfr_cos(r22365, r22350, MPFR_RNDN);
        mpfr_mul(r22366, r22365, r22365, MPFR_RNDN);
        mpfr_mul(r22367, r22350, r22355, MPFR_RNDN);
        mpfr_mul(r22368, r22353, r22367, MPFR_RNDN);
        mpfr_abs(r22369, r22368, MPFR_RNDN);
        mpfr_pow(r22370, r22369, r22349, MPFR_RNDN);
        mpfr_div(r22371, r22366, r22370, MPFR_RNDN);
        mpfr_sin(r22372, r22350, MPFR_RNDN);
        mpfr_mul(r22373, r22372, r22372, MPFR_RNDN);
        mpfr_div(r22374, r22373, r22370, MPFR_RNDN);
        mpfr_sub(r22375, r22371, r22374, MPFR_RNDN);
        ;
        mpfr_set_si(r22377, mpfr_cmp(r22362, r22376) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r22377, MPFR_RNDN)) { mpfr_set(r22378, r22362, MPFR_RNDN); } else { mpfr_set(r22378, r22375, MPFR_RNDN); };
        if (mpfr_get_si(r22364, MPFR_RNDN)) { mpfr_set(r22379, r22375, MPFR_RNDN); } else { mpfr_set(r22379, r22378, MPFR_RNDN); };
        return mpfr_get_d(r22379, MPFR_RNDN);
}

static mpfr_t r22380, r22381, r22382, r22383, r22384, r22385, r22386, r22387, r22388, r22389, r22390, r22391, r22392, r22393, r22394, r22395, r22396, r22397, r22398, r22399, r22400, r22401, r22402, r22403, r22404, r22405, r22406, r22407, r22408, r22409, r22410;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r22380, "2", 10, MPFR_RNDN);
        mpfr_init(r22381);
        mpfr_init(r22382);
        mpfr_init(r22383);
        mpfr_init(r22384);
        mpfr_init(r22385);
        mpfr_init(r22386);
        mpfr_init(r22387);
        mpfr_init(r22388);
        mpfr_init(r22389);
        mpfr_init(r22390);
        mpfr_init(r22391);
        mpfr_init(r22392);
        mpfr_init(r22393);
        mpfr_init_set_str(r22394, "2.050901824264872e-261", 10, MPFR_RNDN);
        mpfr_init(r22395);
        mpfr_init(r22396);
        mpfr_init(r22397);
        mpfr_init(r22398);
        mpfr_init(r22399);
        mpfr_init(r22400);
        mpfr_init(r22401);
        mpfr_init(r22402);
        mpfr_init(r22403);
        mpfr_init(r22404);
        mpfr_init(r22405);
        mpfr_init(r22406);
        mpfr_init_set_str(r22407, "1.649318375652456e+295", 10, MPFR_RNDN);
        mpfr_init(r22408);
        mpfr_init(r22409);
        mpfr_init(r22410);
}

double f_dm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r22381, x, MPFR_RNDN);
        mpfr_mul(r22382, r22380, r22381, MPFR_RNDN);
        mpfr_cos(r22383, r22382, MPFR_RNDN);
        mpfr_set_d(r22384, cos, MPFR_RNDN);
        mpfr_mul(r22385, r22381, r22384, MPFR_RNDN);
        mpfr_set_d(r22386, sin, MPFR_RNDN);
        mpfr_mul(r22387, r22385, r22386, MPFR_RNDN);
        mpfr_abs(r22388, r22387, MPFR_RNDN);
        mpfr_mul(r22389, r22384, r22386, MPFR_RNDN);
        mpfr_mul(r22390, r22381, r22389, MPFR_RNDN);
        mpfr_abs(r22391, r22390, MPFR_RNDN);
        mpfr_mul(r22392, r22388, r22391, MPFR_RNDN);
        mpfr_div(r22393, r22383, r22392, MPFR_RNDN);
        ;
        mpfr_set_si(r22395, mpfr_cmp(r22393, r22394) <= 0, MPFR_RNDN);
        mpfr_cos(r22396, r22381, MPFR_RNDN);
        mpfr_mul(r22397, r22396, r22396, MPFR_RNDN);
        mpfr_mul(r22398, r22381, r22386, MPFR_RNDN);
        mpfr_mul(r22399, r22384, r22398, MPFR_RNDN);
        mpfr_abs(r22400, r22399, MPFR_RNDN);
        mpfr_pow(r22401, r22400, r22380, MPFR_RNDN);
        mpfr_div(r22402, r22397, r22401, MPFR_RNDN);
        mpfr_sin(r22403, r22381, MPFR_RNDN);
        mpfr_mul(r22404, r22403, r22403, MPFR_RNDN);
        mpfr_div(r22405, r22404, r22401, MPFR_RNDN);
        mpfr_sub(r22406, r22402, r22405, MPFR_RNDN);
        ;
        mpfr_set_si(r22408, mpfr_cmp(r22393, r22407) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r22408, MPFR_RNDN)) { mpfr_set(r22409, r22393, MPFR_RNDN); } else { mpfr_set(r22409, r22406, MPFR_RNDN); };
        if (mpfr_get_si(r22395, MPFR_RNDN)) { mpfr_set(r22410, r22406, MPFR_RNDN); } else { mpfr_set(r22410, r22409, MPFR_RNDN); };
        return mpfr_get_d(r22410, MPFR_RNDN);
}

