#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 r26602 = 1;
        float r26603 = x;
        float r26604 = r26603 + r26602;
        float r26605 = r26602 / r26604;
        float r26606 = r26603 - r26602;
        float r26607 = r26602 / r26606;
        float r26608 = r26605 - r26607;
        return r26608;
}

double f_id(double x) {
        double r26609 = 1;
        double r26610 = x;
        double r26611 = r26610 + r26609;
        double r26612 = r26609 / r26611;
        double r26613 = r26610 - r26609;
        double r26614 = r26609 / r26613;
        double r26615 = r26612 - r26614;
        return r26615;
}


double f_of(float x) {
        float r26616 = 1;
        float r26617 = r26616 + r26616;
        float r26618 = -r26617;
        float r26619 = x;
        float r26620 = r26619 + r26616;
        float r26621 = r26618 / r26620;
        float r26622 = r26619 - r26616;
        float r26623 = r26621 / r26622;
        return r26623;
}

double f_od(double x) {
        double r26624 = 1;
        double r26625 = r26624 + r26624;
        double r26626 = -r26625;
        double r26627 = x;
        double r26628 = r26627 + r26624;
        double r26629 = r26626 / r26628;
        double r26630 = r26627 - r26624;
        double r26631 = r26629 / r26630;
        return r26631;
}

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 r26632, r26633, r26634, r26635, r26636, r26637, r26638;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26632, "1", 10, MPFR_RNDN);
        mpfr_init(r26633);
        mpfr_init(r26634);
        mpfr_init(r26635);
        mpfr_init(r26636);
        mpfr_init(r26637);
        mpfr_init(r26638);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26633, x, MPFR_RNDN);
        mpfr_add(r26634, r26633, r26632, MPFR_RNDN);
        mpfr_div(r26635, r26632, r26634, MPFR_RNDN);
        mpfr_sub(r26636, r26633, r26632, MPFR_RNDN);
        mpfr_div(r26637, r26632, r26636, MPFR_RNDN);
        mpfr_sub(r26638, r26635, r26637, MPFR_RNDN);
        return mpfr_get_d(r26638, MPFR_RNDN);
}

static mpfr_t r26639, r26640, r26641, r26642, r26643, r26644, r26645, r26646;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26639, "1", 10, MPFR_RNDN);
        mpfr_init(r26640);
        mpfr_init(r26641);
        mpfr_init(r26642);
        mpfr_init(r26643);
        mpfr_init(r26644);
        mpfr_init(r26645);
        mpfr_init(r26646);
}

double f_fm(double x) {
        ;
        mpfr_add(r26640, r26639, r26639, MPFR_RNDN);
        mpfr_neg(r26641, r26640, MPFR_RNDN);
        mpfr_set_d(r26642, x, MPFR_RNDN);
        mpfr_add(r26643, r26642, r26639, MPFR_RNDN);
        mpfr_div(r26644, r26641, r26643, MPFR_RNDN);
        mpfr_sub(r26645, r26642, r26639, MPFR_RNDN);
        mpfr_div(r26646, r26644, r26645, MPFR_RNDN);
        return mpfr_get_d(r26646, MPFR_RNDN);
}

static mpfr_t r26647, r26648, r26649, r26650, r26651, r26652, r26653, r26654;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r26647, "1", 10, MPFR_RNDN);
        mpfr_init(r26648);
        mpfr_init(r26649);
        mpfr_init(r26650);
        mpfr_init(r26651);
        mpfr_init(r26652);
        mpfr_init(r26653);
        mpfr_init(r26654);
}

double f_dm(double x) {
        ;
        mpfr_add(r26648, r26647, r26647, MPFR_RNDN);
        mpfr_neg(r26649, r26648, MPFR_RNDN);
        mpfr_set_d(r26650, x, MPFR_RNDN);
        mpfr_add(r26651, r26650, r26647, MPFR_RNDN);
        mpfr_div(r26652, r26649, r26651, MPFR_RNDN);
        mpfr_sub(r26653, r26650, r26647, MPFR_RNDN);
        mpfr_div(r26654, r26652, r26653, MPFR_RNDN);
        return mpfr_get_d(r26654, MPFR_RNDN);
}

