#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 r3912452 = 1;
        float r3912453 = x;
        float r3912454 = r3912453 + r3912452;
        float r3912455 = r3912452 / r3912454;
        float r3912456 = r3912453 - r3912452;
        float r3912457 = r3912452 / r3912456;
        float r3912458 = r3912455 - r3912457;
        return r3912458;
}

double f_id(double x) {
        double r3912459 = 1;
        double r3912460 = x;
        double r3912461 = r3912460 + r3912459;
        double r3912462 = r3912459 / r3912461;
        double r3912463 = r3912460 - r3912459;
        double r3912464 = r3912459 / r3912463;
        double r3912465 = r3912462 - r3912464;
        return r3912465;
}


double f_of(float x) {
        float r3912466 = 1;
        float r3912467 = x;
        float r3912468 = r3912467 + r3912466;
        float r3912469 = r3912466 / r3912468;
        float r3912470 = r3912467 - r3912466;
        float r3912471 = r3912469 / r3912470;
        float r3912472 = 0;
        float r3912473 = r3912472 - r3912466;
        float r3912474 = r3912473 - r3912466;
        float r3912475 = r3912471 * r3912474;
        return r3912475;
}

double f_od(double x) {
        double r3912476 = 1;
        double r3912477 = x;
        double r3912478 = r3912477 + r3912476;
        double r3912479 = r3912476 / r3912478;
        double r3912480 = r3912477 - r3912476;
        double r3912481 = r3912479 / r3912480;
        double r3912482 = 0;
        double r3912483 = r3912482 - r3912476;
        double r3912484 = r3912483 - r3912476;
        double r3912485 = r3912481 * r3912484;
        return r3912485;
}

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 r3912486, r3912487, r3912488, r3912489, r3912490, r3912491, r3912492;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r3912486, "1", 10, MPFR_RNDN);
        mpfr_init(r3912487);
        mpfr_init(r3912488);
        mpfr_init(r3912489);
        mpfr_init(r3912490);
        mpfr_init(r3912491);
        mpfr_init(r3912492);
}

double f_im(double x) {
        ;
        mpfr_set_d(r3912487, x, MPFR_RNDN);
        mpfr_add(r3912488, r3912487, r3912486, MPFR_RNDN);
        mpfr_div(r3912489, r3912486, r3912488, MPFR_RNDN);
        mpfr_sub(r3912490, r3912487, r3912486, MPFR_RNDN);
        mpfr_div(r3912491, r3912486, r3912490, MPFR_RNDN);
        mpfr_sub(r3912492, r3912489, r3912491, MPFR_RNDN);
        return mpfr_get_d(r3912492, MPFR_RNDN);
}

static mpfr_t r3912493, r3912494, r3912495, r3912496, r3912497, r3912498, r3912499, r3912500, r3912501, r3912502;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r3912493, "1", 10, MPFR_RNDN);
        mpfr_init(r3912494);
        mpfr_init(r3912495);
        mpfr_init(r3912496);
        mpfr_init(r3912497);
        mpfr_init(r3912498);
        mpfr_init_set_str(r3912499, "0", 10, MPFR_RNDN);
        mpfr_init(r3912500);
        mpfr_init(r3912501);
        mpfr_init(r3912502);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r3912494, x, MPFR_RNDN);
        mpfr_add(r3912495, r3912494, r3912493, MPFR_RNDN);
        mpfr_div(r3912496, r3912493, r3912495, MPFR_RNDN);
        mpfr_sub(r3912497, r3912494, r3912493, MPFR_RNDN);
        mpfr_div(r3912498, r3912496, r3912497, MPFR_RNDN);
        ;
        mpfr_sub(r3912500, r3912499, r3912493, MPFR_RNDN);
        mpfr_sub(r3912501, r3912500, r3912493, MPFR_RNDN);
        mpfr_mul(r3912502, r3912498, r3912501, MPFR_RNDN);
        return mpfr_get_d(r3912502, MPFR_RNDN);
}

static mpfr_t r3912503, r3912504, r3912505, r3912506, r3912507, r3912508, r3912509, r3912510, r3912511, r3912512;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r3912503, "1", 10, MPFR_RNDN);
        mpfr_init(r3912504);
        mpfr_init(r3912505);
        mpfr_init(r3912506);
        mpfr_init(r3912507);
        mpfr_init(r3912508);
        mpfr_init_set_str(r3912509, "0", 10, MPFR_RNDN);
        mpfr_init(r3912510);
        mpfr_init(r3912511);
        mpfr_init(r3912512);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r3912504, x, MPFR_RNDN);
        mpfr_add(r3912505, r3912504, r3912503, MPFR_RNDN);
        mpfr_div(r3912506, r3912503, r3912505, MPFR_RNDN);
        mpfr_sub(r3912507, r3912504, r3912503, MPFR_RNDN);
        mpfr_div(r3912508, r3912506, r3912507, MPFR_RNDN);
        ;
        mpfr_sub(r3912510, r3912509, r3912503, MPFR_RNDN);
        mpfr_sub(r3912511, r3912510, r3912503, MPFR_RNDN);
        mpfr_mul(r3912512, r3912508, r3912511, MPFR_RNDN);
        return mpfr_get_d(r3912512, MPFR_RNDN);
}

