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

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

double f_if(float x, float y) {
        float r44081 = x;
        float r44082 = cosh(r44081);
        float r44083 = y;
        float r44084 = sin(r44083);
        float r44085 = r44084 / r44083;
        float r44086 = r44082 * r44085;
        return r44086;
}

double f_id(double x, double y) {
        double r44087 = x;
        double r44088 = cosh(r44087);
        double r44089 = y;
        double r44090 = sin(r44089);
        double r44091 = r44090 / r44089;
        double r44092 = r44088 * r44091;
        return r44092;
}


double f_of(float x, float y) {
        float r44093 = x;
        float r44094 = cosh(r44093);
        float r44095 = y;
        float r44096 = sin(r44095);
        float r44097 = 1.0f;
        float r44098 = r44097 / r44095;
        float r44099 = r44096 * r44098;
        float r44100 = r44094 * r44099;
        return r44100;
}

double f_od(double x, double y) {
        double r44101 = x;
        double r44102 = cosh(r44101);
        double r44103 = y;
        double r44104 = sin(r44103);
        double r44105 = 1.0;
        double r44106 = r44105 / r44103;
        double r44107 = r44104 * r44106;
        double r44108 = r44102 * r44107;
        return r44108;
}

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 r44109, r44110, r44111, r44112, r44113, r44114;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44109);
        mpfr_init(r44110);
        mpfr_init(r44111);
        mpfr_init(r44112);
        mpfr_init(r44113);
        mpfr_init(r44114);
}

double f_im(double x, double y) {
        mpfr_set_d(r44109, x, MPFR_RNDN);
        mpfr_cosh(r44110, r44109, MPFR_RNDN);
        mpfr_set_d(r44111, y, MPFR_RNDN);
        mpfr_sin(r44112, r44111, MPFR_RNDN);
        mpfr_div(r44113, r44112, r44111, MPFR_RNDN);
        mpfr_mul(r44114, r44110, r44113, MPFR_RNDN);
        return mpfr_get_d(r44114, MPFR_RNDN);
}

static mpfr_t r44115, r44116, r44117, r44118, r44119, r44120, r44121, r44122;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44115);
        mpfr_init(r44116);
        mpfr_init(r44117);
        mpfr_init(r44118);
        mpfr_init_set_str(r44119, "1", 10, MPFR_RNDN);
        mpfr_init(r44120);
        mpfr_init(r44121);
        mpfr_init(r44122);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44115, x, MPFR_RNDN);
        mpfr_cosh(r44116, r44115, MPFR_RNDN);
        mpfr_set_d(r44117, y, MPFR_RNDN);
        mpfr_sin(r44118, r44117, MPFR_RNDN);
        ;
        mpfr_div(r44120, r44119, r44117, MPFR_RNDN);
        mpfr_mul(r44121, r44118, r44120, MPFR_RNDN);
        mpfr_mul(r44122, r44116, r44121, MPFR_RNDN);
        return mpfr_get_d(r44122, MPFR_RNDN);
}

static mpfr_t r44123, r44124, r44125, r44126, r44127, r44128, r44129, r44130;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44123);
        mpfr_init(r44124);
        mpfr_init(r44125);
        mpfr_init(r44126);
        mpfr_init_set_str(r44127, "1", 10, MPFR_RNDN);
        mpfr_init(r44128);
        mpfr_init(r44129);
        mpfr_init(r44130);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44123, x, MPFR_RNDN);
        mpfr_cosh(r44124, r44123, MPFR_RNDN);
        mpfr_set_d(r44125, y, MPFR_RNDN);
        mpfr_sin(r44126, r44125, MPFR_RNDN);
        ;
        mpfr_div(r44128, r44127, r44125, MPFR_RNDN);
        mpfr_mul(r44129, r44126, r44128, MPFR_RNDN);
        mpfr_mul(r44130, r44124, r44129, MPFR_RNDN);
        return mpfr_get_d(r44130, MPFR_RNDN);
}

