/*
 * Copyright (c) 2021 Arm Limited. All rights reserved.
   * 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
 *
 *     http://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 "PlatformMath.hpp"
#include <catch.hpp>
#include <limits>
#include <numeric>

TEST_CASE("Test CosineF32")
{
    /*Test  Constants: */
    std::vector<double> inputA{
            0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1,
            0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21,
            0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32,
            0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43,
            0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54,
            0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65,
            0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76,
            0.77, 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87,
            0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98,
            0.99, 1.0
    };
    std::vector<double> expectedResult{
            1.0, 0.9995065603657316, 0.9980267284282716, 0.99556196460308,
            0.9921147013144779, 0.9876883405951378, 0.9822872507286887,
            0.9759167619387474, 0.9685831611286311, 0.9602936856769431,
            0.9510565162951535, 0.9408807689542255, 0.9297764858882515,
            0.9177546256839811, 0.9048270524660195, 0.8910065241883679,
            0.8763066800438636, 0.8607420270039436, 0.8443279255020151,
            0.8270805742745618, 0.8090169943749475, 0.7901550123756904,
            0.7705132427757893, 0.7501110696304596, 0.7289686274214116,
            0.7071067811865476, 0.6845471059286886, 0.6613118653236518,
            0.6374239897486896, 0.6129070536529766, 0.5877852522924731,
            0.5620833778521306, 0.5358267949789965, 0.5090414157503712,
            0.48175367410171516, 0.4539904997395468, 0.42577929156507266,
            0.39714789063478056, 0.3681245526846781, 0.3387379202452915,
            0.30901699437494745, 0.2789911060392295, 0.24868988716485496,
            0.2181432413965427, 0.18738131458572474, 0.15643446504023092,
            0.12533323356430426, 0.0941083133185145, 0.06279051952931353,
            0.031410759078128396, 6.123233995736766e-17, -0.03141075907812828,
            -0.0627905195293134, -0.09410831331851438, -0.12533323356430437,
            -0.15643446504023104, -0.18738131458572482, -0.21814324139654234,
            -0.24868988716485463, -0.27899110603922916, -0.30901699437494734,
            -0.33873792024529137, -0.368124552684678, -0.39714789063478045,
            -0.4257792915650727, -0.4539904997395467, -0.48175367410171543,
            -0.5090414157503713, -0.5358267949789969, -0.5620833778521304,
            -0.587785252292473, -0.6129070536529763, -0.6374239897486897,
            -0.6613118653236517, -0.6845471059286887, -0.7071067811865475,
            -0.7289686274214113, -0.7501110696304596, -0.7705132427757891,
            -0.7901550123756904, -0.8090169943749473, -0.8270805742745619,
            -0.8443279255020149, -0.8607420270039435, -0.8763066800438634,
            -0.8910065241883678, -0.9048270524660194, -0.9177546256839811,
            -0.9297764858882513, -0.9408807689542255, -0.9510565162951535,
            -0.9602936856769431, -0.9685831611286311, -0.9759167619387474,
            -0.9822872507286886, -0.9876883405951377, -0.9921147013144778,
            -0.99556196460308, -0.9980267284282716, -0.9995065603657316, -1.0
    };

    float tolerance = 10e-7;
    for (size_t i = 0; i < inputA.size(); i++) {
        CHECK (expectedResult[i] ==
               Approx(arm::app::math::MathUtils::CosineF32(M_PI*inputA[i])).margin(tolerance));
    }
}

TEST_CASE("Test SineF32")
{
/*Test  Constants: */
std::vector<double> inputA{
        0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1,
        0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21,
        0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32,
        0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43,
        0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54,
        0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65,
        0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76,
        0.77, 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87,
        0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98,
        0.99, 1.0
};
std::vector<double> expectedResult{

        0.0, 0.03141075907812829, 0.06279051952931337, 0.09410831331851431,
        0.12533323356430426, 0.15643446504023087, 0.1873813145857246,
        0.21814324139654256, 0.2486898871648548, 0.2789911060392293,
        0.3090169943749474, 0.33873792024529137, 0.3681245526846779,
        0.3971478906347806, 0.4257792915650727, 0.45399049973954675,
        0.4817536741017153, 0.5090414157503713, 0.5358267949789967,
        0.5620833778521306, 0.5877852522924731, 0.6129070536529764,
        0.6374239897486896, 0.6613118653236518, 0.6845471059286886,
        0.7071067811865475, 0.7289686274214116, 0.7501110696304596,
        0.7705132427757893, 0.7901550123756903, 0.8090169943749475,
        0.8270805742745618, 0.8443279255020151, 0.8607420270039436,
        0.8763066800438637, 0.8910065241883678, 0.9048270524660196,
        0.9177546256839811, 0.9297764858882513, 0.9408807689542255,
        0.9510565162951535, 0.960293685676943,  0.9685831611286311,
        0.9759167619387473, 0.9822872507286886, 0.9876883405951378,
        0.9921147013144779, 0.99556196460308,   0.9980267284282716,
        0.9995065603657316, 1.0,                0.9995065603657316,
        0.9980267284282716, 0.99556196460308,   0.9921147013144778,
        0.9876883405951377, 0.9822872507286886, 0.9759167619387474,
        0.9685831611286312, 0.9602936856769431, 0.9510565162951536,
        0.9408807689542255, 0.9297764858882513, 0.9177546256839813,
        0.9048270524660195, 0.8910065241883679, 0.8763066800438635,
        0.8607420270039436, 0.844327925502015,  0.827080574274562,
        0.8090169943749475, 0.7901550123756905, 0.7705132427757893,
        0.7501110696304597, 0.7289686274214114, 0.7071067811865476,
        0.6845471059286888, 0.6613118653236518, 0.6374239897486899,
        0.6129070536529764, 0.5877852522924732, 0.5620833778521305,
        0.535826794978997,  0.5090414157503714, 0.4817536741017156,
        0.45399049973954686, 0.4257792915650729, 0.3971478906347806,
        0.36812455268467814, 0.3387379202452913, 0.3090169943749475,
        0.2789911060392291, 0.24868988716485482, 0.21814324139654231,
        0.18738131458572502, 0.15643446504023098, 0.12533323356430454,
        0.09410831331851435, 0.06279051952931358, 0.031410759078128236,
        1.2246467991473532e-16
    };
    float tolerance = 10e-4;
    for (size_t i = 0; i < inputA.size(); i++) {
        CHECK (expectedResult[i] ==
        Approx(arm::app::math::MathUtils::SineF32(M_PI*inputA[i])).margin(tolerance));
    }
}

