|
55 | 55 | d = KrD(Upper(2), Lower(1)) |
56 | 56 |
|
57 | 57 | function lgp(l, r) |
58 | | - return dc.UnaryOperation{dc.Log}(dc.BinaryOperation{dc.Mult}(l, r)) |
| 58 | + return dc.UnaryOperation{dc.Sin}(dc.BinaryOperation{dc.Mult}(l, r)) |
59 | 59 | end |
60 | 60 |
|
61 | | - @test dc.evaluate(lgp(x, d)) == dc.UnaryOperation{dc.Log}(Variable("x", Upper(2))) |
62 | | - @test dc.evaluate(lgp(d, x)) == dc.UnaryOperation{dc.Log}(Variable("x", Upper(2))) |
| 61 | + @test dc.evaluate(lgp(x, d)) == dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2))) |
| 62 | + @test dc.evaluate(lgp(d, x)) == dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2))) |
| 63 | +end |
| 64 | + |
| 65 | +@testset "evaluate product of log and KrD" begin |
| 66 | + x = Variable("x", Upper(1)) |
| 67 | + d = KrD(Upper(2), Lower(1)) |
| 68 | + d_unrelated = KrD(Upper(5), Lower(6)) |
| 69 | + |
| 70 | + function prodlogl(l, r) |
| 71 | + return dc.BinaryOperation{dc.Mult}(dc.UnaryOperation{dc.Sin}(l), r) |
| 72 | + end |
| 73 | + |
| 74 | + function prodlogr(l, r) |
| 75 | + return dc.BinaryOperation{dc.Mult}(l, dc.UnaryOperation{dc.Sin}(r)) |
| 76 | + end |
| 77 | + |
| 78 | + expected = dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2))) |
| 79 | + |
| 80 | + @test dc.evaluate(prodlogl(x, d)) == expected |
| 81 | + @test dc.evaluate(prodlogr(d, x)) == expected |
| 82 | + |
| 83 | + expected2 = prodlogl(x, d_unrelated) |
| 84 | + |
| 85 | + @test dc.evaluate(prodlogl(x, d_unrelated)) == expected2 |
| 86 | + @test dc.evaluate(prodlogr(d_unrelated, x)) == expected2 |
63 | 87 | end |
64 | 88 |
|
65 | 89 | @testset "evaluate div" begin |
|
217 | 241 | @test dc.evaluate(n) == n |
218 | 242 | end |
219 | 243 |
|
| 244 | +@testset "evaluate sum of difference and Zero" begin |
| 245 | + a = Variable("a", Upper(1)) |
| 246 | + b = dc.UnaryOperation{dc.Sin}(Variable("b", Upper(1))) |
| 247 | + z = Zero(Upper(1)) |
| 248 | + |
| 249 | + l = dc.BinaryOperation{dc.Sub}(a, b) |
| 250 | + s = dc.BinaryOperation{dc.Add}(l, z) |
| 251 | + s2 = dc.BinaryOperation{dc.Add}(z, l) |
| 252 | + |
| 253 | + @test dc.evaluate(s) == l |
| 254 | + @test dc.evaluate(s2) == l |
| 255 | +end |
| 256 | + |
| 257 | +@testset "evaluate sum of difference and product" begin |
| 258 | + a = Variable("a", Upper(1)) |
| 259 | + b = dc.UnaryOperation{dc.Sin}(Variable("b", Lower(1))) |
| 260 | + c = Variable("c", Upper(1)) |
| 261 | + |
| 262 | + function mult(l, r) |
| 263 | + return dc.BinaryOperation{dc.Mult}(l, r) |
| 264 | + end |
| 265 | + |
| 266 | + p = mult(a, b) |
| 267 | + d = dc.BinaryOperation{dc.Sub}(p, c) |
| 268 | + sum = dc.BinaryOperation{dc.Add}(p, d) |
| 269 | + sum2 = dc.BinaryOperation{dc.Add}(p, d) |
| 270 | + |
| 271 | + expected = dc.BinaryOperation{dc.Sub}(mult(2, mult(a, b)), c) |
| 272 | + |
| 273 | + @test dc.evaluate(sum) == expected |
| 274 | + @test dc.evaluate(sum2) == expected |
| 275 | +end |
| 276 | + |
220 | 277 | @testset "evaluate sum of addition and addition" begin |
221 | 278 | a = Variable("a", Upper(1)) |
222 | 279 | b = Variable("b", Upper(1)) |
|
670 | 727 | @test evaluate(op2) == mult(mult(mult(y, b), a), z) |
671 | 728 | end |
672 | 729 |
|
| 730 | +@testset "evaluate product of product and KrD 1" begin |
| 731 | + X = Variable("X", Upper(1), Lower(2)) |
| 732 | + A = Variable("A", Upper(2), Lower(3)) |
| 733 | + d = KrD(Lower(1), Upper(4)) |
| 734 | + |
| 735 | + function mult(l, r) |
| 736 | + return dc.BinaryOperation{dc.Mult}(l, r) |
| 737 | + end |
| 738 | + |
| 739 | + @test evaluate(mult(mult(X, A), d)) == mult(Variable("X", Upper(4), Lower(2)), A) |
| 740 | + @test evaluate(mult(d, mult(X, A))) == mult(Variable("X", Upper(4), Lower(2)), A) |
| 741 | + |
| 742 | + |
| 743 | + @test evaluate(mult(mult(A, X), d)) == mult(A, Variable("X", Upper(4), Lower(2))) |
| 744 | + @test evaluate(mult(d, mult(A, X))) == mult(A, Variable("X", Upper(4), Lower(2))) |
| 745 | +end |
| 746 | + |
| 747 | +@testset "evaluate product of product and KrD 2" begin |
| 748 | + X = Variable("X", Upper(1), Lower(2)) |
| 749 | + Y = Variable("Y", Upper(1), Lower(2)) |
| 750 | + d = KrD(Lower(1), Upper(4)) |
| 751 | + |
| 752 | + function mult(l, r) |
| 753 | + return dc.BinaryOperation{dc.Mult}(l, r) |
| 754 | + end |
| 755 | + |
| 756 | + @test evaluate(mult(mult(X, Y), d)) == |
| 757 | + mult(Variable("X", Upper(4), Lower(2)), Variable("Y", Upper(4), Lower(2))) |
| 758 | + @test evaluate(mult(d, mult(X, Y))) == |
| 759 | + mult(Variable("X", Upper(4), Lower(2)), Variable("Y", Upper(4), Lower(2))) |
| 760 | + |
| 761 | + @test evaluate(mult(mult(Y, X), d)) == |
| 762 | + mult(Variable("Y", Upper(4), Lower(2)), Variable("X", Upper(4), Lower(2))) |
| 763 | + @test evaluate(mult(d, mult(Y, X))) == |
| 764 | + mult(Variable("Y", Upper(4), Lower(2)), Variable("X", Upper(4), Lower(2))) |
| 765 | +end |
| 766 | + |
| 767 | +@testset "evaluate product of product and KrD 3" begin |
| 768 | + X = Variable("X", Upper(1), Lower(2)) |
| 769 | + Y = Variable("Y", Upper(1), Lower(3)) |
| 770 | + d = KrD(Upper(2), Lower(4)) |
| 771 | + |
| 772 | + function mult(l, r) |
| 773 | + return dc.BinaryOperation{dc.Mult}(l, r) |
| 774 | + end |
| 775 | + |
| 776 | + @test evaluate(mult(mult(X, Y), d)) == |
| 777 | + mult(Variable("X", Upper(1), Lower(4)), Variable("Y", Upper(1), Lower(3))) |
| 778 | + @test evaluate(mult(d, mult(X, Y))) == |
| 779 | + mult(Variable("X", Upper(1), Lower(4)), Variable("Y", Upper(1), Lower(3))) |
| 780 | + |
| 781 | + @test evaluate(mult(mult(Y, X), d)) == |
| 782 | + mult(Variable("Y", Upper(1), Lower(3)), Variable("X", Upper(1), Lower(4))) |
| 783 | + @test evaluate(mult(d, mult(Y, X))) == |
| 784 | + mult(Variable("Y", Upper(1), Lower(3)), Variable("X", Upper(1), Lower(4))) |
| 785 | +end |
| 786 | + |
| 787 | +@testset "evaluate product of product and KrD 4" begin |
| 788 | + X = Variable("X", Upper(1), Lower(2)) |
| 789 | + d = KrD(Upper(2), Lower(4)) |
| 790 | + |
| 791 | + function mult(l, r) |
| 792 | + return dc.BinaryOperation{dc.Mult}(l, r) |
| 793 | + end |
| 794 | + |
| 795 | + @test evaluate(mult(mult(2, X), d)) == mult(2, Variable("X", Upper(1), Lower(4))) |
| 796 | + @test evaluate(mult(d, mult(2, X))) == mult(2, Variable("X", Upper(1), Lower(4))) |
| 797 | +end |
| 798 | + |
673 | 799 | @testset "evaluate BinaryOperation vector * KrD" begin |
674 | 800 | x = Variable("x", Upper(2)) |
675 | 801 | d1 = KrD(Lower(2), Upper(3)) |
|
0 commit comments