#include <pw/core/quaternion.hpp>
#include <pw/core/serialize.hpp>

#include <iostream>

int main(int argc,char **argv) {

	pw::quaternion_<float> qf;

	std::cout << "qf = " << pw::serialize::matrix(qf) << std::endl;
    std::cout << "qf.matrix() = " << pw::serialize::matrix(qf.to_matrix()) << std::endl;

    std::cout << "qf.squared_norm() = " << qf.squared_norm() << std::endl;
//    std::cout << "qf.dot(qf) = " << qf.dot(qf) << std::endl;
	std::cout << "qf.conjugate() = " << pw::serialize::matrix(qf.conjugate()) << std::endl;

	pw::quaternionf qc = qf.conjugate();
	std::cout << "qf.conjugate() (qc) = " << pw::serialize::matrix(qc.to_matrix()) << std::endl;

	pw::quaternionf qi = qf.inverse();
	std::cout << "qf.inverse() (qi) = " << pw::serialize::matrix(qi.to_matrix()) << std::endl;

	pw::quaternionf qmid = pw::quaternionf::normalized_lerp(qi,qf,0.5f);
//	std::cout << "qmid.dot() (half between qf and qi) = " << pw::rad_to_deg(quaternionf::angle_between()) << std::endl;




    return 0;
}
