@@ -241,39 +241,6 @@ function simplify!(::Val{:*}, f::MOI.ScalarNonlinearFunction)
241241 return f
242242end
243243
244- # The MOI.Utilities.operate!(+, T, x, y) methods do not cope with mixed input
245- # types. However, ScalarNonlinearFunction can hold various <:Real coefficient
246- # types.
247- _add_to! (x:: Real , y:: Real ) = x + y
248-
249- _add_to! (x:: Real , y:: MOI.ScalarAffineFunction{<:Real} ) = _add_to! (y, x)
250-
251- function _add_to! (x:: MOI.ScalarAffineFunction{T} , y:: T ) where {T<: Real }
252- return MOI. Utilities. operate! (+ , T, x, y)
253- end
254-
255- function _add_to! (x:: MOI.ScalarAffineFunction{S} , y:: T ) where {S<: Real ,T<: Real }
256- U = promote_type (S, T)
257- F = MOI. ScalarAffineFunction{U}
258- return MOI. Utilities. operate! (+ , U, convert (F, x), convert (U, y))
259- end
260-
261- function _add_to! (
262- x:: MOI.ScalarAffineFunction{T} ,
263- y:: MOI.ScalarAffineFunction{T} ,
264- ) where {T<: Real }
265- return MOI. Utilities. operate! (+ , T, x, y)
266- end
267-
268- function _add_to! (
269- x:: MOI.ScalarAffineFunction{S} ,
270- y:: MOI.ScalarAffineFunction{T} ,
271- ) where {S<: Real ,T<: Real }
272- U = promote_type (S, T)
273- F = MOI. ScalarAffineFunction{U}
274- return MOI. Utilities. operate! (+ , U, convert (F, x), convert (F, y))
275- end
276-
277244function simplify! (:: Val{:+} , f:: MOI.ScalarNonlinearFunction )
278245 new_args = Any[]
279246 first_affine_term = 0
@@ -283,14 +250,13 @@ function simplify!(::Val{:+}, f::MOI.ScalarNonlinearFunction)
283250 append! (new_args, arg. args)
284251 elseif _iszero (arg)
285252 # Skip any zero arguments
286- elseif arg isa Real || arg isa MOI . ScalarAffineFunction{ <: Real }
253+ elseif arg isa Real
287254 # Collect all affine arguments into a single value
288255 if first_affine_term == 0
289256 push! (new_args, arg)
290257 first_affine_term = length (new_args)
291258 else
292- new_args[first_affine_term] =
293- _add_to! (new_args[first_affine_term], arg)
259+ new_args[first_affine_term] += arg
294260 end
295261 else
296262 push! (new_args, arg)
0 commit comments