Average Error: 17.8 → 1.3
Time: 15.6s
Precision: 64
Internal Precision: 128
\[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
\[\log_* (1 + (e^{\frac{-t1}{t1 + u}} - 1)^*) \cdot \frac{v}{t1 + u}\]

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. Initial program 17.8

    \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
  2. Using strategy rm
  3. Applied times-frac1.2

    \[\leadsto \color{blue}{\frac{-t1}{t1 + u} \cdot \frac{v}{t1 + u}}\]
  4. Using strategy rm
  5. Applied log1p-expm1-u1.3

    \[\leadsto \color{blue}{\log_* (1 + (e^{\frac{-t1}{t1 + u}} - 1)^*)} \cdot \frac{v}{t1 + u}\]
  6. Final simplification1.3

    \[\leadsto \log_* (1 + (e^{\frac{-t1}{t1 + u}} - 1)^*) \cdot \frac{v}{t1 + u}\]

Reproduce

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

Details

Time bar (total: 14.5s)Debug log

sample109.0ms

Algorithm
intervals
Results
58.0ms265×body80valid

simplify134.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
133.0ms
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u)))

prune7.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 14.5b

localize21.0ms

Local error

Found 2 expressions with local error:

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

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
12×flip-+
12×flip3-+
add-exp-log
add-cbrt-cube
associate-/r/
frac-times
pow1
add-cube-cbrt
associate-*r/
associate-*l/
*-un-lft-identity
add-sqr-sqrt
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
cbrt-unprod
prod-exp
div-exp
cbrt-undiv
expm1-log1p-u
associate-/l*
div-inv
pow-prod-up
*-commutative
distribute-frac-neg
pow-prod-down
pow-plus
times-frac
distribute-lft-in
frac-2neg
associate-/r*
clear-num
distribute-rgt-in
pow2
distribute-lft-neg-out
Counts
2 → 60
Calls
2 calls:
Slowest
9.0ms
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u)))
4.0ms
(* (+ t1 u) (+ t1 u))

series66.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
52.0ms
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u)))
14.0ms
(* (+ t1 u) (+ t1 u))

simplify4.5s

Counts
48 → 66
Calls
48 calls:
Slowest
391.0ms
(/ (* (* (* (- t1) v) (* (- t1) v)) (* (- t1) v)) (* (* (* (+ t1 u) (+ t1 u)) (* (+ t1 u) (+ t1 u))) (* (+ t1 u) (+ t1 u))))
369.0ms
(* (+ (* t1 t1) (- (* u u) (* t1 u))) (+ (* t1 t1) (- (* u u) (* t1 u))))
365.0ms
(* (+ (* t1 t1) (- (* u u) (* t1 u))) (+ (* t1 t1) (- (* u u) (* t1 u))))
350.0ms
(* (- (* t1 t1) (* u u)) (+ (pow t1 3) (pow u 3)))
334.0ms
(/ (* (* (* (- t1) v) (* (- t1) v)) (* (- t1) v)) (* (* (* (+ t1 u) (+ t1 u)) (+ t1 u)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u))))

prune558.0ms

Pruning

5 alts after pruning (5 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 3 expressions with local error:

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

rewrite11.0ms

Algorithm
rewrite-expression-head
Rules
24×times-frac
22×add-cube-cbrt
22×*-un-lft-identity
22×add-sqr-sqrt
18×associate-*l*
10×add-exp-log
10×add-cbrt-cube
associate-/r/
neg-mul-1
associate-*r*
associate-/r*
pow1
associate-/l*
div-inv
flip-+
flip3-+
add-log-exp
log1p-expm1-u
expm1-log1p-u
cbrt-unprod
distribute-frac-neg
prod-exp
div-exp
frac-2neg
clear-num
cbrt-undiv
*-commutative
associate-*r/
associate-*l/
pow-prod-down
div-sub
frac-times
neg-sub0
distribute-lft-neg-out
Counts
3 → 97
Calls
3 calls:
Slowest
6.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))
3.0ms
(/ (- t1) (+ t1 u))
0.0ms
(/ v (+ t1 u))

series134.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
75.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))
32.0ms
(/ (- t1) (+ t1 u))
27.0ms
(/ v (+ t1 u))

simplify2.1s

