#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 r9597 = a;
        float r9598 = 1.0f;
        float r9599 = 3.0f;
        float r9600 = r9598 / r9599;
        float r9601 = r9597 - r9600;
        float r9602 = 1.0f;
        float r9603 = 9.0f;
        float r9604 = r9603 * r9601;
        float r9605 = sqrt(r9604);
        float r9606 = r9602 / r9605;
        float r9607 = rand;
        float r9608 = r9606 * r9607;
        float r9609 = r9602 + r9608;
        float r9610 = r9601 * r9609;
        return r9610;
}

double f_id(double a, double rand) {
        double r9611 = a;
        double r9612 = 1.0;
        double r9613 = 3.0;
        double r9614 = r9612 / r9613;
        double r9615 = r9611 - r9614;
        double r9616 = 1.0;
        double r9617 = 9.0;
        double r9618 = r9617 * r9615;
        double r9619 = sqrt(r9618);
        double r9620 = r9616 / r9619;
        double r9621 = rand;
        double r9622 = r9620 * r9621;
        double r9623 = r9616 + r9622;
        double r9624 = r9615 * r9623;
        return r9624;
}


double f_of(float a, float rand) {
        float r9625 = a;
        float r9626 = 1.0f;
        float r9627 = 3.0f;
        float r9628 = r9626 / r9627;
        float r9629 = r9625 - r9628;
        float r9630 = sqrt(r9629);
        float r9631 = rand;
        float r9632 = 9.0f;
        float r9633 = sqrt(r9632);
        float r9634 = r9631 / r9633;
        float r9635 = r9634 / r9630;
        float r9636 = r9630 * r9635;
        float r9637 = r9630 * r9636;
        float r9638 = r9629 + r9637;
        return r9638;
}

double f_od(double a, double rand) {
        double r9639 = a;
        double r9640 = 1.0;
        double r9641 = 3.0;
        double r9642 = r9640 / r9641;
        double r9643 = r9639 - r9642;
        double r9644 = sqrt(r9643);
        double r9645 = rand;
        double r9646 = 9.0;
        double r9647 = sqrt(r9646);
        double r9648 = r9645 / r9647;
        double r9649 = r9648 / r9644;
        double r9650 = r9644 * r9649;
        double r9651 = r9644 * r9650;
        double r9652 = r9643 + r9651;
        return r9652;
}

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 r9653, r9654, r9655, r9656, r9657, r9658, r9659, r9660, r9661, r9662, r9663, r9664, r9665, r9666;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9653);
        mpfr_init_set_str(r9654, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9655, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9656);
        mpfr_init(r9657);
        mpfr_init_set_str(r9658, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9659, "9", 10, MPFR_RNDN);
        mpfr_init(r9660);
        mpfr_init(r9661);
        mpfr_init(r9662);
        mpfr_init(r9663);
        mpfr_init(r9664);
        mpfr_init(r9665);
        mpfr_init(r9666);
}

double f_im(double a, double rand) {
        mpfr_set_d(r9653, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9656, r9654, r9655, MPFR_RNDN);
        mpfr_sub(r9657, r9653, r9656, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9660, r9659, r9657, MPFR_RNDN);
        mpfr_sqrt(r9661, r9660, MPFR_RNDN);
        mpfr_div(r9662, r9658, r9661, MPFR_RNDN);
        mpfr_set_d(r9663, rand, MPFR_RNDN);
        mpfr_mul(r9664, r9662, r9663, MPFR_RNDN);
        mpfr_add(r9665, r9658, r9664, MPFR_RNDN);
        mpfr_mul(r9666, r9657, r9665, MPFR_RNDN);
        return mpfr_get_d(r9666, MPFR_RNDN);
}

static mpfr_t r9667, r9668, r9669, r9670, r9671, r9672, r9673, r9674, r9675, r9676, r9677, r9678, r9679, r9680;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9667);
        mpfr_init_set_str(r9668, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9669, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9670);
        mpfr_init(r9671);
        mpfr_init(r9672);
        mpfr_init(r9673);
        mpfr_init_set_str(r9674, "9", 10, MPFR_RNDN);
        mpfr_init(r9675);
        mpfr_init(r9676);
        mpfr_init(r9677);
        mpfr_init(r9678);
        mpfr_init(r9679);
        mpfr_init(r9680);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r9667, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9670, r9668, r9669, MPFR_RNDN);
        mpfr_sub(r9671, r9667, r9670, MPFR_RNDN);
        mpfr_sqrt(r9672, r9671, MPFR_RNDN);
        mpfr_set_d(r9673, rand, MPFR_RNDN);
        ;
        mpfr_sqrt(r9675, r9674, MPFR_RNDN);
        mpfr_div(r9676, r9673, r9675, MPFR_RNDN);
        mpfr_div(r9677, r9676, r9672, MPFR_RNDN);
        mpfr_mul(r9678, r9672, r9677, MPFR_RNDN);
        mpfr_mul(r9679, r9672, r9678, MPFR_RNDN);
        mpfr_add(r9680, r9671, r9679, MPFR_RNDN);
        return mpfr_get_d(r9680, MPFR_RNDN);
}

static mpfr_t r9681, r9682, r9683, r9684, r9685, r9686, r9687, r9688, r9689, r9690, r9691, r9692, r9693, r9694;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9681);
        mpfr_init_set_str(r9682, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9683, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9684);
        mpfr_init(r9685);
        mpfr_init(r9686);
        mpfr_init(r9687);
        mpfr_init_set_str(r9688, "9", 10, MPFR_RNDN);
        mpfr_init(r9689);
        mpfr_init(r9690);
        mpfr_init(r9691);
        mpfr_init(r9692);
        mpfr_init(r9693);
        mpfr_init(r9694);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r9681, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9684, r9682, r9683, MPFR_RNDN);
        mpfr_sub(r9685, r9681, r9684, MPFR_RNDN);
        mpfr_sqrt(r9686, r9685, MPFR_RNDN);
        mpfr_set_d(r9687, rand, MPFR_RNDN);
        ;
        mpfr_sqrt(r9689, r9688, MPFR_RNDN);
        mpfr_div(r9690, r9687, r9689, MPFR_RNDN);
        mpfr_div(r9691, r9690, r9686, MPFR_RNDN);
        mpfr_mul(r9692, r9686, r9691, MPFR_RNDN);
        mpfr_mul(r9693, r9686, r9692, MPFR_RNDN);
        mpfr_add(r9694, r9685, r9693, MPFR_RNDN);
        return mpfr_get_d(r9694, MPFR_RNDN);
}

