#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 r8797 = 2;
        float r8798 = x;
        float r8799 = r8797 * r8798;
        float r8800 = cos(r8799);
        float r8801 = cos;
        float r8802 = pow(r8801, r8797);
        float r8803 = sin;
        float r8804 = pow(r8803, r8797);
        float r8805 = r8798 * r8804;
        float r8806 = r8805 * r8798;
        float r8807 = r8802 * r8806;
        float r8808 = r8800 / r8807;
        return r8808;
}

double f_id(double x, double cos, double sin) {
        double r8809 = 2;
        double r8810 = x;
        double r8811 = r8809 * r8810;
        double r8812 = cos(r8811);
        double r8813 = cos;
        double r8814 = pow(r8813, r8809);
        double r8815 = sin;
        double r8816 = pow(r8815, r8809);
        double r8817 = r8810 * r8816;
        double r8818 = r8817 * r8810;
        double r8819 = r8814 * r8818;
        double r8820 = r8812 / r8819;
        return r8820;
}


double f_of(float x, float cos, float sin) {
        float r8821 = 2;
        float r8822 = x;
        float r8823 = r8821 * r8822;
        float r8824 = cos(r8823);
        float r8825 = cos;
        float r8826 = r8822 * r8825;
        float r8827 = sin;
        float r8828 = r8827 * r8827;
        float r8829 = r8826 * r8828;
        float r8830 = r8829 * r8826;
        float r8831 = 3;
        float r8832 = pow(r8830, r8831);
        float r8833 = cbrt(r8832);
        float r8834 = r8824 / r8833;
        float r8835 = 1.2391723759347928e-96;
        bool r8836 = r8834 <= r8835;
        float r8837 = 1;
        float r8838 = r8825 * r8822;
        float r8839 = r8838 * r8827;
        float r8840 = fabs(r8839);
        float r8841 = r8837 / r8840;
        float r8842 = r8827 * r8826;
        float r8843 = fabs(r8842);
        float r8844 = r8824 / r8843;
        float r8845 = r8841 * r8844;
        float r8846 = r8825 * r8827;
        float r8847 = r8822 * r8846;
        float r8848 = fabs(r8847);
        float r8849 = pow(r8848, r8821);
        float r8850 = r8824 / r8849;
        float r8851 = r8836 ? r8845 : r8850;
        return r8851;
}

double f_od(double x, double cos, double sin) {
        double r8852 = 2;
        double r8853 = x;
        double r8854 = r8852 * r8853;
        double r8855 = cos(r8854);
        double r8856 = cos;
        double r8857 = r8853 * r8856;
        double r8858 = sin;
        double r8859 = r8858 * r8858;
        double r8860 = r8857 * r8859;
        double r8861 = r8860 * r8857;
        double r8862 = 3;
        double r8863 = pow(r8861, r8862);
        double r8864 = cbrt(r8863);
        double r8865 = r8855 / r8864;
        double r8866 = 1.2391723759347928e-96;
        bool r8867 = r8865 <= r8866;
        double r8868 = 1;
        double r8869 = r8856 * r8853;
        double r8870 = r8869 * r8858;
        double r8871 = fabs(r8870);
        double r8872 = r8868 / r8871;
        double r8873 = r8858 * r8857;
        double r8874 = fabs(r8873);
        double r8875 = r8855 / r8874;
        double r8876 = r8872 * r8875;
        double r8877 = r8856 * r8858;
        double r8878 = r8853 * r8877;
        double r8879 = fabs(r8878);
        double r8880 = pow(r8879, r8852);
        double r8881 = r8855 / r8880;
        double r8882 = r8867 ? r8876 : r8881;
        return r8882;
}

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 r8883, r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8883, "2", 10, MPFR_RNDN);
        mpfr_init(r8884);
        mpfr_init(r8885);
        mpfr_init(r8886);
        mpfr_init(r8887);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
}

double f_im(double x, double cos, double sin) {
        ;
        mpfr_set_d(r8884, x, MPFR_RNDN);
        mpfr_mul(r8885, r8883, r8884, MPFR_RNDN);
        mpfr_cos(r8886, r8885, MPFR_RNDN);
        mpfr_set_d(r8887, cos, MPFR_RNDN);
        mpfr_pow(r8888, r8887, r8883, MPFR_RNDN);
        mpfr_set_d(r8889, sin, MPFR_RNDN);
        mpfr_pow(r8890, r8889, r8883, MPFR_RNDN);
        mpfr_mul(r8891, r8884, r8890, MPFR_RNDN);
        mpfr_mul(r8892, r8891, r8884, MPFR_RNDN);
        mpfr_mul(r8893, r8888, r8892, MPFR_RNDN);
        mpfr_div(r8894, r8886, r8893, MPFR_RNDN);
        return mpfr_get_d(r8894, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8895, "2", 10, MPFR_RNDN);
        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_set_str(r8905, "3", 10, MPFR_RNDN);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
        mpfr_init_set_str(r8909, "1.2391723759347928e-96", 10, MPFR_RNDN);
        mpfr_init(r8910);
        mpfr_init_set_str(r8911, "1", 10, MPFR_RNDN);
        mpfr_init(r8912);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
        mpfr_init(r8916);
        mpfr_init(r8917);
        mpfr_init(r8918);
        mpfr_init(r8919);
        mpfr_init(r8920);
        mpfr_init(r8921);
        mpfr_init(r8922);
        mpfr_init(r8923);
        mpfr_init(r8924);
        mpfr_init(r8925);
}

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

static mpfr_t r8926, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8926, "2", 10, MPFR_RNDN);
        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_set_str(r8936, "3", 10, MPFR_RNDN);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init_set_str(r8940, "1.2391723759347928e-96", 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(r8947);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
}

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

