#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 r46925 = x;
        float r46926 = r46925 * r46925;
        float r46927 = y;
        float r46928 = r46926 + r46927;
        float r46929 = sqrt(r46928);
        return r46929;
}

double f_id(double x, double y) {
        double r46930 = x;
        double r46931 = r46930 * r46930;
        double r46932 = y;
        double r46933 = r46931 + r46932;
        double r46934 = sqrt(r46933);
        return r46934;
}


double f_of(float x, float y) {
        float r46935 = x;
        float r46936 = -2.013881564242057e+151;
        bool r46937 = r46935 <= r46936;
        float r46938 = 1/2;
        float r46939 = y;
        float r46940 = r46939 / r46935;
        float r46941 = r46938 * r46940;
        float r46942 = r46941 + r46935;
        float r46943 = -r46942;
        float r46944 = 2.556265139380831e+130;
        bool r46945 = r46935 <= r46944;
        float r46946 = r46935 * r46935;
        float r46947 = r46946 + r46939;
        float r46948 = sqrt(r46947);
        float r46949 = r46945 ? r46948 : r46942;
        float r46950 = r46937 ? r46943 : r46949;
        return r46950;
}

double f_od(double x, double y) {
        double r46951 = x;
        double r46952 = -2.013881564242057e+151;
        bool r46953 = r46951 <= r46952;
        double r46954 = 1/2;
        double r46955 = y;
        double r46956 = r46955 / r46951;
        double r46957 = r46954 * r46956;
        double r46958 = r46957 + r46951;
        double r46959 = -r46958;
        double r46960 = 2.556265139380831e+130;
        bool r46961 = r46951 <= r46960;
        double r46962 = r46951 * r46951;
        double r46963 = r46962 + r46955;
        double r46964 = sqrt(r46963);
        double r46965 = r46961 ? r46964 : r46958;
        double r46966 = r46953 ? r46959 : r46965;
        return r46966;
}

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 r46967, r46968, r46969, r46970, r46971;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46967);
        mpfr_init(r46968);
        mpfr_init(r46969);
        mpfr_init(r46970);
        mpfr_init(r46971);
}

double f_im(double x, double y) {
        mpfr_set_d(r46967, x, MPFR_RNDN);
        mpfr_mul(r46968, r46967, r46967, MPFR_RNDN);
        mpfr_set_d(r46969, y, MPFR_RNDN);
        mpfr_add(r46970, r46968, r46969, MPFR_RNDN);
        mpfr_sqrt(r46971, r46970, MPFR_RNDN);
        return mpfr_get_d(r46971, MPFR_RNDN);
}

static mpfr_t r46972, r46973, r46974, r46975, r46976, r46977, r46978, r46979, r46980, r46981, r46982, r46983, r46984, r46985, r46986, r46987;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46972);
        mpfr_init_set_str(r46973, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r46974);
        mpfr_init_set_str(r46975, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46976);
        mpfr_init(r46977);
        mpfr_init(r46978);
        mpfr_init(r46979);
        mpfr_init(r46980);
        mpfr_init_set_str(r46981, "2.556265139380831e+130", 10, MPFR_RNDN);
        mpfr_init(r46982);
        mpfr_init(r46983);
        mpfr_init(r46984);
        mpfr_init(r46985);
        mpfr_init(r46986);
        mpfr_init(r46987);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46972, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46974, mpfr_cmp(r46972, r46973) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r46976, y, MPFR_RNDN);
        mpfr_div(r46977, r46976, r46972, MPFR_RNDN);
        mpfr_mul(r46978, r46975, r46977, MPFR_RNDN);
        mpfr_add(r46979, r46978, r46972, MPFR_RNDN);
        mpfr_neg(r46980, r46979, MPFR_RNDN);
        ;
        mpfr_set_si(r46982, mpfr_cmp(r46972, r46981) <= 0, MPFR_RNDN);
        mpfr_mul(r46983, r46972, r46972, MPFR_RNDN);
        mpfr_add(r46984, r46983, r46976, MPFR_RNDN);
        mpfr_sqrt(r46985, r46984, MPFR_RNDN);
        if (mpfr_get_si(r46982, MPFR_RNDN)) { mpfr_set(r46986, r46985, MPFR_RNDN); } else { mpfr_set(r46986, r46979, MPFR_RNDN); };
        if (mpfr_get_si(r46974, MPFR_RNDN)) { mpfr_set(r46987, r46980, MPFR_RNDN); } else { mpfr_set(r46987, r46986, MPFR_RNDN); };
        return mpfr_get_d(r46987, MPFR_RNDN);
}

static mpfr_t r46988, r46989, r46990, r46991, r46992, r46993, r46994, r46995, r46996, r46997, r46998, r46999, r47000, r47001, r47002, r47003;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46988);
        mpfr_init_set_str(r46989, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r46990);
        mpfr_init_set_str(r46991, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46992);
        mpfr_init(r46993);
        mpfr_init(r46994);
        mpfr_init(r46995);
        mpfr_init(r46996);
        mpfr_init_set_str(r46997, "2.556265139380831e+130", 10, MPFR_RNDN);
        mpfr_init(r46998);
        mpfr_init(r46999);
        mpfr_init(r47000);
        mpfr_init(r47001);
        mpfr_init(r47002);
        mpfr_init(r47003);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46988, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46990, mpfr_cmp(r46988, r46989) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r46992, y, MPFR_RNDN);
        mpfr_div(r46993, r46992, r46988, MPFR_RNDN);
        mpfr_mul(r46994, r46991, r46993, MPFR_RNDN);
        mpfr_add(r46995, r46994, r46988, MPFR_RNDN);
        mpfr_neg(r46996, r46995, MPFR_RNDN);
        ;
        mpfr_set_si(r46998, mpfr_cmp(r46988, r46997) <= 0, MPFR_RNDN);
        mpfr_mul(r46999, r46988, r46988, MPFR_RNDN);
        mpfr_add(r47000, r46999, r46992, MPFR_RNDN);
        mpfr_sqrt(r47001, r47000, MPFR_RNDN);
        if (mpfr_get_si(r46998, MPFR_RNDN)) { mpfr_set(r47002, r47001, MPFR_RNDN); } else { mpfr_set(r47002, r46995, MPFR_RNDN); };
        if (mpfr_get_si(r46990, MPFR_RNDN)) { mpfr_set(r47003, r46996, MPFR_RNDN); } else { mpfr_set(r47003, r47002, MPFR_RNDN); };
        return mpfr_get_d(r47003, MPFR_RNDN);
}

