#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 r31044 = 2;
        float r31045 = x;
        float r31046 = exp(r31045);
        float r31047 = -r31045;
        float r31048 = exp(r31047);
        float r31049 = r31046 + r31048;
        float r31050 = r31044 / r31049;
        return r31050;
}

double f_id(double x) {
        double r31051 = 2;
        double r31052 = x;
        double r31053 = exp(r31052);
        double r31054 = -r31052;
        double r31055 = exp(r31054);
        double r31056 = r31053 + r31055;
        double r31057 = r31051 / r31056;
        return r31057;
}


double f_of(float x) {
        float r31058 = 2;
        float r31059 = x;
        float r31060 = exp(r31059);
        float r31061 = -r31059;
        float r31062 = exp(r31061);
        float r31063 = r31060 + r31062;
        float r31064 = r31058 / r31063;
        return r31064;
}

double f_od(double x) {
        double r31065 = 2;
        double r31066 = x;
        double r31067 = exp(r31066);
        double r31068 = -r31066;
        double r31069 = exp(r31068);
        double r31070 = r31067 + r31069;
        double r31071 = r31065 / r31070;
        return r31071;
}

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 r31072, r31073, r31074, r31075, r31076, r31077, r31078;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31072, "2", 10, MPFR_RNDN);
        mpfr_init(r31073);
        mpfr_init(r31074);
        mpfr_init(r31075);
        mpfr_init(r31076);
        mpfr_init(r31077);
        mpfr_init(r31078);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31073, x, MPFR_RNDN);
        mpfr_exp(r31074, r31073, MPFR_RNDN);
        mpfr_neg(r31075, r31073, MPFR_RNDN);
        mpfr_exp(r31076, r31075, MPFR_RNDN);
        mpfr_add(r31077, r31074, r31076, MPFR_RNDN);
        mpfr_div(r31078, r31072, r31077, MPFR_RNDN);
        return mpfr_get_d(r31078, MPFR_RNDN);
}

static mpfr_t r31079, r31080, r31081, r31082, r31083, r31084, r31085;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31079, "2", 10, MPFR_RNDN);
        mpfr_init(r31080);
        mpfr_init(r31081);
        mpfr_init(r31082);
        mpfr_init(r31083);
        mpfr_init(r31084);
        mpfr_init(r31085);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31080, x, MPFR_RNDN);
        mpfr_exp(r31081, r31080, MPFR_RNDN);
        mpfr_neg(r31082, r31080, MPFR_RNDN);
        mpfr_exp(r31083, r31082, MPFR_RNDN);
        mpfr_add(r31084, r31081, r31083, MPFR_RNDN);
        mpfr_div(r31085, r31079, r31084, MPFR_RNDN);
        return mpfr_get_d(r31085, MPFR_RNDN);
}

static mpfr_t r31086, r31087, r31088, r31089, r31090, r31091, r31092;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31086, "2", 10, MPFR_RNDN);
        mpfr_init(r31087);
        mpfr_init(r31088);
        mpfr_init(r31089);
        mpfr_init(r31090);
        mpfr_init(r31091);
        mpfr_init(r31092);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31087, x, MPFR_RNDN);
        mpfr_exp(r31088, r31087, MPFR_RNDN);
        mpfr_neg(r31089, r31087, MPFR_RNDN);
        mpfr_exp(r31090, r31089, MPFR_RNDN);
        mpfr_add(r31091, r31088, r31090, MPFR_RNDN);
        mpfr_div(r31092, r31086, r31091, MPFR_RNDN);
        return mpfr_get_d(r31092, MPFR_RNDN);
}

