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

char *name = "Statistics.Distribution.Beta:$cdensity from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t) {
        float r40810 = x;
        float r40811 = 1.0;
        float r40812 = r40810 - r40811;
        float r40813 = y;
        float r40814 = log(r40813);
        float r40815 = r40812 * r40814;
        float r40816 = z;
        float r40817 = r40816 - r40811;
        float r40818 = r40811 - r40813;
        float r40819 = log(r40818);
        float r40820 = r40817 * r40819;
        float r40821 = r40815 + r40820;
        float r40822 = t;
        float r40823 = r40821 - r40822;
        return r40823;
}

double f_id(double x, double y, double z, double t) {
        double r40824 = x;
        double r40825 = 1.0;
        double r40826 = r40824 - r40825;
        double r40827 = y;
        double r40828 = log(r40827);
        double r40829 = r40826 * r40828;
        double r40830 = z;
        double r40831 = r40830 - r40825;
        double r40832 = r40825 - r40827;
        double r40833 = log(r40832);
        double r40834 = r40831 * r40833;
        double r40835 = r40829 + r40834;
        double r40836 = t;
        double r40837 = r40835 - r40836;
        return r40837;
}


double f_of(float x, float y, float z, float t) {
        float r40838 = x;
        float r40839 = 1.0;
        float r40840 = r40838 - r40839;
        float r40841 = y;
        float r40842 = log(r40841);
        float r40843 = r40840 * r40842;
        float r40844 = z;
        float r40845 = r40844 - r40839;
        float r40846 = cbrt(r40845);
        float r40847 = r40846 * r40846;
        float r40848 = log(r40839);
        float r40849 = 1/2;
        float r40850 = 2;
        float r40851 = pow(r40841, r40850);
        float r40852 = pow(r40839, r40850);
        float r40853 = r40851 / r40852;
        float r40854 = r40849 * r40853;
        float r40855 = r40839 * r40841;
        float r40856 = r40854 + r40855;
        float r40857 = r40848 - r40856;
        float r40858 = r40846 * r40857;
        float r40859 = r40847 * r40858;
        float r40860 = r40843 + r40859;
        float r40861 = t;
        float r40862 = r40860 - r40861;
        return r40862;
}

double f_od(double x, double y, double z, double t) {
        double r40863 = x;
        double r40864 = 1.0;
        double r40865 = r40863 - r40864;
        double r40866 = y;
        double r40867 = log(r40866);
        double r40868 = r40865 * r40867;
        double r40869 = z;
        double r40870 = r40869 - r40864;
        double r40871 = cbrt(r40870);
        double r40872 = r40871 * r40871;
        double r40873 = log(r40864);
        double r40874 = 1/2;
        double r40875 = 2;
        double r40876 = pow(r40866, r40875);
        double r40877 = pow(r40864, r40875);
        double r40878 = r40876 / r40877;
        double r40879 = r40874 * r40878;
        double r40880 = r40864 * r40866;
        double r40881 = r40879 + r40880;
        double r40882 = r40873 - r40881;
        double r40883 = r40871 * r40882;
        double r40884 = r40872 * r40883;
        double r40885 = r40868 + r40884;
        double r40886 = t;
        double r40887 = r40885 - r40886;
        return r40887;
}

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 r40888, r40889, r40890, r40891, r40892, r40893, r40894, r40895, r40896, r40897, r40898, r40899, r40900, r40901;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init(r40888);
        mpfr_init_set_str(r40889, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40890);
        mpfr_init(r40891);
        mpfr_init(r40892);
        mpfr_init(r40893);
        mpfr_init(r40894);
        mpfr_init(r40895);
        mpfr_init(r40896);
        mpfr_init(r40897);
        mpfr_init(r40898);
        mpfr_init(r40899);
        mpfr_init(r40900);
        mpfr_init(r40901);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r40888, x, MPFR_RNDN);
        ;
        mpfr_sub(r40890, r40888, r40889, MPFR_RNDN);
        mpfr_set_d(r40891, y, MPFR_RNDN);
        mpfr_log(r40892, r40891, MPFR_RNDN);
        mpfr_mul(r40893, r40890, r40892, MPFR_RNDN);
        mpfr_set_d(r40894, z, MPFR_RNDN);
        mpfr_sub(r40895, r40894, r40889, MPFR_RNDN);
        mpfr_sub(r40896, r40889, r40891, MPFR_RNDN);
        mpfr_log(r40897, r40896, MPFR_RNDN);
        mpfr_mul(r40898, r40895, r40897, MPFR_RNDN);
        mpfr_add(r40899, r40893, r40898, MPFR_RNDN);
        mpfr_set_d(r40900, t, MPFR_RNDN);
        mpfr_sub(r40901, r40899, r40900, MPFR_RNDN);
        return mpfr_get_d(r40901, MPFR_RNDN);
}

