#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 r8925 = 2;
        float r8926 = x;
        float r8927 = r8925 * r8926;
        float r8928 = cos(r8927);
        float r8929 = cos;
        float r8930 = pow(r8929, r8925);
        float r8931 = sin;
        float r8932 = pow(r8931, r8925);
        float r8933 = r8926 * r8932;
        float r8934 = r8933 * r8926;
        float r8935 = r8930 * r8934;
        float r8936 = r8928 / r8935;
        return r8936;
}

double f_id(double x, double cos, double sin) {
        double r8937 = 2;
        double r8938 = x;
        double r8939 = r8937 * r8938;
        double r8940 = cos(r8939);
        double r8941 = cos;
        double r8942 = pow(r8941, r8937);
        double r8943 = sin;
        double r8944 = pow(r8943, r8937);
        double r8945 = r8938 * r8944;
        double r8946 = r8945 * r8938;
        double r8947 = r8942 * r8946;
        double r8948 = r8940 / r8947;
        return r8948;
}


double f_of(float x, float cos, float sin) {
        float r8949 = x;
        float r8950 = cos(r8949);
        float r8951 = r8950 * r8950;
        float r8952 = sin(r8949);
        float r8953 = r8952 * r8952;
        float r8954 = r8951 - r8953;
        float r8955 = cos;
        float r8956 = sin;
        float r8957 = r8949 * r8956;
        float r8958 = r8955 * r8957;
        float r8959 = fabs(r8958);
        float r8960 = r8959 * r8959;
        float r8961 = r8954 / r8960;
        float r8962 = 6.5631148755239296e-298;
        bool r8963 = r8961 <= r8962;
        float r8964 = 1;
        float r8965 = r8955 * r8949;
        float r8966 = r8965 * r8956;
        float r8967 = fabs(r8966);
        float r8968 = r8964 / r8967;
        float r8969 = 2;
        float r8970 = r8969 * r8949;
        float r8971 = cos(r8970);
        float r8972 = r8949 * r8955;
        float r8973 = r8956 * r8972;
        float r8974 = fabs(r8973);
        float r8975 = r8971 / r8974;
        float r8976 = r8968 * r8975;
        float r8977 = 5.115423973217656e+302;
        bool r8978 = r8961 <= r8977;
        float r8979 = cbrt(r8971);
        float r8980 = r8979 * r8979;
        float r8981 = r8955 * r8956;
        float r8982 = r8949 * r8981;
        float r8983 = fabs(r8982);
        float r8984 = r8980 / r8983;
        float r8985 = r8972 * r8956;
        float r8986 = fabs(r8985);
        float r8987 = r8979 / r8986;
        float r8988 = r8984 * r8987;
        float r8989 = r8978 ? r8961 : r8988;
        float r8990 = r8963 ? r8976 : r8989;
        return r8990;
}

double f_od(double x, double cos, double sin) {
        double r8991 = x;
        double r8992 = cos(r8991);
        double r8993 = r8992 * r8992;
        double r8994 = sin(r8991);
        double r8995 = r8994 * r8994;
        double r8996 = r8993 - r8995;
        double r8997 = cos;
        double r8998 = sin;
        double r8999 = r8991 * r8998;
        double r9000 = r8997 * r8999;
        double r9001 = fabs(r9000);
        double r9002 = r9001 * r9001;
        double r9003 = r8996 / r9002;
        double r9004 = 6.5631148755239296e-298;
        bool r9005 = r9003 <= r9004;
        double r9006 = 1;
        double r9007 = r8997 * r8991;
        double r9008 = r9007 * r8998;
        double r9009 = fabs(r9008);
        double r9010 = r9006 / r9009;
        double r9011 = 2;
        double r9012 = r9011 * r8991;
        double r9013 = cos(r9012);
        double r9014 = r8991 * r8997;
        double r9015 = r8998 * r9014;
        double r9016 = fabs(r9015);
        double r9017 = r9013 / r9016;
        double r9018 = r9010 * r9017;
        double r9019 = 5.115423973217656e+302;
        bool r9020 = r9003 <= r9019;
        double r9021 = cbrt(r9013);
        double r9022 = r9021 * r9021;
        double r9023 = r8997 * r8998;
        double r9024 = r8991 * r9023;
        double r9025 = fabs(r9024);
        double r9026 = r9022 / r9025;
        double r9027 = r9014 * r8998;
        double r9028 = fabs(r9027);
        double r9029 = r9021 / r9028;
        double r9030 = r9026 * r9029;
        double r9031 = r9020 ? r9003 : r9030;
        double r9032 = r9005 ? r9018 : 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, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9045);
        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(r9057);
        mpfr_init_set_str(r9058, "6.5631148755239296e-298", 10, MPFR_RNDN);
        mpfr_init(r9059);
        mpfr_init_set_str(r9060, "1", 10, MPFR_RNDN);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init_set_str(r9065, "2", 10, MPFR_RNDN);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init_set_str(r9073, "5.115423973217656e+302", 10, MPFR_RNDN);
        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(r9082);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
}

