#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 r26413 = a;
        float r26414 = 1.0;
        float r26415 = 3.0;
        float r26416 = r26414 / r26415;
        float r26417 = r26413 - r26416;
        float r26418 = 1;
        float r26419 = 9;
        float r26420 = r26419 * r26417;
        float r26421 = sqrt(r26420);
        float r26422 = r26418 / r26421;
        float r26423 = rand;
        float r26424 = r26422 * r26423;
        float r26425 = r26418 + r26424;
        float r26426 = r26417 * r26425;
        return r26426;
}

double f_id(double a, double rand) {
        double r26427 = a;
        double r26428 = 1.0;
        double r26429 = 3.0;
        double r26430 = r26428 / r26429;
        double r26431 = r26427 - r26430;
        double r26432 = 1;
        double r26433 = 9;
        double r26434 = r26433 * r26431;
        double r26435 = sqrt(r26434);
        double r26436 = r26432 / r26435;
        double r26437 = rand;
        double r26438 = r26436 * r26437;
        double r26439 = r26432 + r26438;
        double r26440 = r26431 * r26439;
        return r26440;
}


double f_of(float a, float rand) {
        float r26441 = a;
        float r26442 = 1.0;
        float r26443 = 3.0;
        float r26444 = r26442 / r26443;
        float r26445 = r26441 - r26444;
        float r26446 = 1;
        float r26447 = 9;
        float r26448 = r26447 * r26445;
        float r26449 = sqrt(r26448);
        float r26450 = r26446 / r26449;
        float r26451 = rand;
        float r26452 = r26450 * r26451;
        float r26453 = r26446 + r26452;
        float r26454 = r26445 * r26453;
        return r26454;
}

double f_od(double a, double rand) {
        double r26455 = a;
        double r26456 = 1.0;
        double r26457 = 3.0;
        double r26458 = r26456 / r26457;
        double r26459 = r26455 - r26458;
        double r26460 = 1;
        double r26461 = 9;
        double r26462 = r26461 * r26459;
        double r26463 = sqrt(r26462);
        double r26464 = r26460 / r26463;
        double r26465 = rand;
        double r26466 = r26464 * r26465;
        double r26467 = r26460 + r26466;
        double r26468 = r26459 * r26467;
        return r26468;
}

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 r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r26469);
        mpfr_init_set_str(r26470, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26471, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26472);
        mpfr_init(r26473);
        mpfr_init_set_str(r26474, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26475, "9", 10, MPFR_RNDN);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
}

double f_im(double a, double rand) {
        mpfr_set_d(r26469, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26472, r26470, r26471, MPFR_RNDN);
        mpfr_sub(r26473, r26469, r26472, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26476, r26475, r26473, MPFR_RNDN);
        mpfr_sqrt(r26477, r26476, MPFR_RNDN);
        mpfr_div(r26478, r26474, r26477, MPFR_RNDN);
        mpfr_set_d(r26479, rand, MPFR_RNDN);
        mpfr_mul(r26480, r26478, r26479, MPFR_RNDN);
        mpfr_add(r26481, r26474, r26480, MPFR_RNDN);
        mpfr_mul(r26482, r26473, r26481, MPFR_RNDN);
        return mpfr_get_d(r26482, MPFR_RNDN);
}

static mpfr_t r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r26483);
        mpfr_init_set_str(r26484, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26485, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init_set_str(r26488, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26489, "9", 10, MPFR_RNDN);
        mpfr_init(r26490);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init(r26495);
        mpfr_init(r26496);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r26483, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26486, r26484, r26485, MPFR_RNDN);
        mpfr_sub(r26487, r26483, r26486, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26490, r26489, r26487, MPFR_RNDN);
        mpfr_sqrt(r26491, r26490, MPFR_RNDN);
        mpfr_div(r26492, r26488, r26491, MPFR_RNDN);
        mpfr_set_d(r26493, rand, MPFR_RNDN);
        mpfr_mul(r26494, r26492, r26493, MPFR_RNDN);
        mpfr_add(r26495, r26488, r26494, MPFR_RNDN);
        mpfr_mul(r26496, r26487, r26495, MPFR_RNDN);
        return mpfr_get_d(r26496, MPFR_RNDN);
}

static mpfr_t r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r26497);
        mpfr_init_set_str(r26498, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26499, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init_set_str(r26502, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26503, "9", 10, MPFR_RNDN);
        mpfr_init(r26504);
        mpfr_init(r26505);
        mpfr_init(r26506);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r26497, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26500, r26498, r26499, MPFR_RNDN);
        mpfr_sub(r26501, r26497, r26500, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26504, r26503, r26501, MPFR_RNDN);
        mpfr_sqrt(r26505, r26504, MPFR_RNDN);
        mpfr_div(r26506, r26502, r26505, MPFR_RNDN);
        mpfr_set_d(r26507, rand, MPFR_RNDN);
        mpfr_mul(r26508, r26506, r26507, MPFR_RNDN);
        mpfr_add(r26509, r26502, r26508, MPFR_RNDN);
        mpfr_mul(r26510, r26501, r26509, MPFR_RNDN);
        return mpfr_get_d(r26510, MPFR_RNDN);
}

