#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 r8917 = 1;
        float r8918 = x;
        float r8919 = r8918 * r8918;
        float r8920 = r8917 - r8919;
        float r8921 = -r8920;
        float r8922 = exp(r8921);
        return r8922;
}

double f_id(double x) {
        double r8923 = 1;
        double r8924 = x;
        double r8925 = r8924 * r8924;
        double r8926 = r8923 - r8925;
        double r8927 = -r8926;
        double r8928 = exp(r8927);
        return r8928;
}


double f_of(float x) {
        float r8929 = 1;
        float r8930 = x;
        float r8931 = r8930 * r8930;
        float r8932 = r8929 - r8931;
        float r8933 = -r8932;
        float r8934 = exp(r8933);
        return r8934;
}

double f_od(double x) {
        double r8935 = 1;
        double r8936 = x;
        double r8937 = r8936 * r8936;
        double r8938 = r8935 - r8937;
        double r8939 = -r8938;
        double r8940 = exp(r8939);
        return r8940;
}

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 r8941, r8942, r8943, r8944, r8945, r8946;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8941, "1", 10, MPFR_RNDN);
        mpfr_init(r8942);
        mpfr_init(r8943);
        mpfr_init(r8944);
        mpfr_init(r8945);
        mpfr_init(r8946);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8942, x, MPFR_RNDN);
        mpfr_mul(r8943, r8942, r8942, MPFR_RNDN);
        mpfr_sub(r8944, r8941, r8943, MPFR_RNDN);
        mpfr_neg(r8945, r8944, MPFR_RNDN);
        mpfr_exp(r8946, r8945, MPFR_RNDN);
        return mpfr_get_d(r8946, MPFR_RNDN);
}

static mpfr_t r8947, r8948, r8949, r8950, r8951, r8952;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8947, "1", 10, MPFR_RNDN);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8948, x, MPFR_RNDN);
        mpfr_mul(r8949, r8948, r8948, MPFR_RNDN);
        mpfr_sub(r8950, r8947, r8949, MPFR_RNDN);
        mpfr_neg(r8951, r8950, MPFR_RNDN);
        mpfr_exp(r8952, r8951, MPFR_RNDN);
        return mpfr_get_d(r8952, MPFR_RNDN);
}

static mpfr_t r8953, r8954, r8955, r8956, r8957, r8958;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8953, "1", 10, MPFR_RNDN);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
        mpfr_init(r8957);
        mpfr_init(r8958);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8954, x, MPFR_RNDN);
        mpfr_mul(r8955, r8954, r8954, MPFR_RNDN);
        mpfr_sub(r8956, r8953, r8955, MPFR_RNDN);
        mpfr_neg(r8957, r8956, MPFR_RNDN);
        mpfr_exp(r8958, r8957, MPFR_RNDN);
        return mpfr_get_d(r8958, MPFR_RNDN);
}

