#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "exp neg sub";

double f_if(float x) {
        float r8927 = 1;
        float r8928 = x;
        float r8929 = r8928 * r8928;
        float r8930 = r8927 - r8929;
        float r8931 = -r8930;
        float r8932 = exp(r8931);
        return r8932;
}

double f_id(double x) {
        double r8933 = 1;
        double r8934 = x;
        double r8935 = r8934 * r8934;
        double r8936 = r8933 - r8935;
        double r8937 = -r8936;
        double r8938 = exp(r8937);
        return r8938;
}


double f_of(float x) {
        float r8939 = 1;
        float r8940 = x;
        float r8941 = r8940 * r8940;
        float r8942 = r8939 - r8941;
        float r8943 = -r8942;
        float r8944 = exp(r8943);
        return r8944;
}

double f_od(double x) {
        double r8945 = 1;
        double r8946 = x;
        double r8947 = r8946 * r8946;
        double r8948 = r8945 - r8947;
        double r8949 = -r8948;
        double r8950 = exp(r8949);
        return r8950;
}

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 r8951, r8952, r8953, r8954, r8955, r8956;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8951, "1", 10, MPFR_RNDN);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8952, x, MPFR_RNDN);
        mpfr_mul(r8953, r8952, r8952, MPFR_RNDN);
        mpfr_sub(r8954, r8951, r8953, MPFR_RNDN);
        mpfr_neg(r8955, r8954, MPFR_RNDN);
        mpfr_exp(r8956, r8955, MPFR_RNDN);
        return mpfr_get_d(r8956, MPFR_RNDN);
}

static mpfr_t r8957, r8958, r8959, r8960, r8961, r8962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8957, "1", 10, MPFR_RNDN);
        mpfr_init(r8958);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init(r8961);
        mpfr_init(r8962);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8958, x, MPFR_RNDN);
        mpfr_mul(r8959, r8958, r8958, MPFR_RNDN);
        mpfr_sub(r8960, r8957, r8959, MPFR_RNDN);
        mpfr_neg(r8961, r8960, MPFR_RNDN);
        mpfr_exp(r8962, r8961, MPFR_RNDN);
        return mpfr_get_d(r8962, MPFR_RNDN);
}

static mpfr_t r8963, r8964, r8965, r8966, r8967, r8968;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8963, "1", 10, MPFR_RNDN);
        mpfr_init(r8964);
        mpfr_init(r8965);
        mpfr_init(r8966);
        mpfr_init(r8967);
        mpfr_init(r8968);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8964, x, MPFR_RNDN);
        mpfr_mul(r8965, r8964, r8964, MPFR_RNDN);
        mpfr_sub(r8966, r8963, r8965, MPFR_RNDN);
        mpfr_neg(r8967, r8966, MPFR_RNDN);
        mpfr_exp(r8968, r8967, MPFR_RNDN);
        return mpfr_get_d(r8968, MPFR_RNDN);
}

