-#ifdef TEST
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int main(void){
- LLSModel m;
- int i, order;
-
- av_init_lls(&m, 3);
-
- for(i=0; i<100; i++){
- double var[4];
- double eval, variance;
-#if 0
- var[1] = rand() / (double)RAND_MAX;
- var[2] = rand() / (double)RAND_MAX;
- var[3] = rand() / (double)RAND_MAX;
-
- var[2]= var[1] + var[3]/2;
-
- var[0] = var[1] + var[2] + var[3] + var[1]*var[2]/100;
-#else
- var[0] = (rand() / (double)RAND_MAX - 0.5)*2;
- var[1] = var[0] + rand() / (double)RAND_MAX - 0.5;
- var[2] = var[1] + rand() / (double)RAND_MAX - 0.5;
- var[3] = var[2] + rand() / (double)RAND_MAX - 0.5;
-#endif
- av_update_lls(&m, var, 0.99);
- av_solve_lls(&m, 0.001, 0);
- for(order=0; order<3; order++){
- eval= av_evaluate_lls(&m, var+1, order);
- av_log(NULL, AV_LOG_DEBUG, "real:%f order:%d pred:%f var:%f coeffs:%f %f %f\n",
- var[0], order, eval, sqrt(m.variance[order] / (i+1)),
- m.coeff[order][0], m.coeff[order][1], m.coeff[order][2]);
- }
- }
- return 0;
+av_cold void avpriv_init_lls(LLSModel *m, int indep_count)
+{
+ memset(m, 0, sizeof(LLSModel));
+ m->indep_count = indep_count;
+ m->update_lls = update_lls;
+ m->evaluate_lls = evaluate_lls;
+ if (ARCH_X86)
+ ff_init_lls_x86(m);