# Return information

When SCS terminates it will return an ScsInfo struct containing the following fields.

Name | Type | Description
--- | --- | ---
`iter` | `scs_int` | Number of iterations taken
`status` | `char *` | Status string (e.g., ‘solved’)
`status_val` | `scs_int` | Status integer exit flag
`scale_updates` | `scs_int` | Number of updates to the scale parameter (see Dynamic scale updating)
`pobj` | `scs_float` | Primal objective
`dobj` | `scs_float` | Dual objective
`res_pri` | `scs_float` | Primal residual (see termination conditions)
`res_dual` | `scs_float` | Dual residual (see termination conditions)
`gap` | `scs_float` | Absolute duality gap (see termination conditions)
`res_infeas` | `scs_float` | Primal infeasibility residual (see termination conditions)
`res_unbdd_a` | `scs_float` | Dual infeasibility residual involving \(A\) (see termination conditions)
`res_unbdd_p` | `scs_float` | Dual infeasibility residual involving \(P\) (see termination conditions)
`comp_slack` | `scs_float` | Complementary slackness (\(s^\top y\)), should be very close to zero
`setup_time` | `scs_float` | Time taken for setup (milliseconds)
`solve_time` | `scs_float` | Time taken for solve (milliseconds)
`scale` | `scs_float` | Final scale parameter, useful for initializing next solve (see Dynamic scale updating)
`rejected_accel_steps` | `scs_int` | Number of times an AA update was rejected by the safeguarding check (see Acceleration)
`accepted_accel_steps` | `scs_int` | Number of times an AA update was accepted by the safeguarding check (see Acceleration)
`lin_sys_time` | `scs_float` | Total time (milliseconds) spent in the linear system solver
`cone_time` | `scs_float` | Total time (milliseconds) spent in the cone projection
`accel_time` | `scs_float` | Total time (milliseconds) spent in the aceleration routine