#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 r4774980 = x;
        float r4774981 = eps;
        float r4774982 = r4774980 + r4774981;
        float r4774983 = tan(r4774982);
        float r4774984 = tan(r4774980);
        float r4774985 = r4774983 - r4774984;
        return r4774985;
}

double f_id(double x, double eps) {
        double r4774986 = x;
        double r4774987 = eps;
        double r4774988 = r4774986 + r4774987;
        double r4774989 = tan(r4774988);
        double r4774990 = tan(r4774986);
        double r4774991 = r4774989 - r4774990;
        return r4774991;
}


double f_of(float x, float eps) {
        float r4774992 = eps;
        float r4774993 = -1.5978287878901397e-47f;
        bool r4774994 = r4774992 <= r4774993;
        float r4774995 = 1.0f;
        float r4774996 = x;
        float r4774997 = tan(r4774996);
        float r4774998 = tan(r4774992);
        float r4774999 = r4774997 * r4774998;
        float r4775000 = r4774995 - r4774999;
        float r4775001 = r4774997 + r4774998;
        float r4775002 = r4775000 / r4775001;
        float r4775003 = r4774995 / r4775002;
        float r4775004 = r4775003 - r4774997;
        float r4775005 = 4.820454443524605e-45f;
        bool r4775006 = r4774992 <= r4775005;
        float r4775007 = r4774992 * (r4774992 * r4774992);
        float r4775008 = r4774996 * r4774996;
        float r4775009 = r4775007 * r4775008;
        float r4775010 = r4774992 + r4775009;
        float r4775011 = r4774996 * (r4774996 * r4774996);
        float r4775012 = 4.0f;
        float r4775013 = pow(r4774992, r4775012);
        float r4775014 = r4775011 * r4775013;
        float r4775015 = r4775010 + r4775014;
        float r4775016 = r4774997 * (r4774997 * r4774997);
        float r4775017 = r4774998 * (r4774998 * r4774998);
        float r4775018 = r4775016 * r4775017;
        float r4775019 = cbrt(r4775018);
        float r4775020 = r4774995 - r4775019;
        float r4775021 = r4775001 / r4775020;
        float r4775022 = r4775021 - r4774997;
        float r4775023 = r4775006 ? r4775015 : r4775022;
        float r4775024 = r4774994 ? r4775004 : r4775023;
        return r4775024;
}

double f_od(double x, double eps) {
        double r4775025 = eps;
        double r4775026 = -1.5978287878901397e-47;
        bool r4775027 = r4775025 <= r4775026;
        double r4775028 = 1.0;
        double r4775029 = x;
        double r4775030 = tan(r4775029);
        double r4775031 = tan(r4775025);
        double r4775032 = r4775030 * r4775031;
        double r4775033 = r4775028 - r4775032;
        double r4775034 = r4775030 + r4775031;
        double r4775035 = r4775033 / r4775034;
        double r4775036 = r4775028 / r4775035;
        double r4775037 = r4775036 - r4775030;
        double r4775038 = 4.820454443524605e-45;
        bool r4775039 = r4775025 <= r4775038;
        double r4775040 = r4775025 * (r4775025 * r4775025);
        double r4775041 = r4775029 * r4775029;
        double r4775042 = r4775040 * r4775041;
        double r4775043 = r4775025 + r4775042;
        double r4775044 = r4775029 * (r4775029 * r4775029);
        double r4775045 = 4.0;
        double r4775046 = pow(r4775025, r4775045);
        double r4775047 = r4775044 * r4775046;
        double r4775048 = r4775043 + r4775047;
        double r4775049 = r4775030 * (r4775030 * r4775030);
        double r4775050 = r4775031 * (r4775031 * r4775031);
        double r4775051 = r4775049 * r4775050;
        double r4775052 = cbrt(r4775051);
        double r4775053 = r4775028 - r4775052;
        double r4775054 = r4775034 / r4775053;
        double r4775055 = r4775054 - r4775030;
        double r4775056 = r4775039 ? r4775048 : r4775055;
        double r4775057 = r4775027 ? r4775037 : r4775056;
        return r4775057;
}

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 r4775058, r4775059, r4775060, r4775061, r4775062, r4775063;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4775058);
        mpfr_init(r4775059);
        mpfr_init(r4775060);
        mpfr_init(r4775061);
        mpfr_init(r4775062);
        mpfr_init(r4775063);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4775058, x, MPFR_RNDN);
        mpfr_set_d(r4775059, eps, MPFR_RNDN);
        mpfr_add(r4775060, r4775058, r4775059, MPFR_RNDN);
        mpfr_tan(r4775061, r4775060, MPFR_RNDN);
        mpfr_tan(r4775062, r4775058, MPFR_RNDN);
        mpfr_sub(r4775063, r4775061, r4775062, MPFR_RNDN);
        return mpfr_get_d(r4775063, MPFR_RNDN);
}

