@@ -652,7 +652,6 @@ function test_eval_multivariate_hessian_prod()
652652 # 2-arg *
653653 x = [1.1 , 2.2 ]
654654 H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
655- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :* , H, x)) == 0
656655 @test Nonlinear. eval_multivariate_hessian (r, :* , H, x)
657656 @test H ≈ _hessian (x -> x[1 ] * x[2 ], x)
658657 # 3-arg *
@@ -663,40 +662,67 @@ function test_eval_multivariate_hessian_prod()
663662 return
664663end
665664
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+
666674function test_eval_multivariate_hessian_exponentiation ()
667675 r = Nonlinear. OperatorRegistry ()
668676 # ^1.0
669677 x = [1.1 , 1.0 ]
670678 H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
671- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
672679 @test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
673680 @test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
674681 # ^2.0
675682 x = [1.1 , 2.0 ]
676683 H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
677- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
678684 @test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
679685 @test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
680686 # 2-arg ^
681687 x = [1.1 , 2.2 ]
682688 H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
683- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :^ , H, x)) == 0
684689 @test Nonlinear. eval_multivariate_hessian (r, :^ , H, x)
685690 @test H ≈ _hessian (x -> x[1 ]^ x[2 ], x)
686691 return
687692end
688693
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+
689707function test_eval_multivariate_hessian_division ()
690708 r = Nonlinear. OperatorRegistry ()
691709 # 2-arg /
692710 x = [1.1 , 2.2 ]
693711 H = LinearAlgebra. LowerTriangular (zeros (2 , 2 ))
694- @test (@allocated Nonlinear. eval_multivariate_hessian (r, :/ , H, x)) == 0
695712 @test Nonlinear. eval_multivariate_hessian (r, :/ , H, x)
696713 @test H ≈ _hessian (x -> x[1 ] / x[2 ], x)
697714 return
698715end
699716
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+
700726function test_eval_multivariate_function_registered ()
701727 r = Nonlinear. OperatorRegistry ()
702728 f (x... ) = x[1 ]^ 2 + x[1 ] * x[2 ] + x[2 ]^ 2
0 commit comments