#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 r29209 = x;
        float r29210 = y;
        float r29211 = sin(r29210);
        float r29212 = r29211 / r29210;
        float r29213 = r29209 * r29212;
        return r29213;
}

double f_id(double x, double y) {
        double r29214 = x;
        double r29215 = y;
        double r29216 = sin(r29215);
        double r29217 = r29216 / r29215;
        double r29218 = r29214 * r29217;
        return r29218;
}


double f_of(float x, float y) {
        float r29219 = x;
        float r29220 = y;
        float r29221 = sin(r29220);
        float r29222 = r29221 / r29220;
        float r29223 = r29219 * r29222;
        return r29223;
}

double f_od(double x, double y) {
        double r29224 = x;
        double r29225 = y;
        double r29226 = sin(r29225);
        double r29227 = r29226 / r29225;
        double r29228 = r29224 * r29227;
        return r29228;
}

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 r29229, r29230, r29231, r29232, r29233;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29229);
        mpfr_init(r29230);
        mpfr_init(r29231);
        mpfr_init(r29232);
        mpfr_init(r29233);
}

double f_im(double x, double y) {
        mpfr_set_d(r29229, x, MPFR_RNDN);
        mpfr_set_d(r29230, y, MPFR_RNDN);
        mpfr_sin(r29231, r29230, MPFR_RNDN);
        mpfr_div(r29232, r29231, r29230, MPFR_RNDN);
        mpfr_mul(r29233, r29229, r29232, MPFR_RNDN);
        return mpfr_get_d(r29233, MPFR_RNDN);
}

static mpfr_t r29234, r29235, r29236, r29237, r29238;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29234);
        mpfr_init(r29235);
        mpfr_init(r29236);
        mpfr_init(r29237);
        mpfr_init(r29238);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29234, x, MPFR_RNDN);
        mpfr_set_d(r29235, y, MPFR_RNDN);
        mpfr_sin(r29236, r29235, MPFR_RNDN);
        mpfr_div(r29237, r29236, r29235, MPFR_RNDN);
        mpfr_mul(r29238, r29234, r29237, MPFR_RNDN);
        return mpfr_get_d(r29238, MPFR_RNDN);
}

static mpfr_t r29239, r29240, r29241, r29242, r29243;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29239);
        mpfr_init(r29240);
        mpfr_init(r29241);
        mpfr_init(r29242);
        mpfr_init(r29243);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29239, x, MPFR_RNDN);
        mpfr_set_d(r29240, y, MPFR_RNDN);
        mpfr_sin(r29241, r29240, MPFR_RNDN);
        mpfr_div(r29242, r29241, r29240, MPFR_RNDN);
        mpfr_mul(r29243, r29239, r29242, MPFR_RNDN);
        return mpfr_get_d(r29243, MPFR_RNDN);
}

