Average Error: 0.1 → 0.1
Time: 2.8m
Precision: 64
Internal Precision: 128
\[\frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}\]
\[\frac{\sqrt{1^2 + \left(\frac{2 \cdot t}{t + 1}\right)^2}^*}{\frac{(\left(\frac{2 \cdot t}{t + 1}\right) \cdot \left(\frac{2 \cdot t}{t + 1}\right) + 2)_*}{\sqrt{(\left(\frac{2 \cdot t}{t + 1}\right) \cdot \left(\frac{2 \cdot t}{t + 1}\right) + 1)_*}}}\]

Error

Bits error versus t

Derivation

  1. Initial program 0.1

    \[\frac{1 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}{2 + \frac{2 \cdot t}{1 + t} \cdot \frac{2 \cdot t}{1 + t}}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\frac{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*}{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 2)_*}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.5

    \[\leadsto \frac{\color{blue}{\sqrt{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*} \cdot \sqrt{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*}}}{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 2)_*}\]
  5. Applied associate-/l*0.1

    \[\leadsto \color{blue}{\frac{\sqrt{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*}}{\frac{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 2)_*}{\sqrt{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*}}}}\]
  6. Simplified0.1

    \[\leadsto \frac{\color{blue}{\sqrt{1^2 + \left(\frac{t \cdot 2}{1 + t}\right)^2}^*}}{\frac{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 2)_*}{\sqrt{(\left(\frac{t \cdot 2}{1 + t}\right) \cdot \left(\frac{t \cdot 2}{1 + t}\right) + 1)_*}}}\]
  7. Final simplification0.1

    \[\leadsto \frac{\sqrt{1^2 + \left(\frac{2 \cdot t}{t + 1}\right)^2}^*}{\frac{(\left(\frac{2 \cdot t}{t + 1}\right) \cdot \left(\frac{2 \cdot t}{t + 1}\right) + 2)_*}{\sqrt{(\left(\frac{2 \cdot t}{t + 1}\right) \cdot \left(\frac{2 \cdot t}{t + 1}\right) + 1)_*}}}\]

Reproduce

herbie shell --seed 2019004 +o rules:numerics
(FPCore (t)
  :name "Kahan p13 Example 1"
  (/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t))))))

Details

Time bar (total: 2.8m)Debug log

sample51.0ms

Algorithm
intervals

simplify606.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

606.0ms
(/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))))

prune8.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize18.0ms

Local error

Found 4 expressions with local error:

0.0b
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2))
0.0b
(fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)
0.0b
(/ (* t 2) (+ 1 t))
0.0b
(/ (* t 2) (+ 1 t))

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 85
Calls

4 calls. Slowest were:

6.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2))
6.0ms
(/ (* t 2) (+ 1 t))
6.0ms
(/ (* t 2) (+ 1 t))

series120.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

54.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2))
31.0ms
(fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)
18.0ms
(/ (* t 2) (+ 1 t))
17.0ms
(/ (* t 2) (+ 1 t))

simplify10.6s

Counts
63 → 97
Calls

63 calls. Slowest were:

655.0ms
(- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2)))
597.0ms
(- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2)))
461.0ms
(/ (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)))

prune985.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0b

localize9.0ms

Local error

Found 4 expressions with local error:

0.0b
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
0.0b
(fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)
0.0b
(/ (* t 2) (+ 1 t))
0.0b
(/ (* t 2) (+ 1 t))

rewrite18.0ms

Algorithm
rewrite-expression-head
Counts
4 → 85
Calls

4 calls. Slowest were:

6.0ms
(/ (* t 2) (+ 1 t))
6.0ms
(/ (* t 2) (+ 1 t))
5.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))

series99.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

52.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
21.0ms
(fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)
14.0ms
(/ (* t 2) (+ 1 t))
11.0ms
(/ (* t 2) (+ 1 t))

simplify10.0s

Counts
63 → 97
Calls

63 calls. Slowest were:

759.0ms
(- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2)))
612.0ms
(- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2)))
432.0ms
(/ (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))

prune933.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0b

localize13.0ms

Local error

Found 4 expressions with local error:

0.0b
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))
0.0b
(hypot 1 (/ (* t 2) (+ 1 t)))
0.0b
(sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
0.0b
(/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))

rewrite22.0ms

Algorithm
rewrite-expression-head
Counts
4 → 173
Calls

4 calls. Slowest were:

10.0ms
(/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))
7.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))
1.0ms
(sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))

series397.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

173.0ms
(/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))
109.0ms
(/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))
66.0ms
(sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
49.0ms
(hypot 1 (/ (* t 2) (+ 1 t)))

simplify1.0m

Counts
223 → 185
Calls

223 calls. Slowest were:

715.0ms
(/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))
574.0ms
(- (+ (sqrt 5) (* 6 (/ 1 (* (pow t 2) (sqrt 5))))) (+ (* 8 (/ 1 (* (pow t 2) (pow (sqrt 5) 3)))) (* 4 (/ 1 (* t (sqrt 5))))))
500.0ms
(/ (sqrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (* (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))

prune2.3s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0b

localize72.0ms

Local error

Found 4 expressions with local error:

0.6b
(* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))))
0.6b
(cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))
0.6b
(cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
0.0b
(* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))

rewrite84.0ms

Algorithm
rewrite-expression-head
Counts
4 → 270
Calls

4 calls. Slowest were:

62.0ms
(* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))
12.0ms
(* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))))
1.0ms
(cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))

series572.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

226.0ms
(* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))
171.0ms
(* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))))
88.0ms
(cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))
87.0ms
(cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))

simplify1.1m

Counts
242 → 282
Calls

242 calls. Slowest were:

642.0ms
(/ (cbrt (sqrt (hypot 1 (/ (* t 2) (+ 1 t))))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (cbrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))
494.0ms
(/ (sqrt (cbrt (hypot 1 (/ (* t 2) (+ 1 t))))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (cbrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))
434.0ms
(+ (+ (+ (log (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (log (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))))) (log (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))))) (- (log (cbrt (hypot 1 (/ (* t 2) (+ 1 t))))) (- (log (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (log (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))))

prune6.3s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0b

regimes37.0ms

Accuracy

0% (0.0b remaining)

Error of 0.1b against oracle of 0.1b and baseline of 0.1b

bsearch3.0ms

end0.0ms

sample1.4s

Algorithm
intervals