Average Error: 8.5 → 7.6
Time: 34.2s
Precision: 64
Internal Precision: 128
\[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
\[\begin{array}{l} \mathbf{if}\;F \le 2.2891738603422554 \cdot 10^{-218}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)} \cdot \sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{{F}^{2}} \cdot \frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{\cos \left(\pi \cdot \ell\right)}\\ \mathbf{elif}\;F \le 1.5360642580366263 \cdot 10^{-167}:\\ \;\;\;\;\pi \cdot \ell - e^{\log \left(\sin \left(\pi \cdot \ell\right)\right) - (2 \cdot \left(\log F\right) + \left(\log \left(\cos \left(\pi \cdot \ell\right)\right)\right))_*}\\ \mathbf{else}:\\ \;\;\;\;(\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \left(\frac{\frac{-1}{F}}{F}\right) + \left(\pi \cdot \ell\right))_*\\ \end{array}\]

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 3 regimes
  2. if F < 2.2891738603422554e-218

    1. Initial program 10.9

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Simplified10.9

      \[\leadsto \color{blue}{(\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \left(\frac{-1}{F \cdot F}\right) + \left(\pi \cdot \ell\right))_*}\]
    3. Taylor expanded around -inf 10.5

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \cos \left(\pi \cdot \ell\right)}}\]
    4. Taylor expanded around inf 10.5

      \[\leadsto \pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \color{blue}{\cos \left(\pi \cdot \ell\right)}}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt10.8

      \[\leadsto \pi \cdot \ell - \frac{\color{blue}{\left(\sqrt[3]{\sin \left(\pi \cdot \ell\right)} \cdot \sqrt[3]{\sin \left(\pi \cdot \ell\right)}\right) \cdot \sqrt[3]{\sin \left(\pi \cdot \ell\right)}}}{{F}^{2} \cdot \cos \left(\pi \cdot \ell\right)}\]
    7. Applied times-frac10.8

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)} \cdot \sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{{F}^{2}} \cdot \frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{\cos \left(\pi \cdot \ell\right)}}\]

    if 2.2891738603422554e-218 < F < 1.5360642580366263e-167

    1. Initial program 60.1

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Simplified60.1

      \[\leadsto \color{blue}{(\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \left(\frac{-1}{F \cdot F}\right) + \left(\pi \cdot \ell\right))_*}\]
    3. Taylor expanded around -inf 60.1

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \cos \left(\pi \cdot \ell\right)}}\]
    4. Using strategy rm
    5. Applied add-exp-log60.1

      \[\leadsto \pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \color{blue}{e^{\log \left(\cos \left(\pi \cdot \ell\right)\right)}}}\]
    6. Applied add-exp-log60.1

      \[\leadsto \pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{\color{blue}{e^{\log \left({F}^{2}\right)}} \cdot e^{\log \left(\cos \left(\pi \cdot \ell\right)\right)}}\]
    7. Applied prod-exp60.1

      \[\leadsto \pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{\color{blue}{e^{\log \left({F}^{2}\right) + \log \left(\cos \left(\pi \cdot \ell\right)\right)}}}\]
    8. Applied add-exp-log60.1

      \[\leadsto \pi \cdot \ell - \frac{\color{blue}{e^{\log \left(\sin \left(\pi \cdot \ell\right)\right)}}}{e^{\log \left({F}^{2}\right) + \log \left(\cos \left(\pi \cdot \ell\right)\right)}}\]
    9. Applied div-exp60.1

      \[\leadsto \pi \cdot \ell - \color{blue}{e^{\log \left(\sin \left(\pi \cdot \ell\right)\right) - \left(\log \left({F}^{2}\right) + \log \left(\cos \left(\pi \cdot \ell\right)\right)\right)}}\]
    10. Simplified32.5

      \[\leadsto \pi \cdot \ell - e^{\color{blue}{\log \left(\sin \left(\pi \cdot \ell\right)\right) - (2 \cdot \left(\log F\right) + \left(\log \left(\cos \left(\pi \cdot \ell\right)\right)\right))_*}}\]

    if 1.5360642580366263e-167 < F

    1. Initial program 2.1

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Simplified2.1

      \[\leadsto \color{blue}{(\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \left(\frac{-1}{F \cdot F}\right) + \left(\pi \cdot \ell\right))_*}\]
    3. Using strategy rm
    4. Applied associate-/r*2.1

      \[\leadsto (\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \color{blue}{\left(\frac{\frac{-1}{F}}{F}\right)} + \left(\pi \cdot \ell\right))_*\]
  3. Recombined 3 regimes into one program.
  4. Final simplification7.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le 2.2891738603422554 \cdot 10^{-218}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)} \cdot \sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{{F}^{2}} \cdot \frac{\sqrt[3]{\sin \left(\pi \cdot \ell\right)}}{\cos \left(\pi \cdot \ell\right)}\\ \mathbf{elif}\;F \le 1.5360642580366263 \cdot 10^{-167}:\\ \;\;\;\;\pi \cdot \ell - e^{\log \left(\sin \left(\pi \cdot \ell\right)\right) - (2 \cdot \left(\log F\right) + \left(\log \left(\cos \left(\pi \cdot \ell\right)\right)\right))_*}\\ \mathbf{else}:\\ \;\;\;\;(\left(\tan \left(\pi \cdot \ell\right)\right) \cdot \left(\frac{\frac{-1}{F}}{F}\right) + \left(\pi \cdot \ell\right))_*\\ \end{array}\]

