Skip to content

Commit 908293d

Browse files
committed
Update
1 parent 5ef26e8 commit 908293d

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/Utilities/functions.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,10 @@ function canonicalize!(
10711071
return f
10721072
end
10731073

1074+
function canonical(f::MOI.ScalarNonlinearFunction)::MOI.ScalarNonlinearFunction
1075+
return MOI.Nonlinear.SymbolicAD.simplify(f)
1076+
end
1077+
10741078
function canonicalize!(f::MOI.ScalarNonlinearFunction)
10751079
for (i, arg) in enumerate(f.args)
10761080
if !is_canonical(arg)
@@ -1080,6 +1084,11 @@ function canonicalize!(f::MOI.ScalarNonlinearFunction)
10801084
return f
10811085
end
10821086

1087+
function canonical(f::MOI.VectorNonlinearFunction)
1088+
rows = MOI.Nonlinear.SymbolicAD.simplify.(f.rows)
1089+
return MOI.VectorNonlinearFunction(rows)
1090+
end
1091+
10831092
function canonicalize!(f::MOI.VectorNonlinearFunction)
10841093
for (i, fi) in enumerate(f.rows)
10851094
f.rows[i] = canonicalize!(fi)

test/Nonlinear/SymbolicAD.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ function test_simplify_ScalarNonlinearFunction()
6464
f = MOI.ScalarNonlinearFunction(:log, Any[x])
6565
g = MOI.ScalarNonlinearFunction(:sin, Any[f])
6666
@test SymbolicAD.simplify(g) g
67+
@test MOI.Utilities.canonical(g) g
6768
return
6869
end
6970

@@ -252,6 +253,7 @@ function test_simplify_VectorNonlinearFunction()
252253
f = MOI.VectorNonlinearFunction(wrap.([y; x_plus]))
253254
g = MOI.VectorNonlinearFunction([y; x_plus])
254255
@test SymbolicAD.simplify(f) g
256+
@test isapprox(MOI.Utilities.canonical(f), g)
255257
return
256258
end
257259

0 commit comments

Comments
 (0)