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

char *name = "Octave 3.8, oct_fill_randg";

double f_if(float a, float rand) {
        float r26373 = a;
        float r26374 = 1.0;
        float r26375 = 3.0;
        float r26376 = r26374 / r26375;
        float r26377 = r26373 - r26376;
        float r26378 = 1;
        float r26379 = 9;
        float r26380 = r26379 * r26377;
        float r26381 = sqrt(r26380);
        float r26382 = r26378 / r26381;
        float r26383 = rand;
        float r26384 = r26382 * r26383;
        float r26385 = r26378 + r26384;
        float r26386 = r26377 * r26385;
        return r26386;
}

double f_id(double a, double rand) {
        double r26387 = a;
        double r26388 = 1.0;
        double r26389 = 3.0;
        double r26390 = r26388 / r26389;
        double r26391 = r26387 - r26390;
        double r26392 = 1;
        double r26393 = 9;
        double r26394 = r26393 * r26391;
        double r26395 = sqrt(r26394);
        double r26396 = r26392 / r26395;
        double r26397 = rand;
        double r26398 = r26396 * r26397;
        double r26399 = r26392 + r26398;
        double r26400 = r26391 * r26399;
        return r26400;
}


double f_of(float a, float rand) {
        float r26401 = a;
        float r26402 = 1.0;
        float r26403 = 3.0;
        float r26404 = r26402 / r26403;
        float r26405 = r26401 - r26404;
        float r26406 = 1;
        float r26407 = 9;
        float r26408 = r26407 * r26405;
        float r26409 = sqrt(r26408);
        float r26410 = r26406 / r26409;
        float r26411 = rand;
        float r26412 = r26410 * r26411;
        float r26413 = r26406 + r26412;
        float r26414 = r26405 * r26413;
        return r26414;
}

double f_od(double a, double rand) {
        double r26415 = a;
        double r26416 = 1.0;
        double r26417 = 3.0;
        double r26418 = r26416 / r26417;
        double r26419 = r26415 - r26418;
        double r26420 = 1;
        double r26421 = 9;
        double r26422 = r26421 * r26419;
        double r26423 = sqrt(r26422);
        double r26424 = r26420 / r26423;
        double r26425 = rand;
        double r26426 = r26424 * r26425;
        double r26427 = r26420 + r26426;
        double r26428 = r26419 * r26427;
        return r26428;
}

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 r26429, r26430, r26431, r26432, r26433, r26434, r26435, r26436, r26437, r26438, r26439, r26440, r26441, r26442;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r26429);
        mpfr_init_set_str(r26430, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26431, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26432);
        mpfr_init(r26433);
        mpfr_init_set_str(r26434, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26435, "9", 10, MPFR_RNDN);
        mpfr_init(r26436);
        mpfr_init(r26437);
        mpfr_init(r26438);
        mpfr_init(r26439);
        mpfr_init(r26440);
        mpfr_init(r26441);
        mpfr_init(r26442);
}

double f_im(double a, double rand) {
        mpfr_set_d(r26429, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26432, r26430, r26431, MPFR_RNDN);
        mpfr_sub(r26433, r26429, r26432, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26436, r26435, r26433, MPFR_RNDN);
        mpfr_sqrt(r26437, r26436, MPFR_RNDN);
        mpfr_div(r26438, r26434, r26437, MPFR_RNDN);
        mpfr_set_d(r26439, rand, MPFR_RNDN);
        mpfr_mul(r26440, r26438, r26439, MPFR_RNDN);
        mpfr_add(r26441, r26434, r26440, MPFR_RNDN);
        mpfr_mul(r26442, r26433, r26441, MPFR_RNDN);
        return mpfr_get_d(r26442, MPFR_RNDN);
}

static mpfr_t r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450, r26451, r26452, r26453, r26454, r26455, r26456;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r26443);
        mpfr_init_set_str(r26444, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26445, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26446);
        mpfr_init(r26447);
        mpfr_init_set_str(r26448, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26449, "9", 10, MPFR_RNDN);
        mpfr_init(r26450);
        mpfr_init(r26451);
        mpfr_init(r26452);
        mpfr_init(r26453);
        mpfr_init(r26454);
        mpfr_init(r26455);
        mpfr_init(r26456);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r26443, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26446, r26444, r26445, MPFR_RNDN);
        mpfr_sub(r26447, r26443, r26446, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26450, r26449, r26447, MPFR_RNDN);
        mpfr_sqrt(r26451, r26450, MPFR_RNDN);
        mpfr_div(r26452, r26448, r26451, MPFR_RNDN);
        mpfr_set_d(r26453, rand, MPFR_RNDN);
        mpfr_mul(r26454, r26452, r26453, MPFR_RNDN);
        mpfr_add(r26455, r26448, r26454, MPFR_RNDN);
        mpfr_mul(r26456, r26447, r26455, MPFR_RNDN);
        return mpfr_get_d(r26456, MPFR_RNDN);
}

static mpfr_t r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r26457);
        mpfr_init_set_str(r26458, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26459, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init_set_str(r26462, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26463, "9", 10, MPFR_RNDN);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init(r26469);
        mpfr_init(r26470);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r26457, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26460, r26458, r26459, MPFR_RNDN);
        mpfr_sub(r26461, r26457, r26460, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26464, r26463, r26461, MPFR_RNDN);
        mpfr_sqrt(r26465, r26464, MPFR_RNDN);
        mpfr_div(r26466, r26462, r26465, MPFR_RNDN);
        mpfr_set_d(r26467, rand, MPFR_RNDN);
        mpfr_mul(r26468, r26466, r26467, MPFR_RNDN);
        mpfr_add(r26469, r26462, r26468, MPFR_RNDN);
        mpfr_mul(r26470, r26461, r26469, MPFR_RNDN);
        return mpfr_get_d(r26470, MPFR_RNDN);
}

