#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 r8777 = 2;
        float r8778 = x;
        float r8779 = r8777 * r8778;
        float r8780 = cos(r8779);
        float r8781 = cos;
        float r8782 = pow(r8781, r8777);
        float r8783 = sin;
        float r8784 = pow(r8783, r8777);
        float r8785 = r8778 * r8784;
        float r8786 = r8785 * r8778;
        float r8787 = r8782 * r8786;
        float r8788 = r8780 / r8787;
        return r8788;
}

double f_id(double x, double cos, double sin) {
        double r8789 = 2;
        double r8790 = x;
        double r8791 = r8789 * r8790;
        double r8792 = cos(r8791);
        double r8793 = cos;
        double r8794 = pow(r8793, r8789);
        double r8795 = sin;
        double r8796 = pow(r8795, r8789);
        double r8797 = r8790 * r8796;
        double r8798 = r8797 * r8790;
        double r8799 = r8794 * r8798;
        double r8800 = r8792 / r8799;
        return r8800;
}


double f_of(float x, float cos, float sin) {
        float r8801 = x;
        float r8802 = cos(r8801);
        float r8803 = r8802 * r8802;
        float r8804 = sin(r8801);
        float r8805 = r8804 * r8804;
        float r8806 = r8803 - r8805;
        float r8807 = cos;
        float r8808 = sin;
        float r8809 = r8801 * r8808;
        float r8810 = r8807 * r8809;
        float r8811 = fabs(r8810);
        float r8812 = r8811 * r8811;
        float r8813 = r8806 / r8812;
        float r8814 = 6.5631148755239296e-298;
        bool r8815 = r8813 <= r8814;
        float r8816 = 1;
        float r8817 = r8807 * r8801;
        float r8818 = r8817 * r8808;
        float r8819 = fabs(r8818);
        float r8820 = r8816 / r8819;
        float r8821 = 2;
        float r8822 = r8821 * r8801;
        float r8823 = cos(r8822);
        float r8824 = r8801 * r8807;
        float r8825 = r8808 * r8824;
        float r8826 = fabs(r8825);
        float r8827 = r8823 / r8826;
        float r8828 = r8820 * r8827;
        float r8829 = 5.115423973217656e+302;
        bool r8830 = r8813 <= r8829;
        float r8831 = r8807 * r8808;
        float r8832 = r8801 * r8831;
        float r8833 = fabs(r8832);
        float r8834 = sqrt(r8833);
        float r8835 = pow(r8834, r8821);
        float r8836 = r8827 / r8835;
        float r8837 = r8830 ? r8813 : r8836;
        float r8838 = r8815 ? r8828 : r8837;
        return r8838;
}

double f_od(double x, double cos, double sin) {
        double r8839 = x;
        double r8840 = cos(r8839);
        double r8841 = r8840 * r8840;
        double r8842 = sin(r8839);
        double r8843 = r8842 * r8842;
        double r8844 = r8841 - r8843;
        double r8845 = cos;
        double r8846 = sin;
        double r8847 = r8839 * r8846;
        double r8848 = r8845 * r8847;
        double r8849 = fabs(r8848);
        double r8850 = r8849 * r8849;
        double r8851 = r8844 / r8850;
        double r8852 = 6.5631148755239296e-298;
        bool r8853 = r8851 <= r8852;
        double r8854 = 1;
        double r8855 = r8845 * r8839;
        double r8856 = r8855 * r8846;
        double r8857 = fabs(r8856);
        double r8858 = r8854 / r8857;
        double r8859 = 2;
        double r8860 = r8859 * r8839;
        double r8861 = cos(r8860);
        double r8862 = r8839 * r8845;
        double r8863 = r8846 * r8862;
        double r8864 = fabs(r8863);
        double r8865 = r8861 / r8864;
        double r8866 = r8858 * r8865;
        double r8867 = 5.115423973217656e+302;
        bool r8868 = r8851 <= r8867;
        double r8869 = r8845 * r8846;
        double r8870 = r8839 * r8869;
        double r8871 = fabs(r8870);
        double r8872 = sqrt(r8871);
        double r8873 = pow(r8872, r8859);
        double r8874 = r8865 / r8873;
        double r8875 = r8868 ? r8851 : r8874;
        double r8876 = r8853 ? r8866 : r8875;
        return r8876;
}

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 r8877, r8878, r8879, r8880, r8881, r8882, r8883, r8884, r8885, r8886, r8887, r8888;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8877, "2", 10, MPFR_RNDN);
        mpfr_init(r8878);
        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(r8888);
}

