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

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

double f_if(float x, float y, float z) {
        float r43988 = x;
        float r43989 = cosh(r43988);
        float r43990 = y;
        float r43991 = r43990 / r43988;
        float r43992 = r43989 * r43991;
        float r43993 = z;
        float r43994 = r43992 / r43993;
        return r43994;
}

double f_id(double x, double y, double z) {
        double r43995 = x;
        double r43996 = cosh(r43995);
        double r43997 = y;
        double r43998 = r43997 / r43995;
        double r43999 = r43996 * r43998;
        double r44000 = z;
        double r44001 = r43999 / r44000;
        return r44001;
}


double f_of(float x, float y, float z) {
        float r44002 = y;
        float r44003 = -1.3435121576273773e-33f;
        bool r44004 = r44002 <= r44003;
        float r44005 = x;
        float r44006 = cosh(r44005);
        float r44007 = z;
        float r44008 = r44002 / r44007;
        float r44009 = r44006 * r44008;
        float r44010 = r44009 / r44005;
        float r44011 = 8.378170858467427e-66f;
        bool r44012 = r44002 <= r44011;
        float r44013 = r44002 / r44005;
        float r44014 = r44006 * r44013;
        float r44015 = 1.0f;
        float r44016 = r44015 / r44007;
        float r44017 = r44014 * r44016;
        float r44018 = r44012 ? r44017 : r44010;
        float r44019 = r44004 ? r44010 : r44018;
        return r44019;
}

double f_od(double x, double y, double z) {
        double r44020 = y;
        double r44021 = -1.3435121576273773e-33;
        bool r44022 = r44020 <= r44021;
        double r44023 = x;
        double r44024 = cosh(r44023);
        double r44025 = z;
        double r44026 = r44020 / r44025;
        double r44027 = r44024 * r44026;
        double r44028 = r44027 / r44023;
        double r44029 = 8.378170858467427e-66;
        bool r44030 = r44020 <= r44029;
        double r44031 = r44020 / r44023;
        double r44032 = r44024 * r44031;
        double r44033 = 1.0;
        double r44034 = r44033 / r44025;
        double r44035 = r44032 * r44034;
        double r44036 = r44030 ? r44035 : r44028;
        double r44037 = r44022 ? r44028 : r44036;
        return r44037;
}

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 r44038, r44039, r44040, r44041, r44042, r44043, r44044;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44038);
        mpfr_init(r44039);
        mpfr_init(r44040);
        mpfr_init(r44041);
        mpfr_init(r44042);
        mpfr_init(r44043);
        mpfr_init(r44044);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44038, x, MPFR_RNDN);
        mpfr_cosh(r44039, r44038, MPFR_RNDN);
        mpfr_set_d(r44040, y, MPFR_RNDN);
        mpfr_div(r44041, r44040, r44038, MPFR_RNDN);
        mpfr_mul(r44042, r44039, r44041, MPFR_RNDN);
        mpfr_set_d(r44043, z, MPFR_RNDN);
        mpfr_div(r44044, r44042, r44043, MPFR_RNDN);
        return mpfr_get_d(r44044, MPFR_RNDN);
}

