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

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

double f_if(float x, float y) {
        float r29639 = x;
        float r29640 = cos(r29639);
        float r29641 = y;
        float r29642 = sinh(r29641);
        float r29643 = r29642 / r29641;
        float r29644 = r29640 * r29643;
        return r29644;
}

double f_id(double x, double y) {
        double r29645 = x;
        double r29646 = cos(r29645);
        double r29647 = y;
        double r29648 = sinh(r29647);
        double r29649 = r29648 / r29647;
        double r29650 = r29646 * r29649;
        return r29650;
}


double f_of(float x, float y) {
        float r29651 = x;
        float r29652 = cos(r29651);
        float r29653 = y;
        float r29654 = sinh(r29653);
        float r29655 = r29654 / r29653;
        float r29656 = r29652 * r29655;
        return r29656;
}

double f_od(double x, double y) {
        double r29657 = x;
        double r29658 = cos(r29657);
        double r29659 = y;
        double r29660 = sinh(r29659);
        double r29661 = r29660 / r29659;
        double r29662 = r29658 * r29661;
        return r29662;
}

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 r29663, r29664, r29665, r29666, r29667, r29668;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29663);
        mpfr_init(r29664);
        mpfr_init(r29665);
        mpfr_init(r29666);
        mpfr_init(r29667);
        mpfr_init(r29668);
}

double f_im(double x, double y) {
        mpfr_set_d(r29663, x, MPFR_RNDN);
        mpfr_cos(r29664, r29663, MPFR_RNDN);
        mpfr_set_d(r29665, y, MPFR_RNDN);
        mpfr_sinh(r29666, r29665, MPFR_RNDN);
        mpfr_div(r29667, r29666, r29665, MPFR_RNDN);
        mpfr_mul(r29668, r29664, r29667, MPFR_RNDN);
        return mpfr_get_d(r29668, MPFR_RNDN);
}

static mpfr_t r29669, r29670, r29671, r29672, r29673, r29674;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29669);
        mpfr_init(r29670);
        mpfr_init(r29671);
        mpfr_init(r29672);
        mpfr_init(r29673);
        mpfr_init(r29674);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29669, x, MPFR_RNDN);
        mpfr_cos(r29670, r29669, MPFR_RNDN);
        mpfr_set_d(r29671, y, MPFR_RNDN);
        mpfr_sinh(r29672, r29671, MPFR_RNDN);
        mpfr_div(r29673, r29672, r29671, MPFR_RNDN);
        mpfr_mul(r29674, r29670, r29673, MPFR_RNDN);
        return mpfr_get_d(r29674, MPFR_RNDN);
}

static mpfr_t r29675, r29676, r29677, r29678, r29679, r29680;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29675);
        mpfr_init(r29676);
        mpfr_init(r29677);
        mpfr_init(r29678);
        mpfr_init(r29679);
        mpfr_init(r29680);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29675, x, MPFR_RNDN);
        mpfr_cos(r29676, r29675, MPFR_RNDN);
        mpfr_set_d(r29677, y, MPFR_RNDN);
        mpfr_sinh(r29678, r29677, MPFR_RNDN);
        mpfr_div(r29679, r29678, r29677, MPFR_RNDN);
        mpfr_mul(r29680, r29676, r29679, MPFR_RNDN);
        return mpfr_get_d(r29680, MPFR_RNDN);
}

