/*
 * 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};
    uint32_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 (int 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};
    int inputLen = input.size();

    std::vector<float> expectedResult
            {0.0, 0.5, 2,};
    int 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]));
}