static mpfr_t r4775064, r4775065, r4775066, r4775067, r4775068, r4775069, r4775070, r4775071, r4775072, r4775073, r4775074, r4775075, r4775076, r4775077, r4775078, r4775079, r4775080, r4775081, r4775082, r4775083, r4775084, r4775085, r4775086, r4775087, r4775088, r4775089, r4775090, r4775091, r4775092, r4775093, r4775094, r4775095, r4775096;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4775064);
        mpfr_init_set_str(r4775065, "-1.5978287878901397e-47", 10, MPFR_RNDN);
        mpfr_init(r4775066);
        mpfr_init_set_str(r4775067, "1", 10, MPFR_RNDN);
        mpfr_init(r4775068);
        mpfr_init(r4775069);
        mpfr_init(r4775070);
        mpfr_init(r4775071);
        mpfr_init(r4775072);
        mpfr_init(r4775073);
        mpfr_init(r4775074);
        mpfr_init(r4775075);
        mpfr_init(r4775076);
        mpfr_init_set_str(r4775077, "4.820454443524605e-45", 10, MPFR_RNDN);
        mpfr_init(r4775078);
        mpfr_init(r4775079);
        mpfr_init(r4775080);
        mpfr_init(r4775081);
        mpfr_init(r4775082);
        mpfr_init(r4775083);
        mpfr_init_set_str(r4775084, "4", 10, MPFR_RNDN);
        mpfr_init(r4775085);
        mpfr_init(r4775086);
        mpfr_init(r4775087);
        mpfr_init(r4775088);
        mpfr_init(r4775089);
        mpfr_init(r4775090);
        mpfr_init(r4775091);
        mpfr_init(r4775092);
        mpfr_init(r4775093);
        mpfr_init(r4775094);
        mpfr_init(r4775095);
        mpfr_init(r4775096);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4775064, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4775066, mpfr_cmp(r4775064, r4775065) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4775068, x, MPFR_RNDN);
        mpfr_tan(r4775069, r4775068, MPFR_RNDN);
        mpfr_tan(r4775070, r4775064, MPFR_RNDN);
        mpfr_mul(r4775071, r4775069, r4775070, MPFR_RNDN);
        mpfr_sub(r4775072, r4775067, r4775071, MPFR_RNDN);
        mpfr_add(r4775073, r4775069, r4775070, MPFR_RNDN);
        mpfr_div(r4775074, r4775072, r4775073, MPFR_RNDN);
        mpfr_div(r4775075, r4775067, r4775074, MPFR_RNDN);
        mpfr_sub(r4775076, r4775075, r4775069, MPFR_RNDN);
        ;
        mpfr_set_si(r4775078, mpfr_cmp(r4775064, r4775077) <= 0, MPFR_RNDN);
        mpfr_mul(r4775079, r4775064, r4775064, MPFR_RNDN); mpfr_mul(r4775079, r4775079, r4775064, MPFR_RNDN);
        mpfr_mul(r4775080, r4775068, r4775068, MPFR_RNDN);
        mpfr_mul(r4775081, r4775079, r4775080, MPFR_RNDN);
        mpfr_add(r4775082, r4775064, r4775081, MPFR_RNDN);
        mpfr_mul(r4775083, r4775068, r4775068, MPFR_RNDN); mpfr_mul(r4775083, r4775083, r4775068, MPFR_RNDN);
        ;
        mpfr_pow(r4775085, r4775064, r4775084, MPFR_RNDN);
        mpfr_mul(r4775086, r4775083, r4775085, MPFR_RNDN);
        mpfr_add(r4775087, r4775082, r4775086, MPFR_RNDN);
        mpfr_mul(r4775088, r4775069, r4775069, MPFR_RNDN); mpfr_mul(r4775088, r4775088, r4775069, MPFR_RNDN);
        mpfr_mul(r4775089, r4775070, r4775070, MPFR_RNDN); mpfr_mul(r4775089, r4775089, r4775070, MPFR_RNDN);
        mpfr_mul(r4775090, r4775088, r4775089, MPFR_RNDN);
        mpfr_cbrt(r4775091, r4775090, MPFR_RNDN);
        mpfr_sub(r4775092, r4775067, r4775091, MPFR_RNDN);
        mpfr_div(r4775093, r4775073, r4775092, MPFR_RNDN);
        mpfr_sub(r4775094, r4775093, r4775069, MPFR_RNDN);
        if (mpfr_get_si(r4775078, MPFR_RNDN)) { mpfr_set(r4775095, r4775087, MPFR_RNDN); } else { mpfr_set(r4775095, r4775094, MPFR_RNDN); };
        if (mpfr_get_si(r4775066, MPFR_RNDN)) { mpfr_set(r4775096, r4775076, MPFR_RNDN); } else { mpfr_set(r4775096, r4775095, MPFR_RNDN); };
        return mpfr_get_d(r4775096, MPFR_RNDN);
}