TEST_CASE("Test SqrtF32")
{
    /*Test  Constants: */
    std::vector<float> inputA{0,1,2,9,M_PI};
    size_t len = inputA.size();
    std::vector<float> expectedResult{0, 1, 1.414213562, 3, 1.772453851 };

    for (size_t i=0; i < len; i++){
        CHECK (expectedResult[i] == Approx(arm::app::math::MathUtils::SqrtF32(inputA[i])));
    }
}

TEST_CASE("Test MeanF32")
{
    /*Test  Constants: */
    std::vector<float> input
        {0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.000};

    /* Manually calculated mean of above vector */
    float expectedResult = 0.100;
    CHECK (expectedResult == Approx(arm::app::math::MathUtils::MeanF32(input.data(), input.size())));
}

TEST_CASE("Test StdDevF32")
{
    /*Test  Constants: */
    /* Normally distributed sample data generated by numpy normal library */
    std::vector<float> input
            {1.62434536, -0.61175641, -0.52817175, -1.07296862,  0.86540763, -2.3015387,
             1.74481176, -0.7612069,   0.3190391,  -0.24937038,  1.46210794, -2.06014071,
             -0.3224172, -0.38405435,  1.13376944, -1.09989127, -0.17242821, -0.87785842,
             0.04221375,  0.58281521, -1.10061918,  1.14472371,  0.90159072,  0.50249434,
             0.90085595, -0.68372786, -0.12289023, -0.93576943, -0.26788808,  0.53035547,
             -0.69166075,-0.39675353, -0.6871727,  -0.84520564, -0.67124613, -0.0126646,
             -1.11731035, 0.2344157,   1.65980218,  0.74204416, -0.19183555, -0.88762896,
             -0.74715829, 1.6924546,   0.05080775, -0.63699565,  0.19091548,  2.10025514,
             0.12015895,  0.61720311
            };
    uint32_t inputLen = input.size();

    /*Calculate mean using std library to avoid dependency on MathUtils::MeanF32 */
    float mean = (std::accumulate(input.begin(), input.end(), 0.0f))/float(inputLen);
    float output = arm::app::math::MathUtils::StdDevF32(input.data(), inputLen, mean);

    /*Manually calculated standard deviation of above vector*/
    float expectedResult = 0.969589282958136;

    CHECK (expectedResult == Approx(output));
}

