#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 r31457 = 2;
        float r31458 = x;
        float r31459 = exp(r31458);
        float r31460 = -r31458;
        float r31461 = exp(r31460);
        float r31462 = r31459 + r31461;
        float r31463 = r31457 / r31462;
        return r31463;
}

double f_id(double x) {
        double r31464 = 2;
        double r31465 = x;
        double r31466 = exp(r31465);
        double r31467 = -r31465;
        double r31468 = exp(r31467);
        double r31469 = r31466 + r31468;
        double r31470 = r31464 / r31469;
        return r31470;
}


double f_of(float x) {
        float r31471 = 2;
        float r31472 = x;
        float r31473 = exp(r31472);
        float r31474 = -r31472;
        float r31475 = exp(r31474);
        float r31476 = r31473 + r31475;
        float r31477 = r31471 / r31476;
        return r31477;
}

double f_od(double x) {
        double r31478 = 2;
        double r31479 = x;
        double r31480 = exp(r31479);
        double r31481 = -r31479;
        double r31482 = exp(r31481);
        double r31483 = r31480 + r31482;
        double r31484 = r31478 / r31483;
        return r31484;
}

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 r31485, r31486, r31487, r31488, r31489, r31490, r31491;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31485, "2", 10, MPFR_RNDN);
        mpfr_init(r31486);
        mpfr_init(r31487);
        mpfr_init(r31488);
        mpfr_init(r31489);
        mpfr_init(r31490);
        mpfr_init(r31491);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31486, x, MPFR_RNDN);
        mpfr_exp(r31487, r31486, MPFR_RNDN);
        mpfr_neg(r31488, r31486, MPFR_RNDN);
        mpfr_exp(r31489, r31488, MPFR_RNDN);
        mpfr_add(r31490, r31487, r31489, MPFR_RNDN);
        mpfr_div(r31491, r31485, r31490, MPFR_RNDN);
        return mpfr_get_d(r31491, MPFR_RNDN);
}

static mpfr_t r31492, r31493, r31494, r31495, r31496, r31497, r31498;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31492, "2", 10, MPFR_RNDN);
        mpfr_init(r31493);
        mpfr_init(r31494);
        mpfr_init(r31495);
        mpfr_init(r31496);
        mpfr_init(r31497);
        mpfr_init(r31498);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31493, x, MPFR_RNDN);
        mpfr_exp(r31494, r31493, MPFR_RNDN);
        mpfr_neg(r31495, r31493, MPFR_RNDN);
        mpfr_exp(r31496, r31495, MPFR_RNDN);
        mpfr_add(r31497, r31494, r31496, MPFR_RNDN);
        mpfr_div(r31498, r31492, r31497, MPFR_RNDN);
        return mpfr_get_d(r31498, MPFR_RNDN);
}

static mpfr_t r31499, r31500, r31501, r31502, r31503, r31504, r31505;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31499, "2", 10, MPFR_RNDN);
        mpfr_init(r31500);
        mpfr_init(r31501);
        mpfr_init(r31502);
        mpfr_init(r31503);
        mpfr_init(r31504);
        mpfr_init(r31505);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31500, x, MPFR_RNDN);
        mpfr_exp(r31501, r31500, MPFR_RNDN);
        mpfr_neg(r31502, r31500, MPFR_RNDN);
        mpfr_exp(r31503, r31502, MPFR_RNDN);
        mpfr_add(r31504, r31501, r31503, MPFR_RNDN);
        mpfr_div(r31505, r31499, r31504, MPFR_RNDN);
        return mpfr_get_d(r31505, MPFR_RNDN);
}

