#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 r29652 = x;
        float r29653 = sin(r29652);
        float r29654 = y;
        float r29655 = sinh(r29654);
        float r29656 = r29655 / r29654;
        float r29657 = r29653 * r29656;
        return r29657;
}

double f_id(double x, double y) {
        double r29658 = x;
        double r29659 = sin(r29658);
        double r29660 = y;
        double r29661 = sinh(r29660);
        double r29662 = r29661 / r29660;
        double r29663 = r29659 * r29662;
        return r29663;
}


double f_of(float x, float y) {
        float r29664 = x;
        float r29665 = sin(r29664);
        float r29666 = y;
        float r29667 = sinh(r29666);
        float r29668 = r29667 / r29666;
        float r29669 = r29665 * r29668;
        return r29669;
}

double f_od(double x, double y) {
        double r29670 = x;
        double r29671 = sin(r29670);
        double r29672 = y;
        double r29673 = sinh(r29672);
        double r29674 = r29673 / r29672;
        double r29675 = r29671 * r29674;
        return r29675;
}

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 r29676, r29677, r29678, r29679, r29680, r29681;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29676);
        mpfr_init(r29677);
        mpfr_init(r29678);
        mpfr_init(r29679);
        mpfr_init(r29680);
        mpfr_init(r29681);
}

double f_im(double x, double y) {
        mpfr_set_d(r29676, x, MPFR_RNDN);
        mpfr_sin(r29677, r29676, MPFR_RNDN);
        mpfr_set_d(r29678, y, MPFR_RNDN);
        mpfr_sinh(r29679, r29678, MPFR_RNDN);
        mpfr_div(r29680, r29679, r29678, MPFR_RNDN);
        mpfr_mul(r29681, r29677, r29680, MPFR_RNDN);
        return mpfr_get_d(r29681, MPFR_RNDN);
}

static mpfr_t r29682, r29683, r29684, r29685, r29686, r29687;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29682);
        mpfr_init(r29683);
        mpfr_init(r29684);
        mpfr_init(r29685);
        mpfr_init(r29686);
        mpfr_init(r29687);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29682, x, MPFR_RNDN);
        mpfr_sin(r29683, r29682, MPFR_RNDN);
        mpfr_set_d(r29684, y, MPFR_RNDN);
        mpfr_sinh(r29685, r29684, MPFR_RNDN);
        mpfr_div(r29686, r29685, r29684, MPFR_RNDN);
        mpfr_mul(r29687, r29683, r29686, MPFR_RNDN);
        return mpfr_get_d(r29687, MPFR_RNDN);
}

static mpfr_t r29688, r29689, r29690, r29691, r29692, r29693;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29688);
        mpfr_init(r29689);
        mpfr_init(r29690);
        mpfr_init(r29691);
        mpfr_init(r29692);
        mpfr_init(r29693);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29688, x, MPFR_RNDN);
        mpfr_sin(r29689, r29688, MPFR_RNDN);
        mpfr_set_d(r29690, y, MPFR_RNDN);
        mpfr_sinh(r29691, r29690, MPFR_RNDN);
        mpfr_div(r29692, r29691, r29690, MPFR_RNDN);
        mpfr_mul(r29693, r29689, r29692, MPFR_RNDN);
        return mpfr_get_d(r29693, MPFR_RNDN);
}

