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

char *name = "Falkner and Boettcher, Appendix B, 1";

double f_if(float v) {
        float r10769 = 1.0f;
        float r10770 = 5.0f;
        float r10771 = v;
        float r10772 = r10771 * r10771;
        float r10773 = r10770 * r10772;
        float r10774 = r10769 - r10773;
        float r10775 = r10772 - r10769;
        float r10776 = r10774 / r10775;
        float r10777 = acos(r10776);
        return r10777;
}

double f_id(double v) {
        double r10778 = 1.0;
        double r10779 = 5.0;
        double r10780 = v;
        double r10781 = r10780 * r10780;
        double r10782 = r10779 * r10781;
        double r10783 = r10778 - r10782;
        double r10784 = r10781 - r10778;
        double r10785 = r10783 / r10784;
        double r10786 = acos(r10785);
        return r10786;
}


double f_of(float v) {
        float r10787 = atan2(1.0, 0.0);
        float r10788 = 2.0f;
        float r10789 = r10787 / r10788;
        float r10790 = 1.0f;
        float r10791 = v;
        float r10792 = r10791 * r10791;
        float r10793 = 5.0f;
        float r10794 = r10792 * r10793;
        float r10795 = r10790 - r10794;
        float r10796 = r10792 - r10790;
        float r10797 = r10795 / r10796;
        float r10798 = asin(r10797);
        float r10799 = r10789 - r10798;
        return r10799;
}

double f_od(double v) {
        double r10800 = atan2(1.0, 0.0);
        double r10801 = 2.0;
        double r10802 = r10800 / r10801;
        double r10803 = 1.0;
        double r10804 = v;
        double r10805 = r10804 * r10804;
        double r10806 = 5.0;
        double r10807 = r10805 * r10806;
        double r10808 = r10803 - r10807;
        double r10809 = r10805 - r10803;
        double r10810 = r10808 / r10809;
        double r10811 = asin(r10810);
        double r10812 = r10802 - r10811;
        return r10812;
}

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 r10813, r10814, r10815, r10816, r10817, r10818, r10819, r10820, r10821;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10813, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10814, "5", 10, MPFR_RNDN);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init(r10819);
        mpfr_init(r10820);
        mpfr_init(r10821);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r10815, v, MPFR_RNDN);
        mpfr_mul(r10816, r10815, r10815, MPFR_RNDN);
        mpfr_mul(r10817, r10814, r10816, MPFR_RNDN);
        mpfr_sub(r10818, r10813, r10817, MPFR_RNDN);
        mpfr_sub(r10819, r10816, r10813, MPFR_RNDN);
        mpfr_div(r10820, r10818, r10819, MPFR_RNDN);
        mpfr_acos(r10821, r10820, MPFR_RNDN);
        return mpfr_get_d(r10821, MPFR_RNDN);
}

static mpfr_t r10822, r10823, r10824, r10825, r10826, r10827, r10828, r10829, r10830, r10831, r10832, r10833, r10834;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10822);
        mpfr_init_set_str(r10823, "2", 10, MPFR_RNDN);
        mpfr_init(r10824);
        mpfr_init_set_str(r10825, "1", 10, MPFR_RNDN);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init_set_str(r10828, "5", 10, MPFR_RNDN);
        mpfr_init(r10829);
        mpfr_init(r10830);
        mpfr_init(r10831);
        mpfr_init(r10832);
        mpfr_init(r10833);
        mpfr_init(r10834);
}

double f_fm(double v) {
        mpfr_const_pi(r10822, MPFR_RNDN);
        ;
        mpfr_div(r10824, r10822, r10823, MPFR_RNDN);
        ;
        mpfr_set_d(r10826, v, MPFR_RNDN);
        mpfr_mul(r10827, r10826, r10826, MPFR_RNDN);
        ;
        mpfr_mul(r10829, r10827, r10828, MPFR_RNDN);
        mpfr_sub(r10830, r10825, r10829, MPFR_RNDN);
        mpfr_sub(r10831, r10827, r10825, MPFR_RNDN);
        mpfr_div(r10832, r10830, r10831, MPFR_RNDN);
        mpfr_asin(r10833, r10832, MPFR_RNDN);
        mpfr_sub(r10834, r10824, r10833, MPFR_RNDN);
        return mpfr_get_d(r10834, MPFR_RNDN);
}

static mpfr_t r10835, r10836, r10837, r10838, r10839, r10840, r10841, r10842, r10843, r10844, r10845, r10846, r10847;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10835);
        mpfr_init_set_str(r10836, "2", 10, MPFR_RNDN);
        mpfr_init(r10837);
        mpfr_init_set_str(r10838, "1", 10, MPFR_RNDN);
        mpfr_init(r10839);
        mpfr_init(r10840);
        mpfr_init_set_str(r10841, "5", 10, MPFR_RNDN);
        mpfr_init(r10842);
        mpfr_init(r10843);
        mpfr_init(r10844);
        mpfr_init(r10845);
        mpfr_init(r10846);
        mpfr_init(r10847);
}

double f_dm(double v) {
        mpfr_const_pi(r10835, MPFR_RNDN);
        ;
        mpfr_div(r10837, r10835, r10836, MPFR_RNDN);
        ;
        mpfr_set_d(r10839, v, MPFR_RNDN);
        mpfr_mul(r10840, r10839, r10839, MPFR_RNDN);
        ;
        mpfr_mul(r10842, r10840, r10841, MPFR_RNDN);
        mpfr_sub(r10843, r10838, r10842, MPFR_RNDN);
        mpfr_sub(r10844, r10840, r10838, MPFR_RNDN);
        mpfr_div(r10845, r10843, r10844, MPFR_RNDN);
        mpfr_asin(r10846, r10845, MPFR_RNDN);
        mpfr_sub(r10847, r10837, r10846, MPFR_RNDN);
        return mpfr_get_d(r10847, MPFR_RNDN);
}

