#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 r46530 = x;
        float r46531 = sin(r46530);
        float r46532 = y;
        float r46533 = sinh(r46532);
        float r46534 = r46531 * r46533;
        float r46535 = r46534 / r46530;
        return r46535;
}

double f_id(double x, double y) {
        double r46536 = x;
        double r46537 = sin(r46536);
        double r46538 = y;
        double r46539 = sinh(r46538);
        double r46540 = r46537 * r46539;
        double r46541 = r46540 / r46536;
        return r46541;
}


double f_of(float x, float y) {
        float r46542 = x;
        float r46543 = sin(r46542);
        float r46544 = y;
        float r46545 = sinh(r46544);
        float r46546 = r46545 / r46542;
        float r46547 = r46543 * r46546;
        return r46547;
}

double f_od(double x, double y) {
        double r46548 = x;
        double r46549 = sin(r46548);
        double r46550 = y;
        double r46551 = sinh(r46550);
        double r46552 = r46551 / r46548;
        double r46553 = r46549 * r46552;
        return r46553;
}

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 r46554, r46555, r46556, r46557, r46558, r46559;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46554);
        mpfr_init(r46555);
        mpfr_init(r46556);
        mpfr_init(r46557);
        mpfr_init(r46558);
        mpfr_init(r46559);
}

double f_im(double x, double y) {
        mpfr_set_d(r46554, x, MPFR_RNDN);
        mpfr_sin(r46555, r46554, MPFR_RNDN);
        mpfr_set_d(r46556, y, MPFR_RNDN);
        mpfr_sinh(r46557, r46556, MPFR_RNDN);
        mpfr_mul(r46558, r46555, r46557, MPFR_RNDN);
        mpfr_div(r46559, r46558, r46554, MPFR_RNDN);
        return mpfr_get_d(r46559, MPFR_RNDN);
}

static mpfr_t r46560, r46561, r46562, r46563, r46564, r46565;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46560);
        mpfr_init(r46561);
        mpfr_init(r46562);
        mpfr_init(r46563);
        mpfr_init(r46564);
        mpfr_init(r46565);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46560, x, MPFR_RNDN);
        mpfr_sin(r46561, r46560, MPFR_RNDN);
        mpfr_set_d(r46562, y, MPFR_RNDN);
        mpfr_sinh(r46563, r46562, MPFR_RNDN);
        mpfr_div(r46564, r46563, r46560, MPFR_RNDN);
        mpfr_mul(r46565, r46561, r46564, MPFR_RNDN);
        return mpfr_get_d(r46565, MPFR_RNDN);
}

static mpfr_t r46566, r46567, r46568, r46569, r46570, r46571;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46566);
        mpfr_init(r46567);
        mpfr_init(r46568);
        mpfr_init(r46569);
        mpfr_init(r46570);
        mpfr_init(r46571);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46566, x, MPFR_RNDN);
        mpfr_sin(r46567, r46566, MPFR_RNDN);
        mpfr_set_d(r46568, y, MPFR_RNDN);
        mpfr_sinh(r46569, r46568, MPFR_RNDN);
        mpfr_div(r46570, r46569, r46566, MPFR_RNDN);
        mpfr_mul(r46571, r46567, r46570, MPFR_RNDN);
        return mpfr_get_d(r46571, MPFR_RNDN);
}

