#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 r47397 = x;
        float r47398 = r47397 * r47397;
        float r47399 = y;
        float r47400 = r47398 + r47399;
        float r47401 = sqrt(r47400);
        return r47401;
}

double f_id(double x, double y) {
        double r47402 = x;
        double r47403 = r47402 * r47402;
        double r47404 = y;
        double r47405 = r47403 + r47404;
        double r47406 = sqrt(r47405);
        return r47406;
}


double f_of(float x, float y) {
        float r47407 = x;
        float r47408 = -2.013881564242057e+151;
        bool r47409 = r47407 <= r47408;
        float r47410 = 1/2;
        float r47411 = y;
        float r47412 = r47411 / r47407;
        float r47413 = r47410 * r47412;
        float r47414 = r47413 + r47407;
        float r47415 = -r47414;
        float r47416 = 2.556265139380831e+130;
        bool r47417 = r47407 <= r47416;
        float r47418 = r47407 * r47407;
        float r47419 = r47418 + r47411;
        float r47420 = sqrt(r47419);
        float r47421 = r47417 ? r47420 : r47414;
        float r47422 = r47409 ? r47415 : r47421;
        return r47422;
}

double f_od(double x, double y) {
        double r47423 = x;
        double r47424 = -2.013881564242057e+151;
        bool r47425 = r47423 <= r47424;
        double r47426 = 1/2;
        double r47427 = y;
        double r47428 = r47427 / r47423;
        double r47429 = r47426 * r47428;
        double r47430 = r47429 + r47423;
        double r47431 = -r47430;
        double r47432 = 2.556265139380831e+130;
        bool r47433 = r47423 <= r47432;
        double r47434 = r47423 * r47423;
        double r47435 = r47434 + r47427;
        double r47436 = sqrt(r47435);
        double r47437 = r47433 ? r47436 : r47430;
        double r47438 = r47425 ? r47431 : r47437;
        return r47438;
}

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 r47439, r47440, r47441, r47442, r47443;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47439);
        mpfr_init(r47440);
        mpfr_init(r47441);
        mpfr_init(r47442);
        mpfr_init(r47443);
}

double f_im(double x, double y) {
        mpfr_set_d(r47439, x, MPFR_RNDN);
        mpfr_mul(r47440, r47439, r47439, MPFR_RNDN);
        mpfr_set_d(r47441, y, MPFR_RNDN);
        mpfr_add(r47442, r47440, r47441, MPFR_RNDN);
        mpfr_sqrt(r47443, r47442, MPFR_RNDN);
        return mpfr_get_d(r47443, MPFR_RNDN);
}

static mpfr_t r47444, r47445, r47446, r47447, r47448, r47449, r47450, r47451, r47452, r47453, r47454, r47455, r47456, r47457, r47458, r47459;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47444);
        mpfr_init_set_str(r47445, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r47446);
        mpfr_init_set_str(r47447, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47448);
        mpfr_init(r47449);
        mpfr_init(r47450);
        mpfr_init(r47451);
        mpfr_init(r47452);
        mpfr_init_set_str(r47453, "2.556265139380831e+130", 10, MPFR_RNDN);
        mpfr_init(r47454);
        mpfr_init(r47455);
        mpfr_init(r47456);
        mpfr_init(r47457);
        mpfr_init(r47458);
        mpfr_init(r47459);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47444, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47446, mpfr_cmp(r47444, r47445) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47448, y, MPFR_RNDN);
        mpfr_div(r47449, r47448, r47444, MPFR_RNDN);
        mpfr_mul(r47450, r47447, r47449, MPFR_RNDN);
        mpfr_add(r47451, r47450, r47444, MPFR_RNDN);
        mpfr_neg(r47452, r47451, MPFR_RNDN);
        ;
        mpfr_set_si(r47454, mpfr_cmp(r47444, r47453) <= 0, MPFR_RNDN);
        mpfr_mul(r47455, r47444, r47444, MPFR_RNDN);
        mpfr_add(r47456, r47455, r47448, MPFR_RNDN);
        mpfr_sqrt(r47457, r47456, MPFR_RNDN);
        if (mpfr_get_si(r47454, MPFR_RNDN)) { mpfr_set(r47458, r47457, MPFR_RNDN); } else { mpfr_set(r47458, r47451, MPFR_RNDN); };
        if (mpfr_get_si(r47446, MPFR_RNDN)) { mpfr_set(r47459, r47452, MPFR_RNDN); } else { mpfr_set(r47459, r47458, MPFR_RNDN); };
        return mpfr_get_d(r47459, MPFR_RNDN);
}

static mpfr_t r47460, r47461, r47462, r47463, r47464, r47465, r47466, r47467, r47468, r47469, r47470, r47471, r47472, r47473, r47474, r47475;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47460);
        mpfr_init_set_str(r47461, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r47462);
        mpfr_init_set_str(r47463, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47464);
        mpfr_init(r47465);
        mpfr_init(r47466);
        mpfr_init(r47467);
        mpfr_init(r47468);
        mpfr_init_set_str(r47469, "2.556265139380831e+130", 10, MPFR_RNDN);
        mpfr_init(r47470);
        mpfr_init(r47471);
        mpfr_init(r47472);
        mpfr_init(r47473);
        mpfr_init(r47474);
        mpfr_init(r47475);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47460, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47462, mpfr_cmp(r47460, r47461) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r47464, y, MPFR_RNDN);
        mpfr_div(r47465, r47464, r47460, MPFR_RNDN);
        mpfr_mul(r47466, r47463, r47465, MPFR_RNDN);
        mpfr_add(r47467, r47466, r47460, MPFR_RNDN);
        mpfr_neg(r47468, r47467, MPFR_RNDN);
        ;
        mpfr_set_si(r47470, mpfr_cmp(r47460, r47469) <= 0, MPFR_RNDN);
        mpfr_mul(r47471, r47460, r47460, MPFR_RNDN);
        mpfr_add(r47472, r47471, r47464, MPFR_RNDN);
        mpfr_sqrt(r47473, r47472, MPFR_RNDN);
        if (mpfr_get_si(r47470, MPFR_RNDN)) { mpfr_set(r47474, r47473, MPFR_RNDN); } else { mpfr_set(r47474, r47467, MPFR_RNDN); };
        if (mpfr_get_si(r47462, MPFR_RNDN)) { mpfr_set(r47475, r47468, MPFR_RNDN); } else { mpfr_set(r47475, r47474, MPFR_RNDN); };
        return mpfr_get_d(r47475, MPFR_RNDN);
}

