diff options
| author | Gertjan van den Burg <burg@ese.eur.nl> | 2016-10-06 16:45:00 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <burg@ese.eur.nl> | 2016-10-06 16:45:00 +0200 |
| commit | f3f55565711893004df14cc4c6ffd86f0b736f2f (patch) | |
| tree | 814e51de8a47ee01ff10620552cb1660577f02c7 /include/gensvm_base.h | |
| parent | documentation fixes (diff) | |
| download | gensvm-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.h | 31 |
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 |
