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

char *name = "Bouland and Aaronson, Equation (25)";

double f_if(float a, float b) {
        float r10764 = a;
        float r10765 = r10764 * r10764;
        float r10766 = b;
        float r10767 = r10766 * r10766;
        float r10768 = r10765 + r10767;
        float r10769 = 2.0f;
        float r10770 = pow(r10768, r10769);
        float r10771 = 4.0f;
        float r10772 = 1.0f;
        float r10773 = r10772 + r10764;
        float r10774 = r10765 * r10773;
        float r10775 = 3.0f;
        float r10776 = r10775 * r10764;
        float r10777 = r10772 - r10776;
        float r10778 = r10767 * r10777;
        float r10779 = r10774 + r10778;
        float r10780 = r10771 * r10779;
        float r10781 = r10770 + r10780;
        float r10782 = r10781 - r10772;
        return r10782;
}

double f_id(double a, double b) {
        double r10783 = a;
        double r10784 = r10783 * r10783;
        double r10785 = b;
        double r10786 = r10785 * r10785;
        double r10787 = r10784 + r10786;
        double r10788 = 2.0;
        double r10789 = pow(r10787, r10788);
        double r10790 = 4.0;
        double r10791 = 1.0;
        double r10792 = r10791 + r10783;
        double r10793 = r10784 * r10792;
        double r10794 = 3.0;
        double r10795 = r10794 * r10783;
        double r10796 = r10791 - r10795;
        double r10797 = r10786 * r10796;
        double r10798 = r10793 + r10797;
        double r10799 = r10790 * r10798;
        double r10800 = r10789 + r10799;
        double r10801 = r10800 - r10791;
        return r10801;
}


double f_of(float a, float b) {
        float r10802 = 4.0f;
        float r10803 = a;
        float r10804 = r10803 * r10803;
        float r10805 = 1.0f;
        float r10806 = r10803 + r10805;
        float r10807 = r10804 * r10806;
        float r10808 = b;
        float r10809 = r10808 * r10808;
        float r10810 = 3.0f;
        float r10811 = r10810 * r10803;
        float r10812 = r10805 - r10811;
        float r10813 = r10809 * r10812;
        float r10814 = r10807 + r10813;
        float r10815 = cbrt(r10814);
        float r10816 = r10815 * r10815;
        float r10817 = r10815 * r10816;
        float r10818 = r10802 * r10817;
        float r10819 = r10804 + r10809;
        float r10820 = 2.0f;
        float r10821 = pow(r10819, r10820);
        float r10822 = r10818 + r10821;
        float r10823 = r10822 - r10805;
        return r10823;
}

double f_od(double a, double b) {
        double r10824 = 4.0;
        double r10825 = a;
        double r10826 = r10825 * r10825;
        double r10827 = 1.0;
        double r10828 = r10825 + r10827;
        double r10829 = r10826 * r10828;
        double r10830 = b;
        double r10831 = r10830 * r10830;
        double r10832 = 3.0;
        double r10833 = r10832 * r10825;
        double r10834 = r10827 - r10833;
        double r10835 = r10831 * r10834;
        double r10836 = r10829 + r10835;
        double r10837 = cbrt(r10836);
        double r10838 = r10837 * r10837;
        double r10839 = r10837 * r10838;
        double r10840 = r10824 * r10839;
        double r10841 = r10826 + r10831;
        double r10842 = 2.0;
        double r10843 = pow(r10841, r10842);
        double r10844 = r10840 + r10843;
        double r10845 = r10844 - r10827;
        return r10845;
}

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 r10846, r10847, r10848, r10849, r10850, r10851, r10852, r10853, r10854, r10855, r10856, r10857, r10858, r10859, r10860, r10861, r10862, r10863, r10864;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10846);
        mpfr_init(r10847);
        mpfr_init(r10848);
        mpfr_init(r10849);
        mpfr_init(r10850);
        mpfr_init_set_str(r10851, "2", 10, MPFR_RNDN);
        mpfr_init(r10852);
        mpfr_init_set_str(r10853, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r10854, "1", 10, MPFR_RNDN);
        mpfr_init(r10855);
        mpfr_init(r10856);
        mpfr_init_set_str(r10857, "3", 10, MPFR_RNDN);
        mpfr_init(r10858);
        mpfr_init(r10859);
        mpfr_init(r10860);
        mpfr_init(r10861);
        mpfr_init(r10862);
        mpfr_init(r10863);
        mpfr_init(r10864);
}

double f_im(double a, double b) {
        mpfr_set_d(r10846, a, MPFR_RNDN);
        mpfr_mul(r10847, r10846, r10846, MPFR_RNDN);
        mpfr_set_d(r10848, b, MPFR_RNDN);
        mpfr_mul(r10849, r10848, r10848, MPFR_RNDN);
        mpfr_add(r10850, r10847, r10849, MPFR_RNDN);
        ;
        mpfr_pow(r10852, r10850, r10851, MPFR_RNDN);
        ;
        ;
        mpfr_add(r10855, r10854, r10846, MPFR_RNDN);
        mpfr_mul(r10856, r10847, r10855, MPFR_RNDN);
        ;
        mpfr_mul(r10858, r10857, r10846, MPFR_RNDN);
        mpfr_sub(r10859, r10854, r10858, MPFR_RNDN);
        mpfr_mul(r10860, r10849, r10859, MPFR_RNDN);
        mpfr_add(r10861, r10856, r10860, MPFR_RNDN);
        mpfr_mul(r10862, r10853, r10861, MPFR_RNDN);
        mpfr_add(r10863, r10852, r10862, MPFR_RNDN);
        mpfr_sub(r10864, r10863, r10854, MPFR_RNDN);
        return mpfr_get_d(r10864, MPFR_RNDN);
}

