@@ -293,24 +293,24 @@ function JuMP.moi_set(
293293end
294294
295295function PolyJuMP. bridges (
296- :: Type{<:MOI.AbstractVectorFunction} ,
296+ F :: Type{<:MOI.AbstractVectorFunction} ,
297297 :: Type{EmptyCone} ,
298298)
299- return [(Bridges. Constraint. EmptyBridge, Float64 )]
299+ return Tuple{Type,Type} [(Bridges. Constraint. EmptyBridge, PolyJuMP . coefficient_type_or_float (F) )]
300300end
301301
302302function PolyJuMP. bridges (
303- :: Type{<:MOI.AbstractVectorFunction} ,
303+ F :: Type{<:MOI.AbstractVectorFunction} ,
304304 :: Type{PositiveSemidefinite2x2ConeTriangle} ,
305305)
306- return [(Bridges. Constraint. PositiveSemidefinite2x2Bridge, Float64 )]
306+ return Tuple{Type,Type} [(Bridges. Constraint. PositiveSemidefinite2x2Bridge, PolyJuMP . coefficient_type_or_float (F) )]
307307end
308308
309309function PolyJuMP. bridges (
310- :: Type{<:MOI.AbstractVectorFunction} ,
310+ F :: Type{<:MOI.AbstractVectorFunction} ,
311311 :: Type{<:DiagonallyDominantConeTriangle} ,
312312)
313- return [(Bridges. Constraint. DiagonallyDominantBridge, Float64 )]
313+ return Tuple{Type,Type} [(Bridges. Constraint. DiagonallyDominantBridge, PolyJuMP . coefficient_type_or_float (F) )]
314314end
315315
316316function PolyJuMP. bridges (
@@ -333,23 +333,30 @@ function PolyJuMP.bridges(
333333 )]
334334end
335335
336+ function _bridge_coefficient_type (
337+ T:: Type ,
338+ :: Type{SOSPolynomialSet{S,M,MV,C}} ,
339+ ) where {S,M,MV,C}
340+ return _complex (T, matrix_cone_type (C))
341+ end
342+
336343function PolyJuMP. bridges (
337- :: Type{<:MOI.AbstractVectorFunction} ,
344+ F :: Type{<:MOI.AbstractVectorFunction} ,
338345 S:: Type{<:SOSPolynomialSet{<:AbstractAlgebraicSet}} ,
339346)
340347 return Tuple{Type,Type}[(
341348 Bridges. Constraint. SOSPolynomialBridge,
342- _bridge_coefficient_type (S),
349+ _bridge_coefficient_type (PolyJuMP . coefficient_type_or_float (F), S),
343350 )]
344351end
345352
346353function PolyJuMP. bridges (
347- :: Type{<:MOI.AbstractVectorFunction} ,
354+ F :: Type{<:MOI.AbstractVectorFunction} ,
348355 S:: Type{<:SOSPolynomialSet{<:BasicSemialgebraicSet}} ,
349356)
350- return [(
357+ return Tuple{Type,Type} [(
351358 Bridges. Constraint. SOSPolynomialInSemialgebraicSetBridge,
352- _bridge_coefficient_type (S),
359+ _bridge_coefficient_type (PolyJuMP . coefficient_type_or_float (F), S),
353360 )]
354361end
355362
@@ -462,7 +469,7 @@ function JuMP.build_constraint(
462469 _coefs = PolyJuMP. non_constant (__coefs)
463470 # If a polynomial with real coefficients is used with the Hermitian SOS
464471 # cone, we want to promote the coefficients to complex
465- T = _bridge_coefficient_type (typeof (set))
472+ T = _bridge_coefficient_type (JuMP . value_type (JuMP . variable_ref_type ( eltype (_coefs))), typeof (set))
466473 coefs = convert (Vector{_promote_coef_type (eltype (_coefs), T)}, _coefs)
467474 shape = PolyJuMP. PolynomialShape (basis)
468475 return PolyJuMP. bridgeable (
0 commit comments