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

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

double f_if(float v) {
        float r26859 = 2;
        float r26860 = sqrt(r26859);
        float r26861 = 4;
        float r26862 = r26860 / r26861;
        float r26863 = 1;
        float r26864 = 3;
        float r26865 = v;
        float r26866 = r26865 * r26865;
        float r26867 = r26864 * r26866;
        float r26868 = r26863 - r26867;
        float r26869 = sqrt(r26868);
        float r26870 = r26862 * r26869;
        float r26871 = r26863 - r26866;
        float r26872 = r26870 * r26871;
        return r26872;
}

double f_id(double v) {
        double r26873 = 2;
        double r26874 = sqrt(r26873);
        double r26875 = 4;
        double r26876 = r26874 / r26875;
        double r26877 = 1;
        double r26878 = 3;
        double r26879 = v;
        double r26880 = r26879 * r26879;
        double r26881 = r26878 * r26880;
        double r26882 = r26877 - r26881;
        double r26883 = sqrt(r26882);
        double r26884 = r26876 * r26883;
        double r26885 = r26877 - r26880;
        double r26886 = r26884 * r26885;
        return r26886;
}


double f_of(float v) {
        float r26887 = 2;
        float r26888 = sqrt(r26887);
        float r26889 = 4;
        float r26890 = r26888 / r26889;
        float r26891 = 1;
        float r26892 = 3;
        float r26893 = v;
        float r26894 = r26893 * r26893;
        float r26895 = r26892 * r26894;
        float r26896 = r26891 - r26895;
        float r26897 = sqrt(r26896);
        float r26898 = r26890 * r26897;
        float r26899 = r26891 - r26894;
        float r26900 = r26898 * r26899;
        return r26900;
}

double f_od(double v) {
        double r26901 = 2;
        double r26902 = sqrt(r26901);
        double r26903 = 4;
        double r26904 = r26902 / r26903;
        double r26905 = 1;
        double r26906 = 3;
        double r26907 = v;
        double r26908 = r26907 * r26907;
        double r26909 = r26906 * r26908;
        double r26910 = r26905 - r26909;
        double r26911 = sqrt(r26910);
        double r26912 = r26904 * r26911;
        double r26913 = r26905 - r26908;
        double r26914 = r26912 * r26913;
        return r26914;
}

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 r26915, r26916, r26917, r26918, r26919, r26920, r26921, r26922, r26923, r26924, r26925, r26926, r26927, r26928;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26915, "2", 10, MPFR_RNDN);
        mpfr_init(r26916);
        mpfr_init_set_str(r26917, "4", 10, MPFR_RNDN);
        mpfr_init(r26918);
        mpfr_init_set_str(r26919, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26920, "3", 10, MPFR_RNDN);
        mpfr_init(r26921);
        mpfr_init(r26922);
        mpfr_init(r26923);
        mpfr_init(r26924);
        mpfr_init(r26925);
        mpfr_init(r26926);
        mpfr_init(r26927);
        mpfr_init(r26928);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r26916, r26915, MPFR_RNDN);
        ;
        mpfr_div(r26918, r26916, r26917, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r26921, v, MPFR_RNDN);
        mpfr_mul(r26922, r26921, r26921, MPFR_RNDN);
        mpfr_mul(r26923, r26920, r26922, MPFR_RNDN);
        mpfr_sub(r26924, r26919, r26923, MPFR_RNDN);
        mpfr_sqrt(r26925, r26924, MPFR_RNDN);
        mpfr_mul(r26926, r26918, r26925, MPFR_RNDN);
        mpfr_sub(r26927, r26919, r26922, MPFR_RNDN);
        mpfr_mul(r26928, r26926, r26927, MPFR_RNDN);
        return mpfr_get_d(r26928, MPFR_RNDN);
}

static mpfr_t r26929, r26930, r26931, r26932, r26933, r26934, r26935, r26936, r26937, r26938, r26939, r26940, r26941, r26942;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26929, "2", 10, MPFR_RNDN);
        mpfr_init(r26930);
        mpfr_init_set_str(r26931, "4", 10, MPFR_RNDN);
        mpfr_init(r26932);
        mpfr_init_set_str(r26933, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26934, "3", 10, MPFR_RNDN);
        mpfr_init(r26935);
        mpfr_init(r26936);
        mpfr_init(r26937);
        mpfr_init(r26938);
        mpfr_init(r26939);
        mpfr_init(r26940);
        mpfr_init(r26941);
        mpfr_init(r26942);
}

double f_fm(double v) {
        ;
        mpfr_sqrt(r26930, r26929, MPFR_RNDN);
        ;
        mpfr_div(r26932, r26930, r26931, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r26935, v, MPFR_RNDN);
        mpfr_mul(r26936, r26935, r26935, MPFR_RNDN);
        mpfr_mul(r26937, r26934, r26936, MPFR_RNDN);
        mpfr_sub(r26938, r26933, r26937, MPFR_RNDN);
        mpfr_sqrt(r26939, r26938, MPFR_RNDN);
        mpfr_mul(r26940, r26932, r26939, MPFR_RNDN);
        mpfr_sub(r26941, r26933, r26936, MPFR_RNDN);
        mpfr_mul(r26942, r26940, r26941, MPFR_RNDN);
        return mpfr_get_d(r26942, MPFR_RNDN);
}

static mpfr_t r26943, r26944, r26945, r26946, r26947, r26948, r26949, r26950, r26951, r26952, r26953, r26954, r26955, r26956;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26943, "2", 10, MPFR_RNDN);
        mpfr_init(r26944);
        mpfr_init_set_str(r26945, "4", 10, MPFR_RNDN);
        mpfr_init(r26946);
        mpfr_init_set_str(r26947, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26948, "3", 10, MPFR_RNDN);
        mpfr_init(r26949);
        mpfr_init(r26950);
        mpfr_init(r26951);
        mpfr_init(r26952);
        mpfr_init(r26953);
        mpfr_init(r26954);
        mpfr_init(r26955);
        mpfr_init(r26956);
}

double f_dm(double v) {
        ;
        mpfr_sqrt(r26944, r26943, MPFR_RNDN);
        ;
        mpfr_div(r26946, r26944, r26945, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r26949, v, MPFR_RNDN);
        mpfr_mul(r26950, r26949, r26949, MPFR_RNDN);
        mpfr_mul(r26951, r26948, r26950, MPFR_RNDN);
        mpfr_sub(r26952, r26947, r26951, MPFR_RNDN);
        mpfr_sqrt(r26953, r26952, MPFR_RNDN);
        mpfr_mul(r26954, r26946, r26953, MPFR_RNDN);
        mpfr_sub(r26955, r26947, r26950, MPFR_RNDN);
        mpfr_mul(r26956, r26954, r26955, MPFR_RNDN);
        return mpfr_get_d(r26956, MPFR_RNDN);
}