static mpfr_t r44045, r44046, r44047, r44048, r44049, r44050, r44051, r44052, r44053, r44054, r44055, r44056, r44057, r44058, r44059, r44060, r44061, r44062;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44045);
        mpfr_init_set_str(r44046, "-1.3435121576273773e-33", 10, MPFR_RNDN);
        mpfr_init(r44047);
        mpfr_init(r44048);
        mpfr_init(r44049);
        mpfr_init(r44050);
        mpfr_init(r44051);
        mpfr_init(r44052);
        mpfr_init(r44053);
        mpfr_init_set_str(r44054, "8.378170858467427e-66", 10, MPFR_RNDN);
        mpfr_init(r44055);
        mpfr_init(r44056);
        mpfr_init(r44057);
        mpfr_init_set_str(r44058, "1", 10, MPFR_RNDN);
        mpfr_init(r44059);
        mpfr_init(r44060);
        mpfr_init(r44061);
        mpfr_init(r44062);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44045, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44047, mpfr_cmp(r44045, r44046) <= 0, MPFR_RNDN);
        mpfr_set_d(r44048, x, MPFR_RNDN);
        mpfr_cosh(r44049, r44048, MPFR_RNDN);
        mpfr_set_d(r44050, z, MPFR_RNDN);
        mpfr_div(r44051, r44045, r44050, MPFR_RNDN);
        mpfr_mul(r44052, r44049, r44051, MPFR_RNDN);
        mpfr_div(r44053, r44052, r44048, MPFR_RNDN);
        ;
        mpfr_set_si(r44055, mpfr_cmp(r44045, r44054) <= 0, MPFR_RNDN);
        mpfr_div(r44056, r44045, r44048, MPFR_RNDN);
        mpfr_mul(r44057, r44049, r44056, MPFR_RNDN);
        ;
        mpfr_div(r44059, r44058, r44050, MPFR_RNDN);
        mpfr_mul(r44060, r44057, r44059, MPFR_RNDN);
        if (mpfr_get_si(r44055, MPFR_RNDN)) { mpfr_set(r44061, r44060, MPFR_RNDN); } else { mpfr_set(r44061, r44053, MPFR_RNDN); };
        if (mpfr_get_si(r44047, MPFR_RNDN)) { mpfr_set(r44062, r44053, MPFR_RNDN); } else { mpfr_set(r44062, r44061, MPFR_RNDN); };
        return mpfr_get_d(r44062, MPFR_RNDN);
}

static mpfr_t r44063, r44064, r44065, r44066, r44067, r44068, r44069, r44070, r44071, r44072, r44073, r44074, r44075, r44076, r44077, r44078, r44079, r44080;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44063);
        mpfr_init_set_str(r44064, "-1.3435121576273773e-33", 10, MPFR_RNDN);
        mpfr_init(r44065);
        mpfr_init(r44066);
        mpfr_init(r44067);
        mpfr_init(r44068);
        mpfr_init(r44069);
        mpfr_init(r44070);
        mpfr_init(r44071);
        mpfr_init_set_str(r44072, "8.378170858467427e-66", 10, MPFR_RNDN);
        mpfr_init(r44073);
        mpfr_init(r44074);
        mpfr_init(r44075);
        mpfr_init_set_str(r44076, "1", 10, MPFR_RNDN);
        mpfr_init(r44077);
        mpfr_init(r44078);
        mpfr_init(r44079);
        mpfr_init(r44080);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44063, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44065, mpfr_cmp(r44063, r44064) <= 0, MPFR_RNDN);
        mpfr_set_d(r44066, x, MPFR_RNDN);
        mpfr_cosh(r44067, r44066, MPFR_RNDN);
        mpfr_set_d(r44068, z, MPFR_RNDN);
        mpfr_div(r44069, r44063, r44068, MPFR_RNDN);
        mpfr_mul(r44070, r44067, r44069, MPFR_RNDN);
        mpfr_div(r44071, r44070, r44066, MPFR_RNDN);
        ;
        mpfr_set_si(r44073, mpfr_cmp(r44063, r44072) <= 0, MPFR_RNDN);
        mpfr_div(r44074, r44063, r44066, MPFR_RNDN);
        mpfr_mul(r44075, r44067, r44074, MPFR_RNDN);
        ;
        mpfr_div(r44077, r44076, r44068, MPFR_RNDN);
        mpfr_mul(r44078, r44075, r44077, MPFR_RNDN);
        if (mpfr_get_si(r44073, MPFR_RNDN)) { mpfr_set(r44079, r44078, MPFR_RNDN); } else { mpfr_set(r44079, r44071, MPFR_RNDN); };
        if (mpfr_get_si(r44065, MPFR_RNDN)) { mpfr_set(r44080, r44071, MPFR_RNDN); } else { mpfr_set(r44080, r44079, MPFR_RNDN); };
        return mpfr_get_d(r44080, MPFR_RNDN);
}

