#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 r8959 = 2;
        float r8960 = x;
        float r8961 = r8959 * r8960;
        float r8962 = cos(r8961);
        float r8963 = cos;
        float r8964 = pow(r8963, r8959);
        float r8965 = sin;
        float r8966 = pow(r8965, r8959);
        float r8967 = r8960 * r8966;
        float r8968 = r8967 * r8960;
        float r8969 = r8964 * r8968;
        float r8970 = r8962 / r8969;
        return r8970;
}

double f_id(double x, double cos, double sin) {
        double r8971 = 2;
        double r8972 = x;
        double r8973 = r8971 * r8972;
        double r8974 = cos(r8973);
        double r8975 = cos;
        double r8976 = pow(r8975, r8971);
        double r8977 = sin;
        double r8978 = pow(r8977, r8971);
        double r8979 = r8972 * r8978;
        double r8980 = r8979 * r8972;
        double r8981 = r8976 * r8980;
        double r8982 = r8974 / r8981;
        return r8982;
}


double f_of(float x, float cos, float sin) {
        float r8983 = 2;
        float r8984 = x;
        float r8985 = r8983 * r8984;
        float r8986 = cos(r8985);
        float r8987 = cos;
        float r8988 = r8984 * r8987;
        float r8989 = sin;
        float r8990 = r8988 * r8989;
        float r8991 = fabs(r8990);
        float r8992 = fabs(r8991);
        float r8993 = r8992 * r8992;
        float r8994 = r8986 / r8993;
        float r8995 = 1.1362336645399856e-307;
        bool r8996 = r8994 <= r8995;
        float r8997 = 1;
        float r8998 = r8989 * r8987;
        float r8999 = r8984 * r8998;
        float r9000 = fabs(r8999);
        float r9001 = r8997 / r9000;
        float r9002 = r8986 / r9000;
        float r9003 = r9001 * r9002;
        float r9004 = 1.4368137793234593e+273;
        bool r9005 = r8994 <= r9004;
        float r9006 = r9005 ? r8994 : r9003;
        float r9007 = r8996 ? r9003 : r9006;
        return r9007;
}

double f_od(double x, double cos, double sin) {
        double r9008 = 2;
        double r9009 = x;
        double r9010 = r9008 * r9009;
        double r9011 = cos(r9010);
        double r9012 = cos;
        double r9013 = r9009 * r9012;
        double r9014 = sin;
        double r9015 = r9013 * r9014;
        double r9016 = fabs(r9015);
        double r9017 = fabs(r9016);
        double r9018 = r9017 * r9017;
        double r9019 = r9011 / r9018;
        double r9020 = 1.1362336645399856e-307;
        bool r9021 = r9019 <= r9020;
        double r9022 = 1;
        double r9023 = r9014 * r9012;
        double r9024 = r9009 * r9023;
        double r9025 = fabs(r9024);
        double r9026 = r9022 / r9025;
        double r9027 = r9011 / r9025;
        double r9028 = r9026 * r9027;
        double r9029 = 1.4368137793234593e+273;
        bool r9030 = r9019 <= r9029;
        double r9031 = r9030 ? r9019 : r9028;
        double r9032 = r9021 ? r9028 : r9031;
        return r9032;
}

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 r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9033, "2", 10, MPFR_RNDN);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
}

double f_im(double x, double cos, double sin) {
        ;
        mpfr_set_d(r9034, x, MPFR_RNDN);
        mpfr_mul(r9035, r9033, r9034, MPFR_RNDN);
        mpfr_cos(r9036, r9035, MPFR_RNDN);
        mpfr_set_d(r9037, cos, MPFR_RNDN);
        mpfr_pow(r9038, r9037, r9033, MPFR_RNDN);
        mpfr_set_d(r9039, sin, MPFR_RNDN);
        mpfr_pow(r9040, r9039, r9033, MPFR_RNDN);
        mpfr_mul(r9041, r9034, r9040, MPFR_RNDN);
        mpfr_mul(r9042, r9041, r9034, MPFR_RNDN);
        mpfr_mul(r9043, r9038, r9042, MPFR_RNDN);
        mpfr_div(r9044, r9036, r9043, MPFR_RNDN);
        return mpfr_get_d(r9044, MPFR_RNDN);
}

static mpfr_t r9045, r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9045, "2", 10, MPFR_RNDN);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init(r9050);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init_set_str(r9057, "1.1362336645399856e-307", 10, MPFR_RNDN);
        mpfr_init(r9058);
        mpfr_init_set_str(r9059, "1", 10, MPFR_RNDN);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init_set_str(r9066, "1.4368137793234593e+273", 10, MPFR_RNDN);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
}

