#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 r29448 = x;
        float r29449 = sin(r29448);
        float r29450 = y;
        float r29451 = sinh(r29450);
        float r29452 = r29451 / r29450;
        float r29453 = r29449 * r29452;
        return r29453;
}

double f_id(double x, double y) {
        double r29454 = x;
        double r29455 = sin(r29454);
        double r29456 = y;
        double r29457 = sinh(r29456);
        double r29458 = r29457 / r29456;
        double r29459 = r29455 * r29458;
        return r29459;
}


double f_of(float x, float y) {
        float r29460 = x;
        float r29461 = sin(r29460);
        float r29462 = y;
        float r29463 = sinh(r29462);
        float r29464 = r29463 / r29462;
        float r29465 = r29461 * r29464;
        return r29465;
}

double f_od(double x, double y) {
        double r29466 = x;
        double r29467 = sin(r29466);
        double r29468 = y;
        double r29469 = sinh(r29468);
        double r29470 = r29469 / r29468;
        double r29471 = r29467 * r29470;
        return r29471;
}

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 r29472, r29473, r29474, r29475, r29476, r29477;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29472);
        mpfr_init(r29473);
        mpfr_init(r29474);
        mpfr_init(r29475);
        mpfr_init(r29476);
        mpfr_init(r29477);
}

double f_im(double x, double y) {
        mpfr_set_d(r29472, x, MPFR_RNDN);
        mpfr_sin(r29473, r29472, MPFR_RNDN);
        mpfr_set_d(r29474, y, MPFR_RNDN);
        mpfr_sinh(r29475, r29474, MPFR_RNDN);
        mpfr_div(r29476, r29475, r29474, MPFR_RNDN);
        mpfr_mul(r29477, r29473, r29476, MPFR_RNDN);
        return mpfr_get_d(r29477, MPFR_RNDN);
}

static mpfr_t r29478, r29479, r29480, r29481, r29482, r29483;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29478);
        mpfr_init(r29479);
        mpfr_init(r29480);
        mpfr_init(r29481);
        mpfr_init(r29482);
        mpfr_init(r29483);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29478, x, MPFR_RNDN);
        mpfr_sin(r29479, r29478, MPFR_RNDN);
        mpfr_set_d(r29480, y, MPFR_RNDN);
        mpfr_sinh(r29481, r29480, MPFR_RNDN);
        mpfr_div(r29482, r29481, r29480, MPFR_RNDN);
        mpfr_mul(r29483, r29479, r29482, MPFR_RNDN);
        return mpfr_get_d(r29483, MPFR_RNDN);
}

static mpfr_t r29484, r29485, r29486, r29487, r29488, r29489;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29484);
        mpfr_init(r29485);
        mpfr_init(r29486);
        mpfr_init(r29487);
        mpfr_init(r29488);
        mpfr_init(r29489);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29484, x, MPFR_RNDN);
        mpfr_sin(r29485, r29484, MPFR_RNDN);
        mpfr_set_d(r29486, y, MPFR_RNDN);
        mpfr_sinh(r29487, r29486, MPFR_RNDN);
        mpfr_div(r29488, r29487, r29486, MPFR_RNDN);
        mpfr_mul(r29489, r29485, r29488, MPFR_RNDN);
        return mpfr_get_d(r29489, MPFR_RNDN);
}

