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

char *name = "2tan (problem 3.3.2)";

double f_if(float x, float eps) {
        float r58781 = x;
        float r58782 = eps;
        float r58783 = r58781 + r58782;
        float r58784 = tan(r58783);
        float r58785 = tan(r58781);
        float r58786 = r58784 - r58785;
        return r58786;
}

double f_id(double x, double eps) {
        double r58787 = x;
        double r58788 = eps;
        double r58789 = r58787 + r58788;
        double r58790 = tan(r58789);
        double r58791 = tan(r58787);
        double r58792 = r58790 - r58791;
        return r58792;
}


double f_of(float x, float eps) {
        float r58793 = eps;
        float r58794 = -4.937900603750566e-17;
        bool r58795 = r58793 <= r58794;
        float r58796 = x;
        float r58797 = tan(r58796);
        float r58798 = tan(r58793);
        float r58799 = r58797 + r58798;
        float r58800 = 1;
        float r58801 = r58797 * r58798;
        float r58802 = r58800 - r58801;
        float r58803 = r58799 / r58802;
        float r58804 = r58803 * r58803;
        float r58805 = r58797 * r58797;
        float r58806 = r58804 - r58805;
        float r58807 = r58803 + r58797;
        float r58808 = r58806 / r58807;
        float r58809 = 2.74084816432034e-15;
        bool r58810 = r58793 <= r58809;
        float r58811 = 3;
        float r58812 = pow(r58793, r58811);
        float r58813 = 2;
        float r58814 = pow(r58796, r58813);
        float r58815 = r58812 * r58814;
        float r58816 = pow(r58793, r58813);
        float r58817 = r58816 * r58796;
        float r58818 = r58815 + r58817;
        float r58819 = r58793 + r58818;
        float r58820 = cos(r58796);
        float r58821 = r58799 * r58820;
        float r58822 = sin(r58796);
        float r58823 = r58802 * r58822;
        float r58824 = r58821 - r58823;
        float r58825 = r58802 * r58820;
        float r58826 = r58824 / r58825;
        float r58827 = r58810 ? r58819 : r58826;
        float r58828 = r58795 ? r58808 : r58827;
        return r58828;
}

double f_od(double x, double eps) {
        double r58829 = eps;
        double r58830 = -4.937900603750566e-17;
        bool r58831 = r58829 <= r58830;
        double r58832 = x;
        double r58833 = tan(r58832);
        double r58834 = tan(r58829);
        double r58835 = r58833 + r58834;
        double r58836 = 1;
        double r58837 = r58833 * r58834;
        double r58838 = r58836 - r58837;
        double r58839 = r58835 / r58838;
        double r58840 = r58839 * r58839;
        double r58841 = r58833 * r58833;
        double r58842 = r58840 - r58841;
        double r58843 = r58839 + r58833;
        double r58844 = r58842 / r58843;
        double r58845 = 2.74084816432034e-15;
        bool r58846 = r58829 <= r58845;
        double r58847 = 3;
        double r58848 = pow(r58829, r58847);
        double r58849 = 2;
        double r58850 = pow(r58832, r58849);
        double r58851 = r58848 * r58850;
        double r58852 = pow(r58829, r58849);
        double r58853 = r58852 * r58832;
        double r58854 = r58851 + r58853;
        double r58855 = r58829 + r58854;
        double r58856 = cos(r58832);
        double r58857 = r58835 * r58856;
        double r58858 = sin(r58832);
        double r58859 = r58838 * r58858;
        double r58860 = r58857 - r58859;
        double r58861 = r58838 * r58856;
        double r58862 = r58860 / r58861;
        double r58863 = r58846 ? r58855 : r58862;
        double r58864 = r58831 ? r58844 : r58863;
        return r58864;
}

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 r58865, r58866, r58867, r58868, r58869, r58870;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r58865);
        mpfr_init(r58866);
        mpfr_init(r58867);
        mpfr_init(r58868);
        mpfr_init(r58869);
        mpfr_init(r58870);
}

double f_im(double x, double eps) {
        mpfr_set_d(r58865, x, MPFR_RNDN);
        mpfr_set_d(r58866, eps, MPFR_RNDN);
        mpfr_add(r58867, r58865, r58866, MPFR_RNDN);
        mpfr_tan(r58868, r58867, MPFR_RNDN);
        mpfr_tan(r58869, r58865, MPFR_RNDN);
        mpfr_sub(r58870, r58868, r58869, MPFR_RNDN);
        return mpfr_get_d(r58870, MPFR_RNDN);
}

