#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 r8749 = 2;
        float r8750 = x;
        float r8751 = r8749 * r8750;
        float r8752 = cos(r8751);
        float r8753 = cos;
        float r8754 = pow(r8753, r8749);
        float r8755 = sin;
        float r8756 = pow(r8755, r8749);
        float r8757 = r8750 * r8756;
        float r8758 = r8757 * r8750;
        float r8759 = r8754 * r8758;
        float r8760 = r8752 / r8759;
        return r8760;
}

double f_id(double x, double cos, double sin) {
        double r8761 = 2;
        double r8762 = x;
        double r8763 = r8761 * r8762;
        double r8764 = cos(r8763);
        double r8765 = cos;
        double r8766 = pow(r8765, r8761);
        double r8767 = sin;
        double r8768 = pow(r8767, r8761);
        double r8769 = r8762 * r8768;
        double r8770 = r8769 * r8762;
        double r8771 = r8766 * r8770;
        double r8772 = r8764 / r8771;
        return r8772;
}


double f_of(float x, float cos, float sin) {
        float r8773 = 2;
        float r8774 = x;
        float r8775 = r8773 * r8774;
        float r8776 = cos(r8775);
        float r8777 = cos;
        float r8778 = r8774 * r8777;
        float r8779 = sin;
        float r8780 = r8779 * r8779;
        float r8781 = r8778 * r8780;
        float r8782 = r8781 * r8778;
        float r8783 = 3;
        float r8784 = pow(r8782, r8783);
        float r8785 = cbrt(r8784);
        float r8786 = r8776 / r8785;
        float r8787 = 4.894433632576957e-86;
        bool r8788 = r8786 <= r8787;
        float r8789 = 1;
        float r8790 = r8777 * r8774;
        float r8791 = r8790 * r8779;
        float r8792 = fabs(r8791);
        float r8793 = r8789 / r8792;
        float r8794 = r8779 * r8778;
        float r8795 = fabs(r8794);
        float r8796 = r8776 / r8795;
        float r8797 = r8793 * r8796;
        float r8798 = r8777 * r8779;
        float r8799 = r8774 * r8798;
        float r8800 = fabs(r8799);
        float r8801 = pow(r8800, r8773);
        float r8802 = r8776 / r8801;
        float r8803 = r8788 ? r8797 : r8802;
        return r8803;
}

double f_od(double x, double cos, double sin) {
        double r8804 = 2;
        double r8805 = x;
        double r8806 = r8804 * r8805;
        double r8807 = cos(r8806);
        double r8808 = cos;
        double r8809 = r8805 * r8808;
        double r8810 = sin;
        double r8811 = r8810 * r8810;
        double r8812 = r8809 * r8811;
        double r8813 = r8812 * r8809;
        double r8814 = 3;
        double r8815 = pow(r8813, r8814);
        double r8816 = cbrt(r8815);
        double r8817 = r8807 / r8816;
        double r8818 = 4.894433632576957e-86;
        bool r8819 = r8817 <= r8818;
        double r8820 = 1;
        double r8821 = r8808 * r8805;
        double r8822 = r8821 * r8810;
        double r8823 = fabs(r8822);
        double r8824 = r8820 / r8823;
        double r8825 = r8810 * r8809;
        double r8826 = fabs(r8825);
        double r8827 = r8807 / r8826;
        double r8828 = r8824 * r8827;
        double r8829 = r8808 * r8810;
        double r8830 = r8805 * r8829;
        double r8831 = fabs(r8830);
        double r8832 = pow(r8831, r8804);
        double r8833 = r8807 / r8832;
        double r8834 = r8819 ? r8828 : r8833;
        return r8834;
}

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 r8835, r8836, r8837, r8838, r8839, r8840, r8841, r8842, r8843, r8844, r8845, r8846;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8835, "2", 10, MPFR_RNDN);
        mpfr_init(r8836);
        mpfr_init(r8837);
        mpfr_init(r8838);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init(r8841);
        mpfr_init(r8842);
        mpfr_init(r8843);
        mpfr_init(r8844);
        mpfr_init(r8845);
        mpfr_init(r8846);
}

