summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/svm/src/c/polynomial.c
blob: cce919012a28fb3b154abe40d39e17a09fa5662a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/********************************
Author: Sravanthi Kota Venkata
********************************/

#include "svm.h"

float polynomial(int d, F2D* a, F2D* b, int dim)
{
    float ret;
    F2D *bt, *bt1;
    int i,j,r,c;

    r = b->height;
    c = b->width;

    bt = fMallocHandle(c, r);

    for(i=0; i<r; i++)
    {
        for(j=0; j<c; j++)
        {
            subsref(bt,j,i) = subsref(b,i,j);
        }
    }

    bt1 = fMtimes(a, bt);
    fFreeHandle(bt);
    
    if(bt1->height == 1 && bt1->width ==1)
        ret = pow(asubsref(bt1,0),d)/dim;
    else
    {
        fFreeHandle(bt1);
        return -1;
    }

    fFreeHandle(bt1);
    return ret;
}