/* Constructor */ modeler_t (DataFrame& A, const RandomAccessDoubleContainer& y, RandomAccessDoubleContainer& x, RandomAccessKPIContainter& selected, SetContainer& prohibit, SetContainer& forced, const RandomAccessDoubleContainer& kpi_weights, double& variance, double& intercept, const int& target, const StopPredicate& stop, const IntervalMapper& interval_mapper, const Factorizer& factorizer, const double lambda, const int M, const int N, const int MAX_ITERS, const int debug #if USE_PFUNC ,taskmgr* global_taskmgr #endif ) : A(A),y(y),x(x),selected(selected), prohibit(prohibit),forced(forced),kpi_weights(kpi_weights), variance(variance),intercept(intercept),target(target), stop(stop),interval_mapper(interval_mapper),factorizer(factorizer), lambda(lambda), M(M), N(N), MAX_ITERS(MAX_ITERS), debug(debug), filter (prohibit, forced, selected), my_space (A.begin(), A.end()), test_A (M*N*MAX_ITERS), r (M), y_inv (M) #if USE_PFUNC ,global_taskmgr (global_taskmgr) #endif { /* Set up the transmission channel */ MPI_Type_contiguous (2, MPI_DOUBLE, &MPI_Kpi_pair); MPI_Type_commit (&MPI_Kpi_pair); MPI_Op_create (kpi_pair_max,true,&MPI_KPI_MAX_OP); MPI_Op_create (kpi_pair_min,true,&MPI_KPI_MIN_OP); /* Compute the inverse of y */ ConfidenceFunctor::pseudo_inverse(y, y_inv, M); }