Skip to content

Commit 9e8b5cc

Browse files
authored
Merge pull request #417 from JuliaSymbolics/s/double-angle
add double angle formulas
2 parents 356fc22 + 1b2d3fe commit 9e8b5cc

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

src/simplify_rules.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,16 @@ let
5757
]
5858

5959
TRIG_EXP_RULES = [
60+
@acrule(~r*~x::has_trig_exp + ~r*~y => ~r*(~x + ~y))
61+
@acrule(~r*~x::has_trig_exp + -1*~r*~y => ~r*(~x - ~y))
6062
@acrule(sin(~x)^2 + cos(~x)^2 => one(~x))
6163
@acrule(sin(~x)^2 + -1 => cos(~x)^2)
6264
@acrule(cos(~x)^2 + -1 => sin(~x)^2)
6365

66+
@acrule(cos(~x)^2 + -1*sin(~x)^2 => cos(2 * ~x))
67+
@acrule(cos(~x)^2 + -1*sin(~x)^2 => cos(2 * ~x))
68+
@acrule(cos(~x) * sin(~x) => sin(2 * ~x)/2)
69+
6470
@acrule(tan(~x)^2 + -1*sec(~x)^2 => one(~x))
6571
@acrule(tan(~x)^2 + 1 => sec(~x)^2)
6672
@acrule(sec(~x)^2 + -1 => tan(~x)^2)

test/polyform.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ include("utils.jl")
1111
(y*(2x - 3y + 3z) +
1212
x*(x + z)))) == repr(simplify_fractions((1 + x + 4z) / (x + 3.0y)))
1313
@test simplify_fractions(x/(x+3) + 3/(x+3)) == 1
14-
@test repr(simplify(simplify_fractions(cos(x)/sin(x) + sin(x)/cos(x)))) == "1 / (cos(x)*sin(x))"
14+
@test repr(simplify(simplify_fractions(cos(x)/sin(x) + sin(x)/cos(x)))) == "2 / sin(2x)"
1515
end
1616

1717
@testset "expand" begin

test/rulesets.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ end
8888
@eqtest simplify(1 + y + cot(x)^2) == csc(x)^2 + y
8989
end
9090

91+
@testset "Double angle formulas" begin
92+
@syms r x
93+
@eqtest simplify(r*cos(x/2)^2 - r*sin(x/2)^2) == r*cos(x)
94+
@eqtest simplify(2cos(x)*sin(x)) == sin(2x)
95+
end
96+
9197
@testset "Exponentials" begin
9298
@syms a::Real b::Real
9399
@eqtest simplify(exp(a)*exp(b)) == simplify(exp(a+b))

0 commit comments

Comments
 (0)