#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define USE_GMP
#define USE_MPFR
#include "bnc.h"

void dfunc(mpf_t ret, mpf_t x)
{
	mpf_mul(ret, x, x);
}

int main()
{
	mpf_t ans, start, end, ret;

	set_bnc_default_prec_decimal(100);

	mpf_init(ans);
	mpf_init(start);
	mpf_init(end);
	mpf_init(ret);

	mpf_set_d(start, 0.0);
	mpf_set_d(end, 1.0);

	mpf_trapezoidal_fs(ans, start, end, dfunc, 2);
	mpf_out_str(stdout, 10, 0, ans); printf("\n");
	mpf_trapezoidal_fs(ans, start, end, dfunc, 4);
	mpf_out_str(stdout, 10, 0, ans); printf("\n");
	mpf_trapezoidal_fs(ans, start, end, dfunc, 8);
	mpf_out_str(stdout, 10, 0, ans); printf("\n");
	mpf_trapezoidal_fs(ans, start, end, dfunc, 16);
	mpf_out_str(stdout, 10, 0, ans); printf("\n");

	mpf_clear(ans);
	mpf_clear(start);
	mpf_clear(end);
	mpf_clear(ret);

	return EXIT_SUCCESS;
}
