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

char *name = "Falkner and Boettcher, Equation (22+)";

double f_if(float v) {
        float r32581 = 4;
        float r32582 = 3;
        float r32583 = atan2(1.0, 0.0);
        float r32584 = r32582 * r32583;
        float r32585 = 1;
        float r32586 = v;
        float r32587 = r32586 * r32586;
        float r32588 = r32585 - r32587;
        float r32589 = r32584 * r32588;
        float r32590 = 2;
        float r32591 = 6;
        float r32592 = r32591 * r32587;
        float r32593 = r32590 - r32592;
        float r32594 = sqrt(r32593);
        float r32595 = r32589 * r32594;
        float r32596 = r32581 / r32595;
        return r32596;
}

double f_id(double v) {
        double r32597 = 4;
        double r32598 = 3;
        double r32599 = atan2(1.0, 0.0);
        double r32600 = r32598 * r32599;
        double r32601 = 1;
        double r32602 = v;
        double r32603 = r32602 * r32602;
        double r32604 = r32601 - r32603;
        double r32605 = r32600 * r32604;
        double r32606 = 2;
        double r32607 = 6;
        double r32608 = r32607 * r32603;
        double r32609 = r32606 - r32608;
        double r32610 = sqrt(r32609);
        double r32611 = r32605 * r32610;
        double r32612 = r32597 / r32611;
        return r32612;
}


double f_of(float v) {
        float r32613 = 4;
        float r32614 = 3;
        float r32615 = r32613 / r32614;
        float r32616 = atan2(1.0, 0.0);
        float r32617 = v;
        float r32618 = r32616 * r32617;
        float r32619 = r32618 * r32617;
        float r32620 = r32616 - r32619;
        float r32621 = r32615 / r32620;
        float r32622 = 2;
        float r32623 = 6;
        float r32624 = r32617 * r32617;
        float r32625 = r32623 * r32624;
        float r32626 = r32622 - r32625;
        float r32627 = sqrt(r32626);
        float r32628 = r32621 / r32627;
        return r32628;
}

double f_od(double v) {
        double r32629 = 4;
        double r32630 = 3;
        double r32631 = r32629 / r32630;
        double r32632 = atan2(1.0, 0.0);
        double r32633 = v;
        double r32634 = r32632 * r32633;
        double r32635 = r32634 * r32633;
        double r32636 = r32632 - r32635;
        double r32637 = r32631 / r32636;
        double r32638 = 2;
        double r32639 = 6;
        double r32640 = r32633 * r32633;
        double r32641 = r32639 * r32640;
        double r32642 = r32638 - r32641;
        double r32643 = sqrt(r32642);
        double r32644 = r32637 / r32643;
        return r32644;
}

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 r32645, r32646, r32647, r32648, r32649, r32650, r32651, r32652, r32653, r32654, r32655, r32656, r32657, r32658, r32659, r32660;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32645, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32646, "3", 10, MPFR_RNDN);
        mpfr_init(r32647);
        mpfr_init(r32648);
        mpfr_init_set_str(r32649, "1", 10, MPFR_RNDN);
        mpfr_init(r32650);
        mpfr_init(r32651);
        mpfr_init(r32652);
        mpfr_init(r32653);
        mpfr_init_set_str(r32654, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32655, "6", 10, MPFR_RNDN);
        mpfr_init(r32656);
        mpfr_init(r32657);
        mpfr_init(r32658);
        mpfr_init(r32659);
        mpfr_init(r32660);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r32647, MPFR_RNDN);
        mpfr_mul(r32648, r32646, r32647, MPFR_RNDN);
        ;
        mpfr_set_d(r32650, v, MPFR_RNDN);
        mpfr_mul(r32651, r32650, r32650, MPFR_RNDN);
        mpfr_sub(r32652, r32649, r32651, MPFR_RNDN);
        mpfr_mul(r32653, r32648, r32652, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32656, r32655, r32651, MPFR_RNDN);
        mpfr_sub(r32657, r32654, r32656, MPFR_RNDN);
        mpfr_sqrt(r32658, r32657, MPFR_RNDN);
        mpfr_mul(r32659, r32653, r32658, MPFR_RNDN);
        mpfr_div(r32660, r32645, r32659, MPFR_RNDN);
        return mpfr_get_d(r32660, MPFR_RNDN);
}

