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

char *name = "Trigonometry B";

double f_if(float x) {
        float r23974 = 1;
        float r23975 = x;
        float r23976 = tan(r23975);
        float r23977 = r23976 * r23976;
        float r23978 = r23974 - r23977;
        float r23979 = r23974 + r23977;
        float r23980 = r23978 / r23979;
        return r23980;
}

double f_id(double x) {
        double r23981 = 1;
        double r23982 = x;
        double r23983 = tan(r23982);
        double r23984 = r23983 * r23983;
        double r23985 = r23981 - r23984;
        double r23986 = r23981 + r23984;
        double r23987 = r23985 / r23986;
        return r23987;
}


double f_of(float x) {
        float r23988 = x;
        float r23989 = tan(r23988);
        float r23990 = 1;
        float r23991 = -r23990;
        float r23992 = fma(r23989, r23989, r23991);
        float r23993 = fma(r23989, r23989, r23990);
        float r23994 = -r23993;
        float r23995 = r23992 / r23994;
        return r23995;
}

double f_od(double x) {
        double r23996 = x;
        double r23997 = tan(r23996);
        double r23998 = 1;
        double r23999 = -r23998;
        double r24000 = fma(r23997, r23997, r23999);
        double r24001 = fma(r23997, r23997, r23998);
        double r24002 = -r24001;
        double r24003 = r24000 / r24002;
        return r24003;
}

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 r24004, r24005, r24006, r24007, r24008, r24009, r24010;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r24004, "1", 10, MPFR_RNDN);
        mpfr_init(r24005);
        mpfr_init(r24006);
        mpfr_init(r24007);
        mpfr_init(r24008);
        mpfr_init(r24009);
        mpfr_init(r24010);
}

double f_im(double x) {
        ;
        mpfr_set_d(r24005, x, MPFR_RNDN);
        mpfr_tan(r24006, r24005, MPFR_RNDN);
        mpfr_mul(r24007, r24006, r24006, MPFR_RNDN);
        mpfr_sub(r24008, r24004, r24007, MPFR_RNDN);
        mpfr_add(r24009, r24004, r24007, MPFR_RNDN);
        mpfr_div(r24010, r24008, r24009, MPFR_RNDN);
        return mpfr_get_d(r24010, MPFR_RNDN);
}

static mpfr_t r24011, r24012, r24013, r24014, r24015, r24016, r24017, r24018;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r24011);
        mpfr_init(r24012);
        mpfr_init_set_str(r24013, "1", 10, MPFR_RNDN);
        mpfr_init(r24014);
        mpfr_init(r24015);
        mpfr_init(r24016);
        mpfr_init(r24017);
        mpfr_init(r24018);
}

double f_fm(double x) {
        mpfr_set_d(r24011, x, MPFR_RNDN);
        mpfr_tan(r24012, r24011, MPFR_RNDN);
        ;
        mpfr_neg(r24014, r24013, MPFR_RNDN);
        mpfr_fma(r24015, r24012, r24012, r24014, MPFR_RNDN);
        mpfr_fma(r24016, r24012, r24012, r24013, MPFR_RNDN);
        mpfr_neg(r24017, r24016, MPFR_RNDN);
        mpfr_div(r24018, r24015, r24017, MPFR_RNDN);
        return mpfr_get_d(r24018, MPFR_RNDN);
}

static mpfr_t r24019, r24020, r24021, r24022, r24023, r24024, r24025, r24026;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r24019);
        mpfr_init(r24020);
        mpfr_init_set_str(r24021, "1", 10, MPFR_RNDN);
        mpfr_init(r24022);
        mpfr_init(r24023);
        mpfr_init(r24024);
        mpfr_init(r24025);
        mpfr_init(r24026);
}

double f_dm(double x) {
        mpfr_set_d(r24019, x, MPFR_RNDN);
        mpfr_tan(r24020, r24019, MPFR_RNDN);
        ;
        mpfr_neg(r24022, r24021, MPFR_RNDN);
        mpfr_fma(r24023, r24020, r24020, r24022, MPFR_RNDN);
        mpfr_fma(r24024, r24020, r24020, r24021, MPFR_RNDN);
        mpfr_neg(r24025, r24024, MPFR_RNDN);
        mpfr_div(r24026, r24023, r24025, MPFR_RNDN);
        return mpfr_get_d(r24026, MPFR_RNDN);
}

