#include <kv/doubleint-singular.hpp>

struct Func {
	template <class T> T operator() (const T& x, const T& y) {
		return sqrt(x + y);
	}
};

struct Func_f {
	template <class T> T operator() (const T& x, const T& y) {
		return x + y;
	}
};

struct Func_g {
	template <class T> T operator() (const T& x, const T& y) {
		return T(1);
	}
};

typedef kv::interval<double> itv;

int main()
{
	std::cout.precision(17);

	std::cout << kv::doubleintegral_singular_point(Func_f(), Func_g(), itv(0.), itv(0.), itv("0.1"), itv(0.), itv("0.1"), itv("0.1"), 12, itv(0.5), 1) << "\n";;
}
