#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "NMSE problem 3.3.2";

double f_if(float x, float eps) {
        float r26758 = x;
        float r26759 = eps;
        float r26760 = r26758 + r26759;
        float r26761 = tan(r26760);
        float r26762 = tan(r26758);
        float r26763 = r26761 - r26762;
        return r26763;
}

double f_id(double x, double eps) {
        double r26764 = x;
        double r26765 = eps;
        double r26766 = r26764 + r26765;
        double r26767 = tan(r26766);
        double r26768 = tan(r26764);
        double r26769 = r26767 - r26768;
        return r26769;
}


double f_of(float x, float eps) {
        float r26770 = eps;
        float r26771 = -3.028562603516987e-28f;
        bool r26772 = r26770 <= r26771;
        float r26773 = x;
        float r26774 = tan(r26773);
        float r26775 = tan(r26770);
        float r26776 = r26774 + r26775;
        float r26777 = cos(r26773);
        float r26778 = r26776 * r26777;
        float r26779 = 1.0f;
        float r26780 = r26774 * r26775;
        float r26781 = r26779 - r26780;
        float r26782 = sin(r26773);
        float r26783 = r26781 * r26782;
        float r26784 = r26778 - r26783;
        float r26785 = r26781 * r26777;
        float r26786 = r26784 / r26785;
        float r26787 = 5.525021296628413e-12f;
        bool r26788 = r26770 <= r26787;
        float r26789 = r26773 * r26773;
        float r26790 = r26770 * (r26770 * r26770);
        float r26791 = r26789 * r26790;
        float r26792 = 4.0f;
        float r26793 = pow(r26770, r26792);
        float r26794 = r26773 * (r26773 * r26773);
        float r26795 = r26793 * r26794;
        float r26796 = r26791 + r26795;
        float r26797 = r26796 + r26770;
        float r26798 = sin(r26770);
        float r26799 = r26774 * r26798;
        float r26800 = cos(r26770);
        float r26801 = r26799 / r26800;
        float r26802 = r26779 - r26801;
        float r26803 = r26776 / r26802;
        float r26804 = r26803 - r26774;
        float r26805 = r26788 ? r26797 : r26804;
        float r26806 = r26772 ? r26786 : r26805;
        return r26806;
}

double f_od(double x, double eps) {
        double r26807 = eps;
        double r26808 = -3.028562603516987e-28;
        bool r26809 = r26807 <= r26808;
        double r26810 = x;
        double r26811 = tan(r26810);
        double r26812 = tan(r26807);
        double r26813 = r26811 + r26812;
        double r26814 = cos(r26810);
        double r26815 = r26813 * r26814;
        double r26816 = 1.0;
        double r26817 = r26811 * r26812;
        double r26818 = r26816 - r26817;
        double r26819 = sin(r26810);
        double r26820 = r26818 * r26819;
        double r26821 = r26815 - r26820;
        double r26822 = r26818 * r26814;
        double r26823 = r26821 / r26822;
        double r26824 = 5.525021296628413e-12;
        bool r26825 = r26807 <= r26824;
        double r26826 = r26810 * r26810;
        double r26827 = r26807 * (r26807 * r26807);
        double r26828 = r26826 * r26827;
        double r26829 = 4.0;
        double r26830 = pow(r26807, r26829);
        double r26831 = r26810 * (r26810 * r26810);
        double r26832 = r26830 * r26831;
        double r26833 = r26828 + r26832;
        double r26834 = r26833 + r26807;
        double r26835 = sin(r26807);
        double r26836 = r26811 * r26835;
        double r26837 = cos(r26807);
        double r26838 = r26836 / r26837;
        double r26839 = r26816 - r26838;
        double r26840 = r26813 / r26839;
        double r26841 = r26840 - r26811;
        double r26842 = r26825 ? r26834 : r26841;
        double r26843 = r26809 ? r26823 : r26842;
        return r26843;
}

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 r26844, r26845, r26846, r26847, r26848, r26849;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r26844);
        mpfr_init(r26845);
        mpfr_init(r26846);
        mpfr_init(r26847);
        mpfr_init(r26848);
        mpfr_init(r26849);
}

double f_im(double x, double eps) {
        mpfr_set_d(r26844, x, MPFR_RNDN);
        mpfr_set_d(r26845, eps, MPFR_RNDN);
        mpfr_add(r26846, r26844, r26845, MPFR_RNDN);
        mpfr_tan(r26847, r26846, MPFR_RNDN);
        mpfr_tan(r26848, r26844, MPFR_RNDN);
        mpfr_sub(r26849, r26847, r26848, MPFR_RNDN);
        return mpfr_get_d(r26849, MPFR_RNDN);
}

