Average Error: 0.3 → 0.3
Time: 42.0s
Precision: 64
Internal Precision: 128
\[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
\[\left(\log \left(\sqrt[3]{x + y}\right) + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)\right) + \log \left(\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}\right)\]

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Derivation

  1. Initial program 0.3

    \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t\]
  2. Simplified0.3

    \[\leadsto \color{blue}{\log \left(y + x\right) + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.3

    \[\leadsto \log \color{blue}{\left(\left(\sqrt[3]{y + x} \cdot \sqrt[3]{y + x}\right) \cdot \sqrt[3]{y + x}\right)} + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)\]
  5. Applied log-prod0.3

    \[\leadsto \color{blue}{\left(\log \left(\sqrt[3]{y + x} \cdot \sqrt[3]{y + x}\right) + \log \left(\sqrt[3]{y + x}\right)\right)} + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)\]
  6. Applied associate-+l+0.3

    \[\leadsto \color{blue}{\log \left(\sqrt[3]{y + x} \cdot \sqrt[3]{y + x}\right) + \left(\log \left(\sqrt[3]{y + x}\right) + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)\right)}\]
  7. Final simplification0.3

    \[\leadsto \left(\log \left(\sqrt[3]{x + y}\right) + \left((\left(a - 0.5\right) \cdot \left(\log t\right) + \left(\log z\right))_* - t\right)\right) + \log \left(\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}\right)\]

Reproduce

herbie shell --seed 2019016 +o rules:numerics
(FPCore (x y z t a)
  :name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
  (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))

Details

Time bar (total: 40.2s)Debug log

sample864.0ms

Algorithm
intervals
Results
2146×(pre true 80)
1888×(body nan 80)
258×(body real 80)

simplify407.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
406.0ms
(+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t)))

prune35.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.2b

localize33.0ms

Local error

Found 3 expressions with local error:

0.4b
(fma (- a 0.5) (log t) (log z))
0.1b
(+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t))
0.0b
(- (fma (- a 0.5) (log t) (log z)) t)

rewrite13.0ms

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity
add-cube-cbrt
add-sqr-sqrt
pow1
add-log-exp
fma-def
log1p-expm1-u
fma-udef
add-exp-log
fma-neg
add-cbrt-cube
log-prod
associate-+r+
associate-+l+
expm1-log1p-u
distribute-lft-out
flip-+
associate-+l-
log-pow
associate--l+
flip3-+
sub-neg
log-div
flip--
flip3--
sum-log
associate-+r-
+-commutative
Counts
3 → 55
Calls
3 calls:
Slowest
9.0ms
(+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t))
3.0ms
(- (fma (- a 0.5) (log t) (log z)) t)
0.0ms
(fma (- a 0.5) (log t) (log z))

series312.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
183.0ms
(+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t))
84.0ms
(fma (- a 0.5) (log t) (log z))
45.0ms
(- (fma (- a 0.5) (log t) (log z)) t)

simplify3.2s

Counts
25 → 64
Calls
25 calls:
Slowest
448.0ms
(- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (* a (log (/ 1 t))))))
431.0ms
(- (* 0.5 (log (/ 1 t))) (+ (log (/ 1 z)) (* a (log (/ 1 t)))))
420.0ms
(- (+ (* a (log t)) (+ (log z) (log x))) (+ t (* 0.5 (log t))))
408.0ms
(- (+ (* 0.5 (log (/ -1 t))) (+ (* a (log -1)) (* 0.5 (log -1)))) (+ t (+ (* a (log (/ -1 t))) (log (/ -1 z)))))
295.0ms
(- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (+ (* a (log (/ 1 t))) (log (/ 1 y))))))

prune972.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0.1b

localize40.0ms

Local error

Found 4 expressions with local error:

0.5b
(cbrt (+ y x))
0.5b
(cbrt (+ y x))
0.5b
(cbrt (+ y x))
0.5b
(* (cbrt (+ y x)) (cbrt (+ y x)))

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
18×cbrt-div
15×cbrt-prod
11×add-cube-cbrt
11×*-un-lft-identity
11×add-sqr-sqrt
flip-+
flip3-+
pow1
pow1/3
add-exp-log
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
add-cbrt-cube
frac-times
expm1-log1p-u
pow-prod-up
associate-*r/
associate-*l/
pow-prod-down
cbrt-unprod
*-commutative
prod-exp
pow-plus
pow2
Counts
4 → 83
Calls
4 calls:
Slowest
10.0ms
(* (cbrt (+ y x)) (cbrt (+ y x)))
1.0ms
(cbrt (+ y x))
1.0ms
(cbrt (+ y x))
1.0ms
(cbrt (+ y x))

series627.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
182.0ms
(* (cbrt (+ y x)) (cbrt (+ y x)))
156.0ms
(cbrt (+ y x))
145.0ms
(cbrt (+ y x))
145.0ms
(cbrt (+ y x))

simplify2.1s

