@@ -442,7 +442,7 @@ function operate(
442
442
f:: MOI.ScalarAffineFunction{T} ,
443
443
g:: MOI.ScalarQuadraticFunction{T} ,
444
444
) where {T<: Number }
445
- return MOI. ScalarQuadraticFunction (
445
+ return MOI. ScalarQuadraticFunction {T} (
446
446
operate_terms (- , g. quadratic_terms),
447
447
vcat (f. terms, operate_terms (- , g. affine_terms)),
448
448
f. constant .- g. constant,
@@ -569,9 +569,9 @@ function operate(
569
569
f:: MOI.VectorAffineFunction{T} ,
570
570
g:: MOI.VectorQuadraticFunction{T} ,
571
571
) where {T<: Number }
572
- return MOI. VectorQuadraticFunction (
572
+ return MOI. VectorQuadraticFunction {T} (
573
573
operate_terms (- , g. quadratic_terms),
574
- [f. terms; operate_terms (- , g. affine_terms)],
574
+ MOI . VectorAffineTerm{T} [f. terms; operate_terms (- , g. affine_terms)],
575
575
f. constants .- g. constants,
576
576
)
577
577
end
@@ -762,7 +762,7 @@ function operate(
762
762
end
763
763
end
764
764
constant = f. constant * g. constant
765
- return MOI. ScalarQuadraticFunction (quad_terms, aff_terms, constant)
765
+ return MOI. ScalarQuadraticFunction {T} (quad_terms, aff_terms, constant)
766
766
end
767
767
768
768
function operate (
@@ -771,8 +771,8 @@ function operate(
771
771
f:: MOI.VariableIndex ,
772
772
g:: MOI.VariableIndex ,
773
773
) where {T<: Number }
774
- return MOI. ScalarQuadraticFunction (
775
- [MOI. ScalarQuadraticTerm (f == g ? 2 one (T ) : one (T), f, g)],
774
+ return MOI. ScalarQuadraticFunction {T} (
775
+ [MOI. ScalarQuadraticTerm {T} (f == g ? T ( 2 ) : one (T), f, g)],
776
776
MOI. ScalarAffineTerm{T}[],
777
777
zero (T),
778
778
)
@@ -784,20 +784,15 @@ function operate(
784
784
f:: MOI.ScalarAffineFunction{T} ,
785
785
g:: MOI.VariableIndex ,
786
786
) where {T<: Number }
787
- if iszero (f. constant)
788
- aff_terms = MOI. ScalarAffineTerm{T}[]
789
- else
790
- aff_terms = [MOI. ScalarAffineTerm (f. constant, g)]
787
+ aff_terms = MOI. ScalarAffineTerm{T}[]
788
+ if ! iszero (f. constant)
789
+ push! (aff_terms, MOI. ScalarAffineTerm {T} (f. constant, g))
791
790
end
792
- quad_terms = map (
793
- t -> MOI. ScalarQuadraticTerm (
794
- t. variable == g ? 2 t. coefficient : t. coefficient,
795
- t. variable,
796
- g,
797
- ),
798
- f. terms,
799
- )
800
- return MOI. ScalarQuadraticFunction (quad_terms, aff_terms, zero (T))
791
+ quad_terms = map (f. terms) do t
792
+ scale = t. variable == g ? T (2 ) : one (T)
793
+ return MOI. ScalarQuadraticTerm {T} (scale * t. coefficient, t. variable, g)
794
+ end
795
+ return MOI. ScalarQuadraticFunction {T} (quad_terms, aff_terms, zero (T))
801
796
end
802
797
803
798
# ## 3d: operate(::typeof(*), ::Type{T}, ::Diagonal{T}, ::F)
@@ -935,7 +930,7 @@ function operate(
935
930
fill_vector (aterms, T, 0 , 0 , fill_terms, number_of_affine_terms, f... )
936
931
constants = zeros (T, sum (f -> output_dim (T, f), f))
937
932
fill_vector (constants, T, 0 , 0 , fill_constant, output_dim, f... )
938
- return MOI. VectorAffineFunction (aterms, constants)
933
+ return MOI. VectorAffineFunction {T} (aterms, constants)
939
934
end
940
935
941
936
function operate (
@@ -960,7 +955,7 @@ function operate(
960
955
fill_vector (qterms, T, 0 , 0 , fill_terms, number_of_quadratic_terms, f... )
961
956
constants = zeros (T, sum (f -> output_dim (T, f), f))
962
957
fill_vector (constants, T, 0 , 0 , fill_constant, output_dim, f... )
963
- return MOI. VectorQuadraticFunction (qterms, aterms, constants)
958
+ return MOI. VectorQuadraticFunction {T} (qterms, aterms, constants)
964
959
end
965
960
966
961
function operate (
0 commit comments