static mpfr_t r58871, r58872, r58873, r58874, r58875, r58876, r58877, r58878, r58879, r58880, r58881, r58882, r58883, r58884, r58885, r58886, r58887, r58888, r58889, r58890, r58891, r58892, r58893, r58894, r58895, r58896, r58897, r58898, r58899, r58900, r58901, r58902, r58903, r58904, r58905, r58906;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r58871);
        mpfr_init_set_str(r58872, "-4.937900603750566e-17", 10, MPFR_RNDN);
        mpfr_init(r58873);
        mpfr_init(r58874);
        mpfr_init(r58875);
        mpfr_init(r58876);
        mpfr_init(r58877);
        mpfr_init_set_str(r58878, "1", 10, MPFR_RNDN);
        mpfr_init(r58879);
        mpfr_init(r58880);
        mpfr_init(r58881);
        mpfr_init(r58882);
        mpfr_init(r58883);
        mpfr_init(r58884);
        mpfr_init(r58885);
        mpfr_init(r58886);
        mpfr_init_set_str(r58887, "2.74084816432034e-15", 10, MPFR_RNDN);
        mpfr_init(r58888);
        mpfr_init_set_str(r58889, "3", 10, MPFR_RNDN);
        mpfr_init(r58890);
        mpfr_init_set_str(r58891, "2", 10, MPFR_RNDN);
        mpfr_init(r58892);
        mpfr_init(r58893);
        mpfr_init(r58894);
        mpfr_init(r58895);
        mpfr_init(r58896);
        mpfr_init(r58897);
        mpfr_init(r58898);
        mpfr_init(r58899);
        mpfr_init(r58900);
        mpfr_init(r58901);
        mpfr_init(r58902);
        mpfr_init(r58903);
        mpfr_init(r58904);
        mpfr_init(r58905);
        mpfr_init(r58906);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r58871, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r58873, mpfr_cmp(r58871, r58872) <= 0, MPFR_RNDN);
        mpfr_set_d(r58874, x, MPFR_RNDN);
        mpfr_tan(r58875, r58874, MPFR_RNDN);
        mpfr_tan(r58876, r58871, MPFR_RNDN);
        mpfr_add(r58877, r58875, r58876, MPFR_RNDN);
        ;
        mpfr_mul(r58879, r58875, r58876, MPFR_RNDN);
        mpfr_sub(r58880, r58878, r58879, MPFR_RNDN);
        mpfr_div(r58881, r58877, r58880, MPFR_RNDN);
        mpfr_mul(r58882, r58881, r58881, MPFR_RNDN);
        mpfr_mul(r58883, r58875, r58875, MPFR_RNDN);
        mpfr_sub(r58884, r58882, r58883, MPFR_RNDN);
        mpfr_add(r58885, r58881, r58875, MPFR_RNDN);
        mpfr_div(r58886, r58884, r58885, MPFR_RNDN);
        ;
        mpfr_set_si(r58888, mpfr_cmp(r58871, r58887) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r58890, r58871, r58889, MPFR_RNDN);
        ;
        mpfr_pow(r58892, r58874, r58891, MPFR_RNDN);
        mpfr_mul(r58893, r58890, r58892, MPFR_RNDN);
        mpfr_pow(r58894, r58871, r58891, MPFR_RNDN);
        mpfr_mul(r58895, r58894, r58874, MPFR_RNDN);
        mpfr_add(r58896, r58893, r58895, MPFR_RNDN);
        mpfr_add(r58897, r58871, r58896, MPFR_RNDN);
        mpfr_cos(r58898, r58874, MPFR_RNDN);
        mpfr_mul(r58899, r58877, r58898, MPFR_RNDN);
        mpfr_sin(r58900, r58874, MPFR_RNDN);
        mpfr_mul(r58901, r58880, r58900, MPFR_RNDN);
        mpfr_sub(r58902, r58899, r58901, MPFR_RNDN);
        mpfr_mul(r58903, r58880, r58898, MPFR_RNDN);
        mpfr_div(r58904, r58902, r58903, MPFR_RNDN);
        if (mpfr_get_si(r58888, MPFR_RNDN)) { mpfr_set(r58905, r58897, MPFR_RNDN); } else { mpfr_set(r58905, r58904, MPFR_RNDN); };
        if (mpfr_get_si(r58873, MPFR_RNDN)) { mpfr_set(r58906, r58886, MPFR_RNDN); } else { mpfr_set(r58906, r58905, MPFR_RNDN); };
        return mpfr_get_d(r58906, MPFR_RNDN);
}