Reproduce

herbie shell --seed 2019022 +o rules:numerics
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  (- (* PI l) (* (/ 1 (* F F)) (tan (* PI l)))))

Details

Time bar (total: 32.7s)Debug log

sample497.0ms

Algorithm
intervals
Results
382.0ms223×body10240exit
46.0ms289×body80valid
4.0msbody160valid

simplify247.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
246.0ms
(- (* PI l) (* (/ 1 (* F F)) (tan (* PI l))))

prune20.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 7.8b

localize33.0ms

Local error

Found 4 expressions with local error:

7.4b
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
4.2b
(tan (* PI l))
0.5b
(/ -1 (* F F))
0.2b
(* PI l)

rewrite9.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
log1p-expm1-u
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
expm1-log1p-u
add-sqr-sqrt
div-inv
fma-udef
*-commutative
tan-quot
frac-2neg
associate-/r*
clear-num
Counts
4 → 43
Calls
4 calls:
Slowest
3.0ms
(tan (* PI l))
2.0ms
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
1.0ms
(/ -1 (* F F))
0.0ms
(* PI l)

series239.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
137.0ms
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
54.0ms
(tan (* PI l))
35.0ms
(* PI l)
13.0ms
(/ -1 (* F F))

simplify807.0ms

Counts
12 → 55
Calls
12 calls:
Slowest
394.0ms
(- (* PI l) (+ (/ (* PI l) (pow F 2)) (* 1/3 (/ (* (pow PI 3) (pow l 3)) (pow F 2)))))
306.0ms
(+ (* 2/15 (* (pow PI 5) (pow l 5))) (+ (* 1/3 (* (pow PI 3) (pow l 3))) (* PI l)))
54.0ms
(- (* PI l) (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
34.0ms
(- (* PI l) (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
3.0ms
(/ -1 (pow F 2))

prune496.0ms

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 7.2b

localize16.0ms

Local error

Found 4 expressions with local error:

7.0b
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
4.1b
(sin (* PI l))
4.0b
(cos (* PI l))
0.2b
(* PI l)

rewrite12.0ms

Algorithm
rewrite-expression-head
Rules
11×add-exp-log
add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
associate-/l*
div-exp
times-frac
prod-exp
cbrt-undiv
div-inv
cbrt-unprod
*-commutative
frac-2neg
associate-/r*
clear-num
pow-to-exp
Counts
4 → 52
Calls
4 calls:
Slowest
8.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
2.0ms
(cos (* PI l))
1.0ms
(sin (* PI l))
0.0ms
(* PI l)

series181.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
96.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
43.0ms
(* PI l)
24.0ms
(sin (* PI l))
18.0ms
(cos (* PI l))

simplify1.2s

Counts
26 → 64
Calls
26 calls:
Slowest
271.0ms
(- (+ (* 1/24 (* (pow PI 4) (pow l 4))) 1) (* 1/2 (* (pow PI 2) (pow l 2))))
213.0ms
(- (+ (* 1/120 (* (pow PI 5) (pow l 5))) (* PI l)) (* 1/6 (* (pow PI 3) (pow l 3))))
115.0ms
(- (log (sin (* PI l))) (+ (log (pow F 2)) (log (cos (* PI l)))))
113.0ms
(/ (* (* (sin (* PI l)) (sin (* PI l))) (sin (* PI l))) (* (* (* (pow F 2) (cos (* PI l))) (* (pow F 2) (cos (* PI l)))) (* (pow F 2) (cos (* PI l)))))
113.0ms
(- (log (sin (* PI l))) (log (* (pow F 2) (cos (* PI l)))))

prune735.0ms

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 5.9b

localize3.0ms

Local error

Found 4 expressions with local error:

7.0b
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
4.1b
(sin (* PI l))
4.0b
(cos (* PI l))
0.2b
(* PI l)

rewrite23.0ms

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

series188.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
117.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
35.0ms
(* PI l)
19.0ms
(sin (* PI l))
16.0ms
(cos (* PI l))

simplify1.1s

Counts
26 → 64
Calls
26 calls:
Slowest
194.0ms
(- (+ (* 1/24 (* (pow PI 4) (pow l 4))) 1) (* 1/2 (* (pow PI 2) (pow l 2))))
190.0ms
(- (+ (* 1/120 (* (pow PI 5) (pow l 5))) (* PI l)) (* 1/6 (* (pow PI 3) (pow l 3))))
132.0ms
(- (log (sin (* PI l))) (log (* (pow F 2) (cos (* PI l)))))
131.0ms
(- (log (sin (* PI l))) (+ (log (pow F 2)) (log (cos (* PI l)))))
91.0ms
(/ (* (* (sin (* PI l)) (sin (* PI l))) (sin (* PI l))) (* (* (* (pow F 2) (cos (* PI l))) (* (pow F 2) (cos (* PI l)))) (* (pow F 2) (cos (* PI l)))))

prune752.0ms

Pruning

12 alts after pruning (11 fresh and 1 done)

Merged error: 5.9b

localize15.0ms

Local error

Found 4 expressions with local error:

28.6b
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
28.6b
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
28.6b
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
7.0b
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
21×cbrt-prod
12×add-cube-cbrt
12×times-frac
12×*-un-lft-identity
12×add-sqr-sqrt
11×add-exp-log
add-cbrt-cube
add-log-exp
div-inv
log1p-expm1-u
pow1
expm1-log1p-u
associate-/l*
div-exp
pow1/3
cbrt-div
prod-exp
cbrt-undiv
cbrt-unprod
frac-2neg
associate-/r*
clear-num
pow-to-exp
Counts
4 → 78
Calls
4 calls:
Slowest
11.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
3.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
3.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
3.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))

series592.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
182.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
163.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
162.0ms
(cbrt (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))
84.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))

