Module Dualize.Q

module Q: S  with module Scalar = Scalar.Q

module Scalar: Scalar.S 

The scalars used for preprocessing (the SDP solver uses floats anyway).

Extended formulation.

type vector = (int * Scalar.t) list 

C.f. Sdp.vector

type 'a obj_ext = vector * 'a Sdp.block_diag 

C.f. Sdp.obj_ext

type 'a constr_ext = vector * 'a Sdp.block_diag * Scalar.t * Scalar.t 

C.f. Sdp.constr_ext

val solve_ext_sparse : ?options:Sdp.options ->
?solver:Sdp.solver ->
Sdp.sparse_matrix obj_ext ->
Sdp.sparse_matrix constr_ext list ->
Sdp.bounds ->
SdpRet.t * (float * float) * (vector * Sdp.matrix Sdp.block_diag)

See Sdp.solve_ext_sparse for details. TODO : explain, explain we return only primal solution

module ScalarLinExpr: LinExpr.S  with module Coeff = Scalar

TODO: doc

type 'a details_val = 
| DV of 'a
| DVexpr of ScalarLinExpr.t
type details = (int * Ident.t) list * Ident.t array array Sdp.block_diag *
float details_val Ident.Map.t
val solve_ext_sparse_details : ?options:Sdp.options ->
?solver:Sdp.solver ->
Sdp.sparse_matrix obj_ext ->
Sdp.sparse_matrix constr_ext list ->
Sdp.bounds ->
SdpRet.t * (float * float) * (vector * Sdp.matrix Sdp.block_diag) *
details

Printing functions.

val pp_obj_ext : (Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a obj_ext -> unit
val pp_constr_ext : (Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a constr_ext -> unit
val pp_ext_sparse : Stdlib.Format.formatter ->
Sdp.sparse_matrix obj_ext *
Sdp.sparse_matrix constr_ext list * Sdp.bounds -> unit