static mpfr_t r58907, r58908, r58909, r58910, r58911, r58912, r58913, r58914, r58915, r58916, r58917, r58918, r58919, r58920, r58921, r58922, r58923, r58924, r58925, r58926, r58927, r58928, r58929, r58930, r58931, r58932, r58933, r58934, r58935, r58936, r58937, r58938, r58939, r58940, r58941, r58942;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r58907);
        mpfr_init_set_str(r58908, "-4.937900603750566e-17", 10, MPFR_RNDN);
        mpfr_init(r58909);
        mpfr_init(r58910);
        mpfr_init(r58911);
        mpfr_init(r58912);
        mpfr_init(r58913);
        mpfr_init_set_str(r58914, "1", 10, MPFR_RNDN);
        mpfr_init(r58915);
        mpfr_init(r58916);
        mpfr_init(r58917);
        mpfr_init(r58918);
        mpfr_init(r58919);
        mpfr_init(r58920);
        mpfr_init(r58921);
        mpfr_init(r58922);
        mpfr_init_set_str(r58923, "2.74084816432034e-15", 10, MPFR_RNDN);
        mpfr_init(r58924);
        mpfr_init_set_str(r58925, "3", 10, MPFR_RNDN);
        mpfr_init(r58926);
        mpfr_init_set_str(r58927, "2", 10, MPFR_RNDN);
        mpfr_init(r58928);
        mpfr_init(r58929);
        mpfr_init(r58930);
        mpfr_init(r58931);
        mpfr_init(r58932);
        mpfr_init(r58933);
        mpfr_init(r58934);
        mpfr_init(r58935);
        mpfr_init(r58936);
        mpfr_init(r58937);
        mpfr_init(r58938);
        mpfr_init(r58939);
        mpfr_init(r58940);
        mpfr_init(r58941);
        mpfr_init(r58942);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r58907, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r58909, mpfr_cmp(r58907, r58908) <= 0, MPFR_RNDN);
        mpfr_set_d(r58910, x, MPFR_RNDN);
        mpfr_tan(r58911, r58910, MPFR_RNDN);
        mpfr_tan(r58912, r58907, MPFR_RNDN);
        mpfr_add(r58913, r58911, r58912, MPFR_RNDN);
        ;
        mpfr_mul(r58915, r58911, r58912, MPFR_RNDN);
        mpfr_sub(r58916, r58914, r58915, MPFR_RNDN);
        mpfr_div(r58917, r58913, r58916, MPFR_RNDN);
        mpfr_mul(r58918, r58917, r58917, MPFR_RNDN);
        mpfr_mul(r58919, r58911, r58911, MPFR_RNDN);
        mpfr_sub(r58920, r58918, r58919, MPFR_RNDN);
        mpfr_add(r58921, r58917, r58911, MPFR_RNDN);
        mpfr_div(r58922, r58920, r58921, MPFR_RNDN);
        ;
        mpfr_set_si(r58924, mpfr_cmp(r58907, r58923) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r58926, r58907, r58925, MPFR_RNDN);
        ;
        mpfr_pow(r58928, r58910, r58927, MPFR_RNDN);
        mpfr_mul(r58929, r58926, r58928, MPFR_RNDN);
        mpfr_pow(r58930, r58907, r58927, MPFR_RNDN);
        mpfr_mul(r58931, r58930, r58910, MPFR_RNDN);
        mpfr_add(r58932, r58929, r58931, MPFR_RNDN);
        mpfr_add(r58933, r58907, r58932, MPFR_RNDN);
        mpfr_cos(r58934, r58910, MPFR_RNDN);
        mpfr_mul(r58935, r58913, r58934, MPFR_RNDN);
        mpfr_sin(r58936, r58910, MPFR_RNDN);
        mpfr_mul(r58937, r58916, r58936, MPFR_RNDN);
        mpfr_sub(r58938, r58935, r58937, MPFR_RNDN);
        mpfr_mul(r58939, r58916, r58934, MPFR_RNDN);
        mpfr_div(r58940, r58938, r58939, MPFR_RNDN);
        if (mpfr_get_si(r58924, MPFR_RNDN)) { mpfr_set(r58941, r58933, MPFR_RNDN); } else { mpfr_set(r58941, r58940, MPFR_RNDN); };
        if (mpfr_get_si(r58909, MPFR_RNDN)) { mpfr_set(r58942, r58922, MPFR_RNDN); } else { mpfr_set(r58942, r58941, MPFR_RNDN); };
        return mpfr_get_d(r58942, MPFR_RNDN);
}

