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

char *name = "verhulst";

double f_if(float x) {
        float r18382 = 4.0f;
        float r18383 = x;
        float r18384 = r18382 * r18383;
        float r18385 = 1.0f;
        float r18386 = 1.11f;
        float r18387 = r18383 / r18386;
        float r18388 = r18385 + r18387;
        float r18389 = r18384 / r18388;
        return r18389;
}

double f_id(double x) {
        double r18390 = 4.0;
        double r18391 = x;
        double r18392 = r18390 * r18391;
        double r18393 = 1.0;
        double r18394 = 1.11;
        double r18395 = r18391 / r18394;
        double r18396 = r18393 + r18395;
        double r18397 = r18392 / r18396;
        return r18397;
}


double f_of(float x) {
        float r18398 = 4.0f;
        float r18399 = x;
        float r18400 = r18398 * r18399;
        float r18401 = 1.0f;
        float r18402 = 1.11f;
        float r18403 = r18399 / r18402;
        float r18404 = r18401 + r18403;
        float r18405 = r18401 / r18404;
        float r18406 = r18400 * r18405;
        return r18406;
}

double f_od(double x) {
        double r18407 = 4.0;
        double r18408 = x;
        double r18409 = r18407 * r18408;
        double r18410 = 1.0;
        double r18411 = 1.11;
        double r18412 = r18408 / r18411;
        double r18413 = r18410 + r18412;
        double r18414 = r18410 / r18413;
        double r18415 = r18409 * r18414;
        return r18415;
}

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 r18416, r18417, r18418, r18419, r18420, r18421, r18422, r18423;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18416, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18417);
        mpfr_init(r18418);
        mpfr_init_set_str(r18419, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18420, "1.11", 10, MPFR_RNDN);
        mpfr_init(r18421);
        mpfr_init(r18422);
        mpfr_init(r18423);
}

double f_im(double x) {
        ;
        mpfr_set_d(r18417, x, MPFR_RNDN);
        mpfr_mul(r18418, r18416, r18417, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18421, r18417, r18420, MPFR_RNDN);
        mpfr_add(r18422, r18419, r18421, MPFR_RNDN);
        mpfr_div(r18423, r18418, r18422, MPFR_RNDN);
        return mpfr_get_d(r18423, MPFR_RNDN);
}

static mpfr_t r18424, r18425, r18426, r18427, r18428, r18429, r18430, r18431, r18432;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18424, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18425);
        mpfr_init(r18426);
        mpfr_init_set_str(r18427, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18428, "1.11", 10, MPFR_RNDN);
        mpfr_init(r18429);
        mpfr_init(r18430);
        mpfr_init(r18431);
        mpfr_init(r18432);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18425, x, MPFR_RNDN);
        mpfr_mul(r18426, r18424, r18425, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18429, r18425, r18428, MPFR_RNDN);
        mpfr_add(r18430, r18427, r18429, MPFR_RNDN);
        mpfr_div(r18431, r18427, r18430, MPFR_RNDN);
        mpfr_mul(r18432, r18426, r18431, MPFR_RNDN);
        return mpfr_get_d(r18432, MPFR_RNDN);
}

static mpfr_t r18433, r18434, r18435, r18436, r18437, r18438, r18439, r18440, r18441;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18433, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18434);
        mpfr_init(r18435);
        mpfr_init_set_str(r18436, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18437, "1.11", 10, MPFR_RNDN);
        mpfr_init(r18438);
        mpfr_init(r18439);
        mpfr_init(r18440);
        mpfr_init(r18441);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18434, x, MPFR_RNDN);
        mpfr_mul(r18435, r18433, r18434, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18438, r18434, r18437, MPFR_RNDN);
        mpfr_add(r18439, r18436, r18438, MPFR_RNDN);
        mpfr_div(r18440, r18436, r18439, MPFR_RNDN);
        mpfr_mul(r18441, r18435, r18440, MPFR_RNDN);
        return mpfr_get_d(r18441, MPFR_RNDN);
}

