#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 r31693 = 2;
        float r31694 = x;
        float r31695 = exp(r31694);
        float r31696 = -r31694;
        float r31697 = exp(r31696);
        float r31698 = r31695 + r31697;
        float r31699 = r31693 / r31698;
        return r31699;
}

double f_id(double x) {
        double r31700 = 2;
        double r31701 = x;
        double r31702 = exp(r31701);
        double r31703 = -r31701;
        double r31704 = exp(r31703);
        double r31705 = r31702 + r31704;
        double r31706 = r31700 / r31705;
        return r31706;
}


double f_of(float x) {
        float r31707 = 2;
        float r31708 = x;
        float r31709 = exp(r31708);
        float r31710 = -r31708;
        float r31711 = exp(r31710);
        float r31712 = r31709 + r31711;
        float r31713 = r31707 / r31712;
        return r31713;
}

double f_od(double x) {
        double r31714 = 2;
        double r31715 = x;
        double r31716 = exp(r31715);
        double r31717 = -r31715;
        double r31718 = exp(r31717);
        double r31719 = r31716 + r31718;
        double r31720 = r31714 / r31719;
        return r31720;
}

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 r31721, r31722, r31723, r31724, r31725, r31726, r31727;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31721, "2", 10, MPFR_RNDN);
        mpfr_init(r31722);
        mpfr_init(r31723);
        mpfr_init(r31724);
        mpfr_init(r31725);
        mpfr_init(r31726);
        mpfr_init(r31727);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31722, x, MPFR_RNDN);
        mpfr_exp(r31723, r31722, MPFR_RNDN);
        mpfr_neg(r31724, r31722, MPFR_RNDN);
        mpfr_exp(r31725, r31724, MPFR_RNDN);
        mpfr_add(r31726, r31723, r31725, MPFR_RNDN);
        mpfr_div(r31727, r31721, r31726, MPFR_RNDN);
        return mpfr_get_d(r31727, MPFR_RNDN);
}

static mpfr_t r31728, r31729, r31730, r31731, r31732, r31733, r31734;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31728, "2", 10, MPFR_RNDN);
        mpfr_init(r31729);
        mpfr_init(r31730);
        mpfr_init(r31731);
        mpfr_init(r31732);
        mpfr_init(r31733);
        mpfr_init(r31734);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31729, x, MPFR_RNDN);
        mpfr_exp(r31730, r31729, MPFR_RNDN);
        mpfr_neg(r31731, r31729, MPFR_RNDN);
        mpfr_exp(r31732, r31731, MPFR_RNDN);
        mpfr_add(r31733, r31730, r31732, MPFR_RNDN);
        mpfr_div(r31734, r31728, r31733, MPFR_RNDN);
        return mpfr_get_d(r31734, MPFR_RNDN);
}

static mpfr_t r31735, r31736, r31737, r31738, r31739, r31740, r31741;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31735, "2", 10, MPFR_RNDN);
        mpfr_init(r31736);
        mpfr_init(r31737);
        mpfr_init(r31738);
        mpfr_init(r31739);
        mpfr_init(r31740);
        mpfr_init(r31741);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31736, x, MPFR_RNDN);
        mpfr_exp(r31737, r31736, MPFR_RNDN);
        mpfr_neg(r31738, r31736, MPFR_RNDN);
        mpfr_exp(r31739, r31738, MPFR_RNDN);
        mpfr_add(r31740, r31737, r31739, MPFR_RNDN);
        mpfr_div(r31741, r31735, r31740, MPFR_RNDN);
        return mpfr_get_d(r31741, MPFR_RNDN);
}

