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

char *name = "VandenBroeck and Keller, Equation (23)";

double f_if(float F, float B, float x) {
        float r20624 = x;
        float r20625 = 1;
        float r20626 = B;
        float r20627 = tan(r20626);
        float r20628 = r20625 / r20627;
        float r20629 = r20624 * r20628;
        float r20630 = -r20629;
        float r20631 = F;
        float r20632 = sin(r20626);
        float r20633 = r20631 / r20632;
        float r20634 = r20631 * r20631;
        float r20635 = 2;
        float r20636 = r20634 + r20635;
        float r20637 = r20635 * r20624;
        float r20638 = r20636 + r20637;
        float r20639 = r20625 / r20635;
        float r20640 = -r20639;
        float r20641 = pow(r20638, r20640);
        float r20642 = r20633 * r20641;
        float r20643 = r20630 + r20642;
        return r20643;
}

double f_id(double F, double B, double x) {
        double r20644 = x;
        double r20645 = 1;
        double r20646 = B;
        double r20647 = tan(r20646);
        double r20648 = r20645 / r20647;
        double r20649 = r20644 * r20648;
        double r20650 = -r20649;
        double r20651 = F;
        double r20652 = sin(r20646);
        double r20653 = r20651 / r20652;
        double r20654 = r20651 * r20651;
        double r20655 = 2;
        double r20656 = r20654 + r20655;
        double r20657 = r20655 * r20644;
        double r20658 = r20656 + r20657;
        double r20659 = r20645 / r20655;
        double r20660 = -r20659;
        double r20661 = pow(r20658, r20660);
        double r20662 = r20653 * r20661;
        double r20663 = r20650 + r20662;
        return r20663;
}


double f_of(float F, float B, float x) {
        float r20664 = x;
        float r20665 = -r20664;
        float r20666 = B;
        float r20667 = tan(r20666);
        float r20668 = r20665 / r20667;
        float r20669 = 1;
        float r20670 = r20664 + r20664;
        float r20671 = 2;
        float r20672 = F;
        float r20673 = r20672 * r20672;
        float r20674 = r20671 + r20673;
        float r20675 = r20670 + r20674;
        float r20676 = r20669 / r20671;
        float r20677 = pow(r20675, r20676);
        float r20678 = r20669 / r20677;
        float r20679 = r20678 * r20672;
        float r20680 = sin(r20666);
        float r20681 = r20669 / r20680;
        float r20682 = r20679 * r20681;
        float r20683 = r20668 + r20682;
        return r20683;
}

double f_od(double F, double B, double x) {
        double r20684 = x;
        double r20685 = -r20684;
        double r20686 = B;
        double r20687 = tan(r20686);
        double r20688 = r20685 / r20687;
        double r20689 = 1;
        double r20690 = r20684 + r20684;
        double r20691 = 2;
        double r20692 = F;
        double r20693 = r20692 * r20692;
        double r20694 = r20691 + r20693;
        double r20695 = r20690 + r20694;
        double r20696 = r20689 / r20691;
        double r20697 = pow(r20695, r20696);
        double r20698 = r20689 / r20697;
        double r20699 = r20698 * r20692;
        double r20700 = sin(r20686);
        double r20701 = r20689 / r20700;
        double r20702 = r20699 * r20701;
        double r20703 = r20688 + r20702;
        return r20703;
}

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 r20704, r20705, r20706, r20707, r20708, r20709, r20710, r20711, r20712, r20713, r20714, r20715, r20716, r20717, r20718, r20719, r20720, r20721, r20722, r20723;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r20704);
        mpfr_init_set_str(r20705, "1", 10, MPFR_RNDN);
        mpfr_init(r20706);
        mpfr_init(r20707);
        mpfr_init(r20708);
        mpfr_init(r20709);
        mpfr_init(r20710);
        mpfr_init(r20711);
        mpfr_init(r20712);
        mpfr_init(r20713);
        mpfr_init(r20714);
        mpfr_init_set_str(r20715, "2", 10, MPFR_RNDN);
        mpfr_init(r20716);
        mpfr_init(r20717);
        mpfr_init(r20718);
        mpfr_init(r20719);
        mpfr_init(r20720);
        mpfr_init(r20721);
        mpfr_init(r20722);
        mpfr_init(r20723);
}

double f_im(double F, double B, double x) {
        mpfr_set_d(r20704, x, MPFR_RNDN);
        ;
        mpfr_set_d(r20706, B, MPFR_RNDN);
        mpfr_tan(r20707, r20706, MPFR_RNDN);
        mpfr_div(r20708, r20705, r20707, MPFR_RNDN);
        mpfr_mul(r20709, r20704, r20708, MPFR_RNDN);
        mpfr_neg(r20710, r20709, MPFR_RNDN);
        mpfr_set_d(r20711, F, MPFR_RNDN);
        mpfr_sin(r20712, r20706, MPFR_RNDN);
        mpfr_div(r20713, r20711, r20712, MPFR_RNDN);
        mpfr_mul(r20714, r20711, r20711, MPFR_RNDN);
        ;
        mpfr_add(r20716, r20714, r20715, MPFR_RNDN);
        mpfr_mul(r20717, r20715, r20704, MPFR_RNDN);
        mpfr_add(r20718, r20716, r20717, MPFR_RNDN);
        mpfr_div(r20719, r20705, r20715, MPFR_RNDN);
        mpfr_neg(r20720, r20719, MPFR_RNDN);
        mpfr_pow(r20721, r20718, r20720, MPFR_RNDN);
        mpfr_mul(r20722, r20713, r20721, MPFR_RNDN);
        mpfr_add(r20723, r20710, r20722, MPFR_RNDN);
        return mpfr_get_d(r20723, MPFR_RNDN);
}

