#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 r10588 = 1;
        float r10589 = x;
        float r10590 = r10589 - r10588;
        float r10591 = r10588 / r10590;
        float r10592 = r10589 + r10588;
        float r10593 = r10589 / r10592;
        float r10594 = r10591 + r10593;
        return r10594;
}

double f_id(double x) {
        double r10595 = 1;
        double r10596 = x;
        double r10597 = r10596 - r10595;
        double r10598 = r10595 / r10597;
        double r10599 = r10596 + r10595;
        double r10600 = r10596 / r10599;
        double r10601 = r10598 + r10600;
        return r10601;
}


double f_of(float x) {
        float r10602 = 1;
        float r10603 = x;
        float r10604 = r10603 - r10602;
        float r10605 = r10602 / r10604;
        float r10606 = r10603 + r10602;
        float r10607 = r10603 / r10606;
        float r10608 = r10605 + r10607;
        float r10609 = cbrt(r10608);
        float r10610 = r10609 * r10609;
        float r10611 = r10610 * r10609;
        return r10611;
}

double f_od(double x) {
        double r10612 = 1;
        double r10613 = x;
        double r10614 = r10613 - r10612;
        double r10615 = r10612 / r10614;
        double r10616 = r10613 + r10612;
        double r10617 = r10613 / r10616;
        double r10618 = r10615 + r10617;
        double r10619 = cbrt(r10618);
        double r10620 = r10619 * r10619;
        double r10621 = r10620 * r10619;
        return r10621;
}

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 r10622, r10623, r10624, r10625, r10626, r10627, r10628;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10622, "1", 10, MPFR_RNDN);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init(r10626);
        mpfr_init(r10627);
        mpfr_init(r10628);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10623, x, MPFR_RNDN);
        mpfr_sub(r10624, r10623, r10622, MPFR_RNDN);
        mpfr_div(r10625, r10622, r10624, MPFR_RNDN);
        mpfr_add(r10626, r10623, r10622, MPFR_RNDN);
        mpfr_div(r10627, r10623, r10626, MPFR_RNDN);
        mpfr_add(r10628, r10625, r10627, MPFR_RNDN);
        return mpfr_get_d(r10628, MPFR_RNDN);
}

static mpfr_t r10629, r10630, r10631, r10632, r10633, r10634, r10635, r10636, r10637, r10638;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10629, "1", 10, MPFR_RNDN);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init(r10634);
        mpfr_init(r10635);
        mpfr_init(r10636);
        mpfr_init(r10637);
        mpfr_init(r10638);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10630, x, MPFR_RNDN);
        mpfr_sub(r10631, r10630, r10629, MPFR_RNDN);
        mpfr_div(r10632, r10629, r10631, MPFR_RNDN);
        mpfr_add(r10633, r10630, r10629, MPFR_RNDN);
        mpfr_div(r10634, r10630, r10633, MPFR_RNDN);
        mpfr_add(r10635, r10632, r10634, MPFR_RNDN);
        mpfr_cbrt(r10636, r10635, MPFR_RNDN);
        mpfr_mul(r10637, r10636, r10636, MPFR_RNDN);
        mpfr_mul(r10638, r10637, r10636, MPFR_RNDN);
        return mpfr_get_d(r10638, MPFR_RNDN);
}

static mpfr_t r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10639, "1", 10, MPFR_RNDN);
        mpfr_init(r10640);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init(r10646);
        mpfr_init(r10647);
        mpfr_init(r10648);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10640, x, MPFR_RNDN);
        mpfr_sub(r10641, r10640, r10639, MPFR_RNDN);
        mpfr_div(r10642, r10639, r10641, MPFR_RNDN);
        mpfr_add(r10643, r10640, r10639, MPFR_RNDN);
        mpfr_div(r10644, r10640, r10643, MPFR_RNDN);
        mpfr_add(r10645, r10642, r10644, MPFR_RNDN);
        mpfr_cbrt(r10646, r10645, MPFR_RNDN);
        mpfr_mul(r10647, r10646, r10646, MPFR_RNDN);
        mpfr_mul(r10648, r10647, r10646, MPFR_RNDN);
        return mpfr_get_d(r10648, MPFR_RNDN);
}

