#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 r8933 = 1;
        float r8934 = x;
        float r8935 = r8934 * r8934;
        float r8936 = r8933 - r8935;
        float r8937 = -r8936;
        float r8938 = exp(r8937);
        return r8938;
}

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


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

double f_od(double x) {
        double r8951 = 1;
        double r8952 = x;
        double r8953 = r8952 * r8952;
        double r8954 = r8951 - r8953;
        double r8955 = -r8954;
        double r8956 = exp(r8955);
        return r8956;
}

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 r8957, r8958, r8959, r8960, r8961, r8962;

void setup_mpfr_f_im() {
        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_im(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_fm() {
        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_fm(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);
}

static mpfr_t r8969, r8970, r8971, r8972, r8973, r8974;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8969, "1", 10, MPFR_RNDN);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init(r8973);
        mpfr_init(r8974);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8970, x, MPFR_RNDN);
        mpfr_mul(r8971, r8970, r8970, MPFR_RNDN);
        mpfr_sub(r8972, r8969, r8971, MPFR_RNDN);
        mpfr_neg(r8973, r8972, MPFR_RNDN);
        mpfr_exp(r8974, r8973, MPFR_RNDN);
        return mpfr_get_d(r8974, MPFR_RNDN);
}

