#include "vector.h"
#include <stdio.h>

int main() {
	vector4 v1(1,2,3,4);
	vector4 v2(5,6,7,8);

	vector4 v3;
	mat4x4 m1, m2, m3;

	m1.load_identity();
	m2.load_identity();

	printf("v1 = (%f, %f, %f, %f)\n", v1.x, v1.y, v1.z, v1.w);
	printf("v2 = (%f, %f, %f, %f)\n", v2.x, v2.y, v2.z, v2.w);

	v3 = v1 + v2;

	printf("add = (%f, %f, %f, %f)\n", v3.x, v3.y, v3.z, v3.w);

	v3 = v1 - v2;

	printf("sub = (%f, %f, %f, %f)\n", v3.x, v3.y, v3.z, v3.w);

	v3 = v1 * v2;
	
	printf("dot = (%f, %f, %f, %f)\n", v3.x, v3.y, v3.z, v3.w);

	v3.cross(v1, v2);

	printf("cross = (%f, %f, %f, %f)\n", v3.x, v3.y, v3.z, v3.w);

	v3 = v1 * m1;
	
	printf("vecmat = (%f, %f, %f, %f)\n", v3.x, v3.y, v3.z, v3.w);

	m3 = m1 * m2;

	printf("matmul = (%f, %f, %f, %f)\n",  
			m3.m[0][0], m3.m[0][1], m3.m[0][2], m3.m[0][3]);
	printf("         (%f, %f, %f, %f)\n",
			m3.m[1][0], m3.m[1][1], m3.m[1][2], m3.m[1][3]);
	printf("         (%f, %f, %f, %f)\n",
			m3.m[2][0], m3.m[2][1], m3.m[2][2], m3.m[2][3]);
	printf("         (%f, %f, %f, %f)\n",
			m3.m[3][0], m3.m[3][1], m3.m[3][2], m3.m[3][3]);

	return 0;
}