static mpfr_t r26850, r26851, r26852, r26853, r26854, r26855, r26856, r26857, r26858, r26859, r26860, r26861, r26862, r26863, r26864, r26865, r26866, r26867, r26868, r26869, r26870, r26871, r26872, r26873, r26874, r26875, r26876, r26877, r26878, r26879, r26880, r26881, r26882, r26883, r26884, r26885, r26886;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r26850);
        mpfr_init_set_str(r26851, "-3.028562603516987e-28", 10, MPFR_RNDN);
        mpfr_init(r26852);
        mpfr_init(r26853);
        mpfr_init(r26854);
        mpfr_init(r26855);
        mpfr_init(r26856);
        mpfr_init(r26857);
        mpfr_init(r26858);
        mpfr_init_set_str(r26859, "1", 10, MPFR_RNDN);
        mpfr_init(r26860);
        mpfr_init(r26861);
        mpfr_init(r26862);
        mpfr_init(r26863);
        mpfr_init(r26864);
        mpfr_init(r26865);
        mpfr_init(r26866);
        mpfr_init_set_str(r26867, "5.525021296628413e-12", 10, MPFR_RNDN);
        mpfr_init(r26868);
        mpfr_init(r26869);
        mpfr_init(r26870);
        mpfr_init(r26871);
        mpfr_init_set_str(r26872, "4", 10, MPFR_RNDN);
        mpfr_init(r26873);
        mpfr_init(r26874);
        mpfr_init(r26875);
        mpfr_init(r26876);
        mpfr_init(r26877);
        mpfr_init(r26878);
        mpfr_init(r26879);
        mpfr_init(r26880);
        mpfr_init(r26881);
        mpfr_init(r26882);
        mpfr_init(r26883);
        mpfr_init(r26884);
        mpfr_init(r26885);
        mpfr_init(r26886);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r26850, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r26852, mpfr_cmp(r26850, r26851) <= 0, MPFR_RNDN);
        mpfr_set_d(r26853, x, MPFR_RNDN);
        mpfr_tan(r26854, r26853, MPFR_RNDN);
        mpfr_tan(r26855, r26850, MPFR_RNDN);
        mpfr_add(r26856, r26854, r26855, MPFR_RNDN);
        mpfr_cos(r26857, r26853, MPFR_RNDN);
        mpfr_mul(r26858, r26856, r26857, MPFR_RNDN);
        ;
        mpfr_mul(r26860, r26854, r26855, MPFR_RNDN);
        mpfr_sub(r26861, r26859, r26860, MPFR_RNDN);
        mpfr_sin(r26862, r26853, MPFR_RNDN);
        mpfr_mul(r26863, r26861, r26862, MPFR_RNDN);
        mpfr_sub(r26864, r26858, r26863, MPFR_RNDN);
        mpfr_mul(r26865, r26861, r26857, MPFR_RNDN);
        mpfr_div(r26866, r26864, r26865, MPFR_RNDN);
        ;
        mpfr_set_si(r26868, mpfr_cmp(r26850, r26867) <= 0, MPFR_RNDN);
        mpfr_sqr(r26869, r26853, MPFR_RNDN);
        mpfr_mul(r26870, r26850, r26850, MPFR_RNDN); mpfr_mul(r26870, r26870, r26850, MPFR_RNDN);
        mpfr_mul(r26871, r26869, r26870, MPFR_RNDN);
        ;
        mpfr_pow(r26873, r26850, r26872, MPFR_RNDN);
        mpfr_mul(r26874, r26853, r26853, MPFR_RNDN); mpfr_mul(r26874, r26874, r26853, MPFR_RNDN);
        mpfr_mul(r26875, r26873, r26874, MPFR_RNDN);
        mpfr_add(r26876, r26871, r26875, MPFR_RNDN);
        mpfr_add(r26877, r26876, r26850, MPFR_RNDN);
        mpfr_sin(r26878, r26850, MPFR_RNDN);
        mpfr_mul(r26879, r26854, r26878, MPFR_RNDN);
        mpfr_cos(r26880, r26850, MPFR_RNDN);
        mpfr_div(r26881, r26879, r26880, MPFR_RNDN);
        mpfr_sub(r26882, r26859, r26881, MPFR_RNDN);
        mpfr_div(r26883, r26856, r26882, MPFR_RNDN);
        mpfr_sub(r26884, r26883, r26854, MPFR_RNDN);
        if (mpfr_get_si(r26868, MPFR_RNDN)) { mpfr_set(r26885, r26877, MPFR_RNDN); } else { mpfr_set(r26885, r26884, MPFR_RNDN); };
        if (mpfr_get_si(r26852, MPFR_RNDN)) { mpfr_set(r26886, r26866, MPFR_RNDN); } else { mpfr_set(r26886, r26885, MPFR_RNDN); };
        return mpfr_get_d(r26886, MPFR_RNDN);
}

