#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 r47224 = x;
        float r47225 = r47224 * r47224;
        float r47226 = y;
        float r47227 = r47225 + r47226;
        float r47228 = sqrt(r47227);
        return r47228;
}

double f_id(double x, double y) {
        double r47229 = x;
        double r47230 = r47229 * r47229;
        double r47231 = y;
        double r47232 = r47230 + r47231;
        double r47233 = sqrt(r47232);
        return r47233;
}


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

double f_od(double x, double y) {
        double r47250 = x;
        double r47251 = -1.3432170256437628e+154;
        bool r47252 = r47250 <= r47251;
        double r47253 = 1/2;
        double r47254 = y;
        double r47255 = r47254 / r47250;
        double r47256 = r47253 * r47255;
        double r47257 = r47256 + r47250;
        double r47258 = -r47257;
        double r47259 = 1.902380624814309e+130;
        bool r47260 = r47250 <= r47259;
        double r47261 = r47250 * r47250;
        double r47262 = r47261 + r47254;
        double r47263 = sqrt(r47262);
        double r47264 = r47260 ? r47263 : r47257;
        double r47265 = r47252 ? r47258 : r47264;
        return r47265;
}

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 r47266, r47267, r47268, r47269, r47270;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47266);
        mpfr_init(r47267);
        mpfr_init(r47268);
        mpfr_init(r47269);
        mpfr_init(r47270);
}

double f_im(double x, double y) {
        mpfr_set_d(r47266, x, MPFR_RNDN);
        mpfr_mul(r47267, r47266, r47266, MPFR_RNDN);
        mpfr_set_d(r47268, y, MPFR_RNDN);
        mpfr_add(r47269, r47267, r47268, MPFR_RNDN);
        mpfr_sqrt(r47270, r47269, MPFR_RNDN);
        return mpfr_get_d(r47270, MPFR_RNDN);
}

static mpfr_t r47271, r47272, r47273, r47274, r47275, r47276, r47277, r47278, r47279, r47280, r47281, r47282, r47283, r47284, r47285, r47286;

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

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

static mpfr_t r47287, r47288, r47289, r47290, r47291, r47292, r47293, r47294, r47295, r47296, r47297, r47298, r47299, r47300, r47301, r47302;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47287);
        mpfr_init_set_str(r47288, "-1.3432170256437628e+154", 10, MPFR_RNDN);
        mpfr_init(r47289);
        mpfr_init_set_str(r47290, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47291);
        mpfr_init(r47292);
        mpfr_init(r47293);
        mpfr_init(r47294);
        mpfr_init(r47295);
        mpfr_init_set_str(r47296, "1.902380624814309e+130", 10, MPFR_RNDN);
        mpfr_init(r47297);
        mpfr_init(r47298);
        mpfr_init(r47299);
        mpfr_init(r47300);
        mpfr_init(r47301);
        mpfr_init(r47302);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47287, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47289, mpfr_cmp(r47287, r47288) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47291, y, MPFR_RNDN);
        mpfr_div(r47292, r47291, r47287, MPFR_RNDN);
        mpfr_mul(r47293, r47290, r47292, MPFR_RNDN);
        mpfr_add(r47294, r47293, r47287, MPFR_RNDN);
        mpfr_neg(r47295, r47294, MPFR_RNDN);
        ;
        mpfr_set_si(r47297, mpfr_cmp(r47287, r47296) <= 0, MPFR_RNDN);
        mpfr_mul(r47298, r47287, r47287, MPFR_RNDN);
        mpfr_add(r47299, r47298, r47291, MPFR_RNDN);
        mpfr_sqrt(r47300, r47299, MPFR_RNDN);
        if (mpfr_get_si(r47297, MPFR_RNDN)) { mpfr_set(r47301, r47300, MPFR_RNDN); } else { mpfr_set(r47301, r47294, MPFR_RNDN); };
        if (mpfr_get_si(r47289, MPFR_RNDN)) { mpfr_set(r47302, r47295, MPFR_RNDN); } else { mpfr_set(r47302, r47301, MPFR_RNDN); };
        return mpfr_get_d(r47302, MPFR_RNDN);
}