double f_im(double x, double cos, double sin) {
        ;
        mpfr_set_d(r8878, x, MPFR_RNDN);
        mpfr_mul(r8879, r8877, r8878, MPFR_RNDN);
        mpfr_cos(r8880, r8879, MPFR_RNDN);
        mpfr_set_d(r8881, cos, MPFR_RNDN);
        mpfr_pow(r8882, r8881, r8877, MPFR_RNDN);
        mpfr_set_d(r8883, sin, MPFR_RNDN);
        mpfr_pow(r8884, r8883, r8877, MPFR_RNDN);
        mpfr_mul(r8885, r8878, r8884, MPFR_RNDN);
        mpfr_mul(r8886, r8885, r8878, MPFR_RNDN);
        mpfr_mul(r8887, r8882, r8886, MPFR_RNDN);
        mpfr_div(r8888, r8880, r8887, MPFR_RNDN);
        return mpfr_get_d(r8888, MPFR_RNDN);
}

static mpfr_t r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908, r8909, r8910, r8911, r8912, r8913, r8914, r8915, r8916, r8917, r8918, r8919, r8920, r8921, r8922, r8923, r8924, r8925, r8926;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
        mpfr_init(r8898);
        mpfr_init(r8899);
        mpfr_init(r8900);
        mpfr_init(r8901);
        mpfr_init_set_str(r8902, "6.5631148755239296e-298", 10, MPFR_RNDN);
        mpfr_init(r8903);
        mpfr_init_set_str(r8904, "1", 10, MPFR_RNDN);
        mpfr_init(r8905);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
        mpfr_init_set_str(r8909, "2", 10, MPFR_RNDN);
        mpfr_init(r8910);
        mpfr_init(r8911);
        mpfr_init(r8912);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
        mpfr_init(r8916);
        mpfr_init_set_str(r8917, "5.115423973217656e+302", 10, MPFR_RNDN);
        mpfr_init(r8918);
        mpfr_init(r8919);
        mpfr_init(r8920);
        mpfr_init(r8921);
        mpfr_init(r8922);
        mpfr_init(r8923);
        mpfr_init(r8924);
        mpfr_init(r8925);
        mpfr_init(r8926);
}

double f_fm(double x, double cos, double sin) {
        mpfr_set_d(r8889, x, MPFR_RNDN);
        mpfr_cos(r8890, r8889, MPFR_RNDN);
        mpfr_mul(r8891, r8890, r8890, MPFR_RNDN);
        mpfr_sin(r8892, r8889, MPFR_RNDN);
        mpfr_mul(r8893, r8892, r8892, MPFR_RNDN);
        mpfr_sub(r8894, r8891, r8893, MPFR_RNDN);
        mpfr_set_d(r8895, cos, MPFR_RNDN);
        mpfr_set_d(r8896, sin, MPFR_RNDN);
        mpfr_mul(r8897, r8889, r8896, MPFR_RNDN);
        mpfr_mul(r8898, r8895, r8897, MPFR_RNDN);
        mpfr_abs(r8899, r8898, MPFR_RNDN);
        mpfr_mul(r8900, r8899, r8899, MPFR_RNDN);
        mpfr_div(r8901, r8894, r8900, MPFR_RNDN);
        ;
        mpfr_set_si(r8903, mpfr_cmp(r8901, r8902) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8905, r8895, r8889, MPFR_RNDN);
        mpfr_mul(r8906, r8905, r8896, MPFR_RNDN);
        mpfr_abs(r8907, r8906, MPFR_RNDN);
        mpfr_div(r8908, r8904, r8907, MPFR_RNDN);
        ;
        mpfr_mul(r8910, r8909, r8889, MPFR_RNDN);
        mpfr_cos(r8911, r8910, MPFR_RNDN);
        mpfr_mul(r8912, r8889, r8895, MPFR_RNDN);
        mpfr_mul(r8913, r8896, r8912, MPFR_RNDN);
        mpfr_abs(r8914, r8913, MPFR_RNDN);
        mpfr_div(r8915, r8911, r8914, MPFR_RNDN);
        mpfr_mul(r8916, r8908, r8915, MPFR_RNDN);
        ;
        mpfr_set_si(r8918, mpfr_cmp(r8901, r8917) <= 0, MPFR_RNDN);
        mpfr_mul(r8919, r8895, r8896, MPFR_RNDN);
        mpfr_mul(r8920, r8889, r8919, MPFR_RNDN);
        mpfr_abs(r8921, r8920, MPFR_RNDN);
        mpfr_sqrt(r8922, r8921, MPFR_RNDN);
        mpfr_pow(r8923, r8922, r8909, MPFR_RNDN);
        mpfr_div(r8924, r8915, r8923, MPFR_RNDN);
        if (mpfr_get_si(r8918, MPFR_RNDN)) { mpfr_set(r8925, r8901, MPFR_RNDN); } else { mpfr_set(r8925, r8924, MPFR_RNDN); };
        if (mpfr_get_si(r8903, MPFR_RNDN)) { mpfr_set(r8926, r8916, MPFR_RNDN); } else { mpfr_set(r8926, r8925, MPFR_RNDN); };
        return mpfr_get_d(r8926, MPFR_RNDN);
}

