#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 r8997 = 2;
        float r8998 = x;
        float r8999 = exp(r8998);
        float r9000 = -r8998;
        float r9001 = exp(r9000);
        float r9002 = r8999 + r9001;
        float r9003 = r8997 / r9002;
        return r9003;
}

double f_id(double x) {
        double r9004 = 2;
        double r9005 = x;
        double r9006 = exp(r9005);
        double r9007 = -r9005;
        double r9008 = exp(r9007);
        double r9009 = r9006 + r9008;
        double r9010 = r9004 / r9009;
        return r9010;
}


double f_of(float x) {
        float r9011 = 2;
        float r9012 = x;
        float r9013 = exp(r9012);
        float r9014 = -r9012;
        float r9015 = exp(r9014);
        float r9016 = r9013 + r9015;
        float r9017 = r9011 / r9016;
        return r9017;
}

double f_od(double x) {
        double r9018 = 2;
        double r9019 = x;
        double r9020 = exp(r9019);
        double r9021 = -r9019;
        double r9022 = exp(r9021);
        double r9023 = r9020 + r9022;
        double r9024 = r9018 / r9023;
        return r9024;
}

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 r9025, r9026, r9027, r9028, r9029, r9030, r9031;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9025, "2", 10, MPFR_RNDN);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
        mpfr_init(r9031);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9026, x, MPFR_RNDN);
        mpfr_exp(r9027, r9026, MPFR_RNDN);
        mpfr_neg(r9028, r9026, MPFR_RNDN);
        mpfr_exp(r9029, r9028, MPFR_RNDN);
        mpfr_add(r9030, r9027, r9029, MPFR_RNDN);
        mpfr_div(r9031, r9025, r9030, MPFR_RNDN);
        return mpfr_get_d(r9031, MPFR_RNDN);
}

static mpfr_t r9032, r9033, r9034, r9035, r9036, r9037, r9038;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9032, "2", 10, MPFR_RNDN);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r9033, x, MPFR_RNDN);
        mpfr_exp(r9034, r9033, MPFR_RNDN);
        mpfr_neg(r9035, r9033, MPFR_RNDN);
        mpfr_exp(r9036, r9035, MPFR_RNDN);
        mpfr_add(r9037, r9034, r9036, MPFR_RNDN);
        mpfr_div(r9038, r9032, r9037, MPFR_RNDN);
        return mpfr_get_d(r9038, MPFR_RNDN);
}

static mpfr_t r9039, r9040, r9041, r9042, r9043, r9044, r9045;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9039, "2", 10, MPFR_RNDN);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r9040, x, MPFR_RNDN);
        mpfr_exp(r9041, r9040, MPFR_RNDN);
        mpfr_neg(r9042, r9040, MPFR_RNDN);
        mpfr_exp(r9043, r9042, MPFR_RNDN);
        mpfr_add(r9044, r9041, r9043, MPFR_RNDN);
        mpfr_div(r9045, r9039, r9044, MPFR_RNDN);
        return mpfr_get_d(r9045, MPFR_RNDN);
}

