#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 r10559 = 1;
        float r10560 = x;
        float r10561 = r10560 + r10559;
        float r10562 = r10559 / r10561;
        float r10563 = r10560 - r10559;
        float r10564 = r10559 / r10563;
        float r10565 = r10562 - r10564;
        return r10565;
}

double f_id(double x) {
        double r10566 = 1;
        double r10567 = x;
        double r10568 = r10567 + r10566;
        double r10569 = r10566 / r10568;
        double r10570 = r10567 - r10566;
        double r10571 = r10566 / r10570;
        double r10572 = r10569 - r10571;
        return r10572;
}


double f_of(float x) {
        float r10573 = 1;
        float r10574 = x;
        float r10575 = r10574 * r10574;
        float r10576 = r10573 * r10573;
        float r10577 = r10575 - r10576;
        float r10578 = r10573 / r10577;
        float r10579 = 0;
        float r10580 = r10573 + r10573;
        float r10581 = r10579 - r10580;
        float r10582 = r10578 * r10581;
        return r10582;
}

double f_od(double x) {
        double r10583 = 1;
        double r10584 = x;
        double r10585 = r10584 * r10584;
        double r10586 = r10583 * r10583;
        double r10587 = r10585 - r10586;
        double r10588 = r10583 / r10587;
        double r10589 = 0;
        double r10590 = r10583 + r10583;
        double r10591 = r10589 - r10590;
        double r10592 = r10588 * r10591;
        return r10592;
}

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 r10593, r10594, r10595, r10596, r10597, r10598, r10599;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10593, "1", 10, MPFR_RNDN);
        mpfr_init(r10594);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init(r10599);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10594, x, MPFR_RNDN);
        mpfr_add(r10595, r10594, r10593, MPFR_RNDN);
        mpfr_div(r10596, r10593, r10595, MPFR_RNDN);
        mpfr_sub(r10597, r10594, r10593, MPFR_RNDN);
        mpfr_div(r10598, r10593, r10597, MPFR_RNDN);
        mpfr_sub(r10599, r10596, r10598, MPFR_RNDN);
        return mpfr_get_d(r10599, MPFR_RNDN);
}

static mpfr_t r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607, r10608, r10609;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10600, "1", 10, MPFR_RNDN);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init_set_str(r10606, "0", 10, MPFR_RNDN);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init(r10609);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10601, x, MPFR_RNDN);
        mpfr_mul(r10602, r10601, r10601, MPFR_RNDN);
        mpfr_mul(r10603, r10600, r10600, MPFR_RNDN);
        mpfr_sub(r10604, r10602, r10603, MPFR_RNDN);
        mpfr_div(r10605, r10600, r10604, MPFR_RNDN);
        ;
        mpfr_add(r10607, r10600, r10600, MPFR_RNDN);
        mpfr_sub(r10608, r10606, r10607, MPFR_RNDN);
        mpfr_mul(r10609, r10605, r10608, MPFR_RNDN);
        return mpfr_get_d(r10609, MPFR_RNDN);
}

static mpfr_t r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10610, "1", 10, MPFR_RNDN);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init_set_str(r10616, "0", 10, MPFR_RNDN);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init(r10619);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10611, x, MPFR_RNDN);
        mpfr_mul(r10612, r10611, r10611, MPFR_RNDN);
        mpfr_mul(r10613, r10610, r10610, MPFR_RNDN);
        mpfr_sub(r10614, r10612, r10613, MPFR_RNDN);
        mpfr_div(r10615, r10610, r10614, MPFR_RNDN);
        ;
        mpfr_add(r10617, r10610, r10610, MPFR_RNDN);
        mpfr_sub(r10618, r10616, r10617, MPFR_RNDN);
        mpfr_mul(r10619, r10615, r10618, MPFR_RNDN);
        return mpfr_get_d(r10619, MPFR_RNDN);
}