static mpfr_t r20724, r20725, r20726, r20727, r20728, r20729, r20730, r20731, r20732, r20733, r20734, r20735, r20736, r20737, r20738, r20739, r20740, r20741, r20742, r20743;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r20724);
        mpfr_init(r20725);
        mpfr_init(r20726);
        mpfr_init(r20727);
        mpfr_init(r20728);
        mpfr_init_set_str(r20729, "1", 10, MPFR_RNDN);
        mpfr_init(r20730);
        mpfr_init_set_str(r20731, "2", 10, MPFR_RNDN);
        mpfr_init(r20732);
        mpfr_init(r20733);
        mpfr_init(r20734);
        mpfr_init(r20735);
        mpfr_init(r20736);
        mpfr_init(r20737);
        mpfr_init(r20738);
        mpfr_init(r20739);
        mpfr_init(r20740);
        mpfr_init(r20741);
        mpfr_init(r20742);
        mpfr_init(r20743);
}

double f_fm(double F, double B, double x) {
        mpfr_set_d(r20724, x, MPFR_RNDN);
        mpfr_neg(r20725, r20724, MPFR_RNDN);
        mpfr_set_d(r20726, B, MPFR_RNDN);
        mpfr_tan(r20727, r20726, MPFR_RNDN);
        mpfr_div(r20728, r20725, r20727, MPFR_RNDN);
        ;
        mpfr_add(r20730, r20724, r20724, MPFR_RNDN);
        ;
        mpfr_set_d(r20732, F, MPFR_RNDN);
        mpfr_mul(r20733, r20732, r20732, MPFR_RNDN);
        mpfr_add(r20734, r20731, r20733, MPFR_RNDN);
        mpfr_add(r20735, r20730, r20734, MPFR_RNDN);
        mpfr_div(r20736, r20729, r20731, MPFR_RNDN);
        mpfr_pow(r20737, r20735, r20736, MPFR_RNDN);
        mpfr_div(r20738, r20729, r20737, MPFR_RNDN);
        mpfr_mul(r20739, r20738, r20732, MPFR_RNDN);
        mpfr_sin(r20740, r20726, MPFR_RNDN);
        mpfr_div(r20741, r20729, r20740, MPFR_RNDN);
        mpfr_mul(r20742, r20739, r20741, MPFR_RNDN);
        mpfr_add(r20743, r20728, r20742, MPFR_RNDN);
        return mpfr_get_d(r20743, MPFR_RNDN);
}

static mpfr_t r20744, r20745, r20746, r20747, r20748, r20749, r20750, r20751, r20752, r20753, r20754, r20755, r20756, r20757, r20758, r20759, r20760, r20761, r20762, r20763;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r20744);
        mpfr_init(r20745);
        mpfr_init(r20746);
        mpfr_init(r20747);
        mpfr_init(r20748);
        mpfr_init_set_str(r20749, "1", 10, MPFR_RNDN);
        mpfr_init(r20750);
        mpfr_init_set_str(r20751, "2", 10, MPFR_RNDN);
        mpfr_init(r20752);
        mpfr_init(r20753);
        mpfr_init(r20754);
        mpfr_init(r20755);
        mpfr_init(r20756);
        mpfr_init(r20757);
        mpfr_init(r20758);
        mpfr_init(r20759);
        mpfr_init(r20760);
        mpfr_init(r20761);
        mpfr_init(r20762);
        mpfr_init(r20763);
}

double f_dm(double F, double B, double x) {
        mpfr_set_d(r20744, x, MPFR_RNDN);
        mpfr_neg(r20745, r20744, MPFR_RNDN);
        mpfr_set_d(r20746, B, MPFR_RNDN);
        mpfr_tan(r20747, r20746, MPFR_RNDN);
        mpfr_div(r20748, r20745, r20747, MPFR_RNDN);
        ;
        mpfr_add(r20750, r20744, r20744, MPFR_RNDN);
        ;
        mpfr_set_d(r20752, F, MPFR_RNDN);
        mpfr_mul(r20753, r20752, r20752, MPFR_RNDN);
        mpfr_add(r20754, r20751, r20753, MPFR_RNDN);
        mpfr_add(r20755, r20750, r20754, MPFR_RNDN);
        mpfr_div(r20756, r20749, r20751, MPFR_RNDN);
        mpfr_pow(r20757, r20755, r20756, MPFR_RNDN);
        mpfr_div(r20758, r20749, r20757, MPFR_RNDN);
        mpfr_mul(r20759, r20758, r20752, MPFR_RNDN);
        mpfr_sin(r20760, r20746, MPFR_RNDN);
        mpfr_div(r20761, r20749, r20760, MPFR_RNDN);
        mpfr_mul(r20762, r20759, r20761, MPFR_RNDN);
        mpfr_add(r20763, r20748, r20762, MPFR_RNDN);
        return mpfr_get_d(r20763, MPFR_RNDN);
}

