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

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

double f_if(float x, float y) {
        float r29716 = x;
        float r29717 = sin(r29716);
        float r29718 = y;
        float r29719 = sinh(r29718);
        float r29720 = r29719 / r29718;
        float r29721 = r29717 * r29720;
        return r29721;
}

double f_id(double x, double y) {
        double r29722 = x;
        double r29723 = sin(r29722);
        double r29724 = y;
        double r29725 = sinh(r29724);
        double r29726 = r29725 / r29724;
        double r29727 = r29723 * r29726;
        return r29727;
}


double f_of(float x, float y) {
        float r29728 = x;
        float r29729 = sin(r29728);
        float r29730 = y;
        float r29731 = sinh(r29730);
        float r29732 = r29731 / r29730;
        float r29733 = r29729 * r29732;
        return r29733;
}

double f_od(double x, double y) {
        double r29734 = x;
        double r29735 = sin(r29734);
        double r29736 = y;
        double r29737 = sinh(r29736);
        double r29738 = r29737 / r29736;
        double r29739 = r29735 * r29738;
        return r29739;
}

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 r29740, r29741, r29742, r29743, r29744, r29745;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29740);
        mpfr_init(r29741);
        mpfr_init(r29742);
        mpfr_init(r29743);
        mpfr_init(r29744);
        mpfr_init(r29745);
}

double f_im(double x, double y) {
        mpfr_set_d(r29740, x, MPFR_RNDN);
        mpfr_sin(r29741, r29740, MPFR_RNDN);
        mpfr_set_d(r29742, y, MPFR_RNDN);
        mpfr_sinh(r29743, r29742, MPFR_RNDN);
        mpfr_div(r29744, r29743, r29742, MPFR_RNDN);
        mpfr_mul(r29745, r29741, r29744, MPFR_RNDN);
        return mpfr_get_d(r29745, MPFR_RNDN);
}

static mpfr_t r29746, r29747, r29748, r29749, r29750, r29751;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29746);
        mpfr_init(r29747);
        mpfr_init(r29748);
        mpfr_init(r29749);
        mpfr_init(r29750);
        mpfr_init(r29751);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29746, x, MPFR_RNDN);
        mpfr_sin(r29747, r29746, MPFR_RNDN);
        mpfr_set_d(r29748, y, MPFR_RNDN);
        mpfr_sinh(r29749, r29748, MPFR_RNDN);
        mpfr_div(r29750, r29749, r29748, MPFR_RNDN);
        mpfr_mul(r29751, r29747, r29750, MPFR_RNDN);
        return mpfr_get_d(r29751, MPFR_RNDN);
}

static mpfr_t r29752, r29753, r29754, r29755, r29756, r29757;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29752);
        mpfr_init(r29753);
        mpfr_init(r29754);
        mpfr_init(r29755);
        mpfr_init(r29756);
        mpfr_init(r29757);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29752, x, MPFR_RNDN);
        mpfr_sin(r29753, r29752, MPFR_RNDN);
        mpfr_set_d(r29754, y, MPFR_RNDN);
        mpfr_sinh(r29755, r29754, MPFR_RNDN);
        mpfr_div(r29756, r29755, r29754, MPFR_RNDN);
        mpfr_mul(r29757, r29753, r29756, MPFR_RNDN);
        return mpfr_get_d(r29757, MPFR_RNDN);
}

