@@ -652,7 +652,6 @@ function test_eval_multivariate_hessian_prod()
652
652
# 2-arg *
653
653
x = [1.1 , 2.2 ]
654
654
H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
655
- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :* , H, x)) == 0
656
655
@test Nonlinear. eval_multivariate_hessian (r, :* , H, x)
657
656
@test H ≈ _hessian (x -> x[1 ] * x[2 ], x)
658
657
# 3-arg *
@@ -663,40 +662,67 @@ function test_eval_multivariate_hessian_prod()
663
662
return
664
663
end
665
664
665
+ function test_eval_multivariate_hessian_prod_allocated ()
666
+ r = Nonlinear. OperatorRegistry ()
667
+ x = [1.1 , 2.2 ]
668
+ H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
669
+ Nonlinear. eval_multivariate_hessian (r, :* , H, x) # ensure precompiled
670
+ @test (@allocated Nonlinear. eval_multivariate_hessian (r, :* , H, x)) == 0
671
+ return
672
+ end
673
+
666
674
function test_eval_multivariate_hessian_exponentiation ()
667
675
r = Nonlinear. OperatorRegistry ()
668
676
# ^1.0
669
677
x = [1.1 , 1.0 ]
670
678
H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
671
- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
672
679
@test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
673
680
@test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
674
681
# ^2.0
675
682
x = [1.1 , 2.0 ]
676
683
H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
677
- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
678
684
@test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
679
685
@test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
680
686
# 2-arg ^
681
687
x = [1.1 , 2.2 ]
682
688
H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
683
- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
684
689
@test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
685
690
@test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
686
691
return
687
692
end
688
693
694
+ function test_eval_multivariate_hessian_exponentiation_allocated ()
695
+ r = Nonlinear. OperatorRegistry ()
696
+ # ^1.0
697
+ x = [1.1 , 1.0 ]
698
+ H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
699
+ @test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
700
+ for x2 in [1.0 , 2.0 , 2.2 ]
701
+ x[2 ] = x2
702
+ @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
703
+ end
704
+ return
705
+ end
706
+
689
707
function test_eval_multivariate_hessian_division ()
690
708
r = Nonlinear. OperatorRegistry ()
691
709
# 2-arg /
692
710
x = [1.1 , 2.2 ]
693
711
H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
694
- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :/ , H, x)) == 0
695
712
@test Nonlinear. eval_multivariate_hessian (r, :/ , H, x)
696
713
@test H ≈ _hessian (x -> x[1 ] / x[2 ], x)
697
714
return
698
715
end
699
716
717
+ function test_eval_multivariate_hessian_division_allocated ()
718
+ r = Nonlinear. OperatorRegistry ()
719
+ x = [1.1 , 2.2 ]
720
+ H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
721
+ Nonlinear. eval_multivariate_hessian (r, :/ , H, x) # ensure precompiled
722
+ @test (@allocated Nonlinear. eval_multivariate_hessian (r, :/ , H, x)) == 0
723
+ return
724
+ end
725
+
700
726
function test_eval_multivariate_function_registered ()
701
727
r = Nonlinear. OperatorRegistry ()
702
728
f (x... ) = x[1 ]^ 2 + x[1 ] * x[2 ] + x[2 ]^ 2
0 commit comments