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

char *name = "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t, float a) {
        float r40052 = x;
        float r40053 = y;
        float r40054 = r40052 * r40053;
        float r40055 = z;
        float r40056 = r40054 * r40055;
        float r40057 = r40055 * r40055;
        float r40058 = t;
        float r40059 = a;
        float r40060 = r40058 * r40059;
        float r40061 = r40057 - r40060;
        float r40062 = sqrt(r40061);
        float r40063 = r40056 / r40062;
        return r40063;
}

double f_id(double x, double y, double z, double t, double a) {
        double r40064 = x;
        double r40065 = y;
        double r40066 = r40064 * r40065;
        double r40067 = z;
        double r40068 = r40066 * r40067;
        double r40069 = r40067 * r40067;
        double r40070 = t;
        double r40071 = a;
        double r40072 = r40070 * r40071;
        double r40073 = r40069 - r40072;
        double r40074 = sqrt(r40073);
        double r40075 = r40068 / r40074;
        return r40075;
}


double f_of(float x, float y, float z, float t, float a) {
        float r40076 = z;
        float r40077 = -1.2709557362568119e+112;
        bool r40078 = r40076 <= r40077;
        float r40079 = x;
        float r40080 = y;
        float r40081 = -r40080;
        float r40082 = r40079 * r40081;
        float r40083 = 3.0149748654828578e+60;
        bool r40084 = r40076 <= r40083;
        float r40085 = r40080 * r40079;
        float r40086 = r40076 * r40076;
        float r40087 = a;
        float r40088 = t;
        float r40089 = r40087 * r40088;
        float r40090 = r40086 - r40089;
        float r40091 = cbrt(r40090);
        float r40092 = fabs(r40091);
        float r40093 = r40085 / r40092;
        float r40094 = r40088 * r40087;
        float r40095 = r40086 - r40094;
        float r40096 = cbrt(r40095);
        float r40097 = sqrt(r40096);
        float r40098 = r40076 / r40097;
        float r40099 = r40093 * r40098;
        float r40100 = r40084 ? r40099 : r40085;
        float r40101 = r40078 ? r40082 : r40100;
        return r40101;
}

double f_od(double x, double y, double z, double t, double a) {
        double r40102 = z;
        double r40103 = -1.2709557362568119e+112;
        bool r40104 = r40102 <= r40103;
        double r40105 = x;
        double r40106 = y;
        double r40107 = -r40106;
        double r40108 = r40105 * r40107;
        double r40109 = 3.0149748654828578e+60;
        bool r40110 = r40102 <= r40109;
        double r40111 = r40106 * r40105;
        double r40112 = r40102 * r40102;
        double r40113 = a;
        double r40114 = t;
        double r40115 = r40113 * r40114;
        double r40116 = r40112 - r40115;
        double r40117 = cbrt(r40116);
        double r40118 = fabs(r40117);
        double r40119 = r40111 / r40118;
        double r40120 = r40114 * r40113;
        double r40121 = r40112 - r40120;
        double r40122 = cbrt(r40121);
        double r40123 = sqrt(r40122);
        double r40124 = r40102 / r40123;
        double r40125 = r40119 * r40124;
        double r40126 = r40110 ? r40125 : r40111;
        double r40127 = r40104 ? r40108 : r40126;
        return r40127;
}

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 r40128, r40129, r40130, r40131, r40132, r40133, r40134, r40135, r40136, r40137, r40138, r40139;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r40128);
        mpfr_init(r40129);
        mpfr_init(r40130);
        mpfr_init(r40131);
        mpfr_init(r40132);
        mpfr_init(r40133);
        mpfr_init(r40134);
        mpfr_init(r40135);
        mpfr_init(r40136);
        mpfr_init(r40137);
        mpfr_init(r40138);
        mpfr_init(r40139);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r40128, x, MPFR_RNDN);
        mpfr_set_d(r40129, y, MPFR_RNDN);
        mpfr_mul(r40130, r40128, r40129, MPFR_RNDN);
        mpfr_set_d(r40131, z, MPFR_RNDN);
        mpfr_mul(r40132, r40130, r40131, MPFR_RNDN);
        mpfr_mul(r40133, r40131, r40131, MPFR_RNDN);
        mpfr_set_d(r40134, t, MPFR_RNDN);
        mpfr_set_d(r40135, a, MPFR_RNDN);
        mpfr_mul(r40136, r40134, r40135, MPFR_RNDN);
        mpfr_sub(r40137, r40133, r40136, MPFR_RNDN);
        mpfr_sqrt(r40138, r40137, MPFR_RNDN);
        mpfr_div(r40139, r40132, r40138, MPFR_RNDN);
        return mpfr_get_d(r40139, MPFR_RNDN);
}

