#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 r29181 = 2.0f;
        float r29182 = x;
        float r29183 = exp(r29182);
        float r29184 = -r29182;
        float r29185 = exp(r29184);
        float r29186 = r29183 + r29185;
        float r29187 = r29181 / r29186;
        return r29187;
}

double f_id(double x) {
        double r29188 = 2.0;
        double r29189 = x;
        double r29190 = exp(r29189);
        double r29191 = -r29189;
        double r29192 = exp(r29191);
        double r29193 = r29190 + r29192;
        double r29194 = r29188 / r29193;
        return r29194;
}


double f_of(float x) {
        float r29195 = 2.0f;
        float r29196 = x;
        float r29197 = exp(r29196);
        float r29198 = -r29196;
        float r29199 = exp(r29198);
        float r29200 = r29197 + r29199;
        float r29201 = r29195 / r29200;
        return r29201;
}

double f_od(double x) {
        double r29202 = 2.0;
        double r29203 = x;
        double r29204 = exp(r29203);
        double r29205 = -r29203;
        double r29206 = exp(r29205);
        double r29207 = r29204 + r29206;
        double r29208 = r29202 / r29207;
        return r29208;
}

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 r29209, r29210, r29211, r29212, r29213, r29214, r29215;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r29209, "2", 10, MPFR_RNDN);
        mpfr_init(r29210);
        mpfr_init(r29211);
        mpfr_init(r29212);
        mpfr_init(r29213);
        mpfr_init(r29214);
        mpfr_init(r29215);
}

double f_im(double x) {
        ;
        mpfr_set_d(r29210, x, MPFR_RNDN);
        mpfr_exp(r29211, r29210, MPFR_RNDN);
        mpfr_neg(r29212, r29210, MPFR_RNDN);
        mpfr_exp(r29213, r29212, MPFR_RNDN);
        mpfr_add(r29214, r29211, r29213, MPFR_RNDN);
        mpfr_div(r29215, r29209, r29214, MPFR_RNDN);
        return mpfr_get_d(r29215, MPFR_RNDN);
}

static mpfr_t r29216, r29217, r29218, r29219, r29220, r29221, r29222;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r29216, "2", 10, MPFR_RNDN);
        mpfr_init(r29217);
        mpfr_init(r29218);
        mpfr_init(r29219);
        mpfr_init(r29220);
        mpfr_init(r29221);
        mpfr_init(r29222);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r29217, x, MPFR_RNDN);
        mpfr_exp(r29218, r29217, MPFR_RNDN);
        mpfr_neg(r29219, r29217, MPFR_RNDN);
        mpfr_exp(r29220, r29219, MPFR_RNDN);
        mpfr_add(r29221, r29218, r29220, MPFR_RNDN);
        mpfr_div(r29222, r29216, r29221, MPFR_RNDN);
        return mpfr_get_d(r29222, MPFR_RNDN);
}

static mpfr_t r29223, r29224, r29225, r29226, r29227, r29228, r29229;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r29223, "2", 10, MPFR_RNDN);
        mpfr_init(r29224);
        mpfr_init(r29225);
        mpfr_init(r29226);
        mpfr_init(r29227);
        mpfr_init(r29228);
        mpfr_init(r29229);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r29224, x, MPFR_RNDN);
        mpfr_exp(r29225, r29224, MPFR_RNDN);
        mpfr_neg(r29226, r29224, MPFR_RNDN);
        mpfr_exp(r29227, r29226, MPFR_RNDN);
        mpfr_add(r29228, r29225, r29227, MPFR_RNDN);
        mpfr_div(r29229, r29223, r29228, MPFR_RNDN);
        return mpfr_get_d(r29229, MPFR_RNDN);
}

