#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 r31124 = 2;
        float r31125 = x;
        float r31126 = exp(r31125);
        float r31127 = -r31125;
        float r31128 = exp(r31127);
        float r31129 = r31126 + r31128;
        float r31130 = r31124 / r31129;
        return r31130;
}

double f_id(double x) {
        double r31131 = 2;
        double r31132 = x;
        double r31133 = exp(r31132);
        double r31134 = -r31132;
        double r31135 = exp(r31134);
        double r31136 = r31133 + r31135;
        double r31137 = r31131 / r31136;
        return r31137;
}


double f_of(float x) {
        float r31138 = 2;
        float r31139 = x;
        float r31140 = exp(r31139);
        float r31141 = -r31139;
        float r31142 = exp(r31141);
        float r31143 = r31140 + r31142;
        float r31144 = r31138 / r31143;
        return r31144;
}

double f_od(double x) {
        double r31145 = 2;
        double r31146 = x;
        double r31147 = exp(r31146);
        double r31148 = -r31146;
        double r31149 = exp(r31148);
        double r31150 = r31147 + r31149;
        double r31151 = r31145 / r31150;
        return r31151;
}

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 r31152, r31153, r31154, r31155, r31156, r31157, r31158;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31152, "2", 10, MPFR_RNDN);
        mpfr_init(r31153);
        mpfr_init(r31154);
        mpfr_init(r31155);
        mpfr_init(r31156);
        mpfr_init(r31157);
        mpfr_init(r31158);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31153, x, MPFR_RNDN);
        mpfr_exp(r31154, r31153, MPFR_RNDN);
        mpfr_neg(r31155, r31153, MPFR_RNDN);
        mpfr_exp(r31156, r31155, MPFR_RNDN);
        mpfr_add(r31157, r31154, r31156, MPFR_RNDN);
        mpfr_div(r31158, r31152, r31157, MPFR_RNDN);
        return mpfr_get_d(r31158, MPFR_RNDN);
}

static mpfr_t r31159, r31160, r31161, r31162, r31163, r31164, r31165;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31159, "2", 10, MPFR_RNDN);
        mpfr_init(r31160);
        mpfr_init(r31161);
        mpfr_init(r31162);
        mpfr_init(r31163);
        mpfr_init(r31164);
        mpfr_init(r31165);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31160, x, MPFR_RNDN);
        mpfr_exp(r31161, r31160, MPFR_RNDN);
        mpfr_neg(r31162, r31160, MPFR_RNDN);
        mpfr_exp(r31163, r31162, MPFR_RNDN);
        mpfr_add(r31164, r31161, r31163, MPFR_RNDN);
        mpfr_div(r31165, r31159, r31164, MPFR_RNDN);
        return mpfr_get_d(r31165, MPFR_RNDN);
}

static mpfr_t r31166, r31167, r31168, r31169, r31170, r31171, r31172;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31166, "2", 10, MPFR_RNDN);
        mpfr_init(r31167);
        mpfr_init(r31168);
        mpfr_init(r31169);
        mpfr_init(r31170);
        mpfr_init(r31171);
        mpfr_init(r31172);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31167, x, MPFR_RNDN);
        mpfr_exp(r31168, r31167, MPFR_RNDN);
        mpfr_neg(r31169, r31167, MPFR_RNDN);
        mpfr_exp(r31170, r31169, MPFR_RNDN);
        mpfr_add(r31171, r31168, r31170, MPFR_RNDN);
        mpfr_div(r31172, r31166, r31171, MPFR_RNDN);
        return mpfr_get_d(r31172, MPFR_RNDN);
}

