#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Linear.Quaternion:$c/ from linear-1.19.1.3, E";

double f_if(float x, float y) {
        float r46572 = x;
        float r46573 = r46572 * r46572;
        float r46574 = y;
        float r46575 = r46574 * r46574;
        float r46576 = r46573 + r46575;
        float r46577 = r46576 + r46575;
        float r46578 = r46577 + r46575;
        return r46578;
}

double f_id(double x, double y) {
        double r46579 = x;
        double r46580 = r46579 * r46579;
        double r46581 = y;
        double r46582 = r46581 * r46581;
        double r46583 = r46580 + r46582;
        double r46584 = r46583 + r46582;
        double r46585 = r46584 + r46582;
        return r46585;
}


double f_of(float x, float y) {
        float r46586 = x;
        float r46587 = r46586 * r46586;
        float r46588 = y;
        float r46589 = r46588 * r46588;
        float r46590 = r46587 + r46589;
        float r46591 = r46590 + r46589;
        float r46592 = r46591 + r46589;
        return r46592;
}

double f_od(double x, double y) {
        double r46593 = x;
        double r46594 = r46593 * r46593;
        double r46595 = y;
        double r46596 = r46595 * r46595;
        double r46597 = r46594 + r46596;
        double r46598 = r46597 + r46596;
        double r46599 = r46598 + r46596;
        return r46599;
}

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 r46600, r46601, r46602, r46603, r46604, r46605, r46606;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46600);
        mpfr_init(r46601);
        mpfr_init(r46602);
        mpfr_init(r46603);
        mpfr_init(r46604);
        mpfr_init(r46605);
        mpfr_init(r46606);
}

double f_im(double x, double y) {
        mpfr_set_d(r46600, x, MPFR_RNDN);
        mpfr_mul(r46601, r46600, r46600, MPFR_RNDN);
        mpfr_set_d(r46602, y, MPFR_RNDN);
        mpfr_mul(r46603, r46602, r46602, MPFR_RNDN);
        mpfr_add(r46604, r46601, r46603, MPFR_RNDN);
        mpfr_add(r46605, r46604, r46603, MPFR_RNDN);
        mpfr_add(r46606, r46605, r46603, MPFR_RNDN);
        return mpfr_get_d(r46606, MPFR_RNDN);
}

static mpfr_t r46607, r46608, r46609, r46610, r46611, r46612, r46613;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46607);
        mpfr_init(r46608);
        mpfr_init(r46609);
        mpfr_init(r46610);
        mpfr_init(r46611);
        mpfr_init(r46612);
        mpfr_init(r46613);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46607, x, MPFR_RNDN);
        mpfr_mul(r46608, r46607, r46607, MPFR_RNDN);
        mpfr_set_d(r46609, y, MPFR_RNDN);
        mpfr_mul(r46610, r46609, r46609, MPFR_RNDN);
        mpfr_add(r46611, r46608, r46610, MPFR_RNDN);
        mpfr_add(r46612, r46611, r46610, MPFR_RNDN);
        mpfr_add(r46613, r46612, r46610, MPFR_RNDN);
        return mpfr_get_d(r46613, MPFR_RNDN);
}

static mpfr_t r46614, r46615, r46616, r46617, r46618, r46619, r46620;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46614);
        mpfr_init(r46615);
        mpfr_init(r46616);
        mpfr_init(r46617);
        mpfr_init(r46618);
        mpfr_init(r46619);
        mpfr_init(r46620);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46614, x, MPFR_RNDN);
        mpfr_mul(r46615, r46614, r46614, MPFR_RNDN);
        mpfr_set_d(r46616, y, MPFR_RNDN);
        mpfr_mul(r46617, r46616, r46616, MPFR_RNDN);
        mpfr_add(r46618, r46615, r46617, MPFR_RNDN);
        mpfr_add(r46619, r46618, r46617, MPFR_RNDN);
        mpfr_add(r46620, r46619, r46617, MPFR_RNDN);
        return mpfr_get_d(r46620, MPFR_RNDN);
}

