#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "SynthBasics:oscSampleBasedAux from YampaSynth-0.2";

double f_if(float x, float y, float z) {
        float r36432 = x;
        float r36433 = y;
        float r36434 = z;
        float r36435 = r36434 - r36432;
        float r36436 = r36433 * r36435;
        float r36437 = r36432 + r36436;
        return r36437;
}

double f_id(double x, double y, double z) {
        double r36438 = x;
        double r36439 = y;
        double r36440 = z;
        double r36441 = r36440 - r36438;
        double r36442 = r36439 * r36441;
        double r36443 = r36438 + r36442;
        return r36443;
}


double f_of(float x, float y, float z) {
        float r36444 = x;
        float r36445 = y;
        float r36446 = z;
        float r36447 = r36446 - r36444;
        float r36448 = r36445 * r36447;
        float r36449 = r36444 + r36448;
        return r36449;
}

double f_od(double x, double y, double z) {
        double r36450 = x;
        double r36451 = y;
        double r36452 = z;
        double r36453 = r36452 - r36450;
        double r36454 = r36451 * r36453;
        double r36455 = r36450 + r36454;
        return r36455;
}

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 r36456, r36457, r36458, r36459, r36460, r36461;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r36456);
        mpfr_init(r36457);
        mpfr_init(r36458);
        mpfr_init(r36459);
        mpfr_init(r36460);
        mpfr_init(r36461);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r36456, x, MPFR_RNDN);
        mpfr_set_d(r36457, y, MPFR_RNDN);
        mpfr_set_d(r36458, z, MPFR_RNDN);
        mpfr_sub(r36459, r36458, r36456, MPFR_RNDN);
        mpfr_mul(r36460, r36457, r36459, MPFR_RNDN);
        mpfr_add(r36461, r36456, r36460, MPFR_RNDN);
        return mpfr_get_d(r36461, MPFR_RNDN);
}

static mpfr_t r36462, r36463, r36464, r36465, r36466, r36467;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r36462);
        mpfr_init(r36463);
        mpfr_init(r36464);
        mpfr_init(r36465);
        mpfr_init(r36466);
        mpfr_init(r36467);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r36462, x, MPFR_RNDN);
        mpfr_set_d(r36463, y, MPFR_RNDN);
        mpfr_set_d(r36464, z, MPFR_RNDN);
        mpfr_sub(r36465, r36464, r36462, MPFR_RNDN);
        mpfr_mul(r36466, r36463, r36465, MPFR_RNDN);
        mpfr_add(r36467, r36462, r36466, MPFR_RNDN);
        return mpfr_get_d(r36467, MPFR_RNDN);
}

static mpfr_t r36468, r36469, r36470, r36471, r36472, r36473;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r36468);
        mpfr_init(r36469);
        mpfr_init(r36470);
        mpfr_init(r36471);
        mpfr_init(r36472);
        mpfr_init(r36473);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r36468, x, MPFR_RNDN);
        mpfr_set_d(r36469, y, MPFR_RNDN);
        mpfr_set_d(r36470, z, MPFR_RNDN);
        mpfr_sub(r36471, r36470, r36468, MPFR_RNDN);
        mpfr_mul(r36472, r36469, r36471, MPFR_RNDN);
        mpfr_add(r36473, r36468, r36472, MPFR_RNDN);
        return mpfr_get_d(r36473, MPFR_RNDN);
}

