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

char *name = "Jmat.Real.lambertw, newton loop step";

double f_if(float wj, float x) {
        float r26078 = wj;
        float r26079 = exp(r26078);
        float r26080 = r26078 * r26079;
        float r26081 = x;
        float r26082 = r26080 - r26081;
        float r26083 = r26079 + r26080;
        float r26084 = r26082 / r26083;
        float r26085 = r26078 - r26084;
        return r26085;
}

double f_id(double wj, double x) {
        double r26086 = wj;
        double r26087 = exp(r26086);
        double r26088 = r26086 * r26087;
        double r26089 = x;
        double r26090 = r26088 - r26089;
        double r26091 = r26087 + r26088;
        double r26092 = r26090 / r26091;
        double r26093 = r26086 - r26092;
        return r26093;
}


double f_of(float wj, float x) {
        float r26094 = 1;
        float r26095 = wj;
        float r26096 = r26094 / r26095;
        float r26097 = -2;
        float r26098 = pow(r26096, r26097);
        float r26099 = cbrt(r26098);
        float r26100 = r26099 * r26099;
        float r26101 = exp(r26099);
        float r26102 = log(r26101);
        float r26103 = r26100 * r26102;
        float r26104 = x;
        float r26105 = r26103 + r26104;
        float r26106 = 2;
        float r26107 = r26095 * r26104;
        float r26108 = r26106 * r26107;
        float r26109 = r26105 - r26108;
        float r26110 = 4.478911691085116e-11;
        bool r26111 = r26109 <= r26110;
        float r26112 = pow(r26095, r26106);
        float r26113 = r26112 + r26104;
        float r26114 = r26113 - r26108;
        float r26115 = r26094 + r26095;
        float r26116 = r26095 / r26115;
        float r26117 = r26095 - r26116;
        float r26118 = exp(r26095);
        float r26119 = r26095 * r26118;
        float r26120 = r26118 + r26119;
        float r26121 = r26104 / r26120;
        float r26122 = r26117 + r26121;
        float r26123 = r26111 ? r26114 : r26122;
        return r26123;
}

double f_od(double wj, double x) {
        double r26124 = 1;
        double r26125 = wj;
        double r26126 = r26124 / r26125;
        double r26127 = -2;
        double r26128 = pow(r26126, r26127);
        double r26129 = cbrt(r26128);
        double r26130 = r26129 * r26129;
        double r26131 = exp(r26129);
        double r26132 = log(r26131);
        double r26133 = r26130 * r26132;
        double r26134 = x;
        double r26135 = r26133 + r26134;
        double r26136 = 2;
        double r26137 = r26125 * r26134;
        double r26138 = r26136 * r26137;
        double r26139 = r26135 - r26138;
        double r26140 = 4.478911691085116e-11;
        bool r26141 = r26139 <= r26140;
        double r26142 = pow(r26125, r26136);
        double r26143 = r26142 + r26134;
        double r26144 = r26143 - r26138;
        double r26145 = r26124 + r26125;
        double r26146 = r26125 / r26145;
        double r26147 = r26125 - r26146;
        double r26148 = exp(r26125);
        double r26149 = r26125 * r26148;
        double r26150 = r26148 + r26149;
        double r26151 = r26134 / r26150;
        double r26152 = r26147 + r26151;
        double r26153 = r26141 ? r26144 : r26152;
        return r26153;
}

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 r26154, r26155, r26156, r26157, r26158, r26159, r26160, r26161;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r26154);
        mpfr_init(r26155);
        mpfr_init(r26156);
        mpfr_init(r26157);
        mpfr_init(r26158);
        mpfr_init(r26159);
        mpfr_init(r26160);
        mpfr_init(r26161);
}