static mpfr_t r10865, r10866, r10867, r10868, r10869, r10870, r10871, r10872, r10873, r10874, r10875, r10876, r10877, r10878, r10879, r10880, r10881, r10882, r10883, r10884, r10885, r10886;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10865, "4", 10, MPFR_RNDN);
        mpfr_init(r10866);
        mpfr_init(r10867);
        mpfr_init_set_str(r10868, "1", 10, MPFR_RNDN);
        mpfr_init(r10869);
        mpfr_init(r10870);
        mpfr_init(r10871);
        mpfr_init(r10872);
        mpfr_init_set_str(r10873, "3", 10, MPFR_RNDN);
        mpfr_init(r10874);
        mpfr_init(r10875);
        mpfr_init(r10876);
        mpfr_init(r10877);
        mpfr_init(r10878);
        mpfr_init(r10879);
        mpfr_init(r10880);
        mpfr_init(r10881);
        mpfr_init(r10882);
        mpfr_init_set_str(r10883, "2", 10, MPFR_RNDN);
        mpfr_init(r10884);
        mpfr_init(r10885);
        mpfr_init(r10886);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r10866, a, MPFR_RNDN);
        mpfr_mul(r10867, r10866, r10866, MPFR_RNDN);
        ;
        mpfr_add(r10869, r10866, r10868, MPFR_RNDN);
        mpfr_mul(r10870, r10867, r10869, MPFR_RNDN);
        mpfr_set_d(r10871, b, MPFR_RNDN);
        mpfr_mul(r10872, r10871, r10871, MPFR_RNDN);
        ;
        mpfr_mul(r10874, r10873, r10866, MPFR_RNDN);
        mpfr_sub(r10875, r10868, r10874, MPFR_RNDN);
        mpfr_mul(r10876, r10872, r10875, MPFR_RNDN);
        mpfr_add(r10877, r10870, r10876, MPFR_RNDN);
        mpfr_cbrt(r10878, r10877, MPFR_RNDN);
        mpfr_mul(r10879, r10878, r10878, MPFR_RNDN);
        mpfr_mul(r10880, r10878, r10879, MPFR_RNDN);
        mpfr_mul(r10881, r10865, r10880, MPFR_RNDN);
        mpfr_add(r10882, r10867, r10872, MPFR_RNDN);
        ;
        mpfr_pow(r10884, r10882, r10883, MPFR_RNDN);
        mpfr_add(r10885, r10881, r10884, MPFR_RNDN);
        mpfr_sub(r10886, r10885, r10868, MPFR_RNDN);
        return mpfr_get_d(r10886, MPFR_RNDN);
}

static mpfr_t r10887, r10888, r10889, r10890, r10891, r10892, r10893, r10894, r10895, r10896, r10897, r10898, r10899, r10900, r10901, r10902, r10903, r10904, r10905, r10906, r10907, r10908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10887, "4", 10, MPFR_RNDN);
        mpfr_init(r10888);
        mpfr_init(r10889);
        mpfr_init_set_str(r10890, "1", 10, MPFR_RNDN);
        mpfr_init(r10891);
        mpfr_init(r10892);
        mpfr_init(r10893);
        mpfr_init(r10894);
        mpfr_init_set_str(r10895, "3", 10, MPFR_RNDN);
        mpfr_init(r10896);
        mpfr_init(r10897);
        mpfr_init(r10898);
        mpfr_init(r10899);
        mpfr_init(r10900);
        mpfr_init(r10901);
        mpfr_init(r10902);
        mpfr_init(r10903);
        mpfr_init(r10904);
        mpfr_init_set_str(r10905, "2", 10, MPFR_RNDN);
        mpfr_init(r10906);
        mpfr_init(r10907);
        mpfr_init(r10908);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r10888, a, MPFR_RNDN);
        mpfr_mul(r10889, r10888, r10888, MPFR_RNDN);
        ;
        mpfr_add(r10891, r10888, r10890, MPFR_RNDN);
        mpfr_mul(r10892, r10889, r10891, MPFR_RNDN);
        mpfr_set_d(r10893, b, MPFR_RNDN);
        mpfr_mul(r10894, r10893, r10893, MPFR_RNDN);
        ;
        mpfr_mul(r10896, r10895, r10888, MPFR_RNDN);
        mpfr_sub(r10897, r10890, r10896, MPFR_RNDN);
        mpfr_mul(r10898, r10894, r10897, MPFR_RNDN);
        mpfr_add(r10899, r10892, r10898, MPFR_RNDN);
        mpfr_cbrt(r10900, r10899, MPFR_RNDN);
        mpfr_mul(r10901, r10900, r10900, MPFR_RNDN);
        mpfr_mul(r10902, r10900, r10901, MPFR_RNDN);
        mpfr_mul(r10903, r10887, r10902, MPFR_RNDN);
        mpfr_add(r10904, r10889, r10894, MPFR_RNDN);
        ;
        mpfr_pow(r10906, r10904, r10905, MPFR_RNDN);
        mpfr_add(r10907, r10903, r10906, MPFR_RNDN);
        mpfr_sub(r10908, r10907, r10890, MPFR_RNDN);
        return mpfr_get_d(r10908, MPFR_RNDN);
}