double f_im(double x, double cos, double sin) {
        ;
        mpfr_set_d(r8836, x, MPFR_RNDN);
        mpfr_mul(r8837, r8835, r8836, MPFR_RNDN);
        mpfr_cos(r8838, r8837, MPFR_RNDN);
        mpfr_set_d(r8839, cos, MPFR_RNDN);
        mpfr_pow(r8840, r8839, r8835, MPFR_RNDN);
        mpfr_set_d(r8841, sin, MPFR_RNDN);
        mpfr_pow(r8842, r8841, r8835, MPFR_RNDN);
        mpfr_mul(r8843, r8836, r8842, MPFR_RNDN);
        mpfr_mul(r8844, r8843, r8836, MPFR_RNDN);
        mpfr_mul(r8845, r8840, r8844, MPFR_RNDN);
        mpfr_div(r8846, r8838, r8845, MPFR_RNDN);
        return mpfr_get_d(r8846, MPFR_RNDN);
}

static mpfr_t r8847, r8848, r8849, r8850, r8851, r8852, r8853, r8854, r8855, r8856, r8857, r8858, r8859, r8860, r8861, r8862, r8863, r8864, r8865, r8866, r8867, r8868, r8869, r8870, r8871, r8872, r8873, r8874, r8875, r8876, r8877;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8847, "2", 10, MPFR_RNDN);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init(r8850);
        mpfr_init(r8851);
        mpfr_init(r8852);
        mpfr_init(r8853);
        mpfr_init(r8854);
        mpfr_init(r8855);
        mpfr_init(r8856);
        mpfr_init_set_str(r8857, "3", 10, MPFR_RNDN);
        mpfr_init(r8858);
        mpfr_init(r8859);
        mpfr_init(r8860);
        mpfr_init_set_str(r8861, "4.894433632576957e-86", 10, MPFR_RNDN);
        mpfr_init(r8862);
        mpfr_init_set_str(r8863, "1", 10, MPFR_RNDN);
        mpfr_init(r8864);
        mpfr_init(r8865);
        mpfr_init(r8866);
        mpfr_init(r8867);
        mpfr_init(r8868);
        mpfr_init(r8869);
        mpfr_init(r8870);
        mpfr_init(r8871);
        mpfr_init(r8872);
        mpfr_init(r8873);
        mpfr_init(r8874);
        mpfr_init(r8875);
        mpfr_init(r8876);
        mpfr_init(r8877);
}

double f_fm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r8848, x, MPFR_RNDN);
        mpfr_mul(r8849, r8847, r8848, MPFR_RNDN);
        mpfr_cos(r8850, r8849, MPFR_RNDN);
        mpfr_set_d(r8851, cos, MPFR_RNDN);
        mpfr_mul(r8852, r8848, r8851, MPFR_RNDN);
        mpfr_set_d(r8853, sin, MPFR_RNDN);
        mpfr_mul(r8854, r8853, r8853, MPFR_RNDN);
        mpfr_mul(r8855, r8852, r8854, MPFR_RNDN);
        mpfr_mul(r8856, r8855, r8852, MPFR_RNDN);
        ;
        mpfr_pow(r8858, r8856, r8857, MPFR_RNDN);
        mpfr_cbrt(r8859, r8858, MPFR_RNDN);
        mpfr_div(r8860, r8850, r8859, MPFR_RNDN);
        ;
        mpfr_set_si(r8862, mpfr_cmp(r8860, r8861) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8864, r8851, r8848, MPFR_RNDN);
        mpfr_mul(r8865, r8864, r8853, MPFR_RNDN);
        mpfr_abs(r8866, r8865, MPFR_RNDN);
        mpfr_div(r8867, r8863, r8866, MPFR_RNDN);
        mpfr_mul(r8868, r8853, r8852, MPFR_RNDN);
        mpfr_abs(r8869, r8868, MPFR_RNDN);
        mpfr_div(r8870, r8850, r8869, MPFR_RNDN);
        mpfr_mul(r8871, r8867, r8870, MPFR_RNDN);
        mpfr_mul(r8872, r8851, r8853, MPFR_RNDN);
        mpfr_mul(r8873, r8848, r8872, MPFR_RNDN);
        mpfr_abs(r8874, r8873, MPFR_RNDN);
        mpfr_pow(r8875, r8874, r8847, MPFR_RNDN);
        mpfr_div(r8876, r8850, r8875, MPFR_RNDN);
        if (mpfr_get_si(r8862, MPFR_RNDN)) { mpfr_set(r8877, r8871, MPFR_RNDN); } else { mpfr_set(r8877, r8876, MPFR_RNDN); };
        return mpfr_get_d(r8877, MPFR_RNDN);
}

