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

char *name = "Asymptote C";

double f_if(float x) {
        float r10526 = x;
        float r10527 = 1;
        float r10528 = r10526 + r10527;
        float r10529 = r10526 / r10528;
        float r10530 = r10526 - r10527;
        float r10531 = r10528 / r10530;
        float r10532 = r10529 - r10531;
        return r10532;
}

double f_id(double x) {
        double r10533 = x;
        double r10534 = 1;
        double r10535 = r10533 + r10534;
        double r10536 = r10533 / r10535;
        double r10537 = r10533 - r10534;
        double r10538 = r10535 / r10537;
        double r10539 = r10536 - r10538;
        return r10539;
}


double f_of(float x) {
        float r10540 = x;
        float r10541 = 1;
        float r10542 = r10540 + r10541;
        float r10543 = r10540 / r10542;
        float r10544 = r10540 - r10541;
        float r10545 = cbrt(r10544);
        float r10546 = r10545 * r10545;
        float r10547 = r10541 / r10546;
        float r10548 = cbrt(r10542);
        float r10549 = r10548 * r10548;
        float r10550 = cbrt(r10546);
        float r10551 = r10549 / r10550;
        float r10552 = cbrt(r10545);
        float r10553 = r10548 / r10552;
        float r10554 = r10551 * r10553;
        float r10555 = r10547 * r10554;
        float r10556 = r10543 - r10555;
        return r10556;
}

double f_od(double x) {
        double r10557 = x;
        double r10558 = 1;
        double r10559 = r10557 + r10558;
        double r10560 = r10557 / r10559;
        double r10561 = r10557 - r10558;
        double r10562 = cbrt(r10561);
        double r10563 = r10562 * r10562;
        double r10564 = r10558 / r10563;
        double r10565 = cbrt(r10559);
        double r10566 = r10565 * r10565;
        double r10567 = cbrt(r10563);
        double r10568 = r10566 / r10567;
        double r10569 = cbrt(r10562);
        double r10570 = r10565 / r10569;
        double r10571 = r10568 * r10570;
        double r10572 = r10564 * r10571;
        double r10573 = r10560 - r10572;
        return r10573;
}

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 r10574, r10575, r10576, r10577, r10578, r10579, r10580;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10574);
        mpfr_init_set_str(r10575, "1", 10, MPFR_RNDN);
        mpfr_init(r10576);
        mpfr_init(r10577);
        mpfr_init(r10578);
        mpfr_init(r10579);
        mpfr_init(r10580);
}

double f_im(double x) {
        mpfr_set_d(r10574, x, MPFR_RNDN);
        ;
        mpfr_add(r10576, r10574, r10575, MPFR_RNDN);
        mpfr_div(r10577, r10574, r10576, MPFR_RNDN);
        mpfr_sub(r10578, r10574, r10575, MPFR_RNDN);
        mpfr_div(r10579, r10576, r10578, MPFR_RNDN);
        mpfr_sub(r10580, r10577, r10579, MPFR_RNDN);
        return mpfr_get_d(r10580, MPFR_RNDN);
}

static mpfr_t r10581, r10582, r10583, r10584, r10585, r10586, r10587, r10588, r10589, r10590, r10591, r10592, r10593, r10594, r10595, r10596, r10597;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10581);
        mpfr_init_set_str(r10582, "1", 10, MPFR_RNDN);
        mpfr_init(r10583);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
        mpfr_init(r10587);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init(r10597);
}

double f_fm(double x) {
        mpfr_set_d(r10581, x, MPFR_RNDN);
        ;
        mpfr_add(r10583, r10581, r10582, MPFR_RNDN);
        mpfr_div(r10584, r10581, r10583, MPFR_RNDN);
        mpfr_sub(r10585, r10581, r10582, MPFR_RNDN);
        mpfr_cbrt(r10586, r10585, MPFR_RNDN);
        mpfr_mul(r10587, r10586, r10586, MPFR_RNDN);
        mpfr_div(r10588, r10582, r10587, MPFR_RNDN);
        mpfr_cbrt(r10589, r10583, MPFR_RNDN);
        mpfr_mul(r10590, r10589, r10589, MPFR_RNDN);
        mpfr_cbrt(r10591, r10587, MPFR_RNDN);
        mpfr_div(r10592, r10590, r10591, MPFR_RNDN);
        mpfr_cbrt(r10593, r10586, MPFR_RNDN);
        mpfr_div(r10594, r10589, r10593, MPFR_RNDN);
        mpfr_mul(r10595, r10592, r10594, MPFR_RNDN);
        mpfr_mul(r10596, r10588, r10595, MPFR_RNDN);
        mpfr_sub(r10597, r10584, r10596, MPFR_RNDN);
        return mpfr_get_d(r10597, MPFR_RNDN);
}

static mpfr_t r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10598);
        mpfr_init_set_str(r10599, "1", 10, MPFR_RNDN);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
}

double f_dm(double x) {
        mpfr_set_d(r10598, x, MPFR_RNDN);
        ;
        mpfr_add(r10600, r10598, r10599, MPFR_RNDN);
        mpfr_div(r10601, r10598, r10600, MPFR_RNDN);
        mpfr_sub(r10602, r10598, r10599, MPFR_RNDN);
        mpfr_cbrt(r10603, r10602, MPFR_RNDN);
        mpfr_mul(r10604, r10603, r10603, MPFR_RNDN);
        mpfr_div(r10605, r10599, r10604, MPFR_RNDN);
        mpfr_cbrt(r10606, r10600, MPFR_RNDN);
        mpfr_mul(r10607, r10606, r10606, MPFR_RNDN);
        mpfr_cbrt(r10608, r10604, MPFR_RNDN);
        mpfr_div(r10609, r10607, r10608, MPFR_RNDN);
        mpfr_cbrt(r10610, r10603, MPFR_RNDN);
        mpfr_div(r10611, r10606, r10610, MPFR_RNDN);
        mpfr_mul(r10612, r10609, r10611, MPFR_RNDN);
        mpfr_mul(r10613, r10605, r10612, MPFR_RNDN);
        mpfr_sub(r10614, r10601, r10613, MPFR_RNDN);
        return mpfr_get_d(r10614, MPFR_RNDN);
}