double f_im(double wj, double x) {
        mpfr_set_d(r26154, wj, MPFR_RNDN);
        mpfr_exp(r26155, r26154, MPFR_RNDN);
        mpfr_mul(r26156, r26154, r26155, MPFR_RNDN);
        mpfr_set_d(r26157, x, MPFR_RNDN);
        mpfr_sub(r26158, r26156, r26157, MPFR_RNDN);
        mpfr_add(r26159, r26155, r26156, MPFR_RNDN);
        mpfr_div(r26160, r26158, r26159, MPFR_RNDN);
        mpfr_sub(r26161, r26154, r26160, MPFR_RNDN);
        return mpfr_get_d(r26161, MPFR_RNDN);
}

static mpfr_t r26162, r26163, r26164, r26165, r26166, r26167, r26168, r26169, r26170, r26171, r26172, r26173, r26174, r26175, r26176, r26177, r26178, r26179, r26180, r26181, r26182, r26183, r26184, r26185, r26186, r26187, r26188, r26189, r26190, r26191;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r26162, "1", 10, MPFR_RNDN);
        mpfr_init(r26163);
        mpfr_init(r26164);
        mpfr_init_set_str(r26165, "-2", 10, MPFR_RNDN);
        mpfr_init(r26166);
        mpfr_init(r26167);
        mpfr_init(r26168);
        mpfr_init(r26169);
        mpfr_init(r26170);
        mpfr_init(r26171);
        mpfr_init(r26172);
        mpfr_init(r26173);
        mpfr_init_set_str(r26174, "2", 10, MPFR_RNDN);
        mpfr_init(r26175);
        mpfr_init(r26176);
        mpfr_init(r26177);
        mpfr_init_set_str(r26178, "4.478911691085116e-11", 10, MPFR_RNDN);
        mpfr_init(r26179);
        mpfr_init(r26180);
        mpfr_init(r26181);
        mpfr_init(r26182);
        mpfr_init(r26183);
        mpfr_init(r26184);
        mpfr_init(r26185);
        mpfr_init(r26186);
        mpfr_init(r26187);
        mpfr_init(r26188);
        mpfr_init(r26189);
        mpfr_init(r26190);
        mpfr_init(r26191);
}

double f_fm(double wj, double x) {
        ;
        mpfr_set_d(r26163, wj, MPFR_RNDN);
        mpfr_div(r26164, r26162, r26163, MPFR_RNDN);
        ;
        mpfr_pow(r26166, r26164, r26165, MPFR_RNDN);
        mpfr_cbrt(r26167, r26166, MPFR_RNDN);
        mpfr_mul(r26168, r26167, r26167, MPFR_RNDN);
        mpfr_exp(r26169, r26167, MPFR_RNDN);
        mpfr_log(r26170, r26169, MPFR_RNDN);
        mpfr_mul(r26171, r26168, r26170, MPFR_RNDN);
        mpfr_set_d(r26172, x, MPFR_RNDN);
        mpfr_add(r26173, r26171, r26172, MPFR_RNDN);
        ;
        mpfr_mul(r26175, r26163, r26172, MPFR_RNDN);
        mpfr_mul(r26176, r26174, r26175, MPFR_RNDN);
        mpfr_sub(r26177, r26173, r26176, MPFR_RNDN);
        ;
        mpfr_set_si(r26179, mpfr_cmp(r26177, r26178) <= 0, MPFR_RNDN);
        mpfr_pow(r26180, r26163, r26174, MPFR_RNDN);
        mpfr_add(r26181, r26180, r26172, MPFR_RNDN);
        mpfr_sub(r26182, r26181, r26176, MPFR_RNDN);
        mpfr_add(r26183, r26162, r26163, MPFR_RNDN);
        mpfr_div(r26184, r26163, r26183, MPFR_RNDN);
        mpfr_sub(r26185, r26163, r26184, MPFR_RNDN);
        mpfr_exp(r26186, r26163, MPFR_RNDN);
        mpfr_mul(r26187, r26163, r26186, MPFR_RNDN);
        mpfr_add(r26188, r26186, r26187, MPFR_RNDN);
        mpfr_div(r26189, r26172, r26188, MPFR_RNDN);
        mpfr_add(r26190, r26185, r26189, MPFR_RNDN);
        if (mpfr_get_si(r26179, MPFR_RNDN)) { mpfr_set(r26191, r26182, MPFR_RNDN); } else { mpfr_set(r26191, r26190, MPFR_RNDN); };
        return mpfr_get_d(r26191, MPFR_RNDN);
}

