#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 r46805 = x;
        float r46806 = cosh(r46805);
        float r46807 = y;
        float r46808 = r46807 / r46805;
        float r46809 = r46806 * r46808;
        float r46810 = z;
        float r46811 = r46809 / r46810;
        return r46811;
}

double f_id(double x, double y, double z) {
        double r46812 = x;
        double r46813 = cosh(r46812);
        double r46814 = y;
        double r46815 = r46814 / r46812;
        double r46816 = r46813 * r46815;
        double r46817 = z;
        double r46818 = r46816 / r46817;
        return r46818;
}


double f_of(float x, float y, float z) {
        float r46819 = z;
        float r46820 = -4.325937455082745e+35;
        bool r46821 = r46819 <= r46820;
        float r46822 = x;
        float r46823 = cosh(r46822);
        float r46824 = cbrt(r46823);
        float r46825 = exp(r46822);
        float r46826 = -r46822;
        float r46827 = exp(r46826);
        float r46828 = r46825 + r46827;
        float r46829 = cbrt(r46828);
        float r46830 = r46824 * r46829;
        float r46831 = y;
        float r46832 = r46824 * r46831;
        float r46833 = r46830 * r46832;
        float r46834 = 2;
        float r46835 = cbrt(r46834);
        float r46836 = r46835 * r46822;
        float r46837 = r46819 * r46836;
        float r46838 = r46833 / r46837;
        float r46839 = 1474036971039.3018;
        bool r46840 = r46819 <= r46839;
        float r46841 = r46831 / r46822;
        float r46842 = r46823 * r46841;
        float r46843 = 1;
        float r46844 = r46843 / r46819;
        float r46845 = r46842 * r46844;
        float r46846 = r46840 ? r46845 : r46838;
        float r46847 = r46821 ? r46838 : r46846;
        return r46847;
}

double f_od(double x, double y, double z) {
        double r46848 = z;
        double r46849 = -4.325937455082745e+35;
        bool r46850 = r46848 <= r46849;
        double r46851 = x;
        double r46852 = cosh(r46851);
        double r46853 = cbrt(r46852);
        double r46854 = exp(r46851);
        double r46855 = -r46851;
        double r46856 = exp(r46855);
        double r46857 = r46854 + r46856;
        double r46858 = cbrt(r46857);
        double r46859 = r46853 * r46858;
        double r46860 = y;
        double r46861 = r46853 * r46860;
        double r46862 = r46859 * r46861;
        double r46863 = 2;
        double r46864 = cbrt(r46863);
        double r46865 = r46864 * r46851;
        double r46866 = r46848 * r46865;
        double r46867 = r46862 / r46866;
        double r46868 = 1474036971039.3018;
        bool r46869 = r46848 <= r46868;
        double r46870 = r46860 / r46851;
        double r46871 = r46852 * r46870;
        double r46872 = 1;
        double r46873 = r46872 / r46848;
        double r46874 = r46871 * r46873;
        double r46875 = r46869 ? r46874 : r46867;
        double r46876 = r46850 ? r46867 : r46875;
        return r46876;
}

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 r46877, r46878, r46879, r46880, r46881, r46882, r46883;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46877);
        mpfr_init(r46878);
        mpfr_init(r46879);
        mpfr_init(r46880);
        mpfr_init(r46881);
        mpfr_init(r46882);
        mpfr_init(r46883);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46877, x, MPFR_RNDN);
        mpfr_cosh(r46878, r46877, MPFR_RNDN);
        mpfr_set_d(r46879, y, MPFR_RNDN);
        mpfr_div(r46880, r46879, r46877, MPFR_RNDN);
        mpfr_mul(r46881, r46878, r46880, MPFR_RNDN);
        mpfr_set_d(r46882, z, MPFR_RNDN);
        mpfr_div(r46883, r46881, r46882, MPFR_RNDN);
        return mpfr_get_d(r46883, MPFR_RNDN);
}

