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

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

double f_if(float x, float y) {
        float r47284 = x;
        float r47285 = sin(r47284);
        float r47286 = y;
        float r47287 = sinh(r47286);
        float r47288 = r47285 * r47287;
        float r47289 = r47288 / r47284;
        return r47289;
}

double f_id(double x, double y) {
        double r47290 = x;
        double r47291 = sin(r47290);
        double r47292 = y;
        double r47293 = sinh(r47292);
        double r47294 = r47291 * r47293;
        double r47295 = r47294 / r47290;
        return r47295;
}


double f_of(float x, float y) {
        float r47296 = x;
        float r47297 = sin(r47296);
        float r47298 = y;
        float r47299 = sinh(r47298);
        float r47300 = r47299 / r47296;
        float r47301 = r47297 * r47300;
        return r47301;
}

double f_od(double x, double y) {
        double r47302 = x;
        double r47303 = sin(r47302);
        double r47304 = y;
        double r47305 = sinh(r47304);
        double r47306 = r47305 / r47302;
        double r47307 = r47303 * r47306;
        return r47307;
}

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 r47308, r47309, r47310, r47311, r47312, r47313;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47308);
        mpfr_init(r47309);
        mpfr_init(r47310);
        mpfr_init(r47311);
        mpfr_init(r47312);
        mpfr_init(r47313);
}

double f_im(double x, double y) {
        mpfr_set_d(r47308, x, MPFR_RNDN);
        mpfr_sin(r47309, r47308, MPFR_RNDN);
        mpfr_set_d(r47310, y, MPFR_RNDN);
        mpfr_sinh(r47311, r47310, MPFR_RNDN);
        mpfr_mul(r47312, r47309, r47311, MPFR_RNDN);
        mpfr_div(r47313, r47312, r47308, MPFR_RNDN);
        return mpfr_get_d(r47313, MPFR_RNDN);
}

static mpfr_t r47314, r47315, r47316, r47317, r47318, r47319;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47314);
        mpfr_init(r47315);
        mpfr_init(r47316);
        mpfr_init(r47317);
        mpfr_init(r47318);
        mpfr_init(r47319);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47314, x, MPFR_RNDN);
        mpfr_sin(r47315, r47314, MPFR_RNDN);
        mpfr_set_d(r47316, y, MPFR_RNDN);
        mpfr_sinh(r47317, r47316, MPFR_RNDN);
        mpfr_div(r47318, r47317, r47314, MPFR_RNDN);
        mpfr_mul(r47319, r47315, r47318, MPFR_RNDN);
        return mpfr_get_d(r47319, MPFR_RNDN);
}

static mpfr_t r47320, r47321, r47322, r47323, r47324, r47325;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47320);
        mpfr_init(r47321);
        mpfr_init(r47322);
        mpfr_init(r47323);
        mpfr_init(r47324);
        mpfr_init(r47325);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47320, x, MPFR_RNDN);
        mpfr_sin(r47321, r47320, MPFR_RNDN);
        mpfr_set_d(r47322, y, MPFR_RNDN);
        mpfr_sinh(r47323, r47322, MPFR_RNDN);
        mpfr_div(r47324, r47323, r47320, MPFR_RNDN);
        mpfr_mul(r47325, r47321, r47324, MPFR_RNDN);
        return mpfr_get_d(r47325, MPFR_RNDN);
}

