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

char *name = "Linear.Quaternion:$cexp from linear-1.19.1.3";

double f_if(float x, float y) {
        float r44260 = x;
        float r44261 = y;
        float r44262 = sin(r44261);
        float r44263 = r44262 / r44261;
        float r44264 = r44260 * r44263;
        return r44264;
}

double f_id(double x, double y) {
        double r44265 = x;
        double r44266 = y;
        double r44267 = sin(r44266);
        double r44268 = r44267 / r44266;
        double r44269 = r44265 * r44268;
        return r44269;
}


double f_of(float x, float y) {
        float r44270 = x;
        float r44271 = y;
        float r44272 = sin(r44271);
        float r44273 = r44272 / r44271;
        float r44274 = r44270 * r44273;
        return r44274;
}

double f_od(double x, double y) {
        double r44275 = x;
        double r44276 = y;
        double r44277 = sin(r44276);
        double r44278 = r44277 / r44276;
        double r44279 = r44275 * r44278;
        return r44279;
}

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 r44280, r44281, r44282, r44283, r44284;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44280);
        mpfr_init(r44281);
        mpfr_init(r44282);
        mpfr_init(r44283);
        mpfr_init(r44284);
}

double f_im(double x, double y) {
        mpfr_set_d(r44280, x, MPFR_RNDN);
        mpfr_set_d(r44281, y, MPFR_RNDN);
        mpfr_sin(r44282, r44281, MPFR_RNDN);
        mpfr_div(r44283, r44282, r44281, MPFR_RNDN);
        mpfr_mul(r44284, r44280, r44283, MPFR_RNDN);
        return mpfr_get_d(r44284, MPFR_RNDN);
}

static mpfr_t r44285, r44286, r44287, r44288, r44289;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44285);
        mpfr_init(r44286);
        mpfr_init(r44287);
        mpfr_init(r44288);
        mpfr_init(r44289);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44285, x, MPFR_RNDN);
        mpfr_set_d(r44286, y, MPFR_RNDN);
        mpfr_sin(r44287, r44286, MPFR_RNDN);
        mpfr_div(r44288, r44287, r44286, MPFR_RNDN);
        mpfr_mul(r44289, r44285, r44288, MPFR_RNDN);
        return mpfr_get_d(r44289, MPFR_RNDN);
}

static mpfr_t r44290, r44291, r44292, r44293, r44294;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44290);
        mpfr_init(r44291);
        mpfr_init(r44292);
        mpfr_init(r44293);
        mpfr_init(r44294);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44290, x, MPFR_RNDN);
        mpfr_set_d(r44291, y, MPFR_RNDN);
        mpfr_sin(r44292, r44291, MPFR_RNDN);
        mpfr_div(r44293, r44292, r44291, MPFR_RNDN);
        mpfr_mul(r44294, r44290, r44293, MPFR_RNDN);
        return mpfr_get_d(r44294, MPFR_RNDN);
}