simplify2.2s

Counts
50 → 90
Calls
50 calls:
Slowest
216.0ms
(exp (* 1/3 (+ (* 2 (log (/ 1 F))) (log (/ (sin (* PI l)) (cos (* PI l)))))))
191.0ms
(+ (exp (* 1/3 (- (+ (log l) (log PI)) (* 2 (log F))))) (* 1/9 (* (pow PI 2) (* (exp (* 1/3 (- (+ (log l) (log PI)) (* 2 (log F))))) (pow l 2)))))
161.0ms
(+ (exp (* 1/3 (- (+ (log l) (log PI)) (* 2 (log F))))) (* 1/9 (* (pow PI 2) (* (exp (* 1/3 (- (+ (log l) (log PI)) (* 2 (log F))))) (pow l 2)))))
157.0ms
(exp (* 1/3 (+ (* 2 (log (/ -1 F))) (log (/ (sin (* PI l)) (cos (* PI l)))))))
156.0ms
(exp (* 1/3 (+ (* 2 (log (/ 1 F))) (log (/ (sin (* PI l)) (cos (* PI l)))))))

prune1.2s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 5.9b

regimes516.0ms

Accuracy

41.2% (1.1b remaining)

Error of 7.6b against oracle of 6.5b and baseline of 8.4b

bsearch1.4s

end0.0ms

sample20.2s

Algorithm
intervals
Results
17.6s7639×body10240exit
2.1s8943×body80valid
177.0ms280×body160valid