static mpfr_t r40902, r40903, r40904, r40905, r40906, r40907, r40908, r40909, r40910, r40911, r40912, r40913, r40914, r40915, r40916, r40917, r40918, r40919, r40920, r40921, r40922, r40923, r40924, r40925, r40926;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r40902);
        mpfr_init_set_str(r40903, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40904);
        mpfr_init(r40905);
        mpfr_init(r40906);
        mpfr_init(r40907);
        mpfr_init(r40908);
        mpfr_init(r40909);
        mpfr_init(r40910);
        mpfr_init(r40911);
        mpfr_init(r40912);
        mpfr_init_set_str(r40913, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r40914, "2", 10, MPFR_RNDN);
        mpfr_init(r40915);
        mpfr_init(r40916);
        mpfr_init(r40917);
        mpfr_init(r40918);
        mpfr_init(r40919);
        mpfr_init(r40920);
        mpfr_init(r40921);
        mpfr_init(r40922);
        mpfr_init(r40923);
        mpfr_init(r40924);
        mpfr_init(r40925);
        mpfr_init(r40926);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r40902, x, MPFR_RNDN);
        ;
        mpfr_sub(r40904, r40902, r40903, MPFR_RNDN);
        mpfr_set_d(r40905, y, MPFR_RNDN);
        mpfr_log(r40906, r40905, MPFR_RNDN);
        mpfr_mul(r40907, r40904, r40906, MPFR_RNDN);
        mpfr_set_d(r40908, z, MPFR_RNDN);
        mpfr_sub(r40909, r40908, r40903, MPFR_RNDN);
        mpfr_cbrt(r40910, r40909, MPFR_RNDN);
        mpfr_mul(r40911, r40910, r40910, MPFR_RNDN);
        mpfr_log(r40912, r40903, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r40915, r40905, r40914, MPFR_RNDN);
        mpfr_pow(r40916, r40903, r40914, MPFR_RNDN);
        mpfr_div(r40917, r40915, r40916, MPFR_RNDN);
        mpfr_mul(r40918, r40913, r40917, MPFR_RNDN);
        mpfr_mul(r40919, r40903, r40905, MPFR_RNDN);
        mpfr_add(r40920, r40918, r40919, MPFR_RNDN);
        mpfr_sub(r40921, r40912, r40920, MPFR_RNDN);
        mpfr_mul(r40922, r40910, r40921, MPFR_RNDN);
        mpfr_mul(r40923, r40911, r40922, MPFR_RNDN);
        mpfr_add(r40924, r40907, r40923, MPFR_RNDN);
        mpfr_set_d(r40925, t, MPFR_RNDN);
        mpfr_sub(r40926, r40924, r40925, MPFR_RNDN);
        return mpfr_get_d(r40926, MPFR_RNDN);
}

static mpfr_t r40927, r40928, r40929, r40930, r40931, r40932, r40933, r40934, r40935, r40936, r40937, r40938, r40939, r40940, r40941, r40942, r40943, r40944, r40945, r40946, r40947, r40948, r40949, r40950, r40951;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r40927);
        mpfr_init_set_str(r40928, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40929);
        mpfr_init(r40930);
        mpfr_init(r40931);
        mpfr_init(r40932);
        mpfr_init(r40933);
        mpfr_init(r40934);
        mpfr_init(r40935);
        mpfr_init(r40936);
        mpfr_init(r40937);
        mpfr_init_set_str(r40938, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r40939, "2", 10, MPFR_RNDN);
        mpfr_init(r40940);
        mpfr_init(r40941);
        mpfr_init(r40942);
        mpfr_init(r40943);
        mpfr_init(r40944);
        mpfr_init(r40945);
        mpfr_init(r40946);
        mpfr_init(r40947);
        mpfr_init(r40948);
        mpfr_init(r40949);
        mpfr_init(r40950);
        mpfr_init(r40951);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r40927, x, MPFR_RNDN);
        ;
        mpfr_sub(r40929, r40927, r40928, MPFR_RNDN);
        mpfr_set_d(r40930, y, MPFR_RNDN);
        mpfr_log(r40931, r40930, MPFR_RNDN);
        mpfr_mul(r40932, r40929, r40931, MPFR_RNDN);
        mpfr_set_d(r40933, z, MPFR_RNDN);
        mpfr_sub(r40934, r40933, r40928, MPFR_RNDN);
        mpfr_cbrt(r40935, r40934, MPFR_RNDN);
        mpfr_mul(r40936, r40935, r40935, MPFR_RNDN);
        mpfr_log(r40937, r40928, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r40940, r40930, r40939, MPFR_RNDN);
        mpfr_pow(r40941, r40928, r40939, MPFR_RNDN);
        mpfr_div(r40942, r40940, r40941, MPFR_RNDN);
        mpfr_mul(r40943, r40938, r40942, MPFR_RNDN);
        mpfr_mul(r40944, r40928, r40930, MPFR_RNDN);
        mpfr_add(r40945, r40943, r40944, MPFR_RNDN);
        mpfr_sub(r40946, r40937, r40945, MPFR_RNDN);
        mpfr_mul(r40947, r40935, r40946, MPFR_RNDN);
        mpfr_mul(r40948, r40936, r40947, MPFR_RNDN);
        mpfr_add(r40949, r40932, r40948, MPFR_RNDN);
        mpfr_set_d(r40950, t, MPFR_RNDN);
        mpfr_sub(r40951, r40949, r40950, MPFR_RNDN);
        return mpfr_get_d(r40951, MPFR_RNDN);
}

