#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 r10095 = a;
        float r10096 = 1.0;
        float r10097 = 3.0;
        float r10098 = r10096 / r10097;
        float r10099 = r10095 - r10098;
        float r10100 = 1;
        float r10101 = 9;
        float r10102 = r10101 * r10099;
        float r10103 = sqrt(r10102);
        float r10104 = r10100 / r10103;
        float r10105 = rand;
        float r10106 = r10104 * r10105;
        float r10107 = r10100 + r10106;
        float r10108 = r10099 * r10107;
        return r10108;
}

double f_id(double a, double rand) {
        double r10109 = a;
        double r10110 = 1.0;
        double r10111 = 3.0;
        double r10112 = r10110 / r10111;
        double r10113 = r10109 - r10112;
        double r10114 = 1;
        double r10115 = 9;
        double r10116 = r10115 * r10113;
        double r10117 = sqrt(r10116);
        double r10118 = r10114 / r10117;
        double r10119 = rand;
        double r10120 = r10118 * r10119;
        double r10121 = r10114 + r10120;
        double r10122 = r10113 * r10121;
        return r10122;
}


double f_of(float a, float rand) {
        float r10123 = a;
        float r10124 = 1.0;
        float r10125 = 3.0;
        float r10126 = r10124 / r10125;
        float r10127 = r10123 - r10126;
        float r10128 = 9;
        float r10129 = r10128 * r10127;
        float r10130 = 1/2;
        float r10131 = -r10130;
        float r10132 = pow(r10129, r10131);
        float r10133 = rand;
        float r10134 = r10132 * r10133;
        float r10135 = r10127 * r10134;
        float r10136 = r10127 + r10135;
        return r10136;
}

double f_od(double a, double rand) {
        double r10137 = a;
        double r10138 = 1.0;
        double r10139 = 3.0;
        double r10140 = r10138 / r10139;
        double r10141 = r10137 - r10140;
        double r10142 = 9;
        double r10143 = r10142 * r10141;
        double r10144 = 1/2;
        double r10145 = -r10144;
        double r10146 = pow(r10143, r10145);
        double r10147 = rand;
        double r10148 = r10146 * r10147;
        double r10149 = r10141 * r10148;
        double r10150 = r10141 + r10149;
        return r10150;
}

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 r10151, r10152, r10153, r10154, r10155, r10156, r10157, r10158, r10159, r10160, r10161, r10162, r10163, r10164;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10151);
        mpfr_init_set_str(r10152, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r10153, "3.0", 10, MPFR_RNDN);
        mpfr_init(r10154);
        mpfr_init(r10155);
        mpfr_init_set_str(r10156, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10157, "9", 10, MPFR_RNDN);
        mpfr_init(r10158);
        mpfr_init(r10159);
        mpfr_init(r10160);
        mpfr_init(r10161);
        mpfr_init(r10162);
        mpfr_init(r10163);
        mpfr_init(r10164);
}

double f_im(double a, double rand) {
        mpfr_set_d(r10151, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10154, r10152, r10153, MPFR_RNDN);
        mpfr_sub(r10155, r10151, r10154, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10158, r10157, r10155, MPFR_RNDN);
        mpfr_sqrt(r10159, r10158, MPFR_RNDN);
        mpfr_div(r10160, r10156, r10159, MPFR_RNDN);
        mpfr_set_d(r10161, rand, MPFR_RNDN);
        mpfr_mul(r10162, r10160, r10161, MPFR_RNDN);
        mpfr_add(r10163, r10156, r10162, MPFR_RNDN);
        mpfr_mul(r10164, r10155, r10163, MPFR_RNDN);
        return mpfr_get_d(r10164, MPFR_RNDN);
}

static mpfr_t r10165, r10166, r10167, r10168, r10169, r10170, r10171, r10172, r10173, r10174, r10175, r10176, r10177, r10178;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10165);
        mpfr_init_set_str(r10166, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r10167, "3.0", 10, MPFR_RNDN);
        mpfr_init(r10168);
        mpfr_init(r10169);
        mpfr_init_set_str(r10170, "9", 10, MPFR_RNDN);
        mpfr_init(r10171);
        mpfr_init_set_str(r10172, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10173);
        mpfr_init(r10174);
        mpfr_init(r10175);
        mpfr_init(r10176);
        mpfr_init(r10177);
        mpfr_init(r10178);
}

double f_fm(double a, double rand) {
        mpfr_set_d(r10165, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10168, r10166, r10167, MPFR_RNDN);
        mpfr_sub(r10169, r10165, r10168, MPFR_RNDN);
        ;
        mpfr_mul(r10171, r10170, r10169, MPFR_RNDN);
        ;
        mpfr_neg(r10173, r10172, MPFR_RNDN);
        mpfr_pow(r10174, r10171, r10173, MPFR_RNDN);
        mpfr_set_d(r10175, rand, MPFR_RNDN);
        mpfr_mul(r10176, r10174, r10175, MPFR_RNDN);
        mpfr_mul(r10177, r10169, r10176, MPFR_RNDN);
        mpfr_add(r10178, r10169, r10177, MPFR_RNDN);
        return mpfr_get_d(r10178, MPFR_RNDN);
}

static mpfr_t r10179, r10180, r10181, r10182, r10183, r10184, r10185, r10186, r10187, r10188, r10189, r10190, r10191, r10192;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10179);
        mpfr_init_set_str(r10180, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r10181, "3.0", 10, MPFR_RNDN);
        mpfr_init(r10182);
        mpfr_init(r10183);
        mpfr_init_set_str(r10184, "9", 10, MPFR_RNDN);
        mpfr_init(r10185);
        mpfr_init_set_str(r10186, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10187);
        mpfr_init(r10188);
        mpfr_init(r10189);
        mpfr_init(r10190);
        mpfr_init(r10191);
        mpfr_init(r10192);
}

double f_dm(double a, double rand) {
        mpfr_set_d(r10179, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10182, r10180, r10181, MPFR_RNDN);
        mpfr_sub(r10183, r10179, r10182, MPFR_RNDN);
        ;
        mpfr_mul(r10185, r10184, r10183, MPFR_RNDN);
        ;
        mpfr_neg(r10187, r10186, MPFR_RNDN);
        mpfr_pow(r10188, r10185, r10187, MPFR_RNDN);
        mpfr_set_d(r10189, rand, MPFR_RNDN);
        mpfr_mul(r10190, r10188, r10189, MPFR_RNDN);
        mpfr_mul(r10191, r10183, r10190, MPFR_RNDN);
        mpfr_add(r10192, r10183, r10191, MPFR_RNDN);
        return mpfr_get_d(r10192, MPFR_RNDN);
}