static mpfr_t r4775097, r4775098, r4775099, r4775100, r4775101, r4775102, r4775103, r4775104, r4775105, r4775106, r4775107, r4775108, r4775109, r4775110, r4775111, r4775112, r4775113, r4775114, r4775115, r4775116, r4775117, r4775118, r4775119, r4775120, r4775121, r4775122, r4775123, r4775124, r4775125, r4775126, r4775127, r4775128, r4775129;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4775097);
        mpfr_init_set_str(r4775098, "-1.5978287878901397e-47", 10, MPFR_RNDN);
        mpfr_init(r4775099);
        mpfr_init_set_str(r4775100, "1", 10, MPFR_RNDN);
        mpfr_init(r4775101);
        mpfr_init(r4775102);
        mpfr_init(r4775103);
        mpfr_init(r4775104);
        mpfr_init(r4775105);
        mpfr_init(r4775106);
        mpfr_init(r4775107);
        mpfr_init(r4775108);
        mpfr_init(r4775109);
        mpfr_init_set_str(r4775110, "4.820454443524605e-45", 10, MPFR_RNDN);
        mpfr_init(r4775111);
        mpfr_init(r4775112);
        mpfr_init(r4775113);
        mpfr_init(r4775114);
        mpfr_init(r4775115);
        mpfr_init(r4775116);
        mpfr_init_set_str(r4775117, "4", 10, MPFR_RNDN);
        mpfr_init(r4775118);
        mpfr_init(r4775119);
        mpfr_init(r4775120);
        mpfr_init(r4775121);
        mpfr_init(r4775122);
        mpfr_init(r4775123);
        mpfr_init(r4775124);
        mpfr_init(r4775125);
        mpfr_init(r4775126);
        mpfr_init(r4775127);
        mpfr_init(r4775128);
        mpfr_init(r4775129);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4775097, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4775099, mpfr_cmp(r4775097, r4775098) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4775101, x, MPFR_RNDN);
        mpfr_tan(r4775102, r4775101, MPFR_RNDN);
        mpfr_tan(r4775103, r4775097, MPFR_RNDN);
        mpfr_mul(r4775104, r4775102, r4775103, MPFR_RNDN);
        mpfr_sub(r4775105, r4775100, r4775104, MPFR_RNDN);
        mpfr_add(r4775106, r4775102, r4775103, MPFR_RNDN);
        mpfr_div(r4775107, r4775105, r4775106, MPFR_RNDN);
        mpfr_div(r4775108, r4775100, r4775107, MPFR_RNDN);
        mpfr_sub(r4775109, r4775108, r4775102, MPFR_RNDN);
        ;
        mpfr_set_si(r4775111, mpfr_cmp(r4775097, r4775110) <= 0, MPFR_RNDN);
        mpfr_mul(r4775112, r4775097, r4775097, MPFR_RNDN); mpfr_mul(r4775112, r4775112, r4775097, MPFR_RNDN);
        mpfr_mul(r4775113, r4775101, r4775101, MPFR_RNDN);
        mpfr_mul(r4775114, r4775112, r4775113, MPFR_RNDN);
        mpfr_add(r4775115, r4775097, r4775114, MPFR_RNDN);
        mpfr_mul(r4775116, r4775101, r4775101, MPFR_RNDN); mpfr_mul(r4775116, r4775116, r4775101, MPFR_RNDN);
        ;
        mpfr_pow(r4775118, r4775097, r4775117, MPFR_RNDN);
        mpfr_mul(r4775119, r4775116, r4775118, MPFR_RNDN);
        mpfr_add(r4775120, r4775115, r4775119, MPFR_RNDN);
        mpfr_mul(r4775121, r4775102, r4775102, MPFR_RNDN); mpfr_mul(r4775121, r4775121, r4775102, MPFR_RNDN);
        mpfr_mul(r4775122, r4775103, r4775103, MPFR_RNDN); mpfr_mul(r4775122, r4775122, r4775103, MPFR_RNDN);
        mpfr_mul(r4775123, r4775121, r4775122, MPFR_RNDN);
        mpfr_cbrt(r4775124, r4775123, MPFR_RNDN);
        mpfr_sub(r4775125, r4775100, r4775124, MPFR_RNDN);
        mpfr_div(r4775126, r4775106, r4775125, MPFR_RNDN);
        mpfr_sub(r4775127, r4775126, r4775102, MPFR_RNDN);
        if (mpfr_get_si(r4775111, MPFR_RNDN)) { mpfr_set(r4775128, r4775120, MPFR_RNDN); } else { mpfr_set(r4775128, r4775127, MPFR_RNDN); };
        if (mpfr_get_si(r4775099, MPFR_RNDN)) { mpfr_set(r4775129, r4775109, MPFR_RNDN); } else { mpfr_set(r4775129, r4775128, MPFR_RNDN); };
        return mpfr_get_d(r4775129, MPFR_RNDN);
}

