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

char *name = "Asymptote A";

double f_if(float x) {
        float r26945 = 1;
        float r26946 = x;
        float r26947 = r26946 + r26945;
        float r26948 = r26945 / r26947;
        float r26949 = r26946 - r26945;
        float r26950 = r26945 / r26949;
        float r26951 = r26948 - r26950;
        return r26951;
}

double f_id(double x) {
        double r26952 = 1;
        double r26953 = x;
        double r26954 = r26953 + r26952;
        double r26955 = r26952 / r26954;
        double r26956 = r26953 - r26952;
        double r26957 = r26952 / r26956;
        double r26958 = r26955 - r26957;
        return r26958;
}


double f_of(float x) {
        float r26959 = 1;
        float r26960 = r26959 + r26959;
        float r26961 = x;
        float r26962 = r26959 + r26961;
        float r26963 = r26960 / r26962;
        float r26964 = -r26963;
        float r26965 = r26961 - r26959;
        float r26966 = r26964 / r26965;
        return r26966;
}

double f_od(double x) {
        double r26967 = 1;
        double r26968 = r26967 + r26967;
        double r26969 = x;
        double r26970 = r26967 + r26969;
        double r26971 = r26968 / r26970;
        double r26972 = -r26971;
        double r26973 = r26969 - r26967;
        double r26974 = r26972 / r26973;
        return r26974;
}

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 r26975, r26976, r26977, r26978, r26979, r26980, r26981;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26975, "1", 10, MPFR_RNDN);
        mpfr_init(r26976);
        mpfr_init(r26977);
        mpfr_init(r26978);
        mpfr_init(r26979);
        mpfr_init(r26980);
        mpfr_init(r26981);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26976, x, MPFR_RNDN);
        mpfr_add(r26977, r26976, r26975, MPFR_RNDN);
        mpfr_div(r26978, r26975, r26977, MPFR_RNDN);
        mpfr_sub(r26979, r26976, r26975, MPFR_RNDN);
        mpfr_div(r26980, r26975, r26979, MPFR_RNDN);
        mpfr_sub(r26981, r26978, r26980, MPFR_RNDN);
        return mpfr_get_d(r26981, MPFR_RNDN);
}

static mpfr_t r26982, r26983, r26984, r26985, r26986, r26987, r26988, r26989;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26982, "1", 10, MPFR_RNDN);
        mpfr_init(r26983);
        mpfr_init(r26984);
        mpfr_init(r26985);
        mpfr_init(r26986);
        mpfr_init(r26987);
        mpfr_init(r26988);
        mpfr_init(r26989);
}

double f_fm(double x) {
        ;
        mpfr_add(r26983, r26982, r26982, MPFR_RNDN);
        mpfr_set_d(r26984, x, MPFR_RNDN);
        mpfr_add(r26985, r26982, r26984, MPFR_RNDN);
        mpfr_div(r26986, r26983, r26985, MPFR_RNDN);
        mpfr_neg(r26987, r26986, MPFR_RNDN);
        mpfr_sub(r26988, r26984, r26982, MPFR_RNDN);
        mpfr_div(r26989, r26987, r26988, MPFR_RNDN);
        return mpfr_get_d(r26989, MPFR_RNDN);
}

static mpfr_t r26990, r26991, r26992, r26993, r26994, r26995, r26996, r26997;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26990, "1", 10, MPFR_RNDN);
        mpfr_init(r26991);
        mpfr_init(r26992);
        mpfr_init(r26993);
        mpfr_init(r26994);
        mpfr_init(r26995);
        mpfr_init(r26996);
        mpfr_init(r26997);
}

double f_dm(double x) {
        ;
        mpfr_add(r26991, r26990, r26990, MPFR_RNDN);
        mpfr_set_d(r26992, x, MPFR_RNDN);
        mpfr_add(r26993, r26990, r26992, MPFR_RNDN);
        mpfr_div(r26994, r26991, r26993, MPFR_RNDN);
        mpfr_neg(r26995, r26994, MPFR_RNDN);
        mpfr_sub(r26996, r26992, r26990, MPFR_RNDN);
        mpfr_div(r26997, r26995, r26996, MPFR_RNDN);
        return mpfr_get_d(r26997, MPFR_RNDN);
}

