diff --git a/ARM.CMSIS-NN.pdsc b/ARM.CMSIS-NN.pdsc
index 4221fbf0..6f00e568 100644
--- a/ARM.CMSIS-NN.pdsc
+++ b/ARM.CMSIS-NN.pdsc
@@ -104,6 +104,7 @@
+
@@ -127,6 +128,8 @@
+
+
diff --git a/Include/Internal/arm_nn_compiler.h b/Include/Internal/arm_nn_compiler.h
index a03caef7..e6f1c8e0 100644
--- a/Include/Internal/arm_nn_compiler.h
+++ b/Include/Internal/arm_nn_compiler.h
@@ -21,8 +21,8 @@
* Title: arm_nn_compiler.h
* Description: Generic compiler header
*
- * $Date: 16 January 2024
- * $Revision: V.1.2.2
+ * $Date: 20 June 2024
+ * $Revision: V.1.3.0
*
* Target : Arm(R) M-Profile Architecture
* -------------------------------------------------------------------- */
@@ -189,6 +189,7 @@ __STATIC_FORCEINLINE uint8_t CLZ(uint32_t value)
// Common intrinsics
#define SMLABB __smlabb
#define SMLATT __smlatt
+ #define SMLALD __smlald
#define QADD __qadd
#define QSUB8 __qsub8
#define QSUB16 __qsub16
diff --git a/Include/arm_nn_types.h b/Include/arm_nn_types.h
index 24038873..02c22b67 100644
--- a/Include/arm_nn_types.h
+++ b/Include/arm_nn_types.h
@@ -22,8 +22,8 @@
* Description: Public header file to contain the CMSIS-NN structs for the
* TensorFlowLite micro compliant functions
*
- * $Date: 11 April 2024
- * $Revision: V.3.2.0
+ * $Date: 19 June 2024
+ * $Revision: V.3.3.0
*
* Target : Arm(R) M-Profile Architecture
* -------------------------------------------------------------------- */
@@ -165,11 +165,19 @@ typedef struct
typedef struct
{
int32_t input_offset; /**< The negative of the zero value for the input tensor */
- int32_t filter_offset; /**< The negative of the zero value for the filter tensor. Not used */
+ int32_t filter_offset; /**< The negative of the zero value for the filter tensor */
int32_t output_offset; /**< The negative of the zero value for the output tensor */
cmsis_nn_activation activation;
} cmsis_nn_fc_params;
+/** CMSIS-NN object for Batch Matmul layer parameters */
+typedef struct
+{
+ const bool adj_x;
+ const bool adj_y;
+ cmsis_nn_fc_params fc_params;
+} cmsis_nn_bmm_params;
+
/** CMSIS-NN object for SVDF layer parameters */
typedef struct
{
diff --git a/Include/arm_nnfunctions.h b/Include/arm_nnfunctions.h
index fd3fdd18..d992e80c 100644
--- a/Include/arm_nnfunctions.h
+++ b/Include/arm_nnfunctions.h
@@ -21,8 +21,8 @@
* Title: arm_nnfunctions.h
* Description: Public header file for CMSIS NN Library
*
- * $Date: 04 Jun 2024
- * $Revision: V.16.1.0
+ * $Date: 19 June 2024
+ * $Revision: V.16.2.0
*
* Target : Arm(R) M-Profile Architecture
* -------------------------------------------------------------------- */
@@ -2604,6 +2604,80 @@ arm_cmsis_nn_status arm_lstm_unidirectional_s16(const int16_t *input,
const cmsis_nn_lstm_params *params,
cmsis_nn_lstm_context *buffers);
+/**
+ * @brief Batch matmul function with 8 bit input and output.
+ *
+ * @param[in] ctx Temporary scratch buffer
+ * The caller is expected to clear the buffer, if applicable, for security reasons.
+ * Optional function arm_fully_connected_s8_get_buffer_size() provides the buffer
+ * size if an additional buffer is required.
+ * @param[in] bmm_params Batch matmul Parameters
+ * Adjoint flags are currently unused.
+ * @param[in] quant_params Quantization parameters
+ * @param[in] input_lhs_dims Input lhs tensor dimensions.
+ * This should be NHWC where lhs C = rhs C
+ * @param[in] input_lhs Pointer to input tensor
+ * @param[in] input_rhs_dims Input lhs tensor dimensions.
+ * This is expected to be transposed so
+ * should be NHWC where lhs C = rhs C
+ * @param[in] input_rhs Pointer to transposed input tensor
+ * @param[in] output_dims Output tensor dimensions
+ * @param[out] output Pointer to the output tensor
+ *
+ * @return The function returns ARM_CMSIS_NN_SUCCESS
+ *
+ * @details
+ * 1. Supported framework: TensorFlow Lite Micro
+ * 2. Performs row * row matrix multiplication with the RHS transposed.
+ *
+ */
+arm_cmsis_nn_status arm_batch_matmul_s8(const cmsis_nn_context *ctx,
+ const cmsis_nn_bmm_params *bmm_params,
+ const cmsis_nn_per_tensor_quant_params *quant_params,
+ const cmsis_nn_dims *input_lhs_dims,
+ const int8_t *input_lhs,
+ const cmsis_nn_dims *input_rhs_dims,
+ const int8_t *input_rhs,
+ const cmsis_nn_dims *output_dims,
+ int8_t *output);
+
+/**
+ * @brief Batch matmul function with 16 bit input and output.
+ *
+ * @param[in] ctx Temporary scratch buffer
+ * The caller is expected to clear the buffer, if applicable, for security reasons.
+ * Optional function arm_fully_connected_s8_get_buffer_size() provides the buffer
+ * size if an additional buffer is required.
+ * @param[in] bmm_params Batch matmul Parameters
+ * Adjoint flags are currently unused.
+ * @param[in] quant_params Quantization parameters
+ * @param[in] input_lhs_dims Input lhs tensor dimensions.
+ * This should be NHWC where LHS.C = RHS.C
+ * @param[in] input_lhs Pointer to input tensor
+ * @param[in] input_rhs_dims Input lhs tensor dimensions.
+ * This is expected to be transposed so
+ * should be NHWC where LHS.C = RHS.C
+ * @param[in] input_rhs Pointer to transposed input tensor
+ * @param[in] output_dims Output tensor dimensions
+ * @param[out] output Pointer to the output tensor
+ *
+ * @return The function returns ARM_CMSIS_NN_SUCCESS
+ *
+ * @details
+ * 1. Supported framework: TensorFlow Lite Micro
+ * 2. Performs row * row matrix multiplication with the RHS transposed.
+ *
+ */
+arm_cmsis_nn_status arm_batch_matmul_s16(const cmsis_nn_context *ctx,
+ const cmsis_nn_bmm_params *bmm_params,
+ const cmsis_nn_per_tensor_quant_params *quant_params,
+ const cmsis_nn_dims *input_lhs_dims,
+ const int16_t *input_lhs,
+ const cmsis_nn_dims *input_rhs_dims,
+ const int16_t *input_rhs,
+ const cmsis_nn_dims *output_dims,
+ int16_t *output);
+
#ifdef __cplusplus
}
#endif
diff --git a/Include/arm_nnsupportfunctions.h b/Include/arm_nnsupportfunctions.h
index 854a87f3..25bf4d34 100644
--- a/Include/arm_nnsupportfunctions.h
+++ b/Include/arm_nnsupportfunctions.h
@@ -21,8 +21,8 @@
* Title: arm_nnsupportfunctions.h
* Description: Public header file of support functions for CMSIS NN Library
*
- * $Date: 27 May 2024
- * $Revision: V.22.1.0
+ * $Date: 19 June 2024
+ * $Revision: V.22.2.0
*
* Target : Arm(R) M-Profile Architecture
* -------------------------------------------------------------------- */
@@ -704,7 +704,7 @@ arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s8(const int8_t *lhs,
const int32_t rhs_offset);
/**
- * @brief s16 Vector by Matrix (transposed) multiplication
+ * @brief s16 Vector by s8 Matrix (transposed) multiplication
*
* @param[in] lhs Input left-hand side vector
* @param[in] rhs Input right-hand side matrix (transposed)
@@ -731,6 +731,34 @@ arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16(const int16_t *lhs,
const int32_t activation_min,
const int32_t activation_max);
+/**
+ * @brief s16 Vector by s16 Matrix (transposed) multiplication
+ *
+ * @param[in] lhs Input left-hand side vector
+ * @param[in] rhs Input right-hand side matrix (transposed)
+ * @param[in] bias Input bias
+ * @param[out] dst Output vector
+ * @param[in] dst_multiplier Output multiplier
+ * @param[in] dst_shift Output shift
+ * @param[in] rhs_cols Number of columns in the right-hand side input matrix
+ * @param[in] rhs_rows Number of rows in the right-hand side input matrix
+ * @param[in] activation_min Minimum value to clamp the output to. Range: int16
+ * @param[in] activation_max Maximum value to clamp the output to. Range: int16
+ *
+ * @return The function returns ARM_CMSIS_NN_SUCCESS
+ *
+ */
+arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16_s16(const int16_t *lhs,
+ const int16_t *rhs,
+ const int64_t *bias,
+ int16_t *dst,
+ const int32_t dst_multiplier,
+ const int32_t dst_shift,
+ const int32_t rhs_cols,
+ const int32_t rhs_rows,
+ const int32_t activation_min,
+ const int32_t activation_max);
+
/**
* @brief s8 Vector by Matrix (transposed) multiplication with s16 output
*
diff --git a/README.md b/README.md
index 5f76f1c8..a1deaa3f 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,7 @@ Examples are Cortex-M55 or Cortex-M85 configured with MVE.
| DepthwiseConv2D | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| TransposeConv2D | Yes | No | No | Yes | No | No | Yes | No | No |
| Fully Connected | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
+| Batch Matmul | Yes | Yes | No | Yes | Yes | No | Yes | Yes | No |
| Add | Yes | Yes | N/A | Yes | Yes | N/A | Yes | Yes | N/A |
| Mul | Yes | Yes | N/A | Yes | Yes | N/A | Yes | Yes | N/A |
| MaxPooling | Yes | Yes | N/A | Yes | Yes | N/A | Yes | Yes | N/A |
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index f45a08dd..a12f3856 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# SPDX-FileCopyrightText: Copyright 2019-2022 Arm Limited and/or its affiliates
+# SPDX-FileCopyrightText: Copyright 2019-2022, 2024 Arm Limited and/or its affiliates
#
# SPDX-License-Identifier: Apache-2.0
#
@@ -18,7 +18,7 @@
SET(ROOT ${CMSIS_PATH})
-# Select which parts of the CMSIS-DSP must be compiled.
+# Select which parts of the CMSIS-NN must be compiled.
# There are some dependencies between the parts but they are not tracked
# by this cmake. So, enabling some functions may require to enable some
# other ones.
diff --git a/Source/FullyConnectedFunctions/arm_batch_matmul_s16.c b/Source/FullyConnectedFunctions/arm_batch_matmul_s16.c
new file mode 100644
index 00000000..e6ee295a
--- /dev/null
+++ b/Source/FullyConnectedFunctions/arm_batch_matmul_s16.c
@@ -0,0 +1,105 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* ----------------------------------------------------------------------
+ * Project: CMSIS NN Library
+ * Title: arm_nn_batch_matmul_s16.c
+ * Description: Batch matrix multiplication. Does not perform transposes, see header file for details.
+ *
+ * $Date: 19 June 2024
+ * $Revision: V.1.0.0
+ *
+ * Target : Arm(R) M-Profile Architecture
+ *
+ * -------------------------------------------------------------------- */
+#include "arm_nnfunctions.h"
+#include "arm_nnsupportfunctions.h"
+
+/**
+ * @ingroup Public
+ */
+
+/**
+ * @addtogroup FC
+ * @{
+ */
+
+/*
+ * s16 batch matrix multiplication
+ * Refer to header file for details.
+ */
+arm_cmsis_nn_status arm_batch_matmul_s16(const cmsis_nn_context *ctx,
+ const cmsis_nn_bmm_params *bmm_params,
+ const cmsis_nn_per_tensor_quant_params *quant_params,
+ const cmsis_nn_dims *input_lhs_dims,
+ const int16_t *input_lhs,
+ const cmsis_nn_dims *input_rhs_dims,
+ const int16_t *input_rhs,
+ const cmsis_nn_dims *output_dims,
+ int16_t *output)
+{
+ (void)ctx;
+ const int32_t output_batch = output_dims->n;
+ const int32_t output_height = output_dims->h;
+ const int32_t lhs_rows = input_lhs_dims->w;
+ const int32_t rhs_rows = input_rhs_dims->w;
+ const int32_t rhs_cols = input_rhs_dims->c;
+
+ const int32_t inner_lhs_diff = input_lhs_dims->h >= input_rhs_dims->h ? 0 : lhs_rows * rhs_cols;
+ const int32_t inner_rhs_diff = input_rhs_dims->h >= input_lhs_dims->h ? rhs_rows * rhs_cols : 0;
+ const int32_t outer_lhs_diff = input_lhs_dims->n >= input_rhs_dims->n
+ ? inner_lhs_diff
+ : -((lhs_rows * rhs_cols) - inner_lhs_diff) * input_lhs_dims->h;
+ const int32_t outer_rhs_diff = input_rhs_dims->n >= input_lhs_dims->n ? (rhs_rows * rhs_cols) - inner_rhs_diff
+ : -inner_rhs_diff * input_rhs_dims->h;
+
+ const int32_t reduced_multiplier = REDUCE_MULTIPLIER(quant_params->multiplier);
+
+ for (int i_out_batch = 0; i_out_batch < output_batch; i_out_batch++)
+ {
+ for (int i_out_height = 0; i_out_height < output_height; i_out_height++)
+ {
+
+ for (int j = 0; j < lhs_rows; j++)
+ {
+ arm_nn_vec_mat_mult_t_s16_s16(input_lhs,
+ input_rhs,
+ NULL,
+ output,
+ reduced_multiplier,
+ quant_params->shift,
+ rhs_cols,
+ rhs_rows,
+ bmm_params->fc_params.activation.min,
+ bmm_params->fc_params.activation.max);
+ input_lhs += rhs_cols;
+ output += rhs_rows;
+ }
+ input_lhs -= inner_lhs_diff;
+ input_rhs += inner_rhs_diff;
+ }
+ input_lhs += outer_lhs_diff;
+ input_rhs += outer_rhs_diff;
+ }
+
+ return ARM_CMSIS_NN_SUCCESS;
+}
+
+/**
+ * @} end of Doxygen group
+ */
diff --git a/Source/FullyConnectedFunctions/arm_batch_matmul_s8.c b/Source/FullyConnectedFunctions/arm_batch_matmul_s8.c
new file mode 100644
index 00000000..b8d15616
--- /dev/null
+++ b/Source/FullyConnectedFunctions/arm_batch_matmul_s8.c
@@ -0,0 +1,123 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* ----------------------------------------------------------------------
+ * Project: CMSIS NN Library
+ * Title: arm_nn_batch_matmul_s8.c
+ * Description: Batch matrix multiplication. Does not perform transposes, see header file for details.
+ *
+ * $Date: 19 June 2024
+ * $Revision: V.1.0.0
+ *
+ * Target : Arm(R) M-Profile Architecture
+ *
+ * -------------------------------------------------------------------- */
+#include "arm_nnfunctions.h"
+#include "arm_nnsupportfunctions.h"
+
+/**
+ * @ingroup Public
+ */
+
+/**
+ * @addtogroup FC
+ * @{
+ */
+
+/*
+ * s8 batchmatrix multiplication
+ * Refer to header file for details.
+ */
+arm_cmsis_nn_status arm_batch_matmul_s8(const cmsis_nn_context *ctx,
+ const cmsis_nn_bmm_params *bmm_params,
+ const cmsis_nn_per_tensor_quant_params *quant_params,
+ const cmsis_nn_dims *input_lhs_dims,
+ const int8_t *input_lhs,
+ const cmsis_nn_dims *input_rhs_dims,
+ const int8_t *input_rhs,
+ const cmsis_nn_dims *output_dims,
+ int8_t *output)
+{
+ (void)ctx;
+#if defined(ARM_MATH_MVEI)
+ if (ctx->buf == NULL)
+ {
+ return ARM_CMSIS_NN_ARG_ERROR;
+ }
+ int32_t *vector_sum_buf = (int32_t *)ctx->buf;
+#endif
+ const int32_t output_batch = output_dims->n;
+ const int32_t output_height = output_dims->h;
+ const int32_t lhs_rows = input_lhs_dims->w;
+ const int32_t rhs_rows = input_rhs_dims->w;
+ const int32_t rhs_cols = input_rhs_dims->c;
+
+ const int32_t inner_lhs_diff = input_lhs_dims->h >= input_rhs_dims->h ? 0 : lhs_rows * rhs_cols;
+ const int32_t inner_rhs_diff = input_rhs_dims->h >= input_lhs_dims->h ? rhs_rows * rhs_cols : 0;
+ const int32_t outer_lhs_diff = input_lhs_dims->n >= input_rhs_dims->n
+ ? inner_lhs_diff
+ : -((lhs_rows * rhs_cols) - inner_lhs_diff) * input_lhs_dims->h;
+ const int32_t outer_rhs_diff = input_rhs_dims->n >= input_lhs_dims->n ? (rhs_rows * rhs_cols) - inner_rhs_diff
+ : -inner_rhs_diff * input_rhs_dims->h;
+
+ for (int i_out_batch = 0; i_out_batch < output_batch; i_out_batch++)
+ {
+ for (int i_out_height = 0; i_out_height < output_height; i_out_height++)
+ {
+
+#if defined(ARM_MATH_MVEI)
+ arm_vector_sum_s8(vector_sum_buf, rhs_cols, rhs_rows, input_rhs, 1, NULL);
+#endif
+ for (int i_lhs_rows = 0; i_lhs_rows < lhs_rows; i_lhs_rows++)
+ {
+ arm_nn_vec_mat_mult_t_s8(input_lhs,
+ input_rhs,
+#if defined(ARM_MATH_MVEI)
+ vector_sum_buf,
+#else
+ NULL,
+#endif
+ NULL,
+ output,
+ bmm_params->fc_params.input_offset,
+ bmm_params->fc_params.output_offset,
+ quant_params->multiplier,
+ quant_params->shift,
+ rhs_cols,
+ rhs_rows,
+ bmm_params->fc_params.activation.min,
+ bmm_params->fc_params.activation.max,
+ 1,
+ bmm_params->fc_params.filter_offset);
+
+ input_lhs += rhs_cols;
+ output += rhs_rows;
+ }
+ input_lhs -= inner_lhs_diff;
+ input_rhs += inner_rhs_diff;
+ }
+ input_lhs += outer_lhs_diff;
+ input_rhs += outer_rhs_diff;
+ }
+
+ return ARM_CMSIS_NN_SUCCESS;
+}
+
+/**
+ * @} end of Doxygen group
+ */
diff --git a/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16.c b/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16.c
index 4c7983e2..db0a8d02 100644
--- a/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16.c
+++ b/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16.c
@@ -19,10 +19,10 @@
/* ----------------------------------------------------------------------
* Project: CMSIS NN Library
* Title: arm_nn_vec_mat_mult_t_s16
- * Description: s16 vector by matrix (transposed) multiplication
+ * Description: s16 vector by s8 matrix (transposed) multiplication
*
- * $Date: 22 March 2024
- * $Revision: V.2.3.0
+ * $Date: 19 June 2024
+ * $Revision: V.2.4.0
*
* Target : Arm(R) M-Profile Architecture
*
@@ -40,7 +40,7 @@
*/
/*
- * s16 vector(lhs) by matrix (transposed) multiplication
+ * s16 vector(lhs) by s8 matrix (transposed) multiplication
*
* Refer header file for details.
*
@@ -351,8 +351,8 @@ arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16(const int16_t *lhs,
result = arm_nn_requantize_s64(result, dst_multiplier, dst_shift);
// Clamp the result
- result = ((result) > (activation_min) ? (result) : (activation_min));
- result = ((result) < (activation_max) ? (result) : (activation_max));
+ result = MAX(result, activation_min);
+ result = MIN(result, activation_max);
*dst++ = (int16_t)result;
rhs += rhs_cols;
diff --git a/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16_s16.c b/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16_s16.c
new file mode 100644
index 00000000..3bf5979e
--- /dev/null
+++ b/Source/NNSupportFunctions/arm_nn_vec_mat_mult_t_s16_s16.c
@@ -0,0 +1,324 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2020-2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* ----------------------------------------------------------------------
+ * Project: CMSIS NN Library
+ * Title: arm_nn_vec_mat_mult_t_s16_s16
+ * Description: s16 vector by s16 matrix (transposed) multiplication
+ *
+ * $Date: 19 June 2024
+ * $Revision: V.1.0.0
+ *
+ * Target : Arm(R) M-Profile Architecture
+ *
+ * -------------------------------------------------------------------- */
+
+#include "arm_nnsupportfunctions.h"
+/**
+ * @ingroup groupSupport
+ */
+
+/**
+ * @addtogroup supportFC
+ * @{
+ */
+
+/*
+ * s16 vector(lhs) by s16 matrix (transposed) multiplication
+ *
+ * Refer header file for details.
+ *
+ */
+arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16_s16(const int16_t *lhs,
+ const int16_t *rhs,
+ const int64_t *bias,
+ int16_t *dst,
+ const int32_t dst_multiplier,
+ const int32_t dst_shift,
+ const int32_t rhs_cols,
+ const int32_t rhs_rows,
+ const int32_t activation_min,
+ const int32_t activation_max)
+{
+#if defined(ARM_MATH_DSP)
+
+ #if defined(ARM_MATH_MVEI)
+ int32_t row_loop_cnt = rhs_rows / 4;
+ int32_t col_loop_cnt = (rhs_cols + 7) / 8;
+
+ for (int32_t i_row_loop_count = 0; i_row_loop_count < row_loop_cnt; i_row_loop_count++)
+ {
+ int32_t col_cnt = rhs_cols;
+
+ const int16_t *lhs_ptr = lhs;
+ const int16_t *rhs_ptr_0 = rhs;
+ const int16_t *rhs_ptr_1 = rhs + rhs_cols;
+ const int16_t *rhs_ptr_2 = rhs + rhs_cols * 2;
+ const int16_t *rhs_ptr_3 = rhs + rhs_cols * 3;
+
+ int64_t result_0 = 0;
+ int64_t result_1 = 0;
+ int64_t result_2 = 0;
+ int64_t result_3 = 0;
+
+ for (int i_col_loop_cnt = 0; i_col_loop_cnt < col_loop_cnt; i_col_loop_cnt++)
+ {
+ mve_pred16_t pred = vctp16q(col_cnt);
+ col_cnt -= 8;
+
+ int16x8_t lhs_input = vldrhq_z_s16(lhs_ptr, pred);
+
+ int16x8_t rhs_input_0 = vldrhq_z_s16(rhs_ptr_0, pred);
+ int16x8_t rhs_input_1 = vldrhq_z_s16(rhs_ptr_1, pred);
+ int16x8_t rhs_input_2 = vldrhq_z_s16(rhs_ptr_2, pred);
+ int16x8_t rhs_input_3 = vldrhq_z_s16(rhs_ptr_3, pred);
+
+ result_0 = vmlaldavaq_s16(result_0, lhs_input, rhs_input_0);
+ result_1 = vmlaldavaq_s16(result_1, lhs_input, rhs_input_1);
+ result_2 = vmlaldavaq_s16(result_2, lhs_input, rhs_input_2);
+ result_3 = vmlaldavaq_s16(result_3, lhs_input, rhs_input_3);
+
+ lhs_ptr += 8;
+
+ rhs_ptr_0 += 8;
+ rhs_ptr_1 += 8;
+ rhs_ptr_2 += 8;
+ rhs_ptr_3 += 8;
+ }
+
+ if (bias)
+ {
+ result_0 += *bias++;
+ result_1 += *bias++;
+ result_2 += *bias++;
+ result_3 += *bias++;
+ }
+
+ int32_t tmp;
+ tmp = arm_nn_requantize_s64(result_0, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ tmp = 0;
+ tmp = arm_nn_requantize_s64(result_1, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ tmp = 0;
+ tmp = arm_nn_requantize_s64(result_2, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ tmp = 0;
+ tmp = arm_nn_requantize_s64(result_3, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ rhs += 4 * rhs_cols;
+ }
+
+ for (int8_t rows_left = rhs_rows & 0x3; rows_left > 0; rows_left--)
+ {
+ int64_t result = 0;
+
+ col_loop_cnt = (rhs_cols + 7) / 8;
+
+ const int16_t *lhs_ptr = lhs;
+ const int16_t *rhs_ptr = rhs;
+
+ int32_t col_cnt = rhs_cols;
+
+ for (int i_col_loop_cnt = 0; i_col_loop_cnt < col_loop_cnt; i_col_loop_cnt++)
+ {
+ mve_pred16_t pred = vctp16q(col_cnt);
+ col_cnt -= 8;
+
+ int16x8_t lhs_input = vldrhq_z_s16(lhs_ptr, pred);
+ int16x8_t rhs_input = vldrhq_z_s16(rhs_ptr, pred);
+
+ result = vmlaldavaq_p_s16(result, lhs_input, rhs_input, pred);
+
+ lhs_ptr += 8;
+ rhs_ptr += 8;
+ }
+
+ if (bias)
+ {
+ result += *bias++;
+ }
+
+ int32_t tmp = 0;
+ tmp = arm_nn_requantize_s64(result, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ rhs += rhs_cols;
+ }
+
+ #else // ARM_MATH_MVEI
+
+ const int32_t row_loop_cnt = rhs_rows / 2;
+
+ for (int32_t i = 0; i < row_loop_cnt; i++)
+ {
+
+ int64_t acc_0 = 0;
+ int64_t acc_1 = 0;
+
+ const int32_t col_loop_cnt = rhs_cols / 4;
+
+ const int16_t *lhs_vec = lhs;
+ const int16_t *rhs_0 = rhs;
+ const int16_t *rhs_1 = rhs + rhs_cols;
+ rhs += 2 * rhs_cols;
+
+ for (int j = col_loop_cnt; j != 0; j--)
+ {
+ int32_t ker_0, ker_1, vec_part_0, vec_part_1;
+
+ vec_part_0 = arm_nn_read_q15x2_ia(&lhs_vec);
+ vec_part_1 = arm_nn_read_q15x2_ia(&lhs_vec);
+
+ ker_0 = arm_nn_read_q15x2_ia(&rhs_0);
+ ker_1 = arm_nn_read_q15x2_ia(&rhs_0);
+
+ acc_0 = SMLALD(ker_0, vec_part_0, acc_0);
+ acc_0 = SMLALD(ker_1, vec_part_1, acc_0);
+
+ ker_0 = arm_nn_read_q15x2_ia(&rhs_1);
+ ker_1 = arm_nn_read_q15x2_ia(&rhs_1);
+
+ acc_1 = SMLALD(ker_0, vec_part_0, acc_1);
+ acc_1 = SMLALD(ker_1, vec_part_1, acc_1);
+ }
+
+ for (int k = col_loop_cnt * 4; k < rhs_cols; k++)
+ {
+ const int16_t lhs_temp = (*lhs_vec);
+ lhs_vec++;
+ acc_0 += lhs_temp * (*rhs_0);
+ rhs_0++;
+ acc_1 += lhs_temp * (*rhs_1);
+ rhs_1++;
+ }
+
+ if (bias)
+ {
+ acc_0 += *bias++;
+ acc_1 += *bias++;
+ }
+ int32_t tmp;
+
+ tmp = arm_nn_requantize_s64(acc_0, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+
+ tmp = arm_nn_requantize_s64(acc_1, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+ }
+
+ if (rhs_rows & 0x1)
+ {
+ int64_t acc_0 = 0;
+ const int32_t col_loop_cnt = rhs_cols / 4;
+
+ const int16_t *lhs_vec = lhs;
+ const int16_t *rhs_0 = rhs;
+
+ for (int i = col_loop_cnt; i != 0; i--)
+ {
+ int32_t ker_0, vec;
+
+ ker_0 = arm_nn_read_q15x2_ia(&rhs_0);
+ vec = arm_nn_read_q15x2_ia(&lhs_vec);
+ acc_0 = SMLALD(ker_0, vec, acc_0);
+
+ ker_0 = arm_nn_read_q15x2_ia(&rhs_0);
+ vec = arm_nn_read_q15x2_ia(&lhs_vec);
+ acc_0 = SMLALD(ker_0, vec, acc_0);
+ }
+
+ for (int j = col_loop_cnt * 4; j < rhs_cols; j++)
+ {
+ const int16_t lhs_temp = (*lhs_vec);
+ lhs_vec++;
+ acc_0 += lhs_temp * (*rhs_0);
+ rhs_0++;
+ }
+
+ if (bias)
+ {
+ acc_0 += *bias++;
+ }
+ int32_t tmp;
+ tmp = arm_nn_requantize_s64(acc_0, dst_multiplier, dst_shift);
+ tmp = MAX(tmp, activation_min);
+ tmp = MIN(tmp, activation_max);
+ *dst++ = (int16_t)tmp;
+ }
+
+ #endif // ARM_MATH_MVEI
+#else // ARM_MATH_DSP
+ for (int i_row_loop_cnt = 0; i_row_loop_cnt < rhs_rows; i_row_loop_cnt++)
+ {
+ const int16_t *lhs_ptr = lhs;
+ const int16_t *rhs_ptr_0 = &rhs[0];
+
+ int64_t result = 0;
+
+ for (int32_t rhs_cols_idx = 0; rhs_cols_idx < rhs_cols; ++rhs_cols_idx)
+ {
+ const int64_t rhs_value0 = *rhs_ptr_0;
+ const int64_t lhs_value = *lhs_ptr;
+
+ result += lhs_value * rhs_value0;
+
+ ++rhs_ptr_0;
+ ++lhs_ptr;
+ }
+
+ if (bias)
+ {
+ result += *bias++;
+ }
+ // Quantize down
+ result = arm_nn_requantize_s64(result, dst_multiplier, dst_shift);
+
+ // Clamp the result
+ result = MAX(result, activation_min);
+ result = MIN(result, activation_max);
+
+ *dst++ = (int16_t)result;
+ rhs += rhs_cols;
+ }
+#endif // ARM_MATH_DSP
+
+ return ARM_CMSIS_NN_SUCCESS;
+}
+
+/**
+ * @} end of Doxygen group
+ */
diff --git a/Tests/UnitTest/CMakeLists.txt b/Tests/UnitTest/CMakeLists.txt
index dcc06577..d51c362f 100644
--- a/Tests/UnitTest/CMakeLists.txt
+++ b/Tests/UnitTest/CMakeLists.txt
@@ -106,6 +106,8 @@ add_subdirectory(TestCases/test_arm_svdf_s8)
add_subdirectory(TestCases/test_arm_svdf_state_s16_s8)
add_subdirectory(TestCases/test_arm_transpose_conv_s8)
add_subdirectory(TestCases/test_arm_lstm_unidirectional_s16)
+add_subdirectory(TestCases/test_arm_batch_matmul_s8)
+add_subdirectory(TestCases/test_arm_batch_matmul_s16)
set(MAKE_CMD "python3")
set(MAKE_CMD_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/unittest_targets.py")
diff --git a/Tests/UnitTest/README.md b/Tests/UnitTest/README.md
index f557600e..c85ff129 100644
--- a/Tests/UnitTest/README.md
+++ b/Tests/UnitTest/README.md
@@ -149,6 +149,7 @@ Operator bit-exactness compability:
| maxpool | x | x |
| add | x | x |
| mul | x | x |
+| batch matmul | x | x |
### Refactoring of generate_test_data.py
Test data generation is in progress of incrementally moving over to the cleaned up scripts placed in `RefactoredTestGen`.
@@ -174,6 +175,7 @@ Current progress:
| maxpool | x | |
| add | x | |
| mul | x | |
+| batch matmul | | x |
## Overview of the Folders
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/op_batch_matmul.py b/Tests/UnitTest/RefactoredTestGen/Lib/op_batch_matmul.py
new file mode 100644
index 00000000..6d4a53be
--- /dev/null
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/op_batch_matmul.py
@@ -0,0 +1,110 @@
+# SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+import Lib.op_utils
+import tensorflow as tf
+import math
+import numpy as np
+
+from tensorflow.lite.python.interpreter import Interpreter
+from tensorflow.lite.python.interpreter import OpResolverType
+import tf_keras as keras
+
+class Op_batch_matmul(Lib.op_utils.Op_type):
+
+ def get_shapes(params):
+ shapes = {}
+ shapes["lhs_input_tensor"] = (params["lhs_batch"], params["lhs_height"], params["lhs_rows"], params["lhs_cols"])
+ shapes["rhs_input_tensor"] = (params["rhs_batch"], params["rhs_height"], params["rhs_rows"], params["rhs_cols"])
+ shapes["representational_dataset"] = (params["lhs_batch"], params["lhs_height"], params["lhs_rows"], params["lhs_cols"])
+ shapes["representational_dataset2"] = (params["rhs_batch"], params["rhs_height"], params["rhs_rows"], params["rhs_cols"])
+ shapes["different_in_shapes"]=True
+
+ return shapes
+
+ def generate_keras_model(shapes, params):
+ tf.keras.backend.clear_session()
+ input_shape_lhs = (params["lhs_batch"], params["lhs_height"], params["lhs_rows"], params["lhs_cols"])
+ input_shape_rhs = (params["rhs_batch"], params["rhs_height"], params["rhs_rows"], params["rhs_cols"])
+ input_lhs = keras.layers.Input(batch_input_shape=input_shape_lhs)
+ input_rhs = keras.layers.Input(batch_input_shape=input_shape_rhs)
+
+ layer = tf.matmul(input_lhs, input_rhs, transpose_a=params["adj_x"], transpose_b=params["adj_y"])
+ model = keras.Model([input_lhs, input_rhs], [layer])
+
+ return model
+
+ def generate_data_tflite(tflite_fname, params):
+ tensors = {}
+ effective_scales = {}
+ scales = {}
+ generated_params = {}
+ aliases = {}
+
+ # To be removed
+ aliases["output_multiplier"] = "output_mult"
+ aliases["output"] = "output_ref"
+
+ interpreter = Interpreter(str(tflite_fname), experimental_op_resolver_type=OpResolverType.BUILTIN_REF)
+ interpreter.allocate_tensors()
+ tensor_details = interpreter.get_tensor_details()
+
+ lhs = tensor_details[0]
+ rhs = tensor_details[1]
+
+ input_details = interpreter.get_input_details()
+ (scales["lhs_scale"], scales["lhs_zero_point"]) = input_details[0]['quantization']
+ (scales["rhs_scale"], scales["rhs_zero_point"]) = input_details[1]['quantization']
+
+ output_details = interpreter.get_output_details()
+ (scales["output_scale"], scales["output_zero_point"]) = output_details[0]['quantization']
+
+ tensors["lhs_input_tensor"] = interpreter.get_tensor(lhs['index'])
+ tensors["rhs_input_tensor"] = interpreter.get_tensor(rhs['index'])
+ tensors["lhs_transposed_tensor"] = tf.transpose(tensors["lhs_input_tensor"], [0,1,3,2]).numpy()
+ tensors["rhs_transposed_tensor"] = tf.transpose(tensors["rhs_input_tensor"], [0,1,3,2]).numpy()
+
+ minval = Lib.op_utils.get_dtype_min(params["input_data_type"])
+ maxval = Lib.op_utils.get_dtype_max(params["input_data_type"])
+
+ n_output = output_details[0]['shape'][0]
+ h_output = output_details[0]['shape'][1]
+ w_output = output_details[0]['shape'][2]
+ c_output = output_details[0]['shape'][3]
+
+ generated_params["dst_size"] = n_output * h_output * w_output * c_output
+ generated_params["output_batch"] = n_output
+ generated_params["output_height"] = h_output
+ generated_params["output_rows"] = w_output
+ generated_params["output_cols"] = c_output
+ generated_params["lhs_offset"] = -lhs['quantization_parameters']['zero_points'][0]
+ generated_params["rhs_offset"] = -rhs['quantization_parameters']['zero_points'][0]
+ generated_params["output_offset"] = output_details[0]['quantization'][1]
+ generated_params["activation_min"] = minval
+ generated_params["activation_max"] = maxval
+
+ def quantize_scale(scales):
+ effective_output_scale = scales["lhs_scale"] * scales["rhs_scale"] / scales["output_scale"]
+
+ significand, shift = math.frexp(effective_output_scale)
+ significand_q31 = round(significand * (1 << 31))
+ return significand_q31, shift
+
+ mult, shift = quantize_scale(scales)
+ generated_params["output_multiplier"] = mult
+ generated_params["output_shift"] = shift
+
+ return Lib.op_utils.Generated_data(generated_params, tensors, scales, effective_scales, aliases)
\ No newline at end of file
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/op_conv.py b/Tests/UnitTest/RefactoredTestGen/Lib/op_conv.py
index a51bed6b..3db679ce 100644
--- a/Tests/UnitTest/RefactoredTestGen/Lib/op_conv.py
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/op_conv.py
@@ -193,7 +193,7 @@ def get_shapes(params):
if out_ch % groups != 0:
raise RuntimeError("ERROR: Output channels {} must be an even multiple of groups {}".format(out_ch, groups))
- shapes["input"] = (params["batch_size"], params["input_h"], params["input_w"], in_ch)
+ shapes["input_tensor"] = (params["batch_size"], params["input_h"], params["input_w"], in_ch)
shapes["weight_shape"] = [params["filter_y"], params["filter_x"], filter_ch, out_ch]
if params["tflite_generator"] == "json":
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/op_fully_connected.py b/Tests/UnitTest/RefactoredTestGen/Lib/op_fully_connected.py
index 73c11cea..aa91ab9f 100644
--- a/Tests/UnitTest/RefactoredTestGen/Lib/op_fully_connected.py
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/op_fully_connected.py
@@ -58,7 +58,7 @@ def get_shapes(params):
in_ch = params["in_ch"]
out_ch = params["out_ch"]
- shapes["input"] = (params["batch_size"], in_ch)
+ shapes["input_tensor"] = (params["batch_size"], in_ch)
shapes["weight_shape"] = (in_ch, 1, 1, out_ch)
if params["generate_bias"]:
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/op_lstm.py b/Tests/UnitTest/RefactoredTestGen/Lib/op_lstm.py
index 02f2ec88..01819034 100644
--- a/Tests/UnitTest/RefactoredTestGen/Lib/op_lstm.py
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/op_lstm.py
@@ -28,9 +28,9 @@ class Op_lstm(Lib.op_utils.Op_type):
def get_shapes(params):
shapes = {}
if params["time_major"] and params["tflite_generator"] == "json":
- shapes["input"] = (params["time_steps"], params["batch_size"], params["input_size"])
+ shapes["input_tensor"] = (params["time_steps"], params["batch_size"], params["input_size"])
else:
- shapes["input"] = (params["batch_size"], params["time_steps"], params["input_size"])
+ shapes["input_tensor"] = (params["batch_size"], params["time_steps"], params["input_size"])
shapes["input_weights"] = (params["input_size"], params["hidden_size"])
shapes["all_input_weights"] = (params["input_size"], params["hidden_size"] * 4)
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/op_utils.py b/Tests/UnitTest/RefactoredTestGen/Lib/op_utils.py
index 50809627..d4c71c91 100644
--- a/Tests/UnitTest/RefactoredTestGen/Lib/op_utils.py
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/op_utils.py
@@ -83,7 +83,7 @@ def get_dtype(name, params):
return params["weights_data_type"]
elif "multiplier" in name or "shift" in name:
return params["shift_and_mult_data_type"]
- elif "input" in name or "output" in name:
+ elif "input" in name or "output" in name or "transpose" in name:
return params["input_data_type"]
else:
raise Exception(f"Unable to deduce dtype from name '{name}'")
diff --git a/Tests/UnitTest/RefactoredTestGen/Lib/test.py b/Tests/UnitTest/RefactoredTestGen/Lib/test.py
index 6625bae1..cd6cdab2 100644
--- a/Tests/UnitTest/RefactoredTestGen/Lib/test.py
+++ b/Tests/UnitTest/RefactoredTestGen/Lib/test.py
@@ -17,6 +17,7 @@
import os
import Lib.op_lstm
import Lib.op_conv
+import Lib.op_batch_matmul
import Lib.op_fully_connected
import tensorflow as tf
import numpy as np
@@ -74,7 +75,7 @@ def generate(params, args, fpaths):
quantize=True,
dtype=params["input_data_type"],
bias_dtype=params["bias_data_type"],
- shape=shapes["representational_dataset"])
+ shape=shapes)
data = op_type.generate_data_tflite(fpaths["tflite"], params)
elif params["tflite_generator"] == "json":
@@ -102,18 +103,29 @@ def generate(params, args, fpaths):
maxval = Lib.op_utils.get_dtype_max(params["input_data_type"]) if "input_max" not in params else params["input_max"]
dtype = Lib.op_utils.get_tf_dtype(params["input_data_type"])
- input_tensor = Lib.op_utils.generate_tf_tensor(shapes["input"], minval, maxval, decimals=0, datatype=dtype)
- data.tensors["input"] = input_tensor.numpy()
+
+ # Initialize input tensors
+ input_tensors = {}
+ for shape_name, shape in shapes.items():
+ if "input_tensor" in shape_name:
+ if shape_name in data.tensors:
+ input_tensors[shape_name] = data.tensors[shape_name]
+ else:
+ input_tensors[shape_name] = Lib.op_utils.generate_tf_tensor(shape, minval, maxval, decimals=0, datatype=dtype)
+ data.tensors[shape_name] = input_tensors[shape_name].numpy()
+
+ if not input_tensors:
+ raise ValueError("Op_type must initialize at least one input shape")
if params["interpreter"] == "tensorflow":
- data.tensors["output"] = invoke_tflite(fpaths["tflite"], input_tensor)
+ data.tensors["output"] = invoke_tflite(fpaths["tflite"], input_tensors)
elif params["interpreter"] == "tflite_runtime":
- data.tensors["output"] = invoke_tflite_runtime(fpaths["tflite"], input_tensor)
+ data.tensors["output"] = invoke_tflite_runtime(fpaths["tflite"], input_tensors)
elif params["interpreter"] == "tflite_micro":
if "arena_size" in params:
- data.tensors["output"] = invoke_tflite_micro(fpaths["tflite"], input_tensor, params["arena_size"])
+ data.tensors["output"] = invoke_tflite_micro(fpaths["tflite"], input_tensors, params["arena_size"])
else:
- data.tensors["output"] = invoke_tflite_micro(fpaths["tflite"], input_tensor)
+ data.tensors["output"] = invoke_tflite_micro(fpaths["tflite"], input_tensors)
else:
raise ValueError(f"Invalid interpreter in {params['name']}")
@@ -147,6 +159,8 @@ def get_op_type(op_type_string):
return Lib.op_lstm.Op_lstm
elif op_type_string == "conv":
return Lib.op_conv.Op_conv
+ elif op_type_string == "batch_matmul":
+ return Lib.op_batch_matmul.Op_batch_matmul
elif op_type_string == "fully_connected":
return Lib.op_fully_connected.Op_fully_connected
else:
@@ -160,13 +174,19 @@ def convert_keras_to_tflite(output_fpath, keras_model, quantize, dtype, bias_dty
metrics=['accuracy'])
n_inputs = len(keras_model.inputs)
converter = tf.lite.TFLiteConverter.from_keras_model(keras_model)
-
if quantize:
- def representative_dataset():
- for _ in range(n_inputs):
- data = np.random.rand(*shape)
- yield [data.astype(np.float32)]
+ if shape.get("different_in_shapes") is True:
+ def representative_dataset():
+ for _ in range(100):
+ data1 = np.random.rand(*shape["representational_dataset"])
+ data2 = np.random.rand(*shape["representational_dataset2"])
+ yield [data1.astype(np.float32), data2.astype(np.float32)]
+ else:
+ def representative_dataset():
+ for _ in range(n_inputs):
+ data = np.random.rand(*shape["representational_dataset"])
+ yield [data.astype(np.float32)]
converter.representative_dataset = representative_dataset
converter.optimizations = [tf.lite.Optimize.DEFAULT]
@@ -191,9 +211,12 @@ def representative_dataset():
def invoke_tflite(tflite_path, input_tensor):
interpreter = Interpreter(str(tflite_path), experimental_op_resolver_type=OpResolverType.BUILTIN_REF)
- input_index = interpreter.get_input_details()[0]["index"]
interpreter.allocate_tensors()
- interpreter.set_tensor(input_index, input_tensor)
+
+ for i, val in enumerate(input_tensor.values()):
+ input_index = interpreter.get_input_details()[i]["index"]
+ interpreter.set_tensor(input_index, val)
+
interpreter.invoke()
output_index = interpreter.get_output_details()[0]["index"]
data = interpreter.get_tensor(output_index)
@@ -204,9 +227,12 @@ def invoke_tflite(tflite_path, input_tensor):
def invoke_tflite_runtime(tflite_path, input_tensor):
interpreter = TfliteRuntimeInterpreter(str(tflite_path),
experimental_op_resolver_type=TfliteRuntimeOpResolverType.BUILTIN_REF)
- input_index = interpreter.get_input_details()[0]["index"]
interpreter.allocate_tensors()
- interpreter.set_tensor(input_index, input_tensor)
+
+ for i, val in enumerate(input_tensor.values()):
+ input_index = interpreter.get_input_details()[i]["index"]
+ interpreter.set_tensor(input_index, val)
+
interpreter.invoke()
output_index = interpreter.get_output_details()[0]["index"]
data = interpreter.get_tensor(output_index)
@@ -217,7 +243,9 @@ def invoke_tflite_runtime(tflite_path, input_tensor):
def invoke_tflite_micro(tflite_path, input_tensor, arena_size=30000):
interpreter = tflite_micro.runtime.Interpreter.from_file(model_path=str(tflite_path), arena_size=arena_size)
- interpreter.set_input(input_tensor, 0)
+ for i, val in enumerate(input_tensor.values()):
+ interpreter.set_input(val, i)
+
interpreter.invoke()
data = interpreter.get_output(0)
@@ -246,6 +274,7 @@ def write_c_array(data, fname, dtype, prefix, tensor_name, test_data_fpath, head
# Check that the data looks reasonable
values, counts = np.unique(data, return_counts=True)
+ tf.experimental.numpy.experimental_enable_numpy_behavior()
size = 0 if data is None else data.size
@@ -262,6 +291,7 @@ def write_c_array(data, fname, dtype, prefix, tensor_name, test_data_fpath, head
data_shape = data.shape
format_width = len(str(data.max())) + 1
data = data.flatten()
+
f.write(f"const {dtype} {prefix}_{tensor_name}[{len(data)}] = \n" + "{")
for i in range(len(data) - 1):
diff --git a/Tests/UnitTest/RefactoredTestGen/test_plan.json b/Tests/UnitTest/RefactoredTestGen/test_plan.json
index 02b64987..f3a1be29 100644
--- a/Tests/UnitTest/RefactoredTestGen/test_plan.json
+++ b/Tests/UnitTest/RefactoredTestGen/test_plan.json
@@ -577,6 +577,170 @@
}
]
},
+{
+ "suite_name" : "test_arm_batch_matmul_s8",
+ "op_type" : "batch_matmul",
+ "input_data_type": "int8_t",
+ "weights_data_type": "int8_t",
+ "bias_data_type": "int32_t",
+ "shift_and_mult_data_type": "int32_t",
+ "interpreter": "tensorflow",
+ "tflite_generator": "keras",
+ "tests" : [
+ {"name" : "batch_matmul_1_s8",
+ "json_template" : "batch_matmul_s8.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 3,
+ "rhs_height" : 3,
+ "rhs_rows" : 16,
+ "rhs_cols" : 24,
+ "adj_x" : 0,
+ "adj_y" : 0,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_2_s8",
+ "json_template" : "batch_matmul_s8.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 1,
+ "rhs_height" : 1,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 0,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_3_s8",
+ "json_template" : "batch_matmul_s8.json",
+ "lhs_batch" : 1,
+ "lhs_height" : 1,
+ "lhs_rows" : 16,
+ "lhs_cols" : 32,
+ "rhs_batch" : 3,
+ "rhs_height" : 3,
+ "rhs_rows" : 16,
+ "rhs_cols" : 24,
+ "adj_x" : 1,
+ "adj_y" : 0,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_4_s8",
+ "json_template" : "batch_matmul_s8.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 1,
+ "lhs_rows" : 16,
+ "lhs_cols" : 32,
+ "rhs_batch" : 1,
+ "rhs_height" : 3,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 1,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_5_s8",
+ "json_template" : "batch_matmul_s8.json",
+ "lhs_batch" : 1,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 3,
+ "rhs_height" : 1,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 0,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ }
+ ]
+},
+{
+ "suite_name" : "test_arm_batch_matmul_s16",
+ "op_type" : "batch_matmul",
+ "input_data_type": "int16_t",
+ "weights_data_type": "int16_t",
+ "bias_data_type": "int32_t",
+ "shift_and_mult_data_type": "int32_t",
+ "interpreter": "tensorflow",
+ "tflite_generator": "keras",
+ "tests" : [
+ {"name" : "batch_matmul_1_s16",
+ "json_template" : "batch_matmul_s16.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 3,
+ "rhs_height" : 3,
+ "rhs_rows" : 16,
+ "rhs_cols" : 24,
+ "adj_x" : 0,
+ "adj_y" : 0,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_2_s16",
+ "json_template" : "batch_matmul_s16.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 1,
+ "rhs_height" : 1,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 0,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_3_s16",
+ "json_template" : "batch_matmul_s16.json",
+ "lhs_batch" : 1,
+ "lhs_height" : 1,
+ "lhs_rows" : 16,
+ "lhs_cols" : 32,
+ "rhs_batch" : 3,
+ "rhs_height" : 3,
+ "rhs_rows" : 16,
+ "rhs_cols" : 24,
+ "adj_x" : 1,
+ "adj_y" : 0,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_4_s16",
+ "json_template" : "batch_matmul_s16.json",
+ "lhs_batch" : 3,
+ "lhs_height" : 1,
+ "lhs_rows" : 16,
+ "lhs_cols" : 32,
+ "rhs_batch" : 1,
+ "rhs_height" : 3,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 1,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ },
+ {"name" : "batch_matmul_5_s16",
+ "json_template" : "batch_matmul_s16.json",
+ "lhs_batch" : 1,
+ "lhs_height" : 3,
+ "lhs_rows" : 32,
+ "lhs_cols" : 16,
+ "rhs_batch" : 3,
+ "rhs_height" : 1,
+ "rhs_rows" : 24,
+ "rhs_cols" : 16,
+ "adj_x" : 0,
+ "adj_y" : 1,
+ "asymmetric_quantize_inputs" : 0
+ }
+ ]
+},
{
"suite_name" : "test_arm_fully_connected_s4",
"op_type" : "fully_connected",
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/config_data.h
new file mode 100644
index 00000000..9d608431
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_1_S16_LHS_BATCH 3
+#define BATCH_MATMUL_1_S16_LHS_HEIGHT 3
+#define BATCH_MATMUL_1_S16_LHS_ROWS 32
+#define BATCH_MATMUL_1_S16_LHS_COLS 16
+#define BATCH_MATMUL_1_S16_RHS_BATCH 3
+#define BATCH_MATMUL_1_S16_RHS_HEIGHT 3
+#define BATCH_MATMUL_1_S16_RHS_ROWS 16
+#define BATCH_MATMUL_1_S16_RHS_COLS 24
+#define BATCH_MATMUL_1_S16_ADJ_X 0
+#define BATCH_MATMUL_1_S16_ADJ_Y 0
+#define BATCH_MATMUL_1_S16_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_1_S16_DST_SIZE 6912
+#define BATCH_MATMUL_1_S16_OUTPUT_BATCH 3
+#define BATCH_MATMUL_1_S16_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_1_S16_OUTPUT_ROWS 32
+#define BATCH_MATMUL_1_S16_OUTPUT_COLS 24
+#define BATCH_MATMUL_1_S16_LHS_OFFSET 0
+#define BATCH_MATMUL_1_S16_RHS_OFFSET 0
+#define BATCH_MATMUL_1_S16_OUTPUT_OFFSET 0
+#define BATCH_MATMUL_1_S16_ACTIVATION_MIN -32768
+#define BATCH_MATMUL_1_S16_ACTIVATION_MAX 32767
+#define BATCH_MATMUL_1_S16_OUTPUT_MULTIPLIER 1992078198
+#define BATCH_MATMUL_1_S16_OUTPUT_SHIFT -18
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_input_tensor.h
new file mode 100644
index 00000000..a49adf29
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_input_tensor.h
@@ -0,0 +1,294 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_1_s16_lhs_input_tensor[4608] = {
+ -16036, 15398, -1, 0, -16016, 15398, -1, 0, 0, 0, 0, 0, 101, 0, 0, 0,
+ 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -13330, 15978, -20757, 6198, 128, 0, 0, 0, -18127, 0, 0, 0,
+ 736, -9430, -21846, 0, 27520, -9419, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 80, 0, 0, 0, 15505, 0, 0, 0, 8848, -9437, -21846, 0, 16432, -9429, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 28960, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -24502, 32606, -1, 0, 28, 0, 0, 0,
+ 29008, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13825, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29072, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -11157, 32594, -1, 0, 42, 0, 0, 0, 29120, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13713, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29184, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -14440, 32587, -1, 0, 48, 0, 0, 0,
+ 29232, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13601, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29296, -9420, -21846, 0, 1, 0, 2, 0, 4480, -9444, -21846, 0, 0, 0, 0, 0,
+ 5439, 32616, -1, 0, 46, 0, 0, 0, 29344, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13489, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29408, -9420, -21846, 0, 1, 0, 2, 0,
+ 5584, -9445, -21846, 0, 0, 0, 0, 0, 31850, 32637, -1, 0, 51, 0, 0, 0,
+ 29456, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13377, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29520, -9420, -21846, 0, 2, 0, 2, 0, -16592, -9448, -21846, 0, -1296, -9448, -21846, 0,
+ 32292, 32599, -1, 0, 61, 0, 0, 0, 29568, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13265, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29632, -9420, -21846, 0, 1, 0, 2, 0,
+ -20512, -9431, -21846, 0, 0, 0, 0, 0, 5334, 32616, -1, 0, 54, 0, 0, 0,
+ 29680, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13153, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29744, -9420, -21846, 0, 1, 0, 2, 0, 2672, -9445, -21846, 0, 0, 0, 0, 0,
+ 4277, 32635, -1, 0, 48, 0, 0, 0, 29792, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 13041, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29856, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4179, 32635, -1, 0, 47, 0, 0, 0,
+ 29904, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12929, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29968, -9420, -21846, 0, 1, 0, 2, 0, 19024, -9426, -21846, 0, 0, 0, 0, 0,
+ 6232, 32590, -1, 0, 47, 0, 0, 0, 30016, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12817, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30080, -9420, -21846, 0, 1, 0, 2, 0,
+ 19024, -9426, -21846, 0, 0, 0, 0, 0, -14649, 32587, -1, 0, 48, 0, 0, 0,
+ 30128, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12705, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30192, -9420, -21846, 0, 1, 0, 2, 0, -18912, -9469, -21846, 0, 0, 0, 0, 0,
+ 31140, 32644, -1, 0, 43, 0, 0, 0, 30240, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12593, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30304, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30352, -9420, -21846, 0, 0, 0, 0, 0, 31532, -28391, -1, 0, 12481, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30416, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30464, -9420, -21846, 0, 0, 0, 0, 0,
+ 28616, -28390, -1, 0, 12369, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30528, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30576, -9420, -21846, 0, 0, 0, 0, 0, 28844, -28390, -1, 0, 12257, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30640, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30688, -9420, -21846, 0, 0, 0, 0, 0,
+ 30456, -28390, -1, 0, 12145, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30752, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30800, -9420, -21846, 0, 0, 0, 0, 0, 30680, -28390, -1, 0, 12033, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30864, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30912, -9420, -21846, 0, 0, 0, 0, 0,
+ 32040, -28390, -1, 0, 11921, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30976, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31024, -9420, -21846, 0, 0, 0, 0, 0, -32760, -28390, -1, 0, 11809, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31088, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -27427, 32621, -1, 0, 50, 0, 0, 0, 31136, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 11697, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31200, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31539, 32588, -1, 0, 52, 0, 0, 0,
+ 31248, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11585, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31312, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12076, 32600, -1, 0, 60, 0, 0, 0, 31360, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 11473, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31424, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7141, 32624, -1, 0, 70, 0, 0, 0,
+ 31472, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11361, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31536, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 20587, 32652, -1, 0, 49, 0, 0, 0, 31584, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 11249, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31648, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31696, -9420, -21846, 0, 0, 0, 0, 0, 19408, -28390, -1, 0, 11137, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31760, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31808, -9420, -21846, 0, 0, 0, 0, 0,
+ 19040, -28390, -1, 0, 11025, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31872, -9420, -21846, 0, 1, 0, 2, 0,
+ 12896, -9429, -21846, 0, 0, 0, 0, 0, 4392, 32586, -1, 0, 43, 0, 0, 0,
+ 31920, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10913, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31984, -9420, -21846, 0, 1, 0, 2, 0, 12896, -9429, -21846, 0, 0, 0, 0, 0,
+ -21051, 32609, -1, 0, 42, 0, 0, 0, 32032, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10801, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 32096, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7773, 32624, -1, 0, 16, 0, 0, 0,
+ 32144, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10689, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32208, -9420, -21846, 0, 2, 0, 2, 0, -21600, -9444, -21846, 0, 12896, -9429, -21846, 0,
+ 27700, 32626, -1, 0, 36, 0, 0, 0, 32256, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10577, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27264, -9421, -21846, 0, 4, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10365, 32619, -1, 0, 39, 0, 0, 0,
+ 32368, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10465, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32432, -9420, -21846, 0, 2, 0, 2, 0, 27632, -9434, -21846, 0, 12896, -9429, -21846, 0,
+ 12953, 32593, -1, 0, 35, 0, 0, 0, 32480, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 10353, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 32608, -9420, -21846, 0, 4, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -5251, 32604, -1, 0, 38, 0, 0, 0,
+ 32592, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10241, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 112, 0, 0, 0, -12889, 29081, -21856, 0, 12896, -9429, -21846, 0,
+ 1, 0, 2, 0, 29752, -9277, -1, 0, 32704, -9420, -21846, 0, 1, 0, 2, 0,
+ 12896, -9429, -21846, 0, 0, 0, 0, 0, 2448, 32612, -1, 0, 36, 0, 0, 0,
+ 32752, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10081, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -32720, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -13706, 32616, -1, 0, 13, 0, 0, 0, -32672, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9969, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -32608, -9420, -21846, 0, 1, 0, 2, 0,
+ 27136, -9429, -21846, 0, 0, 0, 0, 0, 6644, 32631, -1, 0, 34, 0, 0, 0,
+ -32560, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9857, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -32496, -9420, -21846, 0, 2, 0, 2, 0, 22368, -9428, -21846, 0, 12384, -9429, -21846, 0,
+ -27098, 32647, -1, 0, 34, 0, 0, 0, -32448, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9745, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -32384, -9420, -21846, 0, 2, 0, 2, 0,
+ 26304, -9429, -21846, 0, 12384, -9429, -21846, 0, 32368, 32588, -1, 0, 34, 0, 0, 0,
+ -32336, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9633, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -32272, -9420, -21846, 0, 1, 0, 2, 0, 26304, -9429, -21846, 0, 0, 0, 0, 0,
+ -6463, 32649, -1, 0, 41, 0, 0, 0, -32224, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9521, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -32160, -9420, -21846, 0, 1, 0, 2, 0,
+ 22368, -9428, -21846, 0, 0, 0, 0, 0, 12545, 32638, -1, 0, 41, 0, 0, 0,
+ -32112, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9409, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -31984, -9420, -21846, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28129, 32659, -1, 0, 47, 0, 0, 0, -32000, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9297, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 112, 0, 0, 0,
+ 12760, 29081, -21856, 0, 28592, -9433, -21846, 0, 1, 0, 5, 0, 29752, -9277, -1, 0,
+ -31888, -9420, -21846, 0, 1, 0, 2, 0, -30128, -9430, -21846, 0, 0, 0, 0, 0,
+ 21935, 32652, -1, 0, 53, 0, 0, 0, -31840, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9137, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -31776, -9420, -21846, 0, 1, 0, 2, 0,
+ -29600, -9430, -21846, 0, 0, 0, 0, 0, 28282, 32659, -1, 0, 53, 0, 0, 0,
+ -31728, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9025, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -31664, -9420, -21846, 0, 2, 0, 2, 0, -27840, -9433, -21846, 0, -29360, -9433, -21846, 0,
+ 11354, 32645, -1, 0, 41, 0, 0, 0, -31616, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8913, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -31552, -9420, -21846, 0, 2, 0, 2, 0,
+ -29360, -9433, -21846, 0, 27520, -9433, -21846, 0, 27608, 32626, -1, 0, 41, 0, 0, 0,
+ -31504, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8801, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -31440, -9420, -21846, 0, 2, 0, 2, 0, -29360, -9433, -21846, 0, 27520, -9433, -21846, 0,
+ 31812, 32640, -1, 0, 44, 0, 0, 0, -31392, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8689, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -31328, -9420, -21846, 0, 2, 0, 2, 0,
+ -29360, -9433, -21846, 0, 27520, -9433, -21846, 0, -21191, 32609, -1, 0, 44, 0, 0, 0,
+ -31280, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8577, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -31216, -9420, -21846, 0, 2, 0, 2, 0, -29360, -9433, -21846, 0, 27520, -9433, -21846, 0,
+ 12330, 32638, -1, 0, 44, 0, 0, 0, -31168, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8465, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -31104, -9420, -21846, 0, 2, 0, 2, 0,
+ -27840, -9433, -21846, 0, -29360, -9433, -21846, 0, -11710, 32642, -1, 0, 44, 0, 0, 0,
+ -31056, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8353, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -30992, -9420, -21846, 0, 2, 0, 2, 0, -29360, -9433, -21846, 0, 27520, -9433, -21846, 0,
+ -11615, 32642, -1, 0, 40, 0, 0, 0, -30944, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8241, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30880, -9420, -21846, 0, 2, 0, 2, 0,
+ 22368, -9428, -21846, 0, 27632, -9434, -21846, 0, -26884, 32647, -1, 0, 32, 0, 0, 0,
+ -30832, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8129, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -30768, -9420, -21846, 0, 2, 0, 2, 0, 26304, -9429, -21846, 0, 27632, -9434, -21846, 0,
+ -6371, 32649, -1, 0, 32, 0, 0, 0, -30720, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8017, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30656, -9420, -21846, 0, 1, 0, 2, 0,
+ -30720, -9430, -21846, 0, 0, 0, 0, 0, -13931, 32616, -1, 0, 42, 0, 0, 0,
+ -30608, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7905, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -30544, -9420, -21846, 0, 1, 0, 2, 0, -30720, -9430, -21846, 0, 0, 0, 0, 0,
+ 2145, 32612, -1, 0, 42, 0, 0, 0, -30496, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7793, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30368, -9420, -21846, 0, 3, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2238, 32612, -1, 0, 42, 0, 0, 0,
+ -30384, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7681, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 112, 0, 0, 0, 15272, 29081, -21856, 0, -30720, -9430, -21846, 0,
+ 1, 0, 2, 0, 29752, -9277, -1, 0, -30272, -9420, -21846, 0, 2, 0, 2, 0,
+ -29360, -9433, -21846, 0, -30720, -9430, -21846, 0, -14021, 32616, -1, 0, 39, 0, 0, 0,
+ -30224, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7521, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -30160, -9420, -21846, 0, 1, 0, 2, 0, -31776, -9430, -21846, 0, 0, 0, 0, 0,
+ -27013, 32647, -1, 0, 33, 0, 0, 0, -30112, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7409, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30048, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -6288, 32649, -1, 0, 47, 0, 0, 0,
+ -30000, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7297, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29936, -9420, -21846, 0, 1, 0, 2, 0, 17008, -9430, -21846, 0, 0, 0, 0, 0,
+ 4300, 32586, -1, 0, 41, 0, 0, 0, -29888, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7185, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -29824, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22446, 32607, -1, 0, 43, 0, 0, 0,
+ -29776, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7073, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29712, -9420, -21846, 0, 1, 0, 2, 0, 16528, -9430, -21846, 0, 0, 0, 0, 0,
+ -14421, 32635, -1, 0, 39, 0, 0, 0, -29664, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6961, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -29600, -9420, -21846, 0, 1, 0, 2, 0,
+ 22368, -9428, -21846, 0, 0, 0, 0, 0, 12459, 32638, -1, 0, 35, 0, 0, 0,
+ -29552, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6849, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29488, -9420, -21846, 0, 1, 0, 2, 0, 14240, -9443, -21846, 0, 0, 0, 0, 0,
+ 4216, 32586, -1, 0, 33, 0, 0, 0, -29440, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6737, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -29376, -9420, -21846, 0, 1, 0, 2, 0,
+ 27136, -9429, -21846, 0, 0, 0, 0, 0, 22090, 32652, -1, 0, 32, 0, 0, 0,
+ -29328, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6625, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29264, -9420, -21846, 0, 1, 0, 2, 0, 27136, -9429, -21846, 0, 0, 0, 0, 0,
+ -31197, 32595, -1, 0, 32, 0, 0, 0, -29216, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6513, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -29152, -9420, -21846, 0, 0, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2381, 32612, -1, 0, 16, 0, 0, 0,
+ -29104, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6401, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29040, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6729, 32631, -1, 0, 39, 0, 0, 0, -28992, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6289, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -28928, -9420, -21846, 0, 2, 0, 2, 0,
+ -21600, -9444, -21846, 0, 22368, -9428, -21846, 0, 31907, 32640, -1, 0, 33, 0, 0, 0,
+ -28880, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6177, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -28816, -9420, -21846, 0, 2, 0, 2, 0, -21600, -9444, -21846, 0, 26304, -9429, -21846, 0,
+ 28593, 32614, -1, 0, 33, 0, 0, 0, -28768, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6065, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -28704, -9420, -21846, 0, 1, 0, 2, 0,
+ -27840, -9433, -21846, 0, 0, 0, 0, 0, 27989, 32659, -1, 0, 42, 0, 0, 0,
+ -28656, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5953, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -28592, -9420, -21846, 0, 2, 0, 2, 0, -27840, -9433, -21846, 0, -29360, -9433, -21846, 0,
+ -6644, 32649, -1, 0, 38, 0, 0, 0, -28544, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5841, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -28480, -9420, -21846, 0, 2, 0, 2, 0,
+ -27840, -9433, -21846, 0, -29360, -9433, -21846, 0, -31289, 32595, -1, 0, 41, 0, 0, 0,
+ -28432, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5729, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -28368, -9420, -21846, 0, 2, 0, 2, 0, -29360, -9433, -21846, 0, 27520, -9433, -21846, 0,
+ -6555, 32649, -1, 0, 41, 0, 0, 0, -28320, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5617, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -28256, -9420, -21846, 0, 1, 0, 2, 0,
+ 27520, -9433, -21846, 0, 0, 0, 0, 0, 27894, 32659, -1, 0, 44, 0, 0, 0,
+ -28208, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5505, 0, 0, 0,
+ 26944, -9443, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -28144, -9420, -21846, 0, 1, 0, 2, 0, 27520, -9433, -21846, 0, 0, 0, 0, 0,
+ 21766, 32652, -1, 0, 44, 0, 0, 0, -28096, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5393, 0, 0, 0, 26944, -9443, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 112, 0, 0, 0,
+ 8857, 29081, -21856, 0, 0, 0, 0, 0, -18240, -9420, -21846, 0, 121, 0, 0, 0,
+ 256, 0, 0, 0, -20304, -9420, -21846, 0, -18672, -9420, -21846, 0, -18256, -9420, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5233, 0, 0, 0, 11328, -9419, -21846, 0, 4000, -9417, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -27488, -9420, -21846, 0, -24496, -9420, -21846, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 4921, 29081, -21856, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, -26912, -9420, -21846, 0, -25040, -9420, -21846, 0,
+ 128, 0, 0, 0, 32, 0, 0, 0, 11577, 29081, -21856, 0, 21248, -9420, -21846, 0,
+ 0, 0, 0, 0, 97, 0, 0, 0, -26432, -9420, -21846, 0, -26720, -9420, -21846, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, -27904, -9420, -21846, 0, -25872, -9420, -21846, 0,
+ 64, 0, 0, 0, 32, 0, 0, 0, 11289, 29081, -21856, 0, -17552, -18877, -1, 0,
+ 256, 0, 0, 0, 32, 0, 0, 0, 11737, 29081, -21856, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 353, 0, 0, 0, -25584, -9420, -21846, 0, -26912, -9420, -21846, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 11705, 29081, -21856, 0, -17552, -18877, -1, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_transposed_tensor.h
new file mode 100644
index 00000000..81f80a6b
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/lhs_transposed_tensor.h
@@ -0,0 +1,336 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_1_s16_lhs_transposed_tensor[4608] = {
+ -16036, 0, 0, 736, 1, 80, 0, 0, 29008, 26944, 29072, -11157, 0, 0,
+ 0, 29232, 26944, 29296, 5439, 0, 0, 5584, 29456, 26944, 29520, 32292, 0, 0,
+ -20512, 29680, 26944, 29744, 15398, 0, 0, -9430, 0, 0, 0, 0, -9420, -9443,
+ -9420, 32594, 0, 0, 0, -9420, -9443, -9420, 32616, 0, 0, -9445, -9420, -9443,
+ -9420, 32599, 0, 0, -9431, -9420, -9443, -9420, -1, 0, 0, -21846, 1, 0,
+ 0, 0, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1, 0,
+ 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -16016, 5, -13330, 27520, 2, 15505, 0, 0, 0, -17552, 0, 42,
+ 13713, 0, 0, 0, -17552, 1, 46, 13489, 0, 0, 0, -17552, 2, 61,
+ 13265, 0, 0, 0, -17552, 1, 15398, 0, 15978, -9419, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, -1, 0, -20757, -21846,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2,
+ 0, 0, 6198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 128, 0, 0, 8848, 28960, -24502, 0, 0,
+ 0, 29120, 26944, 29184, -14440, 0, 0, 4480, 29344, 26944, 29408, 31850, 0, 0,
+ -16592, 29568, 26944, 29632, 5334, 0, 0, 2672, 0, 0, 0, 0, 0, -9437,
+ -9420, 32606, 0, 0, 0, -9420, -9443, -9420, 32587, 0, 0, -9444, -9420, -9443,
+ -9420, 32637, 0, 0, -9448, -9420, -9443, -9420, 32616, 0, 0, -9445, 0, 0,
+ 0, 0, 0, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1, 0,
+ 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0,
+ 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 101, 0, -18127, 0, 0, 16432, 0, 28,
+ 13825, 0, 0, 0, -17552, 0, 48, 13601, 0, 0, 0, -17552, 1, 51,
+ 13377, 0, -1296, 0, -17552, 1, 54, 13153, 0, 0, 0, 0, 0, 0,
+ 0, -9429, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, -9448, 0, -18877, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -21846, 2, 0, 0, 0, 0, 0, -1, 2,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, -21846, 0, -1, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4277, 0, 0, 0, 29904, 26944,
+ 29968, 6232, 0, 0, 19024, 30128, 26944, 30192, 31140, 0, 0, 0, 30352, 26944,
+ 30416, 0, 28616, 0, 0, 30576, 26944, 30640, 0, 30456, 0, 0, 32635, 0,
+ 0, 0, -9420, -9443, -9420, 32590, 0, 0, -9426, -9420, -9443, -9420, 32644, 0,
+ 0, 0, -9420, -9443, -9420, 0, -28390, 0, 0, -9420, -9443, -9420, 0, -28390,
+ 0, 0, -1, 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, -21846, -21846,
+ -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, 0, -1, 0, 0, -21846,
+ -21846, -21846, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 13041, 0, 0,
+ 0, -17552, 1, 47, 12817, 0, 0, 0, -17552, 1, 43, 12593, 0, 0,
+ 0, -17552, 0, 0, 12369, 0, 0, 0, -17552, 0, 0, 12145, 0, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29792, 26944,
+ 29856, 4179, 0, 0, 19024, 30016, 26944, 30080, -14649, 0, 0, -18912, 30240, 26944,
+ 30304, 0, 31532, 0, 0, 30464, 26944, 30528, 0, 28844, 0, 0, 30688, 26944,
+ 30752, 0, -9420, -9443, -9420, 32635, 0, 0, -9426, -9420, -9443, -9420, 32587, 0,
+ 0, -9469, -9420, -9443, -9420, 0, -28391, 0, 0, -9420, -9443, -9420, 0, -28390,
+ 0, 0, -9420, -9443, -9420, 0, -21846, -21846, -21846, -1, 0, 0, -21846, -21846,
+ -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, 0, -1, 0, 0, -21846,
+ -21846, -21846, 0, -1, 0, 0, -21846, -21846, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -17552, 0, 47, 12929, 0, 0, 0, -17552, 1, 48, 12705, 0, 0,
+ 0, -17552, 0, 0, 12481, 0, 0, 0, -17552, 0, 0, 12257, 0, 0,
+ 0, -17552, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 30800, 26944, 30864, 0, 32040, 0, 0, 31024, 26944, 31088, -27427, 0,
+ 0, 0, 31248, 26944, 31312, 12076, 0, 0, 0, 31472, 26944, 31536, 20587, 0,
+ 0, 0, 31696, 26944, 31760, 0, -9420, -9443, -9420, 0, -28390, 0, 0, -9420,
+ -9443, -9420, 32621, 0, 0, 0, -9420, -9443, -9420, 32600, 0, 0, 0, -9420,
+ -9443, -9420, 32652, 0, 0, 0, -9420, -9443, -9420, 0, -21846, -21846, -21846, 0,
+ -1, 0, 0, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1,
+ 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -17552, 0, 0, 11921, 0, 0, 0, -17552, 0,
+ 50, 11697, 0, 0, 0, -17552, 0, 60, 11473, 0, 0, 0, -17552, 0,
+ 49, 11249, 0, 0, 0, -17552, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 30680, 0, 0, 30912, 26944, 30976, 0, -32760,
+ 0, 0, 31136, 26944, 31200, 31539, 0, 0, 0, 31360, 26944, 31424, 7141, 0,
+ 0, 0, 31584, 26944, 31648, 0, 19408, 0, 0, 31808, -28390, 0, 0, -9420,
+ -9443, -9420, 0, -28390, 0, 0, -9420, -9443, -9420, 32588, 0, 0, 0, -9420,
+ -9443, -9420, 32624, 0, 0, 0, -9420, -9443, -9420, 0, -28390, 0, 0, -9420,
+ -1, 0, 0, -21846, -21846, -21846, 0, -1, 0, 0, -21846, -21846, -21846, -1,
+ 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, 0,
+ -1, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12033, 0, 0, 0, -17552, 0,
+ 0, 11809, 0, 0, 0, -17552, 0, 52, 11585, 0, 0, 0, -17552, 0,
+ 70, 11361, 0, 0, 0, -17552, 0, 0, 11137, 0, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19040, 0, 12896, 31920,
+ 26944, 31984, -21051, 0, 0, 0, 32144, 26944, 32208, 27700, 0, 0, 0, 32368,
+ 26944, 32432, 12953, 0, 0, 0, 32592, 26944, 48, 1, 12896, 32752, 26944, -32720,
+ -28390, 0, -9429, -9420, -9443, -9420, 32609, 0, 0, 0, -9420, -9443, -9420, 32626,
+ 0, 0, 0, -9420, -9443, -9420, 32593, 0, 0, 0, -9420, -9443, 0, 0,
+ -9429, -9420, -9443, -9420, -1, 0, -21846, -21846, -21846, -21846, -1, 0, 0, 0,
+ -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, 0,
+ -21846, -21846, 0, 2, -21846, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11025, 0,
+ 0, 0, -17552, 1, 42, 10801, 0, 0, 0, -17552, 2, 36, 10577, 0,
+ 0, 0, -17552, 2, 35, 10353, 0, 0, 0, -17552, 112, 29752, 0, 0,
+ -17552, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877,
+ 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877,
+ 0, -9277, 0, 0, -18877, 0, 0, 0, 0, 0, -1, 2, 0, 0,
+ 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0,
+ 0, 0, 0, -1, 0, -1, 0, 0, -1, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26944, 31872, 4392, 0, 0, 12896, 32032, 26944, 32096, 7773, 0, 0, -21600, 32256,
+ 26944, 27264, 10365, 0, 0, 27632, 32480, 26944, 32608, -5251, 0, 0, -12889, 32704,
+ 2448, 0, 0, 0, -9443, -9420, 32586, 0, 0, -9429, -9420, -9443, -9420, 32624,
+ 0, 0, -9444, -9420, -9443, -9421, 32619, 0, 0, -9434, -9420, -9443, -9420, 32604,
+ 0, 0, 29081, -9420, 32612, 0, 0, 0, -21846, -21846, -1, 0, 0, -21846,
+ -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846,
+ -21846, -21846, -21846, -1, 0, 0, -21856, -21846, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -17552, 1, 43, 10913, 0, 0, 0, -17552, 0, 16, 10689, 0,
+ 12896, 0, -17552, 4, 39, 10465, 0, 12896, 0, -17552, 4, 38, 10241, 0,
+ 12896, 1, 36, 10081, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877,
+ 0, 0, 0, 0, -9429, 0, -18877, 0, 0, 0, 0, -9429, 0, -18877,
+ 0, 0, 0, 0, -9429, 0, 0, 0, 0, 0, -1, 2, 0, 0,
+ 0, 0, 0, -1, 2, 0, 0, 0, -21846, 0, -1, 5, 0, 0,
+ 0, -21846, 0, -1, 5, 0, 0, 0, -21846, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -13706, 0, 0, 27136, -32560, 26944, -32496, -27098, 0, 0,
+ 26304, -32336, 26944, -32272, -6463, 0, 0, 22368, -32112, 26944, -31984, 28129, 0, 0,
+ 12760, -31888, 21935, 0, 0, -29600, -31728, 26944, 32616, 0, 0, -9429, -9420, -9443,
+ -9420, 32647, 0, 0, -9429, -9420, -9443, -9420, 32649, 0, 0, -9428, -9420, -9443,
+ -9420, 32659, 0, 0, 29081, -9420, 32652, 0, 0, -9430, -9420, -9443, -1, 0,
+ 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0,
+ 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21856, -21846, -1, 0, 0, -21846,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 9969, 0, 0, 0, -17552, 2, 34,
+ 9745, 0, 12384, 0, -17552, 1, 41, 9521, 0, 0, 0, -17552, 3, 47,
+ 9297, 0, 28592, 1, 53, 9137, 0, 0, 0, -17552, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, -9429, 0, -18877, 0, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, -9433, 0, 0, 0, 0, 0, 0, -18877,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, -21846, 0, -1, 2,
+ 0, 0, 0, 0, 0, -1, 5, 0, 0, 0, -21846, 2, 0, 0,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -32672, 26944, -32608, 6644, 0, 0,
+ 22368, -32448, 26944, -32384, 32368, 0, 0, 26304, -32224, 26944, -32160, 12545, 0, 0,
+ 0, -32000, 26944, 48, 1, -30128, -31840, 26944, -31776, 28282, 0, 0, -9420, -9443,
+ -9420, 32631, 0, 0, -9428, -9420, -9443, -9420, 32588, 0, 0, -9429, -9420, -9443,
+ -9420, 32638, 0, 0, 0, -9420, -9443, 0, 0, -9430, -9420, -9443, -9420, 32659,
+ 0, 0, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0,
+ 0, -21846, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, 0, 5, -21846,
+ -21846, -21846, -21846, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17552, 1, 34,
+ 9857, 0, 12384, 0, -17552, 2, 34, 9633, 0, 0, 0, -17552, 1, 41,
+ 9409, 0, 0, 0, -17552, 112, 29752, 0, 0, -17552, 1, 53, 9025, 0,
+ 0, -18877, 0, 0, 0, 0, -9429, 0, -18877, 0, 0, 0, 0, 0,
+ 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, -9277, 0, 0, -18877,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, -21846, 0, -1, 2,
+ 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 0,
+ -1, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31664, 11354,
+ 0, 0, -29360, -31504, 26944, -31440, 31812, 0, 0, -29360, -31280, 26944, -31216, 12330,
+ 0, 0, -27840, -31056, 26944, -30992, -11615, 0, 0, 22368, -30832, 26944, -30768, -6371,
+ 0, 0, -9420, 32645, 0, 0, -9433, -9420, -9443, -9420, 32640, 0, 0, -9433,
+ -9420, -9443, -9420, 32638, 0, 0, -9433, -9420, -9443, -9420, 32642, 0, 0, -9428,
+ -9420, -9443, -9420, 32649, 0, 0, -21846, -1, 0, 0, -21846, -21846, -21846, -21846,
+ -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846,
+ -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 41, 8913, 0, 27520, 0, -17552, 2, 44, 8689, 0, 27520, 0, -17552,
+ 2, 44, 8465, 0, -29360, 0, -17552, 2, 40, 8241, 0, 27632, 0, -17552,
+ 2, 32, 8017, 0, 0, 0, 0, 0, -9433, 0, -18877, 0, 0, 0,
+ 0, -9433, 0, -18877, 0, 0, 0, 0, -9433, 0, -18877, 0, 0, 0,
+ 0, -9434, 0, -18877, 0, 0, 0, 0, 2, 0, 0, 0, -21846, 0,
+ -1, 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0, 0, -21846, 0,
+ -1, 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -27840, -31616, 26944, -31552, 27608, 0, 0, -29360, -31392, 26944, -31328, -21191,
+ 0, 0, -29360, -31168, 26944, -31104, -11710, 0, 0, -29360, -30944, 26944, -30880, -26884,
+ 0, 0, 26304, -30720, 26944, -30656, -9433, -9420, -9443, -9420, 32626, 0, 0, -9433,
+ -9420, -9443, -9420, 32609, 0, 0, -9433, -9420, -9443, -9420, 32642, 0, 0, -9433,
+ -9420, -9443, -9420, 32647, 0, 0, -9429, -9420, -9443, -9420, -21846, -21846, -21846, -21846,
+ -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846,
+ -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -29360, 0, -17552, 2, 41, 8801, 0, 27520, 0, -17552,
+ 2, 44, 8577, 0, 27520, 0, -17552, 2, 44, 8353, 0, 27520, 0, -17552,
+ 2, 32, 8129, 0, 27632, 0, -17552, 1, -9433, 0, -18877, 0, 0, 0,
+ 0, -9433, 0, -18877, 0, 0, 0, 0, -9433, 0, -18877, 0, 0, 0,
+ 0, -9433, 0, -18877, 0, 0, 0, 0, -9434, 0, -18877, 0, -21846, 0,
+ -1, 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0, 0, -21846, 0,
+ -1, 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0, 0, -21846, 0,
+ -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -30720, -30608, 26944, -30544, 2145, 0, 0, 0,
+ -30384, 26944, 48, 1, -29360, -30224, 26944, -30160, -27013, 0, 0, 0, -30000, 26944,
+ -29936, 4300, 0, 0, 0, -29776, 26944, -29712, -14421, 0, -9430, -9420, -9443, -9420,
+ 32612, 0, 0, 0, -9420, -9443, 0, 0, -9433, -9420, -9443, -9420, 32647, 0,
+ 0, 0, -9420, -9443, -9420, 32586, 0, 0, 0, -9420, -9443, -9420, 32635, 0,
+ -21846, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, 0, 2, -21846, -21846,
+ -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, 0, -21846,
+ -21846, -21846, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17552, 1, 42, 7793,
+ 0, 0, 0, -17552, 112, 29752, -30720, 0, -17552, 1, 33, 7409, 0, 0,
+ 0, -17552, 1, 41, 7185, 0, 0, 0, -17552, 1, 39, 6961, 0, 0,
+ -18877, 0, 0, 0, 0, 0, 0, -18877, 0, -9277, -9430, 0, -18877, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 0, -1,
+ -21846, 0, -1, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13931, 0, 0, -30720,
+ -30496, 26944, -30368, 2238, 0, 0, 15272, -30272, -14021, 0, 0, -31776, -30112, 26944,
+ -30048, -6288, 0, 0, 17008, -29888, 26944, -29824, 22446, 0, 0, 16528, -29664, 26944,
+ 32616, 0, 0, -9430, -9420, -9443, -9420, 32612, 0, 0, 29081, -9420, 32616, 0,
+ 0, -9430, -9420, -9443, -9420, 32649, 0, 0, -9430, -9420, -9443, -9420, 32607, 0,
+ 0, -9430, -9420, -9443, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0,
+ -21856, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846,
+ -21846, -21846, -1, 0, 0, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 7905,
+ 0, 0, 0, -17552, 3, 42, 7681, 0, -30720, 2, 39, 7521, 0, 0,
+ 0, -17552, 0, 47, 7297, 0, 0, 0, -17552, 0, 43, 7073, 0, 0,
+ 0, -17552, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, -9430, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, -1, 5, 0,
+ 0, 0, -21846, 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0,
+ 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 22368, -29552, 26944, -29488, 4216, 0, 0, 27136, -29328, 26944, -29264, -31197, 0,
+ 0, 0, -29104, 26944, -29040, 6729, 0, 0, -21600, -28880, 26944, -28816, 28593, 0,
+ 0, -27840, -28656, 26944, 0, -9428, -9420, -9443, -9420, 32586, 0, 0, -9429, -9420,
+ -9443, -9420, 32595, 0, 0, 0, -9420, -9443, -9420, 32631, 0, 0, -9444, -9420,
+ -9443, -9420, 32614, 0, 0, -9433, -9420, -9443, 0, -21846, -21846, -21846, -21846, -1,
+ 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, 0, -21846, -21846, -21846, -1,
+ 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -17552, 1, 33, 6737, 0, 0, 0, -17552, 1,
+ 32, 6513, 0, 0, 0, -17552, 0, 39, 6289, 0, 22368, 0, -17552, 2,
+ 33, 6065, 0, 0, 0, -17552, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ -9428, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -29600, 12459, 0, 0, 14240, -29440, 26944, -29376, 22090, 0,
+ 0, 27136, -29216, 26944, -29152, 2381, 0, 0, 0, -28992, 26944, -28928, 31907, 0,
+ 0, -21600, -28768, 26944, -28704, 27989, 0, 0, -9420, 32638, 0, 0, -9443, -9420,
+ -9443, -9420, 32652, 0, 0, -9429, -9420, -9443, -9420, 32612, 0, 0, 0, -9420,
+ -9443, -9420, 32640, 0, 0, -9444, -9420, -9443, -9420, 32659, 0, 0, -21846, -1,
+ 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1,
+ 0, 0, 0, -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 35, 6849, 0, 0, 0, -17552, 1,
+ 32, 6625, 0, 0, 0, -17552, 0, 16, 6401, 0, 0, 0, -17552, 2,
+ 33, 6177, 0, 26304, 0, -17552, 1, 42, 5953, 0, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, -18877, 0, 0, 0, 0, -9429, 0, -18877, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1,
+ 2, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, -21846, 0, -1,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -28592, -6644, 0, 0, -27840, -28432,
+ 26944, -28368, -6555, 0, 0, 27520, -28208, 26944, -28144, 21766, 0, 0, 8857, 256,
+ 0, 0, 0, 32, 0, 128, 0, 0, 64, 256, 0, 32, -9420, 32649,
+ 0, 0, -9433, -9420, -9443, -9420, 32649, 0, 0, -9433, -9420, -9443, -9420, 32652,
+ 0, 0, 29081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -21846, -1, 0, 0, -21846, -21846, -21846, -21846, -1, 0, 0, -21846,
+ -21846, -21846, -21846, -1, 0, 0, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 38, 5841, 0,
+ -29360, 0, -17552, 2, 41, 5617, 0, 0, 0, -17552, 1, 44, 5393, 0,
+ 0, -20304, 0, 5233, 0, 32, 33, 32, 97, 33, 32, 32, 353, 32,
+ 0, 0, 0, 0, -9433, 0, -18877, 0, 0, 0, 0, 0, 0, -18877,
+ 0, 0, 0, 0, 0, -9420, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -21846, 0, -1, 2, 0, 0,
+ 0, 0, 0, -1, 2, 0, 0, 0, 0, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27840, -28544,
+ 26944, -28480, -31289, 0, 0, -29360, -28320, 26944, -28256, 27894, 0, 0, 27520, -28096,
+ 26944, 48, -18240, -18672, 0, 11328, -27488, 4921, -26912, 11577, -26432, -27904, 11289, 11737,
+ -25584, 11705, -9433, -9420, -9443, -9420, 32595, 0, 0, -9433, -9420, -9443, -9420, 32659,
+ 0, 0, -9433, -9420, -9443, 0, -9420, -9420, 0, -9419, -9420, 29081, -9420, 29081,
+ -9420, -9420, 29081, 29081, -9420, 29081, -21846, -21846, -21846, -21846, -1, 0, 0, -21846,
+ -21846, -21846, -21846, -1, 0, 0, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846,
+ -21846, -21856, -21846, -21856, -21846, -21846, -21856, -21856, -21846, -21856, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -29360, 0, -17552, 2, 41, 5729, 0, 27520, 0, -17552, 1, 44, 5505, 0,
+ 0, 0, -17552, 112, 121, -18256, 0, 4000, -24496, -17552, -25040, 21248, -26720, -25872,
+ -17552, -17552, -26912, -17552, -9433, 0, -18877, 0, 0, 0, 0, -9433, 0, -18877,
+ 0, 0, 0, 0, 0, 0, -18877, 0, 0, -9420, 0, -9417, -9420, -18877,
+ -9420, -9420, -9420, -9420, -18877, -18877, -9420, -18877, -21846, 0, -1, 2, 0, 0,
+ 0, -21846, 0, -1, 2, 0, 0, 0, 0, 0, -1, 0, 0, -21846,
+ 0, -21846, -21846, -1, -21846, -21846, -21846, -21846, -1, -1, -21846, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/output.h
new file mode 100644
index 00000000..b96e166f
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/output.h
@@ -0,0 +1,440 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_1_s16_output[6912] = {
+ -816, 1068, -2389, 0, -1388, -517, -1198, 0, 966, -1114, 2479, 0, 2455, 1605, 1240, 0,
+ 813, 1082, -2389, 0, -165, -1030, -2389, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1212, -135, -313, 0, -4074, -135, -313, 0, -1328, -3495, 2626, 0, 2107, 2268, 0, 0,
+ 668, -2604, -312, 0, -3617, -135, -313, 0, 448, -656, 1457, 0, 839, 314, 728, 0,
+ 1885, 1288, 1193, 0, 1472, 325, 1632, 0, -502, -656, 1457, 0, 101, 628, 1457, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1808, 81, 188, 0, 1600, 81, 188, 0,
+ -3292, 1299, 2218, 0, -2913, 872, 2412, 0, -1310, 1034, 188, 0, 2003, 83, -1270, 0,
+ 937, 314, 728, 0, 861, 314, 728, 0, -1571, 734, -550, 0, -3728, -1206, 1689, 0,
+ -363, -969, 729, 0, 596, 629, 0, 0, -3065, -1088, -2523, 0, -2976, -1088, -2523, 0,
+ 727, -2524, 1895, 0, 1525, 1637, 0, 0, 1232, 3358, -2524, 0, -2034, -2179, -2, 0,
+ -1933, -1430, -340, 0, 1565, -461, -1069, 0, -478, -239, -554, 0, -738, -239, -554, 0,
+ -653, 453, -341, 0, 443, -147, -341, 0, 1320, -343, 2190, 0, 1698, 629, 1459, 0,
+ -855, -1976, 963, 0, 534, 1003, -394, 0, -627, -343, 2190, 0, 950, 944, 2189, 0,
+ -346, -969, 729, 0, -8, 0, 0, 0, -529, -241, -559, 0, -748, -241, -559, 0,
+ -372, -969, 729, 0, -745, 314, 728, 0, 2134, 3668, -1793, 0, 858, 314, 728, 0,
+ -566, 1127, 297, 0, -2724, -848, 2551, 0, 924, 2385, -1792, 0, 3175, -457, -2520, 0,
+ 1324, 1529, 3546, 0, -2770, 1529, 3546, 0, -2812, 2567, 5, 0, -6111, -1358, 3148, 0,
+ -1232, -2148, 3547, 0, -908, 1216, 1357, 0, 937, 314, 728, 0, 861, 314, 728, 0,
+ -1578, 757, -568, 0, -3742, -1221, 1689, 0, -363, -969, 729, 0, 596, 629, 0, 0,
+ -3039, -1088, -2523, 0, -2970, -1088, -2523, 0, 430, -1487, 1117, 0, 900, 965, 0, 0,
+ 1231, 3358, -2524, 0, -2026, -2178, -4, 0, -1907, -1423, -323, 0, 1540, -453, -1051, 0,
+ -498, -246, -571, 0, -758, -246, -571, 0, -649, 430, -323, 0, 423, -139, -323, 0,
+ 1320, -343, 2190, 0, 1698, 629, 1459, 0, -855, -1976, 963, 0, 534, 1003, -394, 0,
+ -627, -343, 2190, 0, 950, 944, 2189, 0, 529, -655, 1459, 0, 852, 315, 730, 0,
+ -1398, -2035, 767, 0, -2976, 180, 1113, 0, -736, -1941, 1459, 0, -159, 945, 728, 0,
+ 2135, 3670, -1794, 0, 862, 314, 728, 0, -2052, 597, -1004, 0, -4245, -1416, 1268, 0,
+ 927, 2387, -1794, 0, 3178, -458, -2521, 0, 1324, 1529, 3546, 0, -2770, 1529, 3546, 0,
+ -2819, 2544, 22, 0, -6097, -1343, 3148, 0, -1232, -2148, 3547, 0, -908, 1216, 1357, 0,
+ 938, 314, 728, 0, 861, 314, 728, 0, -1585, 781, -585, 0, -3756, -1236, 1689, 0,
+ -363, -969, 728, 0, 596, 629, 0, 0, -3271, -2062, -1796, 0, -2983, -1090, -2527, 0,
+ 627, 3822, -1206, 0, -589, -1585, 1257, 0, 857, 2392, -1798, 0, -2758, -1867, 726, 0,
+ -1881, -1415, -306, 0, 1514, -446, -1034, 0, -519, -254, -588, 0, -779, -254, -588, 0,
+ -644, 407, -306, 0, 404, -132, -306, 0, 1320, -343, 2190, 0, 1698, 629, 1459, 0,
+ -855, -1976, 963, 0, 534, 1003, -394, 0, -627, -343, 2190, 0, 950, 944, 2189, 0,
+ -192, -296, 2290, 0, -431, 673, 1561, 0, -3620, -3169, 4799, 0, -1157, 3355, 1826, 0,
+ -1323, -1760, 2290, 0, -279, 988, 828, 0, 2135, 3669, -1793, 0, 868, 314, 728, 0,
+ -4451, -273, -3098, 0, -6699, -2327, -808, 0, 930, 2385, -1793, 0, 3180, -457, -2520, 0,
+ 1324, 1529, 3546, 0, -2770, 1529, 3546, 0, -2825, 2521, 39, 0, -6083, -1328, 3148, 0,
+ -1232, -2148, 3547, 0, -908, 1216, 1357, 0, 938, 314, 728, 0, 861, 314, 728, 0,
+ -1591, 804, -602, 0, -3770, -1251, 1689, 0, -363, -969, 728, 0, 596, 629, 0, 0,
+ -3338, -2060, -1796, 0, -2990, -1089, -2526, 0, 3736, 1961, 2862, 0, 3428, 1056, 3275, 0,
+ 854, 2391, -1797, 0, -2770, -1866, 725, 0, -1855, -1408, -288, 0, 1489, -438, -1017, 0,
+ -540, -261, -606, 0, -799, -261, -606, 0, -639, 384, -289, 0, 385, -124, -289, 0,
+ 1320, -343, 2190, 0, 1698, 629, 1459, 0, -855, -1976, 963, 0, 534, 1003, -394, 0,
+ -627, -343, 2190, 0, 950, 944, 2189, 0, 525, -655, 1459, 0, 852, 315, 730, 0,
+ -1385, -2236, 872, 0, -2904, 286, 1078, 0, -736, -1941, 1459, 0, -159, 945, 728, 0,
+ 1001, 2389, -1795, 0, -1421, -1551, 0, 0, -1342, -409, -949, 0, -1119, -409, -949, 0,
+ 2198, 3672, -1796, 0, -1166, -1866, 728, 0, -1100, -2914, 2190, 0, 604, 631, 0, 0,
+ -493, -20, -45, 0, 126, -20, -45, 0, 2528, 944, 2189, 0, 2660, 944, 2189, 0,
+ -399, -969, 729, 0, 606, 629, 0, 0, -995, -267, -619, 0, -708, -267, -619, 0,
+ 832, 314, 728, 0, 861, 314, 728, 0, 1383, 3358, -2524, 0, -2023, -2180, 0, 0,
+ -413, -141, -327, 0, -351, -141, -327, 0, -2876, -1088, -2523, 0, -2978, -1088, -2523, 0,
+ -404, -969, 729, 0, 578, 629, 0, 0, -1580, -700, -1622, 0, -2293, -700, -1622, 0,
+ -373, -969, 729, 0, 580, 629, 0, 0, -1038, -2914, 2190, 0, -1196, 1260, 1459, 0,
+ 1486, 415, 963, 0, 825, 415, 963, 0, -722, -2914, 2190, 0, 1750, 1892, 0, 0,
+ -804, -1939, 1458, 0, 1171, 1259, 0, 0, -415, -177, -410, 0, -765, -177, -410, 0,
+ 450, -655, 1457, 0, 1438, 943, 729, 0, 999, 2384, -1792, 0, -1418, -1548, 0, 0,
+ -1532, -482, -1117, 0, -1329, -482, -1117, 0, 2197, 3668, -1792, 0, -1163, -1863, 728, 0,
+ -1100, -2914, 2190, 0, 604, 631, 0, 0, -471, -12, -28, 0, 146, -12, -28, 0,
+ 2528, 944, 2189, 0, 2660, 944, 2189, 0, -399, -969, 729, 0, 606, 629, 0, 0,
+ -1017, -274, -637, 0, -729, -275, -637, 0, 832, 314, 728, 0, 861, 314, 728, 0,
+ 977, 2383, -1791, 0, -1464, -1547, 0, 0, 1890, 581, 1347, 0, 1371, 581, 1347, 0,
+ -3260, -2056, -1790, 0, -2398, -457, -2519, 0, -404, -969, 729, 0, 578, 629, 0, 0,
+ -1580, -700, -1622, 0, -2292, -700, -1622, 0, -373, -969, 729, 0, 580, 629, 0, 0,
+ -1038, -2914, 2190, 0, -1196, 1260, 1459, 0, 1486, 415, 963, 0, 825, 415, 963, 0,
+ -722, -2914, 2190, 0, 1750, 1892, 0, 0, -805, -1944, 1461, 0, 1135, 1262, 0, 0,
+ 3278, 1080, 2505, 0, 2598, 1080, 2505, 0, 450, -654, 1461, 0, 1438, 945, 732, 0,
+ 1001, 2390, -1796, 0, -1418, -1551, 0, 0, -3693, -1319, -3059, 0, -3772, -1319, -3059, 0,
+ 2211, 3673, -1797, 0, -1163, -1867, 728, 0, -1100, -2914, 2190, 0, 604, 631, 0, 0,
+ -449, -5, -11, 0, 166, -5, -11, 0, 2528, 944, 2189, 0, 2659, 944, 2189, 0,
+ -399, -969, 729, 0, 606, 629, 0, 0, -1039, -282, -654, 0, -748, -282, -654, 0,
+ 832, 314, 728, 0, 861, 314, 728, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1607, -3891, 2924, 0, 2373, 2526, 0, 0, -4665, -1751, -4060, 0, -5128, -1751, -4060, 0,
+ 2133, -23, 2923, 0, 3175, 1576, 2195, 0, -1038, -2914, 2190, 0, -1196, 1260, 1459, 0,
+ 1486, 415, 963, 0, 825, 415, 963, 0, -722, -2914, 2190, 0, 1750, 1892, 0, 0,
+ -404, -969, 729, 0, 576, 629, 0, 0, -518, -286, -663, 0, -1066, -286, -663, 0,
+ -380, -969, 729, 0, 579, 629, 0, 0, -399, -969, 729, 0, 606, 629, 0, 0,
+ -1055, -287, -666, 0, -763, -287, -666, 0, 831, 314, 728, 0, 861, 314, 728, 0,
+ -2318, -5836, 4386, 0, 2370, 2527, 0, 0, -2901, -951, -2205, 0, -2601, -951, -2205, 0,
+ 1353, -1978, 4385, 0, 4426, 2841, 2189, 0, -399, -969, 729, 0, 606, 629, 0, 0,
+ -1061, -289, -671, 0, -768, -289, -671, 0, 832, 314, 728, 0, 861, 314, 728, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1607, -3891, 2924, 0, 2370, 2526, 0, 0,
+ -4402, -1661, -3852, 0, -4888, -1661, -3852, 0, 2133, -23, 2923, 0, 3174, 1576, 2195, 0,
+ -1038, -2914, 2190, 0, -1196, 1260, 1459, 0, 1486, 415, 963, 0, 825, 415, 963, 0,
+ -722, -2914, 2190, 0, 1750, 1892, 0, 0, -404, -969, 729, 0, 576, 629, 0, 0,
+ -537, -293, -680, 0, -1088, -293, -680, 0, -380, -969, 729, 0, 579, 629, 0, 0,
+ -399, -969, 729, 0, 606, 629, 0, 0, -1077, -295, -684, 0, -783, -295, -684, 0,
+ 831, 314, 728, 0, 861, 314, 728, 0, -2318, -5836, 4386, 0, 2370, 2527, 0, 0,
+ -3037, -1005, -2330, 0, -2760, -1005, -2330, 0, 1354, -1978, 4385, 0, 4426, 2841, 2189, 0,
+ -399, -969, 729, 0, 607, 629, 0, 0, -1083, -297, -689, 0, -788, -297, -689, 0,
+ 832, 314, 728, 0, 861, 314, 728, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -971, 1801, -389, 0, 705, -80, -186, 0, -43, -375, -869, 0, 3184, -375, -869, 0,
+ 1359, -1114, -2583, 0, -1548, -490, 728, 0, 22, 4303, 1462, 0, 4857, -313, -726, 0,
+ 4970, -170, -394, 0, 5044, -170, -394, 0, 3151, -1760, 1464, 0, -4113, 1529, 3546, 0,
+ 90, 3491, -1659, 0, 3402, -1029, -2386, 0, 5404, -300, -697, 0, 5490, -301, -697, 0,
+ 2501, -715, -1658, 0, -690, 314, 728, 0, 1676, -241, 2417, 0, 1269, 1042, 2417, 0,
+ -3652, -716, -1661, 0, -485, -716, -1661, 0, 2057, 728, 1689, 0, 2067, 728, 1689, 0,
+ -962, 1799, 2572, 0, 3515, -422, -980, 0, -564, -3594, -2370, 0, 2855, -1651, -3830, 0,
+ 4945, 2418, 1842, 0, 2171, 2450, 2962, 0, 1676, -241, 2417, 0, 1269, 1042, 2417, 0,
+ -3658, -719, -1666, 0, -484, -719, -1666, 0, 2057, 728, 1689, 0, 2067, 728, 1689, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -975, 1801, -389, 0, 722, -88, -204, 0,
+ 5635, 1733, 4018, 0, 2354, 1733, 4018, 0, 1352, -1114, -2583, 0, -1545, -475, 728, 0,
+ 22, 4303, 1462, 0, 4857, -313, -726, 0, 4970, -170, -394, 0, 5044, -170, -394, 0,
+ 3151, -1760, 1464, 0, -4113, 1529, 3546, 0, 94, 3514, -1676, 0, 3427, -1036, -2403, 0,
+ 5428, -308, -715, 0, 5515, -308, -714, 0, 2526, -722, -1675, 0, -690, 314, 728, 0,
+ 2787, -4156, 2013, 0, -1759, 1955, 4533, 0, -6707, 190, 442, 0, -3348, 190, 442, 0,
+ 2234, 560, 1283, 0, 4449, -361, -837, 0, -116, -2440, 2872, 0, 7, 653, 1515, 0,
+ -4109, -2526, 107, 0, -547, -583, -1353, 0, 4178, 2517, 2141, 0, 4219, 1511, 785, 0,
+ 1676, -241, 2417, 0, 1269, 1042, 2417, 0, -3678, -726, -1684, 0, -481, -726, -1684, 0,
+ 2058, 728, 1689, 0, 2067, 728, 1689, 0, 1717, 3359, -2524, 0, 3096, -1086, -2519, 0,
+ 295, -2138, -4957, 0, 3543, -2138, -4957, 0, 22, -2, -4, 0, 135, -3, 0, 0,
+ 515, 4723, -2585, 0, 3445, -1042, -2416, 0, 5446, -313, -727, 0, 5537, -313, -727, 0,
+ 1426, -1114, -2583, 0, -1410, -460, 728, 0, 22, 4303, 1462, 0, 4857, -313, -726, 0,
+ 4970, -170, -394, 0, 5044, -170, -394, 0, 3151, -1760, 1464, 0, -4113, 1529, 3546, 0,
+ 98, 3537, -1693, 0, 3452, -1044, -2421, 0, 5453, -315, -732, 0, 5540, -316, -732, 0,
+ 2551, -730, -1692, 0, -690, 314, 728, 0, 3495, -90, -1041, 0, 2594, 638, 1479, 0,
+ -2356, -1134, -2630, 0, 1041, -1134, -2630, 0, 6634, -755, -1770, 0, 4448, -360, -836, 0,
+ -94, -2432, 2890, 0, 31, 661, 1532, 0, -4109, -2526, 107, 0, -547, -583, -1353, 0,
+ 4170, 2494, 2158, 0, 4199, 1518, 802, 0, 1676, -241, 2417, 0, 1269, 1042, 2417, 0,
+ -3698, -733, -1701, 0, -478, -733, -1701, 0, 2058, 728, 1689, 0, 2067, 728, 1689, 0,
+ 1720, 3365, -2529, 0, 3097, -1088, -2522, 0, 2472, -1326, -3074, 0, 3218, -1326, -3074, 0,
+ -1, -2, -5, 0, 130, -5, 0, 0, 511, 4723, -2585, 0, 3469, -1049, -2433, 0,
+ 5471, -321, -744, 0, 5562, -321, -744, 0, 1473, -1114, -2583, 0, -1396, -445, 728, 0,
+ 22, 4303, 1462, 0, 4857, -313, -726, 0, 4970, -170, -394, 0, 5044, -170, -394, 0,
+ 3151, -1760, 1464, 0, -4113, 1529, 3546, 0, 102, 3560, -1711, 0, 3476, -1051, -2438, 0,
+ 5478, -323, -749, 0, 5565, -323, -749, 0, 2576, -737, -1710, 0, -690, 314, 728, 0,
+ 3652, 784, -1703, 0, 3534, 354, 822, 0, -1435, -1425, -3305, 0, 1990, -1425, -3305, 0,
+ 7587, -1041, -2431, 0, 4451, -362, -839, 0, -72, -2425, 2907, 0, 55, 668, 1549, 0,
+ -4109, -2526, 107, 0, -547, -583, -1353, 0, 4162, 2471, 2176, 0, 4178, 1526, 819, 0,
+ 1676, -241, 2417, 0, 1269, 1042, 2417, 0, -3718, -741, -1718, 0, -475, -741, -1718, 0,
+ 2058, 728, 1689, 0, 2067, 728, 1689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -987, 1801, -389, 0, 802, -110, -255, 0, 1061, -29, -67, 0, 3131, -29, -67, 0,
+ 1536, -1114, -2583, 0, -1494, -430, 728, 0, 22, 4303, 1462, 0, 4857, -313, -726, 0,
+ 4970, -170, -394, 0, 5044, -170, -394, 0, 3151, -1760, 1464, 0, -4113, 1529, 3546, 0,
+ 106, 3583, -1728, 0, 3501, -1059, -2455, 0, 5503, -330, -767, 0, 5590, -330, -766, 0,
+ 2601, -745, -1727, 0, -690, 314, 728, 0, 1676, -241, 2417, 0, 1269, 1042, 2417, 0,
+ -3732, -746, -1731, 0, -473, -746, -1731, 0, 2058, 728, 1689, 0, 2067, 728, 1689, 0,
+ -3683, -5266, 2307, 0, -2312, 409, 948, 0, 829, 309, 717, 0, 914, 309, 717, 0,
+ 5194, 3775, 2305, 0, 4013, 2406, 2195, 0, -1408, -334, -775, 0, -1119, -334, -775, 0,
+ 930, 314, 728, 0, 892, 314, 728, 0, 2525, 4008, -776, 0, 1355, 1459, 0, 0,
+ -747, -1112, 386, 0, -612, 168, 389, 0, -2430, -788, -1827, 0, -2213, -788, -1827, 0,
+ 1080, 771, 386, 0, 888, 314, 729, 0, -51, 154, -115, 0, -184, 314, 728, 0,
+ -1024, -336, -779, 0, -917, -336, -779, 0, 1100, 1437, -116, 0, 882, 314, 728, 0,
+ 1297, -387, 2087, 0, 1525, 900, 2087, 0, 1298, 459, 1065, 0, 719, 1091, -394, 0,
+ 306, -1492, 2088, 0, 882, 315, 730, 0, -163, -671, 1420, 0, 573, 612, 1420, 0,
+ -118, -24, -55, 0, -34, -24, -55, 0, 2715, 2369, 1419, 0, 2237, 1773, 728, 0,
+ -133, 3014, -3313, 0, -471, -1428, -3312, 0, 2934, 1016, 2356, 0, 2876, 1016, 2356, 0,
+ -660, 2941, -3313, 0, -1701, 372, -2521, 0, -2536, -2337, 128, 0, -1708, -530, -1229, 0,
+ 2642, 944, 2189, 0, 2707, 944, 2189, 0, 2407, 2806, 127, 0, 1353, 1459, 0, 0,
+ -1427, -342, -793, 0, -1141, -342, -792, 0, 930, 314, 728, 0, 892, 314, 728, 0,
+ 2533, 4031, -794, 0, 1355, 1459, 0, 0, -663, -257, -602, 0, -753, -259, -601, 0,
+ -3206, -1087, -2522, 0, -3084, -1087, -2522, 0, 296, 802, -602, 0, 8, 0, 0, 0,
+ -57, 131, -98, 0, -184, 314, 728, 0, -1045, -343, -796, 0, -938, -343, -796, 0,
+ 1097, 1414, -98, 0, 882, 314, 728, 0, 1297, -387, 2087, 0, 1525, 900, 2087, 0,
+ 1298, 459, 1065, 0, 719, 1091, -394, 0, 306, -1492, 2088, 0, 882, 315, 730, 0,
+ 2303, -443, 4779, 0, 3979, 1762, 4087, 0, 745, 284, 658, 0, 846, 284, 658, 0,
+ 3590, 875, 4779, 0, 4259, 2502, 2417, 0, -150, 3009, -3331, 0, -470, -1436, -3330, 0,
+ -1708, -609, -1413, 0, -1701, -609, -1413, 0, -648, 2963, -3331, 0, -1698, 372, -2522, 0,
+ -2515, -2329, 146, 0, -1686, -523, -1212, 0, 2642, 944, 2189, 0, 2707, 944, 2189, 0,
+ 2399, 2783, 144, 0, 1353, 1459, 0, 0, -1015, -180, -420, 0, -664, -181, -419, 0,
+ 929, 314, 728, 0, 891, 314, 728, 0, 2349, 3534, -421, 0, 1354, 1459, 0, 0,
+ -883, -341, -804, 0, -1010, -345, -801, 0, -3205, -1087, -2522, 0, -3083, -1087, -2522, 0,
+ 395, 1071, -805, 0, 8, 0, 0, 0, -64, 108, -81, 0, -184, 314, 728, 0,
+ -1067, -351, -813, 0, -959, -351, -813, 0, 1093, 1391, -81, 0, 882, 314, 728, 0,
+ 1297, -387, 2087, 0, 1525, 900, 2087, 0, 1298, 459, 1065, 0, 719, 1091, -394, 0,
+ 306, -1492, 2088, 0, 882, 315, 730, 0, -1898, -2084, 973, 0, -888, 121, 281, 0,
+ 728, 276, 640, 0, 829, 276, 640, 0, 5465, 5941, 971, 0, 4259, 2502, 2417, 0,
+ -171, 2998, -3346, 0, -500, -1442, -3344, 0, -304, -118, -273, 0, -317, -118, -273, 0,
+ -638, 2987, -3346, 0, -1696, 373, -2520, 0, -2493, -2322, 163, 0, -1664, -515, -1194, 0,
+ 2642, 944, 2189, 0, 2707, 944, 2189, 0, 2391, 2760, 162, 0, 1353, 1459, 0, 0,
+ -1471, -358, -833, 0, -1192, -359, -832, 0, 930, 314, 728, 0, 892, 314, 728, 0,
+ 2552, 4084, -834, 0, 1354, 1459, 0, 0, 449, 179, 403, 0, 534, 175, 406, 0,
+ -3205, -1087, -2520, 0, -3083, -1087, -2520, 0, -199, -536, 403, 0, 8, 0, 0, 0,
+ -71, 84, -63, 0, -183, 314, 728, 0, -1089, -358, -831, 0, -980, -358, -831, 0,
+ 1089, 1368, -64, 0, 882, 314, 728, 0, 1297, -387, 2087, 0, 1525, 900, 2087, 0,
+ 1298, 459, 1065, 0, 719, 1091, -394, 0, 306, -1492, 2088, 0, 882, 315, 730, 0,
+ 1923, 233, 3370, 0, 3309, 1154, 2677, 0, -1978, -657, -1523, 0, -1855, -657, -1523, 0,
+ 3013, 1469, 3369, 0, 3387, 2188, 1689, 0, -4313, -1354, -3140, 0, -4154, -1354, -3139, 0,
+ 1850, 623, 1445, 0, 1471, 934, 728, 0, 3584, 7155, -3142, 0, 1353, 1459, 0, 0,
+ -582, -1048, 537, 0, -420, 233, 540, 0, -2433, -789, -1829, 0, -2216, -789, -1829, 0,
+ 1005, 570, 537, 0, 888, 314, 729, 0, -75, 68, -51, 0, -183, 314, 728, 0,
+ -1104, -364, -843, 0, -995, -364, -843, 0, 1086, 1351, -51, 0, 882, 314, 728, 0,
+ 1297, -387, 2087, 0, 1525, 900, 2087, 0, 1298, 459, 1065, 0, 719, 1091, -394, 0,
+ 306, -1492, 2088, 0, 882, 315, 730, 0, -374, -969, 728, 0, -213, 314, 728, 0,
+ 5116, 1819, 4218, 0, 5150, 1819, 4218, 0, 905, 314, 728, 0, 875, 314, 728, 0,
+ -2520, -7021, 5276, 0, 3467, 1089, 2525, 0, 859, 3670, -1795, 0, 875, 314, 727, 0,
+ 3793, -703, 5274, 0, 6755, 2274, 5274, 0, 733, 777, 192, 0, -2463, -645, -1497, 0,
+ -1719, -1960, 1419, 0, -172, -18, -41, 0, -4785, -2894, 193, 0, 1101, 415, 963, 0,
+ -2042, -5604, 4211, 0, 3458, 1087, 2521, 0, -134, 314, 728, 0, 879, 314, 728, 0,
+ 2185, -1161, 4210, 0, 5488, 1815, 4209, 0, 2001, 1226, -926, 0, 1788, 506, 1173, 0,
+ 2633, -1330, -104, 0, -664, -360, -834, 0, -854, -399, -925, 0, -5639, -399, -925, 0,
+ -1232, -5928, 3446, 0, 1642, 400, 927, 0, 2194, -241, 2417, 0, 2463, 728, 1689, 0,
+ 4626, 1485, 3444, 0, -378, 1485, 3444, 0, 3694, 1109, 963, 0, 4342, 1313, 3046, 0,
+ 5069, 971, 5235, 0, 2685, 1943, 4505, 0, 1715, 415, 963, 0, -4965, -170, -394, 0,
+ -278, -5223, 4894, 0, -1774, 299, 691, 0, 1784, -897, 3875, 0, 3380, 1042, 2418, 0,
+ -353, -3843, 4893, 0, 1658, 2109, 4892, 0, -2981, -8377, 6292, 0, 3441, 1081, 2506, 0,
+ 858, 3673, -1799, 0, 870, 313, 726, 0, 5058, -264, 6290, 0, 7955, 2713, 6292, 0,
+ 758, 785, 209, 0, -2438, -638, -1479, 0, -1694, -1952, 1437, 0, -147, -10, -23, 0,
+ -4760, -2886, 210, 0, 1101, 415, 963, 0, -2033, -5581, 4194, 0, 3434, 1079, 2503, 0,
+ -134, 314, 728, 0, 880, 314, 728, 0, 2164, -1168, 4193, 0, 5466, 1808, 4192, 0,
+ 3541, 4103, -2119, 0, -231, -36, -85, 0, 1724, -1427, -330, 0, -2869, -457, -1059, 0,
+ -5377, -3890, -2117, 0, -6749, 231, -2849, 0, -1204, -5897, 3446, 0, 1661, 407, 944, 0,
+ 2194, -241, 2417, 0, 2463, 728, 1689, 0, 4625, 1485, 3444, 0, -379, 1485, 3444, 0,
+ 3694, 1109, 963, 0, 4342, 1313, 3046, 0, 5069, 971, 5235, 0, 2685, 1943, 4505, 0,
+ 1715, 415, 963, 0, -4965, -170, -394, 0, -74, -5111, 3841, 0, -305, -149, -345, 0,
+ 2059, 73, 3146, 0, 3388, 1042, 2418, 0, 2134, -1321, 3840, 0, 104, 1655, 3839, 0,
+ -2253, -6231, 4679, 0, 3416, 1073, 2488, 0, 857, 3673, -1800, 0, 874, 313, 725, 0,
+ 3052, -960, 4677, 0, 6049, 2018, 4680, 0, 783, 792, 227, 0, -2413, -630, -1462, 0,
+ -1670, -1945, 1454, 0, -123, -3, -6, 0, -4735, -2879, 228, 0, 1101, 415, 963, 0,
+ -2024, -5558, 4177, 0, 3410, 1072, 2486, 0, -134, 314, 728, 0, 880, 314, 728, 0,
+ 2143, -1176, 4176, 0, 5444, 1800, 4175, 0, 2063, 1343, -1014, 0, 1162, 309, 716, 0,
+ 2633, -1330, -105, 0, -661, -360, -834, 0, -951, -437, -1013, 0, -5788, -437, -1013, 0,
+ -1176, -5867, 3446, 0, 1681, 415, 961, 0, 2194, -241, 2417, 0, 2463, 728, 1689, 0,
+ 4623, 1485, 3444, 0, -380, 1485, 3444, 0, 3694, 1109, 963, 0, 4342, 1313, 3046, 0,
+ 5069, 971, 5235, 0, 2685, 1943, 4505, 0, 1715, 415, 963, 0, -4965, -170, -394, 0,
+ -320, -5540, 4163, 0, 2488, 728, 1688, 0, 2194, -241, 2417, 0, 2461, 728, 1689, 0,
+ 5452, 1795, 4161, 0, 413, 1794, 4161, 0, -1037, -2648, 1985, 0, 3392, 1065, 2470, 0,
+ 857, 3673, -1801, 0, 881, 312, 725, 0, -295, -2121, 1985, 0, 2870, 857, 1988, 0,
+ 808, 800, 244, 0, -2388, -623, -1445, 0, -1645, -1937, 1471, 0, -98, 5, 11, 0,
+ -4711, -2871, 245, 0, 1101, 415, 963, 0, -8, 1, -12, 0, -15, -5, -12, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -15, -5, -12, 0, -14, -5, -12, 0,
+ -2698, -2152, -2118, 0, -1152, -488, -1132, 0, 431, 2128, -1323, 0, -1540, 90, 208, 0,
+ -6050, -3889, -2118, 0, -4851, 771, -1597, 0, -2261, -10879, 8175, 0, 5683, 1732, 4018, 0,
+ 2059, 73, 3146, 0, 3344, 1043, 2418, 0, 7395, 548, 8172, 0, 5647, 3524, 8172, 0,
+ -1248, -3269, 2452, 0, 3374, 1060, 2457, 0, 856, 3672, -1801, 0, 879, 312, 724, 0,
+ 285, -1920, 2451, 0, 3420, 1058, 2455, 0, 826, 805, 256, 0, -2370, -618, -1432, 0,
+ -1627, -1932, 1484, 0, -80, 10, 24, 0, -4693, -2866, 257, 0, 1101, 415, 963, 0,
+ -2009, -5518, 4147, 0, 3369, 1059, 2456, 0, -134, 314, 728, 0, 880, 314, 728, 0,
+ 2107, -1189, 4146, 0, 5406, 1787, 4145, 0, 862, -2386, 1788, 0, -509, -216, -502, 0,
+ 2634, -1331, -107, 0, -663, -360, -836, 0, 2567, 770, 1787, 0, -2601, 770, 1787, 0,
+ -1128, -5814, 3446, 0, 1714, 427, 991, 0, 2194, -241, 2417, 0, 2463, 728, 1689, 0,
+ 4620, 1485, 3444, 0, -382, 1485, 3444, 0, 3694, 1109, 963, 0, 4342, 1313, 3046, 0,
+ 5069, 971, 5235, 0, 2685, 1943, 4505, 0, 1715, 415, 963, 0, -4965, -170, -394, 0,
+ 3786, 2764, 6406, 0, -1060, -1547, 1689, 0, 6997, 4970, 3906, 0, 1645, 3953, 4879, 0,
+ -359, -718, 0, 0, 3413, 3842, 3841, 0, 1987, 349, 811, 0, -2194, -1986, 1686, 0,
+ -495, -64, -150, 0, -438, -1397, 1552, 0, -342, 1310, 0, 0, 604, 3239, 2444, 0,
+ 3277, 1313, 3046, 0, 2909, 4483, 1000, 0, 1711, 2908, 2189, 0, 2295, 2207, 2432, 0,
+ -785, 1756, 0, 0, -3626, 1287, -2083, 0, 1820, 728, 1689, 0, -1747, -1977, 1689, 0,
+ 770, 314, 728, 0, -656, -1019, 2430, 0, 0, 0, 0, 0, 1072, 3237, 2439, 0,
+ -432, 979, 2267, 0, 5354, 64, 291, 0, 583, -114, -252, 0, -4286, -114, -254, 0,
+ 886, -3393, 0, 0, -1700, -192, -446, 0, -1190, 759, 1755, 0, 353, 0, 0, 0,
+ 2554, 65, 2435, 0, -2420, 65, 2436, 0, 1342, -4516, 0, 0, 325, 0, 0, 0,
+ 395, -900, -2083, 0, 3569, 1214, 2816, 0, -3001, -898, -2083, 0, 2621, -898, -2083, 0,
+ -812, 3110, 0, 0, 982, 0, 0, 0, -918, 861, 1992, 0, -1200, -1723, 1689, 0,
+ 800, -1403, 3889, 0, -4517, -2420, 4862, 0, 2177, -6381, 0, 0, 2714, 3892, 3958, 0,
+ 2287, -334, -770, 0, -2108, -1960, 1685, 0, -2773, -746, -1731, 0, 807, -2079, -29, 0,
+ -958, 3672, 0, 0, 587, 3232, 2427, 0, 3277, 1313, 3046, 0, 2927, 4491, 1017, 0,
+ 1711, 2908, 2189, 0, 2299, 2207, 2432, 0, -785, 1756, 0, 0, -3623, 1287, -2083, 0,
+ 1820, 728, 1689, 0, -1727, -1951, 1689, 0, 770, 314, 728, 0, -656, -1019, 2430, 0,
+ 0, 0, 0, 0, 1054, 3229, 2422, 0, -435, 979, 2266, 0, 836, -5569, 291, 0,
+ 576, -114, -251, 0, -4285, -114, -252, 0, 887, -3393, 0, 0, 2324, 1435, 3327, 0,
+ -1168, 759, 1755, 0, 354, 0, 0, 0, 2553, 82, 2418, 0, -2382, 83, 2418, 0,
+ 1326, -4468, 0, 0, 328, 0, 0, 0, 395, -900, -2083, 0, 3569, 1214, 2816, 0,
+ -3001, -898, -2083, 0, 2621, -898, -2083, 0, -812, 3110, 0, 0, 982, 0, 0, 0,
+ -914, 853, 1975, 0, -1199, -1723, 1689, 0, 775, -1411, 3872, 0, -4503, -2428, 4844, 0,
+ 2171, -6355, 0, 0, 2714, 3892, 3958, 0, 2002, 316, 736, 0, -2150, -1934, 1685, 0,
+ -603, -97, -225, 0, -379, -1430, 1477, 0, -371, 1423, 0, 0, 568, 3224, 2409, 0,
+ 3277, 1313, 3046, 0, 2946, 4498, 1034, 0, 1711, 2908, 2189, 0, 2302, 2207, 2432, 0,
+ -785, 1756, 0, 0, -3620, 1287, -2083, 0, 1820, 728, 1689, 0, -1706, -1926, 1689, 0,
+ 770, 314, 728, 0, -656, -1019, 2430, 0, 0, 0, 0, 0, 1035, 3222, 2404, 0,
+ -412, 928, 2149, 0, 6456, -2582, 4688, 0, 405, -165, -372, 0, -3371, -165, -372, 0,
+ 841, -3218, 0, 0, 2367, 1119, 2594, 0, -1147, 759, 1755, 0, 355, 0, 0, 0,
+ 2552, 100, 2401, 0, -2344, 100, 2401, 0, 1309, -4420, 0, 0, 331, 0, 0, 0,
+ 395, -900, -2083, 0, 3569, 1214, 2816, 0, -3001, -898, -2083, 0, 2621, -898, -2083, 0,
+ -812, 3110, 0, 0, 982, 0, 0, 0, -911, 846, 1957, 0, -1198, -1723, 1689, 0,
+ 750, -1418, 3854, 0, -4489, -2435, 4827, 0, 2164, -6329, 0, 0, 2714, 3892, 3958, 0,
+ 1650, 1116, 2587, 0, -2205, -1908, 1686, 0, 2064, 701, 1626, 0, -1836, -632, 3328, 0,
+ 350, -1341, 0, 0, 548, 3217, 2392, 0, 3277, 1313, 3046, 0, 2964, 4506, 1052, 0,
+ 1711, 2908, 2189, 0, 2305, 2207, 2432, 0, -785, 1756, 0, 0, -3616, 1287, -2083, 0,
+ 1821, 728, 1689, 0, -1685, -1900, 1689, 0, 770, 314, 728, 0, -656, -1019, 2430, 0,
+ 0, 0, 0, 0, 1017, 3215, 2387, 0, 324, -748, -1731, 0, 466, -6234, 282, 0,
+ -5188, -1837, -4253, 0, -1140, -1837, -4254, 0, -672, 2578, 0, 0, 2794, 1624, 3767, 0,
+ -1125, 759, 1755, 0, 355, 0, 0, 0, 2552, 118, 2383, 0, -2306, 118, 2384, 0,
+ 1292, -4372, 0, 0, 334, 0, 0, 0, 395, -900, -2083, 0, 3569, 1214, 2816, 0,
+ -3001, -898, -2083, 0, 2621, -898, -2083, 0, -812, 3110, 0, 0, 982, 0, 0, 0,
+ -914, 835, 1931, 0, 3955, 4705, 1689, 0, 721, -1439, 3837, 0, -4488, -2455, 4809, 0,
+ 2162, -6315, 0, 0, -1878, 2037, -345, 0, 1727, 941, 2181, 0, -2167, -1882, 1686, 0,
+ 1480, 526, 1221, 0, -1517, -806, 2923, 0, 192, -735, 0, 0, 530, 3209, 2375, 0,
+ 3277, 1313, 3046, 0, 2983, 4513, 1069, 0, 1711, 2908, 2189, 0, 2308, 2207, 2432, 0,
+ -785, 1756, 0, 0, -3613, 1287, -2083, 0, 1821, 728, 1689, 0, -1665, -1874, 1689, 0,
+ 770, 314, 728, 0, -656, -1019, 2430, 0, 0, 0, 0, 0, 998, 3207, 2370, 0,
+ 3920, 657, 4683, 3203, 3180, 3606, 4627, 2819, 1293, 1264, 2537, 952, 1324, 1239, -2256, -1928,
+ -874, 463, 1074, 0, -713, 464, 1641, 3408, -345, -2512, 1078, 0, 1808, 728, 1689, 0,
+ -1508, -2260, -1509, -1927, -2553, -2286, -2876, -1928, 275, -292, -611, 0, -631, -264, -45, 3396,
+ -1107, -3346, 1312, -1918, 72, -1007, -200, -8, -3465, -1051, -898, -1927, -1659, -2022, -2265, -1928,
+ -948, 585, 1357, 0, -1502, 585, 859, -2989, -2001, -5335, 2513, -926, 1538, 624, 2528, -815,
+ -5016, -4850, -3900, -4905, -3805, -4893, -4236, -3816, -3652, -1142, 72, -1928, -3759, -1160, 2931, 3389,
+ -2285, -3087, 821, -925, -269, -103, 840, -814, -2811, -2883, -3000, -2977, -1875, -2870, -1972, -1888,
+ -3126, -1151, 51, -1928, -3730, -1168, 2307, -238, -3657, -2066, 3036, -927, 1103, 524, 2297, -816,
+ -4636, -2642, -1646, -2979, -464, -2287, -615, -1888, -2764, -2676, -3631, -1928, 1148, -2759, -1336, 0,
+ -2287, -3086, 824, -925, -269, -104, 840, -814, -2815, -2881, -3000, -2977, -1875, -2870, -1972, -1888,
+ -3219, -1154, 44, -1928, -3733, -1172, 2339, 0, 3404, 2905, 2993, 3203, 1372, 2877, 2938, 2819,
+ 3263, 3232, 3435, 2879, 3260, 3260, 9, 0, 85, -76, -176, 0, 118, -76, -176, 0,
+ -327, -2504, 1096, 0, 1808, 728, 1689, 0, -1527, -2252, -1492, -1927, -2535, -2278, -2858, -1928,
+ 256, -284, -594, 0, -613, -256, -32, 3371, -1107, -3346, 1312, -1918, 72, -1007, -200, -8,
+ -3465, -1051, -898, -1927, -1659, -2022, -2265, -1928, -948, 585, 1357, 0, -1502, 585, 859, -2989,
+ 4764, 2440, 9146, 2856, 3704, 4337, 6727, 2513, -2292, 2064, 3432, 421, 4421, 2005, 416, -1889,
+ -1987, -817, 570, -1929, 2346, -216, 1177, -5, -4063, -4904, -2329, -1868, -1679, -956, -88, -818,
+ -681, -4435, -3000, -2977, -1734, -2869, -1971, -1888, -4358, -2148, -2263, -1928, -1214, -2166, 32, 0,
+ 3013, -1406, 7881, 2245, 2741, 3467, 5373, 2815, -2837, 3676, 4226, 952, -436, 1966, -567, -1928,
+ -2561, 2296, 5144, 0, -3204, 2218, 5687, 3257, -315, -2499, 1108, 0, 1808, 728, 1689, 0,
+ -1542, -2246, -1480, -1927, -2522, -2273, -2846, -1928, 242, -278, -581, 0, -601, -251, -23, 3353,
+ -1107, -3346, 1312, -1918, 72, -1007, -200, -8, -3465, -1051, -898, -1927, -1659, -2022, -2265, -1928,
+ -948, 585, 1357, 0, -1502, 585, 859, -2989, -1986, -5335, 2513, -926, 1538, 624, 2528, -815,
+ -5000, -4850, -3900, -4905, -3805, -4893, -4236, -3816, -3687, -1107, 153, -1928, -3812, -1124, 3006, 3346,
+ -2291, -3087, 822, -925, -269, -103, 840, -814, -2817, -2883, -3000, -2977, -1875, -2870, -1972, -1888,
+ -3113, -1163, 22, -1928, -3712, -1181, 2817, 2997, -3646, -2053, 3065, -927, 1108, 524, 2297, -816,
+ -4664, -2622, -1646, -2979, -464, -2287, -615, -1888, -2755, -2663, -3602, -1928, 1116, -2746, -1307, 0,
+ -2291, -3086, 824, -925, -269, -103, 840, -814, -2820, -2881, -3000, -2977, -1875, -2869, -1972, -1888,
+ -3208, -1164, 20, -1928, -3717, -1182, 2315, 0, 3532, 2908, 2996, 3206, 1373, 2880, 2942, 2822,
+ 3391, 3235, 3438, 2882, 3259, 3264, 8, 0, -198, 208, 482, 0, -316, 208, 482, 0,
+ -297, -2491, 1125, 0, 1808, 728, 1689, 0, -1561, -2237, -1462, -1927, -2505, -2265, -2829, -1928,
+ 222, -269, -564, 0, -583, -243, -10, 3328, -1107, -3346, 1312, -1918, 72, -1007, -200, -8,
+ -3465, -1051, -898, -1927, -1659, -2022, -2265, -1928, -948, 585, 1357, 0, -1502, 585, 859, -2989,
+ -2693, -5335, 2512, -926, 1538, 624, 2528, -815, -5707, -4850, -3900, -4905, -3783, -4893, -4236, -3816,
+ -2063, -2733, -3618, -1928, -1329, -2753, -770, 3321, -2294, -3087, 821, -925, -269, -103, 840, -814,
+ -2819, -2883, -3000, -2977, -1875, -2870, -1972, -1888, -3106, -1171, 4, -1928, -3699, -1189, 2220, -477,
+ -3640, -2045, 3083, -927, 1112, 524, 2297, -816, -4680, -2611, -1646, -2979, -464, -2287, -615, -1888,
+ -2750, -2656, -3584, -1928, 1097, -2739, -1289, 0, -2294, -3086, 824, -925, -269, -103, 840, -814,
+ -2823, -2881, -3000, -2977, -1875, -2869, -1972, -1888, -3200, -1172, 2, -1928, -3705, -1190, 2298, 0,
+ 3111, 2904, 2993, 3202, 1372, 2877, 2938, 2818, 2970, 3231, 3434, 2878, 3268, 3260, 8, 0,
+ 758, -750, -1739, 0, 1146, -751, -1739, 0, -279, -2484, 1143, 0, 1808, 728, 1689, 0,
+ -1581, -2229, -1445, -1927, -2487, -2258, -2811, -1928, 202, -261, -547, 0, -565, -236, 4, 3303,
+ -1107, -3346, 1312, -1918, 72, -1007, -200, -8, -3465, -1051, -898, -1927, -1659, -2022, -2265, -1928,
+ -948, 585, 1357, 0, -1502, 585, 859, -2989, -2686, -5335, 2512, -926, 1538, 624, 2528, -815,
+ -5700, -4850, -3900, -4905, -3783, -4893, -4236, -3816, -2079, -2717, -3581, -1928, -1354, -2737, -737, 3296,
+ -2297, -3087, 821, -925, -269, -103, 840, -814, -2823, -2883, -3000, -2977, -1875, -2870, -1972, -1888,
+ -3098, -1178, -13, -1928, -3688, -1196, 2549, 1600, -3633, -2038, 3100, -927, 1115, 524, 2297, -816,
+ -4696, -2599, -1646, -2979, -464, -2287, -615, -1888, -2745, -2648, -3567, -1928, 1078, -2731, -1272, 0,
+ -2179, 1717, 3977, 0, 1355, 1459, 0, 0, -414, 315, 728, 0, 511, 629, 0, 0,
+ -875, -1258, 3978, 0, 430, 3326, 2288, 0, -854, 2961, -275, 0, 3381, -432, -1000, 0,
+ 204, -2972, -1797, 0, 805, -2613, -1000, 0, -3030, -433, -1006, 0, 13, 313, 723, 0,
+ -1862, -1963, 4703, 0, -1206, 1073, 3013, 0, 1594, 3063, 199, 0, -2166, 1301, 3013, 0,
+ 121, 1486, 3444, 0, 128, 501, 1159, 0, -4251, 648, -3155, -3450, 1304, -2539, -3019, -1700,
+ -4894, -3967, -1158, -1716, 1367, -585, -1353, 0, -3932, -1973, 963, 0, 1660, 1315, 3046, 0,
+ -3478, -1701, 5286, 0, -566, 2755, 3008, 0, 1060, 3600, 1458, 0, -1543, 1929, 3008, 0,
+ 3080, -1010, 4557, 0, -264, 2593, 588, 0, 806, 945, 1123, 3, -1972, 234, -2845, 0,
+ 2082, -1308, -1791, 0, -1631, -598, -2845, 0, -1665, -1401, 3637, 0, 424, 3320, 2274, 0,
+ -1003, -1765, 280, 613, 171, 2036, 0, 0, 1548, 1530, 3546, 0, 648, 631, 0, 0,
+ 4632, -1869, 443, 0, -981, 1800, -1247, 0, -2176, 1709, 3960, 0, 1355, 1459, 0, 0,
+ -417, 315, 728, 0, 511, 629, 0, 0, -857, -1265, 3960, 0, 425, 3319, 2271, 0,
+ -610, 3131, -1389, 0, 3867, -591, -1369, 0, -358, -3447, -1798, 0, 1284, -2773, -1369, 0,
+ -2654, -914, -2119, 0, -203, -8, -21, 0, -1856, -1940, 4685, 0, -1207, 1073, 2995, 0,
+ 1591, 3048, 216, 0, -2144, 1293, 2995, 0, 118, 1486, 3444, 0, 133, 509, 1176, 0,
+ -4251, 648, -3155, -3450, 1304, -2539, -3019, -1700, -4894, -3967, -1158, -1716, 1367, -585, -1353, 0,
+ -3932, -1973, 963, 0, 1660, 1315, 3046, 0, -3307, -2108, 4271, 0, -543, 2748, 2990, 0,
+ 854, 3578, 1457, 0, -1492, 1921, 2990, 0, 4066, -1448, 3543, 0, -553, 2163, -409, 0,
+ -92, -2705, 3844, 3, -5585, 1413, -108, 0, 5233, 2219, -1791, 0, -5020, 584, -108, 0,
+ 1129, -228, 6357, 0, 418, 3313, 2256, 0, -1026, -1784, 257, 592, 149, 2036, 0, 0,
+ 1548, 1530, 3546, 0, 648, 631, 0, 0, 4632, -1892, 460, 0, -963, 1808, -1229, 0,
+ -2174, 1702, 3942, 0, 1354, 1459, 0, 0, -420, 315, 728, 0, 512, 629, 0, 0,
+ -840, -1273, 3943, 0, 420, 3312, 2254, 0, -442, -79, -184, 0, 9, 0, 0, 0,
+ 2856, -1090, -2522, 0, -2020, -2178, 0, 0, -288, -80, -185, 0, -50, -80, -185, 0,
+ -1850, -1917, 4668, 0, -1208, 1073, 2978, 0, 1588, 3033, 234, 0, -2123, 1286, 2978, 0,
+ 114, 1486, 3444, 0, 138, 516, 1194, 0, -4251, 648, -3155, -3450, 1304, -2539, -3019, -1700,
+ -4894, -3967, -1158, -1716, 1367, -585, -1353, 0, -3932, -1973, 963, 0, 1660, 1315, 3046, 0,
+ -1849, -1910, 4663, 0, -1875, 1281, 2973, 0, 2071, 3240, 728, 0, -2117, 1283, 2973, 0,
+ 506, 1698, 3934, 0, 289, 730, 1689, 0, 881, 1187, 891, 4, -1720, 148, -3043, 0,
+ 1856, -1560, -1794, 0, -1393, -683, -3043, 0, -1828, -1499, 3408, 0, 413, 3305, 2238, 0,
+ -1050, -1803, 235, 572, 127, 2036, 0, 0, 1548, 1530, 3546, 0, 648, 631, 0, 0,
+ 4631, -1915, 477, 0, -946, 1815, -1212, 0, -2171, 1694, 3925, 0, 1355, 1459, 0, 0,
+ -424, 315, 728, 0, 512, 629, 0, 0, -823, -1280, 3926, 0, 415, 3304, 2236, 0,
+ -1708, -3364, 4683, 1108, -1516, 784, 3257, -849, 4803, 2769, -2739, -857, -6374, -415, 4089, 0,
+ 2258, 3413, 848, 0, -2185, -1082, -2510, 0, -1845, -1894, 4651, 0, -1209, 1073, 2961, 0,
+ 1585, 3019, 251, 0, -2102, 1278, 2961, 0, 110, 1486, 3444, 0, 143, 524, 1211, 0,
+ -4251, 648, -3155, -3450, 1304, -2539, -3019, -1700, -4894, -3967, -1158, -1716, 1367, -585, -1353, 0,
+ -3932, -1973, 963, 0, 1660, 1315, 3046, 0, -2417, -797, 9693, 0, 3627, 3329, 2956, 0,
+ 226, 2971, 154, 0, -1572, 1907, 2956, 0, -1875, -2961, 6932, 0, 149, 3641, 3014, 0,
+ 1438, 3428, -817, 3, 511, -579, -4732, 0, -95, -3737, -1793, 0, 701, -1412, -4732, 0,
+ -3525, -2236, 1701, 0, 409, 3298, 2222, 0, -1073, -1823, 213, 552, 104, 2036, 0, 0,
+ 1548, 1530, 3546, 0, 648, 631, 0, 0, 4631, -1938, 495, 0, -928, 1823, -1195, 0,
+ -2168, 1687, 3908, 0, 1355, 1459, 0, 0, -427, 315, 728, 0, 513, 629, 0, 0,
+ -805, -1288, 3908, 0, 410, 3297, 2219, 0, -1935, -2720, 2407, 0, -1739, 1240, 2881, 0,
+ 4450, 2029, -1799, 0, -3963, -938, 2881, 0, 2116, 721, 1674, 0, -335, -206, -478, 0,
+ -1839, -1871, 4633, 0, -1209, 1073, 2943, 0, 1582, 3004, 268, 0, -2080, 1271, 2944, 0,
+ 107, 1486, 3444, 0, 149, 531, 1228, 0, -4251, 648, -3155, -3450, 1304, -2539, -3019, -1700,
+ -4894, -3967, -1158, -1716, 1367, -585, -1353, 0, -3932, -1973, 963, 0, 1660, 1315, 3046, 0,
+ 4821, -6372, 8862, -5317, -355, 478, 2279, -5313, 155, 4495, 7442, -5318, 931, 1493, -3949, -5317,
+ -4238, -2583, 8255, -5316, -3199, 648, 2337, -5318, -1367, -1551, 1863, -1807, -4790, -638, 871, -1808,
+ -1194, 1176, 491, -1810, 4593, 714, -379, -1810, -4398, -1302, -371, -1808, -1610, 2306, -582, -1809,
+ 2082, -3480, 997, -3916, 4340, 1342, 343, -3912, 1898, 3314, -2513, -3918, -2316, -2698, 32, -3919,
+ -169, -5265, -3357, -3917, 566, 336, -4280, -3918, 597, 307, 4381, -1807, -2754, 1543, 871, -1807,
+ -2572, 2045, 2499, -1809, 4592, 713, -379, -1809, -3638, -1526, -890, -1808, -1614, 2305, -587, -1809,
+ 5545, -2101, 4013, 1886, -2780, 54, 4504, 1883, -732, 134, 4891, 1889, -1915, 3463, -769, 1889,
+ -2618, 6985, 8832, 1888, -6888, -505, 5475, 1887, 1779, -4770, 2521, 331, -655, 1423, 1279, 331,
+ 1887, 889, 2730, 331, -1806, 787, 497, 332, -1656, 1812, 3271, 331, 575, 188, -155, 331,
+ -1348, 3692, 3879, 0, -298, 1361, 1689, 0, 597, 632, 1463, 0, -1210, 1890, 0, 0,
+ 4726, -172, -394, 0, -1826, 576, 0, 0, 571, -1946, 10002, -2027, -4012, 1110, -1787, -2025,
+ -125, 826, 5591, -2027, 5917, 2293, 986, -2025, -4843, -1215, 2238, -2028, 2678, 2567, 917, -2029,
+ -1373, -1541, 1845, -1807, -4765, -638, 871, -1808, -1179, 1166, 466, -1810, 4581, 699, -379, -1810,
+ -4366, -1312, -395, -1808, -1588, 2298, -600, -1809, 2068, -3456, 997, -3916, 4340, 1342, 343, -3912,
+ 1915, 3321, -2496, -3918, -2302, -2683, 32, -3919, -169, -5265, -3357, -3917, 543, 343, -4280, -3918,
+ 598, 307, 4364, -1807, -2729, 1543, 872, -1808, -2550, 2037, 2482, -1809, 4580, 698, -379, -1809,
+ -3616, -1534, -907, -1808, -1593, 2298, -605, -1809, 1151, 79, -2987, 1890, 3893, 51, 4509, 1887,
+ -1021, -4986, -6969, 1893, -7025, -2454, -770, 1893, 7879, 1477, -17, 1892, 1839, -4179, -787, 1891,
+ 1780, -4761, 2517, 318, -641, 1421, 1295, 318, 1871, 896, 2720, 318, -1826, 785, 478, 319,
+ -1628, 1799, 3277, 318, 552, 181, -149, 318, -1348, 3692, 3879, 0, -298, 1361, 1689, 0,
+ 597, 632, 1463, 0, -1210, 1890, 0, 0, 4726, -172, -394, 0, -1826, 576, 0, 0,
+ 2781, -4872, 2471, -1808, 3233, 2903, 2559, -1808, 4683, 1431, 1075, -1810, -817, -2310, -379, -1810,
+ 165, -1727, -1355, -1809, 3733, 438, -4917, -1810, -3358, 1724, 1828, -1807, -4734, -638, 871, -1808,
+ -3303, 214, -1741, -1810, 4568, 684, -379, -1810, -1106, -2266, -2602, -1808, -1538, 2291, -617, -1809,
+ 2054, -3432, 997, -3916, 4340, 1342, 343, -3912, 1932, 3329, -2479, -3918, -2288, -2668, 32, -3919,
+ -169, -5265, -3357, -3917, 519, 350, -4280, -3918, -8, 9, -2, 6, -1, 1, -8, 6,
+ 4, -9, -8, 6, 7, -2, 10, 6, 4, 1, -16, 6, 16, 2, -7, 6,
+ -2689, -1880, 3034, -1800, -4299, 332, 2552, -1801, -1473, 428, -1230, -1803, 1733, 748, -369, -1803,
+ 10, -1432, -689, -1801, -598, 1967, -1382, -1802, 2841, 2976, 8350, -4673, 290, -759, -202, -4670,
+ 182, 3176, 5691, -4674, 4934, 1655, -2988, -4673, -278, -2632, 2433, -4673, -3149, 2101, 3018, -4675,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 447, 878, 4014, -3386, 2307, -511, -1792, -3383,
+ 1546, -435, -74, -3386, 3605, -1782, -1057, -3384, 867, -4794, -2259, -3386, 4678, 263, -1591, -3387,
+ 2244, -763, 6502, -5034, -310, -828, 244, -5030, -1732, 2895, 4309, -5035, 3631, 811, -3529, -5034,
+ -2618, -4163, 3806, -5034, -2618, 795, 2180, -5036, 5105, -4225, -1134, -1690, 3108, -203, 3675, -1690,
+ -1389, 171, -4390, -1689, -4482, -2383, -881, -1689, -1799, -1468, 1389, -1688, -3183, -2571, -961, -1691,
+ 2286, -809, 6448, -5065, -212, -834, 283, -5062, -1678, 2910, 4281, -5066, 3550, 764, -3576, -5066,
+ -2558, -4195, 3820, -5065, -2617, 756, 2150, -5067, 2215, 1414, 474, -164, 2518, -1863, 304, -165,
+ 310, -5467, -4317, -161, 1653, -2783, -473, -158, 1239, -1344, -1099, -162, 4958, -2838, -462, -164,
+ 2415, -946, 6380, -5162, -55, -853, 403, -5159, -1633, 3002, 4296, -5163, 3374, 707, -3722, -5163,
+ -2498, -4250, 3964, -5162, -2742, 683, 2158, -5164, 2348, -873, 6509, -5113, -272, -843, 343, -5110,
+ -1772, 2997, 4386, -5114, 3533, 820, -3648, -5114, -2647, -4182, 3986, -5113, -2800, 762, 2249, -5115,
+ 5103, -4221, -1626, -1690, 3823, -203, 3675, -1690, -780, -43, -4885, -1689, -4835, -2809, -881, -1689,
+ -1183, -1681, 894, -1688, -2571, -2784, -1454, -1691, 5089, -4199, -1661, -1690, 3873, -203, 3675, -1690,
+ -752, -64, -4935, -1689, -4860, -2839, -881, -1689, -1118, -1703, 845, -1688, -2528, -2799, -1488, -1691,
+ 2445, -988, 6311, -5173, 52, -855, 417, -5170, -1571, 2977, 4217, -5174, 3295, 631, -3739, -5174,
+ -2415, -4283, 3919, -5173, -2654, 640, 2098, -5175, 5105, -4225, -1658, -1690, 3870, -203, 3675, -1690,
+ -738, -56, -4915, -1689, -4858, -2837, -881, -1689, -1147, -1694, 865, -1688, -2531, -2798, -1486, -1691};
+
+const int16_t *const batch_matmul_1_s16_output_ref = batch_matmul_1_s16_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_input_tensor.h
new file mode 100644
index 00000000..23fd18ed
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_input_tensor.h
@@ -0,0 +1,253 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_1_s16_rhs_input_tensor[3456] = {
+ 0, 0, 0, 0, 65, 0, 0, 0, -25184, -9420, -21846, 0, -25664, -9420,
+ -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0, 10377, 29081, -21856, 0,
+ 0, 0, 0, 0, 128, 0, 0, 0, 32, 0, 0, 0, 11177, 29081,
+ -21856, 0, 22368, -9420, -21846, 0, 0, 0, 0, 0, 193, 0, 0, 0,
+ -26720, -9420, -21846, 0, -24496, -9420, -21846, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 10441, 29081, -21856, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+ 32, 0, 0, 0, 12057, 29081, -21856, 0, 22928, -9420, -21846, 0, 96, 0,
+ 0, 0, 32, 0, 0, 0, 8297, 29081, -21856, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 65, 0, 0, 0, -25040, -9420, -21846, 0, -25584, -9420,
+ -21846, 0, 0, 0, 0, 0, 33, 0, 0, 0, 3808, -9420, -21846, 0,
+ -25456, -9420, -21846, 0, 640, 0, 0, 0, 32, 0, 0, 0, 11881, 29081,
+ -21856, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+ 27296, -9421, -21846, 0, -25584, -9420, -21846, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 3808, -9420, -21846, 0, -27936, -9420, -21846, 0, 736, 0, 0, 0,
+ 32, 0, 0, 0, -8343, 29104, -21856, 0, -17552, -18877, -1, 0, 0, 0,
+ 0, 0, 129, 0, 0, 0, -25984, -9420, -21846, 0, -25792, -9420, -21846, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 10681, 29081, -21856, 0, -17552, -18877,
+ -1, 0, 64, 0, 0, 0, 32, 0, 0, 0, 9257, 29081, -21856, 0,
+ 24944, -9420, -21846, 0, 96, 0, 0, 0, 32, 0, 0, 0, 11145, 29081,
+ -21856, 0, 0, 0, 0, 0, 896, 0, 0, 0, 48, 0, 0, 0,
+ 10329, 29081, -21856, 0, -32544, -9420, -21846, 0, -32432, -9420, -21846, 0, 32160, -9420,
+ -21846, 0, 944, 0, 0, 0, 80, 0, 0, 0, -5751, 29071, -21856, 0,
+ 24272, -9420, -21846, 0, 24384, -9420, -21846, 0, 24496, -9420, -21846, 0, 24608, -9420,
+ -21846, 0, 24720, -9420, -21846, 0, 18336, -9422, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4065, 0, 0, 0, 25824, -9421, -21846, 0, -17552, -18877,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26528, -9420, -21846, 0,
+ -25792, -9420, -21846, 0, 64, 0, 0, 0, 32, 0, 0, 0, 10793, 29081,
+ -21856, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ -24272, -9420, -21846, 0, -27488, -9420, -21846, 0, 128, 0, 0, 0, 32, 0,
+ 0, 0, 12121, 29081, -21856, 0, -17552, -18877, -1, 0, 160, 0, 0, 0,
+ 32, 0, 0, 0, 11817, 29081, -21856, 0, -17552, -18877, -1, 0, 0, 0,
+ 0, 0, 161, 0, 0, 0, -27168, -9420, -21846, 0, -24496, -9420, -21846, 0,
+ 0, 0, 0, 0, 129, 0, 0, 0, -24656, -9420, -21846, 0, -27168, -9420,
+ -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0, 10153, 29081, -21856, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0, 0, 0, -27840, -9420,
+ -21846, 0, -25040, -9420, -21846, 0, 96, 0, 0, 0, 32, 0, 0, 0,
+ 9481, 29081, -21856, 0, 26512, -9420, -21846, 0, 352, 0, 0, 0, 32, 0,
+ 0, 0, 4985, 29081, -21856, 0, -17552, -18877, -1, 0, 0, 0, 0, 0,
+ 385, 0, 0, 0, -25584, -9420, -21846, 0, -27936, -9420, -21846, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 4473, 29081, -21856, 0, 29024, -9420, -21846, 0,
+ 0, 0, 0, 0, 321, 0, 0, 0, -27648, -9420, -21846, 0, -26912, -9420,
+ -21846, 0, 0, 0, 0, 0, 289, 0, 0, 0, -27648, -9420, -21846, 0,
+ -25216, -9420, -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0, 11977, 29081,
+ -21856, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 225, 0, 0, 0,
+ -24912, -9420, -21846, 0, -25792, -9420, -21846, 0, 0, 0, 0, 0, 129, 0,
+ 0, 0, -24912, -9420, -21846, 0, -25392, -9420, -21846, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 12185, 29081, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 65, 0, 0, 0, -26176, -9420, -21846, 0, -26912, -9420, -21846, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, -24176, -9420, -21846, 0, -27904, -9420,
+ -21846, 0, 160, 0, 0, 0, 32, 0, 0, 0, 10473, 29081, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -25456, -9420,
+ -21846, 0, -26912, -9420, -21846, 0, 768, 0, 0, 0, 80, 0, 0, 0,
+ 10617, 29081, -21856, 0, 30480, -9420, -21846, 0, 30592, -9420, -21846, 0, 30704, -9420,
+ -21846, 0, 30816, -9420, -21846, 0, 30928, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 848, 0, 0, 0, 80, 0, 0, 0, 5081, 29081,
+ -21856, 0, 31152, -9420, -21846, 0, 31264, -9420, -21846, 0, 31376, -9420, -21846, 0,
+ 31488, -9420, -21846, 0, 0, 0, 0, 0, 13936, -9445, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1553, 0, 0, 0, 27984, -9420, -21846, 0,
+ 20592, -9419, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25728, -9420,
+ -21846, 0, -27360, -9420, -21846, 0, 64, 0, 0, 0, 48, 0, 0, 0,
+ 19945, 29067, -21856, 0, -5880, -9420, -21846, 0, 25970, 26983, 28271, 29485, 28009, 27760,
+ 26217, 121, 48, 0, 0, 0, 1441, 0, 0, 0, -27936, -9420, -21846, 0,
+ -30384, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10409, 29081,
+ -21856, 0, 25728, -9421, -21846, 0, 25920, -9421, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 161, 0, 0, 0, -25984, -9420, -21846, 0, 27296, -9421,
+ -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0, 11417, 29081, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -25040, -9420,
+ -21846, 0, -27360, -9420, -21846, 0, 96, 0, 0, 0, 32, 0, 0, 0,
+ -17335, 29081, -21856, 0, 3968, -9420, -21846, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, -25184, -9420, -21846, 0, 3808, -9420, -21846, 0, 240, 0, 0, 0,
+ 48, 0, 0, 0, 14873, 29081, -21856, 0, 26816, -9421, -21846, 0, 26928, -9421,
+ -21846, 0, 27040, -9421, -21846, 0, 0, 0, 0, 0, 1153, 0, 0, 0,
+ -28096, -9420, -21846, 0, -27936, -9420, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -26272, -9420, -21846, 0, -27168, -9420, -21846, 0, 64, 0, 0, 0,
+ 32, 0, 0, 0, 4409, 29081, -21856, 0, 0, 0, 0, 0, 96, 0,
+ 0, 0, 32, 0, 0, 0, 10185, 29081, -21856, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 0, 0, 0, -27264, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 32, 0, 0, 0, 32, 0, 0, 0, 12089, 29081, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -24912, -9420,
+ -21846, 0, -26368, -9420, -21846, 0, 224, 0, 0, 0, 48, 0, 0, 0,
+ 9513, 29081, -21856, 0, 4976, -9420, -21846, 0, 5200, -9420, -21846, 0, 5312, -9420,
+ -21846, 0, 0, 0, 0, 0, 881, 0, 0, 0, -28096, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 129, 0, 0, 0, -26912, -9420,
+ -21846, 0, -26528, -9420, -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 11209, 29081, -21856, 0, 5872, -9420, -21846, 0, 0, 0, 0, 0, 65, 0,
+ 0, 0, -27648, -9420, -21846, 0, -26464, -9420, -21846, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, -25872, -9420, -21846, 0, -26912, -9420, -21846, 0, 160, 0,
+ 0, 0, 48, 0, 0, 0, 12217, 29081, -21856, 0, 17776, -9420, -21846, 0,
+ 17888, -9420, -21846, 0, 6432, -9420, -21846, 0, 0, 0, 0, 0, 673, 0,
+ 0, 0, -26912, -9420, -21846, 0, -27936, -9420, -21846, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 9769, 29081, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 353, 0, 0, 0, -27936, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 10825, 29081, -21856, 0, 0, 0,
+ 0, 0, 64, 0, 0, 0, 32, 0, 0, 0, -9751, 29086, -21856, 0,
+ 0, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 11609, 29081,
+ -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0,
+ -24112, -9420, -21846, 0, -27936, -9420, -21846, 0, 32, 0, 0, 0, 32, 0,
+ 0, 0, 10761, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 129, 0, 0, 0, -27776, -9420, -21846, 0, -26720, -9420, -21846, 0, 0, 0,
+ 0, 0, 65, 0, 0, 0, -16960, -9414, -21846, 0, -26336, -9420, -21846, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, -16960, -9414, -21846, 0, -17552, -18877,
+ -1, 0, 96, 0, 0, 0, 32, 0, 0, 0, 9449, 29081, -21856, 0,
+ 0, 0, 0, 0, 192, 0, 0, 0, 32, 0, 0, 0, 8361, 29081,
+ -21856, 0, 0, 0, 0, 0, 416, 0, 0, 0, 32, 0, 0, 0,
+ 4857, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0,
+ 0, 0, -25984, -9420, -21846, 0, -27168, -9420, -21846, 0, 32, 0, 0, 0,
+ 32, 0, 0, 0, 11113, 29081, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 65, 0, 0, 0, -25456, -9420, -21846, 0, -26176, -9420, -21846, 0,
+ 32, 0, 0, 0, 32, 0, 0, 0, 10890, 29081, -21856, 0, 20240, -9420,
+ -21846, 0, 576, 0, 0, 0, 32, 0, 0, 0, 9866, 29081, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, -27168, -9420,
+ -21846, 0, -25792, -9420, -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0,
+ 8618, 29081, -21856, 0, 0, 0, 0, 0, 2480, 0, 0, 0, 80, 0,
+ 0, 0, -10326, 29086, -21856, 0, -32208, -9420, -21846, 0, -32096, -9420, -21846, 0,
+ -31936, -9420, -21846, 0, -31824, -9420, -21846, 0, 32384, -9420, -21846, 0, 32496, -9420,
+ -21846, 0, 32656, -9420, -21846, 0, 2560, 0, 0, 0, 80, 0, 0, 0,
+ 9690, 29081, -21856, 0, -31600, -9420, -21846, 0, -31488, -9420, -21846, 0, -31376, -9420,
+ -21846, 0, -31264, -9420, -21846, 0, -31152, -9420, -21846, 0, -31040, -9420, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1425, 0, 0, 0, -13984, -9430,
+ -21846, 0, 25824, -9421, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -25184, -9420, -21846, 0, -27584, -9420, -21846, 0, 64, 0, 0, 0, 32, 0,
+ 0, 0, 10698, 29081, -21856, 0, -17552, -18877, -1, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, -25280, -9420, -21846, 0, -27904, -9420, -21846, 0, 128, 0,
+ 0, 0, 32, 0, 0, 0, 11018, 29081, -21856, 0, -29984, -9420, -21846, 0,
+ 0, 0, 0, 0, 225, 0, 0, 0, -26528, -9420, -21846, 0, -27936, -9420,
+ -21846, 0, 0, 0, 0, 0, 65, 0, 0, 0, 3808, -9420, -21846, 0,
+ -27232, -9420, -21846, 0, 32, 0, 0, 0, 32, 0, 0, 0, 9962, 29081,
+ -21856, 0, 0, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0,
+ 11322, 29081, -21856, 0, -29312, -9420, -21846, 0, 0, 0, 0, 0, 97, 0,
+ 0, 0, 27296, -9421, -21846, 0, -25104, -9420, -21846, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, -25584, -9420, -21846, 0, -24272, -9420, -21846, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, -25280, -9420, -21846, 0, -24176, -9420, -21846, 0,
+ 384, 0, 0, 0, 32, 0, 0, 0, 7210, 29073, -21856, 0, 0, 0,
+ 0, 0, 27756, 0, 0, 0, 33, 0, 0, 0, -14128, -9430, -21846, 0,
+ 10640, -9429, -21846, 0, 448, 0, 0, 0, 80, 0, 0, 0, 10922, 29081,
+ -21856, 0, -28528, -9420, -21846, 0, -28416, -9420, -21846, 0, -28304, -9420, -21846, 0,
+ -28192, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4144, -9437, -21846, 0, 897, 0, 0, 0, -31472, -9417, -21846, 0,
+ 17200, -9417, -21846, 0, -8513, 32616, -1, 0, 9, 0, 0, 0, 1, 0,
+ 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0, -4096, -1, -1, -1,
+ 0, 0, 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0, -4096, -1,
+ -1, -1, 0, 0, 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0,
+ -4096, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -23528, -9420, -21846, 0, 0, 0, 4, 0, -4096, -1,
+ -1, -1, 0, 0, 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0,
+ -23480, -9420, -21846, 0, 0, 0, 4, 0, -4096, -1, -1, -1, 0, 0,
+ 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0, -23104, -9420, -21846, 0,
+ 16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, -5008, -9419,
+ -21846, 0, -5000, -9419, -21846, 0, -5000, -9419, -21846, 0, 2016, -9546, -21846, 0,
+ -4120, -28192, -1, 0, 0, 16384, 0, 0, -14286, 32621, -1, 0, 17, 0,
+ 0, 0, 26158, 32634, -1, 0, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -23304, -9420, -21846, 0, 1, 0, 1, 0, 18704, -28145,
+ -1, 0, -23264, -9420, -21846, 0, -23264, -9420, -21846, 0, 1, 0, 1, 0,
+ 0, 0, -1, -1, -23576, -9420, -21846, 0, -23240, -9420, -21846, 0, 4, 0,
+ 0, 0, 18510, 17239, -22016, 0, 0, 0, 0, 0, 19784, -28267, -1, 0,
+ -23200, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4096, -1,
+ -1, -1, 0, 0, 0, 0, -3024, -28192, -1, 0, -23384, -9420, -21846, 0,
+ 0, 0, 0, 0, -30664, -31627, -1, 0, -30680, -31627, -1, 0, 12632, -28264,
+ -1, 0, -4095, -1, -1, -1, 0, 0, 0, 0, 225, 0, 0, 0,
+ 14592, -9417, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -22880, -9420, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -5223, -31351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 848, 0, 0, 0, 48, 0, 0, 0,
+ -3638, 29082, -21856, 0, -23384, -9420, -21846, 0, 28518, 25458, 11621, 24932, 24948, 26157,
+ 29295, 24941, 5088, 0, 0, 0, 80, 0, 0, 0, -24166, 29082, -21856, 0,
+ -9224, -9417, -21846, 0, -9008, -9417, -21846, 0, -8792, -9417, -21846, 0, -8584, -9417,
+ -21846, 0, -8320, -9417, -21846, 0, -8048, -9417, -21846, 0, -4096, -1, -1, -1,
+ 20284, -14765, -1, 0, 65, 0, 0, 0, -6512, -9418, -21846, 0, 23920, -9418,
+ -21846, 0, 28261, 25185, 25964, 28717, 29793, 25972, 28274, 115, 0, 0, 0, 0,
+ -4096, -1, -1, -1, 13936, 0, 0, 0, 128, 0, 0, 0, 10874, 29056,
+ -21856, 0, -1424, -9412, -21846, 0, 24912, -10434, -21846, 0, 24448, -9412, -21846, 0,
+ 24920, -10434, -21846, 0, -1520, -9412, -21846, 0, 25168, -10434, -21846, 0, -1488, -9412,
+ -21846, 0, 25544, -10434, -21846, 0, -1456, -9412, -21846, 0, -4096, -1, -1, -1,
+ -4096, -1, -1, -1, -4096, -1, -1, -1, 1, 0, 0, 0, -4096, -1,
+ -1, -1, 129, 0, 0, 0, 9408, -9422, -21846, 0, 14384, -9433, -21846, 0,
+ 29811, 25185, 25964, 27752, 11887, 24930, 25460, 24424, 28526, 28018, 29791, 24946, 28265, 28265,
+ 103, 0, 64, 0, 0, 0, 64, 0, 0, 0, 22410, 29058, -21856, 0,
+ -1648, -9412, -21846, 0, 29811, 25185, 25964, 27752, 11887, 24930, 25460, 24424, 28526, 28018,
+ 29791, 24946, 28265, 28265, 103, -1, 14192, 0, 0, 0, 128, 0, 0, 0,
+ 10010, 29059, -21856, 0, 28752, -9412, -21846, 0, -25168, -28148, -1, 0, 27040, -9434,
+ -21846, 0, -22384, -9420, -21846, 0, 3, 0, 3, 0, 24912, -10434, -21846, 0,
+ -22304, -9420, -21846, 0, 24920, -10434, -21846, 0, -22272, -9420, -21846, 0, 25544, -10434,
+ -21846, 0, -22240, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -4096, -1, -1, -1, 1185, 0, 0, 0, -26816, -9412, -21846, 0, -20864, -9432,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29488, -9430, -21846, 0,
+ -17552, -18877, -1, 0, -4096, -1, -1, -1, 33, 0, 0, 0, -29488, -9430,
+ -21846, 0, -17552, -18877, -1, 0, 96, 0, 0, 0, 128, 0, 0, 0,
+ 7194, 29061, -21856, 0, 28824, -9412, -21846, 0, -25160, -28148, -1, 0, 27040, -9434,
+ -21846, 0, -22160, -9420, -21846, 0, 2, 0, 3, 0, 24912, -10434, -21846, 0,
+ -32608, -9412, -21846, 0, 24920, -10434, -21846, 0, -22080, -9420, -21846, 0, -4096, -1,
+ -1, -1, 0, 0, 0, 0, 3608, -9421, -21846, 0, 1, 0, 0, 0,
+ -4096, -1, -1, -1, 961, 0, 0, 0, 24672, -9443, -21846, 0, -3744, -9444,
+ -21846, 0, 32, 0, 0, 0, 64, 0, 0, 0, 938, 29061, -21856, 0,
+ 0, 0, 0, 0, 29811, 25185, 25964, 27752, 11887, 29282, 24943, 25444, 29537, 24436,
+ 28265, 25695, 28009, 0, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0,
+ 618, 29061, -21856, 0, -22208, -9420, -21846, 0, 29811, 25185, 25964, 27752, 11887, 29282,
+ 24943, 25444, 29537, 24436, 28265, 25695, 28009, 0, 0, 0, 160, 0, 0, 0,
+ 128, 0, 0, 0, 17146, 29105, -21856, 0, 28896, -9412, -21846, 0, -25152, -28148,
+ -1, 0, 27040, -9434, -21846, 0, -3648, -9444, -21846, 0, 4, 0, 7, 0,
+ -4096, -1, -1, -1, 0, 0, 0, 0, -4096, -1, -1, -1, 0, 0,
+ 0, 0, -4096, -1, -1, -1, 0, 0, 0, 0, 3616, -9421, -21846, 0,
+ 1, 0, 0, 0, -4096, -1, -1, -1, 673, 0, 0, 0, 22000, -9443,
+ -21846, 0, -6336, -9434, -21846, 0, -4096, -1, -1, -1, 65, 0, 0, 0,
+ 25056, -9443, -21846, 0, -17552, -18877, -1, 0, -4096, -1, -1, -1, 33, 0,
+ 0, 0, 25056, -9443, -21846, 0, -17552, -18877, -1, 0, 96, 0, 0, 0,
+ 48, 0, 0, 0, -16726, 29070, -21856, 0, 3012, -30249, -1, 0, -4096, -1,
+ -1, -1, 0, 0, 0, 0, 48, 0, 0, 0, 529, 0, 0, 0,
+ -21056, -9420, -21846, 0, -24896, -10433, -21846, 0, 1, 0, 1, 0, 29752, -9277,
+ -1, 0, -21600, -9420, -21846, 0, 2, 0, 2, 0, -17552, -9438, -21846, 0,
+ -6672, -9432, -21846, 0, 3770, 32618, -1, 0, 54, 0, 0, 0, -21552, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0,
+ -21056, -9420, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0, 112, 0,
+ 0, 0, 6186, 29081, -21856, 0, -3168, -9434, -21846, 0, 1, 0, 1, 0,
+ 29752, -9277, -1, 0, -21456, -9420, -21846, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -19806, 32589, -1, 0, 56, 0, 0, 0,
+ -21408, -9420, -21846, 0, 0, 0, 0, 0, 32320, -9444, -21846, 0, 273, 0,
+ 0, 0, -21056, -9420, -21846, 0, -17552, -18877, -1, 0, 7648, -9443, -21846, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 112, 0, 0, 0, 6330, 29081,
+ -21856, 0, 11424, -9445, -21846, 0, 1, 0, 1, 0, 29752, -9277, -1, 0,
+ -21296, -9420, -21846, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21248, -9420, -21846, 0,
+ 0, 0, 0, 0, 17540, -30407, -1, 0, 113, 0, 0, 0, -21056, -9420,
+ -21846, 0, -17552, -18877, -1, 0, 1, 0, 1, -1, 29752, -9277, -1, 0,
+ -21184, -9420, -21846, 0, 0, 0, 2, 0, -23744, -9429, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21136, -9420, -21846, 0,
+ 0, 0, 0, 0, 15584, 0, 0, 0, 80, 0, 0, 0, -19638, -21843,
+ 10, 0, -1288, -9429, -21846, 0, 0, 0, 0, 0, 24352, -9419, -21846, 0,
+ -21072, -9420, -21846, 0, 7, 0, 0, 0, 28265, 30064, 24436, 49, 29680, -9277,
+ -1, 0, 0, 0, -21846, 0, 31745, 0, 0, 0, 27136, -9428, -21846, 0,
+ -15696, -18877, -1, 0, 27136, -9428, -21846, 0, 27136, -9428, -21846, 0, 24832, -10073,
+ -28123, 16331, 9120, -11332, 24431, 16303, -11760, -29857, -29532, 16356, -27514, -11323, -6696, 16361,
+ 3536, 22479, 22351, 16349, -7504, -28116, 11865, 16344, -18438, 368, -16070, 16336, -9697, -15069,
+ -21808, 16354, 2963, -1284, 8887, 16356, -27079, 20273, 7795, 16354, 10154, 22340, 30348, 16340,
+ -11263, -5404, 30960, 16359, 8313, -14830, 28216, 16360, 20536, 24767, 19165, 16360, 21635, -23146,
+ 21010, 16352, -1387, -26154, 8912, 16357, 28680, -23507, -14583, 16316, 11357, -7861, -19150, 16357,
+ -21038, 21860, 5084, 16342, -17318, 3140, -20200, 16336, -584, -18443, -9696, 16347, 24352, 3469,
+ 24520, 16358, -2408, 6582, -30391, 16338, 29924, 9279, -7639, 16345, 2736, 26983, -18169, 16346,
+ 3136, 104, 26658, 16289, 6796, -32409, 13188, 16347, 29292, -13414, -28951, 16343, 29984, 22144,
+ 1027, 16351, 28426, -9664, -1766, 16351, 1118, -22297, -26289, 16364, -12106, 27099, 19268, 16345,
+ -11906, 23229, -19219, 16339, -28208, -234, 25734, 16322, -22182, 16757, -28098, 16352, -31588, 12874,
+ -27455, 16354, -10784, -3332, -14078, 16287, -19542, 20955, -2884, 16359, 2678, 12931, -23900, 16339,
+ 22324, -11313, -21357, 16354, -2553, 20251, 17894, 16367, -9735, -7252, 16685, 16353};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_transposed_tensor.h
new file mode 100644
index 00000000..089cde38
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/rhs_transposed_tensor.h
@@ -0,0 +1,253 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_1_s16_rhs_transposed_tensor[3456] = {
+ 0, 10377, 0, 10441, 96, -25040, 640, 27296, 736, -25984, 64, 11145, -32432, 24384,
+ 0, -26528, 0, 29081, 0, 29081, 0, -9420, 0, -9421, 0, -9420, 0, 29081,
+ -9420, -9420, 0, -9420, 0, -21856, 0, -21856, 0, -21846, 0, -21846, 0, -21846,
+ 0, -21856, -21846, -21846, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 193, 0, 32, -25584,
+ 32, -25584, 32, -25792, 32, 0, 32160, 24496, 4065, -25792, 0, 0, 0, 0,
+ 0, -9420, 0, -9420, 0, -9420, 0, 0, -9420, -9420, 0, -9420, 0, 0,
+ 0, 0, 0, -21846, 0, -21846, 0, -21846, 0, 0, -21846, -21846, 0, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -25184, 128, -26720, 64, 8297, 0, 11881, 0, -8343, 32, 9257, 896,
+ 944, 24608, 25824, 64, -9420, 0, -9420, 0, 29081, 0, 29081, 0, 29104, 0,
+ 29081, 0, 0, -9420, -9421, 0, -21846, 0, -21846, 0, -21856, 0, -21856, 0,
+ -21856, 0, -21856, 0, 0, -21846, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25664, 32, -24496, 32,
+ -17552, 33, -17552, 33, -17552, 32, 24944, 48, 80, 24720, -17552, 32, -9420, 0,
+ -9420, 0, -18877, 0, -18877, 0, -18877, 0, -9420, 0, 0, -9420, -18877, 0,
+ -21846, 0, -21846, 0, -1, 0, -1, 0, -1, 0, -21846, 0, 0, -21846,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 11177, 32, 12057, 0, 3808, 0, 3808, 0, 10681,
+ 96, 10329, -5751, 18336, 0, 10793, 0, 29081, 0, 29081, 0, -9420, 0, -9420,
+ 0, 29081, 0, 29081, 29071, -9422, 0, 29081, 0, -21856, 0, -21856, 0, -21846,
+ 0, -21846, 0, -21856, 0, -21856, -21856, -21846, 0, -21856, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 22368,
+ 32, 22928, 65, -25456, 65, -27936, 129, -17552, 32, -32544, 24272, 0, 0, -17552,
+ 0, -9420, 0, -9420, 0, -9420, 0, -9420, 0, -18877, 0, -9420, -9420, 0,
+ 0, -18877, 0, -21846, 0, -21846, 0, -21846, 0, -21846, 0, -1, 0, -21846,
+ -21846, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12121, 0, -24656, 0, 9481, 0, 4473,
+ 0, 11977, 0, 12185, 0, 10473, 768, 30816, 0, 29081, 0, -9420, 0, 29081,
+ 0, 29081, 0, 29081, 0, 29081, 0, 29081, 0, -9420, 0, -21856, 0, -21846,
+ 0, -21856, 0, -21856, 0, -21856, 0, -21856, 0, -21856, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, -17552, 161, -27168, 33, 26512, 385, 29024, 289, -17552, 129, 0, 33, 0,
+ 80, 30928, 0, -18877, 0, -9420, 0, -9420, 0, -9420, 0, -18877, 0, 0,
+ 0, 0, 0, -9420, 0, -1, 0, -21846, 0, -21846, 0, -21846, 0, -1,
+ 0, 0, 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -24272, 160, -27168, 32, -27840, 352,
+ -25584, 0, -27648, 0, -24912, 0, -24176, 0, 10617, 0, -9420, 0, -9420, 0,
+ -9420, 0, -9420, 0, -9420, 0, -9420, 0, -9420, 0, 29081, 0, -21846, 0,
+ -21846, 0, -21846, 0, -21846, 0, -21846, 0, -21846, 0, -21846, 0, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -27488, 32, -24496, 32, -25040, 32, -27936, 321, -25216, 225, -25392, 65,
+ -27904, 33, 30480, 0, -9420, 0, -9420, 0, -9420, 0, -9420, 0, -9420, 0,
+ -9420, 0, -9420, 0, -9420, 0, -21846, 0, -21846, 0, -21846, 0, -21846, 0,
+ -21846, 0, -21846, 0, -21846, 0, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 11817, 0, 10153,
+ 96, 4985, 32, -27648, 32, -24912, 32, -26176, 160, -25456, 30592, 848, 0, 29081,
+ 0, 29081, 0, 29081, 0, -9420, 0, -9420, 0, -9420, 0, -9420, -9420, 0,
+ 0, -21856, 0, -21856, 0, -21856, 0, -21846, 0, -21846, 0, -21846, 0, -21846,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, -17552, 129, -17552, 32, -17552, 32, -26912, 32, -25792,
+ 32, -26912, 32, -26912, 30704, 80, 0, -18877, 0, -18877, 0, -18877, 0, -9420,
+ 0, -9420, 0, -9420, 0, -9420, -9420, 0, 0, -1, 0, -1, 0, -1,
+ 0, -21846, 0, -21846, 0, -21846, 0, -21846, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5081, 13936,
+ 0, 19945, -27936, 25920, 32, -25040, 0, 14873, -28096, 64, 10185, 32, -24912, 5200,
+ 29081, -9445, 0, 29067, -9420, -9421, 0, -9420, 0, 29081, -9420, 0, 29081, 0,
+ -9420, -9420, -21856, -21846, 0, -21856, -21846, -21846, 0, -21846, 0, -21856, -21846, 0,
+ -21856, 0, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 31152, 0, 0, -5880, -30384, 0, 32, -27360,
+ 33, 26816, -27936, 32, 0, 32, -26368, 5312, -9420, 0, 0, -9420, -9420, 0,
+ 0, -9420, 0, -9421, -9420, 0, 0, 0, -9420, -9420, -21846, 0, 0, -21846,
+ -21846, 0, 0, -21846, 0, -21846, -21846, 0, 0, 0, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 31264, 0, -25728, 25970, 0, 0, 11417, 96, -25184, 26928, 0, 4409, 0, 12089,
+ 224, 0, -9420, 0, -9420, 26983, 0, 0, 29081, 0, -9420, -9421, 0, 29081,
+ 0, 29081, 0, 0, -21846, 0, -21846, 28271, 0, 0, -21856, 0, -21846, -21846,
+ 0, -21856, 0, -21856, 0, 0, 0, 0, 0, 29485, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31376, 1553, -27360, 28009, 0, 161,
+ 0, 32, 3808, 27040, 0, 0, 97, 0, 48, 881, -9420, 0, -9420, 27760,
+ 0, 0, 0, 0, -9420, -9421, 0, 0, 0, 0, 0, 0, -21846, 0,
+ -21846, 26217, 0, 0, 0, 0, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 31488, 27984, 64, 48, 10409, -25984, 0, -17335, 240, 0, -26272, 96,
+ -27264, 0, 9513, -28096, -9420, -9420, 0, 0, 29081, -9420, 0, 29081, 0, 0,
+ -9420, 0, -9420, 0, 29081, -9420, -21846, -21846, 0, 0, -21856, -21846, 0, -21856,
+ 0, 0, -21846, 0, -21846, 0, -21856, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20592, 48, 1441,
+ 25728, 27296, 33, 3968, 48, 1153, -27168, 32, -17552, 33, 4976, -17552, 0, -9419,
+ 0, 0, -9421, -9421, 0, -9420, 0, 0, -9420, 0, -18877, 0, -9420, -18877,
+ 0, -21846, 0, 0, -21846, -21846, 0, -21846, 0, 0, -21846, 0, -1, 0,
+ -21846, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 11209, 0, 12217, -26912, 0, 10825, 96, -24112, 0,
+ -16960, 96, 8361, 0, 11113, 32, 0, 29081, 0, 29081, -9420, 0, 29081, 0,
+ -9420, 0, -9414, 0, 29081, 0, 29081, 0, 0, -21856, 0, -21856, -21846, 0,
+ -21856, 0, -21846, 0, -21846, 0, -21856, 0, -21856, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 5872,
+ 33, 17776, -27936, 353, 0, 32, -27936, 129, -26336, 32, 0, 129, 0, 32,
+ 0, -9420, 0, -9420, -9420, 0, 0, 0, -9420, 0, -9420, 0, 0, 0,
+ 0, 0, 0, -21846, 0, -21846, -21846, 0, 0, 0, -21846, 0, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -26912, 0, -25872, 17888, 32, -27936, 64, 11609,
+ 32, -27776, 0, 9449, 416, -25984, 0, 10890, -9420, 0, -9420, -9420, 0, -9420,
+ 0, 29081, 0, -9420, 0, 29081, 0, -9420, 0, 29081, -21846, 0, -21846, -21846,
+ 0, -21846, 0, -21856, 0, -21846, 0, -21856, 0, -21846, 0, -21856, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -26528, 65, -26912, 6432, 32, -17552, 32, 0, 32, -26720, 33, 0, 32, -27168,
+ 65, 20240, -9420, 0, -9420, -9420, 0, -18877, 0, 0, 0, -9420, 0, 0,
+ 0, -9420, 0, -9420, -21846, 0, -21846, -21846, 0, -1, 0, 0, 0, -21846,
+ 0, 0, 0, -21846, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 32, -27648, 160, 0, 9769, 32,
+ -9751, 0, 10761, 0, -16960, 192, 4857, 32, -25456, 576, 0, -9420, 0, 0,
+ 29081, 0, 29086, 0, 29081, 0, -9414, 0, 29081, 0, -9420, 0, 0, -21846,
+ 0, 0, -21856, 0, -21856, 0, -21856, 0, -21846, 0, -21856, 0, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 32, -26464, 48, 673, 0, 32, 0, 225, 0, 65, -17552, 32,
+ 0, 32, -26176, 32, 0, -9420, 0, 0, 0, 0, 0, 0, 0, 0,
+ -18877, 0, 0, 0, -9420, 0, 0, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9866, 32, -10326, 32496,
+ -31488, 0, -25184, 0, 11018, 0, 9962, 0, -25584, 384, -14128, -28416, 29081, 0,
+ 29086, -9420, -9420, 0, -9420, 0, 29081, 0, 29081, 0, -9420, 0, -9430, -9420,
+ -21856, 0, -21856, -21846, -21846, 0, -21846, 0, -21856, 0, -21856, 0, -21846, 0,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 32, -32208, 32656, -31376, 1425, -27584, 33, -29984, 65,
+ 0, 97, -24272, 32, 10640, -28304, 0, 0, -9420, -9420, -9420, 0, -9420, 0,
+ -9420, 0, 0, 0, -9420, 0, -9429, -9420, 0, 0, -21846, -21846, -21846, 0,
+ -21846, 0, -21846, 0, 0, 0, -21846, 0, -21846, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8618,
+ -32096, 2560, -31264, -13984, 64, -25280, 0, 3808, 96, 27296, 0, 7210, 448, -28192,
+ 0, 29081, -9420, 0, -9420, -9430, 0, -9420, 0, -9420, 0, -9421, 0, 29073,
+ 0, -9420, 0, -21856, -21846, 0, -21846, -21846, 0, -21846, 0, -21846, 0, -21846,
+ 0, -21856, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 65, 0, -31936, 80, -31152, 25824, 32, -27904,
+ 225, -27232, 32, -25104, 33, 0, 80, 0, 0, 0, -9420, 0, -9420, -9421,
+ 0, -9420, 0, -9420, 0, -9420, 0, 0, 0, 0, 0, 0, -21846, 0,
+ -21846, -21846, 0, -21846, 0, -21846, 0, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -27168, 2480, -31824, 9690, -31040, 0, 10698, 128, -26528, 32, 11322, 0, -25280, 27756,
+ 10922, 0, -9420, 0, -9420, 29081, -9420, 0, 29081, 0, -9420, 0, 29081, 0,
+ -9420, 0, 29081, 0, -21846, 0, -21846, -21856, -21846, 0, -21856, 0, -21846, 0,
+ -21856, 0, -21846, 0, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -25792, 80, 32384, -31600, 0, 0,
+ -17552, 32, -27936, 32, -29312, 65, -24176, 33, -28528, 0, -9420, 0, -9420, -9420,
+ 0, 0, -18877, 0, -9420, 0, -9420, 0, -9420, 0, -9420, 0, -21846, 0,
+ -21846, -21846, 0, 0, -1, 0, -21846, 0, -21846, 0, -21846, 0, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4144, 1, 0, 0, 0, 0, 0, -5000, 17, 1, -23576, -23200,
+ -23384, 0, 0, 0, -9437, 0, 0, 0, 0, 0, 0, -9419, 0, 0,
+ -9420, -9420, -9420, 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, -21846,
+ 0, 1, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 897, -4096, -4096, 0,
+ -23528, -23480, -23104, -5000, 26158, 18704, -23240, 0, 0, 225, 0, 0, 0, -1,
+ -1, 0, -9420, -9420, -9420, -9419, 32634, -28145, -9420, 0, 0, 0, 0, 0,
+ 0, -1, -1, 0, -21846, -21846, -21846, -21846, -1, -1, -21846, 0, 0, 0,
+ 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -31472, 0, 0, 0, 0, 0, 16, 2016, 47, -23264,
+ 4, 0, -30664, 14592, 0, 0, -9417, 0, 0, 0, 0, 0, 0, -9546,
+ 0, -9420, 0, 0, -31627, -9417, 0, 0, -21846, 0, 0, 0, 4, 4,
+ 1, -21846, 0, -21846, 0, 0, -1, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17200, -4096,
+ -4096, 0, -4096, -4096, 0, -4120, 0, -23264, 18510, -4096, -30680, -17552, 0, 0,
+ -9417, -1, -1, 0, -1, -1, 0, -28192, 0, -9420, 17239, -1, -31627, -18877,
+ 0, 0, -21846, -1, -1, 0, -1, -1, 16, -1, 0, -21846, -22016, -1,
+ -1, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0,
+ 0, -1, 0, 0, 0, 0, -8513, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 12632, 0, 0, 0, 32616, 0, 0, 0, 0, 0,
+ 0, 16384, 0, 0, 0, 0, -28264, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, -4096, -4096, 0, -4096, -4096, -5008, -14286, -23304, 0, 19784, -3024, -4095, 0,
+ -22880, 0, 0, -1, -1, 0, -1, -1, -9419, 32621, -9420, 0, -28267, -28192,
+ -1, 0, -9420, 0, 0, -1, -1, 0, -1, -1, -21846, -1, -21846, -1,
+ -1, -1, -1, 0, -21846, 0, 0, -1, -1, 0, -1, -1, 0, 0,
+ 0, -1, 0, 0, -1, 0, 0, 0, 2, 0, -3638, -24166, -8048, 28261,
+ 10874, 25168, -4096, 29811, 22410, 14192, -22384, 25544, -26816, -4096, 0, 0, 29082, 29082,
+ -9417, 25185, 29056, -10434, -1, 25185, 29058, 0, -9420, -10434, -9412, -1, 0, 0,
+ -21856, -21856, -21846, 25964, -21856, -21846, -1, 25964, -21856, 0, -21846, -21846, -21846, -1,
+ 0, 0, 0, 0, 0, 28717, 0, 0, -1, 27752, 0, 0, 0, 0,
+ 0, -1, 0, 0, -23384, -9224, -4096, 29793, -1424, -1488, 1, 11887, -1648, 128,
+ 3, -22240, -20864, 33, 0, 0, -9420, -9417, -1, 25972, -9412, -9412, 0, 24930,
+ -9412, 0, 0, -9420, -9432, 0, 0, 0, -21846, -21846, -1, 28274, -21846, -21846,
+ 0, 25460, -21846, 0, 3, -21846, -21846, 0, 0, 0, 0, 0, -1, 115,
+ 0, 0, 0, 24424, 0, 0, 0, 0, 0, 0, 0, 0, 28518, -9008,
+ 20284, 0, 24912, 25544, -4096, 28526, 29811, 10010, 24912, 0, 0, -29488, 0, 0,
+ 25458, -9417, -14765, 0, -10434, -10434, -1, 28018, 25185, 29059, -10434, 0, 0, -9430,
+ 0, 0, 11621, -21846, -1, 0, -21846, -21846, -1, 29791, 25964, -21856, -21846, 0,
+ 0, -21846, 0, 0, 24932, 0, 0, 0, 0, 0, -1, 24946, 27752, 0,
+ 0, 0, 0, 0, 0, 0, 24948, -8792, 65, -4096, 24448, -1456, 129, 28265,
+ 11887, 28752, -22304, 0, 0, -17552, 0, 0, 26157, -9417, 0, -1, -9412, -9412,
+ 0, 28265, 24930, -9412, -9420, 0, 0, -18877, 0, 0, 29295, -21846, 0, -1,
+ -21846, -21846, 0, 103, 25460, -21846, -21846, 0, 0, -1, 0, 0, 24941, 0,
+ 0, -1, 0, 0, 0, 0, 24424, 0, 0, 0, 0, 0, 0, 848,
+ 5088, -8584, -6512, 13936, 24920, -4096, 9408, 64, 28526, -25168, 24920, -4096, -29488, 96,
+ 0, 0, 0, -9417, -9418, 0, -10434, -1, -9422, 0, 28018, -28148, -10434, -1,
+ -9430, 0, 0, 0, 0, -21846, -21846, 0, -21846, -1, -21846, 0, 29791, -1,
+ -21846, -1, -21846, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
+ 24946, 0, 0, -1, 0, 0, 0, 48, 80, -8320, 23920, 128, -1520, -4096,
+ 14384, 64, 28265, 27040, -22272, 1185, -17552, 128, 0, 0, 0, -9417, -9418, 0,
+ -9412, -1, -9433, 0, 28265, -9434, -9420, 0, -18877, 0, -5223, 0, 0, -21846,
+ -21846, 0, -21846, -1, -21846, 0, 103, -21846, -21846, 0, -1, 0, -31351, 0,
+ 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0,
+ 7194, 24912, 3608, 32, 29537, 29811, 17146, -4096, 3616, -4096, 25056, -4096, 1, 3770,
+ -21056, 1, 29061, -10434, -9421, 0, 24436, 25185, 29105, -1, -9421, -1, -9443, -1,
+ 0, 32618, -9420, 0, -21856, -21846, -21846, 0, 28265, 25964, -21856, -1, -21846, -1,
+ -21846, -1, 1, -1, -21846, 1, 0, 0, 0, 0, 25695, 27752, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0, 28824, -32608, 1, 64, 28009, 11887,
+ 28896, 0, 1, 65, -17552, 0, 29752, 54, -17552, 29752, -9412, -9412, 0, 0,
+ 0, 29282, -9412, 0, 0, 0, -18877, 0, -9277, 0, -18877, -9277, -21846, -21846,
+ 0, 0, 0, 24943, -21846, 0, 0, 0, -1, 0, -1, 0, -1, -1,
+ 0, 0, 0, 0, 0, 25444, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -25160, 24920, -4096, 938, 96, 29537, -25152, -4096, -4096, 25056, 96, 48,
+ -21600, -21552, 32, -21456, -28148, -10434, -1, 29061, 0, 24436, -28148, -1, -1, -9443,
+ 0, 0, -9420, -9420, 0, -9420, -1, -21846, -1, -21856, 0, 28265, -1, -1,
+ -1, -21846, 0, 0, -21846, -21846, 0, -21846, 0, 0, -1, 0, 0, 25695,
+ 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 27040, -22080, 961, 0,
+ 64, 28009, 27040, 0, 673, -17552, 48, 529, 2, 0, 112, 0, -9434, -9420,
+ 0, 0, 0, 0, -9434, 0, 0, -18877, 0, 0, 0, 0, 0, 0,
+ -21846, -21846, 0, 0, 0, 0, -21846, 0, 0, -1, 0, 0, 2, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -22160, -4096, 24672, 29811, 618, 160, -3648, -4096, 22000, -4096,
+ -16726, -21056, -17552, 0, 6186, 0, -9420, -1, -9443, 25185, 29061, 0, -9444, -1,
+ -9443, -1, 29070, -9420, -9438, 0, 29081, 0, -21846, -1, -21846, 25964, -21856, 0,
+ -21846, -1, -21846, -1, -21856, -21846, -21846, 0, -21856, 0, 0, -1, 0, 27752,
+ 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0,
+ -3744, 11887, -22208, 128, 4, 0, -6336, 33, 3012, -24896, -6672, 417, -3168, 0,
+ 0, 0, -9444, 29282, -9420, 0, 0, 0, -9434, 0, -30249, -10433, -9432, 0,
+ -9434, 0, 3, 0, -21846, 24943, -21846, 0, 7, 0, -21846, 0, -1, -21846,
+ -21846, 0, -21846, 0, 0, 0, 0, 25444, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -19806, -21056, 6330, 0, 17540, -21184, -21136, 0,
+ 0, 24832, -18438, 8313, -21038, 2736, 1118, -10784, 32589, -9420, 29081, 0, -30407, -9420,
+ -9420, 0, 0, -10073, 368, -14830, 21860, 26983, -22297, -3332, -1, -21846, -21856, 0,
+ -1, -21846, -21846, 0, -21846, -28123, -16070, 28216, 5084, -18169, -26289, -14078, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 16331, 16336, 16360, 16342, 16346, 16364, 16287,
+ 56, -17552, 11424, 0, 113, 0, 0, 24352, 31745, 9120, -9697, 20536, -17318, 3136,
+ -12106, -19542, 0, -18877, -9445, 0, 0, 0, 0, -9419, 0, -11332, -15069, 24767,
+ 3140, 104, 27099, 20955, 0, -1, -21846, 0, 0, 2, 0, -21846, 0, 24431,
+ -21808, 19165, -20200, 26658, 19268, -2884, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16303, 16354, 16360, 16336, 16289, 16345, 16359, -21408, 7648, 1, 0, -21056, -23744,
+ 15584, -21072, 27136, -11760, 2963, 21635, -584, 6796, -11906, 2678, -9420, -9443, 0, 0,
+ -9420, -9429, 0, -9420, -9428, -29857, -1284, -23146, -18443, -32409, 23229, 12931, -21846, -21846,
+ 1, 0, -21846, -21846, 0, -21846, -21846, -29532, 8887, 21010, -9696, 13188, -19219, -23900,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16356, 16356, 16352, 16347, 16347,
+ 16339, 16339, 0, 0, 29752, 0, -17552, 0, 80, 7, -15696, -27514, -27079, -1387,
+ 24352, 29292, -28208, 22324, 0, 0, -9277, 0, -18877, 0, 0, 0, -18877, -11323,
+ 20273, -26154, 3469, -13414, -234, -11313, 0, 0, -1, 0, -1, 0, 0, 0,
+ -1, -6696, 7795, 8912, 24520, -28951, 25734, -21357, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 16361, 16354, 16357, 16358, 16343, 16322, 16354, 32320, 48, -21296, -21248,
+ 1, 0, -19638, 28265, 27136, 3536, 10154, 28680, -2408, 29984, -22182, -2553, -9444, 0,
+ -9420, -9420, 0, 0, -21843, 30064, -9428, 22479, 22340, -23507, 6582, 22144, 16757, 20251,
+ -21846, 0, -21846, -21846, 1, 0, 10, 24436, -21846, 22351, 30348, -14583, -30391, 1027,
+ -28098, 17894, 0, 0, 0, 0, -1, 0, 0, 49, 0, 16349, 16340, 16316,
+ 16338, 16351, 16352, 16367, 273, 112, 0, 0, 29752, 0, -1288, 29680, 27136, -7504,
+ -11263, 11357, 29924, 28426, -31588, -9735, 0, 0, 0, 0, -9277, 0, -9429, -9277,
+ -9428, -28116, -5404, -7861, 9279, -9664, 12874, -7252, 0, 0, 2, 0, -1, 0,
+ -21846, -1, -21846, 11865, 30960, -19150, -7639, -1766, -27455, 16685, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 16344, 16359, 16357, 16345, 16351, 16354, 16353};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s16/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/config_data.h
new file mode 100644
index 00000000..cc9a99b1
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_1_S8_LHS_BATCH 3
+#define BATCH_MATMUL_1_S8_LHS_HEIGHT 3
+#define BATCH_MATMUL_1_S8_LHS_ROWS 32
+#define BATCH_MATMUL_1_S8_LHS_COLS 16
+#define BATCH_MATMUL_1_S8_RHS_BATCH 3
+#define BATCH_MATMUL_1_S8_RHS_HEIGHT 3
+#define BATCH_MATMUL_1_S8_RHS_ROWS 16
+#define BATCH_MATMUL_1_S8_RHS_COLS 24
+#define BATCH_MATMUL_1_S8_ADJ_X 0
+#define BATCH_MATMUL_1_S8_ADJ_Y 0
+#define BATCH_MATMUL_1_S8_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_1_S8_DST_SIZE 6912
+#define BATCH_MATMUL_1_S8_OUTPUT_BATCH 3
+#define BATCH_MATMUL_1_S8_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_1_S8_OUTPUT_ROWS 32
+#define BATCH_MATMUL_1_S8_OUTPUT_COLS 24
+#define BATCH_MATMUL_1_S8_LHS_OFFSET 128
+#define BATCH_MATMUL_1_S8_RHS_OFFSET 128
+#define BATCH_MATMUL_1_S8_OUTPUT_OFFSET -128
+#define BATCH_MATMUL_1_S8_ACTIVATION_MIN -128
+#define BATCH_MATMUL_1_S8_ACTIVATION_MAX 127
+#define BATCH_MATMUL_1_S8_OUTPUT_MULTIPLIER 1853063559
+#define BATCH_MATMUL_1_S8_OUTPUT_SHIFT -11
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_input_tensor.h
new file mode 100644
index 00000000..a9f9076a
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_input_tensor.h
@@ -0,0 +1,249 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_1_s8_lhs_input_tensor[4608] = {
+ 113, -45, 6, 125, -96, -86, 0, 0, -8, 72, -78, -41, -86, -86, 0, 0, 16, -34, 17,
+ -102, -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, -16, 30, -84, -41, -86, -86,
+ 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, 64,
+ 31, -84, -41, -86, -86, 0, 0, 16, -69, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -63, 2, 0, 0, 0, 0, 0, 0, -128, -65, -87, -41, -86,
+ -86, 0, 0, -80, -62, -85, -41, -86, -86, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, -15, -47, 6, 125, -96, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 102, 46, 86, 97, 114, 73, 115, 73, 110, 105, 116, 105, 97,
+ 108, 105, 80, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -95,
+ -47, 6, 125, -96, -86, 0, 0, -64, 30, -84, -41, -86, -86, 0, 0, 116, 102, 46, 86,
+ 97, 114, 73, 115, 73, 110, 105, 116, 105, 97, 108, 105, -128, 0, 0, 0, 0, 0, 0,
+ 0, -128, 0, 0, 0, 0, 0, 0, 0, 1, -51, 1, 125, -96, -86, 0, 0, 56, 73,
+ -78, -41, -86, -86, 0, 0, 24, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41, -86,
+ -86, 0, 0, -16, 31, -84, -41, -86, -86, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0,
+ 48, -79, -63, -45, -86, -86, 0, 0, 64, 32, -84, -41, -86, -86, 0, 0, -48, -77, -63,
+ -45, -86, -86, 0, 0, 96, 32, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -112, -13, -85, -41, -86, -86, 0, 0, 32, -123, -79, -41, -86, -86, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 112, 80, -90, -41, -86, -86, 0, 0, -95, 0, 0, 0,
+ 0, 0, 0, 0, 112, -107, -87, -41, -86, -86, 0, 0, 32, -71, -84, -41, -86, -86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, -64, 67,
+ -77, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -30, -61, 1, 125, -96, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 86, 97, 114, 105, 97, 98, 108, 101,
+ 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, -110, -61, 1, 125, -96, -86, 0, 0, -64, 31, -84, -41, -86, -86, 0, 0, 116,
+ 102, 46, 86, 97, 114, 105, 97, 98, 108, 101, 0, 0, 0, 0, 0, -96, 1, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 98, -96, 6, 125, -96, -86, 0,
+ 0, 112, 73, -78, -41, -86, -86, 0, 0, 32, -34, 17, -102, -1, -1, 0, 0, 16, -105,
+ -98, -41, -86, -86, 0, 0, 16, 33, -84, -41, -86, -86, 0, 0, 2, 0, 0, 0, 3,
+ 0, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, -128, 33, -84, -41, -86, -86, 0, 0,
+ -48, -77, -63, -45, -86, -86, 0, 0, 96, 33, -84, -41, -86, -86, 0, 0, -48, 95, -79,
+ -41, -86, -86, 0, 0, -16, -120, -84, -41, -86, -86, 0, 0, 64, -123, -79, -41, -86, -86,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95,
+ 0, 0, 0, 0, 0, 0, 0, 96, 43, -82, -41, -86, -86, 0, 0, 96, 54, -79, -41,
+ -86, -86, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
+ 0, 66, -95, 6, 125, -96, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -30, -90, 6, 125, -96,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 86, 97, 114, 105, 97,
+ 98, 108, 101, 83, 104, 97, 112, 101, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 0, 0, 0, 0, 0, -110, -90, 6, 125, -96, -86, 0, 0, -32, 32, -84, -41, -86, -86,
+ 0, 0, 116, 102, 46, 86, 97, 114, 105, 97, 98, 108, 101, 83, 104, 97, 112, 101, 112,
+ 3, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 34, -2, 49, 125,
+ -96, -86, 0, 0, -80, 73, -78, -41, -86, -86, 0, 0, 40, -34, 17, -102, -1, -1, 0,
+ 0, 16, -105, -98, -41, -86, -86, 0, 0, 48, 34, -84, -41, -86, -86, 0, 0, 2, 0,
+ 0, 0, 3, 0, 0, 0, 48, -79, -63, -45, -86, -86, 0, 0, -128, 34, -84, -41, -86,
+ -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, -96, 34, -84, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 44, -80, -41, -86, -86, 0, 0, 72, -123, -79,
+ -41, -86, -86, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -63, 4, 0, 0, 0, 0, 0, 0, 0, 96, -80, -41, -86, -86, 0, 0, 32,
+ -60, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -48, 88, -79, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0,
+ 0, 64, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 66, 74,
+ 31, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 86, 97,
+ 114, 105, 97, 98, 108, 101, 86, 50, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, -14, 21, 13, 125, -96, -86, 0, 0, 0, 34, -84,
+ -41, -86, -86, 0, 0, 116, 102, 46, 86, 97, 114, 105, 97, 98, 108, 101, 86, 50, 0,
+ 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 98,
+ -66, 1, 125, -96, -86, 0, 0, -24, 73, -78, -41, -86, -86, 0, 0, 48, -34, 17, -102,
+ -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, 80, 35, -84, -41, -86, -86, 0,
+ 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, -79, -63, -45, -86, -86, 0, 0, -96, 35,
+ -84, -41, -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, -64, 35, -84, -41, -86,
+ -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, -32, 35, -84, -41, -86, -86, 0, 0,
+ 104, -123, -79, -41, -86, -86, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 53, -78,
+ -41, -86, -86, 0, 0, -95, 3, 0, 0, 0, 0, 0, 0, -96, 23, -82, -41, -86, -86,
+ 0, 0, 112, 27, -120, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,
+ 0, 0, 0, 0, 0, 0, 0, 112, 118, -100, -41, -86, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
+ 0, 112, 118, -100, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 96, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 34, -54, 51, 125, -96,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 87, 104, 101, 114, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 0, 0, 0, 0, 0, 66, 101, 1, 125, -96, -86, 0, 0, 32, 35, -84, -41, -86, -86,
+ 0, 0, 116, 102, 46, 87, 104, 101, 114, 101, 0, 0, 0, 0, 0, 0, 0, 0, -64,
+ 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -62, 123, 0, 125,
+ -96, -86, 0, 0, 32, 74, -78, -41, -86, -86, 0, 0, 56, -34, 17, -102, -1, -1, 0,
+ 0, 16, -105, -98, -41, -86, -86, 0, 0, -112, 36, -84, -41, -86, -86, 0, 0, 3, 0,
+ 0, 0, 3, 0, 0, 0, 48, -79, -63, -45, -86, -86, 0, 0, -32, 36, -84, -41, -86,
+ -86, 0, 0, -112, -78, -63, -45, -86, -86, 0, 0, 0, 37, -84, -41, -86, -86, 0, 0,
+ -48, -77, -63, -45, -86, -86, 0, 0, 32, 37, -84, -41, -86, -86, 0, 0, 112, -123, -79,
+ -41, -86, -86, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 112, 34, -80, -41, -86, -86,
+ 0, 0, 97, 2, 0, 0, 0, 0, 0, 0, 64, 76, -67, -41, -86, -86, 0, 0, -80,
+ 123, 65, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+ 0, 0, 0, 0, 16, 25, -82, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 16, 25,
+ -82, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 96, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 34, 30, 50, 125, -96, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 87, 104, 105, 108, 101, 0, 0, 0,
+ 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, -46, 31, 50, 125, -96, -86, 0, 0, 96, 36, -84, -41, -86, -86, 0, 0, 116,
+ 102, 46, 87, 104, 105, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -14, 66, 2, 125, -96, -86, 0,
+ 0, 48, 75, -78, -41, -86, -86, 0, 0, 64, -34, 17, -102, -1, -1, 0, 0, 16, -105,
+ -98, -41, -86, -86, 0, 0, -48, 37, -84, -41, -86, -86, 0, 0, 3, 0, 0, 0, 3,
+ 0, 0, 0, 48, -79, -63, -45, -86, -86, 0, 0, 32, 38, -84, -41, -86, -86, 0, 0,
+ -8, -77, -63, -45, -86, -86, 0, 0, -80, 38, -84, -41, -86, -86, 0, 0, 0, -76, -63,
+ -45, -86, -86, 0, 0, 64, 38, -84, -41, -86, -86, 0, 0, -88, -123, -79, -41, -86, -86,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -128, -106, -85, -41, -86, -86, 0, 0, 33,
+ 1, 0, 0, 0, 0, 0, 0, -64, -8, -122, -41, -86, -86, 0, 0, 32, -92, -100, -41,
+ -86, -86, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
+ 0, 2, -33, 49, 125, -96, -86, 0, 0, -20, -71, 50, -110, -1, -1, 0, 0, 16, -70,
+ 50, -110, -1, -1, 0, 0, 24, -70, 50, -110, -1, -1, 0, 0, 32, -70, 50, -110, -1,
+ -1, 0, 0, 40, -70, 50, -110, -1, -1, 0, 0, 48, -70, 50, -110, -1, -1, 0, 0,
+ 56, -70, 50, -110, -1, -1, 0, 0, 64, -70, 50, -110, -1, -1, 0, 0, 76, -70, 50,
+ -110, -1, -1, 0, 0, 88, -70, 50, -110, -1, -1, 0, 0, 96, -70, 50, -110, -1, -1,
+ 0, 0, 104, -70, 50, -110, -1, -1, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0,
+ -55, -64, -41, -86, -86, 0, 0, 96, -4, -85, -41, -86, -86, 0, 0, -60, -70, 50, -110,
+ -1, -1, 0, 0, -16, -70, 50, -110, -1, -1, 0, 0, 32, -69, 50, -110, -1, -1, 0,
+ 0, 49, 0, 0, 0, 0, 0, 0, 0, -80, 105, -69, -41, -86, -86, 0, 0, 112, -69,
+ 72, -66, -1, -1, 0, 0, 116, 102, 46, 87, 104, 105, 108, 101, 82, 101, 103, 105, 111,
+ 110, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 82, -122, 6, 125, -96, -86, 0, 0, -96, 37, -84, -41, -86, -86, 0, 0, 116, 102, 46,
+ 87, 104, 105, 108, 101, 82, 101, 103, 105, 111, 110, 0, 0, -80, 8, 0, 0, 0, 0,
+ 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -110, 93, 50, 125, -96, -86, 0, 0, 104,
+ 75, -78, -41, -86, -86, 0, 0, 72, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41,
+ -86, -86, 0, 0, 112, 39, -84, -41, -86, -86, 0, 0, 2, 0, 0, 0, 3, 0, 0,
+ 0, 48, -79, -63, -45, -86, -86, 0, 0, -64, 39, -84, -41, -86, -86, 0, 0, 88, -79,
+ -63, -45, -86, -86, 0, 0, -32, 39, -84, -41, -86, -86, 0, 0, -64, -43, -79, -41, -86,
+ -86, 0, 0, -128, 41, -79, -41, -86, -86, 0, 0, -64, -123, -79, -41, -86, -86, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 32, 115, -79, -41, -86, -86, 0, 0, -63, 8, 0,
+ 0, 0, 0, 0, 0, -48, -25, -98, -41, -86, -86, 0, 0, -112, 13, -78, -41, -86, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,
+ -98, -79, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 18, 82, 50, 125, -96, -86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 65, 117,
+ 100, 105, 111, 83, 117, 109, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, -62, 83, 50, 125, -96, -86, 0, 0, 64, 39, -84, -41, -86, -86, 0, 0,
+ 116, 102, 46, 87, 114, 105, 116, 101, 65, 117, 100, 105, 111, 83, 117, 109, -96, 0, 0,
+ 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -94, -27, 28, 125, -96, -86,
+ 0, 0, -32, 75, -78, -41, -86, -86, 0, 0, 80, -34, 17, -102, -1, -1, 0, 0, 16,
+ -105, -98, -41, -86, -86, 0, 0, -112, 40, -84, -41, -86, -86, 0, 0, 1, 0, 0, 0,
+ 3, 0, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, -32, 40, -84, -41, -86, -86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 41,
+ -78, -41, -86, -86, 0, 0, 16, 105, -80, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 47, -86, -41, -86, -86, 0, 0,
+ -95, 7, 0, 0, 0, 0, 0, 0, 64, -11, -90, -41, -86, -86, 0, 0, -64, -70, -81,
+ -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -78, 8, 1, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116,
+ 102, 46, 87, 114, 105, 116, 101, 71, 114, 97, 112, 104, 83, 117, 109, 80, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 98, 8, 1, 125, -96, -86, 0,
+ 0, 96, 40, -84, -41, -86, -86, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 71, 114,
+ 97, 112, 104, 83, 117, 109, -128, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0,
+ 0, 0, 0, -62, 101, 12, 125, -96, -86, 0, 0, 32, 76, -78, -41, -86, -86, 0, 0,
+ 88, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, -112, 41, -84,
+ -41, -86, -86, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 88, -79, -63, -45, -86, -86,
+ 0, 0, 0, 42, -84, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, -32,
+ 41, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -56, -123, -79, -41, -86, -86, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, -80, -30, -96, -41, -86, -86, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -112, -9,
+ -74, -41, -86, -86, 0, 0, 80, 117, -100, -41, -86, -86, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 66, -44, 11, 125, -96, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 0, -14, -34, 4, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 72, 105, 115, 116, 111, 103, 114, 97, 109,
+ 83, 117, 109, 109, 97, 114, 121, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0,
+ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 82, 37, 1, 125, -96, -86, 0,
+ 0, 96, 41, -84, -41, -86, -86, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 72, 105,
+ 115, 116, 111, 103, 114, 97, 109, 83, 117, 109, 109, 97, 114, 121, 0, 0, 0, 0, 0,
+ 0, 0, 0, -64, 1, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0,
+ -126, -56, 1, 125, -96, -86, 0, 0, 104, 76, -78, -41, -86, -86, 0, 0, 96, -34, 17,
+ -102, -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, -48, 42, -84, -41, -86, -86,
+ 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 48, -79, -63, -45, -86, -86, 0, 0, 32,
+ 43, -84, -41, -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, 96, 43, -84, -41,
+ -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, 64, 43, -84, -41, -86, -86, 0,
+ 0, -48, -123, -79, -41, -86, -86, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -80, 38,
+ -80, -41, -86, -86, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -32, 11, -89, -41, -86,
+ -86, 0, 0, 96, -64, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, 0, 0, 0, 0, 112, -50, -82, -41, -86, -86, 0, 0, 112, -69, 72,
+ -66, -1, -1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
+ 0, 0, -46, 81, 1, 125, -96, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 96,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -30, -55, 1, 125,
+ -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 87, 114, 105, 116,
+ 101, 73, 109, 97, 103, 101, 83, 117, 109, -112, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 0, 0, 0, 0, 0, 114, 107, 26, 125, -96, -86, 0, 0, -96, 42, -84, -41, -86,
+ -86, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 73, 109, 97, 103, 101, 83, 117, 109,
+ 0, 3, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -14, -63, 2,
+ 125, -96, -86, 0, 0, -32, 76, -78, -41, -86, -86, 0, 0, 104, -34, 17, -102, -1, -1,
+ 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, 16, 44, -84, -41, -86, -86, 0, 0, 1,
+ 0, 0, 0, 3, 0, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, 96, 44, -84, -41,
+ -86, -86, 0, 0, 112, -121, -83, -41, -86, -86, 0, 0, 96, 125, -83, -41, -86, -86, 0,
+ 0, -32, 89, -79, -41, -86, -86, 0, 0, -112, 48, -78, -41, -86, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, -117, -80, -41, -86,
+ -86, 0, 0, 33, 4, 0, 0, 0, 0, 0, 0, -96, 72, -77, -41, -86, -86, 0, 0,
+ -64, 69, -85, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -30, -58, 2, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 82, 97, 119, 80, 114, 111, 116, 111, 80,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -110, -58, 2, 125,
+ -96, -86, 0, 0, -32, 43, -84, -41, -86, -86, 0, 0, 116, 102, 46, 87, 114, 105, 116,
+ 101, 82, 97, 119, 80, 114, 111, 116, 111, -128, 0, 0, 0, 0, 0, 0, 0, -128, 0,
+ 0, 0, 0, 0, 0, 0, 66, -94, 2, 125, -96, -86, 0, 0, 32, 77, -78, -41, -86,
+ -86, 0, 0, 112, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0,
+ 16, 45, -84, -41, -86, -86, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 88, -79, -63,
+ -45, -86, -86, 0, 0, -128, 45, -84, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86,
+ 0, 0, 96, 45, -84, -41, -86, -86, 0, 0, -32, 54, -83, -41, -86, -86, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -32, -123, -79, -41, -86, -86, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0,
+ 0, 0, 125, -84, -41, -86, -86, 0, 0, 0, -39, -81, -41, -86, -86, 0, 0, 32, 0,
+ 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, -62, -93, 2, 125, -96,
+ -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, -126, -93, 2, 125, -96, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 83, 99, 97, 108, 97, 114,
+ 83, 117, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -78,
+ -93, 2, 125, -96, -86, 0, 0, -32, 44, -84, -41, -86, -86, 0, 0, 116, 102, 46, 87,
+ 114, 105, 116, 101, 83, 99, 97, 108, 97, 114, 83, 117, -96, 1, 0, 0, 0, 0, 0,
+ 0, -128, 0, 0, 0, 0, 0, 0, 0, 114, -36, 49, 125, -96, -86, 0, 0, 96, 77,
+ -78, -41, -86, -86, 0, 0, 120, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41, -86,
+ -86, 0, 0, 48, 46, -84, -41, -86, -86, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0,
+ 88, -79, -63, -45, -86, -86, 0, 0, -96, 46, -84, -41, -86, -86, 0, 0, -48, -77, -63,
+ -45, -86, -86, 0, 0, -128, 46, -84, -41, -86, -86, 0, 0, 64, -61, -86, -41, -86, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, -123, -79, -41, -86, -86, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0,
+ 0, 0, 0, 0, -16, -104, -82, -41, -86, -86, 0, 0, 96, -53, -84, -41, -86, -86, 0,
+ 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 2, -5,
+ 49, 125, -96, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -14, -35, 49, 125, -96, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 83, 117, 109,
+ 109, 97, 114, 121, 0, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, -94, -35, 49, 125, -96, -86, 0, 0, 0, 46, -84, -41, -86, -86, 0, 0, 116,
+ 102, 46, 87, 114, 105, 116, 101, 83, 117, 109, 109, 97, 114, 121, 0, -96, 0, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -126, -52, 29, 125, -96, -86, 0,
+ 0, -104, 77, -78, -41, -86, -86, 0, 0, -128, -34, 17, -102, -1, -1, 0, 0, 16, -105,
+ -98, -41, -86, -86, 0, 0, 80, 47, -84, -41, -86, -86, 0, 0, 3, 0, 0, 0, 3,
+ 0, 0, 0, 48, -79, -63, -45, -86, -86, 0, 0, -96, 47, -84, -41, -86, -86, 0, 0,
+ 88, -79, -63, -45, -86, -86, 0, 0, -64, 47, -84, -41, -86, -86, 0, 0, -48, -77, -63,
+ -45, -86, -86, 0, 0, -32, 47, -84, -41, -86, -86, 0, 0, -16, -123, -79, -41, -86, -86,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31,
+ 0, 0, 0, 0, 0, 0, 0, 96, -62, -65, -41, -86, -86, 0, 0, -112, -3, -74, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,
+ 0, 16, -102, -82, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 16, -102, -82, -41, -86,
+ -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 3, -74, 1, 125, -96, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 102, 46, 87, 114, 105, 116, 101, 84, 114, 97, 105, 110, 105,
+ 110, 103, 80, 114, 101, 100, 105, 99, 116, 105, 111, 110, 115, 0, -86, -86, 0, 0, -96,
+ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 35, -121, 27, 125,
+ -96, -86, 0, 0, 32, 47, -84, -41, -86, -86, 0, 0, 116, 102, 46, 87, 114, 105, 116,
+ 101, 84, 114, 97, 105, 110, 105, 110, 103, 80, 114, 101, 100, 105, 99, 116, 105, 111, 110,
+ 115, 0, -86, -86, 0, 0, -16, 17, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0,
+ 0, 0, 0, 19, -20, 6, 125, -96, -86, 0, 0, -56, 78, -78, -41, -86, -86, 0, 0,
+ -120, -34, 17, -102, -1, -1, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, -80, 48, -84,
+ -41, -86, -86, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 80, -79, -63, -45, -86, -86,
+ 0, 0, 0, 49, -84, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_transposed_tensor.h
new file mode 100644
index 00000000..d97f53a1
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/lhs_transposed_tensor.h
@@ -0,0 +1,249 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_1_s8_lhs_transposed_tensor[4608] = {
+ 113, 16, -16, 88, 16, 0, 0, 0, -128, 32, -15, 116, 80, -95, 116, -128, 1, 24, -16,
+ 48, -48, 0, 32, 112, 112, 0, -64, 64, -30, 116, 112, -110, -45, -34, 30, -79, -69, 0,
+ 0, 0, -65, 0, -47, 102, 0, -47, 102, 0, -51, -34, 31, -79, -77, 0, -123, 80, -107,
+ 0, 67, 0, -61, 102, 0, -61, 6, 17, -84, -63, -84, 0, 0, 0, -87, 0, 6, 46,
+ 0, 6, 46, 0, 1, 17, -84, -63, -63, 0, -79, -90, -87, 0, -77, 0, 1, 46, 0,
+ 1, 125, -102, -41, -45, -41, 0, 0, 0, -41, 0, 125, 86, 0, 125, 86, 0, 125, -102,
+ -41, -45, -45, 0, -41, -41, -41, 0, -41, 0, 125, 86, 0, 125, -96, -1, -86, -86, -86,
+ 0, 0, 0, -86, 0, -96, 97, 0, -96, 97, 0, -96, -1, -86, -86, -86, 0, -86, -86,
+ -86, 0, -86, 0, -96, 97, 0, -96, -86, -1, -86, -86, -86, 0, 0, 0, -86, 0, -86,
+ 114, 0, -86, 114, 0, -86, -1, -86, -86, -86, 0, -86, -86, -86, 0, -86, 0, -86, 114,
+ 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 73, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 97, 0, 0, -8, 16, 1, 64, 0, 0, 0, -63, -80, 48,
+ 0, 73, 48, -64, 73, -128, 56, 16, 2, 64, 96, -112, 4, -95, 32, 33, 112, 48, 0,
+ 98, 48, -64, 72, -105, 0, 31, 0, 0, 0, 2, -62, 0, 0, 110, 0, 30, 110, 0,
+ 73, -105, 0, 32, 32, -13, 0, 0, -71, 0, -69, 0, 0, 108, 0, 31, -78, -98, 0,
+ -84, 0, 0, 0, 0, -85, 0, 0, 105, 0, -84, 105, 0, -78, -98, 0, -84, -84, -85,
+ 0, 0, -84, 0, 72, 0, 0, 101, 0, -84, -41, -41, 0, -41, 0, 0, 0, 0, -41,
+ 0, 0, 116, 0, -41, 116, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41, 0, -66, 0,
+ 0, 0, 0, -41, -86, -86, 3, -86, 0, 0, 0, 0, -86, 0, 0, 105, 0, -86, 105,
+ 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 0, 0, -86, -86, -86,
+ 0, -86, 0, 0, 0, 0, -86, 0, 0, 97, 0, -86, 97, 0, -86, -86, 0, -86, -86,
+ -86, 0, 0, -86, 0, -1, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116,
+ -96, 98, 32, 16, 88, -48, -48, 64, 0, 96, 32, 66, 64, -30, 116, 112, -110, 116, 112,
+ 34, 40, 48, 48, -48, 0, 72, 0, 0, 0, -48, 64, 102, 1, -96, -34, 33, -79, -77,
+ 95, -123, 0, 43, 0, -95, 0, -90, 102, 0, -90, 102, 3, -2, -34, 34, -79, -77, 0,
+ -123, 0, 96, 0, 88, 0, 46, 0, 6, 17, -84, -63, -63, -79, -79, 0, -82, 0, 6,
+ 0, 6, 46, 0, 6, 46, 0, 49, 17, -84, -63, -63, 0, -79, 0, -80, 0, -79, 0,
+ 86, 0, 125, -102, -41, -45, -45, -41, -41, 0, -41, 0, 125, 0, 125, 86, 0, 125, 86,
+ 0, 125, -102, -41, -45, -45, 0, -41, 0, -41, 0, -41, 0, 97, 0, -96, -1, -86, -86,
+ -86, -86, -86, 0, -86, 0, -96, 0, -96, 97, 0, -96, 97, 0, -96, -1, -86, -86, -86,
+ 0, -86, 0, -86, 0, -86, 0, 114, 0, -86, -1, -86, -86, -86, -86, -86, 0, -86, 0,
+ -86, 0, -86, 114, 0, -86, 114, 0, -86, -1, -86, -86, -86, 0, -86, 0, -86, 0, -86,
+ 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, -128, 112, 16, 2, -128, 96, -16, 1, -95, 96,
+ 32, 112, 48, 0, 98, 48, -32, 98, -128, -80, 16, 2, -128, -96, 48, 4, -63, 32, 0,
+ 112, 48, 108, 0, 73, -105, 0, 33, 33, -120, 0, 0, 54, 0, -69, 0, 0, 108, 0,
+ 32, 108, 0, 73, -105, 0, 34, 34, 44, 0, 4, -60, 0, -69, 0, 101, 0, -78, -98,
+ 0, -84, -84, -84, 0, 0, -79, 0, 72, 0, 0, 101, 0, -84, 101, 0, -78, -98, 0,
+ -84, -84, -80, 0, 0, -84, 0, 72, 0, 0, 0, -41, -41, 0, -41, -41, -41, 0, 0,
+ -41, 0, -66, 0, 0, 83, 0, -41, 83, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41,
+ 0, -66, 0, 0, 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 104,
+ 0, -86, 104, 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 0, -86,
+ -86, 0, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 97, 0, -86, 97, 0, -86, -86,
+ 0, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 112, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 101, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 116,
+ 112, -14, 116, -96, 98, 48, 80, 80, 88, -48, 104, 0, -96, 0, 112, 0, 112, 96, 34,
+ 116, -112, 66, 116, -64, -62, 56, -112, 48, -112, -48, 74, 102, 0, 21, 102, 0, -66, -34,
+ 35, -79, -79, -77, -123, 53, 23, 0, 118, 0, 118, 0, -54, 102, 0, 101, 102, 0, 123,
+ -34, 36, -79, -78, -77, 31, 46, 0, 13, 46, 0, 1, 17, -84, -63, -63, -63, -79, -78,
+ -82, 0, -100, 0, -100, 0, 51, 46, 0, 1, 46, 0, 0, 17, -84, -63, -63, -63, 125,
+ 86, 0, 125, 86, 0, 125, -102, -41, -45, -45, -45, -41, -41, -41, 0, -41, 0, -41, 0,
+ 125, 87, 0, 125, 87, 0, 125, -102, -41, -45, -45, -45, -96, 97, 0, -96, 97, 0, -96,
+ -1, -86, -86, -86, -86, -86, -86, -86, 0, -86, 0, -86, 0, -96, 104, 0, -96, 104, 0,
+ -96, -1, -86, -86, -86, -86, -86, 114, 0, -86, 114, 0, -86, -1, -86, -86, -86, -86, -86,
+ -86, -86, 0, -86, 0, -86, 0, -86, 101, 0, -86, 101, 0, -86, -1, -86, -86, -86, -86,
+ 0, 105, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 114, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 48, 0, 98, -128, -24, 16, 3, -96, -64, -32,
+ 1, -95, 112, 65, 112, 33, 112, 48, 0, 0, 48, 32, 0, -128, 32, 16, 3, -32, 0,
+ 32, 0, 108, 0, 34, 108, 0, 73, -105, 0, 35, 35, 35, 0, 3, 27, 0, -69, 0,
+ -69, 0, 0, 0, 0, 35, 0, 0, 74, -105, 0, 36, 37, 37, 0, 101, 0, -84, 101,
+ 0, -78, -98, 0, -84, -84, -84, 0, 0, -120, 0, 72, 0, 72, 0, 0, 0, 0, -84,
+ 0, 0, -78, -98, 0, -84, -84, -84, 0, 86, 0, -41, 86, 0, -41, -41, 0, -41, -41,
+ -41, 0, 0, -41, 0, -66, 0, -66, 0, 0, 0, 0, -41, 0, 0, -41, -41, 0, -41,
+ -41, -41, 0, 50, 0, -86, 50, 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1,
+ 0, -1, 0, 0, 0, 0, -86, 0, 0, -86, -86, 3, -86, -86, -86, 0, 0, 0, -86,
+ 0, 0, -86, -86, 0, -86, -86, -86, 0, 0, -86, 0, -1, 0, -1, 0, 0, 0, 0,
+ -86, 0, 0, -86, -86, 0, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 64,
+ 0, 16, 0, 16, 96, 34, 116, -112, -46, 116, -64, -14, 64, -48, 48, -8, 0, -88, -128,
+ -64, 32, 2, 16, 32, 48, 64, 88, 104, 0, -123, 34, 76, 0, 25, 0, 25, 0, 30,
+ 102, 0, 31, 102, 0, 66, -34, 37, -79, -77, -76, -123, -106, -8, 0, -33, -70, -70, -70,
+ -70, -70, -70, -55, -79, -80, -67, 0, -82, 0, -82, 0, 50, 46, 0, 50, 46, 0, 2,
+ 17, -84, -63, -63, -63, -79, -85, -122, 0, 49, 50, 50, 50, 50, 50, 50, -64, -41, -41,
+ -41, 0, -41, 0, -41, 0, 125, 87, 0, 125, 87, 0, 125, -102, -41, -45, -45, -45, -41,
+ -41, -41, 0, 125, -110, -110, -110, -110, -110, -110, -41, -86, -86, -86, 0, -86, 0, -86, 0,
+ -96, 104, 0, -96, 104, 0, -96, -1, -86, -86, -86, -86, -86, -86, -86, 0, -96, -1, -1,
+ -1, -1, -1, -1, -86, -86, -86, -86, 0, -86, 0, -86, 0, -86, 105, 0, -86, 105, 0,
+ -86, -1, -86, -86, -86, -86, -86, -86, -86, 0, -86, -1, -1, -1, -1, -1, -1, -86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 101, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 97, -80, 65, 112, 33, 112, 48, 0, 0, 48, 96, 0,
+ -128, 48, 16, 3, 32, -80, 64, 3, 33, 32, 112, -20, 24, 40, 56, 76, 96, -111, 96,
+ 0, 2, 123, 0, -69, 0, -69, 0, 0, 0, 0, 36, 0, 0, 75, -105, 0, 38, 38,
+ 38, 0, 1, -92, 0, -71, -70, -70, -70, -70, -70, 0, -4, 0, 0, 65, 0, 72, 0,
+ 72, 0, 0, 0, 0, -84, 0, 0, -78, -98, 0, -84, -84, -84, 0, 0, -100, 0, 50,
+ 50, 50, 50, 50, 50, 0, -85, 0, 0, -41, 0, -66, 0, -66, 0, 0, 0, 0, -41,
+ 0, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41, 0, -110, -110, -110, -110, -110, -110, 0,
+ -41, 0, 0, -86, 0, -1, 0, -1, 0, 0, 0, 0, -86, 0, 0, -86, -86, 3, -86,
+ -86, -86, 0, 0, -86, 0, -1, -1, -1, -1, -1, -1, 0, -86, 0, 0, -86, 0, -1,
+ 0, -1, 0, 0, 0, 0, -86, 0, 0, -86, -86, 0, -86, -86, -86, 0, 0, -86, 0,
+ -1, -1, -1, -1, -1, -1, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 32, -80, 116,
+ 96, 82, 116, -80, -110, 72, 112, 48, 88, -64, -64, 32, -48, 0, -128, 64, 18, 116, 112,
+ -62, 116, -96, -94, 80, -112, 88, 0, -16, -70, -69, 105, 102, 0, -122, 102, 8, 93, -34,
+ 39, -79, -79, -43, -123, 115, -25, 0, -98, 0, 82, 102, 0, 83, 102, 0, -27, -34, 40,
+ -79, 0, 41, 50, 50, -69, 46, 0, 6, 46, 0, 50, 17, -84, -63, -63, -79, -79, -79,
+ -98, 0, -79, 0, 50, 46, 0, 50, 46, 0, 28, 17, -84, -63, 0, -78, -110, -110, -41,
+ 87, 0, 125, 87, 0, 125, -102, -41, -45, -45, -41, -41, -41, -41, 0, -41, 0, 125, 87,
+ 0, 125, 87, 0, 125, -102, -41, -45, 0, -41, -1, -1, -86, 104, 0, -96, 104, 0, -96,
+ -1, -86, -86, -86, -86, -86, -86, -86, 0, -86, 0, -96, 114, 0, -96, 114, 0, -96, -1,
+ -86, -86, 0, -86, -1, -1, -86, 105, 0, -86, 105, 0, -86, -1, -86, -86, -86, -86, -86,
+ -86, -86, 0, -86, 0, -86, 105, 0, -86, 105, 0, -86, -1, -86, -86, 0, -86, 0, 0,
+ 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 116, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 101, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 101, 0, 0,
+ 0, 0, 0, 0, 0, -16, 49, 112, 82, 48, -96, 82, -128, 104, 16, 2, -64, -32, -128,
+ 1, -63, -112, 0, 112, 48, 0, 65, 48, 64, 65, -128, -32, 16, 1, -32, 0, 16, -70,
+ 0, -69, 101, 0, 37, 101, 0, 75, -105, 0, 39, 39, 41, 0, 8, 13, 0, -69, 0,
+ 0, 117, 0, 39, 117, 0, 75, -105, 0, 40, 0, 105, 50, 0, 72, 103, 0, -84, 103,
+ 0, -78, -98, 0, -84, -84, -79, 0, 0, -78, 0, 72, 0, 0, 100, 0, -84, 100, 0,
+ -78, -98, 0, -84, 0, -80, -110, 0, -66, 105, 0, -41, 105, 0, -41, -41, 0, -41, -41,
+ -41, 0, 0, -41, 0, -66, 0, 0, 105, 0, -41, 105, 0, -41, -41, 0, -41, 0, -41,
+ -1, 0, -1, 111, 0, -86, 111, 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1,
+ 0, 0, 111, 0, -86, 111, 0, -86, -86, 3, -86, 0, -86, -1, 0, -1, 110, 0, -86,
+ 110, 0, -86, -86, 0, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 83, 0, -86, 83,
+ 0, -86, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 109, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, -48, 64, 0, -78,
+ 116, 80, 98, 116, -128, -62, 88, -112, 88, -48, 0, -56, -80, -112, 32, 66, 64, -14, 116,
+ 109, -128, 82, 116, 109, -64, -126, 96, 0, 47, -11, 0, 8, 102, 0, 8, 102, 0, 101,
+ -34, 41, -79, -77, 0, -123, -30, -9, 0, -44, 0, -34, 102, 83, 0, 37, 102, 83, 1,
+ -56, -34, 0, -86, -90, 0, 1, 46, 0, 1, 46, 0, 12, 17, -84, -63, -63, 0, -79,
+ -96, -74, 0, 11, 0, 4, 46, 117, 0, 1, 46, 117, 0, 1, 17, 0, -41, -41, 0,
+ 125, 87, 0, 125, 87, 0, 125, -102, -41, -45, -45, 0, -41, -41, -41, 0, 125, 0, 125,
+ 87, 109, 0, 125, 87, 109, 0, 125, -102, 0, -86, -86, 0, -96, 114, 0, -96, 114, 0,
+ -96, -1, -86, -86, -86, 0, -86, -86, -86, 0, -96, 0, -96, 114, 109, 0, -96, 114, 109,
+ 0, -96, -1, 0, -86, -86, 0, -86, 105, 0, -86, 105, 0, -86, -1, -86, -86, -86, 0,
+ -86, -86, -86, 0, -86, 0, -86, 105, 97, 0, -86, 105, 97, 0, -86, -1, 0, 0, 0,
+ 0, 0, 116, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 116, 114, 0, 0, 116, 114, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 121, 0, 0, 101,
+ 121, 0, 0, 0, 0, -95, -64, 0, 0, 71, 48, 96, 71, -128, 32, 16, 2, 0, -32,
+ 0, 1, -63, 80, 32, 112, 64, 0, 72, 0, 64, 96, 72, 0, -128, 104, 16, 0, 7,
+ -70, 0, 0, 114, 0, 40, 114, 0, 76, -105, 0, 42, 41, 0, 0, 0, 117, 0, -69,
+ 0, 0, 105, 0, 0, 41, 105, 0, 0, 76, -105, 0, 0, -81, 0, 0, 97, 0, -84,
+ 97, 0, -78, -98, 0, -84, -84, 0, 0, 0, -100, 0, 72, 0, 0, 115, 0, 0, -84,
+ 115, 0, 0, -78, -98, 0, 0, -41, 0, 0, 112, 0, -41, 112, 0, -41, -41, 0, -41,
+ -41, 0, 0, 0, -41, 0, -66, 0, 0, 116, 0, 0, -41, 116, 0, 0, -41, -41, 0,
+ 0, -86, 0, 0, 104, 0, -86, 104, 0, -86, -86, 3, -86, -86, 0, 0, 0, -86, 0,
+ -1, 0, 0, 111, 0, 0, -86, 111, 0, 0, -86, -86, 0, 0, -86, 0, 0, 83, 0,
+ -86, 83, 0, -86, -86, 0, -86, -86, 0, 0, 0, -86, 0, -1, 0, 0, 103, 0, 0,
+ -86, 103, 0, 0, -86, -86, 0, 0, 0, 0, 0, 117, 0, 0, 117, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 114, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 109, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 0, -48, 48, 88, -48, -48, -80,
+ -32, 0, 112, 32, -46, 96, -30, 116, -112, 114, 116, 0, -14, 104, 16, 88, 112, -32, 0,
+ 48, -96, 0, -30, 116, 80, -110, 42, -79, -79, -77, -123, 38, 11, 0, -50, 0, 81, 0,
+ -55, 102, 0, 107, 102, 3, -63, -34, 44, -79, -121, 89, 0, -117, 72, 0, -58, 102, 0,
+ -58, -84, -63, -63, -63, -79, -80, -89, 0, -82, 0, 1, 0, 1, 46, 0, 26, 46, 0,
+ 2, 17, -84, -63, -83, -79, 0, -80, -77, 0, 2, 46, 0, 2, -41, -45, -45, -45, -41,
+ -41, -41, 0, -41, 0, 125, 0, 125, 87, 0, 125, 87, 0, 125, -102, -41, -45, -41, -41,
+ 0, -41, -41, 0, 125, 87, 0, 125, -86, -86, -86, -86, -86, -86, -86, 0, -86, 0, -96,
+ 0, -96, 114, 0, -96, 114, 0, -96, -1, -86, -86, -86, -86, 0, -86, -86, 0, -96, 114,
+ 0, -96, -86, -86, -86, -86, -86, -86, -86, 0, -86, 0, -86, 0, -86, 105, 0, -86, 105,
+ 0, -86, -1, -86, -86, -86, -86, 0, -86, -86, 0, -86, 105, 0, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 116, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 101, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 101, 0, 0, 3, 32, 96, 64, 2, -63, 96, 65, 112, 32, 112, 48, 0, 73, 48, -96,
+ 73, -128, -32, 16, 1, 96, 96, -112, 0, 33, -64, 0, 0, 82, 48, -32, 0, 43, 43,
+ 43, 0, 0, -64, 0, -69, 0, -69, 0, 0, 109, 0, 42, 109, 0, 76, -105, 0, 44,
+ 125, 48, 0, 4, 69, 0, 0, 97, 0, 43, 0, -84, -84, -84, 0, 0, -84, 0, 72,
+ 0, 72, 0, 0, 97, 0, -84, 97, 0, -78, -98, 0, -84, -83, -78, 0, 0, -85, 0,
+ 0, 119, 0, -84, 0, -41, -41, -41, 0, 0, -41, 0, -66, 0, -66, 0, 0, 103, 0,
+ -41, 103, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41, 0, 0, 80, 0, -41, 3, -86,
+ -86, -86, 0, 0, -86, 0, -1, 0, -1, 0, 0, 101, 0, -86, 101, 0, -86, -86, 3,
+ -86, -86, -86, 0, 0, -86, 0, 0, 114, 0, -86, 0, -86, -86, -86, 0, 0, -86, 0,
+ -1, 0, -1, 0, 0, 83, 0, -86, 83, 0, -86, -86, 0, -86, -86, -86, 0, 0, -86,
+ 0, 0, 111, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
+ 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 109, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 116, -128, 66, 112, 16, 88, -48,
+ -32, -32, 0, 0, 32, -62, 64, -126, 116, 112, -78, 116, -96, 114, 120, 48, 88, -48, 64,
+ -24, 0, -16, 32, 2, 64, 102, 0, -94, -34, 45, -79, -77, 54, -123, 0, 125, 0, -93,
+ 0, -93, 102, 0, -93, 102, 1, -36, -34, 46, -79, -77, -61, -123, 0, -104, 0, -5, 0,
+ 46, 0, 2, 17, -84, -63, -63, -83, -79, 0, -84, 0, 2, 0, 2, 46, 0, 2, 46,
+ 0, 49, 17, -84, -63, -63, -86, -79, 0, -82, 0, 49, 0, 87, 0, 125, -102, -41, -45,
+ -45, -41, -41, 0, -41, 0, 125, 0, 125, 87, 0, 125, 87, 0, 125, -102, -41, -45, -45,
+ -41, -41, 0, -41, 0, 125, 0, 114, 0, -96, -1, -86, -86, -86, -86, -86, 0, -86, 0,
+ -96, 0, -96, 114, 0, -96, 114, 0, -96, -1, -86, -86, -86, -86, -86, 0, -86, 0, -96,
+ 0, 105, 0, -86, -1, -86, -86, -86, -86, -86, 0, -86, 0, -86, 0, -86, 105, 0, -86,
+ 105, 0, -86, -1, -86, -86, -86, -86, -86, 0, -86, 0, -86, 0, 116, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 116, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 101, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 82, -128, 32, 16, 2, -128, 96, 0, 1, -95, 0, 32, 112, 48, 0, 83, 48,
+ -32, 83, -128, 96, 16, 2, -96, -128, 0, 1, 1, 96, 32, 112, 48, 97, 0, 77, -105,
+ 0, 45, 45, 0, 0, 0, -39, 0, -69, 0, 0, 99, 0, 44, 99, 0, 77, -105, 0,
+ 46, 46, 0, 0, 2, -53, 0, -69, 0, 119, 0, -78, -98, 0, -84, -84, 0, 0, 0,
+ -81, 0, 72, 0, 0, 97, 0, -84, 97, 0, -78, -98, 0, -84, -84, 0, 0, 0, -84,
+ 0, 72, 0, 80, 0, -41, -41, 0, -41, -41, 0, 0, 0, -41, 0, -66, 0, 0, 108,
+ 0, -41, 108, 0, -41, -41, 0, -41, -41, 0, 0, 0, -41, 0, -66, 0, 114, 0, -86,
+ -86, 3, -86, -86, 0, 0, 0, -86, 0, -1, 0, 0, 97, 0, -86, 97, 0, -86, -86,
+ 3, -86, -86, 0, 0, 0, -86, 0, -1, 0, 111, 0, -86, -86, 0, -86, -86, 0, 0,
+ 0, -86, 0, -1, 0, 0, 114, 0, -86, 114, 0, -86, -86, 0, -86, -86, 0, 0, 0,
+ -86, 0, -1, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 83, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 117, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 116, 112, -94, 116, -96, -126, -128,
+ 80, 48, 88, -48, -16, 0, 96, 0, 16, 0, 16, 96, 3, 116, 80, -96, 35, 116, 80,
+ -16, 19, -120, -80, 80, -35, 102, 0, -35, 102, 0, -52, -34, 47, -79, -79, -77, -123, 0,
+ -62, 0, -102, 0, -102, 0, -74, 102, 114, 0, -121, 102, 114, 17, -20, -34, 48, -79, 49,
+ 46, 0, 49, 46, 0, 29, 17, -84, -63, -63, -63, -79, 0, -65, 0, -82, 0, -82, 0,
+ 1, 46, 101, 0, 27, 46, 101, 0, 6, 17, -84, -63, 125, 87, 0, 125, 87, 0, 125,
+ -102, -41, -45, -45, -45, -41, 0, -41, 0, -41, 0, -41, 0, 125, 87, 100, 0, 125, 87,
+ 100, 0, 125, -102, -41, -45, -96, 114, 0, -96, 114, 0, -96, -1, -86, -86, -86, -86, -86,
+ 0, -86, 0, -86, 0, -86, 0, -96, 114, 105, 0, -96, 114, 105, 0, -96, -1, -86, -86,
+ -86, 105, 0, -86, 105, 0, -86, -1, -86, -86, -86, -86, -86, 0, -86, 0, -86, 0, -86,
+ 0, -86, 105, 99, 0, -86, 105, 99, 0, -86, -1, -86, -86, 0, 116, 0, 0, 116, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 116, 0, 0,
+ 116, 116, 0, 0, 0, 0, 0, 0, 101, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 105, 0, 0, 101, 105, 0, 0, 0, 0,
+ 0, 0, 83, 48, 0, 83, -128, -104, 16, 3, -96, -64, -32, 4, -31, -112, 65, 112, 33,
+ 112, 64, 0, 84, 111, 64, 32, 84, 111, -128, -56, 16, 3, 0, 0, 117, 0, 46, 117,
+ 0, 77, -105, 0, 47, 47, 47, 0, 0, -3, 0, -69, 0, -69, 0, 0, 114, 110, 0,
+ 47, 114, 110, 0, 78, -105, 0, 49, 0, 109, 0, -84, 109, 0, -78, -98, 0, -84, -84,
+ -84, 0, 0, -74, 0, 72, 0, 72, 0, 0, 97, 115, 0, -84, 97, 115, 0, -78, -98,
+ 0, -84, 0, 109, 0, -41, 109, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41, 0, -66,
+ 0, -66, 0, 0, 105, 0, 0, -41, 105, 0, 0, -41, -41, 0, -41, 0, 97, 0, -86,
+ 97, 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1, 0, -1, 0, 0, 110, -86,
+ 0, -86, 110, -86, 0, -86, -86, 3, -86, 0, 114, 0, -86, 114, 0, -86, -86, 0, -86,
+ -86, -86, 0, 0, -86, 0, -1, 0, -1, 0, 0, 105, -86, 0, -86, 105, -86, 0, -86,
+ -86, 0, -86, 0, 121, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 110, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
+ 0, 0, 0, 103, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/output.h
new file mode 100644
index 00000000..573d1aa3
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/output.h
@@ -0,0 +1,309 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_1_s8_output[6912] = {
+ -27, -14, -71, -51, -74, -74, -29, -29, -8, -10, -44, -32, -38, -37, -13, -12, -34, -43, -49, -26, -65, -64, -29,
+ -29, -30, -40, -74, -60, -76, -76, -45, -45, -25, -41, -60, -57, -61, -61, -37, -37, -51, -58, -60, -43, -78, -77,
+ -45, -45, -30, -15, -70, -52, -72, -72, -33, -33, -18, -24, -46, -40, -42, -42, -20, -20, -38, -43, -55, -25, -72,
+ -71, -33, -33, -42, -37, -73, -59, -76, -76, -43, -43, -20, -25, -56, -47, -51, -51, -29, -28, -48, -59, -60, -35,
+ -79, -77, -43, -43, -35, -22, -71, -54, -73, -73, -36, -36, -22, -22, -48, -42, -43, -43, -24, -23, -42, -48, -60,
+ -30, -77, -76, -36, -36, -11, 0, -62, -40, -64, -64, -18, -18, 0, -12, -31, -28, -30, -30, -5, -4, -23, -28,
+ -41, -14, -61, -59, -18, -18, -11, 0, -62, -40, -64, -64, -18, -18, 0, -12, -31, -28, -30, -30, -5, -4, -23,
+ -28, -41, -14, -61, -59, -18, -18, -11, -3, -65, -43, -67, -67, -21, -21, -4, -15, -34, -31, -33, -33, -8, -8,
+ -26, -30, -44, -21, -62, -60, -21, -21, -63, -56, -89, -78, -90, -90, -68, -68, -54, -59, -76, -72, -73, -72, -58,
+ -58, -68, -77, -79, -63, -89, -88, -68, -68, -8, 3, -58, -36, -61, -61, -13, -13, 6, -7, -28, -24, -27, -26,
+ -1, 0, -19, -25, -37, -8, -60, -58, -13, -13, -25, 1, -67, -45, -69, -69, -24, -24, -14, -11, -35, -29, -30,
+ -30, -11, -11, -29, -31, -49, -18, -67, -65, -24, -24, 79, 97, -11, 28, -15, -15, 67, 67, 101, 78, 42, 48,
+ 45, 45, 91, 92, 60, 45, 27, 70, -8, -5, 67, 67, -3, 4, -57, -34, -60, -60, -11, -11, 9, -4, -27,
+ -23, -26, -26, 2, 2, -17, -24, -36, -6, -59, -57, -11, -11, -47, -25, -81, -63, -82, -82, -46, -46, -31, -33,
+ -54, -47, -49, -48, -32, -31, -47, -52, -61, -43, -72, -71, -46, -46, 79, 97, -11, 28, -15, -15, 67, 67, 101,
+ 78, 42, 48, 45, 45, 91, 92, 60, 45, 27, 70, -8, -5, 67, 67, -23, -9, -72, -51, -73, -73, -31, -31,
+ -18, -29, -40, -40, -39, -39, -19, -18, -34, -36, -51, -32, -65, -64, -31, -31, -38, -14, -71, -52, -73, -73, -32,
+ -32, -11, -15, -43, -33, -36, -36, -16, -15, -34, -43, -49, -24, -67, -65, -32, -32, -29, -40, -74, -60, -76, -76,
+ -44, -44, -25, -41, -60, -57, -61, -61, -37, -37, -51, -58, -60, -43, -78, -77, -44, -44, -30, -15, -70, -51, -72,
+ -72, -32, -32, -18, -24, -46, -39, -42, -42, -20, -19, -38, -43, -55, -25, -72, -71, -32, -32, -46, -37, -74, -61,
+ -77, -77, -45, -45, -22, -28, -57, -48, -52, -51, -31, -30, -50, -60, -61, -37, -79, -78, -45, -45, -54, -38, -75,
+ -62, -77, -77, -49, -49, -26, -33, -57, -50, -52, -51, -34, -34, -51, -61, -62, -37, -81, -79, -49, -49, -26, -29,
+ -77, -59, -79, -79, -40, -40, -19, -35, -55, -50, -53, -53, -28, -28, -42, -52, -55, -44, -68, -67, -40, -40, -38,
+ -25, -71, -55, -74, -74, -38, -38, -24, -21, -48, -43, -44, -44, -25, -25, -45, -50, -62, -31, -80, -78, -38, -38,
+ -15, -14, -70, -51, -74, -74, -29, -29, -14, -20, -48, -39, -45, -44, -16, -16, -36, -43, -54, -29, -69, -68, -29,
+ -29, -44, -49, -77, -66, -80, -80, -52, -52, -33, -36, -67, -59, -64, -64, -42, -42, -56, -69, -69, -46, -86, -85,
+ -52, -52, -11, 2, -60, -38, -62, -62, -16, -16, 3, -10, -29, -26, -28, -28, -3, -3, -21, -26, -39, -11, -61,
+ -59, -16, -16, -32, -14, -63, -47, -65, -65, -30, -30, -19, -27, -45, -37, -42, -42, -21, -21, -32, -35, -49, -12,
+ -74, -71, -30, -30, -5, 4, -58, -35, -60, -60, -12, -12, 8, -5, -27, -23, -26, -26, 1, 2, -18, -24, -36,
+ -7, -59, -57, -12, -12, -28, -1, -68, -47, -70, -70, -25, -25, -16, -12, -36, -30, -31, -31, -13, -12, -31, -32,
+ -50, -19, -68, -66, -25, -25, 49, 60, -23, 8, -26, -26, 40, 40, 76, 46, 22, 29, 25, 25, 63, 64, 47,
+ 26, 16, 53, -21, -19, 40, 40, 0, 5, -56, -33, -59, -59, -9, -9, 12, -1, -27, -21, -25, -25, 4, 4,
+ -16, -23, -35, -5, -58, -57, -9, -9, -50, -26, -82, -64, -82, -82, -48, -48, -32, -34, -55, -48, -49, -49, -33,
+ -33, -48, -54, -62, -44, -73, -72, -48, -48, 47, 68, -15, 3, -24, -24, 40, 40, 86, 59, 17, 30, 0, 0,
+ 47, 52, 54, 48, 3, 28, -19, -20, 51, 40, -26, -12, -63, -52, -68, -68, -30, -30, -4, -15, -32, -30, -38,
+ -39, -23, -18, -9, -24, -43, -25, -60, -61, -19, -30, -10, -13, -54, -51, -63, -63, -26, -26, -16, -23, -46, -39,
+ -49, -50, -22, -20, -17, -18, -55, -31, -65, -65, -20, -26, -41, -23, -72, -60, -75, -75, -44, -44, -29, -37, -57,
+ -53, -67, -67, -40, -38, -33, -38, -64, -47, -75, -76, -38, -44, -25, -10, -66, -52, -70, -70, -31, -31, -8, -17,
+ -46, -38, -46, -47, -24, -19, -19, -31, -42, -26, -60, -60, -20, -31, -45, -35, -85, -73, -89, -89, -53, -53, -39,
+ -55, -65, -62, -68, -69, -50, -47, -37, -50, -69, -53, -79, -79, -48, -53, -41, -36, -75, -65, -79, -79, -48, -48,
+ -46, -41, -63, -59, -66, -67, -45, -43, -43, -44, -72, -52, -82, -83, -43, -48, -43, -42, -75, -69, -79, -79, -54,
+ -54, -43, -42, -71, -66, -74, -75, -51, -48, -39, -58, -63, -57, -78, -78, -49, -54, -37, -14, -73, -59, -77, -77,
+ -36, -36, -17, -30, -48, -42, -48, -49, -29, -25, -31, -32, -52, -27, -65, -66, -26, -36, -18, -1, -59, -46, -64,
+ -64, -23, -23, 7, -10, -29, -25, -36, -37, -16, -11, -4, -17, -37, -18, -54, -55, -12, -23, -20, -15, -66, -54,
+ -70, -70, -34, -34, -21, -25, -58, -49, -61, -62, -30, -28, -23, -34, -54, -40, -68, -68, -28, -34, -10, 9, -52,
+ -38, -57, -57, -14, -14, 14, 0, -26, -19, -33, -34, -7, -2, -1, -8, -33, -12, -50, -51, -3, -14, -12, -4,
+ -48, -45, -58, -58, -19, -19, 0, -13, -37, -29, -39, -39, -14, -11, -21, -15, -44, -17, -59, -59, -11, -19, -7,
+ 13, -50, -36, -56, -56, -12, -12, 17, 2, -25, -18, -32, -33, -4, 0, 0, -5, -31, -10, -48, -49, -1, -12,
+ -19, -14, -55, -52, -64, -64, -27, -27, -9, -17, -36, -31, -36, -37, -20, -15, -15, -20, -44, -20, -59, -60, -16,
+ -27, 75, 106, 2, 25, -8, -8, 67, 67, 113, 92, 48, 59, 35, 34, 79, 87, 91, 75, 36, 72, 4, 3,
+ 86, 67, -4, 18, -49, -35, -55, -55, -9, -9, 22, 3, -24, -16, -32, -32, -2, 3, 3, -3, -28, -7, -46,
+ -46, 2, -9, -33, -43, -66, -68, -75, -75, -47, -47, -43, -41, -55, -54, -58, -58, -44, -41, -31, -40, -69, -49,
+ -79, -79, -42, -47, 75, 106, 2, 25, -8, -8, 67, 67, 113, 92, 48, 59, 35, 34, 79, 87, 91, 75, 36,
+ 72, 4, 3, 86, 67, -13, 9, -58, -44, -64, -64, -18, -18, 18, -10, -28, -22, -35, -35, -11, -7, 2, -13,
+ -31, -13, -49, -49, -7, -18, -13, -22, -58, -56, -67, -67, -32, -32, -16, -28, -47, -42, -50, -50, -29, -26, -8,
+ -26, -53, -37, -66, -66, -27, -32, -41, -22, -72, -59, -75, -75, -43, -43, -28, -37, -57, -53, -67, -67, -40, -38,
+ -32, -38, -64, -47, -75, -75, -38, -43, -23, -7, -65, -51, -69, -69, -29, -29, -5, -16, -45, -37, -45, -46, -22,
+ -17, -17, -29, -40, -24, -58, -59, -18, -29, -48, -39, -85, -74, -89, -89, -55, -55, -43, -55, -66, -64, -69, -69,
+ -52, -50, -39, -52, -71, -55, -81, -81, -50, -55, -52, -47, -85, -76, -89, -89, -59, -59, -51, -55, -67, -66, -70,
+ -70, -55, -53, -44, -55, -76, -59, -86, -86, -53, -59, -17, -12, -59, -49, -64, -64, -28, -28, -14, -19, -42, -38,
+ -53, -53, -25, -23, -14, -22, -54, -36, -66, -67, -23, -28, -36, -13, -73, -58, -77, -77, -36, -36, -16, -30, -48,
+ -41, -47, -48, -29, -24, -31, -31, -52, -27, -65, -66, -25, -36, -16, 1, -57, -44, -63, -63, -21, -21, 8, -8,
+ -29, -24, -35, -36, -14, -9, -3, -15, -36, -17, -53, -54, -10, -21, -33, -31, -70, -62, -75, -75, -46, -46, -34,
+ -34, -66, -59, -69, -70, -42, -40, -31, -49, -58, -51, -73, -74, -40, -46, -13, 4, -54, -41, -59, -59, -18, -18,
+ 9, -3, -27, -22, -34, -35, -11, -6, -3, -12, -35, -15, -52, -53, -7, -18, -22, -13, -59, -48, -63, -63, -29,
+ -29, -11, -12, -48, -40, -50, -51, -23, -20, -27, -33, -45, -30, -65, -65, -21, -29, -7, 13, -50, -36, -56, -56,
+ -12, -12, 17, 2, -25, -18, -32, -33, -4, 0, 0, -5, -31, -10, -48, -49, -1, -12, -12, -3, -46, -35, -53,
+ -53, -11, -11, 11, -27, -36, -23, -48, -48, -11, -11, -17, -31, -33, -22, -46, -45, -11, -11, 48, 64, -5, 10,
+ -16, -16, 47, 47, 93, 26, 6, 28, -15, -15, 47, 47, 54, 22, 26, 22, -4, -3, 47, 47, -11, 6, -50,
+ -36, -57, -57, -9, -9, 17, -22, -33, -23, -46, -46, -9, -9, -6, -28, -24, -25, -42, -41, -9, -9, -35, -24,
+ -56, -51, -61, -61, -34, -34, -18, -52, -50, -40, -63, -63, -34, -34, -41, -47, -50, -40, -61, -60, -34, -34, 48,
+ 64, -5, 10, -16, -16, 47, 47, 93, 26, 6, 28, -15, -15, 47, 47, 54, 22, 26, 22, -4, -3, 47, 47,
+ -28, -23, -57, -50, -63, -63, -30, -30, -12, -38, -59, -39, -67, -67, -30, -30, -27, -50, -45, -46, -63, -62, -30,
+ -30, -41, -21, -57, -50, -62, -62, -32, -32, -15, -49, -48, -35, -62, -62, -32, -32, -39, -44, -49, -39, -60, -60,
+ -32, -32, -39, -26, -72, -63, -76, -76, -43, -43, -30, -54, -59, -56, -65, -65, -43, -43, -38, -60, -49, -54, -65,
+ -64, -43, -43, -32, -20, -59, -49, -66, -66, -27, -27, -5, -33, -42, -35, -53, -54, -27, -27, -26, -40, -44, -36,
+ -57, -57, -27, -27, -62, -44, -72, -68, -77, -77, -52, -52, -41, -59, -63, -51, -73, -72, -52, -52, -53, -62, -65,
+ -58, -76, -76, -52, -52, -59, -41, -71, -66, -76, -76, -50, -50, -37, -58, -60, -50, -70, -70, -50, -50, -50, -59,
+ -63, -55, -74, -74, -50, -50, -58, -48, -73, -70, -78, -78, -55, -55, -42, -64, -64, -56, -76, -76, -55, -55, -55,
+ -64, -68, -61, -80, -79, -55, -55, -40, -26, -67, -57, -74, -74, -34, -34, -13, -41, -49, -42, -61, -61, -34, -34,
+ -33, -48, -52, -43, -64, -64, -34, -34, -39, -32, -61, -55, -68, -68, -35, -35, -19, -39, -53, -40, -62, -62, -35,
+ -35, -35, -50, -53, -44, -66, -65, -35, -35, -47, -38, -68, -63, -72, -72, -48, -48, -29, -61, -51, -53, -67, -66,
+ -48, -48, -49, -54, -59, -52, -70, -69, -48, -48, -11, -1, -52, -39, -58, -58, -14, -14, 13, -28, -38, -28, -51,
+ -51, -14, -14, -11, -32, -30, -30, -47, -47, -14, -14, -13, -13, -56, -44, -63, -63, -19, -19, 6, -23, -32, -33,
+ -43, -43, -19, -19, -17, -36, -33, -27, -47, -46, -19, -19, -13, -3, -53, -40, -59, -59, -16, -16, 10, -29, -40,
+ -29, -53, -53, -16, -16, -12, -35, -31, -32, -49, -48, -16, -16, -13, -13, -56, -44, -63, -63, -19, -19, 6, -23,
+ -32, -33, -43, -43, -19, -19, -17, -36, -33, -27, -47, -46, -19, -19, -11, 5, -50, -36, -57, -57, -10, -10, 17,
+ -23, -34, -24, -47, -47, -10, -10, -6, -28, -25, -26, -43, -42, -10, -10, -18, -10, -53, -43, -60, -60, -19, -19,
+ 3, -35, -45, -31, -56, -56, -19, -19, -24, -39, -41, -29, -54, -53, -19, -19, 31, 42, -19, -7, -27, -27, 24,
+ 24, 53, 6, -13, 6, -25, -25, 24, 24, 24, -1, 14, 5, -15, -14, 24, 24, -14, -11, -54, -44, -60, -60,
+ -21, -21, 5, -34, -45, -35, -59, -58, -21, -21, -18, -40, -36, -37, -54, -54, -21, -21, -28, -12, -50, -42, -55,
+ -55, -24, -24, -6, -42, -39, -31, -53, -53, -24, -24, -31, -36, -39, -30, -51, -50, -24, -24, 31, 42, -19, -7,
+ -27, -27, 24, 24, 53, 6, -13, 6, -25, -25, 24, 24, 24, -1, 14, 5, -15, -14, 24, 24, -27, -21, -57,
+ -48, -63, -63, -28, -28, -10, -36, -57, -37, -65, -65, -28, -28, -26, -48, -43, -44, -61, -60, -28, -28, -28, -19,
+ -49, -44, -54, -54, -27, -27, -8, -46, -42, -32, -58, -58, -27, -27, -34, -39, -44, -34, -56, -55, -27, -27, -39,
+ -26, -72, -62, -76, -76, -43, -43, -29, -54, -59, -56, -64, -65, -43, -43, -38, -60, -49, -53, -64, -64, -43, -43,
+ -34, -34, -63, -56, -69, -69, -37, -37, -16, -44, -52, -45, -64, -64, -37, -37, -37, -51, -55, -46, -67, -67, -37,
+ -37, -57, -41, -72, -66, -76, -76, -50, -50, -36, -59, -59, -51, -71, -71, -50, -50, -50, -59, -63, -56, -75, -74,
+ -50, -50, -57, -51, -74, -71, -78, -78, -57, -57, -42, -67, -65, -59, -78, -78, -57, -57, -57, -66, -70, -63, -81,
+ -81, -57, -57, -53, -43, -72, -67, -77, -77, -52, -52, -35, -63, -59, -55, -73, -72, -52, -52, -51, -60, -65, -57,
+ -76, -76, -52, -52, -27, -39, -49, -33, -64, -63, -27, -30, -46, -39, -52, -49, -58, -58, -34, -34, -30, -41, -58,
+ -55, -61, -62, -31, -29, -6, -30, -31, -24, -51, -49, -14, -16, -31, -26, -39, -36, -45, -45, -20, -20, -9, -28,
+ -48, -43, -51, -52, -18, -16, -9, -39, -47, -35, -67, -65, -24, -27, -49, -37, -52, -48, -58, -58, -31, -31, -22,
+ -28, -53, -50, -55, -56, -28, -26, 4, -17, -15, -1, -42, -39, -2, -6, -38, -18, -36, -31, -42, -42, -14, -14,
+ -1, -11, -33, -28, -32, -34, -7, -2, -12, -44, -36, -31, -56, -54, -22, -25, -37, -31, -43, -42, -49, -49, -29,
+ -29, -19, -33, -51, -49, -55, -55, -26, -24, 2, -19, -17, -3, -44, -41, -3, -8, -39, -19, -38, -33, -44, -44,
+ -16, -16, -4, -12, -34, -29, -33, -34, -9, -3, -12, -44, -36, -31, -56, -54, -22, -25, -37, -31, -43, -42, -49,
+ -49, -29, -29, -19, -33, -51, -49, -55, -55, -26, -24, 7, -12, -14, 1, -42, -38, 3, -2, -30, -13, -32, -27,
+ -38, -38, -10, -10, 3, -10, -32, -25, -31, -32, -3, 3, 6, -13, -16, -4, -41, -37, 0, -6, -36, -20, -33,
+ -30, -39, -39, -14, -14, 1, -14, -34, -30, -34, -35, -9, -4, 53, 25, 27, 52, -15, -9, 46, 38, -12, 28,
+ -9, 2, -15, -15, 24, 24, 35, 28, 6, 10, 11, 8, 35, 43, -2, -25, -19, -6, -45, -42, -8, -13, -48,
+ -25, -43, -38, -49, -49, -21, -21, -9, -14, -35, -33, -35, -36, -14, -9, -9, -19, -27, -13, -49, -45, -13, -19,
+ -56, -33, -46, -43, -52, -52, -28, -28, -1, -23, -42, -40, -41, -42, -22, -18, 53, 25, 27, 52, -15, -9, 46,
+ 38, -12, 28, -9, 2, -15, -15, 24, 24, 35, 28, 6, 10, 11, 8, 35, 43, -9, -31, -27, -14, -54, -50,
+ -15, -20, -54, -32, -50, -45, -56, -56, -28, -28, -24, -22, -38, -37, -37, -38, -21, -16, -4, -20, -28, -17, -49,
+ -46, -12, -18, -55, -33, -46, -43, -52, -52, -27, -27, -3, -24, -43, -41, -43, -45, -22, -19, -42, -43, -47, -27,
+ -70, -67, -35, -38, -56, -43, -59, -56, -65, -65, -42, -42, -29, -43, -51, -50, -48, -50, -35, -29, -18, -45, -39,
+ -36, -59, -57, -28, -30, -50, -39, -53, -49, -59, -59, -34, -34, -27, -36, -52, -52, -56, -57, -31, -30, -40, -45,
+ -60, -43, -74, -72, -40, -43, -64, -52, -65, -62, -71, -71, -47, -47, -34, -49, -64, -63, -66, -67, -44, -41, -48,
+ -54, -67, -51, -81, -79, -49, -52, -75, -60, -74, -71, -80, -80, -56, -56, -48, -56, -67, -69, -69, -70, -53, -50,
+ -40, -46, -59, -43, -73, -71, -41, -43, -66, -52, -66, -63, -72, -72, -47, -47, -33, -48, -64, -64, -66, -67, -44,
+ -42, -35, -51, -53, -41, -68, -66, -38, -41, -64, -50, -63, -60, -69, -69, -45, -45, -41, -45, -61, -62, -65, -66,
+ -42, -40, -34, -52, -51, -41, -66, -65, -38, -40, -65, -50, -63, -60, -69, -69, -44, -44, -39, -44, -61, -62, -65,
+ -65, -42, -40, -53, -65, -62, -56, -75, -74, -53, -56, -75, -62, -74, -73, -80, -80, -60, -60, -50, -65, -69, -74,
+ -72, -73, -58, -57, 8, -13, -12, 2, -39, -36, 3, -2, -32, -13, -32, -27, -38, -38, -10, -10, 6, -8, -32,
+ -25, -31, -32, -3, 3, -6, -29, -29, -15, -52, -48, -13, -19, -44, -29, -40, -40, -46, -46, -28, -28, -14, -27,
+ -40, -40, -41, -42, -22, -18, -18, -38, -38, -17, -64, -61, -23, -25, -39, -29, -45, -43, -51, -51, -30, -30, -19,
+ -25, -42, -39, -40, -42, -21, -15, -16, -36, -37, -15, -63, -60, -21, -24, -37, -27, -43, -42, -49, -49, -28, -28,
+ -17, -24, -42, -38, -39, -41, -19, -13, -15, -34, -35, -14, -62, -59, -19, -22, -35, -25, -42, -40, -48, -48, -26,
+ -26, -14, -23, -41, -37, -39, -41, -18, -12, -13, -32, -34, -12, -61, -58, -17, -20, -32, -23, -40, -38, -46, -46,
+ -24, -24, -11, -22, -40, -35, -38, -40, -16, -10, -11, -30, -32, -10, -59, -56, -15, -17, -29, -21, -37, -36, -43,
+ -43, -22, -22, -8, -20, -40, -34, -37, -39, -13, -7, -18, -28, -37, -14, -64, -61, -18, -21, -40, -29, -47, -42,
+ -53, -53, -25, -25, -21, -23, -41, -36, -38, -40, -17, -10, -40, -47, -56, -42, -71, -69, -40, -43, -64, -51, -64,
+ -61, -70, -70, -47, -47, -31, -49, -63, -63, -65, -66, -44, -41, -42, -34, -75, -51, -72, -72, -32, -30, -36, -13,
+ -55, -38, -57, -57, -20, -22, -16, -28, -52, -32, -52, -55, -21, -22, -28, -12, -56, -36, -61, -61, -17, -14, -25,
+ 4, -45, -24, -47, -47, -3, -8, -7, -13, -48, -17, -49, -50, -8, -8, -25, -20, -66, -43, -65, -66, -25, -23,
+ -7, -3, -41, -24, -43, -43, -6, -14, 7, -19, -55, -29, -51, -54, -13, -14, 55, 86, -9, 28, -18, -20, 64,
+ 68, 43, 80, 1, 40, -4, -4, 79, 73, 91, 63, 1, 55, 0, -3, 74, 74, -18, 4, -50, -27, -55, -56,
+ -6, -4, -17, 10, -39, -16, -42, -41, 8, 2, 11, -3, -42, -5, -46, -47, 2, 2, -69, -36, -75, -57, -78,
+ -78, -40, -40, -72, -25, -73, -53, -74, -74, -33, -34, -28, -46, -57, -34, -65, -65, -34, -34, 55, 86, -9, 28,
+ -18, -20, 64, 68, 43, 80, 1, 40, -4, -4, 79, 73, 91, 63, 1, 55, 0, -3, 74, 74, -31, -14, -69,
+ -46, -74, -74, -25, -22, -35, -16, -66, -43, -68, -68, -19, -17, -7, -27, -52, -30, -51, -53, -16, -17, -42, -17,
+ -69, -46, -72, -73, -24, -23, -30, -4, -56, -32, -59, -58, -7, -17, 6, -32, -59, -35, -57, -58, -17, -17, -50,
+ -33, -69, -55, -75, -75, -41, -40, -54, -32, -65, -47, -67, -66, -29, -34, -34, -32, -63, -36, -68, -68, -35, -35,
+ -30, -12, -57, -38, -61, -62, -22, -19, -25, -4, -47, -29, -50, -49, -10, -13, -4, -15, -50, -16, -54, -55, -13,
+ -13, -67, -47, -79, -64, -82, -82, -51, -50, -67, -35, -75, -58, -76, -76, -42, -44, -41, -46, -63, -43, -68, -68,
+ -44, -44, -65, -43, -75, -60, -78, -78, -47, -46, -64, -30, -70, -53, -71, -70, -36, -40, -37, -41, -61, -37, -67,
+ -67, -40, -40, -70, -53, -88, -72, -90, -91, -58, -58, -70, -47, -87, -70, -87, -87, -52, -51, -45, -56, -69, -56,
+ -70, -70, -51, -52, -48, -34, -70, -54, -73, -74, -40, -37, -40, -16, -61, -44, -62, -62, -28, -32, -26, -42, -62,
+ -41, -59, -61, -31, -32, -28, -14, -63, -43, -67, -68, -25, -22, -25, -12, -56, -37, -59, -59, -16, -17, -3, -19,
+ -53, -24, -54, -56, -16, -17, -67, -52, -87, -71, -89, -89, -58, -57, -67, -48, -85, -68, -85, -85, -51, -51, -44,
+ -54, -69, -55, -70, -71, -51, -51, -23, -4, -58, -35, -63, -63, -14, -12, -22, 1, -49, -26, -51, -51, -2, -6,
+ 5, -14, -47, -17, -48, -50, -6, -6, -44, -39, -73, -54, -72, -72, -39, -37, -26, -10, -49, -34, -50, -49, -21,
+ -28, -15, -39, -62, -42, -55, -58, -27, -28, -19, 2, -52, -29, -57, -57, -8, -6, -17, 9, -41, -17, -43, -43,
+ 6, 0, 10, -6, -44, -9, -46, -48, 0, 0, -25, 1, -55, -31, -60, -61, -9, -7, -19, 10, -46, -22, -49,
+ -49, 3, -1, 17, -17, -47, -14, -49, -51, -1, -1, 60, 95, -6, 36, -14, -15, 74, 78, 59, 98, 11, 53,
+ 7, 8, 94, 90, 108, 79, 19, 72, 18, 14, 90, 90, -18, 5, -50, -27, -54, -55, -5, -3, -17, 11, -38,
+ -15, -41, -40, 9, 3, 12, -1, -41, -4, -45, -47, 3, 3, -45, -19, -69, -47, -73, -73, -26, -25, -36, -9,
+ -58, -35, -62, -61, -11, -19, 1, -34, -60, -34, -59, -60, -19, -20, 60, 95, -6, 36, -14, -15, 74, 78, 59,
+ 98, 11, 53, 7, 8, 94, 90, 108, 79, 19, 72, 18, 14, 90, 90, -32, -16, -70, -47, -75, -75, -26, -24,
+ -35, -17, -67, -44, -69, -69, -20, -18, -8, -29, -53, -32, -51, -53, -18, -18, -60, -33, -78, -57, -81, -82, -38,
+ -37, -55, -21, -72, -50, -74, -73, -27, -31, -16, -48, -62, -43, -61, -62, -31, -31, -50, -33, -69, -55, -74, -74,
+ -40, -39, -54, -31, -64, -46, -66, -65, -28, -34, -33, -31, -62, -36, -68, -68, -34, -34, -34, -24, -69, -50, -73,
+ -74, -34, -31, -25, -16, -59, -41, -62, -61, -22, -25, -11, -34, -62, -40, -57, -59, -25, -25, -65, -43, -75, -60,
+ -78, -78, -47, -46, -64, -30, -70, -53, -71, -70, -36, -40, -37, -41, -61, -37, -67, -67, -40, -40, -23, -4, -58,
+ -35, -63, -63, -14, -12, -22, 1, -49, -26, -51, -51, -2, -6, 5, -14, -47, -17, -48, -50, -6, -6, -53, -34,
+ -76, -56, -78, -78, -40, -39, -46, -24, -66, -47, -68, -67, -27, -33, -21, -34, -61, -39, -61, -62, -33, -33, 0,
+ 8, -40, -12, -27, -29, -10, -5, 7, 19, -29, -10, -41, -48, -6, -6, -14, -19, -61, -26, -48, -47, -7, -6,
+ -17, -14, -58, -34, -48, -50, -34, -30, -22, -18, -54, -37, -60, -61, -31, -31, -41, -45, -77, -48, -67, -67, -32,
+ -32, -46, -38, -69, -51, -61, -62, -51, -48, -35, -33, -68, -52, -73, -75, -47, -47, -59, -60, -88, -63, -78, -78,
+ -50, -49, 0, 8, -40, -12, -27, -29, -10, -5, 7, 19, -29, -10, -41, -48, -6, -6, -14, -19, -61, -26, -48,
+ -47, -7, -6, -9, 0, -49, -19, -35, -37, -17, -12, -7, 9, -38, -19, -46, -50, -12, -13, -20, -25, -59, -30,
+ -49, -48, -14, -13, 98, 113, 29, 79, 52, 48, 80, 88, 112, 127, 45, 81, 24, 13, 89, 88, 70, 63, -13,
+ 51, 11, 12, 86, 86, 6, 14, -33, -5, -20, -22, -3, 2, 18, 28, -24, -2, -35, -42, 4, 3, -9, -12,
+ -56, -18, -42, -41, 2, 3, -13, -1, -40, -15, -28, -30, -17, -13, 4, 13, -41, -19, -47, -51, -9, -10, -25,
+ -27, -63, -29, -50, -49, -12, -11, 98, 113, 29, 79, 52, 48, 80, 88, 112, 127, 45, 81, 24, 13, 89, 88,
+ 70, 63, -13, 51, 11, 12, 86, 86, -14, -6, -54, -25, -40, -42, -24, -19, -15, -1, -42, -27, -56, -63, -26,
+ -26, -28, -36, -74, -43, -63, -63, -26, -26, -10, -1, -46, -18, -34, -36, -21, -17, -5, 7, -41, -23, -50, -54,
+ -16, -17, -26, -36, -68, -36, -56, -55, -19, -19, -32, -22, -55, -36, -44, -46, -34, -30, -10, -6, -44, -31, -57,
+ -65, -30, -31, -38, -42, -79, -49, -67, -66, -33, -33, -17, -13, -57, -33, -47, -49, -32, -29, -18, -11, -45, -30,
+ -52, -53, -25, -26, -33, -39, -68, -41, -59, -58, -26, -26, -35, -25, -52, -35, -44, -46, -42, -39, -20, -20, -63,
+ -43, -67, -69, -36, -37, -54, -49, -82, -53, -71, -70, -39, -38, -44, -34, -61, -44, -53, -55, -51, -48, -34, -31,
+ -67, -51, -73, -75, -46, -47, -58, -57, -86, -62, -76, -76, -49, -49, 0, 8, -40, -12, -27, -29, -10, -5, 7,
+ 19, -29, -10, -41, -48, -6, -6, -14, -19, -61, -26, -48, -47, -7, -6, -30, -22, -56, -35, -47, -48, -38, -34,
+ -23, -17, -54, -37, -60, -61, -31, -32, -42, -38, -70, -45, -61, -60, -32, -32, -27, -21, -61, -38, -51, -53, -39,
+ -36, -28, -22, -57, -40, -62, -63, -35, -35, -44, -45, -75, -50, -66, -66, -35, -35, -29, -21, -50, -33, -43, -45,
+ -42, -39, -19, -17, -54, -38, -59, -61, -32, -33, -44, -46, -74, -48, -64, -63, -35, -34, 3, 11, -37, -8, -23,
+ -25, -7, -2, 13, 24, -26, -6, -37, -44, -1, -1, -11, -15, -58, -21, -45, -44, -2, -2, -7, 4, -46, -17,
+ -34, -35, -11, -7, 5, 20, -31, -11, -38, -42, -2, -3, -12, -16, -52, -19, -40, -39, -1, 0, 6, 14, -33,
+ -5, -20, -22, -3, 2, 19, 29, -22, -1, -34, -40, 4, 3, -8, -11, -55, -17, -41, -40, 3, 3, -9, 1,
+ -46, -17, -32, -34, -16, -11, -5, 10, -39, -19, -47, -51, -11, -12, -21, -23, -60, -29, -49, -48, -12, -12, 100,
+ 114, 29, 80, 52, 49, 82, 90, 113, 127, 47, 82, 26, 15, 91, 89, 72, 65, -11, 53, 12, 14, 88, 88,
+ 41, 56, -11, 32, 10, 8, 39, 47, 64, 88, 15, 39, -10, -26, 41, 40, 36, 21, -41, 11, -21, -20, 40,
+ 40, -4, 4, -44, -15, -30, -32, -14, -9, 4, 19, -23, -8, -37, -44, -6, -7, -10, -18, -55, -24, -44, -43,
+ -7, -7, -10, 1, -40, -15, -28, -30, -17, -12, 4, 14, -40, -18, -46, -50, -8, -9, -24, -27, -62, -29, -49,
+ -48, -11, -11, 100, 114, 29, 80, 52, 49, 82, 90, 113, 127, 47, 82, 26, 15, 91, 89, 72, 65, -11, 53,
+ 12, 14, 88, 88, 41, 56, -11, 32, 10, 8, 39, 47, 64, 88, 15, 39, -10, -26, 41, 40, 36, 21, -41,
+ 11, -21, -20, 40, 40, -11, -3, -51, -22, -37, -39, -21, -16, -10, 3, -41, -25, -54, -62, -22, -22, -27, -34,
+ -74, -41, -62, -61, -22, -23, -26, -14, -49, -25, -37, -39, -30, -26, -13, 1, -44, -28, -53, -56, -21, -23, -30,
+ -34, -63, -38, -53, -52, -25, -24, -32, -22, -54, -35, -44, -45, -34, -29, -10, -6, -44, -30, -57, -65, -30, -30,
+ -38, -42, -79, -48, -67, -66, -33, -32, -14, -20, -62, -31, -48, -54, -21, -22, -16, -18, -65, -35, -54, -54, -21,
+ -19, -17, -14, -57, -36, -58, -64, -27, -25, -28, -36, -66, -42, -58, -58, -32, -34, -28, -27, -58, -38, -49, -50,
+ -29, -27, -27, -23, -52, -41, -57, -63, -37, -35, -20, -29, -62, -36, -53, -53, -25, -27, -23, -21, -54, -32, -44,
+ -45, -22, -20, -23, -16, -49, -36, -54, -59, -31, -30, -35, -43, -75, -51, -66, -68, -39, -42, -37, -35, -68, -46,
+ -58, -59, -37, -35, -31, -25, -57, -45, -61, -67, -40, -39, -27, -29, -63, -37, -51, -57, -29, -31, -18, -24, -66,
+ -41, -57, -57, -30, -28, -26, -27, -59, -42, -61, -67, -35, -34, -23, -27, -66, -37, -53, -59, -27, -29, -20, -24,
+ -69, -41, -58, -58, -28, -26, -20, -21, -59, -40, -61, -67, -32, -31, -32, -42, -80, -52, -69, -71, -38, -41, -41,
+ -36, -73, -47, -62, -62, -36, -34, -39, -28, -68, -53, -72, -78, -45, -44, 16, 9, -39, -5, -26, -31, 7, 3,
+ 10, 7, -42, -11, -30, -31, 1, 3, 4, 9, -40, -16, -40, -46, -4, -2, 2, -6, -44, -14, -31, -39, -8,
+ -8, -3, -6, -56, -24, -43, -45, -8, -6, -22, -9, -55, -34, -56, -62, -23, -23, 16, 11, -36, -3, -23, -28,
+ 8, 5, 12, 9, -39, -9, -28, -28, 2, 4, 5, 8, -39, -15, -39, -45, -4, -2, 17, 5, -39, -5, -23,
+ -33, 5, -5, -1, -3, -67, -24, -50, -50, -4, -1, -14, 7, -53, -24, -51, -58, -8, -8, 24, 17, -30, 4,
+ -17, -21, 15, 12, 19, 16, -32, -2, -21, -22, 9, 11, 8, 13, -35, -11, -35, -41, 1, 2, 0, -4, -40,
+ -13, -28, -34, -3, -13, 1, -7, -59, -27, -47, -47, -12, -10, -12, -7, -49, -26, -48, -54, -15, -13, 119, 109,
+ 29, 85, 51, 42, 104, 99, 118, 110, 27, 78, 45, 45, 95, 99, 104, 104, 24, 65, 24, 13, 84, 86, 4,
+ -2, -50, -17, -36, -43, -5, -9, -1, -4, -54, -22, -42, -42, -11, -9, -3, 1, -47, -23, -46, -53, -10, -9,
+ 3, -6, -38, -13, -29, -30, -1, -11, -4, -5, -46, -19, -34, -36, -6, -5, -6, 0, -39, -21, -41, -47, -13,
+ -11, 119, 109, 29, 85, 51, 42, 104, 99, 118, 110, 27, 78, 45, 45, 95, 99, 104, 104, 24, 65, 24, 13,
+ 84, 86, 2, -1, -40, -12, -29, -34, -4, -7, 8, 0, -43, -18, -34, -34, -10, -7, 0, -6, -44, -23, -43,
+ -50, -14, -13, -16, -23, -50, -28, -42, -44, -18, -29, -16, -21, -59, -34, -48, -49, -24, -22, -19, -14, -47, -30,
+ -48, -55, -24, -23, -16, -24, -61, -35, -53, -52, -23, -22, -18, -15, -43, -25, -35, -36, -21, -19, -19, -18, -51,
+ -39, -55, -62, -33, -33, -8, -14, -56, -24, -42, -48, -14, -15, -10, -12, -59, -29, -47, -48, -15, -13, -14, -10,
+ -53, -33, -55, -61, -23, -22, -20, -29, -62, -36, -53, -53, -25, -27, -23, -21, -54, -32, -44, -45, -22, -20, -23,
+ -16, -49, -36, -53, -59, -31, -30, -16, -25, -56, -31, -47, -48, -21, -23, -17, -16, -48, -28, -39, -40, -18, -16,
+ -18, -11, -42, -30, -47, -52, -26, -24, -34, -42, -73, -49, -64, -66, -38, -41, -35, -34, -67, -45, -57, -58, -36,
+ -34, -25, -26, -57, -45, -62, -67, -40, -39, 11, 6, -39, -8, -27, -32, 3, 0, 9, 5, -42, -13, -32, -32,
+ -3, -1, 2, 4, -41, -18, -41, -47, -7, -6, -14, -17, -53, -26, -42, -47, -18, -19, -8, -13, -55, -31, -46,
+ -47, -18, -16, -20, -18, -53, -35, -55, -61, -28, -27, -37, -46, -79, -54, -69, -71, -42, -45, -40, -38, -72, -49,
+ -62, -62, -40, -38, -27, -25, -58, -45, -62, -68, -40, -39, 11, 6, -39, -8, -27, -32, 3, 0, 9, 5, -42,
+ -13, -32, -32, -3, -1, 2, 4, -41, -18, -41, -47, -7, -6, 0, -4, -40, -13, -28, -34, -3, -13, 1, -8,
+ -59, -27, -47, -47, -12, -10, -12, -7, -49, -26, -48, -54, -15, -14, 121, 112, 31, 89, 54, 44, 107, 102, 121,
+ 112, 25, 79, 45, 44, 97, 101, 105, 106, 24, 66, 24, 13, 86, 88, 22, 16, -31, 2, -18, -23, 13, 10,
+ 17, 15, -34, -4, -23, -23, 8, 10, 8, 12, -36, -12, -36, -42, 0, 1, -27, -34, -62, -40, -54, -56, -29,
+ -40, -28, -32, -71, -45, -60, -60, -35, -33, -28, -23, -55, -39, -57, -63, -33, -31, 119, 97, 31, 88, 44, 35,
+ 112, 110, 93, 93, -17, 47, 1, -2, 93, 102, 127, 127, 40, 92, 59, 46, 100, 111, -7, -17, -53, -21, -46,
+ -51, -8, -9, -21, -6, -68, -39, -60, -61, -18, -13, -9, -5, -52, -28, -48, -54, -21, -20, -12, -30, -55, -25,
+ -52, -60, -18, -19, -13, -22, -72, -36, -56, -58, -17, -9, 5, 6, -33, -10, -24, -32, -8, -3, -28, -31, -58,
+ -33, -48, -49, -20, -20, -35, -33, -83, -54, -78, -79, -31, -28, -1, -7, -49, -26, -39, -46, -26, -18, 2, -13,
+ -43, -17, -39, -45, -8, -9, -12, -23, -70, -40, -63, -64, -18, -14, 2, 6, -45, -18, -35, -42, -14, -8, -32,
+ -43, -65, -42, -63, -70, -38, -39, -40, -45, -87, -60, -77, -78, -42, -39, -30, -27, -64, -43, -58, -64, -41, -36,
+ -27, -38, -60, -37, -58, -65, -33, -34, -34, -44, -86, -56, -75, -77, -38, -34, -20, -18, -57, -35, -49, -56, -34,
+ -29, -1, -15, -45, -19, -41, -47, -10, -11, -15, -23, -70, -42, -64, -65, -20, -16, -3, 2, -49, -22, -39, -46,
+ -18, -13, -18, -32, -63, -36, -58, -62, -27, -28, -32, -39, -80, -48, -67, -68, -29, -25, -15, -7, -49, -28, -42,
+ -49, -27, -22, 3, -8, -45, -12, -37, -43, 1, 0, -11, -4, -66, -33, -57, -58, -9, -4, 8, 10, -40, -14,
+ -32, -39, -8, -3, -18, -30, -51, -29, -46, -51, -21, -22, -24, -30, -76, -54, -74, -75, -34, -30, -12, -16, -61,
+ -36, -52, -59, -32, -27, 12, 1, -36, -4, -29, -34, 10, 8, -1, -3, -64, -27, -54, -56, -1, 4, 24, 26,
+ -28, 1, -16, -24, 5, 12, -8, -29, -66, -32, -56, -58, -14, -15, -14, -20, -66, -31, -51, -53, -12, -5, 13,
+ 17, -22, -2, -15, -23, -1, 3, 15, 3, -34, -1, -26, -32, 12, 11, 1, -2, -64, -25, -53, -55, 2, 7,
+ 29, 30, -25, 5, -11, -19, 9, 17, -11, -30, -64, -30, -57, -61, -17, -18, -17, -16, -66, -33, -50, -52, -15,
+ -8, -2, 5, -35, -16, -31, -38, -13, -10, 115, 95, 31, 87, 43, 34, 110, 108, 92, 93, -16, 48, 2, -1,
+ 93, 101, 127, 127, 41, 91, 59, 46, 99, 109, 18, 6, -31, 1, -24, -29, 15, 14, 4, -2, -63, -24, -53,
+ -54, 5, 10, 34, 35, -21, 10, -7, -15, 13, 22, -28, -45, -69, -40, -65, -71, -32, -32, -28, -26, -75, -45,
+ -61, -63, -30, -22, -17, -16, -48, -30, -45, -52, -28, -26, 115, 95, 31, 87, 43, 34, 110, 108, 92, 93, -16,
+ 48, 2, -1, 93, 101, 127, 127, 41, 91, 59, 46, 99, 109, -5, -15, -52, -19, -44, -50, -6, -7, -19, -6,
+ -68, -38, -59, -61, -16, -11, -5, -2, -50, -25, -45, -51, -19, -17, 1, -17, -43, -12, -40, -48, -4, -5, 0,
+ -12, -67, -28, -52, -54, -5, 3, 23, 23, -22, 5, -9, -18, 7, 14, -28, -30, -58, -33, -47, -49, -19, -20,
+ -35, -33, -83, -54, -78, -79, -31, -28, 0, -6, -48, -25, -38, -45, -25, -18, 4, -11, -42, -15, -37, -43, -6,
+ -7, -10, -23, -70, -39, -62, -63, -16, -12, 5, 10, -43, -15, -31, -38, -11, -4, -30, -41, -63, -40, -61, -68,
+ -36, -37, -38, -44, -87, -58, -76, -78, -41, -37, -26, -24, -61, -40, -55, -61, -39, -33, -40, -50, -72, -49, -70,
+ -77, -45, -46, -48, -46, -89, -64, -79, -81, -50, -46, -43, -40, -74, -56, -71, -77, -52, -50, -6, -21, -52, -25,
+ -47, -52, -16, -17, -20, -33, -75, -43, -64, -65, -21, -17, -2, 5, -42, -18, -32, -39, -16, -9, -18, -31, -62,
+ -36, -57, -62, -27, -28, -31, -39, -80, -48, -66, -68, -29, -25, -15, -6, -48, -28, -41, -48, -26, -21, 8, -3,
+ -39, -7, -32, -38, 6, 5, -5, -3, -65, -29, -55, -57, -4, 1, 18, 20, -33, -5, -22, -30, 0, 6, -38,
+ -49, -70, -49, -65, -67, -40, -41, -42, -52, -87, -60, -77, -78, -43, -39, -21, -21, -56, -37, -49, -56, -38, -33,
+ 12, 1, -36, -4, -29, -34, 10, 8, -1, -3, -64, -27, -54, -56, -1, 4, 24, 26, -28, 1, -16, -24, 5,
+ 12, 5, -15, -54, -18, -43, -46, 1, 0, -1, -8, -60, -24, -47, -49, -2, 6, 29, 30, -15, 10, -4, -13,
+ 11, 17, 15, 3, -34, -1, -26, -32, 12, 11, 1, -2, -64, -25, -53, -55, 2, 7, 29, 30, -25, 5, -11,
+ -19, 9, 17, -3, -8, -40, -15, -32, -33, -3, -2, -5, -16, -48, -22, -42, -42, -4, -3, 2, 10, -35, -11,
+ -30, -34, 0, 0, 78, 74, 7, 58, 25, 23, 85, 86, 104, 97, 29, 66, 25, 25, 96, 98, 108, 118, 41,
+ 79, 48, 41, 96, 97, 0, -3, -43, -13, -32, -33, 3, 3, 15, 12, -30, -5, -30, -30, 13, 14, 16, 21,
+ -27, -2, -22, -26, 9, 9, -26, -27, -53, -34, -46, -47, -25, -24, -28, -40, -65, -44, -62, -62, -30, -29, -18,
+ -11, -47, -28, -44, -44, -16, -16, 78, 74, 7, 58, 25, 23, 85, 86, 104, 97, 29, 66, 25, 25, 96, 98,
+ 108, 118, 41, 79, 48, 41, 96, 97, -24, -24, -54, -31, -47, -47, -18, -17, -6, -16, -50, -32, -54, -54, -17,
+ -16, -8, -4, -41, -20, -36, -40, -12, -11, -36, -35, -54, -39, -49, -50, -32, -32, -31, -47, -67, -50, -67, -66,
+ -38, -38, -23, -21, -50, -33, -46, -46, -23, -22, -55, -53, -81, -61, -73, -73, -49, -49, -38, -39, -71, -57, -76,
+ -76, -45, -44, -45, -32, -62, -48, -60, -61, -38, -39, -15, -21, -57, -31, -48, -49, -17, -16, -10, -11, -48, -22,
+ -41, -41, -6, -5, -8, 0, -42, -22, -38, -42, -13, -12, -52, -49, -68, -54, -63, -63, -47, -47, -30, -37, -60,
+ -47, -59, -58, -38, -36, -30, -34, -53, -43, -51, -52, -36, -35, -47, -46, -65, -51, -60, -61, -43, -43, -26, -32,
+ -56, -42, -54, -54, -32, -31, -26, -29, -51, -39, -49, -49, -32, -32, -52, -51, -73, -57, -67, -67, -49, -49, -38,
+ -45, -69, -54, -67, -67, -44, -43, -39, -34, -57, -45, -55, -56, -38, -37, -33, -35, -63, -42, -56, -57, -31, -30,
+ -21, -27, -58, -37, -54, -54, -24, -24, -26, -18, -50, -33, -46, -50, -27, -26, -11, -13, -49, -22, -40, -40, -8,
+ -7, 4, -2, -41, -19, -43, -42, -2, -1, 3, 9, -34, -11, -29, -33, -1, -1, -51, -49, -67, -54, -63, -63,
+ -46, -46, -27, -35, -58, -44, -56, -56, -35, -33, -30, -36, -56, -44, -53, -54, -38, -37, -4, -8, -49, -18, -38,
+ -39, -2, -2, 5, 1, -40, -16, -41, -41, 3, 4, 5, 17, -32, -8, -28, -32, 4, 4, -25, -35, -65, -40,
+ -56, -57, -26, -25, -19, -23, -62, -35, -55, -54, -18, -17, -31, -14, -56, -34, -51, -56, -25, -25, -7, -10, -49,
+ -20, -39, -39, -4, -4, 4, 0, -41, -17, -41, -41, 1, 2, 4, 14, -33, -9, -28, -32, 2, 2, -25, -35,
+ -65, -40, -56, -57, -26, -25, -19, -23, -62, -35, -55, -54, -18, -17, -31, -14, -56, -34, -51, -56, -25, -25, 1,
+ -3, -44, -13, -33, -33, 3, 3, 14, 11, -31, -6, -31, -31, 12, 13, 14, 22, -27, -3, -23, -27, 9, 9,
+ -8, -11, -42, -19, -34, -35, -7, -6, -6, -19, -49, -24, -44, -44, -7, -6, -2, 3, -40, -16, -34, -38, -7,
+ -6, 83, 79, 12, 63, 30, 29, 90, 91, 111, 102, 30, 70, 27, 27, 101, 102, 108, 120, 40, 82, 49, 42,
+ 100, 101, 38, 35, -18, 25, -3, -3, 48, 49, 71, 59, -3, 30, -9, -8, 57, 59, 61, 71, 5, 41, 13,
+ 13, 63, 64, -10, -14, -54, -24, -43, -44, -8, -7, -4, -8, -50, -25, -51, -51, -7, -6, -5, 11, -38, -13,
+ -33, -37, -1, -1, -24, -24, -47, -30, -41, -42, -22, -21, -17, -30, -54, -34, -51, -50, -21, -20, -11, -11, -43,
+ -25, -40, -40, -14, -14, 83, 79, 12, 63, 30, 29, 90, 91, 111, 102, 30, 70, 27, 27, 101, 102, 108, 120,
+ 40, 82, 49, 42, 100, 101, 38, 35, -18, 25, -3, -3, 48, 49, 71, 59, -3, 30, -9, -8, 57, 59, 61,
+ 71, 5, 41, 13, 13, 63, 64, -18, -18, -50, -26, -42, -43, -13, -12, 1, -7, -42, -24, -46, -46, -8, -7,
+ 1, 2, -37, -15, -32, -36, -7, -6, -23, -24, -47, -29, -41, -42, -21, -21, -17, -30, -54, -34, -52, -51, -21,
+ -20, -8, -9, -43, -25, -39, -39, -13, -12, -54, -52, -81, -60, -73, -73, -49, -49, -37, -38, -70, -56, -75, -75,
+ -45, -44, -44, -32, -62, -47, -60, -60, -38, -38, -24, -30, -66, -39, -57, -57, -25, -25, -25, -27, -64, -37, -57,
+ -57, -22, -21, -24, -8, -50, -30, -47, -51, -21, -21, -43, -43, -65, -49, -59, -60, -40, -40, -26, -30, -57, -40,
+ -54, -53, -29, -28, -25, -25, -50, -37, -48, -48, -29, -28};
+
+const int8_t *const batch_matmul_1_s8_output_ref = batch_matmul_1_s8_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_input_tensor.h
new file mode 100644
index 00000000..9410e31a
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_input_tensor.h
@@ -0,0 +1,179 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_1_s8_rhs_input_tensor[3456] = {
+ 88, -79, -63, -45, -86, -86, 0, 0, 32, 49, -84, -41, -86, -86, 0, 0, -48, -77, -63, -45,
+ -86, -86, 0, 0, 64, 49, -84, -41, -86, -86, 0, 0, 16, -122, -79, -41, -86, -86, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 16, 67, -100, -41, -86, -86, 0, 0, -95, 2, 0, 0,
+ 0, 0, 0, 0, -128, 93, -82, -41, -86, -86, 0, 0, -32, 79, -85, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 80, -66, -85, -41,
+ -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, 0, 0, 0, 0, 80, -66, -85, -41, -86, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 83, -19, 6, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 88,
+ 100, 105, 118, 121, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, 3, -19, 6, 125, -96, -86, 0, 0, -128, 48, -84, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 100, 105, 118, 121, 0, 0, 0, 0, 0, 0, 0, 0,
+ -64, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 115, 72, 1, 125,
+ -96, -86, 0, 0, 0, 79, -78, -41, -86, -86, 0, 0, -112, -34, 17, -102, -1, -1, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, -64, 50, -84, -41, -86, -86, 0, 0, 4, 0, 0, 0,
+ 7, 0, 0, 0, -80, -17, -90, -41, -86, -86, 0, 0, 80, 94, -81, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -128, 76, -100, -41, -86, -86, 0, 0, 64, 9, -78, -41,
+ -86, -86, 0, 0, 112, 14, -96, -41, -86, -86, 0, 0, 24, -122, -79, -41, -86, -86, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, -16, 121, -90, -41, -86, -86, 0, 0, -127, 0, 0, 0,
+ 0, 0, 0, 0, 16, 104, -82, -41, -86, -86, 0, 0, 112, -68, -85, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 80, 94, -82, -41,
+ -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, 0, 0, 0, 0, 80, 94, -82, -41, -86, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
+ 80, 94, -82, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, -64, 1, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 113, 28, 125, -96, -86, 0, 0,
+ 64, 50, -84, -41, -86, -86, 0, 0, 80, -79, -63, -45, -86, -86, 0, 0, 96, 50, -84, -41,
+ -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, -128, 50, -84, -41, -86, -86, 0, 0,
+ -48, -77, -63, -45, -86, -86, 0, 0, -96, 50, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -64, 51, -78, -41, -86, -86, 0, 0, -112, 4, -83, -41, -86, -86, 0, 0,
+ 48, -7, -90, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 31, -79, -41,
+ -86, -86, 0, 0, -96, 42, -83, -41, -86, -86, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+ -128, 7, -82, -41, -86, -86, 0, 0, -112, 121, -100, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 65, 108, 108, 82, 101, 100, 117, 99, 101, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, -77, -115, 50, 125, -96, -86, 0, 0, -64, 49, -84, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 65, 108, 108, 82, 101, 100, 117, 99, 101, 0,
+ 16, 21, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 83, 78, 1, 125,
+ -96, -86, 0, 0, 112, 79, -78, -41, -86, -86, 0, 0, -104, -34, 17, -102, -1, -1, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, -96, 52, -84, -41, -86, -86, 0, 0, 6, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 50, -80, -41,
+ -86, -86, 0, 0, 0, -100, -100, -41, -86, -86, 0, 0, 48, -122, -79, -41, -86, -86, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 16, -68, -80, -41, -86, -86, 0, 0, -127, 0, 0, 0,
+ 0, 0, 0, 0, -16, 124, -100, -41, -86, -86, 0, 0, 0, -82, -79, -41, -86, -86, 0, 0,
+ -36, 29, 51, -110, -1, -1, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 64, 53, -84, -41,
+ -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0, -93, -44, 28, 125, -96, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
+ 64, 53, -84, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 16, 22, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 67, -41, 28, 125, -96, -86, 0, 0,
+ 32, 53, -84, -41, -86, -86, 0, 0, 80, -79, -63, -45, -86, -86, 0, 0, 96, 52, -84, -41,
+ -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, -128, 52, -84, -41, -86, -86, 0, 0,
+ 80, -78, -63, -45, -86, -86, 0, 0, 32, 52, -84, -41, -86, -86, 0, 0, -56, -77, -63, -45,
+ -86, -86, 0, 0, 64, 52, -84, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0,
+ 80, 53, -84, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 57, 0, 0, 0, 0, 0, 0,
+ 0, -118, -65, -41, -86, -86, 0, 0, -48, 57, -90, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 14, -80, -41, -86, -86, 0, 0,
+ 81, 0, 0, 0, 0, 0, 0, 0, 0, -82, -90, -41, -86, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ -45, 79, 1, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 88,
+ 108, 97, 66, 114, 111, 97, 100, 99, 97, 115, 116, 72, -128, 0, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, -13, -43, 28, 125, -96, -86, 0, 0, -96, 51, -84, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 66, 114, 111, 97, 100, 99, 97, 115, 116, 72,
+ -80, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 76, 1, 125,
+ -96, -86, 0, 0, -80, 79, -78, -41, -86, -86, 0, 0, -96, -34, 17, -102, -1, -1, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, -48, 54, -84, -41, -86, -86, 0, 0, 4, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 112, -4, -85, -41, -86, -86, 0, 0, 112, 61, -79, -41, -86, -86, 0, 0, -96, -42, -79, -41,
+ -86, -86, 0, 0, 48, 75, -90, -41, -86, -86, 0, 0, 64, -122, -79, -41, -86, -86, 0, 0,
+ 10, 0, 0, 0, 0, 0, 0, 0, -64, 55, -80, -41, -86, -86, 0, 0, -127, 0, 0, 0,
+ 0, 0, 0, 0, -112, -68, -87, -41, -86, -86, 0, 0, -64, -10, -85, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, -128, -72, -64, -41,
+ -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, 0, 0, 0, 0, -128, -72, -64, -41, -86, -86, 0, 0, 112, -69, 72, -66,
+ -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
+ -128, -72, -64, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, -80, 1, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -45, 76, 0, 125, -96, -86, 0, 0,
+ 80, 54, -84, -41, -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, 112, 54, -84, -41,
+ -86, -86, 0, 0, -112, -78, -63, -45, -86, -86, 0, 0, -112, 54, -84, -41, -86, -86, 0, 0,
+ -48, -77, -63, -45, -86, -86, 0, 0, -80, 54, -84, -41, -86, -86, 0, 0, -96, -15, -80, -41,
+ -86, -86, 0, 0, 112, -115, -79, -41, -86, -86, 0, 0, 96, 63, -80, -41, -86, -86, 0, 0,
+ -112, -56, -84, -41, -86, -86, 0, 0, 112, 35, -79, -41, -86, -86, 0, 0, -32, 36, -100, -41,
+ -86, -86, 0, 0, 16, -116, -79, -41, -86, -86, 0, 0, -111, 40, 0, 0, 0, 0, 0, 0,
+ 0, 33, -79, -41, -86, -86, 0, 0, -112, -48, -81, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 55, -84, -41, -86, -86, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 101, 114, 115,
+ 105, 111, 110, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ -72, 55, -84, -41, -86, -86, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 67, 108, 117, 115, 116, 101, 114, 79, 117, 116,
+ 112, 117, 116, 0, -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, -8, 55, -84, -41, -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 67, 111, 110, 118, 0, -41,
+ -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ 48, 56, -84, -41, -86, -86, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 112, 114, 101, 99, 105, 115, 105, 111, 110, 95, 99, 111, 110, 102, 105, 103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, 112, 56, -84, -41, -86, -86, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 67, 111, 110, 118, 86, 50,
+ 0, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ -88, 56, -84, -41, -86, -86, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 104, 115, 84, 0, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0,
+ -104, -37, -122, -41, -86, -86, 0, 0, -40, 56, -84, -41, -86, -86, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 104, 115, 84, 0, 0, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, 8, 57, -84, -41,
+ -86, -86, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 112, 114, 101, 102, 101, 114, 114, 101, 100, 95, 101, 108, 101, 109, 101, 110, 116, 95, 116, 121,
+ 112, 101, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ 72, 57, -84, -41, -86, -86, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 67, 117, 115, 116, 111, 109, 67, 97, 108, 108,
+ 86, 50, 0, 0, 0, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, -120, 57, -84, -41, -86, -86, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 99, 107, 101, 110, 100, 95, 99, 111, 110, 102,
+ 105, 103, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ -64, 57, -84, -41, -86, -86, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 99, 97, 108, 108, 95, 116, 97, 114, 103, 101, 116, 95, 110, 97, 109, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, 0, 58, -84, -41, -86, -86, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 104, 97, 115, 95, 115, 105, 100, 101, 95, 101, 102, 102,
+ 101, 99, 116, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ 56, 58, -84, -41, -86, -86, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 111, 112, 101, 114, 97, 110, 100, 95, 100, 116, 121, 112, 101, 115, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, 112, 58, -84, -41,
+ -86, -86, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 114, 101, 115, 117, 108, 116, 95, 100, 116, 121, 112, 101, 115, 0, 0, 0, 48, -4, -121, -41,
+ -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, -88, 58, -84, -41, -86, -86, 0, 0,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 101, 115, 117,
+ 108, 116, 95, 115, 104, 97, 112, 101, 115, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0,
+ -104, -37, -122, -41, -86, -86, 0, 0, -32, 58, -84, -41, -86, -86, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 68, 111,
+ 116, 0, -81, -41, -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, 24, 59, -84, -41, -86, -86, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 68, 111, 116, 86, 50, 0,
+ -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ 80, 59, -84, -41, -86, -86, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 68, 121, 110, 97, 109, 105, 99, 83, 108, 105,
+ 99, 101, 0, -41, -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, -112, 59, -84, -41, -86, -86, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 68, 121, 110, 97, 109, 105,
+ 99, 85, 112, 100, 97, 116, 101, 83, 108, 105, 99, 101, 0, 57, -86, -41, -86, -86, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, -40, 59, -84, -41,
+ -86, -86, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 69, 105, 110, 115, 117, 109, 0, -86, 0, 0, 48, -4, -121, -41,
+ -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, 16, 60, -84, -41, -86, -86, 0, 0,
+ 12, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 71, 97, 116, 104, 101, 114, 0, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0,
+ -104, -37, -122, -41, -86, -86, 0, 0, 72, 60, -84, -41, -86, -86, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 110, 100, 105, 99, 101, 115, 95,
+ 97, 114, 101, 95, 115, 111, 114, 116, 101, 100, 0, 0, 0, 0, 0, 0, 48, -4, -121, -41,
+ -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, -120, 60, -84, -41, -86, -86, 0, 0,
+ 17, 0, 0, 0, 0, 0, 0, 0, 16, -105, -98, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 72, 111, 115, 116, 67, 111, 109, 112, 117, 116, 101, 0, -79, -41, -86, -86, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, -56, 60, -84, -41,
+ -86, -86, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 97, 110, 99, 101, 115, 116, 111, 114, 115, 0, 0, 0, 0, 0, 0, 0, 48, -4, -121, -41,
+ -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, 0, 61, -84, -41, -86, -86, 0, 0,
+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 111, 115, 116,
+ 95, 101, 115, 116, 105, 109, 97, 116, 101, 95, 110, 115, 0, -110, -85, -41, -86, -86, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, 64, 61, -84, -41,
+ -86, -86, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 101, 121, 0, -86, -86, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41,
+ -86, -86, 0, 0, 112, 61, -84, -41, -86, -86, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 114, 101, 99, 118, 95, 107, 101, 121, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ -88, 61, -84, -41, -86, -86, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 115, 101, 110, 100, 95, 107, 101, 121, 0, -81, -85, -41, -86, -86, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0, -32, 61, -84, -41,
+ -86, -86, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 115, 104, 97, 112, 101, 95, 105, 110, 102, 101, 114, 101, 110, 99, 101, 95, 103, 114, 97, 112,
+ 104, 0, 0, 0, 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0,
+ 32, 62, -84, -41, -86, -86, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 116, 112, 117, 95, 99, 111, 114, 101, 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, -4, -121, -41, -86, -86, 0, 0, -104, -37, -122, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_transposed_tensor.h
new file mode 100644
index 00000000..fbb13c26
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/rhs_transposed_tensor.h
@@ -0,0 +1,188 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_1_s8_rhs_transposed_tensor[3456] = {
+ 88, 64, 16, -32, 80, 33, 96, 0, -112, -128, -64, 0, -64, 80, 64, 3, -79, 49, 67,
+ 79, -66, 0, 0, 0, 0, 48, 0, 79, 50, 94, 9, 0, -63, -84, -100, -85, -85, 0,
+ 0, 0, 0, -84, 0, -78, -84, -81, -78, 0, -45, -41, -41, -41, -41, 0, 0, 0, 0,
+ -41, 0, -41, -41, -41, -41, 0, -86, -86, -86, -86, -86, 0, 0, 0, 0, -86, 0, -86,
+ -86, -86, -86, 0, -86, -86, -86, -86, -86, 0, 0, 0, 0, -86, 0, -86, -86, -86, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, -95, 0, 112,
+ 80, 48, 116, 48, 116, -128, -112, 4, 0, 112, -16, 49, -122, 2, 0, -69, -66, 0, 102,
+ 0, 102, 0, -34, 0, 0, 14, 121, -84, -79, 0, 0, 72, -85, 0, 46, 0, 46, 0,
+ 17, 0, 0, -96, -90, -41, -41, 0, 0, -66, -41, 0, 88, 0, 88, 0, -102, 0, 0,
+ -41, -41, -86, -86, 0, 0, -1, -86, 0, 100, 0, 100, 0, -1, 7, 0, -86, -86, -86,
+ -86, 0, 0, -1, -86, 0, 105, 0, 105, 0, -1, 0, 0, -86, -86, 0, 0, 0, 0,
+ 0, 0, 0, 118, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 121, 0, 121, 0, 0, 0, 0, 0, 0, -48, 1, -128, 65, 0, 112, 83, 0, 3, 0,
+ 115, 16, -80, -128, 24, -127, -77, 0, 93, 0, 0, -69, -19, 0, -19, 0, 72, -105, -17,
+ 76, -122, 0, -63, 0, -82, 0, 0, 72, 6, 0, 6, 0, 1, -98, -90, -100, -79, 0,
+ -45, 0, -41, 0, 0, -66, 125, 0, 125, 0, 125, -41, -41, -41, -41, 0, -86, 0, -86,
+ 0, 0, -1, -96, 0, -96, 0, -96, -86, -86, -86, -86, 0, -86, 0, -86, 0, 0, -1,
+ -86, 0, -86, 0, -86, -86, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 97, 0, 112, 80, -128, 80, -128, 0, 48, -96, -112, 48, -64, 16,
+ 112, 104, 0, 0, -69, 94, 0, -79, 50, 0, -7, 42, 121, 0, 49, 21, 79, -82, 0,
+ 0, 72, -82, 0, -63, -84, 0, -90, -83, -100, 0, -84, 0, -78, -41, 0, 0, -66, -41,
+ 0, -45, -41, 0, -41, -41, -41, 0, -41, 0, -41, -86, 0, 0, -1, -86, 0, -86, -86,
+ 0, -86, -86, -86, 0, -86, 0, -86, -86, 0, 0, -1, -86, 0, -86, -86, 0, -86, -86,
+ -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112,
+ 80, 65, 0, 112, 3, 96, -48, -64, 0, 97, 116, 48, 116, -128, -104, -68, 94, 0, 0,
+ -69, 113, 50, -77, 51, 0, 0, 102, 0, 102, 0, -34, -85, -82, 0, 0, 72, 28, -84,
+ -63, -78, 0, 0, 46, 0, 46, 0, 17, -41, -41, 0, 0, -66, 125, -41, -45, -41, 0,
+ 0, 88, 0, 88, 0, -102, -86, -86, 0, 0, -1, -96, -86, -86, -86, 0, 0, 108, 0,
+ 108, 0, -1, -86, -86, 0, 0, -1, -86, -86, -86, -86, 0, 0, 97, 0, 97, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 65, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 108, 0, 0, 0, 112, 80, 33, -64, 64,
+ 88, -96, -112, 48, -128, 108, -77, 108, 83, 16, 0, -69, 94, 0, 1, 50, -79, 50, 4,
+ 31, 7, 82, -115, 82, 78, -105, 0, 72, -82, 0, 0, -84, -63, -84, -83, -79, -82, 101,
+ 50, 101, 1, -98, 0, -66, -41, 0, 0, -41, -45, -41, -41, -41, -41, 100, 125, 100, 125,
+ -41, 0, -1, -86, 0, 0, -86, -86, -86, -86, -86, -86, 117, -96, 117, -96, -86, 0, -1,
+ -86, 0, 0, -86, -86, -86, -86, -86, -86, 99, -86, 99, -86, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 101, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 64, 2, -16, 33, 64, 112, 64, -128, 80,
+ -128, -56, 80, 0, -48, 52, 0, 50, 0, 124, 0, 0, -69, 53, 0, -79, 52, -77, 53,
+ 0, 57, -84, 0, -80, 0, -100, 0, 0, 72, -84, 0, -63, -84, -63, -84, 0, -90, -41,
+ 0, -41, 0, -41, 0, 0, -66, -41, 0, -45, -41, -45, -41, 0, -41, -86, 0, -86, 0,
+ -86, 0, 0, -1, -86, 0, -86, -86, -86, -86, 0, -86, -86, 0, -86, 0, -86, 0, 0,
+ -1, -86, 0, -86, -86, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 0, 16, 0, 64, 32, 0, 112, 67, 96, 80, 64, 0, -95, 0,
+ 0, 0, -100, -68, -82, 53, 0, 0, -69, -41, 52, -78, 52, 0, 57, 0, 0, 0, -100,
+ -80, -79, -84, 0, 0, 72, 28, -84, -63, -84, 0, 0, 0, 0, 0, -41, -41, -41, -41,
+ 0, 0, -66, 125, -41, -45, -41, 0, 0, 0, 7, 0, -86, -86, -86, -86, 0, 0, -1,
+ -96, -86, -86, -86, 0, 0, 0, 0, 0, -86, -86, -86, -86, 0, 0, -1, -86, -86, -86,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, -127, -36, 112, -93, 33, 16, 32, 88, 32, -48, 0, 0, 0, 0, 0, -122, 0, 29,
+ -69, -44, 0, 22, 53, -79, 52, -77, 0, -118, 0, 0, 0, -79, 0, 51, 72, 28, 0,
+ 0, -84, -63, -84, -63, 0, -65, 0, 0, 0, -41, 0, -110, -66, 125, 0, 0, -41, -45,
+ -41, -45, 0, -41, 0, 0, 0, -86, 0, -1, -1, -96, 0, 0, -86, -86, -86, -86, 0,
+ -86, 0, 0, 0, -86, 0, -1, -1, -86, 0, 0, -86, -86, -86, -86, 0, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 112, -45, 111, -13, 111, 3,
+ 16, 0, 112, 64, -127, 0, 112, -128, 33, 14, -69, 79, 97, -43, 97, 76, -105, 0, 61,
+ -122, 0, 0, -69, -72, 0, -80, 72, 1, 100, 28, 100, 1, -98, 0, -79, -79, 0, 0,
+ 72, -64, 0, -41, -66, 125, 99, 125, 99, 125, -41, 0, -41, -41, 0, 0, -66, -41, 0,
+ -86, -1, -96, 97, -96, 97, -96, -86, 0, -86, -86, 0, 0, -1, -86, 0, -86, -1, -86,
+ 115, -86, 115, -86, -86, 0, -86, -86, 0, 0, -1, -86, 0, 0, 0, 0, 116, 0, 116,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 72, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 81, 32, 0, -128, -96, -80, -80, -48, 0, -96, 10, -112,
+ 97, 0, 112, -128, 0, 0, 0, 0, 51, 0, 79, 54, 0, -42, 0, -68, 0, 0, -69,
+ -72, 0, 0, 0, 0, -84, 0, -78, -84, 0, -79, 0, -87, 0, 0, 72, -64, 0, 0,
+ 0, 0, -41, 0, -41, -41, 0, -41, 0, -41, 0, 0, -66, -41, 0, 0, 0, 0, -86,
+ 0, -86, -86, 0, -86, 0, -86, 0, 0, -1, -86, 0, 0, 0, 0, -86, 0, -86, -86,
+ 0, -86, 0, -86, 0, 0, -1, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 116, 48, 116, -128, -96, 4, 112, 48, -64, -64, -128, 65, 0, 112, -82,
+ 0, 102, 0, 102, 0, -34, 0, -4, 75, 55, -10, -72, 0, 0, -69, -90, 0, 46, 0,
+ 46, 0, 17, 0, -85, -90, -80, -85, -64, 0, 0, 72, -41, 0, 88, 0, 88, 0, -102,
+ 0, -41, -41, -41, -41, -41, 0, 0, -66, -86, 0, 108, 0, 108, 0, -1, 7, -86, -86,
+ -86, -86, -86, 0, 0, -1, -86, 0, 97, 0, 97, 0, -1, 0, -86, -86, -86, -86, -86,
+ 0, 0, -1, 0, 0, 66, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 114, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 80, -112,
+ -80, 96, -32, 0, 0, 0, -104, 16, 112, -8, 116, -104, 0, 1, 54, -78, 54, 63, 36,
+ 33, 0, 0, -37, -105, 117, 55, 102, -37, 0, 0, -84, -63, -84, -80, -100, -79, 0, 0,
+ -122, -98, 116, -84, 46, -122, 0, 0, -41, -45, -41, -41, -41, -41, 0, 0, -41, -41, 0,
+ -41, 88, -41, 0, 0, -86, -86, -86, -86, -86, -86, 0, 0, -86, -86, -86, -86, 108, -86,
+ 0, 0, -86, -86, -86, -86, -86, -86, 0, 0, -86, -86, -86, -86, 97, -86, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, -128, 88, -112, -96, -112, 16, -112, -120,
+ 118, -72, 116, 48, 10, 110, 48, 112, 0, -79, 54, -15, -56, -116, -48, 55, 101, 55, 102,
+ -4, 0, 118, 56, 114, 0, -63, -84, -80, -84, -79, -81, -84, 114, -84, 46, -121, 0, 0,
+ -84, 101, 0, -45, -41, -41, -41, -41, -41, -41, 115, -41, 88, -41, 0, -41, -41, 99, 0,
+ -86, -86, -86, -86, -86, -86, -86, 105, -86, 108, -86, 0, -86, -86, 105, 0, -86, -86, -86,
+ -86, -86, -86, -86, 111, -86, 97, -86, 0, -86, -86, 115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 110, 0, 67, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 108, 0, 0, 0, 0, 111, -45, 112, -48, 112, 112, -111, 0, 7, 48, 19, 117, -104, 16,
+ 48, 16, 110, 76, 54, -77, -115, 35, 40, 0, 0, -4, 0, 115, -37, -105, -4, 0, 95,
+ 0, -84, -63, -79, -79, 0, 0, 0, -121, 0, 116, -122, -98, -121, 0, 99, 125, -41, -45,
+ -41, -41, 0, 0, 0, -41, 0, 101, -41, -41, -41, 0, 111, -96, -86, -86, -86, -86, 0,
+ 0, 0, -86, 0, 114, -86, -86, -86, 0, 110, -86, -86, -86, -86, -86, 0, 0, 0, -86,
+ 0, 79, -86, -86, -86, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0,
+ 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0,
+ 103, 0, 112, 116, -104, 0, -104, 0, -104, 0, 116, 72, 116, 48, 14, 99, -64, 0, 56,
+ 102, -37, 0, -37, 0, -37, 0, 95, 57, 102, -4, 0, 111, 57, 0, -84, 46, -122, 0,
+ -122, 0, -122, 0, 116, -84, 46, -121, 0, 110, -84, 0, -41, 88, -41, 0, -41, 0, -41,
+ 0, 121, -41, 88, -41, 0, 102, -41, 0, -86, 108, -86, 0, -86, 0, -86, 0, 112, -86,
+ 108, -86, 0, 105, -86, 0, -86, 97, -86, 0, -86, 0, -86, 0, 101, -86, 97, -86, 0,
+ 103, -86, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0,
+ 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 48, 12, 110, -88,
+ 76, -40, 82, 8, 112, 48, 18, 115, -104, 0, 48, 16, -4, 0, 118, 56, 104, 56, 104,
+ 57, 114, -4, 0, 116, -37, 0, -4, 0, -121, 0, 86, -84, 115, -84, 115, -84, 101, -121,
+ 0, 111, -122, 0, -121, 0, -41, 0, 50, -41, 84, -41, 84, -41, 102, -41, 0, 109, -41,
+ 0, -41, 0, -86, 0, 0, -86, 0, -86, 0, -86, 101, -86, 0, 67, -86, 0, -86, 0,
+ -86, 0, -86, -86, -86, -86, 0, -86, 114, -86, 0, 97, -86, 0, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 114, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 101, 0, 0, 108, 0, 0, 0, 0, -104, 16, 48, 4, 48, 4, 48, 22, 100,
+ -104, 16, 86, -120, 98, -104, 0, -37, -105, -4, 0, -4, 0, -4, 0, 95, -37, -105, 50,
+ 57, 97, -37, 0, -122, -98, -121, 0, -121, 0, -121, 0, 101, -122, -98, 0, -84, 99, -122,
+ 0, -41, -41, -41, 0, -41, 0, -41, 0, 108, -41, -41, 0, -41, 107, -41, 0, -86, -86,
+ -86, 0, -86, 0, -86, 0, 101, -86, -86, 0, -86, 101, -86, 0, -86, -86, -86, 0, -86,
+ 0, -86, 0, 109, -86, -86, 0, -86, 110, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 101, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0,
+ 0, 0, 95, 0, 0, 99, 48, 15, 95, 56, 111, -104, 0, 48, 13, 104, -32, 116, -104,
+ 16, 48, 97, -4, 0, 101, 58, 112, -37, 0, -4, 0, 97, 58, 102, -37, -105, -4, 108,
+ -121, 0, 102, -84, 101, -122, 0, -121, 0, 112, -84, 46, -122, -98, -121, 108, -41, 0, 102,
+ -41, 114, -41, 0, -41, 0, 101, -41, 88, -41, -41, -41, 95, -86, 0, 101, -86, 97, -86,
+ 0, -86, 0, 115, -86, 108, -86, -86, -86, 116, -86, 0, 99, -86, 110, -86, 0, -86, 0,
+ 0, -86, 97, -86, -86, -86, 97, 0, 0, 116, 0, 100, 0, 0, 0, 0, 0, 0, 68,
+ 0, 0, 0, 114, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0,
+ 103, -104, 0, 48, 14, 100, 112, 114, -104, 0, 48, 9, 116, 24, 116, -104, 101, -37, 0,
+ -4, 0, 116, 58, 101, -37, 0, -4, 0, 0, 59, 102, -37, 116, -122, 0, -121, 0, 121,
+ -84, 115, -122, 0, -121, 0, -81, -84, 46, -122, 95, -41, 0, -41, 0, 112, -41, 117, -41,
+ 0, -41, 0, -41, -41, 88, -41, 110, -86, 0, -86, 0, 101, -86, 108, -86, 0, -86, 0,
+ -86, -86, 108, -86, 97, -86, 0, -86, 0, 115, -86, 116, -86, 0, -86, 0, -86, -86, 97,
+ -86, 109, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 68, 0, 101, 0,
+ 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 104, -104, 0,
+ 48, 13, 116, -88, 114, -104, 16, 48, 11, 116, 80, 0, 58, 97, -37, 0, -4, 0, 121,
+ 58, 101, -37, -105, -4, 0, 86, 59, 0, -84, 115, -122, 0, -121, 0, 112, -84, 115, -122,
+ -98, -121, 0, 50, -84, 0, -41, 95, -41, 0, -41, 0, 101, -41, 117, -41, -41, -41, 0,
+ 0, -41, 0, -86, 115, -86, 0, -86, 0, 115, -86, 108, -86, -86, -86, 0, -86, -86, 0,
+ -86, 105, -86, 0, -86, 0, 0, -86, 116, -86, -86, -86, 0, -86, -86, 0, 0, 100, 0,
+ 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0,
+ 0, 0, 115, 0, 0, 0, 0, 0, 0, 18, 110, -104, 16, 97, -104, 16, 48, 12, 116,
+ 72, 105, 48, 17, 115, -104, 0, 97, -37, -105, 116, -37, -105, -4, 0, 104, 60, 110, -4,
+ 0, 116, -37, 0, 109, -122, -98, 101, -122, -98, -121, 0, 101, -84, 100, -121, 0, 67, -122,
+ 0, 105, -41, -41, 83, -41, -41, -41, 0, 114, -41, 105, -41, 0, 111, -41, 0, 99, -86,
+ -86, 108, -86, -86, -86, 0, 0, -86, 99, -86, 0, 109, -86, 0, 83, -86, -86, 105, -86,
+ -86, -86, 0, -86, -86, 101, -86, 0, 112, -86, 0, 108, 0, 0, 99, 0, 0, 0, 0,
+ 0, 0, 115, 0, 0, 117, 0, 0, 105, 0, 0, 101, 0, 0, 0, 0, 0, 0, 95,
+ 0, 0, 116, 0, 16, 99, -112, 116, 0, -40, 116, -104, 16, 48, 18, 97, -104, 16, 101,
+ -56, -105, 101, 59, 102, 57, 59, 102, -37, -105, -4, 0, 114, -37, -105, 0, 60, -98, 0,
+ -84, 46, -86, -84, 46, -122, -98, -121, 0, 101, -122, -98, -79, -84, -41, -41, -41, 88, -41,
+ -41, 88, -41, -41, -41, 0, 95, -41, -41, -41, -41, -86, -86, -86, 108, -86, -86, 108, -86,
+ -86, -86, 0, 115, -86, -86, -86, -86, -86, -86, -86, 97, -86, -86, 97, -86, -86, -86, 0,
+ 111, -86, -86, -86, -86, 0, 0, 0, 68, 0, 0, 69, 0, 0, 0, 0, 114, 0, 0,
+ 0, 0, 0, 0, 0, 121, 0, 0, 105, 0, 0, 0, 0, 116, 0, 0, 0, 0, 116,
+ 48, 24, 110, 48, 12, 110, 16, 116, -104, 0, 101, -120, 116, 48, 9, 102, -4, 0, 97,
+ -4, 0, 115, 60, 102, -37, 0, 100, 60, 102, -4, 0, 46, -121, 0, 109, -121, 0, 117,
+ -84, 46, -122, 0, 0, -84, 46, -121, 0, 88, -41, 0, 105, -41, 0, 109, -41, 88, -41,
+ 0, 0, -41, 88, -41, 0, 108, -86, 0, 99, -86, 0, 0, -86, 108, -86, 0, 0, -86,
+ 108, -86, 0, 97, -86, 0, 85, -86, 0, -86, -86, 97, -86, 0, 0, -86, 97, -86, 0,
+ 68, 0, 0, 112, 0, 0, 0, 0, 71, 0, 0, 0, 0, 72, 0, 0, 121, 0, 0,
+ 100, 0, 0, 0, 0, 97, 0, 0, 0, 0, 111, 0, 0, 0, 48, 16, 105, -104, 0,
+ -104, 0, 48, 8, 0, -32, 115, 48, 8, 0, 0, -4, 0, 109, -37, 0, -37, 0, -4,
+ 0, -81, 61, 104, -4, 0, 0, 0, -121, 0, 97, -122, 0, -122, 0, -121, 0, -85, -84,
+ 97, -121, 0, 0, 0, -41, 0, 116, -41, 0, -41, 0, -41, 0, -41, -41, 112, -41, 0,
+ 0, 0, -86, 0, 101, -86, 0, -86, 0, -86, 0, -86, -86, 101, -86, 0, 0, 0, -86,
+ 0, 95, -86, 0, -86, 0, -86, 0, -86, -86, 95, -86, 0, 0, 0, 0, 0, 110, 0,
+ 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0,
+ 0, 0, 0, 0, 110, 0, 0, 0, 97, -104, 0, 0, 64, 107, 112, 114, -104, 0, 48,
+ 21, 102, -104, 0, 48, 110, -37, 0, -110, 61, 101, 61, 101, -37, 0, -4, 0, 101, -37,
+ 0, -4, 99, -122, 0, -85, -84, 121, -84, 99, -122, 0, -121, 0, 114, -122, 0, -121, 101,
+ -41, 0, -41, -41, 0, -41, 118, -41, 0, -41, 0, 101, -41, 0, -41, 115, -86, 0, -86,
+ -86, -86, -86, 95, -86, 0, -86, 0, 110, -86, 0, -86, 116, -86, 0, -86, -86, -86, -86,
+ 107, -86, 0, -86, 0, 99, -86, 0, -86, 111, 0, 0, 0, 0, 0, 0, 101, 0, 0,
+ 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 95,
+ 0, 0, 0, 115, 0, 99, 48, 3, 48, 8, 0, -88, 115, -104, 0, 103, 32, 116, -104,
+ 0, 61, 111, -4, 0, -4, 0, 0, 61, 101, -37, 0, 114, 62, 112, -37, 0, -84, 115,
+ -121, 0, -121, 0, 0, -84, 110, -122, 0, 97, -84, 117, -122, 0, -41, 116, -41, 0, -41,
+ 0, 0, -41, 100, -41, 0, 112, -41, 95, -41, 0, -86, 95, -86, 0, -86, 0, 0, -86,
+ 95, -86, 0, 104, -86, 99, -86, 0, -86, 101, -86, 0, -86, 0, 0, -86, 107, -86, 0,
+ 0, -86, 111, -86, 0, 0, 115, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 114,
+ 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 101, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_1_s8/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/config_data.h
new file mode 100644
index 00000000..0d253ef8
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_2_S16_LHS_BATCH 3
+#define BATCH_MATMUL_2_S16_LHS_HEIGHT 3
+#define BATCH_MATMUL_2_S16_LHS_ROWS 32
+#define BATCH_MATMUL_2_S16_LHS_COLS 16
+#define BATCH_MATMUL_2_S16_RHS_BATCH 1
+#define BATCH_MATMUL_2_S16_RHS_HEIGHT 1
+#define BATCH_MATMUL_2_S16_RHS_ROWS 24
+#define BATCH_MATMUL_2_S16_RHS_COLS 16
+#define BATCH_MATMUL_2_S16_ADJ_X 0
+#define BATCH_MATMUL_2_S16_ADJ_Y 1
+#define BATCH_MATMUL_2_S16_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_2_S16_DST_SIZE 6912
+#define BATCH_MATMUL_2_S16_OUTPUT_BATCH 3
+#define BATCH_MATMUL_2_S16_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_2_S16_OUTPUT_ROWS 32
+#define BATCH_MATMUL_2_S16_OUTPUT_COLS 24
+#define BATCH_MATMUL_2_S16_LHS_OFFSET 0
+#define BATCH_MATMUL_2_S16_RHS_OFFSET 0
+#define BATCH_MATMUL_2_S16_OUTPUT_OFFSET 0
+#define BATCH_MATMUL_2_S16_ACTIVATION_MIN -32768
+#define BATCH_MATMUL_2_S16_ACTIVATION_MAX 32767
+#define BATCH_MATMUL_2_S16_OUTPUT_MULTIPLIER 1890456117
+#define BATCH_MATMUL_2_S16_OUTPUT_SHIFT -18
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_input_tensor.h
new file mode 100644
index 00000000..0b352f18
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_input_tensor.h
@@ -0,0 +1,336 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_2_s16_lhs_input_tensor[4608] = {
+ -17136, 30, 0, 0, -15305, 7423, 30799, 3462, 24, 11780, 29184, 24937, -17180, 30,
+ 0, 0, -1, -1, -1, 32767, 24, 11780, 46, 0, -15305, 7423, 30799, 3462,
+ 24, 11780, -256, 32767, -17180, 30, 0, 0, 4853, 1570, 2407, 24082, 24, 11780,
+ 46, 26222, -17129, 30, 0, 0, -1, -1, -1, 32767, 56, 30216, 29281, 24937,
+ 27746, 29541, 25646, 29793, 11617, 12336, 12336, 11568, 26223, 12333, 12336, 12592, 28672, 26994,
+ 29806, 28718, 98, 29163, -21856, 0, -17136, 30, 0, 0, -30445, -13939, 27030, 32322,
+ 32, 24836, 29555, 29797, 115, -9404, -21846, 0, -17128, 30, 0, 0, -1, -1,
+ -1, 32767, 40, 29448, 30305, 25701, 27999, 25711, 27749, 28718, 98, -9404, -21846, 0,
+ 25552, -10434, -21846, 0, 28560, -9404, -21846, 0, -1800, -9427, -21846, 0, 2, 0,
+ 0, 0, 6016, 14720, 14976, 7735, 545, 0, 0, 0, -20176, -9400, -21846, 0,
+ 3024, -9387, -21846, 0, 0, 0, 0, 0, 65, 0, 0, 0, -18368, -9387,
+ -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ -18368, -9387, -21846, 0, -17552, -18877, -1, 0, 96, 0, 0, 0, 48, 0,
+ 0, 0, 982, 29163, -21856, 0, 0, 0, 0, 0, 26228, 20526, 25697, 12886,
+ 0, 0, 0, 0, 144, 0, 0, 0, 48, 0, 0, 0, 31414, 29176,
+ -21856, 0, 28368, -9404, -21846, 0, 26228, 20526, 25697, 12886, 0, 0, 0, 0,
+ 192, 0, 0, 0, 128, 0, 0, 0, -18409, 29176, -21856, 0, -15120, -9423,
+ -21846, 0, -11312, -28148, -1, 0, -31552, -9410, -21846, 0, 28736, -9404, -21846, 0,
+ 3, 0, 3, 0, 24912, -10434, -21846, 0, 28816, -9404, -21846, 0, 24920, -10434,
+ -21846, 0, 28848, -9404, -21846, 0, 25552, -10434, -21846, 0, 28880, -9404, -21846, 0,
+ -1784, -9427, -21846, 0, 2, 0, 0, 0, 9856, -32724, -32640, -32640, 225, 0,
+ 0, 0, 18208, -9402, -21846, 0, 3536, -9387, -21846, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, -19920, -9400, -21846, 0, -17552, -18877, -1, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, -19920, -9400, -21846, 0, -17552, -18877, -1, 0,
+ 96, 0, 0, 0, 64, 0, 0, 0, -18025, 29176, -21856, 0, 0, 0,
+ 0, 0, 26228, 20526, 29281, 27745, 25964, 17516, 28281, 28001, 25449, 29779, 29801, 26723,
+ 9984, 3851, -32640, 9600, 160, 0, 0, 0, 64, 0, 0, 0, -17833, 29176,
+ -21856, 0, 28688, -9404, -21846, 0, 26228, 20526, 29281, 27745, 25964, 17516, 28281, 28001,
+ 25449, 29779, 29801, 26723, -32768, -32760, -32640, 21120, 736, 0, 0, 0, 128, 0,
+ 0, 0, -14809, 29161, -21856, 0, -15048, -9423, -21846, 0, -11304, -28148, -1, 0,
+ -31552, -9410, -21846, 0, 29296, -9404, -21846, 0, 4, 0, 7, 0, -32660, 11084,
+ 32327, 19000, -32640, -32640, 15631, 19989, -32745, 27520, -32741, 26752, 9729, -32705, 8320, -32705,
+ 3712, -32745, 7040, -32640, -32753, 29824, 13089, -32705, -1768, -9427, -21846, 0, 8, 0,
+ 0, 0, -32640, 12627, -32659, 3358, 129, 0, 0, 0, -23248, -9444, -21846, 0,
+ 18736, -9404, -21846, 0, 0, 0, 0, 0, 97, 0, 0, 0, 6256, -9387,
+ -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+ 6256, -9387, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 6256, -9387, -21846, 0, -17552, -18877, -1, 0, 992, 0, 0, 0,
+ 128, 0, 0, 0, 20967, 29167, -21856, 0, 29168, -9404, -21846, 0, 24912, -10434,
+ -21846, 0, 29200, -9404, -21846, 0, 24920, -10434, -21846, 0, 29232, -9404, -21846, 0,
+ 25552, -10434, -21846, 0, 29264, -9404, -21846, 0, 22, 0, 0, 0, 944, -9410,
+ -21846, 0, 15888, -9495, -21846, 0, 16952, -9403, -21846, 0, -15264, -9426, -21846, 0,
+ 29312, -9404, -21846, 0, 29424, -9404, -21846, 0, 97, 0, 0, 0, -4992, -9423,
+ -21846, 0, -22976, -9410, -21846, 0, 26228, 20526, 29281, 27745, 25964, 19820, 28769, 24900,
+ 48, 0, 0, 0, 48, 0, 0, 0, 4823, 29075, -21856, 0, 29040, -9404,
+ -21846, 0, 26228, 20526, 29281, 27745, 25964, 19820, 28769, 24900, 1216, 0, 0, 0,
+ 128, 0, 0, 0, -16377, 29161, -21856, 0, -14936, -9423, -21846, 0, -11296, -28148,
+ -1, 0, -31552, -9410, -21846, 0, 29776, -9404, -21846, 0, 4, 0, 7, 0,
+ 29584, -9404, -21846, 0, 4, 0, 0, 0, 25932, 29555, -22016, 0, 24728, -9403,
+ -21846, 0, 15544, -9495, -21846, 0, 24672, -9403, -21846, 0, -1704, -9427, -21846, 0,
+ 8, 0, 0, 0, 29576, -9404, -21846, 0, 129, 0, 0, 0, -23376, -9408,
+ -21846, 0, -8000, -9387, -21846, 0, 0, 0, 0, 0, 97, 0, 0, 0,
+ 8000, -9405, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 65, 0,
+ 0, 0, 8000, -9405, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, 8000, -9405, -21846, 0, -17552, -18877, -1, 0, 1472, 0,
+ 0, 0, 128, 0, 0, 0, 18567, 29084, -21856, 0, 29648, -9404, -21846, 0,
+ 24912, -10434, -21846, 0, 29680, -9404, -21846, 0, 24920, -10434, -21846, 0, 29712, -9404,
+ -21846, 0, 25552, -10434, -21846, 0, 29744, -9404, -21846, 0, -15264, -9426, -21846, 0,
+ 29792, -9404, -21846, 0, 29872, -9404, -21846, 0, 7, 0, 0, 0, 26963, 28007,
+ 26991, 100, 16080, -9495, -21846, 0, 16624, -9495, -21846, 0, 417, 0, 0, 0,
+ -12336, -9405, -21846, 0, -23232, -9406, -21846, 0, 26228, 20526, 29281, 27745, 25964, 19820,
+ 28769, 24900, 48, 0, 0, 0, 48, 0, 0, 0, 18935, 29084, -21856, 0,
+ 29520, -9404, -21846, 0, 26228, 20526, 29281, 27745, 25964, 19820, 28769, 24900, 96, 0,
+ 0, 0, 128, 0, 0, 0, 4487, 29167, -21856, 0, -14816, -9423, -21846, 0,
+ -11288, -28148, -1, 0, -31552, -9410, -21846, 0, 30048, -9404, -21846, 0, 2, 0,
+ 3, 0, 24880, -10434, -21846, 0, 30128, -9404, -21846, 0, 25552, -10434, -21846, 0,
+ 30160, -9404, -21846, 0, 30096, -9404, -21846, 0, 12, 0, 0, 0, -1640, -9427,
+ -21846, 0, 4, 0, 0, 0, -7248, -9408, -21846, 0, 193, 0, 0, 0,
+ 18208, -9402, -21846, 0, 14320, -9426, -21846, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 6256, -9423, -21846, 0, -17552, -18877, -1, 0, 64, 0, 0, 0,
+ 64, 0, 0, 0, -29577, 29059, -21856, 0, 0, 0, 0, 0, 26228, 20526,
+ 29281, 28001, 29797, 29285, 31337, 25701, 29268, 28277, 24931, 25972, 20068, 29295, 24941, 108,
+ 128, 0, 0, 0, 64, 0, 0, 0, -29641, 29059, -21856, 0, 30000, -9404,
+ -21846, 0, 26228, 20526, 29281, 28001, 29797, 29285, 31337, 25701, 29268, 28277, 24931, 25972,
+ 20068, 29295, 24941, 108, 2144, 0, 0, 0, 128, 0, 0, 0, -30825, 29111,
+ -21856, 0, 0, 0, 3, 0, -32272, 15389, -1, 0, -32264, 15389, -1, 0,
+ -32248, 15389, -1, 0, -30524, 15389, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 0, 0, 0, 26499, 15957, -20757, 6198, -17568, -9408,
+ -21846, 0, 145, 0, 0, 0, 7520, -9446, -21846, 0, -11552, -9403, -21846, 0,
+ 16860, 15410, -1, 0, 16868, 15410, -1, 0, 14472, 15410, -1, 0, 16896, 15410,
+ -1, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -21595, 15957, -20757, 6198, 5288, -30174, -1, 0, 5292, -30174, -1, 0,
+ 2416, 0, 0, 0, 128, 0, 0, 0, -13449, 29167, -21856, 0, 0, 0,
+ 2, 0, -32272, 15389, -1, 0, -32264, 15389, -1, 0, -32248, 15389, -1, 0,
+ -30524, 15389, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 0, 0, 0, 26498, 15957, -20757, 6198, 2544, 0, 0, 0, 14352, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 18432, 0, 0, 0, 0, 0,
+ 0, 0, 30144, -9544, -21846, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 1536, 0, 0, 0, 0, 0,
+ 0, 0, 30036, -9544, -21846, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 27648, 0, 0, 0, 0, 0,
+ 0, 0, 29964, -9544, -21846, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 18432, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 1536, 0, 0, 0, 0, 0,
+ 0, 0, -28235, 15373, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 26944, -9399, -21846, 0, -15904, -9397, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -3672, -9462, -21846, 0, 31904, -9404, -21846, 0, 24, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30022, 25971, 16996, 29793, 26723, 28494,
+ 28018, 29255, 25697, 12886, -28416, -9401, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, 31976, -9404, -21846, 0, 24, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 30022, 25971, 16996, 29793, 26723, 28494, 28018, 29255, 25697, 13142, 19712, -30895,
+ -1, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32048, -9404, -21846, 0,
+ 20, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30022, 25971, 16996, 29793,
+ 26723, 28494, 28018, 12886, -256, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0,
+ 32112, -9404, -21846, 0, 20, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879,
+ 30022, 25971, 16996, 29793, 26723, 28494, 28018, 13142, -256, 0, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, 32176, -9404, -21846, 0, 10, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 24903, 26740, 29285, -256, -1, -1, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, 32232, -9404, -21846, 0, 12, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 24903, 26740, 29285, 12886, -256, 0, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, 32288, -9404, -21846, 0, 16, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 29255, 24933, 25972, 17778, 30065, 27745, 0, 0, 0, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32352, -9404, -21846, 0, 11, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 29255, 24933, 25972, 114, -21846, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32408, -9404, -21846, 0, 20, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 26952, 29811, 26479, 24946, 21357, 28021,
+ 24941, 31090, -256, -1, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32472, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28488, 29811,
+ 28483, 29550, 116, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32528, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 18527, 29551,
+ 21108, 25445, 118, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32584, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 18527, 29551,
+ 21364, 28261, 100, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32640, -9404,
+ -21846, 0, 12, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 25673, 28261,
+ 26996, 31092, -256, -1, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32696, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 25673, 28261,
+ 26996, 31092, 78, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, 32752, -9404,
+ -21846, 0, 11, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 26441, 28001,
+ 24941, 99, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -32728, -9404,
+ -21846, 0, 10, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 26441, 28001,
+ 24941, 0, 0, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -32672, -9404,
+ -21846, 0, 8, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 27977, 26465,
+ -22272, -9433, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -32616, -9404,
+ -21846, 0, 18, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 27977, 30061,
+ 24948, 27746, 17253, 28271, 29811, -9472, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -32552, -9404, -21846, 0, 11, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 28233, 18294, 24946, 100, -1, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -32496, -9404, -21846, 0, 17, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 25932, 27489, 21113, 27749, 18293, 24946, 100, 0, 0, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32432, -9404, -21846, 0, 13, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 25932, 27489, 21113, 27749, 117, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32376, -9404, -21846, 0, 13, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 25932, 29555, 28997, 24949, 108, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32320, -9404, -21846, 0, 8, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 25932, 29555, -29696, -9407, -21846, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32264, -9404, -21846, 0, 14, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 28492, 26983, 24931, 16748, 25710, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32208, -9404, -21846, 0, 14, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 28492, 26983, 24931, 20076, 29807, -256, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32152, -9404, -21846, 0, 13, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 28492, 26983, 24931, 20332, 114, 0, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -32096, -9404, -21846, 0, 7, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 28492, 103, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -32048, -9404, -21846, 0, 12, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 28492, 28783, 28483, 25710, -22016, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31992, -9404, -21846, 0, 10, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 24909, 19828, 27765, -1280, -1, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31936, -9404, -21846, 0, 11, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 24909, 27000, 30061, 109, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31880, -9404, -21846, 0, 7, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 24909, 120, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31832, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24909, 20600,
+ 28527, 13164, 68, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31776, -9404,
+ -21846, 0, 15, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24909, 20600,
+ 28527, 18284, 24946, 100, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31720, -9404,
+ -21846, 0, 11, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24909, 20600,
+ 28527, 108, 0, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31664, -9404,
+ -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24909, 20600,
+ 28527, 22124, 50, -1, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31608, -9404,
+ -21846, 0, 21, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24909, 20600,
+ 28527, 22380, 29801, 16744, 26482, 24941, 120, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31544, -9404, -21846, 0, 8, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 25933, 28257, 0, 0, 0, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31488, -9404, -21846, 0, 9, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 25933, 26482, 101, -9405, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31432, -9404, -21846, 0, 11, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 26957, 26990, 30061, 109, -1, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31376, -9404, -21846, 0, 7, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 26957, 110, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31328, -9404,
+ -21846, 0, 17, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 26957, 29298,
+ 29295, 24912, 18276, 24946, 100, 24280, 119, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31264, -9404, -21846, 0, 13, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 26957, 29298, 29295, 24912, 100, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -31208, -9404, -21846, 0, 7, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 28493, 100, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31160, -9404,
+ -21846, 0, 7, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30029, 108,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31112, -9404, -21846, 0, 12, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30029, 20076, 20079, 28257, -22016, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -31056, -9404, -21846, 0, 7, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 25934, 103, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, -31008, -9404, -21846, 0, 17, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 25934, 29816, 29769, 29285, 29793, 28521, 110, -6825, -21846, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30944, -9404, -21846, 0, 8, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28494, 28751, -4096, -1, -1, -1,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30888, -9404, -21846, 0, 12, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28494, 17780, 30065, 27745, -256, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30832, -9404, -21846, 0, 12, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28239, 29541, 26956, 25963, -22016, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30776, -9404, -21846, 0, 8, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24912, 27491, 12032, -4545, -1, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30720, -9404, -21846, 0, 7, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24912, 100, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, -30672, -9404, -21846, 0, 9, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 24912, 22116, 50, -9401, -21846, 0, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, -30616, -9404, -21846, 0, 22, 0, 0, 0, 11584, -9399,
+ -21846, 0, 26228, 11879, 24912, 25700, 28265, 18023, 17993, 20815, 25973, 25973, 12886, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30552, -9404, -21846, 0, 19, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 24912, 29810, 29801, 28521, 25966, 17252,
+ 27745, 108, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30488, -9404,
+ -21846, 0, 15, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 27728, 25441,
+ 26725, 27759, 25956, 114, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30432, -9404,
+ -21846, 0, 17, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 27728, 25441,
+ 26725, 27759, 25956, 22130, 50, 2014, 119, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -30368, -9404, -21846, 0, 26, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 27728, 25441, 26725, 27759, 25956, 22386, 29801, 17512, 26213, 30049, 29804, -9472,
+ -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30296, -9404, -21846, 0,
+ 13, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28496, 31084, 24935, 28013,
+ 97, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30240, -9404, -21846, 0,
+ 7, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 28496, 119, -30192, -9433,
+ -21846, 0, -3672, -9462, -21846, 0, -30192, -9404, -21846, 0, 19, 0, 0, 0,
+ 11584, -9399, -21846, 0, 26228, 11879, 29264, 30309, 28261, 18292, 24946, 26980, 28261, 116,
+ -1, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30128, -9404, -21846, 0,
+ 9, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 29264, 28265, 116, -9495,
+ -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30072, -9404, -21846, 0,
+ 11, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 29264, 28265, 22132, 50,
+ -1, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -30016, -9404, -21846, 0,
+ 19, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 29264, 28521, 26994, 31092,
+ 30033, 30053, 22117, 50, -1, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0,
+ -29952, -9404, -21846, 0, 8, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879,
+ 29264, 25711, -26368, -9407, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0,
+ -29896, -9404, -21846, 0, 25, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879,
+ 30033, 28257, 26996, 25978, 28225, 17508, 29029, 24949, 29806, 31337, 101, 8401, -21846, 0,
+ -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -29824, -9404, -21846, 0, 27, 0,
+ 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30033, 28257, 26996, 25978, 28225, 17508,
+ 29029, 24949, 29806, 31337, 22117, 50, -21846, 0, -30192, -9433, -21846, 0, -3672, -9462,
+ -21846, 0, -29752, -9404, -21846, 0, 27, 0, 0, 0, 11584, -9399, -21846, 0,
+ 26228, 11879, 30033, 28257, 26996, 25978, 28225, 17508, 29029, 24949, 29806, 31337, 22117, 51,
+ -1, 0, -30192, -9433, -21846, 0, -3672, -9462, -21846, 0, -29680, -9404, -21846, 0,
+ 27, 0, 0, 0, 11584, -9399, -21846, 0, 26228, 11879, 30033, 28257, 26996, 25978,
+ 28225, 17508, 29029, 24949, 29806, 31337, 22117, 52, -21846, 0, -30192, -9433, -21846, 0,
+ -3672, -9462, -21846, 0, -5872, -9404, -21846, 0, 31, 0, 0, 0, 11584, -9399,
+ -21846, 0, 30880, -9400, -21846, 0, 4176, 0, 0, 0, 128, 0, 0, 0,
+ 14632, 29161, -21856, 0, -13480, -9423, -21846, 0, -11208, -28148, -1, 0, -31552, -9410,
+ -21846, 0, -29328, -9404, -21846, 0, 6, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 768, 0, 0, 0, 80, 0, 0, 0, -14880, -9496,
+ -21846, 0, 16, 0, 0, 0, -1368, -9427, -21846, 0, 2, 0, 0, 0,
+ -29456, -9404, -21846, 0, 129, 0, 0, 0, -19936, -9446, -21846, 0, -12832, -9408,
+ -21846, 0, 0, 0, 0, 0, 97, 0, 0, 0, -29216, -9404, -21846, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 65, 0, 0, 0, -29216, -9404,
+ -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ -29216, -9404, -21846, 0, -17552, -18877, -1, 0, 4432, 0, 0, 0, 128, 0,
+ 0, 0, 20312, 29167, -21856, 0, -29456, -9404, -21846, 0, 24912, -10434, -21846, 0,
+ -29424, -9404, -21846, 0, 24920, -10434, -21846, 0, -29392, -9404, -21846, 0, 25168, -10434,
+ -21846, 0, -29360, -9404, -21846, 0, 25544, -10434, -21846, 0, -29200, -9404, -21846, 0,
+ 25552, -10434, -21846, 0, -29168, -9404, -21846, 0, 208, 0, 0, 0, 2689, 0,
+ 0, 0, -29200, -9404, -21846, 0, 657, 0, 0, 0, -9936, -9402, -21846, 0,
+ -28784, -9406, -21846, 0, 0, 0, 0, 0, 33, 0, 0, 0, -2512, -9407,
+ -21846, 0, -17552, -18877, -1, 0, 64, 0, 0, 0, 48, 0, 0, 0,
+ 18552, 29167, -21856, 0, -29584, -9404, -21846, 0, 26228, 20526, 25970, 25974, 29806, 29255,
+ 25697, 25961, 112, 0, 0, 0, 128, 0, 0, 0, 9336, 29167, -21856, 0,
+ -13416, -9423, -21846, 0, -11200, -28148, -1, 0, -31552, -9410, -21846, 0, -29040, -9404,
+ -21846, 0, 2, 0, 3, 0, 24880, -10434, -21846, 0, -28960, -9404, -21846, 0,
+ 25552, -10434, -21846, 0, -28928, -9404, -21846, 0, 29011, 24949, 25970, 28416, 114, 28769,
+ 29541, 0, -1352, -9427, -21846, 0, 5, 0, 0, 0, -29070, -9404, -21846, 0,
+ 417, 0, 0, 0, -22096, -9388, -21846, 0, -22720, -9407, -21846, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, -9680, -9402, -21846, 0, -17552, -18877, -1, 0,
+ 64, 0, 0, 0, 48, 0, 0, 0, 344, 29164, -21856, 0, 0, 0,
+ 0, 0, 26228, 20526, 26994, 29806, 0, 0, 0, 0, 112, 0, 0, 0,
+ 48, 0, 0, 0, -1352, 29074, -21856, 0, -29088, -9404, -21846, 0, 26228, 20526,
+ 26994, 29806, 0, 0, 0, 0, 160, 0, 0, 0, 128, 0, 0, 0,
+ 5000, 29164, -21856, 0, -13312, -9423, -21846, 0, -11192, -28148, -1, 0, -31552, -9410,
+ -21846, 0, -28752, -9404, -21846, 0, 1, 0, 3, 0, 24880, -10434, -21846, 0,
+ -28672, -9404, -21846, 0, -14592, -9496, -21846, 0, 22, 0, 0, 0, 22, 0,
+ 0, 0, 15, 0, 0, 0, -1312, -9427, -21846, 0, 2, 0, 0, 0,
+ 7, 0, 0, 0, 129, 0, 0, 0, 19584, -9406, -21846, 0, -22464, -9407,
+ -21846, 0, 32, 0, 0, 0, 48, 0, 0, 0, 7369, 29164, -21856, 0,
+ 0, 0, 0, 0, 26228, 20526, 26994, 29806, 12886, 0, 0, 0, 80, 0,
+ 0, 0, 48, 0, 0, 0, 7417, 29164, -21856, 0, -28800, -9404, -21846, 0,
+ 26228, 20526, 26994, 29806, 12886, 0, 0, 0, 5216, 0, 0, 0, 128, 0,
+ 0, 0, 9529, 29161, -21856, 0, -13152, -9423, -21846, 0, -11184, -28148, -1, 0,
+ -31552, -9410, -21846, 0, -28288, -9404, -21846, 0, 4, 0, 7, 0, 29779, 29793,
+ 26213, 27765, 28245, 26217, 29295, 109, -14224, -9496, -21846, 0, 19, 0, 0, 0,
+ 19, 0, 0, 0, 48, 0, 0, 0, -1296, -9427, -21846, 0, 3, 0,
+ 0, 0, 22, 0, 0, 0, 129, 0, 0, 0, 13984, -9488, -21846, 0,
+ -29552, -9405, -21846, 0, 0, 0, 0, 0, 97, 0, 0, 0, -28176, -9404,
+ -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+ -28176, -9404, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, -28176, -9404, -21846, 0, -17552, -18877, -1, 0, 5472, 0, 0, 0,
+ 128, 0, 0, 0, 3321, 29084, -21856, 0, -28416, -9404, -21846, 0, 24912, -10434,
+ -21846, 0, -28384, -9404, -21846, 0, 24920, -10434, -21846, 0, -28352, -9404, -21846, 0,
+ 25552, -10434, -21846, 0, -28320, -9404, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 752, 0, 0, 0, 80, 0, 0, 0, 9833, 29161, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 8849, 0, 0, 0, -20752, -9400,
+ -21846, 0, -22384, -9402, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1191, 28740, -21856, 0, -28544, -9404, -21846, 0, 64, 0, 0, 0, 128, 0,
+ 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_transposed_tensor.h
new file mode 100644
index 00000000..4eff61d1
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/lhs_transposed_tensor.h
@@ -0,0 +1,336 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_2_s16_lhs_transposed_tensor[4608] = {
+ -17136, -1, -17180, -1, 26223, -30445, -1, 25552, 6016, 0, 0, 96, 26228, 31414,
+ 192, -11312, 24912, 25552, 9856, 0, 0, 96, 26228, 160, 26228, 736, -11304, -32660,
+ 3712, -32640, 0, 0, 30, -1, 30, -1, 12333, -13939, -1, -10434, 14720, 0,
+ 0, 0, 20526, 29176, 0, -28148, -10434, -10434, -32724, 0, 0, 0, 20526, 0,
+ 20526, 0, -28148, 11084, -32745, 12627, 0, 0, 0, -1, 0, -1, 12336, 27030,
+ -1, -21846, 14976, 0, 0, 0, 25697, -21856, 0, -1, -21846, -21846, -32640, 0,
+ 0, 0, 29281, 0, 29281, 0, -1, 32327, 7040, -32659, 0, 0, 0, 32767,
+ 0, 32767, 12592, 32322, 32767, 0, 7735, 0, 0, 0, 12886, 0, 0, 0,
+ 0, 0, -32640, 0, 0, 0, 27745, 0, 27745, 0, 0, 19000, -32640, 3358,
+ 0, 0, -15305, 24, 4853, 56, 28672, 32, 40, 28560, 545, 65, 33, 48,
+ 0, 28368, 128, -31552, 28816, 28880, 225, 65, 33, 64, 25964, 64, 25964, 128,
+ -31552, -32640, -32753, 129, 97, 65, 7423, 11780, 1570, 30216, 26994, 24836, 29448, -9404,
+ 0, 0, 0, 0, 0, -9404, 0, -9410, -9404, -9404, 0, 0, 0, 0,
+ 17516, 0, 17516, 0, -9410, -32640, 29824, 0, 0, 0, 30799, 46, 2407, 29281,
+ 29806, 29555, 30305, -21846, 0, 0, 0, 0, 0, -21846, 0, -21846, -21846, -21846,
+ 0, 0, 0, 0, 28281, 0, 28281, 0, -21846, 15631, 13089, 0, 0, 0,
+ 3462, 0, 24082, 24937, 28718, 29797, 25701, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 28001, 0, 28001, 0, 0, 19989,
+ -32705, 0, 0, 0, 24, -15305, 24, 27746, 98, 115, 27999, -1800, -20176, -18368,
+ -18368, 982, 144, 26228, -18409, 28736, 24920, -1784, 18208, -19920, -19920, -18025, 25449, -17833,
+ 25449, -14809, 29296, -32745, -1768, -23248, 6256, 6256, 11780, 7423, 11780, 29541, 29163, -9404,
+ 25711, -9427, -9400, -9387, -9387, 29163, 0, 20526, 29176, -9404, -10434, -9427, -9402, -9400,
+ -9400, 29176, 29779, 29176, 29779, 29161, -9404, 27520, -9427, -9444, -9387, -9387, 29184, 30799,
+ 46, 25646, -21856, -21846, 27749, -21846, -21846, -21846, -21846, -21856, 0, 25697, -21856, -21846,
+ -21846, -21846, -21846, -21846, -21846, -21856, 29801, -21856, 29801, -21856, -21846, -32741, -21846, -21846,
+ -21846, -21846, 24937, 3462, 26222, 29793, 0, 0, 28718, 0, 0, 0, 0, 0,
+ 0, 12886, 0, 0, 0, 0, 0, 0, 0, 0, 26723, 0, 26723, 0,
+ 0, 26752, 0, 0, 0, 0, -17180, 24, -17129, 11617, -17136, -17128, 98, 2,
+ 3024, -17552, -17552, 0, 48, 0, -15120, 3, 28848, 2, 3536, -17552, -17552, 0,
+ 9984, 28688, -32768, -15048, 4, 9729, 8, 18736, -17552, -17552, 30, 11780, 30, 12336,
+ 30, 30, -9404, 0, -9387, -18877, -18877, 0, 0, 0, -9423, 0, -9404, 0,
+ -9387, -18877, -18877, 0, 3851, -9404, -32760, -9423, 0, -32705, 0, -9404, -18877, -18877,
+ 0, -256, 0, 12336, 0, 0, -21846, 0, -21846, -1, -1, 0, 0, 0,
+ -21846, 3, -21846, 0, -21846, -1, -1, 0, -32640, -21846, -32640, -21846, 7, 8320,
+ 0, -21846, -1, -1, 0, 32767, 0, 11568, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9600, 0,
+ 21120, 0, 0, -32705, 0, 0, 0, 0, 0, 992, 24912, 25552, 15888, 29424,
+ 26228, 4823, 1216, -11296, 29584, 15544, 29576, 0, 0, 0, 1472, 24912, 25552, 29872,
+ 16624, 26228, 18935, 96, -11288, 24880, 30096, -7248, 0, 64, 26228, 128, 0, 0,
+ -10434, -10434, -9495, -9404, 20526, 29075, 0, -28148, -9404, -9495, -9404, 0, 0, 0,
+ 0, -10434, -10434, -9404, -9495, 20526, 29084, 0, -28148, -10434, -9404, -9408, 0, 0,
+ 20526, 0, 0, 0, -21846, -21846, -21846, -21846, 29281, -21856, 0, -1, -21846, -21846,
+ -21846, 0, 0, 0, 0, -21846, -21846, -21846, -21846, 29281, -21856, 0, -1, -21846,
+ -21846, -21846, 0, 0, 29281, 0, 0, 0, 0, 0, 0, 0, 27745, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27745,
+ 0, 0, 0, 0, 0, 0, 0, 0, 28001, 0, 33, 128, 29200, 29264,
+ 16952, 97, 25964, 29040, 128, -31552, 4, 24672, 129, 97, 65, 33, 128, 29680,
+ 29744, 7, 417, 25964, 29520, 128, -31552, 30128, 12, 193, 33, 64, 29797, 64,
+ 0, 0, -9404, -9404, -9403, 0, 19820, -9404, 0, -9410, 0, -9403, 0, 0,
+ 0, 0, 0, -9404, -9404, 0, 0, 19820, -9404, 0, -9410, -9404, 0, 0,
+ 0, 0, 29285, 0, 0, 0, -21846, -21846, -21846, 0, 28769, -21846, 0, -21846,
+ 0, -21846, 0, 0, 0, 0, 0, -21846, -21846, 0, 0, 28769, -21846, 0,
+ -21846, -21846, 0, 0, 0, 0, 31337, 0, 0, 0, 0, 0, 0, 0,
+ 24900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 24900, 0, 0, 0, 0, 0, 0, 0, 0, 25701, 0, 6256, 20967,
+ 24920, 22, -15264, -4992, 48, 26228, -16377, 29776, 25932, -1704, -23376, 8000, 8000, 8000,
+ 18567, 24920, -15264, 26963, -12336, 48, 26228, 4487, 30048, 25552, -1640, 18208, 6256, -29577,
+ 29268, -29641, -9387, 29167, -10434, 0, -9426, -9423, 0, 20526, 29161, -9404, 29555, -9427,
+ -9408, -9405, -9405, -9405, 29084, -10434, -9426, 28007, -9405, 0, 20526, 29167, -9404, -10434,
+ -9427, -9402, -9423, 29059, 28277, 29059, -21846, -21856, -21846, 0, -21846, -21846, 0, 29281,
+ -21856, -21846, -22016, -21846, -21846, -21846, -21846, -21846, -21856, -21846, -21846, 26991, -21846, 0,
+ 29281, -21856, -21846, -21846, -21846, -21846, -21846, -21856, 24931, -21856, 0, 0, 0, 0,
+ 0, 0, 0, 27745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 100, 0, 0, 27745, 0, 0, 0, 0, 0, 0, 0, 25972, 0,
+ -17552, 29168, 29232, 944, 29312, -22976, 48, 25964, -14936, 4, 24728, 8, -8000, -17552,
+ -17552, -17552, 29648, 29712, 29792, 16080, -23232, 48, 25964, -14816, 2, 30160, 4, 14320,
+ -17552, 0, 20068, 30000, -18877, -9404, -9404, -9410, -9404, -9410, 0, 19820, -9423, 0,
+ -9403, 0, -9387, -18877, -18877, -18877, -9404, -9404, -9404, -9495, -9406, 0, 19820, -9423,
+ 0, -9404, 0, -9426, -18877, 0, 29295, -9404, -1, -21846, -21846, -21846, -21846, -21846,
+ 0, 28769, -21846, 7, -21846, 0, -21846, -1, -1, -1, -21846, -21846, -21846, -21846,
+ -21846, 0, 28769, -21846, 3, -21846, 0, -21846, -1, 0, 24941, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 24900, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24900, 0, 0, 0, 0, 0, 0, 0,
+ 108, 0, 26228, 2144, -32272, 0, 0, -17568, 16860, 0, 0, 5288, -13449, -32248,
+ 0, 12, 1, 2, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0,
+ 0, 0, 1, 2, 0, 0, 20526, 0, 15389, 0, 0, -9408, 15410, 0,
+ 0, -30174, 29167, 15389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29281, 0, -1, 0,
+ 0, -21846, -1, 0, 0, -1, -21856, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29797, 128, -32264, 0, 0, 145, 16868, 45, 0, 5292,
+ 0, -30524, 2, 26498, 0, 18432, -1, 0, 0, 30036, 0, 0, 27648, -1,
+ 0, 0, 0, 0, 0, 1536, -1, 0, 29285, 0, 15389, 0, 0, 0,
+ 15410, 0, 0, -30174, 0, 15389, 0, 15957, 0, 0, -1, 0, 0, -9544,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 31337, 0,
+ -1, 0, 0, 0, -1, 0, 0, -1, 2, -1, 0, -20757, 0, 0,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 25701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 29268, -30825, -32248, 0, 12, 7520, 14472, 0,
+ 0, 2416, -32272, 0, 0, 2544, 0, 0, 0, 1, 2, 0, 0, 0,
+ 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 28277, 29111, 15389, 0,
+ 0, -9446, 15410, 0, 0, 0, 15389, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24931, -21856, -1, 0, 0, -21846, -1, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 25972, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 20068, 0, -30524, 3, 26499, -11552,
+ 16896, 6, -21595, 128, -32264, 0, 0, 14352, 0, 30144, 0, 0, 1536, -1,
+ 0, 0, 29964, 0, 0, 18432, -1, 0, 0, -28235, 0, 0, 29295, 0,
+ 15389, 0, 15957, -9403, 15410, 0, 15957, 0, 15389, 0, 0, 0, 0, -9544,
+ 0, 0, 0, -1, 0, 0, -9544, 0, 0, 0, -1, 0, 0, 15373,
+ 0, 0, 24941, 3, -1, 0, -20757, -21846, -1, 0, -20757, 0, -1, 0,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, -21846, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, 108, 0, 0, 0, 6198, 0, 0, 0,
+ 6198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26944,
+ -3672, 26228, -30192, 11584, 19712, 20, 28018, 20, 28018, 10, -30192, 11584, -3672, 26228,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -9399, -9462, 11879, -9433, -9399, -30895, 0, 12886, 0, 13142, 0,
+ -9433, -9399, -9462, 11879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -21846, -21846, 30022, -21846, -21846, -1, 0,
+ -256, 0, -256, 0, -21846, -21846, -21846, 29255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25971,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24933, 0, 0,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, -15904, 31904, 16996, -3672, 26228, -30192, 11584, -30192, 11584, -30192, 11584, -3672, 26228,
+ 32288, 25972, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0,
+ -1, 0, 0, 0, 0, -9397, -9404, 29793, -9462, 11879, -9433, -9399, -9433, -9399,
+ -9433, -9399, -9462, 11879, -9404, 17778, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, -21846, 26723, -21846, 30022,
+ -21846, -21846, -21846, -21846, -21846, -21846, -21846, 24903, -21846, 30065, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 28494, 0, 25971, 0, 0, 0, 0, 0, 0, 0, 26740, 0, 27745,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 24, 28018, 31976, 16996, -3672, 26228, -3672, 26228, -3672, 26228,
+ 32232, 29285, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 29255, -9404, 29793, -9462, 11879,
+ -9462, 11879, -9462, 11879, -9404, 12886, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25697,
+ -21846, 26723, -21846, 30022, -21846, 30022, -21846, 24903, -21846, -256, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 12886, 0, 28494, 0, 25971, 0, 25971, 0, 26740, 0, 0,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, 11584, -28416, 24, 28018, 32048, 16996, 32112, 16996,
+ 32176, 29285, 12, -30192, 11584, -30192, 0, -1, 0, 0, 0, 0, 0, 0,
+ -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -9399, -9401, 0, 29255,
+ -9404, 29793, -9404, 29793, -9404, -256, 0, -9433, -9399, -9433, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -21846, -21846, 0, 25697, -21846, 26723, -21846, 26723, -21846, -1, 0, -21846, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 13142, 0, 28494, 0, 28494, 0, -1,
+ 0, 0, 0, 0, -3672, 26228, 32408, 26479, 32472, 28483, 13, -30192, 11584, -3672,
+ 26228, 32696, 26996, 11, -30192, 11584, -3672, 26228, -32616, 24948, -32552, 24946, 17, 100,
+ 13, -30192, 11584, -3672, 26228, -32264, 24931, 14, -9462, 11879, -9404, 24946, -9404, 29550,
+ 0, -9433, -9399, -9462, 11879, -9404, 31092, 0, -9433, -9399, -9462, 11879, -9404, 27746,
+ -9404, 100, 0, 0, 0, -9433, -9399, -9462, 11879, -9404, 16748, 0, -21846, 29255,
+ -21846, 21357, -21846, 116, 0, -21846, -21846, -21846, 25673, -21846, 78, 0, -21846, -21846,
+ -21846, 27977, -21846, 17253, -21846, -1, 0, 0, 0, -21846, -21846, -21846, 25932, -21846,
+ 25710, 0, 0, 24933, 0, 28021, 0, 0, 0, 0, 0, 0, 28261, 0,
+ 0, 0, 0, 0, 0, 26465, 0, 28271, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29555, 0, 0, 0, 32352, 25972, 20, 24941, 13, -30192, 11584, -3672,
+ 26228, 32640, 26996, 13, -30192, 11584, -3672, 26228, -32672, -22272, 18, 29811, 11, -30192,
+ 11584, -30192, 11584, -3672, 26228, -32320, -29696, 14, -30192, 11584, -9404, 114, 0, 31090,
+ 0, -9433, -9399, -9462, 11879, -9404, 31092, 0, -9433, -9399, -9462, 11879, -9404, -9433,
+ 0, -9472, 0, -9433, -9399, -9433, -9399, -9462, 11879, -9404, -9407, 0, -9433, -9399,
+ -21846, -21846, 0, -256, 0, -21846, -21846, -21846, 18527, -21846, -256, 0, -21846, -21846,
+ -21846, 26441, -21846, -21846, 0, -21846, 0, -21846, -21846, -21846, -21846, -21846, 25932, -21846,
+ -21846, 0, -21846, -21846, 0, 0, 0, -1, 0, 0, 0, 0, 29551, 0,
+ -1, 0, 0, 0, 0, 28001, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29555, 0, 0, 0, 0, 0, 11, -30192, 11584, -30192, 11584, -3672,
+ 26228, 32584, 21364, 12, -30192, 11584, -3672, 26228, -32728, 24941, 8, -30192, 11584, -30192,
+ 11584, -3672, 26228, -3672, 26228, -32376, 28997, 8, -30192, 11584, -3672, 26228, 0, -9433,
+ -9399, -9433, -9399, -9462, 11879, -9404, 28261, 0, -9433, -9399, -9462, 11879, -9404, 0,
+ 0, -9433, -9399, -9433, -9399, -9462, 11879, -9462, 11879, -9404, 24949, 0, -9433, -9399,
+ -9462, 11879, 0, -21846, -21846, -21846, -21846, -21846, 18527, -21846, 100, 0, -21846, -21846,
+ -21846, 26441, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846, 25932, -21846, 25932, -21846,
+ 108, 0, -21846, -21846, -21846, 28492, 0, 0, 0, 0, 0, 0, 29551, 0,
+ 0, 0, 0, 0, 0, 28001, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27489, 0, 27489, 0, 0, 0, 0, 0, 0, 26983, 11584, -3672, 26228, -3672,
+ 26228, 32528, 21108, 13, -30192, 11584, -3672, 26228, 32752, 24941, 10, -30192, 11584, -3672,
+ 26228, -3672, 26228, -32496, 21113, -32432, 21113, 13, -30192, 11584, -3672, 26228, -32208, 24931,
+ -9399, -9462, 11879, -9462, 11879, -9404, 25445, 0, -9433, -9399, -9462, 11879, -9404, 99,
+ 0, -9433, -9399, -9462, 11879, -9462, 11879, -9404, 27749, -9404, 27749, 0, -9433, -9399,
+ -9462, 11879, -9404, 20076, -21846, -21846, 26952, -21846, 28488, -21846, 118, 0, -21846, -21846,
+ -21846, 25673, -21846, -21846, 0, -21846, -21846, -21846, 27977, -21846, 28233, -21846, 18293, -21846,
+ 117, 0, -21846, -21846, -21846, 28492, -21846, 29807, 0, 0, 29811, 0, 29811, 0,
+ 0, 0, 0, 0, 0, 28261, 0, 0, 0, 0, 0, 0, 30061, 0,
+ 18294, 0, 24946, 0, 0, 0, 0, 0, 0, 26983, 0, -256, -30192, 11584,
+ -3672, 26228, 12, -30192, 11584, -3672, 26228, -31880, -30192, 11584, -3672, 26228, -31720, 28527,
+ 13, -30192, 11584, -30192, 11584, -3672, 26228, -31432, 30061, 7, -3672, 26228, -3672, 26228,
+ -31208, -30192, -9433, -9399, -9462, 11879, 0, -9433, -9399, -9462, 11879, -9404, -9433, -9399,
+ -9462, 11879, -9404, 108, 0, -9433, -9399, -9433, -9399, -9462, 11879, -9404, 109, 0,
+ -9462, 11879, -9462, 11879, -9404, -9433, -21846, -21846, -21846, 28492, 0, -21846, -21846, -21846,
+ 24909, -21846, -21846, -21846, -21846, 24909, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846,
+ 25933, -21846, -1, 0, -21846, 26957, -21846, 26957, -21846, -21846, 0, 0, 0, 103,
+ 0, 0, 0, 0, 27000, 0, 0, 0, 0, 20600, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26482, 0, 0, 0, 0, 29298, 0, 29298, 0, 0,
+ -3672, 26228, -32096, -30192, 11584, -3672, 26228, -31936, 30061, 7, -3672, 26228, -31776, 28527,
+ 11, -30192, 11584, -3672, 26228, -3672, 26228, -31488, 101, 11, -30192, 11584, -31328, 29295,
+ -31264, 29295, 7, -3672, -9462, 11879, -9404, -9433, -9399, -9462, 11879, -9404, 109, 0,
+ -9462, 11879, -9404, 18284, 0, -9433, -9399, -9462, 11879, -9462, 11879, -9404, -9405, 0,
+ -9433, -9399, -9404, 24912, -9404, 24912, 0, -9462, -21846, 28492, -21846, -21846, -21846, -21846,
+ 24909, -21846, -21846, 0, -21846, 24909, -21846, 24946, 0, -21846, -21846, -21846, 24909, -21846,
+ 25933, -21846, -21846, 0, -21846, -21846, -21846, 18276, -21846, 100, 0, -21846, 0, 26983,
+ 0, 0, 0, 0, 19828, 0, 0, 0, 0, 20600, 0, 100, 0, 0,
+ 0, 0, 20600, 0, 28257, 0, 0, 0, 0, 0, 0, 24946, 0, 0,
+ 0, 0, -32152, 24931, 7, -3672, 26228, -31992, 27765, 11, -30192, 11584, -31832, 28527,
+ 15, -30192, 11584, -3672, 26228, -31608, 28527, -31544, 0, 9, -30192, 11584, -3672, 26228,
+ 17, 100, 13, -30192, 11584, -31160, -9404, 20332, 0, -9462, 11879, -9404, -1280, 0,
+ -9433, -9399, -9404, 13164, 0, -9433, -9399, -9462, 11879, -9404, 22380, -9404, 0, 0,
+ -9433, -9399, -9462, 11879, 0, 24280, 0, -9433, -9399, -9404, -21846, 114, 0, -21846,
+ 28492, -21846, -1, 0, -21846, -21846, -21846, 68, 0, -21846, -21846, -21846, 24909, -21846,
+ 29801, -21846, 0, 0, -21846, -21846, -21846, 26957, 0, 119, 0, -21846, -21846, -21846,
+ 0, 0, 0, 0, 28783, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 20600, 0, 16744, 0, 0, 0, 0, 0, 0, 110, 0, 0,
+ 0, 0, 0, 0, 13, -30192, 11584, -32048, 28483, 10, -30192, 11584, -3672, 26228,
+ 13, -30192, 11584, -3672, 26228, -31664, 28527, 21, 26482, 8, -30192, 11584, -3672, 26228,
+ -31376, -30192, 11584, -30192, 11584, -3672, 26228, 7, 0, -9433, -9399, -9404, 25710, 0,
+ -9433, -9399, -9462, 11879, 0, -9433, -9399, -9462, 11879, -9404, 22124, 0, 24941, 0,
+ -9433, -9399, -9462, 11879, -9404, -9433, -9399, -9433, -9399, -9462, 11879, 0, 0, -21846,
+ -21846, -21846, -22016, 0, -21846, -21846, -21846, 24909, 0, -21846, -21846, -21846, 24909, -21846,
+ 50, 0, 120, 0, -21846, -21846, -21846, 26957, -21846, -21846, -21846, -21846, -21846, -21846,
+ 28493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0,
+ 0, 0, 20600, 0, -1, 0, 0, 0, 0, 0, 0, 26990, 0, 0,
+ 0, 0, 0, 0, 100, 0, 11584, -31112, 20079, 7, -3672, 26228, -3672, 26228,
+ -30888, 30065, 12, -30192, 11584, -3672, 26228, 9, -30192, 11584, -30192, 11584, -30192, 11584,
+ -3672, 26228, -3672, 26228, -30192, 11584, -3672, 26228, 19, 28261, -9399, -9404, 28257, 0,
+ -9462, 11879, -9462, 11879, -9404, 27745, 0, -9433, -9399, -9462, 11879, 0, -9433, -9399,
+ -9433, -9399, -9433, -9399, -9462, 11879, -9462, 11879, -9433, -9399, -9462, 11879, 0, 116,
+ -21846, -21846, -22016, 0, -21846, 25934, -21846, 28494, -21846, -256, 0, -21846, -21846, -21846,
+ 24912, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 27728, -21846, 27728, -21846, -21846,
+ -21846, 28496, 0, -1, 0, 0, 0, 0, 0, 29816, 0, 28751, 0, 0,
+ 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 25441,
+ 0, 25441, 0, 0, 0, 119, 0, 0, 26228, 12, -30192, 11584, -31008, 29769,
+ -30944, -4096, 12, -30192, 11584, -3672, 26228, -30720, -30192, 11584, -3672, 26228, -3672, 26228,
+ -3672, 26228, -30432, 26725, -30368, 26725, -3672, 26228, -30240, -30192, 11584, -30192, 11879, 0,
+ -9433, -9399, -9404, 29285, -9404, -1, 0, -9433, -9399, -9462, 11879, -9404, -9433, -9399,
+ -9462, 11879, -9462, 11879, -9462, 11879, -9404, 27759, -9404, 27759, -9462, 11879, -9404, -9433,
+ -9399, -9433, 30029, 0, -21846, -21846, -21846, 29793, -21846, -1, 0, -21846, -21846, -21846,
+ 24912, -21846, -21846, -21846, -21846, 24912, -21846, 24912, -21846, 27728, -21846, 25956, -21846, 25956,
+ -21846, 28496, -21846, -21846, -21846, -21846, 108, 0, 0, 0, 0, 28521, 0, -1,
+ 0, 0, 0, 0, 27491, 0, 0, 0, 0, 25700, 0, 29810, 0, 25441,
+ 0, 22130, 0, 22386, 0, 31084, 0, 0, 0, 0, -30192, 11584, -3672, 26228,
+ 17, 110, 8, -30192, 11584, -3672, 26228, -30776, 12032, 7, -3672, 26228, -30616, 28265,
+ -30552, 29801, -30488, 26725, 17, 50, 26, 29801, -30296, 24935, 7, -3672, 26228, -3672,
+ -9433, -9399, -9462, 11879, 0, -6825, 0, -9433, -9399, -9462, 11879, -9404, -4545, 0,
+ -9462, 11879, -9404, 18023, -9404, 28521, -9404, 27759, 0, 2014, 0, 17512, -9404, 28013,
+ 0, -9462, 11879, -9462, -21846, -21846, -21846, 25934, 0, -21846, 0, -21846, -21846, -21846,
+ 28239, -21846, -1, 0, -21846, 24912, -21846, 17993, -21846, 25966, -21846, 25956, 0, 119,
+ 0, 26213, -21846, 97, 0, -21846, 29264, -21846, 0, 0, 0, 103, 0, 0,
+ 0, 0, 0, 0, 29541, 0, 0, 0, 0, 22116, 0, 20815, 0, 17252,
+ 0, 114, 0, 0, 0, 30049, 0, 0, 0, 0, 30309, 0, -3672, 26228,
+ -31056, -30192, 11584, -30192, 11584, -3672, 26228, -30832, 26956, 8, -30192, 11584, -30672, 50,
+ 22, 25973, 19, 27745, 15, -30192, 11584, -30192, 11584, 29804, 13, -30192, 11584, -30192,
+ 28261, -30128, -9462, 11879, -9404, -9433, -9399, -9433, -9399, -9462, 11879, -9404, 25963, 0,
+ -9433, -9399, -9404, -9401, 0, 25973, 0, 108, 0, -9433, -9399, -9433, -9399, -9472,
+ 0, -9433, -9399, -9404, 18292, -9404, -21846, 30029, -21846, -21846, -21846, -21846, -21846, -21846,
+ 28494, -21846, -22016, 0, -21846, -21846, -21846, -21846, 0, 12886, 0, -21846, 0, -21846,
+ -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846, 24946, -21846, 0, 20076, 0, 0,
+ 0, 0, 0, 0, 17780, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26980, 0,
+ 9, -30192, 11584, -3672, 26228, -3672, 26228, -29896, 26996, -3672, 26228, -30192, 11584, 22117,
+ 27, 29029, -5872, 4176, -11208, 0, -14880, -29456, 0, 0, 0, 4432, 24912, 25168,
+ 25552, -29200, 0, 64, 0, -9433, -9399, -9462, 11879, -9462, 11879, -9404, 25978, -9462,
+ 11879, -9433, -9399, 51, 0, 24949, -9404, 0, -28148, 0, -9496, -9404, 0, 0,
+ 0, 0, -10434, -10434, -10434, -9404, 0, 0, 0, -21846, -21846, -21846, 29264, -21846,
+ 29264, -21846, 28225, -21846, 30033, -21846, -21846, -1, 0, 29806, -21846, 0, -1, 0,
+ -21846, -21846, 0, 0, 0, 0, -21846, -21846, -21846, -21846, 0, 0, 0, 0,
+ 0, 0, 28521, 0, 25711, 0, 17508, 0, 28257, 0, 0, 0, 0, 31337,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 11584, -3672, 26228, -30016, 26994, -29952, -26368, 25, 29029, -29824, 26996, -3672,
+ 26228, -30192, 11584, 22117, 31, 128, -31552, 0, 16, 129, 97, 65, 33, 128,
+ -29424, -29360, -29168, 657, 33, 48, -9399, -9462, 11879, -9404, 31092, -9404, -9407, 0,
+ 24949, -9404, 25978, -9462, 11879, -9433, -9399, 52, 0, 0, -9410, 0, 0, 0,
+ 0, 0, 0, 0, -9404, -9404, -9404, 0, 0, 0, -21846, -21846, 29264, -21846,
+ 30033, -21846, -21846, 0, 29806, -21846, 28225, -21846, 30033, -21846, -21846, -21846, 0, 0,
+ -21846, 0, 0, 0, 0, 0, 0, 0, -21846, -21846, -21846, 0, 0, 0,
+ 0, 0, 28265, 0, 30053, 0, 0, 0, 31337, 0, 17508, 0, 28257, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 26228, -30072, 22132, 19, 22117, 8, -30192, 11584, 101, 27,
+ 29029, -29752, 26996, -3672, 26228, -30192, 11584, 14632, -29328, 768, -1368, -19936, -29216, -29216,
+ -29216, 20312, 24920, 25544, 208, -9936, -2512, 18552, 11879, -9404, 50, 0, 50, 0,
+ -9433, -9399, 8401, 0, 24949, -9404, 25978, -9462, 11879, -9433, -9399, 29161, -9404, 0,
+ -9427, -9446, -9404, -9404, -9404, 29167, -10434, -10434, 0, -9402, -9407, 29167, 29264, -21846,
+ -1, 0, -1, 0, -21846, -21846, -21846, 0, 29806, -21846, 28225, -21846, 30033, -21846,
+ -21846, -21856, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21856, -21846, -21846, 0, -21846,
+ -21846, -21856, 28265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31337, 0,
+ 17508, 0, 28257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 116, 11, -30192, 11584, -30192, 11584, -3672, 26228,
+ -30192, 11584, 22117, 27, 29029, -29680, 26996, -3672, 30880, -13480, 6, 80, 2, -12832,
+ -17552, -17552, -17552, -29456, -29392, -29200, 2689, -28784, -17552, -29584, -9495, 0, -9433, -9399,
+ -9433, -9399, -9462, 11879, -9433, -9399, 50, 0, 24949, -9404, 25978, -9462, -9400, -9423,
+ 0, 0, 0, -9408, -18877, -18877, -18877, -9404, -9404, -9404, 0, -9406, -18877, -9404,
+ -21846, 0, -21846, -21846, -21846, -21846, -21846, 30033, -21846, -21846, -21846, 0, 29806, -21846,
+ 28225, -21846, -21846, -21846, 7, 0, 0, -21846, -1, -1, -1, -21846, -21846, -21846,
+ 0, -21846, -1, -21846, 0, 0, 0, 0, 0, 0, 0, 28257, 0, 0,
+ 0, 0, 31337, 0, 17508, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 26228, 9336, -29040, 25552, -1352, -22096,
+ -9680, 344, 112, 26228, 5000, -28752, -14592, -1312, 19584, 7369, 80, 26228, 9529, -28288,
+ -14224, -1296, 13984, -28176, -28176, -28176, 3321, 24920, 0, 9833, -20752, -1191, 20526, 29167,
+ -9404, -10434, -9427, -9388, -9402, 29164, 0, 20526, 29164, -9404, -9496, -9427, -9406, 29164,
+ 0, 20526, 29161, -9404, -9496, -9427, -9488, -9404, -9404, -9404, 29084, -10434, 0, 29161,
+ -9400, 28740, 25970, -21856, -21846, -21846, -21846, -21846, -21846, -21856, 0, 26994, -21856, -21846,
+ -21846, -21846, -21846, -21856, 0, 26994, -21856, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21856, -21846, 0, -21856, -21846, -21856, 25974, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29806, 0, 0, 0, 0, 0, 0, 0, 29806, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29806, -13416, 2, -28928,
+ 5, -22720, -17552, 0, 48, 0, -13312, 1, 22, 2, -22464, 0, 48, 12886,
+ -13152, 4, 19, 3, -29552, -17552, -17552, -17552, -28416, -28352, 0, 0, -22384, -28544,
+ 29255, -9423, 0, -9404, 0, -9407, -18877, 0, 0, 0, -9423, 0, 0, 0,
+ -9407, 0, 0, 0, -9423, 0, 0, 0, -9405, -18877, -18877, -18877, -9404, -9404,
+ 0, 0, -9402, -9404, 25697, -21846, 3, -21846, 0, -21846, -1, 0, 0, 0,
+ -21846, 3, 0, 0, -21846, 0, 0, 0, -21846, 7, 0, 0, -21846, -1,
+ -1, -1, -21846, -21846, 0, 0, -21846, -21846, 25961, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, -11200,
+ 24880, 29011, -29070, 0, 64, 26228, -1352, 160, -11192, 24880, 22, 7, 32, 26228,
+ 7417, 5216, -11184, 29779, 19, 22, 0, 0, 0, 5472, 24912, 25552, 752, 0,
+ 0, 64, 0, -28148, -10434, 24949, -9404, 0, 0, 20526, 29074, 0, -28148, -10434,
+ 0, 0, 0, 20526, 29164, 0, -28148, 29793, 0, 0, 0, 0, 0, 0,
+ -10434, -10434, 0, 0, 0, 0, 0, -1, -21846, 25970, -21846, 0, 0, 26994,
+ -21856, 0, -1, -21846, 0, 0, 0, 26994, -21856, 0, -1, 26213, 0, 0,
+ 0, 0, 0, 0, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 28416,
+ 0, 0, 0, 29806, 0, 0, 0, 0, 0, 0, 0, 29806, 0, 0,
+ 0, 27765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, -31552, -28960, 114, 417, 33, 48, 0, -29088, 128, -31552, -28672, 15, 129,
+ 48, 12886, -28800, 128, -31552, 28245, 48, 129, 97, 65, 33, 128, -28384, -28320,
+ 80, 8849, 0, 128, 0, -9410, -9404, 28769, 0, 0, 0, 0, -9404, 0,
+ -9410, -9404, 0, 0, 0, 0, -9404, 0, -9410, 26217, 0, 0, 0, 0,
+ 0, 0, -9404, -9404, 0, 0, 0, 0, 0, -21846, -21846, 29541, 0, 0,
+ 0, 0, -21846, 0, -21846, -21846, 0, 0, 0, 0, -21846, 0, -21846, 29295,
+ 0, 0, 0, 0, 0, 0, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/output.h
new file mode 100644
index 00000000..56144e7d
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/output.h
@@ -0,0 +1,502 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_2_s16_output[6912] = {
+ -1688, 1514, 1249, 1583, -4987, 2023, 2022, -495, 601, -3436, -3450, -551, -1502, -1504,
+ -3617, -3893, -5548, -5752, -3893, -5548, -4754, -4837, -6350, -5874, -861, 0, -748, -1,
+ -373, -748, -753, -1650, -3420, -4533, -4566, -1, -2397, -2318, -2188, -4417, -2568, -3469,
+ -4417, -2568, -3471, -2575, -1942, -1939, -314, 1518, 434, 1587, -641, 1210, 1209, -1880,
+ 2744, -926, -942, -551, 916, 631, -1476, -349, 148, 228, -349, 148, 1223, -102,
+ -673, -194, -9466, 60, -1919, 7, -3094, -1917, -1908, -11154, 1403, -6087, -6018, 2,
+ -5757, -5956, -4570, -4867, -8906, -6568, -4867, -8906, -7244, -8868, -8820, -8641, -4066, -3830,
+ -5948, -3739, 8, -7138, -7139, -3897, 6122, -2671, -2686, -454, 2309, 1685, -423, -6284,
+ -669, -2826, -6284, -669, -1831, -2051, -4019, -5405, -4628, 1216, -1665, 1277, -6104, -288,
+ -289, -6312, 2267, -3448, -3464, -2517, 3121, 2900, 797, -1556, -2383, -1571, -1556, -2383,
+ -577, -2394, -2439, -1392, -4749, 1, -1869, 2, -3149, -1869, -1860, -7384, 5175, -1861,
+ -1800, 2, -1781, -3948, -2151, -1923, -5318, -3645, -1923, -5318, -3651, -5294, -6448, -6449,
+ 3041, -455, -376, -442, 8139, -1533, -1533, 2438, 541, 5113, 5108, 2753, 2357, 2009,
+ 1979, 3270, 8065, 6836, 3270, 8065, 6835, 6699, 6633, 5534, 3745, -2110, -1883, -2122,
+ -1194, -2155, -2162, 4472, 285, 697, 657, -1373, 4185, 3535, 4868, 429, 3110, 1742,
+ 429, 3110, 1567, 3075, 3908, 3694, 4030, -89, -4, -10, 3, -6, -13, 6365,
+ 1090, 2632, 2578, -1, 4293, 5239, 2171, 778, 4036, 1913, 778, 4036, 2934, 3999,
+ 2945, 2674, 4032, -89, -2, -10, 0, -4, -11, 6368, 1090, 2635, 2581, -1,
+ 4293, 5239, 2171, 779, 4034, 1911, 779, 4034, 2931, 3999, 2943, 2672, -2792, -9,
+ -7, -9, 10, -12, -11, -3046, 4560, 667, 669, 3, 654, 624, 638, 751,
+ 643, 697, 751, 643, 697, 641, 599, 595, 994, -4984, -3786, -4970, -1151, -4974,
+ -4974, 2737, 39, -404, -402, -1695, -8, -12, -3, -3651, -2109, -3655, -3651, -2109,
+ -3658, -2113, -3618, -4743, 3243, -2253, -1894, -2235, 7163, -3317, -3309, 1155, 2798, 2042,
+ 2098, 1690, -2906, -4117, -3668, -478, 1257, 1336, -478, 1257, 1336, -83, -1658, -3006,
+ 1436, -94, -17, -26, 20, -27, -34, 1279, 5941, 2364, 2312, 5, 4208, 3283,
+ 2410, 887, 4026, 2036, 887, 4026, 2914, 3989, 3182, 2942, -37, 1945, 3886, 1941,
+ -1056, 4398, 4407, -1711, 3531, 9229, 9293, 528, 606, 164, 658, 8770, 1247, 3182,
+ 8770, 1247, 3182, 2764, 764, 1249, 944, -250, -360, -366, 8138, -1485, -1476, -2021,
+ 2306, 6500, 6576, 2734, 1441, -677, 4607, 7768, 7630, 9724, 7768, 7630, 8049, 6305,
+ 8177, 7542, 3026, -455, -394, -442, 8172, -1552, -1552, 2406, 542, 5085, 5080, 2753,
+ 2361, 2008, 1978, 3258, 8085, 6861, 3258, 8085, 6861, 6704, 6652, 5553, 1242, 2525,
+ 2944, 2515, 3989, 2498, 2504, -63, 4083, 9367, 9410, 3747, 3012, 1187, 3242, 8272,
+ 6472, 7178, 8272, 6472, 6973, 6476, 5536, 5162, 4090, -89, -4, -10, 3, -6,
+ -13, 6518, 934, 2502, 2445, -1, 4339, 5334, 2239, 657, 4104, 1889, 657, 4104,
+ 2909, 4066, 3076, 2805, 4091, -89, -2, -10, 0, -4, -11, 6521, 934, 2505,
+ 2448, -1, 4339, 5334, 2239, 659, 4101, 1886, 659, 4101, 2906, 4065, 3074, 2803,
+ -2081, -9, -8, -10, 12, -13, -19, -1193, 2659, -925, -964, 2, 1214, 1771,
+ 1459, -732, 1462, 390, -732, 1462, 390, 1447, 2195, 2191, -5586, -5195, -6690, -5226,
+ -1360, -7877, -7868, -8685, 4653, -5497, -5435, -1954, -1952, -5496, -1317, -6379, -5708, -4804,
+ -6379, -5708, -5384, -6913, -7239, -8213, -3226, 130, -11, -2, 21, -15, -20, -3053,
+ 1884, -1695, -1710, 4, 1057, 665, 5192, 1645, 2138, 2764, 1645, 2138, 1099, 2161,
+ 5879, 6305, 101, -5411, -6690, -5247, -1369, -7882, -7875, -802, 9825, -330, -303, -1954,
+ 2262, -655, -2889, -5915, -2736, -4354, -5915, -2736, -2449, -3996, -8755, -10386, 1313, -145,
+ -43, -77, 49, -78, -83, 977, 6294, 2704, 2660, 23, 4097, 3062, 2260, 1146,
+ 3877, 2072, 1146, 3877, 2947, 3843, 2862, 2600, -58, 1944, 3885, 1941, -1055, 4397,
+ 4407, -1765, 3587, 9276, 9342, 529, 589, 130, 634, 8813, 1223, 3191, 8813, 1223,
+ 3190, 2740, 717, 1201, -3041, 379, 2831, 315, -7941, 4312, 4302, 4705, 1280, -4343,
+ -4405, -3773, 1764, 5011, 4002, -472, -2507, -2394, -472, -2507, -2958, -966, 1785, 3329,
+ -3105, 171, 380, 172, -4554, 212, 212, -2049, 492, 3889, 3889, 636, 1489, 2007,
+ 1978, 1623, -1453, -2224, 1623, -1453, -2225, 111, -1550, -1711, 4212, 5142, 3549, 5037,
+ 278, 5029, 5023, 2699, -1545, -657, -694, 950, 3148, 2797, 6009, 5689, 5473, 7139,
+ 5689, 5473, 6051, 5482, 10271, 11957, 3105, -89, -6, -8, 6, -8, -7, 3957,
+ 3554, 4689, 4688, 0, 3567, 3752, 1107, 2695, 2979, 2315, 2695, 2979, 3335, 2955,
+ 881, 610, 3106, -89, -4, -8, 3, -6, -5, 3960, 3554, 4692, 4691, 0,
+ 3567, 3752, 1107, 2697, 2977, 2312, 2697, 2977, 3333, 2955, 879, 608, 3107, -89,
+ -2, -8, 0, -4, -3, 3963, 3554, 4695, 4694, 0, 3566, 3752, 1107, 2698,
+ 2975, 2310, 2698, 2975, 3330, 2954, 877, 606, -4707, 55, -55, -77, 72, -97,
+ -88, -6810, 5722, 1570, 1638, 33, -121, -1707, 3546, 4638, 466, 3371, 4638, 466,
+ 1677, 510, 2623, 3021, 887, -248, -383, -366, 8178, -1508, -1498, -2096, 2270, 6428,
+ 6504, 2734, 1419, -700, 4631, 7758, 7638, 9760, 7758, 7638, 8063, 6296, 8226, 7596,
+ 3851, -451, -417, -441, 8212, -1574, -1574, 2098, 1855, 5078, 5078, 2753, 2245, 540,
+ 1962, 3396, 7991, 6935, 3396, 7991, 6880, 6594, 6586, 5499, 2619, 566, 741, 440,
+ 6405, 24, 21, 2101, -1676, 3382, 3373, 2412, 2394, 1691, 6341, 5479, 8369, 8481,
+ 5479, 8369, 6779, 7586, 11142, 10901, 7078, -966, 488, -845, 3469, -847, -850, 8262,
+ 4272, 9953, 9927, 2842, 5592, 4152, 2547, 3669, 7383, 3987, 3669, 7383, 5322, 7341,
+ 3482, 1865, -3146, -5246, -6836, -5233, -1471, -8024, -8024, -2061, 41, -5842, -5842, -1956,
+ 362, -6, 1, -7772, -3446, -4634, -7772, -3446, -4637, -4679, -4986, -6111, -3177, 366,
+ -661, 251, 5831, -876, -866, -6130, -2670, -5676, -5601, 842, -7753, -7167, -5010, -1938,
+ -3238, -39, -1938, -3238, -1548, -4573, -1900, -1706, 1376, -189, -66, -121, 74, -122,
+ -128, 1167, 6127, 2603, 2556, 38, 4135, 3150, 2335, 1005, 3948, 2028, 1005, 3948,
+ 2896, 3912, 2981, 2700, -76, 1943, 3885, 1940, -1055, 4396, 4406, -1811, 3635, 9317,
+ 9384, 529, 575, 101, 613, 8850, 1202, 3198, 8850, 1202, 3198, 2720, 676, 1160,
+ -2812, -740, 486, -835, 3478, -851, -841, -3339, 6717, 6734, 6812, 2849, 48, -1745,
+ 3046, 5628, 2804, 4042, 5628, 2804, 2607, 2847, 2649, 1750, 2964, 450, 302, 459,
+ 7177, -402, -403, 1896, 537, 4615, 4610, 2402, 2299, 2003, 1975, 3846, 7617, 6933,
+ 3846, 7617, 6933, 6437, 6761, 6093, 6183, -904, 479, -853, 3484, -861, -869, 8604,
+ 1026, 7019, 6965, 2846, 5062, 4378, 4300, 2470, 7542, 3931, 2470, 7542, 4396, 7507,
+ 5959, 4563, 3041, -89, -6, -8, 6, -8, -6, 3789, 3727, 4835, 4838, 1,
+ 3516, 3648, 1032, 2832, 2904, 2344, 2832, 2904, 3364, 2882, 735, 464, 3042, -89,
+ -4, -8, 3, -6, -4, 3792, 3727, 4838, 4841, 1, 3516, 3648, 1032, 2833,
+ 2902, 2341, 2833, 2902, 3361, 2881, 733, 462, 3044, -89, -2, -8, 0, -4,
+ -2, 3795, 3727, 4841, 4844, 1, 3516, 3648, 1032, 2835, 2900, 2339, 2835, 2900,
+ 3359, 2881, 731, 460, -4644, 12, -78, -121, 98, -141, -134, -6566, 5429, 1367,
+ 1431, 48, -82, -1587, 3683, 4441, 559, 3322, 4441, 559, 1600, 602, 2838, 3222,
+ 815, -245, -411, -366, 8227, -1536, -1527, -2190, 2225, 6338, 6414, 2734, 1391, -728,
+ 4662, 7745, 7648, 9806, 7745, 7648, 8080, 6284, 8286, 7663, 2238, -305, -445, -428,
+ 8268, -1599, -1603, 1682, -1705, 2981, 2971, 2752, 2540, 1662, 6372, 4553, 9357, 9102,
+ 4553, 9357, 7372, 7965, 11609, 10960, -1776, -810, 472, -866, 3492, -879, -869, -2401,
+ 3887, 4117, 4190, 2859, -2907, -4838, -1096, 2012, -412, 361, 2012, -412, -573, -380,
+ -1535, -2578, 6927, 232, 1084, 346, 2826, 328, 323, 7678, 3548, 8265, 8222, 2435,
+ 5831, 4610, 2848, 3632, 7521, 4439, 3632, 7521, 5789, 7461, 4628, 3558, -3146, -5246,
+ -6836, -5233, -1471, -8024, -8024, -2061, 41, -5842, -5842, -1956, 362, -6, 1, -7772,
+ -3446, -4634, -7772, -3446, -4637, -4679, -4986, -6111, -2724, -953, -1363, -1060, 6629, -2218,
+ -2208, -4761, -2654, -4541, -4466, 1293, -7746, -7167, -5010, -2567, -2974, -607, -2567, -2974,
+ -2116, -4334, -2448, -2861, 543, -84, -12, -16, 15, -18, -17, -995, 8203, 4243,
+ 4241, 3, 3511, 1882, 1440, 2681, 3026, 2416, 2681, 3026, 3277, 3004, 1283, 1052,
+ -85, 1943, 3884, 1939, -1054, 4396, 4405, -1836, 3662, 9341, 9408, 529, 567, 85,
+ 601, 8871, 1191, 3202, 8871, 1191, 3202, 2709, 653, 1137, 723, -240, -436, -363,
+ 8272, -1559, -1550, -2342, 2246, 6304, 6382, 2733, 1347, -793, 4663, 7784, 7630, 9859,
+ 7784, 7630, 8108, 6246, 8290, 7676, 2644, -912, 461, -896, 3501, -902, -902, 4814,
+ 549, 6243, 6241, 2864, 1949, 1999, 1972, 2378, 4369, 2486, 2378, 4369, 2485, 4363,
+ 2707, 1413, 1019, 2649, 2235, 2581, 1543, 2564, 2571, -1332, 3052, 5321, 5371, 1669,
+ 2241, 553, 3934, 7656, 4203, 6558, 7656, 4203, 5726, 4224, 5383, 5909, 3111, -89,
+ -2, -8, 0, -4, -3, 3967, 3551, 4696, 4695, 0, 3568, 3753, 1108, 2699,
+ 2976, 2311, 2699, 2976, 3331, 2955, 878, 607, -1637, -6, -7, -8, 10, -10,
+ -19, -56, 1491, -1890, -1953, 0, 1559, 2472, 1962, -1627, 1962, 208, -1627, 1962,
+ 208, 1941, 3169, 3167, -12449, -5144, -7662, -5221, -1558, -8848, -8837, -14036, -727, -11696,
+ -11618, -1954, -7354, -7529, -5467, -11302, -11278, -9497, -11302, -11278, -10664, -12647, -11917, -12731,
+ -2912, 140, -10, 1, 20, -12, -20, -2020, 567, -2805, -2844, 2, 1315, 1304,
+ 5790, 751, 2593, 2600, 751, 2593, 858, 2611, 6957, 7405, -12449, -5144, -7662, -5221,
+ -1558, -8848, -8837, -14036, -727, -11696, -11618, -1954, -7354, -7529, -5467, -11302, -11278, -9497,
+ -11302, -11278, -10664, -12647, -11917, -12731, -1529, -200, -110, -201, 127, -207, -217, 263,
+ 1374, -1828, -1894, 67, 1595, 2546, 2014, -1818, 2052, 102, -1818, 2052, 102, 2027,
+ 3191, 3099, 3861, 2375, 1982, 2495, -6027, 3440, 3428, 2873, 611, -1563, -1656, -1525,
+ 1706, 2285, -1539, -2183, -1868, -4105, -2183, -1868, -2333, -384, -1867, -938, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1790, 134, 0, 13, 6, 3,
+ 4, -4205, -1469, -1466, -1445, 0, -876, -2574, 2711, 1449, -107, 1457, 1449, -107,
+ -83, -73, 2676, 3082, 3821, 3483, 2730, 3527, 985, 3525, 3527, 1209, 4395, 5996,
+ 6001, 1338, 4407, 2724, 2739, 6851, 5587, 6396, 6851, 5587, 7068, 5573, 5076, 5653,
+ -3432, -1976, -3263, -2044, 1659, -4025, -4019, -6193, 911, -2596, -2552, 54, -2370, -3333,
+ -522, -1997, -1933, -843, -1997, -1933, -1825, -2703, -1743, -2206, -3, 0, -3, 0,
+ 5, -3, -3, -5, -1, -5, -5, 0, 0, 0, 0, -2, 3, 4,
+ -2, 3, 3, 0, 3, 3, 3307, -109, 0, -11, -5, -2, -3, 491,
+ 3047, 3045, 3027, 0, 2563, 261, -370, 669, 1934, 662, 669, 1934, 1915, 1906,
+ -341, -665, -2160, 460, 2301, 462, 2745, 2062, 2063, -134, 238, 2147, 2152, 1125,
+ -6, -153, -96, 1646, 2233, 2137, 1646, 2233, 2130, 1973, 1838, 1611, 6698, 1776,
+ 1325, 1914, -51, 1930, 1918, 6295, 807, -1241, -1338, 248, 2287, 2389, -1650, -2752,
+ 2243, -772, -2752, 2243, 1102, 2184, 938, 1032, 1281, 2527, 1878, 2510, -5839, 3339,
+ 3339, -305, -50, -864, -863, -1522, -431, 0, 0, 1722, -3465, -1971, 1722, -3465,
+ -1971, -2004, -1573, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1764, 71, -2574, 6, 3758, -2573, -2571, -5853, -1082, -2594, -2580, 2, -727, -1000,
+ 810, 313, 1994, 3361, 313, 1994, 2527, 758, 3364, 3581, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -2101, 152, -1087, 15, 1909, -1083, -1082, -3775,
+ -919, -2649, -2627, 1, 9, -1172, 3838, 1603, 1807, 3839, 1603, 1807, 2088, 969,
+ 4955, 5411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -163, 8, 0, 1, 0, 0,
+ 0, -150, -144, -144, -143, 0, -110, -91, 98, 25, -65, 25, 25, -65,
+ -64, -63, 96, 120, 583, 0, -1165, 0, 5004, -1165, -1165, -1966, 13, -907,
+ -910, 2, 425, 0, 0, 618, 3832, 4246, 618, 3832, 4246, 2401, 3792, 3792,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -2487, 152, -1630, 15, 2860, -1626, -1625, -4658,
+ -898, -3495, -3473, 2, 152, -1161, 3827, 1205, 2405, 4554, 1205, 2405, 2814, 1129,
+ 5522, 5975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1953, 93, 0, 9, 4, 2,
+ 3, -1800, -1731, -1729, -1714, 0, -1318, -1087, 1181, 299, -782, 305, 299, -782,
+ -766, -758, 1157, 1436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2438, -143, -91, -14, 152, -94, -95, 1049,
+ 2167, 2020, 1997, 0, 1556, 690, -2299, -1009, 810, -833, -1009, 810, 807, 700,
+ -2166, -2591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4187, -619, 2146, -604,
+ 3590, 925, 925, 5890, 24, 7573, 7576, 2762, -225, 0, 0, 3322, 3228, 1406,
+ 3322, 3228, 1406, 3977, 1701, 542, 1721, 2303, 793, 2248, 6906, 960, 961, -2035,
+ 823, 1355, 1361, 1787, 1521, -88, 2644, 4682, 7195, 8538, 4682, 7195, 7865, 5691,
+ 8584, 8915, -2718, -5171, -6721, -5026, -2345, -7912, -7904, -5061, 8390, -919, -881, -1735,
+ 536, -2230, -3940, -6527, -4877, -6207, -6527, -4877, -4556, -5700, -10537, -12097, 1416, 4721,
+ 4159, 4707, 1826, 5527, 5537, -3203, 3844, 6259, 6326, 936, 903, -33, 520, 9653,
+ 3594, 7229, 9653, 3594, 7228, 3791, 4029, 5326, -11893, 960, -953, 838, 2654, -1474,
+ -1468, -12299, -2757, -9152, -9095, 2274, -7845, -7433, -4661, -6235, -6444, -4104, -6235, -6444,
+ -5733, -7643, -4897, -4963, 402, -705, 2412, -840, 826, 1522, 1523, 1996, -792, 7977,
+ 8000, 1607, 1191, 830, 6017, 7359, 3872, 3953, 7359, 3872, 2092, 5341, 6303, 5938,
+ -5419, 84, -88, 8, 3100, -87, -78, -8620, -2907, -4103, -4035, 3, -7304, -7052,
+ -5533, -1758, -4686, -1972, -1758, -4686, -2960, -5202, -3994, -3730, 4980, -2845, 651, -2976,
+ -117, -614, -614, 7131, -789, 7150, 7174, 506, 1186, 827, 6021, 5636, 2642, 2231,
+ 5636, 2642, 367, 4109, 4600, 3882, -5419, 84, -88, 8, 3100, -87, -78, -8620,
+ -2907, -4103, -4035, 3, -7304, -7052, -5533, -1758, -4686, -1972, -1758, -4686, -2960, -5202,
+ -3994, -3730, 4999, -2853, 643, -2984, -125, -622, -622, 7150, -795, 7135, 7159, 498,
+ 1182, 823, 6025, 5629, 2631, 2224, 5629, 2631, 356, 4098, 4596, 3879, -3811, 147,
+ -87, 15, 3102, -85, -75, -6776, -776, -1972, -1893, 3, -4898, -5496, -1452, 1727,
+ -1921, 1517, 1727, -1921, -184, -2421, 72, 516, 1408, 4721, 4159, 4707, 1826, 5527,
+ 5537, -3227, 3871, 6282, 6349, 936, 896, -48, 508, 9672, 3584, 7233, 9672, 3584,
+ 7232, 3780, 4006, 5304, 497, 666, -953, 810, 3016, -1481, -1473, -2182, 8973, 4994,
+ 5030, 2275, 3178, 221, -1686, 1380, 3098, 2733, 1380, 3098, 4487, 1832, -1971, -2930,
+ 1705, 2303, 770, 2248, 6945, 938, 938, -2072, 823, 1319, 1324, 1787, 1527, -88,
+ 2644, 4665, 7220, 8567, 4665, 7220, 7895, 5698, 8609, 8940, 1085, -5123, -6432, -4972,
+ -1228, -7623, -7625, 1213, 4777, -835, -860, -1680, 4427, 2378, -31, -6120, -15, -2988,
+ -6120, -15, -1234, -1288, -4730, -6317, 1702, 2303, 766, 2248, 6952, 934, 934, -2078,
+ 822, 1312, 1318, 1787, 1528, -88, 2644, 4662, 7225, 8572, 4662, 7225, 7900, 5699,
+ 8614, 8944, 4668, -4991, -5312, -4961, 3143, -6500, -6510, 4321, -55, 452, 383, -1682,
+ 5322, 4540, 4875, -1774, 6433, 3230, -1774, 6433, 3444, 5171, 5741, 4557, -2909, -996,
+ 350, -1098, 3630, -1115, -1109, -13, -2937, 2728, 2777, 2939, -2670, -1099, 724, 1380,
+ 372, 681, 1380, 372, -843, 407, 792, -201, 4017, -4847, -7060, -4818, 650, -8260,
+ -8270, 3168, -55, -1871, -1940, -1509, 5308, 4540, 4875, -4139, 3966, 740, -4139, 3966,
+ 954, 2762, 3261, 2066, -3019, -1002, 348, -1104, 3633, -1120, -1115, -6, -3050, 2621,
+ 2670, 2941, -2783, -1099, 611, 1265, 260, 565, 1265, 260, -959, 295, 676, -319,
+ 6556, -3440, 75, -3572, -653, -1211, -1211, 8742, -827, 6539, 6563, -34, 1156, 802,
+ 6047, 5068, 2078, 1664, 5068, 2078, -225, 3546, 4052, 3322, -3766, 105, -88, 11,
+ 3100, -86, -76, -8581, -361, -1557, -1485, 3, -4666, -6175, -2336, 1241, -1928, 1029,
+ 1241, -1928, -198, -2438, -802, -476, 1395, 4721, 4159, 4707, 1826, 5527, 5537, -3261,
+ 3906, 6311, 6379, 936, 886, -69, 493, 9700, 3568, 7239, 9700, 3568, 7238, 3765,
+ 3977, 5274, -191, 665, -953, 810, 3484, -1481, -1476, -2967, 9660, 4234, 4254, 2274,
+ 2900, 188, -1856, 717, 3394, 2560, 717, 3394, 4314, 2123, -1350, -2309, 1689, 2303,
+ 749, 2248, 6982, 917, 917, -2106, 823, 1286, 1291, 1787, 1532, -88, 2644, 4650,
+ 7243, 8595, 4650, 7243, 7922, 5704, 8632, 8962, 2322, -4727, -7073, -4698, 950, -8262,
+ -8272, 1344, -55, -1943, -2012, -1420, 5337, 4540, 4875, -4120, 4190, 1008, -4120, 4190,
+ 1222, 2888, 3497, 2312, -2805, -1023, 337, -1124, 3645, -1141, -1136, 17, -2843, 2846,
+ 2895, 2948, -2576, -1099, 818, 1462, 470, 762, 1462, 470, -762, 506, 873, -132,
+ 6636, -3345, 101, -3480, -778, -1119, -1118, 8725, -850, 6342, 6366, -127, 1140, 789,
+ 6062, 5090, 1998, 1685, 5090, 1998, -217, 3466, 4081, 3418, -1760, 125, -87, 13,
+ 3101, -85, -75, -6387, 1110, -86, -11, 3, -3109, -5375, -252, 3135, -258, 2924,
+ 3135, -258, 1475, -763, 1278, 1656, 3846, 4721, 4159, 4703, 1826, 5527, 5516, 3116,
+ -2630, 847, 775, 932, 2812, 3875, 3316, 4610, 6379, 6181, 4610, 6379, 6180, 6536,
+ 9458, 10755, 1766, 666, -953, 810, 2904, -1481, -1474, -453, 7256, 4950, 4977, 2274,
+ 3695, 871, -1109, 1317, 3562, 2938, 1317, 3562, 4692, 2292, -1331, -2290, 4564, 2302,
+ 4599, 2248, 241, 4766, 4767, 4272, 794, 7398, 7411, 1782, 609, -87, 2644, 7448,
+ 3058, 3505, 7448, 3058, 2832, 4625, 4533, 4864, 7187, -4898, -1770, -4868, -1441, -2958,
+ -2968, 10093, -76, 5363, 5299, -1592, 4640, 4540, 4875, 689, 3740, -134, 689, 3740,
+ 80, 4769, 3112, 1927, -5166, 5080, 3456, 4943, 182, 4937, 4942, -6534, -3086, -2783,
+ -2740, 857, -2745, -1099, 649, 4103, -777, 3392, 4103, -777, 1868, -732, 3379, 5181,
+ 7194, -4492, -4490, -4463, 4147, -5621, -5630, 7224, -55, 613, 544, -1345, 5377, 4540,
+ 4875, -1202, 7343, 4266, -1202, 7343, 4479, 5895, 6719, 5590, -5182, 5074, 3454, 4937,
+ 184, 4931, 4936, -6527, -3105, -2796, -2753, 859, -2764, -1099, 630, 4082, -795, 3370,
+ 4082, -795, 1846, -750, 3357, 5156, 10452, -2499, 1183, -2337, 97, 49, 47, 11859,
+ 5276, 13384, 13355, 793, 5807, 4635, 1881, 5108, 5717, 1681, 5108, 5717, 3569, 7102,
+ 1057, -511, -5172, 105, -88, 10, 3101, -86, -77, -8815, -2311, -3507, -3435, 3,
+ -6616, -6865, -4286, -708, -3878, -921, -708, -3878, -2148, -4388, -2752, -2426, 9602, -174,
+ 2373, -25, -1218, 2365, 2362, 9351, 5242, 11304, 11273, 1, 5802, 4631, 1885, 6181,
+ 5307, 2750, 6181, 5307, 4634, 6696, 2081, 1583, -3839, 105, -88, 11, 3100, -86,
+ -76, -8815, -977, -2174, -2102, 3, -5282, -6865, -2953, 625, -2545, 413, 625, -2545,
+ -815, -3055, -1418, -1092, 3833, 4721, 4159, 4703, 1826, 5527, 5516, 3082, -2595, 877,
+ 805, 932, 2802, 3854, 3301, 4637, 6364, 6186, 4637, 6364, 6186, 6521, 9429, 10726,
+ -708, 666, -953, 810, 2941, -1481, -1473, -3377, 10099, 4445, 4481, 2275, 2779, -169,
+ -2082, 873, 2627, 2245, 873, 2627, 3999, 1360, -2430, -3389, 4548, 2302, 4578, 2248,
+ 277, 4746, 4746, 4238, 794, 7365, 7378, 1782, 614, -87, 2644, 7433, 3081, 3532,
+ 7433, 3081, 2860, 4631, 4555, 4886, 7663, -4748, -1184, -4718, -2058, -2372, -2382, 10965,
+ -79, 6207, 6144, -1442, 4535, 4540, 4875, 1156, 3414, -563, 1156, 3414, -350, 4796,
+ 2795, 1611, -5192, 5047, 3440, 4910, 200, 4904, 4909, -6498, -3123, -2791, -2748, 868,
+ -2783, -1099, 611, 4050, -810, 3339, 4050, -810, 1815, -764, 3326, 5113, 10164, -4908,
+ -1228, -4747, -2323, -2361, -2364, 11573, 5249, 10886, 10857, -1620, 5786, 4618, 1900, 2700,
+ 3292, -726, 2700, 3292, 1145, 4677, -1337, -2899, -6179, 124, -88, 12, 3101, -85,
+ -76, -8410, -3460, -4655, -4580, 3, -7679, -6791, -4829, -1436, -4830, -1648, -1436, -4830,
+ -3096, -5335, -3300, -2918, 3824, 4721, 4159, 4703, 1826, 5527, 5516, 3060, -2572, 895,
+ 824, 932, 2795, 3840, 3291, 4655, 6354, 6190, 4655, 6354, 6189, 6511, 9410, 10707,
+ -306, 666, -953, 810, 2753, -1481, -1474, -2512, 9239, 4078, 4105, 2274, 3044, 222,
+ -1760, 514, 2760, 2136, 514, 2760, 3891, 1491, -2131, -3090, 4538, 2302, 4565, 2248,
+ 300, 4732, 4733, 4216, 794, 7344, 7357, 1782, 617, -87, 2644, 7423, 3095, 3549,
+ 7423, 3095, 2877, 4634, 4569, 4900, 9510, -5079, -1341, -4918, -2302, -2532, -2535, 11006,
+ 5235, 10946, 10918, -1628, 5775, 4608, 1910, 2597, 3256, -829, 2597, 3256, 1033, 4642,
+ -1430, -3046, -2932, 143, -87, 14, 3102, -85, -75, -9328, -169, -1365, -1287, 3,
+ -4309, -7358, -979, 2245, -1357, 2035, 2245, -1357, 380, -1857, 545, 983, 3819, 4721,
+ 4159, 4704, 1826, 5527, 5516, 3044, -2556, 909, 838, 932, 2791, 3831, 3284, 4667,
+ 6348, 6193, 4667, 6348, 6192, 6505, 9396, 10694, 1893, 666, -953, 810, 3016, -1481,
+ -1473, -599, 7414, 5344, 5377, 2275, 3652, 741, -1191, 1691, 3593, 3137, 1691, 3593,
+ 4891, 2326, -1415, -2374, 4531, 2302, 4555, 2248, 317, 4723, 4724, 4200, 795, 7330,
+ 7342, 1782, 619, -88, 2644, 7417, 3105, 3562, 7417, 3105, 2890, 4637, 4579, 4910,
+ 4807, -4672, -5234, -4642, 3884, -6422, -6432, 4241, -53, 388, 319, -1363, 5380, 4540,
+ 4875, -1631, 7014, 3868, -1631, 7014, 4081, 5557, 6317, 5132, -4916, 5011, 3422, 4875,
+ 220, 4869, 4874, -6459, -2860, -2496, -2452, 880, -2520, -1099, 874, 4297, -541, 3585,
+ 4297, -541, 2061, -495, 3573, 5344, 3812, 4721, 4159, 4704, 1826, 5527, 5516, 3028,
+ -2540, 922, 852, 932, 2786, 3821, 3277, 4680, 6341, 6195, 4680, 6341, 6194, 6498,
+ 9383, 10680, 499, 666, -953, 810, 3016, -1481, -1473, -2137, 8900, 4896, 4931, 2275,
+ 3168, 234, -1686, 1288, 3098, 2687, 1288, 3098, 4441, 1831, -1940, -2900, 4524, 2302,
+ 4546, 2248, 333, 4714, 4714, 4184, 795, 7315, 7327, 1782, 621, -88, 2644, 7410,
+ 3116, 3575, 7410, 3116, 2902, 4639, 4589, 4920, 867, -4671, -6296, -4642, -280, -7484,
+ -7494, 2549, -54, -3475, -3544, -1363, 5358, 4540, 4875, -5573, 2904, -260, -5573, 2904,
+ -46, 1525, 2208, 1024, -4910, 4996, 3414, 4860, 228, 4854, 4859, -6443, -2860, -2483,
+ -2439, 885, -2520, -1099, 874, 4290, -538, 3578, 4290, -538, 2054, -492, 3567, 5330,
+ 10485, -2830, 1012, -2669, 287, -284, -287, 12137, 5202, 13605, 13577, 908, 5747, 4586,
+ 1934, 4967, 5740, 1541, 4967, 5740, 3381, 7126, 962, -747, -4442, 143, -88, 14,
+ 3102, -85, -75, -8969, -1416, -2612, -2533, 3, -5555, -6870, -2218, 1003, -2601, 793,
+ 1003, -2601, -865, -3102, -694, -256, 3803, 4721, 4159, 4704, 1826, 5527, 5516, 3006,
+ -2519, 940, 870, 932, 2779, 3807, 3268, 4697, 6331, 6199, 4697, 6331, 6198, 6488,
+ 9365, 10662, -9075, 952, -953, 838, 3028, -1475, -1464, -12087, -399, -5622, -5541, 2275,
+ -6054, -7757, -3235, -2965, -4478, -1546, -2965, -4478, -3086, -5672, -3564, -3654, 3802, 4721,
+ 4159, 4704, 1826, 5527, 5516, 3001, -2511, 947, 877, 932, 2778, 3804, 3264, 4702,
+ 6328, 6200, 4702, 6328, 6199, 6486, 9359, 10656, 2739, 666, -953, 809, 2941, -1481,
+ -1482, 1983, 4761, 2901, 2875, 2273, 4430, 2378, -31, -589, 4672, 2571, -589, 4672,
+ 4325, 3388, 799, -160, 4511, 2302, 4529, 2248, 363, 4697, 4697, 4157, 795, 7288,
+ 7300, 1782, 626, -87, 2644, 7398, 3134, 3597, 7398, 3134, 2924, 4644, 4607, 4938,
+ 6351, -4747, -2940, -4718, 1017, -4128, -4138, 8055, -66, 3418, 3352, -1440, 4957, 4540,
+ 4875, -121, 5323, 1759, -121, 5323, 1972, 5288, 4665, 3480, -5051, 4969, 3400, 4833,
+ 244, 4827, 4832, -6414, -3010, -2609, -2565, 894, -2670, -1099, 723, 4127, -683, 3416,
+ 4127, -683, 1892, -638, 3405, 5156, 10506, -2972, 938, -2812, 368, -427, -429, 12263,
+ 5176, 13706, 13678, 957, 5726, 4569, 1953, 4905, 5754, 1480, 4905, 5754, 3303, 7139,
+ 918, -853, 4383, -154, -87, -14, 3089, -91, -84, -39, 6551, 5349, 5380, 3,
+ 1097, -1559, -3518, 2506, 2344, 2276, 2506, 2344, 4030, 1768, -1916, -2377, 4504, 2302,
+ 4520, 2248, 379, 4687, 4688, 4140, 796, 7273, 7286, 1782, 628, -88, 2644, 7391,
+ 3144, 3610, 7391, 3144, 2937, 4647, 4617, 4948, -552, -4955, -6911, -4804, -77, -8103,
+ -8104, -2136, 7159, -1189, -1214, -1512, 3695, 1596, -812, -6224, 223, -2696, -6224, 223,
+ -942, -1206, -4499, -6086, 4501, 2302, 4516, 2248, 386, 4683, 4684, 4134, 795, 7267,
+ 7279, 1782, 629, -88, 2644, 7388, 3148, 3614, 7388, 3148, 2942, 4648, 4621, 4952,
+ 2296, -4821, -6911, -4793, 1262, -8100, -8110, 1652, -54, -2084, -2153, -1514, 5369, 4540,
+ 4875, -4143, 4414, 1262, -4143, 4414, 1476, 3001, 3718, 2533, -5156, 4948, 3390, 4812,
+ 255, 4806, 4811, -6392, -3122, -2702, -2659, 902, -2783, -1099, 611, 4005, -793, 3293,
+ 4005, -793, 1769, -747, 3283, 5024, 3788, 4721, 4159, 4704, 1826, 5527, 5516, 2963,
+ -2473, 979, 910, 932, 2766, 3781, 3248, 4732, 6312, 6206, 4732, 6312, 6206, 6469,
+ 9326, 10624, 1654, 800, -953, 820, 2646, -1478, -1488, 3300, -72, -479, -549, 2271,
+ 5326, 4540, 4875, -911, 6448, 4121, -911, 6448, 4335, 5179, 6598, 6042, -5266, 4939,
+ 3385, 4803, 261, 4797, 4802, -6382, -3235, -2808, -2764, 905, -2896, -1099, 498, 3888,
+ -903, 3177, 3888, -903, 1653, -858, 3166, 4904, 14509, -1311, 2141, -1158, 553, 1228,
+ 1226, 15605, 5135, 13470, 13442, 1362, 5704, 4550, 1973, 6064, 6301, 2638, 6064, 6301,
+ 4442, 7688, 2071, 736, 4383, -154, -87, -14, 3089, -91, -84, -39, 6626, 5424,
+ 5455, 3, 1172, -1484, -3443, 2581, 2419, 2352, 2581, 2419, 4106, 1843, -1841, -2302,
+ 4490, 2302, 4501, 2248, 412, 4668, 4669, 4109, 796, 7243, 7256, 1782, 632, -88,
+ 2644, 7378, 3165, 3634, 7378, 3165, 2962, 4652, 4637, 4968, 1458, -4880, -7142, -4729,
+ -936, -8333, -8334, 601, 5724, 561, 536, -1437, 6295, 4189, 1783, -4556, 1939, -973,
+ -4556, 1939, 781, 489, -2786, -4373, 4487, 2302, 4497, 2248, 419, 4665, 4665, 4104,
+ 795, 7237, 7249, 1782, 633, -87, 2644, 7374, 3169, 3639, 7374, 3169, 2967, 4653,
+ 4642, 4972, 4448, -4935, -3477, -4906, -1503, -4665, -4675, 7324, -68, 1723, 1658, -1629,
+ 4897, 4540, 4875, -2029, 2964, -657, -2029, 2964, -443, 3131, 2311, 1127, -5146, 4918,
+ 3374, 4783, 273, 4776, 4781, -6360, -3122, -2676, -2633, 912, -2783, -1099, 611, 3991,
+ -787, 3280, 3991, -787, 1756, -742, 3270, 4998, 13173, -3823, 84, -3666, -498, -1281,
+ -1284, 14937, 5125, 12706, 12679, 101, 5688, 4537, 1988, 4058, 4876, 633, 4058, 4876,
+ 2425, 6262, 96, -1665, -2778, 135, -87, 14, 3102, -85, -75, -9205, -15, -1211,
+ -1134, 3, -4189, -7265, -1067, 2231, -1281, 2020, 2231, -1281, 454, -1784, 460, 874,
+ 3773, 4721, 4159, 4704, 1826, 5527, 5517, 2926, -2434, 1011, 943, 932, 2755, 3758,
+ 3231, 4762, 6295, 6212, 4762, 6295, 6212, 6453, 9294, 10591, 2792, 666, -953, 809,
+ 3016, -1481, -1479, 1268, 5519, 4142, 4141, 2274, 4219, 1795, -407, 567, 4373, 2985,
+ 567, 4373, 4739, 3096, 8, -951, 4478, 2302, 4484, 2248, 442, 4651, 4652, 4082,
+ 795, 7215, 7228, 1782, 637, -87, 2644, 7365, 3184, 3657, 7365, 3184, 2984, 4657,
+ 4656, 4987, 9627, -4809, -1078, -4655, -2039, -2269, -2272, 11135, 5106, 11079, 11052, -1366,
+ 5676, 4527, 1998, 2882, 3461, -544, 2882, 3461, 1238, 4848, -1081, -2676, 1178, -1,
+ -87, 1, 3096, -88, -79, -2995, 3860, 2661, 2716, 3, -917, -3193, -1432, 3144,
+ 1210, 2925, 3144, 1210, 2923, 673, 131, 129, 3766, 4721, 4159, 4704, 1826, 5527,
+ 5517, 2909, -2420, 1023, 955, 932, 2749, 3747, 3225, 4775, 6288, 6215, 4775, 6288,
+ 6214, 6446, 9282, 10579, -9568, 949, -953, 838, 3028, -1475, -1464, -11674, -907, -5546,
+ -5466, 2275, -5975, -6773, -3221, -2959, -4411, -1524, -2959, -4411, -3034, -5605, -3539, -3638,
+ 3764, 4721, 4159, 4704, 1826, 5527, 5517, 2903, -2413, 1029, 961, 932, 2748, 3743,
+ 3222, 4780, 6285, 6216, 4780, 6285, 6215, 6443, 9276, 10574, -7441, 958, -953, 839,
+ 3028, -1474, -1463, -10440, 2889, -3172, -3087, 2275, -3699, -6247, -719, -362, -2102, 978,
+ -362, -2102, -633, -3294, -1101, -1178, 3762, 4721, 4159, 4704, 1826, 5527, 5517, 2897,
+ -2406, 1034, 967, 932, 2746, 3740, 3219, 4784, 6283, 6217, 4784, 6283, 6216, 6441,
+ 9270, 10568, -1020, 666, -953, 810, 2809, -1481, -1474, -3440, 8250, 2128, 2159, 2275,
+ 861, -2017, -3969, -1421, 608, 91, -1421, 608, 1845, -660, -4356, -5315, 4465, 2302,
+ 4467, 2248, 472, 4634, 4635, 4053, 796, 7189, 7202, 1782, 640, -88, 2644, 7353,
+ 3202, 3679, 7353, 3202, 3007, 4661, 4673, 5004, 957, -5011, -6997, -4860, -1052, -8188,
+ -8190, 31, 4971, -882, -907, -1568, 4364, 2302, -106, -6124, 54, -2904, -6124, 54,
+ -1150, -1252, -4664, -6251, 4461, 2302, 4463, 2248, 478, 4631, 4631, 4046, 797, 7184,
+ 7196, 1782, 641, -88, 2643, 7351, 3205, 3684, 7351, 3205, 3012, 4662, 4676, 5007,
+ -7980, -4708, -6997, -4829, -1039, -8182, -8171, -10298, 1918, -6478, -6390, -1566, -3207, -5432,
+ 49, -5237, -6175, -3833, -5237, -6175, -5564, -7385, -5798, -6474, 3755, 4721, 4159, 4704,
+ 1826, 5527, 5517, 2878, -2387, 1051, 983, 932, 2741, 3728, 3211, 4799, 6275, 6220,
+ 4799, 6275, 6219, 6433, 9254, 10552, -1033, 666, -953, 810, 2753, -1481, -1474, -3291,
+ 9993, 3810, 3838, 2274, 2803, -20, -2002, 272, 2517, 1895, 272, 2517, 3649, 1248,
+ -2373, -3332, 4457, 2302, 4455, 2248, 492, 4623, 4624, 4035, 795, 7171, 7183, 1782,
+ 643, -87, 2644, 7344, 3214, 3694, 7344, 3214, 3022, 4665, 4686, 5017, 9313, -5070,
+ -1341, -4917, -2302, -2532, -2535, 10825, 5061, 10771, 10745, -1629, 5642, 4499, 2029, 2626,
+ 3177, -799, 2626, 3177, 955, 4565, -1314, -2901, -6119, 141, -88, 14, 3102, -86,
+ -76, -8554, -3416, -4611, -4533, 3, -7561, -6931, -4259, -1026, -4614, -1236, -1026, -4614,
+ -2879, -5115, -2734, -2302, 10314, -2797, 1024, -2644, 273, -259, -262, 11962, 5057, 13438,
+ 13412, 899, 5637, 4495, 2033, 5003, 5671, 1578, 5003, 5671, 3328, 7058, 1069, -605,
+ 1174, -1, -87, 1, 3096, -88, -79, -2992, 3537, 2339, 2394, 3, -1238, -3511,
+ -1744, 2829, 891, 2610, 2829, 891, 2604, 354, -182, -182, 3747, 4721, 4159, 4704,
+ 1826, 5527, 5517, 2857, -2364, 1070, 1003, 932, 2734, 3715, 3201, 4817, 6265, 6224,
+ 4817, 6265, 6223, 6423, 9235, 10533, 1659, 666, -953, 810, 2697, -1481, -1475, -183,
+ 6980, 4506, 4528, 2274, 3776, 1039, -989, 890, 3474, 2684, 890, 3474, 4438, 2203,
+ -1304, -2263, 4446, 2302, 4442, 2248, 515, 4610, 4610, 4012, 796, 7151, 7163, 1782,
+ 646, -88, 2644, 7335, 3228, 3712, 7335, 3228, 3039, 4668, 4699, 5030, -214, -5124,
+ -7337, -4972, -1541, -8528, -8523, -2401, 6996, 499, 522, -1680, 3787, 1040, -989, -4862,
+ -1325, -2972, -4862, -1325, -1218, -2630, -6946, -8533, 4444, 2302, 4438, 2248, 521, 4606,
+ 4607, 4007, 795, 7144, 7156, 1782, 647, -87, 2644, 7332, 3233, 3717, 7332, 3233,
+ 3044, 4670, 4704, 5035, 7272, -4992, -1624, -4962, -1959, -2813, -2823, 10396, -78, 5651,
+ 5588, -1687, 4583, 4540, 4875, 769, 3383, -549, 769, 3383, -335, 4606, 2760, 1575,
+ -5226, 4826, 3326, 4690, 327, 4683, 4688, -6262, -3234, -2707, -2664, 944, -2896, -1099,
+ 498, 3835, -883, 3125, 3835, -883, 1601, -838, 3117, 4802, 1427, -5565, -7473, -5413,
+ -1455, -8699, -8701, 861, 7216, -366, -391, -2026, 5804, 3709, 1301, -5518, 947, -2023,
+ -5518, 947, -269, -470, -3821, -5440, 4437, 2302, 4431, 2248, 535, 4599, 4599, 3992,
+ 797, 7133, 7146, 1782, 649, -89, 2643, 7328, 3240, 3727, 7328, 3240, 3054, 4671,
+ 4710, 5041, -8432, -4916, -7069, -5002, -1292, -8255, -8244, -11205, 2727, -6951, -6871, -1735,
+ -3430, -6034, -1213, -6512, -6877, -5030, -6512, -6877, -6315, -8111, -7279, -8070, 3733, 4721,
+ 4159, 4704, 1826, 5527, 5517, 2824, -2334, 1095, 1029, 932, 2723, 3695, 3188, 4842,
+ 6251, 6229, 4842, 6251, 6228, 6409, 9209, 10507, -12181, 965, -953, 839, 2653, -1474,
+ -1464, -12551, -2501, -8553, -8474, 2275, -8367, -7814, -5182, -5595, -7072, -4081, -5595, -7072,
+ -5768, -8264, -5827, -5879, 10054, -2219, 1320, -2071, -51, 315, 312, 11295, 5008, 12885,
+ 12858, 704, 5605, 4469, 2062, 5276, 5552, 1851, 5276, 5552, 3575, 6941, 1351, -52,
+ -6468, 134, -88, 12, 3102, -86, -77, -9209, -3837, -5031, -4955, 3, -8010, -7400,
+ -4882, -1587, -5101, -1797, -1587, -5101, -3367, -5603, -3356, -2942, 6173, -5706, -5668, -5675,
+ 2437, -6983, -6993, 6224, -54, 550, 483, -2047, 5268, 4540, 4875, -2182, 5781, 2357,
+ -2182, 5781, 2571, 4701, 4933, 3629, -434, 2604, 2178, 2461, 1602, 2448, 2453, -2151,
+ 834, 3342, 3391, 1713, 1249, -24, 5280, 7355, 3796, 6651, 7355, 3796, 4858, 3843,
+ 6910, 7628, 158, -458, -207, -394, 232, -398, -394, -1706, 9097, 5308, 5329, 135,
+ 3117, 1191, 1088, 3318, 2601, 2428, 3318, 2601, 3211, 2586, 349, -38, 2145, 1935,
+ 3881, 1928, -1050, 4388, 4379, 3969, -2280, 4380, 4319, 528, 2318, 3670, 3168, 4240,
+ 3747, 2237, 4240, 3747, 2236, 5228, 5633, 6113, -37, 0, 0, 0, 0, 0,
+ 0, -83, 69, 57, 58, 0, -28, -51, -28, 61, -36, 14, 61, -36,
+ 9, -36, -59, -58, 1116, 3293, 2612, 3285, 1119, 3286, 3286, 268, 526, 2508,
+ 2504, 1427, 1941, 1983, 1960, 4337, 3618, 4420, 4337, 3618, 4420, 3618, 4529, 5168,
+ 4589, 4587, 3299, 4629, 352, 4632, 4625, 2825, 1755, 2827, 2771, 956, 5308, 4458,
+ 3844, 5202, 6626, 6439, 5202, 6626, 7184, 6595, 7786, 8854, 4438, -89, -6, -10,
+ 6, -8, -18, 7422, 3, 1722, 1645, -2, 4614, 5895, 2640, -69, 4506, 1741,
+ -69, 4506, 2761, 4460, 3858, 3587, 4439, -89, -4, -10, 3, -6, -16, 7426,
+ 3, 1725, 1648, -2, 4614, 5895, 2640, -67, 4504, 1738, -67, 4504, 2758, 4460,
+ 3856, 3585, 4440, -89, -2, -10, 0, -4, -14, 7429, 3, 1728, 1651, -2,
+ 4613, 5895, 2640, -66, 4502, 1736, -66, 4502, 2756, 4459, 3854, 3583, 1645, -563,
+ -219, -425, 242, -423, -418, -678, 11166, 7302, 7322, 143, 4091, 1788, -182, 3490,
+ 3037, 2244, 3490, 3037, 3955, 3005, -1142, -1782, 9678, -545, 3073, -395, 2114, 1941,
+ 1948, 9352, 7751, 17415, 17450, 2730, 4783, 2756, 875, 9320, 6369, 4223, 9320, 6369,
+ 5930, 7738, 867, -652, 9640, -568, 3057, -419, 2134, 1914, 1920, 9292, 7795, 17464,
+ 17501, 2739, 4752, 2707, 860, 9358, 6342, 4230, 9358, 6342, 5926, 7709, 821, -707,
+ 4330, -443, 3027, -440, 2181, 1870, 1870, 6662, -215, 8499, 8507, 2749, -611, -171,
+ 163, 4043, 2265, 513, 4043, 2265, 357, 3649, 1110, 52, 5885, 4483, 3256, 4598,
+ 417, 4575, 4570, 3376, 4258, 5130, 5083, 965, 6160, 4792, 2388, 5688, 6909, 6366,
+ 5688, 6909, 8038, 6839, 5967, 6782, 3438, -89, -2, -9, 0, -4, -6, 4822,
+ 2675, 3962, 3942, 0, 3826, 4282, 1486, 2015, 3353, 2168, 2015, 3353, 3189, 3327,
+ 1613, 1342, 1581, -155, -6, -19, 2, -12, -8, -924, 10997, 6809, 6825, 3,
+ 4151, 1902, -115, 3542, 3041, 2394, 3542, 3041, 4113, 3012, -828, -1282, -3156, -5002,
+ -7418, -4990, -904, -8606, -8606, -3163, 42, -6033, -6034, -1713, 409, -14, 3, -7761,
+ -3039, -4163, -7761, -3039, -4170, -4452, -4577, -5701, 15589, -350, 1625, -201, 1673, 1198,
+ 1193, 15643, 989, 9427, 9380, 978, 5186, 4021, 1256, 4161, 6491, 3223, 4161, 6491,
+ 5056, 7077, 3111, 2230, 4729, 4467, 3287, 4585, 357, 4599, 4605, 178, 7658, 8170,
+ 8198, 972, 5169, 2733, 904, 8452, 5411, 6901, 8452, 5411, 8584, 5393, 3018, 3824,
+ -1923, -456, 3013, -440, 2205, 1856, 1865, -1366, 372, 5273, 5341, 2751, -7042, -6275,
+ -7026, 465, -4622, -4814, 465, -4622, -4822, -3235, -7231, -8322, 2570, 2029, 1965, 2024,
+ 1833, 2026, 2017, 4294, -2268, 1281, 1218, 1856, 2727, 3631, 3184, 1600, 5012, 3395,
+ 1600, 5012, 3371, 4995, 6322, 6386, 2839, 3963, 4890, 3952, 286, 5891, 5891, 1636,
+ -38, 4107, 4108, 1191, -323, -2, 2, 5725, 1980, 2977, 5725, 1980, 2975, 3061,
+ 3283, 4233, 1720, 2804, 4593, 2799, 175, 5032, 5032, 3327, -17, 3363, 3364, 1589,
+ -253, -7, 0, 3672, 1212, 1546, 3672, 1212, 1544, 2043, 1795, 2211, 1547, 650,
+ 666, 652, 688, 650, 659, -145, 2655, 105, 161, 693, -3402, -4212, -3764, 80,
+ -3071, -1538, 80, -3071, -1538, -3055, -4163, -4176, 2286, -157, -8, -25, 5, -16,
+ -18, 985, 8949, 5105, 5079, 3, 4705, 3078, 781, 1999, 3881, 2081, 1999, 3881,
+ 3771, 3840, 874, 426, 889, -5079, -3881, -5065, -1246, -5069, -5069, 2632, 34, -505,
+ -503, -1790, -14, -17, 1, -3744, -2208, -3749, -3744, -2208, -3756, -2212, -3709, -4833,
+ 15438, 55, 1826, 202, 1454, 1596, 1590, 15197, 985, 9056, 9008, 839, 5187, 4021,
+ 1256, 4344, 6426, 3417, 4344, 6426, 5250, 7008, 3294, 2600, 4708, 4441, 3273, 4558,
+ 373, 4572, 4579, 179, 7631, 8167, 8195, 981, 5148, 2716, 923, 8445, 5403, 6894,
+ 8445, 5403, 8559, 5386, 3024, 3822, 180, 3266, 2598, 3258, 1135, 3259, 3259, -796,
+ -16, 714, 713, 1436, -1, -2, 0, 2532, 1661, 2531, 2532, 1661, 2530, 1663,
+ 2501, 3128, 622, 2024, 1963, 2022, 1835, 2022, 2022, 535, -13, 1812, 1812, 1859,
+ -9, -8, 8, 1960, 1873, 1960, 1960, 1873, 1952, 1874, 1962, 2020, 4222, 69,
+ 2885, 80, 2523, 1998, 1998, 5785, 11, 7570, 7574, 2526, -322, -5, 2, 3924,
+ 2683, 1212, 3924, 2683, 1209, 3746, 1592, 750, 417, 59, 330, 6, 1063, -2,
+ 7, -698, 1453, -517, -449, 918, -4324, -4972, -2938, -14, -3502, -1626, -14, -3502,
+ -2375, -3470, -3642, -3761, 1917, -153, -7, -21, 3, -13, -13, 89, 9808, 5806,
+ 5798, 3, 4423, 2529, 417, 2686, 3488, 2226, 2686, 3488, 3899, 3453, 155, -288,
+ 133, -5078, -4641, -5065, 84, -5829, -5827, 880, 545, -1289, -1276, -1789, 19, -323,
+ -217, -3902, -1600, -2663, -3902, -1600, -2670, -2213, -3325, -4449, 15583, -368, 1600, -219,
+ 1711, 1165, 1160, 15634, 991, 9420, 9373, 984, 5189, 4020, 1255, 4143, 6511, 3235,
+ 4143, 6511, 5068, 7084, 3118, 2230, -10172, 4686, 3251, 4543, 410, 4535, 4546, -13496,
+ -1686, -6536, -6452, 996, -8739, -7989, -5328, 52, -6892, -1781, 52, -6892, -3422, -6833,
+ -3517, -1867, 190, 3232, 2581, 3224, 1154, 3225, 3225, -762, -19, 742, 740, 1448,
+ -4, -4, 2, 2517, 1666, 2515, 2517, 1666, 2512, 1668, 2488, 3100, 622, 2022,
+ 1962, 2021, 1836, 2021, 2021, 535, -11, 1814, 1814, 1859, -10, -9, 7, 1960,
+ 1873, 1959, 1960, 1873, 1952, 1873, 1960, 2017, 4334, 595, 3572, 603, 1497, 2939,
+ 2939, 5906, -6, 7761, 7765, 2349, -425, -6, 6, 4469, 2138, 902, 4469, 2138,
+ 897, 3539, 1384, 784, 1100, 4532, 5477, 4517, -806, 6753, 6753, 1477, -45, 1809,
+ 1809, 997, -253, -4, 4, 4463, 909, 2338, 4463, 909, 2335, 1743, 2558, 3770,
+ 1103, 4532, 5477, 4517, -806, 6753, 6753, 1480, -42, 1812, 1812, 997, -250, -2,
+ 2, 4463, 910, 2338, 4463, 910, 2336, 1744, 2556, 3767, 888, 4533, 5477, 4517,
+ -806, 6753, 6755, 936, 496, 2261, 2273, 997, -419, -338, -228, 4891, 671, 2428,
+ 4891, 671, 2421, 1508, 2103, 3316, 12673, 230, 2797, 364, -191, 2644, 2650, 10864,
+ 7631, 14036, 14070, 789, 4725, 2697, 940, 8972, 4786, 3993, 8972, 4786, 5642, 6113,
+ 629, 55, 9494, -540, 3009, -395, 2225, 1877, 1884, 9082, 7714, 17267, 17304, 2731,
+ 4703, 2654, 916, 9341, 6365, 4334, 9341, 6365, 5979, 7685, 949, -555, -37, 0,
+ 0, 0, 0, 0, 0, -81, 68, 55, 57, 0, -28, -50, -27, 60,
+ -36, 14, 60, -36, 9, -35, -58, -57, 3852, -192, 213, -227, 1193, -232,
+ -231, 4584, -820, 574, 581, 996, -633, -522, 567, 401, 469, 405, 401, 469,
+ -108, 479, 833, 547, 2872, 3838, 4806, 3827, 392, 5746, 5746, 1740, -33, 4192,
+ 4192, 1234, -316, 0, 0, 5653, 2025, 2945, 5653, 2025, 2945, 3090, 3247, 4139,
+ 7519, 807, 3031, 806, -426, 3085, 3085, 8022, -19, 5061, 5065, 654, -414, -11,
+ 5, 3876, 741, 424, 3876, 741, 416, 2096, 857, 912};
+
+const int16_t *const batch_matmul_2_s16_output_ref = batch_matmul_2_s16_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_input_tensor.h
new file mode 100644
index 00000000..5033c2d4
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_input_tensor.h
@@ -0,0 +1,30 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_2_s16_rhs_input_tensor[384] = {
+ 9993, 29161, -21856, 0, -13104, -9423, -21846, 0, -11176, -28148, -1, 0, -31552, -9410, -21846, 0,
+ -27824, -9404, -21846, 0, 5, 0, 7, 0, 0, 0, 0, 0, 1505, 0, 0, 0,
+ -14224, -9404, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -27664, -9404, -21846, 0, 2, 0, 0, 0, 17, 0, 0, 0, 145, 0, 0, 0,
+ 15792, -9533, -21846, 0, 30736, -9401, -21846, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+ -27712, -9404, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ -27712, -9404, -21846, 0, -17552, -18877, -1, 0, 96, 0, 0, 0, 48, 0, 0, 0,
+ 29865, 29177, -21856, 0, -29080, -30174, -1, 0, -29076, -30174, -1, 0, -29072, -30174, -1, 0,
+ 336, 0, 0, 0, 128, 0, 0, 0, 29801, 29177, -21856, 0, -27968, -9404, -21846, 0,
+ 24896, -10434, -21846, 0, -27872, -9404, -21846, 0, 24912, -10434, -21846, 0, -27936, -9404, -21846, 0,
+ 24920, -10434, -21846, 0, -27904, -9404, -21846, 0, 25552, -10434, -21846, 0, -27696, -9404, -21846, 0,
+ 9536, -9423, -21846, 0, 20, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4209, 0, 0, 0, -8784, -9406, -21846, 0, -21296, -9402, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -17984, -9400, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -12872, -9423, -21846, 0, 19080, -9495, -21846, 0,
+ -12816, -9423, -21846, 0, -12760, -9423, -21846, 0, 23208, -9426, -21846, 0, 4824, -9410, -21846, 0,
+ 4920, -9410, -21846, 0, 19080, -9495, -21846, 0, -12816, -9423, -21846, 0, -12632, -9423, -21846, 0,
+ -12760, -9423, -21846, 0, 23208, -9426, -21846, 0, 4824, -9410, -21846, 0, 4920, -9410, -21846, 0,
+ -12816, -9423, -21846, 0, -12760, -9423, -21846, 0, 23208, -9426, -21846, 0, 4824, -9410, -21846, 0,
+ 4920, -9410, -21846, 0, 19080, -9495, -21846, 0, -12816, -9423, -21846, 0, -12632, -9423, -21846, 0,
+ -12760, -9423, -21846, 0, 23208, -9426, -21846, 0, 4824, -9410, -21846, 0, -12376, -9423, -21846, 0,
+ 4872, -9410, -21846, 0, 4920, -9410, -21846, 0, -12632, -9423, -21846, 0, -12248, -9423, -21846, 0,
+ -12192, -9423, -21846, 0, 18688, -9495, -21846, 0, -24992, -9403, -21846, 0, 18688, -9495, -21846, 0,
+ -24992, -9403, -21846, 0, 18688, -9495, -21846, 0, -24992, -9403, -21846, 0, 23208, -9426, -21846, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_transposed_tensor.h
new file mode 100644
index 00000000..61c183fb
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/rhs_transposed_tensor.h
@@ -0,0 +1,34 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_2_s16_rhs_transposed_tensor[384] = {
+ 9993, -27824, -14224, -27664, 15792, -27712, -27712, 29865, 336, 24896, 24920, 9536, 0, 0,
+ 0, -12816, 4920, -12760, -12816, 4920, -12760, 4872, -12192, -24992, 29161, -9404, -9404, -9404,
+ -9533, -9404, -9404, 29177, 0, -10434, -10434, -9423, 0, 0, 0, -9423, -9410, -9423,
+ -9423, -9410, -9423, -9410, -9423, -9403, -21856, -21846, -21846, -21846, -21846, -21846, -21846, -21856,
+ 0, -21846, -21846, -21846, 0, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13104, 5,
+ -17552, 2, 30736, -17552, -17552, -29080, 128, -27872, -27904, 20, 4209, 0, 0, -12760,
+ 19080, 23208, -12760, 19080, 23208, 4920, 18688, 18688, -9423, 0, -18877, 0, -9401, -18877,
+ -18877, -30174, 0, -9404, -9404, 0, 0, 0, 0, -9423, -9495, -9426, -9423, -9495,
+ -9426, -9410, -9495, -9495, -21846, 7, -1, 0, -21846, -1, -1, -1, 0, -21846,
+ -21846, 0, 0, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11176, 0, 0, 17,
+ 0, 0, 96, -29076, 29801, 24912, 25552, 20, -8784, -17984, -12872, 23208, -12816, 4824,
+ 23208, -12816, 4824, -12632, -24992, -24992, -28148, 0, 0, 0, 0, 0, 0, -30174,
+ 29177, -10434, -10434, 0, -9406, -9400, -9423, -9426, -9423, -9410, -9426, -9423, -9410, -9423,
+ -9403, -9403, -1, 0, 0, 0, 0, 0, 0, -1, -21856, -21846, -21846, 0,
+ -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -31552, 1505, 0, 145, 65, 33,
+ 48, -29072, -27968, -27936, -27696, 0, -21296, -17552, 19080, 4824, -12632, 4920, 4824, -12632,
+ -12376, -12248, 18688, 23208, -9410, 0, 0, 0, 0, 0, 0, -30174, -9404, -9404,
+ -9404, 0, -9402, -18877, -9495, -9410, -9423, -9410, -9410, -9423, -9423, -9423, -9495, -9426,
+ -21846, 0, 0, 0, 0, 0, 0, -1, -21846, -21846, -21846, 0, -21846, -1,
+ -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s16/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/config_data.h
new file mode 100644
index 00000000..69c13545
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_2_S8_LHS_BATCH 3
+#define BATCH_MATMUL_2_S8_LHS_HEIGHT 3
+#define BATCH_MATMUL_2_S8_LHS_ROWS 32
+#define BATCH_MATMUL_2_S8_LHS_COLS 16
+#define BATCH_MATMUL_2_S8_RHS_BATCH 1
+#define BATCH_MATMUL_2_S8_RHS_HEIGHT 1
+#define BATCH_MATMUL_2_S8_RHS_ROWS 24
+#define BATCH_MATMUL_2_S8_RHS_COLS 16
+#define BATCH_MATMUL_2_S8_ADJ_X 0
+#define BATCH_MATMUL_2_S8_ADJ_Y 1
+#define BATCH_MATMUL_2_S8_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_2_S8_DST_SIZE 6912
+#define BATCH_MATMUL_2_S8_OUTPUT_BATCH 3
+#define BATCH_MATMUL_2_S8_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_2_S8_OUTPUT_ROWS 32
+#define BATCH_MATMUL_2_S8_OUTPUT_COLS 24
+#define BATCH_MATMUL_2_S8_LHS_OFFSET 128
+#define BATCH_MATMUL_2_S8_RHS_OFFSET 128
+#define BATCH_MATMUL_2_S8_OUTPUT_OFFSET -128
+#define BATCH_MATMUL_2_S8_ACTIVATION_MIN -128
+#define BATCH_MATMUL_2_S8_ACTIVATION_MAX 127
+#define BATCH_MATMUL_2_S8_OUTPUT_MULTIPLIER 2019470823
+#define BATCH_MATMUL_2_S8_OUTPUT_SHIFT -11
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_input_tensor.h
new file mode 100644
index 00000000..c684daad
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_input_tensor.h
@@ -0,0 +1,237 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_2_s8_lhs_input_tensor[4608] = {
+ -128, -62, 72, -66, -1, -1, 0, 0, 112, -30, -47, -41, -86, -86, 0, 0, -64, -2, -44, -41,
+ -86, -86, 0, 0, 112, -30, -47, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -13, -128, 115, 121,
+ -86, -86, 0, 0, 96, -80, -40, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 54, -60, -17, 57, -86, -86, 0, 0, -95, 8, 0, 0, 0, 0, 0, 0,
+ -128, -62, -80, -41, -86, -86, 0, 0, 64, -122, -81, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 53, 97, -90, -47, 0, 0, 0, 0, -96, -80, -40, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 126, 88, -50, -120, -1, -1, 0, 0, -111, 4, 0, 0, 0, 0, 0, 0,
+ -128, -62, -80, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 53, 97, -90, -47, -1, -1, 0, 0, -96, -80, -40, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0,
+ 96, 75, -43, -41, -86, -86, 0, 0, 80, 58, -46, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, -48, -24, -45, -41, -86, -86, 0, 0,
+ -48, -24, -45, -41, -86, -86, 0, 0, 96, 90, -49, -41, -86, -86, 0, 0, 112, 90, -49, -41,
+ -86, -86, 0, 0, -128, 90, -49, -41, -86, -86, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
+ 80, 90, -49, -41, -86, -86, 0, 0, 48, 89, -49, -41, -86, -86, 0, 0, -80, -24, -45, -41,
+ -86, -86, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -80, 12, 0, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, 30, -110, 111, 125, -96, -86, 0, 0, -4, -26, 19, -110,
+ -1, -1, 0, 0, 0, -25, 19, -110, -1, -1, 0, 0, 4, -25, 19, -110, -1, -1, 0, 0,
+ -72, -79, -62, -41, -86, -86, 0, 0, 49, 3, 0, 0, 0, 0, 0, 0, -32, -128, -40, -41,
+ -86, -86, 0, 0, 64, -18, -58, -41, -86, -86, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
+ 96, 0, 0, 0, 0, 0, 0, 0, 46, -106, 126, 125, -96, -86, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 1, 0, 0,
+ 0, 0, 0, 0, -128, 113, -46, -41, -86, -86, 0, 0, 80, -39, -80, -41, -86, -86, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 110, -108, 126, 125,
+ -96, -86, 0, 0, 0, 57, -42, -41, -86, -86, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0, 62, 26, 127, 125, -96, -86, 0, 0, 80, 108, -42, -41,
+ -86, -86, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,
+ -82, 110, 106, 125, -96, -86, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 80, -107, 105, -41,
+ -86, -86, 0, 0, -80, 107, -72, -41, -86, -86, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0,
+ 96, 0, 0, 0, 0, 0, 0, 0, 110, -92, 29, 125, -96, -86, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -64, 1, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0,
+ 0, 0, 0, 0, 30, 114, 106, 125, -96, -86, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0,
+ 80, -39, -80, -41, -86, -86, 0, 0, 80, 46, -98, -41, -86, -86, 0, 0, 64, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, -114, -4, 117, 125,
+ -96, -86, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 48, 62, -46, -41, -86, -86, 0, 0,
+ 96, -121, -79, -41, -86, -86, 0, 0, 24, -19, -40, -41, -86, -86, 0, 0, -24, -19, -40, -41,
+ -86, -86, 0, 0, -72, -18, -40, -41, -86, -86, 0, 0, -120, -17, -40, -41, -86, -86, 0, 0,
+ 88, -16, -40, -41, -86, -86, 0, 0, 40, -15, -40, -41, -86, -86, 0, 0, 16, 16, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 78, 34, 122, 125, -96, -86, 0, 0,
+ 24, 99, -59, -41, -86, -86, 0, 0, 96, -59, 17, -102, -1, -1, 0, 0, 0, 126, -46, -41,
+ -86, -86, 0, 0, -64, -20, -45, -41, -86, -86, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
+ 80, -79, -63, -45, -86, -86, 0, 0, -128, 120, -59, -41, -86, -86, 0, 0, 88, -79, -63, -45,
+ -86, -86, 0, 0, 16, -19, -45, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0,
+ 48, -19, -45, -41, -86, -86, 0, 0, -88, 5, -61, -41, -86, -86, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, -40, 71, 20, -102, -1, -1, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0,
+ -48, 71, -57, -41, -86, -86, 0, 0, -16, 96, -41, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, -48, -107, -46, -41, -86, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, -50, 29, 122, 125, -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 116, 102, 46, 77, 105, 110, 105, 109, 117, 109, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 30, 28, 122, 125, -96, -86, 0, 0,
+ -112, -20, -45, -41, -86, -86, 0, 0, 116, 102, 46, 77, 105, 110, 105, 109, 117, 109, 0, 0,
+ 0, 0, 0, 0, 48, 17, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0,
+ -98, -109, 126, 125, -96, -86, 0, 0, 80, 99, -59, -41, -86, -86, 0, 0, 104, -59, 17, -102,
+ -1, -1, 0, 0, 0, 126, -46, -41, -86, -86, 0, 0, -80, -18, -45, -41, -86, -86, 0, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 30, -79, 107, 125, -96, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 99, 104, 108, 111, 46, 98, 114, 111, 97, 100, 99, 97, 115, 116, 95, 99,
+ -96, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -80, 5, -61, -41,
+ -86, -86, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -40, 71, 20, -102, -1, -1, 0, 0,
+ -127, 0, 0, 0, 0, 0, 0, 0, 16, -72, -56, -41, -86, -86, 0, 0, 0, -56, -46, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+ 80, 90, -42, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 80, 90, -42, -41, -86, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_transposed_tensor.h
new file mode 100644
index 00000000..740ffe9f
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/lhs_transposed_tensor.h
@@ -0,0 +1,237 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_2_s8_lhs_transposed_tensor[4608] = {
+ -128, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, -2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 72, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, -41, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30, -30, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -47, -47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -41, -41, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -86, -86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -86, -86, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -80,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -40, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -86, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 54, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, -62, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -17, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 57, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -122, 0, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, 0, -81, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -41, 0, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, -86, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 0, -86, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -80, -16, -16, -16, -16, -16, -16, -16, -16, -16, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -40, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -41, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -86, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, 126, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 88, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, -80, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -120, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -86, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 4, -69, 0,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -1, 0, 72, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 0, -66, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96,
+ 0, 0, 0, 0, 0, 0, 0, 0, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -80, -16, -16, -16, -16, -16, -16, -16, -16,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -41, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -86,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 96, 0, -48, 96, -128,
+ 80, -80, -80, 30, 0, -72, -32, 32, 46, 64, 1, 0, 0, 0, -128, 32, 110, 64, 62, 96,
+ -82, 64, 1, 0, 0, 0, 0, 75, 0, -24, 90, 90, 90, -24, 12, -110, -25, -79, -128, 0,
+ -106, 0, 0, 0, 0, 0, 113, 0, -108, 0, 26, 0, 110, 0, 0, 0, 0, 0, 0, -43,
+ 0, -45, -49, -49, -49, -45, 0, 111, 19, -62, -40, 0, 126, 0, 0, 0, 0, 0, -46, 0,
+ 126, 0, 127, 0, 106, 0, 0, 0, 0, 0, 0, -41, 0, -41, -41, -41, -41, -41, 0, 125,
+ -110, -41, -41, 0, 125, 0, 0, 0, 0, 0, -41, 0, 125, 0, 125, 0, 125, 0, 0, 0,
+ 0, 0, 0, -86, 0, -86, -86, -86, -86, -86, 0, -96, -1, -86, -86, 0, -96, 0, 0, 0,
+ 0, 0, -86, 0, -96, 0, -96, 0, -96, 0, 0, 0, 0, 0, 0, -86, 0, -86, -86, -86,
+ -86, -86, 0, -86, -1, -86, -86, 0, -86, 0, 0, 0, 0, 0, -86, 0, -86, 0, -86, 0,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 80, 4, -48, 112, 49, 48, 1, 48, -4,
+ 4, 49, 64, 96, 1, 1, 0, 0, 0, 65, 80, 32, 0, 32, 80, 96, 1, 1, 0, 0,
+ -16, -16, 0, 58, 0, -24, 90, 0, 89, 0, 0, -26, -25, 3, -18, 0, 0, 0, 0, 0,
+ 0, 1, -39, 0, 57, 0, 108, 0, 0, 0, 0, 0, -1, -1, 0, -46, 0, -45, -49, 0,
+ -49, 0, 0, 19, 19, 0, -58, 0, 0, 0, 0, 0, 0, 0, -80, 0, -42, 0, -42, 0,
+ 0, 0, 0, 0, -1, -1, 0, -41, 0, -41, -41, 0, -41, 0, 0, -110, -110, 0, -41, 0,
+ 0, 0, 0, 0, 0, 0, -41, 0, -41, 0, -41, 0, 0, 0, 0, 0, -1, -1, 0, -86,
+ 0, -86, -86, 0, -86, 0, 0, -1, -1, 0, -86, 0, 0, 0, 0, 0, 0, 0, -86, 0,
+ -86, 0, -86, 0, 0, 0, 0, 0, -1, -1, 0, -86, 0, -86, -86, 0, -86, 0, 0, -1,
+ -1, 0, -86, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0,
+ -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 80, -32, 110, 64, 1, 0, 0, -64, 30, 64, 1, 0, 0, 0,
+ 80, 64, 1, 0, 0, 96, -114, 64, 1, 0, 0, 0, 48, 24, -72, 88, 0, 0, -107, 0,
+ -92, 0, 0, 0, 0, 1, 114, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, -4, 0,
+ 0, 0, 0, 0, 62, -19, -18, -16, 0, 0, 105, 0, 29, 0, 0, 0, 0, 0, 106, 0,
+ 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, -46, -40, -40, -40,
+ 0, 0, -41, 0, 125, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, -41, 0, 0, 0,
+ 0, 0, 125, 0, 0, 0, 0, 0, -41, -41, -41, -41, 0, 0, -86, 0, -96, 0, 0, 0,
+ 0, 0, -96, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0,
+ -86, -86, -86, -86, 0, 0, -86, 0, -86, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0,
+ -86, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, -86, -86, -86, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 33, -80, 96, 3, 1, 0, 0, 0, 96, 1, 1, 0, 0, 0, 17, 80, 1, 0, 0,
+ 0, 96, 2, 1, 0, 0, 0, 81, 96, -24, -120, 40, 0, 0, 107, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -121, -19, -17, -15, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -40, -40, -40, 0, 0, -41, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -41, -41, -41, -41, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, -86,
+ 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 78, 96, -64,
+ 80, 88, -48, -88, -40, -48, 0, -48, 64, -50, 116, 112, 30, 116, 48, -98, 104, -80, 30, 99,
+ -96, -80, -40, 16, 0, 80, 0, 80, 16, 34, -59, -20, -79, -79, -77, 5, 71, 71, 0, -107,
+ 0, 29, 102, 0, 28, 102, 17, -109, -59, -18, -79, 104, 0, 5, 71, -72, 0, 90, 0, 90,
+ 0, 122, 17, -45, -63, -63, -63, -61, 20, -57, 0, -46, 0, 122, 46, 0, 122, 46, 0, 126,
+ 17, -45, 107, 108, 0, -61, 20, -56, 0, -42, 0, -42, 0, 125, -102, -41, -45, -45, -45, -41,
+ -102, -41, 0, -41, 0, 125, 77, 0, 125, 77, 0, 125, -102, -41, 125, 111, 0, -41, -102, -41,
+ 0, -41, 0, -41, 0, -96, -1, -86, -86, -86, -86, -86, -1, -86, 0, -86, 0, -96, 105, 0,
+ -96, 105, 0, -96, -1, -86, -96, 46, 0, -86, -1, -86, 0, -86, 0, -86, 0, -86, -1, -86,
+ -86, -86, -86, -86, -1, -86, 0, -86, 0, -86, 110, 0, -86, 110, 0, -86, -1, -86, -86, 98,
+ 0, -86, -1, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 105, 0, 0, 105, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 109, 0, 0,
+ 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, -128, 24, 0, 3, -128, 16, 48, 1,
+ -95, -16, 33, 112, 48, 0, 117, 48, -112, 117, -128, 80, 0, 4, 0, 97, -128, 3, -127, 0,
+ 97, 112, 65, 112, 0, 99, 126, 0, 120, -19, -19, 0, 0, 96, 0, -69, 0, 0, 109, 0,
+ -20, 109, 0, 99, 126, 0, 0, 100, 0, 0, 0, -56, 0, -69, 0, -69, 0, -59, -46, 0,
+ -59, -45, -45, 0, 0, -41, 0, 72, 0, 0, 0, 0, -45, 0, 0, -59, -46, 0, 0, 99,
+ 0, 0, 0, -46, 0, 72, 0, 72, 0, -41, -41, 0, -41, -41, -41, 0, 0, -41, 0, -66,
+ 0, 0, 0, 0, -41, 0, 0, -41, -41, 0, 0, 97, 0, 0, 0, -41, 0, -66, 0, -66,
+ 0, -86, -86, 3, -86, -86, -86, 0, 0, -86, 0, -1, 0, 0, 0, 0, -86, 0, 0, -86,
+ -86, 7, 0, 115, 0, 0, 0, -86, 0, -1, 0, -1, 0, -86, -86, 0, -86, -86, -86, 0,
+ 0, -86, 0, -1, 0, 0, 0, 0, -86, 0, 0, -86, -86, 0, 0, 116, 0, 0, 0, -86,
+ 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
+ 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/output.h
new file mode 100644
index 00000000..12b2891d
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/output.h
@@ -0,0 +1,309 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_2_s8_output[6912] = {
+ -25, -32, -43, -24, -47, -44, -68, -24, -30, 47, 4, -53, 45, -24, -38, 45, -43, -37, -33, -44, -45, -29, -29,
+ -45, -33, -27, -49, -24, -45, -42, -70, -28, -41, 35, -6, -49, 33, -30, -38, 33, -50, -48, -42, -47, -46, -37,
+ -37, -45, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -23, -24, -37, 3, -36, -33, -63, -15, -9, 56, 15, -50, 48, -19, -11, 48, -38, -16,
+ -34, -44, -42, -26, -26, -44, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -20, -23, -18, -10, -42,
+ -41, -56, -11, -21, 66, 9, -38, 59, -16, -13, 59, -21, -27, -29, -39, -34, -21, -21, -35, -54, -51, -67, -51,
+ -65, -62, -81, -52, -56, 0, -36, -71, -1, -52, -63, -1, -67, -67, -68, -63, -63, -57, -57, -63, -6, -10, -11,
+ -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -32, -28, -28, -22, -52, -51, -66, -22, -57, 42, 2, -38, 44, -27, -25, 44, -31, -59, -37, -55,
+ -50, -32, -32, -49, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -11, -8, -5, -9, -38, -37, -54, 2, -42,
+ 80, 23, -23, 80, -5, -12, 80, -9, -47, -12, -37, -30, -11, -11, -30, -30, -21, -47, -37, -49, -46, -70, -28,
+ -33, 43, -11, -57, 40, -28, -51, 40, -47, -53, -51, -39, -40, -33, -33, -39, -6, -10, -11, -4, -36, -33, -54,
+ 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7,
+ -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82,
+ -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33,
+ 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28,
+ -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85,
+ 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19,
+ 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0,
+ -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55,
+ 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34,
+ -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37,
+ -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5,
+ -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13,
+ -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11,
+ -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -32,
+ -28, -28, -23, -53, -51, -66, -22, -57, 42, 2, -38, 44, -28, -25, 44, -31, -59, -37, -55, -50, -32, -32, -49,
+ -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9, -9,
+ -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28, -9,
+ -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31, -28,
+ -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20, -31,
+ -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30, -20,
+ -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14, -30,
+ -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82, -14,
+ -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14, 82,
+ -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3, -14,
+ 82, -14, -30, -20, -31, -28, -9, -9, -28, -7, -11, -13, -5, -37, -34, -55, 0, -19, 85, 28, -33, 82, -3,
+ -14, 82, -14, -30, -20, -31, -28, -9, -9, -28, -15, -24, -11, -15, -48, -47, -55, -8, -25, 74, 16, -35, 70,
+ -12, -15, 70, -13, -32, -25, -37, -34, -15, -15, -34, -17, -5, -25, 4, -27, -23, -58, -4, -36, 66, 21, -23,
+ 65, -10, -9, 65, -29, -35, -13, -39, -33, -20, -20, -32, -5, -9, -11, -4, -35, -33, -54, 2, -18, 87, 30,
+ -31, 84, -2, -13, 84, -13, -28, -17, -29, -26, -7, -7, -26, -45, -45, -49, -37, -59, -58, -71, -41, -50, 19,
+ -23, -54, 16, -43, -42, 16, -50, -53, -49, -58, -56, -46, -46, -55, -12, 1, -23, 9, -22, -18, -56, 1, -33,
+ 73, 27, -19, 72, -5, -6, 72, -26, -31, -8, -35, -29, -16, -16, -28, -20, -15, -31, -20, -47, -45, -63, -18,
+ -28, 63, 7, -37, 58, -18, -30, 58, -31, -43, -40, -30, -30, -22, -22, -29, -18, -8, -24, 2, -30, -27, -58,
+ -6, -37, 65, 19, -22, 63, -12, -9, 63, -27, -34, -13, -39, -33, -20, -20, -32, -27, -27, -35, -29, -50, -48,
+ -64, -24, -31, 51, -5, -47, 46, -25, -37, 46, -35, -43, -40, -38, -37, -29, -29, -37, -6, -11, -17, -9, -38,
+ -36, -57, -2, -16, 85, 27, -35, 82, -4, -19, 82, -18, -28, -23, -27, -26, -9, -9, -26, -15, -15, -20, 7,
+ -36, -34, -56, -6, -2, 75, 22, -41, 64, -10, -2, 64, -22, -10, -26, -37, -32, -16, -16, -35, -19, -18, -25,
+ -22, -44, -42, -63, -12, -36, 62, 10, -43, 61, -16, -31, 61, -27, -45, -25, -41, -38, -21, -21, -39, -27, -27,
+ -38, -31, -46, -43, -65, -23, -30, 49, -7, -51, 46, -24, -42, 46, -39, -43, -39, -38, -37, -30, -30, -37, -42,
+ -42, -54, -36, -50, -46, -72, -36, -44, 21, -22, -61, 19, -39, -48, 19, -56, -48, -44, -56, -54, -45, -45, -55,
+ 3, 4, -9, 7, -23, -19, -52, 13, -12, 100, 43, -26, 98, 8, -7, 98, -11, -24, -8, -24, -20, 0, 0,
+ -20, -5, -10, -11, 16, -28, -26, -50, 5, 7, 91, 34, -33, 80, 0, 7, 80, -13, -1, -16, -28, -24, -7,
+ -7, -26, -2, -4, -6, 3, -29, -27, -52, 9, -18, 94, 36, -27, 91, 3, -6, 91, -9, -26, -10, -29, -24,
+ -4, -4, -24, -6, -10, -11, -4, -35, -33, -54, 2, -18, 87, 29, -31, 84, -2, -13, 84, -13, -28, -17, -30,
+ -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17,
+ -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28,
+ -17, -30, -26, -8, -8, -27, -1, -3, -11, 1, -29, -26, -54, 7, -14, 94, 36, -30, 91, 3, -11, 91, -13,
+ -25, -14, -26, -23, -4, -4, -23, -35, -28, -49, -24, -54, -51, -72, -34, -45, 33, -6, -44, 30, -34, -36, 30,
+ -49, -53, -49, -46, -47, -39, -39, -45, -1, -3, -9, 2, -29, -26, -53, 8, -16, 94, 36, -28, 91, 3, -8,
+ 91, -11, -26, -12, -27, -23, -4, -4, -24, -13, -17, -17, 20, -26, -23, -51, 0, -5, 76, 29, -31, 66, -7,
+ 11, 66, -21, 1, -9, -40, -33, -15, -15, -36, 0, 0, -6, 6, -26, -23, -52, 11, -16, 97, 39, -26, 95,
+ 6, -5, 95, -9, -25, -9, -27, -22, -2, -2, -23, 1, 2, -9, 37, -17, -14, -47, 12, 4, 99, 50, -14,
+ 89, 6, 23, 89, -12, 8, 0, -26, -21, -2, -2, -21, 7, 10, -4, 15, -17, -13, -50, 20, -12, 107, 49,
+ -22, 105, 14, 0, 105, -7, -22, -1, -23, -17, 4, 4, -18, -1, -1, -8, 21, -36, -34, -50, 2, 5, 99,
+ 42, -20, 87, 1, 13, 87, -8, -6, -25, -19, -18, -3, -3, -18, -2, -4, -6, 3, -29, -27, -52, 9, -18,
+ 94, 36, -27, 91, 3, -6, 91, -9, -26, -10, -29, -24, -4, -4, -24, -6, -10, -11, -4, -35, -33, -54, 2,
+ -18, 87, 29, -31, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54,
+ 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33,
+ -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -3, -6, -11, -2, -32,
+ -30, -54, 4, -16, 90, 33, -31, 88, 1, -12, 88, -13, -27, -16, -28, -24, -6, -6, -25, -30, -37, -29, -10,
+ -42, -41, -58, -19, -30, 47, 0, -40, 40, -25, -15, 40, -32, -20, -15, -51, -45, -31, -31, -47, 0, -2, -14,
+ 0, -29, -26, -55, 6, -13, 94, 36, -31, 91, 3, -14, 91, -15, -25, -15, -24, -22, -4, -4, -22, -6, -6,
+ -10, 14, -25, -22, -50, 7, -3, 89, 32, -31, 81, 0, 5, 81, -14, -10, -15, -31, -24, -8, -8, -26, -2,
+ -4, -6, 3, -29, -27, -52, 9, -18, 94, 36, -27, 91, 3, -6, 91, -9, -26, -10, -29, -24, -4, -4, -24,
+ -6, -10, -11, -4, -35, -33, -54, 2, -18, 87, 29, -31, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8,
+ -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8,
+ -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26,
+ -8, -8, -27, -2, -5, -16, -4, -32, -29, -56, 3, -13, 90, 32, -33, 88, 1, -17, 88, -17, -26, -19, -24,
+ -23, -6, -6, -23, 6, 10, 2, 34, -26, -23, -46, 15, 6, 111, 55, -12, 100, 10, 26, 100, -1, -2, -13,
+ -18, -14, 4, 4, -14, -2, -4, -6, 3, -29, -27, -52, 9, -18, 94, 36, -27, 91, 3, -6, 91, -9, -26,
+ -10, -29, -24, -4, -4, -24, -6, -10, -11, -4, -35, -33, -54, 2, -18, 87, 29, -31, 84, -2, -13, 84, -13,
+ -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84,
+ -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13,
+ 84, -13, -28, -17, -30, -26, -8, -8, -27, -4, -8, -11, -3, -34, -31, -54, 3, -17, 89, 31, -31, 86, -1,
+ -12, 86, -13, -27, -16, -29, -25, -7, -7, -25, -30, -24, -40, -16, -35, -31, -65, -18, -45, 42, -1, -41, 41,
+ -24, -29, 41, -43, -43, -24, -50, -44, -33, -33, -44, -2, -4, -6, 3, -29, -27, -52, 9, -18, 94, 36, -27,
+ 91, 3, -6, 91, -9, -26, -10, -29, -24, -4, -4, -24, -6, -10, -11, -4, -35, -33, -54, 2, -18, 87, 29,
+ -31, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18, 87,
+ 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4, -36, -33, -54, 2, -18,
+ 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, 7, 10, -4, 15, -17, -13, -50, 20,
+ -12, 107, 49, -22, 105, 14, 0, 105, -7, -22, -1, -23, -17, 4, 4, -18, -9, -15, -17, 7, -42, -40, -54,
+ -7, 5, 85, 27, -34, 72, -8, -1, 72, -17, -6, -31, -25, -25, -11, -11, -25, -2, -4, -6, 3, -29, -27,
+ -52, 9, -18, 94, 36, -27, 91, 3, -6, 91, -9, -26, -10, -29, -24, -4, -4, -24, -6, -10, -11, -4, -35,
+ -33, -54, 2, -18, 87, 29, -31, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11, -4,
+ -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, -6, -10, -11,
+ -4, -36, -33, -54, 2, -18, 87, 29, -32, 84, -2, -13, 84, -13, -28, -17, -30, -26, -8, -8, -27, 0, -1,
+ -11, 2, -28, -24, -54, 8, -13, 95, 38, -29, 93, 5, -11, 93, -13, -25, -13, -25, -22, -3, -3, -22, -32,
+ -17, -43, -12, -41, -37, -71, -21, -48, 39, 4, -42, 39, -26, -26, 39, -45, -56, -40, -52, -47, -35, -35, -46,
+ -38, -34, -41, -25, -49, -47, -67, -29, -47, 31, -12, -47, 28, -34, -32, 28, -44, -48, -39, -55, -51, -40, -40,
+ -51, -51, -54, -49, -44, -68, -67, -72, -48, -53, 11, -32, -57, 7, -49, -45, 7, -50, -54, -55, -61, -60, -51,
+ -51, -59, -29, -20, -36, -12, -37, -34, -64, -17, -43, 45, 2, -40, 43, -23, -23, 43, -39, -44, -27, -50, -44,
+ -32, -32, -44, -13, -21, -9, -11, -46, -45, -54, -6, -25, 77, 19, -32, 73, -10, -12, 73, -11, -31, -23, -36,
+ -33, -13, -13, -33, -4, -4, -9, 33, -22, -19, -48, 8, -1, 92, 45, -15, 82, 2, 23, 82, -12, 5, -3,
+ -30, -25, -6, -6, -25, -16, -22, -20, -9, -31, -29, -56, -4, -36, 66, 16, -32, 66, -11, -19, 66, -24, -28,
+ -1, -44, -37, -18, -18, -38, -25, -24, -33, -26, -48, -46, -63, -21, -31, 54, -3, -45, 49, -23, -34, 49, -34,
+ -42, -38, -37, -36, -27, -27, -36, -40, -45, -35, -30, -50, -49, -62, -30, -49, 29, -19, -44, 26, -36, -31, 26,
+ -39, -40, -27, -58, -52, -40, -40, -52, -37, -31, -42, -24, -42, -39, -67, -25, -48, 32, -11, -49, 31, -31, -34,
+ 31, -45, -49, -33, -56, -50, -39, -39, -51, -42, -40, -53, -37, -52, -49, -72, -37, -47, 21, -22, -58, 20, -39,
+ -48, 20, -54, -52, -46, -55, -53, -45, -45, -53, -27, -25, -34, -29, -50, -48, -64, -24, -33, 52, -5, -45, 47,
+ -25, -36, 47, -35, -45, -42, -37, -37, -29, -29, -36, -16, -20, -15, -19, -50, -49, -58, -11, -33, 71, 14, -33,
+ 68, -14, -21, 68, -16, -41, -25, -35, -33, -16, -16, -33, -31, -29, -36, -20, -48, -46, -63, -26, -42, 44, -3,
+ -35, 40, -28, -27, 40, -37, -40, -31, -44, -42, -32, -32, -41, -3, -6, -11, -2, -32, -30, -54, 4, -16, 90,
+ 33, -31, 88, 1, -12, 88, -13, -27, -16, -28, -24, -6, -6, -25, -26, -17, -41, -28, -42, -38, -67, -20, -29,
+ 50, -4, -55, 47, -22, -43, 47, -43, -47, -41, -39, -38, -29, -29, -38, 2, 2, -6, 7, -25, -22, -52, 13,
+ -15, 99, 41, -25, 96, 7, -5, 96, -9, -24, -8, -26, -21, -1, -1, -22, -3, -5, -10, 18, -35, -33, -51,
+ 2, 6, 95, 38, -26, 83, -1, 10, 83, -11, -3, -23, -22, -21, -5, -5, -21, 55, 49, 44, 65, 16, 20,
+ -20, 69, 27, 127, 115, 21, 127, 62, 49, 127, 40, 22, 47, 11, 18, 51, 51, 18, 4, 6, -2, 13, -20,
+ -17, -50, 18, -14, 104, 46, -22, 102, 11, 1, 102, -6, -23, -2, -26, -20, 2, 2, -20, -23, -26, -19, 11,
+ -46, -45, -56, -15, -16, 62, 19, -32, 51, -19, 9, 51, -22, -13, -30, -45, -41, -23, -23, -42, 55, 49, 44,
+ 65, 16, 20, -20, 69, 27, 127, 115, 21, 127, 62, 49, 127, 40, 22, 47, 11, 18, 51, 51, 18, -11, -18,
+ -6, -7, -43, -42, -53, -2, -25, 81, 23, -30, 77, -7, -9, 77, -9, -30, -19, -36, -31, -11, -11, -32, -18,
+ -29, -33, 3, -37, -34, -57, -15, 0, 65, 16, -42, 54, -16, -9, 54, -33, 1, -23, -35, -35, -21, -21, -36,
+ -16, -21, -20, -8, -31, -28, -56, -3, -36, 67, 17, -31, 66, -10, -18, 66, -23, -28, 0, -43, -37, -18, -18,
+ -38, -26, -25, -34, -28, -49, -47, -64, -23, -31, 53, -4, -46, 48, -24, -36, 48, -34, -43, -40, -37, -36, -28,
+ -28, -36, -6, -9, -11, 15, -30, -28, -51, 3, 5, 90, 33, -32, 79, -1, 6, 79, -14, -3, -19, -28, -24,
+ -8, -8, -26, 90, 85, 81, 95, 38, 42, 5, 104, 72, 127, 127, 45, 127, 97, 81, 127, 77, 54, 68, 50,
+ 55, 87, 87, 55, -21, -33, -19, -26, -57, -57, -59, -19, -26, 64, 6, -42, 59, -20, -26, 59, -19, -35, -36,
+ -38, -37, -21, -21, -37, -26, -24, -34, -28, -49, -47, -64, -23, -33, 53, -3, -44, 48, -24, -36, 48, -34, -45,
+ -41, -37, -36, -28, -28, -36, -18, -24, -15, -22, -53, -53, -58, -14, -35, 68, 11, -34, 65, -16, -22, 65, -16,
+ -42, -27, -37, -35, -18, -18, -35, -43, -40, -49, -33, -52, -49, -71, -35, -51, 21, -20, -56, 19, -39, -42, 19,
+ -51, -54, -45, -59, -55, -45, -45, -56, 1, 1, -11, 4, -26, -23, -54, 10, -12, 97, 39, -29, 95, 6, -11,
+ 95, -13, -24, -12, -24, -21, -2, -2, -21, -6, 15, -18, 7, -25, -20, -58, 6, -26, 85, 33, -24, 83, 0,
+ -8, 83, -21, -41, -21, -28, -23, -10, -10, -22, -1, -3, -11, 1, -29, -26, -54, 7, -14, 94, 36, -30, 91,
+ 3, -11, 91, -13, -26, -14, -26, -23, -4, -4, -23, -6, 15, -18, 7, -25, -20, -58, 6, -26, 85, 33, -24,
+ 83, 0, -8, 83, -21, -41, -21, -28, -23, -10, -10, -22};
+
+const int8_t *const batch_matmul_2_s8_output_ref = batch_matmul_2_s8_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_input_tensor.h
new file mode 100644
index 00000000..02d99ecd
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_input_tensor.h
@@ -0,0 +1,24 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_2_s8_rhs_input_tensor[384] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 80, 90, -42, -41, -86, -86,
+ 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 48, 18, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0,
+ 0, 0, 0, 0, 126, 92, 123, 125, -96, -86, 0, 0, 48, -18, -45, -41, -86, -86, 0, 0, 80, -79,
+ -63, -45, -86, -86, 0, 0, 80, -18, -45, -41, -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0,
+ 112, -18, -45, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, -112, -18, -45, -41, -86, -86,
+ 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -114, -111, 106, 125,
+ -96, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 104, 108, 111, 46, 98, 114, 111, 97, 100,
+ 99, 97, 115, 116, 95, 100, 105, 118, 105, 100, 101, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+ 32, 104, -44, -41, -86, -86, 0, 0, -64, 33, -42, -41, -86, -86, 0, 0, 116, 102, 46, 77, 105, 114,
+ 114, 111, 114, 80, 97, 100, 71, 114, 97, 100, 48, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, 110, 95, 123, 125, -96, -86, 0, 0, -80, -19, -45, -41, -86, -86, 0, 0, 116, 102,
+ 46, 77, 105, 114, 114, 111, 114, 80, 97, 100, 71, 114, 97, 100, 16, 19, 0, 0, 0, 0, 0, 0,
+ -128, 0, 0, 0, 0, 0, 0, 0, -66, -115, 126, 125, -96, -86, 0, 0, -56, 99, -59, -41, -86, -86,
+ 0, 0, 112, -59, 17, -102, -1, -1, 0, 0, 0, 126, -46, -41, -86, -86, 0, 0, -112, -16, -45, -41,
+ -86, -86, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, -48, -17, -45, -41, -86, -86, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 5, -61, -41, -86, -86,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_transposed_tensor.h
new file mode 100644
index 00000000..b190d1d7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/rhs_transposed_tensor.h
@@ -0,0 +1,24 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_2_s8_rhs_transposed_tensor[384] = {
+ 0, 80, 48, 126, 80, 88, -48, 112, -114, 99, 105, 32, 116, 48, 110, 116, 16, -66, 112, -112, -48, 0,
+ 0, -56, 0, 90, 18, 92, -79, -79, -77, 0, -111, 104, 118, 104, 102, 0, 95, 102, 19, -115, -59, -16,
+ -17, 0, 0, 5, 0, -42, 0, 123, -63, -63, -63, 0, 106, 108, 105, -44, 46, 0, 123, 46, 0, 126,
+ 17, -45, -45, 0, 0, -61, 0, -41, 0, 125, -45, -45, -45, 0, 125, 111, 100, -41, 77, 0, 125, 77,
+ 0, 125, -102, -41, -41, 0, 0, -41, 0, -86, 0, -96, -86, -86, -86, 0, -96, 46, 101, -86, 105, 0,
+ -96, 105, 0, -96, -1, -86, -86, 0, 0, -86, 0, -86, 0, -86, -86, -86, -86, 0, -86, 98, 0, -86,
+ 114, 0, -86, 114, 0, -86, -1, -86, -86, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114,
+ 0, 0, 114, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 111, 0, 0, 111, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 33, 112, -128, 48, 80, 112,
+ -112, 48, 0, 97, 97, -64, 114, 48, -80, 114, -128, -56, 0, 4, 0, 0, 0, 3, 0, -69, 0, -18,
+ -18, -18, -18, 0, 0, 100, 0, 33, 80, 0, -19, 80, 0, 99, 126, 0, 0, 0, 0, 0, 0, 72,
+ 0, -45, -45, -45, -45, 0, 0, 99, 0, -42, 97, 0, -45, 97, 0, -59, -46, 0, 0, 0, 0, 0,
+ 0, -66, 0, -41, -41, -41, -41, 0, 0, 97, 0, -41, 100, 0, -41, 100, 0, -41, -41, 0, 0, 0,
+ 0, 0, 0, -1, 0, -86, -86, -86, -86, 0, 0, 115, 0, -86, 71, 0, -86, 71, 0, -86, -86, 7,
+ 3, 0, 0, 0, 0, -1, 0, -86, -86, -86, -86, 0, 0, 116, 0, -86, 114, 0, -86, 114, 0, -86,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 97, 0, 0, 97,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 100, 0,
+ 0, 100, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_2_s8/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/config_data.h
new file mode 100644
index 00000000..c87d99c0
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_3_S16_LHS_BATCH 1
+#define BATCH_MATMUL_3_S16_LHS_HEIGHT 1
+#define BATCH_MATMUL_3_S16_LHS_ROWS 16
+#define BATCH_MATMUL_3_S16_LHS_COLS 32
+#define BATCH_MATMUL_3_S16_RHS_BATCH 3
+#define BATCH_MATMUL_3_S16_RHS_HEIGHT 3
+#define BATCH_MATMUL_3_S16_RHS_ROWS 16
+#define BATCH_MATMUL_3_S16_RHS_COLS 24
+#define BATCH_MATMUL_3_S16_ADJ_X 1
+#define BATCH_MATMUL_3_S16_ADJ_Y 0
+#define BATCH_MATMUL_3_S16_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_3_S16_DST_SIZE 6912
+#define BATCH_MATMUL_3_S16_OUTPUT_BATCH 3
+#define BATCH_MATMUL_3_S16_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_3_S16_OUTPUT_ROWS 32
+#define BATCH_MATMUL_3_S16_OUTPUT_COLS 24
+#define BATCH_MATMUL_3_S16_LHS_OFFSET 0
+#define BATCH_MATMUL_3_S16_RHS_OFFSET 0
+#define BATCH_MATMUL_3_S16_OUTPUT_OFFSET 0
+#define BATCH_MATMUL_3_S16_ACTIVATION_MIN -32768
+#define BATCH_MATMUL_3_S16_ACTIVATION_MAX 32767
+#define BATCH_MATMUL_3_S16_OUTPUT_MULTIPLIER 1946908444
+#define BATCH_MATMUL_3_S16_OUTPUT_SHIFT -18
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_input_tensor.h
new file mode 100644
index 00000000..a955f992
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_input_tensor.h
@@ -0,0 +1,43 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_3_s16_lhs_input_tensor[512] = {
+ 72, 0, 0, 0, 49, 0, 0, 0, -21776, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0,
+ 64, 0, 0, 0, -10854, 29079, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 8704, 2577, 0, 0,
+ 30815, 1042, 28514, 27759, 849, 0, 0, 0, -19552, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 32, 0, 0, 0, 48, 0, 0, 0, 6602, 29081, -21856, 0,
+ 0, 0, 0, 0, 14352, -26295, -1, 0, 3, 0, 0, 0, 0, 0,
+ 30063, 28788, 177, 0, 0, 0, -21456, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 23, 0, 0, 0, 0, 0, 0, 0, 4611, 0, 0, 0, 129, 0,
+ 0, 0, -21456, -9420, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0,
+ 48, 0, 0, 0, 6154, 29081, -21856, 0, 5, 0, 0, 0, 28483, 29550,
+ 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
+ -21456, -9420, -21846, 0, -17552, -18877, -1, 0, 25647, 30309, 25449, 14949, 20547, 14933,
+ 48, 0, 256, 0, 0, 0, 64, 0, 0, 0, 6650, 29081, -21856, 0,
+ -21440, -9420, -21846, 0, -21392, -9420, -21846, 0, -21344, -9420, -21846, 0, -21296, -9420,
+ -21846, 0, -21248, -9420, -21846, 0, -21200, -9420, -21846, 0, 529, 0, 0, 0,
+ -20448, -9420, -21846, 0, -21984, -9420, -21846, 0, 30, 0, 0, 0, 0, 0,
+ 0, 0, 8762, 8242, 26441, 28526, 241, 0, 0, 0, -20448, -9420, -21846, 0,
+ -21120, -9420, -21846, 0, 30, 0, 0, 0, 0, 0, 0, 0, 1042, 31092,
+ 25968, 3874, 193, 0, 0, 0, -20448, -9420, -21846, 0, -21072, -9420, -21846, 0,
+ 32, 0, 0, 0, 0, 0, 0, 0, 26482, 12915, 21507, 28265, 145, 0,
+ 0, 0, -20448, -9420, -21846, 0, -21024, -9420, -21846, 0, 30, 0, 0, 0,
+ 0, 0, 0, 0, 21508, 30063, 4724, 27658, 97, 0, 0, 0, -20448, -9420,
+ -21846, 0, -20976, -9420, -21846, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+ 538, 18, 6690, 3082, 49, 0, 0, 0, -20448, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 24947, 25974, 12918, 25439, 28271, 29811, 0, 0, 288, 0, 0, 0,
+ 48, 0, 0, 0, 6282, 29081, -21856, 0, 27753, 28261, 28001, 14949, 26982, 25964,
+ 24942, 25965, 12346, 0, 0, 0, 25605, 31092, 25968, 1042, 193, 0, 0, 0,
+ -20448, -9420, -21846, 0, -17552, -18877, -1, 0, 25965, 14963, 30063, 28788, 29813, 12346,
+ 0, 0, 25964, 28751, 3090, 2058, 145, 0, 0, 0, -20448, -9420, -21846, 0,
+ -21408, -9420, -21846, 0, 29535, 26988, 25955, 14963, 30063, 28788, 29813, 12346, -30720, 257,
+ 28426, 2314, 97, 0, 0, 0, -20448, -9420, -21846, 0, -21360, -9420, -21846, 0,
+ 14964, 48, 0, 0, 0, 0, 0, 0, 2580, 29456, 24936, 25968, 49, 0,
+ 0, 0, -20448, -9420, -21846, 0, -21312, -9420, -21846, 0, 14964, 48, 0, 0,
+ 0, 0, 0, 0, 1056, 0, 0, 0, 80, 0, 0, 0, 794, 29081,
+ -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_transposed_tensor.h
new file mode 100644
index 00000000..2ec6f269
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/lhs_transposed_tensor.h
@@ -0,0 +1,43 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_3_s16_lhs_transposed_tensor[512] = {
+ 72, -10854, -19552, 0, -21456, 0, 6650, -20448, 30, 26482, -20448, 24947, 25605, -20448,
+ 14964, 1056, 0, 29079, -9420, 0, -9420, 0, 29081, -9420, 0, 12915, -9420, 25974,
+ 31092, -9420, 48, 0, 0, -21856, -21846, 30063, -21846, 0, -21856, -21846, 0, 21507,
+ -21846, 12918, 25968, -21846, 0, 0, 0, 0, 0, 28788, 0, 0, 0, 0,
+ 0, 28265, 0, 25439, 1042, 0, 0, 0, 49, 0, -17552, 177, -17552, 49,
+ -21440, -21984, 0, 145, -20976, 28271, 193, -21408, 0, 80, 0, 0, -18877, 0,
+ -18877, 0, -9420, -9420, 0, 0, -9420, 29811, 0, -9420, 0, 0, 0, 0,
+ -1, 0, -1, 0, -21846, -21846, 0, 0, -21846, 0, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -21776, 0, 32, -21456, 32, -21456, -21392, 30, 1042, -20448, 30, 288,
+ -20448, 29535, 2580, 794, -9420, 0, 0, -9420, 0, -9420, -9420, 0, 31092, -9420,
+ 0, 0, -9420, 26988, 29456, 29081, -21846, 0, 0, -21846, 0, -21846, -21846, 0,
+ 25968, -21846, 0, 0, -21846, 25955, 24936, -21856, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3874, 0, 0, 0, 0, 14963, 25968, 0, -17552, 1, 48, -17552,
+ 48, -17552, -21344, 0, 193, -21024, 0, 48, -17552, 30063, 49, 0, -18877, 0,
+ 0, -18877, 0, -18877, -9420, 0, 0, -9420, 0, 0, -18877, 28788, 0, 0,
+ -1, 1, 0, -1, 0, -1, -21846, 0, 0, -21846, 0, 0, -1, 29813,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 12346, 0, 0, 0, 0, 6602, 23, 6154, 25647, -21296, 8762, -20448, 30,
+ 538, 6282, 25965, -30720, -20448, 0, 0, 0, 29081, 0, 29081, 30309, -9420, 8242,
+ -9420, 0, 18, 29081, 14963, 257, -9420, 0, 0, 0, -21856, 0, -21856, 25449,
+ -21846, 26441, -21846, 0, 6690, -21856, 30063, 28426, -21846, 0, 0, 0, 0, 0,
+ 0, 14949, 0, 28526, 0, 0, 3082, 0, 28788, 2314, 0, 0, 0, 8704,
+ 0, 0, 5, 20547, -21248, 241, -21072, 0, 49, 27753, 29813, 97, -21312, 0,
+ 0, 2577, 0, 0, 0, 14933, -9420, 0, -9420, 0, 0, 28261, 12346, 0,
+ -9420, 0, 0, 0, 0, 0, 0, 48, -21846, 0, -21846, 0, 0, 28001,
+ 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14949, 0, 0, 0, 0, 144, 30815, 14352, 4611, 28483, 256, -21200, -20448,
+ 32, 21508, -20448, 26982, 25964, -20448, 14964, 0, 0, 1042, -26295, 0, 29550, 0,
+ -9420, -9420, 0, 30063, -9420, 25964, 28751, -9420, 48, 0, 0, 28514, -1, 0,
+ 116, 0, -21846, -21846, 0, 4724, -21846, 24942, 3090, -21846, 0, 0, 0, 27759,
+ 0, 0, 0, 0, 0, 0, 0, 27658, 0, 25965, 2058, 0, 0, 0,
+ 64, 849, 3, 129, 0, 64, 529, -21120, 0, 97, -17552, 12346, 145, -21360,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -9420, 0, 0, -18877, 0,
+ 0, -9420, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, 0, 0,
+ -1, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/output.h
new file mode 100644
index 00000000..8304abbe
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/output.h
@@ -0,0 +1,440 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_3_s16_output[6912] = {
+ -4207, -4815, -2105, 67, -1630, -1729, 0, 0, -3309, -2538, 897, -1725, 1898, -697, 1009, 0,
+ 347, 2077, -3482, -1848, -1888, -813, 506, 2345, 538, 681, 749, 0, -795, -843, 0, 0,
+ -1678, -4258, 444, -796, 1359, -323, 461, 0, -2107, 1988, -7195, -811, -1970, -846, 940, 2847,
+ -4410, -5495, -3182, 0, -1331, -1404, 0, 0, -3625, -1749, 1030, -1846, 1558, -749, 3743, 82,
+ 844, 81, 386, -1881, -977, -421, 1448, 2378, -2526, -1750, -4057, 0, -1716, -1845, 0, 0,
+ 0, 0, 0, 0, 852, 0, 2560, 79, -661, -829, -1922, 0, -1926, -829, -1825, 95,
+ -2654, -3035, -561, 0, -31, -9, 0, 0, -3135, -3802, 807, -1773, 1533, -942, 525, 0,
+ -1123, -1164, -2079, -1511, -2150, -921, -2118, 18, -2390, -1919, -1540, 0, -19, 0, 0, 0,
+ -2652, -1303, 1159, -796, 2847, 294, 1890, 0, -948, -1061, -3218, -1625, -2267, -971, -2252, 0,
+ -687, -2197, 1651, 0, -7, 0, 0, 0, -1271, -4449, -620, -1846, -2025, -2173, -2232, 0,
+ -390, -209, 1651, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 512, 565, 1753, 12, 1241, 1335, 0, 0, -95, 64, 17, 110, -1, 1, -1910, -59,
+ -1096, -4388, 3165, 3, 7, -9, -1931, -1872, 131, -2522, 3357, 132, 572, 615, 0, 0,
+ -16, 1763, 552, 3202, -4, 0, -838, -26, -2661, -2908, -925, 0, 1056, 0, -879, -863,
+ 475, -1651, 3890, 112, 1326, 1426, 0, 0, -78, 1472, 461, 2674, -8, 0, -1943, -60,
+ -2912, -5240, 1341, 0, 870, 0, -2040, -2000, -14, -353, 2332, 117, 0, 0, 0, 0,
+ 3, 220, 69, 399, 0, 0, 0, 0, -279, -126, -293, 0, 131, 0, 0, 0,
+ 546, 666, 1589, 0, 1276, 1373, 0, 0, -79, 9, 0, 20, -13, -3, -1568, -48,
+ -921, -3920, 2926, 4, -4, -2, -1642, -1607, 247, 307, 712, 0, 572, 615, 0, 0,
+ -81, 0, 0, 0, -6, 0, -1679, -52, -682, -2846, 2139, 0, -3, 0, -1762, -1729,
+ 572, 712, 1651, 0, 1326, 1426, 0, 0, -16, 0, 0, 0, -2, 0, 0, 0,
+ -472, -2197, 1651, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -308, 1709, -2354, -92, 6, -2, 0, 0, 395, -438, -1468, -2060, -662, -362, -907, 0,
+ 851, -1729, 3227, 530, -1172, -205, 1949, 2378, -1965, -88, -3044, -42, 27, 0, 0, 0,
+ 2889, -651, -2985, -969, -3219, -1895, -4392, 0, -284, -1590, 1811, 2504, -2531, -947, -800, 1370,
+ 1926, 3373, -816, -98, -11, 0, 0, 0, -2899, 2822, -40, -1684, 3040, 2091, 3986, 0,
+ 1655, -1382, 3010, -1882, 920, 712, 4458, 2753, 225, 310, -233, 0, 8, 0, 0, 0,
+ -869, 3186, -1836, 260, 288, 307, 315, 0, -8, -280, 0, 0, 0, 0, 2687, 2636,
+ -971, 1885, -3125, -96, 0, 0, 0, 0, -71, -1957, -387, -2166, 931, 5, 5, 0,
+ -289, -2643, 444, 0, -2826, -904, 686, 2730, -1684, 193, -2718, -42, 0, 0, 0, 0,
+ -25, -769, -167, -970, 945, 0, 0, 0, -448, -1645, -906, 0, -2468, -921, -983, 1131,
+ -1885, 1076, -4077, -98, 0, 0, 0, 0, -35, -1239, -388, -2250, 935, 0, 0, 0,
+ 372, -2398, 1186, 0, -2871, -912, -2116, 0, -1050, -487, -1129, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 500, 0, 0, 0, -391, -487, -1129, 0, -1137, -487, -1129, 0,
+ 74, -571, 2374, 67, -1300, -1404, 0, 0, 296, -7435, -1664, -1725, -4066, -3431, -4915, 13,
+ -3294, -2141, -246, 2453, -2045, -879, 385, 2378, -2799, -2669, -3410, 0, -1850, -1963, 0, 0,
+ -3482, -1156, 1720, -796, -178, -1041, -1208, 0, -918, -970, 1298, 2545, -1966, -846, 722, 2633,
+ 376, -324, 2323, 0, -294, -308, 0, 0, -1377, -7044, -620, -1846, -1198, -2177, -2241, 0,
+ -3088, -1951, -2377, 10, -1896, -813, -1596, 283, 313, 1017, -1215, 0, -1679, -1806, 0, 0,
+ -103, -2526, 0, 0, 869, 0, 0, 0, -2667, -1750, -4059, 0, -1966, -846, -1770, 188,
+ -1352, -2086, 473, 0, -13, -6, 0, 0, -864, -4011, -229, -1483, -1212, -1746, -1782, 0,
+ -308, 1227, -1042, 0, -939, -402, -919, 13, -546, -1899, 1427, 0, -4, 0, 0, 0,
+ -1474, -2894, -1251, -1595, -1747, -1878, -1929, 0, 69, 1718, 0, 0, 0, 0, 0, 0,
+ -110, 0, 0, 0, -6, 0, 0, 0, 899, -2197, 1651, 0, -3, 0, 0, 0,
+ -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 333, -3684, 2632, 836, 2129, 1985, 0, 0, -8179, -7787, -8141, -3160, -2513, -3044, -2092, 0,
+ -358, 1005, -3748, -2134, -225, -228, 2639, 2389, -641, -998, -227, 2612, 48, -1283, 0, 0,
+ -1770, -1005, -3321, -1468, -733, -1424, -964, 0, 2687, 6036, -1354, 408, -984, -1081, 3205, 2901,
+ -2648, -6093, -180, -1963, -106, 890, 0, 0, -8737, -8811, -8106, -3404, -3179, -3302, -2235, 0,
+ -1185, 542, -4287, -2801, 520, 583, 2677, 2423, -3740, -4339, -4097, 0, -1747, -1879, 0, 0,
+ -1730, -829, -1922, 0, 789, 0, 0, 0, -553, 2067, -4098, 0, -1534, -1661, 107, 97,
+ -3292, -4393, -1087, -1925, 138, 1134, 0, 0, -7068, -6433, -7436, -3024, -2324, -2993, -2146, 0,
+ 100, -854, -881, -1508, -657, -695, 25, 21, -1881, -2149, -927, -846, 743, 1232, 0, 0,
+ -6245, -5550, -6589, -2142, -1299, -1912, -966, 0, 150, -748, -1920, -1628, -675, -714, 0, 0,
+ -2600, -4159, -233, -1962, -934, 0, 0, 0, -2194, -2253, -2272, -1846, -2026, -2174, -2232, 0,
+ -43, -209, 1651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -2160, -3807, -227, -1883, 387, 1399, 0, 0, -1938, -1851, -1062, 5, 1, 5, 3, 0,
+ -689, -6751, 2692, -2242, -2107, -2118, -4185, -3017, -875, -1616, 100, -376, 178, 615, 0, 0,
+ -831, 2281, -2770, 0, -6, 0, 0, 0, -268, -2959, 1207, -971, -913, -921, -1883, -1366,
+ -2127, -3749, -77, -1567, 400, 1426, 0, 0, -1932, 649, -2936, 0, -13, 0, 0, 0,
+ -699, -6863, 2800, -2252, -2128, -2135, -4367, -3167, 8, 0, 184, 415, 1, 0, 0, 0,
+ 0, 390, -293, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ -2100, -3040, -538, -1919, 151, 1143, 0, 0, -1556, -1550, -792, 3, -7, 2, 0, 0,
+ -588, -5898, 2533, -1805, -1714, -1722, -3509, -2545, -1038, -3251, 597, -849, 743, 1232, 0, 0,
+ -1654, -1696, -841, 0, -9, 0, 0, 0, -520, -4979, 1704, -1946, -1834, -1845, -3774, -2737,
+ -1958, 26, -1884, -1962, -933, 0, 0, 0, -40, 0, 0, 0, -6, 0, 0, 0,
+ -176, -2197, 1651, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -988, 407, -1036, -2235, -1317, -433, 0, 0, 701, -983, 2261, 508, 712, 394, 56, 0,
+ -536, 91, -639, 569, 1711, 1695, 5160, 3748, -2559, 438, -2957, -991, -2170, -1899, 0, 0,
+ 3052, 3664, 3688, 2076, 2972, 1504, 7, 0, -2210, 669, -3191, 2508, -604, -835, 4477, 2963,
+ 2895, 2802, 2704, -2307, 388, 1427, 0, 0, -1667, -4972, 111, -993, -1614, -463, 680, 0,
+ 1575, 828, 939, -1885, 5083, 5341, 5563, 4120, 1183, 1877, 910, 3, 0, 0, 0, 0,
+ 311, 318, 320, 260, 287, 307, 315, 0, 23, 1223, -1130, 0, 1435, 1461, 4415, 3458,
+ -2964, -937, -3170, -2245, -1441, -568, 0, 0, -1167, -2236, -111, 4, 857, 5, 5, 0,
+ -9, -98, -1147, 365, 294, 196, 5063, 3843, -1878, -285, -2067, -994, -561, -168, 0, 0,
+ -1714, -1637, -1308, 0, 871, 0, 0, 0, -525, -105, -2286, 108, -280, -385, 2719, 1924,
+ -3973, -2869, -4151, -2311, -939, 0, 0, 0, -1949, -3109, -464, 0, 857, 0, 0, 0,
+ -863, -3104, -468, 0, -1695, -1823, 5, 2, -1010, -487, -1129, 0, 0, 0, 0, 0,
+ -1018, -487, -1129, 0, 461, 0, 0, 0, -391, -487, -1129, 0, -907, -976, 0, 0,
+ -7698, -8377, -5968, -1664, -3928, -3250, 0, 0, 2454, 3759, 1034, -427, -40, -1293, -2087, 0,
+ 471, 1763, 1606, 2545, -3303, -3596, 2701, 2435, -1303, -4552, -154, -845, 1130, 1649, 0, 0,
+ -2461, -1930, -2555, -1576, -1937, -2295, -967, 0, -2926, -2214, -5890, -2224, -3377, -3624, 2963, 2682,
+ -6201, -6330, -4272, -1962, -2665, -1861, 0, 0, -1426, -494, -2875, -1844, -1257, -2174, -2232, 0,
+ 1919, 1862, 2696, 1196, -1498, -1636, 318, 288, -3705, -4267, -4059, 0, -1685, -1812, 0, 0,
+ 623, 1648, -725, 0, 800, 0, 0, 0, 1928, 1965, 898, 1165, -1547, -1695, 212, 192,
+ -1297, -2148, 365, 48, -38, -64, 0, 0, -2492, -2130, -2717, -1483, -1242, -1746, -1793, 0,
+ -175, 1354, -893, 42, -743, -800, 21, 17, -485, -1899, 1427, 0, -1, 0, 0, 0,
+ -1861, -1946, -1963, -1595, -1746, -1878, -1929, 0, 70, 1718, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1900, -1531, -2546, 2632, 2142, 1440, 3998, 2503, 4594, 4856, 5366, 4675, 5070, 2469, 2820, 3244,
+ -1494, -2418, 3386, 979, 3306, 3314, 1887, 678, -1634, 729, -3645, 1286, 1876, 1567, 3779, 3039,
+ 5571, 7783, 3625, 5289, 7914, 6338, 5497, 5993, 6997, 6286, 9412, 8404, 6089, 6075, 4067, 2952,
+ 323, -4203, -1526, 2113, 3062, 2337, 4212, 2538, 3759, 1044, 6945, 3629, 1811, -76, 38, 495,
+ -5702, -3177, -2377, -2904, 518, 564, -503, -2210, 66, -3139, -1550, 2905, -1438, -1562, 103, 102,
+ 706, 1455, 489, 2384, 769, -1733, 88, 106, 133, 3006, -2070, 103, 118, 108, 54, 0,
+ -2804, -4785, -1492, -82, -497, -1257, 1341, 19, 3884, 553, 7715, 2557, 2052, -584, -2103, -2076,
+ -5825, -6483, -779, -3012, -2093, -2076, -1802, -2172, -1619, -2308, -1076, -42, -496, -1331, 1426, 0,
+ 3350, 2807, 5102, 2677, 2505, -268, -929, -921, -2556, -3972, 488, -1521, -924, -921, -796, -954,
+ -2115, -4526, -581, -97, -30, 0, 0, 0, 1160, -3682, 4953, 0, -635, -651, -2155, -2135,
+ -5960, -4808, -2136, -2813, -2159, -2135, -1846, -2213, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1424, -2254, 2888, -2057, -1033, -1254, -375, -1999, -333, 377, 662, -1918, -1238, -2069, -2217, -4163,
+ -4426, -8362, -652, -3992, -4147, -4163, -2866, -2171, 2375, 5160, 2225, 358, -468, -589, -218, -921,
+ -2079, 541, -3099, -896, -2433, -2924, -1014, -1875, 671, -3113, 2352, -216, 315, -295, -1278, -956,
+ 891, -1972, 7236, -1137, -1135, -1365, -505, -2135, -2020, -928, -933, -2077, -2843, -3770, -2351, -4349,
+ -2276, -3931, 1395, -2886, -2559, -3066, -2972, -2217, 390, 416, 392, 165, 7, 0, 0, 0,
+ -188, 1379, -1424, 0, -235, -253, 0, 0, 385, 406, 341, 200, 282, 200, 1, 0,
+ -1257, -2067, 2330, -2152, -928, -1102, -409, -1716, -58, 586, 670, -1664, -1154, -1813, -2263, -3865,
+ -4147, -7251, -1043, -3747, -3905, -3901, -2712, -2165, -1246, -2148, 2703, -968, -984, -1180, -436, -1845,
+ -821, 1212, -1021, -1795, -819, -1511, -1098, -2833, -3093, -6637, 79, -2754, -2877, -2883, -1773, -958,
+ -166, -157, -348, -2245, -5, 0, 0, 0, 1371, 1513, 1048, 0, -635, -651, -2155, -2136,
+ -2235, -1919, -1961, -2077, -2159, -2136, -1846, -2213, 16, 0, 0, 0, 3, 0, 0, 0,
+ 50, 1242, -933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1846, 981, -4152, -830, 2218, 1843, 2063, 2538, 3025, -3403, 5831, 3033, 142, 441, -1844, 549,
+ -856, 274, -1550, -407, -881, -438, -459, -2153, -3772, -522, -5639, -365, -1581, -1423, -721, 1463,
+ 3357, -592, 2728, 4034, 1291, -331, -1955, 595, 316, 3490, -2317, 565, -52, 148, -23, -952,
+ 3379, 5591, 1013, -815, 6318, 4997, 4617, 2939, 117, 2349, -2242, 895, -3106, -276, -1537, 910,
+ 1316, -439, 873, -377, -618, -138, -294, -2208, 2804, 6246, 505, 126, 3045, 2737, 2840, 2814,
+ 732, 1344, -875, 2737, 58, 465, 1303, 2917, 5328, 5896, 2966, 2939, 2969, 2993, 1490, 5,
+ -3569, -140, -6463, -898, 1576, 1023, 2941, 2914, 6290, 2992, 7058, 5327, 3452, 1821, -1129, 944,
+ -481, -90, 181, 740, -517, -66, -256, -2148, -2629, -691, -4022, -402, -178, -671, 1218, 1207,
+ 4048, 2495, 4215, 3712, 2534, 518, -1014, 330, -416, -267, -148, 103, -321, -124, -159, -952,
+ -3889, -3260, -4328, -932, -1715, -1828, 0, 0, 3863, 1027, 6084, 2515, 1974, -641, -2159, -2135,
+ -4175, -4208, -3884, -3206, -3708, -3264, -1850, -2213, -959, -487, -1129, 0, -907, -976, 0, 0,
+ 1395, 1342, 1487, 1343, 1395, 6, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0,
+ -4010, -3219, -5293, 2121, -336, 235, 1466, 2538, 4767, -2122, 8061, 4892, 3123, 1250, 83, 558,
+ -265, 2893, 2346, 3548, 607, 629, -448, -2144, -404, 1166, -1919, 3048, 2853, 1895, 4823, 2810,
+ 3821, -400, 5029, 5065, 3157, 605, 1500, 1992, 144, -1559, 4138, 2209, 2044, 2068, 692, -950,
+ -3650, -4994, -2623, 389, -1265, -1334, 305, 302, 3500, -1336, 7355, 2534, 1736, 89, -1894, -1822,
+ -2914, -1919, 1118, 482, -1826, -1814, -1686, -2213, -1395, -441, -1676, 2842, -1379, -1499, 203, 201,
+ 859, 1611, 678, 2528, 972, -877, 174, 209, 2883, 2712, 3071, 3113, 230, 214, 107, 0,
+ -2808, -4409, -1778, -84, -764, -794, 9, 14, 2429, -291, 4399, 1123, 2486, 1462, 60, 66,
+ -3138, -2503, -5, -438, 67, 67, 52, 54, -955, -2903, 464, -42, -13, 0, 0, 0,
+ 563, -641, 1424, 0, 572, 615, 0, 0, -2405, -1598, -151, -636, -3, 0, 0, 0,
+ -2009, -2329, -2232, -97, -23, 0, 0, 0, 1313, -1485, 3302, 0, 1326, 1426, 0, 0,
+ -1882, -2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -7230, -4247, -9610, -5596, -5283, -3625, -1998, 0, 1773, 5745, 1406, -158, 3011, 2623, -1847, -1926,
+ 4975, 3467, 4717, 2329, 2627, 2645, 1489, 1397, -4444, -1172, -7023, -2613, -3642, -2971, -962, 0,
+ 2116, 4273, 1868, 675, 2427, 1956, -808, -846, 3856, 6898, 169, 2425, 593, 619, 5, 4,
+ -7990, -5973, -9224, -6060, -4842, -3878, -2232, 0, -184, 3122, -1465, -880, 248, 1114, -4154, -1961,
+ 3931, 224, 5927, 1206, 1329, 1426, 0, 0, 177, 2525, -2002, 0, 717, -68, 0, 0,
+ 1795, 4571, -2072, 1315, -91, 376, -2171, 0, 2297, 1256, 2453, 2375, 16, 0, 0, 0,
+ -5738, -3019, -7874, -5567, -3645, -1768, -1793, 0, 1715, 3180, 3700, -56, 3261, 2824, -1523, -1575,
+ 4840, 363, 7400, 2644, 1309, 1394, 0, 0, -3485, -748, -5947, -3412, -2632, -1882, -1929, 0,
+ 2350, 4237, 3182, 874, 2685, 2155, -1624, -1694, 4400, 1323, 5817, 2783, 588, 615, 0, 0,
+ -4406, -4174, -4014, -4214, -2058, -9, 0, 0, -845, -1404, 1295, -1548, 1315, 1426, 0, 0,
+ 1209, -1485, 3302, 0, 1321, 1426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1850, 3102, 4390, 2484, 3420, 1350, 3, 0, 3270, 1568, 3680, 2147, 847, 712, 1624, 3,
+ -1395, -1989, -1409, -2165, -297, -348, 257, 241, 5124, 2633, 3363, 2348, 2835, 626, 0, 0,
+ 3126, 3129, 2138, 3069, 420, 307, 712, 0, -2640, 3355, -8293, -962, -235, -585, 2932, 2750,
+ -748, 2781, 4155, 2156, 3157, 1437, 0, 0, 3070, 1994, 3954, 2805, 877, 712, 1650, 0,
+ -2807, -2867, -2950, -2232, 475, 231, 2482, 2328, 1399, 1344, 1489, 1344, 1396, 6, 0, 0,
+ 1501, 1593, 278, 1204, 14, 0, 0, 0, -882, 1998, -3386, 0, 1254, 1055, 2584, 2424,
+ 2070, 3078, 4256, 2563, 3400, 1163, 5, 0, 3184, 1376, 3411, 2140, 688, 574, 1330, 4,
+ -1516, -2173, -1320, -1789, -767, -825, 5, 5, 1891, 2982, 4223, 2434, 3323, 1244, 0, 0,
+ 3208, 2455, 2607, 2040, 736, 615, 1426, 0, -1407, -2221, -1133, -1929, -602, -647, 0, 0,
+ 2779, 2677, 2966, 2678, 2778, 12, 0, 0, 2688, 690, 2137, 2113, 9, 0, 0, 0,
+ -1783, -971, -2252, 0, -1810, -1946, 0, 0, 1152, 1109, 1228, 1109, 1152, 5, 0, 0,
+ 1207, 1196, 201, 875, 4, 0, 0, 0, -738, -402, -933, 0, -749, -806, 0, 0,
+ -3654, -2237, -4761, -2146, -3831, -1051, 674, 0, -2677, -3693, -173, -2613, 380, 289, 530, 552,
+ 3296, 3172, 5374, 3207, 1224, 1541, -2035, -1909, 2267, 5461, -278, 2483, 1806, 1917, 2971, 0,
+ 2418, 76, 2479, 1171, 2057, 1501, 2514, 2610, 1399, 2053, 3256, 5812, -294, -231, -938, -879,
+ -780, -2201, 500, 1396, -1188, -4125, -2233, 0, 346, 1420, -2159, 72, -1969, -1565, -1889, -1962,
+ -769, 2994, -1199, 559, -2425, -2352, -2174, -2039, -1170, -418, -1685, 525, -1529, -1878, 0, 0,
+ 66, 124, -195, 164, -177, -201, 0, 0, 260, 5689, -3073, 1527, -137, -151, 0, 0,
+ -1513, 1834, -4336, 14, -1799, -1946, 0, 0, 2283, 2133, 2254, 658, 1948, 1430, 5, 0,
+ 3863, 3694, 5000, 4690, -675, -506, -2121, -1989, -477, 2440, -3069, 0, -748, -806, 0, 0,
+ 2423, 2612, 2404, 1111, 1998, 1459, 5, 0, 3140, 2139, 4542, 4164, -280, -214, -938, -879,
+ 256, 2816, -2116, 0, 1, 0, 0, 0, 2287, 2123, 2271, 635, 1961, 1446, 5, 0,
+ 3615, -219, 6094, 2619, -673, -496, -2174, -2039, 139, 1503, -1130, 0, 1, 0, 0, 0,
+ 1326, 1567, 1316, 773, 1062, 772, 2, 0, 1343, 676, 1488, 1396, 9, 0, 0, 0,
+ -3992, -558, -6266, -2730, -2046, -276, 1466, 0, 1661, 2222, 1613, -53, 2865, 2578, 2113, 2557,
+ 3137, 6572, -720, 2545, 2626, 2640, 1489, 1397, -5967, -2836, -8600, -4039, -5058, -4497, -2686, 0,
+ 2350, 7532, 571, 675, 2419, 1956, 2554, 2652, 4808, 4392, 3739, 2424, 591, 619, 5, 4,
+ -4359, -1766, -6133, -4214, -2244, -211, 0, 0, 1421, 1686, 3133, -259, 3096, 2714, 14, 10,
+ 3581, 2822, 3396, 2329, 1338, 1426, 0, 0, 121, 2544, -2118, 0, -119, -134, 0, 0,
+ 2594, 5503, 195, 1342, 1855, 1341, 4, 0, 2453, 4173, 331, 2424, 17, 0, 0, 0,
+ -3783, -2458, -4548, -3727, -2013, -18, 0, 0, 39, -197, 2048, -875, 1926, 1779, -8, 0,
+ 2295, -772, 4365, 1159, 1296, 1390, 0, 0, -2925, -2758, -2528, -2792, -896, -4, 0, 0,
+ 201, -297, 1273, -668, 1141, 1232, 0, 0, 520, -641, 1424, 0, 568, 615, 0, 0,
+ -2039, -1962, -2173, -1962, -2039, -9, 0, 0, -2151, -2115, -356, -1548, -11, 0, 0, 0,
+ 1212, -1485, 3302, 0, 1325, 1426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1659, 2175, -3407, 0, -2808, -2126, -2949, 2393, 1729, 614, 991, 1792, -220, -390, 1541, 0,
+ -2136, 714, -1772, 1683, -1982, -1149, -1109, 0, -1769, 161, -3603, 0, -2962, -2264, -2429, 1051,
+ 2670, 5634, -388, 2856, -101, -180, 710, 0, 2856, 3610, 4672, 6800, 2285, 2893, 2971, 0,
+ -1241, 2441, -3559, 0, -2900, -2653, -2059, 2437, 1568, -1272, 2180, 1662, -238, -417, 1647, 0,
+ -3593, -2013, -2836, -479, -3039, -2175, -2233, 0, -1449, -1801, -4176, 0, -3423, -2776, -1922, 0,
+ 342, 2945, -2039, 112, 0, 0, 0, 0, 256, 248, 2152, 2470, 25, 0, 0, 0,
+ 587, 3270, -546, 0, -526, 452, -3006, 1958, -1016, -3842, -461, -1076, -198, -389, 1657, 0,
+ -1823, -28, 532, 448, -904, -5, 0, 0, -147, 1911, -1540, 0, -1328, -356, -3188, 2106,
+ 225, -1320, 598, -488, -102, -180, 710, 0, -648, 146, 1699, 1810, -655, 0, 0, 0,
+ 1306, 2700, 1651, 0, 1324, 1426, 0, 0, -2151, -4487, -1921, -1131, -237, -417, 1647, 0,
+ -2115, -291, -1882, -2252, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -124, 409, 639, 0, 570, 630, -20, -4, 693, -880, 251, -2448, 2097, 1524, 3, 0,
+ 2383, 304, 2132, 1170, 62, -48, 0, 0, -2265, 1902, -5191, 0, -2285, -2455, 0, 0,
+ 4090, 3777, 4145, 2232, 1928, 1394, 4, 0, 1122, 2225, -2182, 1906, 1411, -1786, 0, 0,
+ -965, 2377, -2507, 0, -443, -470, 0, 0, -1791, -3728, -2337, -4890, 1845, 1340, 4, 0,
+ 3586, 3218, 1808, 644, 3971, 1520, 0, 0, -2303, -944, -3385, 0, -2485, -2672, 0, 0,
+ 1330, 1568, 1317, 774, 1068, 773, 2, 0, 1778, 2811, -674, 1543, 405, 14, 0, 0,
+ -276, 176, 359, 0, 294, 324, -1, -5, 919, -680, 907, -1845, 2136, 1553, 5, 0,
+ 2505, 127, 2434, 1472, 26, 1, 0, 0, -79, 292, 677, 0, 542, 585, 0, 0,
+ 794, 225, -329, -2168, 2046, 1487, 5, 0, 2356, 83, 2312, 1213, 3, 0, 0, 0,
+ -1715, -971, -2252, 0, -1816, -1946, 0, 0, 2451, 928, 4275, 1541, 2118, 1540, 5, 0,
+ 2855, 398, 2569, 3074, 18, 0, 0, 0, -701, -402, -933, 0, -749, -806, 0, 0,
+ 1095, 1294, 1087, 638, 877, 638, 2, 0, 1185, 165, 1064, 1273, 8, 0, 0, 0,
+ 1137, -2091, 2973, 0, 1129, 1439, -169, -686, -739, -13, 1060, 3413, -2714, -1872, -667, 0,
+ -2599, -1995, -341, -167, -1901, -74, 0, 0, -1242, -4732, -1923, 0, -2203, -1326, -755, -3244,
+ -345, 1371, 1511, 4233, -479, -255, -623, 0, 486, -440, 3317, 4131, -212, -34, 0, 0,
+ -1549, -1299, 534, 0, -829, -1680, 568, 2438, 6779, 9289, 7910, 6895, 424, 607, -1993, 0,
+ 2913, -1538, 2527, 3687, -2577, -79, 0, 0, -1757, -1294, -2350, 0, -1885, -2030, 0, 0,
+ 3039, 5925, 2403, 4503, -1553, -810, -2155, 0, 862, 490, 455, 2915, 101, 0, 0, 0,
+ -1306, -3308, -1154, 0, -2287, -1465, -2097, -1, 2700, 3824, 4092, 4981, -11, -3, -18, 0,
+ 1472, -517, 5127, 6107, -1291, 790, 889, 0, -950, -1963, -1644, 0, -1977, -1112, -2135, 0,
+ 1108, 1466, 2392, 2614, -1, 0, 0, 0, 645, -227, 3470, 4002, -685, 222, 263, 0,
+ 392, -2398, 1186, 0, -457, 514, -2115, 0, -2, 0, 5, 4, -4, 0, 0, 0,
+ -39, -1942, 4010, 2612, -2199, -79, 0, 0, -391, -487, -1129, 0, -952, -487, -1129, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 133, 136, 1259, 1395, 14, 0, 0, 0,
+ -1887, -1138, -3937, 0, -3229, -2517, -626, -3177, -236, 3132, -4389, 1756, -218, -390, 1541, 0,
+ 2057, 5069, 2814, 5427, 2761, 3066, 3148, 0, -1620, 1773, -3426, 0, -2822, -2111, -497, -3296,
+ 3501, 4860, 1491, 2604, -102, -180, 710, 0, 46, 681, 1735, 4212, -720, 104, 106, 0,
+ 549, 1786, -467, 0, -443, 412, -1879, -13, -1690, -842, -4145, -798, -236, -417, 1647, 0,
+ 985, 2925, 3211, 2772, 2143, 2837, 2913, 0, -703, -913, -2117, 0, -1763, -980, -1962, 0,
+ 568, 5775, -3997, 221, 1, 0, 0, 0, 3020, 3131, 5091, 4959, 2593, 2762, 2836, 0,
+ 930, 1882, 660, 0, 492, 974, -933, 0, -2082, -4254, -1661, -1084, -246, -415, 1592, 0,
+ -1872, -83, -711, -965, -331, 84, 87, 0, 598, 2025, 712, 0, 571, 615, 0, 0,
+ -928, -1935, -1543, -488, -102, -180, 710, 0, -912, -126, -812, -971, -441, 0, 0, 0,
+ 1225, 712, 1650, 0, 1324, 1426, 0, 0, -2150, -4487, -272, -1129, -237, -417, 1647, 0,
+ -2115, -291, -1882, -2252, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -317, 4533, 418, 2354, -1147, -489, -1965, 0, -538, -570, -2728, -2802, -611, 148, -80, 0,
+ 813, 1963, -2539, 2730, -855, -244, -761, -176, 674, 2832, -2247, 1148, -910, -234, -1962, 0,
+ -779, -916, -1813, -1979, 511, 221, 0, 0, 2029, 7028, -6748, 3412, -1872, -947, -2283, -85,
+ 1547, 4707, 4332, 1912, 599, 1005, -976, 0, -1710, 888, -6487, -4601, -1219, 185, 0, 0,
+ 1336, 508, 1378, 2762, 892, 712, 1452, -196, 363, 2558, 715, 2512, -1440, -829, -1922, 0,
+ 255, 2895, -2176, 0, 17, 7, 0, 0, 302, 2671, -1922, 116, 2, 0, 0, 0,
+ 2773, 5846, 1104, 13, -318, 471, -2142, 0, -1881, -2077, -3766, -4112, -1459, -1, -6, 0,
+ -689, 1505, -1481, -113, 900, 701, 1418, -192, 1480, 5330, -830, 0, -1126, -356, -2252, 0,
+ -812, -921, -2759, -2959, -637, 0, 0, 0, -176, 2401, -1961, -59, 158, 307, 626, -85,
+ 2391, 1423, 3301, 0, 1326, 1426, 0, 0, -1940, -2135, -2040, -2349, -1492, 0, 0, 0,
+ -942, -1386, 677, -137, 1299, 712, 1451, -196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1402, -1076, -1187, -1817, -714, -731, -82, 0, 2623, 955, 4563, 3457, 680, -171, -60, 0,
+ 406, 1100, 4477, -2097, 186, -1473, -689, -2264, -2594, 1037, -5922, -837, -4490, -4017, -2197, 0,
+ 3302, 3622, 3785, 6069, -648, -1014, -2197, 0, -490, 848, 420, -882, -1498, -1568, -2457, -979,
+ -2705, -3969, -939, -1942, -542, -1184, 1651, 0, 5555, 3489, 8054, 5472, 1751, 557, 1651, 0,
+ 1308, 1358, 6089, -2276, 1467, -728, 1049, -2271, -2233, -1333, -3092, 0, -2485, -2672, 0, 0,
+ 3634, 4000, 3821, 4401, 707, 0, 0, 0, 1035, 1437, 667, 94, 8, 0, 0, 0,
+ -1106, -948, -1309, -1869, -770, -822, -4, 0, 2523, 1178, 4143, 3243, 782, -125, 0, 0,
+ 798, 1532, 4258, -1771, 429, -1033, -197, -1825, -1785, -1344, -923, -837, -607, -647, 0, 0,
+ 2394, 915, 4114, 3095, 958, -134, 0, 0, 261, 861, 3403, -1926, -349, -1552, -1235, -1963,
+ -279, -260, -2640, -1942, -1810, -1946, 0, 0, 2647, 2914, 2783, 3206, 949, 0, 0, 0,
+ 2616, 3574, 2979, 187, 1311, 712, 1650, 0, -638, -402, -933, 0, -749, -806, 0, 0,
+ 1096, 1207, 1153, 1328, 583, 0, 0, 0, 847, 1185, 550, 78, 2, 0, 0, 0,
+ 3353, 1597, 3065, 3, 1191, 1461, -475, 0, -4537, -4999, -4166, -4867, -1622, 185, 0, 0,
+ 822, -1166, -210, 2706, 1452, 694, 1689, 79, 529, -104, -3084, 0, -2939, -2328, -2197, 0,
+ -789, -896, 2040, 2013, -21, 106, 0, 0, 1770, 2107, -1461, 1672, 1214, 307, 787, 74,
+ 158, -541, 883, 0, -700, -1379, 1651, 0, 566, 643, -1562, -1546, 1198, 214, 0, 0,
+ 5062, 2160, 4598, 3535, 907, 712, 1891, 238, -511, -562, -1304, 0, -1048, -1127, 0, 0,
+ 205, 226, 216, 249, 415, 205, 0, 0, 2793, 1957, 131, 3229, 65, 0, 260, 256,
+ 2686, 3506, -442, 0, -1540, -861, -2097, 0, -1851, -2073, -1980, -2281, -117, 212, 0, 0,
+ 3579, 5704, -1117, 3329, 1331, 692, 1608, 2, 1175, 2970, -1841, 0, -1944, -1281, -2135, 0,
+ -810, -921, -879, -1013, -60, 88, 0, 0, 1589, 3377, -1607, 1378, 588, 307, 712, 0,
+ 2845, 4238, 1181, 0, -271, 511, -2115, 0, -1916, -2135, -2040, -2349, -453, 0, 0, 0,
+ 781, 3523, -466, 0, 1301, 712, 1650, 0, 190, 1503, -1130, 0, -851, -487, -1129, 0,
+ 12, 0, 0, 0, 3, 0, 0, 0, 116, 1503, -1130, 0, 0, 0, 0, 0,
+ 3282, 998, 1964, 1912, -1218, -538, -2039, 0, -392, -72, 1975, 2347, -1122, 185, 0, 0,
+ 2137, 7323, -3664, 2770, 1936, 705, 1430, -169, 1303, 535, 2262, 2672, -909, -234, -1962, 0,
+ -809, -916, 2067, 2039, -332, 205, 0, 0, 2491, 5210, -1722, 3151, 1254, 307, 626, -85,
+ 4183, 3926, 1857, 420, -94, 614, -1884, 0, -1887, -2135, -2028, -2337, -1445, 22, 0, 0,
+ -128, 4322, -3361, 208, 1309, 712, 1451, -196, 1767, 2616, 618, 2458, -1478, -846, -1962, 0,
+ 52, 0, 0, 0, 35, 15, 0, 0, 716, 5624, -4059, 230, 5, 0, 0, 0,
+ 1277, 1923, 645, 9, 590, 988, -933, 0, -1884, -2075, -2004, -2297, -994, 1, 0, 0,
+ -1372, -725, -1994, -118, -34, -11, -226, -183, 487, 307, 712, 0, 572, 615, 0, 0,
+ -836, -921, -879, -1013, -445, 0, 0, 0, -660, -905, -420, -59, -4, 0, -86, -85,
+ 1129, 712, 1650, 0, 1326, 1426, 0, 0, -1940, -2135, -2040, -2349, -1032, 0, 0, 0,
+ -1498, -2098, -974, -137, -4, 0, -199, -196, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 878, 3705, -1717, -1422, -26, 0, 0, 0, 2571, 1856, 7160, 2164, 4127, 3603, 6071, 0,
+ 1465, -832, 4754, 5, 1248, 1335, 934, 1437, 5957, 9818, 3872, 4020, 29, 0, 0, 0,
+ -197, 863, 710, 2628, 184, 748, 2139, 0, 2549, -177, 4503, 10, 579, 615, 3, 5,
+ 13, 1788, -3681, -2343, -46, 0, 0, 0, 3471, 2359, 8709, 2195, 5333, 5178, 5360, 0,
+ -1109, -3487, 1904, -8, 1330, 1426, 0, 0, 3544, 5122, 5018, 4613, 14, 0, 0, 0,
+ -2978, -1751, -4202, 88, -3059, -1755, -4204, 0, 2551, 2443, 2810, 0, 7, 0, 0, 0,
+ -1759, -2687, -3521, -3640, -43, 0, 0, 0, 2128, 461, 7507, 16, 4094, 3271, 4310, 5,
+ -2809, -3058, -217, -7, 1307, 1398, 0, 0, -1143, -2003, -3126, -2935, -26, 0, 0, 0,
+ 2106, 896, 4988, 0, 3010, 2152, 3564, 0, -1160, -1317, -101, -3, 580, 615, 0, 0,
+ -1234, -1503, -1067, -1594, -32, 0, 0, 0, 155, -774, 4952, 0, 2175, 2138, 1651, 0,
+ -2927, -3055, -233, -8, 1326, 1426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -8343, -9647, -8510, -6294, -65, 0, 0, 0, 329, -1529, 5835, -1728, 1490, -488, 501, -2003,
+ -6092, -2431, -6033, 82, -1792, -1928, 161, 248, -1849, -1916, -2016, 310, -18, 0, 0, 0,
+ -1535, -1704, 230, -796, -837, -1243, -2114, -879, -33, 629, -1519, 2678, -1627, -1762, 1838, 2828,
+ -6196, -7555, -6091, -3953, -58, 0, 0, 0, -1068, -2449, 4020, -1846, 7, -1381, -1417, -2039,
+ -3710, -595, -4122, 2232, -1567, -1694, 1556, 2394, -481, -126, -779, 392, 1, 0, 0, 0,
+ -209, -126, -293, 0, 41, -126, -293, 0, -6, -215, -848, 334, -907, -977, 1620, 2493,
+ -7665, -8984, -8157, -5738, -57, 0, 0, 0, 645, -1061, 5333, -1483, 1738, -78, 679, -1638,
+ -5848, -2821, -6188, 9, -1825, -1963, 3, 5, -6439, -7038, -5963, -4435, -50, 0, 0, 0,
+ -733, -2001, 3740, -1595, 268, -1387, -243, -1762, -4116, -761, -3924, -3, -1747, -1879, 0, 0,
+ -4260, -5108, -6446, -2896, -18, 0, 0, 0, 2359, 1423, 3301, 0, 3056, 2138, 1650, 0,
+ -4220, -4527, -6308, -8, -1810, -1946, 0, 0, -666, -402, -933, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 213, 0, 0, 0, -323, -402, -933, 0, -749, -806, 0, 0,
+ -1353, 76, -2591, -1962, -7, 0, 0, 0, 6323, 5968, 2245, 2194, 5481, 6194, 5120, 2394,
+ 631, -3471, -1005, -1771, 1859, 2006, -1276, -1963, -407, 1783, 1306, 2338, 20, 0, 0, 0,
+ 2004, 3043, -4330, 1264, 1630, 2914, 240, 2829, 2311, -1889, -1519, -816, -11, -17, -588, -905,
+ -5306, -3635, -11178, -4996, -16, 0, 0, 0, 9531, 8318, 5302, 2541, 9083, 7931, 8560, 2376,
+ 348, -4154, -5626, -1891, -1739, -1856, -1363, -2098, 673, 2872, -1744, 834, 19, 0, 0, 0,
+ 3136, 3852, -525, 2433, 2483, 3250, 2274, 1395, 3935, 147, -175, 0, -140, -151, 0, 0,
+ -2618, -180, -5490, -2158, -10, 0, 0, 0, 6845, 6232, 4064, 2519, 6628, 6556, 6007, 1918,
+ -1467, -5717, -3377, -1824, -5, -6, -1330, -2046, -1281, -307, -2502, -1100, -5, 0, 0, 0,
+ 3621, 3305, 1384, 1043, 3476, 3380, 3265, 1394, -7, -2468, -1500, -816, 5, 0, -588, -905,
+ -3871, -4213, -4234, -3167, -22, 0, 0, 0, 2365, 1428, 3297, 0, 2551, 2142, 1655, 4,
+ -3608, -3131, -3478, -1891, 0, 0, -1363, -2098, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 4, 0, 0, 0,
+ 3456, 7802, 5125, 5852, 9, 0, 0, 0, -2626, -1253, -179, 2194, -1007, 1400, -3328, 24,
+ -882, -3343, 1858, -5, 1249, 1335, 934, 1437, 821, 3560, -697, -146, -15, 0, 0, 0,
+ 1046, 1511, 2529, 2430, 1694, 2663, 1053, 0, 1342, -1234, 2889, -3, 579, 615, 3, 5,
+ 1341, 2197, 1964, 1768, -12, 0, 0, 0, -1342, -1542, 2754, 261, 616, 1359, -554, 0,
+ -2436, -2912, 236, -8, 1333, 1426, 0, 0, 3147, 5577, 5066, 5320, 23, 0, 0, 0,
+ -2790, -1593, -3973, 174, -2884, -1601, -3977, 0, 2496, 2296, 2750, 0, 7, 0, 0, 0,
+ 939, 835, 1319, -483, -14, 0, 0, 0, -700, -1110, 2806, 12, 740, 636, 1531, 6,
+ -1242, -1370, 1669, 0, 1300, 1394, 0, 0, 313, 290, 511, -276, -10, 0, 0, 0,
+ -1396, -1592, 2139, 0, 366, 307, 712, 0, -599, -630, 712, 0, 572, 615, 0, 0,
+ 869, 672, 1186, -639, -11, 0, 0, 0, 1180, 712, 1651, 0, 849, 712, 1650, 0,
+ -1390, -1460, 1650, 0, 1326, 1426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -7110, -6344, 4910, 769, -6, 0, 0, 0, -3644, -3527, -1068, -2089, -150, -501, -8, 0,
+ -1732, -864, -3900, -855, -1500, -1586, 2724, 2290, -1702, -846, 2894, 3127, 1227, 0, 0, 0,
+ -3083, -2515, -2457, -962, 148, -231, -4, 0, -1174, -910, -2934, -412, -1517, -1511, 3720, 3042,
+ -11019, -10128, -334, -2350, -3200, -1963, 0, 0, 488, 66, 1049, -2231, -367, -536, -9, 0,
+ -1530, -569, -3228, -955, -817, -982, 2202, 1967, -2822, -1767, -4097, 0, -1747, -1879, 0, 0,
+ 2837, 2862, 0, 0, 379, 0, 0, 0, -623, -829, -1922, 0, -1528, -1661, 105, 90,
+ -9227, -8662, 88, -2305, -1368, -12, 0, 0, -1971, -2401, 1118, -2143, -55, -449, -8, 0,
+ -1701, -723, -3949, -767, -1758, -1982, -401, -250, -7281, -6636, 434, -1013, -593, 0, 0, 0,
+ -1999, -2201, 452, -962, 203, -231, -4, 0, -1866, -1960, -4198, -825, -1830, -2006, -185, -117,
+ -4253, -4332, -388, -2349, -1374, 0, 0, 0, -323, -751, 1049, -2231, -559, -536, -9, 0,
+ 79, 1988, 0, 0, -40, -139, -429, -272, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -782, -1392, -220, -2330, 292, 1401, 0, 0, -910, -1327, 1538, 3, -2, 1, 0, 0,
+ -2189, -2167, 1603, 1, -69, -155, -2491, -2029, -339, -614, 2808, -924, 135, 615, 0, 0,
+ 2771, 2497, -1638, 0, -3, 0, 0, 0, -938, -947, 712, 0, -18, -60, -1139, -929,
+ -793, -1423, 2080, -2299, 301, 1426, 0, 0, 1650, 1151, -312, 0, -7, 0, 0, 0,
+ -2239, -2197, 1651, 0, -57, -139, -2642, -2155, 1, 0, 2653, 94, 1, 0, 0, 0,
+ 401, 390, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -970, -1506, -736, -2327, 57, 1146, 0, 0, -611, -1026, 1598, 0, -6, 0, 0, 0,
+ -1787, -1762, 1328, 2, -53, -139, -2197, -1779, 152, -306, 479, -1047, 701, 1232, 0, 0,
+ -1392, -1570, 712, 0, -6, 0, 0, 0, -1916, -1899, 1427, 0, -26, -60, -2097, -1745,
+ -1942, -2135, -2040, -2349, -1032, 0, 0, 0, 1143, 712, 1650, 0, -1, 0, 0, 0,
+ -12, 0, 0, 0, -46, -139, -429, -272, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -846, -950, -5558, -2364, -876, -2, 0, 0, -494, -936, 2548, 55, -386, -524, 0, 0,
+ 2793, 2971, -1733, 289, -418, -546, 2213, 1974, 3682, 3983, -8437, -1047, -319, 0, 0, 0,
+ 2210, 1984, 803, 2, -58, -536, 0, 0, 4000, 4942, -1490, 1271, -1777, -1958, 1331, 1173,
+ -4634, -5147, 178, -2428, -626, 0, 0, 0, -3306, -3854, 1994, 683, -1348, -1125, 3, 0,
+ 1798, 526, -2526, -955, 1284, 1288, 2617, 2321, 326, 310, -233, 0, 445, 0, 0, 0,
+ -439, -623, -1837, 315, -1462, -1585, 1, 0, 1486, 1223, -1130, 0, 1, 0, 2916, 2482,
+ -3319, -2975, -6262, -2362, -1006, 0, 0, 0, -1044, -1430, 3185, 5, 407, -11, 0, 0,
+ 1336, 1158, -3650, 0, -1721, -1947, 2603, 2307, -2298, -1841, -3977, -1047, -448, 0, 0, 0,
+ -462, -641, 1424, 0, 424, 0, 0, 0, 757, 581, -3264, 0, -1732, -1905, 1066, 947,
+ -3391, -3047, -6387, -2428, -1038, 0, 0, 0, -1118, -1485, 3301, 0, 415, 0, 0, 0,
+ -730, -907, -2119, 0, -1740, -1967, -429, -272, -772, -487, -1129, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 223, 0, 0, 0, -391, -487, -1129, 0, -907, -976, 0, 0,
+ -1212, -850, -4529, -2225, -1601, -301, 0, 0, 1610, 1210, 1036, -2089, -122, -501, -8, 0,
+ 281, 2411, -578, 627, -1662, -1896, 2214, 1975, -2695, -2387, -2370, -1013, -593, 0, 0, 0,
+ -2730, -2938, 452, -962, 145, -231, -4, 0, -2192, -2560, -4673, -1149, -1589, -1755, 2728, 2362,
+ -5528, -5133, -2281, -2349, -1374, 0, 0, 0, -323, -751, 1049, -2231, -188, -536, -9, 0,
+ -552, 1175, -1884, 0, -1548, -1767, -116, -5, -1340, -846, -1962, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 387, 0, 0, 0, -647, -846, -1962, 0, -1564, -1695, 208, 177,
+ -2454, -2120, 434, 57, -313, -8, 0, 0, -1099, -1063, -254, -1793, -48, -197, -7, 0,
+ -251, 1202, -937, 0, -748, -803, 25, 19, -1997, -1899, 1427, 0, -148, 0, 0, 0,
+ -1514, -1572, -1235, -1928, -1056, -1080, -7, 0, 70, 1718, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -341, 0, 0, 0, 572, 712, 1650, 0, 1326, 1426, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -616, 4303, 4400, 2747, 3697, 3228, 1546, 0, 5138, 4444, 549, 0, 909, 1559, 2656, 417,
+ 690, 265, -3230, -2173, -3073, -2646, -1911, -2129, 1633, 4228, -2540, 1340, 1792, 1558, 716, 0,
+ 6701, 6151, -2738, 0, 541, 2453, 3232, 506, -300, -456, -988, -954, 2095, 1612, -928, -1013,
+ -3778, 1545, 3479, 2230, 6278, 5387, 1658, 0, 3865, 3118, 6861, 2645, 1051, 1707, 2700, 423,
+ -2801, -2897, -3917, -2212, -6255, -5771, -2152, -2349, 1701, 2553, 2784, 2936, 5826, 5220, 10, 0,
+ 5455, 5042, 840, 2533, 27, 90, 108, 17, 1908, 1905, -4311, 0, -1747, -1879, 0, 0,
+ -1171, 2645, 1578, 12, 1039, 722, 1614, 0, 2610, 1986, 2478, 16, 735, -414, 16, 3,
+ -3562, -3658, 251, -1777, -2151, -1921, -2101, -2296, -1647, 1096, 678, -4, 442, 307, 712, 0,
+ 3455, 2973, 597, 0, 795, -461, 0, 0, -2381, -2575, -732, -1912, -946, -846, -928, -1013,
+ 614, 2700, 1651, 0, 1036, 712, 1650, 0, -1206, -1485, 3302, 0, -5, 0, 0, 0,
+ -2343, -2197, 1651, 0, -2183, -1962, -2152, -2349, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -2310, -3464, 660, -2124, -3337, -2717, -672, 0, -3152, -3292, 1117, -1888, 992, -1054, -481, -333,
+ 2176, 1980, 663, 3, 2107, 2207, 2987, 3228, 593, -446, -589, -978, -3792, -2695, -3680, 0,
+ -2779, -2401, -1677, -829, 439, -506, -268, -153, 8610, 8163, -5193, 0, 4263, 5139, 5501, 4817,
+ -702, -2228, 1033, -2269, -4629, -3553, -2280, 0, -2167, -2658, 2857, -1922, 994, -1173, -621, -356,
+ 6622, 6244, -2508, 0, 122, -420, 420, 1351, 2043, 1716, 885, 0, -917, -614, -1423, 0,
+ 9, 0, 0, 0, 10, 0, 0, 0, 4773, 4506, -3387, 0, 1305, 1344, 1474, 1609,
+ -2429, -3527, -432, -2184, -3434, -2818, -967, 0, -2984, -3086, 1248, -1545, 792, -942, -499, -286,
+ 1664, 1509, 628, 5, 2189, 2269, 2961, 3232, -1690, -2469, 1150, -978, -2150, -1631, -752, 0,
+ -1794, -1961, 327, -1661, 858, -1014, -536, -307, 2796, 2563, -38, 0, 2046, 2122, 2836, 3095,
+ -2162, -2971, -4465, -2269, -3680, -3087, -2260, 0, -2287, -2197, 1651, 0, -3, 0, 0, 0,
+ 849, 801, -602, 0, 2597, 2677, 2937, 3205, -323, -402, -933, 0, -589, -402, -933, 0,
+ 1, 0, 0, 0, 2, 0, 0, 0, 1323, 1242, -933, 0, 1075, 1109, 1216, 1327,
+ -2316, -2619, -1836, 4, 988, -2, 3866, 0, -2241, -2009, -24, 2, -182, 2361, 2699, 423,
+ -7144, -6670, 5880, 623, -387, -457, -3026, -3303, 345, -2667, -3513, 6, -1332, -1680, 692, 0,
+ 624, 761, -4306, 0, -1159, 2001, 1555, 244, 164, 639, 3629, 2945, 2695, 2745, 25, 28,
+ -7147, -6467, -6672, -4, -1780, -1876, -497, 0, -5108, -4545, 2957, 0, 1050, 2060, 3125, 490,
+ -3142, -3420, -518, -2213, 4973, 4838, 2800, 3056, -2152, -4096, -3479, 0, -1016, -1051, -175, 0,
+ -1408, -929, -2155, 0, 129, 2484, 2993, 469, 248, 233, -175, 0, 1849, 1550, 228, 249,
+ -2924, -2016, -4772, 0, -144, -658, 1585, 0, 776, 646, -510, 0, 128, 2573, 3099, 486,
+ -4447, -4252, 3197, 1, 2664, 2589, 10, 10, -1597, -1168, -2381, 0, -407, -668, 712, 0,
+ 2081, 1895, -1424, 0, 54, 1065, 1283, 201, -1980, -1895, 1424, 0, 1532, 1559, 0, 0,
+ -1587, -1250, -295, 0, 1144, 709, 1650, 0, 749, 619, -465, 0, -6, 0, 0, 0,
+ -4595, -4394, 3302, 0, 1, 4, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0,
+ 1623, 1503, -1130, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 6718, 8148, 756, 2237, 3646, 3125, 1539, 0, 1595, 1173, 455, 406, -224, 3854, 2688, 423,
+ 3607, 3921, 617, 2884, 919, 490, -2014, -2198, -1847, 2993, 1462, 3117, 3537, 3219, 722, 0,
+ 3340, 2827, 1448, 0, 2282, 6848, 2989, 468, 4374, 4629, 696, 2992, -803, -758, -928, -1013,
+ 3672, 5899, -260, 491, 1530, 1169, 1652, 0, 1503, 1023, 1417, 0, 14, 277, 321, 50,
+ -1825, -1712, 1303, 12, 773, 448, -2152, -2349, 4441, 5256, 547, 2873, 2858, 2679, 10, 0,
+ 2826, 2611, -1963, 0, 19, 178, 214, 34, 2971, 2782, -2091, 0, 2877, 2346, 0, 0,
+ 735, 2712, 1539, 10, 1038, 710, 1609, 0, 2446, 1992, 630, 11, -5, 10, 10, 2,
+ -2283, -2143, 1597, 0, -2046, -1849, -2104, -2296, 281, 1164, 712, 0, 449, 307, 712, 0,
+ 465, 307, 712, 0, -2, 0, 0, 0, -1010, -947, 712, 0, -941, -846, -928, -1013,
+ 653, 2700, 1651, 0, 1042, 712, 1650, 0, 1078, 712, 1650, 0, -4, 0, 0, 0,
+ -2341, -2197, 1651, 0, -2183, -1962, -2152, -2349, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+const int16_t *const batch_matmul_3_s16_output_ref = batch_matmul_3_s16_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_input_tensor.h
new file mode 100644
index 00000000..e34c65b8
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_input_tensor.h
@@ -0,0 +1,253 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_3_s16_rhs_input_tensor[3456] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 1136, 0, 0, 0, 80, 0,
+ 0, 0, 7322, 29081, -21856, 0, 6, 0, 0, 0, 29796, 28793, 29541, 0,
+ 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -20752, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0,
+ 32224, -9423, -21846, 0, -21168, -9440, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 25714, 792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, -20536, -9420, -21846, 0,
+ 0, 0, 25701, 24899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0,
+ 0, 0, 32, 0, 0, 0, 6202, 29081, -21856, 0, 9, 0, 1, 0,
+ 1456, 0, 0, 0, 80, 0, 0, 0, -11894, 29079, -21856, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, -1072, -26312, -1, 0,
+ 0, 0, 0, 0, 257, 16394, 5130, 29779, 0, 0, 0, 0, -20832, -9420,
+ -21846, 0, 9809, 0, 0, 0, -7568, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 80, 0,
+ 0, 0, 7643, 29081, -21856, 0, 14, 0, 0, 0, 28511, 29813, 30064, 24436,
+ 26739, 28769, 29541, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -20304, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9681, 0, 0, 0,
+ -7568, -9420, -21846, 0, -21984, -9420, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 26994, 26478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 25968, 1298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0,
+ 0, 0, 48, 0, 0, 0, 875, 29081, -21856, 0, 6, 0, 0, 0,
+ 24915, 25974, 12886, 0, 0, 0, 0, 0, 5674, 3594, 28511, 29813, 273, 0,
+ 0, 0, -19248, -9420, -21846, 0, -17552, -18877, -1, 0, 24915, 25974, 12886, 0,
+ 0, 0, 0, 0, 26478, 29279, 29793, 12133, 225, 0, 0, 0, -19248, -9420,
+ -21846, 0, -17552, -18877, -1, 0, 25647, 30309, 25449, 14949, 20547, 14933, 48, 0,
+ 4709, 4623, 27661, 24933, 177, 0, 0, 0, -19248, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 32, 0, 0, 0, 48, 0, 0, 0, 459, 29081, -21856, 0,
+ 26, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 24423, 24946,
+ 25972, 5674, 49, 0, 0, 0, -19248, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 21342, 30305, 22117, 50, 0, 0, 0, 0, 128, 0, 0, 0, 48, 0,
+ 0, 0, 667, 29081, -21856, 0, 27753, 28261, 28001, 14949, 26982, 25964, 24942, 25965,
+ 12346, 0, 0, 0, 528, 0, 0, 0, 80, 0, 0, 0, 1643, 29081,
+ -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 608, 0, 0, 0, 80, 0, 0, 0, 27, 29081, -21856, 0,
+ 1, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, -1072, -26312,
+ -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 688, 0, 0, 0, 80, 0, 0, 0, 7435, 29081, -21856, 0, 14, 0,
+ 0, 0, 28511, 29813, 30064, 24436, 26739, 28769, 29541, 0, -1072, -26312, -1, 0,
+ 0, 0, 0, 0, -19536, -9420, -21846, 0, 0, 0, 0, 0, -19696, -9420,
+ -21846, 0, 8913, 0, 0, 0, -7568, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29804, 26975, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2050, 4624, 0, 0, 0, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 208, 0, 0, 0, 32, 0, 0, 0, 1947, 29081,
+ -21856, 0, -19296, -9420, -21846, 0, 240, 0, 0, 0, 64, 0, 0, 0,
+ 6331, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 256, 7466, 0, 0, 27759, 25964, 29795, 30313,
+ 81, 0, 0, 0, -18544, -9420, -21846, 0, -20320, -9420, -21846, 0, 32, 0,
+ 0, 0, 48, 0, 0, 0, 283, 29081, -21856, 0, 0, 0, 0, 0,
+ 14352, -26295, -1, 0, 1, 0, 0, 0, 384, 0, 0, 0, 80, 0,
+ 0, 0, 75, 29081, -21856, 0, 1, 0, 0, 0, 84, 0, 0, 0,
+ 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, 7, 0,
+ 266, 4710, 0, 0, 0, 0, 0, 0, 0, 0, 8449, 0, 0, 0,
+ -7568, -9420, -21846, 0, -20320, -9420, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 1979, 29081, -21856, 0,
+ 25960, 27491, 28528, 28265, 29556, 25391, 25960, 27491, 28528, 28265, 24436, 29296, 26213, 30825,
+ 29541, 1280, 225, 0, 0, 0, -18544, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 24912, 27491, 0, 0, 0, 0, 0, 0, 27655, 31073, 29285, 12333, 177, 0,
+ 0, 0, -18544, -9420, -21846, 0, -17552, -18877, -1, 0, 25647, 30309, 25449, 14949,
+ 20547, 14933, 48, 0, 2675, 2071, 4613, 29715, 129, 0, 0, 0, -18544, -9420,
+ -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0, 48, 0, 0, 0,
+ 1355, 29081, -21856, 0, 47, 0, 0, 0, 47, 0, 0, 0, 0, 0,
+ 0, 0, 24415, 10762, 2312, 9746, 49, 0, 0, 0, -18544, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 26982, 25964, 28767, 25970, 26982, 120, 0, 0, 320, 0,
+ 0, 0, 64, 0, 0, 0, 2011, 29081, -21856, 0, 25960, 27491, 28528, 28265,
+ 29556, 25391, 25960, 27491, 28528, 28265, 24436, 29296, 26213, 30825, 29541, 28474, 29813, 30064,
+ 14964, 48, 384, 0, 0, 0, 80, 0, 0, 0, 1163, 29081, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 464, 0, 0, 0, 80, 0, 0, 0, 507, 29081, -21856, 0, 32, 0,
+ 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, -1072, -26312, -1, 0,
+ 0, 0, 0, 0, 29441, 3338, 1032, 2322, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7905, 0, 0, 0, -7568, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 80, 0,
+ 0, 0, 1035, 29081, -21856, 0, 14, 0, 0, 0, 28511, 29813, 30064, 24436,
+ 26739, 28769, 29541, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -18400, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7777, 0, 0, 0,
+ -7568, -9420, -21846, 0, -19088, -9420, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 24946, 25955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 27746, 29541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0,
+ 0, 0, 48, 0, 0, 0, 1243, 29081, -21856, 0, 18, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0, 2560, 10754, 2560, 10754, 337, 0,
+ 0, 0, -17280, -9420, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0,
+ 48, 0, 0, 0, 2987, 29081, -21856, 0, 18, 0, 0, 0, 18, 0,
+ 0, 0, 0, 0, 0, 0, 31337, 29285, 24367, 29801, 257, 0, 0, 0,
+ -17280, -9420, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0, 48, 0,
+ 0, 0, 2683, 29081, -21856, 0, 13, 0, 0, 0, 25647, 30309, 25449, 14949,
+ 20547, 14933, 48, 0, 25972, 13082, 28783, 26996, 177, 0, 0, 0, -17280, -9420,
+ -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0, 48, 0, 0, 0,
+ 2763, 29081, -21856, 0, 11, 0, 0, 0, 26982, 25964, 28767, 25970, 26982, 120,
+ 0, 0, 28261, 28001, 4709, 20491, 97, 0, 0, 0, -17280, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 30, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 0, 48, 0, 0, 0, 2715, 29081, -21856, 0, 26691, 25445, 28779, 26991,
+ 29806, 115, 0, 0, 0, 0, 0, 0, 592, 0, 0, 0, 80, 0,
+ 0, 0, 3963, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 80, 0, 0, 0,
+ 1467, 29081, -21856, 0, 14, 0, 0, 0, 28511, 29813, 30064, 24436, 26739, 28769,
+ 29541, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -17648, -9420, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7025, 0, 0, 0, -7568, -9420,
+ -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14336, -32255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27765, 24912, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0,
+ 32, 0, 0, 0, 2811, 29081, -21856, 0, -17408, -9420, -21846, 0, 240, 0,
+ 0, 0, 64, 0, 0, 0, 1531, 29081, -21856, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29440, 1042,
+ 0, 0, 304, 0, 0, 0, 80, 0, 0, 0, 2555, 29081, -21856, 0,
+ 1, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, -1072, -26312,
+ -1, 0, 0, 0, 0, 0, 7, 0, 21840, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6641, 0, 0, 0, -7568, -9420, -21846, 0, -18416, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2565, 2635, 24353, 26975,
+ 273, 0, 0, 0, -16416, -9420, -21846, 0, -17552, -18877, -1, 0, 25673, 28261,
+ 26996, 31092, 0, 0, 0, 0, 6193, 4609, 2571, 26887, 225, 0, 0, 0,
+ -16416, -9420, -21846, 0, -17552, -18877, -1, 0, 25647, 30309, 25449, 14949, 20547, 14933,
+ 48, 0, 27756, 3858, 24912, 29810, 177, 0, 0, 0, -16416, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 32, 0, 0, 0, 48, 0, 0, 0, 3803, 29081,
+ -21856, 0, 19, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+ 25974, 27999, 28257, 26465, 49, 0, 0, 0, -16416, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 20062, 20335, 112, 0, 0, 0, 0, 0, 128, 0, 0, 0,
+ 48, 0, 0, 0, 4011, 29081, -21856, 0, 13407, 28474, 29813, 30064, 14964, 48,
+ 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 80, 0, 0, 0,
+ 3371, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 400, 0, 0, 0, 80, 0, 0, 0, 2347, 29081,
+ -21856, 0, 1, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,
+ -1072, -26312, -1, 0, 0, 0, 0, 0, 7, 0, 28788, 29813, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6161, 0, 0, 0, -7568, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1072, -26312,
+ -1, 0, 0, 0, 0, 0, -16704, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6081, 0, 0, 0, -7568, -9420, -21846, 0, -17280, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2635, 2598, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26982, 25701, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 32, 0, 0, 0,
+ 3675, 29081, -21856, 0, -16464, -9420, -21846, 0, 240, 0, 0, 0, 64, 0,
+ 0, 0, 2235, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3072, 2058, 0, 0, 26996, 31092,
+ 280, 32282, 641, 0, 0, 0, -14944, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 25673, 28261, 26996, 31092, 13663, 0, 0, 0, 19828, 27765, 12886, 1818, 49, 0,
+ 0, 0, -16256, -9420, -21846, 0, -17552, -18877, -1, 0, 25673, 28261, 26996, 31092,
+ 0, 0, 0, 0, 96, 0, 0, 0, 64, 0, 0, 0, 3308, 29081,
+ -21856, 0, -16240, -9420, -21846, 0, -16192, -9420, -21846, 0, -16144, -9420, -21846, 0,
+ -16096, -9420, -21846, 0, -16048, -9420, -21846, 0, 25956, 12140, 26228, 27694, 481, 0,
+ 0, 0, -15616, -9420, -21846, 0, -17280, -9420, -21846, 0, 30, 0, 0, 0,
+ 0, 0, 0, 0, 24334, 30063, 28788, 29813, 193, 0, 0, 0, -15616, -9420,
+ -21846, 0, -15968, -9420, -21846, 0, 30, 0, 0, 0, 0, 0, 0, 0,
+ 4729, 18705, 25956, 29806, 145, 0, 0, 0, -15616, -9420, -21846, 0, -15920, -9420,
+ -21846, 0, 30, 0, 0, 0, 0, 0, 0, 0, 27405, 24901, 25959, 21106,
+ 97, 0, 0, 0, -15616, -9420, -21846, 0, -15872, -9420, -21846, 0, 30, 0,
+ 0, 0, 0, 0, 0, 0, 4624, 2050, 14880, 4624, 49, 0, 0, 0,
+ -15616, -9420, -21846, 0, -15824, -9420, -21846, 0, 30, 0, 0, 0, 0, 0,
+ 0, 0, 240, 0, 0, 0, 48, 0, 0, 0, 29532, 29081, -21856, 0,
+ 26691, 25445, 28779, 26991, 29806, 115, 0, 0, 0, 0, 0, 0, 26887, 28782,
+ 29813, 12639, 193, 0, 0, 0, -15616, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 20345, 21102, 24933, 100, 0, 0, 0, 0, 4104, 530, 6152, 8458, 145, 0,
+ 0, 0, -15616, -9420, -21846, 0, -16208, -9420, -21846, 0, 25964, 28751, 0, 0,
+ 0, 0, 0, 0, 24348, 26975, 26222, 29285, 97, 0, 0, 0, -15616, -9420,
+ -21846, 0, -16160, -9420, -21846, 0, 28783, 20345, 21102, 24933, 100, 0, 0, 0,
+ 8202, 25970, 25697, 25695, 49, 0, 0, 0, -15616, -9420, -21846, 0, -16112, -9420,
+ -21846, 0, 25185, 25964, 28751, 0, 0, 0, 0, 0, 944, 0, 0, 0,
+ 80, 0, 0, 0, 29180, 29081, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 80, 0,
+ 0, 0, 3724, 29081, -21856, 0, 14, 0, 0, 0, 28511, 29813, 30064, 24436,
+ 26739, 28769, 29541, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -15600, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4977, 0, 0, 0,
+ -7568, -9420, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 18040, 27765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1042, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0,
+ 0, 0, 48, 0, 0, 0, 29196, 29081, -21856, 0, 4, 0, 0, 0,
+ 28494, 28751, 0, 0, 0, 0, 0, 0, 17159, 28271, 29811, 12639, 49, 0,
+ 0, 0, -15152, -9420, -21846, 0, -17552, -18877, -1, 0, 28494, 28751, 0, 0,
+ 0, 0, 0, 0, 304, 0, 0, 0, 80, 0, 0, 0, 30668, 29081,
+ -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 384, 0, 0, 0, 80, 0, 0, 0, 28972, 29081, -21856, 0,
+ 10, 0, 0, 0, 25705, 28261, 26996, 31092, 13663, 0, 0, 0, -15136, -9420,
+ -21846, 0, 19, 0, 0, 0, 30, 0, 0, 0, 530, 1840, 5674, 3594,
+ 0, 0, 0, 0, 4513, 0, 0, 0, -7568, -9420, -21846, 0, -17552, -18877,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 80, 0, 0, 0, 29932, 29081, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 80, 0,
+ 0, 0, 30588, 29081, -21856, 0, 13, 0, 0, 0, 26975, 28782, 29813, 29535,
+ 24936, 25968, 115, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, -14928, -9420,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4305, 0, 0, 0,
+ -7568, -9420, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29294, 24933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29541, 1042, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0,
+ 0, 0, 48, 0, 0, 0, 30620, 29081, -21856, 0, -14672, -9420, -21846, 0,
+ -14608, -9420, -21846, 0, -14544, -9420, -21846, 0, 256, 0, 0, 0, 64, 0,
+ 0, 0, 29452, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29952, 24436, 0, 0, 29541, 1042,
+ 522, 58, 193, 0, 0, 0, -11328, -9420, -21846, 0, -17552, -18877, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29184, 24933,
+ 0, 0, 26980, 24947, 27746, 25445, 129, 0, 0, 0, -11328, -9420, -21846, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5376, 25938, 0, 0, 21039, 24933, 22116, 29281, 65, 0, 0, 0,
+ -11328, -9420, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24320, 25964, 0, 0, 512, 0, 0, 0,
+ 80, 0, 0, 0, 30236, 29081, -21856, 0, 21, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0,
+ -14302, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3713, 0,
+ 0, 0, -7568, -9420, -21846, 0, -15152, -9420, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30012, 29081, -21856, 0, 13, 0, 0, 0, 17771, 26465,
+ 29285, 30034, 29806, 28009, 101, 0, 80, 0, 0, 0, 80, 0, 0, 0,
+ 31036, 29081, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 160, 0, 0, 0, 80, 0, 0, 0, 31388, 29081,
+ -21856, 0, 22, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
+ -14064, -9420, -21846, 0, 22, 0, 0, 0, 30, 0, 0, 0, 1290, 24950,
+ 30060, 4709, 0, 0, 0, 0, 241, 0, 0, 0, -7568, -9420, -21846, 0,
+ -13792, -9420, -21846, 0, 32, 0, 0, 0, 48, 0, 0, 0, 30988, 29081,
+ -21856, 0, 25185, 25964, 28483, 31088, 28239, 25938, 25697, 0, 0, 0, 0, 0,
+ 80, 0, 0, 0, 80, 0, 0, 0, 30812, 29081, -21856, 0, 21, 0,
+ 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, -13904, -9420, -21846, 0,
+ 21, 0, 0, 0, 30, 0, 0, 0, 21267, 29300, 28265, 19047};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_transposed_tensor.h
new file mode 100644
index 00000000..bb11a881
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/rhs_transposed_tensor.h
@@ -0,0 +1,253 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_3_s16_rhs_transposed_tensor[3456] = {
+ 0, 29796, 0, 0, 0, 0, 0, 1456, -1072, -7568, 7643, -20304, 0, 0,
+ 0, 0, 0, 28793, 0, 0, 0, 0, 0, 0, -26312, -9420, 29081, -9420,
+ 0, 0, 0, 0, 0, 29541, 0, 0, 0, 0, 0, 0, -1, -21846,
+ -21856, -21846, 0, 0, 25968, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1298, 0, 0, 0, 241, 0, 0, 0,
+ 0, 80, 0, -17552, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1136, -1072, 32224, 0, 3, 0, 208, -11894, 257, 0, 28511, 0,
+ 0, 0, 0, 0, 0, -26312, -9423, 0, 0, 0, 0, 29079, 16394, 0,
+ 29813, 0, 0, 0, 0, 0, 0, -1, -21846, 0, 3, 0, 0, -21856,
+ 5130, 0, 30064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29779, 0, 24436, 0, 0, 0, 0, 0, 80, 0, -21168, 0,
+ -20536, 0, 32, 32, 0, 0, 26739, 9681, 0, 0, 0, 0, 0, 0,
+ -9440, 0, -9420, 0, 0, 0, 0, 0, 28769, 0, 0, 0, 0, 0,
+ 0, 0, -21846, 25714, -21846, 0, 0, 0, 0, 0, 29541, 0, 0, 0,
+ 0, 0, 0, 0, 0, 792, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7322, -20752, 0, 0, 0, 0, 6202, 32, -20832, 48,
+ -1072, -7568, 0, 0, 0, 208, 29081, -9420, 0, 0, 0, 0, 29081, 0,
+ -9420, 0, -26312, -9420, 0, 0, 0, 0, -21856, -21846, 0, 0, 25701, 0,
+ -21856, 0, -21846, 0, -1, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 0, 0, 0, 9, 0, 9809, 80, 0, -21984, 0, 0, 0, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9420, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -21846,
+ 26994, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 26478, 0, 0, 0, 875, -19248, -19248, -19248, 30, 21342, 26982, 0,
+ 608, -1072, 7435, -19536, 0, 0, 0, 0, 29081, -9420, -9420, -9420, 0, 30305,
+ 25964, 0, 0, -26312, 29081, -9420, 0, 0, 0, 0, -21856, -21846, -21846, -21846,
+ 0, 22117, 24942, 0, 0, -1, -21856, -21846, 0, 0, 2050, 0, 0, 0,
+ 0, 0, 0, 50, 25965, 0, 0, 0, 0, 0, 0, 0, 4624, 0,
+ 6, -17552, -17552, -17552, 0, 0, 12346, 0, 80, 0, 14, 0, 0, 0,
+ 0, 0, 0, -18877, -18877, -18877, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24915, 24915, 25647, 32, 24423, 128,
+ 528, 0, 27, 1, 28511, -19696, 0, 0, 1, 0, 25974, 25974, 30309, 0,
+ 24946, 0, 0, 0, 29081, 0, 29813, -9420, 0, 0, 0, 0, 12886, 12886,
+ 25449, 0, 25972, 0, 0, 0, -21856, 0, 30064, -21846, 0, 0, 1, 0,
+ 0, 0, 14949, 0, 5674, 0, 0, 0, 0, 0, 24436, 0, 0, 0,
+ 0, 0, 0, 0, 20547, 48, 49, 48, 80, 0, 1, 0, 26739, 8913,
+ 0, 0, 0, 0, 0, 0, 14933, 0, 0, 0, 0, 0, 0, 0,
+ 28769, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 29541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5674, 26478, 4709, 459,
+ -19248, 667, 1643, 0, 78, 688, -1072, -7568, 0, 0, 0, 208, 3594, 29279,
+ 4623, 29081, -9420, 29081, 29081, 0, 0, 0, -26312, -9420, 0, 0, 0, 0,
+ 28511, 29793, 27661, -21856, -21846, -21856, -21856, 0, 0, 0, -1, -21846, 0, 0,
+ 0, 0, 29813, 12133, 24933, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 273, 225, 177, 26, -17552, 27753, 0, 0, 0, 80,
+ 0, -17552, 0, 0, 0, 32, 0, 0, 0, 0, -18877, 28261, 0, 0,
+ 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, 0, 0, -1, 28001,
+ 0, 0, 0, 0, 0, -1, 29804, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14949, 0, 0, 0, 0, 0, 0, 26975, 0, 0, 0, 1947, 0,
+ -18544, 14352, 84, 0, 48, 26213, 27655, 2675, 1355, -18544, 2011, 384, 0, 507,
+ 29081, 0, -9420, -26295, 0, 0, 0, 30825, 31073, 2071, 29081, -9420, 29081, 0,
+ 0, 29081, -21856, 0, -21846, -1, 0, 0, 0, 29541, 29285, 4613, -21856, -21846,
+ -21856, 0, 0, -21856, 0, 0, 0, 0, 0, 0, 0, 1280, 12333, 29715,
+ 0, 0, 0, 0, 0, 0, -19296, 1, -20320, 1, 0, 8449, 48, 225,
+ 177, 129, 47, -17552, 25960, 80, 0, 32, -9420, 0, -9420, 0, 0, 0,
+ 0, 0, 0, 0, 0, -18877, 27491, 0, 0, 0, -21846, 1, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1, 28528, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28265, 0, 0, 0,
+ 240, 0, 32, 384, -1072, -7568, 1979, -18544, -18544, -18544, 47, 26982, 29556, 1163,
+ 0, 32, 0, 0, 0, 0, -26312, -9420, 29081, -9420, -9420, -9420, 0, 25964,
+ 25391, 29081, 0, 0, 0, 0, 0, 0, -1, -21846, -21856, -21846, -21846, -21846,
+ 0, 28767, 25960, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 25970, 27491, 0, 0, 0, 64, 256, 48, 80, 0, -20320,
+ 25960, -17552, -17552, -17552, 0, 26982, 28528, 0, 0, 0, 0, 7466, 0, 0,
+ 0, -9420, 27491, -18877, -18877, -18877, 0, 120, 28265, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21846, 28528, -1, -1, -1, 0, 0, 24436, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 28265, 0, 0, 0, 0, 0, 29296, 0,
+ 0, 0, 6331, 27759, 283, 75, 7, 0, 29556, 24912, 25647, 32, 24415, 320,
+ 26213, 0, 464, -1072, 29081, 25964, 29081, 29081, 0, 0, 25391, 27491, 30309, 0,
+ 10762, 0, 30825, 0, 0, -26312, -21856, 29795, -21856, -21856, 266, 0, 25960, 0,
+ 25449, 0, 2312, 0, 29541, 0, 0, -1, 0, 30313, 0, 0, 4710, 0,
+ 27491, 0, 14949, 0, 9746, 0, 28474, 0, 0, 0, 0, 81, 0, 1,
+ 0, 0, 28528, 0, 20547, 48, 49, 64, 29813, 0, 80, 0, 0, 0,
+ 0, 0, 0, 0, 28265, 0, 14933, 0, 0, 0, 30064, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24436, 0, 48, 0, 0, 0, 14964, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29296, 0, 0, 0, 0, 0,
+ 48, 0, 0, 0, 29441, 0, 28511, 0, 0, 0, 0, 0, 18, 32,
+ 31337, 2683, -17280, 26982, 30, 29806, 3338, 0, 29813, 0, 0, 0, 0, 0,
+ 0, 0, 29285, 29081, -9420, 25964, 0, 115, 1032, 0, 30064, 0, 0, 0,
+ 0, 0, 0, 0, 24367, -21856, -21846, 28767, 0, 0, 2322, 0, 24436, 0,
+ 0, 0, 0, 0, 0, 0, 29801, 0, 0, 25970, 0, 0, 0, 0,
+ 26739, 7777, 0, 0, 0, 0, 0, 48, 257, 13, -17552, 26982, 0, 0,
+ 0, 0, 28769, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18877, 120,
+ 0, 0, 0, 0, 29541, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, -1072, -7568, 0, 0, 0, 208,
+ 2560, 2987, -17280, 25647, 32, 28261, 48, 592, 0, 0, -26312, -9420, 0, 0,
+ 0, 0, 10754, 29081, -9420, 30309, 0, 28001, 0, 0, 0, 0, -1, -21846,
+ 0, 0, 0, 0, 2560, -21856, -21846, 25449, 0, 4709, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 10754, 0, 0, 14949, 0, 20491, 0, 0,
+ 7905, 80, 0, -19088, 0, 0, 0, 48, 337, 18, -17552, 20547, 48, 97,
+ 48, 80, 0, 0, 0, -9420, 0, 0, 0, 0, 0, 0, -18877, 14933,
+ 0, 0, 0, 0, 0, 0, 0, -21846, 24946, 0, 0, 0, 0, 0,
+ -1, 48, 0, 0, 0, 0, 0, 0, 0, 0, 25955, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -7568, 1035, -18400, 0, 0, 0,
+ 0, 1243, -17280, 18, 32, 25972, 2763, -17280, 2715, 3963, -9420, 29081, -9420, 0,
+ 0, 0, 0, 29081, -9420, 0, 0, 13082, 29081, -9420, 29081, 29081, -21846, -21856,
+ -21846, 0, 0, 27746, 0, -21856, -21846, 0, 0, 28783, -21856, -21846, -21856, -21856,
+ 0, 0, 0, 0, 0, 29541, 0, 0, 0, 0, 0, 26996, 0, 0,
+ 0, 0, -17552, 14, 0, 0, 0, 0, 0, 18, -17552, 0, 48, 177,
+ 11, -17552, 26691, 0, -18877, 0, 0, 0, 0, 0, 0, 0, -18877, 0,
+ 0, 0, 0, -18877, 25445, 0, -1, 0, 0, 0, 0, 0, 0, 0,
+ -1, 0, 0, 0, 0, -1, 28779, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 26991, 0, 0, 672, -1072, -7568,
+ 0, 0, 0, 208, 1531, 304, -1072, -7568, -16416, -16416, -16416, 30, 0, 0,
+ -26312, -9420, 0, 0, 0, 0, 29081, 0, -26312, -9420, -9420, -9420, -9420, 0,
+ 0, 0, -1, -21846, 0, 0, 0, 0, -21856, 0, -1, -21846, -21846, -21846,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 80, 0, -17552, 0, 0, 0, 32, 0, 80,
+ 0, -18416, -17552, -17552, -17552, 0, 0, 0, 0, -18877, 0, 0, 0, 0,
+ 0, 0, 0, -9420, -18877, -18877, -18877, 0, 0, 0, 0, -1, 14336, 0,
+ 0, 0, 0, 0, 0, -21846, -1, -1, -1, 0, 0, 0, 0, 0,
+ -32255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1467,
+ -17648, 0, 0, 0, 0, 2811, 0, 2555, 7, 0, 25673, 25647, 32, 25974,
+ 0, 29081, -9420, 0, 0, 0, 0, 29081, 0, 29081, 0, 0, 28261, 30309,
+ 0, 27999, 0, -21856, -21846, 0, 0, 27765, 0, -21856, 0, -21856, 21840, 0,
+ 26996, 25449, 0, 28257, 0, 0, 0, 0, 0, 24912, 0, 0, 0, 0,
+ 16, 0, 31092, 14949, 0, 26465, 0, 14, 0, 0, 0, 0, 0, -17408,
+ 0, 1, 0, 0, 0, 20547, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, -9420, 0, 0, 0, 0, 0, 14933, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 28511, 0, 0, 0, 1, 0, 240, 0, 84, 0, 2565, 6193, 27756,
+ 3803, -16416, 0, 29813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2635,
+ 4609, 3858, 29081, -9420, 0, 30064, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 24353, 2571, 24912, -21856, -21846, 0, 24436, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 26975, 26887, 29810, 0, 0, 0, 26739, 7025, 0, 0, 0,
+ 0, 64, 29440, 0, 6641, 273, 225, 177, 19, -17552, 0, 28769, 0, 0,
+ 0, 0, 0, 0, 1042, 0, 0, 0, 0, 0, 0, -18877, 0, 29541,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 20062, 14964, 0, 400, -1072, -7568, -16704, 0, 0, 0, 0, 3675,
+ 0, -14944, -16256, 3308, 20335, 48, 0, 0, -26312, -9420, -9420, 0, 0, 0,
+ 0, 29081, 0, -9420, -9420, 29081, 112, 0, 0, 0, -1, -21846, -21846, 0,
+ 0, 26982, 0, -21856, 0, -21846, -21846, -21856, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 25701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
+ 0, -17552, 0, 0, 0, 0, 0, -16464, 0, -17552, -17552, -16240, 0, 0,
+ 0, 0, 0, -18877, 0, 0, 0, 0, 0, -9420, 0, -18877, -18877, -9420,
+ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -21846, 0, -1,
+ -1, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 128, 320, 0, 2347, 7, 0, 0, 0, 0, 1,
+ 0, 240, 0, 25673, 25673, -16192, 0, 0, 0, 29081, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 28261, 28261, -9420, 0, 0, 0, -21856, 28788, 0,
+ 0, 0, 0, 1, 0, 0, 0, 26996, 26996, -21846, 0, 0, 0, 0,
+ 29813, 0, 0, 0, 0, 0, 0, 0, 0, 31092, 31092, 0, 48, 80,
+ 0, 1, 0, 0, 6081, 0, 0, 0, 0, 64, 3072, 13663, 0, -16144,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 0,
+ 0, -9420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4011, 3371, 0, 84, 0, -1072, -7568, 0,
+ 0, 0, 208, 2235, 26996, 19828, 96, -16096, 29081, 29081, 0, 0, 0, -26312,
+ -9420, 0, 0, 0, 0, 29081, 31092, 27765, 0, -9420, -21856, -21856, 0, 0,
+ 0, -1, -21846, 0, 0, 0, 0, -21856, 280, 12886, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32282, 1818, 0, 0,
+ 13407, 0, 0, 0, 6161, 0, -17280, 0, 0, 0, 32, 0, 641, 49,
+ 64, -16048, 28474, 0, 0, 0, 0, 0, -9420, 0, 0, 0, 0, 0,
+ 0, 0, 0, -9420, 29813, 0, 0, 0, 0, 0, -21846, 2635, 0, 0,
+ 0, 0, 0, 0, 0, -21846, 30064, 0, 0, 0, 0, 0, 0, 2598,
+ 0, 0, 0, 0, 0, 0, 0, 0, 25956, 24334, 4729, 27405, 4624, 240,
+ 26887, 4104, 24348, 8202, 944, 0, 3724, -15600, 0, 0, 12140, 30063, 18705, 24901,
+ 2050, 0, 28782, 530, 26975, 25970, 0, 0, 29081, -9420, 0, 0, 26228, 28788,
+ 25956, 25959, 14880, 0, 29813, 6152, 26222, 25697, 0, 0, -21856, -21846, 0, 0,
+ 27694, 29813, 29806, 21106, 4624, 0, 12639, 8458, 29285, 25695, 0, 0, 0, 0,
+ 0, 0, 481, 193, 145, 97, 49, 48, 193, 145, 97, 49, 80, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15616, -15616, -15616, -15616,
+ -15616, 29532, -15616, -15616, -15616, -15616, 29180, 0, 28511, 0, 0, 0, -9420, -9420,
+ -9420, -9420, -9420, 29081, -9420, -9420, -9420, -9420, 29081, 0, 29813, 0, 0, 0,
+ -21846, -21846, -21846, -21846, -21846, -21856, -21846, -21846, -21846, -21846, -21856, 0, 30064, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24436, 0, 0, 0, -17280, -15968, -15920, -15872, -15824, 26691, -17552, -16208, -16160, -16112,
+ 0, 0, 26739, 4977, 0, 0, -9420, -9420, -9420, -9420, -9420, 25445, -18877, -9420,
+ -9420, -9420, 0, 0, 28769, 0, 0, 0, -21846, -21846, -21846, -21846, -21846, 28779,
+ -1, -21846, -21846, -21846, 0, 0, 29541, 0, 0, 0, 0, 0, 0, 0,
+ 0, 26991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30,
+ 30, 30, 30, 29806, 20345, 25964, 28783, 25185, 0, 1024, -1072, -7568, 0, 0,
+ 0, 0, 0, 0, 0, 115, 21102, 28751, 20345, 25964, 0, 0, -26312, -9420,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24933, 0, 21102, 28751, 0, 0,
+ -1, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 24933, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 100, 0, 0, 80, 0, -17552, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 18040, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27765, 0,
+ 0, 0, 29196, -15152, 30668, 0, 25705, 0, 48, 0, 30588, -14928, 0, 0,
+ 0, 0, 0, 0, 29081, -9420, 29081, 0, 28261, 0, 0, 0, 29081, -9420,
+ 0, 0, 0, 0, 1042, 0, -21856, -21846, -21856, 0, 26996, 0, 0, 0,
+ -21856, -21846, 0, 0, 29541, 0, 522, 0, 0, 0, 0, 0, 31092, 0,
+ 0, 0, 0, 0, 0, 0, 1042, 0, 0, 0, 4, -17552, 0, 0,
+ 13663, 4513, 80, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, -18877,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 28494, 28494, 0, 384, -15136, -7568, 29932, 0, 26975, 0,
+ 0, 0, 4, 0, 0, 0, 28751, 28751, 0, 0, -9420, -9420, 29081, 0,
+ 28782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, -21846,
+ -21856, 0, 29813, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29535, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 80, 19, -17552, 0, 0, 24936, 4305, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -18877, 0, 0, 25968, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 115, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 208, 17159, 304, 0, 28972, 30, 0, 0, 128,
+ -1072, -7568, 0, 0, 0, 208, 0, 0, 28271, 0, 0, 29081, 0, 0,
+ 0, 0, -26312, -9420, 0, 0, 0, 0, 0, 0, 29811, 0, 0, -21856,
+ 0, 0, 0, 0, -1, -21846, 0, 0, 0, 0, 0, 0, 12639, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 49, 80, 0, 10, 530, 0, 0, 80, 0, -17552, 0, 0, 0, 48,
+ 0, 0, 0, 0, 0, 0, 1840, 0, 0, 0, 0, -18877, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5674, 0, 0, 0, 0, -1,
+ 29294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3594, 0, 0, 0,
+ 0, 0, 24933, 0, 0, 0, 30620, 29452, 29541, 0, 0, -11328, 512, -1072,
+ -7568, 17771, 0, 160, -14064, -7568, 28239, 21, 29081, 29081, 1042, 0, 0, -9420,
+ 0, -26312, -9420, 26465, 0, 0, -9420, -9420, 25938, 0, -21856, -21856, 522, 0,
+ 0, -21846, 0, -1, -21846, 29285, 0, 0, -21846, -21846, 25697, 0, 0, 0,
+ 58, 0, 0, 0, 0, 0, 0, 30034, 0, 0, 0, 0, 0, 0,
+ -14672, 0, 193, 29184, 0, -17552, 80, 0, -15152, 29806, 0, 80, 22, -13792,
+ 0, 0, -9420, 0, 0, 24933, 0, -18877, 0, 0, -9420, 28009, 0, 0,
+ 0, -9420, 0, 0, -21846, 0, 0, 0, 0, -1, 0, 0, -21846, 101,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -14608, 0, -11328, 26980, 0, 0,
+ 30236, -14302, 0, 80, 0, 31388, 30, 32, 80, -13904, -9420, 0, -9420, 24947,
+ 0, 0, 29081, -9420, 0, 0, 0, 29081, 0, 0, 0, -9420, -21846, 0,
+ -21846, 27746, 0, 0, -21856, -21846, 0, 0, 0, -21856, 0, 0, 0, -21846,
+ 0, 0, 0, 25445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -14544, 0, -17552, 129, 5376, 0, 21, 0, 0, 80, 0, 22,
+ 1290, 48, 80, 21, -9420, 0, -18877, 0, 25938, 0, 0, 0, 0, 0,
+ 0, 0, 24950, 0, 0, 0, -21846, 0, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30060, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4709, 0, 0, 0, 256, 0, 0, -11328,
+ 21039, 0, 21, 0, 30012, 31036, 0, 22, 0, 30988, 30812, 30, 0, 0,
+ 0, -9420, 24933, 0, 0, 0, 29081, 29081, 0, 0, 0, 29081, 29081, 0,
+ 0, 0, 0, -21846, 22116, 0, 0, 0, -21856, -21856, 0, 0, 0, -21856,
+ -21856, 0, 0, 0, 0, 0, 29281, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 29952, 0, -17552, 65, 24320, 0, 3713, 13, 0,
+ 0, 0, 241, 25185, 21, 21267, 0, 24436, 0, -18877, 0, 25964, 0, 0,
+ 0, 0, 0, 0, 0, 25964, 0, 29300, 0, 0, 0, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 28483, 0, 28265, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 31088, 0, 19047};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s16/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/config_data.h
new file mode 100644
index 00000000..4967fda6
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_3_S8_LHS_BATCH 1
+#define BATCH_MATMUL_3_S8_LHS_HEIGHT 1
+#define BATCH_MATMUL_3_S8_LHS_ROWS 16
+#define BATCH_MATMUL_3_S8_LHS_COLS 32
+#define BATCH_MATMUL_3_S8_RHS_BATCH 3
+#define BATCH_MATMUL_3_S8_RHS_HEIGHT 3
+#define BATCH_MATMUL_3_S8_RHS_ROWS 16
+#define BATCH_MATMUL_3_S8_RHS_COLS 24
+#define BATCH_MATMUL_3_S8_ADJ_X 1
+#define BATCH_MATMUL_3_S8_ADJ_Y 0
+#define BATCH_MATMUL_3_S8_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_3_S8_DST_SIZE 6912
+#define BATCH_MATMUL_3_S8_OUTPUT_BATCH 3
+#define BATCH_MATMUL_3_S8_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_3_S8_OUTPUT_ROWS 32
+#define BATCH_MATMUL_3_S8_OUTPUT_COLS 24
+#define BATCH_MATMUL_3_S8_LHS_OFFSET 128
+#define BATCH_MATMUL_3_S8_RHS_OFFSET 128
+#define BATCH_MATMUL_3_S8_OUTPUT_OFFSET -128
+#define BATCH_MATMUL_3_S8_ACTIVATION_MIN -128
+#define BATCH_MATMUL_3_S8_ACTIVATION_MAX 127
+#define BATCH_MATMUL_3_S8_OUTPUT_MULTIPLIER 2051295470
+#define BATCH_MATMUL_3_S8_OUTPUT_SHIFT -11
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_input_tensor.h
new file mode 100644
index 00000000..a2454951
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_input_tensor.h
@@ -0,0 +1,30 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_3_s8_lhs_input_tensor[512] = {
+ 32, 10, -71, -41, -86, -86, 0, 0, -64, 31, -74, -41, -86, -86, 0, 0, 32, 10, -71, -41, -86, -86,
+ 0, 0, -64, 31, -74, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, -6, -68, -41, -86, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, -5, 72, -34, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0,
+ 0, 0, 0, 0, 80, 55, -27, -103, -1, -1, 0, 0, 88, -48, 10, -102, -1, -1, 0, 0, -65, -34,
+ 109, -121, -1, -1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ -16, 2, -67, -41, -86, -86, 0, 0, 116, 102, 46, 83, 97, 118, 101, 86, 50, 0, 0, 0, 0, 0,
+ 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 64, 64, 34, 125,
+ -96, -86, 0, 0, 104, -20, -68, -41, -86, -86, 0, 0, -16, -41, 17, -102, -1, -1, 0, 0, 64, -85,
+ -93, -41, -86, -86, 0, 0, 32, 4, -67, -41, -86, -86, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 4, -67, -41, -86, -86, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -32, 101, -73, -41, -86, -86, 0, 0,
+ 32, 61, -113, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 4, -67, -41, -86, -86,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 32, -100, -47, -41, -86, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_transposed_tensor.h
new file mode 100644
index 00000000..1b0e9205
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/lhs_transposed_tensor.h
@@ -0,0 +1,31 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_3_s8_lhs_transposed_tensor[512] = {
+ 32, 0, 0, 0, 2, 0, 0, 80, 1, -128, -16, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 0, 55, 0, 0, -41, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, -27, 0, 0,
+ 17, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, -103, 0, 0, -102, 0, 0, 0, 0,
+ 0, -86, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 4, 0, 0, -86, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -64, 0, 0, 112, 0, 0, 0, 88, -16, -128, 64, 0, 0, -63, -104, 33, 31, 0, 0,
+ -6, 0, 0, 0, -48, 2, 0, -85, 0, 0, 0, 4, 0, -74, 0, 0, -68, 0, 0, 0, 10,
+ -67, 0, -93, 0, 0, 0, -67, 0, -41, 0, 0, -41, 0, 0, 0, -102, -41, 0, -41, 0, 0,
+ 0, -41, 0, -86, 0, 0, -86, 0, 0, 0, -1, -86, 0, -86, 0, 0, 0, -86, 0, -86, 0,
+ 0, -86, 0, 0, 0, -1, -86, 0, -86, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, -32, -65, 116, 64, 32, 0, 0, -32, 0, 32, 10,
+ 0, 0, 0, 0, 0, 0, -34, 102, 64, 4, 0, 0, 101, 0, -100, -71, 0, 0, 0, 0, 0,
+ 0, 109, 46, 34, -67, 0, 0, -73, 0, -47, -41, 0, 0, 0, 0, 0, 0, -121, 83, 125, -41,
+ 0, 0, -41, 0, -41, -86, 0, 0, 0, 0, 0, 0, -1, 97, -96, -86, 0, 0, -86, 4, -86,
+ -86, 0, 0, 0, 0, 0, 0, -1, 118, -86, -86, 0, 0, -86, 0, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0,
+ 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 96, 9, 50, 104, 0, 0, 104, 32, 112,
+ 0, 31, 0, 0, 0, 0, 0, 1, 0, 0, -20, 0, 0, 4, 61, -69, 0, -74, 0, 0, 0,
+ 0, 0, 0, 0, 0, -68, 0, 0, -67, -113, 72, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0,
+ -41, 0, 0, -41, -41, -66, 0, -86, 0, 0, 0, 0, 125, 0, 0, 0, -86, 3, 0, -86, -86,
+ -1, 0, -86, 0, 0, 0, 0, -5, 0, 0, 0, -86, 0, 0, -86, -86, -1, 0, 0, 0, 0,
+ 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/output.h
new file mode 100644
index 00000000..f274a746
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/output.h
@@ -0,0 +1,309 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_3_s8_output[6912] = {
+ 11, -18, -39, -23, -45, -47, -7, -11, -3, -6, -10, -8, -23, -27, -6, -6, 10, -18, 3, 3, -28, -27, -7,
+ -7, 7, -13, -38, -21, -45, -47, -3, -8, 1, -3, -6, -4, -19, -23, -3, -3, 13, -15, 7, 7, -24, -23,
+ -4, -4, -2, -17, -45, -27, -50, -52, -10, -14, -8, -9, -14, -12, -29, -31, -9, -9, 8, -21, -1, -1, -32,
+ -32, -11, -11, -11, -25, -50, -33, -52, -54, -20, -24, -12, -20, -21, -19, -33, -36, -19, -19, -5, -31, -7, -8,
+ -37, -37, -20, -20, -1, -18, -45, -27, -51, -52, -10, -14, -8, -10, -14, -12, -28, -31, -9, -9, 7, -21, -1,
+ -1, -32, -31, -11, -11, -1, -18, -45, -27, -51, -53, -10, -14, -8, -10, -14, -12, -28, -31, -9, -10, 7, -21,
+ -1, -1, -32, -31, -11, -11, 4, -13, -40, -22, -46, -47, -5, -9, -3, -5, -9, -7, -23, -26, -4, -4, 13,
+ -16, 4, 4, -27, -26, -6, -6, 4, -13, -40, -22, -46, -47, -5, -9, -3, -5, -9, -7, -23, -26, -4, -4,
+ 13, -16, 4, 4, -27, -26, -6, -6, 9, -23, -41, -30, -50, -51, -11, -13, -7, -4, -10, -13, -28, -24, 1,
+ 1, 15, -14, -4, 0, -34, -33, -10, -10, -2, -18, -43, -25, -47, -48, -11, -15, -4, -11, -13, -11, -25, -29,
+ -11, -11, 4, -22, 1, 0, -30, -29, -12, -12, -20, -39, -55, -44, -60, -61, -28, -33, -25, -31, -29, -32, -41,
+ -43, -28, -27, -15, -34, -20, -21, -45, -44, -27, -27, -18, -31, -53, -39, -56, -57, -24, -29, -23, -26, -27, -27,
+ -40, -42, -24, -23, -9, -32, -16, -16, -44, -43, -24, -24, -25, -44, -58, -48, -63, -64, -32, -38, -32, -37, -34,
+ -38, -46, -47, -33, -31, -20, -37, -26, -26, -49, -49, -31, -31, -25, -44, -58, -48, -63, -64, -32, -38, -32, -37,
+ -34, -38, -46, -47, -33, -31, -20, -37, -26, -26, -49, -49, -31, -31, 4, -13, -40, -22, -46, -47, -5, -9, -3,
+ -5, -9, -7, -23, -26, -4, -4, 13, -16, 4, 4, -27, -26, -6, -6, 4, -13, -40, -22, -46, -47, -5, -9,
+ -3, -5, -9, -7, -23, -26, -4, -4, 13, -16, 4, 4, -27, -26, -6, -6, 12, 0, -36, -15, -43, -44, 4,
+ 1, 10, 5, -5, -1, -19, -22, 5, 4, 21, -8, 13, 13, -18, -17, 3, 3, 7, -8, -35, -18, -39, -42,
+ 3, -6, 11, 5, -4, 0, -20, -24, 2, 4, 19, -7, 13, 13, -18, -18, 3, 3, 6, -17, -47, -27, -57,
+ -58, -8, -9, -1, -9, -12, -10, -25, -27, -7, -9, 5, -20, 2, 2, -28, -28, -10, -10, -4, -11, -48, -27,
+ -54, -55, -9, -11, -1, -9, -15, -12, -28, -31, -8, -9, 6, -21, 1, 1, -30, -29, -10, -10, -1, -29, -58,
+ -39, -66, -66, -24, -24, -14, -25, -30, -27, -42, -44, -22, -25, -12, -37, -13, -14, -44, -43, -26, -26, 0, -28,
+ -58, -38, -65, -66, -23, -23, -11, -23, -29, -26, -42, -43, -21, -23, -11, -35, -12, -13, -42, -42, -24, -24, 14,
+ -7, -37, -18, -44, -45, 1, -3, 7, 2, -6, -3, -21, -24, 2, 2, 19, -10, 10, 10, -21, -20, 0, 0,
+ 12, -8, -38, -19, -44, -46, 0, -4, 6, 1, -7, -3, -21, -24, 1, 1, 18, -11, 9, 9, -22, -21, -1,
+ -1, 30, 18, -25, 4, -32, -34, 23, 19, 21, 24, 16, 25, 3, -4, 19, 17, 45, 8, 35, 32, -4, -4,
+ 21, 21, 2, -19, -36, -26, -41, -43, -6, -15, -3, -5, -9, -10, -24, -26, -4, -1, 13, -11, 1, 3, -26,
+ -26, -5, -5, 0, -19, -56, -30, -63, -64, -17, -15, -17, -19, -24, -18, -34, -38, -18, -22, -2, -35, -7, -8,
+ -42, -41, -21, -21, -6, -28, -51, -37, -58, -59, -19, -23, -17, -19, -23, -24, -37, -37, -16, -15, -2, -26, -13,
+ -11, -41, -40, -19, -19, 1, -27, -53, -34, -63, -64, -17, -17, -15, -22, -24, -22, -40, -41, -15, -17, 0, -29,
+ -9, -9, -40, -39, -19, -19, -8, -30, -59, -40, -66, -66, -25, -25, -24, -25, -30, -27, -42, -44, -23, -25, -8,
+ -37, -17, -17, -48, -47, -27, -27, 8, -12, -37, -19, -45, -46, -1, -5, 2, -3, -6, -4, -21, -24, 0, 0,
+ 17, -12, 9, 9, -23, -22, -1, -1, 2, -14, -41, -23, -47, -48, -7, -11, -5, -5, -10, -8, -23, -26, -6,
+ -7, 10, -18, 2, 2, -29, -28, -8, -8, 40, 26, 24, 32, 2, 12, 27, 26, 30, 27, 23, 37, -14, -14,
+ 28, 21, 42, -6, -10, 8, -22, -24, 11, 10, 34, 28, 26, 34, 6, 15, 29, 29, 29, 24, 22, 36, -18,
+ -18, 28, 22, 49, -8, -13, 6, -26, -28, 12, 11, 26, 24, 24, 27, 9, 19, 26, 24, 19, 21, 15, 29,
+ -23, -22, 20, 15, 35, -23, -25, -9, -41, -43, -3, -3, 10, 13, 9, 15, -4, 5, 10, 11, 1, 0, -5,
+ 12, -44, -42, 1, -5, 21, -35, -35, -21, -54, -55, -14, -15, 25, 20, 22, 24, 8, 17, 25, 23, 19, 21,
+ 16, 29, -22, -21, 20, 15, 36, -23, -25, -8, -41, -43, -3, -3, 25, 20, 22, 24, 8, 17, 24, 23, 19,
+ 21, 16, 29, -22, -21, 20, 15, 35, -23, -25, -8, -41, -43, -3, -3, 33, 30, 28, 34, 9, 19, 30, 28,
+ 27, 22, 20, 33, -20, -19, 26, 20, 45, -13, -16, 1, -31, -33, 7, 6, 33, 30, 28, 34, 9, 19, 30,
+ 28, 27, 22, 20, 33, -20, -19, 26, 20, 45, -13, -16, 1, -31, -33, 7, 6, 34, 16, 19, 22, 1, 10,
+ 25, 19, 13, 33, 26, 42, -16, -18, 24, 18, 36, -20, -17, -1, -32, -34, 3, 3, 24, 25, 18, 28, 0,
+ 9, 20, 20, 16, 8, 6, 22, -34, -32, 13, 7, 36, -20, -22, -6, -38, -40, 1, -1, -4, -5, -6, -2,
+ -18, -12, -1, -2, -5, -7, -8, 4, -41, -43, -3, -9, 14, -32, -37, -21, -51, -52, -18, -18, 4, 10, 5,
+ 10, -8, 0, 7, 5, -2, -5, -8, 5, -43, -43, -2, -7, 16, -35, -36, -23, -54, -55, -18, -19, -11, -10,
+ -12, -8, -23, -17, -6, -8, -11, -13, -14, -3, -45, -47, -8, -14, 7, -36, -41, -26, -55, -56, -23, -24, -11,
+ -10, -12, -8, -23, -17, -6, -8, -11, -13, -14, -3, -45, -47, -8, -14, 7, -36, -41, -26, -55, -56, -23, -24,
+ 33, 30, 28, 34, 9, 19, 30, 28, 27, 22, 20, 33, -20, -19, 26, 20, 45, -13, -16, 1, -31, -33, 7,
+ 6, 33, 30, 28, 34, 9, 19, 30, 28, 27, 22, 20, 33, -20, -19, 26, 20, 45, -13, -16, 1, -31, -33,
+ 7, 6, 49, 48, 46, 53, 23, 36, 46, 44, 38, 25, 28, 40, -18, -16, 32, 27, 52, -15, -14, 3, -30,
+ -32, 15, 14, 43, 44, 43, 49, 21, 33, 44, 42, 48, 30, 17, 31, -16, -15, 33, 27, 56, -6, -16, 6,
+ -31, -32, 15, 14, 23, 15, 20, 23, 2, 12, 25, 25, 23, 24, 18, 32, -15, -15, 24, 18, 40, -16, -21,
+ 0, -32, -34, 4, 4, 18, 29, 27, 32, 11, 22, 27, 27, 17, 9, 4, 18, -33, -31, 13, 7, 35, -31,
+ -31, -14, -50, -51, -5, -6, 11, 3, 7, 10, -9, 2, 10, 11, 6, 8, -4, 11, -30, -29, 2, -5, 8,
+ -35, -37, -20, -49, -51, -18, -18, 13, 5, 10, 12, -7, 5, 13, 14, 8, 9, -3, 12, -29, -28, 3, -3,
+ 10, -35, -37, -19, -49, -50, -16, -16, 45, 39, 39, 45, 17, 29, 41, 40, 38, 28, 26, 39, -14, -13, 32,
+ 26, 50, -11, -14, 5, -29, -31, 13, 12, 43, 37, 37, 44, 16, 28, 39, 38, 37, 28, 25, 38, -15, -14,
+ 31, 25, 49, -11, -15, 5, -30, -31, 13, 11, 61, 64, 67, 70, 46, 62, 67, 67, 68, 60, 55, 70, 11,
+ 13, 63, 58, 88, 17, 7, 32, -14, -16, 31, 30, 34, 30, 25, 34, 5, 14, 29, 25, 27, 19, 15, 29,
+ -24, -25, 23, 17, 46, -10, -15, 3, -31, -33, 10, 8, 17, 11, 12, 15, -1, 7, 13, 14, 6, 14, 11,
+ 23, -27, -21, 10, 5, 19, -34, -32, -17, -47, -48, -12, -12, 14, 9, 8, 13, -7, 1, 12, 9, 5, 7,
+ 4, 16, -32, -32, 7, 1, 21, -30, -31, -15, -46, -48, -9, -9, 17, 8, 10, 12, -2, 5, 12, 11, 0,
+ 16, 3, 18, -32, -29, 8, 2, 9, -37, -34, -19, -52, -52, -10, -11, 7, 0, 2, 4, -10, -3, 4, 3,
+ -4, 4, 0, 13, -35, -31, 0, -6, 9, -41, -40, -25, -55, -55, -18, -19, 39, 35, 32, 39, 13, 23, 34,
+ 32, 28, 29, 21, 36, -19, -18, 30, 24, 45, -11, -13, 4, -30, -32, 12, 11, 31, 28, 26, 32, 7, 17,
+ 28, 26, 26, 19, 19, 32, -21, -20, 24, 18, 45, -14, -18, 0, -32, -34, 5, 4, 46, -16, 32, 19, -21,
+ -20, 10, 6, 16, -23, -1, 5, -15, -15, 12, 7, 28, 24, 23, 27, -1, 9, 20, 24, 54, -6, 39, 26,
+ -11, -16, 12, 8, 25, -18, 3, 9, -10, -10, 16, 10, 34, 26, 25, 29, 2, 12, 22, 26, 45, -15, 33,
+ 21, -20, -26, 1, -3, 20, -23, -4, 3, -15, -15, 9, 4, 34, 27, 23, 27, 1, 11, 19, 23, 30, -26,
+ 11, 0, -30, -36, -12, -16, 6, -30, -10, -5, -22, -22, -1, -6, 15, 10, 7, 10, -13, -5, 3, 7, 46,
+ -12, 33, 21, -18, -24, 2, -1, 21, -22, -3, 4, -14, -14, 9, 4, 34, 26, 22, 26, 1, 11, 17, 21,
+ 46, -12, 33, 21, -18, -24, 2, -2, 21, -22, -3, 3, -14, -14, 9, 4, 34, 26, 22, 26, 1, 11, 17,
+ 21, 50, -11, 37, 25, -16, -22, 7, 4, 23, -21, 0, 7, -13, -13, 14, 9, 34, 28, 26, 30, 2, 13,
+ 23, 27, 50, -11, 37, 25, -16, -22, 7, 4, 23, -21, 0, 7, -13, -13, 14, 9, 34, 28, 26, 30, 2,
+ 13, 23, 27, 54, -15, 36, 15, -23, -21, 7, 3, 16, -12, -3, 3, -12, -11, 15, 6, 43, 36, 29, 30,
+ 6, 18, 26, 31, 40, -19, 23, 11, -22, -29, -1, -5, 13, -26, -4, 2, -17, -17, 8, 3, 21, 15, 15,
+ 18, -7, 1, 12, 16, 28, -18, 4, -4, -27, -33, -14, -17, -4, -34, -20, -15, -28, -28, -11, -14, 6, -2,
+ -6, 2, -24, -17, -11, -7, 26, -27, 7, -2, -35, -41, -16, -20, -1, -35, -18, -12, -28, -28, -6, -10, 10,
+ 5, 2, 8, -19, -10, -2, 2, 23, -21, -2, -9, -31, -37, -18, -22, -10, -38, -25, -20, -32, -32, -16, -19,
+ 0, -7, -12, -3, -30, -22, -17, -12, 23, -21, -2, -9, -31, -37, -18, -22, -10, -38, -25, -20, -32, -32, -16,
+ -19, 0, -7, -12, -3, -30, -22, -17, -12, 50, -11, 37, 25, -16, -22, 7, 4, 23, -21, 0, 7, -13, -13,
+ 14, 9, 34, 28, 26, 30, 2, 13, 23, 27, 50, -11, 37, 25, -16, -22, 7, 4, 23, -21, 0, 7, -13,
+ -13, 14, 9, 34, 28, 26, 30, 2, 13, 23, 27, 57, -9, 54, 43, -14, -23, 13, 9, 34, -16, 3, 12,
+ -10, -10, 23, 18, 49, 42, 40, 39, 14, 26, 38, 41, 60, -5, 53, 41, -11, -20, 15, 11, 39, -21, 8,
+ 17, -9, -9, 23, 18, 45, 37, 42, 44, 15, 26, 37, 40, 51, -4, 40, 28, -9, -17, 9, 5, 21, -18,
+ -4, 2, -13, -13, 10, 5, 40, 29, 20, 22, 2, 11, 17, 21, 44, -15, 35, 24, -21, -33, -3, -7, 21,
+ -23, -6, 1, -17, -17, 9, 4, 37, 29, 23, 24, 2, 12, 20, 24, 22, -33, 14, 2, -39, -39, -13, -17,
+ -3, -34, -21, -14, -30, -30, -6, -12, 20, 16, 6, 6, -12, -3, 3, 6, 24, -32, 17, 5, -38, -39, -11,
+ -15, -1, -33, -20, -13, -29, -29, -5, -10, 23, 18, 9, 8, -9, -1, 6, 9, 56, -9, 48, 37, -15, -20,
+ 13, 10, 30, -18, 3, 11, -11, -11, 20, 15, 46, 39, 37, 38, 13, 24, 34, 37, 55, -9, 47, 35, -15,
+ -20, 13, 9, 29, -18, 3, 10, -11, -11, 19, 14, 44, 37, 35, 37, 11, 22, 32, 36, 85, 18, 72, 63,
+ 13, 2, 34, 30, 54, -1, 28, 36, 10, 10, 41, 35, 78, 68, 60, 71, 33, 45, 54, 60, 53, -10, 34,
+ 22, -18, -23, 8, 4, 21, -22, 0, 7, -14, -13, 15, 9, 30, 24, 27, 32, 1, 12, 23, 27, 27, -29,
+ 22, 10, -32, -34, -8, -11, 9, -30, -14, -8, -25, -25, -1, -6, 23, 18, 9, 9, -7, 3, 8, 12, 35,
+ -22, 20, 8, -31, -34, -6, -10, 7, -28, -15, -9, -25, -25, 0, -5, 22, 16, 11, 13, -8, 2, 9, 13,
+ 36, -18, 28, 9, -36, -37, -6, -9, 10, -26, -13, -7, -22, -22, 1, -4, 18, 19, 11, 11, -3, 7, 10,
+ 14, 22, -33, 13, 1, -38, -39, -13, -17, 2, -34, -21, -15, -30, -30, -7, -12, 16, 11, 3, 3, -11, -1,
+ 2, 6, 57, -3, 45, 29, -15, -21, 12, 8, 27, -16, 5, 11, -8, -8, 18, 13, 35, 32, 30, 34, 7,
+ 17, 27, 31, 46, -15, 33, 23, -17, -23, 5, 2, 21, -23, -2, 5, -15, -15, 12, 7, 34, 26, 24, 28,
+ 0, 11, 20, 24, -5, -17, -8, -9, -19, -23, -5, -6, -8, -18, -4, -10, -13, -13, -8, -8, -22, -17, -2,
+ -9, -8, -8, -8, -8, -1, -14, -5, -6, -16, -20, -1, -3, -5, -14, -1, -7, -10, -10, -5, -5, -19, -15,
+ 1, -6, -5, -5, -5, -5, -8, -20, -11, -12, -22, -26, -8, -9, -12, -21, -7, -13, -16, -16, -11, -11, -25,
+ -20, -5, -13, -11, -11, -11, -11, -18, -29, -21, -22, -32, -36, -17, -19, -21, -30, -17, -23, -26, -26, -21, -21,
+ -35, -30, -15, -22, -21, -21, -21, -21, -8, -20, -11, -12, -23, -26, -8, -10, -12, -21, -7, -14, -16, -16, -11,
+ -11, -25, -21, -5, -13, -11, -11, -11, -11, -8, -21, -11, -12, -23, -26, -8, -10, -12, -21, -7, -14, -16, -16,
+ -11, -11, -25, -21, -5, -13, -11, -11, -11, -11, -3, -15, -6, -7, -18, -21, -3, -5, -7, -16, -2, -9, -11,
+ -11, -6, -6, -20, -16, 0, -8, -6, -6, -6, -6, -3, -15, -6, -7, -18, -21, -3, -5, -7, -16, -2, -9,
+ -11, -11, -6, -6, -20, -16, 0, -8, -6, -6, -6, -6, -8, -21, -9, -11, -20, -23, -7, -9, -11, -20, -7,
+ -13, -16, -16, -11, -11, -25, -21, -5, -12, -11, -11, -11, -11, -9, -21, -12, -13, -24, -27, -9, -11, -13, -22,
+ -8, -15, -17, -17, -12, -12, -26, -22, -6, -14, -12, -12, -12, -12, -24, -37, -28, -29, -39, -43, -24, -26, -28,
+ -36, -24, -30, -33, -33, -27, -27, -41, -37, -22, -29, -28, -28, -28, -28, -21, -33, -24, -26, -36, -39, -21, -23,
+ -25, -34, -20, -27, -29, -29, -24, -24, -38, -33, -18, -26, -24, -24, -24, -24, -29, -41, -32, -33, -43, -47, -29,
+ -30, -32, -40, -28, -34, -37, -37, -32, -32, -46, -41, -26, -33, -32, -32, -32, -32, -29, -41, -32, -33, -43, -47,
+ -29, -30, -32, -40, -28, -34, -37, -37, -32, -32, -46, -41, -26, -33, -32, -32, -32, -32, -3, -15, -6, -7, -18,
+ -21, -3, -5, -7, -16, -2, -9, -11, -11, -6, -6, -20, -16, 0, -8, -6, -6, -6, -6, -3, -15, -6, -7,
+ -18, -21, -3, -5, -7, -16, -2, -9, -11, -11, -6, -6, -20, -16, 0, -8, -6, -6, -6, -6, 5, -7, 3,
+ 2, -8, -11, 6, 4, 2, -8, 7, 0, -3, -3, 3, 3, -11, -7, 9, 1, 3, 3, 3, 3, 7, -4,
+ 0, 0, -13, -16, 6, 4, 2, -8, 7, 0, -2, -2, 3, 3, -11, -7, 9, 1, 3, 3, 3, 3, -8,
+ -22, -9, -10, -19, -22, -7, -9, -11, -20, -6, -13, -15, -15, -10, -10, -24, -20, -4, -12, -10, -10, -10, -10,
+ -8, -21, -10, -11, -20, -24, -7, -9, -11, -21, -7, -13, -16, -16, -11, -11, -25, -20, -5, -12, -11, -11, -11,
+ -11, -24, -36, -24, -26, -34, -38, -23, -25, -27, -37, -23, -29, -32, -32, -26, -26, -40, -34, -20, -28, -26, -26,
+ -26, -26, -23, -35, -23, -24, -33, -36, -21, -23, -25, -35, -21, -27, -30, -30, -25, -25, -39, -33, -19, -26, -25,
+ -25, -25, -25, 3, -9, 0, -1, -12, -15, 3, 1, -1, -11, 4, -3, -5, -5, 0, 0, -14, -10, 6, -2,
+ 0, 0, 0, 0, 2, -10, -1, -2, -12, -16, 2, 1, -2, -12, 3, -3, -6, -6, -1, -1, -15, -11, 5,
+ -3, -1, -1, -1, -1, 24, 11, 19, 19, 8, 4, 24, 22, 20, 8, 24, 18, 15, 15, 20, 20, 1, 7,
+ 31, 17, 20, 20, 20, 20, -2, -13, -7, -8, -20, -23, -2, -4, -6, -15, -2, -8, -11, -11, -6, -6, -20,
+ -16, 1, -7, -6, -6, -6, -6, -19, -32, -19, -20, -28, -32, -18, -19, -22, -31, -17, -23, -26, -26, -21, -21,
+ -31, -27, -18, -22, -21, -21, -21, -21, -17, -30, -19, -20, -30, -33, -17, -18, -20, -29, -16, -22, -25, -25, -20,
+ -20, -32, -28, -16, -21, -20, -20, -20, -20, -17, -30, -17, -19, -27, -31, -16, -18, -20, -28, -15, -21, -24, -24,
+ -19, -19, -28, -26, -17, -20, -19, -19, -19, -19, -25, -37, -25, -26, -35, -39, -24, -25, -28, -36, -23, -29, -32,
+ -32, -27, -27, -36, -33, -25, -27, -27, -27, -27, -27, 1, -12, -2, -3, -13, -17, 1, 0, -2, -12, 2, -4,
+ -7, -7, -2, -2, -16, -12, 4, -3, -2, -2, -2, -2, -5, -17, -8, -9, -20, -23, -5, -7, -9, -18, -4,
+ -11, -13, -13, -8, -8, -22, -18, -2, -10, -8, -8, -8, -8, -7, -15, -8, -8, -8, -8, -8, -8, -7, -15,
+ -8, -8, -8, -8, -8, -8, -7, -15, -8, -8, -8, -8, -8, -8, -4, -12, -5, -5, -5, -5, -5, -5, -4,
+ -12, -5, -5, -5, -5, -5, -5, -4, -12, -5, -5, -5, -5, -5, -5, -11, -18, -11, -11, -11, -11, -11, -11,
+ -11, -18, -11, -11, -11, -11, -11, -11, -11, -18, -11, -11, -11, -11, -11, -11, -20, -27, -21, -21, -21, -21, -21,
+ -21, -20, -27, -21, -21, -21, -21, -21, -21, -20, -27, -21, -21, -21, -21, -21, -21, -11, -18, -11, -11, -11, -11,
+ -11, -11, -11, -18, -11, -11, -11, -11, -11, -11, -11, -18, -11, -11, -11, -11, -11, -11, -11, -19, -11, -11, -11,
+ -11, -11, -11, -11, -18, -11, -11, -11, -11, -11, -11, -11, -19, -11, -11, -11, -11, -11, -11, -6, -13, -6, -6,
+ -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6,
+ -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -10, -18,
+ -11, -11, -11, -11, -11, -11, -10, -17, -11, -11, -11, -11, -11, -11, -10, -18, -11, -11, -11, -11, -11, -11, -12,
+ -19, -12, -12, -12, -12, -12, -12, -12, -19, -12, -12, -12, -12, -12, -12, -12, -19, -12, -12, -12, -12, -12, -12,
+ -27, -34, -28, -28, -28, -28, -28, -28, -27, -33, -28, -28, -28, -28, -28, -28, -27, -34, -28, -28, -28, -28, -28,
+ -28, -24, -31, -24, -24, -24, -24, -24, -24, -24, -30, -24, -24, -24, -24, -24, -24, -24, -31, -24, -24, -24, -24,
+ -24, -24, -31, -38, -32, -32, -32, -32, -32, -32, -31, -37, -32, -32, -32, -32, -32, -32, -31, -38, -32, -32, -32,
+ -32, -32, -32, -31, -38, -32, -32, -32, -32, -32, -32, -31, -37, -32, -32, -32, -32, -32, -32, -31, -38, -32, -32,
+ -32, -32, -32, -32, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6,
+ -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13, -6, -6, -6, -6, -6, -6, -6, -13,
+ -6, -6, -6, -6, -6, -6, 3, -5, 3, 3, 3, 3, 3, 3, 3, -6, 2, 2, 2, 2, 2, 2, 3,
+ -5, 3, 3, 3, 3, 3, 3, 3, -5, 3, 3, 3, 3, 3, 3, 3, -5, 3, 3, 3, 3, 3, 3,
+ 3, -5, 3, 3, 3, 3, 3, 3, -10, -18, -10, -10, -10, -10, -10, -10, -10, -17, -10, -10, -10, -10, -10,
+ -10, -10, -18, -10, -10, -10, -10, -10, -10, -10, -17, -11, -11, -11, -11, -11, -11, -10, -18, -11, -11, -11, -11,
+ -11, -11, -10, -17, -11, -11, -11, -11, -11, -11, -26, -32, -26, -26, -26, -26, -26, -26, -26, -33, -26, -26, -26,
+ -26, -26, -26, -26, -32, -26, -26, -26, -26, -26, -26, -24, -30, -25, -25, -25, -25, -25, -25, -24, -32, -25, -25,
+ -25, -25, -25, -25, -24, -30, -25, -25, -25, -25, -25, -25, 0, -7, 0, 0, 0, 0, 0, 0, 0, -8, 0,
+ 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, -1, -8, -1, -1, -1, -1, -1, -1, -1, -9,
+ -1, -1, -1, -1, -1, -1, -1, -8, -1, -1, -1, -1, -1, -1, 21, 12, 20, 20, 20, 20, 20, 20, 21,
+ 11, 20, 20, 20, 20, 20, 20, 21, 12, 20, 20, 20, 20, 20, 20, -5, -13, -6, -6, -6, -6, -6, -6,
+ -5, -13, -6, -6, -6, -6, -6, -6, -5, -13, -6, -6, -6, -6, -6, -6, -21, -27, -21, -21, -21, -21, -21,
+ -21, -21, -28, -21, -21, -21, -21, -21, -21, -21, -27, -21, -21, -21, -21, -21, -21, -19, -26, -20, -20, -20, -20,
+ -20, -20, -19, -26, -20, -20, -20, -20, -20, -20, -19, -26, -20, -20, -20, -20, -20, -20, -19, -26, -19, -19, -19,
+ -19, -19, -19, -19, -25, -19, -19, -19, -19, -19, -19, -19, -26, -19, -19, -19, -19, -19, -19, -27, -33, -27, -27,
+ -27, -27, -27, -27, -27, -33, -27, -27, -27, -27, -27, -27, -27, -33, -27, -27, -27, -27, -27, -27, -1, -10, -2,
+ -2, -2, -2, -2, -2, -1, -9, -2, -2, -2, -2, -2, -2, -1, -10, -2, -2, -2, -2, -2, -2, -8, -15,
+ -8, -8, -8, -8, -8, -8, -8, -15, -8, -8, -8, -8, -8, -8, -8, -15, -8, -8, -8, -8, -8, -8, 5,
+ -11, -7, -14, -8, -8, -8, -8, -3, -6, -1, 0, -19, -18, -8, -8, 3, -10, -7, -14, -8, -8, -8, -8,
+ 9, -8, -3, -11, -5, -5, -5, -5, 0, -2, 3, 4, -16, -15, -5, -5, 6, -8, -3, -11, -5, -5, -5,
+ -5, 2, -14, -10, -17, -11, -11, -11, -11, -6, -9, -4, -3, -22, -21, -11, -11, 0, -13, -10, -17, -11, -11,
+ -11, -11, -8, -23, -20, -27, -21, -21, -21, -21, -16, -18, -13, -12, -32, -31, -21, -21, -10, -23, -20, -27, -21,
+ -21, -21, -21, 2, -14, -10, -18, -11, -11, -11, -11, -6, -8, -4, -3, -23, -22, -11, -11, 0, -14, -10, -18,
+ -11, -11, -11, -11, 2, -14, -10, -18, -11, -11, -11, -11, -6, -9, -4, -3, -23, -22, -11, -11, 0, -14, -10,
+ -18, -11, -11, -11, -11, 7, -9, -5, -13, -6, -6, -6, -6, -1, -4, 1, 2, -18, -16, -6, -6, 5, -9,
+ -5, -13, -6, -6, -6, -6, 7, -9, -5, -13, -6, -6, -6, -6, -1, -4, 1, 2, -18, -16, -6, -6, 5,
+ -9, -5, -13, -6, -6, -6, -6, -3, -16, -11, -12, -11, -11, -11, -11, -15, -14, -2, 1, -21, -20, -11, -11,
+ -6, -15, -10, -14, -11, -11, -11, -11, 1, -15, -11, -19, -12, -12, -12, -12, -7, -10, -5, -4, -24, -23, -12,
+ -12, -1, -14, -11, -19, -12, -12, -12, -12, -18, -31, -27, -31, -28, -28, -27, -27, -26, -25, -21, -16, -39, -38,
+ -27, -27, -18, -30, -26, -34, -28, -28, -27, -27, -13, -27, -24, -29, -24, -24, -24, -24, -22, -22, -17, -14, -36,
+ -35, -24, -24, -15, -26, -23, -31, -24, -24, -24, -24, -23, -36, -31, -34, -32, -32, -32, -32, -31, -29, -25, -19,
+ -43, -42, -32, -32, -23, -34, -31, -38, -32, -32, -32, -32, -23, -36, -31, -34, -32, -32, -32, -32, -31, -29, -25,
+ -19, -43, -42, -32, -32, -23, -34, -31, -38, -32, -32, -32, -32, 7, -9, -5, -13, -6, -6, -6, -6, -1, -4,
+ 1, 2, -18, -16, -6, -6, 5, -9, -5, -13, -6, -6, -6, -6, 7, -9, -5, -13, -6, -6, -6, -6, -1,
+ -4, 1, 2, -18, -16, -6, -6, 5, -9, -5, -13, -6, -6, -6, -6, 16, 0, 4, -4, 3, 3, 3, 3,
+ 5, 2, 12, 11, -9, -8, 3, 3, 12, -1, 4, -2, 3, 3, 3, 3, 15, -1, 4, -4, 3, 3, 3,
+ 3, 17, 9, 3, 11, -9, -8, 3, 3, 18, 2, 5, -9, 3, 3, 3, 3, 0, -14, -9, -17, -10, -10,
+ -10, -10, -6, -11, -5, -9, -16, -16, -10, -10, -3, -15, -10, -13, -10, -10, -10, -10, 0, -14, -9, -17, -11,
+ -11, -11, -11, -5, -11, -5, -7, -19, -18, -11, -11, -1, -14, -10, -15, -11, -11, -11, -11, -17, -29, -25, -33,
+ -26, -26, -26, -26, -20, -28, -23, -28, -30, -30, -26, -26, -19, -30, -26, -28, -26, -26, -26, -26, -16, -27, -24,
+ -31, -25, -25, -25, -25, -19, -26, -22, -26, -29, -28, -25, -25, -18, -28, -24, -27, -25, -25, -25, -25, 13, -3,
+ 1, -7, 0, 0, 0, 0, 5, 1, 7, 8, -12, -10, 0, 0, 11, -3, 1, -7, 0, 0, 0, 0, 12,
+ -4, 0, -8, -1, -1, -1, -1, 4, 0, 6, 7, -13, -11, -1, -1, 10, -4, 0, -8, -1, -1, -1, -1,
+ 40, 18, 23, 8, 20, 20, 20, 20, 32, 25, 28, 25, 7, 9, 20, 20, 37, 18, 22, 12, 20, 20, 20,
+ 20, 6, -10, -5, -9, -6, -6, -6, -6, -2, -2, 0, 10, -20, -18, -6, -6, 6, -7, -4, -15, -6, -6,
+ -6, -6, -7, -22, -19, -31, -21, -21, -21, -21, -17, -23, -12, -23, -28, -27, -21, -21, -14, -25, -21, -22, -21,
+ -21, -21, -21, -11, -24, -19, -23, -20, -20, -20, -20, -20, -21, -13, -10, -29, -28, -20, -20, -13, -23, -19, -24,
+ -20, -20, -20, -20, -8, -22, -18, -26, -19, -19, -19, -19, -17, -20, -11, -16, -27, -26, -19, -19, -13, -24, -19,
+ -21, -19, -19, -19, -19, -16, -29, -26, -33, -27, -27, -27, -27, -25, -28, -19, -24, -35, -34, -27, -27, -21, -31,
+ -27, -29, -27, -27, -27, -27, 11, -5, -1, -8, -2, -2, -2, -2, 3, 0, 5, 7, -13, -12, -2, -2, 9,
+ -5, -1, -8, -2, -2, -2, -2, 5, -11, -7, -15, -8, -8, -8, -8, -3, -6, -1, 0, -20, -19, -8, -8,
+ 3, -10, -7, -15, -8, -8, -8, -8, 9, 21, -7, 3, -13, -14, 6, 7, 12, 9, 3, -3, -22, -23, 4,
+ 2, 32, 27, -5, -5, -26, -33, -7, -7, 11, 23, -4, 5, -10, -11, 9, 9, 13, 11, 6, 1, -19, -20,
+ 6, 4, 34, 28, -2, -3, -22, -28, -4, -4, -4, 11, -15, -6, -23, -23, -1, -1, 4, -3, 2, -7, -25,
+ -27, -4, -6, 25, 13, -10, -11, -25, -27, -11, -11, -11, 0, -22, -12, -26, -27, -10, -10, -12, -9, -6, -11,
+ -31, -32, -13, -14, 8, 0, -16, -18, -32, -35, -20, -20, -3, 11, -16, -7, -23, -23, -2, -2, 2, -3, -1,
+ -8, -27, -29, -5, -7, 24, 13, -12, -12, -26, -28, -11, -11, -4, 11, -16, -7, -23, -23, -3, -3, 2, -3,
+ -2, -8, -27, -29, -6, -7, 24, 13, -12, -13, -27, -28, -11, -11, 6, 20, -7, 3, -13, -14, 7, 7, 12,
+ 7, 8, -1, -19, -20, 4, 2, 32, 23, -2, -3, -21, -26, -6, -6, 6, 20, -7, 3, -13, -14, 7, 7,
+ 12, 7, 8, -1, -19, -20, 4, 2, 32, 23, -2, -3, -21, -26, -6, -6, 2, 21, -6, 0, -18, -18, -1,
+ -1, 10, 10, -4, -2, -31, -32, -4, -6, 31, 25, -9, -10, -29, -31, -10, -10, 3, 13, -10, -1, -14, -16,
+ 2, 3, 2, 3, 4, -3, -22, -22, 0, -2, 21, 15, -6, -7, -26, -32, -12, -12, -18, -11, -28, -21, -32,
+ -33, -18, -18, -25, -17, -24, -21, -43, -45, -21, -23, -3, -6, -27, -29, -40, -43, -27, -27, -17, -6, -25, -17,
+ -31, -31, -14, -13, -16, -15, -10, -17, -34, -36, -16, -18, 2, -6, -19, -22, -34, -37, -24, -24, -23, -17, -33,
+ -27, -37, -37, -23, -23, -32, -23, -30, -26, -47, -50, -26, -28, -10, -13, -32, -34, -44, -45, -31, -31, -23, -17,
+ -33, -27, -37, -37, -23, -23, -32, -23, -30, -26, -47, -50, -26, -28, -10, -13, -32, -34, -44, -45, -31, -31, 6,
+ 20, -7, 3, -13, -14, 7, 7, 12, 7, 8, -1, -19, -20, 4, 2, 32, 23, -2, -3, -21, -26, -6, -6,
+ 6, 20, -7, 3, -13, -14, 7, 7, 12, 7, 8, -1, -19, -20, 4, 2, 32, 23, -2, -3, -21, -26, -6,
+ -6, 15, 30, 4, 13, -3, -4, 17, 18, 26, 16, 22, 10, -7, -7, 14, 12, 49, 30, 8, 5, -15, -21,
+ 3, 3, 13, 26, -1, 10, -8, -9, 16, 17, 19, 10, 19, 3, -4, -5, 13, 12, 46, 34, 1, 8, -15,
+ -21, 3, 3, 3, 16, -10, -2, -16, -16, -1, -1, 1, 0, -8, -9, -27, -30, -4, -5, 24, 23, -17, -12,
+ -32, -34, -10, -10, -3, 11, -11, -2, -17, -17, 0, 0, 0, -3, 7, -5, -18, -20, -3, -4, 22, 11, -9,
+ -8, -24, -28, -10, -10, -18, -3, -27, -19, -32, -32, -18, -18, -19, -20, -20, -25, -38, -41, -21, -22, 0, 1,
+ -33, -27, -45, -47, -26, -26, -16, -2, -25, -17, -30, -30, -16, -16, -18, -19, -18, -24, -36, -39, -19, -21, 3,
+ 3, -32, -26, -45, -46, -24, -24, 12, 26, -1, 9, -7, -8, 13, 13, 18, 13, 14, 5, -13, -14, 10, 8,
+ 43, 30, 0, 1, -19, -24, 0, 0, 11, 25, -2, 8, -8, -9, 12, 12, 17, 12, 13, 4, -13, -14, 9,
+ 8, 42, 29, 0, 0, -20, -25, -1, -1, 35, 49, 13, 27, 9, 8, 35, 35, 30, 29, 38, 23, 4, -1,
+ 30, 27, 64, 50, 15, 17, -1, -4, 21, 21, 9, 20, -4, 5, -11, -12, 9, 10, 10, 11, 8, 3, -17,
+ -18, 6, 4, 35, 25, -1, -2, -21, -27, -5, -5, -16, 2, -25, -18, -34, -34, -15, -15, 1, -15, -8, -20,
+ -36, -38, -15, -16, 9, 2, -19, -21, -34, -36, -21, -21, -12, 3, -19, -13, -27, -28, -11, -11, -5, -7, -10,
+ -13, -34, -35, -12, -13, 13, 6, -17, -18, -33, -37, -19, -19, -16, 1, -22, -16, -32, -32, -15, -14, 0, -11,
+ -9, -16, -35, -37, -13, -15, 10, 3, -17, -19, -31, -33, -19, -19, -24, -7, -30, -24, -40, -40, -23, -22, -8,
+ -19, -17, -23, -43, -45, -21, -23, 2, -5, -25, -27, -39, -40, -27, -27, 11, 24, -3, 7, -9, -10, 11, 12,
+ 16, 11, 13, 4, -14, -15, 8, 7, 36, 27, 2, 1, -17, -22, -1, -1, 4, 18, -9, 0, -15, -16, 5,
+ 5, 10, 5, 6, -3, -21, -22, 2, 0, 30, 21, -4, -5, -23, -28, -8, -8, 17, -18, -20, -10, -49, -49,
+ -1, -2, 8, -17, -20, -28, -34, -35, -4, -2, 7, 14, -28, -12, -40, -41, 6, 4, 27, -10, -10, -8, -45,
+ -45, 2, 2, 13, -14, -16, -23, -29, -30, 0, 1, 14, 14, -24, -9, -36, -37, 7, 6, 21, -14, -17, -11,
+ -54, -53, -4, -5, 10, -20, -22, -29, -34, -35, -7, -5, 12, 7, -23, -10, -33, -34, 4, 2, 9, -30, -26,
+ -28, -58, -58, -14, -15, -5, -30, -26, -35, -36, -37, -16, -15, -2, -11, -35, -23, -47, -48, -12, -13, 21, -15,
+ -17, -12, -53, -53, -4, -5, 8, -20, -22, -30, -35, -35, -7, -5, 11, 6, -24, -11, -35, -36, 3, 1, 20,
+ -16, -17, -13, -53, -53, -4, -5, 8, -20, -22, -30, -35, -36, -7, -5, 10, 6, -24, -12, -35, -36, 3, 1,
+ 25, -10, -12, -7, -48, -48, 1, 0, 14, -15, -17, -25, -30, -31, -2, 0, 16, 13, -22, -8, -33, -34, 8,
+ 6, 25, -10, -12, -7, -48, -48, 1, 0, 14, -15, -17, -25, -30, -31, -2, 0, 16, 13, -22, -8, -33, -34,
+ 8, 6, 9, -16, -22, -8, -55, -54, -4, -5, 6, -23, -31, -32, -47, -47, -6, -5, 10, 21, -25, -11, -35,
+ -36, 7, 4, 18, -21, -17, -18, -50, -50, -5, -6, 5, -21, -19, -28, -30, -31, -8, -6, 6, 1, -30, -16,
+ -42, -44, -2, -4, -2, -37, -28, -32, -60, -60, -21, -21, -12, -35, -34, -43, -45, -46, -23, -21, -19, -15, -42,
+ -32, -55, -55, -20, -23, 3, -32, -27, -26, -61, -61, -18, -18, -5, -32, -30, -39, -41, -41, -20, -18, -8, -13,
+ -37, -25, -46, -47, -14, -16, -7, -41, -32, -35, -63, -63, -25, -26, -15, -38, -38, -47, -49, -49, -28, -26, -25,
+ -20, -45, -36, -57, -58, -25, -28, -7, -41, -32, -35, -63, -63, -25, -26, -15, -38, -38, -47, -49, -49, -28, -26,
+ -25, -20, -45, -36, -57, -58, -25, -28, 25, -10, -12, -7, -48, -48, 1, 0, 14, -15, -17, -25, -30, -31, -2,
+ 0, 16, 13, -22, -8, -33, -34, 8, 6, 25, -10, -12, -7, -48, -48, 1, 0, 14, -15, -17, -25, -30, -31,
+ -2, 0, 16, 13, -22, -8, -33, -34, 8, 6, 34, 5, -2, 4, -39, -39, 10, 9, 27, -5, -10, -13, -21,
+ -22, 7, 9, 36, 28, -7, 8, -15, -17, 22, 22, 43, -1, -1, 2, -40, -39, 10, 9, 22, -5, -4, -18,
+ -16, -17, 7, 9, 28, 19, -9, 6, -18, -19, 20, 20, 20, -15, -9, -13, -44, -45, -3, -4, 3, -16, -21,
+ -25, -34, -34, -6, -4, 11, 14, -21, -10, -35, -36, 2, 1, 25, -11, -7, -13, -48, -48, -4, -4, 10, -17,
+ -17, -23, -26, -27, -6, -5, 20, 7, -16, -5, -26, -27, 4, 3, -4, -38, -30, -29, -58, -58, -20, -20, -19,
+ -30, -33, -37, -43, -44, -22, -20, -5, -5, -31, -21, -42, -44, -14, -14, -2, -36, -28, -28, -56, -56, -18, -19,
+ -17, -29, -31, -36, -41, -42, -20, -19, -3, -2, -28, -19, -40, -41, -12, -11, 32, -4, -6, -1, -42, -42, 7,
+ 6, 20, -9, -11, -19, -24, -24, 4, 6, 26, 23, -12, 3, -22, -23, 17, 17, 31, -5, -7, -2, -43, -43,
+ 6, 5, 20, -10, -12, -20, -25, -25, 3, 5, 25, 22, -13, 1, -23, -25, 16, 15, 63, 17, 19, 15, -31,
+ -31, 27, 27, 42, 7, 13, -3, -3, -4, 25, 27, 47, 40, 5, 25, -12, -13, 36, 35, 24, -12, -13, -7,
+ -47, -47, 1, 1, 15, -17, -16, -27, -29, -30, -1, 1, 11, 13, -23, -8, -34, -35, 9, 7, 9, -26, -28,
+ -21, -61, -61, -14, -15, 0, -27, -33, -34, -44, -45, -17, -15, 7, -4, -33, -25, -40, -42, -7, -9, 7, -26,
+ -24, -19, -58, -57, -13, -14, 1, -28, -31, -36, -44, -44, -16, -14, 1, 1, -31, -21, -39, -40, -6, -8, 1,
+ -31, -33, -21, -63, -62, -12, -13, 2, -26, -31, -34, -43, -44, -15, -13, 10, -1, -29, -23, -35, -36, -5, -7,
+ 1, -33, -33, -26, -65, -65, -20, -21, -6, -33, -39, -41, -51, -51, -23, -21, -2, -9, -37, -31, -43, -44, -13,
+ -15, 25, -9, -12, -4, -47, -46, 5, 4, 19, -11, -13, -20, -25, -26, 3, 4, 22, 17, -18, -4, -29, -30,
+ 12, 10, 25, -11, -12, -9, -49, -49, -1, -2, 12, -17, -19, -27, -32, -33, -4, -2, 13, 11, -24, -10, -35,
+ -36, 6, 4, 9, -21, -19, -17, -43, -43, -3, -1, 27, 6, -4, -1, -47, -49, -2, -1, -1, -12, -24, -24,
+ -43, -43, -7, -7, 20, -16, -21, -17, -43, -43, 0, 2, 27, 4, -5, -1, -46, -48, 1, 3, 3, -6, -24,
+ -21, -43, -43, -4, -4, 18, -19, -21, -19, -49, -49, -6, -4, 15, -5, -14, -11, -48, -50, -5, -4, 0, -10,
+ -25, -27, -43, -43, -11, -11, 16, -30, -39, -36, -55, -55, -16, -14, 2, -15, -25, -24, -51, -53, -15, -13, -13,
+ -20, -34, -30, -51, -51, -20, -20, 17, -19, -22, -20, -48, -48, -6, -4, 16, -4, -12, -10, -48, -50, -5, -4,
+ 0, -9, -26, -27, -44, -43, -11, -11, 17, -19, -22, -20, -48, -48, -7, -4, 16, -5, -12, -10, -48, -50, -5,
+ -4, 0, -9, -26, -27, -44, -44, -11, -11, 20, -17, -19, -16, -46, -46, -1, 1, 23, 1, -10, -6, -46, -48,
+ 0, 1, 3, -9, -23, -23, -42, -42, -6, -6, 20, -17, -19, -16, -46, -46, -1, 1, 23, 1, -10, -6, -46,
+ -48, 0, 1, 3, -9, -23, -23, -42, -42, -6, -6, 7, -26, -17, -17, -48, -47, -10, -9, 17, -3, -12, -8,
+ -61, -59, -9, -9, 5, -14, -21, -33, -43, -43, -10, -10, 19, -24, -31, -28, -49, -50, -7, -5, 15, -5, -16,
+ -14, -48, -50, -6, -5, -6, -15, -29, -25, -48, -47, -12, -12, -6, -36, -45, -43, -61, -61, -25, -24, -6, -23,
+ -25, -24, -60, -60, -24, -24, -24, -20, -44, -36, -58, -58, -27, -27, 5, -34, -40, -37, -61, -61, -21, -20, -4,
+ -21, -30, -29, -56, -57, -20, -19, -17, -22, -37, -35, -53, -53, -24, -24, -12, -40, -49, -48, -65, -65, -30, -29,
+ -12, -29, -29, -29, -63, -63, -30, -29, -29, -23, -48, -39, -61, -61, -31, -31, -12, -40, -49, -48, -65, -65, -30,
+ -29, -12, -29, -29, -29, -63, -63, -30, -29, -29, -23, -48, -39, -61, -61, -31, -31, 20, -17, -19, -16, -46, -46,
+ -1, 1, 23, 1, -10, -6, -46, -48, 0, 1, 3, -9, -23, -23, -42, -42, -6, -6, 20, -17, -19, -16, -46,
+ -46, -1, 1, 23, 1, -10, -6, -46, -48, 0, 1, 3, -9, -23, -23, -42, -42, -6, -6, 40, -14, -14, -9,
+ -45, -44, 7, 10, 30, 9, -11, -3, -46, -48, 9, 10, 14, -6, -19, -20, -41, -40, 3, 3, 31, -10, -18,
+ -13, -49, -48, 7, 10, 32, 8, -13, -9, -39, -41, 9, 10, 5, -5, -15, -16, -35, -35, 3, 3, 17, -21,
+ -26, -23, -45, -45, -5, -3, 22, -2, -9, -6, -51, -52, -4, -3, -6, -9, -30, -26, -49, -49, -10, -10, 33,
+ -23, -31, -26, -54, -54, -6, -4, 12, -10, -26, -23, -49, -51, -5, -3, -4, -14, -28, -26, -47, -47, -10, -10,
+ 6, -39, -40, -38, -55, -56, -22, -19, 3, -15, -29, -28, -56, -58, -20, -19, -26, -28, -39, -36, -56, -55, -26,
+ -26, 8, -39, -39, -37, -55, -55, -20, -18, 5, -14, -28, -27, -56, -58, -19, -17, -25, -27, -38, -35, -55, -55,
+ -24, -24, 30, -15, -16, -12, -44, -44, 5, 7, 31, 8, -7, -2, -44, -46, 6, 7, 7, -6, -20, -19, -40,
+ -40, 0, 0, 29, -15, -17, -13, -44, -44, 4, 6, 30, 7, -7, -3, -45, -46, 5, 6, 6, -7, -20, -20,
+ -41, -40, -1, -1, 62, 12, 3, 9, -27, -27, 29, 33, 60, 27, 23, 21, -18, -22, 32, 34, 30, 25, -4,
+ -1, -24, -23, 21, 21, 14, -20, -24, -21, -52, -52, -3, -2, 21, 0, -13, -9, -50, -50, -3, -2, 1, -10,
+ -22, -23, -42, -42, -5, -5, 9, -26, -22, -21, -44, -44, -14, -10, 10, -9, -17, -15, -52, -55, -12, -10, -10,
+ -23, -31, -34, -49, -48, -21, -21, 2, -32, -32, -30, -57, -56, -17, -16, 5, -14, -24, -21, -60, -61, -17, -16,
+ -13, -22, -33, -35, -51, -51, -19, -19, 12, -30, -18, -26, -45, -45, -14, -12, 8, -10, -18, -16, -53, -54, -13,
+ -12, -9, -22, -28, -31, -45, -44, -19, -19, -3, -34, -31, -30, -53, -53, -22, -20, 0, -17, -25, -24, -60, -62,
+ -21, -20, -19, -29, -36, -39, -53, -52, -27, -27, 28, -15, -13, -14, -42, -42, 3, 5, 27, 6, -5, -2, -42,
+ -44, 4, 5, 9, -4, -18, -19, -38, -37, -1, -1, 16, -18, -23, -17, -48, -48, -3, -1, 21, -1, -12, -8,
+ -48, -50, -2, -1, 1, -11, -25, -25, -44, -44, -8, -8};
+
+const int8_t *const batch_matmul_3_s8_output_ref = batch_matmul_3_s8_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_input_tensor.h
new file mode 100644
index 00000000..3d548a48
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_input_tensor.h
@@ -0,0 +1,179 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_3_s8_rhs_input_tensor[3456] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0,
+ 0, 0, 0, 0, 16, -59, 119, 125, -96, -86, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 102, 117, 110, 99, 46, 102, 117, 110, 99, 0, 78, 100, 0, 0, 0, 0, 80, -14, -114, -41,
+ -86, -86, 0, 0, 1, -69, 72, -66, -1, -1, 0, 0, -48, -83, -38, -41, -86, -86, 0, 0,
+ 8, -82, -38, -41, -86, -86, 0, 0, 16, -82, -38, -41, -86, -86, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 96, 5, -67, -41, -86, -86, 0, 0, -111, 3, 0, 0, 0, 0, 0, 0,
+ 112, 93, -38, -41, -86, -86, 0, 0, 32, -65, -38, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 7, -67, -41, -86, -86, 0, 0,
+ 80, 8, -67, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, -67, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, 6, -67, -41, -86, -86, 0, 0, -112, 6, -67, -41, -86, -86, 0, 0, 64, 6, -67, -41,
+ -86, -86, 0, 0, 32, 7, -67, -41, -86, -86, 0, 0, 0, 8, -67, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, -102, 15, -43, 68, 43, -24, -128,
+ 0, 0, 0, 0, -41, -62, -50, -1, 0, 0, 0, 0, 0, 0, 0, 0, 26, 106, -64, 98,
+ -53, -54, 38, 70, 12, 27, 2, 116, 42, -29, -40, -88, 14, -127, 113, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, 80, 125, 16, 125, -96, -86, 0, 0, 72, -104, -38, -41, -86, -86, 0, 0,
+ 113, 117, 97, 110, 116, 105, 122, 101, 45, 97, 108, 108, 111, 119, 108, 105, 115, 116, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, -80, 6, -67, -41, -86, -86, 0, 0,
+ -128, -61, -38, -41, -86, -86, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, -96, 124, 16, 125, -96, -86, 0, 0, 88, -103, -38, -41, -86, -86, 0, 0,
+ 113, 117, 97, 110, 116, 105, 122, 101, 45, 115, 105, 103, 110, 101, 100, 0, 88, -79, -63, -45,
+ -86, -86, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, -80, 69, -93, -41, -86, -86, 0, 0,
+ -128, -61, -38, -41, -86, -86, 0, 0, -128, 1, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+ 0, 0, 0, 0, 112, 115, 16, 125, -96, -86, 0, 0, 40, -102, -38, -41, -86, -86, 0, 0,
+ 97, 99, 116, 105, 118, 97, 116, 105, 111, 110, 45, 110, 117, 109, 98, 101, 114, 45, 111, 102,
+ 45, 98, 105, 116, 115, 0, 0, 0, 0, 0, 0, 0, -32, -80, -93, -41, -86, -86, 0, 0,
+ -111, 0, 0, 0, 0, 0, 0, 0, -16, -78, -38, -41, -86, -86, 0, 0, 112, -57, -73, -41,
+ -86, -86, 0, 0, 100, 105, 115, 97, 98, 108, 101, 45, 112, 101, 114, 45, 99, 104, 97, 110,
+ 48, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 48, -71, 26, 125,
+ -96, -86, 0, 0, -8, -102, -38, -41, -86, -86, 0, 0, 112, 111, 115, 116, 45, 116, 114, 97,
+ 105, 110, 105, 110, 103, 45, 113, 117, 97, 110, 116, 105, 122, 101, 0, 0, 49, 0, 0, 0,
+ 0, 0, 0, 0, 80, 5, -67, -41, -86, -86, 0, 0, 64, 8, -67, -41, -86, -86, 0, 0,
+ 108, 101, 103, 97, 99, 121, 45, 102, 108, 111, 97, 116, 45, 115, 99, 97, 80, 2, 0, 0,
+ 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, -96, -65, 119, 125, -96, -86, 0, 0,
+ 24, -102, -38, -41, -86, -86, 0, 0, -24, -102, -38, -41, -86, -86, 0, 0, -72, -101, -38, -41,
+ -86, -86, 0, 0, -120, -100, -38, -41, -86, -86, 0, 0, 88, -99, -38, -41, -86, -86, 0, 0,
+ 40, -98, -38, -41, -86, -86, 0, 0, -8, -98, -38, -41, -86, -86, 0, 0, 88, -79, -63, -45,
+ -86, -86, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 112, 93, -38, -41, -86, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 100, 105, 115, 97, 98, 108, 101, 45, 115, 101, 116, 45,
+ 105, 110, 112, 117, 116, 45, 110, 111, 100, 101, 115, 45, 113, 117, 97, 110, 116, 105, 122, 97,
+ 116, 105, 111, 110, 45, 112, 97, 114, 97, 109, 115, 0, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 80, 5, -67, -41, -86, -86, 0, 0,
+ -64, -60, -38, -41, -86, -86, 0, 0, 105, 115, 45, 113, 100, 113, 45, 99, 111, 110, 118, 101,
+ 114, 115, 105, 111, 48, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 0, -72, 119, 125, -96, -86, 0, 0, 24, -71, -73, -41, -86, -86, 0, 0, 111, 112, 115, 45,
+ 98, 108, 111, 99, 107, 108, 105, 115, 116, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 16, -65, 119, 125, -96, -86, 0, 0, 40, -70, -73, -41,
+ -86, -86, 0, 0, 108, 111, 99, 115, 45, 98, 108, 111, 99, 107, 108, 105, 115, 116, 0, 0,
+ 116, 102, 46, 83, 101, 103, 109, 101, 110, 116, 77, 101, 97, 110, 0, 0, 48, 6, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 96, 99, 24, 125, -96, -86, 0, 0,
+ 35, 0, 0, 0, 2, 0, 0, 0, 96, -96, 52, 64, -1, -1, 0, 0, -92, -96, 52, 64,
+ -1, -1, 0, 0, -76, -96, 52, 64, -1, -1, 0, 0, 88, -80, 52, 64, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, -45, 85, 62,
+ -21, -82, 54, 24, 0, 0, 0, 0, 0, 0, 0, 0, -127, 4, 0, 0, 0, 0, 0, 0,
+ 112, -83, -39, -41, -86, -86, 0, 0, -16, -78, 65, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -112, -61, 101, -27,
+ -1, -1, 0, 0, 24, 48, -49, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 16, 4, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+ 80, 110, -19, 125, -96, -86, 0, 0, 100, 38, 20, -110, -1, -1, 0, 0, 104, 38, 20, -110,
+ -1, -1, 0, 0, 108, 38, 20, -110, -1, -1, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, -112, -9, 122, 125, -96, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 116, 102, 95, 101, 120, 101, 99, 117, 116, 111, 114, 46, 76, 111, 111, 112,
+ 67, 111, 110, 100, 0, -86, 0, 0, -52, 66, -118, -112, -1, -1, 0, 0, 48, 11, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -112, -7, 122, 125, -96, -86, 0, 0,
+ 12, 0, 0, 0, 1, 0, 0, 0, 40, 113, 43, 64, -1, -1, 0, 0, 48, 113, 43, 64,
+ -1, -1, 0, 0, 112, 118, 43, 64, -1, -1, 0, 0, 88, 124, 43, 64, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 55, 85, 62,
+ -21, -82, 54, 24, -32, 0, 0, 0, 0, 0, 0, 0, 65, 50, 0, 0, 0, 0, 0, 0,
+ 32, 41, -121, -41, -86, -86, 0, 0, 80, 115, -71, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 15, -67, -41, -86, -86, 0, 0,
+ 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 0, 0, 0, 0, -64, 30, -36, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0,
+ 96, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, -64, -109, -47, -41,
+ -86, -86, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 116, 102, 46, 83, 101, 103, 109, 101,
+ -127, 0, 0, 0, 0, 0, 0, 0, 32, 69, -75, -41, -86, -86, 0, 0, 0, -56, -78, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, -92, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 48, 117, 16, 125, -96, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 0, 0, 0, 0, 0, 32, -92, -41, -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 80, -68, 31, 125,
+ -96, -86, 0, 0, -16, 14, -67, -41, -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0,
+ 48, 15, -67, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0, 80, 15, -67, -41,
+ -86, -86, 0, 0, -24, -77, -63, -45, -86, -86, 0, 0, 16, 15, -67, -41, -86, -86, 0, 0,
+ -48, 23, -59, -41, -86, -86, 0, 0, -128, -97, -125, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 96, -88, 106, -41, -86, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 10, 0, 0,
+ 0, 0, 0, 0, -16, -13, -52, -41, -86, -86, 0, 0, -48, 80, -55, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 100, 100, 105,
+ 110, 103, 66, 97, 116, 99, 104, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0, 17, 102, -19, 125, -96, -86, 0, 0, 112, 14, -67, -41,
+ -86, -86, 0, 0, 116, 102, 46, 69, 110, 113, 117, 101, 117, 101, 84, 80, 85, 69, 109, 98,
+ 101, 100, 100, 105, 110, 103, 66, 97, 116, 99, 104, 0, 109, 86, 50, 0, -128, 0, 0, 0,
+ 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, -79, 106, 16, 125, -96, -86, 0, 0,
+ 104, -36, -93, -41, -86, -86, 0, 0, 16, -64, 17, -102, -1, -1, 0, 0, -64, -107, -78, -41,
+ -86, -86, 0, 0, 112, 17, -67, -41, -86, -86, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0,
+ 80, -79, -63, -45, -86, -86, 0, 0, -16, 16, -67, -41, -86, -86, 0, 0, 88, -79, -63, -45,
+ -86, -86, 0, 0, 16, 17, -67, -41, -86, -86, 0, 0, -48, -77, -63, -45, -86, -86, 0, 0,
+ 48, 17, -67, -41, -86, -86, 0, 0, -40, -109, -47, -41, -86, -86, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0,
+ 32, 69, -75, -41, -86, -86, 0, 0, 48, 82, -55, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, -11, -52, -41, -86, -86, 0, 0,
+ 112, -69, 72, -66, -1, -1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 49, 107, 16, 125, -96, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, -11, -52, -41,
+ -86, -86, 0, 0, 112, -69, 72, -66, -1, -1, 0, 0, -128, 1, 0, 0, 0, 0, 0, 0,
+ -128, 0, 0, 0, 0, 0, 0, 0, 97, 42, 100, 125, -96, -86, 0, 0, -16, 16, -67, -41,
+ -86, -86, 0, 0, 88, -79, -63, -45, -86, -86, 0, 0, 48, 17, -67, -41, -86, -86, 0, 0,
+ -48, -77, -63, -45, -86, -86, 0, 0, 80, 17, -67, -41, -86, -86, 0, 0, -24, -77, -63, -45,
+ -86, -86, 0, 0, 16, 17, -67, -41, -86, -86, 0, 0, -79, -8, 124, 125, -96, -86, 0, 0,
+ 16, -17, -68, -41, -86, -86, 0, 0, 72, -40, 17, -102, -1, -1, 0, 0, 64, -85, -93, -41,
+ -86, -86, 0, 0, -32, 17, -67, -41, -86, -86, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
+ 80, -79, -63, -45, -86, -86, 0, 0, 17, 8, 0, 0, 0, 0, 0, 0, 48, 90, -78, -41,
+ -86, -86, 0, 0, -64, 33, -49, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 101, 100, 100, 105, 110, 103, 73, 110, 116, 101, 103, 101,
+ 114, 66, 97, 116, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+ 1, 9, 97, 125, -96, -86, 0, 0, 112, 16, -67, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_transposed_tensor.h
new file mode 100644
index 00000000..f2988acc
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/rhs_transposed_tensor.h
@@ -0,0 +1,188 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_3_s8_rhs_transposed_tensor[3456] = {
+ 0, 0, 64, 9, 80, 8, 96, 32, 80, -128, -32, 32, 2, -108, 26, 0, 0, 0, 2,
+ 0, -14, -82, 5, -65, 7, 7, 6, 7, 0, -102, 106, 0, 0, 0, 0, 0, -114, -38,
+ -67, -38, -67, -67, -67, -67, 0, 15, -64, 0, 0, 0, 0, 0, -41, -41, -41, -41, -41,
+ -41, -41, -41, 0, -43, 98, 0, 0, 0, 0, 0, -86, -86, -86, -86, -86, -86, -86, -86,
+ 0, 68, -53, 0, 0, 0, 0, 0, -86, -86, -86, -86, -86, -86, -86, -86, 0, 43, -54,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 38, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 70, 0, 0, 0, 96, 102, 1,
+ 16, -111, 0, 80, 0, -112, 0, 0, 0, 12, -32, 0, 0, 0, 117, -69, -82, 3, 0,
+ 8, 0, 6, 8, 0, 0, 27, 0, 0, 0, 0, 110, 72, -38, 0, 0, -67, 0, -67,
+ -67, 0, 0, 2, 0, 0, 0, 0, 99, -66, -41, 0, 0, -41, 0, -41, -41, 0, 0,
+ 116, 0, 16, 0, 0, 46, -1, -86, 0, 0, -86, 0, -86, -86, 0, -41, 42, 0, 0,
+ 0, 0, 102, -1, -86, 0, 0, -86, 0, -86, -86, 0, -62, -29, 0, 0, 0, 0, 117,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, -40, 0, 0, 0, 0, 110, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -1, -88, 0, 0, 0, 16, 99, -48, 1, 112, 0, 0, 0,
+ 64, 0, 0, 0, 14, 48, 0, 0, -59, 0, -83, 0, 93, 0, 0, 0, 6, 0, 0,
+ 0, -127, 0, 0, 0, 119, 78, -38, 0, -38, 0, 0, 0, -67, 0, 0, 0, 113, 0,
+ 0, 0, 125, 100, -41, 0, -41, 0, 0, 0, -41, 0, 0, 0, 67, 0, 0, 0, -96,
+ 0, -86, 0, -86, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, 0,
+ -86, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 45, -80, 48, 113, 33, -128, 40, 114, -111, 100, 48, 112, 49, 108,
+ 80, 125, 97, 6, 0, 117, 0, 1, -102, 45, 0, 105, 0, 111, 0, 101, 0, 16, 108,
+ -67, 0, 97, 0, 0, -38, 111, 0, 115, 0, 115, 0, 103, 0, 125, 108, -41, 0, 110,
+ 0, 0, -41, 102, 0, 97, 0, 116, 0, 97, 0, -96, 111, -86, 0, 116, 0, 0, -86,
+ 45, 0, 98, 0, 45, 0, 99, 0, -86, 119, -86, 0, 105, 0, 0, -86, 98, 0, 108,
+ 0, 116, 0, 121, 0, 0, 108, 0, 0, 122, 0, 0, 0, 105, 0, 101, 0, 114, 0,
+ 45, 0, 0, 105, 0, 0, 101, 0, 0, 0, 116, 0, 45, 0, 97, 0, 102, 0, 72,
+ 115, -128, -96, 45, -80, 64, 97, 115, -16, 112, 48, 105, 80, 108, -96, -104, 116, -61, 124,
+ 115, 69, 0, 99, 0, -78, 101, -71, 110, 5, 111, -65, -38, 0, -38, 16, 105, -93, 0,
+ 116, 0, -38, 114, 26, 105, -67, 97, 119, -41, 0, -41, 125, 103, -41, 0, 105, 0, -41,
+ 45, 125, 110, -41, 116, 125, -86, 0, -86, -96, 110, -86, 0, 118, 0, -86, 99, -96, 103,
+ -86, 45, -96, -86, 0, -86, -86, 101, -86, 0, 97, 0, -86, 104, -86, 45, -86, 115, -86,
+ 0, 0, 0, 0, 100, 0, 0, 116, 0, 0, 97, 0, 113, 0, 99, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 0, 0, 110, 0, 117, 0, 97, 0, 113, 33, 48, 88, 88, -128,
+ 112, 111, -32, 112, 48, -8, 97, 64, 80, 24, 117, 0, 1, -103, -79, -61, 115, 110, -80,
+ -57, 0, -102, 110, 8, 2, -102, 97, 0, 0, -38, -63, -38, 16, 45, -93, -73, 0, -38,
+ 116, -67, 0, -38, 110, 0, 0, -41, -45, -41, 125, 110, -41, -41, 0, -41, 105, -41, 0,
+ -41, 116, 0, 0, -86, -86, -86, -96, 117, -86, -86, 0, -86, 122, -86, 0, -86, 105, 0,
+ 0, -86, -86, -86, -86, 109, -86, -86, 0, -86, 101, -86, 0, -86, 122, 0, 0, 0, 0,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 101,
+ 0, 0, 0, 0, 0, 0, 0, 0, -24, 88, 88, 112, 116, 97, 80, 111, 0, 107, 16,
+ 99, 48, 35, -76, 35, -102, -99, -79, -69, 45, 109, 5, 110, -72, 108, -65, 107, 6, 0,
+ -96, 0, -38, -38, -63, 72, 110, 115, -67, 118, 119, 105, 119, 108, 0, 0, 52, 0, -41,
+ -41, -45, -66, 111, 0, -41, 101, 125, 115, 125, 105, 0, 0, 64, 0, -86, -86, -86, -1,
+ 100, -86, -86, 114, -96, 116, -96, 115, 0, 2, -1, 0, -86, -86, -86, -1, 101, -86, -86,
+ 115, -86, 0, -86, 116, 0, 0, -1, 0, 0, 0, 0, 0, 115, 0, 0, 105, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 111, 0, 0, 0, 0, 0,
+ 0, 0, 0, -72, 40, -15, 100, 113, 0, -64, 48, 24, 96, 40, 116, -128, 96, 88, 0,
+ -101, -98, 0, 105, 117, 0, -60, 0, -71, 0, -70, 102, 0, -96, -80, 0, -38, -38, 0,
+ 115, 97, 0, -38, 0, -73, 0, -73, 46, 0, 52, 52, 0, -41, -41, 0, 97, 110, 0,
+ -41, 0, -41, 0, -41, 83, 0, 64, 64, 0, -86, -86, 0, 98, 116, 0, -86, 0, -86,
+ 0, -86, 101, 0, -1, -1, 0, -86, -86, 0, 108, 105, 0, -86, 0, -86, 0, -86, 103,
+ 0, -1, -1, 0, 0, 0, 0, 101, 122, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0,
+ 0, 0, 0, 0, 45, 97, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, -120, -8,
+ 112, 115, 116, -95, 105, 48, 111, 64, 108, 110, 96, -92, 0, 2, -100, -98, 93, 101, 105,
+ 0, 115, 0, 112, 0, 111, 116, 99, -96, 0, 0, -38, -38, -38, 116, 111, 0, 45, 0,
+ 115, 0, 99, 77, 24, 52, 0, 0, -41, -41, -41, 45, 110, 0, 113, 0, 45, 0, 115,
+ 101, 125, 64, 0, 0, -86, -86, -86, 105, 45, 0, 100, 0, 98, 0, 45, 97, -96, -1,
+ 0, 0, -86, -86, -86, 110, 112, 0, 113, 0, 108, 0, 98, 110, -86, -1, 0, 0, 0,
+ 0, 0, 112, 97, 0, 45, 0, 111, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 117,
+ 114, 0, 99, 0, 99, 0, 111, 0, 0, 0, 0, 0, 0, -89, 112, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, -45, -83, 0, 0, -16, 0, -16, 0, -16,
+ 0, -16, 0, 48, 0, -16, 0, 85, -39, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -49, 0, -1, 0, 62, -41, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -41, 0, -1,
+ 0, -21, -86, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -86, 0, -1, 0, -82, -86,
+ 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -86, 0, -1, 0, 54, 0, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, 24, 0, 0, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, 0, 0, -1, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -78, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16,
+ 0, 0, 0, 65, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0,
+ -41, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, -86, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, -86, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0,
+ 4, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, -61, -16, 0, -16, 0, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 101, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, -27, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, -1, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1,
+ -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, -16, 0, -16,
+ 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16,
+ 0, -16, 0, -16, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 104, 64, 0, -16,
+ 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, 0, 38, 0, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, 0, 20, 0, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, -110, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0,
+ -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 108, -112, -16, 0, -16, 0, -16, 0, -16,
+ 0, -16, 0, -16, 0, -16, 110, 38, -9, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, -19, 20, 122, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,
+ 125, -110, 125, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, -96, -1, -96,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, -86, -1, -86, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 16, 100, 64, 0, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16, 0, -16,
+ 4, 38, 4, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 20, 0,
+ 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -110, 0, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, 0, 0, 116, -52, -112, 48, 0, 1, 0, 65, 0, 4, -64, 48, 116, 0,
+ 0, 32, 102, 66, -7, 113, 0, 0, 0, 50, 0, 0, 30, 0, 102, -56, 32, 0, 95,
+ -118, 122, 43, 0, 0, 0, 0, 0, 0, -36, 0, 46, -78, -92, 0, 101, -112, 125, 64,
+ 0, 0, 0, 0, 0, 0, -41, 0, 83, -41, -41, 0, 120, -1, -96, -1, 0, 0, 0,
+ 0, 0, 7, -86, 0, 101, -86, -86, 0, 101, -1, -86, -1, 0, 0, 0, 0, 0, 0,
+ -86, 0, 103, -86, -86, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109,
+ 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0,
+ 116, 48, 12, 112, 12, 0, -115, 32, 0, 0, 112, -64, -127, 0, 112, 48, 111, 11, 0,
+ 118, 0, 0, 55, 41, 0, 0, -69, -109, 0, 0, -69, 117, 114, 0, 0, 43, 0, 0,
+ 85, -121, 0, 0, 72, -47, 0, 0, 72, 16, 46, 0, 0, 64, 0, 0, 62, -41, 0,
+ 0, -66, -41, 0, 0, -66, 125, 76, 0, 1, -1, 0, 0, -21, -86, 0, 0, -1, -86,
+ 0, 0, -1, -96, 111, 0, 0, -1, 0, 0, -82, -86, 0, 0, -1, -86, 0, 0, -1,
+ -86, 111, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0,
+ 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, -128, 40, 88, 0,
+ 0, -32, 80, 112, 33, 96, 3, 32, 97, 32, 112, 111, 0, 113, 124, 0, 0, 0, 115,
+ 15, 0, 0, 0, 69, 0, 0, -69, 110, 0, 43, 43, 0, 0, 0, -71, -67, 0, 0,
+ 0, -75, 0, 0, 72, 100, 0, 64, 64, 0, 0, 0, -41, -41, 0, 0, 0, -41, 0,
+ 0, -66, 0, 0, -1, -1, 0, 0, 0, -86, -86, 0, 0, 0, -86, 0, 0, -1, -86,
+ 0, -1, -1, 0, 0, 0, -86, -86, 0, 0, 0, -86, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 80, 48, -24, -128, 96, 17, 0, 116,
+ 17, 117, -128, 104, 112, -16, 0, -69, -68, 15, -77, -97, -88, 10, 0, 99, 102, 101, 0,
+ -36, 17, 16, 0, 72, 31, -67, -63, -125, 106, 0, 0, 104, -19, 84, 0, -93, -67, -67,
+ 0, -66, 125, -41, -45, -41, -41, 0, 0, 0, 125, 80, 0, -41, -41, -41, 0, -1, -96,
+ -86, -86, -86, -86, 0, 0, 0, -96, 85, 0, -86, -86, -86, 0, -1, -86, -86, -86, -86,
+ -86, 0, 0, 0, -86, 69, 0, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
+ 0, 0, 0, 0, 33, 0, -16, -48, 16, 0, 112, -16, 0, 64, 112, 101, -128, 16, 4,
+ 88, 0, 1, 14, -77, 15, 0, -69, -13, 0, 0, 14, 100, 0, -64, 0, -79, 0, 0,
+ -67, -63, -67, 0, 72, -52, 0, 0, -67, 100, 0, 17, 0, -63, 0, 0, -41, -45, -41,
+ 0, -66, -41, 0, 0, -41, 105, 0, -102, 0, -45, 0, 0, -86, -86, -86, 0, -1, -86,
+ 0, 0, -86, 110, 0, -1, 7, -86, 0, 0, -86, -86, -86, 0, -1, -86, 0, 0, -86,
+ 103, 0, -1, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0,
+ -128, 88, 80, -48, 65, 0, -48, 101, 64, 116, 116, -79, -64, 80, 16, 32, 0, -79, 15,
+ 23, 0, 0, 80, 100, 0, 102, 99, 106, -107, -79, 17, -92, 0, -63, -67, -59, 0, 0,
+ -55, 100, 0, 46, 104, 16, -78, -63, -67, -41, 0, -45, -41, -41, 0, 0, -41, 105, 0,
+ 69, 0, 125, -41, -45, -41, -86, 0, -86, -86, -86, 0, 0, -86, 110, 0, 110, 109, -96,
+ -86, -86, -86, -86, 0, -86, -86, -86, 0, 0, -86, 103, 0, 113, 86, -86, -86, -86, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 117, 50, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 97, 0, 101, 0, 0, 0, 0, 0, -48, 2, 32, 97, 32, 112,
+ 0, -128, 88, 80, -79, 64, 80, -64, 101, 64, -77, 0, 69, 0, 0, -69, -11, 0, -79,
+ 17, -8, -85, -79, 33, 100, 0, -63, 0, -75, 0, 0, 72, -52, 0, -63, -67, 124, -93,
+ -63, -49, 100, 0, -45, 0, -41, 0, 0, -66, -41, 0, -45, -41, 125, -41, -45, -41, 105,
+ 0, -86, 0, -86, 0, 0, -1, -86, 0, -86, -86, -96, -86, -86, -86, 110, 0, -86, 0,
+ -86, 0, 0, -1, -86, 0, -86, -86, -86, -86, -86, -86, 103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 110, 0, 48, 0, 48, 0, 32, 0, 112, 97, 48, -24, 16,
+ -32, 17, 0, 116, 1, 17, 0, 82, -11, 0, 0, -69, 42, 17, -77, -17, 17, 8, 0,
+ 101, 9, -67, 0, -55, -52, 0, 0, 72, 100, -67, -63, -68, -67, 0, 0, 103, 97, -41,
+ 0, -41, -41, 0, 0, -66, 125, -41, -45, -41, -41, 0, 0, 101, 125, -86, 0, -86, -86,
+ 0, 0, -1, -96, -86, -86, -86, -86, 0, 0, 114, -96, -86, 0, -86, -86, 0, 0, -1,
+ -86, -86, -86, -86, -86, 0, 0, 66, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, -40, -127, 0, 112, 49, 33, -128, -16, -48, 16, 72, 3, 48, 0, 64, 112,
+ -109, 0, 0, -69, 107, 0, 1, 16, -77, 17, -40, 0, 90, 0, 0, 16, -47, 0, 0,
+ 72, 16, 0, 0, -67, -63, -67, 17, 0, -78, 0, 0, -67, -41, 0, 0, -66, 125, 0,
+ 0, -41, -45, -41, -102, 0, -41, 0, 0, -41, -86, 0, 0, -1, -96, 0, 0, -86, -86,
+ -86, -1, 3, -86, 0, 0, -86, -86, 0, 0, -1, -86, 0, 0, -86, -86, -86, -1, 0,
+ -86, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_3_s8/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/config_data.h
new file mode 100644
index 00000000..51566822
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_4_S16_LHS_BATCH 3
+#define BATCH_MATMUL_4_S16_LHS_HEIGHT 1
+#define BATCH_MATMUL_4_S16_LHS_ROWS 16
+#define BATCH_MATMUL_4_S16_LHS_COLS 32
+#define BATCH_MATMUL_4_S16_RHS_BATCH 1
+#define BATCH_MATMUL_4_S16_RHS_HEIGHT 3
+#define BATCH_MATMUL_4_S16_RHS_ROWS 24
+#define BATCH_MATMUL_4_S16_RHS_COLS 16
+#define BATCH_MATMUL_4_S16_ADJ_X 1
+#define BATCH_MATMUL_4_S16_ADJ_Y 1
+#define BATCH_MATMUL_4_S16_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_4_S16_DST_SIZE 6912
+#define BATCH_MATMUL_4_S16_OUTPUT_BATCH 3
+#define BATCH_MATMUL_4_S16_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_4_S16_OUTPUT_ROWS 32
+#define BATCH_MATMUL_4_S16_OUTPUT_COLS 24
+#define BATCH_MATMUL_4_S16_LHS_OFFSET 0
+#define BATCH_MATMUL_4_S16_RHS_OFFSET 0
+#define BATCH_MATMUL_4_S16_OUTPUT_OFFSET 0
+#define BATCH_MATMUL_4_S16_ACTIVATION_MIN -32768
+#define BATCH_MATMUL_4_S16_ACTIVATION_MAX 32767
+#define BATCH_MATMUL_4_S16_OUTPUT_MULTIPLIER 1990771962
+#define BATCH_MATMUL_4_S16_OUTPUT_SHIFT -18
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_input_tensor.h
new file mode 100644
index 00000000..b2dfbd44
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_input_tensor.h
@@ -0,0 +1,116 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_4_s16_lhs_input_tensor[1536] = {
+ 0, 0, 0, 0, 49, 0, 0, 0, -1648, -9527, -21846, 0, -17552, -18877,
+ -1, 0, 14352, -26295, -1, 0, 32, 0, 0, 0, 144, 0, 0, 0,
+ 80, 0, 0, 0, -20960, 28779, -21856, 0, 3920, -9526, -21846, 0, 4672, -9526,
+ -21846, 0, 416, -9530, -21846, 0, 464, -9530, -21846, 0, 14352, -26295, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 80, 0,
+ 0, 0, -24320, 28775, -21856, 0, 20, 0, 0, 0, 20, 0, 0, 0,
+ 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, 674, -9530,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, 0,
+ -1648, -9527, -21846, 0, 1840, -9526, -21846, 0, 28265, 30064, 24436, 49, 0, 0,
+ 0, 0, 688, -9530, -21846, 0, 225, 0, 0, 0, 11088, -9530, -21846, 0,
+ 1232, -9530, -21846, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, -9530, -21846, 0,
+ 14352, -26295, -1, 0, 14352, -26295, -1, 0, 0, 0, 0, 0, 0, 0,
+ 24320, 50, 0, 0, 0, 0, 176, 0, 0, 0, 48, 0, 0, 0,
+ -22080, 28779, -21856, 0, 25454, 24421, 28525, 25956, 24428, 24940, 25977, 24434, 24931, 27756,
+ 26207, 24430, 576, 0, 0, 0, 112, 0, 0, 0, 22224, 28772, -21856, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1090, -9530, -21846, 0, 14352, -26295, -1, 0, 14352, -26295, -1, 0,
+ 14352, -26295, -1, 0, 14352, -26295, -1, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 24609, 0, 0, 0, -21488, -9448, -21846, 0,
+ -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19568, 28779,
+ -21856, 0, 7, 0, 0, 0, 28265, 30064, 24436, 49, 0, 0, 0, 0,
+ 80, 0, 0, 0, 112, 0, 0, 0, -20544, 28779, -21856, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1298, -9530, -21846, 0, 14352, -26295, -1, 0, 14352, -26295, -1, 0, 14352, -26295,
+ -1, 0, 14352, -26295, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 24417, 0, 0, 0, -21488, -9448, -21846, 0, -17552, -18877,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 48, 0, 0, 0, -22448, 28779, -21856, 0, 7, 0, 0, 0, 28265, 30064,
+ 24436, 50, 0, 0, 0, 0, 96, 0, 0, 0, 112, 0, 0, 0,
+ -22528, 28779, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1458, -9530, -21846, 0, 14352, -26295, -1, 0,
+ 14352, -26295, -1, 0, 14352, -26295, -1, 0, 14352, -26295, -1, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24209, 0, 0, 0,
+ -21488, -9448, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 5552, -9530, -21846, 0,
+ 3424, -9530, -21846, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0,
+ 0, 0, -15056, -26312, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, -22724, 30347, 4030, 0, 16, 0,
+ 0, 0, 352, -9460, -21846, 0, 0, 0, 0, 0, 1762, -9530, -21846, 0,
+ 1810, -9530, -21846, 0, 14352, -26295, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 224, 0, 0, 0, 32, 0, 0, 0, -24320, 28779, -21856, 0,
+ 4912, -9530, -21846, 0, 304, 0, 0, 0, 48, 0, 0, 0, -23984, 28779,
+ -21856, 0, 15, 0, 0, 0, 24912, 29810, 29801, 28521, 25966, 17252, 27745, 108,
+ 0, 0, 0, 0, 49, 0, 0, 0, 4528, -9530, -21846, 0, -17552, -18877,
+ -1, 0, 24912, 29810, 29801, 28521, 25966, 17252, 27745, 108, 400, 0, 0, 0,
+ 48, 0, 0, 0, 19200, 28772, -21856, 0, 7, 0, 0, 0, 28265, 30064,
+ 24436, 49, 0, 0, 0, 0, 12208, -9417, -21846, 0, 129, 0, 0, 0,
+ 3840, -9530, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0, 48, 0,
+ 0, 0, -21680, 28779, -21856, 0, 7, 0, 0, 0, 28265, 30064, 24436, 50,
+ 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 3840, -9530,
+ -21846, 0, -17552, -18877, -1, 0, 1936, -9530, -21846, 0, 0, 0, 0, 0,
+ 576, 0, 0, 0, 80, 0, 0, 0, -17328, 28779, -21856, 0, 12, 0,
+ 0, 0, 28515, 26222, 26473, 28767, 28530, 28532, 0, 0, -1072, -26312, -1, 0,
+ 0, 0, 0, 0, 3554, -9530, -21846, 0, 0, 0, 0, 0, 656, 0,
+ 0, 0, 80, 0, 0, 0, 21680, 28772, -21856, 0, 3, 0, 0, 0,
+ 26964, 110, 0, 0, 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0,
+ 0, 0, 2192, -9530, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8401, 0, 0, 0, 11088, -9530, -21846, 0, -17552, -18877, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,
+ 1912, -9530, -21846, 0, 0, 0, -21856, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 208, 0, 0, 0, 80, 0, 0, 0, -21632, 28779, -21856, 0,
+ 4, 0, 0, 0, 28500, 29813, 0, 0, 0, 0, 0, 0, -1072, -26312,
+ -1, 0, 0, 0, 0, 0, 2480, -9530, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1297, 0, 0, 0, 4528, -9530, -21846, 0, -17552, -18877,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 2, 0, 2696, -9530, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 32, 0, 0, 0,
+ -21760, 28779, -21856, 0, 1, 0, -1, 0, 240, 0, 0, 0, 48, 0,
+ 0, 0, -24144, 28779, -21856, 0, 0, 0, 0, 0, 14352, -26295, -1, 0,
+ 3, 0, 0, 0, 288, 0, 0, 0, 80, 0, 0, 0, -23248, 28779,
+ -21856, 0, 23, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
+ -1072, -26312, -1, 0, 0, 0, 0, 0, 2880, -9530, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 929, 0, 0, 0, 4528, -9530, -21846, 0,
+ -17552, -18877, -1, 0, 25959, 24434, 25705, 115, 209, 0, 0, 0, 2464, -9530,
+ -21846, 0, 3152, -9530, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0,
+ 80, 0, 0, 0, -24064, 28779, -21856, 0, 14, 0, 0, 0, 28511, 29813,
+ 30064, 24436, 26739, 28769, 29541, 0, -1072, -26312, -1, 0, 0, 0, 0, 0,
+ 3168, -9530, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, 0,
+ 0, 0, 28400, -9471, -21846, 0, 4592, -9526, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -21846, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 208, 0, 0, 0, 64, 0, 0, 0, -16816, 28775, -21856, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 2464, -9530,
+ -21846, 0, 4224, -9530, -21846, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 5552, -9530, -21846, 0, 1488, -9530, -21846, 0, 64, 0, 0, 0, 48, 0,
+ 0, 0, -22800, 28779, -21856, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_transposed_tensor.h
new file mode 100644
index 00000000..f9b64dde
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/lhs_transposed_tensor.h
@@ -0,0 +1,116 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_4_s16_lhs_transposed_tensor[1536] = {
+ 0, -20960, 224, 674, 688, 1, 370, -22080, 0, 0, -19568, 0, 0, 48,
+ -22528, 14352, 0, 28779, 0, -9530, -9530, 0, -9530, 28779, 0, 0, 28779, 0,
+ 0, 0, 28779, -26295, 0, -21856, 0, -21846, -21846, 1, -21846, -21856, 0, 0,
+ -21856, 0, 0, 0, -21856, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 49, 3920, 80, 0, 225, 0,
+ 14352, 25454, 0, 1, 7, 0, 1, 48, 0, 14352, 0, -9526, 0, 0,
+ 0, 0, -26295, 24421, 0, 0, 0, 0, 0, 0, 0, -26295, 0, -21846,
+ 0, 0, 0, 0, -1, 28525, 0, 0, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 25956, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1648, 4672, -24320, 0, 11088, 0, 14352, 24428, 0, 0, 28265, 0,
+ 0, -22448, 0, 0, -9527, -9526, 28775, 0, -9530, 0, -26295, 24940, 0, 0,
+ 30064, 0, 0, 28779, 0, 0, -21846, -21846, -21856, 0, -21846, 0, -1, 25977,
+ 0, 0, 24436, 0, 0, -21856, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 24434, 0, 0, 49, 0, 0, 0, 0, 0, -17552, 416, 20, 273,
+ 1232, 0, 0, 24931, 1090, 24609, 0, 1298, 24417, 7, 0, 1, -18877, -9530,
+ 0, 0, -9530, 0, 0, 27756, -9530, 0, 0, -9530, 0, 0, 0, 0,
+ -1, -21846, 0, 0, -21846, 0, 0, 26207, -21846, 0, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24430, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14352, 464, 20, -1648, 0, 0, 0, 576, 14352, -21488,
+ 80, 14352, -21488, 28265, 0, 0, -26295, -9530, 0, -9527, 0, 0, 0, 0,
+ -26295, -9448, 0, -26295, -9448, 30064, 0, 0, -1, -21846, 0, -21846, 0, 0,
+ 24320, 0, -1, -21846, 0, -1, -21846, 24436, 0, 0, 0, 0, 0, 0,
+ 0, 0, 50, 0, 0, 0, 0, 0, 0, 50, 0, 0, 32, 14352,
+ 0, 1840, 2, 0, 0, 112, 14352, -17552, 112, 14352, -17552, 0, 1458, 24209,
+ 0, -26295, 0, -9526, 0, 0, 0, 0, -26295, -18877, 0, -26295, -18877, 0,
+ -9530, 0, 0, -1, 0, -21846, 3, 0, 0, 0, -1, -1, 0, -1,
+ -1, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 144, 0, -1072, 28265, 0, 0, 176, 22224,
+ 14352, 0, -20544, 14352, 0, 96, 14352, -21488, 0, 0, -26312, 30064, 0, 0,
+ 0, 28772, -26295, 0, 28779, -26295, 0, 0, -26295, -9448, 0, 0, -1, 24436,
+ 0, 0, 0, -21856, -1, 0, -21856, -1, 0, 0, -1, -21846, 0, 0,
+ 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 80, 0, 0, 0, 0, 0, 48, 0, 14352, 0, 0, 14352, 0, 112,
+ 14352, -17552, 0, 0, 0, 0, 0, 0, 0, 0, -26295, 0, 0, -26295,
+ 0, 0, -26295, -18877, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
+ 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24320, 0,
+ 19200, 32, 3840, 28515, 21680, 0, 0, 0, 0, -1072, 0, 0, 0, 0,
+ 28779, 0, 28772, 0, -9530, 26222, 28772, 0, 0, 0, 0, -26312, 0, 0,
+ 0, 0, -21856, 0, -21856, 0, -21846, 26473, -21856, 0, 0, -21856, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 28767, 0, 0, 0, 0,
+ 0, 0, 0, -15056, 0, 1762, 4912, 49, 7, 48, -17552, 28530, 3, 8401,
+ 0, 0, 0, 0, 0, -26312, 0, -9530, -9530, 0, 0, 0, -18877, 28532,
+ 0, 0, 0, 0, 0, 0, 0, -1, 0, -21846, -21846, 0, 0, 0,
+ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1810,
+ 304, 4528, 28265, -21680, 1936, -1072, 26964, 11088, 0, 0, 208, 2480, 0, 0,
+ 0, -9530, 0, -9530, 30064, 28779, -9530, -26312, 110, -9530, 0, 0, 0, -9530,
+ 0, 0, 0, -21846, 0, -21846, 24436, -21856, -21846, -1, 0, -21846, 0, 0,
+ 0, -21846, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 257, 0, 0, 14352, 48, -17552, 0, 7, 0, 0,
+ 0, -17552, 0, 0, 80, 0, 0, 0, 0, -26295, 0, -18877, 0, 0,
+ 0, 0, 0, -18877, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1,
+ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5552, 0,
+ 16, 0, -23984, 24912, 12208, 28265, 576, 3554, -1072, 0, 0, 0, -21632, 0,
+ -9530, 0, 0, 0, 28779, 29810, -9417, 30064, 0, -9530, -26312, 0, 0, 0,
+ 28779, 0, -21846, 0, 0, 0, -21856, 29801, -21846, 24436, 0, -21846, -1, 0,
+ 0, 0, -21856, 0, 0, 0, 0, 0, 0, 28521, 0, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3424, 0, -22724, 0, 15, 25966, 129, 0,
+ 80, 0, 0, 0, 0, 0, 4, 1297, -9530, 0, 30347, 0, 0, 17252,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, 0, 4030, 0,
+ 0, 27745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 224, 24912, 400, 3840, 0, -17328, 656, 2192, 0, 2, 0,
+ 28500, 4528, 0, 0, 0, 0, 29810, 0, -9530, 0, 28779, 0, -9530, 0,
+ 0, 0, 29813, -9530, 0, 0, 0, 0, 29801, 0, -21846, 0, -21856, 0,
+ -21846, 0, 2, 0, 0, -21846, 0, 0, 0, 0, 28521, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 352, 32, 25966, 48,
+ -17552, 49, 12, 80, 0, 0, 1912, 0, 0, -17552, 0, 0, -9460, 0,
+ 17252, 0, -18877, 0, 0, 0, 0, 0, -9530, 0, 0, -18877, 3, 0,
+ -21846, 0, 27745, 0, -1, 0, 0, 0, 0, 0, -21846, 0, 0, -1,
+ 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -21760, 288, 2880, 2464, 0, 0, 240, 3168, 0,
+ 0, 0, 0, 0, 0, 0, 0, 28779, 0, -9530, -9530, 0, 0, 0,
+ -9530, 0, 0, 0, 0, 0, 0, 0, 0, -21856, 0, -21846, -21846, 0,
+ 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 80, 0, 3152, 0, 0, 80, 0, 0, 0, 0, 4, 33, 0, 0,
+ 0, 0, 0, 0, -9530, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 240, -23248, 0, 0, 0, 0, -24064,
+ 0, 0, 0, 0, 0, 5552, 0, 0, 0, 0, 28779, 0, 0, 0,
+ 0, 28779, 0, 0, 0, 0, 0, -9530, 0, 2, 0, 0, -21856, 0,
+ 0, 0, 0, -21856, 0, 0, -21846, 0, 0, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2696,
+ 0, 48, 23, 929, 0, 0, 0, 14, 529, 0, 0, 0, 0, 1488,
+ 0, -9530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -9530, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -24144, 23, 4528, 0, 0,
+ 0, 28511, 28400, 0, 1, 208, 0, 64, 0, 0, 0, 28779, 0, -9530,
+ 0, 0, 0, 29813, -9471, 0, 0, 0, 0, 0, 0, 0, 0, -21856,
+ 0, -21846, 0, 0, 0, 30064, -21846, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 24436, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -17552, 0, 0, 0, 26739, 4592, 0, 0, 64,
+ 257, 48, 0, 0, 0, 0, 0, -18877, 0, 0, 0, 28769, -9526, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 29541,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 14352, -1072, 25959,
+ 0, 0, 0, -1072, 0, 0, 0, -16816, 2464, -22800, 0, 0, 0, -26295,
+ -26312, 24434, 0, 0, 0, -26312, 0, 0, 0, 28775, -9530, 28779, 0, 0,
+ 0, -1, -1, 25705, 0, -21856, 0, -1, 0, 0, 0, -21856, -21846, -21856,
+ 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 32, 3, 0, 209, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -9530, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/output.h
new file mode 100644
index 00000000..34a926b8
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/output.h
@@ -0,0 +1,440 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_4_s16_output[6912] = {
+ 1949, -412, 1100, 3461, 646, 3251, 2181, 0, -2150, 3462, 1525, 0, 671, 0, 0, 0,
+ 0, 0, 1173, -40, -2150, 3462, 3251, 1950, -2676, 705, -1521, -4901, -378, -4450, -2578, 0,
+ 2928, -4901, -2450, 0, -376, 0, 0, 0, 0, 0, -2407, 34, 2929, -4901, -4454, -2678,
+ 2032, -538, 1145, 3718, 2093, 3372, 3835, 0, -2226, 3722, 1168, 0, 2098, 0, 0, 0,
+ 0, 0, 280, -97, -2224, 3722, 3360, 2034, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -362, 388, 388, -363, -152, -2, -1244, 0, 389, -366, 2, 0, -1243, 0, 0, 0,
+ 0, 0, 1109, 8, 390, -366, -2, -367, 886, -969, -969, 886, 321, 0, 2352, 0,
+ -969, 886, 0, 0, 2352, 0, 0, 0, 0, 0, -2031, -19, -969, 886, 0, 886,
+ 2031, -2223, -2223, 2031, 736, 0, 736, 0, -2223, 2033, 0, 0, 736, 0, 0, 0,
+ 0, 0, 0, -43, -2223, 2033, 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -518, 3229, 1031, -2700, 1025, -1430, -1450, 0, 2493, -2612, -421, 0, 758, 0, 0, 0,
+ 0, 0, -2388, 18, 2455, -2612, -1419, -347, 402, -3601, -5917, -1922, -1359, -3325, -2433, 0,
+ -2404, -1400, -4471, 0, -128, 0, 0, 0, 0, 0, -2071, -25, -2616, -1400, -3300, 1394,
+ 923, 1553, -381, -968, 3669, -1224, -12, 0, 1277, 228, -949, 0, 1834, 0, 0, 0,
+ 0, 0, -2107, -80, 791, 228, -1169, 3196, 0, 0, -4, -4, 0, -4, -4, 0,
+ 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, -4, 0,
+ -925, 3667, 484, -925, -2412, 2599, -1033, 13, 1498, -786, -2310, 22, -210, 0, 0, 0,
+ 0, 0, 2647, 10, 1106, -785, -950, 896, -76, 184, 112, -73, 333, 712, -157, -53,
+ 595, 827, -276, 0, -50, 0, 0, 0, 0, 0, 560, -43, 172, 815, -43, 1892,
+ 2022, -2228, -2342, 2029, 983, 1761, 176, -122, -2227, 1731, -632, 0, 410, 0, 0, 0,
+ 0, 0, 1315, -97, -2231, 1705, -98, 2033, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 687, -4050, -1165, 675, 2781, -4471, 1064, 74, -1144, 819, 238, -20, 157, 0, 0, 0,
+ 0, 0, -2987, 9, -820, 836, -71, -807, -460, -1385, -302, -450, -270, -17, -25, -150,
+ 1210, 942, -1236, -9, 3, 0, 0, 0, 0, 0, 794, -62, 615, 911, -743, 2287,
+ 2028, -5347, -2501, 2028, 2766, -3257, -406, -6, -2223, 2769, 461, -20, -1143, 0, 0, 0,
+ 0, 0, -2199, -74, -2223, 2769, 25, 2033, 0, -2, -2, 0, 0, -2, -4, 0,
+ 0, 0, -3, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0,
+ -1330, -487, 1849, -1345, 1875, -3238, 285, 75, 1459, -555, 1745, -16, -483, 0, 0, 0,
+ 0, 0, -857, 41, 1464, -537, 613, -1337, 2432, -3916, -1602, 2442, 1305, 761, 1183, -153,
+ -2679, 2720, 1674, -17, 886, 0, 0, 0, 0, 0, -1117, -96, -2686, 2689, 1373, 2447,
+ 0, 1688, 1688, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1404, -24, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, -1037, 622, 1594, 812, -685, 1843, 80, 72, 1785, 1654, 0, 71, 0, 0, 0,
+ 0, 0, -15, 46, 79, 1802, 528, -8, -10, 4062, 1708, -2223, 698, 1935, -530, -147,
+ 2031, -2586, -2357, 0, 2033, 0, 0, 0, 0, 0, -3057, -2, 2024, -2618, -289, 0,
+ 0, 0, 1689, 1688, 0, 1689, 1689, 0, 0, 1688, 1688, 0, 0, 0, 0, 0,
+ 0, 0, 2, 27, 0, 1688, 1689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, -1116, -1044, 4, 729, -2274, 182, 80, -5, 198, 66, 0, -3, 0, 0, 0,
+ 0, 0, -1298, 15, 0, 215, -1060, -4, -10, 2029, 1898, 0, -1335, 4159, -339, -147,
+ -2, -363, -134, 0, 0, 0, 0, 0, 0, 0, -1561, -28, -9, -394, 1935, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 689, -2150, 562, -6634, -116, 666, -37, 0, 1512, 1689, 1490, 0, -664,
+ 1513, -1999, -1222, 1513, 0, -5282, 1513, 0, 0, 0, 0, -970, 2927, -1738, 6014, -2179,
+ -307, 507, 0, -2223, -1601, -1650, 0, 1391, -2226, 1828, 2369, -2226, 0, 5675, -2227, 0,
+ 0, 0, 0, 737, -2229, -522, -14222, -5797, 2256, 1163, 0, 1688, 3115, 3004, 0, 1036,
+ 1686, -4586, 6, 1686, 0, -9834, 1683, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -138, 389, 1321, 5409, 1052, -1243, -12, 0, -1, 185, -1110, 0, -718,
+ 0, 404, -151, 0, 0, 3165, 0, 0, 0, 0, 0, 321, -969, -2414, -3590, -2066,
+ 2352, 0, 0, 0, -375, 2031, 0, 1062, 0, -952, 321, 0, 0, -2258, 0, 0,
+ 0, 0, 0, 736, -2223, 0, 667, -1887, 736, 0, 0, 0, 0, 0, 0, -2223,
+ 0, -2183, 736, 0, 0, -715, 0, 0, 0, 0, 0, 0, 0, 0, 2360, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1373, 0, 0,
+ 0, 0, 0, 1696, 2496, -4124, 3387, -2542, 633, -590, 0, -2184, 79, -1016, 0, -781,
+ -2184, -2005, 3699, -2185, 0, 9180, -2184, 0, 0, 0, 0, -2051, -2397, 139, 5821, -3321,
+ -317, 508, 0, -2323, -587, -3130, 0, -2971, -2334, 930, 1370, -2338, -1, -1430, -2342, 0,
+ 0, 0, 0, 2083, 1293, -3829, -4841, -10189, 1400, 1163, 0, -1888, 2474, -228, 0, -1244,
+ -1913, -6253, 5678, -1921, -2, 3084, -1931, 0, 0, 0, 0, 0, 0, -4, 2227, -4,
+ 0, 0, 0, -4, 0, -4, 0, -4, -4, 0, 5, -4, 0, 1297, -4, 0,
+ 0, 0, -2289, -285, 1513, 4574, 6202, -1644, -694, -66, 0, 0, 334, 449, 5, 275,
+ 2419, -3810, 2260, 2420, 4, 5495, 2413, 0, 0, 0, -296, 20, 609, 761, -2598, -3620,
+ -492, 507, 0, 0, 757, -326, -8, -55, 584, -2630, -1376, 533, -16, -360, 521, 0,
+ 0, 0, -678, 723, -2233, 1837, -5619, -4481, 568, 1163, 0, 0, 1737, -748, -17, -2691,
+ 1381, -2101, -2293, 1278, -32, -6119, 1266, 0, 0, 0, 0, 0, 0, 0, 2221, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1292, 0, 0,
+ 0, 0, 2474, 212, -1155, -2866, 2066, 1599, 546, 0, 0, -6, -1332, -2754, 8, 144,
+ -3089, 3111, 1010, -3018, 19, -1050, -3005, 0, 0, 0, 76, -108, 1229, 2946, -8144, -4397,
+ -710, 0, 0, 0, -1182, -3409, -22, 484, 679, -3410, -6425, 546, -43, -3861, 526, 0,
+ 0, 0, 2062, 732, -2223, -2079, -3954, -2752, -1143, 0, 0, 0, -864, -4524, -4, -3366,
+ -2224, -2556, -1447, -2225, -4, -2061, -2223, 0, 0, 0, 0, 0, 0, 4, 9, 2,
+ -4, 0, 0, 0, -1, -9, 0, -4, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 0, 2102, -477, 1461, -2216, 3151, 1847, -482, 0, 0, -9, -423, -61, 8, 2272,
+ -2705, 3215, 654, -2638, 18, 1842, -2630, 0, 0, 0, 966, 867, -2682, -2363, -13034, -3410,
+ 886, 0, 0, 0, 401, -774, -24, -2462, -255, -1822, -6279, -380, -42, -8541, -390, 0,
+ 0, 0, 0, 0, 0, -2204, -4190, -2283, 0, 0, 0, 0, 1687, 0, 0, 0,
+ 0, -2402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 445, 94, 74, -139, 4344, 4659, 75, 0, 0, 1587, -1109, 1812, 11, 1878,
+ 679, 2964, 1005, 746, 21, 1251, 753, 0, 0, 0, -816, 2016, 2028, -3526, -2940, -2110,
+ 2033, 0, 0, -2223, 2031, -2676, -21, -612, -558, 893, -498, -682, -39, 2646, -693, 0,
+ 0, 0, 0, 0, 0, -316, -4344, 4242, 0, 0, 0, 1688, 0, 1688, 0, 1689,
+ 1689, 2687, -2087, 1689, 0, -3460, 1689, 0, 0, 0, 0, 0, 0, 0, 4, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
+ 0, 0, 445, 10, -4, -1364, 2489, 214, -1, 0, 0, 0, -1111, 233, 11, 222,
+ -909, -47, 2883, -842, 21, 2151, -835, 0, 0, 0, -816, -16, -6, -2167, -9669, -375,
+ 0, 0, 0, 0, 2031, -452, -21, -423, 1666, 100, -5278, 1543, -39, -3944, 1531, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -2150, 1950, 1513, -2024, 689, 664, 0, 0, 1512, 0, 0, 1513, 0, 3251, 1949,
+ 646, -2150, 1509, 674, -2150, 1509, 1949, 1085, 0, 2929, -2678, -2227, 314, -970, -334, 0,
+ 0, -2224, 0, 0, -2226, 0, -4456, -2676, -378, 2929, -2228, -426, 2929, -2225, -2677, -968,
+ 0, -2224, 2034, 1683, -8540, 737, 2176, 0, 0, 1689, 0, 0, 1684, -1, 3356, 2032,
+ 2093, -2224, 1677, 1984, -2224, 1685, 2030, 2414, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 390, -365, 0, 1947, -137, -1239, 0, 0, -1, 0, 0, 0, 0, -2, -362,
+ -152, 390, -4, -1243, 390, -4, -362, -718, 0, -969, 886, 0, -3751, 321, 2350, 0,
+ 0, 0, 0, 0, 0, -1, 0, 886, 321, -969, 0, 2352, -969, 0, 886, 1062,
+ 0, -2223, 2033, 0, -2303, 736, 732, 0, 0, 0, 0, 0, 0, 0, 0, 2031,
+ 736, -2223, 0, 736, -2223, 0, 2031, -2223, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2462, -428, -2185, 288, 1691, 572, 0, 0, -2185, 0, 0, -2183, 1, -1416, -518,
+ 1007, 2460, -679, 836, 2460, -683, -517, 178, 0, -2575, 922, -2347, -2554, -2079, -936, 0,
+ 0, -2324, 0, 0, -2333, -1, -3302, 402, -1463, -2589, -4249, -64, -2587, -4245, 401, -3816,
+ 0, 885, 2116, -1943, -8895, 2019, -17, 0, 0, -1889, 0, 0, -1910, 0, -1172, 923,
+ 3431, 853, -440, 1981, 856, -433, 921, -221, 0, 0, 0, -4, 0, 0, 0, 0,
+ 0, -4, 0, 0, -4, 0, -4, 0, 0, 0, -4, 0, 0, -4, 0, -4,
+ 9, 1181, 28, 2399, -3878, -294, -1765, 0, 0, 0, 0, 0, 2398, 0, -413, -910,
+ -369, -1078, -2327, 11, -1072, -2328, -918, 1268, -18, 253, 958, 551, -3773, -29, -1683, 0,
+ 0, 0, 0, 0, 801, 0, -219, -72, 609, -255, -157, 124, -252, -154, -115, 289,
+ -42, -2230, 2033, 1360, -4286, 736, 488, 0, 0, 0, 0, 0, 1869, 0, -502, 2031,
+ 2090, -3332, -361, 292, -3332, -354, 1933, -3082, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 22, -882, -98, -3060, 3301, 208, 1424, 0, 0, -6, 0, 0, -3414, 0, -263, 668,
+ 211, 1861, 395, -16, 1856, 395, 743, -1580, -53, 730, 986, 624, -3500, -185, -2322, 0,
+ 0, 0, 0, 0, 1275, 0, -1425, -456, -104, 243, -1523, 311, 247, -1523, -567, -99,
+ -6, -2223, 2033, -2224, 382, 694, -1147, 0, 0, 0, 0, 0, -2223, 1, -437, 2014,
+ 732, -192, 461, -1146, -194, 461, 2025, -4629, 0, 0, 0, 0, 5, 0, -4, 0,
+ 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, -3, -4, 0, -3, 0, -6,
+ 23, 1463, -1336, -2693, 3254, -517, -477, 0, 0, -9, 0, 0, -3026, 0, 505, -1347,
+ -485, 3819, 1902, -484, 3817, 1902, -1275, 1859, -56, -2684, 2447, -278, -1739, 850, 881, 0,
+ 0, 0, 0, 0, 334, 0, 491, 2430, 880, -2256, 1387, 879, -2257, 1387, 2324, -2205,
+ 0, 0, 0, 0, -1888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1688, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, 78, 0, 691, 2307, 85, 84, 0, 0, 1588, 0, 0, 357, 0, 791, 7,
+ 87, 802, 1810, 72, 802, 1810, 71, 816, -51, 2026, 0, -580, -100, 2033, 2033, 0,
+ 0, -2224, 0, 0, 31, 0, -771, 0, 2030, 699, -2644, 2028, 699, -2644, -116, 1321,
+ 0, 0, 0, 1689, 2112, 0, 0, 0, 0, 1689, 0, 0, 1689, 0, 1689, 0,
+ 0, 0, 1688, 0, 0, 1688, 0, 1689, 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, -1, 0, -897, -41, 1, 4, 0, 0, 0, 0, 0, -1231, 0, -797, 4,
+ 3, 723, 222, -1, 723, 222, 67, -839, -51, -8, 0, 1644, 100, 0, 0, 0,
+ 0, 0, 0, 0, 2255, 0, 1453, 0, -3, -1335, -421, -4, -1335, -421, -116, 1511,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -2, -2625, -1678, -947, 909, -4379, 22, -2, -2583, -3196, 0, -1847, 0, 0, 0,
+ 0, 0, 908, -29, 1, -2578, -2641, 0, -3, 2, -3145, -2220, -4709, 1224, -5086, -53,
+ 2, -3238, -2469, 0, -1793, 0, 0, 0, 0, 0, -1007, 29, -3, -3249, -3119, 0,
+ -9, 747, 1414, 1686, -2214, 6881, 1925, -122, -4, 495, 1623, 0, 1362, 0, 0, 0,
+ 0, 0, 5500, -53, -8, 469, 1435, 0, 0, 0, -969, 0, -2675, 2928, -969, 0,
+ 0, -969, -969, 0, 0, 0, 0, 0, 0, 0, 2928, 0, 0, -969, -969, 0,
+ 1393, -1534, -2582, 1400, -3345, 4325, -620, -98, -1533, 197, -934, 0, 579, 0, 0, 0,
+ 0, 0, 3964, -40, -1539, 176, -1022, 1401, 2439, -2681, -3739, 2446, -2133, 4428, -440, -106,
+ -2680, 1226, -1285, 0, 744, 0, 0, 0, 0, 0, 4042, -96, -2685, 1204, -1039, 2448,
+ 0, -2, -8, -2, 1356, -6, -278, 0, -2, 0, -520, 0, -326, 0, 0, 0,
+ 0, 0, -4, -54, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -16, -2053, -2083, -123, -2366, -4354, 11, 0, -2020, -2030, 0, -2332, 0, 0, 0,
+ 0, 0, -2105, 4, 1, -2018, -2056, 0, -4, -1, 830, -8, 2599, -1915, -1246, -53,
+ -1, 747, 830, 0, -2001, 0, 0, 0, 0, 0, -2847, -21, -3, 735, 843, 0,
+ -9, -2, -111, 0, 350, 1767, -1433, -122, -2, -302, -111, 0, -1152, 0, 0, 0,
+ 0, 0, -369, -48, -8, -328, -80, 0, 0, 0, 0, 0, 0, 0, -4, 0,
+ 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, -22, -22, 13, 1170, -5, 595, 0, -21, -1, 1, 0, 595, 0, 0, 0,
+ 0, 0, 5, 16, -16, -1, -6, -14, 0, 0, 0, 0, 1260, 0, 636, 0,
+ 0, 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 282, 1328, 1294, 362, -449, 2079, -2050, 3, -464, -50, -605, 0, -2075, 0, 0, 0,
+ 0, 0, -981, -32, -338, -49, 1617, -296, -483, -1637, 713, 1552, -2939, -1180, 2325, 0,
+ 794, 2390, 3039, 0, 37, 0, 0, 0, 0, 0, 2912, 39, 578, 2390, 153, 507,
+ -1109, 3024, 3729, -1111, 1287, -606, 871, 0, 1811, 819, 216, 0, 92, 0, 0, 0,
+ 0, 0, -3648, -31, 1325, 819, 2407, 1163, 0, 0, 0, 0, -1904, 0, -961, 0,
+ 0, 0, 0, 0, -961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 174, 1546, 1551, 174, 43, 3, 914, 0, 1472, -12, 1, 0, 912, 0, 0, 0,
+ 0, 0, 98, -6, 1549, -12, 0, -182, -484, -1762, -1773, -484, -3545, -29, -3044, 0,
+ -1554, 36, 0, 0, -3041, 0, 0, 0, 0, 0, -7, 7, -1768, 36, 0, 507,
+ -1109, 1026, 1000, -1109, -2275, -66, -1517, 0, 1502, 83, 0, 0, -1511, 0, 0, 0,
+ 0, 0, -16, 0, 1014, 83, 0, 1163, 0, 0, 0, 0, -7, 0, -4, 0,
+ 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -7, -2202, -2474, -167, -2515, -895, -409, -97, -1, -431, 314, 0, 61, 0, 0, 0,
+ 0, 0, 3130, 16, -7, -451, -2437, 0, 12, -2297, -1410, 740, -390, -3887, 2223, 161,
+ 5, 1134, 1593, 0, 1182, 0, 0, 0, 0, 0, 185, 72, 10, 1168, -1437, 0,
+ -8, 1, 1587, 1691, -2959, 3465, 3473, -122, 1, 1386, 2286, 0, 2133, 0, 0, 0,
+ 0, 0, 1326, 17, -8, 1360, 1631, 0, 0, 3, 10, 3, -1770, 8, 363, 0,
+ 3, 0, 679, 0, 426, 0, 0, 0, 0, 0, 5, 39, 0, 0, 23, 0,
+ 1, 175, -4, 3, -1649, 33, 1655, 1, -25, -3, 497, 2, 1715, 0, 0, 0,
+ 0, 0, -1326, 36, -27, -3, 8, 0, -1, -263, 654, 0, -341, -87, 2409, -3,
+ 733, 0, 1003, -9, 2447, 0, 0, 0, 0, 0, -1541, 18, 731, 0, 63, 0,
+ -3, -592, 1507, 0, -36, -202, 2041, -6, 1691, 0, 2017, -20, 2102, 0, 0, 0,
+ 0, 0, -193, 26, 1688, 0, 135, 0, 0, 0, 0, 0, -7, 0, 1, 0,
+ 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -2572, 2, -4, 797, 5092, -4214, -1670, 1295, 0, -1675, 2209, -4467, 3, -4187,
+ 979, -2668, 6778, 997, 6, 5249, 996, 0, 0, 0, -2771, -6, 4, -1158, 7177, 1124,
+ -2001, -1532, 0, -2223, -1880, -5003, -8, -5329, 1054, -2404, 2716, 1009, -14, 10155, 1008, 0,
+ 0, 0, -3177, -14, -10, 4333, -7578, -2831, 1520, 1164, 0, 1688, 2163, 3769, -17, 2018,
+ 5764, -2380, -67, 5662, -32, -6083, 5649, 0, 0, 0, -2715, 0, 0, 2928, 3031, -969,
+ 0, 0, 0, 0, 0, -969, 0, -969, 2928, -2677, 2875, 2928, 0, 2929, 2928, 0,
+ 0, 0, -3238, 496, -1535, 4385, 1182, -1812, 543, -266, 0, 0, -386, -1182, -14, -2752,
+ 4016, -3899, 2381, 3934, -26, 331, 3927, 0, 0, 0, -3279, 875, -2684, 4494, -2932, -5495,
+ 813, 507, 0, 0, 758, -1449, -15, -3993, 4098, -6261, 2616, 4010, -28, -2655, 4000, 0,
+ 0, 0, 0, 0, -5, -6, -3814, -4566, -168, 1163, 0, 0, 1738, -372, 0, -116,
+ -4, -2402, 1356, -4, 0, -2006, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 161, 1, 0, -2108, 5260, -232, -2334, -438, 0, -2083, 849, -4345, 2, -4350,
+ -2316, 291, 3541, -2307, 3, 5354, -2306, 0, 0, 0, 2188, -6, -2, -2757, -2025, 681,
+ -2001, 887, 0, -8, -595, -1287, -8, -1276, -2082, 1437, -3896, -2127, -14, -206, -2132, 0,
+ 0, 0, -678, -14, -5, -162, -10218, -2555, -1152, 2033, 0, 0, -1997, -1527, -17, -1503,
+ 1384, -2319, -2927, 1282, -32, -3368, 1272, 0, 0, 0, 0, 0, 0, 0, 4, 2,
+ -4, 0, 0, 0, 1, -4, 0, -4, 0, 0, 0, 0, 0, 5, 0, 0,
+ 0, 0, 0, 4, -22, 9, -1964, 632, 602, 1631, 0, 0, -1894, 592, 0, 577,
+ 0, 1601, -756, 0, 0, -1852, 0, 0, 0, 0, 0, 0, 0, 0, -5756, -3712,
+ 636, 1756, 0, 0, -2026, 636, 0, 636, 0, -2891, -815, 0, 0, -1976, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -318, 86, -472, -1781, 2501, -195, -1751, -1041, 0, 83, 6427, -2218, 0, -2268,
+ 409, 173, 240, 414, 1, 1894, 413, 0, 0, 0, 900, -149, 805, 3954, 5846, 5596,
+ -429, -4306, 0, 2033, -1448, 2567, 0, 2794, 1059, 22, -7430, 1056, -1, 2113, 1056, 0,
+ 0, 0, 2062, -341, 1827, -4481, -5198, -2985, -341, -1609, 0, 0, 6314, 1047, 0, 2598,
+ -2248, 49, -3251, -2255, -2, -1590, -2265, 0, 0, 0, 0, 0, 0, 0, 2804, 1456,
+ -961, -2654, 0, 0, 3061, -961, 0, -961, 0, 0, -1904, 0, 0, 1743, 0, 0,
+ 0, 0, 2, 1809, 1469, 120, 909, -656, 1005, -2417, 0, 0, 2787, -883, 0, 670,
+ -2, -1859, 97, 0, 0, 3101, 1, 0, 0, 0, 0, -2493, -1546, -20, 3658, 3101,
+ -3300, -1605, 0, 0, 1851, -581, 0, -2362, -9, 2032, -3686, -12, -1, -563, -16, 0,
+ 0, 0, 0, -653, 1520, -47, 1206, -104, -2103, -2582, 0, 0, 2977, -935, 0, 48,
+ -21, -1599, -2599, -28, -2, 3055, -36, 0, 0, 0, 0, 0, 0, 0, 11, 6,
+ -4, -10, 0, 0, 12, -4, 0, -4, 0, 0, -7, 0, 0, 7, 0, 0,
+ 0, 0, -600, -12, 0, 4657, 4557, 2391, -120, -1364, 0, -169, -4087, -375, -14, -649,
+ 1000, 31, -2873, 918, -25, 1143, 913, 0, 0, 0, 893, 18, 13, 450, 5961, 3810,
+ 966, -1587, 0, 736, -4810, 2476, 23, 2093, -1082, -109, -147, -947, 42, 3857, -930, 0,
+ 0, 0, -678, -14, 2, 1536, -6028, 3457, 1917, -1587, 0, 1688, -2683, 3507, -17, 3183,
+ 3079, 83, -5920, 2976, -32, -4034, 2969, 0, 0, 0, 0, 0, 6, 8, 2515, 2980,
+ 219, -1519, 0, 0, -2269, 486, 0, 152, 5, 0, -1770, 5, 0, 2619, 8, 0,
+ 0, 0, -7, -27, -22, -1425, -781, 1963, 1527, -1387, 0, 0, -2277, 1891, 0, 1463,
+ 12, 30, -1633, 12, 0, 650, 15, 0, 0, 0, 0, 729, 735, -2586, -3877, -248,
+ 2322, -918, 0, 0, -1810, 1269, -2, 2281, 3, -905, -340, 2, -2, 463, 5, 0,
+ 0, 0, 0, 1684, 1694, -1959, -1764, 228, 1901, -1477, 0, 0, -2594, -636, -4, 1836,
+ 4, -2089, -34, 3, -4, 4236, 8, 0, 0, 0, 0, 0, 0, 0, 10, 11,
+ 1, -6, 0, 0, -9, 2, 0, 1, 0, 0, -7, 0, 0, 10, 0, 0,
+ 7, 1, 0, 979, -2962, 0, -1754, 0, 0, -1676, 0, 0, 892, 0, -2575, 0,
+ 1510, -2457, -2587, -1973, -2457, -2579, 15, -4518, -18, -3, 0, 1049, 3323, 0, -1902, 0,
+ 0, -2224, 0, 0, 1269, 1, -3288, 0, -1787, -2922, -3244, -1645, -2922, -3254, -40, -4956,
+ -42, -7, 0, 5743, -6730, 0, 1445, 0, 0, 1689, 0, 0, 6252, -1, 1031, 0,
+ 1354, -3570, 1894, 1245, -3570, 1902, -98, 2362, 0, 0, 0, 2928, -2677, 0, 0, 0,
+ 0, 0, 0, 0, 2928, 0, -969, 0, 0, -2675, -969, 0, -2675, -969, 0, -969,
+ -34, -1537, 1401, 4002, -3553, 507, 557, 0, 0, 0, 0, 0, 4410, 0, -1343, 1400,
+ 197, -5076, -1240, 601, -5076, -1242, 1323, -2748, -36, -2683, 2448, 4081, -7082, 887, 775, 0,
+ 0, 0, 0, 0, 4521, 0, -1386, 2447, 1476, -6289, -1269, 692, -6289, -1265, 2363, -4199,
+ 0, 0, 0, -6, -3954, 0, -243, 0, 0, 0, 0, 0, -5, 0, -21, 0,
+ 1356, 0, -11, -440, 0, -4, -2, -427, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 1, 0, -2314, 3691, 0, -2333, 0, 0, -2084, 0, 0, -2359, 1, -2020, 0,
+ -321, 198, -2016, -2330, 198, -2016, 9, -4355, -18, -3, 0, -2091, 3832, 0, -2001, 0,
+ 0, -9, 0, 0, -1869, 1, 668, 0, 635, 1963, 726, -2003, 1963, 726, -42, -1312,
+ -42, -6, 0, 1366, -1475, 0, -1152, 0, 0, 0, 0, 0, 1874, 1, -481, 0,
+ 1456, -1109, -350, -1155, -1109, -350, -96, -1584, 0, 0, 0, 0, 5, 0, -4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, -4,
+ 0, -17, -1, 1, -515, 5, 618, 0, 0, 0, 0, 0, 0, 0, -6, 13,
+ 1173, -16, 0, 593, -16, 0, 13, 564, 0, 0, 0, 0, -4193, 0, 636, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1260, 0, 0, 636, 0, 0, 0, 636,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -362, -21, 414, 1771, 102, -1494, 0, 0, 83, 0, 0, 394, 0, 1624, 282,
+ -87, -655, -40, -2266, -656, -32, 282, -1087, 0, 619, 36, 1051, 4696, -177, -913, 0,
+ 0, 2034, 0, 0, 1063, 0, 158, -483, -3929, 1491, 2369, 301, 1493, 2359, -481, 1240,
+ 0, 1419, 83, -2278, -1487, -405, -1754, 0, 0, 0, 0, 0, -2244, -1, 2404, -1109,
+ -983, 3418, 725, 239, 3422, 733, -1111, 4573, 0, 0, 0, 0, 2902, 0, -961, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1904, 0, 0, -961, 0, 0, 0, -961,
+ 0, 1534, -13, 3, 586, 1819, 1215, 0, 0, 0, 0, 0, -4, 0, 1, 174,
+ 76, 1543, 1, 871, 1542, 1, 174, 576, 0, -1727, 36, -21, 4021, -2521, -3883, 0,
+ 0, 0, 0, 0, -7, 0, 0, -484, -3649, -1741, 0, -2927, -1739, 0, -484, -2102,
+ 0, 1107, 83, -48, 1049, -717, -3440, 0, 0, 0, 0, 0, -16, 0, 0, -1109,
+ -2513, 1075, 0, -1250, 1079, 0, -1109, 645, 0, 0, 0, 0, 11, 0, -4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, -4, 0, 0, 0, -4,
+ -33, -6, 0, 988, 2823, -1, -34, 0, 0, -169, 0, 0, 1389, 0, -2751, 0,
+ -1576, -942, -456, 187, -942, -465, -74, -2561, 55, 9, 0, -1054, 1714, 0, 1069, 0,
+ 0, 737, 0, 0, -1725, 0, -905, 0, -1847, 1461, 1212, 1342, 1461, 1202, 130, 321,
+ -42, -6, 0, 3063, 619, 0, 2020, 0, 0, 1688, 0, 0, 3570, 0, 1235, 0,
+ -1852, -1109, 1353, 2284, -1109, 1343, -94, 3524, 0, 0, 0, 8, 2697, 0, 318, 0,
+ 0, 0, 0, 0, 6, 0, 28, 0, -1770, 0, 15, 574, 0, 5, 2, 557,
+ 1, -27, 0, 15, 659, -23, 1617, 0, 0, 0, 0, 0, 13, 0, 53, 2,
+ -1642, -34, -108, 1851, -34, -117, 3, 1870, -3, 731, 0, 4, -1346, 712, 2381, 0,
+ 0, 0, 0, 0, 4, 0, -136, -7, -342, 731, 600, 2535, 730, 595, -1, 2334,
+ -6, 1688, 0, 7, 301, 1646, 1997, 0, 0, 0, 0, 0, 6, 0, -323, -17,
+ -38, 1688, 1370, 2243, 1686, 1361, -4, 1790, 0, 0, 0, 0, 10, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 2, 0, 0, 0, 2,
+ 0, 0, -253, -245, -232, -220, -537, 0, 0, -253, -246, 0, -283, 0, 0, 0,
+ 0, 0, -220, -24, 0, -253, -253, 0, 0, 0, 736, 736, 636, 737, 1794, 0,
+ 0, 736, 736, 0, 1057, 0, 0, 0, 0, 0, 737, 32, 0, 736, 736, 0,
+ 0, 0, 1688, 1688, 1458, 1688, 4112, 0, 0, 1688, 1688, 0, 2424, 0, 0, 0,
+ 0, 0, 1688, -24, 0, 1688, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -3, 0, -12, 8, -245, 0, 0, -3, -1, 0, -242, 0, 0, 0,
+ 0, 0, 11, 0, 0, -3, -3, 0, 0, 0, 0, 0, 0, 0, 736, 0,
+ 0, 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, -1, 0, 0, -1, 1688, 0, 0, 0, 0, 0, 1688, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -2, 803, -3, 3681, -2456, 515, 0, -2, 811, 257, 0, -347, 0, 0, 0,
+ 0, 0, -2024, -31, 0, 811, 792, 0, 0, 3, -960, 3, -4462, 2937, -604, 0,
+ 3, -970, -284, 0, 430, 0, 0, 0, 0, 0, 2198, 39, 0, -970, -947, 0,
+ -4, -2285, 539, -6, 3387, -2441, 458, -6, -2, 736, 1572, -20, -327, 0, 0, 0,
+ 0, 0, -4113, -36, 0, 736, 832, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -251, 274, 233, -292, -156, -39, -163, 0, 274, -292, -41, 0, -122, 0, 0, 0,
+ 0, 0, 75, 5, 274, -292, -41, -251, 886, -970, -970, 886, 321, 0, 321, 0,
+ -970, 887, 0, 0, 321, 0, 0, 0, 0, 0, -736, -19, -970, 887, 0, 887,
+ 2031, -2223, -2223, 2031, 736, 0, 736, 0, -2223, 2033, 0, 0, 736, 0, 0, 0,
+ 0, 0, -1687, -43, -2223, 2033, 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -7, -3162, -2194, -2955, 700, -3307, 0, 0, -3155, -3168, 0, -152, 0, 0, 0,
+ 0, 0, 713, -27, 0, -3155, -3162, 0, 0, 0, -273, 732, -2136, 3766, 48, 0,
+ 0, -273, -273, 0, 321, 0, 0, 0, 0, 0, 3766, 32, 0, -273, -273, 0,
+ 0, 0, 675, 1688, -1337, 4748, 1411, 0, 0, 675, 674, 0, 736, 0, 0, 0,
+ 0, 0, 4748, -24, 0, 675, 675, 0, 0, 0, -824, 0, -2272, 2487, -824, 0,
+ 0, -824, -824, 0, 0, 0, 0, 0, 0, 0, 2487, 0, 0, -824, -824, 0,
+ 0, -22, -1278, -355, -1315, 2344, -664, 0, 0, -1256, -1260, 0, 592, 0, 0, 0,
+ 0, 0, 2387, 0, 0, -1256, -1278, 0, 0, 0, -234, 736, -1415, 3664, 403, 0,
+ 0, -234, -234, 0, 636, 0, 0, 0, 0, 0, 3664, 0, 0, -234, -234, 0,
+ 0, 0, 692, 1688, -2747, 4695, 692, 0, 0, 692, 692, 0, 0, 0, 0, 0,
+ 0, 0, 4695, 0, 0, 692, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 372, 396, 0, -1583, 267, -868, 0, -16, 36, 1133, 0, -907, 0, 0, 0,
+ 0, 0, -1864, 14, -16, 36, 411, 0, 0, -256, 644, -3, 2449, -2919, -272, 0,
+ -2, 887, -1661, 0, -1216, 0, 0, 0, 0, 0, -811, -65, 0, 887, 633, 0,
+ 0, 2440, 2424, 0, -1716, 2424, -866, 0, 0, 0, 1459, 0, -866, 0, 0, 0,
+ 0, 0, -3291, 0, 0, 0, 2424, 0, 0, 0, 0, 0, -8, 0, -4, 0,
+ 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -329, -329, 0, -16, -326, -10, 0, -2, 0, 0, 0, -10, 0, 0, 0,
+ 0, 0, 272, 0, -2, 0, -326, 0, 0, 736, 736, 0, 0, 736, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -613, 0, 0, 0, 736, 0,
+ 0, 1688, 1688, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1404, 0, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -23, 0, 0, -220, -1001, -2234, -285, -283, 0, -245, 321, -535, 0, -539,
+ -220, -2415, 116, -220, 0, 802, -220, 0, 0, 0, 0, 0, 0, 737, -276, 2807,
+ 1057, 887, 0, 736, -1159, 1794, 0, 1794, 737, 3164, -274, 737, 0, -2521, 737, 0,
+ 0, 0, 0, 0, 0, 1688, -8222, -2744, 2424, 2033, 0, 1688, -2656, 4112, 0, 4112,
+ 1688, -2403, -627, 1688, 0, -5779, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -8, 0, 0, 12, 297, 155, -243, -4, 0, 0, 38, -245, 0, -246,
+ 8, -7, 3, 8, 0, 325, 8, 0, 0, 0, 0, 0, 0, 0, -840, -450,
+ 736, 0, 0, 0, -136, 736, 0, 736, 0, 0, 0, 0, 0, -935, 0, 0,
+ 0, 0, 0, 0, 0, 1, -1925, -1032, 1688, 0, 0, 0, -312, 1688, 0, 1688,
+ 0, 0, 0, 0, 0, -2143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2271, 0, -5, -1946, -4005, -1592, -179, 1238, 0, 0, 1850, 415, 0, 687,
+ -2453, 2266, -962, -2453, 0, -4584, -2456, 0, 0, 0, -2716, 0, 6, 2062, 4609, 2037,
+ 221, -1532, 0, 0, -2290, -480, 0, -817, 2934, -2678, 1090, 2934, 0, 5572, 2937, 0,
+ 0, 0, 2063, -4, -5, -6202, -8636, -2014, -168, 1164, 0, 0, 1352, -745, -4, 621,
+ -2229, 2030, -828, -2230, -4, -4232, -2231, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, -91, 274, 97, 542, 246, -122, -88, 0, -41, 98, -72, 0, 202,
+ -39, 273, -102, -39, 0, 390, -39, 0, 0, 0, 0, 321, -970, -875, -1802, -823,
+ 321, 0, 0, 0, 0, 0, 0, -970, 0, -952, 321, 0, 0, -970, 0, 0,
+ 0, 0, 0, 736, -2223, -2005, -4130, -1887, 736, 0, 0, 0, 0, 0, 0, -2223,
+ 0, -2183, 736, 0, 0, -2223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -2691, 0, 0, 731, 4333, -5445, -152, -423, 0, -2194, 477, -3326, 0, -3307,
+ 707, -5308, 5257, 707, 0, 6175, 707, 0, 0, 0, -2814, 0, 0, 3766, 3711, 2248,
+ 321, 887, 0, 732, -1023, 48, 0, 48, 3766, 390, 2712, 3766, 0, 1455, 3766, 0,
+ 0, 0, -2838, 0, 0, 4748, -3128, -2725, 736, 2033, 0, 1688, -2344, 1411, 0, 1411,
+ 4748, -5200, 2377, 4748, 0, -575, 4748, 0, 0, 0, -2306, 0, 0, 2487, 2575, -824,
+ 0, 0, 0, 0, 0, -824, 0, -824, 2487, -2274, 2442, 2487, 0, 2488, 2487, 0,
+ 0, 0, -2524, 0, 0, 2402, 1608, -2152, 592, 1633, 0, -355, -1906, -670, 0, -664,
+ 2366, -2488, 4282, 2366, 0, 2135, 2366, 0, 0, 0, -2715, 0, 0, 3664, 192, -1197,
+ 636, 1756, 0, 736, -2026, 403, 0, 403, 3664, -2677, 3226, 3664, 0, 773, 3664, 0,
+ 0, 0, -2788, 0, 0, 4695, 849, 692, 0, 0, 0, 1688, 0, 692, 0, 692,
+ 4695, -2749, 867, 4695, 0, 704, 4695, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 101, -16, -16, -3406, 31, 2770, -899, -2358, 0, 0, 3248, 707, 0, -861,
+ -109, 1698, -1790, -109, 0, 1360, -109, 0, 0, 0, 2483, 0, -6, 1480, -452, -3363,
+ -1026, -873, 0, 0, 4482, -3061, 0, -77, -2682, -443, -2628, -2682, 0, -3604, -2685, 0,
+ 0, 0, 0, 0, 0, -6097, -5958, 1312, -866, -2392, 0, 0, 5183, 1166, 0, -866,
+ 0, 0, -1716, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6,
+ -4, -11, 0, 0, 12, -4, 0, -4, 0, 0, -8, 0, 0, 7, 0, 0,
+ 0, 0, 0, -2, -2, 426, 469, 14, -10, -19, 0, 0, -304, -7, 0, -10,
+ 0, 3, -16, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, -961, -1004, 0,
+ 0, 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -2204, -2302, 0, 0, 0, 0, 0, 1688, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -220, -1325, 0, -284, 0, 0, -245, 0, 0, -220, 0, -253, 0,
+ -210, -22, -253, -282, -22, -253, 0, -535, 0, 0, 0, 737, 522, 0, 1057, 0,
+ 0, 737, 0, 0, 737, 0, 736, 0, 636, 0, 736, 1057, 0, 736, 0, 1794,
+ 0, 0, 0, 1688, -6393, 0, 2424, 0, 0, 1688, 0, 0, 1688, -1, 1688, 0,
+ 1458, 0, 1688, 2424, 0, 1688, 0, 4112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 329, 0, -243, 0, 0, 0, 0, 0, 8, 0, -3, 0,
+ -5, -7, -3, -242, -7, -3, 0, -245, 0, 0, 0, 0, -996, 0, 736, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 736, 0, 0, 0, 736,
+ 0, 0, 0, 0, -2282, 0, 1688, 0, 0, 0, 0, 0, 0, -1, -1, 0,
+ 0, 0, 0, 1688, 0, 0, 0, 1687, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -2456, 62, 0, -259, 0, 0, 0, 0, 0, -2454, 0, 789, 0,
+ 1443, 2238, 799, -468, 2238, 807, -2, 357, 0, 0, 0, 2937, 43, 0, 321, 0,
+ 0, 0, 0, 0, 2935, 0, -942, 0, -1786, -2676, -955, 580, -2676, -965, 2, -408,
+ -6, 0, 0, -2232, -33, -42, -244, 0, 0, 0, 0, 0, -2229, 0, 366, -18,
+ 1353, 2032, 2081, -444, 2030, 2089, -8, -130, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 274, -251, -39, 384, -91, -121, 0, 0, -41, 0, 0, -39, 0, -41, -251,
+ -154, 273, -41, -122, 273, -41, -251, 202, 0, -970, 887, 0, -1005, 321, 319, 0,
+ 0, 0, 0, 0, 0, 0, 0, 886, 321, -970, 0, 321, -970, 0, 886, -970,
+ 0, -2223, 2033, 0, -2303, 736, 732, 0, 0, 0, 0, 0, 0, 0, 0, 2031,
+ 736, -2223, 0, 736, -2223, 0, 2031, -2223, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 707, -4277, 0, -152, 0, 0, -2195, 0, 0, 707, 0, -3162, 0,
+ -304, -2651, -3169, -152, -2651, -3169, 0, -3314, 0, 0, 0, 3766, -1257, 0, 321, 0,
+ 0, 732, 0, 0, 3766, 0, -273, 0, 636, -2772, -273, 321, -2772, -273, 0, 48,
+ 0, 0, 0, 4748, -6909, 0, 736, 0, 0, 1688, 0, 0, 4748, 0, 675, 0,
+ 1458, -2796, 674, 736, -2796, 674, 0, 1411, 0, 0, 0, 2487, -2274, 0, 0, 0,
+ 0, 0, 0, 0, 2487, 0, -824, 0, 0, -2272, -824, 0, -2272, -824, 0, -824,
+ 0, 0, 0, 2366, -4274, 0, 592, 0, 0, -355, 0, 0, 2366, 0, -1278, 0,
+ 1172, -2486, -1260, 592, -2486, -1260, 0, -686, 0, 0, 0, 3664, -4597, 0, 636, 0,
+ 0, 736, 0, 0, 3664, 0, -234, 0, 1260, -2675, -234, 636, -2675, -234, 0, 403,
+ 0, 0, 0, 4695, -2749, 0, 0, 0, 0, 1688, 0, 0, 4695, 0, 692, 0,
+ 0, -2747, 692, 0, -2747, 692, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, 0, -109, 3902, -16, -903, 0, 0, 0, 0, 0, -109, 0, 411, 0,
+ -1682, 84, 1158, -913, 84, 1158, 0, -499, 0, 0, 0, -2685, 174, 0, -1117, 0,
+ 0, 0, 0, 0, -2684, 0, 628, 0, 2, 2447, -1048, -1353, 2447, -1039, -2, -684,
+ 0, 0, 0, 0, 2615, 0, -866, 0, 0, 0, 0, 0, 0, 0, 2424, 0,
+ -1716, 0, 1459, -866, 0, 1459, 0, 1558, 0, 0, 0, 0, 12, 0, -4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, -4, 0, 0, 0, -4,
+ 0, -2, 0, 0, 25, -2, -10, 0, 0, 0, 0, 0, 0, 0, -326, 0,
+ -16, -2, 0, -10, -2, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 736,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1688, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1688, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+const int16_t *const batch_matmul_4_s16_output_ref = batch_matmul_4_s16_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_input_tensor.h
new file mode 100644
index 00000000..25f47df8
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_input_tensor.h
@@ -0,0 +1,89 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_4_s16_rhs_input_tensor[1152] = {
+ 14352, -26295, -1, 0, 3, 0, 0, 0, 112, 0, 0, 0, 48, 0,
+ 0, 0, -17312, 28779, -21856, 0, 27, 0, 0, 0, 30, 0, 0, 0,
+ 29556, -9728, -21846, 0, -16976, 28779, -21856, 0, 97, 0, 0, 0, 1440, -9530,
+ -21846, 0, 2464, -9530, -21846, 0, 14352, -26295, -1, 0, 32, 0, 0, 0,
+ 0, 0, -21846, 0, 49, 0, 0, 0, 1440, -9530, -21846, 0, -17552, -18877,
+ -1, 0, 14352, -26295, -1, 0, 24, 0, 0, 0, 848, 0, 0, 0,
+ 80, 0, 0, 0, -22880, 28779, -21856, 0, 2720, -9530, -21846, 0, 3504, -9530,
+ -21846, 0, 3600, -9530, -21846, 0, 3648, -9530, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1584, 0, 0, 0, 80, 0,
+ 0, 0, -23472, 28779, -21856, 0, 26, 0, 0, 0, 26, 0, 0, 0,
+ 0, 0, 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, 3904, -9530,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6737, 0, 0, 0,
+ 1440, -9530, -21846, 0, -17552, -18877, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 3424, -9530, -21846, 0,
+ 4224, -9530, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 48, 0,
+ 0, 0, -17071, 28779, -21856, 0, 2561, 2567, 18179, 21840, 16, 562, 74, 312,
+ 386, 0, 0, 0, 304, 0, 0, 0, 80, 0, 0, 0, -17151, 28779,
+ -21856, 0, 1, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0,
+ -1072, -26312, -1, 0, 0, 0, 0, 0, 4240, -9530, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 1040, -9530, -21846, 0,
+ -1456, -9527, -21846, 0, -15056, -26312, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 8776, -26691, -1, 0, 0, 0, 0, 0, 4418, -9530,
+ -21846, 0, 0, 0, -1, 0, 176, 0, 0, 0, 48, 0, 0, 0,
+ -23711, 28779, -21856, 0, 62, 0, 0, 0, 62, 0, 0, 0, 0, 0,
+ 0, 0, 608, 0, 0, 0, 80, 0, 0, 0, -23855, 28779, -21856, 0,
+ 25454, 24421, 28525, 25956, 24428, 24940, 25977, 24434, 24931, 27756, 24927, 25710, 29279, 29797,
+ 29301, 24430, 28515, 25710, 29801, 28521, 24942, 24428, 28524, 29555, 29541, 14431, 13363, 0,
+ 4032, -9530, -21846, 0, 6049, 0, 0, 0, 11088, -9530, -21846, 0, 2176, -9530,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -15056, -26312, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, 0, 0, 0,
+ 0, 0, 8, 0, 0, 0, -22497, 30347, 4030, 0, 8, 0, 0, 0,
+ 5008, -9530, -21846, 0, 0, 0, 0, 0, 4818, -9530, -21846, 0, 4866, -9530,
+ -21846, 0, 14352, -26295, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 224, 0, 0, 0, 48, 0, 0, 0, -16751, 28779, -21856, 0, 1504, -9530,
+ -21846, 0, 4544, -9530, -21846, 0, 0, 0, 0, 0, 272, 0, 0, 0,
+ 48, 0, 0, 0, -17919, 28779, -21856, 0, 8, 0, 0, 0, 25673, 28261,
+ 26996, 31092, 0, 0, 0, 0, -1072, -26312, -1, 0, 49, 0, 0, 0,
+ 5632, -9530, -21846, 0, -17552, -18877, -1, 0, 25673, 28261, 26996, 31092, 0, 0,
+ 0, 0, 368, 0, 0, 0, 48, 0, 0, 0, -16591, 28779, -21856, 0,
+ 24, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 416, 0,
+ 0, 0, 48, 0, 0, 0, -21663, 28779, -21856, 0, 25966, 17252, 27745, 14956,
+ 30063, 28788, 29813, 12346, 0, 0, 0, 0, 464, 0, 0, 0, 80, 0,
+ 0, 0, -16463, 28779, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 544, 0, 0, 0, 80, 0, 0, 0,
+ -18367, 28779, -21856, 0, 1, 0, 0, 0, 84, 0, 0, 0, 0, 0,
+ 0, 0, -1072, -26312, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 624, 0, 0, 0, 80, 0, 0, 0, -17679, 28779,
+ -21856, 0, 14, 0, 0, 0, 28511, 29813, 30064, 24436, 26739, 28769, 29541, 0,
+ -1072, -26312, -1, 0, 0, 0, 0, 0, 5248, -9530, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 28400, -9471, -21846, 0,
+ 3152, -9530, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21856, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 64, 0,
+ 0, 0, -24255, 28779, -21856, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 273, 0, 0, 0, 6224, -9530, -21846, 0, 4528, -9530, -21846, 0,
+ 14352, -26295, -1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 225, 0,
+ 0, 0, 4528, -9530, -21846, 0, -17552, -18877, -1, 0, 32, 0, 0, 0,
+ 48, 0, 0, 0, -17951, 28779, -21856, 0, 0, 0, 0, 0, 14352, -26295,
+ -1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0,
+ 4528, -9530, -21846, 0, -17552, -18877, -1, 0, 48, -9530, -21846, 0, 5696, -9530,
+ -21846, 0, 48, 0, 0, 0, 48, 0, 0, 0, -17999, 28779, -21856, 0,
+ 0, 0, 0, 0, 14352, -26295, -1, 0, 32, 0, 0, 0, 0, 0,
+ 0, 0, 49, 0, 0, 0, 4528, -9530, -21846, 0, -17552, -18877, -1, 0,
+ 14352, -26295, -1, 0, 24, 0, 0, 0, 1248, 0, 0, 0, 80, 0,
+ 0, 0, -24479, 28779, -21856, 0, 5520, -9530, -21846, 0, 5600, -9530, -21846, 0,
+ 5696, -9530, -21846, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_transposed_tensor.h
new file mode 100644
index 00000000..35201020
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/rhs_transposed_tensor.h
@@ -0,0 +1,89 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_4_s16_rhs_transposed_tensor[1152] = {
+ 14352, -17312, -16976, 14352, 1440, 848, 3504, 0, -23472, -1072, 0, 0, 3424, 0,
+ 0, 0, 0, 0, 208, 16, -17151, -1072, 0, -15056, -26295, 28779, 28779, -26295,
+ -9530, 0, -9530, 0, 28779, -26312, 0, 0, -9530, 0, 0, 0, 0, 0,
+ 0, 562, 28779, -26312, 0, -26312, -1, -21856, -21856, -1, -21846, 0, -21846, 0,
+ -21856, -1, 0, 0, -21846, 0, 0, 0, 0, 0, 0, 74, -21856, -1,
+ 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 3, 27,
+ 97, 32, -17552, 80, 3600, 0, 26, 0, 6737, 0, 4224, 0, 0, 0,
+ 0, 0, 48, 386, 1, 0, 225, 0, 0, 0, 0, 0, -18877, 0,
+ -9530, 0, 0, 0, 0, 0, -9530, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -21846, 0, 0, 0,
+ 0, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 30, 1440, 0,
+ 14352, -22880, 3648, 1584, 26, 3904, 1440, 0, 0, 0, 0, 0, 0, 0,
+ -17071, 304, 102, 4240, 1040, 0, 0, 0, -9530, 0, -26295, 28779, -9530, 0,
+ 0, -9530, -9530, 0, 0, 0, 0, 0, 0, 0, 28779, 0, 0, -9530,
+ -9530, 0, 0, 0, -21846, -21846, -1, -21856, -21846, 0, 0, -21846, -21846, 0,
+ 0, 0, 0, -1, 0, 0, -21856, 0, 0, -21846, -21846, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 29556, 2464, 49, 24, 2720,
+ 0, 80, 0, 0, -17552, 257, 0, 0, 0, 0, 0, 0, 2561, 80,
+ 0, 0, -1456, 0, 0, -9728, -9530, 0, 0, -9530, 0, 0, 0, 0,
+ -18877, 0, 0, 0, 0, 0, 0, 0, 2567, 0, 0, 0, -9527, 0,
+ 0, -21846, -21846, 0, 0, -21846, 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 18179, 0, 0, 0, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21840, 0, 0, 0, 0, 0, 0, 0, 0, 4418, -23711, 608, 24428, 24942,
+ 11088, 0, 0, 0, 8, 0, 0, -16751, 272, 25673, 5632, 368, 30, -21663,
+ 464, 0, 0, 0, 0, -9530, 28779, 0, 24940, 24428, -9530, 0, 0, 0,
+ 0, 0, 0, 28779, 0, 28261, -9530, 0, 0, 28779, 0, 0, 0, 0,
+ 0, -21846, -21856, 0, 25977, 28524, -21846, 0, 0, 0, 0, 0, 0, -21856,
+ 0, 26996, -21846, 0, 0, -21856, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24434, 29555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31092, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0, 62, 80, 24931, 29541, 2176, -15056,
+ 0, 0, -22497, 4818, 0, 1504, 48, 0, -17552, 48, 0, 25966, 80, 0,
+ 0, 0, 0, 0, 0, 0, 27756, 14431, -9530, -26312, 0, 0, 30347, -9530,
+ 0, -9530, 0, 0, -18877, 0, 0, 17252, 0, 0, 0, 0, 0, -1,
+ 0, 0, 24927, 13363, -21846, -1, 0, 0, 4030, -21846, 0, -21846, 0, 0,
+ -1, 0, 0, 27745, 0, 0, 0, 0, 0, 0, 0, 0, 25710, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14956,
+ 0, 0, 0, 0, 8776, 176, 62, -23855, 29279, 4032, 0, 0, 0, 0,
+ 8, 4866, 224, 4544, -17919, -1072, 25673, -16591, 416, 30063, -16463, 0, 0, 0,
+ -26691, 0, 0, 28779, 29797, -9530, 0, 0, 0, 0, 0, -9530, 0, -9530,
+ 28779, -26312, 28261, 28779, 0, 28788, 28779, 0, 0, 0, -1, 0, 0, -21856,
+ 29301, -21846, 0, 0, 0, -21846, 0, -21846, 0, -21846, -21856, -1, 26996, -21856,
+ 0, 29813, -21856, 0, 0, 0, 0, 0, 0, 0, 24430, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 31092, 0, 0, 12346, 0, 0,
+ 0, 1, 0, 48, 0, 25454, 28515, 6049, 0, 0, 0, 0, 5008, 14352,
+ 48, 0, 8, 49, 0, 24, 48, 0, 0, 0, 0, 0, 0, 0,
+ 0, 24421, 25710, 0, 0, 0, 0, 0, -9530, -26295, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28525, 29801, 0,
+ 0, 0, 0, 0, -21846, -1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 25956, 28521, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18367,
+ -1072, 624, 28511, 5248, 28400, 0, 0, 0, 1, 0, 208, 0, 0, 14352,
+ 4528, -17951, 0, 48, -17999, 0, 14352, -24479, 0, 28779, -26312, 0, 29813, -9530,
+ -9471, 0, 0, 0, 0, 0, 0, 0, 0, -26295, -9530, 28779, 0, -9530,
+ 28779, 0, -26295, 28779, 0, -21856, -1, 0, 30064, -21846, -21846, 0, 0, 0,
+ 1, 0, 0, 0, 0, -1, -21846, -21856, 0, -21846, -21856, 0, -1, -21856,
+ 0, 0, 0, 0, 24436, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 80,
+ 26739, 0, 3152, 0, 0, 0, 0, 0, 64, 4, 273, 3, -17552, 0,
+ 145, 5696, 0, 49, 24, 5520, 0, 0, 0, 0, 28769, 0, -9530, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -18877, 0, 0, -9530, 0, 0,
+ 0, -9530, 0, 0, 0, 0, 29541, 0, -21846, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, -1, 0, 0, -21846, 0, 0, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 544, 84, 1, -17679, -1072, 0,
+ 0, 0, 0, 0, 0, 0, -24255, 0, 6224, 0, 32, 14352, 4528, 48,
+ 14352, 4528, 1248, 5600, 0, 0, 0, 28779, -26312, 0, 0, 0, 0, 0,
+ 0, 0, 28779, 0, -9530, 0, 0, -26295, -9530, 0, -26295, -9530, 0, -9530,
+ 0, 0, 0, -21856, -1, 0, 0, 0, 0, -21856, 0, 0, -21856, 0,
+ -21846, 0, 0, -1, -21846, 0, -1, -21846, 0, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 80, 0, 0, 14, 0, 545, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4528, 225, 48, 3, -17552, 48, 32, -17552,
+ 80, 5696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -9530, 0, 0, 0, -18877, 0, 0, -18877, 0, -9530, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21846, 0,
+ 0, 0, -1, 0, 0, -1, 0, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s16/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/config_data.h
new file mode 100644
index 00000000..a7fa2a04
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_4_S8_LHS_BATCH 3
+#define BATCH_MATMUL_4_S8_LHS_HEIGHT 1
+#define BATCH_MATMUL_4_S8_LHS_ROWS 16
+#define BATCH_MATMUL_4_S8_LHS_COLS 32
+#define BATCH_MATMUL_4_S8_RHS_BATCH 1
+#define BATCH_MATMUL_4_S8_RHS_HEIGHT 3
+#define BATCH_MATMUL_4_S8_RHS_ROWS 24
+#define BATCH_MATMUL_4_S8_RHS_COLS 16
+#define BATCH_MATMUL_4_S8_ADJ_X 1
+#define BATCH_MATMUL_4_S8_ADJ_Y 1
+#define BATCH_MATMUL_4_S8_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_4_S8_DST_SIZE 6912
+#define BATCH_MATMUL_4_S8_OUTPUT_BATCH 3
+#define BATCH_MATMUL_4_S8_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_4_S8_OUTPUT_ROWS 32
+#define BATCH_MATMUL_4_S8_OUTPUT_COLS 24
+#define BATCH_MATMUL_4_S8_LHS_OFFSET 128
+#define BATCH_MATMUL_4_S8_RHS_OFFSET 128
+#define BATCH_MATMUL_4_S8_OUTPUT_OFFSET -128
+#define BATCH_MATMUL_4_S8_ACTIVATION_MIN -128
+#define BATCH_MATMUL_4_S8_ACTIVATION_MAX 127
+#define BATCH_MATMUL_4_S8_OUTPUT_MULTIPLIER 1967717248
+#define BATCH_MATMUL_4_S8_OUTPUT_SHIFT -11
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_input_tensor.h
new file mode 100644
index 00000000..e101d7b5
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_input_tensor.h
@@ -0,0 +1,83 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_4_s8_lhs_input_tensor[1536] = {
+ -35, 66, 108, 125, -96, -86, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0, -100, -47, 31, 64,
+ -1, -1, 0, 0, -32, -47, 31, 64, -1, -1, 0, 0, 96, -26, 31, 64, -1, -1, 0, 0,
+ -128, 0, 32, 64, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -78, -105, 85, 62, -21, -82, 54, 24, 2, -9, 29, 28, -86, -86, 0, 0,
+ 113, 22, 0, 0, 0, 0, 0, 0, -128, 92, -110, -41, -86, -86, 0, 0, 64, 74, -30, -41,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 78, 117, 109, 76, 101, 97, 114, 110, 105, 110, 103, 82,
+ 97, 116, 101, 84, 97, 103, 115, 0, -1, -1, -1, -1, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, 104, -45, -53, -41, -86, -86, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 117, 109, 84, 97, 98, 108, 101,
+ 115, 0, 43, -55, -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -96, -45, -53, -41, -86, -86, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 101, 110, 100, 84, 111,
+ 72, 111, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, -32, -45, -53, -41, -86, -86, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 105, 110, 112, 117, 116, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 16, -44, -53, -41,
+ -86, -86, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 83, 101, 116, 66, 111, 117, 110, 100, 0, -1, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 72, -44, -53, -41, -86, -86, 0, 0,
+ 29, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 83, 101, 116, 68, 121, 110, 97, 109, 105, 99, 68, 105, 109, 101, 110, 115, 105, 111,
+ 110, 83, 105, 122, 101, 0, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -112, -44, -53, -41, -86, -86, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 104, 97, 114, 100, 105,
+ 110, 103, 0, -1, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ -56, -44, -53, -41, -86, -86, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 115, 104, 97, 114, 100, 105, 110, 103, 0, -29, 107, -33, -1, -1, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 0, -43, -53, -41,
+ -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 83, 111, 114, 116, 0, -41, -86, -86, 0, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 56, -43, -53, -41, -86, -86, 0, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 83, 112, 97, 114, 115, 101, 67, 111, 114, 101, 65, 100, 97, 103, 114, 97, 100, 77,
+ 111, 109, 101, 110, 116, 117, 109, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -128, -43, -53, -41, -86, -86, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 98, 101, 116, 97, 95, 50, 0, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -80, -43, -53, -41, -86, -86, 0, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 120, 112, 111,
+ 110, 101, 110, 116, 0, -16, -1, -1, -1, -1, -1, -1, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, -24, -43, -53, -41, -86, -86, 0, 0, 23, 0, 0, 0,
+ 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112,
+ 97, 114, 115, 101, 67, 111, 114, 101, 65, 100, 97, 103, 114, 97, 100, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 40, -42, -53, -41, -86, -86, 0, 0,
+ 20, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 83, 112, 97, 114, 115, 101, 67, 111, 114, 101, 65, 100, 97, 109, 0, -86, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 104, -42, -53, -41,
+ -86, -86, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 117, 115, 101, 95, 115, 117, 109, 95, 105, 110, 115, 105, 100, 101, 95, 115, 113, 114, 116, 0,
+ -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ -88, -42, -53, -41, -86, -86, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112, 97, 114, 115, 101, 67, 111, 114, 101,
+ 70, 116, 114, 108, 0, -1, -1, -1, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -24, -42, -53, -41, -86, -86, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 108, 49, 95, 114, 101, 103, 117, 108, 97, 114, 105, 122,
+ 97, 116, 105, 111, 110, 95, 115, 116, 114, 101, 110, 103, 116, 104, 0, 61, -1, -1, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 48, -41, -53, -41,
+ -86, -86, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 109, 117, 108, 116, 105, 112, 108, 121, 95, 108, 105, 110, 101, 97, 114, 95, 98, 121, 95, 108,
+ 101, 97, 114, 110, 105, 110, 103, 95, 114, 97, 116, 101, 0, 87, 44, 24, -1, -1, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -128, -41, -53, -41,
+ -86, -86, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 83, 112, 97, 114, 115, 101, 67, 111, 114, 101, 83, 103, 100, 0,
+ -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ -64, -41, -53, -41, -86, -86, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112, 97, 114, 115, 101, 68, 101, 110, 115,
+ 101, 77, 97, 116, 109, 117, 108, 71, 114, 97, 100, 87, 105, 116, 104, 83, 103, 100, 65, 110,
+ 100, 67, 115, 114, 73, 110, 112, 117, 116, 0, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, 24, -40, -53, -41, -86, -86, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, 105, 112, 95, 119, 101, 105,
+ 103, 104, 116, 95, 109, 97, 120, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, 80, -40, -53, -41, -86, -86, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, 105, 112, 95, 119, 101, 105, 103, 104, 116, 95,
+ 109, 105, 110, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ -120, -40, -53, -41, -86, -86, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_transposed_tensor.h
new file mode 100644
index 00000000..b61fcc5e
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/lhs_transposed_tensor.h
@@ -0,0 +1,83 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_4_s8_lhs_transposed_tensor[1536] = {
+ -35, 96, 0, 0, -128, 0, 80, 0, 24, 116, 24, 84, 14, 80, -16, 110, 66, -26, 0, 0,
+ 92, 0, -38, 0, -71, 102, -71, 105, 0, -38, -32, 83, 108, 31, 0, 0, -110, 0, -100, 0,
+ -78, 46, -78, 110, 0, -100, -77, 105, 125, 64, 0, 0, -41, 0, -41, 0, -41, 88, -41, 112,
+ 0, -41, -41, 122, -96, -1, 0, 0, -86, 0, -86, 0, -86, 108, -86, 117, 0, -86, -86, 101,
+ -86, -1, 0, 0, -86, 0, -86, 0, -86, 97, -86, 116, 0, -86, -86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 101, 0, 0, 0, 0, 0, 0, 52, -128, 3, -78, 64, 78, 24, 78, -96, 110, -32, 80,
+ -16, 24, 116, 80, 0, 0, 0, -105, 74, 117, -71, 117, -45, 100, -45, -38, -32, -71, 102, -38,
+ 0, 32, 0, 85, -30, 109, -78, 109, -53, 84, -53, -100, -77, -78, 46, -100, 0, 64, 0, 62,
+ -41, 76, -41, 84, -41, 111, -41, -41, -41, -41, 88, -41, 3, -1, 0, -21, -86, 101, -86, 97,
+ -86, 72, -86, -86, -86, -86, 108, -86, 0, -1, 0, -82, -86, 97, -86, 98, -86, 111, -86, -86,
+ -86, -86, 97, -86, 0, 0, 0, 54, 0, 114, 0, 108, 0, 115, 0, 0, 0, 0, 83, 0,
+ 0, 0, 0, 24, 0, 110, 0, 101, 0, 116, 0, 0, 0, 0, 101, 0, -100, 0, 0, 2,
+ 0, 105, 104, 115, 16, 0, 6, 24, 116, 72, 116, 24, -47, 0, 0, -9, 0, 110, -45, 0,
+ 0, 0, 0, -71, 102, -44, 68, -71, 31, 0, 0, 29, 0, 103, -53, 43, 0, 0, 0, -78,
+ 46, -53, 121, -78, 64, 0, 0, 28, 0, 82, -41, -55, 0, 0, 0, -41, 88, -41, 110, -41,
+ -1, 0, 0, -86, 0, 97, -86, -86, 0, 0, 0, -86, 108, -86, 97, -86, -1, 0, 0, -86,
+ 0, 116, -86, -86, 0, 0, 0, -86, 97, -86, 109, -86, 0, 0, 0, 0, 0, 101, 0, 0,
+ 0, 0, 0, 0, 83, 0, 105, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0,
+ 101, 0, 99, 0, -32, 52, 0, 113, 0, 97, 9, 80, -16, 80, 0, 16, 116, 29, 68, -112,
+ -47, 0, 0, 22, 0, 103, 0, -38, -32, -38, 0, -44, 66, 0, 105, -44, 31, 0, 0, 0,
+ 0, 115, 0, -100, -77, -100, 0, -53, 111, 0, 109, -53, 64, 0, 0, 0, 0, 0, 0, -41,
+ -41, -41, 0, -41, 117, 0, 101, -41, -1, 0, 0, 0, 0, -1, 0, -86, -86, -86, 0, -86,
+ 110, 0, 110, -86, -1, 0, 0, 0, 0, -1, 0, -86, -86, -86, 0, -86, 100, 0, 115, -86,
+ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0,
+ 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 111, 0, 14, 80, 0, 24, 116, 56, 97, 24,
+ 98, 8, 80, -16, 80, -16, 80, 0, 0, -38, 0, -71, 102, -43, 114, -71, 101, 0, -38, -32,
+ -38, -32, -38, 0, 0, -100, 0, -78, 46, -53, 115, -78, 116, 0, -100, -77, -100, -77, -100, 0,
+ 0, -41, 0, -41, 88, -41, 101, -41, 97, 0, -41, -41, -41, -41, -41, 0, 0, -86, 0, -86,
+ 108, -86, 67, -86, 95, 0, -86, -86, -86, -86, -86, 0, 0, -86, 0, -86, 97, -86, 111, -86,
+ 50, 0, -86, -86, -86, -86, -86, 0, 0, 0, 0, 0, 83, 0, 114, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -16, 24, 115, 0, 114, 31, 65, -128, 80, 0, 24, 116, 24, 116, 24, 117, -32, -71, 104, -43,
+ 116, 0, 100, -43, -38, 0, -71, 102, -71, 102, -71, 115, -77, -78, 97, -53, 0, 0, 97, -53,
+ -100, 0, -78, 46, -78, 46, -78, 101, -41, -41, 114, -41, -41, 0, 103, -41, -41, 0, -41, 88,
+ -41, 88, -41, 95, -86, -86, 100, -86, -86, 0, 114, -86, -86, 0, -86, 108, -86, 108, -86, 115,
+ -86, -86, 105, -86, -86, 0, 97, -86, -86, 0, -86, 97, -86, 97, -86, 117, 0, 0, 110, 0,
+ 0, 0, 100, 0, 0, 0, 0, 83, 0, 83, 0, 109, 0, 0, 103, 0, 0, 0, 77, 0,
+ 0, 0, 0, 112, 0, 112, 0, 95, 116, -56, 0, 10, 80, -16, 111, 6, 24, 101, -24, 97,
+ 40, 97, 104, 105, 102, -44, -29, 0, -38, -32, 109, 0, -71, 120, -43, 114, -42, 114, -42, 110,
+ 46, -53, 107, 0, -100, -77, 101, 0, -78, 112, -53, 115, -53, 115, -53, 115, 88, -41, -33, 0,
+ -41, -41, 110, 0, -41, 111, -41, 101, -41, 101, -41, 105, 108, -86, -1, 0, -86, -86, 116, 0,
+ -86, 110, -86, 67, -86, 67, -86, 100, 97, -86, -1, 0, -86, -86, 117, 0, -86, 101, -86, 111,
+ -86, 111, -86, 101, 83, 0, 0, 0, 0, 0, 109, 0, 0, 110, 0, 114, 0, 114, 0, 95,
+ 104, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 101, 0, 101, 0, 115, 97, 8, 80, -16,
+ 24, 116, 80, 0, -80, 0, 23, 65, 20, 65, 19, 113, 114, 0, -38, -32, -71, 102, -38, 0,
+ -43, -16, 0, 100, 0, 100, 0, 114, 100, 0, -100, -77, -78, 46, -100, 0, -53, -1, 0, 97,
+ 0, 97, 0, 116, 105, 0, -41, -41, -41, 88, -41, 0, -41, -1, 0, 103, 0, 109, 0, 0,
+ 110, 0, -86, -86, -86, 108, -86, 0, -86, -1, 0, 114, 0, 0, 0, -86, 103, 0, -86, -86,
+ -86, 97, -86, 0, -86, -1, 0, 97, 0, -86, 0, -86, 0, 0, 0, 0, 0, 83, 0, 0,
+ 0, -1, 0, 100, 0, 0, 0, 0, -1, 0, 0, 0, 0, 112, 0, 0, 0, -1, 0, 0,
+ 0, 0, 0, 0, 80, -16, 80, 0, 116, 32, 98, 24, 116, 24, 116, 103, 24, 103, 15, 80,
+ -38, -32, -38, 0, 104, 0, 121, -71, 102, -71, 102, 100, -40, 104, 0, -38, -100, -77, -100, 0,
+ 0, 0, 95, -78, 46, -78, 46, 65, -53, 116, 0, -100, -41, -41, -41, 0, 61, 0, 108, -41,
+ 88, -41, 88, 110, -41, 95, 0, -41, -86, -86, -86, 0, -1, 0, 101, -86, 108, -86, 108, 100,
+ -86, 109, 0, -86, -86, -86, -86, 0, -1, 0, 97, -86, 97, -86, 97, 67, -86, 97, 0, -86,
+ 0, 0, 0, 0, 0, 0, 114, 0, 83, 0, 83, 115, 0, 120, 0, 0, 0, 0, 0, 0,
+ 0, 0, 110, 0, 112, 0, 112, 114, 0, 0, 0, 0, 24, 116, 24, 108, 80, 0, 105, -128,
+ 97, -64, 97, 73, 15, 80, 0, 24, -71, 102, -71, 49, -38, 0, 110, -41, 114, -41, 114, 110,
+ 0, -38, 0, -71, -78, 46, -78, 95, -100, 0, 103, -53, 115, -53, 115, 112, 0, -100, 0, -78,
+ -41, 88, -41, 114, -41, 0, 95, -41, 101, -41, 101, 117, 0, -41, 0, -41, -86, 108, -86, 101,
+ -86, 0, 114, -86, 67, -86, 68, 116, 0, -86, 0, -86, -86, 97, -86, 103, -86, 0, 97, -86,
+ 111, -86, 101, 0, 0, -86, 0, -86, 0, 83, 0, 117, 0, 0, 116, 0, 114, 0, 110, 0,
+ 0, 0, 0, 0, 0, 112, 0, 108, 0, 0, 101, 0, 101, 0, 115, 0, 0, 0, 0, 0,
+ -88, 97, -24, 97, 24, 109, 0, 19, 83, 45, 101, 80, 0, 24, 99, -120, -42, 114, -42, 114,
+ -71, 117, 87, 0, 103, 0, 77, -38, 0, -71, 108, -40, -53, 115, -53, 105, -78, 108, 44, 0,
+ 100, 0, 97, -100, 0, -78, 105, -53, -41, 101, -41, 122, -41, 116, 24, 0, 0, 0, 116, -41,
+ 0, -41, 112, -41, -86, 67, -86, 97, -86, 105, -1, 0, -86, 0, 109, -86, 0, -86, 95, -86,
+ -86, 111, -86, 116, -86, 112, -1, 0, -86, 0, 117, -86, 0, -86, 119, -86, 0, 114, 0, 105,
+ 0, 108, 0, 0, 0, 0, 108, 0, 0, 0, 101, 0, 0, 101, 0, 111, 0, 121, 0, 0,
+ 0, 0, 71, 0, 0, 0, 105, 0, 20, 70, 26, 110, 48, 95, 80, -16, 80, -16, 114, 24,
+ 99, 80, 103, 35, 0, 116, 0, 95, -41, 108, -38, -32, -38, -32, 97, -71, 108, -40, 104, 0,
+ 0, 114, 0, 115, -53, 105, -100, -77, -100, -77, 100, -78, 105, -53, 116, 0, 0, 108, 0, 116,
+ -41, 110, -41, -41, -41, -41, 87, -41, 112, -41, 95, 0, 0, 0, 0, 114, -86, 101, -86, -86,
+ -86, -86, 105, -86, 95, -86, 109, 0, 0, -1, 0, 101, -86, 97, -86, -86, -86, -86, 116, -86,
+ 119, -86, 105, 0, 0, -1, 0, 110, 0, 114, 0, 0, 0, 0, 104, 0, 101, 0, 110, 0,
+ 0, -1, 0, 103, 0, 95, 0, 0, 0, 0, 83, 0, 105, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/output.h
new file mode 100644
index 00000000..6a9e8979
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/output.h
@@ -0,0 +1,309 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_4_s8_output[6912] = {
+ 62, 127, 75, -27, 0, 86, 2, -27, 16, 127, 48, -27, 6, 86, 123, -27, -1, 86, 127, 37, -30, -11, 125,
+ 62, 24, 97, 60, -38, -25, 54, -17, -40, 1, 107, 42, -38, -13, 53, 94, -38, -30, 53, 103, 29, -41, -17,
+ 99, 48, 7, 68, 33, -44, -37, 28, -19, -48, -16, 73, 18, -44, -23, 27, 61, -44, -43, 27, 71, 7, -49,
+ -31, 67, 22, 36, 109, 68, -28, -17, 63, 1, -32, 7, 117, 47, -28, -2, 62, 103, -28, -23, 62, 113, 35,
+ -34, -12, 109, 55, 2, 53, 17, -62, -42, 23, -42, -60, -27, 57, 1, -62, -40, 22, 45, -62, -42, 22, 55,
+ -12, -61, -43, 51, 8, -10, 43, 11, -68, -48, 11, -47, -66, -33, 46, -4, -68, -45, 11, 39, -68, -49, 11,
+ 44, -17, -67, -49, 41, 2, 22, 90, 54, -43, -25, 48, -20, -43, -5, 97, 31, -43, -17, 49, 90, -43, -28,
+ 49, 95, 20, -46, -25, 87, 43, 23, 92, 56, -43, -24, 50, -20, -43, -4, 99, 32, -43, -16, 51, 91, -43,
+ -27, 51, 97, 21, -45, -24, 89, 44, 42, 118, 70, -30, -13, 73, -17, -29, 12, 126, 51, -30, -2, 74, 115,
+ -30, -17, 74, 123, 32, -30, -9, 116, 55, 8, 88, 64, -45, -32, 40, -24, -45, -6, 95, 43, -45, -24, 41,
+ 89, -45, -35, 41, 92, 25, -46, -20, 86, 49, -12, 72, 55, -50, -41, 18, -25, -51, -15, 77, 40, -50, -33,
+ 19, 75, -50, -44, 19, 76, 24, -53, -26, 67, 47, 17, 99, 69, -39, -25, 46, -11, -39, 0, 105, 50, -39,
+ -17, 47, 100, -39, -28, 47, 103, 35, -41, -16, 94, 59, -21, 49, 30, -57, -49, 5, -35, -57, -28, 53, 18,
+ -57, -42, 6, 52, -57, -53, 6, 53, 2, -58, -37, 44, 21, -20, 45, 28, -59, -50, 4, -38, -59, -30, 48,
+ 14, -59, -43, 5, 47, -59, -54, 5, 48, -4, -60, -39, 41, 18, 43, 127, 91, -27, -8, 76, -3, -27, 18,
+ 127, 67, -27, 0, 77, 127, -27, -11, 77, 127, 51, -30, -3, 126, 78, 43, 127, 88, -28, -9, 76, -4, -27,
+ 17, 127, 64, -28, -1, 77, 127, -28, -11, 77, 127, 48, -30, -4, 124, 75, 60, 127, 83, -27, 2, 92, -6,
+ -25, 24, 127, 61, -27, 5, 93, 127, -27, 3, 93, 127, 50, -28, -3, 127, 72, 8, 82, 44, -53, -34, 39,
+ -32, -53, -10, 87, 23, -53, -28, 39, 84, -53, -35, 39, 86, 16, -55, -30, 77, 33, 12, 94, 60, -41, -29,
+ 44, -18, -43, -3, 100, 39, -41, -19, 45, 97, -41, -32, 45, 98, 30, -45, -20, 89, 48, 21, 98, 56, -39,
+ -26, 53, -16, -42, 0, 105, 35, -39, -14, 53, 100, -39, -30, 53, 103, 31, -45, -20, 93, 44, -4, 60, 27,
+ -59, -44, 25, -39, -60, -22, 65, 5, -59, -36, 26, 63, -59, -47, 26, 64, 2, -63, -40, 55, 14, -4, 62,
+ 30, -59, -44, 27, -38, -60, -21, 67, 8, -59, -36, 27, 65, -59, -46, 27, 66, 4, -62, -39, 57, 16, 34,
+ 113, 64, -36, -17, 66, -14, -37, 7, 119, 42, -36, -9, 66, 112, -36, -20, 66, 116, 35, -40, -15, 107, 51,
+ 35, 113, 62, -36, -17, 66, -15, -37, 7, 118, 40, -36, -9, 66, 111, -36, -19, 66, 116, 34, -40, -16, 107,
+ 50, 43, 127, 85, -33, -8, 78, -6, -33, 19, 127, 63, -33, -1, 79, 127, -33, -9, 79, 127, 50, -36, -7,
+ 127, 74, 12, 89, 44, -49, -31, 44, -30, -50, -7, 94, 26, -49, -25, 44, 89, -49, -32, 44, 92, 22, -52,
+ -27, 82, 34, 3, 82, 33, -51, -36, 36, -32, -54, -10, 86, 19, -51, -27, 36, 82, -51, -40, 36, 85, 19,
+ -55, -31, 75, 23, 19, 91, 42, -42, -27, 47, -20, -45, -4, 96, 25, -42, -15, 47, 92, -42, -31, 47, 95,
+ 20, -47, -26, 86, 31, -6, 62, 16, -59, -42, 22, -40, -61, -21, 66, 3, -59, -35, 22, 64, -59, -46, 22,
+ 65, 0, -61, -42, 55, 7, -6, 62, 16, -58, -43, 21, -40, -60, -22, 65, 3, -58, -35, 22, 63, -58, -46,
+ 22, 65, 0, -61, -41, 54, 7, 23, 94, 51, -40, -24, 51, -18, -41, -3, 100, 30, -40, -16, 51, 92, -40,
+ -26, 51, 97, 23, -43, -23, 88, 40, 23, 94, 51, -39, -24, 51, -17, -40, -3, 100, 30, -39, -16, 52, 93,
+ -39, -26, 52, 98, 23, -43, -22, 89, 40, -27, 3, 27, -27, 6, 85, 34, -36, 16, 127, 1, -31, -11, 122,
+ 61, -27, 3, 85, 11, -22, -12, 44, -27, -3, -38, -18, 7, -38, -13, 52, 29, -43, 1, 104, -14, -41, -17,
+ 96, 51, -38, -19, 51, 0, -38, -18, 36, -38, -31, -44, -28, -12, -44, -23, 27, 6, -51, -17, 72, -27, -49,
+ -31, 63, 23, -44, -30, 26, -10, -46, -33, 13, -44, -45, -28, -8, 14, -28, -2, 61, 34, -37, 6, 115, -5,
+ -34, -12, 105, 56, -28, -9, 60, 12, -29, -14, 43, -28, -25, -62, -41, -19, -62, -40, 21, -13, -62, -27, 56,
+ -38, -61, -43, 47, 7, -62, -41, 20, -32, -59, -43, -6, -62, -43, -68, -46, -25, -68, -45, 10, -18, -68, -33,
+ 45, -44, -67, -49, 38, 1, -68, -46, 10, -37, -64, -49, -12, -68, -49, -43, -21, 6, -43, -17, 46, 19, -51,
+ -5, 95, -18, -47, -25, 86, 43, -43, -21, 47, -7, -39, -26, 28, -43, -29, -43, -20, 8, -43, -16, 48, 20,
+ -50, -4, 96, -17, -46, -24, 88, 45, -43, -20, 49, -6, -39, -25, 29, -43, -28, -30, -6, 17, -30, -2, 71,
+ 32, -31, 11, 123, -7, -30, -9, 115, 59, -30, -7, 71, -1, -28, -10, 44, -30, -19, -45, -27, 6, -45, -24,
+ 37, 24, -49, -6, 92, -9, -47, -20, 86, 50, -45, -28, 39, -6, -42, -21, 39, -45, -36, -50, -37, -4, -50,
+ -34, 15, 22, -55, -16, 75, -24, -53, -26, 68, 47, -50, -37, 17, -6, -49, -27, 35, -50, -45, -39, -20, 11,
+ -39, -17, 43, 33, -44, -1, 103, -11, -42, -16, 94, 58, -39, -21, 45, 6, -37, -17, 45, -39, -29, -57, -45,
+ -19, -57, -42, 1, 1, -60, -29, 52, -31, -58, -37, 45, 22, -57, -45, 4, -22, -56, -38, 12, -57, -54, -59,
+ -46, -20, -59, -43, 0, -5, -61, -31, 48, -31, -60, -39, 42, 19, -59, -46, 3, -27, -57, -40, 7, -59, -55,
+ -27, -4, 30, -27, 0, 74, 49, -34, 17, 127, 1, -30, -3, 126, 79, -27, -4, 75, 16, -23, -4, 63, -27,
+ -12, -28, -4, 29, -28, -1, 73, 46, -35, 16, 127, 1, -31, -4, 124, 76, -28, -5, 74, 14, -24, -5, 60,
+ -28, -13, -27, 3, 26, -27, 4, 89, 48, -33, 24, 127, 5, -29, -3, 127, 71, -27, 3, 89, 12, -21, -4,
+ 60, -27, 2, -53, -31, -5, -53, -29, 35, 15, -60, -11, 85, -22, -56, -30, 77, 33, -53, -31, 36, -14, -49,
+ -31, 22, -53, -36, -41, -23, 4, -41, -19, 41, 29, -50, -3, 98, -15, -46, -20, 90, 49, -41, -24, 42, 0,
+ -39, -21, 39, -41, -34, -39, -19, 4, -39, -15, 49, 30, -49, -1, 102, -15, -46, -20, 93, 46, -39, -20, 49,
+ 1, -38, -22, 34, -39, -32, -59, -40, -16, -59, -37, 21, 1, -68, -22, 63, -28, -64, -40, 56, 15, -59, -41,
+ 22, -25, -57, -41, 5, -59, -48, -59, -40, -14, -59, -36, 22, 4, -67, -21, 65, -27, -63, -39, 58, 17, -59,
+ -40, 23, -23, -56, -40, 7, -59, -48, -36, -13, 11, -36, -10, 62, 34, -44, 7, 116, -8, -41, -15, 107, 52,
+ -36, -13, 63, 3, -33, -16, 41, -36, -21, -36, -13, 10, -36, -9, 63, 32, -45, 6, 115, -9, -41, -16, 106,
+ 50, -36, -13, 63, 2, -34, -17, 39, -36, -21, -33, -4, 24, -33, -2, 74, 48, -39, 19, 127, -5, -36, -7,
+ 127, 74, -33, -5, 75, 14, -30, -8, 59, -33, -10, -49, -28, -5, -49, -26, 40, 20, -55, -7, 91, -22, -52,
+ -27, 82, 34, -49, -28, 41, -11, -47, -28, 24, -49, -33, -51, -31, -16, -51, -27, 33, 18, -57, -11, 84, -27,
+ -55, -31, 75, 24, -51, -32, 33, -14, -52, -32, 17, -51, -42, -42, -20, -6, -42, -16, 44, 19, -50, -5, 95,
+ -22, -47, -26, 86, 33, -42, -21, 44, -7, -42, -28, 23, -42, -33, -59, -38, -27, -59, -35, 18, -1, -63, -22,
+ 64, -38, -62, -42, 56, 8, -59, -39, 19, -27, -59, -43, 0, -59, -47, -58, -38, -27, -58, -35, 18, -1, -63,
+ -22, 64, -38, -62, -41, 55, 8, -58, -39, 19, -27, -59, -42, 0, -58, -47, -40, -20, 3, -40, -16, 48, 22,
+ -48, -4, 97, -16, -44, -23, 88, 41, -40, -20, 49, -4, -37, -24, 29, -40, -28, -39, -19, 4, -39, -16, 49,
+ 22, -48, -4, 98, -15, -44, -22, 89, 41, -39, -20, 49, -4, -37, -23, 29, -39, -28, 60, 96, -27, 0, 60,
+ 107, -27, 3, 60, 64, -27, 5, 86, 4, -36, 15, 52, -27, -1, 58, 8, -29, -12, 28, 23, 78, -38, -26,
+ 23, 85, -38, -20, 23, 53, -38, -15, 53, -7, -43, 0, 42, -38, -27, 20, -4, -40, -18, 24, 5, 49, -44,
+ -38, 5, 55, -44, -31, 5, 27, -44, -25, 28, -17, -51, -18, 18, -44, -40, 1, -13, -49, -33, 3, 35, 86,
+ -28, -18, 35, 93, -28, -11, 35, 60, -28, -4, 62, 5, -37, 5, 49, -28, -20, 30, 9, -33, -14, 30, 1,
+ 34, -62, -42, 1, 40, -62, -41, 1, 11, -62, -40, 22, -39, -62, -27, -1, -62, -42, -4, -35, -60, -43, -19,
+ -10, 28, -68, -48, -10, 34, -68, -47, -10, 5, -68, -45, 10, -44, -68, -33, -6, -68, -48, -13, -40, -66, -49,
+ -24, 21, 68, -43, -25, 21, 76, -43, -22, 21, 46, -43, -19, 47, -14, -51, -5, 35, -43, -27, 20, -11, -45,
+ -26, 15, 23, 70, -43, -24, 23, 78, -43, -21, 23, 48, -43, -18, 49, -14, -51, -4, 36, -43, -26, 22, -10,
+ -44, -25, 15, 41, 87, -30, -14, 41, 95, -30, -9, 41, 61, -30, -4, 72, -4, -31, 11, 48, -30, -15, 39,
+ -3, -29, -10, 34, 8, 69, -45, -32, 8, 74, -45, -29, 8, 55, -45, -25, 38, -7, -50, -6, 43, -45, -33,
+ 8, -6, -46, -21, 26, -12, 59, -50, -42, -12, 62, -50, -38, -12, 52, -50, -35, 16, -18, -56, -16, 41, -50,
+ -43, -11, -12, -52, -27, 23, 16, 78, -39, -25, 16, 83, -39, -21, 16, 63, -39, -18, 45, -5, -45, -1, 52,
+ -39, -26, 17, 0, -40, -17, 32, -21, 33, -57, -50, -21, 36, -57, -46, -21, 27, -57, -43, 3, -28, -60, -29,
+ 16, -57, -51, -19, -25, -58, -38, 2, -20, 30, -59, -51, -20, 33, -59, -47, -20, 24, -59, -44, 2, -29, -61,
+ -31, 11, -59, -52, -19, -27, -59, -41, -5, 43, 104, -27, -8, 43, 112, -27, -5, 43, 83, -27, -2, 75, 6,
+ -35, 17, 70, -27, -10, 42, 11, -28, -4, 49, 43, 101, -28, -9, 43, 109, -28, -5, 43, 80, -28, -2, 74,
+ 6, -35, 16, 67, -28, -10, 42, 10, -29, -5, 46, 59, 104, -27, 3, 59, 118, -27, 4, 59, 74, -27, 4,
+ 90, 4, -34, 24, 68, -27, 2, 59, 8, -27, -4, 52, 8, 56, -53, -33, 8, 67, -53, -31, 8, 36, -53,
+ -29, 36, -21, -61, -11, 29, -53, -35, 9, -18, -54, -31, 14, 12, 69, -41, -29, 12, 78, -41, -25, 12, 53,
+ -41, -20, 41, -9, -51, -4, 45, -41, -31, 13, -5, -44, -21, 30, 20, 70, -39, -27, 20, 80, -39, -21, 20,
+ 48, -39, -16, 49, -8, -50, -1, 41, -39, -29, 21, -3, -44, -22, 26, -4, 36, -59, -44, -4, 46, -59, -41,
+ -4, 18, -59, -38, 22, -26, -68, -23, 10, -59, -46, -3, -25, -62, -41, -5, -4, 38, -59, -44, -4, 48, -59,
+ -41, -4, 21, -59, -37, 23, -25, -68, -21, 13, -59, -46, -3, -23, -61, -40, -2, 33, 80, -36, -17, 33, 91,
+ -36, -14, 33, 55, -36, -11, 63, -4, -45, 6, 48, -36, -19, 33, -1, -39, -16, 33, 34, 79, -36, -17, 34,
+ 91, -36, -13, 34, 53, -36, -10, 63, -5, -46, 6, 46, -36, -19, 34, -2, -39, -17, 31, 43, 106, -33, -7,
+ 43, 119, -33, -5, 43, 77, -33, -2, 75, 1, -40, 18, 68, -33, -9, 45, 7, -34, -8, 47, 12, 58, -49,
+ -30, 12, 69, -49, -28, 12, 36, -49, -26, 41, -20, -56, -7, 32, -49, -32, 12, -16, -51, -28, 19, 3, 49,
+ -51, -37, 3, 61, -51, -32, 3, 25, -51, -28, 33, -21, -57, -11, 24, -51, -38, 4, -18, -54, -32, 17, 18,
+ 59, -42, -28, 18, 71, -42, -22, 18, 35, -42, -17, 44, -15, -50, -6, 30, -42, -29, 19, -11, -46, -28, 18,
+ -6, 31, -59, -43, -6, 43, -59, -39, -6, 9, -59, -36, 19, -34, -63, -22, 7, -59, -44, -4, -30, -61, -43,
+ -1, -6, 30, -58, -43, -6, 42, -58, -40, -6, 9, -58, -36, 18, -34, -63, -23, 7, -58, -44, -5, -30, -61,
+ -42, -1, 22, 65, -40, -24, 22, 73, -40, -21, 22, 43, -40, -17, 49, -12, -49, -4, 36, -40, -26, 22, -8,
+ -42, -24, 20, 23, 65, -39, -24, 23, 73, -39, -20, 23, 43, -39, -17, 49, -11, -48, -4, 36, -39, -25, 23,
+ -8, -42, -23, 20, 59, 127, 112, -16, 3, 97, 13, -18, 32, 127, 81, -16, 13, 97, 127, -16, 1, 97, 127,
+ 75, -23, 7, 127, 97, 6, 72, 45, -45, -35, 30, -24, -46, -14, 82, 23, -45, -26, 31, 71, -45, -36, 31,
+ 77, 24, -51, -30, 70, 37, -23, 30, 17, -57, -54, -6, -39, -58, -37, 39, 0, -57, -45, -5, 29, -57, -55,
+ -5, 35, 2, -63, -46, 30, 14, 5, 72, 47, -44, -35, 29, -23, -46, -14, 81, 26, -44, -26, 30, 72, -44,
+ -36, 30, 77, 24, -50, -29, 70, 39, -25, 27, 15, -60, -56, -6, -42, -61, -38, 37, -2, -60, -47, -6, 27,
+ -60, -58, -6, 33, -1, -66, -47, 28, 11, -28, 26, 13, -61, -57, -9, -43, -62, -39, 36, -1, -61, -48, -9,
+ 26, -61, -59, -9, 32, -2, -66, -47, 26, 9, 21, 102, 65, -38, -22, 51, -16, -39, 2, 110, 45, -38, -14,
+ 51, 101, -38, -24, 51, 107, 38, -41, -17, 98, 54, 21, 103, 66, -38, -22, 52, -16, -39, 3, 112, 46, -38,
+ -14, 52, 103, -38, -24, 52, 108, 39, -42, -16, 100, 56, 66, 127, 95, -24, 2, 104, 6, -24, 31, 127, 66,
+ -24, 10, 104, 127, -24, 1, 104, 127, 67, -29, 3, 127, 80, 23, 102, 55, -43, -23, 53, -23, -42, 2, 110,
+ 40, -43, -17, 53, 95, -43, -25, 53, 106, 35, -44, -18, 98, 46, -4, 61, 21, -60, -41, 20, -43, -58, -22,
+ 66, 12, -60, -38, 20, 54, -60, -42, 20, 64, 5, -58, -38, 56, 15, 25, 97, 45, -45, -22, 51, -22, -43,
+ -3, 101, 29, -45, -17, 51, 89, -45, -24, 51, 99, 23, -45, -24, 89, 36, 4, 61, 11, -61, -38, 25, -44,
+ -58, -23, 64, 1, -61, -35, 25, 51, -61, -39, 25, 62, -4, -59, -42, 54, 4, 1, 58, 9, -62, -40, 22,
+ -45, -59, -25, 60, -1, -62, -37, 22, 48, -62, -41, 22, 59, -6, -60, -43, 50, 3, 49, 127, 78, -27, -5,
+ 80, -1, -27, 18, 127, 57, -27, 3, 80, 127, -27, -7, 80, 127, 50, -30, -6, 126, 67, 52, 127, 77, -28,
+ -4, 83, -2, -28, 19, 127, 55, -28, 4, 83, 127, -28, -6, 83, 127, 48, -31, -6, 127, 64, 80, 127, 101,
+ -7, 12, 111, 16, -9, 37, 127, 77, -7, 27, 112, 127, -7, 6, 112, 127, 67, -12, 10, 127, 89, 48, 116,
+ 63, -26, -9, 70, -6, -28, 11, 123, 45, -26, 4, 70, 111, -26, -15, 70, 121, 31, -29, -13, 115, 53, 41,
+ 109, 55, -34, -12, 63, -10, -33, 5, 114, 39, -34, -2, 64, 102, -34, -16, 64, 113, 25, -34, -18, 103, 46,
+ 46, 113, 61, -27, -10, 68, -6, -29, 9, 120, 43, -27, 3, 68, 107, -27, -15, 68, 118, 30, -30, -15, 111,
+ 52, 20, 79, 36, -38, -26, 37, -19, -39, -10, 85, 25, -38, -12, 37, 73, -38, -32, 37, 84, 11, -40, -28,
+ 77, 31, 27, 87, 38, -36, -22, 44, -18, -38, -6, 92, 25, -36, -9, 45, 81, -36, -28, 45, 91, 12, -38,
+ -26, 85, 31, 67, 127, 90, -17, 4, 96, 8, -18, 27, 127, 65, -17, 17, 96, 127, -17, 0, 96, 127, 54,
+ -21, 0, 127, 77, 62, 127, 83, -21, -1, 91, 5, -23, 23, 127, 57, -21, 13, 91, 127, -21, -6, 91, 127,
+ 44, -25, -4, 127, 68, 49, 127, 92, -22, -4, 85, 3, -24, 27, 127, 72, -22, 9, 85, 127, -22, -10, 85,
+ 127, 62, -25, 3, 127, 76, 41, 114, 58, -29, -15, 68, -9, -34, 9, 119, 37, -29, -1, 68, 106, -29, -21,
+ 68, 117, 29, -35, -16, 112, 42, 32, 88, 34, -38, -24, 54, -22, -43, -6, 93, 12, -38, -11, 54, 80, -38,
+ -30, 54, 91, 2, -44, -30, 89, 18, 31, 105, 53, -36, -21, 59, -16, -40, 3, 109, 31, -36, -7, 59, 102,
+ -36, -27, 59, 107, 22, -42, -22, 102, 37, 1, 65, 27, -51, -40, 27, -34, -55, -19, 68, 6, -51, -26, 26,
+ 65, -51, -46, 26, 67, -5, -56, -39, 63, 9, -10, 52, 23, -54, -47, 15, -37, -58, -26, 56, 2, -54, -33,
+ 15, 52, -54, -53, 15, 54, -9, -59, -43, 51, 5, 24, 102, 60, -40, -23, 55, -18, -41, 1, 108, 37, -40,
+ -15, 55, 99, -40, -25, 55, 105, 30, -44, -20, 98, 46, 15, 94, 57, -44, -28, 46, -22, -45, -3, 100, 36,
+ -44, -20, 46, 92, -44, -30, 46, 97, 29, -47, -22, 90, 44, -16, 8, 45, -16, 12, 94, 73, -31, 32, 127,
+ 19, -24, 7, 127, 97, -16, 8, 94, 34, -11, 6, 83, -16, -1, -45, -31, -2, -45, -27, 30, 23, -59, -15,
+ 77, -15, -53, -30, 69, 39, -45, -31, 29, -10, -40, -30, 26, -45, -38, -57, -50, -23, -57, -46, -6, 2, -72,
+ -38, 36, -32, -65, -46, 28, 17, -57, -50, -6, -28, -51, -47, 4, -57, -57, -44, -31, -2, -44, -27, 28, 23,
+ -58, -15, 78, -16, -52, -29, 69, 41, -44, -31, 28, -9, -39, -30, 28, -44, -38, -60, -52, -25, -60, -48, -7,
+ -1, -74, -39, 34, -33, -67, -47, 27, 14, -60, -52, -7, -30, -55, -48, 1, -60, -60, -61, -53, -27, -61, -49,
+ -10, -2, -72, -39, 33, -36, -67, -47, 25, 12, -61, -53, -10, -33, -56, -48, -1, -61, -60, -38, -18, 9, -38,
+ -14, 49, 36, -46, 1, 107, -10, -42, -17, 97, 56, -38, -18, 49, 1, -35, -18, 43, -38, -26, -38, -18, 10,
+ -38, -14, 50, 38, -46, 2, 108, -9, -42, -16, 99, 57, -38, -18, 50, 2, -35, -17, 44, -38, -26, -24, 6,
+ 37, -24, 9, 103, 66, -36, 31, 127, 21, -30, 3, 127, 82, -24, 6, 102, 24, -18, 2, 64, -24, 0, -43,
+ -20, 2, -43, -17, 54, 35, -47, 1, 107, -6, -45, -18, 95, 49, -43, -20, 53, -6, -40, -19, 34, -43, -26,
+ -60, -39, -22, -60, -38, 20, 4, -59, -22, 65, -28, -59, -38, 53, 17, -60, -39, 20, -31, -57, -38, 2, -60,
+ -43, -45, -19, -1, -45, -17, 51, 23, -48, -3, 99, -11, -46, -24, 86, 38, -45, -20, 50, -12, -41, -25, 22,
+ -45, -25, -61, -36, -25, -61, -35, 26, -5, -60, -24, 62, -29, -59, -42, 50, 6, -61, -37, 25, -36, -57, -42,
+ -9, -61, -39, -62, -38, -26, -62, -37, 23, -6, -62, -25, 59, -30, -60, -43, 47, 5, -62, -39, 22, -37, -58,
+ -43, -10, -62, -41, -27, 0, 22, -27, 3, 80, 49, -35, 18, 127, 8, -31, -6, 124, 68, -27, -1, 79, 13,
+ -24, -6, 52, -27, -9, -28, 0, 22, -28, 4, 83, 47, -35, 19, 127, 6, -32, -6, 126, 66, -28, 0, 82,
+ 12, -24, -7, 50, -28, -8, -7, 20, 42, -7, 26, 109, 66, -17, 37, 127, 14, -13, 10, 127, 92, -7, 19,
+ 109, 32, -4, 9, 75, -7, 4, -26, -1, 14, -26, 4, 70, 30, -31, 10, 121, -13, -30, -13, 112, 55, -26,
+ -2, 70, 4, -26, -15, 38, -26, -17, -34, -6, 8, -34, -2, 63, 24, -36, 5, 112, -10, -34, -18, 99, 49,
+ -34, -7, 63, -3, -31, -19, 28, -34, -18, -27, -3, 13, -27, 3, 68, 29, -33, 8, 117, -14, -31, -15, 109,
+ 54, -27, -4, 68, 3, -26, -16, 37, -27, -17, -38, -18, -7, -38, -12, 37, 10, -41, -11, 83, -28, -40, -28,
+ 74, 34, -38, -19, 37, -12, -38, -30, 17, -38, -34, -36, -14, -5, -36, -9, 45, 12, -40, -7, 90, -27, -39,
+ -26, 81, 34, -36, -15, 45, -11, -36, -28, 18, -36, -30, -17, 12, 34, -17, 17, 95, 52, -26, 27, 127, 6,
+ -22, 0, 127, 78, -17, 11, 95, 21, -14, -1, 61, -17, -2, -21, 7, 30, -21, 13, 90, 44, -30, 22, 127,
+ 2, -26, -4, 127, 70, -21, 6, 90, 18, -19, -6, 54, -21, -9, -22, 4, 27, -22, 9, 84, 61, -27, 26,
+ 127, 11, -25, 3, 127, 79, -22, 3, 83, 21, -23, 1, 65, -22, -12, -29, -7, 8, -29, -1, 68, 27, -38,
+ 8, 117, -12, -36, -16, 109, 44, -29, -8, 67, 4, -31, -18, 36, -29, -23, -38, -16, -6, -38, -11, 54, 1,
+ -47, -6, 91, -27, -45, -30, 86, 19, -38, -18, 53, -12, -40, -32, 13, -38, -32, -36, -13, 3, -36, -7, 58,
+ 21, -45, 2, 107, -18, -43, -22, 101, 39, -36, -14, 58, -3, -37, -24, 30, -36, -28, -51, -32, -17, -51, -26,
+ 25, -6, -57, -20, 66, -37, -56, -39, 63, 11, -51, -33, 25, -23, -54, -41, 5, -51, -48, -54, -38, -21, -54,
+ -33, 13, -10, -60, -27, 53, -41, -59, -43, 50, 7, -54, -40, 13, -27, -57, -45, 0, -54, -54, -40, -18, 8,
+ -40, -15, 53, 28, -48, 1, 104, -13, -45, -20, 96, 47, -40, -19, 53, -2, -37, -21, 35, -40, -27, -44, -24,
+ 4, -44, -20, 44, 28, -52, -4, 97, -15, -48, -22, 89, 45, -44, -24, 44, -4, -41, -23, 34, -44, -32, 58,
+ 126, -16, 4, 58, 127, -16, 7, 58, 100, -16, 11, 94, 25, -32, 31, 93, -16, 2, 58, 30, -21, 6, 72,
+ 6, 54, -45, -34, 6, 60, -45, -31, 6, 39, -45, -28, 30, -13, -61, -15, 33, -45, -36, 4, -12, -49, -31,
+ 13, -23, 21, -57, -53, -23, 23, -57, -50, -23, 15, -57, -47, -6, -31, -74, -38, 9, -57, -56, -26, -30, -61,
+ -47, -11, 4, 55, -44, -34, 4, 61, -44, -31, 4, 41, -44, -28, 28, -14, -60, -15, 35, -44, -36, 3, -11,
+ -49, -30, 15, -26, 19, -60, -56, -26, 21, -60, -53, -26, 13, -60, -50, -7, -33, -75, -39, 6, -60, -58, -28,
+ -31, -64, -48, -13, -29, 17, -61, -56, -29, 20, -61, -53, -29, 11, -61, -50, -9, -35, -73, -40, 5, -61, -58,
+ -31, -34, -64, -48, -12, 20, 78, -38, -22, 20, 86, -38, -18, 20, 56, -38, -15, 50, -6, -47, 1, 51, -38,
+ -23, 19, -3, -40, -18, 35, 20, 80, -38, -22, 20, 88, -38, -19, 20, 58, -38, -15, 50, -5, -47, 2, 52,
+ -38, -24, 19, -2, -40, -17, 36, 64, 118, -24, 3, 64, 127, -24, 6, 64, 82, -24, 8, 103, 17, -37, 30,
+ 76, -24, 1, 62, 21, -27, 2, 53, 22, 75, -43, -23, 22, 82, -43, -21, 22, 48, -43, -18, 55, -11, -48,
+ 1, 43, -43, -24, 18, -9, -43, -19, 27, -6, 37, -60, -41, -6, 43, -60, -40, -6, 15, -60, -38, 21, -35,
+ -59, -22, 10, -60, -42, -9, -33, -58, -38, -2, 23, 65, -45, -22, 23, 74, -45, -20, 23, 37, -45, -18, 52,
+ -17, -49, -4, 31, -45, -23, 21, -14, -44, -25, 15, 3, 31, -61, -38, 3, 38, -61, -37, 3, 5, -61, -36,
+ 27, -39, -60, -24, -1, -61, -38, -1, -37, -58, -42, -14, 0, 29, -62, -40, 0, 35, -62, -39, 0, 3, -62,
+ -38, 24, -40, -62, -25, -3, -62, -40, -4, -39, -60, -43, -16, 48, 99, -27, -5, 48, 109, -27, -1, 48, 68,
+ -27, 2, 80, 5, -35, 18, 62, -27, -6, 45, 9, -29, -7, 44, 51, 100, -28, -4, 51, 110, -28, 0, 51,
+ 66, -28, 3, 83, 5, -36, 18, 60, -28, -5, 48, 8, -30, -7, 42, 79, 125, -7, 11, 79, 127, -7, 18,
+ 79, 93, -7, 24, 110, 24, -18, 36, 82, -7, 9, 77, 27, -11, 8, 60, 46, 87, -26, -10, 46, 96, -26,
+ -4, 46, 56, -26, 3, 71, -3, -31, 9, 44, -26, -12, 43, 0, -29, -15, 27, 40, 78, -34, -13, 40, 87,
+ -34, -8, 40, 48, -34, -3, 65, -11, -36, 4, 37, -34, -14, 37, -7, -34, -19, 17, 45, 84, -27, -11, 45,
+ 93, -27, -5, 45, 55, -27, 1, 69, -4, -34, 7, 43, -27, -13, 42, -1, -29, -16, 25, 19, 56, -38, -28,
+ 19, 62, -38, -21, 19, 34, -38, -14, 38, -20, -41, -12, 22, -38, -29, 15, -17, -39, -30, 6, 26, 61, -36,
+ -23, 26, 68, -36, -17, 26, 34, -36, -11, 46, -19, -40, -8, 23, -36, -25, 23, -16, -38, -28, 7, 66, 114,
+ -17, 4, 66, 124, -17, 10, 66, 80, -17, 15, 96, 14, -26, 26, 68, -17, 2, 64, 18, -20, -2, 47, 61,
+ 106, -21, -2, 61, 116, -21, 5, 61, 73, -21, 11, 91, 11, -30, 21, 60, -21, -4, 58, 14, -24, -6, 38,
+ 47, 112, -22, -5, 47, 122, -22, 1, 47, 81, -22, 7, 85, 15, -27, 25, 74, -22, -7, 44, 18, -25, 1,
+ 62, 39, 80, -29, -16, 39, 90, -29, -9, 39, 47, -29, -3, 68, -1, -39, 7, 40, -29, -18, 36, 2, -35,
+ -18, 30, 31, 56, -38, -25, 31, 66, -38, -19, 31, 23, -38, -13, 54, -15, -47, -7, 15, -38, -27, 28, -13,
+ -43, -32, 5, 30, 75, -36, -22, 30, 86, -36, -15, 30, 42, -36, -9, 59, -7, -46, 2, 35, -36, -24, 30,
+ -5, -41, -24, 23, 1, 45, -51, -41, 1, 53, -51, -35, 1, 15, -51, -28, 25, -25, -58, -20, 7, -51, -43,
+ 2, -24, -55, -41, -1, -10, 37, -54, -48, -10, 43, -54, -41, -10, 11, -54, -35, 13, -29, -60, -27, 3, -54,
+ -50, -10, -27, -58, -45, -5, 23, 78, -40, -23, 23, 86, -40, -19, 23, 49, -40, -16, 54, -9, -49, 0, 42,
+ -40, -24, 22, -5, -43, -21, 27, 14, 70, -44, -28, 14, 78, -44, -25, 14, 48, -44, -21, 44, -11, -53, -4,
+ 41, -44, -30, 13, -8, -46, -23, 26, 85, 127, 127, -5, 19, 124, 23, -6, 49, 127, 91, -5, 32, 124, 127,
+ -5, 15, 124, 127, 84, -11, 17, 127, 109, 37, 114, 68, -36, -14, 69, -18, -36, 8, 123, 35, -36, -7, 69,
+ 113, -36, -14, 69, 117, 36, -41, -19, 109, 52, 6, 62, 17, -58, -37, 28, -48, -57, -23, 67, -7, -58, -34,
+ 29, 62, -58, -36, 29, 63, -6, -61, -47, 57, 6, 37, 110, 64, -37, -14, 67, -19, -36, 5, 118, 32, -37,
+ -8, 67, 109, -37, -15, 67, 113, 30, -41, -21, 105, 48, 18, 76, 33, -50, -29, 43, -39, -49, -15, 82, 1,
+ -50, -25, 43, 76, -50, -28, 43, 78, 3, -54, -40, 70, 18, 11, 69, 28, -53, -33, 35, -42, -52, -19, 75,
+ -2, -53, -29, 35, 69, -53, -32, 35, 70, 0, -57, -43, 63, 15, 58, 127, 82, -25, 0, 88, -2, -25, 20,
+ 127, 50, -25, 9, 88, 127, -25, -2, 88, 127, 45, -30, -9, 127, 66, 51, 127, 86, -25, -4, 82, -1, -25,
+ 16, 127, 50, -25, 5, 81, 127, -25, -5, 81, 127, 45, -30, -10, 123, 68, 55, 127, 98, -21, 0, 92, 12,
+ -24, 28, 127, 67, -21, 10, 92, 127, -21, -3, 92, 127, 72, -29, 1, 127, 84, 34, 108, 69, -35, -15, 62,
+ -10, -36, 3, 115, 34, -35, -10, 62, 107, -35, -14, 62, 109, 34, -41, -21, 101, 54, 22, 90, 54, -40, -22,
+ 49, -18, -41, -8, 96, 21, -40, -18, 48, 89, -40, -21, 48, 90, 22, -46, -29, 82, 41, 38, 119, 77, -30,
+ -11, 68, -3, -32, 9, 125, 45, -30, -5, 68, 117, -30, -11, 68, 120, 44, -37, -14, 111, 63, 12, 83, 45,
+ -45, -28, 38, -20, -47, -12, 88, 19, -45, -25, 38, 81, -45, -27, 38, 83, 22, -51, -32, 75, 34, 7, 75,
+ 44, -47, -32, 32, -22, -48, -16, 81, 15, -47, -28, 32, 75, -47, -30, 32, 76, 19, -53, -35, 67, 34, 49,
+ 127, 99, -21, -2, 81, 10, -22, 22, 127, 66, -21, 7, 81, 127, -21, -3, 81, 127, 63, -27, -2, 127, 86,
+ 48, 127, 99, -22, -3, 81, 10, -23, 21, 127, 66, -22, 6, 80, 127, -22, -4, 80, 127, 62, -28, -3, 127,
+ 85, 48, 127, 98, -31, -5, 87, -3, -30, 21, 127, 62, -31, -1, 87, 127, -31, -4, 87, 127, 55, -35, -5,
+ 127, 80, 37, 127, 92, -25, -10, 71, 4, -27, 14, 127, 62, -25, -3, 71, 127, -25, -10, 71, 127, 59, -32,
+ -5, 118, 79, 26, 110, 80, -33, -18, 58, -4, -34, 5, 117, 50, -33, -12, 58, 111, -33, -18, 58, 113, 47,
+ -39, -14, 102, 68, 29, 119, 82, -34, -15, 65, -8, -35, 10, 126, 54, -34, -10, 65, 119, -34, -17, 65, 122,
+ 47, -37, -11, 110, 67, -4, 70, 42, -56, -38, 26, -37, -55, -18, 75, 19, -56, -35, 26, 72, -56, -39, 26,
+ 73, 8, -56, -35, 62, 28, 1, 81, 51, -52, -33, 34, -30, -51, -12, 86, 28, -52, -31, 33, 83, -52, -34,
+ 33, 84, 18, -52, -30, 72, 37, 42, 127, 96, -27, -7, 81, 3, -28, 21, 127, 67, -27, 1, 80, 127, -27,
+ -10, 80, 127, 59, -31, -2, 127, 79, 39, 127, 93, -27, -9, 78, 2, -29, 20, 127, 67, -27, -1, 77, 127,
+ -27, -12, 77, 127, 60, -32, -2, 127, 78, 78, 127, 120, -10, 15, 119, 20, -12, 45, 127, 88, -10, 25, 119,
+ 127, -10, 13, 119, 127, 84, -16, 15, 127, 104, 29, 118, 73, -37, -17, 66, -9, -39, 10, 124, 48, -37, -9,
+ 65, 117, -37, -20, 65, 122, 42, -41, -13, 110, 58, 11, 96, 51, -48, -30, 48, -22, -50, -3, 100, 30, -48,
+ -22, 47, 94, -48, -33, 47, 99, 26, -51, -24, 87, 36, 30, 119, 72, -37, -17, 66, -9, -39, 10, 124, 48,
+ -37, -9, 66, 117, -37, -20, 66, 122, 43, -41, -13, 111, 57, 1, 75, 34, -53, -37, 34, -34, -54, -14, 80,
+ 14, -53, -30, 33, 74, -53, -41, 33, 78, 10, -55, -34, 67, 21, 4, 77, 34, -54, -36, 37, -35, -54, -13,
+ 81, 12, -54, -29, 36, 75, -54, -40, 36, 80, 8, -55, -34, 68, 20, 49, 127, 87, -29, -6, 86, -6, -29,
+ 21, 127, 58, -29, 3, 86, 127, -29, -8, 86, 127, 50, -31, -5, 127, 71, 36, 122, 75, -36, -13, 71, -14,
+ -36, 13, 127, 49, -36, -5, 71, 121, -36, -16, 71, 127, 41, -39, -13, 116, 61, -5, 26, 61, -5, 31, 123,
+ 83, -20, 48, 127, 31, -13, 17, 127, 112, -5, 25, 122, 42, 1, 16, 93, -5, 13, -36, -11, 19, -36, -8,
+ 69, 35, -49, 7, 117, -11, -43, -19, 109, 53, -36, -11, 68, 0, -29, -20, 40, -36, -16, -58, -36, -17, -58,
+ -35, 28, -8, -67, -23, 62, -45, -62, -47, 57, 6, -58, -36, 28, -34, -52, -47, -3, -58, -37, -37, -12, 17,
+ -37, -9, 66, 29, -49, 5, 112, -14, -43, -21, 105, 49, -37, -12, 66, -3, -30, -22, 36, -37, -16, -50, -28,
+ -2, -50, -26, 43, 2, -63, -15, 76, -36, -56, -40, 71, 19, -50, -27, 42, -25, -42, -40, 7, -50, -29, -53,
+ -32, -6, -53, -30, 35, -1, -65, -19, 69, -39, -58, -43, 64, 15, -53, -32, 35, -28, -46, -43, 4, -53, -33,
+ -25, 4, 30, -25, 8, 87, 43, -37, 20, 127, 1, -31, -9, 127, 67, -25, 4, 87, 12, -19, -10, 52, -25,
+ -4, -25, 0, 34, -25, 4, 80, 43, -39, 16, 127, 1, -32, -10, 122, 69, -25, 0, 79, 12, -18, -11, 53,
+ -25, -7, -21, 5, 37, -21, 9, 91, 69, -37, 28, 127, 11, -31, 1, 127, 84, -21, 4, 90, 32, -18, 0,
+ 70, -21, -4, -35, -13, 21, -35, -11, 61, 31, -50, 3, 109, -12, -43, -21, 101, 51, -35, -13, 60, 4, -29,
+ -21, 40, -35, -15, -40, -21, 12, -40, -19, 46, 19, -55, -8, 90, -25, -48, -29, 81, 39, -40, -21, 45, -5,
+ -34, -29, 26, -40, -23, -30, -8, 25, -30, -5, 67, 41, -45, 9, 120, -9, -38, -14, 110, 61, -30, -8, 66,
+ 13, -25, -15, 48, -30, -13, -45, -27, 1, -45, -25, 37, 18, -58, -12, 82, -27, -52, -32, 74, 31, -45, -27,
+ 35, -6, -41, -32, 22, -45, -28, -47, -31, 1, -47, -28, 31, 16, -62, -16, 76, -29, -55, -35, 67, 31, -47,
+ -30, 30, -8, -41, -35, 21, -47, -32, -21, 2, 39, -21, 6, 80, 60, -36, 21, 127, 5, -29, -2, 127, 85,
+ -21, 2, 79, 27, -15, -3, 69, -21, -5, -22, 1, 38, -22, 5, 79, 59, -36, 21, 127, 6, -30, -3, 127,
+ 84, -22, 1, 79, 27, -17, -3, 69, -22, -6, -31, -4, 39, -31, -2, 83, 52, -42, 21, 127, 2, -36, -5,
+ 127, 78, -31, -3, 85, 19, -24, -6, 63, -31, -5, -25, -7, 32, -25, -4, 68, 56, -40, 14, 127, 2, -33,
+ -5, 119, 77, -25, -7, 68, 23, -20, -6, 65, -25, -12, -33, -15, 24, -33, -13, 55, 43, -47, 5, 113, -7,
+ -40, -14, 103, 65, -33, -15, 56, 14, -27, -14, 53, -33, -19, -34, -13, 24, -34, -10, 62, 43, -42, 10, 122,
+ -10, -38, -11, 112, 65, -34, -13, 62, 12, -31, -12, 53, -34, -18, -56, -36, -5, -56, -35, 23, 5, -57, -18,
+ 72, -40, -56, -35, 64, 26, -56, -36, 24, -19, -54, -36, 15, -56, -39, -52, -32, 1, -52, -31, 30, 14, -54,
+ -12, 83, -34, -52, -30, 74, 34, -52, -32, 31, -11, -50, -30, 24, -52, -34, -27, -3, 33, -27, 0, 78, 57,
+ -35, 21, 127, 3, -32, -2, 127, 78, -27, -3, 78, 24, -24, -3, 65, -27, -11, -27, -5, 30, -27, -1, 75,
+ 57, -36, 19, 127, 2, -33, -2, 127, 77, -27, -5, 75, 23, -25, -3, 65, -27, -13, -10, 20, 53, -10, 24,
+ 117, 82, -24, 45, 127, 22, -18, 15, 127, 104, -10, 20, 116, 42, -6, 13, 89, -10, 11, -37, -13, 16, -37,
+ -10, 62, 39, -44, 9, 122, -10, -41, -13, 110, 57, -37, -13, 62, 10, -36, -14, 46, -37, -21, -48, -25, -1,
+ -48, -22, 44, 23, -52, -3, 99, -24, -51, -24, 87, 35, -48, -26, 44, -3, -49, -25, 26, -48, -34, -37, -13,
+ 15, -37, -10, 63, 40, -44, 10, 122, -11, -41, -13, 110, 56, -37, -13, 63, 11, -36, -14, 45, -37, -21, -53,
+ -33, -10, -53, -30, 31, 8, -57, -14, 79, -37, -55, -34, 67, 21, -53, -34, 30, -17, -53, -35, 11, -53, -42,
+ -54, -32, -10, -54, -29, 33, 7, -57, -14, 80, -37, -55, -34, 68, 20, -54, -32, 33, -18, -53, -35, 9, -54,
+ -41, -29, -1, 29, -29, 2, 83, 49, -36, 21, 127, -5, -32, -5, 127, 71, -29, -2, 83, 15, -25, -6, 57,
+ -29, -9, -36, -9, 19, -36, -6, 69, 39, -43, 12, 126, -13, -40, -13, 115, 61, -36, -10, 68, 7, -32, -14,
+ 47, -36, -17, 84, 127, -5, 19, 84, 127, -5, 24, 84, 113, -5, 29, 123, 34, -21, 47, 104, -5, 16, 82,
+ 38, -9, 16, 80, 37, 87, -36, -13, 37, 96, -36, -11, 37, 52, -36, -9, 68, -8, -51, 7, 49, -36, -15,
+ 37, -4, -39, -20, 33, 6, 36, -58, -36, 6, 45, -58, -35, 6, 6, -58, -35, 28, -42, -68, -23, 3, -58,
+ -37, 7, -38, -60, -47, -9, 37, 84, -37, -14, 37, 92, -37, -12, 37, 49, -37, -10, 66, -11, -50, 5, 44,
+ -37, -15, 37, -7, -39, -22, 27, 17, 52, -50, -28, 17, 59, -50, -27, 17, 18, -50, -27, 42, -33, -64, -15,
+ 15, -50, -29, 19, -30, -53, -40, 0, 11, 45, -53, -32, 11, 52, -53, -31, 11, 14, -53, -31, 35, -36, -66,
+ -19, 11, -53, -33, 12, -33, -55, -43, -3, 58, 105, -25, 0, 58, 116, -25, 4, 58, 68, -25, 7, 87, 4,
+ -39, 19, 61, -25, -2, 57, 8, -28, -10, 41, 51, 104, -25, -3, 51, 112, -25, 0, 51, 70, -25, 3, 80,
+ 5, -40, 15, 62, -25, -5, 50, 9, -28, -11, 42, 54, 119, -21, 0, 54, 127, -21, 4, 54, 85, -21, 8,
+ 91, 19, -39, 27, 82, -21, -2, 53, 25, -27, 0, 62, 33, 86, -35, -13, 33, 93, -35, -12, 33, 54, -35,
+ -11, 60, -5, -52, 3, 49, -35, -15, 34, 0, -40, -22, 30, 22, 70, -40, -21, 22, 76, -40, -20, 22, 40,
+ -40, -19, 45, -18, -56, -8, 36, -40, -23, 22, -12, -44, -29, 17, 38, 95, -30, -10, 38, 102, -30, -8, 38,
+ 63, -30, -6, 66, -1, -46, 8, 59, -30, -12, 37, 6, -35, -15, 39, 12, 62, -45, -27, 12, 68, -45, -26,
+ 12, 33, -45, -26, 36, -19, -59, -12, 31, -45, -28, 13, -13, -49, -32, 17, 7, 55, -47, -30, 7, 61, -47,
+ -29, 7, 32, -47, -29, 30, -21, -64, -16, 30, -47, -32, 7, -15, -52, -35, 14, 48, 113, -21, -1, 48, 121,
+ -21, 2, 48, 87, -21, 5, 80, 13, -38, 21, 80, -21, -4, 47, 20, -26, -3, 58, 47, 113, -22, -2, 47,
+ 121, -22, 1, 47, 87, -22, 4, 79, 14, -38, 21, 80, -22, -4, 46, 20, -27, -4, 58, 48, 115, -31, -4,
+ 48, 123, -31, -3, 48, 83, -31, -2, 84, 6, -44, 21, 73, -31, -5, 50, 13, -33, -6, 50, 37, 101, -25,
+ -9, 37, 107, -25, -7, 37, 81, -25, -5, 67, 10, -42, 13, 74, -25, -11, 37, 17, -30, -6, 54, 26, 86,
+ -33, -17, 26, 92, -33, -15, 26, 69, -33, -13, 55, 1, -49, 4, 62, -33, -18, 27, 8, -37, -14, 42, 29,
+ 92, -34, -15, 29, 99, -34, -13, 29, 69, -34, -11, 62, -2, -43, 9, 63, -34, -16, 29, 5, -36, -12, 46,
+ -4, 49, -56, -38, -4, 55, -56, -37, -4, 30, -56, -35, 23, -32, -57, -18, 23, -56, -38, -3, -26, -55, -36,
+ 12, 1, 58, -52, -33, 1, 64, -52, -32, 1, 39, -52, -31, 31, -25, -54, -12, 33, -52, -34, 2, -18, -52,
+ -30, 21, 41, 109, -27, -7, 41, 117, -27, -4, 41, 82, -27, -1, 79, 11, -36, 20, 76, -27, -9, 41, 17,
+ -30, -3, 58, 39, 106, -27, -9, 39, 114, -27, -6, 39, 81, -27, -2, 75, 10, -37, 19, 75, -27, -11, 39,
+ 16, -31, -3, 58, 78, 127, -10, 15, 78, 127, -10, 19, 78, 106, -10, 23, 117, 29, -25, 44, 100, -10, 13,
+ 77, 35, -15, 13, 80, 29, 86, -37, -17, 29, 97, -37, -14, 29, 61, -37, -10, 63, -2, -44, 9, 55, -37,
+ -19, 28, 4, -40, -14, 42, 11, 64, -48, -30, 11, 74, -48, -27, 11, 39, -48, -23, 45, -16, -52, -3, 36,
+ -48, -31, 10, -9, -50, -25, 27, 29, 86, -37, -17, 29, 98, -37, -14, 29, 60, -37, -10, 63, -3, -44, 9,
+ 55, -37, -19, 28, 4, -40, -14, 42, 1, 45, -53, -38, 1, 55, -53, -34, 1, 23, -53, -31, 31, -31, -57,
+ -15, 20, -53, -39, 0, -25, -55, -35, 11, 3, 46, -54, -37, 3, 56, -54, -33, 3, 22, -54, -30, 33, -31,
+ -57, -14, 19, -54, -38, 2, -25, -55, -35, 10, 48, 104, -29, -6, 48, 116, -29, -2, 48, 74, -29, 1, 83,
+ 1, -37, 21, 66, -29, -7, 48, 7, -30, -6, 50, 36, 93, -36, -13, 36, 105, -36, -10, 36, 64, -36, -7,
+ 69, -7, -44, 12, 57, -36, -15, 35, -1, -38, -14, 40};
+
+const int8_t *const batch_matmul_4_s8_output_ref = batch_matmul_4_s8_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_input_tensor.h
new file mode 100644
index 00000000..16b30b32
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_input_tensor.h
@@ -0,0 +1,64 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_4_s8_rhs_input_tensor[1152] = {
+ -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112, 97, 114, 115, 101,
+ 68, 101, 110, 115, 101, 77, 97, 116, 109, 117, 108, 87, 105, 116, 104, 67, 115, 114, 73, 110,
+ 112, 117, 116, 0, -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -40, -40, -53, -41, -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 105, 110, 112, 117, 116, 95, 115, 105, 122, 101, 0, -8,
+ -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ 16, -39, -53, -41, -86, -86, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 113, 117, 97, 110, 116, 105, 122, 97, 116, 105, 111, 110, 95, 99, 111, 110,
+ 102, 105, 103, 95, 104, 105, 103, 104, 0, 56, -56, -41, -86, -86, 0, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 88, -39, -53, -41, -86, -86, 0, 0,
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 117, 97, 110,
+ 116, 105, 122, 97, 116, 105, 111, 110, 95, 99, 111, 110, 102, 105, 103, 95, 108, 111, 119, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -104, -39, -53, -41,
+ -86, -86, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 113, 117, 97, 110, 116, 105, 122, 97, 116, 105, 111, 110, 95, 99, 111, 110, 102, 105, 103, 95,
+ 110, 117, 109, 95, 98, 117, 99, 107, 101, 116, 115, 0, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, -32, -39, -53, -41, -86, -86, 0, 0, 26, 0, 0, 0,
+ 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112,
+ 109, 100, 70, 117, 108, 108, 84, 111, 83, 104, 97, 114, 100, 83, 104, 97, 112, 101, 0, -41,
+ -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ 40, -38, -53, -41, -86, -86, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 100, 105, 109, 0, -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, 88, -38, -53, -41, -86, -86, 0, 0, 15, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 117, 97, 108, 95, 115,
+ 104, 97, 114, 100, 105, 110, 103, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, -112, -38, -53, -41, -86, -86, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 117, 110, 115, 112, 101, 99, 105, 102, 105, 101, 100, 95,
+ 100, 105, 109, 115, 0, 85, 125, -125, -1, -1, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0,
+ 24, -71, -78, -41, -86, -86, 0, 0, -48, -38, -53, -41, -86, -86, 0, 0, 26, 0, 0, 0,
+ 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 83, 112,
+ 109, 100, 83, 104, 97, 114, 100, 84, 111, 70, 117, 108, 108, 83, 104, 97, 112, 101, 0, -41,
+ -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ 24, -37, -53, -41, -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 102, 117, 108, 108, 95, 115, 104, 97, 112, 101, 0, 65, -1, -1, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, 80, -37, -53, -41,
+ -86, -86, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 83, 118, 100, 0, -53, -41, -86, -86, 0, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -120, -37, -53, -41, -86, -86, 0, 0,
+ 20, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 97, 86, 97, 114, 105, 97, 100, 105, 99, 82, 101, 100, 117, 99, 101, 0, -1, -1, -1,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -56, -37, -53, -41,
+ -86, -86, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 97, 86, 97, 114, 105, 97, 100, 105, 99, 82, 101, 100, 117, 99, 101,
+ 86, 50, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ 8, -36, -53, -41, -86, -86, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41,
+ -86, -86, 0, 0, 116, 102, 46, 88, 108, 97, 86, 97, 114, 105, 97, 100, 105, 99, 83, 111,
+ 114, 116, 0, -41, -86, -86, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41,
+ -86, -86, 0, 0, 72, -36, -53, -41, -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 99, 111, 109, 112, 97, 114, 97, 116, 111, 114, 0, -72,
+ -1, -1, 0, 0, 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0,
+ -128, -36, -53, -41, -86, -86, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 115, 95, 115, 116, 97, 98, 108, 101, 0, -24, -41, -86, -86, 0, 0,
+ 80, -38, -100, -41, -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -72, -36, -53, -41,
+ -86, -86, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0,
+ 116, 102, 46, 88, 108, 111, 103, 49, 112, 121, 0, -18, -1, -1, 0, 0, 80, -38, -100, -41,
+ -86, -86, 0, 0, 24, -71, -78, -41, -86, -86, 0, 0, -16, -36, -53, -41, -86, -86, 0, 0,
+ 8, 0, 0, 0, 0, 0, 0, 0, -16, -32, -77, -41, -86, -86, 0, 0, 116, 102, 46, 88,
+ 108, 111, 103, 121, 0, -119, -27, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_transposed_tensor.h
new file mode 100644
index 00000000..4ed44ec0
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/rhs_transposed_tensor.h
@@ -0,0 +1,64 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_4_s8_rhs_transposed_tensor[1152] = {
+ -16, 97, 105, 80, -40, 0, 122, 24, 24, 113, 102, 80, 88, 0, 116, 80, -104, 0, 116, 98,
+ 24, 26, 116, 83, -32, 114, 116, -38, -40, 0, 101, -71, 0, 117, 105, -38, -39, 0, 105, -38,
+ -39, 0, 105, 117, -71, 0, 102, 104, -77, 115, 104, -100, -53, 0, 0, -78, 0, 97, 103, -100,
+ -53, 0, 111, -100, -53, 0, 111, 99, -78, 0, 46, 97, -41, 101, 67, -41, -41, 0, -8, -41,
+ 0, 110, 95, -41, -41, 0, 110, -41, -41, 0, 110, 107, -41, 0, 88, 114, -86, 68, 115, -86,
+ -86, 0, -86, -86, 0, 116, 104, -86, -86, 0, 95, -86, -86, 0, 95, 101, -86, 0, 108, 100,
+ -86, 101, 114, -86, -86, 0, -86, -86, 0, 105, 105, -86, -86, 0, 99, -86, -86, 0, 99, 116,
+ -86, 0, 97, 83, 0, 110, 73, 0, 0, 0, 0, 0, 0, 122, 103, 0, 0, 0, 111, 0,
+ 0, 0, 111, 115, 0, 0, 83, 104, 0, 115, 110, 0, 0, 0, 0, 0, 0, 97, 104, 0,
+ 0, 0, 110, 0, 0, 0, 110, 0, 0, 0, 112, 97, 116, 101, 112, 24, 10, 105, 80, 16,
+ 0, 116, 0, 24, 23, 113, 102, 24, 31, 113, 102, 80, -32, -16, 109, 112, 102, 77, 117, -71,
+ 0, 110, -38, -39, 0, 105, 56, -71, 0, 117, 105, -71, 0, 117, 105, -38, -39, -32, 100, 101,
+ 46, 97, 116, -78, 0, 112, -100, -53, 0, 111, -56, -78, 0, 97, 103, -78, 0, 97, 103, -100,
+ -53, -77, 70, 0, 88, 116, 0, -41, 0, 117, -41, -41, 0, 110, -41, -41, 0, 110, 95, -41,
+ 0, 110, 95, -41, -41, -41, 117, -41, 108, 109, -86, -86, 0, 116, -86, -86, 0, 95, -86, -86,
+ 0, 116, 108, -86, 0, 116, 110, -86, -86, -86, 108, -86, 97, 117, -86, -86, 0, 95, -86, -86,
+ 0, 99, -86, -86, 0, 105, 111, -86, 0, 105, 117, -86, -86, -86, 108, -86, 83, 108, 0, 0,
+ 0, 115, 0, 0, 0, 111, 0, 0, 0, 122, 119, 0, 0, 122, 109, 0, 0, 0, 84, 0,
+ 112, 87, 0, 0, 0, 105, 0, 0, 0, 110, 0, 0, 0, 97, 0, 0, 0, 97, 95, 0,
+ 0, 0, 111, 0, 80, 40, 0, 80, 88, 0, 104, 24, 16, 117, 0, 24, 26, 116, 111, 80,
+ 24, 0, 112, 24, 9, 116, 80, -120, -38, -38, 0, -38, -38, 0, 97, -71, 0, 110, 85, -71,
+ 0, 102, 70, -38, -37, 0, 101, -71, 0, 102, -38, -37, -100, -53, 0, -100, -53, 0, 114, -78,
+ 0, 115, 125, -78, 0, 46, 117, -100, -53, 0, 0, -78, 0, 46, -100, -53, -41, -41, 0, -41,
+ -41, 0, 100, -41, 0, 112, -125, -41, 0, 88, 108, -41, -41, 0, 65, -41, 0, 88, -41, -41,
+ -86, -86, 0, -86, -86, 0, 105, -86, 0, 101, -1, -86, 0, 108, 108, -86, -86, 0, -1, -86,
+ 0, 108, -86, -86, -86, -86, 0, -86, -86, 0, 110, -86, 0, 99, -1, -86, 0, 97, 83, -86,
+ -86, 0, -1, -86, 0, 97, -86, -86, 0, 0, 0, 0, 0, 0, 103, 0, 0, 105, 0, 0,
+ 0, 83, 104, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 102, 0, 0, 0, 112, 97, 0, 0, 0, 0, 0, 0, 118, 0, 0, 24, 3, 100, 24,
+ 15, 109, 80, -112, 0, 105, 80, -48, -16, 109, 112, 24, 10, 102, 80, 80, -16, 100, 24, 20,
+ -71, 0, 105, -71, 0, 97, -38, -38, 0, 101, -38, -38, -32, 100, 101, -71, 0, 117, -38, -37,
+ -32, 0, -71, 0, -78, 0, 109, -78, 0, 110, -100, -53, 0, 100, -100, -53, -77, 83, 0, -78,
+ 0, 108, -100, -53, -77, -53, -78, 0, -41, 0, 0, -41, 0, 117, -41, -41, 0, 95, -41, -41,
+ -41, 104, -41, -41, 0, 108, -41, -41, -41, -41, -41, 0, -86, 0, -86, -86, 0, 97, -86, -86,
+ 0, 100, -86, -86, -86, 97, -86, -86, 0, 95, -86, -86, -86, -86, -86, 0, -86, 0, -86, -86,
+ 0, 108, -86, -86, 0, 105, -86, -86, -86, 114, -86, -86, 0, 115, -86, -86, -86, -86, -86, 0,
+ 0, 0, 0, 0, 0, 95, 0, 0, 0, 109, 0, 0, 0, 100, 0, 0, 0, 104, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 115, 0, 0, 0, 84, 0, 0,
+ 0, 97, 0, 0, 0, 0, 0, 0, -16, 114, 80, -56, -16, 114, 80, 8, -16, 114, 80, 72,
+ 0, 111, 24, 9, 105, 80, -72, -16, 112, 24, 8, 116, -32, 105, -38, -37, -32, 105, -38, -36,
+ -32, 105, -38, -36, 0, 114, -71, 0, 115, -38, -36, -32, 121, -71, 0, 102, -77, 97, -100, -53,
+ -77, 97, -100, -53, -77, 97, -100, -53, 0, 0, -78, 0, 95, -100, -53, -77, 0, -78, 0, 46,
+ -41, 100, -41, -41, -41, 100, -41, -41, -41, 100, -41, -41, 0, -72, -41, 0, 115, -41, -41, -41,
+ -18, -41, 0, 88, -86, 105, -86, -86, -86, 105, -86, -86, -86, 105, -86, -86, 0, -1, -86, 0,
+ 116, -86, -86, -86, -1, -86, 0, 108, -86, 99, -86, -86, -86, 99, -86, -86, -86, 99, -86, -86,
+ 0, -1, -86, 0, 97, -86, -86, -86, -1, -86, 0, 111, 0, 82, 0, 0, 0, 82, 0, 0,
+ 0, 83, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 103, 0, 101, 0, 0,
+ 0, 101, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 121,
+ 116, 100, 24, 22, 116, 100, 24, 18, 116, 114, 24, 10, 99, 80, -128, 0, 101, 24, 10, 116,
+ 80, -16, -16, 0, 102, 117, -71, 0, 102, 117, -71, 0, 102, 116, -71, 0, 111, -38, -36, 0,
+ 0, -71, 0, 102, -38, -36, -32, -119, 46, 99, -78, 0, 46, 99, -78, 0, 46, 0, -78, 0,
+ 109, -100, -53, 0, -24, -78, 0, 46, -100, -53, -77, -27, 88, 101, -41, 0, 88, 101, -41, 0,
+ 88, -41, -41, 0, 112, -41, -41, 0, -41, -41, 0, 88, -41, -41, -41, -41, 108, 0, -86, 0,
+ 108, 86, -86, 0, 108, -86, -86, 0, 97, -86, -86, 0, -86, -86, 0, 108, -86, -86, -86, -86,
+ 97, -1, -86, 0, 97, 50, -86, 0, 97, -86, -86, 0, 114, -86, -86, 0, -86, -86, 0, 111,
+ -86, -86, -86, -86, 86, -1, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 97, 0, 0, 0,
+ 0, 0, 0, 103, 0, 0, 0, 0, 97, -1, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0,
+ 116, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_4_s8/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/config_data.h
new file mode 100644
index 00000000..2771d0ea
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_5_S16_LHS_BATCH 1
+#define BATCH_MATMUL_5_S16_LHS_HEIGHT 3
+#define BATCH_MATMUL_5_S16_LHS_ROWS 32
+#define BATCH_MATMUL_5_S16_LHS_COLS 16
+#define BATCH_MATMUL_5_S16_RHS_BATCH 3
+#define BATCH_MATMUL_5_S16_RHS_HEIGHT 1
+#define BATCH_MATMUL_5_S16_RHS_ROWS 24
+#define BATCH_MATMUL_5_S16_RHS_COLS 16
+#define BATCH_MATMUL_5_S16_ADJ_X 0
+#define BATCH_MATMUL_5_S16_ADJ_Y 1
+#define BATCH_MATMUL_5_S16_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_5_S16_DST_SIZE 6912
+#define BATCH_MATMUL_5_S16_OUTPUT_BATCH 3
+#define BATCH_MATMUL_5_S16_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_5_S16_OUTPUT_ROWS 32
+#define BATCH_MATMUL_5_S16_OUTPUT_COLS 24
+#define BATCH_MATMUL_5_S16_LHS_OFFSET 0
+#define BATCH_MATMUL_5_S16_RHS_OFFSET 0
+#define BATCH_MATMUL_5_S16_OUTPUT_OFFSET 0
+#define BATCH_MATMUL_5_S16_ACTIVATION_MIN -32768
+#define BATCH_MATMUL_5_S16_ACTIVATION_MAX 32767
+#define BATCH_MATMUL_5_S16_OUTPUT_MULTIPLIER 1901910418
+#define BATCH_MATMUL_5_S16_OUTPUT_SHIFT -18
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_input_tensor.h
new file mode 100644
index 00000000..4a594a52
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_input_tensor.h
@@ -0,0 +1,102 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_5_s16_lhs_input_tensor[1536] = {
+ -15712, -18877, -1, 0, -15712, -18877, -1, 0, 8240, -9401, -21846, 0, 8240, -9401, -21846, 0,
+ -30896, -9494, -21846, 0, -7024, -9411, -21846, 0, 0, 0, 0, 0, 6944, -9377, -21846, 0,
+ -27040, -9433, -21846, 0, 14416, -9490, -21846, 0, 0, 0, 0, 0, -24176, -9420, -21846, 0,
+ -4960, -9447, -21846, 0, 19008, -9394, -21846, 0, 21648, -9394, -21846, 0, 1968, -9391, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30160, -9374, -21846, 0, 16976, -9383, -21846, 0,
+ -10800, -9413, -21846, 0, -2560, -9434, -21846, 0, 24400, -9505, -21846, 0, -4896, -9432, -21846, 0,
+ -12224, -9404, -21846, 0, 0, 0, 0, 0, -20336, -9470, -21846, 0, -24816, -9387, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30208, -9478, -21846, 0, 25216, -9410, -21846, 0,
+ -26000, -9383, -21846, 0, 0, 0, 0, 0, -8080, -9407, -21846, 0, -30416, -9391, -21846, 0,
+ 23776, -9445, -21846, 0, -25680, -9422, -21846, 0, 0, 0, 0, 0, -19856, -9401, -21846, 0,
+ -3760, -9470, -21846, 0, -14128, -9463, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -19264, -9422, -21846, 0, 0, 0, 0, 0, 30352, -9372, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -24336, -9388, -21846, 0, 0, 0, 0, 0,
+ 6384, -9385, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21024, -9467, -21846, 0,
+ -21664, -9399, -21846, 0, 8448, -9379, -21846, 0, 8720, -9418, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19472, -9383, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30416, -9398, -21846, 0,
+ 0, 0, 0, 0, -5472, -9447, -21846, 0, -19856, -9372, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 27504, -9422, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -16736, -9392, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16352, -9477, -21846, 0, -30688, -9407, -21846, 0, 0, 0, 0, 0,
+ 27296, -9398, -21846, 0, -28224, -9397, -21846, 0, -27152, -9524, -21846, 0, -14720, -9508, -21846, 0,
+ -26656, -9463, -21846, 0, 20400, -9383, -21846, 0, 1568, -9384, -21846, 0, 0, 0, 0, 0,
+ 5776, -9421, -21846, 0, -27152, -9406, -21846, 0, 26016, -9399, -21846, 0, -1744, -9386, -21846, 0,
+ -15776, -9385, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3264, -9469, -21846, 0,
+ -6432, -9457, -21846, 0, -19280, -9387, -21846, 0, 25552, -9505, -21846, 0, -1936, -9412, -21846, 0,
+ 0, 0, 0, 0, -18256, -9440, -21846, 0, 28080, -9381, -21846, 0, -15200, -9406, -21846, 0,
+ -11968, -9467, -21846, 0, -11280, -9469, -21846, 0, 0, 0, 0, 0, 26432, -9377, -21846, 0,
+ 0, 0, 0, 0, 32368, -9372, -21846, 0, -16096, -9433, -21846, 0, 0, 0, 0, 0,
+ 21312, -9555, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -944, -9379, -21846, 0,
+ 27952, -9394, -21846, 0, 18368, -9457, -21846, 0, -1872, -9447, -21846, 0, 0, 0, 0, 0,
+ -9680, -9372, -21846, 0, 6256, -9431, -21846, 0, 16560, -9383, -21846, 0, 29472, -9422, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22080, -9467, -21846, 0, 24256, -9410, -21846, 0,
+ -10144, -9404, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11728, -9443, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 18912, -9462, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -20864, -9463, -21846, 0, -28080, -9406, -21846, 0, 17488, -9371, -21846, 0, 0, 0, 0, 0,
+ -18720, -9395, -21846, 0, 29408, -9372, -21846, 0, 20032, -9467, -21846, 0, -22176, -9387, -21846, 0,
+ -14480, -9413, -21846, 0, -7536, -9527, -21846, 0, 3920, -9538, -21846, 0, -1088, -9545, -21846, 0,
+ 25120, -9377, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20240, -9470, -21846, 0,
+ 18704, -9383, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30368, -9394, -21846, 0, 0, 0, 0, 0, 11744, -9502, -21846, 0, 0, 0, 0, 0,
+ 14784, -9410, -21846, 0, 32304, -9461, -21846, 0, -6448, -9375, -21846, 0, -24320, -9468, -21846, 0,
+ 22944, -9410, -21846, 0, -21456, -9444, -21846, 0, -30816, -9398, -21846, 0, 30528, -9376, -21846, 0,
+ -28608, -9461, -21846, 0, -32448, -9472, -21846, 0, 0, 0, 0, 0, -8768, -9505, -21846, 0,
+ -26512, -9406, -21846, 0, -17664, -9372, -21846, 0, -13008, -9467, -21846, 0, 26544, -9422, -21846, 0,
+ -30304, -9409, -21846, 0, 3840, -9438, -21846, 0, 29152, -9488, -21846, 0, 16016, -9477, -21846, 0,
+ 0, 0, 0, 0, 5280, -9469, -21846, 0, 0, 0, 0, 0, 30368, -9436, -21846, 0,
+ -25408, -9384, -21846, 0, -22400, -9399, -21846, 0, 20512, -9467, -21846, 0, 7456, -9502, -21846, 0,
+ -1584, -9447, -21846, 0, -28128, -9432, -21846, 0, -15296, -9387, -21846, 0, 384, -9404, -21846, 0,
+ -21328, -9422, -21846, 0, 0, 0, 0, 0, -25104, -9386, -21846, 0, 13152, -9434, -21846, 0,
+ 25536, -9410, -21846, 0, -6608, -9461, -21846, 0, -18128, -9433, -21846, 0, -26000, -9422, -21846, 0,
+ -29184, -9461, -21846, 0, -18400, -9395, -21846, 0, -24848, -9428, -21846, 0, 0, 0, 0, 0,
+ -17248, -9530, -21846, 0, 0, 0, 0, 0, -13184, -9375, -21846, 0, 29856, -9436, -21846, 0,
+ -29616, -9533, -21846, 0, -24336, -9387, -21846, 0, 8800, -9379, -21846, 0, 32112, -9478, -21846, 0,
+ 0, 0, 0, 0, -17952, -9372, -21846, 0, 7440, -9484, -21846, 0, 0, 0, 0, 0,
+ 17200, -9414, -21846, 0, -8144, -9387, -21846, 0, 11920, -9377, -21846, 0, -22528, -9528, -21846, 0,
+ -14688, -9384, -21846, 0, 5424, -9538, -21846, 0, 21776, -9399, -21846, 0, -17264, -9463, -21846, 0,
+ -15648, -9490, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12736, -9502, -21846, 0,
+ 0, 0, 0, 0, -16592, -9426, -21846, 0, -20640, -9400, -21846, 0, -4176, -9402, -21846, 0,
+ 17792, -9391, -21846, 0, -25984, -9468, -21846, 0, -2832, -9439, -21846, 0, 24768, -9377, -21846, 0,
+ -13648, -9503, -21846, 0, 0, 0, 0, 0, 16256, -9423, -21846, 0, -9392, -9447, -21846, 0,
+ 22672, -9394, -21846, 0, -13264, -9385, -21846, 0, 0, 0, 0, 0, -27200, -9422, -21846, 0,
+ -7280, -9407, -21846, 0, -1904, -9439, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27952, -9378, -21846, 0, 24832, -9399, -21846, 0, 0, 0, 0, 0, 16144, -9383, -21846, 0,
+ 5904, -9384, -21846, 0, 0, 0, 0, 0, -3680, -9409, -21846, 0, 19792, -9383, -21846, 0,
+ 30528, -9498, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -24528, -9420, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32736, -9486, -21846, 0,
+ 23728, -9376, -21846, 0, -624, -9439, -21846, 0, -19856, -9448, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -19920, -9444, -21846, 0, -22640, -9462, -21846, 0,
+ 3664, -9538, -21846, 0, 20112, -9383, -21846, 0, -28736, -9402, -21846, 0, -21008, -9395, -21846, 0,
+ 15920, -9408, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5984, -9405, -21846, 0,
+ 0, 0, 0, 0, -19472, -9395, -21846, 0, -27776, -9461, -21846, 0, -2464, -9399, -21846, 0,
+ 24912, -9394, -21846, 0, 4320, -9384, -21846, 0, 1792, -9378, -21846, 0, 0, 0, 0, 0,
+ 864, -9461, -21846, 0, 0, 0, 0, 0, -3312, -9405, -21846, 0, 8208, -9385, -21846, 0,
+ -28944, -9401, -21846, 0, 896, -9404, -21846, 0, 15344, -9423, -21846, 0, 17312, -9391, -21846, 0,
+ 16656, -9391, -21846, 0, 0, 0, 0, 0, 13344, -9502, -21846, 0, 24496, -9408, -21846, 0,
+ 9552, -9385, -21846, 0, -26608, -9524, -21846, 0, 0, 0, 0, 0, 30032, -9404, -21846, 0,
+ 0, 0, 0, 0, -15264, -9490, -21846, 0, -11872, -9461, -21846, 0, 0, 0, 0, 0,
+ 24976, -9408, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32464, -9374, -21846, 0,
+ 0, 0, 0, 0, 21280, -9446, -21846, 0, 0, 0, 0, 0, -2704, -9372, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 17840, -9416, -21846, 0, -17744, -9463, -21846, 0,
+ -2944, -9407, -21846, 0, -15568, -9413, -21846, 0, -20880, -9470, -21846, 0, 0, 0, 0, 0,
+ 30320, -9471, -21846, 0, 16272, -22525, -2, 0, -32496, -9461, -21846, 0, -7168, -9457, -21846, 0,
+ -15296, -9433, -21846, 0, 16304, -9388, -21846, 0, -20688, -9444, -21846, 0, 576, -9446, -21846, 0,
+ -6768, -9387, -21846, 0, 20880, -9423, -21846, 0, 16272, -9403, -21846, 0, 0, 0, 0, 0,
+ 28608, -9459, -21846, 0, -16432, -9440, -21846, 0, -12032, -9385, -21846, 0, 29376, -9420, -21846, 0,
+ -28192, -9487, -21846, 0, -30976, -9407, -21846, 0, -14992, -9387, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 28240, -9394, -21846, 0, 0, 0, 0, 0, -3248, -9470, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3344, -9410, -21846, 0,
+ -28064, -9461, -21846, 0, 0, 0, 0, 0, -17504, -9387, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19936, -9422, -21846, 0,
+ -23472, -9529, -21846, 0, 4560, -9457, -21846, 0, 0, 0, 0, 0, -15616, -9433, -21846, 0,
+ -12640, -9385, -21846, 0, -1536, -9405, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_transposed_tensor.h
new file mode 100644
index 00000000..df3214bd
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/lhs_transposed_tensor.h
@@ -0,0 +1,116 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_5_s16_lhs_transposed_tensor[1536] = {
+ -15712, -30896, -27040, -4960, 0, -10800, -12224, 0, -26000, 23776, -3760, -19264, 0, 6384,
+ -21664, 0, 0, 0, 0, 0, 0, 27296, -26656, 5776, -15776, -6432, 0, -11968,
+ 0, 21312, 27952, -9680, -18877, -9494, -9433, -9447, 0, -9413, -9404, 0, -9383, -9445,
+ -9470, -9422, 0, -9385, -9399, 0, 0, 0, 0, 0, 0, -9398, -9463, -9421,
+ -9385, -9457, 0, -9467, 0, -9555, -9394, -9372, -1, -21846, -21846, -21846, 0, -21846,
+ -21846, 0, -21846, -21846, -21846, -21846, 0, -21846, -21846, 0, 0, 0, 0, 0,
+ 0, -21846, -21846, -21846, -21846, -21846, 0, -21846, 0, -21846, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -15712, -7024, 14416, 19008, 0, -2560, 0, 0, 0, -25680, -14128, 0,
+ 0, 0, 8448, 0, 0, -5472, 0, 0, 16352, -28224, 20400, -27152, 0, -19280,
+ -18256, -11280, 32368, 0, 18368, 6256, -18877, -9411, -9490, -9394, 0, -9434, 0, 0,
+ 0, -9422, -9463, 0, 0, 0, -9379, 0, 0, -9447, 0, 0, -9477, -9397,
+ -9383, -9406, 0, -9387, -9440, -9469, -9372, 0, -9457, -9431, -1, -21846, -21846, -21846,
+ 0, -21846, 0, 0, 0, -21846, -21846, 0, 0, 0, -21846, 0, 0, -21846,
+ 0, 0, -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846, -21846, 0, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 8240, 0, 0, 21648, -30160, 24400, -20336, 30208, -8080, 0,
+ 0, 30352, -24336, 0, 8720, 0, 0, -19856, 27504, -16736, -30688, -27152, 1568, 26016,
+ 0, 25552, 28080, 0, -16096, 0, -1872, 16560, -9401, 0, 0, -9394, -9374, -9505,
+ -9470, -9478, -9407, 0, 0, -9372, -9388, 0, -9418, 0, 0, -9372, -9422, -9392,
+ -9407, -9524, -9384, -9399, 0, -9505, -9381, 0, -9433, 0, -9447, -9383, -21846, 0,
+ 0, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, -21846, -21846, 0, -21846, 0,
+ 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, 0,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 8240, 6944, -24176, 1968, 16976, -4896, -24816, 25216,
+ -30416, -19856, 0, 0, 0, 21024, 0, 19472, -30416, 0, 0, 0, 0, -14720,
+ 0, -1744, 3264, -1936, -15200, 26432, 0, -944, 0, 29472, -9401, -9377, -9420, -9391,
+ -9383, -9432, -9387, -9410, -9391, -9401, 0, 0, 0, -9467, 0, -9383, -9398, 0,
+ 0, 0, 0, -9508, 0, -9386, -9469, -9412, -9406, -9377, 0, -9379, 0, -9422,
+ -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, 0, -21846,
+ 0, -21846, -21846, 0, 0, 0, 0, -21846, 0, -21846, -21846, -21846, -21846, -21846,
+ 0, -21846, 0, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -10144, 11728, 0, 0, -20864,
+ -18720, -14480, 25120, 18704, 30368, 14784, 22944, -28608, -26512, -30304, 0, -25408, -1584, -21328,
+ 25536, -29184, -17248, -29616, 0, 17200, -14688, -15648, 0, 17792, -13648, 22672, 0, -9404,
+ -9443, 0, 0, -9463, -9395, -9413, -9377, -9383, -9394, -9410, -9410, -9461, -9406, -9409,
+ 0, -9384, -9447, -9422, -9410, -9461, -9530, -9533, 0, -9414, -9384, -9490, 0, -9391,
+ -9503, -9394, 0, -21846, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846,
+ -21846, -21846, 0, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -28080, 29408, -7536, 0, 0, 0, 32304, -21456, -32448, -17664, 3840, 5280, -22400,
+ -28128, 0, -6608, -18400, 0, -24336, -17952, -8144, 5424, 0, -16592, -25984, 0, -13264,
+ 0, 0, 0, 0, 0, -9406, -9372, -9527, 0, 0, 0, -9461, -9444, -9472,
+ -9372, -9438, -9469, -9399, -9432, 0, -9461, -9395, 0, -9387, -9372, -9387, -9538, 0,
+ -9426, -9468, 0, -9385, 0, 0, 0, 0, 0, -21846, -21846, -21846, 0, 0,
+ 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846,
+ -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22080, 0,
+ 0, 18912, 0, 17488, 20032, 3920, 0, 0, 11744, -6448, -30816, 0, -13008, 29152,
+ 0, 20512, -15296, -25104, -18128, -24848, -13184, 8800, 7440, 11920, 21776, 0, -20640, -2832,
+ 16256, 0, -9467, 0, 0, -9462, 0, -9371, -9467, -9538, 0, 0, -9502, -9375,
+ -9398, 0, -9467, -9488, 0, -9467, -9387, -9386, -9433, -9428, -9375, -9379, -9484, -9377,
+ -9399, 0, -9400, -9439, -9423, 0, -21846, 0, 0, -21846, 0, -21846, -21846, -21846,
+ 0, 0, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846,
+ -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24256, 0, 0, 0, 0, 0, -22176, -1088, -20240, 0, 0, -24320, 30528, -8768,
+ 26544, 16016, 30368, 7456, 384, 13152, -26000, 0, 29856, 32112, 0, -22528, -17264, 12736,
+ -4176, 24768, -9392, -27200, -9410, 0, 0, 0, 0, 0, -9387, -9545, -9470, 0,
+ 0, -9468, -9376, -9505, -9422, -9477, -9436, -9502, -9404, -9434, -9422, 0, -9436, -9478,
+ 0, -9528, -9463, -9502, -9402, -9377, -9447, -9422, -21846, 0, 0, 0, 0, 0,
+ -21846, -21846, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21846, 0, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -7280, 27952, 5904, 30528, -24528, 23728, 0, 3664, 15920, 0, 24912, 864,
+ -28944, 16656, 9552, 0, 24976, 0, 0, -2944, 30320, -15296, -6768, 28608, -28192, 0,
+ 0, 0, -28064, 0, -23472, -12640, -9407, -9378, -9384, -9498, -9420, -9376, 0, -9538,
+ -9408, 0, -9394, -9461, -9401, -9391, -9385, 0, -9408, 0, 0, -9407, -9471, -9433,
+ -9387, -9459, -9487, 0, 0, 0, -9461, 0, -9529, -9385, -21846, -21846, -21846, -21846,
+ -21846, -21846, 0, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846, 0, -21846, 0,
+ 0, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, 0, -21846, 0, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1904, 24832, 0, 0, 0, -624, 0, 20112, 0, -19472,
+ 4320, 0, 896, 0, -26608, -15264, 0, 21280, 0, -15568, 16272, 16304, 20880, -16432,
+ -30976, 28240, 0, 0, 0, 0, 4560, -1536, -9439, -9399, 0, 0, 0, -9439,
+ 0, -9383, 0, -9395, -9384, 0, -9404, 0, -9524, -9490, 0, -9446, 0, -9413,
+ -22525, -9388, -9423, -9440, -9407, -9394, 0, 0, 0, 0, -9457, -9405, -21846, -21846,
+ 0, 0, 0, -21846, 0, -21846, 0, -21846, -21846, 0, -21846, 0, -21846, -21846,
+ 0, -21846, 0, -21846, -2, -21846, -21846, -21846, -21846, -21846, 0, 0, 0, 0,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -3680, 0, 0, -19856, -19920, -28736,
+ 0, -27776, 1792, -3312, 15344, 13344, 0, -11872, 0, 0, 17840, -20880, -32496, -20688,
+ 16272, -12032, -14992, 0, 0, 0, -17504, 0, 0, 0, 0, 0, -9409, 0,
+ 0, -9448, -9444, -9402, 0, -9461, -9378, -9405, -9423, -9502, 0, -9461, 0, 0,
+ -9416, -9470, -9461, -9444, -9403, -9385, -9387, 0, 0, 0, -9387, 0, 0, 0,
+ 0, 0, -21846, 0, 0, -21846, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846,
+ 0, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, 0,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16144, 19792, 0, -32736, 0,
+ -22640, -21008, -5984, -2464, 0, 8208, 17312, 24496, 30032, 0, -32464, -2704, -17744, 0,
+ -7168, 576, 0, 29376, 0, -3248, 0, 3344, 0, -19936, -15616, 0, 0, -9383,
+ -9383, 0, -9486, 0, -9462, -9395, -9405, -9399, 0, -9385, -9391, -9408, -9404, 0,
+ -9374, -9372, -9463, 0, -9457, -9446, 0, -9420, 0, -9470, 0, -9410, 0, -9422,
+ -9433, 0, 0, -21846, -21846, 0, -21846, 0, -21846, -21846, -21846, -21846, 0, -21846,
+ -21846, -21846, -21846, 0, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, 0, -21846,
+ 0, -21846, 0, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/output.h
new file mode 100644
index 00000000..978e1ef5
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/output.h
@@ -0,0 +1,440 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_5_s16_output[6912] = {
+ 0, 4190, 3644, 2011, 3826, 3042, 4266, 5221, 1649, 3097, 3661, 3449, 2285, 1073, 5346, 3703,
+ 1689, 3939, 2031, 3942, 7603, 7610, 4446, 1433, 0, 2498, 5075, 2593, 3290, 3634, 4121, 6965,
+ 1900, 2959, 7050, 1363, 2465, 2123, 5287, 2418, 1718, 3498, 42, 6748, 7337, 7518, 5242, 0,
+ 0, -120, 9774, 2256, 2936, 6670, 3704, 4316, 4350, 6067, 5257, 3815, 3645, 1491, 7750, 158,
+ 4896, 5427, 274, 7773, 4798, 3467, 1291, 0, 0, 3126, 10065, 3034, 7200, 8060, 4825, 1857,
+ 9735, 7792, 2980, 4389, 2977, 1352, 7442, 4570, 8608, 5352, 4762, 4727, 8479, 9172, 3551, 655,
+ 0, 6455, 739, 4729, 4371, 3042, 5394, 4939, -1076, 2059, 0, 1481, 246, 0, 182, 6588,
+ 3617, 3057, 186, 632, 1543, 2823, 2929, 3659, 0, 2444, 9273, 3032, 6499, 7168, 4658, 4400,
+ 7473, 6556, 4958, 5026, 5322, 1992, 8633, 3522, 6231, 6878, 4568, 6650, 10252, 9726, 5138, 499,
+ 0, 2549, 7463, 5172, 4238, 6824, 6425, 6806, 1350, 4340, 3000, 5102, 4934, 0, 7274, 3905,
+ 5321, 7910, 1922, 6150, 3512, 1749, 1679, 3092, 0, 4745, 2751, -910, 4250, 2111, 2790, -1121,
+ 4906, 3611, 0, 2846, -560, 0, 3776, 4449, 2885, 537, 3642, 12, 7328, 9053, 3423, 161,
+ 0, 1587, 8843, 3398, 2883, 6454, 5894, 6626, 2038, 4994, 4225, 5950, 3992, 0, 9558, 2006,
+ 3941, 7200, 1785, 7083, 4872, 2644, 601, 2379, 0, 243, 5211, 5524, 7227, 6746, 3417, 4832,
+ 1972, 2790, 3446, 3474, 12996, 2676, 3972, 3738, 6428, 10754, 3353, 7767, 6320, 4117, 8582, 0,
+ 0, 0, 2776, 3998, 3487, 2991, 1939, 5671, 2169, 830, 5117, 0, 4930, 2335, 2168, 1675,
+ 2165, 4447, 1686, 4745, 4949, 4475, 5139, 0, 0, 699, 5601, 112, 2043, 2750, 2591, 2251,
+ 6100, 2884, 3627, 2922, -170, 0, 7281, 1185, 1571, 1702, 4391, 2628, 7168, 7044, 874, 149,
+ 0, 2881, 774, 4185, 2038, 2091, 3007, 4355, -498, 1131, 0, 1102, 0, 0, 173, 3041,
+ 2119, 2609, 520, 0, -324, -267, 0, 3322, 0, 3686, 1632, 2203, 4847, 2867, 4047, 1427,
+ 2156, 927, 1343, 257, 2456, 0, 1560, 5923, 3914, 2220, 2298, 2006, 4248, 5761, 5429, 0,
+ 0, 1563, 7218, 3735, 3887, 5118, 3580, 5591, 6684, 4748, 5178, 2204, 578, 1664, 5898, 2039,
+ 4178, 3563, 3009, 4161, 6559, 6757, 1750, 1405, 0, 3553, -9, 0, 2361, 761, 2157, 0,
+ 0, 998, 0, 376, 2, 0, 207, 3478, 1382, 42, 0, 444, 2474, 3861, 3079, 0,
+ 0, -646, 4911, 0, 1205, 3717, 1532, 0, 0, 3342, 0, 4306, 4891, 0, 4571, -537,
+ 2741, 4832, 0, 4206, 1039, -1138, 91, 0, 0, 2702, 2462, 5811, 3920, 3709, 2805, 6419,
+ 1269, 2767, 2282, 1251, 2497, 2079, 492, 2833, 3500, 4727, 775, 2213, 2393, 2261, 2500, 3061,
+ 0, 814, 3196, -659, 1767, 1708, 680, -851, 4636, 2794, 0, 2829, 0, 0, 3875, 632,
+ 1680, 1122, 3486, 0, 4438, 4372, 0, 316, 0, 2578, 1129, 3475, 1998, 2035, 2666, 3592,
+ 254, 1375, 0, 1355, 0, 0, 715, 2688, 2054, 2391, 954, 0, 374, 413, 0, 2881,
+ 0, 3135, 3690, 6303, 4021, 4830, 3293, 5111, 2543, 4093, 807, 891, 168, 1433, -280, 3337,
+ 5558, 3706, 157, 1013, -162, 447, 162, 3691, 0, 3676, 5085, 10195, 9695, 8593, 6598, 9481,
+ 1058, 3401, 3302, 4086, 13147, 2751, 3265, 7554, 8571, 13340, 3928, 7391, 5971, 4124, 9353, 3489,
+ 0, 1847, 7927, 3891, 3529, 5520, 3935, 5380, 7071, 5434, 4816, 1964, -1235, 1310, 5722, 2055,
+ 4799, 2715, 2299, 3691, 5192, 5786, 203, 1819, 0, 2640, 6770, 4219, 7903, 6525, 4510, 5667,
+ 5617, 4571, 5145, 4826, 9430, 2719, 7359, 4751, 5628, 9101, 5661, 7148, 11766, 10699, 8853, 401,
+ 0, 2191, 3799, 1196, 2573, 2942, 3973, 3122, 1314, 1762, 3315, 1656, 1799, 0, 4597, 3083,
+ 2104, 2489, 955, 4167, 4378, 4565, 3171, 0, 0, 2646, 7626, 3523, 6895, 6381, 4615, 5786,
+ 5957, 5171, 5700, 4830, 7289, 2486, 8165, 3985, 5087, 7865, 4900, 7184, 11512, 10659, 7341, 432,
+ 0, 1425, 7097, 1637, 5201, 5562, 2375, 3008, 4643, 5951, 3146, 5955, 7262, 2457, 7156, 1292,
+ 4270, 7504, 3517, 5976, 9188, 7432, 4872, 281, 0, 4138, 2461, 3557, 5325, 3113, 4237, 5986,
+ 2163, 1719, 5654, -172, 3058, 2251, 2315, 5190, 2764, 3115, 1188, 4811, 7656, 9139, 7887, 0,
+ 0, 2554, 5640, 4553, 3973, 5481, 2638, 1884, 5706, 5785, -279, 1378, -1546, 955, 762, 2660,
+ 6873, 2305, 992, 128, 30, 1128, -1557, 2845, 0, 1834, 3521, 2888, 5595, 4829, 3674, 290,
+ 2729, 1957, 21, 1984, 6226, 0, 2485, 5107, 6060, 5299, 3208, 3111, 3187, 3169, 4921, 0,
+ 0, 1987, 6583, 6746, 8135, 7860, 3724, 1774, 8590, 5172, 95, 1852, 4888, 1373, 1822, 5689,
+ 10300, 6479, 5411, 1778, 3444, 4121, 3364, 2021, 0, 5645, 6192, 3599, 7443, 5653, 5428, 4128,
+ 7680, 5361, 4261, 2054, 1132, 1731, 4987, 6719, 6265, 3331, 4182, 3530, 9851, 12092, 6310, 949,
+ 0, 4988, 2465, -150, 4270, 2228, 3142, -305, 4101, 3395, 0, 2650, -466, 0, 3279, 4750,
+ 2979, 862, 3177, 84, 6554, 8230, 3366, 632, 0, 0, 2102, 1453, 1059, 1467, 1979, 2692,
+ 1529, 0, 2815, 0, 816, 0, 2593, 1266, 861, 1254, 1297, 2289, 2205, 2178, 1365, 0,
+ 0, 0, 1693, 2448, 2899, 2433, 1834, 1020, 2361, 0, 870, 0, 3183, 0, 1130, 2659,
+ 3126, 2673, 2623, 1480, 1574, 1603, 2545, 0, 0, 1158, 2796, 145, 1813, 1773, 1067, 13,
+ 3787, 2520, 0, 2544, 0, 0, 3263, 1033, 1754, 1370, 2995, 0, 3650, 3605, 0, 816,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1212, 4715, 3828, 3838, 3352, 3181, 8663,
+ 3661, 2231, 7580, 2494, 4568, 2747, 6471, 1683, 900, 5597, 3560, 6145, 9957, 8939, 5710, 895,
+ 0, 1161, 13453, 2311, 5512, 9390, 4688, 1929, 10169, 9672, 3498, 6239, 2742, 1043, 10360, 1827,
+ 8791, 6189, 3836, 6483, 7290, 6566, 247, 751, 0, 3586, 7623, 4902, 6383, 6703, 5655, 7289,
+ 4774, 5347, 5625, 4048, 5089, 2142, 7089, 4551, 5480, 7173, 3175, 6779, 8951, 8573, 5707, 1687,
+ 0, 213, 5349, 3055, 5465, 6138, 3404, -7, 2868, 2866, -324, 3507, 8526, 0, 3915, 3793,
+ 6977, 7396, 3433, 4422, 2519, 1132, 3968, 0, 0, 0, 1560, 2764, 3483, 2739, 1785, 484,
+ 2624, 0, 247, 0, 3936, 0, 662, 3101, 3847, 3123, 3044, 1219, 1370, 1418, 2919, 0,
+ 0, 1445, 3804, 4111, 6316, 5081, 3098, 327, 6146, 2291, -790, 2307, 5198, 0, 2634, 5211,
+ 6870, 5456, 6338, 787, 4027, 4076, 3548, 1233, 0, 2036, 12032, 6240, 8426, 11332, 5626, 1708,
+ 9131, 9148, 325, 5525, 6273, 960, 6414, 5017, 12806, 9152, 4350, 5249, 3623, 2991, 1620, 2284,
+ 0, 7623, 1064, 10176, 10404, 6063, 7351, 9437, 1254, 1670, 3234, 392, 7517, 2552, -671, 11082,
+ 7522, 8399, 3451, 3765, 6571, 8177, 11101, 3698, 0, 1180, 4568, 3307, 3073, 3462, 3911, 9584,
+ -743, 1755, 8566, 2604, 6972, 2878, 6511, 1302, 99, 6714, 180, 9252, 8644, 6875, 7153, 0,
+ 0, 6580, 3519, 6172, 6070, 4167, 6837, 11014, 1545, 2720, 7375, 1302, 2152, 2437, 4262, 6790,
+ 2702, 4834, 1475, 5690, 9252, 10527, 7790, 2667, 0, 4015, 8308, 1547, 5333, 5339, 4839, 4711,
+ 7889, 6217, 6261, 3538, 481, 1802, 8450, 3744, 4179, 3079, 3657, 5445, 11396, 12513, 4655, 222,
+ 0, 4471, 1252, 1788, 4543, 2281, 2295, 1334, 2480, 2804, 1556, -480, 285, 1761, -744, 4356,
+ 3475, 589, 0, 1246, 4326, 6665, 5081, 0, 0, 3639, 6573, 3203, 5538, 4876, 5086, 8084,
+ 4398, 4332, 7597, 3924, 4650, 2578, 8253, 3768, 2628, 6068, 3458, 7352, 12091, 11770, 7216, 723,
+ 0, 4467, 4693, 7771, 7551, 6336, 6442, 10487, 1143, 3073, 5868, 3283, 8532, 2749, 4717, 6375,
+ 5073, 9667, 2853, 7317, 8318, 7450, 8690, 2797, 0, 5934, 3666, 5202, 4377, 4207, 7176, 7979,
+ 530, 2403, 3810, 1952, 230, 0, 4221, 6603, 3385, 3811, 1095, 3627, 4428, 5366, 3465, 3366,
+ 0, 2361, 8363, 8754, 9277, 10142, 6058, 6335, 4206, 5873, 1999, 5269, 11754, 2113, 5008, 6110,
+ 10562, 12725, 4335, 7117, 4976, 3005, 6266, 2963, 0, 2903, 3663, 7176, 3381, 3760, 5140, 12490,
+ 194, 1617, 7665, 1086, 2634, 2460, 4006, 3123, 1271, 5683, 636, 5920, 5618, 4997, 4224, 3353,
+ 0, 6864, 2503, 4276, 5048, 3313, 6825, 6473, 1868, 2000, 3451, 1033, -962, 0, 3341, 7656,
+ 3254, 2133, 2027, 2220, 5889, 8003, 4688, 2674, 0, 6178, 3521, 4154, 5815, 3225, 5951, 9796,
+ 2872, 2646, 8107, 1589, 1989, 2635, 5543, 6030, 1447, 3884, 2535, 5759, 11986, 13380, 8677, 1399,
+ 0, 1616, 2747, 3560, 3753, 2915, 1583, 5049, 2633, 2687, 3124, 2163, 3827, 2446, 2445, 1567,
+ 2146, 4708, 2340, 2897, 5794, 5188, 3834, 1482, 0, 1456, 9458, 5599, 8496, 9272, 4809, 4119,
+ 6696, 6554, 2843, 5998, 10677, 2156, 7410, 4464, 9211, 11082, 5547, 7250, 8186, 6320, 6191, 1218,
+ 0, 1505, 11077, 2908, 5914, 8129, 4644, 4083, 7922, 7666, 4766, 5910, 5265, 1759, 9785, 2398,
+ 6906, 7400, 4178, 7290, 9196, 8044, 3336, 647, 0, 2989, 2867, 1205, 2808, 2391, 4095, 3115,
+ 1322, 1318, 3307, 911, 889, 0, 3764, 3858, 1863, 1592, 966, 3452, 4651, 5515, 3750, 0,
+ 0, 4297, 3867, 6151, 5716, 5349, 4702, 7719, -3, 3999, 3033, 3465, 6003, 2407, 2713, 4445,
+ 4533, 7743, 731, 5052, 4911, 4114, 5353, 3108, 0, 6023, 2678, 7436, 9684, 5756, 6057, 7519,
+ 3345, 2493, 3998, 1779, 8007, 2687, 2176, 8990, 6502, 8093, 4740, 4640, 9450, 10416, 10964, 2076,
+ 0, 2388, 7681, 1689, 4287, 5580, 4988, 3242, 4921, 4789, 3130, 5106, 3273, 0, 8636, 3358,
+ 4447, 5290, 3930, 5045, 7361, 6609, 2531, 968, 0, -374, 6939, 5174, 6986, 7721, 3332, 3549,
+ 3261, 4085, 2701, 4053, 12269, 2307, 4687, 3076, 7629, 10627, 3285, 7677, 5250, 2926, 6750, 0,
+ 0, 0, 3810, 3542, 3212, 3415, 1960, 4595, 3345, 1766, 4600, 0, 3242, 1973, 2401, 1449,
+ 2898, 3469, 1470, 4200, 4173, 4091, 3637, 0, 0, 3272, 5588, 4501, 8508, 7197, 3838, -1039,
+ 7553, 4966, -345, 638, 4524, 1179, 541, 6899, 10422, 4477, 3604, 2115, 3616, 5651, 5548, 0,
+ 0, 5637, 3499, 4437, 6706, 4854, 6112, 3744, 3686, 2776, 1386, 2142, 2522, 0, 3346, 7872,
+ 5839, 4321, 3970, 2114, 5797, 7230, 5327, 2124, 0, 0, 1342, 3305, 4481, 3264, 1710, -416,
+ 3077, 0, -801, 0, 5219, 0, -126, 3857, 5074, 3893, 3764, 784, 1032, 1110, 3560, 0,
+ 0, -838, 7514, 799, 1004, 4690, 3582, 3792, 983, 3453, 4095, 4491, 4383, 0, 8333, -370,
+ 2180, 5380, 425, 7208, 3597, 1189, 545, 0, 0, 2704, 4314, 8689, 7836, 6902, 4559, 5988,
+ 4607, 3140, 1754, 1253, 6458, 1935, 820, 6256, 8305, 7882, 4126, 2979, 3273, 3360, 5170, 3064,
+ 0, 2717, 5128, 3774, 3403, 5318, 4442, 3913, -59, 4253, 0, 4946, 4131, 0, 4383, 2928,
+ 4614, 6571, 774, 3622, 1349, -227, 559, 3067, 0, 3203, 9906, 8112, 7662, 10231, 6746, 6139,
+ 5195, 7340, 2140, 4521, 6047, 1319, 5280, 5615, 10656, 9499, 2406, 6082, 2865, 2095, 2525, 3577,
+ 0, 1411, 4115, 2638, 5021, 4886, 3643, 698, 2519, 2194, 496, 2382, 6133, 0, 3283, 4354,
+ 5635, 5430, 2876, 3687, 3194, 2802, 4324, 0, 0, 4727, 3137, 6888, 5788, 5164, 5046, 8753,
+ -1018, 3470, 3227, 3094, 6142, 2492, 2056, 4916, 4288, 7960, 325, 5080, 4512, 3760, 5763, 3523,
+ 0, 1838, 5692, 6597, 7829, 7026, 3577, 3177, 7324, 4209, 1313, 1972, 6057, 1786, 2284, 5323,
+ 8685, 7031, 5434, 2661, 4870, 5070, 4703, 1806, 0, 4647, 4756, 4176, 6014, 5318, 5986, 4095,
+ 3533, 3332, 1837, 3066, 3115, 0, 4725, 6604, 5632, 5098, 3688, 3177, 5646, 6237, 4364, 2103,
+ 0, 4670, 7270, 2967, 5538, 5278, 5461, 6314, 6254, 5483, 6337, 2971, 812, 1889, 7254, 4572,
+ 4130, 3613, 2947, 5455, 10331, 11480, 5117, 1021, 0, 5358, 3633, 3338, 7633, 4928, 5338, 1215,
+ 5784, 3105, 430, 2342, 3225, 0, 3434, 8147, 6683, 4082, 5598, 1361, 7189, 8945, 6189, 1140,
+ 0, 4442, 486, 4901, 7188, 3120, 4137, 6023, 1333, 378, 4775, -455, 6669, 2707, 558, 6847,
+ 3514, 5101, 2489, 4585, 8234, 9528, 10904, 0, 0, 2386, 2062, 5303, 3863, 3188, 2450, 6696,
+ 1012, 2277, 2946, 1519, 3543, 2370, 1065, 2464, 2555, 5101, 1235, 2753, 3831, 3359, 3550, 2601,
+ 0, -819, 6555, 3049, 5168, 6854, 3249, 5, 2864, 3437, -310, 4467, 9707, 0, 4992, 2798,
+ 7293, 8558, 3425, 5347, 2170, -91, 3226, 0, 0, 1686, 5779, 1404, 3805, 4999, 1878, -424,
+ 4198, 5581, 473, 2123, 1815, 1286, 2146, 1692, 5813, 2783, 0, 2857, 2227, 2727, 1383, 0,
+ 0, 1622, 6408, 244, 3318, 4748, 2806, 120, 3679, 5232, 0, 5817, 3652, 0, 6650, 1566,
+ 4160, 5016, 2933, 3253, 4956, 3641, 852, 876, 0, 2746, 3581, 7931, 5572, 5023, 4786, 9773,
+ 1888, 1963, 5138, 1220, 5169, 2377, 2533, 4608, 4208, 7097, 2453, 4790, 5021, 4551, 5333, 3124,
+ 0, 4521, 6369, 8574, 9048, 9239, 6911, 3705, 4227, 5084, -1169, 3309, 6789, 243, 2019, 8602,
+ 11532, 9048, 3806, 3065, 1231, 1403, 4008, 3797, 0, 4701, 8207, 6587, 6519, 7875, 6782, 7197,
+ 4860, 6296, 4082, 3092, 2286, 1432, 5235, 5772, 7694, 6199, 1715, 5365, 5046, 5625, 3202, 3112,
+ 0, 1261, 8278, 3409, 5124, 6311, 3140, 2329, 9334, 5944, 3013, 2455, 863, 1297, 5439, 2635,
+ 6775, 3552, 4343, 2926, 5932, 6558, 1222, 967, 0, 6777, 2350, 8559, 10768, 6483, 6458, 6566,
+ 3870, 2712, 2391, 1109, 7709, 2403, 394, 10479, 8435, 8033, 4870, 3368, 7742, 9400, 10802, 2608,
+ 0, 2508, 3107, 6601, 3388, 3133, 4690, 12805, -144, 968, 8429, 1413, 4085, 2833, 4643, 2728,
+ 158, 6233, 1260, 6577, 7394, 6340, 5626, 2780, 0, 1643, 6387, 1236, 3807, 5364, 1875, -1190,
+ 4944, 6141, 1, 2169, 1127, 1078, 2197, 1652, 6456, 2411, 0, 2516, 1714, 2403, 607, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2196, 1583, 0, 1988, 1717, 1955, 0,
+ 0, 1756, 0, 1647, 1583, 0, 1619, 2180, 1822, 1591, 0, 1661, 2011, 2245, 2113, 0,
+ 0, 2608, 3533, 4187, 1556, 2718, 4801, 7733, 1028, 1350, 4411, 1329, -1120, 0, 4454, 2852,
+ 1068, 2507, 1123, 2956, 3029, 2996, 401, 2925, 0, 237, 3878, 0, 1449, 3097, 1664, 0,
+ 0, 2850, 0, 3481, 3865, 0, 3655, 307, 2457, 3827, 0, 3417, 1342, -87, 720, 0,
+ 0, 601, 8083, 2656, 3418, 5854, 3791, 5128, 3429, 4909, 5608, 3141, 4247, 1782, 6766, 1077,
+ 4148, 5441, 493, 7541, 5649, 4616, 3055, 0, 0, 0, 3938, 3288, 2761, 3194, 1995, 4962,
+ 3179, 1793, 5051, 0, 2621, 1961, 2759, 1107, 2375, 3097, 1145, 4377, 4300, 4216, 3307, 0,
+ 5632, 4463, 3756, 7793, 3913, 5945, 3577, 5724, 4137, 3076, 2706, 0, 3071, 2917, 4245, 2702,
+ 5882, 2148, 1115, 4328, 5785, 159, 5526, 6251, 6647, 5590, 2497, 8000, 6124, 4614, 3920, 3399,
+ 2630, 4398, 5511, 0, 5452, 4342, 2462, 0, 6271, 1205, 1377, 4849, 5315, 1210, 5326, 8973,
+ 7071, 5819, 2570, 5739, 6127, 1678, 3667, 732, -598, 4086, 5985, 0, 3488, 3396, -10, 0,
+ 3745, 4366, -282, 1070, 3079, 3356, 7686, 7544, 5891, 8219, 5501, 9324, 4378, 7725, 4270, 8407,
+ 2607, 2389, 4416, 0, 2362, 3936, 3366, 3984, 4521, 1421, 1506, 2416, 9632, 3668, 8148, 5240,
+ 3766, 4513, 3910, 1203, 1095, 2926, 1735, 1554, 7558, 4463, 5060, 0, 0, 2408, 6026, -973,
+ 1122, 5162, 0, 3028, 2686, 4773, -342, 7213, 6603, 7170, 5225, 10776, 6232, 7338, 4667, 9036,
+ 1719, 2628, 3779, 0, 4403, 3795, 2748, 4251, 7245, 1843, 2978, 3711, 8949, 1255, 10178, 6121,
+ 7816, 5444, 5151, 3478, 5114, 1786, 4499, 913, 2580, 6528, 6709, 0, 2319, 3227, 2430, -30,
+ 3961, 8409, 677, 276, 1650, 3844, 6907, 8745, 2795, 4010, 3867, 7806, 699, 8680, 2088, 8478,
+ 4462, -644, -1238, 0, 0, 2649, 4975, 4806, 2708, -1806, 0, 3571, 8407, -954, 3363, 936,
+ 9141, 5184, 4514, 5336, 5491, 2330, 5462, 496, 1194, 6596, 6282, 0, 2774, 3202, 1636, 1141,
+ 5033, 7730, -714, -92, 1799, 2678, 8455, 8683, 2024, 4283, 4808, 5058, 8267, 1855, 369, 8615,
+ -151, -1, 1494, 0, 5241, 3011, 333, 0, 5297, 3927, 8679, 4594, 4626, -656, 9176, 4082,
+ 2278, 3253, 1752, 4729, 4823, 1930, 2157, 4306, 0, 2215, 3590, 0, 5164, 1954, 0, 0,
+ 5556, 0, 4797, 3058, 3597, 501, 4524, 4642, 5309, 3477, 2945, 8066, 2062, 6410, 5247, 5099,
+ -79, 2801, 1853, 0, 2552, 2108, 1052, 4817, 5672, -1175, -33, 0, 5779, -971, 6139, 2437,
+ 2218, 2184, 1939, -640, 0, -96, 1769, -692, 3505, 3971, 4453, 0, 0, 0, 2602, -415,
+ 1275, 4383, 0, 0, -123, 4221, 54, 4482, 2664, 4262, 4172, 4149, 2764, 5767, 1496, 5667,
+ 4094, 1396, 1515, 0, 1703, 4377, 3584, 0, 1561, -221, 2556, 3297, 5735, 0, 1517, 3474,
+ 5816, 5978, 2866, 7427, 3411, 4639, 5279, 3936, 1340, 4826, 6451, 0, 3817, 2131, 1666, 2748,
+ 6234, 1025, 826, 1229, 5882, 3840, 5987, 6591, 1411, 2315, 1972, 2535, 975, 3737, 0, 3010,
+ 3931, 0, 0, 0, 0, 2480, 3458, 0, 0, -66, 0, 3192, 3500, 0, -225, 2145,
+ 2692, 1277, 1819, 934, 3378, -942, 0, 195, -1247, 0, 0, 0, 0, 1027, -506, 0,
+ 0, 4999, 0, -92, -564, 0, 5247, 1547, 2161, 3826, 1933, 2014, 2287, 273, 1795, 2032,
+ 3211, 3591, 5715, 0, 2381, 0, 2474, 13, 3895, 3927, 2435, 2357, 2118, 5161, 2580, 6100,
+ 1563, 1603, 1878, 4801, 0, 4179, 2070, 4852, 110, -417, -957, 0, 0, 0, 1134, 4546,
+ 2635, -884, 0, 0, 4210, -699, 4009, -995, 2122, 2099, 1930, 158, 0, 531, 1813, 120,
+ 3007, 3327, 3660, 0, 0, 0, 2387, 312, 1475, 3611, 0, 0, 512, 3499, 634, 3679,
+ 2299, 4840, 1947, -192, 793, -619, 1733, -455, 3922, 4509, 7573, 0, 512, 0, 2782, -1023,
+ 1256, 5029, 350, 593, 1399, 8373, 682, 6541, 3810, 6509, 6926, 4225, 8168, 1999, 1896, 8432,
+ 4080, 3928, 5939, 0, 5340, 3127, 3431, -681, 6583, 8082, 9276, 5140, 4777, 3581, 8583, 8678,
+ 6392, 6545, 2657, 6365, 2633, 4072, 5562, 1933, 1808, 5834, 7906, 0, 2960, 2184, 1868, 2063,
+ 5030, 1751, -818, 263, 5236, 5713, 4856, 7434, 4887, 6213, 5954, 11340, 7634, 7688, 3597, 12576,
+ 1935, 1155, 1759, 0, 5961, 3719, 2948, 4403, 9034, 1354, 7001, 5904, 9629, -1362, 11158, 5210,
+ 5272, 3888, 3147, 4793, 3792, 4201, 2934, 2398, 2251, 3179, 2891, 0, 2436, 4083, 2172, 0,
+ 2772, 1582, 318, 2128, 3618, 0, 3468, 5357, 6089, 6537, 5424, 11573, 7200, 7692, 4392, 10792,
+ 1950, 2181, 2831, 0, 5691, 3838, 2950, 4362, 8843, 1425, 5017, 5255, 9277, -528, 10762, 6162,
+ 3856, 4360, 3742, 9093, 5807, 4710, 2072, 8991, 404, -467, 286, 0, 3476, 1471, 1820, 4599,
+ 6532, 2510, 3656, 4301, 6693, -668, 10443, 3177, 4307, 5827, 3385, 7798, 5331, 6356, 2690, 6695,
+ 4653, 2875, 4195, 0, 5191, 4719, 4011, 0, 5697, -773, 3696, 6478, 7440, 786, 3397, 7555,
+ 2115, 5326, 1931, 551, -307, 585, 1818, 126, 2966, 3274, 6580, 0, -864, 0, 2370, 374,
+ -94, 3547, -1184, -705, 2751, 8587, 1005, 4479, 1780, 3811, 4761, 2628, 3708, 3642, 532, 5957,
+ 1812, 201, 593, 0, 1214, 3590, 1835, 0, 751, 2006, 4069, 1848, 4399, 0, 3928, 1801,
+ 1131, 6515, 5052, 3113, 2348, 3544, 1997, 7276, 2035, 1733, 4808, 0, 1328, 1632, 1967, 1736,
+ 2177, 2102, 4891, 430, 6583, 5840, 4690, 2699, 5706, 8327, 5383, 10558, 3963, 9905, 4544, 9709,
+ 5795, 3197, 4815, 0, 3609, 4783, 5697, 3497, 6021, -853, 2247, 5260, 11196, 2877, 5371, 6966,
+ 2922, 4081, 3874, 6922, 745, 7919, 2040, 7554, 4894, 44, -390, 0, 0, 2621, 5128, 4028,
+ 2495, -882, 0, 3508, 7649, -183, 2848, 1783, 2896, 1909, 1470, 2468, 1990, 1957, 2569, 877,
+ 0, 2726, 2542, 0, 2250, 2016, 0, 0, 2465, 0, 887, 0, 1607, 0, 1912, 2872,
+ 773, 1915, 2429, 1270, 1821, 1860, 1151, 3115, 0, 968, 1185, 0, 1528, 1797, 0, 0,
+ 1271, 0, 3097, 0, 2269, 0, 1911, 804, 1673, 1701, 1890, 3900, 0, 3472, 2022, 3934,
+ 674, 312, -59, 0, 0, 0, 1379, 3725, 2411, -9, 0, 0, 3494, 118, 3355, -86,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5628, 4392, 2891, 10098, 5909, 5358, 5278, 7184,
+ 764, 4020, 4273, 0, 6923, 2125, 1417, 3586, 10367, 132, 4401, 4184, 6332, -646, 8454, 6771,
+ 7868, 8155, 4827, 8623, 4933, 5390, 5154, 4830, 209, 3633, 5785, 0, 1923, 3369, 1496, 3832,
+ 4107, 4039, -880, -16, 7201, 4863, 10163, 6086, 7127, 7283, 5104, 9203, 6425, 6028, 4789, 6996,
+ 3460, 4659, 5983, 0, 4954, 3946, 3635, 2293, 7451, 3542, 3085, 4370, 7402, 2705, 8451, 8848,
+ 1903, 3407, 4865, 1797, 4605, 1813, 279, 5254, -188, -111, 351, 0, 1082, 2986, 305, 0,
+ 537, 3968, 4447, 580, 2939, 0, 6041, 1206, 93, 1915, 2732, 886, 1765, 1827, 696, 3826,
+ 0, 405, 749, 0, 1295, 1725, 0, 0, 888, 0, 3800, 0, 2478, 0, 1909, 142,
+ 726, 3700, 5143, 3397, 1675, 4657, 1921, 8189, 1145, 387, 715, 0, 909, 1608, 1583, 3040,
+ 2475, 720, 4978, 0, 5727, 799, 4718, -288, 5004, 8537, 6319, 3800, 4583, 2856, 2824, 5130,
+ 1721, 3177, 6565, 0, 570, 2973, 2075, 1296, 1270, 6947, 2230, -386, 5854, 7666, 8235, 5599,
+ 3109, 7760, 6872, 5193, 5556, 5952, 2154, 9730, 9008, 4585, 6815, 0, 4906, 4486, 7122, -1035,
+ 5991, 3853, 8191, 7569, 8076, 4603, 3002, 9795, 6831, 4232, 2552, 8623, 8610, 3133, 3770, 4302,
+ 1004, 4213, 4524, 0, 7555, 3865, 1218, 0, 8893, 2804, 4039, 5876, 3895, -1331, 8304, 9395,
+ 7794, 7622, 4676, 9460, 5872, 7272, 5469, 6121, 7431, 7057, 8154, 0, 6215, 4868, 6304, 671,
+ 8751, 2451, 2832, 7000, 7778, 3292, 4617, 12423, 7902, 7809, 4430, 12702, 4940, 9780, 5960, 8341,
+ 3579, 3794, 4706, 0, 4500, 4601, 4276, 4705, 7744, -762, 397, 4571, 10515, 1443, 7935, 7509,
+ 1133, 4675, 2007, 4543, 2003, 4760, 0, 5217, 5063, 0, 2088, 0, 1460, 2800, 4325, 0,
+ 1342, -1171, 1408, 5400, 6348, 2442, 238, 4022, 7755, 6658, 4628, 12538, 7110, 8242, 5591, 9033,
+ 3257, 4130, 4429, 0, 6584, 4303, 3841, 3878, 10081, 985, 3397, 6129, 9021, -362, 9503, 8703,
+ 6071, 6682, 5688, 7527, 7658, 4516, 3837, 7588, 4863, 5245, 6497, 0, 6290, 3856, 4287, 449,
+ 8460, 5337, 6353, 6125, 6121, 2462, 7824, 10331, 7785, 6285, 4875, 4695, 3359, 4994, 5061, 1614,
+ 6832, 7662, 7770, 0, 2621, 4427, 5581, -489, 4332, 5038, -241, 2778, 4069, 4293, 2379, 10565,
+ 4151, 7050, 6798, 3842, 7244, 1688, 2060, 7259, 2312, 3303, 5825, 0, 3548, 2814, 2273, 180,
+ 4580, 8305, 7034, 2649, 4738, 4885, 9442, 7054, 6973, 5262, 2579, 5638, 5311, 1907, 5575, 1218,
+ 3540, 8275, 9532, 0, 6368, 2209, 2618, -463, 8668, 4437, 2635, 3401, 2626, 4342, 4751, 11720,
+ 6813, 6503, 5094, 6261, 2526, 7528, 4868, 4252, 7784, 6328, 6275, 0, 2489, 4876, 6570, 651,
+ 4424, 2131, 174, 3878, 6552, 3162, 1459, 9123, 7680, 7224, 4535, 12428, 6092, 9609, 5798, 8860,
+ 6579, 5462, 5850, 0, 6893, 5067, 6128, 2755, 10215, -331, 3161, 7908, 9908, 552, 6002, 10698,
+ 1819, 3012, 1904, 5491, 3139, 2527, 1956, 5713, 1426, 1284, 2452, 0, 3448, 0, 1705, 2628,
+ 5959, 1157, 3625, 3364, 4296, 1323, 5277, 3620, 4493, 6719, 6410, 7638, 7248, 4529, 2773, 9909,
+ 705, 1428, 3151, 0, 3954, 3002, 1699, 3053, 5986, 4900, 6337, 3003, 7266, 1876, 11429, 4758,
+ 7329, 7267, 5016, 9925, 6315, 5976, 4900, 7173, 605, 3159, 4558, 0, 3850, 3473, 1837, 3997,
+ 6526, 3363, 1824, 2255, 7672, 2302, 10942, 6360, 5021, 4089, 3187, 5095, 3339, 5093, 2929, 2950,
+ 3235, 3172, 2886, 0, 2435, 4362, 2926, 0, 2769, 621, 334, 2752, 4398, 0, 2433, 5463,
+ 4190, 5206, 3835, 4254, 5162, 1729, 1791, 4302, 4740, 3658, 5427, 0, 3333, 1792, 4077, -61,
+ 5075, 6343, 3497, 4891, 3533, 4123, 5436, 8405, 3404, 7141, 6596, 8451, 6184, 7743, 2651, 12148,
+ 6578, 2631, 4065, 0, 5464, 4369, 5873, 1644, 7497, 1595, 8104, 7557, 9753, 1496, 5993, 7404,
+ 7099, 5357, 5096, 7894, 4388, 6259, 4805, 5554, 1784, 3547, 2979, 0, 2369, 3696, 2619, 3469,
+ 5000, 3125, 537, 1294, 5925, 369, 8010, 5201, 2319, 4634, 4736, 4271, 7777, 1170, 439, 7329,
+ -912, 87, 1972, 0, 4210, 2807, -250, 0, 4013, 4673, 7378, 3106, 4097, 585, 9369, 3695,
+ 2618, 3748, 1595, 4320, 4010, 1944, 2384, 3198, 0, 2496, 4212, 0, 4230, 1987, 0, 0,
+ 4426, 0, 3270, 2068, 3591, 1722, 3921, 4577, 691, 7089, 5099, 3502, 3038, 5210, 95, 7991,
+ 3585, -339, 2911, 0, 772, 4015, 3193, 0, -390, 271, 4271, 2878, 8108, 4395, 2739, 2483,
+ 4697, 6187, 6060, 5661, 2824, 7259, 3416, 7062, 6116, 3658, 3842, 0, 1718, 4344, 5500, 1562,
+ 3405, 2186, 2507, 3213, 7221, 2261, 3280, 5802, -1051, 1921, 3254, 242, 1677, 1777, -68, 5039,
+ 0, -542, 19, 0, 907, 1610, 0, 0, 245, 0, 4997, 0, 2839, 0, 1911, -973,
+ 7049, 3138, 2655, 4119, 5595, 865, 3504, -527, -1485, 3884, 3436, 0, 2726, 3123, -688, 0,
+ 3252, 5237, -565, -242, 423, 0, 7419, 5755, 1768, 5941, 4888, 2388, 3680, 2079, 2167, 6078,
+ 3213, 3594, 6315, 0, 3094, 1674, 2477, 15, 3986, 3930, 6278, 1965, 4791, 5648, 4251, 5612,
+ 4658, 3578, 3780, 1011, 3005, 60, 1797, 418, 2780, 3598, 3994, 0, 0, 1256, 2592, 9,
+ 1393, 8147, 0, 422, 319, 3803, 4789, 5660, 6284, 8357, 5871, 2776, 5344, 1382, 3422, 2541,
+ 3523, 5963, 9179, 0, 1984, 3183, 2968, -836, 2612, 8874, 2274, 813, 3822, 8561, 6773, 9440,
+ 2430, 3701, 4505, 2758, 3989, 3190, 877, 5117, 1289, 630, 923, 0, 1388, 3493, 1436, 0,
+ 1041, 2518, 3519, 1517, 3821, 0, 4477, 2247, 4238, 5205, 3850, 3702, 5276, 1303, 1752, 3813,
+ 5387, 4264, 6077, 0, 3579, 1842, 4417, -742, 5200, 6896, 3771, 5236, 3053, 4514, 4847, 9273,
+ 1378, 5896, 4912, 4349, 3331, 3857, 2213, 8209, 1793, 1665, 4143, 0, 2630, 1663, 1861, 2084,
+ 3952, 1728, 5924, 1563, 6675, 4083, 5656, 3049, 5481, 5943, 5805, 5606, 3424, 6227, 3748, 5935,
+ 4890, 4034, 4119, 0, 1888, 4059, 4569, 1597, 3692, 3324, 2001, 2451, 6158, 2226, 4582, 6103,
+ 7906, 7866, 4505, 11359, 5065, 8752, 5790, 7250, 4613, 4851, 5962, 0, 4706, 4622, 4765, 3382,
+ 7622, 505, 814, 4891, 9477, 2457, 6878, 8944, 3320, 6099, 6529, 7013, 2515, 9059, 2820, 10252,
+ 5493, 1355, 1400, 0, 1363, 4373, 5396, 3193, 3267, -18, 3593, 3524, 9356, 648, 4065, 3046,
+ 2123, 5282, 4337, 7486, 6040, 6596, 1290, 10034, 5027, 1142, 2348, 0, 5792, 4606, 4297, 0,
+ 6176, -1138, 7333, 7957, 8254, -745, 3753, 6058, 2063, 3342, 1926, 3336, 2959, 934, 1844, 3487,
+ 2691, 2918, 4560, 0, 3221, 0, 2251, 779, 5166, 3119, 3372, 3150, 2707, 3428, 3675, 5577,
+ 2229, 3151, 4819, 1410, 5193, 665, 290, 4548, -1460, -98, 361, 0, 1088, 2630, -670, 0,
+ 546, 5206, 4434, -228, 1937, 0, 7379, 1071, 1980, 4636, 1903, 2693, 2497, 1656, 0, 2373,
+ 1629, 0, 2619, 0, 89, 1834, 1695, 0, -387, 2184, -122, 1925, 3786, 4041, 3075, 3106,
+ 4054, 3254, 3749, 5129, 2770, 3631, 2014, 4731, 813, 401, 51, 0, 0, 1399, 1911, 3621,
+ 2382, 3812, 0, 744, 3873, 218, 7131, 1727, 4374, 5339, 3723, 4477, 4911, 2116, 3894, 4153,
+ 3281, 5828, 7583, 0, 5257, 1944, 2507, -82, 7032, 4035, 5013, 3172, 3775, 4250, 4912, 8727,
+ 3388, 7348, 7087, 364, 3538, 2252, 1669, 4686, 5210, 4137, 6593, 0, 234, 3318, 4178, -1194,
+ 275, 7855, 4135, 845, 4217, 7342, 3965, 6416, 7469, 8556, 5097, 5539, 4712, 4154, 4697, 2912,
+ 5239, 6805, 9389, 0, 2935, 4000, 4458, -65, 4269, 5868, 720, 2544, 5648, 7418, 5209, 10765,
+ 4273, 6404, 3508, 6794, 2445, 5193, 4354, 5510, 845, 2988, 5151, 0, 2260, 1981, 1452, 3470,
+ 4276, 257, 1143, 225, 7069, 4367, 5951, 3982, 2353, 7733, 7096, 6572, 5226, 7370, 1896, 11949,
+ 7658, 2540, 4670, 0, 4289, 4398, 6499, 762, 5633, 2062, 8284, 7089, 9768, 3322, 4316, 7101,
+ 6752, 4639, 2610, 7235, 6166, 2715, 5567, 3140, 2893, 7360, 8024, 0, 7414, 2200, 2337, 479,
+ 10230, 3434, 3939, 4418, 3374, 2148, 6122, 10991, 1997, 4910, 1905, 2336, 2048, 1609, 0, 1919,
+ 1575, 0, 2849, 0, -509, 1821, 1655, 0, -1140, 2243, -789, 1328, 3802, 4735, 2794, 2876,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1826, 1980, 1923, 2018, 1752, 2225, 0, 2101,
+ 2258, 0, 0, 0, 0, 2011, 2177, 0, 0, 1572, 0, 2131, 2187, 0, 1544, 1953,
+ 6770, 4015, 2618, 3529, 2132, 2506, 5543, -916, 3057, 7562, 7396, 0, 2845, 2198, 2408, 238,
+ 4900, 3689, -920, 0, 1515, 3572, 2492, 8329, 2424, 1496, 1852, 1271, 2874, 42, 0, 787,
+ -158, 0, 0, 0, 0, 1333, 327, 0, 0, 3935, 0, 599, 291, 0, 4098, 1674,
+ 6508, 5598, 2756, 6304, 6364, 2468, 3439, 2183, 291, 3802, 5437, 0, 4216, 3613, 671, 0,
+ 4617, 3497, 1022, 2430, 3804, 2369, 7234, 7630, 3138, 3760, 1360, 4594, 4025, 1968, 2731, 2625,
+ 0, 2927, 4556, 0, 4374, 2040, 0, 0, 4677, 0, 2692, 2037, 3431, 1758, 3901, 5070,
+ 4081, 274, 1865, 3659, 1265, 5389, 7575, 7031, 4924, 2493, 3565, 1635, 5235, 5759, 4310, 3408,
+ 5016, 7396, 3467, 725, 6629, 4106, 1835, 4187, 7312, 291, 2192, 6951, 3881, 5126, 8494, 8505,
+ 2340, 1203, 1275, 2574, 4058, 7666, 4467, 4719, 7157, 7907, 5243, 2164, 7526, 2448, 2535, 6428,
+ 4512, 3554, 2156, 7040, 6688, 3037, 6893, 9155, 414, 4374, -132, 917, 3135, 8380, 5751, 5919,
+ 4198, 7906, 3587, 2130, 2743, 39, 6600, 6485, 6613, 3176, 1795, 4709, 6548, 10390, 8415, 9603,
+ 5496, 2332, 5550, 1847, 6678, 5489, 6845, 8774, 4302, 9201, 4096, 1952, 3982, 3046, 7070, 9411,
+ 3679, 327, 4804, 4699, 1127, 2893, 2119, 717, 2711, 3891, -756, 0, 2583, 4685, 3203, -335,
+ 2504, -39, 2740, 0, 8363, 6426, 4128, 5753, 5521, 3271, 1586, 4578, 5425, 8831, 10057, 10881,
+ 5273, 2871, 7013, 3396, 6963, 7214, 7386, 7861, 5985, 11267, 3964, 1998, 5176, 2401, 5765, 6754,
+ 1648, 4995, 5887, 7007, 4525, 1059, 5240, 6257, 830, 7565, 786, 1171, 2230, 9485, 6721, 2842,
+ 3187, 5525, 3038, 2009, 5798, 2771, 7980, 4956, 4539, -441, -981, -872, 746, 9010, 5867, 5266,
+ 7553, -543, 4583, 0, 5955, 211, 2324, 4161, 2793, 5883, 3144, 0, 3011, 4484, 128, 4761,
+ 1527, 4231, 4833, 7340, 4276, 1115, 6988, 8793, 1360, 7403, 465, 335, 2759, 9955, 6432, 4349,
+ 3253, 7977, 3243, 2120, 4301, 1811, 6758, 4688, 2183, 7895, 1700, 693, 6076, 3417, 5064, 4487,
+ 681, 3933, 8402, 7531, 3736, 6733, 8038, 1159, 6741, 6260, 2029, 1719, 5917, 373, 7509, 894,
+ 3577, 1561, 1948, 3897, 2887, 3099, 4819, 4329, 0, 0, 4633, 4846, 2094, 4773, 3970, 3091,
+ 5083, 4796, 2047, 1943, 5184, 0, 2710, 2436, 2561, 113, 1087, 3074, 1203, 5849, 7138, 8130,
+ 4087, 102, 4547, 745, 3518, 3109, 2927, 6918, 2280, 8291, 2586, 2067, 1094, 610, 757, 3646,
+ 0, 0, 4246, 4161, 0, -219, 428, -50, 168, 3363, -240, 0, 624, 3500, 2099, 99,
+ 0, -619, 0, 0, 4364, 2952, 3259, 2537, 5802, 2457, 1854, 1230, 3089, 6153, 3504, 2375,
+ 3215, -228, 2562, 2298, 2355, 2033, 2989, 1636, 4437, 2490, 4632, 1858, 5574, 3541, 2594, 5057,
+ 4776, -112, 3184, 7435, 3507, 6149, 7492, 8441, 2538, 1393, 3593, 1764, 4177, 6172, 4763, 7861,
+ 3526, 7697, 2668, 2086, 4455, 1537, 4197, 7093, 3940, 94, 0, 0, 1011, 3874, 2065, 1139,
+ 3116, -72, 0, 0, 2320, 642, 934, 0, 2591, 1078, 2862, 0, 3634, 3419, 346, 3235,
+ -1259, 4749, 0, 0, 3323, -1150, 1682, 3116, 26, 5009, 0, 0, 1274, 3892, 3437, 0,
+ 847, 3220, 425, 0, -783, -445, 4359, -159, 1766, 0, 3816, 5532, 1603, 1850, 2888, 2277,
+ 488, 3095, 2527, 2396, 2844, 5390, 4081, 1996, 2371, 2036, 0, 0, 6325, 2759, 4595, 3748,
+ 0, 0, -724, -624, 0, 4318, 3590, 4134, 3884, 273, 4342, 0, 3369, 116, 1697, 3958,
+ 0, 4768, 0, 0, -861, 733, 390, 1202, 0, 0, 3517, 3460, 0, 446, 892, 563,
+ 713, 2910, 431, 0, 1027, 3004, 2040, 664, 0, 171, 0, 0, 3598, 2626, 2838, 2342,
+ 2349, 0, 4856, 7042, 2847, 1837, 1140, 1186, -287, 3742, -260, 471, 1993, 5019, 3750, 2582,
+ 541, -182, 0, 0, 5422, 3224, 6502, 6364, 2533, 7746, 6188, 4682, 5824, 3480, 5226, 3698,
+ 972, 6949, 8486, 7967, 4359, 9982, 10076, 735, 7068, 5021, 2159, 1689, 11197, 3850, 10617, 3476,
+ 5265, -576, 3915, 8906, 4005, 5871, 6839, 8226, 2024, 1818, 1451, 409, 3644, 6378, 4420, 8308,
+ 2621, 6697, 2844, 2128, 4169, 1842, 4949, 8714, 4635, 4523, 1279, 2087, 4488, 8775, 10142, 9530,
+ 5579, 2449, 10903, 6569, 7423, 7023, 8248, 5691, 7840, 11396, 3539, 1864, 7252, 2571, 5139, 3771,
+ 4696, 2046, 2053, 3590, 3095, 3640, 5052, 5214, 2115, 1581, 308, 955, 1983, 4650, 3122, 2596,
+ 4239, 4765, 4536, 2037, 4384, 2166, 2428, 4543, 5236, 3404, 1437, 3617, 4496, 8658, 10652, 10602,
+ 5538, 2501, 8963, 5135, 7298, 7485, 7697, 6691, 7407, 11800, 3957, 1964, 6776, 2581, 4777, 5000,
+ 1752, 3329, -781, 808, 3494, 5881, 8249, 8787, 4894, 3697, 7837, 3523, 7138, 5795, 6626, 4749,
+ 4823, 10225, 1169, 0, 3227, 1441, 4313, 2021, 8594, 239, 2022, 4837, 3435, 7527, 7419, 5954,
+ 3547, -781, 3559, 4097, 4523, 5361, 4219, 3629, 7835, 5993, 5535, 2009, 9315, 3957, 2076, 6707,
+ 2772, 0, 3457, 6066, 3755, 3796, 1227, 2201, 760, 2873, -317, -945, 2557, 3271, 3327, 4687,
+ -806, 528, 0, 0, 2483, 2600, 6649, 7699, 3013, 5903, 1726, -354, 4660, 4431, 2204, 1810,
+ 1851, 2007, 4086, 3208, 1891, 2483, 4605, 994, 3386, 2416, 3042, 1742, 3374, 1837, 5437, 3097,
+ 3375, 4519, 3755, 3363, 5903, 7272, 2583, 2711, 1780, 2025, 6875, 3898, 3493, 3107, 6357, 5557,
+ 1749, 2715, 941, 1683, 3762, 1992, 8949, 6875, 9299, 168, 2322, 5383, 4374, 12014, 9311, 8684,
+ 6836, -165, 5689, 2685, 7151, 4971, 5587, 7785, 6424, 8453, 5602, 1988, 8178, 5395, 4037, 10198,
+ 4439, -352, -202, -122, 791, 8201, 5364, 4648, 6911, 39, 3864, 0, 5504, 804, 2435, 3556,
+ 2759, 5080, 3097, 0, 3745, 4757, 654, 4905, 2254, 963, 2003, 2991, 1538, 1580, 2682, 2888,
+ 0, 0, 882, 1297, 0, 2579, 1566, 2353, 2105, 2605, 2267, 1992, 2086, 0, 1181, 2232,
+ 1520, 3006, 1808, 663, 2346, 2297, 1020, 782, 0, 0, 3108, 2623, 0, 1139, 2316, 1406,
+ 1689, 1113, 1507, 1816, 1710, 0, 2756, 1548, 0, 0, 101, 171, 0, 3568, 3068, 3442,
+ 3270, 787, 3584, 0, 2916, 679, 1765, 3320, 0, 3877, 0, 0, 6, 1102, 867, 1425,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3779, -36, 2336, 5690, 1460, 5382, 9792, 9438,
+ 3165, 869, 7517, 5038, 5108, 7357, 5423, 6153, 6578, 10387, 2643, 2081, 6901, 1160, 1587, 2936,
+ 4834, 4142, 2074, 6566, 7749, 7812, 8658, 11651, 3887, 4889, 3134, 93, 5955, 7558, 7399, 9913,
+ 2846, 10487, 3393, 2062, 1292, 1247, 8733, 9354, 5916, 2576, 3584, 6749, 4836, 7097, 9373, 9489,
+ 4046, 3709, 5251, 3615, 6030, 8800, 7331, 6183, 6612, 9485, 4281, 2028, 8105, 3578, 6038, 7132,
+ 871, 8056, 1686, -765, 5691, 2610, 1763, 2205, 659, 3975, 4468, 3433, 1490, 3486, 5700, 823,
+ 2636, 2982, 1963, 1706, 1597, 345, 7261, 1661, 1283, 3656, 1744, -82, 2601, 2523, 488, 109,
+ 0, 0, 3816, 3044, 0, 677, 2552, 1102, 1554, 635, 1263, 1758, 1588, 0, 3256, 1327,
+ 892, 4745, 2429, -490, 3031, 5847, 2234, 1850, 2757, 1215, 7955, 3751, 2538, 1057, 4774, 3384,
+ 1332, 2972, 857, 1664, 2117, 1411, 5361, 2573, 3568, 7473, 4310, 5511, 9254, 6501, 4338, 6345,
+ 1856, 6686, 3959, 1871, 4474, 7079, 8807, 6674, 1894, 5398, 2125, 1790, 2932, 2214, 12958, 9153,
+ 7573, 3114, 6574, 5640, 3951, 7857, 5336, 1954, 3504, 2551, 7149, 7108, 5021, 7219, 7550, 1080,
+ 8163, 2649, 4518, 1724, 15022, 7504, 7266, 7504, 4925, 1974, 2171, 6116, 3252, 2537, 9474, 9167,
+ 1371, 2807, 3643, 4956, 4060, 9803, 5824, 3001, 8702, 9705, 4398, 2144, 8427, 1235, 2449, 2572,
+ 8921, -1130, 5312, 9350, 2527, 7560, 9962, 8277, 4538, 1898, 3373, 3774, 5832, 9388, 5848, 4791,
+ 8649, 7858, 6046, 2125, 13381, 6437, 3270, 8732, 8528, -499, 1304, 6365, 4103, 10990, 11670, 12251,
+ 6910, 459, 4911, 1649, 7572, 6511, 5511, 9467, 6553, 11875, 5666, 2156, 6300, 3819, 2800, 9352,
+ 7130, -921, 0, 2036, 2724, 7111, 3801, 2568, 3793, -1180, 1470, 1448, 4396, 1586, 2201, 2250,
+ 4444, 2263, 3396, 0, 6030, 4264, 1700, 6456, 6771, 756, 2087, 6028, 3185, 8408, 12015, 11682,
+ 5760, 1846, 6846, 4259, 7270, 8607, 6675, 6937, 8360, 12325, 5077, 2116, 8729, 3526, 2749, 6030,
+ 5080, 3639, 5307, 6664, 4065, 5094, 8250, 6832, 2750, 4696, 6586, 6211, 5295, 10117, 8231, 2874,
+ 8139, 7566, 3901, 1924, 11823, 4505, 6669, 5109, 5913, 605, 6424, 8415, 2432, 4167, 5932, 5244,
+ 2839, 3981, -564, 620, 2773, 7923, 4541, 2880, 4691, 4021, 5212, 2084, 9796, 5915, 4534, 7948,
+ 1993, 8632, 5335, 4540, 7512, 3998, 4740, 4823, 915, 7554, 7289, 5956, 4319, 9170, 10095, 2860,
+ 4893, 5475, 1667, 1703, 7337, 2585, 12187, 4840, 4316, -812, 6472, 10712, 1704, 1820, 7360, 6727,
+ 132, 3395, 2118, 3679, 2745, 10192, 5284, 3980, 5924, 6073, 2932, 2149, 10428, 2975, 3912, 5325,
+ 7520, -569, 5247, 6883, 1812, 7029, 6480, 5154, 4728, 1569, 908, 870, 3753, 5791, 3753, 3593,
+ 5200, 4268, 5890, 2054, 10007, 6698, 2828, 8652, 9434, -1933, 3250, 7513, 1781, 9647, 11907, 10185,
+ 6445, 30, 5547, 4179, 7188, 8140, 5424, 6126, 9469, 10435, 6432, 2154, 12343, 5933, 996, 7935,
+ 1431, 0, 1202, 2722, 891, 3706, 5177, 4606, 2448, 1471, 5989, 3494, 4449, 4227, 4108, 3233,
+ 3416, 5499, 0, 0, 4717, 1594, 2339, 1710, 2595, 7533, 2527, 2613, 6958, 6638, 7309, 7928,
+ 3285, 5410, 9222, 5584, 6001, 7606, 9430, 5357, 5304, 9094, 2130, 1771, 4899, 1569, 9553, 4398,
+ 4579, 4062, 1868, 5420, 6312, 7571, 9698, 11454, 4316, 4285, 5715, 2458, 6463, 8052, 7741, 8342,
+ 4960, 11391, 3495, 2029, 3682, 1553, 7103, 6956, 5683, 1178, 2055, 3580, 2665, 4602, 5120, 4830,
+ 2703, 617, 324, 966, 2182, 4029, 2656, 2594, 4572, 4354, 4999, 2040, 5225, 2901, 1680, 5188,
+ 2945, 2301, 3892, 5345, 3077, 2798, 5280, 4401, 2085, 5479, 3392, 3376, 4769, 8176, 6421, 1229,
+ 5068, 4606, 1707, 0, 8963, 4381, 6223, 4206, 7026, 3170, 3938, 3500, 3770, 9366, 7617, 4984,
+ 5155, 1470, 9480, 7195, 6441, 6332, 7533, 3100, 8440, 6384, 4415, 1765, 12195, 5861, 5540, 6069,
+ 3308, 3428, 2392, 3782, 3763, 5772, 7701, 8740, 4409, 3813, 3876, 1088, 4490, 6189, 5617, 5629,
+ 3759, 8766, 3846, 2024, 3502, 2400, 4615, 5110, 1783, 8476, 1708, 1097, 7080, 3170, 4470, 4758,
+ 226, 4682, 7244, 6366, 3423, 6667, 8129, 1995, 5461, 6025, 1708, 1726, 4147, -196, 8760, 1755,
+ 4019, 1231, 1978, 4553, 3450, 3504, 4473, 4543, 0, 0, 3246, 3551, 1937, 4396, 3613, 4020,
+ 4122, 4420, 2168, 1969, 4124, 0, 3185, 3851, 7137, 4923, 1660, 1422, 7434, 9336, 2497, 2150,
+ 2910, 266, 4583, 3325, 3843, 1608, 5405, 4194, 3679, 1892, 3640, 1683, 4406, 3161, 7930, 8613,
+ 5687, 2525, 4125, 3536, 3126, 7599, 5217, 4085, 4785, 2027, 4099, 2269, 4045, 4295, 4971, 3293,
+ 4400, 4101, 4586, 1862, 7753, 5511, 4772, 6991, 890, 4763, 1641, -1337, 3041, 2914, -407, -1027,
+ 0, 0, 5022, 3764, 0, -98, 2961, 593, 1332, -169, 855, 1666, 1388, 0, 4110, 960,
+ 1240, 4589, 2133, 4523, 4442, -270, 5443, 7485, -115, 5248, -581, 426, 1228, 7574, 4630, 2977,
+ 3148, 6910, 3083, 2110, 1349, -622, 4696, 2369, 3009, 4125, 5517, 5030, 4665, 4746, 2755, 1855,
+ 491, 3098, 6449, 5316, 2784, 5499, 6714, 3190, 3422, 2087, 1087, 1717, 7385, 2762, 8504, 5439,
+ -447, 4025, 3824, 3755, 2965, -196, 2444, 3118, 996, 7320, 152, 0, 2299, 6602, 5115, 429,
+ 1121, 2730, 807, 0, 3828, 2923, 6752, 2797, 3961, 6127, 6552, 8471, 7996, 3999, 4459, 5608,
+ 462, 7676, 1884, 2275, 3516, 9655, 8667, 4723, 3244, 4311, 2676, 1885, 6780, 3424, 12397, 8998,
+ 2665, 5866, 1769, 216, 4691, 3744, 2571, 2526, 1540, 2521, 3533, 2876, 1787, 3163, 4669, 1223,
+ 3309, 2997, 2979, 1781, 3017, 1447, 5451, 2919, 3045, 2141, 4578, 5938, 2833, 2224, 5003, 3787,
+ 1681, 5732, 3004, 3629, 4465, 8674, 6446, 515, 5369, 3937, 1791, 0, 10098, 4821, 6309, 4199,
+ 3100, 4236, 3429, 3017, 4989, 6888, 3734, 3435, 2040, 1805, 8064, 4951, 3862, 3759, 6488, 5062,
+ 2984, 4003, 1047, 1708, 4726, 1833, 7684, 5369, 4651, 3137, 4137, 4041, 3479, 6303, 5536, 5061,
+ 4094, 3185, 3621, 1966, 3821, 5360, 5379, 3541, 4094, 4983, 4198, 1905, 6779, 4598, 5323, 6354,
+ 8535, -496, 2614, 7423, 3921, 9825, 10876, 10978, 5996, 1146, 4073, 1990, 6900, 7378, 5650, 8190,
+ 6815, 10433, 5679, 2145, 8047, 4505, 3376, 9432, 5816, 3091, 2399, 823, 3305, 9919, 5478, 4241,
+ 6300, 536, 6701, 2920, 5048, 2172, 4974, 4097, 4361, 4938, 4443, 1775, 6272, 5151, 4229, 6539,
+ 7837, 1911, 1826, 2187, 3189, 7938, 6576, 3891, 3771, -1147, 7034, 6753, 4798, 4468, 5068, 1718,
+ 8837, 5138, 4960, 1832, 10666, 4237, 2419, 4637, 1506, 0, 3053, 4571, 1047, 2134, 3869, 3023,
+ 1063, 2622, 4059, 3261, 3396, 5358, 4210, 1970, 3194, 3361, 0, 0, 6421, 2420, 3572, 2499,
+ -400, 9181, 1688, -749, 6250, 1372, 1678, 2701, -101, 5216, 4455, 3425, 1230, 4290, 6307, 830,
+ 2209, 3514, 1369, 1708, 515, -605, 8231, 832, 4107, 2162, 0, 2408, 5164, 4461, 2745, 3716,
+ 1742, 2186, 127, 36, 3494, 2945, 3551, 3269, 1942, 2877, 1778, 0, 1635, 1700, 5314, 5914,
+ 63, 3568, 203, 268, 2738, 3601, 4783, 5970, 4005, 4569, 3488, 0, 4399, 3816, 4575, 3239,
+ 1292, 6442, 1046, 0, 454, 1685, 4267, 2156, 3508, 1636, 5856, 7617, 2831, 3146, 5467, 4492,
+ 418, 3159, 4901, 5019, 2921, 8064, 6096, 3319, 5185, 4552, 2017, 1934, 9317, 2806, 5750, 4703,
+ 3209, 7325, 6673, 4695, 6928, 4577, 1311, 1033, 1053, 6495, 3392, 3032, 2466, 6239, 7794, 1848,
+ 2347, 510, 2424, 1666, 7084, 4661, 11986, 7596, 6745, 2342, 5948, 9657, 6079, 6094, 6746, 7267,
+ 2379, 5001, 985, 1458, 4447, 9162, 6945, 5899, 4679, 5706, 4389, 2035, 8555, 4754, 8623, 10446,
+ 4608, 1278, 2325, 5441, 4765, 7829, 6200, 7492, 3079, 942, 4733, 1571, 4418, 4083, 4977, 8570,
+ 2200, 6842, 2149, 1964, 2299, 1214, 5595, 7762, 7400, 3754, 4723, 3420, 4502, 9788, 5793, 2922,
+ 4780, 1549, 8965, 7009, 5927, 5448, 7562, 2554, 7596, 4014, 4268, 1680, 12471, 6612, 7029, 7304,
+ 3949, -719, 5518, 9403, 1026, 2177, 8514, 7553, 837, 2806, 4146, 4850, 3427, 10106, 5481, 3869,
+ 6962, 7660, 2898, 2141, 10568, 2552, 2686, 3695, 4237, 2216, 0, 2568, 5587, 4706, 2395, 3669,
+ 1712, 2244, -459, -580, 3395, 2637, 3447, 3711, 1341, 2553, 1755, 0, 951, 1661, 5775, 6623,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2260, 1599, 0, 0, 1759, 2250, 1942, 1779,
+ 2118, 1571, 0, 0, 1982, 1694, 1744, 0, 2028, 1771, 2075, 0, 2206, 2170, 1644, 2139,
+ 2858, -708, 5757, 8432, 879, 1375, 4890, 5117, 657, 2955, -576, 213, 986, 6816, 3000, 3739,
+ 2449, 3921, 2893, 2139, 6072, 2659, 2774, 5157, -166, 3772, 0, 0, 2838, -94, 1764, 2701,
+ 676, 3942, 0, 0, 1494, 3211, 2912, 0, 1214, 2771, 938, 0, 146, 367, 3517, 555,
+ 5024, 3092, 2127, 6433, 5864, 3597, 7182, 8573, 944, 3503, 1060, 2004, 3440, 8077, 5635, 5138,
+ 5259, 7792, 3885, 2104, 4344, 702, 5581, 5904, 4207, 730, 2025, 5131, 3272, 3343, 4860, 5053,
+ 0, 0, 2668, 3192, 1931, 4730, 3420, 4274, 4192, 4766, 2354, 2012, 4181, 0, 2820, 4057};
+
+const int16_t *const batch_matmul_5_s16_output_ref = batch_matmul_5_s16_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_input_tensor.h
new file mode 100644
index 00000000..690e0d8b
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_input_tensor.h
@@ -0,0 +1,78 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_5_s16_rhs_input_tensor[1152] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -11808, -9385, -21846, 0, 24912, -9505, -21846, 0,
+ -5552, -9407, -21846, 0, 23488, -9421, -21846, 0, 13824, -9410, -21846, 0, -29184, -9432, -21846, 0,
+ 13456, -9490, -21846, 0, -7088, -9447, -21846, 0, -27664, -9406, -21846, 0, 0, 0, 0, 0,
+ 24880, -9414, -21846, 0, 576, -9535, -21846, 0, -1552, -9385, -21846, 0, 6864, -9379, -21846, 0,
+ 13056, -9502, -21846, 0, 14080, -9403, -21846, 0, -2192, -9399, -21846, 0, -17536, -9530, -21846, 0,
+ -1984, -9409, -21846, 0, 0, 0, 0, 0, -13296, -9508, -21846, 0, 3712, -9469, -21846, 0,
+ -22640, -9546, -21846, 0, -32512, -9426, -21846, 0, -29728, -9402, -21846, 0, 0, 0, 0, 0,
+ 11248, -9502, -21846, 0, 31792, -9394, -21846, 0, 29312, -9436, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22672, -9383, -21846, 0, 9488, -9421, -21846, 0, -13904, -9461, -21846, 0,
+ -26336, -9433, -21846, 0, -20016, -9387, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9856, -9457, -21846, 0, -23312, -9387, -21846, 0,
+ 32016, -9478, -21846, 0, -31600, -9401, -21846, 0, 0, 0, 0, 0, -29008, -9393, -21846, 0,
+ 0, 0, 0, 0, -8768, -9527, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -19808, -9492, -21846, 0, 0, 0, 0, 0, 21136, -9394, -21846, 0, -25888, -9398, -21846, 0,
+ 18832, -9423, -21846, 0, 0, 0, 0, 0, -13760, -9384, -21846, 0, 23824, -9399, -21846, 0,
+ 30640, -9404, -21846, 0, 26640, -9397, -21846, 0, -2512, -9447, -21846, 0, -8064, -9461, -21846, 0,
+ 19184, -9414, -21846, 0, -18096, -9426, -21846, 0, -8496, -9387, -21846, 0, -28416, -9432, -21846, 0,
+ 17936, -9408, -21846, 0, 0, 0, 0, 0, 16928, -9429, -21846, 0, 0, 0, 0, 0,
+ -10976, -9472, -21846, 0, -16288, -9385, -21846, 0, 0, 0, 0, 0, -22320, -9462, -21846, 0,
+ -8560, -9430, -21846, 0, -21184, -9455, -21846, 0, 27184, -9422, -21846, 0, 8512, -9502, -21846, 0,
+ -7792, -9387, -21846, 0, -11488, -9467, -21846, 0, 26480, -9400, -21846, 0, 29664, -9372, -21846, 0,
+ 15952, -9423, -21846, 0, -31712, -9431, -21846, 0, 0, 0, 0, 0, 17728, -9462, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -17168, -9387, -21846, 0, 0, 0, 0, 0,
+ -28752, -9400, -21846, 0, 0, 0, 0, 0, -3744, -9386, -21846, 0, -7600, -9407, -21846, 0,
+ 64, -9408, -21846, 0, 12064, -9502, -21846, 0, -3328, -9409, -21846, 0, 6160, -9384, -21846, 0,
+ 12960, -9498, -21846, 0, 0, 0, 0, 0, -352, -9385, -21846, 0, 912, -9446, -21846, 0,
+ -16224, -9428, -21846, 0, -14528, -9494, -21846, 0, 31056, -9498, -21846, 0, 9504, -9379, -21846, 0,
+ -2304, -9409, -21846, 0, -20272, -9387, -21846, 0, 0, 0, 0, 0, -14256, -9467, -21846, 0,
+ -1328, -9412, -21846, 0, 0, 0, 0, 0, 24400, -9394, -21846, 0, 27760, -9400, -21846, 0,
+ -19216, -9395, -21846, 0, 0, 0, 0, 0, 1712, -9385, -21846, 0, 0, 0, 0, 0,
+ 30272, -9498, -21846, 0, -18048, -9387, -21846, 0, 31648, -9376, -21846, 0, 16704, -9429, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -19392, -9400, -21846, 0, 30720, -9380, -21846, 0,
+ -23808, -9384, -21846, 0, 0, 0, 0, 0, -25056, -9397, -21846, 0, 0, 0, 0, 0,
+ -18384, -9422, -21846, 0, 9840, -9387, -21846, 0, -30896, -9461, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -9792, -9505, -21846, 0, -25360, -9387, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -2976, -9488, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8624, -9484, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -8384, -9461, -21846, 0, 23520, -9400, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 28320, -9478, -21846, 0, 0, 0, 0, 0,
+ -16176, -9387, -21846, 0, -31968, -9374, -21846, 0, 7760, -9484, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -30080, -9388, -21846, 0, -30048, -9398, -21846, 0,
+ 29888, -9422, -21846, 0, -28288, -9386, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -23936, -9468, -21846, 0, 0, 0, 0, 0, 19488, -9394, -21846, 0,
+ 8944, -9484, -21846, 0, 2496, -9440, -21846, 0, 24736, -9410, -21846, 0, 24112, -9495, -21846, 0,
+ 0, 0, 0, 0, 29600, -9422, -21846, 0, -28096, -9402, -21846, 0, 0, 0, 0, 0,
+ -32, -9409, -21846, 0, -14560, -9488, -21846, 0, 22576, -9399, -21846, 0, -32464, -9401, -21846, 0,
+ -28000, -9434, -21846, 0, -9568, -9472, -21846, 0, -31280, -9401, -21846, 0, 3552, -9440, -21846, 0,
+ -9952, -9461, -21846, 0, 7888, -9385, -21846, 0, 0, 0, 0, 0, 30848, -9394, -21846, 0,
+ 27632, -9378, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27616, -9402, -21846, 0,
+ -2656, -9434, -21846, 0, 0, 0, 0, 0, -28384, -9461, -21846, 0, 0, 0, 0, 0,
+ -31520, -9391, -21846, 0, 6896, -9385, -21846, 0, -27328, -9525, -21846, 0, 0, 0, 0, 0,
+ 10912, -9436, -21846, 0, 16848, -9477, -21846, 0, 0, 0, 0, 0, -13712, -9498, -21846, 0,
+ 9680, -9436, -21846, 0, 12656, -9373, -21846, 0, 25904, -9394, -21846, 0, 29808, -9471, -21846, 0,
+ -22496, -9387, -21846, 0, -14784, -9453, -21846, 0, 18048, -9457, -21846, 0, 2272, -9560, -21846, 0,
+ -28512, -9398, -21846, 0, -2960, -9372, -21846, 0, 23888, -9497, -21846, 0, -11728, -9395, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21216, -9446, -21846, 0, 18336, -9391, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -17648, -9440, -21846, 0, -30144, -9407, -21846, 0,
+ 30112, -9478, -21846, 0, -24848, -9420, -21846, 0, 26160, -9397, -21846, 0, 0, 0, 0, 0,
+ 17936, -9414, -21846, 0, -26112, -9421, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -3792, -9405, -21846, 0, 15664, -9458, -21846, 0, 6208, -9431, -21846, 0,
+ -19504, -9387, -21846, 0, -14656, -9387, -21846, 0, -19328, -9426, -21846, 0, -19280, -9413, -21846, 0,
+ 10128, -9462, -21846, 0, -5664, -9405, -21846, 0, -2304, -9372, -21846, 0, -14848, -9406, -21846, 0,
+ -12832, -9464, -21846, 0, 18864, -9414, -21846, 0, 22032, -9383, -21846, 0, 0, 0, 0, 0,
+ -5648, -9413, -21846, 0, -24832, -9397, -21846, 0, 0, 0, 0, 0, 10352, -9387, -21846, 0,
+ -20208, -9444, -21846, 0, -14848, -9494, -21846, 0, 30752, -9372, -21846, 0, -12704, -9508, -21846, 0,
+ -10304, -9505, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14464, -9410, -21846, 0,
+ -2400, -9372, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -5104, -9407, -21846, 0, -27088, -9414, -21846, 0, -29840, -9400, -21846, 0, 26208, -9372, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -12672, -9375, -21846, 0, 22928, -9394, -21846, 0,
+ 21296, -9399, -21846, 0, 17696, -9385, -21846, 0, -16384, -9440, -21846, 0, -23808, -9463, -21846, 0,
+ -9280, -9505, -21846, 0, 31664, -9394, -21846, 0, -7632, -9381, -21846, 0, 20144, -9394, -21846, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_transposed_tensor.h
new file mode 100644
index 00000000..13e40861
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/rhs_transposed_tensor.h
@@ -0,0 +1,89 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int16_t batch_matmul_5_s16_rhs_transposed_tensor[1152] = {
+ 0, 0, -5552, 13456, 24880, 13056, -1984, -22640, 11248, 0, -26336, 0, 32016, 0,
+ -19808, 18832, 30640, 19184, 17936, -10976, -8560, -7792, 15952, 0, 0, 0, -9407, -9490,
+ -9414, -9502, -9409, -9546, -9502, 0, -9433, 0, -9478, 0, -9492, -9423, -9404, -9414,
+ -9408, -9472, -9430, -9387, -9423, 0, 0, 0, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21846, 0, -21846, 0, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846,
+ -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23488, -7088, 576, 14080, 0, -32512, 31792, 22672, -20016, 0, -31600, -8768, 0, 0,
+ 26640, -18096, 0, -16288, -21184, -11488, -31712, 0, 0, 0, -9421, -9447, -9535, -9403,
+ 0, -9426, -9394, -9383, -9387, 0, -9401, -9527, 0, 0, -9397, -9426, 0, -9385,
+ -9455, -9467, -9431, 0, 0, 0, -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846,
+ -21846, 0, -21846, -21846, 0, 0, -21846, -21846, 0, -21846, -21846, -21846, -21846, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11808, 13824, -27664,
+ -1552, -2192, -13296, -29728, 29312, 9488, 0, 9856, 0, 0, 21136, -13760, -2512, -8496,
+ 16928, 0, 27184, 26480, 0, -17168, 0, -9385, -9410, -9406, -9385, -9399, -9508, -9402,
+ -9436, -9421, 0, -9457, 0, 0, -9394, -9384, -9447, -9387, -9429, 0, -9422, -9400,
+ 0, -9387, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846,
+ 0, 0, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24912, -29184, 0, 6864, -17536,
+ 3712, 0, 0, -13904, 0, -23312, -29008, 0, -25888, 23824, -8064, -28416, 0, -22320,
+ 8512, 29664, 17728, 0, 0, -9505, -9432, 0, -9379, -9530, -9469, 0, 0, -9461,
+ 0, -9387, -9393, 0, -9398, -9399, -9461, -9432, 0, -9462, -9502, -9372, -9462, 0,
+ 0, -21846, -21846, 0, -21846, -21846, -21846, 0, 0, -21846, 0, -21846, -21846, 0,
+ -21846, -21846, -21846, -21846, 0, -21846, -21846, -21846, -21846, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -28752, 64, 12960, -16224, -2304, -1328, -19216, 30272,
+ 0, -23808, -18384, 0, -9792, -2976, 0, 0, -16176, 0, 29888, 0, 8944, 0,
+ -32, -28000, -9400, -9408, -9498, -9428, -9409, -9412, -9395, -9498, 0, -9384, -9422, 0,
+ -9505, -9488, 0, 0, -9387, 0, -9422, 0, -9484, 0, -9409, -9434, -21846, -21846,
+ -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846, 0, -21846, -21846, 0, 0,
+ -21846, 0, -21846, 0, -21846, 0, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12064, 0, -14528, -20272, 0, 0, -18048, 0, 0,
+ 9840, 0, -25360, 0, 0, 0, -31968, 0, -28288, -23936, 2496, 29600, -14560, -9568,
+ 0, -9502, 0, -9494, -9387, 0, 0, -9387, 0, 0, -9387, 0, -9387, 0,
+ 0, 0, -9374, 0, -9386, -9468, -9440, -9422, -9488, -9472, 0, -21846, 0, -21846,
+ -21846, 0, 0, -21846, 0, 0, -21846, 0, -21846, 0, 0, 0, -21846, 0,
+ -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -3744, -3328, -352, 31056, 0, 24400, 1712, 31648, -19392, -25056, -30896, 0,
+ 0, 0, -8384, 28320, 7760, -30080, 0, 0, 24736, -28096, 22576, -31280, -9386, -9409,
+ -9385, -9498, 0, -9394, -9385, -9376, -9400, -9397, -9461, 0, 0, 0, -9461, -9478,
+ -9484, -9388, 0, 0, -9410, -9402, -9399, -9401, -21846, -21846, -21846, -21846, 0, -21846,
+ -21846, -21846, -21846, -21846, -21846, 0, 0, 0, -21846, -21846, -21846, -21846, 0, 0,
+ -21846, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -7600, 6160, 912, 9504, -14256, 27760, 0, 16704, 30720, 0, 0, 0, 0, 8624,
+ 23520, 0, 0, -30048, 0, 19488, 24112, 0, -32464, 3552, -9407, -9384, -9446, -9379,
+ -9467, -9400, 0, -9429, -9380, 0, 0, 0, 0, -9484, -9400, 0, 0, -9398,
+ 0, -9394, -9495, 0, -9401, -9440, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846,
+ -21846, 0, 0, 0, 0, -21846, -21846, 0, 0, -21846, 0, -21846, -21846, 0,
+ -21846, -21846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9952, 27632,
+ -2656, -31520, 10912, 9680, -22496, -28512, 0, 0, 30112, 17936, 0, -19504, 10128, -12832,
+ -5648, -20208, -10304, -2400, -5104, 0, 21296, -9280, -9461, -9378, -9434, -9391, -9436, -9436,
+ -9387, -9398, 0, 0, -9478, -9414, 0, -9387, -9462, -9464, -9413, -9444, -9505, -9372,
+ -9407, 0, -9399, -9505, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0,
+ -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7888, 0, 0, 6896,
+ 16848, 12656, -14784, -2960, 0, 0, -24848, -26112, -3792, -14656, -5664, 18864, -24832, -14848,
+ 0, 0, -27088, 0, 17696, 31664, -9385, 0, 0, -9385, -9477, -9373, -9453, -9372,
+ 0, 0, -9420, -9421, -9405, -9387, -9405, -9414, -9397, -9494, 0, 0, -9414, 0,
+ -9385, -9394, -21846, 0, 0, -21846, -21846, -21846, -21846, -21846, 0, 0, -21846, -21846,
+ -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, -21846, 0, -21846, -21846, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28384, -27328, 0, 25904,
+ 18048, 23888, 21216, -17648, 26160, 0, 15664, -19328, -2304, 22032, 0, 30752, 0, 0,
+ -29840, -12672, -16384, -7632, 0, 0, -9461, -9525, 0, -9394, -9457, -9497, -9446, -9440,
+ -9397, 0, -9458, -9426, -9372, -9383, 0, -9372, 0, 0, -9400, -9375, -9440, -9381,
+ 0, 0, -21846, -21846, 0, -21846, -21846, -21846, -21846, -21846, -21846, 0, -21846, -21846,
+ -21846, -21846, 0, -21846, 0, 0, -21846, -21846, -21846, -21846, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 30848, -27616, 0, 0, -13712, 29808, 2272, -11728,
+ 18336, -30144, 0, 0, 6208, -19280, -14848, 0, 10352, -12704, 14464, 0, 26208, 22928,
+ -23808, 20144, -9394, -9402, 0, 0, -9498, -9471, -9560, -9395, -9391, -9407, 0, 0,
+ -9431, -9413, -9406, 0, -9387, -9508, -9410, 0, -9372, -9394, -9463, -9394, -21846, -21846,
+ 0, 0, -21846, -21846, -21846, -21846, -21846, -21846, 0, 0, -21846, -21846, -21846, 0,
+ -21846, -21846, -21846, 0, -21846, -21846, -21846, -21846, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s16/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/config_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/config_data.h
new file mode 100644
index 00000000..77f98485
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/config_data.h
@@ -0,0 +1,26 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#define BATCH_MATMUL_5_S8_LHS_BATCH 1
+#define BATCH_MATMUL_5_S8_LHS_HEIGHT 3
+#define BATCH_MATMUL_5_S8_LHS_ROWS 32
+#define BATCH_MATMUL_5_S8_LHS_COLS 16
+#define BATCH_MATMUL_5_S8_RHS_BATCH 3
+#define BATCH_MATMUL_5_S8_RHS_HEIGHT 1
+#define BATCH_MATMUL_5_S8_RHS_ROWS 24
+#define BATCH_MATMUL_5_S8_RHS_COLS 16
+#define BATCH_MATMUL_5_S8_ADJ_X 0
+#define BATCH_MATMUL_5_S8_ADJ_Y 1
+#define BATCH_MATMUL_5_S8_ASYMMETRIC_QUANTIZE_INPUTS 0
+#define BATCH_MATMUL_5_S8_DST_SIZE 6912
+#define BATCH_MATMUL_5_S8_OUTPUT_BATCH 3
+#define BATCH_MATMUL_5_S8_OUTPUT_HEIGHT 3
+#define BATCH_MATMUL_5_S8_OUTPUT_ROWS 32
+#define BATCH_MATMUL_5_S8_OUTPUT_COLS 24
+#define BATCH_MATMUL_5_S8_LHS_OFFSET 128
+#define BATCH_MATMUL_5_S8_RHS_OFFSET 128
+#define BATCH_MATMUL_5_S8_OUTPUT_OFFSET -128
+#define BATCH_MATMUL_5_S8_ACTIVATION_MIN -128
+#define BATCH_MATMUL_5_S8_ACTIVATION_MAX 127
+#define BATCH_MATMUL_5_S8_OUTPUT_MULTIPLIER 2001219854
+#define BATCH_MATMUL_5_S8_OUTPUT_SHIFT -11
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_input_tensor.h
new file mode 100644
index 00000000..c7143489
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_input_tensor.h
@@ -0,0 +1,83 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_5_s8_lhs_input_tensor[1536] = {
+ 64, -44, -81, -41, -86, -86, 0, 0, -32, -44, -81, -41, -86, -86, 0, 0, 80, -116, 103, -41,
+ -86, -86, 0, 0, -80, -67, -112, -41, -86, -86, 0, 0, -64, -67, -112, -41, -86, -86, 0, 0,
+ -64, -67, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, 48, -45, -57, -41, -86, -86, 0, 0, -96, -45, -57, -41, -86, -86, 0, 0,
+ 32, -50, -69, -41, -86, -86, 0, 0, 0, 60, -34, -41, -86, -86, 0, 0, 48, 60, -34, -41,
+ -86, -86, 0, 0, 64, 60, -34, -41, -86, -86, 0, 0, 32, -64, -27, -41, -86, -86, 0, 0,
+ -32, 55, -34, -41, -86, -86, 0, 0, 8, 56, -34, -41, -86, -86, 0, 0, 32, 56, -34, -41,
+ -86, -86, 0, 0, 48, 8, -91, -41, -86, -86, 0, 0, 16, -41, -112, -41, -86, -86, 0, 0,
+ 24, -41, -112, -41, -86, -86, 0, 0, 24, -41, -112, -41, -86, -86, 0, 0, -80, -58, -50, -41,
+ -86, -86, 0, 0, -96, -47, -112, -41, -86, -86, 0, 0, -88, -47, -112, -41, -86, -86, 0, 0,
+ -88, -47, -112, -41, -86, -86, 0, 0, -16, -116, -43, -41, -86, -86, 0, 0, -96, -46, -112, -41,
+ -86, -86, 0, 0, -88, -46, -112, -41, -86, -86, 0, 0, -88, -46, -112, -41, -86, -86, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, -120, 24, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, -32, -82, -35, -41, -86, -86, 0, 0, 16, 82, -114, -41, -86, -86, 0, 0,
+ -128, -44, -112, -41, -86, -86, 0, 0, -112, -44, -112, -41, -86, -86, 0, 0, -112, -44, -112, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -51, 0, 0, 0, -86, -86, 0, 0,
+ -80, -1, -36, -41, -86, -86, 0, 0, -40, 24, -34, -41, -86, -86, 0, 0, -64, 66, -74, -41,
+ -86, -86, 0, 0, 64, -61, -75, -41, -86, -86, 0, 0, 72, -61, -75, -41, -86, -86, 0, 0,
+ 72, -61, -75, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, -32, 67, -28, -41, -86, -86, 0, 0, 80, 68, -28, -41, -86, -86, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, 40, 25, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, -80, 72, -28, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ -64, 66, -74, -41, -86, -86, 0, 0, 80, 25, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, -128, 83, 62, -41, -86, -86, 0, 0, -96, -30, -100, -41, -86, -86, 0, 0,
+ -88, -30, -100, -41, -86, -86, 0, 0, -88, -30, -100, -41, -86, -86, 0, 0, 80, 9, 127, -41,
+ -86, -86, 0, 0, 96, -46, -112, -41, -86, -86, 0, 0, 104, -46, -112, -41, -86, -86, 0, 0,
+ 104, -46, -112, -41, -86, -86, 0, 0, -48, -68, -57, -41, -86, -86, 0, 0, -128, -46, -112, -41,
+ -86, -86, 0, 0, -120, -46, -112, -41, -86, -86, 0, 0, -120, -46, -112, -41, -86, -86, 0, 0,
+ 80, 9, -119, -41, -86, -86, 0, 0, -80, -42, -112, -41, -86, -86, 0, 0, -64, -42, -112, -41,
+ -86, -86, 0, 0, -64, -42, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ -128, 83, 62, -41, -86, -86, 0, 0, -16, 25, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, -64, -76, -70, -41, -86, -86, 0, 0, 112, -62, -75, -41, -86, -86, 0, 0,
+ -120, -62, -75, -41, -86, -86, 0, 0, -112, -62, -75, -41, -86, -86, 0, 0, 32, 40, -121, -41,
+ -86, -86, 0, 0, 16, -99, -56, -41, -86, -86, 0, 0, 24, -99, -56, -41, -86, -86, 0, 0,
+ 24, -99, -56, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, -16, 56, -28, -41, -86, -86, 0, 0, -96, -55, -35, -41, -86, -86, 0, 0,
+ -64, -2, -45, -41, -86, -86, 0, 0, -80, -66, -112, -41, -86, -86, 0, 0, -72, -66, -112, -41,
+ -86, -86, 0, 0, -72, -66, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 64, -115, -96, -41, -86, -86, 0, 0, -112, 26, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 96, 122, -113, -41, -86, -86, 0, 0, -48, 59, -72, -41, -86, -86, 0, 0,
+ -16, 59, -72, -41, -86, -86, 0, 0, -16, 59, -72, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, -56, 26, -34, -41, -86, -86, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 32, 40, -121, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, -16, -94, -35, -41, -86, -86, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, -109, 5, 0, 0, -1, -1, -1, -1, 64, 38, -34, -41,
+ -86, -86, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ -64, -2, -45, -41, -86, -86, 0, 0, 48, 27, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 80, 43, -33, -41, -86, -86, 0, 0, 48, 55, 0, -72, -2, -1, 0, 0,
+ 120, 55, 0, -72, -2, -1, 0, 0, -80, 55, 0, -72, -2, -1, 0, 0, 96, -114, 103, -41,
+ -86, -86, 0, 0, -96, 55, -34, -41, -86, -86, 0, 0, -88, 55, -34, -41, -86, -86, 0, 0,
+ -88, 55, -34, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, -1, -1, -1, -1,
+ 0, -16, -1, -1, -1, -1, -1, -1, -88, 27, -34, -41, -86, -86, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -48, -100, -35, -41, -86, -86, 0, 0, 16, 10, -91, -41, -86, -86, 0, 0,
+ -16, -42, -112, -41, -86, -86, 0, 0, -8, -42, -112, -41, -86, -86, 0, 0, -8, -42, -112, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 112, -42, -57, -41, -86, -86, 0, 0,
+ 80, -99, -78, -41, -86, -86, 0, 0, -8, 27, -34, -41, -86, -86, 0, 0, 0, -52, -69, -41,
+ -86, -86, 0, 0, 0, 49, -72, -41, -86, -86, 0, 0, 40, 49, -72, -41, -86, -86, 0, 0,
+ 64, 49, -72, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, -112, -98, -35, -41, -86, -86, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
+ -112, 35, -28, -41, -86, -86, 0, 0, -96, -44, -112, -41, -86, -86, 0, 0, -88, -44, -112, -41,
+ -86, -86, 0, 0, -88, -44, -112, -41, -86, -86, 0, 0, 96, -3, -45, -41, -86, -86, 0, 0,
+ -16, -66, -112, -41, -86, -86, 0, 0, 0, -65, -112, -41, -86, -86, 0, 0, 0, -65, -112, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 101, 114, 114, 111, 114, 95, 104, 97,
+ -112, -73, -27, -41, -86, -86, 0, 0, -104, 28, -34, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, -32, -97, -35, -41, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, -26, -75, -41, -86, -86, 0, 0, 80, 51, -82, -41, -86, -86, 0, 0, -48, -7, -110, -41,
+ -86, -86, 0, 0, -40, -7, -110, -41, -86, -86, 0, 0, -40, -7, -110, -41, -86, -86, 0, 0,
+ -32, -89, -108, -41, -86, -86, 0, 0, 80, -42, -112, -41, -86, -86, 0, 0, 88, -42, -112, -41,
+ -86, -86, 0, 0, 88, -42, -112, -41, -86, -86, 0, 0, 32, 121, -113, -41, -86, -86, 0, 0,
+ 112, -35, -81, -41, -86, -86, 0, 0, -128, -35, -81, -41, -86, -86, 0, 0, -128, -35, -81, -41,
+ -86, -86, 0, 0, 96, 51, -54, -41, -86, -86, 0, 0, 112, 63, -34, -41, -86, -86, 0, 0,
+ 120, 63, -34, -41, -86, -86, 0, 0, 120, 63, -34, -41, -86, -86, 0, 0, -96, -81, -51, -41,
+ -86, -86, 0, 0, -48, -42, -112, -41, -86, -86, 0, 0, -40, -42, -112, -41, -86, -86, 0, 0,
+ -40, -42, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, -128, -94, -35, -41, -86, -86, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0,
+ -128, -43, 56, -41, -86, -86, 0, 0, 0, 12, 99, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_transposed_tensor.h
new file mode 100644
index 00000000..e6ca6309
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/lhs_transposed_tensor.h
@@ -0,0 +1,87 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_5_s8_lhs_transposed_tensor[1536] = {
+ 64, 80, -64, 0, 48, 32, 48, 32, 8, 48, 24, -80, -88, -16, -88, 0, 0, 16, -112,
+ 0, -80, -64, 72, 0, -32, 0, 0, 0, 80, -128, -88, 80, -44, -116, -67, -16, -45, -50,
+ 60, -64, 56, 8, -41, -58, -47, -116, -46, -16, 0, 82, -44, -16, -1, 66, -61, -16, 67,
+ -16, 0, -16, 25, 83, -30, 9, -81, 103, -112, -1, -57, -69, -34, -27, -34, -91, -112, -50,
+ -112, -43, -112, -1, 0, -114, -112, -1, -36, -74, -75, -1, -28, -1, 0, -1, -34, 62, -100,
+ 127, -41, -41, -41, -1, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -1, 0, -41,
+ -41, -1, -41, -41, -41, -1, -41, -1, 0, -1, -41, -41, -41, -41, -86, -86, -86, -1, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -1, 2, -86, -86, -1, -86, -86, -86, -1,
+ -86, -1, 2, -1, -86, -86, -86, -86, -86, -86, -86, -1, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -1, 0, -86, -86, -1, -86, -86, -86, -1, -86, -1, 0, -1, -86, -86,
+ -86, -86, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
+ 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0,
+ -1, 0, -1, 0, -1, 0, 0, 0, 0, -32, -80, -64, 0, -96, 0, 64, -32, 32, 16,
+ 24, -96, -88, -96, -88, -120, -32, -128, -112, -51, -40, 64, 72, 0, 80, 40, -80, -64, 0,
+ -96, -88, 96, -44, -67, -67, 0, -45, 60, 60, 55, 56, -41, -41, -47, -47, -46, -46, 24,
+ -82, -44, -44, 0, 24, -61, -61, 0, 68, 25, 72, 66, 0, -30, -30, -46, -81, -112, -112,
+ 0, -57, -34, -34, -34, -34, -112, -112, -112, -112, -112, -112, -34, -35, -112, -112, 0, -34, -75,
+ -75, 0, -28, -34, -28, -74, 0, -100, -100, -112, -41, -41, -41, 0, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, 0, -41, -41, -41, 0, -41, -41, -41, -41,
+ 0, -41, -41, -41, -86, -86, -86, 2, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, 2, -86, -86, -86, -86, 2, -86, -86, -86, -86, -86,
+ -86, 0, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, 0, -86, -86, -86, -86, 0, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104,
+ -48, -120, 80, -64, 0, -16, -64, -120, 32, 24, 0, -16, -64, -72, 0, -112, 96, -16, 0,
+ 4, 0, -16, 0, 64, 0, 48, 80, 120, 96, -88, 0, -46, -68, -46, 9, -42, -16, 25,
+ -76, -62, 40, -99, -16, 56, -2, -66, -16, 26, 122, 59, -16, 0, -16, -94, -16, 38, -16,
+ 27, 43, 55, -114, 55, -16, -112, -57, -112, -119, -112, -1, -34, -70, -75, -121, -56, -1, -28,
+ -45, -112, -1, -34, -113, -72, -1, 0, -1, -35, -1, -34, -1, -34, -33, 0, 103, -34, -1,
+ -41, -41, -41, -41, -41, -1, -41, -41, -41, -41, -41, -1, -41, -41, -41, -1, -41, -41, -41,
+ -1, 0, -1, -41, -1, -41, -1, -41, -41, -72, -41, -41, -1, -86, -86, -86, -86, -86, -1,
+ -86, -86, -86, -86, -86, -1, -86, -86, -86, -1, -86, -86, -86, -1, 0, -1, -86, -1, -86,
+ -1, -86, -86, -2, -86, -86, -1, -86, -86, -86, -86, -86, -1, -86, -86, -86, -86, -86, -1,
+ -86, -86, -86, -1, -86, -86, -86, -1, 0, -1, -86, -1, -86, -1, -86, -86, -1, -86, -86,
+ -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0,
+ -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, 0, 0, 0, 0, -1, 104, -128, -120, -80, -64, -128, 0, 112, -112, 16, 24,
+ 0, -96, -80, -72, 64, 0, -48, -16, -56, 32, 0, 88, -109, 21, -64, 0, 48, -80, -96,
+ -88, 0, -46, -46, -46, -42, -42, 83, 0, -62, -62, -99, -99, 0, -55, -66, -66, -115, 0,
+ 59, 59, 26, 40, 0, 0, 5, 0, -2, 0, 55, 55, 55, 55, 0, -112, -112, -112, -112,
+ -112, 62, 0, -75, -75, -56, -56, 0, -35, -112, -112, -96, 0, -72, -72, -34, -121, 0, 0,
+ 0, 0, -45, 0, 0, 0, -34, -34, 0, -41, -41, -41, -41, -41, -41, 0, -41, -41, -41,
+ -41, 0, -41, -41, -41, -41, 0, -41, -41, -41, -41, 0, 0, 0, 0, -41, 0, -72, -72,
+ -41, -41, 0, -86, -86, -86, -86, -86, -86, 2, -86, -86, -86, -86, 2, -86, -86, -86, -86,
+ 2, -86, -86, -86, -86, 2, 0, -1, 0, -86, 2, -2, -2, -86, -86, 0, -86, -86, -86,
+ -86, -86, -86, 0, -86, -86, -86, -86, 0, -86, -86, -86, -86, 0, -86, -86, -86, -86, 0,
+ 0, -1, 0, -86, 0, -1, -1, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 16, -8, 0, 80, 0, 40, 0, -112, -112, -88, 96, 0, 0, -112, 0, 0, 80, -40,
+ -32, 88, 32, -128, 96, 120, -96, -40, 0, -128, -128, 0, -16, 0, 10, -42, -16, -99, -52,
+ 49, -16, -98, 35, -44, -3, -65, -16, -73, -16, 0, 51, -7, -89, -42, 121, -35, 51, 63,
+ -81, -42, -16, -94, -43, 0, -1, 0, -91, -112, -1, -78, -69, -72, -1, -35, -28, -112, -45,
+ -112, -1, -27, -1, 0, -82, -110, -108, -112, -113, -81, -54, -34, -51, -112, -1, -35, 56, 0,
+ -1, 0, -41, -41, -1, -41, -41, -41, -1, -41, -41, -41, -41, -41, -1, -41, -1, 0, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -1, -41, -41, 0, -1, 0, -86, -86, -1, -86,
+ -86, -86, -1, -86, -86, -86, -86, -86, -1, -86, -1, 0, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -1, -86, -86, 0, -1, 0, -86, -86, -1, -86, -86, -86, -1, -86, -86, -86,
+ -86, -86, -1, -86, -1, 0, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -1, -86, -86,
+ 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1, 0, 0, 30, -88, -48, -16, -8, 112, -8, 0, 64, 0, 8, -96,
+ -88, -16, 0, 101, -104, -32, -32, -48, -40, 80, 88, 112, -128, 112, 120, -48, -40, 0, 118,
+ 0, 6, 27, -100, -42, -42, -42, 27, 49, 49, 0, 0, -44, -44, -66, -65, 114, 28, -97,
+ -26, -7, -7, -42, -42, -35, -35, 63, 63, -42, -42, 0, 0, 12, 0, -34, -35, -112, -112,
+ -57, -34, -72, -72, 0, 0, -112, -112, -112, -112, 114, -34, -35, -75, -110, -110, -112, -112, -81,
+ -81, -34, -34, -112, -112, 0, 0, 99, 0, -41, -41, -41, -41, -41, -41, -41, -41, 0, 0,
+ -41, -41, -41, -41, 111, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, 0,
+ 0, -41, -1, -86, -86, -86, -86, -86, -86, -86, -86, 2, 0, -86, -86, -86, -86, 114, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, 2, 0, -86, -1, -86, -86, -86,
+ -86, -86, -86, -86, -86, 0, 0, -86, -86, -86, -86, 95, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, 0, 0, -86, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/output.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/output.h
new file mode 100644
index 00000000..1f52bda9
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/output.h
@@ -0,0 +1,309 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_5_s8_output[6912] = {
+ -49, -49, -58, -55, -58, -50, -55, -75, -80, -50, -58, -59, -44, -68, -58, -62, -60, -47, -63, -72, -68, -59, -52,
+ -46, -41, -48, -61, -52, -65, -48, -60, -73, -83, -49, -53, -54, -45, -69, -59, -62, -62, -45, -60, -71, -71, -54,
+ -55, -45, -69, -65, -68, -69, -71, -70, -72, -81, -83, -66, -71, -72, -64, -77, -73, -76, -75, -62, -76, -79, -77,
+ -72, -67, -62, -20, -21, -27, -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50, -47, -11, -46, -56,
+ -56, -37, -23, -10, -49, -54, -59, -57, -60, -57, -62, -75, -80, -53, -59, -61, -47, -72, -63, -67, -65, -49, -64,
+ -74, -71, -61, -54, -49, -36, -39, -48, -49, -49, -47, -51, -71, -76, -39, -54, -57, -36, -63, -53, -58, -56, -38,
+ -55, -67, -64, -57, -43, -37, -21, -24, -34, -38, -34, -34, -39, -65, -71, -26, -43, -46, -21, -52, -43, -51, -46,
+ -26, -49, -59, -55, -46, -29, -24, -35, -41, -49, -50, -51, -48, -54, -71, -76, -40, -54, -57, -37, -64, -55, -60,
+ -58, -38, -54, -67, -65, -57, -44, -37, -26, -30, -37, -42, -38, -42, -46, -66, -72, -31, -46, -50, -28, -55, -49,
+ -56, -52, -30, -53, -62, -59, -50, -33, -29, -47, -44, -54, -53, -53, -47, -50, -74, -78, -46, -56, -56, -41, -64,
+ -54, -61, -57, -45, -64, -69, -64, -57, -48, -43, -54, -48, -58, -57, -59, -51, -54, -77, -80, -51, -61, -61, -47,
+ -67, -58, -63, -60, -49, -67, -71, -67, -62, -54, -48, -64, -64, -66, -67, -70, -71, -74, -78, -81, -64, -68, -70,
+ -63, -76, -75, -77, -76, -60, -74, -78, -78, -70, -65, -60, -69, -67, -68, -70, -70, -74, -75, -80, -81, -66, -71,
+ -73, -65, -77, -76, -79, -77, -63, -77, -79, -78, -73, -67, -63, -62, -63, -69, -66, -72, -66, -71, -79, -83, -62,
+ -67, -68, -60, -77, -71, -73, -73, -59, -70, -78, -77, -69, -65, -59, -69, -67, -68, -70, -70, -74, -74, -80, -81,
+ -66, -71, -73, -65, -77, -76, -79, -77, -63, -77, -79, -78, -73, -66, -63, -35, -38, -47, -41, -48, -53, -60, -65,
+ -71, -35, -42, -47, -38, -63, -59, -63, -61, -31, -54, -66, -66, -46, -44, -31, -35, -34, -47, -40, -51, -49, -55,
+ -68, -74, -35, -42, -44, -38, -60, -55, -60, -57, -31, -59, -65, -65, -43, -43, -30, -57, -58, -59, -60, -54, -62,
+ -64, -72, -76, -57, -59, -62, -48, -72, -67, -72, -68, -53, -70, -75, -70, -62, -54, -53, -72, -70, -69, -72, -72,
+ -78, -79, -80, -81, -69, -73, -75, -68, -79, -80, -82, -80, -66, -78, -81, -80, -75, -69, -65, -27, -29, -40, -36,
+ -44, -46, -52, -64, -70, -29, -39, -42, -31, -57, -52, -57, -54, -24, -51, -62, -61, -42, -37, -23, -42, -48, -50,
+ -55, -53, -61, -64, -72, -76, -47, -58, -61, -46, -65, -64, -69, -66, -44, -63, -70, -70, -61, -48, -44, -44, -41,
+ -47, -52, -51, -53, -54, -74, -77, -45, -56, -57, -43, -60, -57, -64, -60, -44, -68, -67, -66, -58, -45, -42, -42,
+ -39, -53, -51, -55, -41, -46, -76, -81, -43, -55, -55, -38, -62, -49, -55, -53, -42, -61, -68, -63, -56, -47, -40,
+ -20, -21, -27, -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50, -47, -11, -46, -56, -56, -37, -23,
+ -10, -23, -26, -33, -40, -36, -41, -44, -66, -71, -28, -46, -49, -26, -51, -47, -55, -50, -28, -52, -59, -58, -50,
+ -31, -26, -24, -21, -38, -33, -42, -39, -45, -65, -71, -23, -38, -40, -29, -53, -46, -52, -49, -22, -50, -59, -58,
+ -40, -34, -20, -27, -30, -41, -36, -41, -47, -53, -62, -68, -27, -38, -43, -31, -58, -54, -58, -56, -24, -49, -62,
+ -61, -43, -37, -24, -33, -31, -44, -38, -45, -47, -53, -64, -70, -30, -40, -44, -35, -59, -54, -59, -57, -28, -51,
+ -62, -62, -45, -40, -27, -20, -28, -29, -37, -36, -34, -40, -63, -70, -29, -41, -44, -13, -53, -42, -49, -46, -18,
+ -47, -59, -55, -44, -23, -17, -44, -52, -51, -55, -55, -66, -72, -69, -75, -51, -55, -58, -51, -66, -71, -76, -72,
+ -47, -69, -69, -74, -58, -51, -47, -65, -64, -64, -68, -66, -72, -73, -78, -80, -63, -69, -71, -61, -75, -74, -77,
+ -75, -60, -74, -78, -77, -71, -63, -59, -18, -21, -39, -34, -44, -27, -39, -66, -76, -26, -39, -38, -24, -50, -40,
+ -48, -44, -26, -51, -57, -58, -40, -33, -24, -44, -36, -52, -49, -52, -36, -40, -76, -80, -40, -54, -53, -35, -61,
+ -45, -52, -49, -41, -61, -67, -60, -55, -46, -39, -65, -66, -68, -68, -70, -71, -75, -78, -82, -65, -68, -70, -63,
+ -78, -75, -77, -76, -61, -73, -79, -78, -70, -66, -61, -73, -72, -70, -74, -73, -80, -80, -81, -82, -71, -74, -76,
+ -70, -80, -81, -83, -81, -67, -79, -81, -81, -76, -70, -67, -55, -53, -60, -57, -56, -53, -56, -74, -79, -53, -58,
+ -60, -44, -71, -60, -65, -62, -50, -66, -74, -68, -60, -54, -50, -65, -62, -65, -67, -67, -69, -70, -79, -81, -63,
+ -69, -70, -61, -75, -72, -75, -73, -60, -74, -77, -75, -70, -63, -59, -22, -32, -39, -36, -40, -51, -57, -62, -68,
+ -28, -39, -45, -29, -60, -56, -60, -58, -23, -46, -63, -63, -44, -35, -23, -27, -34, -31, -43, -41, -45, -49, -65,
+ -70, -34, -47, -50, -23, -55, -50, -56, -53, -24, -53, -61, -60, -49, -27, -23, -49, -43, -55, -57, -62, -53, -55,
+ -80, -82, -48, -63, -61, -50, -63, -58, -63, -60, -48, -68, -70, -69, -63, -53, -46, -67, -69, -68, -71, -73, -78,
+ -80, -80, -82, -68, -72, -74, -68, -79, -80, -81, -80, -64, -77, -80, -81, -74, -68, -64, -47, -46, -53, -54, -53,
+ -51, -52, -76, -79, -49, -57, -58, -41, -65, -56, -63, -59, -46, -68, -71, -66, -58, -48, -45, -50, -49, -60, -58,
+ -65, -52, -57, -79, -84, -52, -61, -61, -49, -68, -59, -63, -61, -49, -67, -73, -71, -61, -55, -48, -20, -21, -27,
+ -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50, -47, -11, -46, -56, -56, -37, -23, -10, -42, -51,
+ -52, -54, -52, -59, -64, -71, -76, -50, -55, -58, -43, -67, -64, -69, -66, -45, -65, -72, -70, -57, -48, -45, -59,
+ -59, -62, -63, -64, -67, -70, -76, -80, -60, -64, -65, -57, -72, -71, -75, -72, -56, -73, -75, -75, -65, -60, -56,
+ -70, -66, -69, -70, -72, -72, -73, -81, -83, -67, -71, -72, -65, -78, -75, -77, -76, -63, -77, -79, -78, -73, -67,
+ -63, -38, -29, -48, -39, -54, -43, -48, -71, -76, -34, -43, -42, -39, -57, -50, -56, -53, -32, -62, -63, -62, -43,
+ -45, -30, -33, -39, -33, -48, -46, -55, -58, -67, -70, -40, -52, -55, -32, -57, -58, -63, -60, -29, -59, -63, -64,
+ -55, -32, -28, -33, -36, -41, -43, -34, -41, -44, -65, -70, -35, -45, -49, -25, -59, -49, -57, -52, -33, -54, -64,
+ -57, -50, -34, -32, -38, -40, -44, -49, -43, -50, -53, -68, -72, -40, -52, -55, -36, -61, -56, -63, -58, -38, -58,
+ -66, -63, -56, -41, -37, -30, -31, -44, -38, -46, -47, -54, -65, -71, -30, -41, -44, -34, -59, -54, -59, -56, -27,
+ -52, -63, -62, -44, -40, -27, -31, -23, -41, -34, -43, -39, -45, -64, -70, -25, -38, -39, -32, -54, -48, -54, -50,
+ -25, -52, -58, -57, -41, -37, -24, -20, -21, -27, -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50,
+ -47, -11, -46, -56, -56, -37, -23, -10, -29, -31, -34, -44, -49, -41, -46, -70, -74, -34, -51, -52, -26, -55, -47,
+ -52, -50, -25, -52, -61, -60, -52, -31, -23, -27, -32, -34, -36, -43, -48, -54, -61, -67, -30, -37, -42, -24, -58,
+ -53, -57, -55, -17, -49, -61, -61, -41, -30, -17, -19, -26, -27, -36, -35, -34, -40, -63, -69, -27, -41, -43, -13,
+ -51, -42, -49, -45, -17, -48, -58, -55, -43, -21, -16, -34, -34, -46, -40, -49, -49, -55, -66, -72, -33, -42, -45,
+ -37, -61, -56, -60, -58, -30, -55, -65, -64, -45, -43, -29, -22, -30, -29, -39, -38, -38, -43, -64, -70, -30, -43,
+ -46, -16, -53, -45, -52, -48, -20, -49, -60, -57, -46, -24, -19, -15, -22, -26, -35, -32, -31, -36, -63, -70, -23,
+ -40, -43, -11, -50, -39, -47, -43, -16, -45, -57, -53, -43, -20, -14, -15, -22, -28, -28, -31, -33, -42, -59, -67,
+ -20, -30, -36, -10, -54, -43, -50, -46, -10, -42, -59, -55, -35, -21, -10, -25, -39, -49, -44, -52, -42, -55, -67,
+ -77, -37, -47, -51, -33, -64, -54, -57, -57, -33, -47, -66, -66, -50, -43, -33, -40, -48, -47, -54, -48, -63, -66,
+ -69, -73, -46, -56, -60, -44, -65, -66, -71, -68, -43, -62, -69, -69, -60, -45, -43, -20, -21, -27, -30, -39, -38,
+ -44, -61, -67, -21, -34, -37, -18, -51, -45, -50, -47, -11, -46, -56, -56, -37, -24, -10, -17, -16, -24, -27, -36,
+ -35, -41, -60, -66, -18, -32, -34, -15, -48, -41, -48, -44, -8, -45, -54, -53, -34, -20, -7, -33, -34, -45, -39,
+ -47, -50, -57, -65, -71, -33, -41, -45, -36, -61, -57, -61, -59, -29, -53, -64, -64, -45, -42, -29, -37, -36, -49,
+ -41, -53, -51, -57, -69, -75, -38, -43, -45, -40, -61, -56, -61, -59, -33, -61, -67, -66, -44, -45, -32, -52, -49,
+ -56, -56, -56, -53, -56, -74, -78, -50, -58, -59, -46, -67, -60, -65, -62, -48, -67, -71, -67, -60, -52, -47, -58,
+ -53, -61, -61, -62, -58, -60, -78, -80, -55, -64, -64, -52, -70, -63, -67, -65, -53, -70, -74, -70, -65, -57, -52,
+ -26, -19, -39, -33, -45, -35, -41, -68, -73, -23, -38, -38, -30, -51, -43, -50, -47, -23, -54, -58, -57, -39, -35,
+ -21, -40, -42, -53, -51, -54, -45, -50, -74, -79, -43, -56, -58, -38, -66, -53, -57, -56, -40, -55, -69, -65, -58,
+ -47, -39, -43, -43, -51, -53, -53, -51, -55, -73, -77, -44, -57, -59, -42, -65, -57, -62, -60, -43, -59, -68, -66,
+ -60, -48, -42, -30, -30, -40, -43, -39, -38, -41, -68, -73, -32, -47, -49, -27, -55, -46, -54, -49, -32, -54, -62,
+ -57, -51, -35, -30, -20, -21, -27, -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50, -47, -11, -46,
+ -56, -56, -37, -23, -10, -40, -45, -41, -54, -58, -59, -62, -73, -75, -46, -59, -61, -40, -62, -61, -64, -63, -35,
+ -60, -67, -69, -61, -41, -34, -57, -60, -59, -63, -62, -71, -74, -74, -78, -59, -63, -65, -58, -72, -74, -78, -75,
+ -56, -74, -74, -76, -66, -59, -55, -69, -66, -67, -70, -69, -74, -74, -80, -81, -66, -71, -72, -64, -77, -76, -79,
+ -77, -63, -76, -79, -78, -73, -66, -62, -44, -44, -55, -50, -54, -44, -50, -73, -79, -45, -52, -53, -38, -65, -53,
+ -59, -56, -43, -62, -69, -65, -54, -48, -42, -60, -55, -63, -62, -65, -58, -60, -80, -82, -57, -65, -65, -54, -71,
+ -63, -67, -65, -55, -71, -75, -71, -66, -59, -54, 26, 20, 22, 3, -2, -4, -10, -35, -41, 19, -5, -9, 32,
+ -18, -10, -18, -14, 39, -11, -27, -26, -9, 26, 40, -52, -59, -59, -63, -64, -71, -75, -75, -79, -57, -65, -69,
+ -57, -73, -74, -76, -75, -53, -66, -75, -77, -69, -58, -53, -37, -36, -49, -42, -54, -50, -56, -70, -76, -37, -44,
+ -45, -40, -61, -56, -61, -58, -33, -61, -67, -66, -45, -46, -32, -35, -32, -46, -39, -49, -47, -53, -66, -72, -33,
+ -41, -43, -37, -59, -54, -59, -56, -30, -57, -63, -63, -44, -42, -29, -43, -44, -51, -50, -47, -46, -50, -70, -75,
+ -44, -51, -54, -36, -64, -54, -61, -57, -42, -61, -68, -63, -54, -45, -41, -57, -55, -59, -61, -59, -62, -63, -76,
+ -78, -55, -63, -65, -52, -70, -66, -70, -67, -53, -69, -73, -71, -66, -56, -52, -56, -48, -59, -60, -64, -54, -55,
+ -80, -82, -52, -65, -64, -52, -67, -59, -64, -62, -52, -69, -72, -69, -66, -57, -50, -46, -38, -53, -50, -53, -39,
+ -42, -76, -80, -42, -55, -54, -37, -62, -48, -54, -51, -42, -62, -67, -61, -56, -47, -40, -34, -29, -39, -43, -38,
+ -37, -38, -70, -73, -33, -47, -48, -27, -53, -44, -54, -48, -33, -61, -62, -56, -49, -34, -31, -67, -69, -66, -71,
+ -70, -79, -80, -79, -80, -67, -71, -74, -66, -78, -80, -82, -81, -63, -76, -80, -81, -74, -66, -63, -17, -18, -32,
+ -34, -31, -26, -31, -65, -71, -21, -40, -42, -15, -49, -36, -45, -40, -21, -46, -57, -51, -43, -25, -19, -12, -14,
+ -29, -30, -28, -21, -27, -63, -70, -17, -37, -39, -11, -46, -32, -42, -37, -18, -44, -55, -49, -40, -22, -16, -63,
+ -61, -65, -67, -70, -69, -72, -79, -82, -62, -69, -69, -63, -74, -73, -75, -74, -59, -74, -76, -77, -70, -64, -58,
+ -62, -58, -63, -64, -65, -64, -65, -79, -81, -59, -66, -67, -57, -73, -68, -72, -70, -57, -72, -76, -73, -68, -61,
+ -56, -20, -21, -27, -30, -39, -38, -44, -61, -67, -21, -34, -37, -18, -50, -45, -50, -47, -11, -46, -56, -56, -37,
+ -23, -10, -34, -34, -35, -49, -54, -51, -53, -73, -75, -38, -57, -57, -35, -55, -53, -58, -56, -30, -58, -62, -64,
+ -58, -35, -27, -23, -39, -40, -49, -51, -59, -65, -71, -76, -39, -54, -58, -40, -59, -61, -66, -63, -35, -56, -66,
+ -71, -57, -40, -33, -66, -76, -77, -48, -15, -67, -59, -72, -69, -48, -68, -71, -72, -57, -80, -64, -51, -58, -46,
+ -73, -51, -57, -56, -47, -60, -77, -80, -48, -18, -70, -58, -72, -73, -46, -69, -71, -75, -54, -79, -64, -57, -53,
+ -48, -71, -56, -53, -52, -45, -75, -82, -81, -65, -36, -77, -75, -78, -78, -63, -77, -79, -79, -75, -83, -75, -70,
+ -71, -65, -78, -70, -71, -74, -62, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64, -49,
+ -41, -32, -20, -54, -40, -32, -44, -11, -68, -77, -78, -53, -19, -72, -64, -73, -72, -50, -68, -73, -74, -57, -79,
+ -71, -59, -58, -49, -78, -59, -59, -60, -49, -54, -73, -72, -37, 3, -63, -55, -66, -65, -39, -58, -67, -67, -56,
+ -75, -58, -47, -52, -38, -65, -46, -54, -53, -38, -42, -69, -67, -23, 19, -54, -46, -53, -57, -27, -50, -59, -60,
+ -46, -71, -49, -34, -42, -24, -57, -33, -42, -45, -26, -53, -73, -73, -39, 1, -65, -57, -67, -67, -40, -59, -67,
+ -69, -55, -75, -60, -51, -51, -40, -66, -50, -54, -53, -38, -45, -71, -68, -29, 13, -58, -52, -55, -61, -32, -53,
+ -62, -63, -51, -71, -54, -42, -45, -29, -60, -41, -46, -51, -30, -63, -76, -74, -44, -12, -64, -57, -66, -66, -46,
+ -67, -68, -69, -56, -79, -60, -46, -56, -43, -68, -45, -55, -56, -45, -66, -77, -77, -48, -17, -66, -59, -71, -69,
+ -50, -70, -71, -71, -63, -81, -61, -49, -61, -49, -68, -49, -60, -59, -49, -70, -81, -80, -63, -33, -79, -76, -74,
+ -78, -61, -74, -78, -79, -73, -81, -76, -73, -68, -63, -78, -73, -69, -75, -60, -74, -82, -80, -66, -36, -79, -78,
+ -76, -78, -64, -76, -79, -79, -75, -82, -78, -73, -71, -65, -80, -73, -72, -77, -63, -72, -80, -82, -62, -32, -78,
+ -71, -79, -78, -60, -75, -78, -79, -69, -82, -74, -69, -66, -62, -78, -69, -68, -69, -59, -74, -82, -80, -66, -36,
+ -79, -78, -76, -78, -64, -76, -79, -79, -75, -82, -78, -73, -71, -65, -80, -73, -72, -77, -63, -53, -70, -69, -35,
+ 3, -67, -61, -62, -66, -32, -56, -65, -67, -51, -69, -66, -58, -40, -40, -71, -57, -45, -56, -31, -54, -73, -71,
+ -34, 2, -61, -55, -61, -66, -32, -61, -66, -68, -53, -72, -60, -51, -42, -39, -66, -51, -40, -53, -31, -72, -77,
+ -74, -57, -26, -75, -71, -67, -71, -54, -69, -71, -72, -56, -78, -77, -62, -59, -50, -84, -61, -62, -68, -53, -76,
+ -82, -81, -69, -40, -82, -82, -76, -80, -66, -76, -80, -80, -78, -82, -81, -78, -72, -68, -82, -78, -75, -81, -66,
+ -47, -68, -68, -27, 15, -59, -53, -58, -62, -25, -53, -62, -64, -49, -68, -58, -49, -37, -33, -63, -49, -38, -50,
+ -24, -54, -76, -74, -46, -7, -69, -67, -64, -70, -46, -61, -71, -72, -65, -75, -67, -62, -56, -47, -69, -62, -58,
+ -66, -44, -56, -78, -73, -42, -8, -61, -60, -60, -67, -44, -65, -69, -69, -64, -77, -60, -51, -57, -43, -63, -50,
+ -54, -62, -44, -60, -76, -76, -40, -6, -59, -49, -70, -66, -42, -67, -68, -69, -57, -80, -54, -40, -56, -41, -63,
+ -40, -52, -50, -42, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64, -49, -41, -32, -20,
+ -54, -40, -32, -44, -11, -39, -71, -67, -25, 18, -55, -51, -52, -59, -29, -50, -61, -62, -54, -70, -50, -40, -45,
+ -28, -55, -40, -45, -51, -28, -42, -69, -67, -20, 20, -54, -48, -56, -60, -23, -52, -61, -62, -51, -69, -49, -41,
+ -37, -30, -55, -40, -36, -47, -22, -45, -67, -66, -26, 15, -62, -57, -57, -62, -26, -50, -61, -63, -48, -67, -59,
+ -51, -36, -33, -65, -50, -40, -52, -24, -48, -68, -67, -29, 9, -63, -57, -58, -63, -29, -53, -62, -64, -51, -69,
+ -59, -50, -39, -36, -64, -50, -43, -53, -28, -46, -67, -66, -27, 32, -53, -44, -56, -57, -20, -51, -58, -60, -41,
+ -68, -51, -36, -40, -16, -60, -35, -40, -41, -18, -54, -78, -74, -50, -19, -73, -74, -57, -73, -48, -63, -71, -74,
+ -65, -73, -73, -72, -55, -50, -73, -71, -58, -72, -47, -71, -81, -79, -62, -31, -78, -77, -73, -77, -61, -73, -77,
+ -78, -73, -80, -77, -72, -68, -62, -79, -72, -70, -76, -60, -39, -72, -71, -23, 11, -51, -40, -54, -60, -27, -56,
+ -60, -64, -45, -73, -43, -32, -40, -27, -52, -32, -36, -39, -26, -61, -75, -75, -37, -4, -57, -46, -69, -63, -41,
+ -66, -66, -66, -54, -81, -50, -33, -55, -39, -61, -33, -51, -47, -41, -73, -81, -81, -65, -36, -80, -77, -77, -79,
+ -62, -75, -78, -79, -70, -81, -79, -74, -67, -64, -82, -74, -70, -74, -61, -76, -83, -81, -70, -41, -83, -84, -77,
+ -81, -68, -77, -81, -81, -79, -82, -83, -80, -73, -70, -83, -80, -76, -83, -67, -72, -76, -75, -52, -21, -71, -63,
+ -71, -69, -51, -69, -70, -71, -54, -80, -70, -53, -58, -47, -79, -52, -60, -59, -50, -72, -81, -79, -62, -31, -76,
+ -74, -74, -76, -61, -74, -77, -77, -72, -82, -74, -68, -68, -61, -77, -68, -69, -73, -60, -45, -67, -67, -27, 19,
+ -64, -58, -59, -63, -24, -48, -63, -65, -47, -65, -64, -56, -34, -31, -69, -55, -40, -52, -23, -46, -69, -67, -32,
+ 26, -57, -52, -56, -61, -25, -53, -62, -63, -51, -68, -55, -46, -45, -24, -60, -45, -45, -51, -24, -58, -80, -78,
+ -45, -11, -61, -57, -69, -71, -49, -69, -73, -73, -73, -81, -56, -51, -63, -51, -58, -51, -58, -61, -48, -73, -83,
+ -82, -68, -37, -81, -81, -77, -81, -64, -76, -81, -82, -78, -81, -81, -80, -71, -68, -81, -80, -73, -80, -64, -66,
+ -78, -75, -47, -13, -63, -57, -67, -68, -46, -68, -70, -70, -58, -79, -63, -48, -58, -44, -71, -48, -54, -58, -46,
+ -65, -80, -80, -50, -17, -65, -57, -75, -73, -50, -72, -74, -75, -64, -82, -62, -53, -62, -51, -68, -53, -58, -57,
+ -49, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64, -49, -41, -32, -20, -54, -40, -32,
+ -44, -11, -61, -77, -75, -50, -14, -70, -66, -64, -71, -46, -64, -71, -72, -57, -75, -72, -62, -54, -45, -77, -62,
+ -55, -63, -45, -68, -80, -78, -59, -29, -75, -73, -70, -76, -57, -72, -75, -77, -68, -80, -74, -69, -64, -58, -77,
+ -68, -65, -72, -56, -75, -82, -81, -66, -37, -78, -76, -78, -79, -64, -77, -79, -79, -75, -83, -77, -71, -71, -66,
+ -79, -71, -72, -76, -63, -53, -74, -73, -31, 0, -56, -50, -61, -65, -32, -64, -66, -67, -57, -75, -52, -44, -45,
+ -41, -58, -44, -40, -51, -32, -46, -72, -68, -38, 20, -60, -60, -56, -65, -31, -55, -65, -66, -62, -69, -59, -56,
+ -51, -32, -60, -56, -51, -61, -29, -56, -69, -66, -34, 6, -62, -55, -56, -58, -35, -54, -60, -61, -41, -72, -61,
+ -39, -44, -28, -72, -39, -48, -50, -33, -52, -73, -69, -38, 0, -65, -61, -58, -64, -40, -57, -65, -66, -56, -73,
+ -61, -50, -51, -38, -67, -49, -54, -59, -38, -48, -69, -68, -29, 10, -62, -56, -59, -63, -29, -54, -63, -65, -51,
+ -69, -59, -51, -39, -36, -64, -50, -41, -52, -27, -44, -68, -66, -22, 12, -57, -50, -54, -59, -26, -54, -60, -61,
+ -51, -70, -50, -40, -38, -33, -55, -40, -39, -49, -25, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57,
+ -59, -46, -64, -49, -41, -32, -20, -54, -40, -32, -44, -11, -44, -71, -70, -30, 28, -53, -46, -62, -62, -26, -56,
+ -64, -65, -59, -72, -47, -41, -50, -28, -52, -41, -47, -47, -25, -47, -66, -65, -29, 28, -61, -55, -57, -61, -19,
+ -51, -61, -63, -46, -64, -60, -52, -35, -26, -65, -52, -38, -50, -17, -44, -67, -65, -25, 34, -52, -43, -54, -57,
+ -19, -50, -58, -59, -42, -68, -50, -35, -40, -16, -58, -34, -39, -41, -17, -51, -71, -70, -32, 5, -63, -57, -61,
+ -65, -31, -57, -65, -67, -52, -70, -61, -53, -41, -39, -66, -52, -43, -54, -30, -46, -68, -66, -28, 30, -54, -47,
+ -56, -58, -21, -51, -59, -61, -44, -68, -52, -39, -41, -19, -60, -39, -41, -44, -20, -41, -67, -65, -20, 36, -51,
+ -42, -53, -55, -17, -48, -57, -59, -41, -69, -47, -31, -38, -14, -56, -30, -38, -40, -16, -44, -64, -64, -19, 37,
+ -57, -46, -53, -56, -12, -46, -56, -59, -33, -66, -55, -37, -28, -14, -66, -37, -32, -40, -10, -49, -71, -74, -36,
+ 4, -66, -53, -67, -68, -35, -56, -66, -70, -47, -73, -60, -51, -44, -36, -68, -51, -48, -46, -33, -53, -75, -71,
+ -45, -6, -71, -70, -60, -69, -44, -58, -69, -70, -61, -72, -70, -65, -54, -44, -72, -64, -58, -68, -43, -40, -65,
+ -63, -20, 38, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64, -49, -41, -33, -20, -54, -40, -32, -44, -11, -37,
+ -64, -62, -15, 43, -49, -43, -50, -55, -9, -47, -56, -57, -45, -63, -46, -37, -31, -17, -51, -36, -30, -42, -8,
+ -50, -70, -69, -32, 7, -65, -59, -60, -65, -30, -55, -64, -66, -51, -69, -62, -54, -39, -38, -67, -54, -43, -54,
+ -29, -56, -74, -72, -36, -2, -62, -56, -62, -67, -34, -62, -67, -69, -54, -72, -62, -54, -43, -42, -68, -54, -41,
+ -55, -33, -65, -77, -75, -49, -17, -68, -62, -68, -69, -49, -68, -70, -71, -60, -79, -65, -52, -59, -48, -72, -52,
+ -58, -61, -48, -68, -79, -78, -53, -22, -70, -65, -72, -72, -54, -71, -73, -73, -66, -81, -66, -56, -64, -54, -72,
+ -56, -63, -64, -53, -43, -71, -69, -20, 17, -50, -43, -56, -60, -24, -56, -61, -62, -54, -71, -45, -36, -39, -31,
+ -50, -36, -35, -45, -23, -59, -73, -75, -41, -1, -64, -53, -72, -67, -42, -62, -68, -69, -55, -78, -58, -46, -54,
+ -41, -67, -45, -55, -50, -40, -56, -74, -74, -42, -4, -66, -60, -67, -67, -44, -62, -69, -69, -61, -77, -60, -51,
+ -56, -44, -65, -51, -58, -58, -43, -48, -71, -68, -29, 11, -57, -50, -57, -59, -33, -55, -62, -62, -50, -73, -51,
+ -36, -47, -30, -59, -36, -47, -49, -32, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64,
+ -49, -41, -32, -20, -54, -40, -32, -44, -11, -50, -74, -73, -44, 13, -63, -61, -66, -69, -37, -60, -70, -71, -69,
+ -72, -60, -60, -57, -40, -60, -59, -57, -62, -35, -64, -80, -77, -59, -29, -77, -77, -66, -76, -57, -70, -75, -76,
+ -70, -78, -76, -73, -63, -58, -77, -73, -65, -76, -56, -74, -82, -80, -65, -36, -79, -78, -76, -78, -64, -75, -79,
+ -79, -75, -82, -78, -73, -71, -65, -80, -73, -72, -77, -63, -63, -75, -75, -44, -13, -64, -54, -67, -67, -44, -67,
+ -68, -69, -51, -79, -61, -45, -53, -42, -71, -45, -52, -52, -43, -70, -80, -79, -55, -25, -70, -64, -75, -73, -55,
+ -74, -75, -75, -67, -83, -66, -56, -66, -56, -72, -56, -64, -64, -55, 0, -39, -37, 23, 127, -18, -12, -24, -28,
+ 36, -13, -29, -31, -20, -37, -14, -5, -1, 30, -19, -4, -1, -11, 39, -61, -79, -78, -56, -19, -77, -76, -71,
+ -77, -54, -66, -76, -77, -72, -77, -75, -75, -63, -58, -75, -74, -67, -73, -53, -56, -74, -73, -36, -1, -62, -56,
+ -63, -67, -34, -63, -67, -69, -55, -73, -61, -53, -44, -42, -67, -53, -42, -54, -33, -51, -71, -70, -31, 3, -61,
+ -55, -59, -64, -31, -58, -64, -66, -52, -71, -58, -50, -41, -39, -64, -49, -41, -53, -30, -62, -73, -72, -43, -9,
+ -66, -58, -64, -64, -43, -63, -66, -67, -49, -76, -63, -46, -52, -39, -73, -46, -53, -54, -42, -66, -78, -76, -53,
+ -21, -72, -69, -69, -71, -54, -69, -73, -73, -66, -79, -69, -60, -63, -53, -74, -60, -64, -68, -53, -64, -79, -79,
+ -49, -17, -65, -60, -73, -71, -52, -71, -73, -73, -72, -82, -58, -51, -66, -54, -63, -51, -62, -62, -52, -62, -75,
+ -75, -39, -6, -59, -49, -69, -64, -43, -67, -67, -67, -56, -80, -52, -36, -56, -40, -62, -36, -53, -49, -42, -52,
+ -73, -68, -30, 6, -53, -48, -54, -58, -34, -59, -62, -62, -51, -75, -51, -33, -49, -29, -59, -32, -45, -50, -33,
+ -72, -82, -80, -67, -36, -82, -83, -74, -80, -64, -74, -80, -80, -77, -80, -82, -81, -70, -66, -82, -80, -73, -81,
+ -63, -41, -68, -66, -17, 26, -49, -39, -53, -54, -23, -49, -57, -58, -42, -71, -42, -24, -39, -18, -53, -24, -38,
+ -38, -21, -38, -67, -65, -13, 30, -46, -35, -51, -52, -19, -47, -55, -56, -38, -70, -40, -20, -36, -14, -51, -20,
+ -35, -34, -18, -67, -82, -81, -60, -31, -76, -74, -74, -78, -60, -74, -78, -79, -76, -81, -72, -71, -68, -63, -73,
+ -70, -69, -74, -59, -70, -80, -79, -58, -27, -74, -70, -74, -74, -58, -73, -75, -76, -70, -81, -71, -63, -66, -58,
+ -75, -63, -67, -70, -57, -40, -65, -63, -20, 39, -52, -45, -53, -57, -12, -48, -57, -59, -46, -64, -49, -41, -32,
+ -20, -54, -40, -32, -44, -11, -42, -74, -72, -34, 23, -55, -53, -61, -65, -31, -57, -67, -67, -71, -72, -49, -50,
+ -55, -35, -48, -49, -52, -57, -30, -41, -77, -74, -37, 10, -62, -61, -61, -71, -36, -55, -70, -72, -67, -71, -61,
+ -63, -51, -40, -60, -63, -51, -61, -35, -64, -55, -51, -52, -55, -71, -59, -59, -51, -47, -52, -48, -53, -70, -59,
+ -66, -51, -63, -67, -47, -56, -52, -54, -48, -59, -51, -50, -49, -58, -70, -64, -66, -57, -45, -58, -48, -50, -63,
+ -61, -72, -55, -57, -71, -45, -60, -50, -50, -48, -79, -69, -67, -66, -67, -78, -71, -72, -70, -62, -67, -65, -68,
+ -78, -74, -74, -70, -76, -75, -62, -69, -67, -68, -64, -52, -29, -24, -25, -25, -51, -41, -45, -40, -11, -28, -19,
+ -25, -47, -46, -45, -38, -48, -48, -11, -31, -25, -26, -20, -64, -55, -56, -54, -57, -73, -61, -66, -59, -49, -56,
+ -53, -53, -73, -64, -71, -58, -63, -67, -49, -59, -54, -53, -54, -64, -47, -46, -41, -45, -60, -49, -54, -47, -38,
+ -38, -37, -43, -63, -55, -58, -45, -54, -58, -38, -42, -43, -43, -38, -58, -37, -30, -29, -31, -54, -36, -39, -34,
+ -26, -20, -23, -32, -51, -44, -41, -32, -51, -46, -26, -25, -31, -33, -22, -63, -46, -47, -42, -47, -60, -51, -57,
+ -50, -38, -41, -39, -42, -63, -57, -61, -48, -53, -59, -38, -45, -43, -43, -40, -62, -40, -36, -34, -35, -56, -40,
+ -45, -42, -30, -25, -29, -36, -54, -50, -45, -39, -54, -48, -30, -30, -36, -37, -29, -66, -54, -47, -48, -51, -69,
+ -54, -52, -45, -45, -45, -44, -52, -66, -56, -58, -46, -64, -63, -45, -49, -50, -52, -43, -70, -59, -51, -53, -56,
+ -71, -59, -56, -49, -49, -51, -48, -57, -69, -59, -62, -50, -67, -68, -49, -54, -55, -58, -47, -78, -65, -66, -63,
+ -65, -75, -70, -74, -73, -60, -65, -63, -63, -74, -75, -73, -72, -74, -72, -60, -66, -64, -64, -64, -81, -69, -69,
+ -66, -67, -77, -71, -74, -73, -63, -66, -66, -67, -78, -76, -73, -73, -77, -73, -63, -68, -67, -67, -66, -73, -64,
+ -65, -62, -67, -75, -71, -74, -69, -59, -68, -62, -63, -75, -72, -77, -68, -69, -75, -59, -69, -63, -63, -62, -81,
+ -69, -69, -66, -67, -77, -70, -74, -73, -63, -66, -66, -67, -78, -76, -73, -73, -77, -73, -63, -68, -67, -67, -66,
+ -59, -36, -42, -36, -45, -60, -50, -61, -57, -31, -43, -35, -32, -61, -60, -61, -54, -54, -54, -31, -45, -35, -32,
+ -37, -59, -40, -34, -38, -45, -64, -53, -55, -51, -31, -43, -33, -38, -57, -56, -55, -49, -61, -59, -31, -46, -38,
+ -39, -33, -69, -57, -59, -56, -56, -75, -57, -65, -62, -53, -53, -57, -54, -76, -68, -67, -61, -70, -61, -53, -56,
+ -57, -54, -58, -83, -70, -72, -69, -69, -78, -72, -77, -78, -66, -68, -69, -68, -80, -80, -75, -77, -79, -73, -66,
+ -70, -70, -68, -70, -56, -33, -33, -31, -38, -57, -46, -53, -49, -24, -36, -27, -30, -54, -53, -53, -46, -52, -52,
+ -24, -39, -31, -30, -28, -72, -52, -52, -49, -49, -63, -55, -61, -62, -44, -43, -46, -49, -62, -65, -58, -59, -65,
+ -59, -44, -46, -49, -49, -47, -72, -56, -43, -49, -46, -67, -52, -50, -50, -44, -39, -42, -53, -59, -58, -48, -50,
+ -71, -60, -44, -43, -50, -54, -40, -63, -54, -42, -47, -50, -68, -56, -50, -40, -42, -46, -40, -52, -63, -51, -58,
+ -41, -61, -67, -42, -49, -49, -53, -37, -52, -29, -24, -25, -25, -51, -41, -45, -40, -11, -28, -19, -25, -47, -46,
+ -45, -38, -48, -48, -11, -31, -25, -26, -20, -64, -40, -32, -31, -32, -52, -37, -41, -40, -28, -20, -24, -35, -49,
+ -48, -39, -37, -55, -46, -28, -25, -34, -36, -24, -58, -33, -26, -26, -36, -53, -43, -45, -40, -22, -28, -20, -29,
+ -49, -48, -46, -38, -51, -51, -22, -32, -28, -30, -20, -58, -30, -35, -28, -38, -54, -43, -54, -51, -24, -32, -26,
+ -26, -56, -55, -53, -47, -49, -48, -24, -36, -28, -26, -29, -60, -33, -37, -30, -42, -56, -45, -54, -50, -28, -35,
+ -28, -29, -57, -55, -54, -48, -50, -51, -28, -39, -31, -29, -30, -51, -36, -31, -32, -25, -56, -39, -43, -35, -18,
+ -27, -27, -32, -53, -44, -47, -33, -48, -49, -18, -32, -32, -33, -27, -74, -53, -53, -51, -50, -67, -56, -66, -71,
+ -47, -46, -50, -50, -58, -71, -57, -67, -70, -57, -47, -48, -52, -50, -51, -79, -65, -66, -63, -64, -75, -67, -72,
+ -72, -60, -62, -62, -63, -76, -75, -71, -71, -75, -70, -60, -64, -64, -63, -63, -54, -39, -25, -29, -36, -57, -43,
+ -40, -32, -26, -28, -22, -36, -42, -42, -43, -31, -51, -56, -26, -32, -32, -37, -20, -63, -54, -40, -44, -49, -67,
+ -52, -44, -33, -41, -42, -37, -51, -64, -47, -55, -35, -60, -66, -41, -47, -47, -53, -34, -76, -65, -68, -64, -67,
+ -77, -71, -76, -74, -61, -68, -65, -63, -77, -76, -77, -72, -72, -73, -61, -69, -65, -63, -66, -84, -71, -74, -70,
+ -70, -79, -73, -79, -80, -67, -70, -70, -69, -80, -81, -76, -79, -80, -74, -67, -71, -71, -69, -71, -65, -56, -55,
+ -53, -56, -74, -57, -61, -52, -50, -54, -52, -53, -76, -61, -68, -53, -64, -65, -50, -57, -54, -54, -53, -78, -66,
+ -65, -63, -64, -75, -67, -70, -68, -60, -62, -62, -64, -76, -72, -70, -68, -74, -71, -60, -64, -64, -64, -62, -55,
+ -27, -37, -29, -37, -54, -43, -59, -55, -23, -33, -27, -23, -58, -57, -57, -50, -47, -47, -23, -36, -27, -23, -31,
+ -59, -42, -37, -38, -29, -57, -44, -48, -46, -24, -31, -32, -38, -53, -51, -47, -43, -55, -51, -24, -34, -38, -39,
+ -32, -75, -62, -47, -53, -54, -67, -61, -54, -51, -48, -48, -45, -60, -61, -59, -55, -51, -71, -70, -48, -51, -55,
+ -61, -42, -81, -69, -71, -69, -68, -77, -74, -78, -80, -64, -69, -68, -67, -77, -80, -75, -78, -78, -74, -64, -70,
+ -69, -67, -69, -66, -57, -46, -53, -51, -73, -56, -53, -48, -46, -47, -47, -55, -68, -57, -58, -48, -70, -65, -46,
+ -51, -53, -56, -45, -67, -61, -50, -56, -58, -73, -65, -60, -53, -49, -57, -50, -59, -67, -60, -66, -53, -67, -74,
+ -49, -60, -56, -60, -48, -52, -29, -24, -25, -25, -51, -41, -45, -40, -11, -28, -19, -25, -47, -46, -45, -38, -48,
+ -48, -11, -31, -25, -26, -20, -66, -52, -52, -52, -50, -70, -56, -63, -62, -45, -48, -49, -49, -66, -65, -62, -59,
+ -67, -60, -45, -51, -51, -49, -50, -75, -62, -61, -60, -61, -75, -65, -69, -68, -56, -59, -59, -60, -71, -72, -67,
+ -67, -74, -68, -56, -61, -61, -60, -59, -80, -70, -68, -67, -68, -78, -72, -73, -71, -63, -68, -66, -68, -78, -75,
+ -74, -71, -77, -75, -63, -69, -68, -68, -66, -62, -45, -30, -38, -46, -65, -54, -48, -44, -32, -43, -31, -43, -53,
+ -51, -51, -43, -64, -63, -32, -46, -39, -44, -28, -67, -47, -43, -43, -32, -57, -48, -53, -56, -29, -34, -38, -43,
+ -53, -59, -47, -52, -62, -52, -29, -37, -43, -44, -38, -59, -39, -41, -35, -37, -61, -37, -46, -39, -33, -28, -33,
+ -35, -65, -50, -50, -38, -53, -46, -33, -33, -37, -35, -35, -68, -46, -45, -41, -42, -60, -45, -51, -49, -38, -33,
+ -38, -42, -61, -57, -51, -48, -59, -51, -38, -37, -43, -42, -39, -59, -34, -35, -32, -42, -57, -47, -55, -51, -27,
+ -37, -29, -31, -56, -55, -55, -48, -53, -53, -27, -40, -32, -31, -30, -61, -34, -29, -26, -39, -54, -42, -44, -40,
+ -25, -30, -22, -30, -51, -49, -46, -39, -52, -51, -25, -34, -29, -31, -22, -52, -29, -24, -25, -25, -51, -41, -45,
+ -40, -11, -28, -19, -25, -47, -46, -45, -38, -48, -48, -11, -31, -25, -26, -20, -61, -46, -36, -39, -33, -55, -49,
+ -46, -41, -25, -35, -30, -43, -52, -48, -49, -39, -54, -59, -25, -38, -40, -44, -29, -53, -31, -35, -31, -32, -56,
+ -46, -56, -52, -17, -37, -29, -27, -55, -54, -55, -48, -49, -50, -17, -40, -30, -27, -31, -52, -36, -30, -31, -24,
+ -55, -38, -41, -34, -17, -25, -25, -32, -51, -43, -44, -32, -49, -48, -17, -29, -31, -33, -25, -60, -37, -37, -35,
+ -44, -60, -50, -56, -53, -30, -41, -32, -34, -58, -57, -57, -50, -55, -55, -30, -44, -35, -34, -33, -53, -38, -33,
+ -34, -26, -56, -40, -45, -39, -20, -28, -28, -34, -53, -46, -47, -37, -51, -49, -20, -32, -34, -35, -29, -52, -33,
+ -28, -27, -23, -52, -34, -38, -31, -16, -19, -20, -28, -50, -41, -42, -29, -46, -45, -16, -24, -28, -29, -20, -46,
+ -23, -27, -21, -24, -54, -34, -46, -37, -10, -24, -19, -18, -54, -45, -50, -34, -42, -43, -10, -29, -21, -18, -21,
+ -53, -38, -45, -37, -46, -59, -52, -62, -51, -33, -43, -36, -35, -58, -55, -66, -48, -44, -59, -33, -47, -37, -35,
+ -38, -71, -48, -53, -46, -46, -62, -50, -62, -64, -43, -39, -45, -44, -63, -67, -56, -61, -63, -53, -43, -42, -47,
+ -44, -47, -52, -29, -24, -25, -25, -51, -41, -45, -41, -11, -28, -19, -25, -47, -46, -45, -38, -48, -48, -11, -31,
+ -25, -26, -20, -52, -27, -20, -22, -22, -49, -37, -40, -36, -8, -23, -15, -23, -44, -43, -40, -34, -47, -46, -8,
+ -27, -22, -24, -15, -59, -35, -38, -33, -43, -59, -48, -58, -54, -29, -39, -32, -31, -59, -57, -58, -51, -53, -53,
+ -29, -42, -34, -31, -34, -59, -42, -36, -41, -47, -67, -55, -57, -54, -33, -46, -36, -40, -59, -57, -58, -51, -62,
+ -61, -33, -49, -40, -40, -36, -69, -57, -51, -52, -54, -71, -57, -57, -52, -48, -49, -49, -54, -69, -61, -61, -52,
+ -67, -64, -48, -52, -54, -55, -48, -73, -62, -56, -56, -59, -72, -62, -61, -56, -53, -55, -53, -60, -72, -64, -65,
+ -57, -70, -69, -53, -58, -58, -60, -52, -59, -37, -22, -28, -37, -56, -45, -40, -36, -23, -30, -20, -34, -47, -45,
+ -42, -35, -56, -56, -23, -34, -30, -35, -17, -61, -49, -48, -45, -50, -64, -54, -56, -45, -40, -46, -41, -46, -67,
+ -54, -64, -45, -54, -64, -40, -49, -46, -47, -41, -68, -51, -50, -45, -49, -62, -53, -56, -51, -43, -43, -42, -47,
+ -64, -58, -59, -50, -59, -60, -43, -46, -47, -48, -42, -62, -43, -35, -34, -37, -57, -40, -41, -36, -32, -26, -28,
+ -38, -56, -47, -45, -35, -55, -50, -32, -31, -37, -39, -28, -52, -29, -24, -25, -25, -51, -41, -45, -40, -11, -28,
+ -19, -25, -47, -46, -45, -38, -48, -48, -11, -31, -25, -26, -20, -70, -53, -49, -49, -41, -59, -58, -60, -60, -35,
+ -45, -43, -50, -58, -62, -57, -57, -62, -62, -35, -48, -49, -51, -43, -78, -61, -61, -59, -59, -72, -63, -70, -73,
+ -56, -56, -59, -58, -68, -74, -64, -70, -75, -64, -56, -58, -60, -58, -59, -81, -68, -69, -66, -67, -77, -70, -73,
+ -73, -63, -66, -65, -66, -78, -76, -73, -72, -77, -72, -63, -67, -67, -66, -66, -61, -52, -45, -47, -51, -71, -55,
+ -54, -45, -43, -48, -44, -50, -66, -54, -61, -45, -61, -64, -43, -51, -49, -50, -43, -73, -64, -57, -59, -61, -74,
+ -65, -62, -56, -55, -59, -55, -62, -73, -64, -67, -57, -71, -73, -55, -61, -60, -63, -53, -26, 6, 13, 13, 24,
+ -15, -4, -9, -5, 39, 17, 23, 12, -14, -12, -8, 0, -14, -14, 39, 12, 13, 11, 23, -76, -58, -64, -57,
+ -58, -67, -64, -74, -74, -53, -56, -56, -55, -69, -74, -69, -71, -67, -65, -53, -58, -57, -55, -58, -60, -43, -36,
+ -41, -47, -66, -56, -57, -53, -33, -47, -36, -41, -58, -57, -58, -51, -62, -62, -33, -49, -40, -41, -35, -60, -38,
+ -35, -34, -44, -61, -50, -53, -50, -30, -40, -31, -35, -56, -55, -54, -48, -57, -56, -30, -43, -35, -36, -31, -62,
+ -48, -47, -44, -48, -68, -49, -53, -46, -42, -42, -43, -45, -68, -56, -59, -46, -59, -57, -42, -46, -46, -45, -43,
+ -75, -60, -58, -55, -57, -70, -59, -62, -60, -53, -52, -53, -57, -72, -67, -64, -60, -69, -65, -53, -55, -57, -57,
+ -53, -75, -64, -52, -55, -58, -69, -63, -56, -51, -52, -53, -49, -62, -67, -60, -61, -52, -70, -72, -52, -56, -58,
+ -63, -46, -64, -55, -42, -45, -50, -68, -53, -46, -36, -42, -43, -39, -52, -65, -49, -56, -38, -61, -66, -42, -48,
+ -48, -53, -36, -64, -47, -32, -38, -36, -63, -40, -36, -32, -33, -26, -30, -43, -56, -46, -40, -33, -64, -52, -33,
+ -31, -40, -45, -27, -82, -67, -71, -67, -66, -76, -71, -78, -80, -63, -66, -67, -65, -77, -80, -74, -78, -77, -71,
+ -63, -67, -67, -65, -69, -55, -35, -25, -25, -28, -52, -32, -33, -24, -21, -16, -17, -30, -50, -38, -38, -23, -47,
+ -46, -21, -22, -28, -31, -16, -51, -31, -21, -21, -25, -50, -29, -30, -20, -18, -12, -13, -26, -47, -34, -36, -19,
+ -44, -44, -18, -18, -24, -28, -12, -79, -66, -64, -62, -65, -73, -70, -71, -71, -59, -63, -60, -64, -71, -73, -70,
+ -69, -74, -73, -59, -65, -64, -65, -60, -76, -64, -61, -60, -62, -74, -65, -66, -63, -57, -59, -58, -62, -74, -69,
+ -68, -63, -72, -70, -57, -62, -62, -63, -58, -52, -29, -24, -25, -25, -51, -41, -45, -40, -11, -28, -19, -25, -47,
+ -46, -45, -38, -48, -48, -11, -31, -25, -26, -20, -70, -52, -39, -44, -35, -55, -53, -49, -49, -30, -36, -34, -49,
+ -49, -54, -46, -47, -62, -60, -30, -39, -45, -50, -32, -67, -46, -43, -44, -40, -57, -54, -60, -63, -35, -37, -37,
+ -42, -51, -62, -52, -57, -61, -57, -35, -39, -42, -43, -38};
+
+const int8_t *const batch_matmul_5_s8_output_ref = batch_matmul_5_s8_output;
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_input_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_input_tensor.h
new file mode 100644
index 00000000..8afdb70c
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_input_tensor.h
@@ -0,0 +1,64 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_5_s8_rhs_input_tensor[1152] = {
+ 16, 12, 99, -41, -86, -86, 0, 0, 16, 12, 99, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 96, -3, -45, -41, -86, -86, 0, 0, -80, 29, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -16, -39, -57, -41,
+ -86, -86, 0, 0, -16, 80, -83, -41, -86, -86, 0, 0, -40, 29, -34, -41, -86, -86, 0, 0,
+ 112, -59, -28, -41, -86, -86, 0, 0, 64, -46, -112, -41, -86, -86, 0, 0, 72, -46, -112, -41,
+ -86, -86, 0, 0, 72, -46, -112, -41, -86, -86, 0, 0, -80, -35, -51, -41, -86, -86, 0, 0,
+ -128, -45, -112, -41, -86, -86, 0, 0, -120, -45, -112, -41, -86, -86, 0, 0, -120, -45, -112, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 40, 30, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -64, -61, -75, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, -32, -89, -108, -41, -86, -86, 0, 0, 80, 30, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -80, -28, -46, -41, -86, -86, 0, 0, 16, -62, -75, -41,
+ -86, -86, 0, 0, 48, -62, -75, -41, -86, -86, 0, 0, 48, -62, -75, -41, -86, -86, 0, 0,
+ 32, -105, -76, -41, -86, -86, 0, 0, 16, -64, -81, -41, -86, -86, 0, 0, 32, -64, -81, -41,
+ -86, -86, 0, 0, 32, -64, -81, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, -104, -35, -41, -86, -86, 0, 0, -72, 30, -34, -41,
+ -86, -86, 0, 0, -80, -59, -50, -41, -86, -86, 0, 0, -32, -47, -112, -41, -86, -86, 0, 0,
+ -24, -47, -112, -41, -86, -86, 0, 0, -24, -47, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, -48, -98, -78, -41, -86, -86, 0, 0, -16, 30, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 20, 0, 0, 0,
+ 0, 0, 0, 0, -128, -43, 56, -41, -86, -86, 0, 0, 24, 31, -34, -41, -86, -86, 0, 0,
+ -64, -90, -108, -41, -86, -86, 0, 0, -112, -42, -112, -41, -86, -86, 0, 0, -96, -42, -112, -41,
+ -86, -86, 0, 0, -96, -42, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 72, 31, -34, -41, -86, -86, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 95, 116, 114, 97,
+ 99, 101, 100, 95, -48, -71, -77, -41, -86, -86, 0, 0, 48, -99, -56, -41, -86, -86, 0, 0,
+ 56, -99, -56, -41, -86, -86, 0, 0, 56, -99, -56, -41, -86, -86, 0, 0, -128, 53, -28, -41,
+ -86, -86, 0, 0, -48, -43, -112, -41, -86, -86, 0, 0, -40, -43, -112, -41, -86, -86, 0, 0,
+ -40, -43, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 0, -16, -1, -1,
+ -1, -1, -1, -1, -80, -35, -51, -41, -86, -86, 0, 0, -72, 31, -34, -41, -86, -86, 0, 0,
+ -48, -46, -82, -41, -86, -86, 0, 0, -64, -45, -112, -41, -86, -86, 0, 0, -56, -45, -112, -41,
+ -86, -86, 0, 0, -56, -45, -112, -41, -86, -86, 0, 0, 112, 4, -48, -41, -86, -86, 0, 0,
+ -128, -61, -75, -41, -86, -86, 0, 0, -120, -61, -75, -41, -86, -86, 0, 0, -120, -61, -75, -41,
+ -86, -86, 0, 0, -32, -112, -54, -41, -86, -86, 0, 0, 96, -47, -112, -41, -86, -86, 0, 0,
+ 104, -47, -112, -41, -86, -86, 0, 0, 104, -47, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, -80, -28, -46, -41, -86, -86, 0, 0, 48, 32, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -38, -41, -86, -86, 0, 0, 96, -44, -112, -41,
+ -86, -86, 0, 0, 104, -44, -112, -41, -86, -86, 0, 0, 104, -44, -112, -41, -86, -86, 0, 0,
+ 0, -16, -1, -1, -1, -1, -1, -1, -16, -101, -35, -41, -86, -86, 0, 0, 96, -100, -35, -41,
+ -86, -86, 0, 0, 0, -74, -55, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 2, 0, 0, 0, 64, -84, -36, -41, -86, -86, 0, 0, -112, -112, -35, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -88, 32, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 80, -81, -35, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 0, 58, -82, -41, -86, -86, 0, 0, -48, 32, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -112, -87, -41, -41, -86, -86, 0, 0, -32, 48, -72, -41,
+ -86, -86, 0, 0, -24, 48, -72, -41, -86, -86, 0, 0, -24, 48, -72, -41, -86, -86, 0, 0,
+ -16, 4, -98, -41, -86, -86, 0, 0, 96, -45, -112, -41, -86, -86, 0, 0, 104, -45, -112, -41,
+ -86, -86, 0, 0, 104, -45, -112, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 2, 0, 0, 0, -48, 83, -28, -41, -86, -86, 0, 0, 64, 84, -28, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, 72, 33, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -80, 58, -28, -41, -86, -86, 0, 0, -128, -45, 56, -41,
+ -86, -86, 0, 0, 32, -62, -77, -41, -86, -86, 0, 0, 40, -62, -77, -41, -86, -86, 0, 0,
+ 40, -62, -77, -41, -86, -86, 0, 0, -128, 52, -54, -41, -86, -86, 0, 0, 80, -35, -81, -41,
+ -86, -86, 0, 0, 88, -35, -81, -41, -86, -86, 0, 0, 88, -35, -81, -41, -86, -86, 0, 0,
+ 32, -127, -30, -41, -86, -86, 0, 0, -96, 48, -72, -41, -86, -86, 0, 0, -88, 48, -72, -41,
+ -86, -86, 0, 0, -88, 48, -72, -41, -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 0, 2, 0, 0, 0, -64, 68, -28, -41, -86, -86, 0, 0, 48, 69, -28, -41,
+ -86, -86, 0, 0, 0, -16, -1, -1, -1, -1, -1, -1, -24, 33, -34, -41, -86, -86, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, -96, 62, -28, -41, -86, -86, 0, 0, 0, -16, -1, -1,
+ -1, -1, -1, -1, 112, 4, -48, -41, -86, -86, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_transposed_tensor.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_transposed_tensor.h
new file mode 100644
index 00000000..970447b7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/rhs_transposed_tensor.h
@@ -0,0 +1,67 @@
+// Generated by generate_test_data.py using tensorflow version 2.16.1 (Keras version 2.16.0).
+// Interpreter from tensorflow version 2.16.1 and revision v2.16.1-0-g5bc9d26649c.
+#pragma once
+#include
+
+const int8_t batch_matmul_5_s8_rhs_transposed_tensor[1152] = {
+ 16, 0, -80, 0, -16, 112, 72, -80, -120, 0, 0, 0, 80, -80, 48, 32, 32, 0, 0,
+ -80, -24, 0, -16, 0, 12, -16, 29, -16, 80, -59, -46, -35, -45, -16, 0, -16, 30, -28,
+ -62, -105, -64, -16, -104, -59, -47, -16, 30, -16, 99, -1, -34, -1, -83, -28, -112, -51, -112,
+ -1, 0, -1, -34, -46, -75, -76, -81, -1, -35, -50, -112, -1, -34, -1, -41, -1, -41, -1,
+ -41, -41, -41, -41, -41, -1, 0, -1, -41, -41, -41, -41, -41, -1, -41, -41, -41, -1, -41,
+ -1, -86, -1, -86, -1, -86, -86, -86, -86, -86, -1, 2, -1, -86, -86, -86, -86, -86, -1,
+ -86, -86, -86, -1, -86, -1, -86, -1, -86, -1, -86, -86, -86, -86, -86, -1, 0, -1, -86,
+ -86, -86, -86, -86, -1, -86, -86, -86, -1, -86, -1, 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1,
+ 0, -1, 16, 96, 0, -16, -40, 64, 72, -128, -120, 40, -64, -32, 0, 16, 48, 16, 32,
+ 0, -72, -32, -24, -48, 0, 20, 12, -3, 0, -39, 29, -46, -46, -45, -45, 30, -61, -89,
+ 0, -62, -62, -64, -64, 0, 30, -47, -47, -98, 0, 0, 99, -45, 0, -57, -34, -112, -112,
+ -112, -112, -34, -75, -108, 0, -75, -75, -81, -81, 0, -34, -112, -112, -78, 0, 0, -41, -41,
+ 0, -41, -41, -41, -41, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, 0, -41, -41, -41,
+ -41, 0, 0, -86, -86, 2, -86, -86, -86, -86, -86, -86, -86, -86, -86, 2, -86, -86, -86,
+ -86, 2, -86, -86, -86, -86, 2, 0, -86, -86, 0, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, 0, -86, -86, -86, -86, 0, -86, -86, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -128, -64, -96, 0, 15, -48, 56, -128, -40, 0, -80, -48, -56, 112, -120,
+ -32, 104, 0, 48, -128, 104, 0, 96, 0, -43, -90, -42, -16, 0, -71, -99, 53, -43, -16,
+ -35, -46, -45, 4, -61, -112, -47, -16, 32, -128, -44, -16, -100, -16, 56, -108, -112, -1, 0,
+ -77, -56, -28, -112, -1, -51, -82, -112, -48, -75, -54, -112, -1, -34, -38, -112, -1, -35, -1,
+ -41, -41, -41, -1, 0, -41, -41, -41, -41, -1, -41, -41, -41, -41, -41, -41, -41, -1, -41,
+ -41, -41, -1, -41, -1, -86, -86, -86, -1, 0, -86, -86, -86, -86, -1, -86, -86, -86, -86,
+ -86, -86, -86, -1, -86, -86, -86, -1, -86, -1, -86, -86, -86, -1, 0, -86, -86, -86, -86,
+ -1, -86, -86, -86, -86, -86, -86, -86, -1, -86, -86, -86, -1, -86, -1, 0, 0, 0, -1,
+ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0,
+ -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, -1, 0, -1, 24, -112, -96, 72, 95, 48, 56, -48, -40, 0, -72, -64, -56,
+ -128, -120, 96, 104, -80, 0, 96, 104, -16, 0, 0, 31, -42, -42, 31, 116, -99, -99, -43,
+ -43, -16, 31, -45, -45, -61, -61, -47, -47, -28, 0, -44, -44, -101, -74, 0, -34, -112, -112,
+ -34, 114, -56, -56, -112, -112, -1, -34, -112, -112, -75, -75, -112, -112, -46, 0, -112, -112, -35,
+ -55, 0, -41, -41, -41, -41, 97, -41, -41, -41, -41, -1, -41, -41, -41, -41, -41, -41, -41,
+ -41, 0, -41, -41, -41, -41, 0, -86, -86, -86, -86, 99, -86, -86, -86, -86, -1, -86, -86,
+ -86, -86, -86, -86, -86, -86, 0, -86, -86, -86, -86, 2, -86, -86, -86, -86, 101, -86, -86,
+ -86, -86, -1, -86, -86, -86, -86, -86, -86, -86, -86, 0, -86, -86, -86, -86, 0, 0, 0,
+ 0, 0, 100, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, -48, -112, -24, -16, 104, 0, -48,
+ 0, 0, -128, 40, -128, 88, 32, -88, 0, -64, 0, 0, 0, -84, -16, 0, -16, 32, -87,
+ 48, 4, -45, -16, 83, -16, 0, -45, -62, 52, -35, -127, 48, -16, 68, -16, 0, -16, -36,
+ -1, 0, -1, -34, -41, -72, -98, -112, -1, -28, -1, 0, 56, -77, -54, -81, -30, -72, -1,
+ -28, -1, 0, -1, -41, -1, 0, -1, -41, -41, -41, -41, -41, -1, -41, -1, 0, -41, -41,
+ -41, -41, -41, -41, -1, -41, -1, 0, -1, -86, -1, 2, -1, -86, -86, -86, -86, -86, -1,
+ -86, -1, 2, -86, -86, -86, -86, -86, -86, -1, -86, -1, 2, -1, -86, -1, 0, -1, -86,
+ -86, -86, -86, -86, -1, -86, -1, 0, -86, -86, -86, -86, -86, -86, -1, -86, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0,
+ 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, -112, -88, 80, 0, 0, -32, -24, 96, 104,
+ 0, 64, 72, -80, 32, 40, 80, 88, -96, -88, 0, 48, -24, -96, 112, -112, 32, -81, 58,
+ 0, 48, 48, -45, -45, 0, 84, 33, 58, -62, -62, -35, -35, 48, 48, 0, 69, 33, 62,
+ 4, -35, -34, -35, -82, 0, -72, -72, -112, -112, 0, -28, -34, -28, -77, -77, -81, -81, -72,
+ -72, 0, -28, -34, -28, -48, -41, -41, -41, -41, 0, -41, -41, -41, -41, 0, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -86, -86, -86, -86, 2, -86, -86, -86,
+ -86, 2, -86, -86, -86, -86, -86, -86, -86, -86, -86, 2, -86, -86, -86, -86, -86, -86, -86,
+ -86, 0, -86, -86, -86, -86, 0, -86, -86, -86, -86, -86, -86, -86, -86, -86, 0, -86, -86,
+ -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
diff --git a/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/test_data.h b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/test_data.h
new file mode 100644
index 00000000..471081c7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/TestData/batch_matmul_5_s8/test_data.h
@@ -0,0 +1,6 @@
+#include "config_data.h"
+#include "lhs_input_tensor.h"
+#include "lhs_transposed_tensor.h"
+#include "output.h"
+#include "rhs_input_tensor.h"
+#include "rhs_transposed_tensor.h"
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/CMakeLists.txt b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/CMakeLists.txt
new file mode 100644
index 00000000..d4a71ae7
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/CMakeLists.txt
@@ -0,0 +1,23 @@
+#
+# SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+add_cmsis_nn_unit_test_executable(batch_matmul_s16)
+
+target_sources(batch_matmul_s16 PRIVATE
+ Unity/unity_test_arm_batch_matmul_s16.c
+ Unity/TestRunner/unity_test_arm_batch_matmul_s16_runner.c)
\ No newline at end of file
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/Unity/unity_test_arm_batch_matmul_s16.c b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/Unity/unity_test_arm_batch_matmul_s16.c
new file mode 100644
index 00000000..9757c234
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/Unity/unity_test_arm_batch_matmul_s16.c
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+#include "../test_arm_batch_matmul_s16.c"
+#include "unity.h"
+
+#ifdef USING_FVP_CORSTONE_300
+extern void uart_init(void);
+#endif
+
+/* This function is called from the autogenerated file.
+ * The name must be exactly like this
+ */
+void setUp(void)
+{ /* This is run before EACH TEST */
+#ifdef USING_FVP_CORSTONE_300
+ uart_init();
+#endif
+}
+
+/* This function is called from the autogenerated file.
+ * The name must be exactly like this
+ */
+void tearDown(void) {}
+void test_batch_matmul_1_s16(void) { batch_matmul_1_s16(); }
+void test_batch_matmul_2_s16(void) { batch_matmul_2_s16(); }
+void test_batch_matmul_3_s16(void) { batch_matmul_3_s16(); }
+void test_batch_matmul_4_s16(void) { batch_matmul_4_s16(); }
+void test_batch_matmul_5_s16(void) { batch_matmul_5_s16(); }
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/test_arm_batch_matmul_s16.c b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/test_arm_batch_matmul_s16.c
new file mode 100644
index 00000000..20ccaf9f
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s16/test_arm_batch_matmul_s16.c
@@ -0,0 +1,243 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "../TestData/batch_matmul_1_s16/test_data.h"
+#include "../TestData/batch_matmul_2_s16/test_data.h"
+#include "../TestData/batch_matmul_3_s16/test_data.h"
+#include "../TestData/batch_matmul_4_s16/test_data.h"
+#include "../TestData/batch_matmul_5_s16/test_data.h"
+#include "../Utils/validate.h"
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * We want to transpose LHS as usual if adj_x is 1. When adj_y is 1, we actually already have the rhs in the desired
+ * shape, as our matmul kernel is expecting the rhs to be transposed. We have 2 versions of each input tensor a regular
+ * and transposed version. So we just replace _input with _transposed in the tensor name and use that. We also switch
+ * the ROWS and COLS macro in the shape.
+ */
+
+// Adj_x = 0, Adj_y=0
+void batch_matmul_1_s16(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 0, // adj_y
+ {BATCH_MATMUL_1_S16_LHS_OFFSET,
+ BATCH_MATMUL_1_S16_RHS_OFFSET,
+ BATCH_MATMUL_1_S16_OUTPUT_OFFSET,
+ {BATCH_MATMUL_1_S16_ACTIVATION_MIN, BATCH_MATMUL_1_S16_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_1_S16_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_1_S16_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_1_S16_LHS_BATCH,
+ BATCH_MATMUL_1_S16_LHS_HEIGHT,
+ BATCH_MATMUL_1_S16_LHS_ROWS,
+ BATCH_MATMUL_1_S16_LHS_COLS};
+ // Adj_y = 0, but we actually want to transpose rhs.
+ cmsis_nn_dims rhs_shape_t = {BATCH_MATMUL_1_S16_RHS_BATCH,
+ BATCH_MATMUL_1_S16_RHS_HEIGHT,
+ BATCH_MATMUL_1_S16_RHS_COLS,
+ BATCH_MATMUL_1_S16_RHS_ROWS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_1_S16_OUTPUT_BATCH,
+ BATCH_MATMUL_1_S16_OUTPUT_HEIGHT,
+ BATCH_MATMUL_1_S16_OUTPUT_ROWS,
+ BATCH_MATMUL_1_S16_OUTPUT_COLS};
+
+ int16_t output[BATCH_MATMUL_1_S16_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_1_S16_DST_SIZE;
+ const int16_t *lhs_input = batch_matmul_1_s16_lhs_input_tensor;
+ const int16_t *rhs_input = batch_matmul_1_s16_rhs_transposed_tensor;
+
+ ctx.buf = NULL;
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s16(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_t, rhs_input, &output_shape, output);
+
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate_s16(output, batch_matmul_1_s16_output, output_size));
+}
+
+// Adj_x = 0, Adj_y=1
+void batch_matmul_2_s16(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_2_S16_LHS_OFFSET,
+ BATCH_MATMUL_2_S16_RHS_OFFSET,
+ BATCH_MATMUL_2_S16_OUTPUT_OFFSET,
+ {BATCH_MATMUL_2_S16_ACTIVATION_MIN, BATCH_MATMUL_2_S16_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_2_S16_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_2_S16_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_2_S16_LHS_BATCH,
+ BATCH_MATMUL_2_S16_LHS_HEIGHT,
+ BATCH_MATMUL_2_S16_LHS_ROWS,
+ BATCH_MATMUL_2_S16_LHS_COLS};
+ // Adj_y = 1, but we do not want to transpose rhs.
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_2_S16_RHS_BATCH,
+ BATCH_MATMUL_2_S16_RHS_HEIGHT,
+ BATCH_MATMUL_2_S16_RHS_ROWS,
+ BATCH_MATMUL_2_S16_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_2_S16_OUTPUT_BATCH,
+ BATCH_MATMUL_2_S16_OUTPUT_HEIGHT,
+ BATCH_MATMUL_2_S16_OUTPUT_ROWS,
+ BATCH_MATMUL_2_S16_OUTPUT_COLS};
+
+ int16_t output[BATCH_MATMUL_2_S16_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_1_S16_DST_SIZE;
+ const int16_t *lhs_input = batch_matmul_2_s16_lhs_input_tensor;
+ const int16_t *rhs_input = batch_matmul_2_s16_rhs_input_tensor;
+
+ ctx.buf = NULL;
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s16(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate_s16(output, batch_matmul_2_s16_output, output_size));
+}
+
+// Adj_x = 1, Adj_y=0
+void batch_matmul_3_s16(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {1, // adj_x
+ 0, // adj_y
+ {BATCH_MATMUL_3_S16_LHS_OFFSET,
+ BATCH_MATMUL_3_S16_RHS_OFFSET,
+ BATCH_MATMUL_3_S16_OUTPUT_OFFSET,
+ {BATCH_MATMUL_3_S16_ACTIVATION_MIN, BATCH_MATMUL_3_S16_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_3_S16_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_3_S16_OUTPUT_SHIFT};
+ // Adj_x = 1, so we transpose lhs
+ cmsis_nn_dims lhs_shape_t = {BATCH_MATMUL_3_S16_LHS_BATCH,
+ BATCH_MATMUL_3_S16_LHS_HEIGHT,
+ BATCH_MATMUL_3_S16_LHS_COLS,
+ BATCH_MATMUL_3_S16_LHS_ROWS};
+ // Adj_y = 0, but we want to transpose rhs
+ cmsis_nn_dims rhs_shape_t = {BATCH_MATMUL_3_S16_RHS_BATCH,
+ BATCH_MATMUL_3_S16_RHS_HEIGHT,
+ BATCH_MATMUL_3_S16_RHS_COLS,
+ BATCH_MATMUL_3_S16_RHS_ROWS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_3_S16_OUTPUT_BATCH,
+ BATCH_MATMUL_3_S16_OUTPUT_HEIGHT,
+ BATCH_MATMUL_3_S16_OUTPUT_ROWS,
+ BATCH_MATMUL_3_S16_OUTPUT_COLS};
+
+ int16_t output[BATCH_MATMUL_3_S16_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_3_S16_DST_SIZE;
+ const int16_t *lhs_input = batch_matmul_3_s16_lhs_transposed_tensor;
+ const int16_t *rhs_input = batch_matmul_3_s16_rhs_transposed_tensor;
+
+ ctx.buf = NULL;
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s16(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_t, lhs_input, &rhs_shape_t, rhs_input, &output_shape, output);
+
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate_s16(output, batch_matmul_3_s16_output, output_size));
+}
+
+// Adj_x = 1, Adj_y=1
+void batch_matmul_4_s16(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {1, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_4_S16_LHS_OFFSET,
+ BATCH_MATMUL_4_S16_RHS_OFFSET,
+ BATCH_MATMUL_4_S16_OUTPUT_OFFSET,
+ {BATCH_MATMUL_4_S16_ACTIVATION_MIN, BATCH_MATMUL_4_S16_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_4_S16_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_4_S16_OUTPUT_SHIFT};
+ // Adj_x = 1, so we transpose lhs
+ cmsis_nn_dims lhs_shape_t = {BATCH_MATMUL_4_S16_LHS_BATCH,
+ BATCH_MATMUL_4_S16_LHS_HEIGHT,
+ BATCH_MATMUL_4_S16_LHS_COLS,
+ BATCH_MATMUL_4_S16_LHS_ROWS};
+ // Adj_y = 1, but we do not want to transpose rhs
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_4_S16_RHS_BATCH,
+ BATCH_MATMUL_4_S16_RHS_HEIGHT,
+ BATCH_MATMUL_4_S16_RHS_ROWS,
+ BATCH_MATMUL_4_S16_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_4_S16_OUTPUT_BATCH,
+ BATCH_MATMUL_4_S16_OUTPUT_HEIGHT,
+ BATCH_MATMUL_4_S16_OUTPUT_ROWS,
+ BATCH_MATMUL_4_S16_OUTPUT_COLS};
+
+ int16_t output[BATCH_MATMUL_4_S16_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_4_S16_DST_SIZE;
+ const int16_t *lhs_input = batch_matmul_4_s16_lhs_transposed_tensor;
+ const int16_t *rhs_input = batch_matmul_4_s16_rhs_input_tensor;
+
+ ctx.buf = NULL;
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s16(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_t, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate_s16(output, batch_matmul_4_s16_output, output_size));
+}
+
+// Adj_x = 0, Adj_y=1
+void batch_matmul_5_s16(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_5_S16_LHS_OFFSET,
+ BATCH_MATMUL_5_S16_RHS_OFFSET,
+ BATCH_MATMUL_5_S16_OUTPUT_OFFSET,
+ {BATCH_MATMUL_5_S16_ACTIVATION_MIN, BATCH_MATMUL_5_S16_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_5_S16_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_5_S16_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_5_S16_LHS_BATCH,
+ BATCH_MATMUL_5_S16_LHS_HEIGHT,
+ BATCH_MATMUL_5_S16_LHS_ROWS,
+ BATCH_MATMUL_5_S16_LHS_COLS};
+ // Adj_y = 1, but we do not want to transpose rhs.
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_5_S16_RHS_BATCH,
+ BATCH_MATMUL_5_S16_RHS_HEIGHT,
+ BATCH_MATMUL_5_S16_RHS_ROWS,
+ BATCH_MATMUL_5_S16_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_5_S16_OUTPUT_BATCH,
+ BATCH_MATMUL_5_S16_OUTPUT_HEIGHT,
+ BATCH_MATMUL_5_S16_OUTPUT_ROWS,
+ BATCH_MATMUL_5_S16_OUTPUT_COLS};
+
+ int16_t output[BATCH_MATMUL_5_S16_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_1_S16_DST_SIZE;
+ const int16_t *lhs_input = batch_matmul_5_s16_lhs_input_tensor;
+ const int16_t *rhs_input = batch_matmul_5_s16_rhs_input_tensor;
+
+ ctx.buf = NULL;
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s16(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate_s16(output, batch_matmul_5_s16_output, output_size));
+}
\ No newline at end of file
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/CMakeLists.txt b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/CMakeLists.txt
new file mode 100644
index 00000000..7637b36c
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/CMakeLists.txt
@@ -0,0 +1,23 @@
+#
+# SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+add_cmsis_nn_unit_test_executable(batch_matmul_s8)
+
+target_sources(batch_matmul_s8 PRIVATE
+ Unity/unity_test_arm_batch_matmul_s8.c
+ Unity/TestRunner/unity_test_arm_batch_matmul_s8_runner.c)
\ No newline at end of file
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/Unity/unity_test_arm_batch_matmul_s8.c b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/Unity/unity_test_arm_batch_matmul_s8.c
new file mode 100644
index 00000000..4f0b1544
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/Unity/unity_test_arm_batch_matmul_s8.c
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+#include "../test_arm_batch_matmul_s8.c"
+#include "unity.h"
+
+#ifdef USING_FVP_CORSTONE_300
+extern void uart_init(void);
+#endif
+
+/* This function is called from the autogenerated file.
+ * The name must be exactly like this
+ */
+void setUp(void)
+{ /* This is run before EACH TEST */
+#ifdef USING_FVP_CORSTONE_300
+ uart_init();
+#endif
+}
+
+/* This function is called from the autogenerated file.
+ * The name must be exactly like this
+ */
+void tearDown(void) {}
+void test_batch_matmul_1_s8(void) { batch_matmul_1_s8(); }
+void test_batch_matmul_2_s8(void) { batch_matmul_2_s8(); }
+void test_batch_matmul_3_s8(void) { batch_matmul_3_s8(); }
+void test_batch_matmul_4_s8(void) { batch_matmul_4_s8(); }
+void test_batch_matmul_5_s8(void) { batch_matmul_5_s8(); }
diff --git a/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/test_arm_batch_matmul_s8.c b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/test_arm_batch_matmul_s8.c
new file mode 100644
index 00000000..9075c92e
--- /dev/null
+++ b/Tests/UnitTest/TestCases/test_arm_batch_matmul_s8/test_arm_batch_matmul_s8.c
@@ -0,0 +1,278 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "../TestData/batch_matmul_1_s8/test_data.h"
+#include "../TestData/batch_matmul_2_s8/test_data.h"
+#include "../TestData/batch_matmul_3_s8/test_data.h"
+#include "../TestData/batch_matmul_4_s8/test_data.h"
+#include "../TestData/batch_matmul_5_s8/test_data.h"
+#include "../Utils/validate.h"
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * We want to transpose LHS as usual if adj_x is 1. When adj_y is 1, we actually already have the rhs in the desired
+ * shape, as our matmul kernel is expecting the rhs to be transposed. We have 2 versions of each input tensor a regular
+ * and transposed version. So we just replace _input with _transposed in the tensor name and use that. We also switch
+ * the ROWS and COLS macro in the shape.
+ */
+
+// Adj_x = 0, Adj_y=0
+void batch_matmul_1_s8(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 0, // adj_y
+ {BATCH_MATMUL_1_S8_LHS_OFFSET,
+ BATCH_MATMUL_1_S8_RHS_OFFSET,
+ BATCH_MATMUL_1_S8_OUTPUT_OFFSET,
+ {BATCH_MATMUL_1_S8_ACTIVATION_MIN, BATCH_MATMUL_1_S8_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_1_S8_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_1_S8_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_1_S8_LHS_BATCH,
+ BATCH_MATMUL_1_S8_LHS_HEIGHT,
+ BATCH_MATMUL_1_S8_LHS_ROWS,
+ BATCH_MATMUL_1_S8_LHS_COLS};
+ // Adj_y = 0, but we actually want to transpose rhs.
+ cmsis_nn_dims rhs_shape_t = {BATCH_MATMUL_1_S8_RHS_BATCH,
+ BATCH_MATMUL_1_S8_RHS_HEIGHT,
+ BATCH_MATMUL_1_S8_RHS_COLS,
+ BATCH_MATMUL_1_S8_RHS_ROWS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_1_S8_OUTPUT_BATCH,
+ BATCH_MATMUL_1_S8_OUTPUT_HEIGHT,
+ BATCH_MATMUL_1_S8_OUTPUT_ROWS,
+ BATCH_MATMUL_1_S8_OUTPUT_COLS};
+
+ int8_t output[BATCH_MATMUL_1_S8_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_1_S8_DST_SIZE;
+ const int8_t *lhs_input = batch_matmul_1_s8_lhs_input_tensor;
+ const int8_t *rhs_input = batch_matmul_1_s8_rhs_transposed_tensor;
+
+ int32_t buf_size = arm_fully_connected_s8_get_buffer_size(&output_shape);
+ ctx.buf = malloc(buf_size);
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s8(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_t, rhs_input, &output_shape, output);
+
+ if (ctx.buf)
+ {
+ // The caller is responsible to clear the scratch buffers for security reasons if applicable.
+ memset(ctx.buf, 0, buf_size);
+ free(ctx.buf);
+ }
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate(output, batch_matmul_1_s8_output, output_size));
+}
+
+// Adj_x = 0, Adj_y=1
+void batch_matmul_2_s8(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_2_S8_LHS_OFFSET,
+ BATCH_MATMUL_2_S8_RHS_OFFSET,
+ BATCH_MATMUL_2_S8_OUTPUT_OFFSET,
+ {BATCH_MATMUL_2_S8_ACTIVATION_MIN, BATCH_MATMUL_2_S8_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_2_S8_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_2_S8_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_2_S8_LHS_BATCH,
+ BATCH_MATMUL_2_S8_LHS_HEIGHT,
+ BATCH_MATMUL_2_S8_LHS_ROWS,
+ BATCH_MATMUL_2_S8_LHS_COLS};
+ // Adj_y = 1, but we do not want to transpose rhs.
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_2_S8_RHS_BATCH,
+ BATCH_MATMUL_2_S8_RHS_HEIGHT,
+ BATCH_MATMUL_2_S8_RHS_ROWS,
+ BATCH_MATMUL_2_S8_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_2_S8_OUTPUT_BATCH,
+ BATCH_MATMUL_2_S8_OUTPUT_HEIGHT,
+ BATCH_MATMUL_2_S8_OUTPUT_ROWS,
+ BATCH_MATMUL_2_S8_OUTPUT_COLS};
+
+ int8_t output[BATCH_MATMUL_2_S8_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_2_S8_DST_SIZE;
+ const int8_t *lhs_input = batch_matmul_2_s8_lhs_input_tensor;
+ const int8_t *rhs_input = batch_matmul_2_s8_rhs_input_tensor;
+
+ int32_t buf_size = arm_fully_connected_s8_get_buffer_size(&output_shape);
+ ctx.buf = malloc(buf_size);
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s8(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ if (ctx.buf)
+ {
+ // The caller is responsible to clear the scratch buffers for security reasons if applicable.
+ memset(ctx.buf, 0, buf_size);
+ free(ctx.buf);
+ }
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate(output, batch_matmul_2_s8_output, output_size));
+}
+
+// Adj_x = 1, Adj_y=0
+void batch_matmul_3_s8(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {1, // adj_x
+ 0, // adj_y
+ {BATCH_MATMUL_3_S8_LHS_OFFSET,
+ BATCH_MATMUL_3_S8_RHS_OFFSET,
+ BATCH_MATMUL_3_S8_OUTPUT_OFFSET,
+ {BATCH_MATMUL_3_S8_ACTIVATION_MIN, BATCH_MATMUL_3_S8_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_3_S8_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_3_S8_OUTPUT_SHIFT};
+ // Adj_x = 1, so we transpose lhs
+ cmsis_nn_dims lhs_shape_t = {BATCH_MATMUL_3_S8_LHS_BATCH,
+ BATCH_MATMUL_3_S8_LHS_HEIGHT,
+ BATCH_MATMUL_3_S8_LHS_COLS,
+ BATCH_MATMUL_3_S8_LHS_ROWS};
+ // Adj_y = 0, but we want to transpose rhs
+ cmsis_nn_dims rhs_shape_t = {BATCH_MATMUL_3_S8_RHS_BATCH,
+ BATCH_MATMUL_3_S8_RHS_HEIGHT,
+ BATCH_MATMUL_3_S8_RHS_COLS,
+ BATCH_MATMUL_3_S8_RHS_ROWS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_3_S8_OUTPUT_BATCH,
+ BATCH_MATMUL_3_S8_OUTPUT_HEIGHT,
+ BATCH_MATMUL_3_S8_OUTPUT_ROWS,
+ BATCH_MATMUL_3_S8_OUTPUT_COLS};
+
+ int8_t output[BATCH_MATMUL_3_S8_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_3_S8_DST_SIZE;
+ const int8_t *lhs_input = batch_matmul_3_s8_lhs_transposed_tensor;
+ const int8_t *rhs_input = batch_matmul_3_s8_rhs_transposed_tensor;
+
+ int32_t buf_size = arm_fully_connected_s8_get_buffer_size(&output_shape);
+ ctx.buf = malloc(buf_size);
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s8(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_t, lhs_input, &rhs_shape_t, rhs_input, &output_shape, output);
+
+ if (ctx.buf)
+ {
+ // The caller is responsible to clear the scratch buffers for security reasons if applicable.
+ memset(ctx.buf, 0, buf_size);
+ free(ctx.buf);
+ }
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate(output, batch_matmul_3_s8_output, output_size));
+}
+
+// Adj_x = 1, Adj_y=1
+void batch_matmul_4_s8(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {1, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_4_S8_LHS_OFFSET,
+ BATCH_MATMUL_4_S8_RHS_OFFSET,
+ BATCH_MATMUL_4_S8_OUTPUT_OFFSET,
+ {BATCH_MATMUL_4_S8_ACTIVATION_MIN, BATCH_MATMUL_4_S8_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_4_S8_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_4_S8_OUTPUT_SHIFT};
+ // Adj_x = 1, so we transpose lhs
+ cmsis_nn_dims lhs_shape_t = {BATCH_MATMUL_4_S8_LHS_BATCH,
+ BATCH_MATMUL_4_S8_LHS_HEIGHT,
+ BATCH_MATMUL_4_S8_LHS_COLS,
+ BATCH_MATMUL_4_S8_LHS_ROWS};
+ // Adj_y = 1, but we do not want to transpose rhs
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_4_S8_RHS_BATCH,
+ BATCH_MATMUL_4_S8_RHS_HEIGHT,
+ BATCH_MATMUL_4_S8_RHS_ROWS,
+ BATCH_MATMUL_4_S8_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_4_S8_OUTPUT_BATCH,
+ BATCH_MATMUL_4_S8_OUTPUT_HEIGHT,
+ BATCH_MATMUL_4_S8_OUTPUT_ROWS,
+ BATCH_MATMUL_4_S8_OUTPUT_COLS};
+
+ int8_t output[BATCH_MATMUL_4_S8_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_4_S8_DST_SIZE;
+ const int8_t *lhs_input = batch_matmul_4_s8_lhs_transposed_tensor;
+ const int8_t *rhs_input = batch_matmul_4_s8_rhs_input_tensor;
+
+ int32_t buf_size = arm_fully_connected_s8_get_buffer_size(&output_shape);
+ ctx.buf = malloc(buf_size);
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s8(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_t, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ if (ctx.buf)
+ {
+ // The caller is responsible to clear the scratch buffers for security reasons if applicable.
+ memset(ctx.buf, 0, buf_size);
+ free(ctx.buf);
+ }
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate(output, batch_matmul_4_s8_output, output_size));
+}
+
+// Adj_x = 0, Adj_y=1
+void batch_matmul_5_s8(void)
+{
+ cmsis_nn_context ctx;
+ cmsis_nn_bmm_params bmm_params = {0, // adj_x
+ 1, // adj_y
+ {BATCH_MATMUL_5_S8_LHS_OFFSET,
+ BATCH_MATMUL_5_S8_RHS_OFFSET,
+ BATCH_MATMUL_5_S8_OUTPUT_OFFSET,
+ {BATCH_MATMUL_5_S8_ACTIVATION_MIN, BATCH_MATMUL_5_S8_ACTIVATION_MAX}}};
+ cmsis_nn_per_tensor_quant_params quant_params = {BATCH_MATMUL_5_S8_OUTPUT_MULTIPLIER,
+ BATCH_MATMUL_5_S8_OUTPUT_SHIFT};
+ cmsis_nn_dims lhs_shape_nt = {BATCH_MATMUL_5_S8_LHS_BATCH,
+ BATCH_MATMUL_5_S8_LHS_HEIGHT,
+ BATCH_MATMUL_5_S8_LHS_ROWS,
+ BATCH_MATMUL_5_S8_LHS_COLS};
+ // Adj_y = 1, but we do not want to transpose rhs.
+ cmsis_nn_dims rhs_shape_nt = {BATCH_MATMUL_5_S8_RHS_BATCH,
+ BATCH_MATMUL_5_S8_RHS_HEIGHT,
+ BATCH_MATMUL_5_S8_RHS_ROWS,
+ BATCH_MATMUL_5_S8_RHS_COLS};
+ cmsis_nn_dims output_shape = {BATCH_MATMUL_5_S8_OUTPUT_BATCH,
+ BATCH_MATMUL_5_S8_OUTPUT_HEIGHT,
+ BATCH_MATMUL_5_S8_OUTPUT_ROWS,
+ BATCH_MATMUL_5_S8_OUTPUT_COLS};
+
+ int8_t output[BATCH_MATMUL_5_S8_DST_SIZE] = {0};
+ const int32_t output_size = BATCH_MATMUL_5_S8_DST_SIZE;
+ const int8_t *lhs_input = batch_matmul_5_s8_lhs_input_tensor;
+ const int8_t *rhs_input = batch_matmul_5_s8_rhs_input_tensor;
+
+ int32_t buf_size = arm_fully_connected_s8_get_buffer_size(&output_shape);
+ ctx.buf = malloc(buf_size);
+ ctx.size = 0;
+
+ arm_cmsis_nn_status result = arm_batch_matmul_s8(
+ &ctx, &bmm_params, &quant_params, &lhs_shape_nt, lhs_input, &rhs_shape_nt, rhs_input, &output_shape, output);
+
+ if (ctx.buf)
+ {
+ // The caller is responsible to clear the scratch buffers for security reasons if applicable.
+ memset(ctx.buf, 0, buf_size);
+ free(ctx.buf);
+ }
+ TEST_ASSERT_EQUAL(ARM_CMSIS_NN_SUCCESS, result);
+ TEST_ASSERT_TRUE(validate(output, batch_matmul_5_s8_output, output_size));
+}
\ No newline at end of file
diff --git a/Tests/UnitTest/build_and_run_tests.sh b/Tests/UnitTest/build_and_run_tests.sh
index 65121987..5d591d42 100755
--- a/Tests/UnitTest/build_and_run_tests.sh
+++ b/Tests/UnitTest/build_and_run_tests.sh
@@ -76,6 +76,7 @@ do
done
Setup_Environment() {
+ set -e
echo "++ Downloading Corstone300"
if [[ -d ${WORKING_DIR}/corstone300_download ]]; then
echo "Corstone300 already installed. If you wish to install a new version, please delete the old folder."
@@ -138,6 +139,7 @@ Setup_Environment() {
}
Build_Tests() {
+ set -e
echo "++ Building Tests"
if [[ ${QUIET} -eq 0 ]]; then
cmake -S ./ -B build-${cpu}-${compiler} -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DTARGET_CPU=${cpu} -DCMSIS_PATH=${CMSIS_5_PATH} -DCMSIS_OPTIMIZATION_LEVEL=${OPTIMIZATION}
@@ -155,6 +157,7 @@ Build_Tests() {
}
Run_Tests() {
+ set +e
echo "++ Running Unit Tests"
readarray -d '' tests < <(find ./build-${cpu}-${compiler}/ -iname "*.elf" -print0)
for test in "${tests[@]}"
diff --git a/check_version_and_date.sh b/check_version_and_date.sh
index 4ce482ce..4b1ebb17 100755
--- a/check_version_and_date.sh
+++ b/check_version_and_date.sh
@@ -29,20 +29,22 @@ echo "++ Checking if version and date was updated in changed files"
echo " ------ "
for file in ${CHANGED_FILES[@]}
do
- diff=$(git diff ${SHA} HEAD ${file})
- # This pattern matches "(+|-) * $DATE: Day Month Year"
- echo "$diff" | grep -E '(-|\+)\s*\*\s*\$[Date]+:\s*[0-9]+\s*[A-Za-z]+\s*[0-9]+' -vqz
- if [[ $? -eq 0 ]]; then
- echo "${file}: FAILED"
- ANY_FAILURE=1
- else
- # This pattern matches "(+|-) * $REVISION: V.X.X.X"
- echo "$diff" | grep -E '(-|\+)\s*\*\s*\$[Revision]+:\s*V\.[0-9]+\.[0-9]+\.[0-9]+' -vqz
+ if [[ ${file} != *"CMake"* ]]; then
+ diff=$(git diff ${SHA} HEAD ${file})
+ # This pattern matches "(+|-) * $DATE: Day Month Year"
+ echo "$diff" | grep -E '(-|\+)\s*\*\s*\$[Date]+:\s*[0-9]+\s*[A-Za-z]+\s*[0-9]+' -vqz
if [[ $? -eq 0 ]]; then
echo "${file}: FAILED"
ANY_FAILURE=1
else
- echo "${file}: OK"
+ # This pattern matches "(+|-) * $REVISION: V.X.X.X"
+ echo "$diff" | grep -E '(-|\+)\s*\*\s*\$[Revision]+:\s*V\.[0-9]+\.[0-9]+\.[0-9]+' -vqz
+ if [[ $? -eq 0 ]]; then
+ echo "${file}: FAILED"
+ ANY_FAILURE=1
+ else
+ echo "${file}: OK"
+ fi
fi
fi
done