Average Error: 27.5 → 5.9
Time: 22.4s
Precision: 64
Internal Precision: 128
\[\frac{\cos \left(2 \cdot x\right)}{{cos}^{2} \cdot \left(\left(x \cdot {sin}^{2}\right) \cdot x\right)}\]
\[\frac{\cos \left(2 \cdot x\right)}{cos \cdot \left(\left(\left(sin \cdot x\right) \cdot cos\right) \cdot \left(sin \cdot x\right)\right)}\]

Error

Bits error versus x

Bits error versus cos

Bits error versus sin

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 27.5

    \[\frac{\cos \left(2 \cdot x\right)}{{cos}^{2} \cdot \left(\left(x \cdot {sin}^{2}\right) \cdot x\right)}\]
  2. Using strategy rm
  3. Applied unpow227.5

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{cos}^{2} \cdot \left(\left(x \cdot \color{blue}{\left(sin \cdot sin\right)}\right) \cdot x\right)}\]
  4. Applied associate-*r*21.4

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{cos}^{2} \cdot \left(\color{blue}{\left(\left(x \cdot sin\right) \cdot sin\right)} \cdot x\right)}\]
  5. Using strategy rm
  6. Applied unpow221.4

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(cos \cdot cos\right)} \cdot \left(\left(\left(x \cdot sin\right) \cdot sin\right) \cdot x\right)}\]
  7. Applied associate-*l*16.3

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{cos \cdot \left(cos \cdot \left(\left(\left(x \cdot sin\right) \cdot sin\right) \cdot x\right)\right)}}\]
  8. Using strategy rm
  9. Applied associate-*l*13.2

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{cos \cdot \left(cos \cdot \color{blue}{\left(\left(x \cdot sin\right) \cdot \left(sin \cdot x\right)\right)}\right)}\]
  10. Using strategy rm
  11. Applied associate-*r*5.9

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{cos \cdot \color{blue}{\left(\left(cos \cdot \left(x \cdot sin\right)\right) \cdot \left(sin \cdot x\right)\right)}}\]
  12. Final simplification5.9

    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{cos \cdot \left(\left(\left(sin \cdot x\right) \cdot cos\right) \cdot \left(sin \cdot x\right)\right)}\]

Reproduce

herbie shell --seed 2019022 +o rules:numerics
(FPCore (x cos sin)
  :name "cos(2*x)/(cos^2(x)*sin^2(x))"
  (/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x))))

Details

Time bar (total: 20.8s)Debug log

sample128.0ms

Algorithm
intervals
Results
52.0ms293×body80valid
26.0ms25×body1280valid
20.0ms29×body640valid
9.0ms18×body320valid
4.0ms12×body160valid

simplify521.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
521.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x)))

prune7.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 25.2b

localize40.0ms

Local error

Found 4 expressions with local error:

16.7b
(* (pow cos 2) (* (* x (pow sin 2)) x))
7.8b
(* x (pow sin 2))
4.3b
(* (* x (pow sin 2)) x)
0.7b
(/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x)))

rewrite34.0ms

Algorithm
rewrite-expression-head
Rules
14×add-exp-log
11×add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
prod-exp
pow1
expm1-log1p-u
associate-/l*
*-commutative
div-exp
times-frac
unpow2
cbrt-unprod
cbrt-undiv
pow-to-exp
div-inv
cos-2
div-sub
frac-2neg
associate-/r*
clear-num
Counts
4 → 68
Calls
4 calls:
Slowest
15.0ms
(* (pow cos 2) (* (* x (pow sin 2)) x))
10.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x)))
6.0ms
(* (* x (pow sin 2)) x)
2.0ms
(* x (pow sin 2))

series147.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
65.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x)))
33.0ms
(* (pow cos 2) (* (* x (pow sin 2)) x))
30.0ms
(* (* x (pow sin 2)) x)
20.0ms
(* x (pow sin 2))

simplify2.8s

