Module PreSdp.Float

module Float: S  with module Scalar = Scalar.Float

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 * float array *
Sdp.matrix Sdp.block_diag)

See Sdp.solve_ext_sparse for details. The only difference is that redundant free variables are handled before calling the SDP solver. That is, when a constraint of the form x_i + \sum_j x_j = 0 appears, the SDP solver is only asked about the variables x_j and the variable x_i will be recomputed from its answer as -\sum_j x_j.

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