static mpfr_t r26887, r26888, r26889, r26890, r26891, r26892, r26893, r26894, r26895, r26896, r26897, r26898, r26899, r26900, r26901, r26902, r26903, r26904, r26905, r26906, r26907, r26908, r26909, r26910, r26911, r26912, r26913, r26914, r26915, r26916, r26917, r26918, r26919, r26920, r26921, r26922, r26923;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r26887);
        mpfr_init_set_str(r26888, "-3.028562603516987e-28", 10, MPFR_RNDN);
        mpfr_init(r26889);
        mpfr_init(r26890);
        mpfr_init(r26891);
        mpfr_init(r26892);
        mpfr_init(r26893);
        mpfr_init(r26894);
        mpfr_init(r26895);
        mpfr_init_set_str(r26896, "1", 10, MPFR_RNDN);
        mpfr_init(r26897);
        mpfr_init(r26898);
        mpfr_init(r26899);
        mpfr_init(r26900);
        mpfr_init(r26901);
        mpfr_init(r26902);
        mpfr_init(r26903);
        mpfr_init_set_str(r26904, "5.525021296628413e-12", 10, MPFR_RNDN);
        mpfr_init(r26905);
        mpfr_init(r26906);
        mpfr_init(r26907);
        mpfr_init(r26908);
        mpfr_init_set_str(r26909, "4", 10, MPFR_RNDN);
        mpfr_init(r26910);
        mpfr_init(r26911);
        mpfr_init(r26912);
        mpfr_init(r26913);
        mpfr_init(r26914);
        mpfr_init(r26915);
        mpfr_init(r26916);
        mpfr_init(r26917);
        mpfr_init(r26918);
        mpfr_init(r26919);
        mpfr_init(r26920);
        mpfr_init(r26921);
        mpfr_init(r26922);
        mpfr_init(r26923);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r26887, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r26889, mpfr_cmp(r26887, r26888) <= 0, MPFR_RNDN);
        mpfr_set_d(r26890, x, MPFR_RNDN);
        mpfr_tan(r26891, r26890, MPFR_RNDN);
        mpfr_tan(r26892, r26887, MPFR_RNDN);
        mpfr_add(r26893, r26891, r26892, MPFR_RNDN);
        mpfr_cos(r26894, r26890, MPFR_RNDN);
        mpfr_mul(r26895, r26893, r26894, MPFR_RNDN);
        ;
        mpfr_mul(r26897, r26891, r26892, MPFR_RNDN);
        mpfr_sub(r26898, r26896, r26897, MPFR_RNDN);
        mpfr_sin(r26899, r26890, MPFR_RNDN);
        mpfr_mul(r26900, r26898, r26899, MPFR_RNDN);
        mpfr_sub(r26901, r26895, r26900, MPFR_RNDN);
        mpfr_mul(r26902, r26898, r26894, MPFR_RNDN);
        mpfr_div(r26903, r26901, r26902, MPFR_RNDN);
        ;
        mpfr_set_si(r26905, mpfr_cmp(r26887, r26904) <= 0, MPFR_RNDN);
        mpfr_sqr(r26906, r26890, MPFR_RNDN);
        mpfr_mul(r26907, r26887, r26887, MPFR_RNDN); mpfr_mul(r26907, r26907, r26887, MPFR_RNDN);
        mpfr_mul(r26908, r26906, r26907, MPFR_RNDN);
        ;
        mpfr_pow(r26910, r26887, r26909, MPFR_RNDN);
        mpfr_mul(r26911, r26890, r26890, MPFR_RNDN); mpfr_mul(r26911, r26911, r26890, MPFR_RNDN);
        mpfr_mul(r26912, r26910, r26911, MPFR_RNDN);
        mpfr_add(r26913, r26908, r26912, MPFR_RNDN);
        mpfr_add(r26914, r26913, r26887, MPFR_RNDN);
        mpfr_sin(r26915, r26887, MPFR_RNDN);
        mpfr_mul(r26916, r26891, r26915, MPFR_RNDN);
        mpfr_cos(r26917, r26887, MPFR_RNDN);
        mpfr_div(r26918, r26916, r26917, MPFR_RNDN);
        mpfr_sub(r26919, r26896, r26918, MPFR_RNDN);
        mpfr_div(r26920, r26893, r26919, MPFR_RNDN);
        mpfr_sub(r26921, r26920, r26891, MPFR_RNDN);
        if (mpfr_get_si(r26905, MPFR_RNDN)) { mpfr_set(r26922, r26914, MPFR_RNDN); } else { mpfr_set(r26922, r26921, MPFR_RNDN); };
        if (mpfr_get_si(r26889, MPFR_RNDN)) { mpfr_set(r26923, r26903, MPFR_RNDN); } else { mpfr_set(r26923, r26922, MPFR_RNDN); };
        return mpfr_get_d(r26923, MPFR_RNDN);
}

