Error: a brace-enclosed initializer is not allowed here before
aycha mabrouk
Messages postés
7
Statut
Membre
-
Dalfab Messages postés 720 Statut Membre -
Dalfab Messages postés 720 Statut Membre -
Bonjour,
Salut ,j'écris une structure de données qui contient 11 paramètres en c++ ;lors de compilation du code sur vivado HLS j'ai quelque erreur:aidez-moi à corriger.merci
../../../../main.cpp:181:28: error: a brace-enclosed initializer is not allowed here before '{' token
../../../../main.cpp:181:65: error: ISO C++ forbids initialization of member 'parameters' [-fpermissive]
../../../../main.cpp:181:65: error: making 'parameters' static [-fpermissive]
../../../../main.cpp:181:65: error: invalid in-class initialization of static data member of non-integral type 'double [5][1]'
Salut ,j'écris une structure de données qui contient 11 paramètres en c++ ;lors de compilation du code sur vivado HLS j'ai quelque erreur:aidez-moi à corriger.merci
../../../../main.cpp:181:28: error: a brace-enclosed initializer is not allowed here before '{' token
../../../../main.cpp:181:65: error: ISO C++ forbids initialization of member 'parameters' [-fpermissive]
../../../../main.cpp:181:65: error: making 'parameters' static [-fpermissive]
../../../../main.cpp:181:65: error: invalid in-class initialization of static data member of non-integral type 'double [5][1]'
struct model
{
double parameters[5][1] ={{1},{1},{1},{10},{0.150000000000000}};
double *nr_class[1][1]={ { new double(3) } }; /* number of classes, = 2 in regression/one class svm */
double *totalSV[1][1]= { { new double(38) } }; /* total #SV */
//double svm_node **SV=SVs=
double *rho[3][1]= {{3.85250072056665},{1.98260813354295},{-9.85381777928213}};
double *label[3][1]= {{1},{2},{3}}; /* label of each class (label[k]) */
double *sv_indices[38][1]= {{1},{3],{11},{18},{20},{22},{25},{26},{29},{30},{42},{43},{45},{49},{50},{51},{55},{56},{60},{63},{65},{69},{70},{71},{72},{73},{75},{82},{83},{90},{94},{98},{102},{104},{107},{110},{113},{119}}; /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */
double *probA[3][1]= {{-3.04020468884611},{-3.02985537320699},{-1.22838128162279}}; /* pariwise probability information */
double *probB[3][1]= {{-0.143832034298135},{-0.331592706939798},{-0.317353460209991}};
double *sv_coef [38][2]= {
{0.0441014900184046,0},
{0.115481676752995,0.0247201450973238},
{0.0284525394158882,0},
{0.115481676752995,0.0247201450973238},
{0.115481676752995,0.0247201450973238},
{0.115481676752995,0.0247201450973238},
{0.0429276473187021,0.0247201450973238},
{0.115481676752995,0.0247201450973238},
{0.115481676752995,0.0247201450973238},
{0.115481676752995,0.0247201450973238},
{0,2.56566567302770},
{-0.115481676752995,0},
{-0.115481676752995,0},
{-0.115481676752995,0},
{-0.115481676752995,0},
{0,2.56566567302770},
{0,1.19304447300938},
{-0.115481676752995,0},
{0,1.37262120001832},
{0,2.56566567302770}
{0,2.56566567302770},
{-0.115481676752995,0},
{0,2.56566567302770},
{0,2.56566567302770},
{0,2.56566567302770},
{-0.115481676752995,0},
{-0.115481676752995,0},
{-0.0247201450973238,-2.56566567302770},
{-0.0247201450973238,-0.665006705657444},
{-0.0247201450973238,-2.56566567302770},
{0,-1.82845371567548},
{-0.0247201450973238,-2.56566567302770},
{0,-2.56566567302770},
{-0.0247201450973238,-2.56566567302770},
{-0.0247201450973238,-0.106867010440775},
{0,-1.24158009628657},
{-0.0247201450973238,-2.56566567302770},
{-0.0247201450973238,-1.28942381799513}}; /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */
/* constants in decision functions (rho[k*(k-1)/2]) */
/* for classification only */
//double *label= [1;2;3]; /* label of each class (label[k]) */
double *nSV[3][1] ={{10},{17},{11}}; /* number of SVs for each class (nSV[k]) */
/* nSV[0] + nSV[1] + ... + nSV[k-1] = l */
double *SVs[38][14]={
{-0.579400000000000,-0.924500000000000,-0.878900000000000,-0.907400000000000,-0.902800000000000,-0.979600000000000,-0.977000000000000,-0.918200000000000,-0.904600000000000,-0.965100000000000,-0.972900000000000,-0.941700000000000,-0.961900000000000,-0.936700000000000},
{-0.422700000000000,-0.443500000000000,-0.809000000000000,-0.880800000000000,-0.879800000000000,-0.924100000000000,-0.930800000000000,-0.978100000000000,-0.949100000000000,-0.970100000000000,-0.990400000000000,-0.975300000000000,-0.981400000000000,-0.953000000000000},
{-0.604400000000000,-0.850700000000000,-0.851100000000000,-0.788000000000000,-0.885200000000000,-0.825500000000000,-0.921000000000000,-0.933900000000000,-0.966800000000000,-0.917600000000000,-0.965200000000000,-0.930500000000000,-0.948600000000000,-0.938700000000000},
{-0.624000000000000,-0.648500000000000,-0.985600000000000,-0.876800000000000,-0.893100000000000,-0.938300000000000,-0.919000000000000,-0.885100000000000,-0.948400000000000,-0.899200000000000,-0.970700000000000,-0.911300000000000,-0.970000000000000,-0.944600000000000},
{-0.373800000000000,-0.520300000000000,-0.703800000000000,-0.811600000000000,-0.843900000000000,-0.867900000000000,-0.861400000000000,-0.921700000000000,-0.848200000000000,-0.952100000000000,-0.933600000000000,-0.956300000000000,-0.972600000000000,-0.953500000000000},
{-0.592300000000000,-0.691900000000000,-0.768000000000000,-0.894100000000000,-0.934600000000000,-0.866900000000000,-0.905700000000000,-0.945100000000000,-0.930800000000000,-0.924100000000000,-0.931800000000000,-0.954100000000000,-0.948000000000000,-0.924400000000000},
{-0.654400000000000,-0.672400000000000,-0.835300000000000,-0.712100000000000,-0.832100000000000,-0.886900000000000,-0.937600000000000,-0.940200000000000,-0.886500000000000,-0.936000000000000,-0.931100000000000,-0.939500000000000,-0.956700000000000,-0.919200000000000},
{-0.561800000000000,-0.692600000000000,-0.856300000000000,-0.844700000000000,-0.909900000000000,-0.966400000000000,-0.960200000000000,-0.930600000000000,-0.941100000000000,-0.954500000000000,-0.974700000000000,-0.970400000000000,-0.965500000000000,-0.955400000000000},
{-0.391300000000000,-0.480500000000000,-0.932100000000000,-0.764200000000000,-0.972300000000000,-0.867300000000000,-0.848900000000000,-0.905100000000000,-0.848600000000000,-0.914100000000000,-0.981400000000000,-0.982400000000000,-0.964400000000000,-0.932900000000000},
{-0.396100000000000,-0.744400000000000,-0.801300000000000,-0.727400000000000,-0.803800000000000,-0.792200000000000,-0.971400000000000,-0.910600000000000,-0.871400000000000,-0.888500000000000,-0.925600000000000,-0.908700000000000,-0.957600000000000,-0.940900000000000},
{0.222900000000000,0.123500000000000,-0.748800000000000,-0.749800000000000,-0.844400000000000,-0.844300000000000,-0.850000000000000,-0.773300000000000,-0.812600000000000,-0.917000000000000,-0.845500000000000,-0.868700000000000,-0.912900000000000,-0.848100000000000},
{-0.192100000000000,-0.604500000000000,-0.759700000000000,-0.777900000000000,-0.893400000000000,-0.894400000000000,-0.937800000000000,-0.854600000000000,-0.925500000000000,-0.921700000000000,-0.944000000000000,-0.920000000000000,-0.892500000000000,-0.813400000000000},
{-0.204200000000000,-0.572400000000000,-0.856900000000000,-0.844600000000000,-0.792400000000000,-0.915600000000000,-0.910700000000000,-0.895800000000000,-0.926600000000000,-0.936200000000000,-0.953000000000000,-0.942300000000000,-0.898400000000000,-0.758500000000000},
{-0.0876000000000000,-0.390600000000000,-0.908600000000000,-0.877600000000000,-0.892700000000000,-0.909400000000000,-0.921300000000000,-0.925000000000000,-0.963700000000000,-0.942500000000000,-0.960700000000000,-0.956600000000000,-0.893900000000000,-0.812300000000000},
{-0.0936000000000000,-0.458900000000000,-0.854300000000000,-0.889600000000000,-0.812200000000000,-0.891600000000000,-0.936300000000000,-0.905800000000000,-0.948900000000000,-0.921800000000000,-0.946200000000000,-0.916800000000000,-0.906800000000000,-0.812800000000000},
{0.0935000000000000,-0.146800000000000,-0.573100000000000,-0.545100000000000,-0.589000000000000,-0.881400000000000,-0.871000000000000,-0.753100000000000,-0.849100000000000,-0.841400000000000,-0.978900000000000,-0.876200000000000,-0.948100000000000,-0.873700000000000},
{0.180900000000000,-0.187700000000000,-0.706100000000000,-0.642400000000000,-0.545500000000000,-0.655700000000000,-0.468800000000000,-0.694200000000000,-0.728000000000000,-0.824000000000000,-0.861800000000000,-0.882100000000000,-0.917600000000000,-0.742600000000000},
{-0.0212000000000000,-0.778900000000000,-0.772300000000000,-0.947900000000000,-0.912400000000000,-0.921000000000000,-0.940000000000000,-0.950700000000000,-0.937100000000000,-0.972200000000000,-0.937400000000000,-0.963200000000000,-0.848000000000000,-0.821400000000000},
{0.0572000000000000,-0.277800000000000,-0.757100000000000,-0.712300000000000,-0.838600000000000,-0.938700000000000,-0.926500000000000,-0.938600000000000,-0.942300000000000,-0.965800000000000,-0.956000000000000,-0.933300000000000,-0.909400000000000,-0.826600000000000},
{0.191300000000000,-0.332500000000000,-0.707300000000000,-0.676500000000000,-0.802500000000000,-0.789700000000000,-0.848200000000000,-0.914800000000000,-0.903900000000000,-0.898500000000000,-0.911200000000000,-0.895600000000000,-0.864300000000000,-0.800500000000000},
{0.408700000000000,-0.243800000000000,-0.656500000000000,-0.706000000000000,-0.743500000000000,-0.782400000000000,-0.843800000000000,-0.862300000000000,-0.833800000000000,-0.904400000000000,-0.866400000000000,-0.905800000000000,-0.916900000000000,-0.829200000000000},
{-0.323100000000000,-0.549200000000000,-0.750300000000000,-0.781800000000000,-0.849000000000000,-0.889800000000000,-0.853500000000000,-0.932100000000000,-0.871900000000000,-0.896600000000000,-0.863500000000000,-0.904000000000000,-0.925800000000000,-0.857600000000000},
{0.209400000000000,-0.236800000000000,-0.335700000000000,-0.765000000000000,-0.785700000000000,-0.789900000000000,-0.919700000000000,-0.754400000000000,-0.844700000000000,-0.877600000000000,-0.910800000000000,-0.847100000000000,-0.941700000000000,-0.908500000000000},
{0.242600000000000,-0.0374000000000000,-0.576700000000000,-0.593000000000000,-0.771100000000000,-0.773100000000000,-0.892300000000000,-0.868800000000000,-0.909200000000000,-0.908600000000000,-0.897400000000000,-0.914600000000000,-0.912300000000000,-0.816600000000000},
{0.0511000000000000,-0.258800000000000,-0.668400000000000,-0.737000000000000,-0.832900000000000,-0.832400000000000,-0.887100000000000,-0.877400000000000,-0.971400000000000,-0.885400000000000,-0.963700000000000,-0.970300000000000,-0.929400000000000,-0.857400000000000},
{-0.234300000000000,-0.486400000000000,-0.685100000000000,-0.686200000000000,-0.833600000000000,-0.909700000000000,-0.832900000000000,-0.930600000000000,-0.933100000000000,-0.916400000000000,-0.985400000000000,-0.929200000000000,-0.902100000000000,-0.841800000000000},
{-0.262300000000000,-0.632300000000000,-0.813000000000000,-0.752200000000000,-0.927500000000000,-0.925600000000000,-0.896200000000000,-0.870100000000000,-0.942600000000000,-0.939100000000000,-0.925000000000000,-0.928300000000000,-0.903800000000000,-0.780500000000000},
{0.230000000000000,-0.256200000000000,-0.734400000000000,-0.758100000000000,-0.817300000000000,-0.840100000000000,-0.910500000000000,-0.917400000000000,-0.879500000000000,-0.925600000000000,-0.894500000000000,-0.890100000000000,-0.941900000000000,-0.833400000000000},
{0.0883000000000000,-0.0528000000000000,-0.489900000000000,-0.539800000000000,-0.785300000000000,-0.803000000000000,-0.736500000000000,-0.833100000000000,-0.878600000000000,-0.831800000000000,-0.867600000000000,-0.837800000000000,-0.916700000000000,-0.874400000000000},
{0.254400000000000,-0.228500000000000,-0.674800000000000,-0.654900000000000,-0.790300000000000,-0.860700000000000,-0.852300000000000,-0.853700000000000,-0.905600000000000,-0.901800000000000,-0.971100000000000,-0.901900000000000,-0.919800000000000,-0.902300000000000},
{0.135000000000000,-0.0175000000000000,-0.472800000000000,-0.543200000000000,-0.672200000000000,-0.677100000000000,-0.705400000000000,-0.714900000000000,-0.844500000000000,-0.943600000000000,-0.936000000000000,-0.838600000000000,-0.906000000000000,-0.890100000000000},
{0.222300000000000,-0.114700000000000,-0.625800000000000,-0.679300000000000,-0.746200000000000,-0.826000000000000,-0.852900000000000,-0.891700000000000,-0.918300000000000,-0.882600000000000,-0.885400000000000,-0.919500000000000,-0.937700000000000,-0.847200000000000},
{0.191200000000000,0.0347000000000000,-0.715100000000000,-0.721600000000000,-0.743500000000000,-0.814700000000000,-0.828300000000000,-0.822700000000000,-0.892300000000000,-0.877100000000000,-0.892100000000000,-0.898300000000000,-0.926600000000000,-0.804100000000000},
{0.221700000000000,-0.0990000000000000,-0.589900000000000,-0.711300000000000,-0.716600000000000,-0.862500000000000,-0.843100000000000,-0.892000000000000,-0.849600000000000,-0.915500000000000,-0.889900000000000,-0.929300000000000,-0.964300000000000,-0.842700000000000},
{0.154300000000000,-0.0310000000000000,-0.669200000000000,-0.740100000000000,-0.819800000000000,-0.844400000000000,-0.887100000000000,-0.943400000000000,-0.895600000000000,-0.900100000000000,-0.886500000000000,-0.923400000000000,-0.926200000000000,-0.820000000000000},
{0.171900000000000,-0.159200000000000,-0.259400000000000,-0.510100000000000,-0.631400000000000,-0.626800000000000,-0.765700000000000,-0.787700000000000,-0.832900000000000,-0.825500000000000,-0.883200000000000,-0.859900000000000,-0.940400000000000,-0.801300000000000},
{0.204800000000000,-0.318500000000000,-0.546800000000000,-0.742400000000000,-0.828200000000000,-0.844400000000000,-0.889100000000000,-0.891100000000000,-0.930100000000000,-0.900500000000000,-0.949100000000000,-0.896600000000000,-0.950900000000000,-0.863400000000000},
{0.316800000000000,-0.134600000000000,-0.750300000000000,-0.711100000000000,-0.884900000000000,-0.735900000000000,-0.878500000000000,-0.868500000000000,-0.913100000000000,-0.938700000000000,-0.925300000000000,-0.932200000000000,-0.958400000000000,-0.848600000000000}};
/* XXX */
//int free_sv; /* 1 if svm_model is created by svm_load_model*/
/* 0 if svm_model is created by svm_train */
};
[predict_label1,precision1,prob_estimates_t1]=SVMPredict(LabelS1,SStest1, model);
return;
};
2 réponses
Bonjour,
Plusieurs choses ne vont pas :
- Comme le message d'erreur l'indique, tu n'es pas sensée initialiser les membres de ta structure ainsi. En C++ il faut par exemple passer par un constructeur, que l'on parle d'une structure ou d'une classe.
- Il n'est pas très logique de stocker tout dans des tableaux à double entrée, en particulier quand il s'agit de vecteurs ou de valeurs numériques.
- Il y a aussi de grosses confusions en matières de typage. Par exemple
- En terme de typage, il n'y a aucune raison de stocker dans un
-
Voici un exemple de constructeur :
Pour récupérer une paire dans deux variables, on peut utiliser std::tie
Voici comment tu pourrais gérer tes vecteurs (et matrices) avec un compilateur récent :
Bonne chance
Plusieurs choses ne vont pas :
- Comme le message d'erreur l'indique, tu n'es pas sensée initialiser les membres de ta structure ainsi. En C++ il faut par exemple passer par un constructeur, que l'on parle d'une structure ou d'une classe.
- Il n'est pas très logique de stocker tout dans des tableaux à double entrée, en particulier quand il s'agit de vecteurs ou de valeurs numériques.
- Il y a aussi de grosses confusions en matières de typage. Par exemple
double * tab[m][n]signifie que tu stockes une matrice de taille
mx
nde
double *(donc une matrice d'adresses mémoires).
- En terme de typage, il n'y a aucune raison de stocker dans un
doubleun nombre de classe.
unsigned intou
size_tseraient plus adéquat.
-
[predict_label1,precision1,prob_estimates_t1]=SVMPredict(LabelS1,SStest1, model);n'est pas possible en C (une fonction n'a qu'une valeur de retour). Si tu veux retourner une paire et l'affecter dans deux variables, c'est possible mais ce n'est pas comme ça qu'on fait.
Voici un exemple de constructeur :
struct MaStructure {
int membre1;
int membre2;
int membre3;
MaStructure(int x1, int x2):
membre1(x1),
membre1(x2)
{
membre3 = 8;
}
};
int main() {
MaStructure s(3, 7);
return 0;
}
Pour récupérer une paire dans deux variables, on peut utiliser std::tie
#include <iostream>
#include <tuple>
int main() {
int x, y;
std::pair<int, int> p = std::make_pair(3, 7);
std::tie(x, y) = p;
std::cout << "x = " << x << std::endl
<< "y = " << y << std::endl;
return 0;
}
Voici comment tu pourrais gérer tes vecteurs (et matrices) avec un compilateur récent :
#include <iostream>
#include <ostream>
#include <vector>
template <typename T>
std::ostream & operator << (
std::ostream & os,
const std::vector<T> & v
) {
os << '[';
for (auto x : v) os << ' ' << x;
os << " ]";
return os;
}
int main() {
std::vector<int> v = {1, 2, 3};
std::cout << "v = " << v << std::endl;
std::vector<std::vector<int>> m = {{1, 2}, {3, 4}};
std::cout << "m = " << m << std::endl;
return 0;
}
Bonne chance
Bonjour,
Le compilateur n'aime pas du tout ce qu'il lit, et pour cause.
Quand tu écris
Ensuite, le compilateur est en train de s'étrangler et indique ce qu'il peut.
Le compilateur n'aime pas du tout ce qu'il lit, et pour cause.
Quand tu écris
res = SVMPredict(LabelS1,SStest1, model);, le
resà gauche du égal est un type local. La valeur de retour d'une fonction ne peut être affectée qu'à une instance, certainement pas un type qui plus est local.
Ensuite, le compilateur est en train de s'étrangler et indique ce qu'il peut.
j'ai modifié mon code de cette façon ,maintenant j'essaye de corriger les erreurs et je suis pas sure qu'il fonctionne ou non parce que c'est ma première fois que j'écris un code c ++ en vivado HLS,s'il vous plaît Monsieur pouvez-vous me dit qu'elle est la faute avec une suggestion de correction .merci
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <ap_axi_sdata.h> #include <ap_int.h> #include <string> #include "rt_nonfinite.h" #include "pavilion.h" #include "main.h" //#include "mat.h" #include "pavilion_terminate.h" #include "pavilion_initialize.h" #include "svm.h" #include "SVMPredict.h" //#include " svm_predict.h" typedef ap_axiu<32,4,5,5> AXI_VAL; ///////////////////declaration des matrices///////////// static double const parameters[5][1]={{1},{1},{1},{10},{0.150000000000000}}; static double const nr_class[1][1]={ 3 }; static double const totalSV[1][1]= {38}; /* total #SV */ //double svm_node **SV=SVs= double rho[3][1]= {{3.85250072056665},{1.98260813354295},{-9.85381777928213}}; static double const label[3][1]= {{1},{2},{3}}; /* label of each class (label[k]) */ static double const sv_indices[38][1]= {{1},{3},{11},{18},{20},{22},{25},{26},{29},{30},{42},{43},{45},{49},{50},{51},{55},{56},{60},{63},{65},{69},{70},{71},{72},{73},{75},{82},{83},{90},{94},{98},{102},{104},{107},{110},{113},{119}}; /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */ static double const probA[3][1]= {{-3.04020468884611},{-3.02985537320699},{-1.22838128162279}}; /* pariwise probability information */ static double const probB[3][1]= {{-0.143832034298135},{-0.331592706939798},{-0.317353460209991}}; static double const sv_coef [38][2]= {{0.0441014900184046,0},{0.115481676752995,0.0247201450973238},{0.0284525394158882,0},{0.115481676752995,0.0247201450973238},{0.115481676752995,0.0247201450973238},{0.115481676752995,0.0247201450973238},{0.0429276473187021,0.0247201450973238},{0.115481676752995,0.0247201450973238}, {0.115481676752995,0.0247201450973238}, {0.115481676752995,0.0247201450973238},{0,2.56566567302770},{-0.115481676752995,0},{-0.115481676752995,0},{-0.115481676752995,0},{-0.115481676752995,0}, {0,2.56566567302770},{0,1.19304447300938},{-0.115481676752995,0},{0,1.37262120001832},{0,2.56566567302770},{0,2.56566567302770},{-0.115481676752995,0}, {0,2.56566567302770},{0,2.56566567302770}, {0,2.56566567302770},{0,2.56566567302770},{-0.115481676752995,0},{-0.115481676752995,0},{-0.0247201450973238,-2.56566567302770},{-0.0247201450973238,-0.665006705657444},{-0.0247201450973238,-2.56566567302770},{0,-1.82845371567548},{-0.0247201450973238,-2.56566567302770},{0,-2.56566567302770}, {-0.0247201450973238,-2.56566567302770}, {-0.0247201450973238,-0.106867010440775}, {0,-1.24158009628657}, {-0.0247201450973238,-2.56566567302770}}; /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */ /* constants in decision functions (rho[k*(k-1)/2]) */ /* for classification only */ //double *label= [1;2;3]; /* label of each class (label[k]) */ static double const nSV[3][1] ={{10},{17},{11}}; /* number of SVs for each class (nSV[k]) */ /* nSV[0] + nSV[1] + ... + nSV[k-1] = l */ static double const SVs[38][14]={ {-0.579400000000000,-0.924500000000000,-0.878900000000000,-0.907400000000000,-0.902800000000000,-0.979600000000000,-0.977000000000000,-0.918200000000000,-0.904600000000000,-0.965100000000000,-0.972900000000000,-0.941700000000000,-0.961900000000000,-0.936700000000000}, {-0.422700000000000,-0.443500000000000,-0.809000000000000,-0.880800000000000,-0.879800000000000,-0.924100000000000,-0.930800000000000,-0.978100000000000,-0.949100000000000,-0.970100000000000,-0.990400000000000,-0.975300000000000,-0.981400000000000,-0.953000000000000}, {-0.604400000000000,-0.850700000000000,-0.851100000000000,-0.788000000000000,-0.885200000000000,-0.825500000000000,-0.921000000000000,-0.933900000000000,-0.966800000000000,-0.917600000000000,-0.965200000000000,-0.930500000000000,-0.948600000000000,-0.938700000000000}, {-0.624000000000000,-0.648500000000000,-0.985600000000000,-0.876800000000000,-0.893100000000000,-0.938300000000000,-0.919000000000000,-0.885100000000000,-0.948400000000000,-0.899200000000000,-0.970700000000000,-0.911300000000000,-0.970000000000000,-0.944600000000000}, {-0.373800000000000,-0.520300000000000,-0.703800000000000,-0.811600000000000,-0.843900000000000,-0.867900000000000,-0.861400000000000,-0.921700000000000,-0.848200000000000,-0.952100000000000,-0.933600000000000,-0.956300000000000,-0.972600000000000,-0.953500000000000}, {-0.592300000000000,-0.691900000000000,-0.768000000000000,-0.894100000000000,-0.934600000000000,-0.866900000000000,-0.905700000000000,-0.945100000000000,-0.930800000000000,-0.924100000000000,-0.931800000000000,-0.954100000000000,-0.948000000000000,-0.924400000000000}, {-0.654400000000000,-0.672400000000000,-0.835300000000000,-0.712100000000000,-0.832100000000000,-0.886900000000000,-0.937600000000000,-0.940200000000000,-0.886500000000000,-0.936000000000000,-0.931100000000000,-0.939500000000000,-0.956700000000000,-0.919200000000000}, {-0.561800000000000,-0.692600000000000,-0.856300000000000,-0.844700000000000,-0.909900000000000,-0.966400000000000,-0.960200000000000,-0.930600000000000,-0.941100000000000,-0.954500000000000,-0.974700000000000,-0.970400000000000,-0.965500000000000,-0.955400000000000}, {-0.391300000000000,-0.480500000000000,-0.932100000000000,-0.764200000000000,-0.972300000000000,-0.867300000000000,-0.848900000000000,-0.905100000000000,-0.848600000000000,-0.914100000000000,-0.981400000000000,-0.982400000000000,-0.964400000000000,-0.932900000000000}, {-0.396100000000000,-0.744400000000000,-0.801300000000000,-0.727400000000000,-0.803800000000000,-0.792200000000000,-0.971400000000000,-0.910600000000000,-0.871400000000000,-0.888500000000000,-0.925600000000000,-0.908700000000000,-0.957600000000000,-0.940900000000000}, {0.222900000000000,0.123500000000000,-0.748800000000000,-0.749800000000000,-0.844400000000000,-0.844300000000000,-0.850000000000000,-0.773300000000000,-0.812600000000000,-0.917000000000000,-0.845500000000000,-0.868700000000000,-0.912900000000000,-0.848100000000000}, {-0.192100000000000,-0.604500000000000,-0.759700000000000,-0.777900000000000,-0.893400000000000,-0.894400000000000,-0.937800000000000,-0.854600000000000,-0.925500000000000,-0.921700000000000,-0.944000000000000,-0.920000000000000,-0.892500000000000,-0.813400000000000}, {-0.204200000000000,-0.572400000000000,-0.856900000000000,-0.844600000000000,-0.792400000000000,-0.915600000000000,-0.910700000000000,-0.895800000000000,-0.926600000000000,-0.936200000000000,-0.953000000000000,-0.942300000000000,-0.898400000000000,-0.758500000000000}, {-0.0876000000000000,-0.390600000000000,-0.908600000000000,-0.877600000000000,-0.892700000000000,-0.909400000000000,-0.921300000000000,-0.925000000000000,-0.963700000000000,-0.942500000000000,-0.960700000000000,-0.956600000000000,-0.893900000000000,-0.812300000000000}, {-0.0936000000000000,-0.458900000000000,-0.854300000000000,-0.889600000000000,-0.812200000000000,-0.891600000000000,-0.936300000000000,-0.905800000000000,-0.948900000000000,-0.921800000000000,-0.946200000000000,-0.916800000000000,-0.906800000000000,-0.812800000000000}, {0.0935000000000000,-0.146800000000000,-0.573100000000000,-0.545100000000000,-0.589000000000000,-0.881400000000000,-0.871000000000000,-0.753100000000000,-0.849100000000000,-0.841400000000000,-0.978900000000000,-0.876200000000000,-0.948100000000000,-0.873700000000000}, {0.180900000000000,-0.187700000000000,-0.706100000000000,-0.642400000000000,-0.545500000000000,-0.655700000000000,-0.468800000000000,-0.694200000000000,-0.728000000000000,-0.824000000000000,-0.861800000000000,-0.882100000000000,-0.917600000000000,-0.742600000000000}, {-0.0212000000000000,-0.778900000000000,-0.772300000000000,-0.947900000000000,-0.912400000000000,-0.921000000000000,-0.940000000000000,-0.950700000000000,-0.937100000000000,-0.972200000000000,-0.937400000000000,-0.963200000000000,-0.848000000000000,-0.821400000000000}, {0.0572000000000000,-0.277800000000000,-0.757100000000000,-0.712300000000000,-0.838600000000000,-0.938700000000000,-0.926500000000000,-0.938600000000000,-0.942300000000000,-0.965800000000000,-0.956000000000000,-0.933300000000000,-0.909400000000000,-0.826600000000000}, {0.191300000000000,-0.332500000000000,-0.707300000000000,-0.676500000000000,-0.802500000000000,-0.789700000000000,-0.848200000000000,-0.914800000000000,-0.903900000000000,-0.898500000000000,-0.911200000000000,-0.895600000000000,-0.864300000000000,-0.800500000000000}, {0.408700000000000,-0.243800000000000,-0.656500000000000,-0.706000000000000,-0.743500000000000,-0.782400000000000,-0.843800000000000,-0.862300000000000,-0.833800000000000,-0.904400000000000,-0.866400000000000,-0.905800000000000,-0.916900000000000,-0.829200000000000}, {-0.323100000000000,-0.549200000000000,-0.750300000000000,-0.781800000000000,-0.849000000000000,-0.889800000000000,-0.853500000000000,-0.932100000000000,-0.871900000000000,-0.896600000000000,-0.863500000000000,-0.904000000000000,-0.925800000000000,-0.857600000000000}, {0.209400000000000,-0.236800000000000,-0.335700000000000,-0.765000000000000,-0.785700000000000,-0.789900000000000,-0.919700000000000,-0.754400000000000,-0.844700000000000,-0.877600000000000,-0.910800000000000,-0.847100000000000,-0.941700000000000,-0.908500000000000}, {0.242600000000000,-0.0374000000000000,-0.576700000000000,-0.593000000000000,-0.771100000000000,-0.773100000000000,-0.892300000000000,-0.868800000000000,-0.909200000000000,-0.908600000000000,-0.897400000000000,-0.914600000000000,-0.912300000000000,-0.816600000000000}, {0.0511000000000000,-0.258800000000000,-0.668400000000000,-0.737000000000000,-0.832900000000000,-0.832400000000000,-0.887100000000000,-0.877400000000000,-0.971400000000000,-0.885400000000000,-0.963700000000000,-0.970300000000000,-0.929400000000000,-0.857400000000000}, {-0.234300000000000,-0.486400000000000,-0.685100000000000,-0.686200000000000,-0.833600000000000,-0.909700000000000,-0.832900000000000,-0.930600000000000,-0.933100000000000,-0.916400000000000,-0.985400000000000,-0.929200000000000,-0.902100000000000,-0.841800000000000}, {-0.262300000000000,-0.632300000000000,-0.813000000000000,-0.752200000000000,-0.927500000000000,-0.925600000000000,-0.896200000000000,-0.870100000000000,-0.942600000000000,-0.939100000000000,-0.925000000000000,-0.928300000000000,-0.903800000000000,-0.780500000000000}, {0.230000000000000,-0.256200000000000,-0.734400000000000,-0.758100000000000,-0.817300000000000,-0.840100000000000,-0.910500000000000,-0.917400000000000,-0.879500000000000,-0.925600000000000,-0.894500000000000,-0.890100000000000,-0.941900000000000,-0.833400000000000}, {0.0883000000000000,-0.0528000000000000,-0.489900000000000,-0.539800000000000,-0.785300000000000,-0.803000000000000,-0.736500000000000,-0.833100000000000,-0.878600000000000,-0.831800000000000,-0.867600000000000,-0.837800000000000,-0.916700000000000,-0.874400000000000}, {0.254400000000000,-0.228500000000000,-0.674800000000000,-0.654900000000000,-0.790300000000000,-0.860700000000000,-0.852300000000000,-0.853700000000000,-0.905600000000000,-0.901800000000000,-0.971100000000000,-0.901900000000000,-0.919800000000000,-0.902300000000000}, {0.135000000000000,-0.0175000000000000,-0.472800000000000,-0.543200000000000,-0.672200000000000,-0.677100000000000,-0.705400000000000,-0.714900000000000,-0.844500000000000,-0.943600000000000,-0.936000000000000,-0.838600000000000,-0.906000000000000,-0.890100000000000}, {0.222300000000000,-0.114700000000000,-0.625800000000000,-0.679300000000000,-0.746200000000000,-0.826000000000000,-0.852900000000000,-0.891700000000000,-0.918300000000000,-0.882600000000000,-0.885400000000000,-0.919500000000000,-0.937700000000000,-0.847200000000000}, {0.191200000000000,0.0347000000000000,-0.715100000000000,-0.721600000000000,-0.743500000000000,-0.814700000000000,-0.828300000000000,-0.822700000000000,-0.892300000000000,-0.877100000000000,-0.892100000000000,-0.898300000000000,-0.926600000000000,-0.804100000000000}, {0.221700000000000,-0.0990000000000000,-0.589900000000000,-0.711300000000000,-0.716600000000000,-0.862500000000000,-0.843100000000000,-0.892000000000000,-0.849600000000000,-0.915500000000000,-0.889900000000000,-0.929300000000000,-0.964300000000000,-0.842700000000000}, {0.154300000000000,-0.0310000000000000,-0.669200000000000,-0.740100000000000,-0.819800000000000,-0.844400000000000,-0.887100000000000,-0.943400000000000,-0.895600000000000,-0.900100000000000,-0.886500000000000,-0.923400000000000,-0.926200000000000,-0.820000000000000}, {0.171900000000000,-0.159200000000000,-0.259400000000000,-0.510100000000000,-0.631400000000000,-0.626800000000000,-0.765700000000000,-0.787700000000000,-0.832900000000000,-0.825500000000000,-0.883200000000000,-0.859900000000000,-0.940400000000000,-0.801300000000000}, {0.204800000000000,-0.318500000000000,-0.546800000000000,-0.742400000000000,-0.828200000000000,-0.844400000000000,-0.889100000000000,-0.891100000000000,-0.930100000000000,-0.900500000000000,-0.949100000000000,-0.896600000000000,-0.950900000000000,-0.863400000000000}, {0.316800000000000,-0.134600000000000,-0.750300000000000,-0.711100000000000,-0.884900000000000,-0.735900000000000,-0.878500000000000,-0.868500000000000,-0.913100000000000,-0.938700000000000,-0.925300000000000,-0.932200000000000,-0.958400000000000,-0.848600000000000}}; double predict_label1[60][1]; double precision1[3][1]; double prob_estimates_t1[60][3]; ////////////////////////// #define DB_DEBUG template <typename T, int DIM1, int DIM2, int DIMa, int DIMb, int DIMc, int DIMd, int DIMe, int DIMf> void pavilion_ref(T LabelS1[DIM1][DIM2], T predict_label1[DIMa][DIMb], T precision1[DIMc][DIMd],T prob_estimates_t1[DIMe][DIMf]) { double SStest1[60][14]={ {-0.674090537952796,-0.967913560624215,-0.946607312926616,-0.949789832193271,-0.955656497278097,-0.938898706383114,-0.961972723505885,-0.943158564395126,-0.924258334652885,-0.987130021868515,-0.961224433510270,-0.979509038935985,-0.982841580894078,-0.968786461033008}, {-0.661420074510186,-0.953582957005305,-0.976667803306075,-0.852024795662031,-0.923684241437988,-0.908602156779947,-0.961480830721390,-0.943819721336063,-0.961645084746726,-0.975901524455997,-0.964617784738062,-0.985199969033792,-0.979709442173101,-0.949066533256159}, {-0.796228139367668,-0.761729500498894,-0.922254078572498,-0.835053436355116,-0.927209479313798,-0.955333905733235,-0.924794123637238,-0.959289492589635,-0.930944373099572,-0.938536988120820,-0.976986907828858,-0.949164123093526,-0.970737156105474,-0.947698751805312}, {-0.760572782759851,-0.831771980500142,-0.945585944378708,-0.908125723416015,-0.942297850129234,-0.938465946137737,-0.968103420998903,-0.977193895073700,-0.969825462569338,-0.981781833938995,-0.975225320029628,-0.966562487844290,-0.979385622636404,-0.969916779098183}, {-0.682062208785592,-0.901993333331962,-0.911439298246093,-0.995583382410982,-0.950515197199961,-0.939916724225237,-0.951278160425057,-0.951056228844938,-0.962461853366129,-0.977169060764356,-0.975068659001004,-1,-0.981383502203534,-0.960140644534363}, {-0.764153524047345,-0.782068868778498,-0.930585958249904,-0.899522666144618,-0.961023627518624,-0.905380199817116,-0.931424494746754,-0.911851616413864,-0.955101420749475,-0.978391738284877,-0.977733347990399,-0.957980914548860,-0.987159688960536,-0.958296510208874}, {-0.741980614232449,-0.708911988880729,-0.854515153854522,-0.844481728371788,-0.939444864580808,-0.921581100661191,-0.931215822177604,-0.924511727085001,-0.934842760732822,-0.944799003697996,-0.949046456708687,-0.969530645790348,-0.981557594662755,-0.966214670867448}, {-0.373792542593349,-0.520278392032748,-0.703829741405612,-0.811632538345339,-0.843860131190612,-0.867918184900834,-0.861425053147186,-0.921678622630629,-0.848207919776101,-0.952149873411277,-0.933584801186523,-0.956270474264593,-0.972592914683167,-0.953500986248213}, {-0.661229877813482,-0.663476191336492,-0.875946105955396,-0.813599831284167,-0.927616269612180,-0.947770900356774,-0.944605151964964,-0.949965011099178,-0.951558296918110,-0.959706992151603,-0.934147669647518,-0.959913517244191,-0.976789712492956,-0.957643754265247}, {-0.518554977026420,-0.602825724193184,-0.883181911007378,-0.866976656576412,-0.881653303448664,-0.834429119509439,-0.938506509068625,-0.792206968065827,-0.884123330616924,-0.917397025318987,-0.938798625979835,-0.925986787255497,-0.986438030341222,-0.961106108508390}, {-0.530140301878371,-0.883934580851869,-0.929208213377834,-0.981337861458516,-0.942509396789582,-0.918370801892608,-0.946368904151541,-0.968727717519249,-0.965415345904235,-0.992420840751352,-0.960290441628204,-0.987263434783806,-0.980777852550863,-0.961027269770681}, {-0.614065935999483,-0.643092868497660,-0.849915771303324,-0.923684372369931,-0.899325977629591,-0.940079152274114,-0.943645330258078,-0.966640084204524,-0.954120749867146,-0.992492691029133,-0.942907389517172,-0.986160598733704,-0.961571311375914,-0.944437607583134}, {-0.586207974039630,-0.655562550483140,-0.848822046603218,-0.828032863687348,-0.979545766504300,-0.954849783433112,-0.933180508531547,-0.901952187183437,-0.935767611336519,-0.947717892133932,-0.963983017763248,-0.936129485635805,-0.962853677964312,-0.939892729210301}, {-0.698562423991206,-0.828928876308795,-0.930529603172751,-0.973583105511949,-0.922780081115147,-0.950411689148607,-0.922089545604029,-0.902482494918462,-0.919077025971580,-0.938762961947185,-0.946683851734027,-0.943899220923818,-0.970751027958274,-0.962890874229321}, {-0.792352413710960,-0.846807561570503,-0.962463796461496,-0.938280210895608,-0.970676035685350,-0.950577966455638,-0.982653505409229,-0.964264032678215,-0.961530079570332,-0.984175640092749,-0.990259222509500,-0.957261271696928,-0.982531823910805,-0.975962025172037}, {-0.794841618144870,-0.829566960381545,-0.965210501288073,-0.932270663074643,-0.967556626906079,-0.946620792181095,-0.972488769216231,-0.962127134647906,-0.957393614634659,-0.981727556097064,-0.987503639619946,-0.953217441593240,-0.981375073603447,-0.973405792323495}, {-0.795020194095386,-0.806888733270744,-0.960369889000445,-0.915515767489692,-0.957828103336507,-0.939683270081732,-0.951942785566158,-0.957422184175696,-0.947345455495148,-0.975149131137862,-0.978221174145014,-0.944545398095925,-0.978853699190608,-0.968099161607423}, {-0.698839070385112,-0.854584769884228,-0.879448228263050,-0.898303458884004,-0.970834545509510,-0.997729382049760,-0.938912886553759,-0.968614408138659,-0.974484461898617,-0.985571704652593,-0.967328388395865,-0.972452715835938,-0.983660906019555,-0.963564537278949}, {-0.673302416738159,-0.879272351929407,-0.968223106643735,-0.972084171937861,-0.959896101364386,-0.961700573227355,-0.969790464510721,-0.954916739185306,-0.945985863949909,-0.975300691304921,-0.968364403832397,-0.977561535571141,-0.980589365529592,-0.954447517556441}, {-0.637045925923046,-0.710061083800907,-0.936826613792305,-0.859638718802183,-0.912322897550303,-0.981683944934587,-0.890113781116241,-0.913234535285272,-0.894395484221828,-0.922010414470385,-0.957815677576098,-0.941998783974119,-0.969077948566397,-0.955456380822368}, {-0.0464553899974760,-0.662925986991806,-0.833828153044336,-0.929089542429105,-0.837654390767010,-0.945247889228093,-0.957871446601941,-0.960270138903518,-0.965707812000886,-0.958450094695355,-0.968893174805499,-0.975892896458684,-0.882317284020699,-0.784076824928733}, {0.168450404584060,-0.438611610872580,-0.739305838353202,-0.753469051869701,-0.872053346050208,-0.902328666401733,-0.875296732403390,-0.891944157498292,-0.875131611862177,-0.876570070893988,-0.916492079359415,-0.892474870559755,-0.880173712101710,-0.818840278283343}, {0.214956796965889,-0.463100108992908,-0.795731268208176,-0.892232485332773,-0.796178277611433,-0.876064110052591,-0.917887824420658,-0.933514902536318,-0.906487752914575,-0.906161558178618,-0.963182144556198,-0.927398731670949,-0.880132272769419,-0.776628206791729}, {-0.0355148259693545,-0.103832635363957,-0.642826483479963,-0.675170193621003,-0.726663088806811,-0.743780040787059,-0.831794948409108,-0.812381272649148,-0.818233308995815,-0.936764748241986,-0.927791786953338,-0.946337910236447,-0.865122830148352,-0.803850525738294}, {-0.0375370422771995,-0.714446611429583,-0.817139932455997,-0.861863433965497,-0.801308409717709,-0.912671943149429,-0.902056680948667,-0.924358383893747,-0.930365403512554,-0.933505439717915,-0.907344668404472,-0.962516466348439,-0.888667439601752,-0.759379503762919}, {-0.0996422526625035,-0.569498829531724,-0.785394421709639,-0.775105653598853,-0.896482238814758,-0.792471179311656,-0.893821172610422,-0.919322542815255,-0.929090887568931,-0.947222968505341,-0.941521326987315,-0.939564066437628,-0.886581473928985,-0.854622228969523}, {-0.157947246037774,-0.746922906626790,-0.755491702134737,-0.884559880628624,-0.926822302167037,-0.892694279049245,-0.880997501268835,-0.960323416980551,-0.931254655744972,-0.929470986910981,-0.910748517978109,-0.956965233219925,-0.892806218692971,-0.824323609583577}, {0.0143100845225228,-0.296971046115063,-0.756037633627588,-0.763254487870567,-0.853796813421072,-0.903855283273275,-0.932880202365020,-0.920300138069262,-0.937750780107648,-0.931802164909103,-0.938127043278968,-0.936648786420969,-0.897396787074019,-0.841443684643823}, {0.126406089554415,-0.553436242221630,-0.878529200298623,-0.811481080953497,-0.858597903016569,-0.858187238247150,-0.929425420879273,-0.898856593831970,-0.954706925783214,-0.905919892252836,-0.955668439276137,-0.938058984422267,-0.859062344153360,-0.781233364834173}, {-0.126055537585803,-0.545552869682677,-0.731986017810449,-0.886554196997008,-0.843484118770908,-0.933727925913333,-0.929494256217181,-0.949857908445841,-0.933022166519305,-0.955371701911967,-0.945336532486260,-0.958137376491658,-0.907276661798547,-0.823729901317309}, {0.0145717851732077,-0.533090337648005,-0.839692084485777,-0.895485971838661,-0.928205663722173,-0.925860301792440,-0.929578060336248,-0.960552985114785,-0.949903531077579,-0.934632681448160,-0.968632836944857,-0.950189964823872,-0.879233119136866,-0.785002723370355}, {-0.178891784381271,-0.399532717894635,-0.669385253177598,-0.727133395461031,-0.751773861739512,-0.852940528963974,-0.888222736607932,-0.865518628517857,-0.904806207358640,-0.896746617989777,-0.933151592845165,-0.903824933251927,-0.892900090292400,-0.850301284686282}, {0.339342751347667,-0.168658832220281,-0.701126807517342,-0.705317306144173,-0.766727960954685,-0.805058424745359,-0.908411767678567,-0.850936664511331,-0.938429790986132,-0.897160305989233,-0.966173046779846,-0.901648919962718,-0.923592942739536,-0.812147836977765}, {-0.165273390468733,-0.202594882499135,-0.685271591575949,-0.641279617027603,-0.810903427104329,-0.721277680480091,-0.878931073742658,-0.770692553521093,-0.915436309034622,-0.845750173546187,-0.920759281404426,-0.849039794164389,-0.883592352877391,-0.786060658867459}, {-0.174398260956424,-0.628964902893240,-0.851345814848046,-0.929633727074964,-0.912288496191548,-0.952393561588859,-0.957556620703674,-0.966293462428000,-0.967979236795410,-0.967761734377952,-0.968514139800528,-0.966000184471383,-0.873900925904829,-0.804602844673793}, {0.0912987881509080,-0.562348503567656,-0.544977227135293,-0.496953610164791,-0.665280698891481,-0.825516237438271,-0.764714736496212,-0.825266477368957,-0.778124049781793,-0.889578890948835,-0.860510945808230,-0.889449590530369,-0.899510852733607,-0.817813916256618}, {-0.159278240258134,-0.562350349373472,-0.672010009362750,-0.702971077603283,-0.791579089506330,-0.773580188614902,-0.868797839368800,-0.901404564649279,-0.883359902797464,-0.882538284811406,-0.902504051837194,-0.888858485690590,-0.907802404057984,-0.860390254926969}, {-0.115571783442574,-0.364989767126751,-0.715693202021139,-0.720794054845607,-0.734368283253484,-0.821024371768553,-0.864273592837283,-0.884637763632675,-0.905128610959545,-0.911052662127927,-0.934668657036883,-0.959498348008793,-0.948659165025090,-0.857302848890063}, {-0.119022287702128,-0.435263305220441,-0.674278713268148,-0.717147325691312,-0.786355896498330,-0.803730904718690,-0.918533634832367,-0.871846660926452,-0.930289987345790,-0.945177344298286,-0.948345725996483,-0.900852637961356,-0.927660822404464,-0.829129813555718}, {-0.243582392888872,-0.456156540815826,-0.882025256314901,-0.878826799838538,-0.875702181196543,-0.952037299706992,-0.922147237385639,-0.953195599137228,-0.988774455168753,-0.956906724025646,-0.990803722658199,-0.962527534612586,-0.917165742920258,-0.857395436225837}, {0.399888144165083,0.187596602167405,-0.571206951482556,-0.630021295932159,-0.732918080832751,-0.782042578842550,-0.884501484522094,-0.862443525574920,-0.907782413800503,-0.879582251780713,-0.875536974905776,-0.912451877893607,-0.922455195733535,-0.902359364047133}, {0.556284386426115,0.314036089555063,-0.519960698533138,-0.646049325780951,-0.741233326065650,-0.712137290320001,-0.795024298435714,-0.727879833200862,-0.853933696711804,-0.789936654005493,-0.895739890390449,-0.834987182855880,-0.931084212245965,-0.785223030050557}, {0.144327924856347,-0.00175945025183155,-0.764123925530958,-0.788116589181975,-0.815023410153421,-0.765757055388867,-0.819440340310641,-0.832834974075190,-0.889065353427949,-0.879626121154264,-0.955003504819721,-0.886941582940570,-0.951457072822665,-0.838292308039416}, {0.423517043395152,0.207103229391809,-0.537337037899986,-0.719082296323729,-0.730712289172267,-0.803970667494681,-0.776968241650566,-0.770243671002982,-0.870732435883177,-0.790184354464107,-0.849528556769068,-0.857417938148147,-0.914235935637580,-0.862839599386109}, {0.673400833910405,0.263687282928186,-0.468684958192597,-0.555004829882917,-0.597759466034923,-0.879943048249649,-0.759647494885421,-0.842498114781129,-0.795476315407791,-0.874613706944541,-0.825569610343889,-0.906032284945689,-0.959418030250979,-0.845363247476606}, {0.183271855620944,0.0211381514220783,-0.502683851137181,-0.636454841163429,-0.786437592022666,-0.805282205840683,-0.813868765137396,-0.807502478689115,-0.789136059855138,-0.787535977735564,-0.823588573107538,-0.833053461976117,-0.925414212506851,-0.879916140090418}, {0.295845138886807,-0.00395006804240183,-0.548896710154673,-0.673532260911150,-0.743809959983556,-0.766709087110313,-0.792579121413211,-0.812789970935862,-0.888809512385073,-0.865512371317576,-0.866483384552372,-0.910365914309237,-0.922859275559095,-0.805741791608307}, {0.382230322025496,-0.100544388585754,-0.288045792305930,-0.462878731933967,-0.733635653289924,-0.810774775566528,-0.784311635942323,-0.824278283823241,-0.837674642235770,-0.820294633519681,-0.930289366057359,-0.880333683094064,-0.914809932792345,-0.733615286641321}, {0.515086084868621,-0.0118463200641755,-0.681312282108688,-0.721728766135035,-0.896943193457623,-0.892492731672196,-0.900895034581712,-0.958202884169137,-0.890317876836114,-0.925894485203484,-0.887102514104963,-0.925150645540907,-0.951009285936294,-0.828633953324099}, {0.218939003616403,-0.219908089866804,-0.554543937993146,-0.697744593495449,-0.817644527591940,-0.815044931936388,-0.835611927342840,-0.863014952910201,-0.870015506961933,-0.924498109016286,-0.861738324469650,-0.888798266919434,-0.963003761418040,-0.752728018190114}, {0.379801716860667,0.0803934635748880,-0.348489273860588,-0.443364836987716,-0.686210071710231,-0.749012364568597,-0.868160795860281,-0.905931730794798,-0.827560530714372,-0.843130513494941,-0.874882850617447,-0.898079375435337,-0.958923408320119,-0.826200545619004}, {0.499909795739691,0.0624123264063490,-0.257162655088657,-0.474302401472459,-0.717398057495245,-0.792006768091720,-0.765814288840469,-0.795160131332406,-0.817978992797693,-0.871336925999567,-0.907076913192798,-0.851666096922091,-0.932313438565331,-0.778005802680850}, {0.269368264824844,0.0215786140194887,-0.476977706904142,-0.647680815543785,-0.700462589073132,-0.788128770460292,-0.835354852471012,-0.862240914525829,-0.860676230010876,-0.845117177334758,-0.912670838989494,-0.867405287746421,-0.973060275185485,-0.823505423592852}, {0.179006934566610,0.0585770863310706,-0.729516278647376,-0.736020711155540,-0.833340421570685,-0.863888272177564,-0.858242670121925,-0.908051906398737,-0.888570941463165,-0.900872325708206,-0.872080362074863,-0.886372519170446,-0.948853071328778,-0.841226487206630}, {0.255490817526987,0.0983271005342115,-0.506833291130341,-0.651349940443935,-0.756337911242788,-0.786870364249337,-0.799083430523079,-0.798476951216588,-0.930360503515967,-0.961047836742245,-0.950977568316625,-0.966198529200948,-0.944896563690946,-0.877086968426192}, {0.244696633497264,0.124742610239186,-0.00974949294211636,-0.527185835802341,-0.669863996792797,-0.660506846176490,-0.777882938739871,-0.741441779984189,-0.863181488070075,-0.798643774891844,-0.919225101825890,-0.838533769615936,-0.900125302373132,-0.798067298811813}, {0.154383004639343,-0.135587455441821,-0.474282157787074,-0.545456066636011,-0.647593724862076,-0.755085065020264,-0.761876996351167,-0.835705857964857,-0.887714636576169,-0.869061999970453,-0.882416185426200,-0.923607732584544,-0.959373168720827,-0.838276040824778}, {0.504849989457597,0.214254376963237,-0.486090671351638,-0.601583503221537,-0.696568826469689,-0.752801035520086,-0.811002254524322,-0.825807713677726,-0.833769846610573,-0.855476282988971,-0.883160491267595,-0.962853439329057,-0.902581371883451,-0.743974014417838}, {0.445145614467157,-0.0889240542286259,-0.251341749130795,-0.325574329282160,-0.661040242281816,-0.652164091731617,-0.813620922276726,-0.807485140580725,-0.856971911757818,-0.756592971519269,-0.864973897574650,-0.840655456848447,-0.920416268675231,-0.746278678613040}, {0.434793037813971,-0.0492388032158161,-0.365397844714972,-0.528993051702485,-0.685064834479619,-0.737413635953856,-0.799290876511762,-0.850728865215625,-0.825002878399477,-0.891118614677671,-0.870372516784281,-0.902812350877063,-0.922480285663246,-0.885180878798811}}; struct model { double parameters[5][1]; //={{1},{1},{1},{10},{0.150000000000000}}; double nr_class[1][1];//={ { new double(3) } }; /* number of classes, = 2 in regression/one class svm */ double totalSV[1][1];//= { { new double(38) } }; /* total #SV */ //double svm_node **SV=SVs= double rho[3][1];//= {{3.85250072056665},{1.98260813354295},{-9.85381777928213}}; double label[3][1];//= {{1},{2},{3}}; /* label of each class (label[k]) */ double sv_indices[38][1];//= {{1},{3},{11},{18},{20},{22},{25},{26},{29},{30},{42},{43},{45},{49},{50},{51},{55},{56},{60},{63},{65},{69},{70},{71},{72},{73},{75},{82},{83},{90},{94},{98},{102},{104},{107},{110},{113},{119}}; /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */ double probA[3][1];//:= {{-3.04020468884611},{-3.02985537320699},{-1.22838128162279}}; /* pariwise probability information */ double probB[3][1];//= {{-0.143832034298135},{-0.331592706939798},{-0.317353460209991}}; double sv_coef [38][2];//= { /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */ /* constants in decision functions (rho[k*(k-1)/2]) */ /* for classification only */ //double *label= [1;2;3]; /* label of each class (label[k]) */ double nSV[3][1];// ={{10},{17},{11}}; /* number of SVs for each class (nSV[k]) */ /* nSV[0] + nSV[1] + ... + nSV[k-1] = l */ double SVs[38][14];//={ /* XXX */ //int free_sv; /* 1 if svm_model is created by svm_load_model*/ /* 0 if svm_model is created by svm_train */ }; struct res { double predict_label1[3][1]; double precision1[60][1]; double prob_estimates_t1[60][3]; }; //(predict_label1,precision1,prob_estimates_t1)=res; res = SVMPredict(LabelS1,SStest1, model); return; } // -------------------------------------------------------- // actual multiplication algorithm template <typename T, int DIM1,int DIM2,int DIMa,int DIMb,int DIMc,int DIMd,int DIMe,int DIMf> void pavilion_hw(T LabelS1[DIM1][DIM2], T out predict_label1[DIMa][DIMb], T precision1[DIMc][DIMd],T prob_estimates_t1[DIMe][DIMf]) { // partition with half dimension size b/c BRAM has two ports #pragma HLS INLINE off #pragma HLS array_partition variable=LabelS1 dim=1 double SStest1[60][14]={ {-0.674090537952796,-0.967913560624215,-0.946607312926616,-0.949789832193271,-0.955656497278097,-0.938898706383114,-0.961972723505885,-0.943158564395126,-0.924258334652885,-0.987130021868515,-0.961224433510270,-0.979509038935985,-0.982841580894078,-0.968786461033008}, {-0.661420074510186,-0.953582957005305,-0.976667803306075,-0.852024795662031,-0.923684241437988,-0.908602156779947,-0.961480830721390,-0.943819721336063,-0.961645084746726,-0.975901524455997,-0.964617784738062,-0.985199969033792,-0.979709442173101,-0.949066533256159}, {-0.796228139367668,-0.761729500498894,-0.922254078572498,-0.835053436355116,-0.927209479313798,-0.955333905733235,-0.924794123637238,-0.959289492589635,-0.930944373099572,-0.938536988120820,-0.976986907828858,-0.949164123093526,-0.970737156105474,-0.947698751805312}, {-0.760572782759851,-0.831771980500142,-0.945585944378708,-0.908125723416015,-0.942297850129234,-0.938465946137737,-0.968103420998903,-0.977193895073700,-0.969825462569338,-0.981781833938995,-0.975225320029628,-0.966562487844290,-0.979385622636404,-0.969916779098183}, {-0.682062208785592,-0.901993333331962,-0.911439298246093,-0.995583382410982,-0.950515197199961,-0.939916724225237,-0.951278160425057,-0.951056228844938,-0.962461853366129,-0.977169060764356,-0.975068659001004,-1,-0.981383502203534,-0.960140644534363}, {-0.764153524047345,-0.782068868778498,-0.930585958249904,-0.899522666144618,-0.961023627518624,-0.905380199817116,-0.931424494746754,-0.911851616413864,-0.955101420749475,-0.978391738284877,-0.977733347990399,-0.957980914548860,-0.987159688960536,-0.958296510208874}, {-0.741980614232449,-0.708911988880729,-0.854515153854522,-0.844481728371788,-0.939444864580808,-0.921581100661191,-0.931215822177604,-0.924511727085001,-0.934842760732822,-0.944799003697996,-0.949046456708687,-0.969530645790348,-0.981557594662755,-0.966214670867448}, {-0.373792542593349,-0.520278392032748,-0.703829741405612,-0.811632538345339,-0.843860131190612,-0.867918184900834,-0.861425053147186,-0.921678622630629,-0.848207919776101,-0.952149873411277,-0.933584801186523,-0.956270474264593,-0.972592914683167,-0.953500986248213}, {-0.661229877813482,-0.663476191336492,-0.875946105955396,-0.813599831284167,-0.927616269612180,-0.947770900356774,-0.944605151964964,-0.949965011099178,-0.951558296918110,-0.959706992151603,-0.934147669647518,-0.959913517244191,-0.976789712492956,-0.957643754265247}, {-0.518554977026420,-0.602825724193184,-0.883181911007378,-0.866976656576412,-0.881653303448664,-0.834429119509439,-0.938506509068625,-0.792206968065827,-0.884123330616924,-0.917397025318987,-0.938798625979835,-0.925986787255497,-0.986438030341222,-0.961106108508390}, {-0.530140301878371,-0.883934580851869,-0.929208213377834,-0.981337861458516,-0.942509396789582,-0.918370801892608,-0.946368904151541,-0.968727717519249,-0.965415345904235,-0.992420840751352,-0.960290441628204,-0.987263434783806,-0.980777852550863,-0.961027269770681}, {-0.614065935999483,-0.643092868497660,-0.849915771303324,-0.923684372369931,-0.899325977629591,-0.940079152274114,-0.943645330258078,-0.966640084204524,-0.954120749867146,-0.992492691029133,-0.942907389517172,-0.986160598733704,-0.961571311375914,-0.944437607583134}, {-0.586207974039630,-0.655562550483140,-0.848822046603218,-0.828032863687348,-0.979545766504300,-0.954849783433112,-0.933180508531547,-0.901952187183437,-0.935767611336519,-0.947717892133932,-0.963983017763248,-0.936129485635805,-0.962853677964312,-0.939892729210301}, {-0.698562423991206,-0.828928876308795,-0.930529603172751,-0.973583105511949,-0.922780081115147,-0.950411689148607,-0.922089545604029,-0.902482494918462,-0.919077025971580,-0.938762961947185,-0.946683851734027,-0.943899220923818,-0.970751027958274,-0.962890874229321}, {-0.792352413710960,-0.846807561570503,-0.962463796461496,-0.938280210895608,-0.970676035685350,-0.950577966455638,-0.982653505409229,-0.964264032678215,-0.961530079570332,-0.984175640092749,-0.990259222509500,-0.957261271696928,-0.982531823910805,-0.975962025172037}, {-0.794841618144870,-0.829566960381545,-0.965210501288073,-0.932270663074643,-0.967556626906079,-0.946620792181095,-0.972488769216231,-0.962127134647906,-0.957393614634659,-0.981727556097064,-0.987503639619946,-0.953217441593240,-0.981375073603447,-0.973405792323495}, {-0.795020194095386,-0.806888733270744,-0.960369889000445,-0.915515767489692,-0.957828103336507,-0.939683270081732,-0.951942785566158,-0.957422184175696,-0.947345455495148,-0.975149131137862,-0.978221174145014,-0.944545398095925,-0.978853699190608,-0.968099161607423}, {-0.698839070385112,-0.854584769884228,-0.879448228263050,-0.898303458884004,-0.970834545509510,-0.997729382049760,-0.938912886553759,-0.968614408138659,-0.974484461898617,-0.985571704652593,-0.967328388395865,-0.972452715835938,-0.983660906019555,-0.963564537278949}, {-0.673302416738159,-0.879272351929407,-0.968223106643735,-0.972084171937861,-0.959896101364386,-0.961700573227355,-0.969790464510721,-0.954916739185306,-0.945985863949909,-0.975300691304921,-0.968364403832397,-0.977561535571141,-0.980589365529592,-0.954447517556441}, {-0.637045925923046,-0.710061083800907,-0.936826613792305,-0.859638718802183,-0.912322897550303,-0.981683944934587,-0.890113781116241,-0.913234535285272,-0.894395484221828,-0.922010414470385,-0.957815677576098,-0.941998783974119,-0.969077948566397,-0.955456380822368}, {-0.0464553899974760,-0.662925986991806,-0.833828153044336,-0.929089542429105,-0.837654390767010,-0.945247889228093,-0.957871446601941,-0.960270138903518,-0.965707812000886,-0.958450094695355,-0.968893174805499,-0.975892896458684,-0.882317284020699,-0.784076824928733}, {0.168450404584060,-0.438611610872580,-0.739305838353202,-0.753469051869701,-0.872053346050208,-0.902328666401733,-0.875296732403390,-0.891944157498292,-0.875131611862177,-0.876570070893988,-0.916492079359415,-0.892474870559755,-0.880173712101710,-0.818840278283343}, {0.214956796965889,-0.463100108992908,-0.795731268208176,-0.892232485332773,-0.796178277611433,-0.876064110052591,-0.917887824420658,-0.933514902536318,-0.906487752914575,-0.906161558178618,-0.963182144556198,-0.927398731670949,-0.880132272769419,-0.776628206791729}, {-0.0355148259693545,-0.103832635363957,-0.642826483479963,-0.675170193621003,-0.726663088806811,-0.743780040787059,-0.831794948409108,-0.812381272649148,-0.818233308995815,-0.936764748241986,-0.927791786953338,-0.946337910236447,-0.865122830148352,-0.803850525738294}, {-0.0375370422771995,-0.714446611429583,-0.817139932455997,-0.861863433965497,-0.801308409717709,-0.912671943149429,-0.902056680948667,-0.924358383893747,-0.930365403512554,-0.933505439717915,-0.907344668404472,-0.962516466348439,-0.888667439601752,-0.759379503762919}, {-0.0996422526625035,-0.569498829531724,-0.785394421709639,-0.775105653598853,-0.896482238814758,-0.792471179311656,-0.893821172610422,-0.919322542815255,-0.929090887568931,-0.947222968505341,-0.941521326987315,-0.939564066437628,-0.886581473928985,-0.854622228969523}, {-0.157947246037774,-0.746922906626790,-0.755491702134737,-0.884559880628624,-0.926822302167037,-0.892694279049245,-0.880997501268835,-0.960323416980551,-0.931254655744972,-0.929470986910981,-0.910748517978109,-0.956965233219925,-0.892806218692971,-0.824323609583577}, {0.0143100845225228,-0.296971046115063,-0.756037633627588,-0.763254487870567,-0.853796813421072,-0.903855283273275,-0.932880202365020,-0.920300138069262,-0.937750780107648,-0.931802164909103,-0.938127043278968,-0.936648786420969,-0.897396787074019,-0.841443684643823}, {0.126406089554415,-0.553436242221630,-0.878529200298623,-0.811481080953497,-0.858597903016569,-0.858187238247150,-0.929425420879273,-0.898856593831970,-0.954706925783214,-0.905919892252836,-0.955668439276137,-0.938058984422267,-0.859062344153360,-0.781233364834173}, {-0.126055537585803,-0.545552869682677,-0.731986017810449,-0.886554196997008,-0.843484118770908,-0.933727925913333,-0.929494256217181,-0.949857908445841,-0.933022166519305,-0.955371701911967,-0.945336532486260,-0.958137376491658,-0.907276661798547,-0.823729901317309}, {0.0145717851732077,-0.533090337648005,-0.839692084485777,-0.895485971838661,-0.928205663722173,-0.925860301792440,-0.929578060336248,-0.960552985114785,-0.949903531077579,-0.934632681448160,-0.968632836944857,-0.950189964823872,-0.879233119136866,-0.785002723370355}, {-0.178891784381271,-0.399532717894635,-0.669385253177598,-0.727133395461031,-0.751773861739512,-0.852940528963974,-0.888222736607932,-0.865518628517857,-0.904806207358640,-0.896746617989777,-0.933151592845165,-0.903824933251927,-0.892900090292400,-0.850301284686282}, {0.339342751347667,-0.168658832220281,-0.701126807517342,-0.705317306144173,-0.766727960954685,-0.805058424745359,-0.908411767678567,-0.850936664511331,-0.938429790986132,-0.897160305989233,-0.966173046779846,-0.901648919962718,-0.923592942739536,-0.812147836977765}, {-0.165273390468733,-0.202594882499135,-0.685271591575949,-0.641279617027603,-0.810903427104329,-0.721277680480091,-0.878931073742658,-0.770692553521093,-0.915436309034622,-0.845750173546187,-0.920759281404426,-0.849039794164389,-0.883592352877391,-0.786060658867459}, {-0.174398260956424,-0.628964902893240,-0.851345814848046,-0.929633727074964,-0.912288496191548,-0.952393561588859,-0.957556620703674,-0.966293462428000,-0.967979236795410,-0.967761734377952,-0.968514139800528,-0.966000184471383,-0.873900925904829,-0.804602844673793}, {0.0912987881509080,-0.562348503567656,-0.544977227135293,-0.496953610164791,-0.665280698891481,-0.825516237438271,-0.764714736496212,-0.825266477368957,-0.778124049781793,-0.889578890948835,-0.860510945808230,-0.889449590530369,-0.899510852733607,-0.817813916256618}, {-0.159278240258134,-0.562350349373472,-0.672010009362750,-0.702971077603283,-0.791579089506330,-0.773580188614902,-0.868797839368800,-0.901404564649279,-0.883359902797464,-0.882538284811406,-0.902504051837194,-0.888858485690590,-0.907802404057984,-0.860390254926969}, {-0.115571783442574,-0.364989767126751,-0.715693202021139,-0.720794054845607,-0.734368283253484,-0.821024371768553,-0.864273592837283,-0.884637763632675,-0.905128610959545,-0.911052662127927,-0.934668657036883,-0.959498348008793,-0.948659165025090,-0.857302848890063}, {-0.119022287702128,-0.435263305220441,-0.674278713268148,-0.717147325691312,-0.786355896498330,-0.803730904718690,-0.918533634832367,-0.871846660926452,-0.930289987345790,-0.945177344298286,-0.948345725996483,-0.900852637961356,-0.927660822404464,-0.829129813555718}, {-0.243582392888872,-0.456156540815826,-0.882025256314901,-0.878826799838538,-0.875702181196543,-0.952037299706992,-0.922147237385639,-0.953195599137228,-0.988774455168753,-0.956906724025646,-0.990803722658199,-0.962527534612586,-0.917165742920258,-0.857395436225837}, {0.399888144165083,0.187596602167405,-0.571206951482556,-0.630021295932159,-0.732918080832751,-0.782042578842550,-0.884501484522094,-0.862443525574920,-0.907782413800503,-0.879582251780713,-0.875536974905776,-0.912451877893607,-0.922455195733535,-0.902359364047133}, {0.556284386426115,0.314036089555063,-0.519960698533138,-0.646049325780951,-0.741233326065650,-0.712137290320001,-0.795024298435714,-0.727879833200862,-0.853933696711804,-0.789936654005493,-0.895739890390449,-0.834987182855880,-0.931084212245965,-0.785223030050557}, {0.144327924856347,-0.00175945025183155,-0.764123925530958,-0.788116589181975,-0.815023410153421,-0.765757055388867,-0.819440340310641,-0.832834974075190,-0.889065353427949,-0.879626121154264,-0.955003504819721,-0.886941582940570,-0.951457072822665,-0.838292308039416}, {0.423517043395152,0.207103229391809,-0.537337037899986,-0.719082296323729,-0.730712289172267,-0.803970667494681,-0.776968241650566,-0.770243671002982,-0.870732435883177,-0.790184354464107,-0.849528556769068,-0.857417938148147,-0.914235935637580,-0.862839599386109}, {0.673400833910405,0.263687282928186,-0.468684958192597,-0.555004829882917,-0.597759466034923,-0.879943048249649,-0.759647494885421,-0.842498114781129,-0.795476315407791,-0.874613706944541,-0.825569610343889,-0.906032284945689,-0.959418030250979,-0.845363247476606}, {0.183271855620944,0.0211381514220783,-0.502683851137181,-0.636454841163429,-0.786437592022666,-0.805282205840683,-0.813868765137396,-0.807502478689115,-0.789136059855138,-0.787535977735564,-0.823588573107538,-0.833053461976117,-0.925414212506851,-0.879916140090418}, {0.295845138886807,-0.00395006804240183,-0.548896710154673,-0.673532260911150,-0.743809959983556,-0.766709087110313,-0.792579121413211,-0.812789970935862,-0.888809512385073,-0.865512371317576,-0.866483384552372,-0.910365914309237,-0.922859275559095,-0.805741791608307}, {0.382230322025496,-0.100544388585754,-0.288045792305930,-0.462878731933967,-0.733635653289924,-0.810774775566528,-0.784311635942323,-0.824278283823241,-0.837674642235770,-0.820294633519681,-0.930289366057359,-0.880333683094064,-0.914809932792345,-0.733615286641321}, {0.515086084868621,-0.0118463200641755,-0.681312282108688,-0.721728766135035,-0.896943193457623,-0.892492731672196,-0.900895034581712,-0.958202884169137,-0.890317876836114,-0.925894485203484,-0.887102514104963,-0.925150645540907,-0.951009285936294,-0.828633953324099}, {0.218939003616403,-0.219908089866804,-0.554543937993146,-0.697744593495449,-0.817644527591940,-0.815044931936388,-0.835611927342840,-0.863014952910201,-0.870015506961933,-0.924498109016286,-0.861738324469650,-0.888798266919434,-0.963003761418040,-0.752728018190114}, {0.379801716860667,0.0803934635748880,-0.348489273860588,-0.443364836987716,-0.686210071710231,-0.749012364568597,-0.868160795860281,-0.905931730794798,-0.827560530714372,-0.843130513494941,-0.874882850617447,-0.898079375435337,-0.958923408320119,-0.826200545619004}, {0.499909795739691,0.0624123264063490,-0.257162655088657,-0.474302401472459,-0.717398057495245,-0.792006768091720,-0.765814288840469,-0.795160131332406,-0.817978992797693,-0.871336925999567,-0.907076913192798,-0.851666096922091,-0.932313438565331,-0.778005802680850}, {0.269368264824844,0.0215786140194887,-0.476977706904142,-0.647680815543785,-0.700462589073132,-0.788128770460292,-0.835354852471012,-0.862240914525829,-0.860676230010876,-0.845117177334758,-0.912670838989494,-0.867405287746421,-0.973060275185485,-0.823505423592852}, {0.179006934566610,0.0585770863310706,-0.729516278647376,-0.736020711155540,-0.833340421570685,-0.863888272177564,-0.858242670121925,-0.908051906398737,-0.888570941463165,-0.900872325708206,-0.872080362074863,-0.886372519170446,-0.948853071328778,-0.841226487206630}, {0.255490817526987,0.0983271005342115,-0.506833291130341,-0.651349940443935,-0.756337911242788,-0.786870364249337,-0.799083430523079,-0.798476951216588,-0.930360503515967,-0.961047836742245,-0.950977568316625,-0.966198529200948,-0.944896563690946,-0.877086968426192}, {0.244696633497264,0.124742610239186,-0.00974949294211636,-0.527185835802341,-0.669863996792797,-0.660506846176490,-0.777882938739871,-0.741441779984189,-0.863181488070075,-0.798643774891844,-0.919225101825890,-0.838533769615936,-0.900125302373132,-0.798067298811813}, {0.154383004639343,-0.135587455441821,-0.474282157787074,-0.545456066636011,-0.647593724862076,-0.755085065020264,-0.761876996351167,-0.835705857964857,-0.887714636576169,-0.869061999970453,-0.882416185426200,-0.923607732584544,-0.959373168720827,-0.838276040824778}, {0.504849989457597,0.214254376963237,-0.486090671351638,-0.601583503221537,-0.696568826469689,-0.752801035520086,-0.811002254524322,-0.825807713677726,-0.833769846610573,-0.855476282988971,-0.883160491267595,-0.962853439329057,-0.902581371883451,-0.743974014417838}, {0.445145614467157,-0.0889240542286259,-0.251341749130795,-0.325574329282160,-0.661040242281816,-0.652164091731617,-0.813620922276726,-0.807485140580725,-0.856971911757818,-0.756592971519269,-0.864973897574650,-0.840655456848447,-0.920416268675231,-0.746278678613040}, {0.434793037813971,-0.0492388032158161,-0.365397844714972,-0.528993051702485,-0.685064834479619,-0.737413635953856,-0.799290876511762,-0.850728865215625,-0.825002878399477,-0.891118614677671,-0.870372516784281,-0.902812350877063,-0.922480285663246,-0.885180878798811}}; struct model { double parameters[5][1] ;//={{1},{1},{1},{10},{0.150000000000000}}; double nr_class[1][1];//={3}; /* number of classes, = 2 in regression/one class svm */ double totalSV[1][1];//;;= {38}; /* total #SV */ //double svm_node **SV=SVs= double rho[3][1];//= { double label[3][1];//= {{1},{2},{3}}; /* label of each class (label[k]) */ double sv_indices[38][1];//= {{1},{3},{11},{18},{20},{22},{25},{26},{29},{30},{42},{43},{45},{49},{50},{51},{55},{56},{60},{63},{65},{69},{70},{71},{72},{73},{75},{82},{83},{90},{94},{98},{102},{104},{107},{110},{113},{119}}; /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */ double probA[3][1];//= {{-3.04020468884611},{-3.02985537320699},{-1.22838128162279}}; /* pariwise probability information */ double probB[3][1];//= {{-0.143832034298135},{-0.331592706939798},{-0.317353460209991}}; double sv_coef [38][2];//= { /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */ /* constants in decision functions (rho[k*(k-1)/2]) */ /* for classification only */ //double *label= [1;2;3]; /* label of each class (label[k]) */ double nSV[3][1] ;//={{10},{17},{11}}; /* number of SVs for each class (nSV[k]) */ /* nSV[0] + nSV[1] + ... + nSV[k-1] = l */ double SVs[38][14];//={ /* XXX */ //int free_sv; /* 1 if svm_model is created by svm_load_model*/ /* 0 if svm_model is created by svm_train */ ; //[predict_label1,precision1,prob_estimates_t1]=SVMPredict(LabelS1,SStest1, model); struct res { double predict_label1[3][1]; double precision1[60][1]; double prob_estimates_t1[60][3]; }; //(predict_label1,precision1,prob_estimates_t1)=res; res = SVMPredict(LabelS1,SStest1, model); return; } ///////////////////////////////// template <typename T, int U, int TI, int TD> inline T pop_stream(ap_axiu <sizeof(T)*8,U,TI,TD> const &e) { #pragma HLS INLINE off // does not work b/c of: // unsupported pointer reinterpretation //T ret = *reinterpret_cast<T const *> (&e.data); // instead use a union assert(sizeof(T) == sizeof(int)); union { int ival; T oval; } converter; converter.ival = e.data; T ret = converter.oval; volatile ap_uint<sizeof(T)> strb = e.strb; volatile ap_uint<sizeof(T)> keep = e.keep; volatile ap_uint<U> user = e.user; volatile ap_uint<1> last = e.last; volatile ap_uint<TI> id = e.id; volatile ap_uint<TD> dest = e.dest; return ret; } template <typename T, int U, int TI, int TD>; inline ap_axiu <sizeof(T)*8,U,TI,TD> push_stream(T const &v, bool last = false) { #pragma HLS INLINE off ap_axiu<sizeof(T)*8,U,TI,TD> e; // use a union, b/c reinterpret_cast not supported assert(sizeof(T) == sizeof(int)); union { int oval; T ival; } converter; converter.ival = v; e.data = converter.oval; // set it to sizeof(T) ones e.strb = -1; e.keep = 15; //e.strb; e.user = 0; e.last = last ? 1 : 0; e.id = 0; e.dest = 0; return e; } /////////////////////////////////////////////////// template <typename T, int DIM1,int DIM2,int DIMa,int DIMb,int DIMc,int DIMd,int DIMe,int DIMf, int SIZE, int U, int TI, int TD> void dut_mmult_accel_core ( AXI_VAL in_stream[SIZE], AXI_VAL out_stream[3*SIZE], //volatile ap_uint<1> *hw_trig) volatile ap_uint<1> *predict_label1_hw_trig; volatile ap_uint<1> *precision1_hw_trig; volatile ap_uint<1> *prob_estimates_t1_hw; { // Map ports to Vivado HLS interfaces #pragma HLS INTERFACE ap_fifo port=in_stream #pragma HLS INTERFACE ap_fifo port=out_stream // Map HLS ports to AXI interfaces #pragma HLS RESOURCE variable=in_stream core=AXIS metadata="-bus_bundle INPUT_STREAM" #pragma HLS RESOURCE variable=out_stream core=AXIS metadata="-bus_bundle OUTPUT_STREAM" #pragma HLS RESOURCE variable=return core=AXI4LiteS metadata="-bus_bundle CONTROL_BUS" ap_uint<1> logic_zero = 0; ap_uint<1> logic_one = 1; T LabelS [DIM1][DIM2]; T predict_label1[DIMa][DIMb]; T precision1[DIMc][DIMd]; T prob_estimates_t1[DIMe][DIMf]; *predict_label1_trig = logic_zero; *precision1_trig = logic_zero; *prob_estimates_t1_trig = logic_zero; assert(sizeof(T)*8 == 32); *predict_label1_trig = logic_one; *precision1_trig = logic_one; *prob_estimates_t1_trig = logic_one; // stream in first matrix for(int i=0; i<DIM1; i++) for(int j=0; j<DIM2; j++) {#pragma HLS PIPELINE II=1 int k = i*DIM+j; //a[i][j] = pop_stream<T,1,1,1>(in_stream[k]); LabelS[i][j] = pop_stream<T,U,TI,TD>(in_stream[k]); } // do multiplicationpredict //matrix_multiply_hw<T, DIM>(a,b,out); pavilion_hw < T, DIM1, DIM2, DIMa, DIMb, DIMc, DIMd, DIMe, DIMf>(LabelS1[, out predict_label1, precision1, prob_estimates_t1); // stream out1 result matrix for(int i=0; i<DIMa; i++) for(int j=0; j<DIMb; j++) {#pragma HLS PIPELINE II=1 int k = i*DIM+j; //out_stream[k] = push_stream<T,1,1,1>(out[i][j],k == (SIZE-1)); out_stream[k] = push_stream<T,U,TI,TD>(out[i][j],k == (SIZE-1)); } *predict_label1_trig = logic_zero; //*hw_trig = false;//*(bool *) hw_trig = false; return ; // stream out2 result matrix for(int i=0; i<DIMc; i++) for(int j=0; j<DIMd; j++) {#pragma HLS PIPELINE II=1 int k = i*DIM+j; //out_stream[k] = push_stream<T,1,1,1>(out[i][j],k == (SIZE-1)); out_stream[k] = push_stream<T,U,TI,TD>(out[i][j],k == (SIZE-2)); } *precision1_trig = logic_zero; //*hw_trig = false;//*(bool *) hw_trig = false; return ; // stream out3 result matrix for(int i=0; i<DIMe; i++) for(int j=0; j<DIMf; j++) {#pragma HLS PIPELINE II=1 int k = i*DIM+j; //out_stream[k] = push_stream<T,1,1,1>(out[i][j],k == (SIZE-1)); out_stream[k] = push_stream<T,U,TI,TD>(out[i][j],k == (SIZE-3)); } *prob_estimates_t1_trig = logic_zero; //*hw_trig = false;//*(bool *) hw_trig = false; return ;}/////////////////////// should be template parameters at top level function#include <ap_int.h>template <typename T, int DIM1,int DIM2,int DIMa,int DIMb,int DIMc,int DIMd,int DIMe,int DIMf, int SIZE, int U, int TI, int TD>int test_pavilion(void){ int i,j, err; T LabelS [DIM1][DIM2]; T predict_label1_sw[DIMa][DIMb]; T precision1_sw[DIMc][DIMd]; T prob_estimates_t1_sw[DIMe][DIMf]; T predict_label1_hw[DIMa][DIMb]; T precision1_hw[DIMc][DIMd]; T prob_estimates_t1_hw[DIMe][DIMf]; /** Matrix Initiation */ for(i = 0; i<DIM1; i++) for(j = 0; j<DIM2; j++) LabelS[i][j] = (float)(i+j); /** End of Initiation */#ifdef DB_DEBUGo printf("DEBUGGING AXI4 STREAMING DATA TYPES!\r\n"); // prepare data for the DUT AXI_VAL inp_stream[SIZE]; AXI_VAL out_stream[3*SIZE]; assert(sizeof(T)*8 == 32); // stream in the first input matrix for(int i=0; i<DIM1; i++) for(int j=0; j<DIM2; j++) { int k = i*DIM+j; inp_stream[k] = push_stream<T,U,TI,TD>(LabelS[i][j],0); } } //call the DUT ap_uint<1> predict_label1_hw_trig; ap_uint<1> precision1_hw_trig; ap_uint<1> prob_estimates_t1_hw; //dut_mmult_accel_core<T, DIM, SIZE, U, TI, TD>(inp_stream, out_stream, &hw_trig); mmult_accel_core (inp_stream, out_stream,&predict_label1_hw_trig,&precision1_hw_trig,&prob_estimates_t1_hw); // extract the output matrix 1 from the out stream for(int i=0; i<DIMa; i++) for(int j=0; j<DIMb; j++) { int k = i*DIM+j; predict_label1_hw[i][j] = pop_stream<T,U,TI,TD>(out_stream[k]); } // extract the output matrix 2 from the out stream for(int i=0; i<DIMc; i++) for(int j=0; j<DIMd; j++) { int k = i*DIM+j; precision1_hw[i][j] = pop_stream<T,U,TI,TD>(out_stream[k]); } // extract the output matrix 3 from the out stream for(int i=0; i<DIMe; i++) for(int j=0; j<DIMf; j++) { int k = i*DIM+j; prob_estimates_t1_hw[i][j] = pop_stream<T,U,TI,TD>(out_stream[k]); }#else printf("NORMAL MODE\r\n"); pavilion_hw<T, DIM1, DIM2, DIMa, DIMb, DIMc, DIMd, DIMe, DIMf>(LabelS, predict_label1_hw,precision1_hw,prob_estimates_t1_hw);#endif /* reference Matrix Multiplication */ pavilion_ref<T, DIM1, DIM2, DIMa, DIMb, DIMc, DIMd, DIMe, DIMf>(LabelS, predict_label1_sw,precision1_sw,prob_estimates_t1_sw); /** Matrix 1 comparison */ err = 0; for (i = 0; (i<DIMa && !err); i++) for (j = 0; (j<DIMb && !err); j++) if (predict_label1_sw[i][j] != predict_label1_hw[i][j]) err++; if (err == 0) printf("Matrixes 1 identical ... Test successful!\r\n"); else printf("Test 1 failed!\r\n"); return err; /** Matrix 2 comparison */ err = 0; for (i = 0; (i<DIMc && !err); i++) for (j = 0; (j<DIMd && !err); j++) if (precision1_sw[i][j] != precision1_hw[i][j]) err++; if (err == 0) printf("Matrixes 2 identical ... Test successful!\r\n"); else printf("Test 2 failed!\r\n"); return err; /** Matrix 3 comparison */ err = 0; for (i = 0; (i<DIMe && !err); i++) for (j = 0; (j<DIMf && !err); j++) if (prob_estimates_t1_sw[i][j] != prob_estimates_t1_hw[i][j]) err++; if (err == 0) printf("Matrixes 3 identical ... Test successful!\r\n"); else printf("Test 3 failed!\r\n"); return err;}////////////////////////// THIS IS THE TOP LEVEL DESIGN THAT WILL BE SYNTHESIZED#define MCR_SIZE 1024void mmult_accel_core(AXI_VAL in_stream[MCR_SIZE],AXI_VAL out_stream[3 * MCR_SIZE],volatile ap_uint<1>* predict_label1_hw_trig,volatile ap_uint<1>* precision1_hw_trig,volatile ap_uint<1>* prob_estimates_t1_hw_trig){ // Map ports to Vivado HLS interfaces #pragma HLS INTERFACE ap_fifo port=in_stream #pragma HLS INTERFACE ap_fifo port=out_stream // Map HLS ports to AXI interfaces #pragma HLS RESOURCE variable=in_stream core=AXIS metadata="-bus_bundle INPUT_STREAM" #pragma HLS RESOURCE variable=out_stream core=AXIS metadata="-bus_bundle OUTPUT_STREAM" #pragma HLS RESOURCE variable=return core=AXI4LiteS metadata="-bus_bundle CONTROL_BUS" #pragma HLS INTERFACE ap_none register port=predict_label1_hw_trig #pragma HLS INTERFACE ap_none register port=precision1_hw_trig #pragma HLS INTERFACE ap_none register port=prob_estimates_t1_hw_trig dut_mmult_accel_core <float, 60, 1*60, 4, 5, 5>(in_stream, out_stream, predict_label1_hw_trig,precision1_hw_trig,prob_estimates_t1_hw_trig); return;}/////////////int main(const double LabelS[60]){ typedef float T; int const DIM1 = 1; int const DIM2 = 60; int const SIZE = DIM1*DIM2; int ret_val = 0; ret_val = test_pavilion<T, DIM1, DIM2, DIMa, DIMb, DIMc, DIMd, DIMe, DIMf, SIZE, 4,5,5>;pavilion_terminate();//main_pavilion();pavilion_initialize(); return ret_val;};