double f_fm(double x, double cos, double sin) {
        mpfr_set_d(r9045, x, MPFR_RNDN);
        mpfr_cos(r9046, r9045, MPFR_RNDN);
        mpfr_mul(r9047, r9046, r9046, MPFR_RNDN);
        mpfr_sin(r9048, r9045, MPFR_RNDN);
        mpfr_mul(r9049, r9048, r9048, MPFR_RNDN);
        mpfr_sub(r9050, r9047, r9049, MPFR_RNDN);
        mpfr_set_d(r9051, cos, MPFR_RNDN);
        mpfr_set_d(r9052, sin, MPFR_RNDN);
        mpfr_mul(r9053, r9045, r9052, MPFR_RNDN);
        mpfr_mul(r9054, r9051, r9053, MPFR_RNDN);
        mpfr_abs(r9055, r9054, MPFR_RNDN);
        mpfr_mul(r9056, r9055, r9055, MPFR_RNDN);
        mpfr_div(r9057, r9050, r9056, MPFR_RNDN);
        ;
        mpfr_set_si(r9059, mpfr_cmp(r9057, r9058) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9061, r9051, r9045, MPFR_RNDN);
        mpfr_mul(r9062, r9061, r9052, MPFR_RNDN);
        mpfr_abs(r9063, r9062, MPFR_RNDN);
        mpfr_div(r9064, r9060, r9063, MPFR_RNDN);
        ;
        mpfr_mul(r9066, r9065, r9045, MPFR_RNDN);
        mpfr_cos(r9067, r9066, MPFR_RNDN);
        mpfr_mul(r9068, r9045, r9051, MPFR_RNDN);
        mpfr_mul(r9069, r9052, r9068, MPFR_RNDN);
        mpfr_abs(r9070, r9069, MPFR_RNDN);
        mpfr_div(r9071, r9067, r9070, MPFR_RNDN);
        mpfr_mul(r9072, r9064, r9071, MPFR_RNDN);
        ;
        mpfr_set_si(r9074, mpfr_cmp(r9057, r9073) <= 0, MPFR_RNDN);
        mpfr_cbrt(r9075, r9067, MPFR_RNDN);
        mpfr_mul(r9076, r9075, r9075, MPFR_RNDN);
        mpfr_mul(r9077, r9051, r9052, MPFR_RNDN);
        mpfr_mul(r9078, r9045, r9077, MPFR_RNDN);
        mpfr_abs(r9079, r9078, MPFR_RNDN);
        mpfr_div(r9080, r9076, r9079, MPFR_RNDN);
        mpfr_mul(r9081, r9068, r9052, MPFR_RNDN);
        mpfr_abs(r9082, r9081, MPFR_RNDN);
        mpfr_div(r9083, r9075, r9082, MPFR_RNDN);
        mpfr_mul(r9084, r9080, r9083, MPFR_RNDN);
        if (mpfr_get_si(r9074, MPFR_RNDN)) { mpfr_set(r9085, r9057, MPFR_RNDN); } else { mpfr_set(r9085, r9084, MPFR_RNDN); };
        if (mpfr_get_si(r9059, MPFR_RNDN)) { mpfr_set(r9086, r9072, MPFR_RNDN); } else { mpfr_set(r9086, r9085, MPFR_RNDN); };
        return mpfr_get_d(r9086, MPFR_RNDN);
}

