#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 r47205 = x;
        float r47206 = r47205 * r47205;
        float r47207 = y;
        float r47208 = r47206 + r47207;
        float r47209 = sqrt(r47208);
        return r47209;
}

double f_id(double x, double y) {
        double r47210 = x;
        double r47211 = r47210 * r47210;
        double r47212 = y;
        double r47213 = r47211 + r47212;
        double r47214 = sqrt(r47213);
        return r47214;
}


double f_of(float x, float y) {
        float r47215 = x;
        float r47216 = -1.3432170256437628e+154;
        bool r47217 = r47215 <= r47216;
        float r47218 = 1/2;
        float r47219 = y;
        float r47220 = r47219 / r47215;
        float r47221 = r47218 * r47220;
        float r47222 = r47221 + r47215;
        float r47223 = -r47222;
        float r47224 = 1.902380624814309e+130;
        bool r47225 = r47215 <= r47224;
        float r47226 = r47215 * r47215;
        float r47227 = r47226 + r47219;
        float r47228 = sqrt(r47227);
        float r47229 = r47225 ? r47228 : r47222;
        float r47230 = r47217 ? r47223 : r47229;
        return r47230;
}

double f_od(double x, double y) {
        double r47231 = x;
        double r47232 = -1.3432170256437628e+154;
        bool r47233 = r47231 <= r47232;
        double r47234 = 1/2;
        double r47235 = y;
        double r47236 = r47235 / r47231;
        double r47237 = r47234 * r47236;
        double r47238 = r47237 + r47231;
        double r47239 = -r47238;
        double r47240 = 1.902380624814309e+130;
        bool r47241 = r47231 <= r47240;
        double r47242 = r47231 * r47231;
        double r47243 = r47242 + r47235;
        double r47244 = sqrt(r47243);
        double r47245 = r47241 ? r47244 : r47238;
        double r47246 = r47233 ? r47239 : r47245;
        return r47246;
}

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 r47247, r47248, r47249, r47250, r47251;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47247);
        mpfr_init(r47248);
        mpfr_init(r47249);
        mpfr_init(r47250);
        mpfr_init(r47251);
}

double f_im(double x, double y) {
        mpfr_set_d(r47247, x, MPFR_RNDN);
        mpfr_mul(r47248, r47247, r47247, MPFR_RNDN);
        mpfr_set_d(r47249, y, MPFR_RNDN);
        mpfr_add(r47250, r47248, r47249, MPFR_RNDN);
        mpfr_sqrt(r47251, r47250, MPFR_RNDN);
        return mpfr_get_d(r47251, MPFR_RNDN);
}

static mpfr_t r47252, r47253, r47254, r47255, r47256, r47257, r47258, r47259, r47260, r47261, r47262, r47263, r47264, r47265, r47266, r47267;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47252);
        mpfr_init_set_str(r47253, "-1.3432170256437628e+154", 10, MPFR_RNDN);
        mpfr_init(r47254);
        mpfr_init_set_str(r47255, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47256);
        mpfr_init(r47257);
        mpfr_init(r47258);
        mpfr_init(r47259);
        mpfr_init(r47260);
        mpfr_init_set_str(r47261, "1.902380624814309e+130", 10, MPFR_RNDN);
        mpfr_init(r47262);
        mpfr_init(r47263);
        mpfr_init(r47264);
        mpfr_init(r47265);
        mpfr_init(r47266);
        mpfr_init(r47267);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47252, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47254, mpfr_cmp(r47252, r47253) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47256, y, MPFR_RNDN);
        mpfr_div(r47257, r47256, r47252, MPFR_RNDN);
        mpfr_mul(r47258, r47255, r47257, MPFR_RNDN);
        mpfr_add(r47259, r47258, r47252, MPFR_RNDN);
        mpfr_neg(r47260, r47259, MPFR_RNDN);
        ;
        mpfr_set_si(r47262, mpfr_cmp(r47252, r47261) <= 0, MPFR_RNDN);
        mpfr_mul(r47263, r47252, r47252, MPFR_RNDN);
        mpfr_add(r47264, r47263, r47256, MPFR_RNDN);
        mpfr_sqrt(r47265, r47264, MPFR_RNDN);
        if (mpfr_get_si(r47262, MPFR_RNDN)) { mpfr_set(r47266, r47265, MPFR_RNDN); } else { mpfr_set(r47266, r47259, MPFR_RNDN); };
        if (mpfr_get_si(r47254, MPFR_RNDN)) { mpfr_set(r47267, r47260, MPFR_RNDN); } else { mpfr_set(r47267, r47266, MPFR_RNDN); };
        return mpfr_get_d(r47267, MPFR_RNDN);
}

static mpfr_t r47268, r47269, r47270, r47271, r47272, r47273, r47274, r47275, r47276, r47277, r47278, r47279, r47280, r47281, r47282, r47283;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47268);
        mpfr_init_set_str(r47269, "-1.3432170256437628e+154", 10, MPFR_RNDN);
        mpfr_init(r47270);
        mpfr_init_set_str(r47271, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47272);
        mpfr_init(r47273);
        mpfr_init(r47274);
        mpfr_init(r47275);
        mpfr_init(r47276);
        mpfr_init_set_str(r47277, "1.902380624814309e+130", 10, MPFR_RNDN);
        mpfr_init(r47278);
        mpfr_init(r47279);
        mpfr_init(r47280);
        mpfr_init(r47281);
        mpfr_init(r47282);
        mpfr_init(r47283);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47268, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47270, mpfr_cmp(r47268, r47269) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47272, y, MPFR_RNDN);
        mpfr_div(r47273, r47272, r47268, MPFR_RNDN);
        mpfr_mul(r47274, r47271, r47273, MPFR_RNDN);
        mpfr_add(r47275, r47274, r47268, MPFR_RNDN);
        mpfr_neg(r47276, r47275, MPFR_RNDN);
        ;
        mpfr_set_si(r47278, mpfr_cmp(r47268, r47277) <= 0, MPFR_RNDN);
        mpfr_mul(r47279, r47268, r47268, MPFR_RNDN);
        mpfr_add(r47280, r47279, r47272, MPFR_RNDN);
        mpfr_sqrt(r47281, r47280, MPFR_RNDN);
        if (mpfr_get_si(r47278, MPFR_RNDN)) { mpfr_set(r47282, r47281, MPFR_RNDN); } else { mpfr_set(r47282, r47275, MPFR_RNDN); };
        if (mpfr_get_si(r47270, MPFR_RNDN)) { mpfr_set(r47283, r47276, MPFR_RNDN); } else { mpfr_set(r47283, r47282, MPFR_RNDN); };
        return mpfr_get_d(r47283, MPFR_RNDN);
}

