ln(1 + x)

Time bar (total: 2.9s)

analyze4.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
33.3%25%50%0%0%25%0%3
66.7%50%25%0%0%25%0%4
83.3%62.5%12.5%0%0%25%0%5
91.7%68.7%6.2%0%0%25%0%6
95.8%71.8%3.1%0%0%25%0%7
97.9%73.4%1.6%0%0%25%0%8
99%74.2%0.8%0%0%25%0%9
99.5%74.6%0.4%0%0%25%0%10
99.7%74.8%0.2%0%0%25%0%11
99.9%74.9%0.1%0%0%25%0%12
Compiler

Compiled 6 to 5 computations (16.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0ms
Operation ival-log, time spent: 1.0ms, 70.0% of total-time
Operation ival-add, time spent: 0.0ms, 0.0% of total-time
Operation const, time spent: 0.0ms, 0.0% of total-time

sample2.2s (75.5%)

Results
1.5s4326×body1valid
733.0ms3930×body0valid
Precisions
Click to see histograms. Total time spent on operations: 843.0ms
Operation ival-add, time spent: 410.0ms, 49.0% of total-time
Operation ival-log, time spent: 383.0ms, 45.0% of total-time
Operation const, time spent: 50.0ms, 6.0% of total-time
Bogosity

preprocess123.0ms (4.2%)

Algorithm
egg-herbie
Rules
104×fma-def
42×sub-neg
22×cancel-sign-sub-inv
20×associate-+l-
18×distribute-lft-neg-in
Problems
205×No Errors
51×(log.f64 (+.f64 1 x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01344
12844
23744
34644
46044
57744
611044
714544
816344
918644
1020044
1123544
1225044
1325544
1425644
Stop Event
saturated
Calls
Call 1
Inputs
(log.f64 (+.f64 1 x))
(log.f64 (+.f64 1 x))
(log.f64 (+.f64 1 (neg.f64 x)))
(neg.f64 (log.f64 (+.f64 1 (neg.f64 x))))
Outputs
(log.f64 (+.f64 1 x))
(log1p.f64 x)
(log.f64 (+.f64 1 x))
(log1p.f64 x)
(log.f64 (+.f64 1 (neg.f64 x)))
(log1p.f64 (neg.f64 x))
(neg.f64 (log.f64 (+.f64 1 (neg.f64 x))))
(neg.f64 (log1p.f64 (neg.f64 x)))
Compiler

Compiled 16 to 12 computations (25% saved)

Precisions
Click to see histograms. Total time spent on operations: 30.0ms
Operation ival-add, time spent: 16.0ms, 53.0% of total-time
Operation ival-log, time spent: 12.0ms, 40.0% of total-time
Operation const, time spent: 3.0ms, 10.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 3 to 2 computations (33.3% saved)

prune3.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
Compiler

Compiled 16 to 12 computations (25% saved)

localize86.0ms (2.9%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
83.1%
(log.f64 (+.f64 1 x))
Compiler

Compiled 14 to 9 computations (35.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 39.0ms
Operation ival-add, time spent: 18.0ms, 46.0% of total-time
Operation ival-log, time spent: 12.0ms, 31.0% of total-time
Operation ival-log1p, time spent: 7.0ms, 18.0% of total-time
Operation const, time spent: 3.0ms, 8.0% of total-time

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
(log.f64 (+.f64 1 x))
0.0ms
x
@-inf
(log.f64 (+.f64 1 x))
0.0ms
x
@inf
(log.f64 (+.f64 1 x))

rewrite190.0ms (6.5%)

Algorithm
batch-egg-rewrite
Rules
928×frac-times
402×unpow-prod-down
315×log1p-expm1-u
314×expm1-log1p-u
297×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
098
1788
28698
Stop Event
node limit
Counts
1 → 52
Calls
Call 1
Inputs
(log.f64 (+.f64 1 x))
Outputs
(+.f64 (log1p.f64 x) 0)
(+.f64 0 (log1p.f64 x))
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(*.f64 1 (log1p.f64 x))
(*.f64 (log1p.f64 x) 1)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(pow.f64 (log1p.f64 x) 1)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(fabs.f64 (log1p.f64 x))
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(exp.f64 (log.f64 (log1p.f64 x)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)

simplify78.0ms (2.6%)

Algorithm
egg-herbie
Rules
1350×log-prod
806×fma-neg
774×cube-prod
686×associate-+l+
670×associate-+r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01821703
14251583
215581547
358801547
Stop Event
node limit
Counts
64 → 104
Calls
Call 1
Inputs
x
(+.f64 x (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/4 (pow.f64 x 4)) (*.f64 1/3 (pow.f64 x 3)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x)) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x)))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x)))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log1p.f64 x) 0)
(+.f64 0 (log1p.f64 x))
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(*.f64 1 (log1p.f64 x))
(*.f64 (log1p.f64 x) 1)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(pow.f64 (log1p.f64 x) 1)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(fabs.f64 (log1p.f64 x))
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(exp.f64 (log.f64 (log1p.f64 x)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)
Outputs
x
(+.f64 x (*.f64 -1/2 (pow.f64 x 2)))
(fma.f64 -1/2 (pow.f64 x 2) x)
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 x (fma.f64 -1/2 (pow.f64 x 2) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (fma.f64 -1/2 (pow.f64 x 2) x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 x (*.f64 (pow.f64 x 2) (+.f64 -1/2 (*.f64 x 1/3))))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/4 (pow.f64 x 4)) (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 x (fma.f64 -1/2 (pow.f64 x 2) (fma.f64 -1/4 (pow.f64 x 4) (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 (fma.f64 -1/2 (pow.f64 x 2) x) (fma.f64 1/3 (pow.f64 x 3) (*.f64 -1/4 (pow.f64 x 4))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(neg.f64 (neg.f64 (log.f64 x)))
(log.f64 x)
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x))
(fma.f64 -1 (neg.f64 (log.f64 x)) (/.f64 1 x))
(+.f64 (/.f64 1 x) (log.f64 x))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x)) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (fma.f64 -1 (neg.f64 (log.f64 x)) (/.f64 1 x)) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (/.f64 1 x) (-.f64 (log.f64 x) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 x) (+.f64 (/.f64 1 x) (/.f64 -1/2 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (fma.f64 -1 (neg.f64 (log.f64 x)) (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3)))) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (log.f64 x) (+.f64 (/.f64 1 x) (-.f64 (/.f64 1/3 (pow.f64 x 3)) (/.f64 1/2 (pow.f64 x 2)))))
(+.f64 (/.f64 1 x) (-.f64 (+.f64 (log.f64 x) (/.f64 1/3 (pow.f64 x 3))) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x)))
(+.f64 (log.f64 -1) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (/.f64 1 x)))
(+.f64 (/.f64 1 x) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (-.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (/.f64 1 x)) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (+.f64 (-.f64 (/.f64 1 x) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(+.f64 (/.f64 1 x) (+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x)))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3))))) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (+.f64 (/.f64 1 x) (-.f64 (/.f64 1/3 (pow.f64 x 3)) (/.f64 1/2 (pow.f64 x 2)))))
(+.f64 (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3))) (+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(+.f64 (log1p.f64 x) 0)
(log1p.f64 x)
(+.f64 0 (log1p.f64 x))
(log1p.f64 x)
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(log1p.f64 x)
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(log1p.f64 x)
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(log1p.f64 x)
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(log1p.f64 x)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (+.f64 -1 (neg.f64 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log.f64 (-.f64 -1 (pow.f64 x 3))) (log.f64 (neg.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log.f64 (-.f64 -1 (pow.f64 x 3))) (log.f64 (-.f64 -1 (-.f64 (pow.f64 x 2) x))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (+.f64 x -1)))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (+.f64 x -1)))
(*.f64 1 (log1p.f64 x))
(log1p.f64 x)
(*.f64 (log1p.f64 x) 1)
(log1p.f64 x)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(log1p.f64 x)
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(log1p.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (fabs.f64 (pow.f64 (log1p.f64 x) 3/4)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (pow.f64 (log1p.f64 x) 3/4))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(log1p.f64 x)
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 4) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 8)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 4) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 8)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (fabs.f64 (pow.f64 (log1p.f64 x) 3/4)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (pow.f64 (log1p.f64 x) 3/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (pow.f64 (log1p.f64 x) 1/6) (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)))
(*.f64 (pow.f64 (log1p.f64 x) 1/6) (pow.f64 (cbrt.f64 (log1p.f64 x)) 5/2))
(pow.f64 (log1p.f64 x) 1)
(log1p.f64 x)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(log1p.f64 x)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(log1p.f64 x)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(log1p.f64 x)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(log1p.f64 x)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(log1p.f64 x)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(log1p.f64 x)
(fabs.f64 (log1p.f64 x))
(log1p.f64 x)
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(log1p.f64 x)
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(log1p.f64 x)
(exp.f64 (log.f64 (log1p.f64 x)))
(log1p.f64 x)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(log1p.f64 x)
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(log1p.f64 x)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)
(log1p.f64 x)