static mpfr_t r40140, r40141, r40142, r40143, r40144, r40145, r40146, r40147, r40148, r40149, r40150, r40151, r40152, r40153, r40154, r40155, r40156, r40157, r40158, r40159, r40160, r40161, r40162, r40163, r40164, r40165;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40140);
        mpfr_init_set_str(r40141, "-1.2709557362568119e+112", 10, MPFR_RNDN);
        mpfr_init(r40142);
        mpfr_init(r40143);
        mpfr_init(r40144);
        mpfr_init(r40145);
        mpfr_init(r40146);
        mpfr_init_set_str(r40147, "3.0149748654828578e+60", 10, MPFR_RNDN);
        mpfr_init(r40148);
        mpfr_init(r40149);
        mpfr_init(r40150);
        mpfr_init(r40151);
        mpfr_init(r40152);
        mpfr_init(r40153);
        mpfr_init(r40154);
        mpfr_init(r40155);
        mpfr_init(r40156);
        mpfr_init(r40157);
        mpfr_init(r40158);
        mpfr_init(r40159);
        mpfr_init(r40160);
        mpfr_init(r40161);
        mpfr_init(r40162);
        mpfr_init(r40163);
        mpfr_init(r40164);
        mpfr_init(r40165);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r40140, z, MPFR_RNDN);
        ;
        mpfr_set_si(r40142, mpfr_cmp(r40140, r40141) <= 0, MPFR_RNDN);
        mpfr_set_d(r40143, x, MPFR_RNDN);
        mpfr_set_d(r40144, y, MPFR_RNDN);
        mpfr_neg(r40145, r40144, MPFR_RNDN);
        mpfr_mul(r40146, r40143, r40145, MPFR_RNDN);
        ;
        mpfr_set_si(r40148, mpfr_cmp(r40140, r40147) <= 0, MPFR_RNDN);
        mpfr_mul(r40149, r40144, r40143, MPFR_RNDN);
        mpfr_mul(r40150, r40140, r40140, MPFR_RNDN);
        mpfr_set_d(r40151, a, MPFR_RNDN);
        mpfr_set_d(r40152, t, MPFR_RNDN);
        mpfr_mul(r40153, r40151, r40152, MPFR_RNDN);
        mpfr_sub(r40154, r40150, r40153, MPFR_RNDN);
        mpfr_cbrt(r40155, r40154, MPFR_RNDN);
        mpfr_abs(r40156, r40155, MPFR_RNDN);
        mpfr_div(r40157, r40149, r40156, MPFR_RNDN);
        mpfr_mul(r40158, r40152, r40151, MPFR_RNDN);
        mpfr_sub(r40159, r40150, r40158, MPFR_RNDN);
        mpfr_cbrt(r40160, r40159, MPFR_RNDN);
        mpfr_sqrt(r40161, r40160, MPFR_RNDN);
        mpfr_div(r40162, r40140, r40161, MPFR_RNDN);
        mpfr_mul(r40163, r40157, r40162, MPFR_RNDN);
        if (mpfr_get_si(r40148, MPFR_RNDN)) { mpfr_set(r40164, r40163, MPFR_RNDN); } else { mpfr_set(r40164, r40149, MPFR_RNDN); };
        if (mpfr_get_si(r40142, MPFR_RNDN)) { mpfr_set(r40165, r40146, MPFR_RNDN); } else { mpfr_set(r40165, r40164, MPFR_RNDN); };
        return mpfr_get_d(r40165, MPFR_RNDN);
}

