Average Error: 18.1 → 0.6
Time: 20.0s
Precision: 64
Internal Precision: 128
\[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
\[\begin{array}{l} \mathbf{if}\;u \le -4.472424846204476 \cdot 10^{-93}:\\ \;\;\;\;\frac{1}{\frac{u + t1}{\frac{-v}{u + t1} \cdot t1}}\\ \mathbf{elif}\;u \le 2079839125663728.8:\\ \;\;\;\;\frac{\frac{\frac{-t1}{u + t1}}{u + t1}}{\frac{1}{v}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-v}{u + t1} \cdot t1}{u + t1}\\ \end{array}\]

Error

Bits error versus u

Bits error versus v

Bits error versus t1

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if u < -4.472424846204476e-93

    1. Initial program 14.9

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
    2. Initial simplification1.4

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\frac{t1 + u}{v}}\]
    3. Using strategy rm
    4. Applied div-inv1.4

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\color{blue}{\left(t1 + u\right) \cdot \frac{1}{v}}}\]
    5. Applied div-inv1.4

      \[\leadsto \frac{\color{blue}{\left(-t1\right) \cdot \frac{1}{t1 + u}}}{\left(t1 + u\right) \cdot \frac{1}{v}}\]
    6. Applied times-frac1.3

      \[\leadsto \color{blue}{\frac{-t1}{t1 + u} \cdot \frac{\frac{1}{t1 + u}}{\frac{1}{v}}}\]
    7. Simplified1.2

      \[\leadsto \frac{-t1}{t1 + u} \cdot \color{blue}{\frac{v}{t1 + u}}\]
    8. Using strategy rm
    9. Applied associate-*l/0.7

      \[\leadsto \color{blue}{\frac{\left(-t1\right) \cdot \frac{v}{t1 + u}}{t1 + u}}\]
    10. Using strategy rm
    11. Applied clear-num1.3

      \[\leadsto \color{blue}{\frac{1}{\frac{t1 + u}{\left(-t1\right) \cdot \frac{v}{t1 + u}}}}\]

    if -4.472424846204476e-93 < u < 2079839125663728.8

    1. Initial program 22.7

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
    2. Initial simplification1.6

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\frac{t1 + u}{v}}\]
    3. Using strategy rm
    4. Applied div-inv1.7

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\color{blue}{\left(t1 + u\right) \cdot \frac{1}{v}}}\]
    5. Applied associate-/r*0.4

      \[\leadsto \color{blue}{\frac{\frac{\frac{-t1}{t1 + u}}{t1 + u}}{\frac{1}{v}}}\]

    if 2079839125663728.8 < u

    1. Initial program 14.5

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
    2. Initial simplification1.5

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\frac{t1 + u}{v}}\]
    3. Using strategy rm
    4. Applied div-inv1.5

      \[\leadsto \frac{\frac{-t1}{t1 + u}}{\color{blue}{\left(t1 + u\right) \cdot \frac{1}{v}}}\]
    5. Applied div-inv1.6

      \[\leadsto \frac{\color{blue}{\left(-t1\right) \cdot \frac{1}{t1 + u}}}{\left(t1 + u\right) \cdot \frac{1}{v}}\]
    6. Applied times-frac1.3

      \[\leadsto \color{blue}{\frac{-t1}{t1 + u} \cdot \frac{\frac{1}{t1 + u}}{\frac{1}{v}}}\]
    7. Simplified1.3

      \[\leadsto \frac{-t1}{t1 + u} \cdot \color{blue}{\frac{v}{t1 + u}}\]
    8. Using strategy rm
    9. Applied associate-*l/0.1

      \[\leadsto \color{blue}{\frac{\left(-t1\right) \cdot \frac{v}{t1 + u}}{t1 + u}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;u \le -4.472424846204476 \cdot 10^{-93}:\\ \;\;\;\;\frac{1}{\frac{u + t1}{\frac{-v}{u + t1} \cdot t1}}\\ \mathbf{elif}\;u \le 2079839125663728.8:\\ \;\;\;\;\frac{\frac{\frac{-t1}{u + t1}}{u + t1}}{\frac{1}{v}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-v}{u + t1} \cdot t1}{u + t1}\\ \end{array}\]

Reproduce

herbie shell --seed 2018360 
(FPCore (u v t1)
  :name "Rosa's DopplerBench"
  (/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))

Details

Time bar (total: 18.0s)Debug log

start169.0ms

Algorithm
intervals

setup145.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.8b

localize20.0ms

Local error

Found 3 expressions with local error:

