diff --git a/tests/lib/cmsis_dsp/statistics/src/q31.c b/tests/lib/cmsis_dsp/statistics/src/q31.c index 93562addf8e..86a1a67e41f 100644 --- a/tests/lib/cmsis_dsp/statistics/src/q31.c +++ b/tests/lib/cmsis_dsp/statistics/src/q31.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020 Stephanos Ioannidis - * Copyright (C) 2010-2020 ARM Limited or its affiliates. All rights reserved. + * Copyright (c) 2021 Stephanos Ioannidis + * Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 */ @@ -59,6 +59,48 @@ DEFINE_TEST_VARIANT3(arm_min_q31, 3, in_com1, 0, 3); DEFINE_TEST_VARIANT3(arm_min_q31, 8, in_com1, 1, 8); DEFINE_TEST_VARIANT3(arm_min_q31, 11, in_com1, 2, 11); +static void test_arm_absmax_q31( + const q31_t *input1, int ref_index, size_t length) +{ + q31_t val; + uint32_t index; + + /* Run test function */ + arm_absmax_q31(input1, length, &val, &index); + + /* Validate output */ + zassert_equal(val, ref_absmax_val[ref_index], + ASSERT_MSG_INCORRECT_COMP_RESULT); + + zassert_equal(index, ref_absmax_idx[ref_index], + ASSERT_MSG_INCORRECT_COMP_RESULT); +} + +DEFINE_TEST_VARIANT3(arm_absmax_q31, 3, in_absminmax, 0, 3); +DEFINE_TEST_VARIANT3(arm_absmax_q31, 8, in_absminmax, 1, 8); +DEFINE_TEST_VARIANT3(arm_absmax_q31, 11, in_absminmax, 2, 11); + +static void test_arm_absmin_q31( + const q31_t *input1, int ref_index, size_t length) +{ + q31_t val; + uint32_t index; + + /* Run test function */ + arm_absmin_q31(input1, length, &val, &index); + + /* Validate output */ + zassert_equal(val, ref_absmin_val[ref_index], + ASSERT_MSG_INCORRECT_COMP_RESULT); + + zassert_equal(index, ref_absmin_idx[ref_index], + ASSERT_MSG_INCORRECT_COMP_RESULT); +} + +DEFINE_TEST_VARIANT3(arm_absmin_q31, 3, in_absminmax, 0, 3); +DEFINE_TEST_VARIANT3(arm_absmin_q31, 8, in_absminmax, 1, 8); +DEFINE_TEST_VARIANT3(arm_absmin_q31, 11, in_absminmax, 2, 11); + static void test_arm_mean_q31( const q31_t *input1, int ref_index, size_t length) { @@ -233,6 +275,12 @@ void test_statistics_q31(void) ztest_unit_test(test_arm_min_q31_3), ztest_unit_test(test_arm_min_q31_8), ztest_unit_test(test_arm_min_q31_11), + ztest_unit_test(test_arm_absmax_q31_3), + ztest_unit_test(test_arm_absmax_q31_8), + ztest_unit_test(test_arm_absmax_q31_11), + ztest_unit_test(test_arm_absmin_q31_3), + ztest_unit_test(test_arm_absmin_q31_8), + ztest_unit_test(test_arm_absmin_q31_11), ztest_unit_test(test_arm_mean_q31_3), ztest_unit_test(test_arm_mean_q31_8), ztest_unit_test(test_arm_mean_q31_11), diff --git a/tests/lib/cmsis_dsp/statistics/src/q31.pat b/tests/lib/cmsis_dsp/statistics/src/q31.pat index 33b692b62df..f736af4c9a2 100644 --- a/tests/lib/cmsis_dsp/statistics/src/q31.pat +++ b/tests/lib/cmsis_dsp/statistics/src/q31.pat @@ -154,11 +154,89 @@ static const q31_t in_com2[300] = { 0x235D7B47, 0x2FC7F3E6, 0x144F0C3E, 0x0FA420B1 }; +static const q31_t in_absminmax[300] = { + 0xD91BCEBD, 0x62CE1E33, 0xEB33E43B, 0x0CE373F6, + 0x04B6B41E, 0xDBF8B862, 0x300B2AA8, 0xCA164320, + 0x3126FD7F, 0xCCF50F82, 0x2D1FDF30, 0xC9EEFA52, + 0x050BFB42, 0x0F977F71, 0xE8E7014B, 0x36369352, + 0x07F47FFE, 0xCC1E2A28, 0xAA7A89C1, 0x6057DF08, + 0xBF729F27, 0x3D969DDC, 0xFE0CE4CF, 0xE7943556, + 0xD0280B07, 0x13DC155D, 0xE3A4E66C, 0x1228EA7E, + 0x084FAB71, 0x3A74453F, 0xBE837359, 0x3C48FCA7, + 0x4D4495F4, 0x010CBCC0, 0xEA9BEB7B, 0xD507960A, + 0x156420D7, 0xDC660428, 0xCD227C15, 0x091428EF, + 0x743F1EB7, 0xDF38E217, 0xE25645DF, 0xC5555C63, + 0x35E08AC3, 0xB2052092, 0x3671677B, 0x19F6EA02, + 0xDA57AC82, 0x3288AB45, 0xF6B43DFC, 0x40580DD2, + 0xE27E4925, 0xD14AF3E0, 0x3D86B16E, 0x3C064F65, + 0xFF2EAF77, 0xA712EBF1, 0x9E7183A9, 0x293AB09F, + 0x1520BF67, 0x2C9336DD, 0xF501B837, 0x5A414FD6, + 0x0FFA2E7E, 0xD88CC4FF, 0x3CFA8F9C, 0x3C0F7EC1, + 0xC47D45F2, 0xE7AFFD1E, 0x00E49F4A, 0xD1150671, + 0x12CD4609, 0xE8D8E257, 0x330FFE7E, 0x023F0D80, + 0x0A615AA0, 0x0D9FC9AE, 0xE8BAC301, 0xC52A84C2, + 0xFB166F3B, 0xF3D773AD, 0x145A3253, 0xFD074131, + 0xEC9A00A1, 0x1FA4EAF5, 0x259ABB05, 0xCE3E2E74, + 0x2421D36F, 0x24B2F703, 0x3AEDBE9F, 0xB7CC078B, + 0x420ABEB8, 0x22C2EBBD, 0xEEE6B78F, 0x476063BC, + 0xE8A99B12, 0xE257DC6A, 0x0C05D1BA, 0x34CECDDC, + 0x249FB308, 0x10CA1DC0, 0x49194AC8, 0xCCD332D9, + 0x2BCCF239, 0xC6BA0C29, 0xFC825185, 0x0FBBD385, + 0xF0709940, 0x383D713A, 0xC85D722F, 0xBBD501AD, + 0x80000000, 0xE91D9859, 0xE3924A8D, 0xBEB83E7E, + 0x0B1A20C4, 0xBDB28F6B, 0xED165AB3, 0xC9463F5F, + 0x0EA223CD, 0x042CC48A, 0x1463A642, 0x22371902, + 0xFCCEA5D7, 0xE33BC127, 0xDAEB4AA6, 0x49A78B23, + 0x2606AF14, 0xCC592CD4, 0x221EE022, 0x06607C55, + 0x30809757, 0xC41AE0F6, 0xF0512289, 0x140C89A7, + 0x48D49C0D, 0xF3FF4EAE, 0x05F6963E, 0x3169AC36, + 0x0AE1615A, 0xE0FFA685, 0x1ABFDBF8, 0xD656427E, + 0xBCD5F0AA, 0x0D560B62, 0x4A1EDC5B, 0xFA6DDFEF, + 0x301BB2BB, 0xC43023A9, 0xF950E33D, 0xE993E290, + 0x4C93882F, 0xE2B1C911, 0xF508F85D, 0xF5D14379, + 0x0EA13DC2, 0x0CBEE8FE, 0xD538AEDB, 0x17FCEE49, + 0xEC8F81DB, 0xEBE5677B, 0x350EA4CB, 0xDA8ED01E, + 0xBB3D8C03, 0x0C6AAAF6, 0xD94AFAF5, 0xC83F040C, + 0x50418783, 0xDF9E3CBC, 0x128132DA, 0x04585B19, + 0xD401C744, 0xE3519D6B, 0x1942152F, 0x069E6FB0, + 0xEE543768, 0xFA6E1E38, 0x558AEB12, 0x108ADC6F, + 0xF57ECD2D, 0x3B8AE964, 0xDE23EAC6, 0x079A113C, + 0x28EA8B9A, 0x14CCFFFC, 0xFC7F0E78, 0x03601BA5, + 0x1A32160C, 0x3AEE02BB, 0xC06E3824, 0x017F0E8D, + 0xCC5D5DB0, 0x1E7D5AEA, 0xFC19EE2A, 0xD5401579, + 0xE5B59039, 0xF5FF070F, 0x41D0AE1F, 0x31C605A8, + 0x3E7EE5F8, 0x78869570, 0x8D326DF1, 0x4E5C1A8E, + 0x2558BC01, 0xFF94718D, 0x1FC709C3, 0xDD30B19E, + 0x21E91012, 0x1500BBCD, 0xFA2D33E0, 0x094D7520, + 0x10ED6681, 0x1CC7E18B, 0x02D43336, 0x384253B2, + 0xE7C36635, 0xE22EB06B, 0x2934BB10, 0xE53A4215, + 0xDA932CF2, 0x1B3B16EF, 0x0CB5CC11, 0xF441B97D, + 0xF9D451FB, 0x2DC68CFC, 0xD561A1E1, 0xE25A01B0, + 0x9088FFB0, 0xF1888C4D, 0x29C29496, 0x0B01DAEB, + 0xF186E57F, 0x99831889, 0xC29EF089, 0x06BEE2A1, + 0x198BEB21, 0x52E2E547, 0x12E4AF92, 0x26403572, + 0x141AD6D7, 0xF7CA12BC, 0x0AB08B15, 0xFABDB636, + 0x09CED512, 0x14C4DB14, 0x2A060FEA, 0xF1413BA7, + 0x3D09FEB1, 0x010F2C24, 0xFBD12420, 0xBDB6E8F7, + 0x08A067F2, 0xF4FF15F0, 0xDE436608, 0x0F57E811, + 0xF556A6CD, 0x3F2E54D0, 0xCFB87547, 0x2703720A, + 0x21F10211, 0x617338A3, 0xBF71EBA5, 0x06145E9B, + 0x3034940D, 0x2C65E68A, 0x60C81120, 0x10199231, + 0xED8CCF13, 0x14551870, 0x2FDB97E0, 0x252DF482, + 0xDFD8ABD7, 0x00D97AE9, 0x023D9795, 0xEC708325, + 0xD09DA1E3, 0xF790A802, 0x21009225, 0x2ED179C7, + 0x64AF52E4, 0x11BA1569, 0xEF2A9DDE, 0x0BCFFEA8, + 0xFA198840, 0xAB20DAAF, 0x2DE1BB5C, 0x4AD7DBB0, + 0xEE618C62, 0x1DFA0618, 0xB3D77D96, 0x013187EF, + 0x44C313D6, 0xECA29DA9, 0x21A3158D, 0x14B5CD02, + 0x4D5C76DB, 0x03D2417B, 0xEFF94305, 0x18120BD2 + }; + static const q31_t ref_max_val[3] = { 0x105553F0, 0x29C5F709, 0x38377595 }; -static const q15_t ref_max_idx[3] = { +static const uint16_t ref_max_idx[3] = { 0x0000, 0x0003, 0x000A }; @@ -166,10 +244,26 @@ static const q31_t ref_min_val[3] = { 0xD9F3A4C5, 0xCD8EA20C, 0xCD8EA20C }; -static const q15_t ref_min_idx[3] = { +static const uint16_t ref_min_idx[3] = { 0x0001, 0x0005, 0x0005 }; +static const q31_t ref_absmax_val[3] = { + 0x62CE1E33, 0x62CE1E33, 0x62CE1E33 + }; + +static const uint16_t ref_absmax_idx[3] = { + 0x0001, 0x0001, 0x0001 + }; + +static const q31_t ref_absmin_val[3] = { + 0x14CC1BC5, 0x04B6B41E, 0x04B6B41E + }; + +static const uint16_t ref_absmin_idx[3] = { + 0x0002, 0x0004, 0x0004 + }; + static const q31_t ref_mean[4] = { 0x14B59370, 0x1F68C070, 0x1E9F29E6, 0x1BD8CBD2 };