#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 r47070 = x;
        float r47071 = r47070 * r47070;
        float r47072 = y;
        float r47073 = r47072 * r47072;
        float r47074 = r47071 + r47073;
        float r47075 = r47074 + r47073;
        float r47076 = r47075 + r47073;
        return r47076;
}

double f_id(double x, double y) {
        double r47077 = x;
        double r47078 = r47077 * r47077;
        double r47079 = y;
        double r47080 = r47079 * r47079;
        double r47081 = r47078 + r47080;
        double r47082 = r47081 + r47080;
        double r47083 = r47082 + r47080;
        return r47083;
}


double f_of(float x, float y) {
        float r47084 = x;
        float r47085 = r47084 * r47084;
        float r47086 = y;
        float r47087 = r47086 * r47086;
        float r47088 = r47085 + r47087;
        float r47089 = r47088 + r47087;
        float r47090 = r47089 + r47087;
        return r47090;
}

double f_od(double x, double y) {
        double r47091 = x;
        double r47092 = r47091 * r47091;
        double r47093 = y;
        double r47094 = r47093 * r47093;
        double r47095 = r47092 + r47094;
        double r47096 = r47095 + r47094;
        double r47097 = r47096 + r47094;
        return r47097;
}

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 r47098, r47099, r47100, r47101, r47102, r47103, r47104;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47098);
        mpfr_init(r47099);
        mpfr_init(r47100);
        mpfr_init(r47101);
        mpfr_init(r47102);
        mpfr_init(r47103);
        mpfr_init(r47104);
}

double f_im(double x, double y) {
        mpfr_set_d(r47098, x, MPFR_RNDN);
        mpfr_mul(r47099, r47098, r47098, MPFR_RNDN);
        mpfr_set_d(r47100, y, MPFR_RNDN);
        mpfr_mul(r47101, r47100, r47100, MPFR_RNDN);
        mpfr_add(r47102, r47099, r47101, MPFR_RNDN);
        mpfr_add(r47103, r47102, r47101, MPFR_RNDN);
        mpfr_add(r47104, r47103, r47101, MPFR_RNDN);
        return mpfr_get_d(r47104, MPFR_RNDN);
}

static mpfr_t r47105, r47106, r47107, r47108, r47109, r47110, r47111;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47105);
        mpfr_init(r47106);
        mpfr_init(r47107);
        mpfr_init(r47108);
        mpfr_init(r47109);
        mpfr_init(r47110);
        mpfr_init(r47111);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47105, x, MPFR_RNDN);
        mpfr_mul(r47106, r47105, r47105, MPFR_RNDN);
        mpfr_set_d(r47107, y, MPFR_RNDN);
        mpfr_mul(r47108, r47107, r47107, MPFR_RNDN);
        mpfr_add(r47109, r47106, r47108, MPFR_RNDN);
        mpfr_add(r47110, r47109, r47108, MPFR_RNDN);
        mpfr_add(r47111, r47110, r47108, MPFR_RNDN);
        return mpfr_get_d(r47111, MPFR_RNDN);
}

static mpfr_t r47112, r47113, r47114, r47115, r47116, r47117, r47118;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47112);
        mpfr_init(r47113);
        mpfr_init(r47114);
        mpfr_init(r47115);
        mpfr_init(r47116);
        mpfr_init(r47117);
        mpfr_init(r47118);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47112, x, MPFR_RNDN);
        mpfr_mul(r47113, r47112, r47112, MPFR_RNDN);
        mpfr_set_d(r47114, y, MPFR_RNDN);
        mpfr_mul(r47115, r47114, r47114, MPFR_RNDN);
        mpfr_add(r47116, r47113, r47115, MPFR_RNDN);
        mpfr_add(r47117, r47116, r47115, MPFR_RNDN);
        mpfr_add(r47118, r47117, r47115, MPFR_RNDN);
        return mpfr_get_d(r47118, MPFR_RNDN);
}

