diff options
author | siddhu8990 | 2016-06-14 12:30:32 +0530 |
---|---|---|
committer | siddhu8990 | 2016-06-14 12:30:32 +0530 |
commit | 396de3715ed2615f81325661c264341165f0edb2 (patch) | |
tree | c880fb359e61eb0b7ebf12755c4bdae34816f564 /src/c/matrixOperations/norm/snormv.c | |
parent | c75fb67154fb5679d6ede9a52d5f5ae15600f9f9 (diff) | |
download | scilab2c-396de3715ed2615f81325661c264341165f0edb2.tar.gz scilab2c-396de3715ed2615f81325661c264341165f0edb2.tar.bz2 scilab2c-396de3715ed2615f81325661c264341165f0edb2.zip |
Support added for diff, norm functions
Diffstat (limited to 'src/c/matrixOperations/norm/snormv.c')
-rw-r--r-- | src/c/matrixOperations/norm/snormv.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/c/matrixOperations/norm/snormv.c b/src/c/matrixOperations/norm/snormv.c new file mode 100644 index 00000000..03e9ed66 --- /dev/null +++ b/src/c/matrixOperations/norm/snormv.c @@ -0,0 +1,60 @@ + /* Copyright (C) 2016 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Siddhesh Wani + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in + */ + + /*This function calculates norms for vectors (row or column)*/ + +#include "norm.h" +#include <math.h> + +float dnormv (float *in, int size, int norm) +{ + float sum = 0; + float res = 0; + int counter = 0; + + switch (norm) + { + case 0: + res = INFINITY; + break; + case 1: /*Addition of all elements*/ + for (counter=0; counter < size; counter++) + { + sum += in[counter]; + } + res = sum; + break; + case 2: /*Square root of addition of squares of all elements*/ + for (counter=0; counter < size; counter++) + { + sum += in[counter]*in[counter]; + } + res = sqrt(sum); + break; + case 3: /*Cube root of addition of cubes of all elements*/ + for (counter=0; counter < size; counter++) + { + sum += pow(in[counter],3); + } + res = cbrt(sum); + break; + default : /*Nth root of addition of all elements raised to n*/ + for (counter=0; counter < size; counter++) + { + sum += pow(in[counter],norm); + } + res = pow(sum, 1./norm); + break; + } + + return res; +}
\ No newline at end of file |