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

char *name = "Linear.Matrix:fromQuaternion from linear-1.19.1.3, B";

double f_if(float x, float y) {
        float r45109 = 2.0f;
        float r45110 = x;
        float r45111 = r45110 * r45110;
        float r45112 = y;
        float r45113 = r45110 * r45112;
        float r45114 = r45111 + r45113;
        float r45115 = r45109 * r45114;
        return r45115;
}

double f_id(double x, double y) {
        double r45116 = 2.0;
        double r45117 = x;
        double r45118 = r45117 * r45117;
        double r45119 = y;
        double r45120 = r45117 * r45119;
        double r45121 = r45118 + r45120;
        double r45122 = r45116 * r45121;
        return r45122;
}


double f_of(float x, float y) {
        float r45123 = x;
        float r45124 = 2.0f;
        float r45125 = r45123 * r45124;
        float r45126 = y;
        float r45127 = r45126 + r45123;
        float r45128 = r45125 * r45127;
        return r45128;
}

double f_od(double x, double y) {
        double r45129 = x;
        double r45130 = 2.0;
        double r45131 = r45129 * r45130;
        double r45132 = y;
        double r45133 = r45132 + r45129;
        double r45134 = r45131 * r45133;
        return r45134;
}

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 r45135, r45136, r45137, r45138, r45139, r45140, r45141;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r45135, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45136);
        mpfr_init(r45137);
        mpfr_init(r45138);
        mpfr_init(r45139);
        mpfr_init(r45140);
        mpfr_init(r45141);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r45136, x, MPFR_RNDN);
        mpfr_mul(r45137, r45136, r45136, MPFR_RNDN);
        mpfr_set_d(r45138, y, MPFR_RNDN);
        mpfr_mul(r45139, r45136, r45138, MPFR_RNDN);
        mpfr_add(r45140, r45137, r45139, MPFR_RNDN);
        mpfr_mul(r45141, r45135, r45140, MPFR_RNDN);
        return mpfr_get_d(r45141, MPFR_RNDN);
}

static mpfr_t r45142, r45143, r45144, r45145, r45146, r45147;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45142);
        mpfr_init_set_str(r45143, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45144);
        mpfr_init(r45145);
        mpfr_init(r45146);
        mpfr_init(r45147);
}

double f_fm(double x, double y) {
        mpfr_set_d(r45142, x, MPFR_RNDN);
        ;
        mpfr_mul(r45144, r45142, r45143, MPFR_RNDN);
        mpfr_set_d(r45145, y, MPFR_RNDN);
        mpfr_add(r45146, r45145, r45142, MPFR_RNDN);
        mpfr_mul(r45147, r45144, r45146, MPFR_RNDN);
        return mpfr_get_d(r45147, MPFR_RNDN);
}

static mpfr_t r45148, r45149, r45150, r45151, r45152, r45153;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45148);
        mpfr_init_set_str(r45149, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45150);
        mpfr_init(r45151);
        mpfr_init(r45152);
        mpfr_init(r45153);
}

double f_dm(double x, double y) {
        mpfr_set_d(r45148, x, MPFR_RNDN);
        ;
        mpfr_mul(r45150, r45148, r45149, MPFR_RNDN);
        mpfr_set_d(r45151, y, MPFR_RNDN);
        mpfr_add(r45152, r45151, r45148, MPFR_RNDN);
        mpfr_mul(r45153, r45150, r45152, MPFR_RNDN);
        return mpfr_get_d(r45153, MPFR_RNDN);
}