static mpfr_t r8927, r8928, r8929, r8930, r8931, r8932, r8933, r8934, r8935, r8936, r8937, r8938, r8939, r8940, r8941, r8942, r8943, r8944, r8945, r8946, r8947, r8948, r8949, r8950, r8951, r8952, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963, r8964;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8927);
        mpfr_init(r8928);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init(r8931);
        mpfr_init(r8932);
        mpfr_init(r8933);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init_set_str(r8940, "6.5631148755239296e-298", 10, MPFR_RNDN);
        mpfr_init(r8941);
        mpfr_init_set_str(r8942, "1", 10, MPFR_RNDN);
        mpfr_init(r8943);
        mpfr_init(r8944);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init_set_str(r8947, "2", 10, MPFR_RNDN);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init_set_str(r8955, "5.115423973217656e+302", 10, MPFR_RNDN);
        mpfr_init(r8956);
        mpfr_init(r8957);
        mpfr_init(r8958);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init(r8961);
        mpfr_init(r8962);
        mpfr_init(r8963);
        mpfr_init(r8964);
}

double f_dm(double x, double cos, double sin) {
        mpfr_set_d(r8927, x, MPFR_RNDN);
        mpfr_cos(r8928, r8927, MPFR_RNDN);
        mpfr_mul(r8929, r8928, r8928, MPFR_RNDN);
        mpfr_sin(r8930, r8927, MPFR_RNDN);
        mpfr_mul(r8931, r8930, r8930, MPFR_RNDN);
        mpfr_sub(r8932, r8929, r8931, MPFR_RNDN);
        mpfr_set_d(r8933, cos, MPFR_RNDN);
        mpfr_set_d(r8934, sin, MPFR_RNDN);
        mpfr_mul(r8935, r8927, r8934, MPFR_RNDN);
        mpfr_mul(r8936, r8933, r8935, MPFR_RNDN);
        mpfr_abs(r8937, r8936, MPFR_RNDN);
        mpfr_mul(r8938, r8937, r8937, MPFR_RNDN);
        mpfr_div(r8939, r8932, r8938, MPFR_RNDN);
        ;
        mpfr_set_si(r8941, mpfr_cmp(r8939, r8940) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8943, r8933, r8927, MPFR_RNDN);
        mpfr_mul(r8944, r8943, r8934, MPFR_RNDN);
        mpfr_abs(r8945, r8944, MPFR_RNDN);
        mpfr_div(r8946, r8942, r8945, MPFR_RNDN);
        ;
        mpfr_mul(r8948, r8947, r8927, MPFR_RNDN);
        mpfr_cos(r8949, r8948, MPFR_RNDN);
        mpfr_mul(r8950, r8927, r8933, MPFR_RNDN);
        mpfr_mul(r8951, r8934, r8950, MPFR_RNDN);
        mpfr_abs(r8952, r8951, MPFR_RNDN);
        mpfr_div(r8953, r8949, r8952, MPFR_RNDN);
        mpfr_mul(r8954, r8946, r8953, MPFR_RNDN);
        ;
        mpfr_set_si(r8956, mpfr_cmp(r8939, r8955) <= 0, MPFR_RNDN);
        mpfr_mul(r8957, r8933, r8934, MPFR_RNDN);
        mpfr_mul(r8958, r8927, r8957, MPFR_RNDN);
        mpfr_abs(r8959, r8958, MPFR_RNDN);
        mpfr_sqrt(r8960, r8959, MPFR_RNDN);
        mpfr_pow(r8961, r8960, r8947, MPFR_RNDN);
        mpfr_div(r8962, r8953, r8961, MPFR_RNDN);
        if (mpfr_get_si(r8956, MPFR_RNDN)) { mpfr_set(r8963, r8939, MPFR_RNDN); } else { mpfr_set(r8963, r8962, MPFR_RNDN); };
        if (mpfr_get_si(r8941, MPFR_RNDN)) { mpfr_set(r8964, r8954, MPFR_RNDN); } else { mpfr_set(r8964, r8963, MPFR_RNDN); };
        return mpfr_get_d(r8964, MPFR_RNDN);
}