static mpfr_t r8878, r8879, r8880, r8881, r8882, r8883, r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8878, "2", 10, MPFR_RNDN);
        mpfr_init(r8879);
        mpfr_init(r8880);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
        mpfr_init(r8884);
        mpfr_init(r8885);
        mpfr_init(r8886);
        mpfr_init(r8887);
        mpfr_init_set_str(r8888, "3", 10, MPFR_RNDN);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init(r8891);
        mpfr_init_set_str(r8892, "4.894433632576957e-86", 10, MPFR_RNDN);
        mpfr_init(r8893);
        mpfr_init_set_str(r8894, "1", 10, MPFR_RNDN);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
        mpfr_init(r8898);
        mpfr_init(r8899);
        mpfr_init(r8900);
        mpfr_init(r8901);
        mpfr_init(r8902);
        mpfr_init(r8903);
        mpfr_init(r8904);
        mpfr_init(r8905);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
}

double f_dm(double x, double cos, double sin) {
        ;
        mpfr_set_d(r8879, x, MPFR_RNDN);
        mpfr_mul(r8880, r8878, r8879, MPFR_RNDN);
        mpfr_cos(r8881, r8880, MPFR_RNDN);
        mpfr_set_d(r8882, cos, MPFR_RNDN);
        mpfr_mul(r8883, r8879, r8882, MPFR_RNDN);
        mpfr_set_d(r8884, sin, MPFR_RNDN);
        mpfr_mul(r8885, r8884, r8884, MPFR_RNDN);
        mpfr_mul(r8886, r8883, r8885, MPFR_RNDN);
        mpfr_mul(r8887, r8886, r8883, MPFR_RNDN);
        ;
        mpfr_pow(r8889, r8887, r8888, MPFR_RNDN);
        mpfr_cbrt(r8890, r8889, MPFR_RNDN);
        mpfr_div(r8891, r8881, r8890, MPFR_RNDN);
        ;
        mpfr_set_si(r8893, mpfr_cmp(r8891, r8892) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8895, r8882, r8879, MPFR_RNDN);
        mpfr_mul(r8896, r8895, r8884, MPFR_RNDN);
        mpfr_abs(r8897, r8896, MPFR_RNDN);
        mpfr_div(r8898, r8894, r8897, MPFR_RNDN);
        mpfr_mul(r8899, r8884, r8883, MPFR_RNDN);
        mpfr_abs(r8900, r8899, MPFR_RNDN);
        mpfr_div(r8901, r8881, r8900, MPFR_RNDN);
        mpfr_mul(r8902, r8898, r8901, MPFR_RNDN);
        mpfr_mul(r8903, r8882, r8884, MPFR_RNDN);
        mpfr_mul(r8904, r8879, r8903, MPFR_RNDN);
        mpfr_abs(r8905, r8904, MPFR_RNDN);
        mpfr_pow(r8906, r8905, r8878, MPFR_RNDN);
        mpfr_div(r8907, r8881, r8906, MPFR_RNDN);
        if (mpfr_get_si(r8893, MPFR_RNDN)) { mpfr_set(r8908, r8902, MPFR_RNDN); } else { mpfr_set(r8908, r8907, MPFR_RNDN); };
        return mpfr_get_d(r8908, MPFR_RNDN);
}