Counts
82 → 106
Calls
82 calls:
Slowest
407.0ms
(/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
288.0ms
(+ (- (log (- t1)) (log (+ t1 u))) (log (/ v (+ t1 u))))
224.0ms
(* (/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u))) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
121.0ms
(* (* (* (/ (- t1) (+ t1 u)) (/ (- t1) (+ t1 u))) (/ (- t1) (+ t1 u))) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
119.0ms
(* (/ (- t1) (+ t1 u)) (/ v (+ t1 u)))

prune996.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0.0b

localize6.0ms

Local error

Found 3 expressions with local error:

4.3b
(* (/ (- t1) (+ t1 u)) v)
0.7b
(/ (* (/ (- t1) (+ t1 u)) v) (+ t1 u))
0.0b
(/ (- t1) (+ t1 u))

rewrite18.0ms

Algorithm
rewrite-expression-head
Rules
27×times-frac
22×add-cube-cbrt
22×*-un-lft-identity
22×add-sqr-sqrt
18×associate-*l*
add-exp-log
add-cbrt-cube
neg-mul-1
associate-/r/
associate-/r*
associate-/l*
distribute-frac-neg
add-log-exp
div-inv
log1p-expm1-u
flip-+
flip3-+
pow1
expm1-log1p-u
associate-*l/
div-exp
frac-2neg
clear-num
cbrt-undiv
distribute-lft-neg-out
associate-/l/
*-commutative
div-sub
neg-sub0
Counts
3 → 92
Calls
3 calls:
Slowest
7.0ms
(/ (* (/ (- t1) (+ t1 u)) v) (+ t1 u))
5.0ms
(* (/ (- t1) (+ t1 u)) v)
4.0ms
(/ (- t1) (+ t1 u))

series188.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
81.0ms
(/ (* (/ (- t1) (+ t1 u)) v) (+ t1 u))
72.0ms
(* (/ (- t1) (+ t1 u)) v)
34.0ms
(/ (- t1) (+ t1 u))

simplify1.5s

Counts
79 → 101
Calls
79 calls:
Slowest
417.0ms
(/ (* (* (- t1) (- t1)) (- t1)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
183.0ms
(/ (* (* (* (/ (- t1) (+ t1 u)) v) (* (/ (- t1) (+ t1 u)) v)) (* (/ (- t1) (+ t1 u)) v)) (* (* (+ t1 u) (+ t1 u)) (+ t1 u)))
145.0ms
(- (log (* (/ (- t1) (+ t1 u)) v)) (log (+ t1 u)))
110.0ms
(/ (- t1) (- (* t1 t1) (* u u)))
103.0ms
(+ (* t1 t1) (- (* u u) (* t1 u)))

prune896.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0.0b

localize21.0ms

Local error

Found 4 expressions with local error:

1.6b
(* (log1p (expm1 (/ (- t1) (+ t1 u)))) (/ v (+ t1 u)))
0.0b
(log1p (expm1 (/ (- t1) (+ t1 u))))
0.0b
(/ v (+ t1 u))
0.0b
(expm1 (/ (- t1) (+ t1 u)))

rewrite10.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-exp-log
associate-*r*
add-cbrt-cube
pow1
log1p-expm1-u
add-log-exp
associate-/r/
expm1-log1p-u
associate-*l*
associate-/r*
div-inv
flip-+
flip3-+
expm1-udef
cbrt-unprod
*-commutative
associate-*r/
log1p-expm1
prod-exp
pow-prod-down
frac-2neg
clear-num
expm1-log1p
log1p-udef
Counts
4 → 62
Calls
4 calls:
Slowest
7.0ms
(* (log1p (expm1 (/ (- t1) (+ t1 u)))) (/ v (+ t1 u)))
1.0ms
(/ v (+ t1 u))
1.0ms
(expm1 (/ (- t1) (+ t1 u)))
0.0ms
(log1p (expm1 (/ (- t1) (+ t1 u))))

series324.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
158.0ms
(* (log1p (expm1 (/ (- t1) (+ t1 u)))) (/ v (+ t1 u)))
85.0ms
(expm1 (/ (- t1) (+ t1 u)))
54.0ms
(log1p (expm1 (/ (- t1) (+ t1 u))))
28.0ms
(/ v (+ t1 u))

simplify1.0s

Counts
31 → 74
Calls
31 calls:
Slowest
602.0ms
(* (* (* (log1p (expm1 (/ (- t1) (+ t1 u)))) (log1p (expm1 (/ (- t1) (+ t1 u))))) (log1p (expm1 (/ (- t1) (+ t1 u))))) (* (* (/ v (+ t1 u)) (/ v (+ t1 u))) (/ v (+ t1 u))))
109.0ms
(* (log1p (expm1 (/ (- t1) (+ t1 u)))) (/ v (+ t1 u)))
96.0ms
(+ (log (log1p (expm1 (/ (- t1) (+ t1 u))))) (log (/ v (+ t1 u))))
91.0ms
(+ (* t1 t1) (- (* u u) (* t1 u)))
78.0ms
(+ (* t1 t1) (- (* u u) (* t1 u)))

prune720.0ms

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 0.0b

regimes141.0ms

Accuracy

0% (1.2b remaining)

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

bsearch3.0ms

end0.0ms

sample923.0ms

Algorithm
intervals
Results
723.0ms8257×body80valid