#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 r47105 = x;
        float r47106 = r47105 * r47105;
        float r47107 = y;
        float r47108 = r47106 + r47107;
        float r47109 = sqrt(r47108);
        return r47109;
}

double f_id(double x, double y) {
        double r47110 = x;
        double r47111 = r47110 * r47110;
        double r47112 = y;
        double r47113 = r47111 + r47112;
        double r47114 = sqrt(r47113);
        return r47114;
}


double f_of(float x, float y) {
        float r47115 = x;
        float r47116 = r47115 * r47115;
        float r47117 = y;
        float r47118 = r47116 + r47117;
        float r47119 = sqrt(r47118);
        return r47119;
}

double f_od(double x, double y) {
        double r47120 = x;
        double r47121 = r47120 * r47120;
        double r47122 = y;
        double r47123 = r47121 + r47122;
        double r47124 = sqrt(r47123);
        return r47124;
}

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 r47125, r47126, r47127, r47128, r47129;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47125);
        mpfr_init(r47126);
        mpfr_init(r47127);
        mpfr_init(r47128);
        mpfr_init(r47129);
}

double f_im(double x, double y) {
        mpfr_set_d(r47125, x, MPFR_RNDN);
        mpfr_mul(r47126, r47125, r47125, MPFR_RNDN);
        mpfr_set_d(r47127, y, MPFR_RNDN);
        mpfr_add(r47128, r47126, r47127, MPFR_RNDN);
        mpfr_sqrt(r47129, r47128, MPFR_RNDN);
        return mpfr_get_d(r47129, MPFR_RNDN);
}

static mpfr_t r47130, r47131, r47132, r47133, r47134;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47130);
        mpfr_init(r47131);
        mpfr_init(r47132);
        mpfr_init(r47133);
        mpfr_init(r47134);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47130, x, MPFR_RNDN);
        mpfr_mul(r47131, r47130, r47130, MPFR_RNDN);
        mpfr_set_d(r47132, y, MPFR_RNDN);
        mpfr_add(r47133, r47131, r47132, MPFR_RNDN);
        mpfr_sqrt(r47134, r47133, MPFR_RNDN);
        return mpfr_get_d(r47134, MPFR_RNDN);
}

static mpfr_t r47135, r47136, r47137, r47138, r47139;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47135);
        mpfr_init(r47136);
        mpfr_init(r47137);
        mpfr_init(r47138);
        mpfr_init(r47139);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47135, x, MPFR_RNDN);
        mpfr_mul(r47136, r47135, r47135, MPFR_RNDN);
        mpfr_set_d(r47137, y, MPFR_RNDN);
        mpfr_add(r47138, r47136, r47137, MPFR_RNDN);
        mpfr_sqrt(r47139, r47138, MPFR_RNDN);
        return mpfr_get_d(r47139, MPFR_RNDN);
}

