#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 r30813 = 4.0f;
        float r30814 = 3.0f;
        float r30815 = atan2(1.0, 0.0);
        float r30816 = r30814 * r30815;
        float r30817 = 1.0f;
        float r30818 = v;
        float r30819 = r30818 * r30818;
        float r30820 = r30817 - r30819;
        float r30821 = r30816 * r30820;
        float r30822 = 2.0f;
        float r30823 = 6.0f;
        float r30824 = r30823 * r30819;
        float r30825 = r30822 - r30824;
        float r30826 = sqrt(r30825);
        float r30827 = r30821 * r30826;
        float r30828 = r30813 / r30827;
        return r30828;
}

double f_id(double v) {
        double r30829 = 4.0;
        double r30830 = 3.0;
        double r30831 = atan2(1.0, 0.0);
        double r30832 = r30830 * r30831;
        double r30833 = 1.0;
        double r30834 = v;
        double r30835 = r30834 * r30834;
        double r30836 = r30833 - r30835;
        double r30837 = r30832 * r30836;
        double r30838 = 2.0;
        double r30839 = 6.0;
        double r30840 = r30839 * r30835;
        double r30841 = r30838 - r30840;
        double r30842 = sqrt(r30841);
        double r30843 = r30837 * r30842;
        double r30844 = r30829 / r30843;
        return r30844;
}


double f_of(float v) {
        float r30845 = 4.0f;
        float r30846 = 3.0f;
        float r30847 = atan2(1.0, 0.0);
        float r30848 = r30846 * r30847;
        float r30849 = 1.0f;
        float r30850 = v;
        float r30851 = r30850 * r30850;
        float r30852 = r30849 - r30851;
        float r30853 = r30848 * r30852;
        float r30854 = r30845 / r30853;
        float r30855 = 2.0f;
        float r30856 = 6.0f;
        float r30857 = r30856 * r30851;
        float r30858 = r30855 - r30857;
        float r30859 = sqrt(r30858);
        float r30860 = r30854 / r30859;
        return r30860;
}

double f_od(double v) {
        double r30861 = 4.0;
        double r30862 = 3.0;
        double r30863 = atan2(1.0, 0.0);
        double r30864 = r30862 * r30863;
        double r30865 = 1.0;
        double r30866 = v;
        double r30867 = r30866 * r30866;
        double r30868 = r30865 - r30867;
        double r30869 = r30864 * r30868;
        double r30870 = r30861 / r30869;
        double r30871 = 2.0;
        double r30872 = 6.0;
        double r30873 = r30872 * r30867;
        double r30874 = r30871 - r30873;
        double r30875 = sqrt(r30874);
        double r30876 = r30870 / r30875;
        return r30876;
}

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 r30877, r30878, r30879, r30880, r30881, r30882, r30883, r30884, r30885, r30886, r30887, r30888, r30889, r30890, r30891, r30892;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r30877, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r30878, "3", 10, MPFR_RNDN);
        mpfr_init(r30879);
        mpfr_init(r30880);
        mpfr_init_set_str(r30881, "1", 10, MPFR_RNDN);
        mpfr_init(r30882);
        mpfr_init(r30883);
        mpfr_init(r30884);
        mpfr_init(r30885);
        mpfr_init_set_str(r30886, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30887, "6", 10, MPFR_RNDN);
        mpfr_init(r30888);
        mpfr_init(r30889);
        mpfr_init(r30890);
        mpfr_init(r30891);
        mpfr_init(r30892);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r30879, MPFR_RNDN);
        mpfr_mul(r30880, r30878, r30879, MPFR_RNDN);
        ;
        mpfr_set_d(r30882, v, MPFR_RNDN);
        mpfr_sqr(r30883, r30882, MPFR_RNDN);
        mpfr_sub(r30884, r30881, r30883, MPFR_RNDN);
        mpfr_mul(r30885, r30880, r30884, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30888, r30887, r30883, MPFR_RNDN);
        mpfr_sub(r30889, r30886, r30888, MPFR_RNDN);
        mpfr_sqrt(r30890, r30889, MPFR_RNDN);
        mpfr_mul(r30891, r30885, r30890, MPFR_RNDN);
        mpfr_div(r30892, r30877, r30891, MPFR_RNDN);
        return mpfr_get_d(r30892, MPFR_RNDN);
}

static mpfr_t r30893, r30894, r30895, r30896, r30897, r30898, r30899, r30900, r30901, r30902, r30903, r30904, r30905, r30906, r30907, r30908;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r30893, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r30894, "3", 10, MPFR_RNDN);
        mpfr_init(r30895);
        mpfr_init(r30896);
        mpfr_init_set_str(r30897, "1", 10, MPFR_RNDN);
        mpfr_init(r30898);
        mpfr_init(r30899);
        mpfr_init(r30900);
        mpfr_init(r30901);
        mpfr_init(r30902);
        mpfr_init_set_str(r30903, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30904, "6", 10, MPFR_RNDN);
        mpfr_init(r30905);
        mpfr_init(r30906);
        mpfr_init(r30907);
        mpfr_init(r30908);
}

double f_fm(double v) {
        ;
        ;
        mpfr_const_pi(r30895, MPFR_RNDN);
        mpfr_mul(r30896, r30894, r30895, MPFR_RNDN);
        ;
        mpfr_set_d(r30898, v, MPFR_RNDN);
        mpfr_sqr(r30899, r30898, MPFR_RNDN);
        mpfr_sub(r30900, r30897, r30899, MPFR_RNDN);
        mpfr_mul(r30901, r30896, r30900, MPFR_RNDN);
        mpfr_div(r30902, r30893, r30901, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30905, r30904, r30899, MPFR_RNDN);
        mpfr_sub(r30906, r30903, r30905, MPFR_RNDN);
        mpfr_sqrt(r30907, r30906, MPFR_RNDN);
        mpfr_div(r30908, r30902, r30907, MPFR_RNDN);
        return mpfr_get_d(r30908, MPFR_RNDN);
}

static mpfr_t r30909, r30910, r30911, r30912, r30913, r30914, r30915, r30916, r30917, r30918, r30919, r30920, r30921, r30922, r30923, r30924;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r30909, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r30910, "3", 10, MPFR_RNDN);
        mpfr_init(r30911);
        mpfr_init(r30912);
        mpfr_init_set_str(r30913, "1", 10, MPFR_RNDN);
        mpfr_init(r30914);
        mpfr_init(r30915);
        mpfr_init(r30916);
        mpfr_init(r30917);
        mpfr_init(r30918);
        mpfr_init_set_str(r30919, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30920, "6", 10, MPFR_RNDN);
        mpfr_init(r30921);
        mpfr_init(r30922);
        mpfr_init(r30923);
        mpfr_init(r30924);
}

double f_dm(double v) {
        ;
        ;
        mpfr_const_pi(r30911, MPFR_RNDN);
        mpfr_mul(r30912, r30910, r30911, MPFR_RNDN);
        ;
        mpfr_set_d(r30914, v, MPFR_RNDN);
        mpfr_sqr(r30915, r30914, MPFR_RNDN);
        mpfr_sub(r30916, r30913, r30915, MPFR_RNDN);
        mpfr_mul(r30917, r30912, r30916, MPFR_RNDN);
        mpfr_div(r30918, r30909, r30917, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30921, r30920, r30915, MPFR_RNDN);
        mpfr_sub(r30922, r30919, r30921, MPFR_RNDN);
        mpfr_sqrt(r30923, r30922, MPFR_RNDN);
        mpfr_div(r30924, r30918, r30923, MPFR_RNDN);
        return mpfr_get_d(r30924, MPFR_RNDN);
}

