#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Asymptote B";

double f_if(float x) {
        float r10240 = 1.0f;
        float r10241 = x;
        float r10242 = r10241 - r10240;
        float r10243 = r10240 / r10242;
        float r10244 = r10241 + r10240;
        float r10245 = r10241 / r10244;
        float r10246 = r10243 + r10245;
        return r10246;
}

double f_id(double x) {
        double r10247 = 1.0;
        double r10248 = x;
        double r10249 = r10248 - r10247;
        double r10250 = r10247 / r10249;
        double r10251 = r10248 + r10247;
        double r10252 = r10248 / r10251;
        double r10253 = r10250 + r10252;
        return r10253;
}


double f_of(float x) {
        float r10254 = 1.0f;
        float r10255 = x;
        float r10256 = r10255 * r10255;
        float r10257 = r10256 - r10254;
        float r10258 = r10254 / r10257;
        float r10259 = r10255 + r10254;
        float r10260 = r10258 * r10259;
        float r10261 = r10255 / r10259;
        float r10262 = r10260 + r10261;
        return r10262;
}

double f_od(double x) {
        double r10263 = 1.0;
        double r10264 = x;
        double r10265 = r10264 * r10264;
        double r10266 = r10265 - r10263;
        double r10267 = r10263 / r10266;
        double r10268 = r10264 + r10263;
        double r10269 = r10267 * r10268;
        double r10270 = r10264 / r10268;
        double r10271 = r10269 + r10270;
        return r10271;
}

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 r10272, r10273, r10274, r10275, r10276, r10277, r10278;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10272, "1", 10, MPFR_RNDN);
        mpfr_init(r10273);
        mpfr_init(r10274);
        mpfr_init(r10275);
        mpfr_init(r10276);
        mpfr_init(r10277);
        mpfr_init(r10278);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10273, x, MPFR_RNDN);
        mpfr_sub(r10274, r10273, r10272, MPFR_RNDN);
        mpfr_div(r10275, r10272, r10274, MPFR_RNDN);
        mpfr_add(r10276, r10273, r10272, MPFR_RNDN);
        mpfr_div(r10277, r10273, r10276, MPFR_RNDN);
        mpfr_add(r10278, r10275, r10277, MPFR_RNDN);
        return mpfr_get_d(r10278, MPFR_RNDN);
}

static mpfr_t r10279, r10280, r10281, r10282, r10283, r10284, r10285, r10286, r10287;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10279, "1", 10, MPFR_RNDN);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
        mpfr_init(r10283);
        mpfr_init(r10284);
        mpfr_init(r10285);
        mpfr_init(r10286);
        mpfr_init(r10287);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10280, x, MPFR_RNDN);
        mpfr_mul(r10281, r10280, r10280, MPFR_RNDN);
        mpfr_sub(r10282, r10281, r10279, MPFR_RNDN);
        mpfr_div(r10283, r10279, r10282, MPFR_RNDN);
        mpfr_add(r10284, r10280, r10279, MPFR_RNDN);
        mpfr_mul(r10285, r10283, r10284, MPFR_RNDN);
        mpfr_div(r10286, r10280, r10284, MPFR_RNDN);
        mpfr_add(r10287, r10285, r10286, MPFR_RNDN);
        return mpfr_get_d(r10287, MPFR_RNDN);
}

static mpfr_t r10288, r10289, r10290, r10291, r10292, r10293, r10294, r10295, r10296;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10288, "1", 10, MPFR_RNDN);
        mpfr_init(r10289);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init(r10292);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10289, x, MPFR_RNDN);
        mpfr_mul(r10290, r10289, r10289, MPFR_RNDN);
        mpfr_sub(r10291, r10290, r10288, MPFR_RNDN);
        mpfr_div(r10292, r10288, r10291, MPFR_RNDN);
        mpfr_add(r10293, r10289, r10288, MPFR_RNDN);
        mpfr_mul(r10294, r10292, r10293, MPFR_RNDN);
        mpfr_div(r10295, r10289, r10293, MPFR_RNDN);
        mpfr_add(r10296, r10294, r10295, MPFR_RNDN);
        return mpfr_get_d(r10296, MPFR_RNDN);
}

