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

char *name = "Asymptote B";

double f_if(float x) {
        float r18362742 = 1;
        float r18362743 = x;
        float r18362744 = r18362743 - r18362742;
        float r18362745 = r18362742 / r18362744;
        float r18362746 = r18362743 + r18362742;
        float r18362747 = r18362743 / r18362746;
        float r18362748 = r18362745 + r18362747;
        return r18362748;
}

double f_id(double x) {
        double r18362749 = 1;
        double r18362750 = x;
        double r18362751 = r18362750 - r18362749;
        double r18362752 = r18362749 / r18362751;
        double r18362753 = r18362750 + r18362749;
        double r18362754 = r18362750 / r18362753;
        double r18362755 = r18362752 + r18362754;
        return r18362755;
}


double f_of(float x) {
        float r18362756 = 1;
        float r18362757 = x;
        float r18362758 = r18362757 - r18362756;
        float r18362759 = r18362756 / r18362758;
        float r18362760 = r18362757 + r18362756;
        float r18362761 = r18362757 / r18362760;
        float r18362762 = r18362759 + r18362761;
        return r18362762;
}

double f_od(double x) {
        double r18362763 = 1;
        double r18362764 = x;
        double r18362765 = r18362764 - r18362763;
        double r18362766 = r18362763 / r18362765;
        double r18362767 = r18362764 + r18362763;
        double r18362768 = r18362764 / r18362767;
        double r18362769 = r18362766 + r18362768;
        return r18362769;
}

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 r18362770, r18362771, r18362772, r18362773, r18362774, r18362775, r18362776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18362770, "1", 10, MPFR_RNDN);
        mpfr_init(r18362771);
        mpfr_init(r18362772);
        mpfr_init(r18362773);
        mpfr_init(r18362774);
        mpfr_init(r18362775);
        mpfr_init(r18362776);
}

double f_im(double x) {
        ;
        mpfr_set_d(r18362771, x, MPFR_RNDN);
        mpfr_sub(r18362772, r18362771, r18362770, MPFR_RNDN);
        mpfr_div(r18362773, r18362770, r18362772, MPFR_RNDN);
        mpfr_add(r18362774, r18362771, r18362770, MPFR_RNDN);
        mpfr_div(r18362775, r18362771, r18362774, MPFR_RNDN);
        mpfr_add(r18362776, r18362773, r18362775, MPFR_RNDN);
        return mpfr_get_d(r18362776, MPFR_RNDN);
}

static mpfr_t r18362777, r18362778, r18362779, r18362780, r18362781, r18362782, r18362783;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18362777, "1", 10, MPFR_RNDN);
        mpfr_init(r18362778);
        mpfr_init(r18362779);
        mpfr_init(r18362780);
        mpfr_init(r18362781);
        mpfr_init(r18362782);
        mpfr_init(r18362783);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18362778, x, MPFR_RNDN);
        mpfr_sub(r18362779, r18362778, r18362777, MPFR_RNDN);
        mpfr_div(r18362780, r18362777, r18362779, MPFR_RNDN);
        mpfr_add(r18362781, r18362778, r18362777, MPFR_RNDN);
        mpfr_div(r18362782, r18362778, r18362781, MPFR_RNDN);
        mpfr_add(r18362783, r18362780, r18362782, MPFR_RNDN);
        return mpfr_get_d(r18362783, MPFR_RNDN);
}

static mpfr_t r18362784, r18362785, r18362786, r18362787, r18362788, r18362789, r18362790;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18362784, "1", 10, MPFR_RNDN);
        mpfr_init(r18362785);
        mpfr_init(r18362786);
        mpfr_init(r18362787);
        mpfr_init(r18362788);
        mpfr_init(r18362789);
        mpfr_init(r18362790);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18362785, x, MPFR_RNDN);
        mpfr_sub(r18362786, r18362785, r18362784, MPFR_RNDN);
        mpfr_div(r18362787, r18362784, r18362786, MPFR_RNDN);
        mpfr_add(r18362788, r18362785, r18362784, MPFR_RNDN);
        mpfr_div(r18362789, r18362785, r18362788, MPFR_RNDN);
        mpfr_add(r18362790, r18362787, r18362789, MPFR_RNDN);
        return mpfr_get_d(r18362790, MPFR_RNDN);
}

