#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 r10396 = 1.0f;
        float r10397 = x;
        float r10398 = r10397 + r10396;
        float r10399 = r10396 / r10398;
        float r10400 = r10397 - r10396;
        float r10401 = r10396 / r10400;
        float r10402 = r10399 - r10401;
        return r10402;
}

double f_id(double x) {
        double r10403 = 1.0;
        double r10404 = x;
        double r10405 = r10404 + r10403;
        double r10406 = r10403 / r10405;
        double r10407 = r10404 - r10403;
        double r10408 = r10403 / r10407;
        double r10409 = r10406 - r10408;
        return r10409;
}


double f_of(float x) {
        float r10410 = 1.0f;
        float r10411 = -r10410;
        float r10412 = r10411 - r10410;
        float r10413 = x;
        float r10414 = r10413 + r10410;
        float r10415 = r10412 / r10414;
        float r10416 = r10413 - r10410;
        float r10417 = r10415 / r10416;
        return r10417;
}

double f_od(double x) {
        double r10418 = 1.0;
        double r10419 = -r10418;
        double r10420 = r10419 - r10418;
        double r10421 = x;
        double r10422 = r10421 + r10418;
        double r10423 = r10420 / r10422;
        double r10424 = r10421 - r10418;
        double r10425 = r10423 / r10424;
        return r10425;
}

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 r10426, r10427, r10428, r10429, r10430, r10431, r10432;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10426, "1", 10, MPFR_RNDN);
        mpfr_init(r10427);
        mpfr_init(r10428);
        mpfr_init(r10429);
        mpfr_init(r10430);
        mpfr_init(r10431);
        mpfr_init(r10432);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10427, x, MPFR_RNDN);
        mpfr_add(r10428, r10427, r10426, MPFR_RNDN);
        mpfr_div(r10429, r10426, r10428, MPFR_RNDN);
        mpfr_sub(r10430, r10427, r10426, MPFR_RNDN);
        mpfr_div(r10431, r10426, r10430, MPFR_RNDN);
        mpfr_sub(r10432, r10429, r10431, MPFR_RNDN);
        return mpfr_get_d(r10432, MPFR_RNDN);
}

static mpfr_t r10433, r10434, r10435, r10436, r10437, r10438, r10439, r10440;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10433, "1", 10, MPFR_RNDN);
        mpfr_init(r10434);
        mpfr_init(r10435);
        mpfr_init(r10436);
        mpfr_init(r10437);
        mpfr_init(r10438);
        mpfr_init(r10439);
        mpfr_init(r10440);
}

double f_fm(double x) {
        ;
        mpfr_neg(r10434, r10433, MPFR_RNDN);
        mpfr_sub(r10435, r10434, r10433, MPFR_RNDN);
        mpfr_set_d(r10436, x, MPFR_RNDN);
        mpfr_add(r10437, r10436, r10433, MPFR_RNDN);
        mpfr_div(r10438, r10435, r10437, MPFR_RNDN);
        mpfr_sub(r10439, r10436, r10433, MPFR_RNDN);
        mpfr_div(r10440, r10438, r10439, MPFR_RNDN);
        return mpfr_get_d(r10440, MPFR_RNDN);
}

static mpfr_t r10441, r10442, r10443, r10444, r10445, r10446, r10447, r10448;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10441, "1", 10, MPFR_RNDN);
        mpfr_init(r10442);
        mpfr_init(r10443);
        mpfr_init(r10444);
        mpfr_init(r10445);
        mpfr_init(r10446);
        mpfr_init(r10447);
        mpfr_init(r10448);
}

double f_dm(double x) {
        ;
        mpfr_neg(r10442, r10441, MPFR_RNDN);
        mpfr_sub(r10443, r10442, r10441, MPFR_RNDN);
        mpfr_set_d(r10444, x, MPFR_RNDN);
        mpfr_add(r10445, r10444, r10441, MPFR_RNDN);
        mpfr_div(r10446, r10443, r10445, MPFR_RNDN);
        mpfr_sub(r10447, r10444, r10441, MPFR_RNDN);
        mpfr_div(r10448, r10446, r10447, MPFR_RNDN);
        return mpfr_get_d(r10448, MPFR_RNDN);
}

