REQUIRE_TRUE(dimensions.size()<=input->rankOf(),0,"REDUCE_MAX OP: the number of dimensions to reduce along must be <= input array rank, but got %i instead",dimensions.size());
for(constauto&item:dimensions)
REQUIRE_TRUE(item>=-input->shapeInfo()[0]&&item<input->shapeInfo()[0],0,"REDUCE_MAX OP: the input dimension to reduce along must be in range [-%i, %i), but got %i instead !",input->rankOf(),input->rankOf(),item);
REQUIRE_TRUE(dimensions.size()<=inputShape->at(0)[0],0,"REDUCE_MAX OP: the number of dimensions to reduce along must be <= input array rank, but got %i instead",dimensions.size());
for(constauto&item:dimensions)
REQUIRE_TRUE(item>=-inputShape->at(0)[0]&&item<inputShape->at(0)[0],0,"REDUCE_MAX OP: the input dimension to reduce along must be in range [-%i, %i), but got %i instead !",inputShape->at(0)[0],inputShape->at(0)[0],item);
REQUIRE_TRUE(dimensions.size()<=input->rankOf(),0,"REDUCE_MAX_BP OP: the number of dimensions to reduce along must be <= input array rank, but got %i instead",dimensions.size());
for(constauto&item:dimensions)
REQUIRE_TRUE(item>=-input->shapeInfo()[0]&&item<input->shapeInfo()[0],0,"REDUCE_MAX_BP OP: the input dimension to reduce along must be in range [-%i, %i), but got %i instead !",input->rankOf(),input->rankOf(),item);
REQUIRE_TRUE(dimensions.size()<=inputShape->at(0)[0],0,"REDUCE_MAX_BP OP: the number of dimensions to reduce along must be <= input array rank, but got %i instead",dimensions.size());
for(constauto&item:dimensions)
REQUIRE_TRUE(item>=-inputShape->at(0)[0]&&item<inputShape->at(0)[0],0,"REDUCE_MAX_BP OP: the input dimension to reduce along must be in range [-%i, %i), but got %i instead !",inputShape->at(0)[0],inputShape->at(0)[0],item);