#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 r29447 = x;
        float r29448 = cos(r29447);
        float r29449 = y;
        float r29450 = sinh(r29449);
        float r29451 = r29450 / r29449;
        float r29452 = r29448 * r29451;
        return r29452;
}

double f_id(double x, double y) {
        double r29453 = x;
        double r29454 = cos(r29453);
        double r29455 = y;
        double r29456 = sinh(r29455);
        double r29457 = r29456 / r29455;
        double r29458 = r29454 * r29457;
        return r29458;
}


double f_of(float x, float y) {
        float r29459 = x;
        float r29460 = cos(r29459);
        float r29461 = y;
        float r29462 = sinh(r29461);
        float r29463 = r29462 / r29461;
        float r29464 = r29460 * r29463;
        return r29464;
}

double f_od(double x, double y) {
        double r29465 = x;
        double r29466 = cos(r29465);
        double r29467 = y;
        double r29468 = sinh(r29467);
        double r29469 = r29468 / r29467;
        double r29470 = r29466 * r29469;
        return r29470;
}

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 r29471, r29472, r29473, r29474, r29475, r29476;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29471);
        mpfr_init(r29472);
        mpfr_init(r29473);
        mpfr_init(r29474);
        mpfr_init(r29475);
        mpfr_init(r29476);
}

double f_im(double x, double y) {
        mpfr_set_d(r29471, x, MPFR_RNDN);
        mpfr_cos(r29472, r29471, MPFR_RNDN);
        mpfr_set_d(r29473, y, MPFR_RNDN);
        mpfr_sinh(r29474, r29473, MPFR_RNDN);
        mpfr_div(r29475, r29474, r29473, MPFR_RNDN);
        mpfr_mul(r29476, r29472, r29475, MPFR_RNDN);
        return mpfr_get_d(r29476, MPFR_RNDN);
}

static mpfr_t r29477, r29478, r29479, r29480, r29481, r29482;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29477);
        mpfr_init(r29478);
        mpfr_init(r29479);
        mpfr_init(r29480);
        mpfr_init(r29481);
        mpfr_init(r29482);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29477, x, MPFR_RNDN);
        mpfr_cos(r29478, r29477, MPFR_RNDN);
        mpfr_set_d(r29479, y, MPFR_RNDN);
        mpfr_sinh(r29480, r29479, MPFR_RNDN);
        mpfr_div(r29481, r29480, r29479, MPFR_RNDN);
        mpfr_mul(r29482, r29478, r29481, MPFR_RNDN);
        return mpfr_get_d(r29482, MPFR_RNDN);
}

static mpfr_t r29483, r29484, r29485, r29486, r29487, r29488;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29483);
        mpfr_init(r29484);
        mpfr_init(r29485);
        mpfr_init(r29486);
        mpfr_init(r29487);
        mpfr_init(r29488);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29483, x, MPFR_RNDN);
        mpfr_cos(r29484, r29483, MPFR_RNDN);
        mpfr_set_d(r29485, y, MPFR_RNDN);
        mpfr_sinh(r29486, r29485, MPFR_RNDN);
        mpfr_div(r29487, r29486, r29485, MPFR_RNDN);
        mpfr_mul(r29488, r29484, r29487, MPFR_RNDN);
        return mpfr_get_d(r29488, MPFR_RNDN);
}

