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

double f_if(float x, float y) {
        float r48092 = 2.0;
        float r48093 = x;
        float r48094 = r48093 * r48093;
        float r48095 = y;
        float r48096 = r48093 * r48095;
        float r48097 = r48094 - r48096;
        float r48098 = r48092 * r48097;
        return r48098;
}

double f_id(double x, double y) {
        double r48099 = 2.0;
        double r48100 = x;
        double r48101 = r48100 * r48100;
        double r48102 = y;
        double r48103 = r48100 * r48102;
        double r48104 = r48101 - r48103;
        double r48105 = r48099 * r48104;
        return r48105;
}


double f_of(float x, float y) {
        float r48106 = 2.0;
        float r48107 = x;
        float r48108 = r48107 * r48107;
        float r48109 = y;
        float r48110 = r48107 * r48109;
        float r48111 = r48108 - r48110;
        float r48112 = r48106 * r48111;
        return r48112;
}

double f_od(double x, double y) {
        double r48113 = 2.0;
        double r48114 = x;
        double r48115 = r48114 * r48114;
        double r48116 = y;
        double r48117 = r48114 * r48116;
        double r48118 = r48115 - r48117;
        double r48119 = r48113 * r48118;
        return r48119;
}

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 r48120, r48121, r48122, r48123, r48124, r48125, r48126;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48120, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48121);
        mpfr_init(r48122);
        mpfr_init(r48123);
        mpfr_init(r48124);
        mpfr_init(r48125);
        mpfr_init(r48126);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r48121, x, MPFR_RNDN);
        mpfr_mul(r48122, r48121, r48121, MPFR_RNDN);
        mpfr_set_d(r48123, y, MPFR_RNDN);
        mpfr_mul(r48124, r48121, r48123, MPFR_RNDN);
        mpfr_sub(r48125, r48122, r48124, MPFR_RNDN);
        mpfr_mul(r48126, r48120, r48125, MPFR_RNDN);
        return mpfr_get_d(r48126, MPFR_RNDN);
}

static mpfr_t r48127, r48128, r48129, r48130, r48131, r48132, r48133;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48127, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48128);
        mpfr_init(r48129);
        mpfr_init(r48130);
        mpfr_init(r48131);
        mpfr_init(r48132);
        mpfr_init(r48133);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r48128, x, MPFR_RNDN);
        mpfr_mul(r48129, r48128, r48128, MPFR_RNDN);
        mpfr_set_d(r48130, y, MPFR_RNDN);
        mpfr_mul(r48131, r48128, r48130, MPFR_RNDN);
        mpfr_sub(r48132, r48129, r48131, MPFR_RNDN);
        mpfr_mul(r48133, r48127, r48132, MPFR_RNDN);
        return mpfr_get_d(r48133, MPFR_RNDN);
}

static mpfr_t r48134, r48135, r48136, r48137, r48138, r48139, r48140;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48134, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48135);
        mpfr_init(r48136);
        mpfr_init(r48137);
        mpfr_init(r48138);
        mpfr_init(r48139);
        mpfr_init(r48140);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r48135, x, MPFR_RNDN);
        mpfr_mul(r48136, r48135, r48135, MPFR_RNDN);
        mpfr_set_d(r48137, y, MPFR_RNDN);
        mpfr_mul(r48138, r48135, r48137, MPFR_RNDN);
        mpfr_sub(r48139, r48136, r48138, MPFR_RNDN);
        mpfr_mul(r48140, r48134, r48139, MPFR_RNDN);
        return mpfr_get_d(r48140, MPFR_RNDN);
}

