#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 r29429 = x;
        float r29430 = y;
        float r29431 = sin(r29430);
        float r29432 = r29431 / r29430;
        float r29433 = r29429 * r29432;
        return r29433;
}

double f_id(double x, double y) {
        double r29434 = x;
        double r29435 = y;
        double r29436 = sin(r29435);
        double r29437 = r29436 / r29435;
        double r29438 = r29434 * r29437;
        return r29438;
}


double f_of(float x, float y) {
        float r29439 = x;
        float r29440 = y;
        float r29441 = sin(r29440);
        float r29442 = r29441 / r29440;
        float r29443 = r29439 * r29442;
        return r29443;
}

double f_od(double x, double y) {
        double r29444 = x;
        double r29445 = y;
        double r29446 = sin(r29445);
        double r29447 = r29446 / r29445;
        double r29448 = r29444 * r29447;
        return r29448;
}

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 r29449, r29450, r29451, r29452, r29453;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29449);
        mpfr_init(r29450);
        mpfr_init(r29451);
        mpfr_init(r29452);
        mpfr_init(r29453);
}

double f_im(double x, double y) {
        mpfr_set_d(r29449, x, MPFR_RNDN);
        mpfr_set_d(r29450, y, MPFR_RNDN);
        mpfr_sin(r29451, r29450, MPFR_RNDN);
        mpfr_div(r29452, r29451, r29450, MPFR_RNDN);
        mpfr_mul(r29453, r29449, r29452, MPFR_RNDN);
        return mpfr_get_d(r29453, MPFR_RNDN);
}

static mpfr_t r29454, r29455, r29456, r29457, r29458;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29454);
        mpfr_init(r29455);
        mpfr_init(r29456);
        mpfr_init(r29457);
        mpfr_init(r29458);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29454, x, MPFR_RNDN);
        mpfr_set_d(r29455, y, MPFR_RNDN);
        mpfr_sin(r29456, r29455, MPFR_RNDN);
        mpfr_div(r29457, r29456, r29455, MPFR_RNDN);
        mpfr_mul(r29458, r29454, r29457, MPFR_RNDN);
        return mpfr_get_d(r29458, MPFR_RNDN);
}

static mpfr_t r29459, r29460, r29461, r29462, r29463;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29459);
        mpfr_init(r29460);
        mpfr_init(r29461);
        mpfr_init(r29462);
        mpfr_init(r29463);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29459, x, MPFR_RNDN);
        mpfr_set_d(r29460, y, MPFR_RNDN);
        mpfr_sin(r29461, r29460, MPFR_RNDN);
        mpfr_div(r29462, r29461, r29460, MPFR_RNDN);
        mpfr_mul(r29463, r29459, r29462, MPFR_RNDN);
        return mpfr_get_d(r29463, MPFR_RNDN);
}

