#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 r43911 = x;
        float r43912 = y;
        float r43913 = sin(r43912);
        float r43914 = r43913 / r43912;
        float r43915 = r43911 * r43914;
        float r43916 = z;
        float r43917 = r43915 / r43916;
        return r43917;
}

double f_id(double x, double y, double z) {
        double r43918 = x;
        double r43919 = y;
        double r43920 = sin(r43919);
        double r43921 = r43920 / r43919;
        double r43922 = r43918 * r43921;
        double r43923 = z;
        double r43924 = r43922 / r43923;
        return r43924;
}


double f_of(float x, float y, float z) {
        float r43925 = z;
        float r43926 = -1.82015982480053e+26f;
        bool r43927 = r43925 <= r43926;
        float r43928 = x;
        float r43929 = r43928 / r43925;
        float r43930 = 1.0f;
        float r43931 = y;
        float r43932 = sin(r43931);
        float r43933 = r43932 / r43931;
        float r43934 = r43930 / r43933;
        float r43935 = r43929 / r43934;
        float r43936 = r43925 / r43933;
        float r43937 = r43928 / r43936;
        float r43938 = r43927 ? r43935 : r43937;
        return r43938;
}

double f_od(double x, double y, double z) {
        double r43939 = z;
        double r43940 = -1.82015982480053e+26;
        bool r43941 = r43939 <= r43940;
        double r43942 = x;
        double r43943 = r43942 / r43939;
        double r43944 = 1.0;
        double r43945 = y;
        double r43946 = sin(r43945);
        double r43947 = r43946 / r43945;
        double r43948 = r43944 / r43947;
        double r43949 = r43943 / r43948;
        double r43950 = r43939 / r43947;
        double r43951 = r43942 / r43950;
        double r43952 = r43941 ? r43949 : r43951;
        return r43952;
}

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 r43953, r43954, r43955, r43956, r43957, r43958, r43959;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r43953);
        mpfr_init(r43954);
        mpfr_init(r43955);
        mpfr_init(r43956);
        mpfr_init(r43957);
        mpfr_init(r43958);
        mpfr_init(r43959);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r43953, x, MPFR_RNDN);
        mpfr_set_d(r43954, y, MPFR_RNDN);
        mpfr_sin(r43955, r43954, MPFR_RNDN);
        mpfr_div(r43956, r43955, r43954, MPFR_RNDN);
        mpfr_mul(r43957, r43953, r43956, MPFR_RNDN);
        mpfr_set_d(r43958, z, MPFR_RNDN);
        mpfr_div(r43959, r43957, r43958, MPFR_RNDN);
        return mpfr_get_d(r43959, MPFR_RNDN);
}

static mpfr_t r43960, r43961, r43962, r43963, r43964, r43965, r43966, r43967, r43968, r43969, r43970, r43971, r43972, r43973;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43960);
        mpfr_init_set_str(r43961, "-1.82015982480053e+26", 10, MPFR_RNDN);
        mpfr_init(r43962);
        mpfr_init(r43963);
        mpfr_init(r43964);
        mpfr_init_set_str(r43965, "1", 10, MPFR_RNDN);
        mpfr_init(r43966);
        mpfr_init(r43967);
        mpfr_init(r43968);
        mpfr_init(r43969);
        mpfr_init(r43970);
        mpfr_init(r43971);
        mpfr_init(r43972);
        mpfr_init(r43973);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r43960, z, MPFR_RNDN);
        ;
        mpfr_set_si(r43962, mpfr_cmp(r43960, r43961) <= 0, MPFR_RNDN);
        mpfr_set_d(r43963, x, MPFR_RNDN);
        mpfr_div(r43964, r43963, r43960, MPFR_RNDN);
        ;
        mpfr_set_d(r43966, y, MPFR_RNDN);
        mpfr_sin(r43967, r43966, MPFR_RNDN);
        mpfr_div(r43968, r43967, r43966, MPFR_RNDN);
        mpfr_div(r43969, r43965, r43968, MPFR_RNDN);
        mpfr_div(r43970, r43964, r43969, MPFR_RNDN);
        mpfr_div(r43971, r43960, r43968, MPFR_RNDN);
        mpfr_div(r43972, r43963, r43971, MPFR_RNDN);
        if (mpfr_get_si(r43962, MPFR_RNDN)) { mpfr_set(r43973, r43970, MPFR_RNDN); } else { mpfr_set(r43973, r43972, MPFR_RNDN); };
        return mpfr_get_d(r43973, MPFR_RNDN);
}

static mpfr_t r43974, r43975, r43976, r43977, r43978, r43979, r43980, r43981, r43982, r43983, r43984, r43985, r43986, r43987;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43974);
        mpfr_init_set_str(r43975, "-1.82015982480053e+26", 10, MPFR_RNDN);
        mpfr_init(r43976);
        mpfr_init(r43977);
        mpfr_init(r43978);
        mpfr_init_set_str(r43979, "1", 10, MPFR_RNDN);
        mpfr_init(r43980);
        mpfr_init(r43981);
        mpfr_init(r43982);
        mpfr_init(r43983);
        mpfr_init(r43984);
        mpfr_init(r43985);
        mpfr_init(r43986);
        mpfr_init(r43987);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r43974, z, MPFR_RNDN);
        ;
        mpfr_set_si(r43976, mpfr_cmp(r43974, r43975) <= 0, MPFR_RNDN);
        mpfr_set_d(r43977, x, MPFR_RNDN);
        mpfr_div(r43978, r43977, r43974, MPFR_RNDN);
        ;
        mpfr_set_d(r43980, y, MPFR_RNDN);
        mpfr_sin(r43981, r43980, MPFR_RNDN);
        mpfr_div(r43982, r43981, r43980, MPFR_RNDN);
        mpfr_div(r43983, r43979, r43982, MPFR_RNDN);
        mpfr_div(r43984, r43978, r43983, MPFR_RNDN);
        mpfr_div(r43985, r43974, r43982, MPFR_RNDN);
        mpfr_div(r43986, r43977, r43985, MPFR_RNDN);
        if (mpfr_get_si(r43976, MPFR_RNDN)) { mpfr_set(r43987, r43984, MPFR_RNDN); } else { mpfr_set(r43987, r43986, MPFR_RNDN); };
        return mpfr_get_d(r43987, MPFR_RNDN);
}

