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

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

double f_if(float x, float y) {
        float r29399 = x;
        float r29400 = cos(r29399);
        float r29401 = y;
        float r29402 = sinh(r29401);
        float r29403 = r29402 / r29401;
        float r29404 = r29400 * r29403;
        return r29404;
}

double f_id(double x, double y) {
        double r29405 = x;
        double r29406 = cos(r29405);
        double r29407 = y;
        double r29408 = sinh(r29407);
        double r29409 = r29408 / r29407;
        double r29410 = r29406 * r29409;
        return r29410;
}


double f_of(float x, float y) {
        float r29411 = x;
        float r29412 = cos(r29411);
        float r29413 = y;
        float r29414 = sinh(r29413);
        float r29415 = r29414 / r29413;
        float r29416 = r29412 * r29415;
        return r29416;
}

double f_od(double x, double y) {
        double r29417 = x;
        double r29418 = cos(r29417);
        double r29419 = y;
        double r29420 = sinh(r29419);
        double r29421 = r29420 / r29419;
        double r29422 = r29418 * r29421;
        return r29422;
}

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 r29423, r29424, r29425, r29426, r29427, r29428;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29423);
        mpfr_init(r29424);
        mpfr_init(r29425);
        mpfr_init(r29426);
        mpfr_init(r29427);
        mpfr_init(r29428);
}

double f_im(double x, double y) {
        mpfr_set_d(r29423, x, MPFR_RNDN);
        mpfr_cos(r29424, r29423, MPFR_RNDN);
        mpfr_set_d(r29425, y, MPFR_RNDN);
        mpfr_sinh(r29426, r29425, MPFR_RNDN);
        mpfr_div(r29427, r29426, r29425, MPFR_RNDN);
        mpfr_mul(r29428, r29424, r29427, MPFR_RNDN);
        return mpfr_get_d(r29428, MPFR_RNDN);
}

static mpfr_t r29429, r29430, r29431, r29432, r29433, r29434;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29429);
        mpfr_init(r29430);
        mpfr_init(r29431);
        mpfr_init(r29432);
        mpfr_init(r29433);
        mpfr_init(r29434);
}

double f_fm(double x, double y) {
        mpfr_set_d(r29429, x, MPFR_RNDN);
        mpfr_cos(r29430, r29429, MPFR_RNDN);
        mpfr_set_d(r29431, y, MPFR_RNDN);
        mpfr_sinh(r29432, r29431, MPFR_RNDN);
        mpfr_div(r29433, r29432, r29431, MPFR_RNDN);
        mpfr_mul(r29434, r29430, r29433, MPFR_RNDN);
        return mpfr_get_d(r29434, MPFR_RNDN);
}

static mpfr_t r29435, r29436, r29437, r29438, r29439, r29440;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29435);
        mpfr_init(r29436);
        mpfr_init(r29437);
        mpfr_init(r29438);
        mpfr_init(r29439);
        mpfr_init(r29440);
}

double f_dm(double x, double y) {
        mpfr_set_d(r29435, x, MPFR_RNDN);
        mpfr_cos(r29436, r29435, MPFR_RNDN);
        mpfr_set_d(r29437, y, MPFR_RNDN);
        mpfr_sinh(r29438, r29437, MPFR_RNDN);
        mpfr_div(r29439, r29438, r29437, MPFR_RNDN);
        mpfr_mul(r29440, r29436, r29439, MPFR_RNDN);
        return mpfr_get_d(r29440, MPFR_RNDN);
}

