#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 r10498 = 1;
        float r10499 = x;
        float r10500 = r10499 - r10498;
        float r10501 = r10498 / r10500;
        float r10502 = r10499 + r10498;
        float r10503 = r10499 / r10502;
        float r10504 = r10501 + r10503;
        return r10504;
}

double f_id(double x) {
        double r10505 = 1;
        double r10506 = x;
        double r10507 = r10506 - r10505;
        double r10508 = r10505 / r10507;
        double r10509 = r10506 + r10505;
        double r10510 = r10506 / r10509;
        double r10511 = r10508 + r10510;
        return r10511;
}


double f_of(float x) {
        float r10512 = 1;
        float r10513 = x;
        float r10514 = r10513 - r10512;
        float r10515 = r10512 / r10514;
        float r10516 = r10513 + r10512;
        float r10517 = r10513 / r10516;
        float r10518 = r10515 + r10517;
        float r10519 = cbrt(r10518);
        float r10520 = r10519 * r10519;
        float r10521 = r10520 * r10519;
        return r10521;
}

double f_od(double x) {
        double r10522 = 1;
        double r10523 = x;
        double r10524 = r10523 - r10522;
        double r10525 = r10522 / r10524;
        double r10526 = r10523 + r10522;
        double r10527 = r10523 / r10526;
        double r10528 = r10525 + r10527;
        double r10529 = cbrt(r10528);
        double r10530 = r10529 * r10529;
        double r10531 = r10530 * r10529;
        return r10531;
}

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 r10532, r10533, r10534, r10535, r10536, r10537, r10538;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10532, "1", 10, MPFR_RNDN);
        mpfr_init(r10533);
        mpfr_init(r10534);
        mpfr_init(r10535);
        mpfr_init(r10536);
        mpfr_init(r10537);
        mpfr_init(r10538);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10533, x, MPFR_RNDN);
        mpfr_sub(r10534, r10533, r10532, MPFR_RNDN);
        mpfr_div(r10535, r10532, r10534, MPFR_RNDN);
        mpfr_add(r10536, r10533, r10532, MPFR_RNDN);
        mpfr_div(r10537, r10533, r10536, MPFR_RNDN);
        mpfr_add(r10538, r10535, r10537, MPFR_RNDN);
        return mpfr_get_d(r10538, MPFR_RNDN);
}

static mpfr_t r10539, r10540, r10541, r10542, r10543, r10544, r10545, r10546, r10547, r10548;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10539, "1", 10, MPFR_RNDN);
        mpfr_init(r10540);
        mpfr_init(r10541);
        mpfr_init(r10542);
        mpfr_init(r10543);
        mpfr_init(r10544);
        mpfr_init(r10545);
        mpfr_init(r10546);
        mpfr_init(r10547);
        mpfr_init(r10548);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10540, x, MPFR_RNDN);
        mpfr_sub(r10541, r10540, r10539, MPFR_RNDN);
        mpfr_div(r10542, r10539, r10541, MPFR_RNDN);
        mpfr_add(r10543, r10540, r10539, MPFR_RNDN);
        mpfr_div(r10544, r10540, r10543, MPFR_RNDN);
        mpfr_add(r10545, r10542, r10544, MPFR_RNDN);
        mpfr_cbrt(r10546, r10545, MPFR_RNDN);
        mpfr_mul(r10547, r10546, r10546, MPFR_RNDN);
        mpfr_mul(r10548, r10547, r10546, MPFR_RNDN);
        return mpfr_get_d(r10548, MPFR_RNDN);
}

static mpfr_t r10549, r10550, r10551, r10552, r10553, r10554, r10555, r10556, r10557, r10558;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10549, "1", 10, MPFR_RNDN);
        mpfr_init(r10550);
        mpfr_init(r10551);
        mpfr_init(r10552);
        mpfr_init(r10553);
        mpfr_init(r10554);
        mpfr_init(r10555);
        mpfr_init(r10556);
        mpfr_init(r10557);
        mpfr_init(r10558);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10550, x, MPFR_RNDN);
        mpfr_sub(r10551, r10550, r10549, MPFR_RNDN);
        mpfr_div(r10552, r10549, r10551, MPFR_RNDN);
        mpfr_add(r10553, r10550, r10549, MPFR_RNDN);
        mpfr_div(r10554, r10550, r10553, MPFR_RNDN);
        mpfr_add(r10555, r10552, r10554, MPFR_RNDN);
        mpfr_cbrt(r10556, r10555, MPFR_RNDN);
        mpfr_mul(r10557, r10556, r10556, MPFR_RNDN);
        mpfr_mul(r10558, r10557, r10556, MPFR_RNDN);
        return mpfr_get_d(r10558, MPFR_RNDN);
}