TEST_CASE("Test FFT32")
{
    /*Test  Constants: */
    std::vector<float> input_zeros(512, 0);
    std::vector<float> input_ones(512, 1);
    /* Random numbers generated using numpy rand with range [0:1] */
    std::vector<float> input_random{
            0.42333686,0.6547418,0.8933691,0.91466254,0.5992143,0.99474055,0.97750413,0.97160685,
            0.72718734,0.8699537,0.643911,0.09764466,0.0050113136,0.46823388,0.13709934,0.44892532,
            0.59728205,0.04055081,0.5579888,0.18445836,0.66469765,0.82715863,0.91934484,0.7844356,
            0.23489648,0.021708783,0.67819905,0.75761676,0.48374954,0.14006922,0.87082034,0.7694296,
            0.80479276,0.8241704,0.95917296,0.5758142,0.16839339,0.34290153,0.5846108,0.6878044,
            0.1067114,0.5198196,0.4356897,0.68049103,0.12480807,0.3538696,0.06067087,0.056964435,
            0.5382167,0.07761527,0.6673144,0.9045368,0.11050189,0.03530183,0.07864744,0.98752064,
            0.014321936,0.101833574,0.43293256,0.87102246,0.52411795,0.90232223,0.49560344,0.6803092,
            0.2908511,0.14653015,0.99105513,0.7057098,0.09623502,0.039713606,0.88669086,0.56018597,
            0.90632766,0.99241334,0.18748309,0.38991618,0.6359827,0.05665585,0.732304,0.2703365,
            0.19014524,0.5017947,0.78862536,0.81253093,0.35050204,0.2832596,0.65221876,0.59856164,
            0.42758793,0.78865635,0.30943435,0.93780816,0.62568265,0.35397422,0.84209913,0.48590583,
            0.34837773,0.5811646,0.42924216,0.26692122,0.030709852,0.84459823,0.09085059,0.29297647,
            0.48539516,0.33488297,0.7877257,0.8728821,0.28454545,0.7109578,0.86097074,0.8536262,
            0.4978063,0.5760398,0.77506036,0.7716988,0.27041402,0.52340513,0.2055419,0.8728235,
            0.13492358,0.79122984,0.52998376,0.33897072,0.6426309,0.8766521,0.89287037,0.74047667,
            0.42341164,0.67437655,0.4682156,0.67123246,0.54287183,0.3580476,0.94756556,0.2699457,
            0.6131569,0.75043845,0.8115012,0.49610943,0.7108478,0.90941435,0.02233071,0.37346774,
            0.33732748,0.46691266,0.35784695,0.39391598,0.8556212,0.884142,0.11730601,0.550112,
            0.31513855,0.69654715,0.58585805,0.4493127,0.78515726,0.8176612,0.9846698,0.32842383,
            0.41843212,0.48470423,0.6757128,0.95876855,0.5989163,0.13587572,0.72886884,0.88291156,
            0.34402263,0.66211045,0.86188424,0.21498202,0.26397392,0.67372984,0.91386956,0.7339788,
            0.91308993,0.1953016,0.1539217,0.214701,0.58234113,0.8019992,0.63969976,0.041050985,
            0.7293308,0.26341477,0.54768014,0.97596467,0.12385198,0.44149798,0.5519762,0.1697347,
            0.577215,0.8213594,0.47874716,0.64515114,0.61467725,0.18463866,0.23890929,0.51052976,
            0.16807361,0.53142565,0.2414274,0.41690814,0.98815554,0.6245643,0.9477003,0.24780034,
            0.82469565,0.8614785,0.9565832,0.062440686,0.9710724,0.039196696,0.11030199,0.35234734,
            0.02065066,0.12832293,0.7328055,0.48924434,0.17247158,0.5769348,0.44146806,0.53575355,
            0.17258933,0.6980237,0.86494404,0.50573164,0.5033998,0.71199447,0.41353586,0.26767612,
            0.3789118,0.046621118,0.58491063,0.22861995,0.03134273,0.53280216,0.23382367,0.07748905,
            0.96875405,0.6613716,0.64087844,0.8377165,0.051519375,0.68997836,0.3776376,0.43362603,
            0.5358754,0.51419014,0.12823892,0.26574057,0.508808,0.15734084,0.78327274,0.5045347,
            0.5445746,0.89297736,0.8531272,0.91270804,0.87429863,0.3965137,0.13544834,0.74269205,
            0.80592203,0.045050766,0.13362087,0.17090783,0.02873757,0.99339336,0.6394376,0.48203012,
            0.70598215,0.37082237,0.39792424,0.89938444,0.312602,0.48755112,0.18220617,0.17303479,
            0.31954846,0.78080165,0.1755106,0.68262285,0.84665287,0.8520143,0.8459509,0.39417005,
            0.30087698,0.81362164,0.61927587,0.32739028,0.9023775,0.27578092,0.6830477,0.15842387,
            0.8473049,0.43057114,0.2019703,0.20560141,0.6237757,0.60283095,0.27645138,0.26605442,
            0.27985683,0.41353813,0.85139906,0.71711886,0.5444832,0.73613757,0.7397004,0.7406752,
            0.41016674,0.31896713,0.4541723,0.2795807,0.47941738,0.00504193,0.89091027,0.8097144,
            0.63033766,0.37252298,0.9132861,0.5102532,0.04104481,0.30368647,0.21573475,0.99520445,
            0.5047808,0.6868845,0.99881023,0.30377692,0.2554386,0.47201005,0.11120686,0.10077732,
            0.1853349,0.49159425,0.3938629,0.8989509,0.9887155,0.698771,0.695701,0.78368753,0.52537227,
            0.19451462,0.3659248,0.1968508,0.7751828,0.33103722,0.40406147,0.37832898,0.68663514,
            0.32225925,0.41771907,0.034218453,0.42808908,0.20685343,0.1861495,0.045986768,0.8532299,
            0.17200677,0.44670314,0.56831235,0.5388232,0.5430553,0.69175136,0.6462231,0.42827028,
            0.10050113,0.30627027,0.9967943,0.6684778,0.5928422,0.63392985,0.99123496,0.79301435,
            0.7936309,0.42839453,0.39781123,0.22329247,0.0122212395,0.2807108,0.19812097,0.5576105,
            0.115653396,0.3732018,0.7622857,0.19847734,0.5310287,0.7298145,0.5518292,0.9117333,
            0.13215758,0.33716795,0.42372775,0.6779287,0.35799992,0.097887225,0.20171605,0.9948177,
            0.1829232,0.80349857,0.9807098,0.22959666,0.67322475,0.63094735,0.93454355,0.15962408,
            0.04335433,0.47104993,0.36784375,0.45258796,0.93415564,0.1655446,0.7195017,0.76236975,
            0.3846913,0.01330617,0.84716374,0.1227003,0.65102947,0.6632434,0.3728453,0.4222391,
            0.6942989,0.16014872,0.10798196,0.94033676,0.026525471,0.8379024,0.5484514,0.13500613,
            0.22919805,0.7001831,0.6573261,0.38086265,0.8725666,0.35077834,0.28415123,0.42283052,
            0.668379,0.9769895,0.37621376,0.646407,0.11188069,0.17129017,0.7441628,0.25617477,
            0.7751679,0.8565412,0.67631435,0.45213568,0.61896557,0.3387995,0.51607716,0.60779697,
            0.16428445,0.5080923,0.13012086,0.61184275,0.7690249,0.9578811,0.67365676,0.16241212,
            0.97157824,0.5595742,0.75936574,0.6043881,0.2149638,0.4925318,0.58727825,0.97953695,
            0.01605968,0.2819307,0.6448378,0.4265335,0.661541,0.3976571,0.40607136,0.46425515,
            0.2055872,0.2716193,0.4132582,0.8372537,0.37787434,0.082228854,0.7985557,0.9718134,
            0.35222608,0.4853643,0.2569464,0.14783978,0.4889042,0.62900156,0.19994198,0.4618481,
            0.21673755,0.51749533,0.1260157,0.83759904,0.36438805,0.6704668,0.22010763,0.2359318,
            0.53004104,0.9723652,0.91218954,0.9153926,0.48207277,0.34850466,0.8939421
    };
    std::vector<std::vector<float>> input_vectors{input_zeros,
                                                  input_ones,
                                                  input_random};

    std::vector<float> output_zeros(512, 0);
    std::vector<float> output_ones(512, 0);
    std::vector<float> output_random(512, 0);
    std::vector<std::vector<float>> output_vectors{output_zeros,
                                                   output_ones,
                                                   output_random};

    std::vector<float> expected_result_zeros(512, 0);
    std::vector<float> expected_result_ones(512, 0);
    expected_result_ones[0] = 512.0;

    /* Values are stored as [real0, realN/2, real1, im1, real2, im2, ...] */
    std::vector<float> expected_result_random{
            2.59510161e+02, 2.59796867, 2.55982143, -5.91349888,
            -1.80049237, 1.09902763,  4.00943240, 7.76684892,
            4.32617219, -4.33636417,  2.98128463, -0.83763449,
            2.92973078, -3.75655459,  2.27203161, -4.61106145,
            5.55562176, -4.71880166,  2.13693416, -2.20496619,
            2.31174036, -3.52991041, -6.16870680e-01, 2.43455407,
            4.76317833, 8.66518565,  1.72350562, -1.33641312,
            5.82836675, 0.89396187,  8.15031483, 4.34599034,
            5.99780199, 2.94900065, -2.34462045e-02, -5.03789597,
            1.21907020e+01, -6.47012928,  1.24434715, 0.23621713,
            9.20921279e-01, -9.20510398, -7.73267254e-01, -3.72141078,
            6.28883709, 4.00634065,  4.46491682, 0.74625307,
            -5.87506158e-01, -4.22833058,  3.15189786, -1.82518672,
            -6.93782260, 2.4170692,  3.23045185, 3.33383799,
            5.10059531e-02, -3.4233929, -2.91651323, -0.0258584,
            5.84499843, -9.51454903, -1.49214047e+01, 5.52200123,
            4.52179590, -7.08268703,  5.16775420e-01, -2.90878759,
            5.04314682, -1.16928599, -1.07329243e+01, -0.2719951,
            -3.95269565, -2.32475678, -4.11031641, -2.20538835,
            -5.89005095e-01, -5.65483456, -1.08927018e+01, 5.74801823,
            -5.72520347, -3.94970165, -5.18407515e-01, 1.23622633,
            9.56297959, 0.24424306, -3.74306351, 9.63476301,
            -4.74493837, -0.35443496,  6.54760504, 1.16188913,
            -1.33416950e+01, 7.19088609, -2.56045800, -0.49557866,
            2.93460322, 6.91076746, -2.84779221e-01, 6.59958391,
            1.70963995, -7.67293252,  4.18500790, -0.14627552,
            -1.24855113, -1.43322867,  3.60644904e-01, -4.11521374,
            -1.00628421e+01, 2.87531563, -9.34809732, -0.58251846,
            3.61799848, -5.10288284, -5.96239076, 1.99792128,
            -7.83229243e-02, 1.81741166,  2.32709681, 0.68487206,
            -3.08398468, 1.5177629 ,  1.41015388, 4.51146401,
            1.90769911, 0.56093423,  3.58389141, -0.14974575,
            -2.20163907, -1.62177814, -1.91904127, 1.94645907,
            -1.37722930e-01, -4.30291678, -2.61843435, 0.12691241,
            3.28959117, 4.7309582 , -2.93995652, 0.39835926,
            2.89711768, 1.42284586, -5.13129145, -7.26477374,
            3.74616158, -2.59659457,  3.85748750, -2.93737277,
            3.17748694, -4.45041455, -2.68466437, 1.37377726,
            1.60008368, 1.63787578, -1.95661401, -6.34937202,
            -2.62744282, -5.20892662,  8.90553959e-01, -6.37113573,
            2.35885332,-10.04547561,  3.29866159e-01, 1.89217741,
            8.82516491e-01, -3.53298728, -2.22525608, -5.64794388,
            -5.19226843, 2.5971315 ,  4.49346648, -0.20428409,
            -6.14851885,-11.90893875,  3.75899776, -1.86910056,
            2.78518535, -2.6359501 , -2.13423317, 4.86509946,
            -2.37625499, 7.42404308,  6.71175474, 6.06191618,
            2.59014379, 4.76329698,  9.19140042, 9.69149015,
            3.33307819, -4.03094924,  2.12988453, -0.15820258,
            -1.03422801e+01, -3.04462388,  3.59852152, -2.00887343,
            -3.69998656, 0.90050102,  6.79959099e-01, -1.88604949,
            1.24235316, 0.41309537,  6.13876866, -7.1040085 ,
            6.17728674, 1.91667103, -1.32895472, -0.17674661,
            -6.94720428, 3.10502593, -2.33990738, -1.27840434,
            3.21442520, 2.14102714,  2.37498837, 3.8158066 ,
            -2.24107675, -5.52527559, -2.95697930, -0.50367608,
            3.01687661, 7.08195792,  6.78604790, -3.94154162,
            2.24402195, 4.60132638,  3.42211139, 4.17689039,
            -1.17277194, 2.15404472, -2.37481930, 1.42611867,
            -4.63033506e-01, 3.21563035,  1.38662123, 3.98598717,
            -3.75283402, -2.47600433, -1.97290542, 2.83361487,
            -8.45662834e-01, 5.57411581, -9.72981483e-01,-11.394208,
            1.88220611, -0.80225125, -4.34295854e-01, -8.2954126,
            3.81795409, -3.17146 , -4.61994107, -1.59820505,
            -5.98834455, -4.93129451, -5.13862996e-01, -0.15649305,
            -5.59094391, 6.25244435, -6.59974456,13.17193115,
            4.48609092, 1.64741879,  7.40985006, 0.44896188,
            3.81058449, -0.76425931, -5.47938416, 4.01447941,
            -3.21535548, -1.45542238,  7.22740830e-01, -0.23983128,
            -4.32373034, 0.1337671 , -5.89365226, -3.18756318,
            7.90979161, 5.27570134, -3.43094553, -6.00826981,
            1.17932561, -3.50027177,  1.81306385e-01, 1.1062498 ,
            7.23650536e-01, -1.55500613, -3.88047911, -2.43746762,
            -6.81565579, 2.16343352,  2.46366137, 2.38704469,
            -2.55106395, 6.5091449 , -2.06510578,11.11320924,
            2.06649835, -1.05026064,  1.63564303, -0.04638729,
            1.45053876, 0.43730146,  1.25027939, 0.79932743,
            2.81088838, 6.95136058, -4.41417255, 2.89610628,
            1.15426258, -2.60704937, -2.77744882, 4.12872365,
            -2.98288336, 6.75607352,  2.36553382, -2.10540332,
            -7.30042988, -5.44897893,  3.44048454, 4.29726231,
            2.18199500, -0.80126759, -4.04051175, 4.57584864,
            9.56312116e-01, -4.45183318,  3.42348929, -9.84138181,
            8.69604433, -6.6481311 ,  4.68232735e-01, 1.41031176,
            -1.24085700,10.61672181,  3.56591473e-01,10.51631421,
            -9.97435470e-01, 2.72157537,  8.63583929, -2.19404252,
            -1.53605811, -4.41068581,  2.05371873, 1.25665769,
            1.65289503, 4.52520582, -5.35062642e-01, 0.82084677,
            -1.10079476e+01, -5.09361474,  9.63129107, 3.90056638,
            -4.19779738, 0.06565745,  2.42526917, 2.5854233 ,
            -3.66709357, 3.80502971, -1.01489353e-01, -6.85423228,
            -1.39361494e+01, -0.43904617,  6.01800968, -1.30751495,
            -4.75122234, 2.74740671,  5.54971138, 9.43409003,
            -9.94733058e-01, -3.0096825 , -8.60263376, 0.36653762,
            3.53318614, -2.69194556, -8.95145740, -4.71570923,
            5.15417709, 2.68645385, -2.78042293, 8.21739385,
            5.90225003e-01, 2.13319153,  1.72158888, 0.18114627,
            3.92269446, 3.3525857 , -3.40313825, 4.39280934,
            -1.70368966, 1.29121245, -3.11326453, -1.85941318,
            4.57078881, 0.72531039,  6.00445664, 4.9588524 ,
            -3.32944491, -0.02080722, -7.42374632, -3.23290026,
            -8.16145790e-01, 3.55935439, -6.19206533e-01, 2.42859073,
            2.21486456, 3.76402487,  3.90930695, -3.61610186,
            -8.12712547e-01,-14.63377988,  1.14460823, -3.14089899,
            3.18097435, 1.21957751,  2.85181833, 0.89990235,
            -4.32147361, -5.54219361, -1.12253677, 2.96141081,
            -4.42577070, 3.17282306,  4.91746710, 1.16977744,
            -4.55148089, -2.82520179, -1.71684103, 1.91487668,
            7.70726836e-01, 0.78534837, -5.91048566, -4.8288477 ,
            -1.35560162, -3.60938315,  1.15812301, 2.44299541,
            1.36115190, -5.40950935,  7.08292127, 0.27720591,
            -1.60210828e-01, 2.75862348, -1.57403782, 9.97207524,
            -2.08957576, 8.70299964, -5.33004663, 4.1547783 ,
            3.51580675, -5.10788085,  4.37938353, -3.73449894,
            1.44673271, 0.51941469,  8.52232446e-01, -1.1134965 ,
            -1.43972745, -1.62952127, -2.50759973, 1.19012213,
            5.72772282e-01, -2.71833059, -6.84718990, 4.2621535 ,
            1.58954734, -0.53827818, -1.44624396e-01, 7.63866979,
            4.10423977e-01, -2.4785678 , -5.02681867, -2.03469811,
            9.59505727e-01, 2.68589705,  3.20889444,-10.76452533,
            -3.84771551, 2.49189796, -3.19895938, -3.49948794,
            -2.67238970, 5.11386526, -3.85957031, -1.40741978,
            1.76663166e-01,-11.7111276 ,  6.39997364e-01, -1.30321198,
            3.20767633, 1.65750671, -1.16187257e+01, -4.36634782,
            -3.18675281, -4.89279155, -4.08760307, 2.19269283,
            -1.58924870, 0.17948212,  4.81376107, 2.01871001,
            -3.24211095e-01, -0.2790092 ,  1.12603878, -3.61503491,
            -2.86982317, -3.03634532,  8.07713910, 2.21302089,
            2.91496011, -2.58564072, -2.45868054, -4.69447438,
            -2.45868054, 4.69447438,
            2.91496011, 2.58564072,  8.07713910, -2.21302089,
            -2.86982317, 3.03634532,  1.12603878, 3.61503491,
            -3.24211095e-01, 0.2790092 ,  4.81376107, -2.01871001,
            -1.58924870, -0.17948212, -4.08760307, -2.19269283,
            -3.18675281, 4.89279155, -1.16187257e+01, 4.36634782,
            3.20767633, -1.65750671,  6.39997364e-01, 1.30321198,
            1.76663166e-01,11.7111276 , -3.85957031, 1.40741978,
            -2.67238970, -5.11386526, -3.19895938, 3.49948794,
            -3.84771551, -2.49189796,  3.20889444,10.76452533,
            9.59505727e-01, -2.68589705, -5.02681867, 2.03469811,
            4.10423977e-01, 2.4785678 , -1.44624396e-01, -7.63866979,
            1.58954734, 0.53827818, -6.84718990, -4.2621535 ,
            5.72772282e-01, 2.71833059, -2.50759973, -1.19012213,
            -1.43972745, 1.62952127,  8.52232446e-01, 1.1134965 ,
            1.44673271, -0.51941469,  4.37938353, 3.73449894,
            3.51580675, 5.10788085, -5.33004663, -4.1547783 ,
            -2.08957576, -8.70299964, -1.57403782, -9.97207524,
            -1.60210828e-01, -2.75862348,  7.08292127, -0.27720591,
            1.36115190, 5.40950935,  1.15812301, -2.44299541,
            -1.35560162, 3.60938315, -5.91048566, 4.8288477 ,
            7.70726836e-01, -0.78534837, -1.71684103, -1.91487668,
            -4.55148089, 2.82520179,  4.91746710, -1.16977744,
            -4.42577070, -3.17282306, -1.12253677, -2.96141081,
            -4.32147361, 5.54219361,  2.85181833, -0.89990235,
            3.18097435, -1.21957751,  1.14460823, 3.14089899,
            -8.12712547e-01,14.63377988,  3.90930695, 3.61610186,
            2.21486456, -3.76402487, -6.19206533e-01, -2.42859073,
            -8.16145790e-01, -3.55935439, -7.42374632, 3.23290026,
            -3.32944491, 0.02080722,  6.00445664, -4.9588524 ,
            4.57078881, -0.72531039, -3.11326453, 1.85941318,
            -1.70368966, -1.29121245, -3.40313825, -4.39280934,
            3.92269446, -3.3525857 ,  1.72158888, -0.18114627,
            5.90225003e-01, -2.13319153, -2.78042293, -8.21739385,
            5.15417709, -2.68645385, -8.95145740, 4.71570923,
            3.53318614, 2.69194556, -8.60263376, -0.36653762,
            -9.94733058e-01, 3.0096825 ,  5.54971138, -9.43409003,
            -4.75122234, -2.74740671,  6.01800968, 1.30751495,
            -1.39361494e+01, 0.43904617, -1.01489353e-01, 6.85423228,
            -3.66709357, -3.80502971,  2.42526917, -2.5854233 ,
            -4.19779738, -0.06565745,  9.63129107, -3.90056638,
            -1.10079476e+01, 5.09361474, -5.35062642e-01, -0.82084677,
            1.65289503, -4.52520582,  2.05371873, -1.25665769,
            -1.53605811, 4.41068581,  8.63583929, 2.19404252,
            -9.97435470e-01, -2.72157537,  3.56591473e-01,-10.51631421,
            -1.24085700,-10.61672181,  4.68232735e-01, -1.41031176,
            8.69604433, 6.6481311 ,  3.42348929, 9.84138181,
            9.56312116e-01, 4.45183318, -4.04051175, -4.57584864,
            2.18199500, 0.80126759,  3.44048454, -4.29726231,
            -7.30042988, 5.44897893,  2.36553382, 2.10540332,
            -2.98288336, -6.75607352, -2.77744882, -4.12872365,
            1.15426258, 2.60704937, -4.41417255, -2.89610628,
            2.81088838, -6.95136058,  1.25027939, -0.79932743,
            1.45053876, -0.43730146,  1.63564303, 0.04638729,
            2.06649835, 1.05026064, -2.06510578,-11.11320924,
            -2.55106395, -6.5091449 ,  2.46366137, -2.38704469,
            -6.81565579, -2.16343352, -3.88047911, 2.43746762,
            7.23650536e-01, 1.55500613,  1.81306385e-01, -1.1062498 ,
            1.17932561, 3.50027177, -3.43094553, 6.00826981,
            7.90979161, -5.27570134, -5.89365226, 3.18756318,
            -4.32373034, -0.1337671 ,  7.22740830e-01, 0.23983128,
            -3.21535548, 1.45542238, -5.47938416, -4.01447941,
            3.81058449, 0.76425931,  7.40985006, -0.44896188,
            4.48609092, -1.64741879, -6.59974456,-13.17193115,
            -5.59094391, -6.25244435, -5.13862996e-01, 0.15649305,
            -5.98834455, 4.93129451, -4.61994107, 1.59820505,
            3.81795409, 3.17146 , -4.34295854e-01, 8.2954126 ,
            1.88220611, 0.80225125, -9.72981483e-01,11.394208  ,
            -8.45662834e-01, -5.57411581, -1.97290542, -2.83361487,
            -3.75283402, 2.47600433,  1.38662123, -3.98598717,
            -4.63033506e-01, -3.21563035, -2.37481930, -1.42611867,
            -1.17277194, -2.15404472,  3.42211139, -4.17689039,
            2.24402195, -4.60132638,  6.78604790, 3.94154162,
            3.01687661, -7.08195792, -2.95697930, 0.50367608,
            -2.24107675, 5.52527559,  2.37498837, -3.8158066 ,
            3.21442520, -2.14102714, -2.33990738, 1.27840434,
            -6.94720428, -3.10502593, -1.32895472, 0.17674661,
            6.17728674, -1.91667103,  6.13876866, 7.1040085 ,
            1.24235316, -0.41309537,  6.79959099e-01, 1.88604949,
            -3.69998656, -0.90050102,  3.59852152, 2.00887343,
            -1.03422801e+01, 3.04462388,  2.12988453, 0.15820258,
            3.33307819, 4.03094924,  9.19140042, -9.69149015,
            2.59014379, -4.76329698,  6.71175474, -6.06191618,
            -2.37625499, -7.42404308, -2.13423317, -4.86509946,
            2.78518535, 2.6359501 ,  3.75899776, 1.86910056,
            -6.14851885,11.90893875,  4.49346648, 0.20428409,
            -5.19226843, -2.5971315 , -2.22525608, 5.64794388,
            8.82516491e-01, 3.53298728,  3.29866159e-01, -1.89217741,
            2.35885332,10.04547561,  8.90553959e-01, 6.37113573,
            -2.62744282, 5.20892662, -1.95661401, 6.34937202,
            1.60008368, -1.63787578, -2.68466437, -1.37377726,
            3.17748694, 4.45041455,  3.85748750, 2.93737277,
            3.74616158, 2.59659457, -5.13129145, 7.26477374,
            2.89711768, -1.42284586, -2.93995652, -0.39835926,
            3.28959117, -4.7309582 , -2.61843435, -0.12691241,
            -1.37722930e-01, 4.30291678, -1.91904127, -1.94645907,
            -2.20163907, 1.62177814,  3.58389141, 0.14974575,
            1.90769911, -0.56093423,  1.41015388, -4.51146401,
            -3.08398468, -1.5177629 ,  2.32709681, -0.68487206,
            -7.83229243e-02, -1.81741166, -5.96239076, -1.99792128,
            3.61799848, 5.10288284, -9.34809732, 0.58251846,
            -1.00628421e+01, -2.87531563,  3.60644904e-01, 4.11521374,
            -1.24855113, 1.43322867,  4.18500790, 0.14627552,
            1.70963995, 7.67293252, -2.84779221e-01, -6.59958391,
            2.93460322, -6.91076746, -2.56045800, 0.49557866,
            -1.33416950e+01, -7.19088609,  6.54760504, -1.16188913,
            -4.74493837, 0.35443496, -3.74306351, -9.63476301,
            9.56297959, -0.24424306, -5.18407515e-01, -1.23622633,
            -5.72520347, 3.94970165, -1.08927018e+01, -5.74801823,
            -5.89005095e-01, 5.65483456, -4.11031641, 2.20538835,
            -3.95269565, 2.32475678, -1.07329243e+01, 0.2719951 ,
            5.04314682, 1.16928599,  5.16775420e-01, 2.90878759,
            4.52179590, 7.08268703, -1.49214047e+01, -5.52200123,
            5.84499843, 9.51454903, -2.91651323, 0.0258584 ,
            5.10059531e-02, 3.4233929 ,  3.23045185, -3.33383799,
            -6.93782260, -2.4170692 ,  3.15189786, 1.82518672,
            -5.87506158e-01, 4.22833058,  4.46491682, -0.74625307,
            6.28883709, -4.00634065, -7.73267254e-01, 3.72141078,
            9.20921279e-01, 9.20510398,  1.24434715, -0.23621713,
            1.21907020e+01, 6.47012928, -2.34462045e-02, 5.03789597,
            5.99780199, -2.94900065,  8.15031483, -4.34599034,
            5.82836675, -0.89396187,  1.72350562, 1.33641312,
            4.76317833, -8.66518565, -6.16870680e-01, -2.43455407,
            2.31174036, 3.52991041,  2.13693416, 2.20496619,
            5.55562176, 4.71880166,  2.27203161, 4.61106145,
            2.92973078, 3.75655459,  2.98128463, 0.83763449,
            4.32617219, 4.33636417,  4.00943240, -7.76684892,
            -1.80049237, -1.09902763,  2.55982143, 5.91349888
    };

    std::vector<std::vector<float>> expected_results_vectors{expected_result_zeros,
                                                             expected_result_ones,
                                                             expected_result_random};
    arm::app::math::FftInstance fftInstance;
    /* Iterate over each of the input vectors, calculate FFT and compare with corresponding expected_results vectors */
    for (size_t j = 0; j < input_vectors.size(); j++) {
        uint16_t fftLen = input_vectors[j].size();
        arm::app::math::MathUtils::FftInitF32(fftLen, fftInstance);
        arm::app::math::MathUtils::FftF32(input_vectors[j], output_vectors[j], fftInstance);

        float tolerance = 10e-4;
        for (size_t i = 0; i < fftLen/2; i++) {
            CHECK (output_vectors[j][i] ==
            Approx(expected_results_vectors[j][i]).margin(tolerance));

        }
    }
}

