#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 r26425 = a;
        float r26426 = 1.0;
        float r26427 = 3.0;
        float r26428 = r26426 / r26427;
        float r26429 = r26425 - r26428;
        float r26430 = 1;
        float r26431 = 9;
        float r26432 = r26431 * r26429;
        float r26433 = sqrt(r26432);
        float r26434 = r26430 / r26433;
        float r26435 = rand;
        float r26436 = r26434 * r26435;
        float r26437 = r26430 + r26436;
        float r26438 = r26429 * r26437;
        return r26438;
}

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


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

double f_od(double a, double rand) {
        double r26467 = a;
        double r26468 = 1.0;
        double r26469 = 3.0;
        double r26470 = r26468 / r26469;
        double r26471 = r26467 - r26470;
        double r26472 = 1;
        double r26473 = 9;
        double r26474 = r26473 * r26471;
        double r26475 = sqrt(r26474);
        double r26476 = r26472 / r26475;
        double r26477 = rand;
        double r26478 = r26476 * r26477;
        double r26479 = r26472 + r26478;
        double r26480 = r26471 * r26479;
        return r26480;
}

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 r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494;

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

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

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

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

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

static mpfr_t r26509, r26510, r26511, r26512, r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r26509);
        mpfr_init_set_str(r26510, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26511, "3.0", 10, MPFR_RNDN);
        mpfr_init(r26512);
        mpfr_init(r26513);
        mpfr_init_set_str(r26514, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26515, "9", 10, MPFR_RNDN);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r26509, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26512, r26510, r26511, MPFR_RNDN);
        mpfr_sub(r26513, r26509, r26512, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26516, r26515, r26513, MPFR_RNDN);
        mpfr_sqrt(r26517, r26516, MPFR_RNDN);
        mpfr_div(r26518, r26514, r26517, MPFR_RNDN);
        mpfr_set_d(r26519, rand, MPFR_RNDN);
        mpfr_mul(r26520, r26518, r26519, MPFR_RNDN);
        mpfr_add(r26521, r26514, r26520, MPFR_RNDN);
        mpfr_mul(r26522, r26513, r26521, MPFR_RNDN);
        return mpfr_get_d(r26522, MPFR_RNDN);
}