static mpfr_t r32661, r32662, r32663, r32664, r32665, r32666, r32667, r32668, r32669, r32670, r32671, r32672, r32673, r32674, r32675, r32676;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32661, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32662, "3", 10, MPFR_RNDN);
        mpfr_init(r32663);
        mpfr_init(r32664);
        mpfr_init(r32665);
        mpfr_init(r32666);
        mpfr_init(r32667);
        mpfr_init(r32668);
        mpfr_init(r32669);
        mpfr_init_set_str(r32670, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32671, "6", 10, MPFR_RNDN);
        mpfr_init(r32672);
        mpfr_init(r32673);
        mpfr_init(r32674);
        mpfr_init(r32675);
        mpfr_init(r32676);
}

double f_fm(double v) {
        ;
        ;
        mpfr_div(r32663, r32661, r32662, MPFR_RNDN);
        mpfr_const_pi(r32664, MPFR_RNDN);
        mpfr_set_d(r32665, v, MPFR_RNDN);
        mpfr_mul(r32666, r32664, r32665, MPFR_RNDN);
        mpfr_mul(r32667, r32666, r32665, MPFR_RNDN);
        mpfr_sub(r32668, r32664, r32667, MPFR_RNDN);
        mpfr_div(r32669, r32663, r32668, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32672, r32665, r32665, MPFR_RNDN);
        mpfr_mul(r32673, r32671, r32672, MPFR_RNDN);
        mpfr_sub(r32674, r32670, r32673, MPFR_RNDN);
        mpfr_sqrt(r32675, r32674, MPFR_RNDN);
        mpfr_div(r32676, r32669, r32675, MPFR_RNDN);
        return mpfr_get_d(r32676, MPFR_RNDN);
}

static mpfr_t r32677, r32678, r32679, r32680, r32681, r32682, r32683, r32684, r32685, r32686, r32687, r32688, r32689, r32690, r32691, r32692;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32677, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32678, "3", 10, MPFR_RNDN);
        mpfr_init(r32679);
        mpfr_init(r32680);
        mpfr_init(r32681);
        mpfr_init(r32682);
        mpfr_init(r32683);
        mpfr_init(r32684);
        mpfr_init(r32685);
        mpfr_init_set_str(r32686, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32687, "6", 10, MPFR_RNDN);
        mpfr_init(r32688);
        mpfr_init(r32689);
        mpfr_init(r32690);
        mpfr_init(r32691);
        mpfr_init(r32692);
}

double f_dm(double v) {
        ;
        ;
        mpfr_div(r32679, r32677, r32678, MPFR_RNDN);
        mpfr_const_pi(r32680, MPFR_RNDN);
        mpfr_set_d(r32681, v, MPFR_RNDN);
        mpfr_mul(r32682, r32680, r32681, MPFR_RNDN);
        mpfr_mul(r32683, r32682, r32681, MPFR_RNDN);
        mpfr_sub(r32684, r32680, r32683, MPFR_RNDN);
        mpfr_div(r32685, r32679, r32684, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32688, r32681, r32681, MPFR_RNDN);
        mpfr_mul(r32689, r32687, r32688, MPFR_RNDN);
        mpfr_sub(r32690, r32686, r32689, MPFR_RNDN);
        mpfr_sqrt(r32691, r32690, MPFR_RNDN);
        mpfr_div(r32692, r32685, r32691, MPFR_RNDN);
        return mpfr_get_d(r32692, MPFR_RNDN);
}

