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

char *name = "Diagrams.Color.HSV:lerp  from diagrams-contrib-1.3.0.5";

double f_if(float x, float y, float z) {
        float r53933 = 1.0f;
        float r53934 = x;
        float r53935 = r53933 - r53934;
        float r53936 = y;
        float r53937 = r53935 * r53936;
        float r53938 = z;
        float r53939 = r53934 * r53938;
        float r53940 = r53937 + r53939;
        return r53940;
}

double f_id(double x, double y, double z) {
        double r53941 = 1.0;
        double r53942 = x;
        double r53943 = r53941 - r53942;
        double r53944 = y;
        double r53945 = r53943 * r53944;
        double r53946 = z;
        double r53947 = r53942 * r53946;
        double r53948 = r53945 + r53947;
        return r53948;
}


double f_of(float x, float y, float z) {
        float r53949 = 1.0f;
        float r53950 = x;
        float r53951 = r53949 - r53950;
        float r53952 = y;
        float r53953 = r53951 * r53952;
        float r53954 = z;
        float r53955 = r53950 * r53954;
        float r53956 = r53953 + r53955;
        return r53956;
}

double f_od(double x, double y, double z) {
        double r53957 = 1.0;
        double r53958 = x;
        double r53959 = r53957 - r53958;
        double r53960 = y;
        double r53961 = r53959 * r53960;
        double r53962 = z;
        double r53963 = r53958 * r53962;
        double r53964 = r53961 + r53963;
        return r53964;
}

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 r53965, r53966, r53967, r53968, r53969, r53970, r53971, r53972;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53965, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53966);
        mpfr_init(r53967);
        mpfr_init(r53968);
        mpfr_init(r53969);
        mpfr_init(r53970);
        mpfr_init(r53971);
        mpfr_init(r53972);
}

double f_im(double x, double y, double z) {
        ;
        mpfr_set_d(r53966, x, MPFR_RNDN);
        mpfr_sub(r53967, r53965, r53966, MPFR_RNDN);
        mpfr_set_d(r53968, y, MPFR_RNDN);
        mpfr_mul(r53969, r53967, r53968, MPFR_RNDN);
        mpfr_set_d(r53970, z, MPFR_RNDN);
        mpfr_mul(r53971, r53966, r53970, MPFR_RNDN);
        mpfr_add(r53972, r53969, r53971, MPFR_RNDN);
        return mpfr_get_d(r53972, MPFR_RNDN);
}

static mpfr_t r53973, r53974, r53975, r53976, r53977, r53978, r53979, r53980;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53973, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53974);
        mpfr_init(r53975);
        mpfr_init(r53976);
        mpfr_init(r53977);
        mpfr_init(r53978);
        mpfr_init(r53979);
        mpfr_init(r53980);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r53974, x, MPFR_RNDN);
        mpfr_sub(r53975, r53973, r53974, MPFR_RNDN);
        mpfr_set_d(r53976, y, MPFR_RNDN);
        mpfr_mul(r53977, r53975, r53976, MPFR_RNDN);
        mpfr_set_d(r53978, z, MPFR_RNDN);
        mpfr_mul(r53979, r53974, r53978, MPFR_RNDN);
        mpfr_add(r53980, r53977, r53979, MPFR_RNDN);
        return mpfr_get_d(r53980, MPFR_RNDN);
}

static mpfr_t r53981, r53982, r53983, r53984, r53985, r53986, r53987, r53988;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53981, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53982);
        mpfr_init(r53983);
        mpfr_init(r53984);
        mpfr_init(r53985);
        mpfr_init(r53986);
        mpfr_init(r53987);
        mpfr_init(r53988);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r53982, x, MPFR_RNDN);
        mpfr_sub(r53983, r53981, r53982, MPFR_RNDN);
        mpfr_set_d(r53984, y, MPFR_RNDN);
        mpfr_mul(r53985, r53983, r53984, MPFR_RNDN);
        mpfr_set_d(r53986, z, MPFR_RNDN);
        mpfr_mul(r53987, r53982, r53986, MPFR_RNDN);
        mpfr_add(r53988, r53985, r53987, MPFR_RNDN);
        return mpfr_get_d(r53988, MPFR_RNDN);
}

