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

char *name = "Linear.Quaternion:$clog from linear-1.19.1.3";

double f_if(float x, float y) {
        float r46949 = x;
        float r46950 = r46949 * r46949;
        float r46951 = y;
        float r46952 = r46950 + r46951;
        float r46953 = sqrt(r46952);
        return r46953;
}

double f_id(double x, double y) {
        double r46954 = x;
        double r46955 = r46954 * r46954;
        double r46956 = y;
        double r46957 = r46955 + r46956;
        double r46958 = sqrt(r46957);
        return r46958;
}


double f_of(float x, float y) {
        float r46959 = x;
        float r46960 = -1.3432170256437628e+154;
        bool r46961 = r46959 <= r46960;
        float r46962 = 1/2;
        float r46963 = y;
        float r46964 = r46963 / r46959;
        float r46965 = r46962 * r46964;
        float r46966 = r46965 + r46959;
        float r46967 = -r46966;
        float r46968 = 1.902380624814309e+130;
        bool r46969 = r46959 <= r46968;
        float r46970 = r46959 * r46959;
        float r46971 = r46970 + r46963;
        float r46972 = sqrt(r46971);
        float r46973 = r46969 ? r46972 : r46966;
        float r46974 = r46961 ? r46967 : r46973;
        return r46974;
}

double f_od(double x, double y) {
        double r46975 = x;
        double r46976 = -1.3432170256437628e+154;
        bool r46977 = r46975 <= r46976;
        double r46978 = 1/2;
        double r46979 = y;
        double r46980 = r46979 / r46975;
        double r46981 = r46978 * r46980;
        double r46982 = r46981 + r46975;
        double r46983 = -r46982;
        double r46984 = 1.902380624814309e+130;
        bool r46985 = r46975 <= r46984;
        double r46986 = r46975 * r46975;
        double r46987 = r46986 + r46979;
        double r46988 = sqrt(r46987);
        double r46989 = r46985 ? r46988 : r46982;
        double r46990 = r46977 ? r46983 : r46989;
        return r46990;
}

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 r46991, r46992, r46993, r46994, r46995;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46991);
        mpfr_init(r46992);
        mpfr_init(r46993);
        mpfr_init(r46994);
        mpfr_init(r46995);
}

double f_im(double x, double y) {
        mpfr_set_d(r46991, x, MPFR_RNDN);
        mpfr_mul(r46992, r46991, r46991, MPFR_RNDN);
        mpfr_set_d(r46993, y, MPFR_RNDN);
        mpfr_add(r46994, r46992, r46993, MPFR_RNDN);
        mpfr_sqrt(r46995, r46994, MPFR_RNDN);
        return mpfr_get_d(r46995, MPFR_RNDN);
}

static mpfr_t r46996, r46997, r46998, r46999, r47000, r47001, r47002, r47003, r47004, r47005, r47006, r47007, r47008, r47009, r47010, r47011;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46996);
        mpfr_init_set_str(r46997, "-1.3432170256437628e+154", 10, MPFR_RNDN);
        mpfr_init(r46998);
        mpfr_init_set_str(r46999, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47000);
        mpfr_init(r47001);
        mpfr_init(r47002);
        mpfr_init(r47003);
        mpfr_init(r47004);
        mpfr_init_set_str(r47005, "1.902380624814309e+130", 10, MPFR_RNDN);
        mpfr_init(r47006);
        mpfr_init(r47007);
        mpfr_init(r47008);
        mpfr_init(r47009);
        mpfr_init(r47010);
        mpfr_init(r47011);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46996, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46998, mpfr_cmp(r46996, r46997) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47000, y, MPFR_RNDN);
        mpfr_div(r47001, r47000, r46996, MPFR_RNDN);
        mpfr_mul(r47002, r46999, r47001, MPFR_RNDN);
        mpfr_add(r47003, r47002, r46996, MPFR_RNDN);
        mpfr_neg(r47004, r47003, MPFR_RNDN);
        ;
        mpfr_set_si(r47006, mpfr_cmp(r46996, r47005) <= 0, MPFR_RNDN);
        mpfr_mul(r47007, r46996, r46996, MPFR_RNDN);
        mpfr_add(r47008, r47007, r47000, MPFR_RNDN);
        mpfr_sqrt(r47009, r47008, MPFR_RNDN);
        if (mpfr_get_si(r47006, MPFR_RNDN)) { mpfr_set(r47010, r47009, MPFR_RNDN); } else { mpfr_set(r47010, r47003, MPFR_RNDN); };
        if (mpfr_get_si(r46998, MPFR_RNDN)) { mpfr_set(r47011, r47004, MPFR_RNDN); } else { mpfr_set(r47011, r47010, MPFR_RNDN); };
        return mpfr_get_d(r47011, MPFR_RNDN);
}

static mpfr_t r47012, r47013, r47014, r47015, r47016, r47017, r47018, r47019, r47020, r47021, r47022, r47023, r47024, r47025, r47026, r47027;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47012);
        mpfr_init_set_str(r47013, "-1.3432170256437628e+154", 10, MPFR_RNDN);
        mpfr_init(r47014);
        mpfr_init_set_str(r47015, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47016);
        mpfr_init(r47017);
        mpfr_init(r47018);
        mpfr_init(r47019);
        mpfr_init(r47020);
        mpfr_init_set_str(r47021, "1.902380624814309e+130", 10, MPFR_RNDN);
        mpfr_init(r47022);
        mpfr_init(r47023);
        mpfr_init(r47024);
        mpfr_init(r47025);
        mpfr_init(r47026);
        mpfr_init(r47027);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47012, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47014, mpfr_cmp(r47012, r47013) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47016, y, MPFR_RNDN);
        mpfr_div(r47017, r47016, r47012, MPFR_RNDN);
        mpfr_mul(r47018, r47015, r47017, MPFR_RNDN);
        mpfr_add(r47019, r47018, r47012, MPFR_RNDN);
        mpfr_neg(r47020, r47019, MPFR_RNDN);
        ;
        mpfr_set_si(r47022, mpfr_cmp(r47012, r47021) <= 0, MPFR_RNDN);
        mpfr_mul(r47023, r47012, r47012, MPFR_RNDN);
        mpfr_add(r47024, r47023, r47016, MPFR_RNDN);
        mpfr_sqrt(r47025, r47024, MPFR_RNDN);
        if (mpfr_get_si(r47022, MPFR_RNDN)) { mpfr_set(r47026, r47025, MPFR_RNDN); } else { mpfr_set(r47026, r47019, MPFR_RNDN); };
        if (mpfr_get_si(r47014, MPFR_RNDN)) { mpfr_set(r47027, r47020, MPFR_RNDN); } else { mpfr_set(r47027, r47026, MPFR_RNDN); };
        return mpfr_get_d(r47027, MPFR_RNDN);
}

