diff --git a/src/nlp_expr.jl b/src/nlp_expr.jl index 0dfd6c54b91..9b1adc2b5de 100644 --- a/src/nlp_expr.jl +++ b/src/nlp_expr.jl @@ -294,6 +294,10 @@ for f in MOI.Nonlinear.DEFAULT_UNIVARIATE_OPERATORS end end +function LinearAlgebra.det(A::LinearAlgebra.Symmetric{<:AbstractJuMPScalar}) + return GenericNonlinearExpr{variable_ref_type(eltype(A))}(:det, A) +end + # Multivariate operators # The multivariate operators in MOI are +, -, *, ^, /, ifelse, atan @@ -460,6 +464,8 @@ function moi_function(f::GenericNonlinearExpr) end elseif arg isa Number push!(parent.args, arg) + elseif arg isa AbstractArray + push!(parent.args, moi_function.(arg)) else push!(parent.args, moi_function(arg)) end @@ -484,6 +490,8 @@ function jump_function(model::GenericModel, f::MOI.ScalarNonlinearFunction) end elseif arg isa Number push!(parent.args, arg) + elseif arg isa AbstractArray + push!(parent.args, jump_function.(model, arg)) else push!(parent.args, jump_function(model, arg)) end