TEST_CASE("Test VecLogarithmF32")
{
    /*Test  Constants: */
    std::vector<float> input =
            { 0.1e-10, 0.5, 1, M_PI, M_E };
    std::vector<float> expectedResult =
            {-25.328436, -0.693147181, 0, 1.144729886, 1};
    std::vector<float> output(input.size());

    arm::app::math::MathUtils::VecLogarithmF32(input,output);

    for (size_t i = 0; i < input.size(); i++)
        CHECK (expectedResult[i] == Approx(output[i]));
}

TEST_CASE("Test DotProductF32")
{
    /*Test  Constants: */
    std::vector<float> inputA
            {1,1,1,0,0,0};
    std::vector<float> inputB
            {0,0,0,1,1,1};
    uint32_t len = inputA.size();

    float expectedResult = 0;
    float dot_prod = arm::app::math::MathUtils::DotProductF32(inputA.data(), inputB.data(), len);
    CHECK(dot_prod == expectedResult);
}

TEST_CASE("Test ComplexMagnitudeSquaredF32")
{
    /*Test  Constants: */
    std::vector<float> input
            {0.0, 0.0, 0.5, 0.5,1,1};
    size_t inputLen = input.size();

    std::vector<float> expectedResult
            {0.0, 0.5, 2,};
    size_t outputLen = inputLen/2;
    std::vector<float>output(outputLen);

    /* Pass pointers to input/output vectors as this function over-writes the first half
     * of the input vector with output results */
    arm::app::math::MathUtils::ComplexMagnitudeSquaredF32(input.data(), inputLen, output.data(), outputLen);

    for (size_t i = 0; i < outputLen; i++)
        CHECK (expectedResult[i] == Approx(output[i]));
}
