|
21 | 21 | @test to_std(gradient(sin.(x)' * y * a, x)) == "a(cos(x) ⊙ y)" |
22 | 22 | @test to_std(gradient(x' * sin.(y) * a, x)) == "asin(y)" |
23 | 23 | @test to_std(gradient(y' * sin.(x) * a, x)) == "a(cos(x) ⊙ y)" |
24 | | - @test to_std(gradient(sin.(x .* y)' * x, x)) == "(cos(x ⊙ y) ⊙ y ⊙ x) + sin(x ⊙ y)" |
| 24 | + @test to_std(gradient(sin.(x .* y)' * x, x)) == "(y ⊙ cos(x ⊙ y) ⊙ x) + sin(x ⊙ y)" |
25 | 25 | @test to_std(gradient(sum(x), x)) == "vec(1)" |
26 | 26 | @test to_std(gradient(2 * sum(x), x)) == "2vec(1)" |
27 | 27 | @test to_std(gradient(sum(2 * x), x)) == "2vec(1)" |
|
36 | 36 | @test to_std(gradient(sum((x + y) .^ 2), x)) == "2(x + y)" |
37 | 37 | @test to_std(gradient(sum((x .* y) .^ 2), x)) == "2(x ⊙ y ⊙ y)" |
38 | 38 | @test to_std(gradient(sum((A * x - y) .^ 2), x)) == "2Aᵀ(Ax - y)" |
39 | | - @test to_std(gradient(log.(x)'*x, x)) == "(vec(1) ⊘ x ⊙ x) + log(x)" # TODO: Add simplification rule for quotients |
40 | | - @test to_std(gradient(log.(x)'*log.(x), x)) == |
41 | | - "diag(vec(1)ᵀ ⊘ xᵀ)Iᵀlog(x) + (vec(1) ⊘ x ⊙ log(x))" |
| 39 | + @test to_std(gradient(log.(x)'*x, x)) == "vec(1) + log(x)" |
| 40 | + @test to_std(gradient(log.(x)'*log.(x), x)) == "2(log(x) ⊘ x)" |
42 | 41 | @test to_std(gradient((x' * A * x) ^ (-2), x)) == "(-2)(xᵀAᵀx)^(-3)(Aᵀx + Ax)" |
43 | 42 | @test to_std(gradient((x' * A * x) ^ 2, x)) == "2xᵀAᵀx(Aᵀx + Ax)" |
44 | 43 | @test to_std(gradient(((A .* B) * C * x)' * x, x)) == "(A ⊙ B)Cx + Cᵀ(Aᵀ ⊙ Bᵀ)x" |
|
0 commit comments