Average Error: 8.8 → 7.2
Time: 40.1s
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 6.233122476385808 \cdot 10^{-248} \lor \neg \left(F \le 6.426435977887407 \cdot 10^{-171}\right):\\ \;\;\;\;\pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{\cos \left(\pi \cdot \ell\right) \cdot {F}^{2}}\\ \mathbf{else}:\\ \;\;\;\;\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))_*}\\ \end{array}\]

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 2 regimes
  2. if F < 6.233122476385808e-248 or 6.426435977887407e-171 < F

    1. Initial program 6.5

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

      \[\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 5.9

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

    if 6.233122476385808e-248 < F < 6.426435977887407e-171

    1. Initial program 60.0

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

      \[\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.0

      \[\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.0

      \[\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.0

      \[\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.0

      \[\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.0

      \[\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.0

      \[\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. Simplified35.6

      \[\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))_*}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification7.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le 6.233122476385808 \cdot 10^{-248} \lor \neg \left(F \le 6.426435977887407 \cdot 10^{-171}\right):\\ \;\;\;\;\pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{\cos \left(\pi \cdot \ell\right) \cdot {F}^{2}}\\ \mathbf{else}:\\ \;\;\;\;\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))_*}\\ \end{array}\]

Reproduce

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

Details

Time bar (total: 38.2s)Debug log

sample1.0s

Algorithm
intervals

simplify285.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

284.0ms
(- (* PI l) (* (/ 1 (* F F)) (tan (* PI l))))

prune19.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 7.3b

localize17.0ms

Local error

Found 4 expressions with local error:

6.9b
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
3.6b
(tan (* PI l))
0.4b
(/ -1 (* F F))
0.3b
(* PI l)

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
4 → 43
Calls

4 calls. Slowest were:

2.0ms
(tan (* PI l))
2.0ms
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
1.0ms
(/ -1 (* F F))

series228.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

126.0ms
(fma (tan (* PI l)) (/ -1 (* F F)) (* PI l))
60.0ms
(tan (* PI l))
32.0ms
(* PI l)
10.0ms
(/ -1 (* F F))

simplify756.0ms

Counts
12 → 55
Calls

12 calls. Slowest were:

329.0ms
(- (* PI l) (+ (/ (* PI l) (pow F 2)) (* 1/3 (/ (* (pow PI 3) (pow l 3)) (pow F 2)))))
307.0ms
(+ (* 2/15 (* (pow PI 5) (pow l 5))) (+ (* 1/3 (* (pow PI 3) (pow l 3))) (* PI l)))
57.0ms
(- (* PI l) (/ (sin (* PI l)) (* (pow F 2) (cos (* PI l)))))

prune615.0ms

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 6.8b

localize34.0ms

Local error

Found 4 expressions with local error:

6.7b
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
3.6b
(sin (* PI l))
3.6b
(cos (* PI l))
0.3b
(* PI l)

rewrite25.0ms

Algorithm
rewrite-expression-head
Counts
4 → 52
Calls

4 calls. Slowest were:

17.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
3.0ms
(cos (* PI l))
3.0ms
(sin (* PI l))

series165.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

88.0ms
(/ (sin (* PI l)) (* (pow F 2) (cos (* PI l))))
40.0ms
(* PI l)
20.0ms
(sin (* PI l))
16.0ms
(cos (* PI l))

simplify984.0ms

Counts
26 → 64
Calls

26 calls. Slowest were:

185.0ms
(- (+ (* 1/24 (* (pow PI 4) (pow l 4))) 1) (* 1/2 (* (pow PI 2) (pow l 2))))
164.0ms
(- (+ (* 1/120 (* (pow PI 5) (pow l 5))) (* PI l)) (* 1/6 (* (pow PI 3) (pow l 3))))
142.0ms
(- (log (sin (* PI l))) (+ (log (pow F 2)) (log (cos (* PI l)))))

prune841.0ms

Pruning

14 alts after pruning (13 fresh and 1 done)

Merged error: 5.4b

localize9.0ms

Local error

Found 4 expressions with local error:

6.6b
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))
3.6b
(sin (* PI l))
3.6b
(cos (* PI l))
0.8b
(/ 1 (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
4 → 68
Calls

4 calls. Slowest were:

9.0ms
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))
2.0ms
(/ 1 (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
2.0ms
(cos (* PI l))

series286.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

130.0ms
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))
117.0ms
(/ 1 (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
26.0ms
(sin (* PI l))
14.0ms
(cos (* PI l))

simplify2.6s

Counts
36 → 80
Calls

36 calls. Slowest were:

882.0ms
(/ (* (* (* (pow F 2) (cos (* PI l))) (* (pow F 2) (cos (* PI l)))) (* (pow F 2) (cos (* PI l)))) (* (* (sin (* PI l)) (sin (* PI l))) (sin (* PI l))))
342.0ms
(+ (/ (* PI l) (pow F 2)) (* 1/3 (/ (* (pow PI 3) (pow l 3)) (pow F 2))))
273.0ms
(- (/ (pow F 2) (* PI l)) (* 1/3 (* (pow F 2) (* PI l))))

prune1.0s

Pruning

16 alts after pruning (15 fresh and 1 done)

Merged error: 5.4b

localize39.0ms

Local error

Found 4 expressions with local error:

27.3b
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
27.3b
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
27.3b
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
6.6b
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 78
Calls

4 calls. Slowest were:

9.0ms
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))
4.0ms
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
4.0ms
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))

series771.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

237.0ms
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
220.0ms
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
207.0ms
(cbrt (/ (* (pow F 2) (cos (* PI l))) (sin (* PI l))))
106.0ms
(/ (* (pow F 2) (cos (* PI l))) (sin (* PI l)))

simplify4.7s

Counts
51 → 90
Calls

51 calls. Slowest were:

937.0ms
(/ (* (* (* (pow F 2) (cos (* PI l))) (* (pow F 2) (cos (* PI l)))) (* (pow F 2) (cos (* PI l)))) (* (* (sin (* PI l)) (sin (* PI l))) (sin (* PI l))))
426.0ms
(/ (* (* (* (pow F 2) (pow F 2)) (pow F 2)) (* (* (cos (* PI l)) (cos (* PI l))) (cos (* PI l)))) (* (* (sin (* PI l)) (sin (* PI l))) (sin (* PI l))))
345.0ms
(exp (* 1/3 (- (log (/ (cos (* PI l)) (sin (* PI l)))) (* 2 (log (/ 1 F))))))

prune1.4s

Pruning

17 alts after pruning (15 fresh and 2 done)

Merged error: 5.4b

regimes639.0ms

Accuracy

62.4% (0.6b remaining)

Error of 7.2b against oracle of 6.5b and baseline of 8.3b

bsearch1.3s

end0.0ms

sample20.5s

Algorithm
intervals