Counts
35 → 80
Calls
35 calls:
Slowest
492.0ms
(* (* (* (pow cos 2) (pow cos 2)) (pow cos 2)) (* (* (* (* x (pow sin 2)) x) (* (* x (pow sin 2)) x)) (* (* x (pow sin 2)) x)))
282.0ms
(- (log (cos (* 2 x))) (log (* (pow cos 2) (* (* x (pow sin 2)) x))))
229.0ms
(- (+ (/ 1 (* (pow x 2) (* (pow sin 2) (pow cos 2)))) (* 2/3 (/ (pow x 2) (* (pow sin 2) (pow cos 2))))) (* 2 (/ 1 (* (pow sin 2) (pow cos 2)))))
222.0ms
(/ (* (cos x) (cos x)) (* (pow cos 2) (* (* x (pow sin 2)) x)))
193.0ms
(- (log (cos (* 2 x))) (+ (log (pow cos 2)) (log (* (* x (pow sin 2)) x))))

prune1.0s

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 9.5b

localize14.0ms

Local error

Found 4 expressions with local error:

16.7b
(* (pow cos 2) (* (* (* x sin) sin) x))
4.3b
(* (* (* x sin) sin) x)
0.7b
(/ (cos (* 2 x)) (* (pow cos 2) (* (* (* x sin) sin) x)))
0.2b
(* (* x sin) sin)

rewrite45.0ms

Algorithm
rewrite-expression-head
Rules
14×add-exp-log
11×add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
associate-*l*
add-log-exp
log1p-expm1-u
prod-exp
pow1
expm1-log1p-u
associate-/l*
*-commutative
div-exp
times-frac
cbrt-unprod
cbrt-undiv
pow-to-exp
unpow2
div-inv
cos-2
associate-*r*
div-sub
frac-2neg
associate-/r*
clear-num
Counts
4 → 65
Calls
4 calls:
Slowest
23.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (* (* x sin) sin) x)))
12.0ms
(* (pow cos 2) (* (* (* x sin) sin) x))
6.0ms
(* (* (* x sin) sin) x)
4.0ms
(* (* x sin) sin)

series144.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
59.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (* (* x sin) sin) x)))
53.0ms
(* (pow cos 2) (* (* (* x sin) sin) x))
16.0ms
(* (* (* x sin) sin) x)
16.0ms
(* (* x sin) sin)

simplify2.8s

Counts
33 → 77
Calls
33 calls:
Slowest
328.0ms
(/ (* (cos x) (cos x)) (* (pow cos 2) (* (* (* x sin) sin) x)))
324.0ms
(- (log (cos (* 2 x))) (+ (log (pow cos 2)) (log (* (* (* x sin) sin) x))))
323.0ms
(- (+ (/ 1 (* (pow x 2) (* (pow sin 2) (pow cos 2)))) (* 2/3 (/ (pow x 2) (* (pow sin 2) (pow cos 2))))) (* 2 (/ 1 (* (pow sin 2) (pow cos 2)))))
224.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))
224.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))

prune938.0ms

Pruning

16 alts after pruning (16 fresh and 0 done)

Merged error: 6.7b

localize14.0ms

Local error

Found 4 expressions with local error:

5.5b
(* cos (* (* (* x sin) sin) x))
4.7b
(* cos (* cos (* (* (* x sin) sin) x)))
4.3b
(* (* (* x sin) sin) x)
0.7b
(/ (cos (* 2 x)) (* cos (* cos (* (* (* x sin) sin) x))))

rewrite47.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
associate-/l*
*-commutative
times-frac
associate-*r*
div-inv
cos-2
associate-*l*
div-exp
div-sub
frac-2neg
associate-/r*
clear-num
cbrt-undiv
Counts
4 → 55
Calls
4 calls:
Slowest
16.0ms
(* cos (* cos (* (* (* x sin) sin) x)))
13.0ms
(* cos (* (* (* x sin) sin) x))
12.0ms
(/ (cos (* 2 x)) (* cos (* cos (* (* (* x sin) sin) x))))
5.0ms
(* (* (* x sin) sin) x)

