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

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

double f_if(float a, float b) {
        float r11822 = a;
        float r11823 = r11822 * r11822;
        float r11824 = b;
        float r11825 = r11824 * r11824;
        float r11826 = r11823 + r11825;
        float r11827 = 2;
        float r11828 = pow(r11826, r11827);
        float r11829 = 4;
        float r11830 = r11829 * r11825;
        float r11831 = r11828 + r11830;
        float r11832 = 1;
        float r11833 = r11831 - r11832;
        return r11833;
}

double f_id(double a, double b) {
        double r11834 = a;
        double r11835 = r11834 * r11834;
        double r11836 = b;
        double r11837 = r11836 * r11836;
        double r11838 = r11835 + r11837;
        double r11839 = 2;
        double r11840 = pow(r11838, r11839);
        double r11841 = 4;
        double r11842 = r11841 * r11837;
        double r11843 = r11840 + r11842;
        double r11844 = 1;
        double r11845 = r11843 - r11844;
        return r11845;
}


double f_of(float a, float b) {
        float r11846 = a;
        float r11847 = r11846 * r11846;
        float r11848 = b;
        float r11849 = r11848 * r11848;
        float r11850 = r11847 + r11849;
        float r11851 = sqrt(r11850);
        float r11852 = 2;
        float r11853 = pow(r11851, r11852);
        float r11854 = 4;
        float r11855 = r11854 * r11849;
        float r11856 = fma(r11853, r11853, r11855);
        float r11857 = 1;
        float r11858 = r11856 - r11857;
        return r11858;
}

double f_od(double a, double b) {
        double r11859 = a;
        double r11860 = r11859 * r11859;
        double r11861 = b;
        double r11862 = r11861 * r11861;
        double r11863 = r11860 + r11862;
        double r11864 = sqrt(r11863);
        double r11865 = 2;
        double r11866 = pow(r11864, r11865);
        double r11867 = 4;
        double r11868 = r11867 * r11862;
        double r11869 = fma(r11866, r11866, r11868);
        double r11870 = 1;
        double r11871 = r11869 - r11870;
        return r11871;
}

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 r11872, r11873, r11874, r11875, r11876, r11877, r11878, r11879, r11880, r11881, r11882, r11883;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r11872);
        mpfr_init(r11873);
        mpfr_init(r11874);
        mpfr_init(r11875);
        mpfr_init(r11876);
        mpfr_init_set_str(r11877, "2", 10, MPFR_RNDN);
        mpfr_init(r11878);
        mpfr_init_set_str(r11879, "4", 10, MPFR_RNDN);
        mpfr_init(r11880);
        mpfr_init(r11881);
        mpfr_init_set_str(r11882, "1", 10, MPFR_RNDN);
        mpfr_init(r11883);
}

double f_im(double a, double b) {
        mpfr_set_d(r11872, a, MPFR_RNDN);
        mpfr_mul(r11873, r11872, r11872, MPFR_RNDN);
        mpfr_set_d(r11874, b, MPFR_RNDN);
        mpfr_mul(r11875, r11874, r11874, MPFR_RNDN);
        mpfr_add(r11876, r11873, r11875, MPFR_RNDN);
        ;
        mpfr_pow(r11878, r11876, r11877, MPFR_RNDN);
        ;
        mpfr_mul(r11880, r11879, r11875, MPFR_RNDN);
        mpfr_add(r11881, r11878, r11880, MPFR_RNDN);
        ;
        mpfr_sub(r11883, r11881, r11882, MPFR_RNDN);
        return mpfr_get_d(r11883, MPFR_RNDN);
}

static mpfr_t r11884, r11885, r11886, r11887, r11888, r11889, r11890, r11891, r11892, r11893, r11894, r11895, r11896;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11884);
        mpfr_init(r11885);
        mpfr_init(r11886);
        mpfr_init(r11887);
        mpfr_init(r11888);
        mpfr_init(r11889);
        mpfr_init_set_str(r11890, "2", 10, MPFR_RNDN);
        mpfr_init(r11891);
        mpfr_init_set_str(r11892, "4", 10, MPFR_RNDN);
        mpfr_init(r11893);
        mpfr_init(r11894);
        mpfr_init_set_str(r11895, "1", 10, MPFR_RNDN);
        mpfr_init(r11896);
}

double f_fm(double a, double b) {
        mpfr_set_d(r11884, a, MPFR_RNDN);
        mpfr_mul(r11885, r11884, r11884, MPFR_RNDN);
        mpfr_set_d(r11886, b, MPFR_RNDN);
        mpfr_mul(r11887, r11886, r11886, MPFR_RNDN);
        mpfr_add(r11888, r11885, r11887, MPFR_RNDN);
        mpfr_sqrt(r11889, r11888, MPFR_RNDN);
        ;
        mpfr_pow(r11891, r11889, r11890, MPFR_RNDN);
        ;
        mpfr_mul(r11893, r11892, r11887, MPFR_RNDN);
        mpfr_fma(r11894, r11891, r11891, r11893, MPFR_RNDN);
        ;
        mpfr_sub(r11896, r11894, r11895, MPFR_RNDN);
        return mpfr_get_d(r11896, MPFR_RNDN);
}

static mpfr_t r11897, r11898, r11899, r11900, r11901, r11902, r11903, r11904, r11905, r11906, r11907, r11908, r11909;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11897);
        mpfr_init(r11898);
        mpfr_init(r11899);
        mpfr_init(r11900);
        mpfr_init(r11901);
        mpfr_init(r11902);
        mpfr_init_set_str(r11903, "2", 10, MPFR_RNDN);
        mpfr_init(r11904);
        mpfr_init_set_str(r11905, "4", 10, MPFR_RNDN);
        mpfr_init(r11906);
        mpfr_init(r11907);
        mpfr_init_set_str(r11908, "1", 10, MPFR_RNDN);
        mpfr_init(r11909);
}

double f_dm(double a, double b) {
        mpfr_set_d(r11897, a, MPFR_RNDN);
        mpfr_mul(r11898, r11897, r11897, MPFR_RNDN);
        mpfr_set_d(r11899, b, MPFR_RNDN);
        mpfr_mul(r11900, r11899, r11899, MPFR_RNDN);
        mpfr_add(r11901, r11898, r11900, MPFR_RNDN);
        mpfr_sqrt(r11902, r11901, MPFR_RNDN);
        ;
        mpfr_pow(r11904, r11902, r11903, MPFR_RNDN);
        ;
        mpfr_mul(r11906, r11905, r11900, MPFR_RNDN);
        mpfr_fma(r11907, r11904, r11904, r11906, MPFR_RNDN);
        ;
        mpfr_sub(r11909, r11907, r11908, MPFR_RNDN);
        return mpfr_get_d(r11909, MPFR_RNDN);
}

