#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 r47303 = x;
        float r47304 = sin(r47303);
        float r47305 = y;
        float r47306 = sinh(r47305);
        float r47307 = r47304 * r47306;
        float r47308 = r47307 / r47303;
        return r47308;
}

double f_id(double x, double y) {
        double r47309 = x;
        double r47310 = sin(r47309);
        double r47311 = y;
        double r47312 = sinh(r47311);
        double r47313 = r47310 * r47312;
        double r47314 = r47313 / r47309;
        return r47314;
}


double f_of(float x, float y) {
        float r47315 = x;
        float r47316 = sin(r47315);
        float r47317 = y;
        float r47318 = sinh(r47317);
        float r47319 = r47318 / r47315;
        float r47320 = r47316 * r47319;
        return r47320;
}

double f_od(double x, double y) {
        double r47321 = x;
        double r47322 = sin(r47321);
        double r47323 = y;
        double r47324 = sinh(r47323);
        double r47325 = r47324 / r47321;
        double r47326 = r47322 * r47325;
        return r47326;
}

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 r47327, r47328, r47329, r47330, r47331, r47332;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47327);
        mpfr_init(r47328);
        mpfr_init(r47329);
        mpfr_init(r47330);
        mpfr_init(r47331);
        mpfr_init(r47332);
}

double f_im(double x, double y) {
        mpfr_set_d(r47327, x, MPFR_RNDN);
        mpfr_sin(r47328, r47327, MPFR_RNDN);
        mpfr_set_d(r47329, y, MPFR_RNDN);
        mpfr_sinh(r47330, r47329, MPFR_RNDN);
        mpfr_mul(r47331, r47328, r47330, MPFR_RNDN);
        mpfr_div(r47332, r47331, r47327, MPFR_RNDN);
        return mpfr_get_d(r47332, MPFR_RNDN);
}

static mpfr_t r47333, r47334, r47335, r47336, r47337, r47338;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47333);
        mpfr_init(r47334);
        mpfr_init(r47335);
        mpfr_init(r47336);
        mpfr_init(r47337);
        mpfr_init(r47338);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47333, x, MPFR_RNDN);
        mpfr_sin(r47334, r47333, MPFR_RNDN);
        mpfr_set_d(r47335, y, MPFR_RNDN);
        mpfr_sinh(r47336, r47335, MPFR_RNDN);
        mpfr_div(r47337, r47336, r47333, MPFR_RNDN);
        mpfr_mul(r47338, r47334, r47337, MPFR_RNDN);
        return mpfr_get_d(r47338, MPFR_RNDN);
}

static mpfr_t r47339, r47340, r47341, r47342, r47343, r47344;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47339);
        mpfr_init(r47340);
        mpfr_init(r47341);
        mpfr_init(r47342);
        mpfr_init(r47343);
        mpfr_init(r47344);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47339, x, MPFR_RNDN);
        mpfr_sin(r47340, r47339, MPFR_RNDN);
        mpfr_set_d(r47341, y, MPFR_RNDN);
        mpfr_sinh(r47342, r47341, MPFR_RNDN);
        mpfr_div(r47343, r47342, r47339, MPFR_RNDN);
        mpfr_mul(r47344, r47340, r47343, MPFR_RNDN);
        return mpfr_get_d(r47344, MPFR_RNDN);
}

