aboutsummaryrefslogtreecommitdiff
path: root/include/gensvm_base.h
diff options
context:
space:
mode:
authorGertjan van den Burg <burg@ese.eur.nl>2016-10-06 16:45:00 +0200
committerGertjan van den Burg <burg@ese.eur.nl>2016-10-06 16:45:00 +0200
commitf3f55565711893004df14cc4c6ffd86f0b736f2f (patch)
tree814e51de8a47ee01ff10620552cb1660577f02c7 /include/gensvm_base.h
parentdocumentation fixes (diff)
downloadgensvm-f3f55565711893004df14cc4c6ffd86f0b736f2f.tar.gz
gensvm-f3f55565711893004df14cc4c6ffd86f0b736f2f.zip
Switch to using dsyrk instead of dsyr for speed.
Also added a workspace (GenWork) structure for to hold working matrices for the gensvm_get_update() and gensvm_get_loss() functions
Diffstat (limited to 'include/gensvm_base.h')
-rw-r--r--include/gensvm_base.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/gensvm_base.h b/include/gensvm_base.h
index efeaa4d..03b7ffa 100644
--- a/include/gensvm_base.h
+++ b/include/gensvm_base.h
@@ -99,12 +99,43 @@ struct GenModel {
///< array of kernel parameters, size depends on kernel type
};
+/**
+ * @brief A structure to hold the GenSVM workspace
+ *
+ */
+struct GenWork {
+ long n;
+ ///< number of instances for the workspace
+ long m;
+ ///< number of features for the workspace
+ long K;
+ ///< number of classes for the workspace
+
+ double *LZ;
+ ///< n x (m+1) working matrix for the Z'*A*Z calculation
+ double *ZB;
+ ///< (m+1) x (K-1) working matrix for the Z'*B calculation
+ double *ZBc;
+ ///< (K-1) x (m+1) working matrix for the Z'*B calculation
+ double *ZAZ;
+ ///< (m+1) x (m+1) working matrix for the Z'*A*Z calculation
+ double *ZV;
+ ///< n x (K-1) working matrix for the Z * V calculation
+ double *beta;
+ ///< K-1 working vector for a row of the B matrix
+};
+
// function declarations
struct GenModel *gensvm_init_model();
void gensvm_allocate_model(struct GenModel *model);
void gensvm_reallocate_model(struct GenModel *model, long n, long m);
void gensvm_free_model(struct GenModel *model);
+
struct GenData *gensvm_init_data();
void gensvm_free_data(struct GenData *data);
+struct GenWork *gensvm_init_work(struct GenModel *model);
+void gensvm_free_work(struct GenWork *work);
+void gensvm_reset_work(struct GenWork *work);
+
#endif