eval33.0ms (1.1%)

Compiler

Compiled 1124 to 785 computations (30.2% saved)

prune14.0ms (0.5%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New1031104
Fresh000
Picked022
Done000
Total1033106
Accuracy
100.0%
Counts
106 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune4.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(log1p.f64 x)
86.5%
(log.f64 (+.f64 1 x))
19.4%
x
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes18.0ms (0.6%)

Counts
3 → 3
Calls
Call 1
Inputs
x
(log1p.f64 x)
(log.f64 (+.f64 1 x))
Outputs
(log1p.f64 x)
(log.f64 (+.f64 1 x))
(log1p.f64 x)
Calls

3 calls:

13.0ms
x
2.0ms
(log.f64 (+.f64 1 x))
2.0ms
(+.f64 1 x)
Results
AccuracySegmentsBranch
100.0%3x
86.5%1(log.f64 (+.f64 1 x))
86.5%1(+.f64 1 x)
Compiler

Compiled 19 to 13 computations (31.6% saved)

regimes4.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
x
(log1p.f64 x)
Outputs
(log1p.f64 x)
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
52.2%1x
Compiler

Compiled 6 to 3 computations (50% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
x
Outputs
x
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
19.4%1x
Compiler

Compiled 4 to 2 computations (50% saved)

bsearch70.0ms (2.4%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
35.0ms
2.188508433605948e-75
4.1272293612290787e-63
35.0ms
-3.875635013792235e-63
-5.313975420755173e-71
Results
37.0ms176×body0valid
29.0ms128×body1valid
Compiler

Compiled 199 to 159 computations (20.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 34.0ms
Operation ival-add, time spent: 19.0ms, 55.0% of total-time
Operation ival-log, time spent: 14.0ms, 41.0% of total-time
Operation const, time spent: 2.0ms, 6.0% of total-time

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
1-exp
+-commutative
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01965
13065
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -4613838619036107/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log1p.f64 x) (if (<=.f64 x 5585173065148971/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log.f64 (+.f64 1 x)) (log1p.f64 x)))
(log1p.f64 x)
x
Outputs
(if (<=.f64 x -4613838619036107/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log1p.f64 x) (if (<=.f64 x 5585173065148971/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log.f64 (+.f64 1 x)) (log1p.f64 x)))
(if (or (<=.f64 x -4613838619036107/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (not (<=.f64 x 5585173065148971/242833611528216133864932738352939863330300854881517440156476551217363035650651062272))) (log1p.f64 x) (log.f64 (+.f64 x 1)))
(log1p.f64 x)
x
Compiler

Compiled 21 to 15 computations (28.6% saved)

soundness26.0ms (0.9%)

Rules
104×fma-def
42×sub-neg
22×cancel-sign-sub-inv
20×associate-+l-
18×distribute-lft-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01344
12844
23744
34644
46044
57744
611044
714544
816344
918644
1020044
1123544
1225044
1325544
1425644
Stop Event
saturated
Compiler

Compiled 7 to 5 computations (28.6% saved)

end0.0ms (0%)

preprocess55.0ms (1.9%)

Compiler

Compiled 88 to 62 computations (29.5% saved)

Profiling

Loading profile data...