sig
  type matrix = (int * int * float) list
  type block_diag_matrix = (int * Sdpa.matrix) list
  type solver = Sdpa | SdpaGmp | SdpaDd
  type options = {
    solver : Sdpa.solver;
    verbose : int;
    max_iteration : int;
    stop_criterion : float;
    initial : float;
    precision : int;
  }
  val default : Sdpa.options
  val solve :
    ?options:Sdpa.options ->
    ?init:(int * float array array) list * float array *
          (int * float array array) list ->
    Sdpa.block_diag_matrix ->
    (Sdpa.block_diag_matrix * float) list ->
    SdpRet.t * (float * float) *
    ((int * float array array) list * float array *
     (int * float array array) list)
end