static mpfr_t r9087, r9088, r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099, r9100, r9101, r9102, r9103, r9104, r9105, r9106, r9107, r9108, r9109, r9110, r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9087);
        mpfr_init(r9088);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init(r9094);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init(r9099);
        mpfr_init_set_str(r9100, "6.5631148755239296e-298", 10, MPFR_RNDN);
        mpfr_init(r9101);
        mpfr_init_set_str(r9102, "1", 10, MPFR_RNDN);
        mpfr_init(r9103);
        mpfr_init(r9104);
        mpfr_init(r9105);
        mpfr_init(r9106);
        mpfr_init_set_str(r9107, "2", 10, MPFR_RNDN);
        mpfr_init(r9108);
        mpfr_init(r9109);
        mpfr_init(r9110);
        mpfr_init(r9111);
        mpfr_init(r9112);
        mpfr_init(r9113);
        mpfr_init(r9114);
        mpfr_init_set_str(r9115, "5.115423973217656e+302", 10, MPFR_RNDN);
        mpfr_init(r9116);
        mpfr_init(r9117);
        mpfr_init(r9118);
        mpfr_init(r9119);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init(r9122);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
}

double f_dm(double x, double cos, double sin) {
        mpfr_set_d(r9087, x, MPFR_RNDN);
        mpfr_cos(r9088, r9087, MPFR_RNDN);
        mpfr_mul(r9089, r9088, r9088, MPFR_RNDN);
        mpfr_sin(r9090, r9087, MPFR_RNDN);
        mpfr_mul(r9091, r9090, r9090, MPFR_RNDN);
        mpfr_sub(r9092, r9089, r9091, MPFR_RNDN);
        mpfr_set_d(r9093, cos, MPFR_RNDN);
        mpfr_set_d(r9094, sin, MPFR_RNDN);
        mpfr_mul(r9095, r9087, r9094, MPFR_RNDN);
        mpfr_mul(r9096, r9093, r9095, MPFR_RNDN);
        mpfr_abs(r9097, r9096, MPFR_RNDN);
        mpfr_mul(r9098, r9097, r9097, MPFR_RNDN);
        mpfr_div(r9099, r9092, r9098, MPFR_RNDN);
        ;
        mpfr_set_si(r9101, mpfr_cmp(r9099, r9100) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9103, r9093, r9087, MPFR_RNDN);
        mpfr_mul(r9104, r9103, r9094, MPFR_RNDN);
        mpfr_abs(r9105, r9104, MPFR_RNDN);
        mpfr_div(r9106, r9102, r9105, MPFR_RNDN);
        ;
        mpfr_mul(r9108, r9107, r9087, MPFR_RNDN);
        mpfr_cos(r9109, r9108, MPFR_RNDN);
        mpfr_mul(r9110, r9087, r9093, MPFR_RNDN);
        mpfr_mul(r9111, r9094, r9110, MPFR_RNDN);
        mpfr_abs(r9112, r9111, MPFR_RNDN);
        mpfr_div(r9113, r9109, r9112, MPFR_RNDN);
        mpfr_mul(r9114, r9106, r9113, MPFR_RNDN);
        ;
        mpfr_set_si(r9116, mpfr_cmp(r9099, r9115) <= 0, MPFR_RNDN);
        mpfr_cbrt(r9117, r9109, MPFR_RNDN);
        mpfr_mul(r9118, r9117, r9117, MPFR_RNDN);
        mpfr_mul(r9119, r9093, r9094, MPFR_RNDN);
        mpfr_mul(r9120, r9087, r9119, MPFR_RNDN);
        mpfr_abs(r9121, r9120, MPFR_RNDN);
        mpfr_div(r9122, r9118, r9121, MPFR_RNDN);
        mpfr_mul(r9123, r9110, r9094, MPFR_RNDN);
        mpfr_abs(r9124, r9123, MPFR_RNDN);
        mpfr_div(r9125, r9117, r9124, MPFR_RNDN);
        mpfr_mul(r9126, r9122, r9125, MPFR_RNDN);
        if (mpfr_get_si(r9116, MPFR_RNDN)) { mpfr_set(r9127, r9099, MPFR_RNDN); } else { mpfr_set(r9127, r9126, MPFR_RNDN); };
        if (mpfr_get_si(r9101, MPFR_RNDN)) { mpfr_set(r9128, r9114, MPFR_RNDN); } else { mpfr_set(r9128, r9127, MPFR_RNDN); };
        return mpfr_get_d(r9128, MPFR_RNDN);
}