static mpfr_t r26192, r26193, r26194, r26195, r26196, r26197, r26198, r26199, r26200, r26201, r26202, r26203, r26204, r26205, r26206, r26207, r26208, r26209, r26210, r26211, r26212, r26213, r26214, r26215, r26216, r26217, r26218, r26219, r26220, r26221;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r26192, "1", 10, MPFR_RNDN);
        mpfr_init(r26193);
        mpfr_init(r26194);
        mpfr_init_set_str(r26195, "-2", 10, MPFR_RNDN);
        mpfr_init(r26196);
        mpfr_init(r26197);
        mpfr_init(r26198);
        mpfr_init(r26199);
        mpfr_init(r26200);
        mpfr_init(r26201);
        mpfr_init(r26202);
        mpfr_init(r26203);
        mpfr_init_set_str(r26204, "2", 10, MPFR_RNDN);
        mpfr_init(r26205);
        mpfr_init(r26206);
        mpfr_init(r26207);
        mpfr_init_set_str(r26208, "4.478911691085116e-11", 10, MPFR_RNDN);
        mpfr_init(r26209);
        mpfr_init(r26210);
        mpfr_init(r26211);
        mpfr_init(r26212);
        mpfr_init(r26213);
        mpfr_init(r26214);
        mpfr_init(r26215);
        mpfr_init(r26216);
        mpfr_init(r26217);
        mpfr_init(r26218);
        mpfr_init(r26219);
        mpfr_init(r26220);
        mpfr_init(r26221);
}

double f_dm(double wj, double x) {
        ;
        mpfr_set_d(r26193, wj, MPFR_RNDN);
        mpfr_div(r26194, r26192, r26193, MPFR_RNDN);
        ;
        mpfr_pow(r26196, r26194, r26195, MPFR_RNDN);
        mpfr_cbrt(r26197, r26196, MPFR_RNDN);
        mpfr_mul(r26198, r26197, r26197, MPFR_RNDN);
        mpfr_exp(r26199, r26197, MPFR_RNDN);
        mpfr_log(r26200, r26199, MPFR_RNDN);
        mpfr_mul(r26201, r26198, r26200, MPFR_RNDN);
        mpfr_set_d(r26202, x, MPFR_RNDN);
        mpfr_add(r26203, r26201, r26202, MPFR_RNDN);
        ;
        mpfr_mul(r26205, r26193, r26202, MPFR_RNDN);
        mpfr_mul(r26206, r26204, r26205, MPFR_RNDN);
        mpfr_sub(r26207, r26203, r26206, MPFR_RNDN);
        ;
        mpfr_set_si(r26209, mpfr_cmp(r26207, r26208) <= 0, MPFR_RNDN);
        mpfr_pow(r26210, r26193, r26204, MPFR_RNDN);
        mpfr_add(r26211, r26210, r26202, MPFR_RNDN);
        mpfr_sub(r26212, r26211, r26206, MPFR_RNDN);
        mpfr_add(r26213, r26192, r26193, MPFR_RNDN);
        mpfr_div(r26214, r26193, r26213, MPFR_RNDN);
        mpfr_sub(r26215, r26193, r26214, MPFR_RNDN);
        mpfr_exp(r26216, r26193, MPFR_RNDN);
        mpfr_mul(r26217, r26193, r26216, MPFR_RNDN);
        mpfr_add(r26218, r26216, r26217, MPFR_RNDN);
        mpfr_div(r26219, r26202, r26218, MPFR_RNDN);
        mpfr_add(r26220, r26215, r26219, MPFR_RNDN);
        if (mpfr_get_si(r26209, MPFR_RNDN)) { mpfr_set(r26221, r26212, MPFR_RNDN); } else { mpfr_set(r26221, r26220, MPFR_RNDN); };
        return mpfr_get_d(r26221, MPFR_RNDN);
}

