/*!
  \file
  \brief Bayesian Filtering for generalized autoregressive (ARX) model
  \author Vaclav Smidl.

  -----------------------------------
  BDM++ - C++ library for Bayesian Decision Making under Uncertainty

  Using IT++ for numerical operations
  -----------------------------------
*/

#ifndef STRAUX_H
#define STRAUX_H

namespace bdm {


struct str_aux {
    vec d0;
    double nu0;
    mat L0;
    mat L;
    vec d;
    double nu;
    ivec strL;                 // Current structure of L and d
    ivec strRgr;               // Structure elements currently inside regressor (after regressand)
    ivec strMis;               // structure elements, that are currently outside regressor (before regressand)
    int posit1;                // regressand position
    int nbits; 				   // number of bits available in double
    bvec bitstr;
    double loglik;         	// loglikelihood
};



struct str_statistics {
    long long int allstrs;
    int nrand;
    int unique;
    int to;
    double cputime_seconds;
    double itemspeed;
    int muto;
    ivec mutos;
    vec maxmutos;
};


//! Replication of Ludvik Tesar original straux1 from mixtools straux1
ivec straux1 ( ldmat Ld, double nu, ldmat Ld0, double nu0, ivec belief, int nbest, int max_nrep, double lambda, int order_k, Array<str_aux> &rgrsout );

}

#endif // STRAUX_H


