#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 r22626 = a;
        float r22627 = 1.0;
        float r22628 = 3.0;
        float r22629 = r22627 / r22628;
        float r22630 = r22626 - r22629;
        float r22631 = 1;
        float r22632 = 9;
        float r22633 = r22632 * r22630;
        float r22634 = sqrt(r22633);
        float r22635 = r22631 / r22634;
        float r22636 = rand;
        float r22637 = r22635 * r22636;
        float r22638 = r22631 + r22637;
        float r22639 = r22630 * r22638;
        return r22639;
}

double f_id(double a, double rand) {
        double r22640 = a;
        double r22641 = 1.0;
        double r22642 = 3.0;
        double r22643 = r22641 / r22642;
        double r22644 = r22640 - r22643;
        double r22645 = 1;
        double r22646 = 9;
        double r22647 = r22646 * r22644;
        double r22648 = sqrt(r22647);
        double r22649 = r22645 / r22648;
        double r22650 = rand;
        double r22651 = r22649 * r22650;
        double r22652 = r22645 + r22651;
        double r22653 = r22644 * r22652;
        return r22653;
}


double f_of(float a, float rand) {
        float r22654 = a;
        float r22655 = 1.0;
        float r22656 = 3.0;
        float r22657 = r22655 / r22656;
        float r22658 = r22654 - r22657;
        float r22659 = rand;
        float r22660 = 9;
        float r22661 = r22658 * r22660;
        float r22662 = sqrt(r22661);
        float r22663 = r22659 / r22662;
        float r22664 = r22663 * r22658;
        float r22665 = r22658 + r22664;
        return r22665;
}

double f_od(double a, double rand) {
        double r22666 = a;
        double r22667 = 1.0;
        double r22668 = 3.0;
        double r22669 = r22667 / r22668;
        double r22670 = r22666 - r22669;
        double r22671 = rand;
        double r22672 = 9;
        double r22673 = r22670 * r22672;
        double r22674 = sqrt(r22673);
        double r22675 = r22671 / r22674;
        double r22676 = r22675 * r22670;
        double r22677 = r22670 + r22676;
        return r22677;
}

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 r22678, r22679, r22680, r22681, r22682, r22683, r22684, r22685, r22686, r22687, r22688, r22689, r22690, r22691;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r22678);
        mpfr_init_set_str(r22679, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r22680, "3.0", 10, MPFR_RNDN);
        mpfr_init(r22681);
        mpfr_init(r22682);
        mpfr_init_set_str(r22683, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22684, "9", 10, MPFR_RNDN);
        mpfr_init(r22685);
        mpfr_init(r22686);
        mpfr_init(r22687);
        mpfr_init(r22688);
        mpfr_init(r22689);
        mpfr_init(r22690);
        mpfr_init(r22691);
}

double f_im(double a, double rand) {
        mpfr_set_d(r22678, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r22681, r22679, r22680, MPFR_RNDN);
        mpfr_sub(r22682, r22678, r22681, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r22685, r22684, r22682, MPFR_RNDN);
        mpfr_sqrt(r22686, r22685, MPFR_RNDN);
        mpfr_div(r22687, r22683, r22686, MPFR_RNDN);
        mpfr_set_d(r22688, rand, MPFR_RNDN);
        mpfr_mul(r22689, r22687, r22688, MPFR_RNDN);
        mpfr_add(r22690, r22683, r22689, MPFR_RNDN);
        mpfr_mul(r22691, r22682, r22690, MPFR_RNDN);
        return mpfr_get_d(r22691, MPFR_RNDN);
}

static mpfr_t r22692, r22693, r22694, r22695, r22696, r22697, r22698, r22699, r22700, r22701, r22702, r22703;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22692);
        mpfr_init_set_str(r22693, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r22694, "3.0", 10, MPFR_RNDN);
        mpfr_init(r22695);
        mpfr_init(r22696);
        mpfr_init(r22697);
        mpfr_init_set_str(r22698, "9", 10, MPFR_RNDN);
        mpfr_init(r22699);
        mpfr_init(r22700);
        mpfr_init(r22701);
        mpfr_init(r22702);
        mpfr_init(r22703);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r22692, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r22695, r22693, r22694, MPFR_RNDN);
        mpfr_sub(r22696, r22692, r22695, MPFR_RNDN);
        mpfr_set_d(r22697, rand, MPFR_RNDN);
        ;
        mpfr_mul(r22699, r22696, r22698, MPFR_RNDN);
        mpfr_sqrt(r22700, r22699, MPFR_RNDN);
        mpfr_div(r22701, r22697, r22700, MPFR_RNDN);
        mpfr_mul(r22702, r22701, r22696, MPFR_RNDN);
        mpfr_add(r22703, r22696, r22702, MPFR_RNDN);
        return mpfr_get_d(r22703, MPFR_RNDN);
}

static mpfr_t r22704, r22705, r22706, r22707, r22708, r22709, r22710, r22711, r22712, r22713, r22714, r22715;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22704);
        mpfr_init_set_str(r22705, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r22706, "3.0", 10, MPFR_RNDN);
        mpfr_init(r22707);
        mpfr_init(r22708);
        mpfr_init(r22709);
        mpfr_init_set_str(r22710, "9", 10, MPFR_RNDN);
        mpfr_init(r22711);
        mpfr_init(r22712);
        mpfr_init(r22713);
        mpfr_init(r22714);
        mpfr_init(r22715);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r22704, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r22707, r22705, r22706, MPFR_RNDN);
        mpfr_sub(r22708, r22704, r22707, MPFR_RNDN);
        mpfr_set_d(r22709, rand, MPFR_RNDN);
        ;
        mpfr_mul(r22711, r22708, r22710, MPFR_RNDN);
        mpfr_sqrt(r22712, r22711, MPFR_RNDN);
        mpfr_div(r22713, r22709, r22712, MPFR_RNDN);
        mpfr_mul(r22714, r22713, r22708, MPFR_RNDN);
        mpfr_add(r22715, r22708, r22714, MPFR_RNDN);
        return mpfr_get_d(r22715, MPFR_RNDN);
}