double f_fm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r9046, x, MPFR_RNDN);
        mpfr_mul(r9047, r9045, r9046, MPFR_RNDN);
        mpfr_cos(r9048, r9047, MPFR_RNDN);
        mpfr_set_d(r9049, cos, MPFR_RNDN);
        mpfr_mul(r9050, r9046, r9049, MPFR_RNDN);
        mpfr_set_d(r9051, sin, MPFR_RNDN);
        mpfr_mul(r9052, r9050, r9051, MPFR_RNDN);
        mpfr_abs(r9053, r9052, MPFR_RNDN);
        mpfr_abs(r9054, r9053, MPFR_RNDN);
        mpfr_mul(r9055, r9054, r9054, MPFR_RNDN);
        mpfr_div(r9056, r9048, r9055, MPFR_RNDN);
        ;
        mpfr_set_si(r9058, mpfr_cmp(r9056, r9057) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9060, r9051, r9049, MPFR_RNDN);
        mpfr_mul(r9061, r9046, r9060, MPFR_RNDN);
        mpfr_abs(r9062, r9061, MPFR_RNDN);
        mpfr_div(r9063, r9059, r9062, MPFR_RNDN);
        mpfr_div(r9064, r9048, r9062, MPFR_RNDN);
        mpfr_mul(r9065, r9063, r9064, MPFR_RNDN);
        ;
        mpfr_set_si(r9067, mpfr_cmp(r9056, r9066) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r9067, MPFR_RNDN)) { mpfr_set(r9068, r9056, MPFR_RNDN); } else { mpfr_set(r9068, r9065, MPFR_RNDN); };
        if (mpfr_get_si(r9058, MPFR_RNDN)) { mpfr_set(r9069, r9065, MPFR_RNDN); } else { mpfr_set(r9069, r9068, MPFR_RNDN); };
        return mpfr_get_d(r9069, MPFR_RNDN);
}

static mpfr_t r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086, r9087, r9088, r9089, r9090, r9091, r9092, r9093, r9094;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9070, "2", 10, MPFR_RNDN);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
        mpfr_init(r9077);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init(r9081);
        mpfr_init_set_str(r9082, "1.1362336645399856e-307", 10, MPFR_RNDN);
        mpfr_init(r9083);
        mpfr_init_set_str(r9084, "1", 10, MPFR_RNDN);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init(r9088);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init_set_str(r9091, "1.4368137793234593e+273", 10, MPFR_RNDN);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init(r9094);
}

double f_dm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r9071, x, MPFR_RNDN);
        mpfr_mul(r9072, r9070, r9071, MPFR_RNDN);
        mpfr_cos(r9073, r9072, MPFR_RNDN);
        mpfr_set_d(r9074, cos, MPFR_RNDN);
        mpfr_mul(r9075, r9071, r9074, MPFR_RNDN);
        mpfr_set_d(r9076, sin, MPFR_RNDN);
        mpfr_mul(r9077, r9075, r9076, MPFR_RNDN);
        mpfr_abs(r9078, r9077, MPFR_RNDN);
        mpfr_abs(r9079, r9078, MPFR_RNDN);
        mpfr_mul(r9080, r9079, r9079, MPFR_RNDN);
        mpfr_div(r9081, r9073, r9080, MPFR_RNDN);
        ;
        mpfr_set_si(r9083, mpfr_cmp(r9081, r9082) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9085, r9076, r9074, MPFR_RNDN);
        mpfr_mul(r9086, r9071, r9085, MPFR_RNDN);
        mpfr_abs(r9087, r9086, MPFR_RNDN);
        mpfr_div(r9088, r9084, r9087, MPFR_RNDN);
        mpfr_div(r9089, r9073, r9087, MPFR_RNDN);
        mpfr_mul(r9090, r9088, r9089, MPFR_RNDN);
        ;
        mpfr_set_si(r9092, mpfr_cmp(r9081, r9091) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r9092, MPFR_RNDN)) { mpfr_set(r9093, r9081, MPFR_RNDN); } else { mpfr_set(r9093, r9090, MPFR_RNDN); };
        if (mpfr_get_si(r9083, MPFR_RNDN)) { mpfr_set(r9094, r9090, MPFR_RNDN); } else { mpfr_set(r9094, r9093, MPFR_RNDN); };
        return mpfr_get_d(r9094, MPFR_RNDN);
}

