use std::ptr;
use std::slice;
extern crate ecos;
fn main() {
let mut x = [-1., -1., 1., -1.];
let mut p: [i64; 4] = [0, 1, 2, 4];
let mut i: [i64; 4] = [2, 3, 0, 1];
let mut h = vec![50., 0., 2., 2.];
let mut c = vec![-1., 0., 0.];
let mut q = vec![3i64];
unsafe {
let workspace = ecos::ECOS_setup(
3, 4, 0, 1, 1, &mut q[0] as *mut ecos::idxint,
0, &mut x[0] as *mut f64, &mut p[0] as *mut ecos::idxint,
&mut i[0] as *mut ecos::idxint,
ptr::null_mut(), ptr::null_mut(),
ptr::null_mut(),
&mut c[0] as *mut f64,
&mut h[0] as *mut f64,
ptr::null_mut(),
);
let _state = ecos::ECOS_solve(workspace);
println!("Solution: {:?}", &slice::from_raw_parts((*workspace).x, 3));
ecos::ECOS_cleanup(workspace, 0);
}
}