#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 r11668 = wj;
        float r11669 = exp(r11668);
        float r11670 = r11668 * r11669;
        float r11671 = x;
        float r11672 = r11670 - r11671;
        float r11673 = r11669 + r11670;
        float r11674 = r11672 / r11673;
        float r11675 = r11668 - r11674;
        return r11675;
}

double f_id(double wj, double x) {
        double r11676 = wj;
        double r11677 = exp(r11676);
        double r11678 = r11676 * r11677;
        double r11679 = x;
        double r11680 = r11678 - r11679;
        double r11681 = r11677 + r11678;
        double r11682 = r11680 / r11681;
        double r11683 = r11676 - r11682;
        return r11683;
}


double f_of(float wj, float x) {
        float r11684 = 2.0f;
        float r11685 = -r11684;
        float r11686 = x;
        float r11687 = wj;
        float r11688 = r11686 * r11687;
        float r11689 = fma(r11687, r11687, r11686);
        float r11690 = fma(r11685, r11688, r11689);
        return r11690;
}

double f_od(double wj, double x) {
        double r11691 = 2.0;
        double r11692 = -r11691;
        double r11693 = x;
        double r11694 = wj;
        double r11695 = r11693 * r11694;
        double r11696 = fma(r11694, r11694, r11693);
        double r11697 = fma(r11692, r11695, r11696);
        return r11697;
}

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 r11698, r11699, r11700, r11701, r11702, r11703, r11704, r11705;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r11698);
        mpfr_init(r11699);
        mpfr_init(r11700);
        mpfr_init(r11701);
        mpfr_init(r11702);
        mpfr_init(r11703);
        mpfr_init(r11704);
        mpfr_init(r11705);
}

double f_im(double wj, double x) {
        mpfr_set_d(r11698, wj, MPFR_RNDN);
        mpfr_exp(r11699, r11698, MPFR_RNDN);
        mpfr_mul(r11700, r11698, r11699, MPFR_RNDN);
        mpfr_set_d(r11701, x, MPFR_RNDN);
        mpfr_sub(r11702, r11700, r11701, MPFR_RNDN);
        mpfr_add(r11703, r11699, r11700, MPFR_RNDN);
        mpfr_div(r11704, r11702, r11703, MPFR_RNDN);
        mpfr_sub(r11705, r11698, r11704, MPFR_RNDN);
        return mpfr_get_d(r11705, MPFR_RNDN);
}

static mpfr_t r11706, r11707, r11708, r11709, r11710, r11711, r11712;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r11706, "2", 10, MPFR_RNDN);
        mpfr_init(r11707);
        mpfr_init(r11708);
        mpfr_init(r11709);
        mpfr_init(r11710);
        mpfr_init(r11711);
        mpfr_init(r11712);
}

double f_fm(double wj, double x) {
        ;
        mpfr_neg(r11707, r11706, MPFR_RNDN);
        mpfr_set_d(r11708, x, MPFR_RNDN);
        mpfr_set_d(r11709, wj, MPFR_RNDN);
        mpfr_mul(r11710, r11708, r11709, MPFR_RNDN);
        mpfr_fma(r11711, r11709, r11709, r11708, MPFR_RNDN);
        mpfr_fma(r11712, r11707, r11710, r11711, MPFR_RNDN);
        return mpfr_get_d(r11712, MPFR_RNDN);
}

static mpfr_t r11713, r11714, r11715, r11716, r11717, r11718, r11719;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r11713, "2", 10, MPFR_RNDN);
        mpfr_init(r11714);
        mpfr_init(r11715);
        mpfr_init(r11716);
        mpfr_init(r11717);
        mpfr_init(r11718);
        mpfr_init(r11719);
}

double f_dm(double wj, double x) {
        ;
        mpfr_neg(r11714, r11713, MPFR_RNDN);
        mpfr_set_d(r11715, x, MPFR_RNDN);
        mpfr_set_d(r11716, wj, MPFR_RNDN);
        mpfr_mul(r11717, r11715, r11716, MPFR_RNDN);
        mpfr_fma(r11718, r11716, r11716, r11715, MPFR_RNDN);
        mpfr_fma(r11719, r11714, r11717, r11718, MPFR_RNDN);
        return mpfr_get_d(r11719, MPFR_RNDN);
}

