@@ -34,7 +34,6 @@ struct SplitComplexZerosBridge{
3434 G<: MOI.Utilities.TypedLike{Complex{T}} ,
3535} <: AbstractBridge
3636 dimension:: Int
37- func:: G # Simplify querying ConstraintFunction.
3837 constraint:: MOI.ConstraintIndex{F,MOI.Zeros}
3938 real_indices:: Vector{Int}
4039 imag_indices:: Vector{Int}
@@ -73,7 +72,6 @@ function bridge_constraint(
7372 )
7473 return SplitComplexZerosBridge {T,F,G} (
7574 MOI. dimension (set),
76- f,
7775 constraint,
7876 real_indices,
7977 imag_indices,
@@ -112,11 +110,23 @@ function concrete_bridge_type(
112110end
113111
114112function MOI. get (
115- :: MOI.ModelLike ,
116- :: MOI.ConstraintFunction ,
117- bridge:: SplitComplexZerosBridge ,
118- )
119- return bridge. func
113+ model:: MOI.ModelLike ,
114+ attr:: MOI.ConstraintFunction ,
115+ bridge:: SplitComplexZerosBridge{T,F,G} ,
116+ ) where {T,F,G}
117+ g = MOI. Utilities. zero_with_output_dimension (G, bridge. dimension)
118+ f = MOI. get (model, attr, bridge. constraint)
119+ S = MOI. Utilities. scalar_type (G)
120+ for (f_i, g_i) in enumerate (bridge. real_indices)
121+ complex_f = convert (S, MOI. Utilities. eachscalar (f)[f_i])
122+ MOI. Utilities. operate_output_index! (+ , Complex{T}, g_i, g, complex_f)
123+ end
124+ for (f_i, g_i) in enumerate (bridge. imag_indices)
125+ scalar = MOI. Utilities. eachscalar (f)[length (bridge. real_indices)+ f_i]
126+ complex_f = im * scalar
127+ MOI. Utilities. operate_output_index! (+ , Complex{T}, g_i, g, complex_f)
128+ end
129+ return g
120130end
121131
122132function MOI. get (
0 commit comments