Counts
59 → 95
Calls
59 calls:
Slowest
246.0ms
(- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2))))
223.0ms
(- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2))))
212.0ms
(- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2))))
205.0ms
(- (+ (* 2/3 (* (pow (/ 1 x) 1/3) y)) (pow x 2/3)) (* 1/9 (* (pow (/ 1 (pow x 4)) 1/3) (pow y 2))))
117.0ms
(* (cbrt (- (* y y) (* x x))) (cbrt (+ (pow y 3) (pow x 3))))

prune2.0s

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 0.1b

localize12.0ms

Local error

Found 4 expressions with local error:

0.4b
(fma (- a 0.5) (log t) (log z))
0.1b
(+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t))
0.1b
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))
0.0b
(log (sqrt (+ y x)))

rewrite48.0ms

Algorithm
rewrite-expression-head
Rules
26×*-un-lft-identity
18×log-prod
13×pow1
12×distribute-lft-out
12×add-cube-cbrt
12×log-pow
12×associate-+l+
12×add-sqr-sqrt
10×fma-def
sqrt-prod
sqrt-div
log-div
add-log-exp
flip-+
associate-+l-
flip3-+
add-exp-log
associate-+r-
log1p-expm1-u
add-cbrt-cube
sum-log
associate-+r+
expm1-log1p-u
pow1/2
fma-udef
+-commutative
associate--l+
rem-log-exp
sub-neg
Counts
4 → 99
Calls
4 calls:
Slowest
31.0ms
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))
14.0ms
(+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t))
1.0ms
(log (sqrt (+ y x)))
0.0ms
(fma (- a 0.5) (log t) (log z))

series569.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
222.0ms
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))
189.0ms
(+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t))
97.0ms
(fma (- a 0.5) (log t) (log z))
60.0ms
(log (sqrt (+ y x)))

simplify4.7s

Counts
58 → 111
Calls
58 calls:
Slowest
468.0ms
(- (* 0.5 (log (/ 1 t))) (+ (log (/ 1 z)) (* a (log (/ 1 t)))))
365.0ms
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))
339.0ms
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))
327.0ms
(* (sqrt (+ y x)) (exp (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t))))
325.0ms
(+ (log (sqrt (+ y x))) (+ (log (sqrt (+ y x))) (- (fma (- a 0.5) (log t) (log z)) t)))

prune1.8s

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 0.1b

localize32.0ms

Local error

Found 4 expressions with local error:

0.6b
(* (cbrt (sqrt (+ y x))) (cbrt (sqrt (+ y x))))
0.5b
(cbrt (sqrt (+ y x)))
0.5b
(cbrt (sqrt (+ y x)))
0.5b
(cbrt (sqrt (+ y x)))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
30×cbrt-prod
18×sqrt-div
18×cbrt-div
16×add-cube-cbrt
16×*-un-lft-identity
16×add-sqr-sqrt
15×sqrt-prod
flip-+
associate-*l*
associate-*r*
flip3-+
pow1
pow1/3
add-exp-log
add-log-exp
log1p-expm1-u
add-cbrt-cube
frac-times
expm1-log1p-u
pow-prod-up
associate-*r/
associate-*l/
pow-prod-down
cbrt-unprod
*-commutative
prod-exp
pow-plus
pow2
Counts
4 → 98
Calls
4 calls:
Slowest
14.0ms
(* (cbrt (sqrt (+ y x))) (cbrt (sqrt (+ y x))))
2.0ms
(cbrt (sqrt (+ y x)))
2.0ms
(cbrt (sqrt (+ y x)))
2.0ms
(cbrt (sqrt (+ y x)))

series498.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
137.0ms
(cbrt (sqrt (+ y x)))
129.0ms
(* (cbrt (sqrt (+ y x))) (cbrt (sqrt (+ y x))))
126.0ms
(cbrt (sqrt (+ y x)))
105.0ms
(cbrt (sqrt (+ y x)))

simplify2.3s

Counts
74 → 110
Calls
74 calls:
Slowest
280.0ms
(- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2))))
267.0ms
(- (+ (* 1/6 (* (pow (/ 1 (pow x 5)) 1/6) y)) (pow x 1/6)) (* 5/72 (* (pow (/ 1 (pow x 11)) 1/6) (pow y 2))))
210.0ms
(- (+ (* 1/6 (* (pow (/ 1 (pow x 5)) 1/6) y)) (pow x 1/6)) (* 5/72 (* (pow (/ 1 (pow x 11)) 1/6) (pow y 2))))
193.0ms
(- (+ (* 1/6 (* (pow (/ 1 (pow x 5)) 1/6) y)) (pow x 1/6)) (* 5/72 (* (pow (/ 1 (pow x 11)) 1/6) (pow y 2))))
145.0ms
(* (cbrt (sqrt (- (* y y) (* x x)))) (cbrt (sqrt (+ y x))))

prune2.5s

Pruning

8 alts after pruning (6 fresh and 2 done)

Merged error: 0.1b

regimes787.0ms

Accuracy

0% (0.2b remaining)

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

bsearch3.0ms

end0.0ms

sample16.4s

Algorithm
intervals
Results
64159×(pre true 80)
56119×(body nan 80)
8040×(body real 80)