#include <kv/autodif.hpp>

kv::autodif<double> f(const kv::autodif<double>& x) {
	kv::autodif<double> tmp;

	tmp = x * x - 1.;
	return cos(tmp + sin(tmp));
}

int main()
{
	kv::autodif<double> a1, a2;
	double d1, d2;

	a1 = kv::autodif<double>::init(1.5);

	a2 = f(a1);

	kv::autodif<double>::split(a2, d1, d2);

	std::cout << d1 << "\n"; // f(1.5)
	std::cout << d2 << "\n"; // f'(1.5)
}