series170.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
56.0ms
(* cos (* cos (* (* (* x sin) sin) x)))
52.0ms
(/ (cos (* 2 x)) (* cos (* cos (* (* (* x sin) sin) x))))
35.0ms
(* cos (* (* (* x sin) sin) x))
27.0ms
(* (* (* x sin) sin) x)

simplify2.2s

Counts
26 → 67
Calls
26 calls:
Slowest
306.0ms
(- (+ (/ 1 (* (pow x 2) (* (pow sin 2) (pow cos 2)))) (* 2/3 (/ (pow x 2) (* (pow sin 2) (pow cos 2))))) (* 2 (/ 1 (* (pow sin 2) (pow cos 2)))))
275.0ms
(/ (* (cos x) (cos x)) (* cos (* cos (* (* (* x sin) sin) x))))
235.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))
201.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))
198.0ms
(/ (* (* (cos (* 2 x)) (cos (* 2 x))) (cos (* 2 x))) (* (* (* cos (* cos (* (* (* x sin) sin) x))) (* cos (* cos (* (* (* x sin) sin) x)))) (* cos (* cos (* (* (* x sin) sin) x)))))

prune706.0ms

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 4.8b

localize16.0ms

Local error

Found 4 expressions with local error:

5.5b
(* cos (* (* x sin) (* sin x)))
4.7b
(* cos (* cos (* (* x sin) (* sin x))))
0.7b
(/ (cos (* 2 x)) (* cos (* cos (* (* x sin) (* sin x)))))
0.3b
(* (* x sin) (* sin x))

rewrite29.0ms

Algorithm
rewrite-expression-head
Rules
add-exp-log
add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
pow1
add-sqr-sqrt
add-log-exp
log1p-expm1-u
expm1-log1p-u
associate-/l*
*-commutative
associate-*r*
times-frac
div-inv
cos-2
cbrt-unprod
prod-exp
pow-prod-down
associate-*l*
div-exp
div-sub
frac-2neg
associate-/r*
clear-num
cbrt-undiv
Counts
4 → 59
Calls
4 calls:
Slowest
11.0ms
(/ (cos (* 2 x)) (* cos (* cos (* (* x sin) (* sin x)))))
9.0ms
(* cos (* cos (* (* x sin) (* sin x))))
5.0ms
(* cos (* (* x sin) (* sin x)))
3.0ms
(* (* x sin) (* sin x))

series172.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
65.0ms
(/ (cos (* 2 x)) (* cos (* cos (* (* x sin) (* sin x)))))
41.0ms
(* cos (* cos (* (* x sin) (* sin x))))
38.0ms
(* cos (* (* x sin) (* sin x)))
27.0ms
(* (* x sin) (* sin x))

simplify2.4s

Counts
29 → 71
Calls
29 calls:
Slowest
308.0ms
(- (+ (/ 1 (* (pow x 2) (* (pow sin 2) (pow cos 2)))) (* 2/3 (/ (pow x 2) (* (pow sin 2) (pow cos 2))))) (* 2 (/ 1 (* (pow sin 2) (pow cos 2)))))
255.0ms
(* (* (* (* x sin) (* x sin)) (* x sin)) (* (* (* sin x) (* sin x)) (* sin x)))
243.0ms
(/ (* (cos x) (cos x)) (* cos (* cos (* (* x sin) (* sin x)))))
231.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))
225.0ms
(/ (cos (* 2 x)) (* (pow cos 2) (* (pow x 2) (pow sin 2))))

prune722.0ms

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 2.6b

regimes330.0ms

Accuracy

0% (2.3b remaining)

Error of 5.9b against oracle of 3.6b and baseline of 5.9b

bsearch1.0ms

end0.0ms

sample5.3s

Algorithm
intervals
Results
2.5s9085×body80valid
1.0s835×body1280valid
968.0ms942×body640valid
355.0ms562×body320valid
193.0ms337×body160valid