#define F(i,j) (cooker_.cook((*this)[max(min(j+v,h_-1),0)][max(min(i+u,w_-1),0)])*(R((i)-a)*R(b-(j))))
#define Z(i,j) ret+=F(i,j)
#define X(i,j) // placeholder... To make box more symetric
#define F(i,j) (cooker_.cook((*this)[max(min(j+v,h_-1),0)][max(min(i+u,w_-1),0)])*(R((i)-a)*R(b-(j))))
#define Z(i,j) ret+=F(i,j)
#define X(i,j) // placeholder... To make box more symetric