 #include <cstdio>
 #include <vector>
 #include <estd/matrix.hpp>
-#include "../include/ecuda/array.hpp"
+//#include "../include/ecuda/array.hpp"
 #include "../include/ecuda/vector.hpp"
 #include "../include/ecuda/matrix.hpp"
 

		return out;
	}
};

__global__ void linearize( const ecuda::matrix<Coordinate> matrix, ecuda::vector<Coordinate> vector ) {
	std::size_t index = 0;

	}
};
*/
template<typename T>
struct coord_t {
	T x, y;
	HOST DEVICE coord_t( const T& x = T(), const T& y = T() ) : x(x), y(y) {}
	bool operator==( const coord_t& other ) const { return x == other.x and y == other.y; }
	bool operator!=( const coord_t& other ) const { return !operator==(other); }
	friend std::ostream& operator<<( std::ostream& out, const coord_t& coord ) {
		out << "[" << coord.x << "," << coord.y << "]";
		return out;
	}
};

typedef coord_t<double> Coordinate;
/*
struct Coordinate {
	int x, y;
	HOST DEVICE Coordinate( const int x = 0, const int y = 0 ) : x(x), y(y) {}
