#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 r47028 = x;
        float r47029 = sin(r47028);
        float r47030 = y;
        float r47031 = sinh(r47030);
        float r47032 = r47029 * r47031;
        float r47033 = r47032 / r47028;
        return r47033;
}

double f_id(double x, double y) {
        double r47034 = x;
        double r47035 = sin(r47034);
        double r47036 = y;
        double r47037 = sinh(r47036);
        double r47038 = r47035 * r47037;
        double r47039 = r47038 / r47034;
        return r47039;
}


double f_of(float x, float y) {
        float r47040 = x;
        float r47041 = sin(r47040);
        float r47042 = y;
        float r47043 = sinh(r47042);
        float r47044 = r47043 / r47040;
        float r47045 = r47041 * r47044;
        return r47045;
}

double f_od(double x, double y) {
        double r47046 = x;
        double r47047 = sin(r47046);
        double r47048 = y;
        double r47049 = sinh(r47048);
        double r47050 = r47049 / r47046;
        double r47051 = r47047 * r47050;
        return r47051;
}

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 r47052, r47053, r47054, r47055, r47056, r47057;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47052);
        mpfr_init(r47053);
        mpfr_init(r47054);
        mpfr_init(r47055);
        mpfr_init(r47056);
        mpfr_init(r47057);
}

double f_im(double x, double y) {
        mpfr_set_d(r47052, x, MPFR_RNDN);
        mpfr_sin(r47053, r47052, MPFR_RNDN);
        mpfr_set_d(r47054, y, MPFR_RNDN);
        mpfr_sinh(r47055, r47054, MPFR_RNDN);
        mpfr_mul(r47056, r47053, r47055, MPFR_RNDN);
        mpfr_div(r47057, r47056, r47052, MPFR_RNDN);
        return mpfr_get_d(r47057, MPFR_RNDN);
}

static mpfr_t r47058, r47059, r47060, r47061, r47062, r47063;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47058);
        mpfr_init(r47059);
        mpfr_init(r47060);
        mpfr_init(r47061);
        mpfr_init(r47062);
        mpfr_init(r47063);
}

double f_fm(double x, double y) {
        mpfr_set_d(r47058, x, MPFR_RNDN);
        mpfr_sin(r47059, r47058, MPFR_RNDN);
        mpfr_set_d(r47060, y, MPFR_RNDN);
        mpfr_sinh(r47061, r47060, MPFR_RNDN);
        mpfr_div(r47062, r47061, r47058, MPFR_RNDN);
        mpfr_mul(r47063, r47059, r47062, MPFR_RNDN);
        return mpfr_get_d(r47063, MPFR_RNDN);
}

static mpfr_t r47064, r47065, r47066, r47067, r47068, r47069;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47064);
        mpfr_init(r47065);
        mpfr_init(r47066);
        mpfr_init(r47067);
        mpfr_init(r47068);
        mpfr_init(r47069);
}

double f_dm(double x, double y) {
        mpfr_set_d(r47064, x, MPFR_RNDN);
        mpfr_sin(r47065, r47064, MPFR_RNDN);
        mpfr_set_d(r47066, y, MPFR_RNDN);
        mpfr_sinh(r47067, r47066, MPFR_RNDN);
        mpfr_div(r47068, r47067, r47064, MPFR_RNDN);
        mpfr_mul(r47069, r47065, r47068, MPFR_RNDN);
        return mpfr_get_d(r47069, MPFR_RNDN);
}

