extern crate mosek;
use mosek::{Task,Iparam,Dparam,Dinfitem,Iinfitem,Optimizertype,Basindtype};
fn main() -> Result<(),String> {
let mut task = Task::new().unwrap();
println!("Test MOSEK parameter get/set functions");
task.put_int_param(Iparam::LOG, 1)?;
task.put_int_param(Iparam::OPTIMIZER, Optimizertype::INTPNT)?;
task.put_int_param(Iparam::INTPNT_BASIS,Basindtype::NEVER)?;
task.put_dou_param(Dparam::INTPNT_CO_TOL_REL_GAP, 1.0e-7)?;
task.put_param("MSK_DPAR_INTPNT_CO_TOL_REL_GAP", "1.0e-7")?;
task.put_na_dou_param("MSK_DPAR_INTPNT_CO_TOL_REL_GAP", 1.0e-7 )?;
if let Err(_) = task.put_dou_param(Dparam::INTPNT_CO_TOL_REL_GAP, -1.0) {
println!("Wrong parameter value");
}
let param = task.get_dou_param(Dparam::INTPNT_CO_TOL_REL_GAP)?;
println!("Current value for parameter intpnt_co_tol_rel_gap = {}",param);
println!("Get MOSEK information items");
let tm = task.get_dou_inf(Dinfitem::OPTIMIZER_TIME)?;
let iter = task.get_int_inf(Iinfitem::INTPNT_ITER)?;
println!("Time: {}",tm);
println!("Iterations: {}",iter);
Ok(())
}