#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 r47125 = x;
        float r47126 = y;
        float r47127 = sin(r47126);
        float r47128 = r47127 / r47126;
        float r47129 = r47125 * r47128;
        float r47130 = z;
        float r47131 = r47129 / r47130;
        return r47131;
}

double f_id(double x, double y, double z) {
        double r47132 = x;
        double r47133 = y;
        double r47134 = sin(r47133);
        double r47135 = r47134 / r47133;
        double r47136 = r47132 * r47135;
        double r47137 = z;
        double r47138 = r47136 / r47137;
        return r47138;
}


double f_of(float x, float y, float z) {
        float r47139 = z;
        float r47140 = -5.118596280002755e+95;
        bool r47141 = r47139 <= r47140;
        float r47142 = x;
        float r47143 = y;
        float r47144 = sin(r47143);
        float r47145 = 1;
        float r47146 = r47145 / r47143;
        float r47147 = r47144 * r47146;
        float r47148 = r47142 * r47147;
        float r47149 = r47148 / r47139;
        float r47150 = 1.0774220446440768e-83;
        bool r47151 = r47139 <= r47150;
        float r47152 = r47144 / r47143;
        float r47153 = r47139 / r47152;
        float r47154 = r47142 / r47153;
        float r47155 = r47151 ? r47154 : r47149;
        float r47156 = r47141 ? r47149 : r47155;
        return r47156;
}

double f_od(double x, double y, double z) {
        double r47157 = z;
        double r47158 = -5.118596280002755e+95;
        bool r47159 = r47157 <= r47158;
        double r47160 = x;
        double r47161 = y;
        double r47162 = sin(r47161);
        double r47163 = 1;
        double r47164 = r47163 / r47161;
        double r47165 = r47162 * r47164;
        double r47166 = r47160 * r47165;
        double r47167 = r47166 / r47157;
        double r47168 = 1.0774220446440768e-83;
        bool r47169 = r47157 <= r47168;
        double r47170 = r47162 / r47161;
        double r47171 = r47157 / r47170;
        double r47172 = r47160 / r47171;
        double r47173 = r47169 ? r47172 : r47167;
        double r47174 = r47159 ? r47167 : r47173;
        return r47174;
}

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 r47175, r47176, r47177, r47178, r47179, r47180, r47181;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47175);
        mpfr_init(r47176);
        mpfr_init(r47177);
        mpfr_init(r47178);
        mpfr_init(r47179);
        mpfr_init(r47180);
        mpfr_init(r47181);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r47175, x, MPFR_RNDN);
        mpfr_set_d(r47176, y, MPFR_RNDN);
        mpfr_sin(r47177, r47176, MPFR_RNDN);
        mpfr_div(r47178, r47177, r47176, MPFR_RNDN);
        mpfr_mul(r47179, r47175, r47178, MPFR_RNDN);
        mpfr_set_d(r47180, z, MPFR_RNDN);
        mpfr_div(r47181, r47179, r47180, MPFR_RNDN);
        return mpfr_get_d(r47181, MPFR_RNDN);
}

