REQUIRE_TRUE(correctH0Shape==h0Shape,0,"LSTM operation: wrong shape of initial cell output, expected is %s, but got %s instead !",correctH0Shape.c_str(),h0Shape.c_str());
REQUIRE_TRUE(correctC0Shape==c0Shape,0,"LSTM operation: wrong shape of initial cell state, expected is %s, but got %s instead !",correctC0Shape.c_str(),c0Shape.c_str());
REQUIRE_TRUE(correctWxShape==WxShape,0,"LSTM operation: wrong shape of input-to-hidden weights, expected is %s, but got %s instead !",correctWxShape.c_str(),WxShape.c_str());
REQUIRE_TRUE(correctWhShape==WhShape,0,"LSTM operation: wrong shape of hidden-to-hidden weights, expected is %s, but got %s instead !",correctWhShape.c_str(),WhShape.c_str());
REQUIRE_TRUE(correctWcShape==WcShape,0,"LSTM operation: wrong shape of diagonal weights for peephole connections, expected is %s, but got %s instead !",correctWcShape.c_str(),WcShape.c_str());
REQUIRE_TRUE(correctWpShape==WpShape,0,"LSTM operation: wrong shape of projection weights, expected is %s, but got %s instead !",correctWpShape.c_str(),WpShape.c_str());
REQUIRE_TRUE(correctBShape==bShape,0,"LSTM operation: wrong shape of biases, expected is %s, but got %s instead !",correctBShape.c_str(),bShape.c_str());
REQUIRE_TRUE(!(!projection&&numUnits!=numProj),0,"LSTM operation: projection option is switched of, and in this case output dimensionality for the projection matrices (numProj) must be equal to number of units in lstmCell !");
REQUIRE_TRUE(correctH0Shape==h0Shape,0,"LSTM operation: wrong shape of initial cell output, expected is %s, but got %s instead !",correctH0Shape.c_str(),h0Shape.c_str());
REQUIRE_TRUE(correctC0Shape==c0Shape,0,"LSTM operation: wrong shape of initial cell state, expected is %s, but got %s instead !",correctC0Shape.c_str(),c0Shape.c_str());
REQUIRE_TRUE(correctWxShape==WxShape,0,"LSTM operation: wrong shape of input-to-hidden weights, expected is %s, but got %s instead !",correctWxShape.c_str(),WxShape.c_str());
REQUIRE_TRUE(correctWhShape==WhShape,0,"LSTM operation: wrong shape of hidden-to-hidden weights, expected is %s, but got %s instead !",correctWhShape.c_str(),WhShape.c_str());
REQUIRE_TRUE(correctWcShape==WcShape,0,"LSTM operation: wrong shape of diagonal weights for peephole connections, expected is %s, but got %s instead !",correctWcShape.c_str(),WcShape.c_str());
REQUIRE_TRUE(correctWpShape==WpShape,0,"LSTM operation: wrong shape of projection weights, expected is %s, but got %s instead !",correctWpShape.c_str(),WpShape.c_str());
REQUIRE_TRUE(correctBShape==bShape,0,"LSTM operation: wrong shape of biases, expected is %s, but got %s instead !",correctBShape.c_str(),bShape.c_str());