#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 r2278450 = 1;
        float r2278451 = x;
        float r2278452 = r2278451 + r2278450;
        float r2278453 = r2278450 / r2278452;
        float r2278454 = r2278451 - r2278450;
        float r2278455 = r2278450 / r2278454;
        float r2278456 = r2278453 - r2278455;
        return r2278456;
}

double f_id(double x) {
        double r2278457 = 1;
        double r2278458 = x;
        double r2278459 = r2278458 + r2278457;
        double r2278460 = r2278457 / r2278459;
        double r2278461 = r2278458 - r2278457;
        double r2278462 = r2278457 / r2278461;
        double r2278463 = r2278460 - r2278462;
        return r2278463;
}


double f_of(float x) {
        float r2278464 = 2;
        float r2278465 = -r2278464;
        float r2278466 = x;
        float r2278467 = 1;
        float r2278468 = r2278466 + r2278467;
        float r2278469 = r2278465 / r2278468;
        float r2278470 = r2278466 - r2278467;
        float r2278471 = r2278469 / r2278470;
        float r2278472 = pow(r2278471, r2278467);
        return r2278472;
}

double f_od(double x) {
        double r2278473 = 2;
        double r2278474 = -r2278473;
        double r2278475 = x;
        double r2278476 = 1;
        double r2278477 = r2278475 + r2278476;
        double r2278478 = r2278474 / r2278477;
        double r2278479 = r2278475 - r2278476;
        double r2278480 = r2278478 / r2278479;
        double r2278481 = pow(r2278480, r2278476);
        return r2278481;
}

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 r2278482, r2278483, r2278484, r2278485, r2278486, r2278487, r2278488;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r2278482, "1", 10, MPFR_RNDN);
        mpfr_init(r2278483);
        mpfr_init(r2278484);
        mpfr_init(r2278485);
        mpfr_init(r2278486);
        mpfr_init(r2278487);
        mpfr_init(r2278488);
}

double f_im(double x) {
        ;
        mpfr_set_d(r2278483, x, MPFR_RNDN);
        mpfr_add(r2278484, r2278483, r2278482, MPFR_RNDN);
        mpfr_div(r2278485, r2278482, r2278484, MPFR_RNDN);
        mpfr_sub(r2278486, r2278483, r2278482, MPFR_RNDN);
        mpfr_div(r2278487, r2278482, r2278486, MPFR_RNDN);
        mpfr_sub(r2278488, r2278485, r2278487, MPFR_RNDN);
        return mpfr_get_d(r2278488, MPFR_RNDN);
}

static mpfr_t r2278489, r2278490, r2278491, r2278492, r2278493, r2278494, r2278495, r2278496, r2278497;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r2278489, "2", 10, MPFR_RNDN);
        mpfr_init(r2278490);
        mpfr_init(r2278491);
        mpfr_init_set_str(r2278492, "1", 10, MPFR_RNDN);
        mpfr_init(r2278493);
        mpfr_init(r2278494);
        mpfr_init(r2278495);
        mpfr_init(r2278496);
        mpfr_init(r2278497);
}

double f_fm(double x) {
        ;
        mpfr_neg(r2278490, r2278489, MPFR_RNDN);
        mpfr_set_d(r2278491, x, MPFR_RNDN);
        ;
        mpfr_add(r2278493, r2278491, r2278492, MPFR_RNDN);
        mpfr_div(r2278494, r2278490, r2278493, MPFR_RNDN);
        mpfr_sub(r2278495, r2278491, r2278492, MPFR_RNDN);
        mpfr_div(r2278496, r2278494, r2278495, MPFR_RNDN);
        mpfr_pow(r2278497, r2278496, r2278492, MPFR_RNDN);
        return mpfr_get_d(r2278497, MPFR_RNDN);
}

static mpfr_t r2278498, r2278499, r2278500, r2278501, r2278502, r2278503, r2278504, r2278505, r2278506;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r2278498, "2", 10, MPFR_RNDN);
        mpfr_init(r2278499);
        mpfr_init(r2278500);
        mpfr_init_set_str(r2278501, "1", 10, MPFR_RNDN);
        mpfr_init(r2278502);
        mpfr_init(r2278503);
        mpfr_init(r2278504);
        mpfr_init(r2278505);
        mpfr_init(r2278506);
}

double f_dm(double x) {
        ;
        mpfr_neg(r2278499, r2278498, MPFR_RNDN);
        mpfr_set_d(r2278500, x, MPFR_RNDN);
        ;
        mpfr_add(r2278502, r2278500, r2278501, MPFR_RNDN);
        mpfr_div(r2278503, r2278499, r2278502, MPFR_RNDN);
        mpfr_sub(r2278504, r2278500, r2278501, MPFR_RNDN);
        mpfr_div(r2278505, r2278503, r2278504, MPFR_RNDN);
        mpfr_pow(r2278506, r2278505, r2278501, MPFR_RNDN);
        return mpfr_get_d(r2278506, MPFR_RNDN);
}

