#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, A";

double f_if(float x, float y, float z) {
        float r44601 = x;
        float r44602 = y;
        float r44603 = r44601 * r44602;
        float r44604 = z;
        float r44605 = r44604 * r44604;
        float r44606 = r44603 + r44605;
        float r44607 = r44606 + r44605;
        float r44608 = r44607 + r44605;
        return r44608;
}

double f_id(double x, double y, double z) {
        double r44609 = x;
        double r44610 = y;
        double r44611 = r44609 * r44610;
        double r44612 = z;
        double r44613 = r44612 * r44612;
        double r44614 = r44611 + r44613;
        double r44615 = r44614 + r44613;
        double r44616 = r44615 + r44613;
        return r44616;
}


double f_of(float x, float y, float z) {
        float r44617 = y;
        float r44618 = x;
        float r44619 = r44617 * r44618;
        float r44620 = 1.0f;
        float r44621 = 2.0f;
        float r44622 = r44620 + r44621;
        float r44623 = z;
        float r44624 = r44623 * r44623;
        float r44625 = r44622 * r44624;
        float r44626 = r44619 + r44625;
        return r44626;
}

double f_od(double x, double y, double z) {
        double r44627 = y;
        double r44628 = x;
        double r44629 = r44627 * r44628;
        double r44630 = 1.0;
        double r44631 = 2.0;
        double r44632 = r44630 + r44631;
        double r44633 = z;
        double r44634 = r44633 * r44633;
        double r44635 = r44632 * r44634;
        double r44636 = r44629 + r44635;
        return r44636;
}

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 r44637, r44638, r44639, r44640, r44641, r44642, r44643, r44644;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44637);
        mpfr_init(r44638);
        mpfr_init(r44639);
        mpfr_init(r44640);
        mpfr_init(r44641);
        mpfr_init(r44642);
        mpfr_init(r44643);
        mpfr_init(r44644);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44637, x, MPFR_RNDN);
        mpfr_set_d(r44638, y, MPFR_RNDN);
        mpfr_mul(r44639, r44637, r44638, MPFR_RNDN);
        mpfr_set_d(r44640, z, MPFR_RNDN);
        mpfr_mul(r44641, r44640, r44640, MPFR_RNDN);
        mpfr_add(r44642, r44639, r44641, MPFR_RNDN);
        mpfr_add(r44643, r44642, r44641, MPFR_RNDN);
        mpfr_add(r44644, r44643, r44641, MPFR_RNDN);
        return mpfr_get_d(r44644, MPFR_RNDN);
}

static mpfr_t r44645, r44646, r44647, r44648, r44649, r44650, r44651, r44652, r44653, r44654;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44645);
        mpfr_init(r44646);
        mpfr_init(r44647);
        mpfr_init_set_str(r44648, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44649, "2", 10, MPFR_RNDN);
        mpfr_init(r44650);
        mpfr_init(r44651);
        mpfr_init(r44652);
        mpfr_init(r44653);
        mpfr_init(r44654);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44645, y, MPFR_RNDN);
        mpfr_set_d(r44646, x, MPFR_RNDN);
        mpfr_mul(r44647, r44645, r44646, MPFR_RNDN);
        ;
        ;
        mpfr_add(r44650, r44648, r44649, MPFR_RNDN);
        mpfr_set_d(r44651, z, MPFR_RNDN);
        mpfr_mul(r44652, r44651, r44651, MPFR_RNDN);
        mpfr_mul(r44653, r44650, r44652, MPFR_RNDN);
        mpfr_add(r44654, r44647, r44653, MPFR_RNDN);
        return mpfr_get_d(r44654, MPFR_RNDN);
}

static mpfr_t r44655, r44656, r44657, r44658, r44659, r44660, r44661, r44662, r44663, r44664;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44655);
        mpfr_init(r44656);
        mpfr_init(r44657);
        mpfr_init_set_str(r44658, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44659, "2", 10, MPFR_RNDN);
        mpfr_init(r44660);
        mpfr_init(r44661);
        mpfr_init(r44662);
        mpfr_init(r44663);
        mpfr_init(r44664);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44655, y, MPFR_RNDN);
        mpfr_set_d(r44656, x, MPFR_RNDN);
        mpfr_mul(r44657, r44655, r44656, MPFR_RNDN);
        ;
        ;
        mpfr_add(r44660, r44658, r44659, MPFR_RNDN);
        mpfr_set_d(r44661, z, MPFR_RNDN);
        mpfr_mul(r44662, r44661, r44661, MPFR_RNDN);
        mpfr_mul(r44663, r44660, r44662, MPFR_RNDN);
        mpfr_add(r44664, r44657, r44663, MPFR_RNDN);
        return mpfr_get_d(r44664, MPFR_RNDN);
}

