#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 r8114 = 1;
        float r8115 = x;
        float r8116 = tan(r8115);
        float r8117 = r8116 * r8116;
        float r8118 = r8114 - r8117;
        float r8119 = r8114 + r8117;
        float r8120 = r8118 / r8119;
        return r8120;
}

double f_id(double x) {
        double r8121 = 1;
        double r8122 = x;
        double r8123 = tan(r8122);
        double r8124 = r8123 * r8123;
        double r8125 = r8121 - r8124;
        double r8126 = r8121 + r8124;
        double r8127 = r8125 / r8126;
        return r8127;
}


double f_of(float x) {
        float r8128 = 1;
        float r8129 = x;
        float r8130 = tan(r8129);
        float r8131 = r8130 * r8130;
        float r8132 = r8128 - r8131;
        float r8133 = r8128 + r8131;
        float r8134 = r8132 / r8133;
        float r8135 = exp(r8134);
        float r8136 = log(r8135);
        return r8136;
}

double f_od(double x) {
        double r8137 = 1;
        double r8138 = x;
        double r8139 = tan(r8138);
        double r8140 = r8139 * r8139;
        double r8141 = r8137 - r8140;
        double r8142 = r8137 + r8140;
        double r8143 = r8141 / r8142;
        double r8144 = exp(r8143);
        double r8145 = log(r8144);
        return r8145;
}

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 r8146, r8147, r8148, r8149, r8150, r8151, r8152;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8146, "1", 10, MPFR_RNDN);
        mpfr_init(r8147);
        mpfr_init(r8148);
        mpfr_init(r8149);
        mpfr_init(r8150);
        mpfr_init(r8151);
        mpfr_init(r8152);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8147, x, MPFR_RNDN);
        mpfr_tan(r8148, r8147, MPFR_RNDN);
        mpfr_mul(r8149, r8148, r8148, MPFR_RNDN);
        mpfr_sub(r8150, r8146, r8149, MPFR_RNDN);
        mpfr_add(r8151, r8146, r8149, MPFR_RNDN);
        mpfr_div(r8152, r8150, r8151, MPFR_RNDN);
        return mpfr_get_d(r8152, MPFR_RNDN);
}

static mpfr_t r8153, r8154, r8155, r8156, r8157, r8158, r8159, r8160, r8161;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8153, "1", 10, MPFR_RNDN);
        mpfr_init(r8154);
        mpfr_init(r8155);
        mpfr_init(r8156);
        mpfr_init(r8157);
        mpfr_init(r8158);
        mpfr_init(r8159);
        mpfr_init(r8160);
        mpfr_init(r8161);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8154, x, MPFR_RNDN);
        mpfr_tan(r8155, r8154, MPFR_RNDN);
        mpfr_mul(r8156, r8155, r8155, MPFR_RNDN);
        mpfr_sub(r8157, r8153, r8156, MPFR_RNDN);
        mpfr_add(r8158, r8153, r8156, MPFR_RNDN);
        mpfr_div(r8159, r8157, r8158, MPFR_RNDN);
        mpfr_exp(r8160, r8159, MPFR_RNDN);
        mpfr_log(r8161, r8160, MPFR_RNDN);
        return mpfr_get_d(r8161, MPFR_RNDN);
}

static mpfr_t r8162, r8163, r8164, r8165, r8166, r8167, r8168, r8169, r8170;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8162, "1", 10, MPFR_RNDN);
        mpfr_init(r8163);
        mpfr_init(r8164);
        mpfr_init(r8165);
        mpfr_init(r8166);
        mpfr_init(r8167);
        mpfr_init(r8168);
        mpfr_init(r8169);
        mpfr_init(r8170);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8163, x, MPFR_RNDN);
        mpfr_tan(r8164, r8163, MPFR_RNDN);
        mpfr_mul(r8165, r8164, r8164, MPFR_RNDN);
        mpfr_sub(r8166, r8162, r8165, MPFR_RNDN);
        mpfr_add(r8167, r8162, r8165, MPFR_RNDN);
        mpfr_div(r8168, r8166, r8167, MPFR_RNDN);
        mpfr_exp(r8169, r8168, MPFR_RNDN);
        mpfr_log(r8170, r8169, MPFR_RNDN);
        return mpfr_get_d(r8170, MPFR_RNDN);
}

