#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 r9080 = 2;
        float r9081 = x;
        float r9082 = exp(r9081);
        float r9083 = -r9081;
        float r9084 = exp(r9083);
        float r9085 = r9082 + r9084;
        float r9086 = r9080 / r9085;
        return r9086;
}

double f_id(double x) {
        double r9087 = 2;
        double r9088 = x;
        double r9089 = exp(r9088);
        double r9090 = -r9088;
        double r9091 = exp(r9090);
        double r9092 = r9089 + r9091;
        double r9093 = r9087 / r9092;
        return r9093;
}


double f_of(float x) {
        float r9094 = 2;
        float r9095 = x;
        float r9096 = exp(r9095);
        float r9097 = -r9095;
        float r9098 = exp(r9097);
        float r9099 = r9096 + r9098;
        float r9100 = r9094 / r9099;
        return r9100;
}

double f_od(double x) {
        double r9101 = 2;
        double r9102 = x;
        double r9103 = exp(r9102);
        double r9104 = -r9102;
        double r9105 = exp(r9104);
        double r9106 = r9103 + r9105;
        double r9107 = r9101 / r9106;
        return r9107;
}

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 r9108, r9109, r9110, r9111, r9112, r9113, r9114;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9108, "2", 10, MPFR_RNDN);
        mpfr_init(r9109);
        mpfr_init(r9110);
        mpfr_init(r9111);
        mpfr_init(r9112);
        mpfr_init(r9113);
        mpfr_init(r9114);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9109, x, MPFR_RNDN);
        mpfr_exp(r9110, r9109, MPFR_RNDN);
        mpfr_neg(r9111, r9109, MPFR_RNDN);
        mpfr_exp(r9112, r9111, MPFR_RNDN);
        mpfr_add(r9113, r9110, r9112, MPFR_RNDN);
        mpfr_div(r9114, r9108, r9113, MPFR_RNDN);
        return mpfr_get_d(r9114, MPFR_RNDN);
}

static mpfr_t r9115, r9116, r9117, r9118, r9119, r9120, r9121;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9115, "2", 10, MPFR_RNDN);
        mpfr_init(r9116);
        mpfr_init(r9117);
        mpfr_init(r9118);
        mpfr_init(r9119);
        mpfr_init(r9120);
        mpfr_init(r9121);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r9116, x, MPFR_RNDN);
        mpfr_exp(r9117, r9116, MPFR_RNDN);
        mpfr_neg(r9118, r9116, MPFR_RNDN);
        mpfr_exp(r9119, r9118, MPFR_RNDN);
        mpfr_add(r9120, r9117, r9119, MPFR_RNDN);
        mpfr_div(r9121, r9115, r9120, MPFR_RNDN);
        return mpfr_get_d(r9121, MPFR_RNDN);
}

static mpfr_t r9122, r9123, r9124, r9125, r9126, r9127, r9128;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9122, "2", 10, MPFR_RNDN);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r9123, x, MPFR_RNDN);
        mpfr_exp(r9124, r9123, MPFR_RNDN);
        mpfr_neg(r9125, r9123, MPFR_RNDN);
        mpfr_exp(r9126, r9125, MPFR_RNDN);
        mpfr_add(r9127, r9124, r9126, MPFR_RNDN);
        mpfr_div(r9128, r9122, r9127, MPFR_RNDN);
        return mpfr_get_d(r9128, MPFR_RNDN);
}

