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

char *name = "Numeric.Log:$clog1p from log-domain-0.10.2.1, A";

double f_if(float x, float y) {
        float r46111 = x;
        float r46112 = 2.0;
        float r46113 = r46111 * r46112;
        float r46114 = r46111 * r46111;
        float r46115 = r46113 + r46114;
        float r46116 = y;
        float r46117 = r46116 * r46116;
        float r46118 = r46115 + r46117;
        return r46118;
}

double f_id(double x, double y) {
        double r46119 = x;
        double r46120 = 2.0;
        double r46121 = r46119 * r46120;
        double r46122 = r46119 * r46119;
        double r46123 = r46121 + r46122;
        double r46124 = y;
        double r46125 = r46124 * r46124;
        double r46126 = r46123 + r46125;
        return r46126;
}


double f_of(float x, float y) {
        float r46127 = x;
        float r46128 = 2.0;
        float r46129 = r46127 * r46128;
        float r46130 = r46127 * r46127;
        float r46131 = r46129 + r46130;
        float r46132 = y;
        float r46133 = r46132 * r46132;
        float r46134 = r46131 + r46133;
        return r46134;
}

double f_od(double x, double y) {
        double r46135 = x;
        double r46136 = 2.0;
        double r46137 = r46135 * r46136;
        double r46138 = r46135 * r46135;
        double r46139 = r46137 + r46138;
        double r46140 = y;
        double r46141 = r46140 * r46140;
        double r46142 = r46139 + r46141;
        return r46142;
}

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 r46143, r46144, r46145, r46146, r46147, r46148, r46149, r46150;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46143);
        mpfr_init_set_str(r46144, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46145);
        mpfr_init(r46146);
        mpfr_init(r46147);
        mpfr_init(r46148);
        mpfr_init(r46149);
        mpfr_init(r46150);
}

double f_im(double x, double y) {
        mpfr_set_d(r46143, x, MPFR_RNDN);
        ;
        mpfr_mul(r46145, r46143, r46144, MPFR_RNDN);
        mpfr_mul(r46146, r46143, r46143, MPFR_RNDN);
        mpfr_add(r46147, r46145, r46146, MPFR_RNDN);
        mpfr_set_d(r46148, y, MPFR_RNDN);
        mpfr_mul(r46149, r46148, r46148, MPFR_RNDN);
        mpfr_add(r46150, r46147, r46149, MPFR_RNDN);
        return mpfr_get_d(r46150, MPFR_RNDN);
}

static mpfr_t r46151, r46152, r46153, r46154, r46155, r46156, r46157, r46158;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46151);
        mpfr_init_set_str(r46152, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46153);
        mpfr_init(r46154);
        mpfr_init(r46155);
        mpfr_init(r46156);
        mpfr_init(r46157);
        mpfr_init(r46158);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46151, x, MPFR_RNDN);
        ;
        mpfr_mul(r46153, r46151, r46152, MPFR_RNDN);
        mpfr_mul(r46154, r46151, r46151, MPFR_RNDN);
        mpfr_add(r46155, r46153, r46154, MPFR_RNDN);
        mpfr_set_d(r46156, y, MPFR_RNDN);
        mpfr_mul(r46157, r46156, r46156, MPFR_RNDN);
        mpfr_add(r46158, r46155, r46157, MPFR_RNDN);
        return mpfr_get_d(r46158, MPFR_RNDN);
}

static mpfr_t r46159, r46160, r46161, r46162, r46163, r46164, r46165, r46166;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46159);
        mpfr_init_set_str(r46160, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46161);
        mpfr_init(r46162);
        mpfr_init(r46163);
        mpfr_init(r46164);
        mpfr_init(r46165);
        mpfr_init(r46166);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46159, x, MPFR_RNDN);
        ;
        mpfr_mul(r46161, r46159, r46160, MPFR_RNDN);
        mpfr_mul(r46162, r46159, r46159, MPFR_RNDN);
        mpfr_add(r46163, r46161, r46162, MPFR_RNDN);
        mpfr_set_d(r46164, y, MPFR_RNDN);
        mpfr_mul(r46165, r46164, r46164, MPFR_RNDN);
        mpfr_add(r46166, r46163, r46165, MPFR_RNDN);
        return mpfr_get_d(r46166, MPFR_RNDN);
}

