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

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

double f_if(float x, float y, float z) {
        float r46657 = x;
        float r46658 = y;
        float r46659 = sin(r46658);
        float r46660 = r46659 / r46658;
        float r46661 = r46657 * r46660;
        float r46662 = z;
        float r46663 = r46661 / r46662;
        return r46663;
}

double f_id(double x, double y, double z) {
        double r46664 = x;
        double r46665 = y;
        double r46666 = sin(r46665);
        double r46667 = r46666 / r46665;
        double r46668 = r46664 * r46667;
        double r46669 = z;
        double r46670 = r46668 / r46669;
        return r46670;
}


double f_of(float x, float y, float z) {
        float r46671 = x;
        float r46672 = -5.7336804601369906e+181;
        bool r46673 = r46671 <= r46672;
        float r46674 = y;
        float r46675 = sin(r46674);
        float r46676 = r46671 * r46675;
        float r46677 = 1;
        float r46678 = r46677 / r46674;
        float r46679 = r46676 * r46678;
        float r46680 = z;
        float r46681 = r46679 / r46680;
        float r46682 = r46671 / r46680;
        float r46683 = r46675 / r46674;
        float r46684 = r46682 * r46683;
        float r46685 = r46677 * r46684;
        float r46686 = r46673 ? r46681 : r46685;
        return r46686;
}

double f_od(double x, double y, double z) {
        double r46687 = x;
        double r46688 = -5.7336804601369906e+181;
        bool r46689 = r46687 <= r46688;
        double r46690 = y;
        double r46691 = sin(r46690);
        double r46692 = r46687 * r46691;
        double r46693 = 1;
        double r46694 = r46693 / r46690;
        double r46695 = r46692 * r46694;
        double r46696 = z;
        double r46697 = r46695 / r46696;
        double r46698 = r46687 / r46696;
        double r46699 = r46691 / r46690;
        double r46700 = r46698 * r46699;
        double r46701 = r46693 * r46700;
        double r46702 = r46689 ? r46697 : r46701;
        return r46702;
}

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 r46703, r46704, r46705, r46706, r46707, r46708, r46709;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46703);
        mpfr_init(r46704);
        mpfr_init(r46705);
        mpfr_init(r46706);
        mpfr_init(r46707);
        mpfr_init(r46708);
        mpfr_init(r46709);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46703, x, MPFR_RNDN);
        mpfr_set_d(r46704, y, MPFR_RNDN);
        mpfr_sin(r46705, r46704, MPFR_RNDN);
        mpfr_div(r46706, r46705, r46704, MPFR_RNDN);
        mpfr_mul(r46707, r46703, r46706, MPFR_RNDN);
        mpfr_set_d(r46708, z, MPFR_RNDN);
        mpfr_div(r46709, r46707, r46708, MPFR_RNDN);
        return mpfr_get_d(r46709, MPFR_RNDN);
}

static mpfr_t r46710, r46711, r46712, r46713, r46714, r46715, r46716, r46717, r46718, r46719, r46720, r46721, r46722, r46723, r46724, r46725;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46710);
        mpfr_init_set_str(r46711, "-5.7336804601369906e+181", 10, MPFR_RNDN);
        mpfr_init(r46712);
        mpfr_init(r46713);
        mpfr_init(r46714);
        mpfr_init(r46715);
        mpfr_init_set_str(r46716, "1", 10, MPFR_RNDN);
        mpfr_init(r46717);
        mpfr_init(r46718);
        mpfr_init(r46719);
        mpfr_init(r46720);
        mpfr_init(r46721);
        mpfr_init(r46722);
        mpfr_init(r46723);
        mpfr_init(r46724);
        mpfr_init(r46725);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46710, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46712, mpfr_cmp(r46710, r46711) <= 0, MPFR_RNDN);
        mpfr_set_d(r46713, y, MPFR_RNDN);
        mpfr_sin(r46714, r46713, MPFR_RNDN);
        mpfr_mul(r46715, r46710, r46714, MPFR_RNDN);
        ;
        mpfr_div(r46717, r46716, r46713, MPFR_RNDN);
        mpfr_mul(r46718, r46715, r46717, MPFR_RNDN);
        mpfr_set_d(r46719, z, MPFR_RNDN);
        mpfr_div(r46720, r46718, r46719, MPFR_RNDN);
        mpfr_div(r46721, r46710, r46719, MPFR_RNDN);
        mpfr_div(r46722, r46714, r46713, MPFR_RNDN);
        mpfr_mul(r46723, r46721, r46722, MPFR_RNDN);
        mpfr_mul(r46724, r46716, r46723, MPFR_RNDN);
        if (mpfr_get_si(r46712, MPFR_RNDN)) { mpfr_set(r46725, r46720, MPFR_RNDN); } else { mpfr_set(r46725, r46724, MPFR_RNDN); };
        return mpfr_get_d(r46725, MPFR_RNDN);
}

static mpfr_t r46726, r46727, r46728, r46729, r46730, r46731, r46732, r46733, r46734, r46735, r46736, r46737, r46738, r46739, r46740, r46741;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46726);
        mpfr_init_set_str(r46727, "-5.7336804601369906e+181", 10, MPFR_RNDN);
        mpfr_init(r46728);
        mpfr_init(r46729);
        mpfr_init(r46730);
        mpfr_init(r46731);
        mpfr_init_set_str(r46732, "1", 10, MPFR_RNDN);
        mpfr_init(r46733);
        mpfr_init(r46734);
        mpfr_init(r46735);
        mpfr_init(r46736);
        mpfr_init(r46737);
        mpfr_init(r46738);
        mpfr_init(r46739);
        mpfr_init(r46740);
        mpfr_init(r46741);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46726, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46728, mpfr_cmp(r46726, r46727) <= 0, MPFR_RNDN);
        mpfr_set_d(r46729, y, MPFR_RNDN);
        mpfr_sin(r46730, r46729, MPFR_RNDN);
        mpfr_mul(r46731, r46726, r46730, MPFR_RNDN);
        ;
        mpfr_div(r46733, r46732, r46729, MPFR_RNDN);
        mpfr_mul(r46734, r46731, r46733, MPFR_RNDN);
        mpfr_set_d(r46735, z, MPFR_RNDN);
        mpfr_div(r46736, r46734, r46735, MPFR_RNDN);
        mpfr_div(r46737, r46726, r46735, MPFR_RNDN);
        mpfr_div(r46738, r46730, r46729, MPFR_RNDN);
        mpfr_mul(r46739, r46737, r46738, MPFR_RNDN);
        mpfr_mul(r46740, r46732, r46739, MPFR_RNDN);
        if (mpfr_get_si(r46728, MPFR_RNDN)) { mpfr_set(r46741, r46736, MPFR_RNDN); } else { mpfr_set(r46741, r46740, MPFR_RNDN); };
        return mpfr_get_d(r46741, MPFR_RNDN);
}

