-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathsolution.rs
More file actions
43 lines (38 loc) · 1.13 KB
/
solution.rs
File metadata and controls
43 lines (38 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use super::solver::ClarabelSolverStatus;
use clarabel::algebra::FloatT;
use clarabel::solver as lib;
#[repr(C)]
pub struct DefaultSolution<T: FloatT> {
pub x: *mut T,
pub x_length: usize,
pub z: *mut T,
pub z_length: usize,
pub s: *mut T,
pub s_length: usize,
pub status: ClarabelSolverStatus,
pub obj_val: T,
pub obj_val_dual: T,
pub solve_time: f64,
pub iterations: u32,
pub r_prim: T,
pub r_dual: T,
}
impl<T: FloatT> DefaultSolution<T> {
pub fn from(solution: &mut lib::DefaultSolution<T>) -> Self {
Self {
x: solution.x.as_mut_ptr(),
x_length: solution.x.len(),
z: solution.z.as_mut_ptr(),
z_length: solution.z.len(),
s: solution.s.as_mut_ptr(),
s_length: solution.s.len(),
status: ClarabelSolverStatus::from(&solution.status),
obj_val: solution.obj_val,
obj_val_dual: solution.obj_val_dual,
solve_time: solution.solve_time,
iterations: solution.iterations,
r_prim: solution.r_prim,
r_dual: solution.r_dual,
}
}
}