#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 r44295 = x;
        float r44296 = sin(r44295);
        float r44297 = y;
        float r44298 = sinh(r44297);
        float r44299 = r44296 * r44298;
        float r44300 = r44299 / r44295;
        return r44300;
}

double f_id(double x, double y) {
        double r44301 = x;
        double r44302 = sin(r44301);
        double r44303 = y;
        double r44304 = sinh(r44303);
        double r44305 = r44302 * r44304;
        double r44306 = r44305 / r44301;
        return r44306;
}


double f_of(float x, float y) {
        float r44307 = x;
        float r44308 = sin(r44307);
        float r44309 = r44308 / r44307;
        float r44310 = y;
        float r44311 = sinh(r44310);
        float r44312 = r44309 * r44311;
        return r44312;
}

double f_od(double x, double y) {
        double r44313 = x;
        double r44314 = sin(r44313);
        double r44315 = r44314 / r44313;
        double r44316 = y;
        double r44317 = sinh(r44316);
        double r44318 = r44315 * r44317;
        return r44318;
}

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 r44319, r44320, r44321, r44322, r44323, r44324;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44319);
        mpfr_init(r44320);
        mpfr_init(r44321);
        mpfr_init(r44322);
        mpfr_init(r44323);
        mpfr_init(r44324);
}

double f_im(double x, double y) {
        mpfr_set_d(r44319, x, MPFR_RNDN);
        mpfr_sin(r44320, r44319, MPFR_RNDN);
        mpfr_set_d(r44321, y, MPFR_RNDN);
        mpfr_sinh(r44322, r44321, MPFR_RNDN);
        mpfr_mul(r44323, r44320, r44322, MPFR_RNDN);
        mpfr_div(r44324, r44323, r44319, MPFR_RNDN);
        return mpfr_get_d(r44324, MPFR_RNDN);
}

static mpfr_t r44325, r44326, r44327, r44328, r44329, r44330;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44325);
        mpfr_init(r44326);
        mpfr_init(r44327);
        mpfr_init(r44328);
        mpfr_init(r44329);
        mpfr_init(r44330);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44325, x, MPFR_RNDN);
        mpfr_sin(r44326, r44325, MPFR_RNDN);
        mpfr_div(r44327, r44326, r44325, MPFR_RNDN);
        mpfr_set_d(r44328, y, MPFR_RNDN);
        mpfr_sinh(r44329, r44328, MPFR_RNDN);
        mpfr_mul(r44330, r44327, r44329, MPFR_RNDN);
        return mpfr_get_d(r44330, MPFR_RNDN);
}

static mpfr_t r44331, r44332, r44333, r44334, r44335, r44336;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44331);
        mpfr_init(r44332);
        mpfr_init(r44333);
        mpfr_init(r44334);
        mpfr_init(r44335);
        mpfr_init(r44336);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44331, x, MPFR_RNDN);
        mpfr_sin(r44332, r44331, MPFR_RNDN);
        mpfr_div(r44333, r44332, r44331, MPFR_RNDN);
        mpfr_set_d(r44334, y, MPFR_RNDN);
        mpfr_sinh(r44335, r44334, MPFR_RNDN);
        mpfr_mul(r44336, r44333, r44335, MPFR_RNDN);
        return mpfr_get_d(r44336, MPFR_RNDN);
}