static mpfr_t r40166, r40167, r40168, r40169, r40170, r40171, r40172, r40173, r40174, r40175, r40176, r40177, r40178, r40179, r40180, r40181, r40182, r40183, r40184, r40185, r40186, r40187, r40188, r40189, r40190, r40191;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40166);
        mpfr_init_set_str(r40167, "-1.2709557362568119e+112", 10, MPFR_RNDN);
        mpfr_init(r40168);
        mpfr_init(r40169);
        mpfr_init(r40170);
        mpfr_init(r40171);
        mpfr_init(r40172);
        mpfr_init_set_str(r40173, "3.0149748654828578e+60", 10, MPFR_RNDN);
        mpfr_init(r40174);
        mpfr_init(r40175);
        mpfr_init(r40176);
        mpfr_init(r40177);
        mpfr_init(r40178);
        mpfr_init(r40179);
        mpfr_init(r40180);
        mpfr_init(r40181);
        mpfr_init(r40182);
        mpfr_init(r40183);
        mpfr_init(r40184);
        mpfr_init(r40185);
        mpfr_init(r40186);
        mpfr_init(r40187);
        mpfr_init(r40188);
        mpfr_init(r40189);
        mpfr_init(r40190);
        mpfr_init(r40191);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r40166, z, MPFR_RNDN);
        ;
        mpfr_set_si(r40168, mpfr_cmp(r40166, r40167) <= 0, MPFR_RNDN);
        mpfr_set_d(r40169, x, MPFR_RNDN);
        mpfr_set_d(r40170, y, MPFR_RNDN);
        mpfr_neg(r40171, r40170, MPFR_RNDN);
        mpfr_mul(r40172, r40169, r40171, MPFR_RNDN);
        ;
        mpfr_set_si(r40174, mpfr_cmp(r40166, r40173) <= 0, MPFR_RNDN);
        mpfr_mul(r40175, r40170, r40169, MPFR_RNDN);
        mpfr_mul(r40176, r40166, r40166, MPFR_RNDN);
        mpfr_set_d(r40177, a, MPFR_RNDN);
        mpfr_set_d(r40178, t, MPFR_RNDN);
        mpfr_mul(r40179, r40177, r40178, MPFR_RNDN);
        mpfr_sub(r40180, r40176, r40179, MPFR_RNDN);
        mpfr_cbrt(r40181, r40180, MPFR_RNDN);
        mpfr_abs(r40182, r40181, MPFR_RNDN);
        mpfr_div(r40183, r40175, r40182, MPFR_RNDN);
        mpfr_mul(r40184, r40178, r40177, MPFR_RNDN);
        mpfr_sub(r40185, r40176, r40184, MPFR_RNDN);
        mpfr_cbrt(r40186, r40185, MPFR_RNDN);
        mpfr_sqrt(r40187, r40186, MPFR_RNDN);
        mpfr_div(r40188, r40166, r40187, MPFR_RNDN);
        mpfr_mul(r40189, r40183, r40188, MPFR_RNDN);
        if (mpfr_get_si(r40174, MPFR_RNDN)) { mpfr_set(r40190, r40189, MPFR_RNDN); } else { mpfr_set(r40190, r40175, MPFR_RNDN); };
        if (mpfr_get_si(r40168, MPFR_RNDN)) { mpfr_set(r40191, r40172, MPFR_RNDN); } else { mpfr_set(r40191, r40190, MPFR_RNDN); };
        return mpfr_get_d(r40191, MPFR_RNDN);
}

