#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 r31441 = 2;
        float r31442 = x;
        float r31443 = exp(r31442);
        float r31444 = -r31442;
        float r31445 = exp(r31444);
        float r31446 = r31443 + r31445;
        float r31447 = r31441 / r31446;
        return r31447;
}

double f_id(double x) {
        double r31448 = 2;
        double r31449 = x;
        double r31450 = exp(r31449);
        double r31451 = -r31449;
        double r31452 = exp(r31451);
        double r31453 = r31450 + r31452;
        double r31454 = r31448 / r31453;
        return r31454;
}


double f_of(float x) {
        float r31455 = 2;
        float r31456 = x;
        float r31457 = exp(r31456);
        float r31458 = -r31456;
        float r31459 = exp(r31458);
        float r31460 = r31457 + r31459;
        float r31461 = r31455 / r31460;
        return r31461;
}

double f_od(double x) {
        double r31462 = 2;
        double r31463 = x;
        double r31464 = exp(r31463);
        double r31465 = -r31463;
        double r31466 = exp(r31465);
        double r31467 = r31464 + r31466;
        double r31468 = r31462 / r31467;
        return r31468;
}

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 r31469, r31470, r31471, r31472, r31473, r31474, r31475;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31469, "2", 10, MPFR_RNDN);
        mpfr_init(r31470);
        mpfr_init(r31471);
        mpfr_init(r31472);
        mpfr_init(r31473);
        mpfr_init(r31474);
        mpfr_init(r31475);
}

double f_im(double x) {
        ;
        mpfr_set_d(r31470, x, MPFR_RNDN);
        mpfr_exp(r31471, r31470, MPFR_RNDN);
        mpfr_neg(r31472, r31470, MPFR_RNDN);
        mpfr_exp(r31473, r31472, MPFR_RNDN);
        mpfr_add(r31474, r31471, r31473, MPFR_RNDN);
        mpfr_div(r31475, r31469, r31474, MPFR_RNDN);
        return mpfr_get_d(r31475, MPFR_RNDN);
}

static mpfr_t r31476, r31477, r31478, r31479, r31480, r31481, r31482;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31476, "2", 10, MPFR_RNDN);
        mpfr_init(r31477);
        mpfr_init(r31478);
        mpfr_init(r31479);
        mpfr_init(r31480);
        mpfr_init(r31481);
        mpfr_init(r31482);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31477, x, MPFR_RNDN);
        mpfr_exp(r31478, r31477, MPFR_RNDN);
        mpfr_neg(r31479, r31477, MPFR_RNDN);
        mpfr_exp(r31480, r31479, MPFR_RNDN);
        mpfr_add(r31481, r31478, r31480, MPFR_RNDN);
        mpfr_div(r31482, r31476, r31481, MPFR_RNDN);
        return mpfr_get_d(r31482, MPFR_RNDN);
}

static mpfr_t r31483, r31484, r31485, r31486, r31487, r31488, r31489;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r31483, "2", 10, MPFR_RNDN);
        mpfr_init(r31484);
        mpfr_init(r31485);
        mpfr_init(r31486);
        mpfr_init(r31487);
        mpfr_init(r31488);
        mpfr_init(r31489);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31484, x, MPFR_RNDN);
        mpfr_exp(r31485, r31484, MPFR_RNDN);
        mpfr_neg(r31486, r31484, MPFR_RNDN);
        mpfr_exp(r31487, r31486, MPFR_RNDN);
        mpfr_add(r31488, r31485, r31487, MPFR_RNDN);
        mpfr_div(r31489, r31483, r31488, MPFR_RNDN);
        return mpfr_get_d(r31489, MPFR_RNDN);
}

