@@ -7,31 +7,30 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma,
7
7
double bound,
8
8
int maxiter,
9
9
Rcpp::NumericVector theta,
10
- Rcpp::NumericVector Sigma_theta) {
10
+ Rcpp::NumericVector gradient,
11
+ Rcpp::IntegerVector ever_active,
12
+ Rcpp::IntegerVector nactive
13
+ ) {
11
14
12
15
int nrow = Sigma.nrow (); // number of features
13
16
14
17
// Active set
15
18
16
19
int irow;
17
- Rcpp::IntegerVector nactive (1 ); // An array so we can easily modify it
18
- Rcpp::IntegerVector ever_active (1 );
19
- int *ever_active_p = ever_active.begin ();
20
- *ever_active_p = row;
21
20
22
21
// Extract the diagonal
23
22
Rcpp::NumericVector Sigma_diag (nrow);
24
- double *sigma_p = Sigma_diag.begin ();
23
+ double *sigma_diag_p = Sigma_diag.begin ();
25
24
26
25
for (irow=0 ; irow<nrow; irow++) {
27
- sigma_p [irow] = Sigma (irow, irow);
26
+ sigma_diag_p [irow] = Sigma (irow, irow);
28
27
}
29
28
30
29
// Now call our C function
31
30
32
31
int iter = find_one_row_ ((double *) Sigma.begin (),
33
32
(double *) Sigma_diag.begin (),
34
- (double *) Sigma_theta .begin (),
33
+ (double *) gradient .begin (),
35
34
(int *) ever_active.begin (),
36
35
(int *) nactive.begin (),
37
36
nrow,
@@ -43,14 +42,16 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma,
43
42
// Check whether feasible
44
43
45
44
int kkt_check = check_KKT (theta.begin (),
46
- Sigma_theta .begin (),
45
+ gradient .begin (),
47
46
nrow,
48
47
row,
49
48
bound);
50
49
51
50
return (Rcpp::List::create (Rcpp::Named (" soln" ) = theta,
52
- Rcpp::Named (" Sigma_soln " ) = Sigma_theta ,
51
+ Rcpp::Named (" gradient " ) = gradient ,
53
52
Rcpp::Named (" iter" ) = iter,
54
- Rcpp::Named (" kkt_check" ) = kkt_check));
53
+ Rcpp::Named (" kkt_check" ) = kkt_check,
54
+ Rcpp::Named (" ever_active" ) = ever_active,
55
+ Rcpp::Named (" nactive" ) = nactive));
55
56
56
57
}
0 commit comments