#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 r25424 = a;
        float r25425 = 1.0;
        float r25426 = 3.0;
        float r25427 = r25425 / r25426;
        float r25428 = r25424 - r25427;
        float r25429 = 1;
        float r25430 = 9;
        float r25431 = r25430 * r25428;
        float r25432 = sqrt(r25431);
        float r25433 = r25429 / r25432;
        float r25434 = rand;
        float r25435 = r25433 * r25434;
        float r25436 = r25429 + r25435;
        float r25437 = r25428 * r25436;
        return r25437;
}

double f_id(double a, double rand) {
        double r25438 = a;
        double r25439 = 1.0;
        double r25440 = 3.0;
        double r25441 = r25439 / r25440;
        double r25442 = r25438 - r25441;
        double r25443 = 1;
        double r25444 = 9;
        double r25445 = r25444 * r25442;
        double r25446 = sqrt(r25445);
        double r25447 = r25443 / r25446;
        double r25448 = rand;
        double r25449 = r25447 * r25448;
        double r25450 = r25443 + r25449;
        double r25451 = r25442 * r25450;
        return r25451;
}


double f_of(float a, float rand) {
        float r25452 = a;
        float r25453 = 1.0;
        float r25454 = 3.0;
        float r25455 = r25453 / r25454;
        float r25456 = r25452 - r25455;
        float r25457 = 1;
        float r25458 = 9;
        float r25459 = r25458 * r25456;
        float r25460 = sqrt(r25459);
        float r25461 = r25457 / r25460;
        float r25462 = rand;
        float r25463 = r25461 * r25462;
        float r25464 = r25456 * r25463;
        float r25465 = r25456 + r25464;
        return r25465;
}

double f_od(double a, double rand) {
        double r25466 = a;
        double r25467 = 1.0;
        double r25468 = 3.0;
        double r25469 = r25467 / r25468;
        double r25470 = r25466 - r25469;
        double r25471 = 1;
        double r25472 = 9;
        double r25473 = r25472 * r25470;
        double r25474 = sqrt(r25473);
        double r25475 = r25471 / r25474;
        double r25476 = rand;
        double r25477 = r25475 * r25476;
        double r25478 = r25470 * r25477;
        double r25479 = r25470 + r25478;
        return r25479;
}

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 r25480, r25481, r25482, r25483, r25484, r25485, r25486, r25487, r25488, r25489, r25490, r25491, r25492, r25493;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r25480);
        mpfr_init_set_str(r25481, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r25482, "3.0", 10, MPFR_RNDN);
        mpfr_init(r25483);
        mpfr_init(r25484);
        mpfr_init_set_str(r25485, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25486, "9", 10, MPFR_RNDN);
        mpfr_init(r25487);
        mpfr_init(r25488);
        mpfr_init(r25489);
        mpfr_init(r25490);
        mpfr_init(r25491);
        mpfr_init(r25492);
        mpfr_init(r25493);
}

double f_im(double a, double rand) {
        mpfr_set_d(r25480, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r25483, r25481, r25482, MPFR_RNDN);
        mpfr_sub(r25484, r25480, r25483, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r25487, r25486, r25484, MPFR_RNDN);
        mpfr_sqrt(r25488, r25487, MPFR_RNDN);
        mpfr_div(r25489, r25485, r25488, MPFR_RNDN);
        mpfr_set_d(r25490, rand, MPFR_RNDN);
        mpfr_mul(r25491, r25489, r25490, MPFR_RNDN);
        mpfr_add(r25492, r25485, r25491, MPFR_RNDN);
        mpfr_mul(r25493, r25484, r25492, MPFR_RNDN);
        return mpfr_get_d(r25493, MPFR_RNDN);
}

static mpfr_t r25494, r25495, r25496, r25497, r25498, r25499, r25500, r25501, r25502, r25503, r25504, r25505, r25506, r25507;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r25494);
        mpfr_init_set_str(r25495, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r25496, "3.0", 10, MPFR_RNDN);
        mpfr_init(r25497);
        mpfr_init(r25498);
        mpfr_init_set_str(r25499, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25500, "9", 10, MPFR_RNDN);
        mpfr_init(r25501);
        mpfr_init(r25502);
        mpfr_init(r25503);
        mpfr_init(r25504);
        mpfr_init(r25505);
        mpfr_init(r25506);
        mpfr_init(r25507);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r25494, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r25497, r25495, r25496, MPFR_RNDN);
        mpfr_sub(r25498, r25494, r25497, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r25501, r25500, r25498, MPFR_RNDN);
        mpfr_sqrt(r25502, r25501, MPFR_RNDN);
        mpfr_div(r25503, r25499, r25502, MPFR_RNDN);
        mpfr_set_d(r25504, rand, MPFR_RNDN);
        mpfr_mul(r25505, r25503, r25504, MPFR_RNDN);
        mpfr_mul(r25506, r25498, r25505, MPFR_RNDN);
        mpfr_add(r25507, r25498, r25506, MPFR_RNDN);
        return mpfr_get_d(r25507, MPFR_RNDN);
}

static mpfr_t r25508, r25509, r25510, r25511, r25512, r25513, r25514, r25515, r25516, r25517, r25518, r25519, r25520, r25521;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r25508);
        mpfr_init_set_str(r25509, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r25510, "3.0", 10, MPFR_RNDN);
        mpfr_init(r25511);
        mpfr_init(r25512);
        mpfr_init_set_str(r25513, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25514, "9", 10, MPFR_RNDN);
        mpfr_init(r25515);
        mpfr_init(r25516);
        mpfr_init(r25517);
        mpfr_init(r25518);
        mpfr_init(r25519);
        mpfr_init(r25520);
        mpfr_init(r25521);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r25508, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r25511, r25509, r25510, MPFR_RNDN);
        mpfr_sub(r25512, r25508, r25511, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r25515, r25514, r25512, MPFR_RNDN);
        mpfr_sqrt(r25516, r25515, MPFR_RNDN);
        mpfr_div(r25517, r25513, r25516, MPFR_RNDN);
        mpfr_set_d(r25518, rand, MPFR_RNDN);
        mpfr_mul(r25519, r25517, r25518, MPFR_RNDN);
        mpfr_mul(r25520, r25512, r25519, MPFR_RNDN);
        mpfr_add(r25521, r25512, r25520, MPFR_RNDN);
        return mpfr_get_d(r25521, MPFR_RNDN);
}

