#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 r10550 = 1;
        float r10551 = x;
        float r10552 = r10551 + r10550;
        float r10553 = r10550 / r10552;
        float r10554 = r10551 - r10550;
        float r10555 = r10550 / r10554;
        float r10556 = r10553 - r10555;
        return r10556;
}

double f_id(double x) {
        double r10557 = 1;
        double r10558 = x;
        double r10559 = r10558 + r10557;
        double r10560 = r10557 / r10559;
        double r10561 = r10558 - r10557;
        double r10562 = r10557 / r10561;
        double r10563 = r10560 - r10562;
        return r10563;
}


double f_of(float x) {
        float r10564 = 1;
        float r10565 = -r10564;
        float r10566 = r10565 - r10564;
        float r10567 = x;
        float r10568 = r10567 + r10564;
        float r10569 = r10566 / r10568;
        float r10570 = r10567 - r10564;
        float r10571 = r10569 / r10570;
        return r10571;
}

double f_od(double x) {
        double r10572 = 1;
        double r10573 = -r10572;
        double r10574 = r10573 - r10572;
        double r10575 = x;
        double r10576 = r10575 + r10572;
        double r10577 = r10574 / r10576;
        double r10578 = r10575 - r10572;
        double r10579 = r10577 / r10578;
        return r10579;
}

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 r10580, r10581, r10582, r10583, r10584, r10585, r10586;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10580, "1", 10, MPFR_RNDN);
        mpfr_init(r10581);
        mpfr_init(r10582);
        mpfr_init(r10583);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10581, x, MPFR_RNDN);
        mpfr_add(r10582, r10581, r10580, MPFR_RNDN);
        mpfr_div(r10583, r10580, r10582, MPFR_RNDN);
        mpfr_sub(r10584, r10581, r10580, MPFR_RNDN);
        mpfr_div(r10585, r10580, r10584, MPFR_RNDN);
        mpfr_sub(r10586, r10583, r10585, MPFR_RNDN);
        return mpfr_get_d(r10586, MPFR_RNDN);
}

static mpfr_t r10587, r10588, r10589, r10590, r10591, r10592, r10593, r10594;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10587, "1", 10, MPFR_RNDN);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
        mpfr_init(r10593);
        mpfr_init(r10594);
}

double f_fm(double x) {
        ;
        mpfr_neg(r10588, r10587, MPFR_RNDN);
        mpfr_sub(r10589, r10588, r10587, MPFR_RNDN);
        mpfr_set_d(r10590, x, MPFR_RNDN);
        mpfr_add(r10591, r10590, r10587, MPFR_RNDN);
        mpfr_div(r10592, r10589, r10591, MPFR_RNDN);
        mpfr_sub(r10593, r10590, r10587, MPFR_RNDN);
        mpfr_div(r10594, r10592, r10593, MPFR_RNDN);
        return mpfr_get_d(r10594, MPFR_RNDN);
}

static mpfr_t r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10595, "1", 10, MPFR_RNDN);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init(r10599);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
}

double f_dm(double x) {
        ;
        mpfr_neg(r10596, r10595, MPFR_RNDN);
        mpfr_sub(r10597, r10596, r10595, MPFR_RNDN);
        mpfr_set_d(r10598, x, MPFR_RNDN);
        mpfr_add(r10599, r10598, r10595, MPFR_RNDN);
        mpfr_div(r10600, r10597, r10599, MPFR_RNDN);
        mpfr_sub(r10601, r10598, r10595, MPFR_RNDN);
        mpfr_div(r10602, r10600, r10601, MPFR_RNDN);
        return mpfr_get_d(r10602, MPFR_RNDN);
}

