/*
 * Copyright (c) 2021 - 2022 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]));
    }
}

/**
 * @brief Simple function to test the Softmax function
 *
 * @param input Input vector
 * @param goldenOutput Expected output vector
 */
static void TestSoftmaxF32(
    const std::vector<float>& input,
    const std::vector<float>& goldenOutput)
{
    std::vector<float> output = input; /* Function modifies the vector in-place */
    arm::app::math::MathUtils::SoftmaxF32(output);

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

    REQUIRE(output.size() == goldenOutput.size());
}

TEST_CASE("Test SoftmaxF32")
{
    SECTION("Simple series") {
        const std::vector<float> input {
            0.0, 1.0, 2.0, 3.0, 4.0,
            5.0, 6.0, 7.0, 8.0, 9.0
        };

        const std::vector<float> expectedOutput {
            7.80134161e-05, 2.12062451e-04,
            5.76445508e-04, 1.56694135e-03,
            4.25938820e-03, 1.15782175e-02,
            3.14728583e-02, 8.55520989e-02,
            2.32554716e-01, 6.32149258e-01
        };

        TestSoftmaxF32(input, expectedOutput);
    }

    SECTION("Random series") {
        const std::vector<float> input {
            0.8810943246170809, 0.5877587675947015,
            0.6841546454788743, 0.4155920960071594,
            0.9799415323651671, 0.5066432973545711,
            0.3846024252355448, 0.4568689569632123,
            0.3284413744557605, 0.49152323726213554
        };

        const std::vector<float> expectedOutput {
            0.13329595, 0.09940837,
            0.10946799, 0.08368583,
            0.14714509, 0.09166319,
            0.08113220, 0.08721240,
            0.07670132, 0.09028766
        };

        TestSoftmaxF32(input, expectedOutput);
    }

    SECTION("Series with large STD") {
        const std::vector<float> input {
            0.001, 1000.000
        };

        const std::vector<float> expectedOutput {
            0.000, 1.000
        };

        TestSoftmaxF32(input, expectedOutput);
    }
}