2.0b
(/ (/ (- t1) (+ t1 u)) (/ (+ t1 u) v))
0.0b
(/ (- t1) (+ t1 u))
0.0b
(/ (+ t1 u) v)

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
3 → 162
Calls

3 calls. Slowest were:

8.0ms
(/ (/ (- t1) (+ t1 u)) (/ (+ t1 u) v))
3.0ms
(/ (- t1) (+ t1 u))
2.0ms
(/ (+ t1 u) v)

series221.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

129.0ms
(/ (/ (- t1) (+ t1 u)) (/ (+ t1 u) v))
66.0ms
(/ (+ t1 u) v)
25.0ms
(/ (- t1) (+ t1 u))

simplify7.8s

Counts
220 → 171
Calls

220 calls. Slowest were:

538.0ms
(/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
449.0ms
(/ (/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u))) (* (* (/ (+ t1 u) v) (/ (+ t1 u) v)) (/ (+ t1 u) v)))
375.0ms
(/ (/ (- t1) (- (* t1 t1) (* u u))) (* (cbrt (/ (+ t1 u) v)) (cbrt (/ (+ t1 u) v))))

prune1.5s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

localize6.0ms

Local error

Found 2 expressions with local error:

1.8b
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))
0.0b
(/ (- t1) (+ t1 u))

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
2 → 76
Calls

2 calls. Slowest were:

8.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))
6.0ms
(/ (- t1) (+ t1 u))

series140.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

107.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))
33.0ms
(/ (- t1) (+ t1 u))

simplify1.4s

Counts
74 → 82
Calls

74 calls. Slowest were:

292.0ms
(/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
181.0ms
(* (/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u))) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
119.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))

prune861.0ms

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

localize14.0ms

Local error

Found 2 expressions with local error:

7.2b
(* (- t1) (/ v (+ t1 u)))
0.6b
(/ (* (- t1) (/ v (+ t1 u))) (+ t1 u))

rewrite21.0ms

Algorithm
rewrite-expression-head
Counts
2 → 48
Calls

2 calls. Slowest were:

13.0ms
(/ (* (- t1) (/ v (+ t1 u))) (+ t1 u))
7.0ms
(* (- t1) (/ v (+ t1 u)))

series104.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

55.0ms
(/ (* (- t1) (/ v (+ t1 u))) (+ t1 u))
50.0ms
(* (- t1) (/ v (+ t1 u)))

simplify1.5s

Counts
37 → 54
Calls

37 calls. Slowest were:

430.0ms
(* (* (* (- t1) (- t1)) (- t1)) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
215.0ms
(/ (* (* (* (- t1) (- t1)) (- t1)) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u)))) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
206.0ms
(/ (* (* (* (- t1) (/ v (+ t1 u))) (* (- t1) (/ v (+ t1 u)))) (* (- t1) (/ v (+ t1 u)))) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))

prune489.0ms

Pruning

6 alts after pruning (3 fresh and 3 done)

Merged error: 0b

localize6.0ms

Local error

Found 3 expressions with local error:

7.2b
(* (- t1) (/ v (+ t1 u)))
0.6b
(/ 1 (/ (+ t1 u) (* (- t1) (/ v (+ t1 u)))))
0.6b
(/ (+ t1 u) (* (- t1) (/ v (+ t1 u))))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
3 → 71
Calls

3 calls. Slowest were:

5.0ms
(/ (+ t1 u) (* (- t1) (/ v (+ t1 u))))
4.0ms
(* (- t1) (/ v (+ t1 u)))
3.0ms
(/ 1 (/ (+ t1 u) (* (- t1) (/ v (+ t1 u)))))

series150.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

83.0ms
(/ 1 (/ (+ t1 u) (* (- t1) (/ v (+ t1 u)))))
41.0ms
(* (- t1) (/ v (+ t1 u)))
25.0ms
(/ (+ t1 u) (* (- t1) (/ v (+ t1 u))))

simplify2.2s

Counts
48 → 80
Calls

48 calls. Slowest were:

366.0ms
(* (* (* (- t1) (- t1)) (- t1)) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
232.0ms
(/ (* (* (+ t1 u) (+ t1 u)) (+ t1 u)) (* (* (* (- t1) (/ v (+ t1 u))) (* (- t1) (/ v (+ t1 u)))) (* (- t1) (/ v (+ t1 u)))))
218.0ms
(/ 1 (* (- t1) (/ v (+ t1 u))))

prune940.0ms

Pruning

6 alts after pruning (2 fresh and 4 done)

Merged error: 0b

regimes151.0ms

Accuracy

54.9% (0.6b remaining)

Error of 0.6b against oracle of 0.0b and baseline of 1.3b

bsearch114.0ms