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

char *name = "Hyperbolic secant";

double f_if(float x) {
        float r31161 = 2;
        float r31162 = x;
        float r31163 = exp(r31162);
        float r31164 = -r31162;
        float r31165 = exp(r31164);
        float r31166 = r31163 + r31165;
        float r31167 = r31161 / r31166;
        return r31167;
}

double f_id(double x) {
        double r31168 = 2;
        double r31169 = x;
        double r31170 = exp(r31169);
        double r31171 = -r31169;
        double r31172 = exp(r31171);
        double r31173 = r31170 + r31172;
        double r31174 = r31168 / r31173;
        return r31174;
}


double f_of(float x) {
        float r31175 = 2;
        float r31176 = x;
        float r31177 = exp(r31176);
        float r31178 = -r31176;
        float r31179 = exp(r31178);
        float r31180 = r31177 + r31179;
        float r31181 = r31175 / r31180;
        return r31181;
}

double f_od(double x) {
        double r31182 = 2;
        double r31183 = x;
        double r31184 = exp(r31183);
        double r31185 = -r31183;
        double r31186 = exp(r31185);
        double r31187 = r31184 + r31186;
        double r31188 = r31182 / r31187;
        return r31188;
}

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 r31189, r31190, r31191, r31192, r31193, r31194, r31195;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31189, "2", 10, MPFR_RNDN);
        mpfr_init(r31190);
        mpfr_init(r31191);
        mpfr_init(r31192);
        mpfr_init(r31193);
        mpfr_init(r31194);
        mpfr_init(r31195);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31190, x, MPFR_RNDN);
        mpfr_exp(r31191, r31190, MPFR_RNDN);
        mpfr_neg(r31192, r31190, MPFR_RNDN);
        mpfr_exp(r31193, r31192, MPFR_RNDN);
        mpfr_add(r31194, r31191, r31193, MPFR_RNDN);
        mpfr_div(r31195, r31189, r31194, MPFR_RNDN);
        return mpfr_get_d(r31195, MPFR_RNDN);
}

static mpfr_t r31196, r31197, r31198, r31199, r31200, r31201, r31202;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31196, "2", 10, MPFR_RNDN);
        mpfr_init(r31197);
        mpfr_init(r31198);
        mpfr_init(r31199);
        mpfr_init(r31200);
        mpfr_init(r31201);
        mpfr_init(r31202);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31197, x, MPFR_RNDN);
        mpfr_exp(r31198, r31197, MPFR_RNDN);
        mpfr_neg(r31199, r31197, MPFR_RNDN);
        mpfr_exp(r31200, r31199, MPFR_RNDN);
        mpfr_add(r31201, r31198, r31200, MPFR_RNDN);
        mpfr_div(r31202, r31196, r31201, MPFR_RNDN);
        return mpfr_get_d(r31202, MPFR_RNDN);
}

static mpfr_t r31203, r31204, r31205, r31206, r31207, r31208, r31209;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31203, "2", 10, MPFR_RNDN);
        mpfr_init(r31204);
        mpfr_init(r31205);
        mpfr_init(r31206);
        mpfr_init(r31207);
        mpfr_init(r31208);
        mpfr_init(r31209);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31204, x, MPFR_RNDN);
        mpfr_exp(r31205, r31204, MPFR_RNDN);
        mpfr_neg(r31206, r31204, MPFR_RNDN);
        mpfr_exp(r31207, r31206, MPFR_RNDN);
        mpfr_add(r31208, r31205, r31207, MPFR_RNDN);
        mpfr_div(r31209, r31203, r31208, MPFR_RNDN);
        return mpfr_get_d(r31209, MPFR_RNDN);
}

