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

char *name = "2isqrt (example 3.6)";

double f_if(float x) {
        float r4417835 = 1;
        float r4417836 = x;
        float r4417837 = sqrt(r4417836);
        float r4417838 = r4417835 / r4417837;
        float r4417839 = r4417836 + r4417835;
        float r4417840 = sqrt(r4417839);
        float r4417841 = r4417835 / r4417840;
        float r4417842 = r4417838 - r4417841;
        return r4417842;
}

double f_id(double x) {
        double r4417843 = 1;
        double r4417844 = x;
        double r4417845 = sqrt(r4417844);
        double r4417846 = r4417843 / r4417845;
        double r4417847 = r4417844 + r4417843;
        double r4417848 = sqrt(r4417847);
        double r4417849 = r4417843 / r4417848;
        double r4417850 = r4417846 - r4417849;
        return r4417850;
}


double f_of(float x) {
        float r4417851 = 1;
        float r4417852 = x;
        float r4417853 = sqrt(r4417852);
        float r4417854 = r4417851 / r4417853;
        float r4417855 = r4417852 + r4417851;
        float r4417856 = sqrt(r4417855);
        float r4417857 = r4417856 + r4417853;
        float r4417858 = r4417851 / r4417857;
        float r4417859 = r4417858 / r4417856;
        float r4417860 = r4417854 * r4417859;
        return r4417860;
}

double f_od(double x) {
        double r4417861 = 1;
        double r4417862 = x;
        double r4417863 = sqrt(r4417862);
        double r4417864 = r4417861 / r4417863;
        double r4417865 = r4417862 + r4417861;
        double r4417866 = sqrt(r4417865);
        double r4417867 = r4417866 + r4417863;
        double r4417868 = r4417861 / r4417867;
        double r4417869 = r4417868 / r4417866;
        double r4417870 = r4417864 * r4417869;
        return r4417870;
}

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 r4417871, r4417872, r4417873, r4417874, r4417875, r4417876, r4417877, r4417878;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4417871, "1", 10, MPFR_RNDN);
        mpfr_init(r4417872);
        mpfr_init(r4417873);
        mpfr_init(r4417874);
        mpfr_init(r4417875);
        mpfr_init(r4417876);
        mpfr_init(r4417877);
        mpfr_init(r4417878);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4417872, x, MPFR_RNDN);
        mpfr_sqrt(r4417873, r4417872, MPFR_RNDN);
        mpfr_div(r4417874, r4417871, r4417873, MPFR_RNDN);
        mpfr_add(r4417875, r4417872, r4417871, MPFR_RNDN);
        mpfr_sqrt(r4417876, r4417875, MPFR_RNDN);
        mpfr_div(r4417877, r4417871, r4417876, MPFR_RNDN);
        mpfr_sub(r4417878, r4417874, r4417877, MPFR_RNDN);
        return mpfr_get_d(r4417878, MPFR_RNDN);
}

static mpfr_t r4417879, r4417880, r4417881, r4417882, r4417883, r4417884, r4417885, r4417886, r4417887, r4417888;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4417879, "1", 10, MPFR_RNDN);
        mpfr_init(r4417880);
        mpfr_init(r4417881);
        mpfr_init(r4417882);
        mpfr_init(r4417883);
        mpfr_init(r4417884);
        mpfr_init(r4417885);
        mpfr_init(r4417886);
        mpfr_init(r4417887);
        mpfr_init(r4417888);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4417880, x, MPFR_RNDN);
        mpfr_sqrt(r4417881, r4417880, MPFR_RNDN);
        mpfr_div(r4417882, r4417879, r4417881, MPFR_RNDN);
        mpfr_add(r4417883, r4417880, r4417879, MPFR_RNDN);
        mpfr_sqrt(r4417884, r4417883, MPFR_RNDN);
        mpfr_add(r4417885, r4417884, r4417881, MPFR_RNDN);
        mpfr_div(r4417886, r4417879, r4417885, MPFR_RNDN);
        mpfr_div(r4417887, r4417886, r4417884, MPFR_RNDN);
        mpfr_mul(r4417888, r4417882, r4417887, MPFR_RNDN);
        return mpfr_get_d(r4417888, MPFR_RNDN);
}

static mpfr_t r4417889, r4417890, r4417891, r4417892, r4417893, r4417894, r4417895, r4417896, r4417897, r4417898;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4417889, "1", 10, MPFR_RNDN);
        mpfr_init(r4417890);
        mpfr_init(r4417891);
        mpfr_init(r4417892);
        mpfr_init(r4417893);
        mpfr_init(r4417894);
        mpfr_init(r4417895);
        mpfr_init(r4417896);
        mpfr_init(r4417897);
        mpfr_init(r4417898);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4417890, x, MPFR_RNDN);
        mpfr_sqrt(r4417891, r4417890, MPFR_RNDN);
        mpfr_div(r4417892, r4417889, r4417891, MPFR_RNDN);
        mpfr_add(r4417893, r4417890, r4417889, MPFR_RNDN);
        mpfr_sqrt(r4417894, r4417893, MPFR_RNDN);
        mpfr_add(r4417895, r4417894, r4417891, MPFR_RNDN);
        mpfr_div(r4417896, r4417889, r4417895, MPFR_RNDN);
        mpfr_div(r4417897, r4417896, r4417894, MPFR_RNDN);
        mpfr_mul(r4417898, r4417892, r4417897, MPFR_RNDN);
        return mpfr_get_d(r4417898, MPFR_RNDN);
}