static mpfr_t r47182, r47183, r47184, r47185, r47186, r47187, r47188, r47189, r47190, r47191, r47192, r47193, r47194, r47195, r47196, r47197, r47198, r47199;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47182);
        mpfr_init_set_str(r47183, "-5.118596280002755e+95", 10, MPFR_RNDN);
        mpfr_init(r47184);
        mpfr_init(r47185);
        mpfr_init(r47186);
        mpfr_init(r47187);
        mpfr_init_set_str(r47188, "1", 10, MPFR_RNDN);
        mpfr_init(r47189);
        mpfr_init(r47190);
        mpfr_init(r47191);
        mpfr_init(r47192);
        mpfr_init_set_str(r47193, "1.0774220446440768e-83", 10, MPFR_RNDN);
        mpfr_init(r47194);
        mpfr_init(r47195);
        mpfr_init(r47196);
        mpfr_init(r47197);
        mpfr_init(r47198);
        mpfr_init(r47199);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r47182, z, MPFR_RNDN);
        ;
        mpfr_set_si(r47184, mpfr_cmp(r47182, r47183) <= 0, MPFR_RNDN);
        mpfr_set_d(r47185, x, MPFR_RNDN);
        mpfr_set_d(r47186, y, MPFR_RNDN);
        mpfr_sin(r47187, r47186, MPFR_RNDN);
        ;
        mpfr_div(r47189, r47188, r47186, MPFR_RNDN);
        mpfr_mul(r47190, r47187, r47189, MPFR_RNDN);
        mpfr_mul(r47191, r47185, r47190, MPFR_RNDN);
        mpfr_div(r47192, r47191, r47182, MPFR_RNDN);
        ;
        mpfr_set_si(r47194, mpfr_cmp(r47182, r47193) <= 0, MPFR_RNDN);
        mpfr_div(r47195, r47187, r47186, MPFR_RNDN);
        mpfr_div(r47196, r47182, r47195, MPFR_RNDN);
        mpfr_div(r47197, r47185, r47196, MPFR_RNDN);
        if (mpfr_get_si(r47194, MPFR_RNDN)) { mpfr_set(r47198, r47197, MPFR_RNDN); } else { mpfr_set(r47198, r47192, MPFR_RNDN); };
        if (mpfr_get_si(r47184, MPFR_RNDN)) { mpfr_set(r47199, r47192, MPFR_RNDN); } else { mpfr_set(r47199, r47198, MPFR_RNDN); };
        return mpfr_get_d(r47199, MPFR_RNDN);
}

static mpfr_t r47200, r47201, r47202, r47203, r47204, r47205, r47206, r47207, r47208, r47209, r47210, r47211, r47212, r47213, r47214, r47215, r47216, r47217;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47200);
        mpfr_init_set_str(r47201, "-5.118596280002755e+95", 10, MPFR_RNDN);
        mpfr_init(r47202);
        mpfr_init(r47203);
        mpfr_init(r47204);
        mpfr_init(r47205);
        mpfr_init_set_str(r47206, "1", 10, MPFR_RNDN);
        mpfr_init(r47207);
        mpfr_init(r47208);
        mpfr_init(r47209);
        mpfr_init(r47210);
        mpfr_init_set_str(r47211, "1.0774220446440768e-83", 10, MPFR_RNDN);
        mpfr_init(r47212);
        mpfr_init(r47213);
        mpfr_init(r47214);
        mpfr_init(r47215);
        mpfr_init(r47216);
        mpfr_init(r47217);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r47200, z, MPFR_RNDN);
        ;
        mpfr_set_si(r47202, mpfr_cmp(r47200, r47201) <= 0, MPFR_RNDN);
        mpfr_set_d(r47203, x, MPFR_RNDN);
        mpfr_set_d(r47204, y, MPFR_RNDN);
        mpfr_sin(r47205, r47204, MPFR_RNDN);
        ;
        mpfr_div(r47207, r47206, r47204, MPFR_RNDN);
        mpfr_mul(r47208, r47205, r47207, MPFR_RNDN);
        mpfr_mul(r47209, r47203, r47208, MPFR_RNDN);
        mpfr_div(r47210, r47209, r47200, MPFR_RNDN);
        ;
        mpfr_set_si(r47212, mpfr_cmp(r47200, r47211) <= 0, MPFR_RNDN);
        mpfr_div(r47213, r47205, r47204, MPFR_RNDN);
        mpfr_div(r47214, r47200, r47213, MPFR_RNDN);
        mpfr_div(r47215, r47203, r47214, MPFR_RNDN);
        if (mpfr_get_si(r47212, MPFR_RNDN)) { mpfr_set(r47216, r47215, MPFR_RNDN); } else { mpfr_set(r47216, r47210, MPFR_RNDN); };
        if (mpfr_get_si(r47202, MPFR_RNDN)) { mpfr_set(r47217, r47210, MPFR_RNDN); } else { mpfr_set(r47217, r47216, MPFR_RNDN); };
        return mpfr_get_d(r47217, MPFR_RNDN);
}