static mpfr_t r46884, r46885, r46886, r46887, r46888, r46889, r46890, r46891, r46892, r46893, r46894, r46895, r46896, r46897, r46898, r46899, r46900, r46901, r46902, r46903, r46904, r46905, r46906, r46907, r46908, r46909, r46910, r46911, r46912;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46884);
        mpfr_init_set_str(r46885, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r46886);
        mpfr_init(r46887);
        mpfr_init(r46888);
        mpfr_init(r46889);
        mpfr_init(r46890);
        mpfr_init(r46891);
        mpfr_init(r46892);
        mpfr_init(r46893);
        mpfr_init(r46894);
        mpfr_init(r46895);
        mpfr_init(r46896);
        mpfr_init(r46897);
        mpfr_init(r46898);
        mpfr_init_set_str(r46899, "2", 10, MPFR_RNDN);
        mpfr_init(r46900);
        mpfr_init(r46901);
        mpfr_init(r46902);
        mpfr_init(r46903);
        mpfr_init_set_str(r46904, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r46905);
        mpfr_init(r46906);
        mpfr_init(r46907);
        mpfr_init_set_str(r46908, "1", 10, MPFR_RNDN);
        mpfr_init(r46909);
        mpfr_init(r46910);
        mpfr_init(r46911);
        mpfr_init(r46912);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46884, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46886, mpfr_cmp(r46884, r46885) <= 0, MPFR_RNDN);
        mpfr_set_d(r46887, x, MPFR_RNDN);
        mpfr_cosh(r46888, r46887, MPFR_RNDN);
        mpfr_cbrt(r46889, r46888, MPFR_RNDN);
        mpfr_exp(r46890, r46887, MPFR_RNDN);
        mpfr_neg(r46891, r46887, MPFR_RNDN);
        mpfr_exp(r46892, r46891, MPFR_RNDN);
        mpfr_add(r46893, r46890, r46892, MPFR_RNDN);
        mpfr_cbrt(r46894, r46893, MPFR_RNDN);
        mpfr_mul(r46895, r46889, r46894, MPFR_RNDN);
        mpfr_set_d(r46896, y, MPFR_RNDN);
        mpfr_mul(r46897, r46889, r46896, MPFR_RNDN);
        mpfr_mul(r46898, r46895, r46897, MPFR_RNDN);
        ;
        mpfr_cbrt(r46900, r46899, MPFR_RNDN);
        mpfr_mul(r46901, r46900, r46887, MPFR_RNDN);
        mpfr_mul(r46902, r46884, r46901, MPFR_RNDN);
        mpfr_div(r46903, r46898, r46902, MPFR_RNDN);
        ;
        mpfr_set_si(r46905, mpfr_cmp(r46884, r46904) <= 0, MPFR_RNDN);
        mpfr_div(r46906, r46896, r46887, MPFR_RNDN);
        mpfr_mul(r46907, r46888, r46906, MPFR_RNDN);
        ;
        mpfr_div(r46909, r46908, r46884, MPFR_RNDN);
        mpfr_mul(r46910, r46907, r46909, MPFR_RNDN);
        if (mpfr_get_si(r46905, MPFR_RNDN)) { mpfr_set(r46911, r46910, MPFR_RNDN); } else { mpfr_set(r46911, r46903, MPFR_RNDN); };
        if (mpfr_get_si(r46886, MPFR_RNDN)) { mpfr_set(r46912, r46903, MPFR_RNDN); } else { mpfr_set(r46912, r46911, MPFR_RNDN); };
        return mpfr_get_d(r46912, MPFR_RNDN);
}

static mpfr_t r46913, r46914, r46915, r46916, r46917, r46918, r46919, r46920, r46921, r46922, r46923, r46924, r46925, r46926, r46927, r46928, r46929, r46930, r46931, r46932, r46933, r46934, r46935, r46936, r46937, r46938, r46939, r46940, r46941;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46913);
        mpfr_init_set_str(r46914, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r46915);
        mpfr_init(r46916);
        mpfr_init(r46917);
        mpfr_init(r46918);
        mpfr_init(r46919);
        mpfr_init(r46920);
        mpfr_init(r46921);
        mpfr_init(r46922);
        mpfr_init(r46923);
        mpfr_init(r46924);
        mpfr_init(r46925);
        mpfr_init(r46926);
        mpfr_init(r46927);
        mpfr_init_set_str(r46928, "2", 10, MPFR_RNDN);
        mpfr_init(r46929);
        mpfr_init(r46930);
        mpfr_init(r46931);
        mpfr_init(r46932);
        mpfr_init_set_str(r46933, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r46934);
        mpfr_init(r46935);
        mpfr_init(r46936);
        mpfr_init_set_str(r46937, "1", 10, MPFR_RNDN);
        mpfr_init(r46938);
        mpfr_init(r46939);
        mpfr_init(r46940);
        mpfr_init(r46941);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46913, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46915, mpfr_cmp(r46913, r46914) <= 0, MPFR_RNDN);
        mpfr_set_d(r46916, x, MPFR_RNDN);
        mpfr_cosh(r46917, r46916, MPFR_RNDN);
        mpfr_cbrt(r46918, r46917, MPFR_RNDN);
        mpfr_exp(r46919, r46916, MPFR_RNDN);
        mpfr_neg(r46920, r46916, MPFR_RNDN);
        mpfr_exp(r46921, r46920, MPFR_RNDN);
        mpfr_add(r46922, r46919, r46921, MPFR_RNDN);
        mpfr_cbrt(r46923, r46922, MPFR_RNDN);
        mpfr_mul(r46924, r46918, r46923, MPFR_RNDN);
        mpfr_set_d(r46925, y, MPFR_RNDN);
        mpfr_mul(r46926, r46918, r46925, MPFR_RNDN);
        mpfr_mul(r46927, r46924, r46926, MPFR_RNDN);
        ;
        mpfr_cbrt(r46929, r46928, MPFR_RNDN);
        mpfr_mul(r46930, r46929, r46916, MPFR_RNDN);
        mpfr_mul(r46931, r46913, r46930, MPFR_RNDN);
        mpfr_div(r46932, r46927, r46931, MPFR_RNDN);
        ;
        mpfr_set_si(r46934, mpfr_cmp(r46913, r46933) <= 0, MPFR_RNDN);
        mpfr_div(r46935, r46925, r46916, MPFR_RNDN);
        mpfr_mul(r46936, r46917, r46935, MPFR_RNDN);
        ;
        mpfr_div(r46938, r46937, r46913, MPFR_RNDN);
        mpfr_mul(r46939, r46936, r46938, MPFR_RNDN);
        if (mpfr_get_si(r46934, MPFR_RNDN)) { mpfr_set(r46940, r46939, MPFR_RNDN); } else { mpfr_set(r46940, r46932, MPFR_RNDN); };
        if (mpfr_get_si(r46915, MPFR_RNDN)) { mpfr_set(r46941, r46932, MPFR_RNDN); } else { mpfr_set(r46941, r46940, MPFR_RNDN); };
        return mpfr_get_d(r46941, MPFR_RNDN);
}

