Rust f32::atanh

Time bar (total: 7.5s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage

analyze2.0ms (0%)

Memory
2.6MiB live, 2.6MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.6%0.4%0%0%0%0
0%0%99.6%0.4%0%0%0%1
0%0%99.6%0.4%0%0%0%2
0%0%49.8%0.4%0%49.8%0%3
50%24.9%24.9%0.4%0%49.8%0%4
75%37.4%12.5%0.4%0%49.8%0%5
87.5%43.6%6.2%0.4%0%49.8%0%6
93.8%46.7%3.1%0.4%0%49.8%0%7
96.9%48.2%1.6%0.4%0%49.8%0%8
98.4%49%0.8%0.4%0%49.8%0%9
99.2%49.4%0.4%0.4%0%49.8%0%10
99.6%49.4%0.2%0.4%0%50%0%11
99.8%49.5%0.1%0.4%0%50%0%12
Compiler

Compiled 4 to 4 computations (0% saved)

sample751.0ms (10%)

Memory
56.6MiB live, 747.7MiB allocated; 206ms collecting garbage
Samples
608.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 334.0ms
ival-atanh: 324.0ms (96.9% of total)
ival-true: 5.0ms (1.5% of total)
ival-assert: 3.0ms (0.9% of total)
adjust: 2.0ms (0.6% of total)
Bogosity

explain91.0ms (1.2%)

Memory
-21.1MiB live, 211.7MiB allocated; 25ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-#s(literal 1 binary32)
00-0-#s(literal 2 binary32)
00-0-#s(literal 1/2 binary32)
00-0-(-.f32 #s(literal 1 binary32) x)
00-0-(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
00-0-(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
00-0-(*.f32 #s(literal 2 binary32) x)
00-0-(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
40.0ms512×0valid
Compiler

Compiled 92 to 31 computations (66.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 28.0ms
ival-div: 9.0ms (31.7% of total)
ival-sub: 7.0ms (24.6% of total)
ival-mult: 7.0ms (24.6% of total)
ival-log1p: 4.0ms (14.1% of total)
exact: 1.0ms (3.5% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess622.0ms (8.2%)

Memory
34.7MiB live, 451.4MiB allocated; 174ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
0910
01510
12410
24010
310810
444410
5228710
6563810
0808210
Stop Event
iter limit
node limit
iter limit
saturated
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
Compiler

Compiled 10 to 9 computations (10% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
Compiler

Compiled 10 to 9 computations (10% saved)

simplify782.0ms (10.4%)

Memory
32.3MiB live, 483.2MiB allocated; 131ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f32 #s(literal 2 binary32) x)
cost-diff0
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
cost-diff0
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
cost-diff0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0935
01535
12435
24035
310835
444435
5228735
6563835
0808235
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
#s(literal 1/2 binary32)
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(*.f32 #s(literal 2 binary32) x)
#s(literal 2 binary32)
x
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
(log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)
(*.f32 #s(literal 2 binary32) x)
(*.f32 x #s(literal 2 binary32))
#s(literal 2 binary32)
x
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)

localize28.0ms (0.4%)

Memory
-0.5MiB live, 90.6MiB allocated; 9ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f32 #s(literal 2 binary32) x)
accuracy0.0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
accuracy0.0234375
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
accuracy0.0703125
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
Samples
21.0ms256×0valid
Compiler

Compiled 41 to 11 computations (73.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 12.0ms
ival-mult: 6.0ms (49.5% of total)
ival-div: 2.0ms (16.5% of total)
ival-log1p: 2.0ms (16.5% of total)
ival-sub: 1.0ms (8.2% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
18.5MiB live, 18.5MiB allocated; 0ms collecting garbage
Counts
4 → 26
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(*.f32 #s(literal 2 binary32) x)
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* x (+ 2 (* 2 x)))
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
-2
(* -1 (+ 2 (* 2 (/ 1 x))))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (/ (* 2 x) (- 1 x)) (* 2 x))
1.0ms
x
@0
((* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (/ (* 2 x) (- 1 x)) (* 2 x))
1.0ms
x
@-inf
((* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (/ (* 2 x) (- 1 x)) (* 2 x))

simplify749.0ms (9.9%)

Memory
-69.0MiB live, 367.2MiB allocated; 175ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0106302
1386291
21450282
37495282
08201262
Stop Event
iter limit
node limit
Counts
26 → 25
Calls
Call 1
Inputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* x (+ 2 (* 2 x)))
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
-2
(* -1 (+ 2 (* 2 (/ 1 x))))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* 2 x)
(*.f32 #s(literal 2 binary32) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* 2 x)))
(*.f32 (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)) x)
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)) x #s(literal 2 binary32)) x)
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(*.f32 (*.f32 (fma.f32 x x #s(literal 1 binary32)) (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32))) x)
(* 1/2 (log -1))
(*.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x)) (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(log -1)
(log.f32 #s(literal -1 binary32))
(+ (log -1) (* 2 (/ 1 x)))
(-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 #s(literal -2 binary32) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(-.f32 (+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32))) (/.f32 #s(literal -2/5 binary32) (pow.f32 x #s(literal 5 binary32))))
-2
#s(literal -2 binary32)
(* -1 (+ 2 (* 2 (/ 1 x))))
(-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(-.f32 #s(literal -2 binary32) (/.f32 (-.f32 (/.f32 #s(literal 2 binary32) x) #s(literal -2 binary32)) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 (-.f32 (/.f32 #s(literal 2 binary32) x) #s(literal -2 binary32)) x)) x) #s(literal 2 binary32))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(-.f32 (*.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32)) (-.f32 (/.f32 (-.f32 #s(literal -1/3 binary32) (/.f32 #s(literal 1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 3 binary32))) (/.f32 #s(literal 1 binary32) x)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f32 (-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 (-.f32 (/.f32 #s(literal -2/5 binary32) (*.f32 x x)) #s(literal 2/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (/.f32 #s(literal -2 binary32) x))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 (-.f32 (/.f32 #s(literal 2 binary32) x) #s(literal -2 binary32)) x)) x) #s(literal 2 binary32))

rewrite89.0ms (1.2%)

Memory
-4.4MiB live, 88.0MiB allocated; 42ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
01528
15328
036028
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 31
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(*.f32 #s(literal 2 binary32) x)
Outputs
(log.f32 (sqrt.f32 (fma.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32) #s(literal 1 binary32))))
(*.f32 (log1p.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32))) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32))))
(log.f32 (fma.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32) #s(literal 1 binary32)))
(-.f32 (log.f32 (-.f32 #s(literal 1 binary32) (pow.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)) #s(literal 2 binary32)))) (log1p.f32 (*.f32 #s(literal -2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))))
(-.f32 (log1p.f32 (pow.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)) #s(literal 3 binary32))) (log1p.f32 (-.f32 (pow.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)) #s(literal 2 binary32)) (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)))))
(log1p.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)))
(*.f32 (/.f32 (*.f32 x #s(literal 2 binary32)) (-.f32 #s(literal 1 binary32) (*.f32 x x))) (+.f32 #s(literal 1 binary32) x))
(*.f32 (/.f32 (*.f32 x #s(literal 2 binary32)) (-.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 3 binary32)))) (+.f32 (fma.f32 x x x) #s(literal 1 binary32)))
(*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32))
(*.f32 (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)) #s(literal 1 binary32))
(*.f32 #s(literal 1 binary32) (*.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 2 binary32)))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 1 binary32) (*.f32 #s(literal -2 binary32) x)) (neg.f32 (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 1 binary32) (*.f32 x #s(literal 2 binary32))) (-.f32 #s(literal 1 binary32) x))
(/.f32 (neg.f32 (*.f32 #s(literal -2 binary32) x)) (neg.f32 (neg.f32 (-.f32 #s(literal 1 binary32) x))))
(/.f32 (*.f32 #s(literal -2 binary32) x) (neg.f32 (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 x #s(literal 2 binary32)) (-.f32 #s(literal 1 binary32) x))
(fma.f32 (/.f32 x (-.f32 #s(literal 1 binary32) (*.f32 x x))) (+.f32 #s(literal 1 binary32) x) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(fma.f32 (/.f32 x (-.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 3 binary32)))) (+.f32 (fma.f32 x x x) #s(literal 1 binary32)) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(+.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(neg.f32 (/.f32 (*.f32 #s(literal -2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
(neg.f32 (/.f32 (*.f32 x #s(literal 2 binary32)) (neg.f32 (-.f32 #s(literal 1 binary32) x))))
(*.f32 x #s(literal 2 binary32))
(*.f32 #s(literal 2 binary32) x)
(/.f32 (-.f32 (*.f32 x x) (*.f32 x x)) (-.f32 x x))
(/.f32 (+.f32 (pow.f32 x #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 x x (-.f32 (*.f32 x x) (*.f32 x x))))
(fma.f32 #s(literal 1 binary32) x x)
(fma.f32 x #s(literal 1 binary32) x)
(+.f32 x x)

eval5.0ms (0.1%)

Memory
10.7MiB live, 10.7MiB allocated; 0ms collecting garbage
Compiler

Compiled 972 to 252 computations (74.1% saved)

prune5.0ms (0.1%)

Memory
10.3MiB live, 10.3MiB allocated; 0ms collecting garbage
Pruning

8 alts after pruning (8 fresh and 0 done)

PrunedKeptTotal
New47855
Fresh000
Picked101
Done000
Total48856
Accuracy
100.0%
Counts
56 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
98.5%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
97.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
96.1%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
98.6%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
97.8%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
Compiler

Compiled 314 to 234 computations (25.5% saved)

simplify663.0ms (8.8%)

Memory
-41.2MiB live, 391.3MiB allocated; 133ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
cost-diff0
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
cost-diff0
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
cost-diff0
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
cost-diff0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
cost-diff0
(pow.f32 x #s(literal 3 binary32))
cost-diff0
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
cost-diff0
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
cost-diff0
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
cost-diff0
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
cost-diff0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
cost-diff0
(*.f32 #s(literal 2 binary32) x)
cost-diff0
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
cost-diff0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
cost-diff0
(+.f32 x x)
cost-diff0
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
cost-diff0
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
cost-diff0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
035226
057216
195216
2215216
3791216
43320216
08050216
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
#s(literal 1/2 binary32)
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
(+.f32 x x)
x
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
(*.f32 #s(literal 2 binary32) x)
#s(literal 2 binary32)
x
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
#s(literal 2/5 binary32)
(*.f32 x x)
x
#s(literal 2/3 binary32)
#s(literal 2 binary32)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(pow.f32 x #s(literal 3 binary32))
x
#s(literal 3 binary32)
#s(literal 1/3 binary32)
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
#s(literal 1/2 binary32)
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
x
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
#s(literal 2 binary32)
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
(log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x))
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
(*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)
(+.f32 x x)
(*.f32 #s(literal 2 binary32) x)
x
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
(*.f32 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
(*.f32 #s(literal 2 binary32) x)
#s(literal 2 binary32)
x
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32))
#s(literal 2/5 binary32)
(*.f32 x x)
x
#s(literal 2/3 binary32)
#s(literal 2 binary32)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x)
(pow.f32 x #s(literal 3 binary32))
x
#s(literal 3 binary32)
#s(literal 1/3 binary32)
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
(log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)
x
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
#s(literal 2 binary32)
(-.f32 #s(literal 1 binary32) x)
#s(literal 1 binary32)

localize132.0ms (1.7%)

Memory
21.5MiB live, 213.0MiB allocated; 34ms collecting garbage
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
accuracy0.0234375
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
accuracy0.0546875
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
accuracy0.0859375
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
accuracy0.0
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
accuracy0.0
(pow.f32 x #s(literal 3 binary32))
accuracy0.6919194789965267
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
accuracy0.00390625
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
accuracy0.0234375
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
accuracy0.0546875
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
accuracy0.45938880671392424
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
accuracy0.0
(*.f32 #s(literal 2 binary32) x)
accuracy0.0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
accuracy1.26391068735361
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
accuracy0.0
(+.f32 x x)
accuracy0.0
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
accuracy0.0234375
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
accuracy0.0703125
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
Samples
114.0ms256×0valid
Compiler

Compiled 199 to 32 computations (83.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 100.0ms
ival-pow: 42.0ms (41.8% of total)
ival-mult: 15.0ms (14.9% of total)
ival-add: 13.0ms (12.9% of total)
ival-sub: 9.0ms (9% of total)
const: 9.0ms (9% of total)
ival-log1p: 6.0ms (6% of total)
ival-div: 5.0ms (5% of total)
exact: 1.0ms (1% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series8.0ms (0.1%)

Memory
13.4MiB live, 13.4MiB allocated; 0ms collecting garbage
Counts
19 → 52
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
(+.f32 x x)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
(*.f32 #s(literal 2 binary32) x)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(pow.f32 x #s(literal 3 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* x (+ 2 (* 2 x)))
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(pow x 3)
(+ 2 (* 2 x))
(+ 2 (* x (+ 2 (* 2 x))))
(+ 2 (* x (+ 2 (* x (+ 2 (* 2 x))))))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
-2
(* -1 (+ 2 (* 2 (/ 1 x))))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(* 2/5 (pow x 5))
(* (pow x 5) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(* 2/5 (pow x 4))
(* (pow x 4) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(/ -2 x)
(* -1 (/ (+ 2 (* 2 (/ 1 x))) x))
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x)
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x)))) x)
(* 2/5 (pow x 2))
(* (pow x 2) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 2))) 2/5)))
(* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x))
(* -1 (/ (+ 2 (* -1 (/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x))) x))
Calls

3 calls:

TimeVariablePointExpression
3.0ms
x
@inf
((* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (/ (+ x x) (- 1 x)) (+ x x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) 1/3) x) (pow x 3) (* 1/2 (log (+ 1 (* x (/ 2 (- 1 x)))))) (log (+ 1 (* x (/ 2 (- 1 x))))) (* x (/ 2 (- 1 x))) (/ 2 (- 1 x)) (+ (* 2/5 (* x x)) 2/3))
2.0ms
x
@-inf
((* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (/ (+ x x) (- 1 x)) (+ x x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) 1/3) x) (pow x 3) (* 1/2 (log (+ 1 (* x (/ 2 (- 1 x)))))) (log (+ 1 (* x (/ 2 (- 1 x))))) (* x (/ 2 (- 1 x))) (/ 2 (- 1 x)) (+ (* 2/5 (* x x)) 2/3))
2.0ms
x
@0
((* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (/ (+ x x) (- 1 x)) (+ x x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* 2/5 (* x x)) 2/3) (* x x)) 2) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) 1/3) x) (pow x 3) (* 1/2 (log (+ 1 (* x (/ 2 (- 1 x)))))) (log (+ 1 (* x (/ 2 (- 1 x))))) (* x (/ 2 (- 1 x))) (/ 2 (- 1 x)) (+ (* 2/5 (* x x)) 2/3))

simplify375.0ms (5%)

Memory
-16.9MiB live, 309.1MiB allocated; 49ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0137541
1504515
21870508
08356477
Stop Event
iter limit
node limit
Counts
52 → 51
Calls
Call 1
Inputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* x (+ 2 (* 2 x)))
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(pow x 3)
(+ 2 (* 2 x))
(+ 2 (* x (+ 2 (* 2 x))))
(+ 2 (* x (+ 2 (* x (+ 2 (* 2 x))))))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
-2
(* -1 (+ 2 (* 2 (/ 1 x))))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(* 2/5 (pow x 5))
(* (pow x 5) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(* 2/5 (pow x 4))
(* (pow x 4) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(/ -2 x)
(* -1 (/ (+ 2 (* 2 (/ 1 x))) x))
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x)
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x)))) x)
(* 2/5 (pow x 2))
(* (pow x 2) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 2))) 2/5)))
(* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x))
(* -1 (/ (+ 2 (* -1 (/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x))) x))
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* 2 x)
(*.f32 #s(literal 2 binary32) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* 2 x)))
(*.f32 (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)) x)
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)) x #s(literal 2 binary32)) x)
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(*.f32 (*.f32 (fma.f32 x x #s(literal 1 binary32)) (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32))) x)
2
#s(literal 2 binary32)
(+ 2 (* 2/3 (pow x 2)))
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(pow x 3)
(pow.f32 x #s(literal 3 binary32))
(+ 2 (* 2 x))
(fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32))
(+ 2 (* x (+ 2 (* 2 x))))
(fma.f32 (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)) x #s(literal 2 binary32))
(+ 2 (* x (+ 2 (* x (+ 2 (* 2 x))))))
(*.f32 (fma.f32 x x #s(literal 1 binary32)) (fma.f32 #s(literal 2 binary32) x #s(literal 2 binary32)))
2/3
#s(literal 2/3 binary32)
(+ 2/3 (* 2/5 (pow x 2)))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(* 1/2 (log -1))
(*.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x)) (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(log -1)
(log.f32 #s(literal -1 binary32))
(+ (log -1) (* 2 (/ 1 x)))
(-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 #s(literal -2 binary32) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(-.f32 (+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32))) (/.f32 #s(literal -2/5 binary32) (pow.f32 x #s(literal 5 binary32))))
-2
#s(literal -2 binary32)
(* -1 (+ 2 (* 2 (/ 1 x))))
(-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(-.f32 (/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x) #s(literal 2 binary32))
(* 2/5 (pow x 5))
(*.f32 (pow.f32 x #s(literal 5 binary32)) #s(literal 2/5 binary32))
(* (pow x 5) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(*.f32 (-.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal -2/5 binary32)) (pow.f32 x #s(literal 5 binary32)))
(* (pow x 5) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(*.f32 (-.f32 (-.f32 (/.f32 #s(literal 2 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal -2/5 binary32)) (/.f32 #s(literal -2/3 binary32) (*.f32 x x))) (pow.f32 x #s(literal 5 binary32)))
(* 2/5 (pow x 4))
(*.f32 (pow.f32 x #s(literal 4 binary32)) #s(literal 2/5 binary32))
(* (pow x 4) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 4 binary32)) (-.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal -2/5 binary32)))
(* (pow x 4) (+ 2/5 (+ (* 2/3 (/ 1 (pow x 2))) (/ 2 (pow x 4)))))
(*.f32 (-.f32 (-.f32 (/.f32 #s(literal 2 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal -2/5 binary32)) (/.f32 #s(literal -2/3 binary32) (*.f32 x x))) (pow.f32 x #s(literal 4 binary32)))
(* 1/3 (pow x 3))
(*.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(/ -2 x)
(/.f32 #s(literal -2 binary32) x)
(* -1 (/ (+ 2 (* 2 (/ 1 x))) x))
(/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x)
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x)
(/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x)
(/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x)))) x)
(/.f32 (-.f32 (/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x) #s(literal 2 binary32)) x)
(* 2/5 (pow x 2))
(*.f32 #s(literal 2/5 binary32) (*.f32 x x))
(* (pow x 2) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal -1/3 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1 binary32))) (neg.f32 x)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f32 (-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 (-.f32 #s(literal -2/3 binary32) (/.f32 #s(literal 2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 3 binary32)))) (/.f32 #s(literal -2 binary32) x))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(-.f32 (/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x) #s(literal 2 binary32))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 2))) 2/5)))
(*.f32 (-.f32 (-.f32 (/.f32 #s(literal 2 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal -2/5 binary32)) (/.f32 #s(literal -2/3 binary32) (*.f32 x x))) (pow.f32 x #s(literal 5 binary32)))
(* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x))
(/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x)
(* -1 (/ (+ 2 (* -1 (/ (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) x))) x))
(/.f32 (-.f32 (/.f32 (-.f32 (/.f32 (-.f32 #s(literal -2 binary32) (/.f32 #s(literal 2 binary32) x)) x) #s(literal 2 binary32)) x) #s(literal 2 binary32)) x)

rewrite57.0ms (0.8%)

Memory
10.9MiB live, 55.8MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
035199
057189
0206189
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
19 → 68
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
(+.f32 x x)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
(*.f32 #s(literal 2 binary32) x)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(pow.f32 x #s(literal 3 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
(log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
Outputs
(log.f32 (pow.f32 (fma.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x #s(literal 1 binary32)) #s(literal 1/2 binary32)))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)))
(log.f32 (fma.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x #s(literal 1 binary32)))
(log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x))
(*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)
(*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (neg.f32 (*.f32 #s(literal 2 binary32) x)) (neg.f32 (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(+.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(*.f32 #s(literal 2 binary32) x)
(*.f32 x #s(literal 2 binary32))
(/.f32 (-.f32 (*.f32 x x) (*.f32 x x)) (-.f32 x x))
(/.f32 (+.f32 (pow.f32 x #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 x x (-.f32 (*.f32 x x) (*.f32 x x))))
(+.f32 x x)
(*.f32 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x))
(*.f32 #s(literal 2 binary32) x)
(*.f32 x #s(literal 2 binary32))
(/.f32 (-.f32 (*.f32 x x) (*.f32 x x)) (-.f32 x x))
(/.f32 (+.f32 (pow.f32 x #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 x x (-.f32 (*.f32 x x) (*.f32 x x))))
(+.f32 x x)
(*.f32 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(*.f32 x (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)))
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x)) #s(literal 4 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) #s(literal 3 binary32)) (pow.f32 #s(literal 2 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) (-.f32 #s(literal 4 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))))
(fma.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32))
(fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (*.f32 x x) (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) #s(literal 2 binary32))
(+.f32 (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(+.f32 #s(literal 2 binary32) (*.f32 (*.f32 (fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32)) x) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)))) (*.f32 x x)) (-.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (-.f32 (*.f32 x x) (*.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x))))
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x)
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(+.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x)
(+.f32 x (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))))
(*.f32 (pow.f32 x #s(literal 3/2 binary32)) (pow.f32 x #s(literal 3/2 binary32)))
(*.f32 (*.f32 x x) x)
(*.f32 x (*.f32 x x))
(pow.f32 x #s(literal 3 binary32))
(exp.f32 (*.f32 (log.f32 x) #s(literal 3 binary32)))
(log.f32 (pow.f32 (fma.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x #s(literal 1 binary32)) #s(literal 1/2 binary32)))
(*.f32 (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)))
(log.f32 (fma.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x #s(literal 1 binary32)))
(log1p.f32 (*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x))
(*.f32 (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)) x)
(*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))
(/.f32 (neg.f32 (*.f32 #s(literal 2 binary32) x)) (neg.f32 (-.f32 #s(literal 1 binary32) x)))
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
(+.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) (/.f32 x (-.f32 #s(literal 1 binary32) x)))
(/.f32 #s(literal -2 binary32) (neg.f32 (-.f32 #s(literal 1 binary32) x)))
(/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x))
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 (*.f32 x x) #s(literal 2/5 binary32))) #s(literal 4/9 binary32)) (-.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) #s(literal 2/3 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) #s(literal 3 binary32)) (pow.f32 #s(literal 2/3 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) (-.f32 #s(literal 4/9 binary32) (*.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) #s(literal 2/3 binary32)))))
(fma.f32 (*.f32 #s(literal 2/5 binary32) x) x #s(literal 2/3 binary32))
(fma.f32 (*.f32 x x) #s(literal 2/5 binary32) #s(literal 2/3 binary32))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(+.f32 (*.f32 (*.f32 x x) #s(literal 2/5 binary32)) #s(literal 2/3 binary32))
(+.f32 #s(literal 2/3 binary32) (*.f32 (*.f32 x x) #s(literal 2/5 binary32)))

eval8.0ms (0.1%)

Memory
25.3MiB live, 25.3MiB allocated; 0ms collecting garbage
Compiler

Compiled 2 346 to 429 computations (81.7% saved)

prune18.0ms (0.2%)

Memory
-29.9MiB live, 14.2MiB allocated; 7ms collecting garbage
Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New94498
Fresh303
Picked145
Done000
Total988106
Accuracy
100.0%
Counts
106 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
97.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
98.5%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
96.1%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
98.6%
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
97.8%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Compiler

Compiled 159 to 114 computations (28.3% saved)

simplify790.0ms (10.5%)

Memory
-12.4MiB live, 478.8MiB allocated; 101ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
cost-diff0
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
cost-diff0
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
cost-diff0
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
cost-diff0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
cost-diff0
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
cost-diff0
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
cost-diff0
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
cost-diff0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
cost-diff0
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
cost-diff0
(pow.f32 x #s(literal 3 binary32))
cost-diff0
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
cost-diff0
(*.f32 x x)
cost-diff0
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
cost-diff2
(*.f32 (*.f32 x x) x)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039271
060265
1116265
2356265
31653265
45887265
08086253
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
(*.f32 (*.f32 x x) x)
(*.f32 x x)
x
#s(literal 1/3 binary32)
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(pow.f32 x #s(literal 3 binary32))
x
#s(literal 3 binary32)
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
#s(literal 1/5 binary32)
(*.f32 x x)
#s(literal 1/3 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
#s(literal 2/3 binary32)
(*.f32 x x)
x
#s(literal 2 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
#s(literal 2/7 binary32)
(*.f32 x x)
x
#s(literal 2/5 binary32)
#s(literal 2/3 binary32)
#s(literal 2 binary32)
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(*.f32 (*.f32 x x) x)
(pow.f32 x #s(literal 3 binary32))
(*.f32 x x)
x
#s(literal 1/3 binary32)
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(fma.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(pow.f32 x #s(literal 3 binary32))
x
#s(literal 3 binary32)
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
#s(literal 1/5 binary32)
(*.f32 x x)
#s(literal 1/3 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
#s(literal 2/3 binary32)
(*.f32 x x)
x
#s(literal 2 binary32)
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
#s(literal 2/7 binary32)
(*.f32 x x)
x
#s(literal 2/5 binary32)
#s(literal 2/3 binary32)
#s(literal 2 binary32)

localize109.0ms (1.4%)

Memory
59.8MiB live, 182.9MiB allocated; 36ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.02734375
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
accuracy0.0390625
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
accuracy0.04296875
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
accuracy0.3568726175448778
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
accuracy0.0
(*.f32 x x)
accuracy0.0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
accuracy0.02734375
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
accuracy0.6919194789965267
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
accuracy0.0
(*.f32 x x)
accuracy0.00390625
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
accuracy0.0234375
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
accuracy0.45938880671392424
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
accuracy0.0
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
accuracy0.0
(*.f32 x x)
accuracy0.1015625
(*.f32 (*.f32 x x) x)
accuracy0.6919194789965267
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Samples
89.0ms256×0valid
Compiler

Compiled 211 to 40 computations (81% saved)

Precisions
Click to see histograms. Total time spent on operations: 76.0ms
ival-mult: 39.0ms (51.1% of total)
const: 13.0ms (17% of total)
ival-add: 9.0ms (11.8% of total)
ival-div: 4.0ms (5.2% of total)
ival-log1p: 4.0ms (5.2% of total)
ival-pow: 4.0ms (5.2% of total)
ival-sub: 1.0ms (1.3% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series25.0ms (0.3%)

Memory
-27.2MiB live, 23.9MiB allocated; 33ms collecting garbage
Counts
18 → 58
Calls
Call 1
Inputs
(*.f32 (*.f32 x x) x)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
(*.f32 x x)
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(pow.f32 x #s(literal 3 binary32))
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
Outputs
(pow x 3)
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(pow x 2)
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
2/5
(+ 2/5 (* 2/7 (pow x 2)))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
(+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* 1/5 (pow x 5))
(* (pow x 5) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 1/5 (+ (* 1/3 (/ 1 (pow x 2))) (/ 1 (pow x 4)))))
(* 1/5 (pow x 2))
(* (pow x 2) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(* 2/3 (pow x 3))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* 2/7 (pow x 7))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 6))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 2))
(* (pow x 2) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* 2/7 (pow x 4))
(* (pow x 4) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 2))) 1/5)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
Calls

3 calls:

TimeVariablePointExpression
18.0ms
x
@0
((* (* x x) x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) 1/3) x) (* x x) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (+ (* (pow x 3) (+ (* 1/5 (* x x)) 1/3)) x) (pow x 3) (+ (* 1/5 (* x x)) 1/3) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) (+ (* 2/7 (* x x)) 2/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3))
3.0ms
x
@inf
((* (* x x) x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) 1/3) x) (* x x) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (+ (* (pow x 3) (+ (* 1/5 (* x x)) 1/3)) x) (pow x 3) (+ (* 1/5 (* x x)) 1/3) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) (+ (* 2/7 (* x x)) 2/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3))
3.0ms
x
@-inf
((* (* x x) x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) 1/3) x) (* x x) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (+ (* (pow x 3) (+ (* 1/5 (* x x)) 1/3)) x) (pow x 3) (+ (* 1/5 (* x x)) 1/3) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) x) (+ (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (* x x)) 2) (+ (* 2/7 (* x x)) 2/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3))

simplify231.0ms (3.1%)

Memory
-1.7MiB live, 271.8MiB allocated; 98ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0146606
1537597
21869592
08229561
Stop Event
iter limit
node limit
Counts
58 → 57
Calls
Call 1
Inputs
(pow x 3)
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(pow x 2)
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
2/5
(+ 2/5 (* 2/7 (pow x 2)))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
(+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* 1/5 (pow x 5))
(* (pow x 5) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 1/5 (+ (* 1/3 (/ 1 (pow x 2))) (/ 1 (pow x 4)))))
(* 1/5 (pow x 2))
(* (pow x 2) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(* 2/3 (pow x 3))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* 2/7 (pow x 7))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 6))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 2))
(* (pow x 2) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* 2/7 (pow x 4))
(* (pow x 4) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 2))) 1/5)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
Outputs
(pow x 3)
(pow.f32 x #s(literal 3 binary32))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f32 (fma.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(pow x 2)
(*.f32 x x)
1/3
#s(literal 1/3 binary32)
(+ 1/3 (* 1/5 (pow x 2)))
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
(* 2 x)
(*.f32 #s(literal 2 binary32) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
2
#s(literal 2 binary32)
(+ 2 (* 2/3 (pow x 2)))
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
2/5
#s(literal 2/5 binary32)
(+ 2/5 (* 2/7 (pow x 2)))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
2/3
#s(literal 2/3 binary32)
(+ 2/3 (* 2/5 (pow x 2)))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(* 1/2 (log -1))
(*.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x)) (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(* 1/3 (pow x 3))
(*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x)
(* 1/5 (pow x 5))
(*.f32 (pow.f32 x #s(literal 5 binary32)) #s(literal 1/5 binary32))
(* (pow x 5) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(*.f32 (-.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal -1/5 binary32)) (pow.f32 x #s(literal 5 binary32)))
(* (pow x 5) (+ 1/5 (+ (* 1/3 (/ 1 (pow x 2))) (/ 1 (pow x 4)))))
(*.f32 (-.f32 (-.f32 (/.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal -1/5 binary32)) (/.f32 #s(literal -1/3 binary32) (*.f32 x x))) (pow.f32 x #s(literal 5 binary32)))
(* 1/5 (pow x 2))
(*.f32 #s(literal 1/5 binary32) (*.f32 x x))
(* (pow x 2) (+ 1/5 (* 1/3 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
(log -1)
(log.f32 #s(literal -1 binary32))
(+ (log -1) (* 2 (/ 1 x)))
(-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 #s(literal -2 binary32) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(-.f32 (+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32))) (/.f32 #s(literal -2/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(* 2/3 (pow x 3))
(*.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 3 binary32)))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(* 2/3 (pow x 2))
(*.f32 #s(literal 2/3 binary32) (*.f32 x x))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(* 2/7 (pow x 7))
(*.f32 (pow.f32 x #s(literal 7 binary32)) #s(literal 2/7 binary32))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(*.f32 (-.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (/.f32 #s(literal -2 binary32) (pow.f32 x #s(literal 6 binary32)))) (pow.f32 x #s(literal 7 binary32)))
(* 2/7 (pow x 6))
(*.f32 (pow.f32 x #s(literal 6 binary32)) #s(literal 2/7 binary32))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 6 binary32)) (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (pow.f32 x #s(literal 6 binary32)) (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(*.f32 (-.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (/.f32 #s(literal -2 binary32) (pow.f32 x #s(literal 6 binary32)))) (pow.f32 x #s(literal 6 binary32)))
(* 2/7 (pow x 2))
(*.f32 #s(literal 2/7 binary32) (*.f32 x x))
(* (pow x 2) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
(* 2/7 (pow x 4))
(*.f32 (pow.f32 x #s(literal 4 binary32)) #s(literal 2/7 binary32))
(* (pow x 4) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)) (pow.f32 x #s(literal 4 binary32)))
(* (pow x 4) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 4 binary32)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (-.f32 (/.f32 (/.f32 (-.f32 (/.f32 #s(literal -1/5 binary32) (*.f32 x x)) #s(literal 1/3 binary32)) x) x) #s(literal 1 binary32)) (neg.f32 x)))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 2))) 1/5)))
(*.f32 (-.f32 (-.f32 (/.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal -1/5 binary32)) (/.f32 #s(literal -1/3 binary32) (*.f32 x x))) (pow.f32 x #s(literal 5 binary32)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f32 (-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 (-.f32 #s(literal -2/3 binary32) (/.f32 #s(literal 2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 3 binary32)))) (/.f32 #s(literal -2 binary32) x))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (+.f32 (/.f32 #s(literal -2/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32))))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (-.f32 (/.f32 (-.f32 (/.f32 (/.f32 #s(literal -2 binary32) x) x) #s(literal 2/3 binary32)) (pow.f32 x #s(literal 4 binary32))) (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32))))

rewrite37.0ms (0.5%)

Memory
8.9MiB live, 52.0MiB allocated; 7ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039246
060240
0253228
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
18 → 74
Calls
Call 1
Inputs
(*.f32 (*.f32 x x) x)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
(*.f32 x x)
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(pow.f32 x #s(literal 3 binary32))
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
Outputs
(*.f32 (pow.f32 x #s(literal 3/2 binary32)) (pow.f32 x #s(literal 3/2 binary32)))
(*.f32 (*.f32 x x) x)
(*.f32 x (*.f32 x x))
(pow.f32 x #s(literal 3 binary32))
(exp.f32 (*.f32 (log.f32 x) #s(literal 3 binary32)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)))) (*.f32 x x)) (-.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) (-.f32 (*.f32 x x) (*.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x))))
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x)
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(fma.f32 (*.f32 x x) (*.f32 x #s(literal 1/3 binary32)) x)
(+.f32 (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))) x)
(+.f32 x (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))))
(*.f32 (neg.f32 x) (neg.f32 x))
(*.f32 (fabs.f32 x) (fabs.f32 x))
(*.f32 x x)
(pow.f32 x #s(literal 2 binary32))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x))
(/.f32 (-.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (*.f32 x x)) (-.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x))
(/.f32 (+.f32 (pow.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) (-.f32 (*.f32 x x) (*.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x))))
(fma.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(+.f32 (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x)
(+.f32 x (*.f32 (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))))
(*.f32 (pow.f32 x #s(literal 3/2 binary32)) (pow.f32 x #s(literal 3/2 binary32)))
(*.f32 (*.f32 x x) x)
(*.f32 x (*.f32 x x))
(pow.f32 x #s(literal 3 binary32))
(exp.f32 (*.f32 (log.f32 x) #s(literal 3 binary32)))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) (*.f32 #s(literal 1/5 binary32) (*.f32 x x))) #s(literal 1/9 binary32)) (-.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/3 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 3 binary32)) (pow.f32 #s(literal 1/3 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) (-.f32 #s(literal 1/9 binary32) (*.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/3 binary32)))))
(fma.f32 (*.f32 #s(literal 1/5 binary32) x) x #s(literal 1/3 binary32))
(fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32))
(fma.f32 (*.f32 x x) #s(literal 1/5 binary32) #s(literal 1/3 binary32))
(+.f32 (*.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/3 binary32))
(+.f32 #s(literal 1/3 binary32) (*.f32 #s(literal 1/5 binary32) (*.f32 x x)))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
(*.f32 x (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) (*.f32 #s(literal 2/3 binary32) (*.f32 x x))) #s(literal 4 binary32)) (-.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 3 binary32)) (pow.f32 #s(literal 2 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) (-.f32 #s(literal 4 binary32) (*.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)))))
(fma.f32 (*.f32 #s(literal 2/3 binary32) x) x #s(literal 2 binary32))
(fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (*.f32 x x) #s(literal 2/3 binary32) #s(literal 2 binary32))
(+.f32 (*.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32))
(+.f32 #s(literal 2 binary32) (*.f32 #s(literal 2/3 binary32) (*.f32 x x)))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(*.f32 x (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)))
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)) #s(literal 4 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 3 binary32)) (pow.f32 #s(literal 2 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (-.f32 #s(literal 4 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))))
(fma.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32))
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 (*.f32 x x) (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) #s(literal 2 binary32))
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(+.f32 #s(literal 2 binary32) (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) (*.f32 #s(literal 2/7 binary32) (*.f32 x x))) #s(literal 4/25 binary32)) (-.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) #s(literal 2/5 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) #s(literal 3 binary32)) (pow.f32 #s(literal 2/5 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) (-.f32 #s(literal 4/25 binary32) (*.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) #s(literal 2/5 binary32)))))
(fma.f32 (*.f32 #s(literal 2/7 binary32) x) x #s(literal 2/5 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
(fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32))
(+.f32 (*.f32 #s(literal 2/7 binary32) (*.f32 x x)) #s(literal 2/5 binary32))
(+.f32 #s(literal 2/5 binary32) (*.f32 #s(literal 2/7 binary32) (*.f32 x x)))
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x)) #s(literal 4/9 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) #s(literal 2/3 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) #s(literal 3 binary32)) (pow.f32 #s(literal 2/3 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) (-.f32 #s(literal 4/9 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) #s(literal 2/3 binary32)))))
(fma.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x #s(literal 2/3 binary32))
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 (*.f32 x x) (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) #s(literal 2/3 binary32))
(+.f32 (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x) #s(literal 2/3 binary32))
(+.f32 #s(literal 2/3 binary32) (*.f32 (*.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) x) x))

eval23.0ms (0.3%)

Memory
5.2MiB live, 54.8MiB allocated; 17ms collecting garbage
Compiler

Compiled 4 618 to 666 computations (85.6% saved)

prune6.0ms (0.1%)

Memory
18.1MiB live, 18.1MiB allocated; 0ms collecting garbage
Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New1421143
Fresh000
Picked044
Done044
Total1429151
Accuracy
100.0%
Counts
151 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
97.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
98.5%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
96.1%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
98.6%
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
97.8%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Compiler

Compiled 191 to 135 computations (29.3% saved)

simplify254.0ms (3.4%)

Memory
16.1MiB live, 241.3MiB allocated; 40ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
cost-diff0
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
cost-diff0
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
cost-diff1
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021152
031152
156152
2160152
3682152
42821152
56965152
08311144
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
#s(literal 2/7 binary32)
(*.f32 x x)
x
#s(literal 2/5 binary32)
#s(literal 2/3 binary32)
#s(literal 2 binary32)
Outputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
#s(literal 1/2 binary32)
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x))
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
(*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x)
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32))
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
(fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32))
#s(literal 2/7 binary32)
(*.f32 x x)
x
#s(literal 2/5 binary32)
#s(literal 2/3 binary32)
#s(literal 2 binary32)

localize53.0ms (0.7%)

Memory
3.6MiB live, 91.8MiB allocated; 10ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.04296875
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
accuracy0.16015625
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
accuracy0.30859375
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
accuracy0.3568726175448778
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
Samples
40.0ms256×0valid
Compiler

Compiled 125 to 23 computations (81.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 32.0ms
const: 11.0ms (34.3% of total)
ival-mult: 10.0ms (31.2% of total)
ival-add: 5.0ms (15.6% of total)
ival-div: 2.0ms (6.2% of total)
ival-log1p: 2.0ms (6.2% of total)
ival-sub: 1.0ms (3.1% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0%)

Memory
4.2MiB live, 4.2MiB allocated; 0ms collecting garbage
Counts
6 → 42
Calls
Call 1
Inputs
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
Outputs
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* 2/3 x)
(* x (+ 2/3 (* 2/5 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(* 2/7 (pow x 6))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(* 2/7 (pow x 7))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 5))
(* (pow x 5) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) x) (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x))
1.0ms
x
@inf
((+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) x) (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x))
1.0ms
x
@0
((+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (log (+ 1 (/ (+ x x) (- 1 x)))) (* (+ (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x) 2) x) (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) (* (* (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) x) x))

simplify145.0ms (1.9%)

Memory
3.0MiB live, 147.6MiB allocated; 22ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0130528
1472521
21602515
37766515
08241488
Stop Event
iter limit
node limit
Counts
42 → 41
Calls
Call 1
Inputs
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* 2/3 x)
(* x (+ 2/3 (* 2/5 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(* 2/7 (pow x 6))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(* 2/7 (pow x 7))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(* 2/7 (pow x 5))
(* (pow x 5) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(* (pow x 5) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
Outputs
2
#s(literal 2 binary32)
(+ 2 (* 2/3 (pow x 2)))
(fma.f32 (*.f32 x x) #s(literal 2/3 binary32) #s(literal 2 binary32))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))
(fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(* 2 x)
(*.f32 #s(literal 2 binary32) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f32 (fma.f32 (*.f32 x x) #s(literal 2/3 binary32) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)
(* 2/3 x)
(*.f32 #s(literal 2/3 binary32) x)
(* x (+ 2/3 (* 2/5 (pow x 2))))
(*.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) x)
(* x (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(* 2/3 (pow x 2))
(*.f32 (*.f32 x x) #s(literal 2/3 binary32))
(* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))
(*.f32 (*.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(* 2/7 (pow x 6))
(*.f32 (pow.f32 x #s(literal 6 binary32)) #s(literal 2/7 binary32))
(* (pow x 6) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)) (pow.f32 x #s(literal 6 binary32)))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 6 binary32)))
(* (pow x 6) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(*.f32 (-.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (/.f32 #s(literal -2 binary32) (pow.f32 x #s(literal 6 binary32)))) (pow.f32 x #s(literal 6 binary32)))
(* 1/2 (log -1))
(*.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal 1 binary32)) x)) (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(log -1)
(log.f32 #s(literal -1 binary32))
(+ (log -1) (* 2 (/ 1 x)))
(-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 #s(literal -2 binary32) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(-.f32 (+.f32 (/.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (*.f32 x x)) #s(literal 2 binary32)) x) (log.f32 #s(literal -1 binary32))) (/.f32 #s(literal -2/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(* 2/7 (pow x 7))
(*.f32 (pow.f32 x #s(literal 7 binary32)) #s(literal 2/7 binary32))
(* (pow x 7) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 7 binary32)) (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (pow.f32 x #s(literal 7 binary32)) (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))))
(* (pow x 7) (+ 2/7 (+ (/ 2/3 (pow x 4)) (+ (* 2/5 (/ 1 (pow x 2))) (* 2 (/ 1 (pow x 6)))))))
(*.f32 (pow.f32 x #s(literal 7 binary32)) (-.f32 (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))) (/.f32 #s(literal -2 binary32) (pow.f32 x #s(literal 6 binary32)))))
(* 2/7 (pow x 5))
(*.f32 (pow.f32 x #s(literal 5 binary32)) #s(literal 2/7 binary32))
(* (pow x 5) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 5 binary32)) (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32)))
(* (pow x 5) (+ 2/7 (+ (/ 2/3 (pow x 4)) (* 2/5 (/ 1 (pow x 2))))))
(*.f32 (pow.f32 x #s(literal 5 binary32)) (-.f32 (+.f32 (/.f32 #s(literal 2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32)) (/.f32 #s(literal -2/5 binary32) (*.f32 x x))))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 (+.f32 (/.f32 #s(literal -1/3 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1 binary32))) (neg.f32 x)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f32 (-.f32 (log.f32 #s(literal -1 binary32)) (/.f32 (-.f32 #s(literal -2/3 binary32) (/.f32 #s(literal 2/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 3 binary32)))) (/.f32 #s(literal -2 binary32) x))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (+.f32 (/.f32 #s(literal -2/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32))))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 2/3 (* 2 (/ 1 (pow x 2)))) (pow x 4))) (+ 2/7 (* 2/5 (/ 1 (pow x 2)))))))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (-.f32 (/.f32 (-.f32 #s(literal -2/3 binary32) (/.f32 (/.f32 #s(literal 2 binary32) x) x)) (pow.f32 x #s(literal 4 binary32))) (+.f32 (/.f32 #s(literal 2/5 binary32) (*.f32 x x)) #s(literal 2/7 binary32))))
(* -1 (* (pow x 5) (- (* -1 (/ (+ 2/5 (* 2/3 (/ 1 (pow x 2)))) (pow x 2))) 2/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 5 binary32))) (+.f32 (/.f32 #s(literal -2/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -2/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 2/7 binary32))))

rewrite38.0ms (0.5%)

Memory
-27.3MiB live, 18.3MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021126
031126
0128118
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
6 → 17
Calls
Call 1
Inputs
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x))
(*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)
(*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
Outputs
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)) #s(literal 4 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 3 binary32)) (pow.f32 #s(literal 2 binary32) #s(literal 3 binary32))) (fma.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) (-.f32 #s(literal 4 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)))))
(fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32))
(fma.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32))
(fma.f32 x (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) #s(literal 2 binary32))
(+.f32 #s(literal 2 binary32) (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x))
(+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32))
(*.f32 #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x)) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x)))
#s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x))
(*.f32 (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)) x)
(*.f32 x (fma.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x #s(literal 2 binary32)))
(*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x)
(*.f32 x (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)))
(*.f32 (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x)
(*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x))
(*.f32 x (*.f32 (fma.f32 (fma.f32 (*.f32 x x) #s(literal 2/7 binary32) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x))

eval5.0ms (0.1%)

Memory
8.1MiB live, 8.1MiB allocated; 0ms collecting garbage
Compiler

Compiled 2 173 to 325 computations (85% saved)

prune6.0ms (0.1%)

Memory
13.5MiB live, 13.5MiB allocated; 0ms collecting garbage
Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New58058
Fresh000
Picked011
Done088
Total58967
Accuracy
100.0%
Counts
67 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.7%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
97.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
98.8%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
98.5%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
96.1%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
98.6%
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
97.8%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Compiler

Compiled 487 to 210 computations (56.9% saved)

regimes292.0ms (3.9%)

Memory
-77.0MiB live, 82.5MiB allocated; 60ms collecting garbage
Counts
14 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 x (/.f32 #s(literal 2 binary32) (-.f32 #s(literal 1 binary32) x)))))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
Calls

4 calls:

279.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
4.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
4.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
4.0ms
x
Results
AccuracySegmentsBranch
99.7%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
99.7%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
99.7%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
99.7%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes13.0ms (0.2%)

Memory
27.4MiB live, 27.4MiB allocated; 0ms collecting garbage
Counts
11 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) #s(literal 1/3 binary32) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
#s(approx (* 1/2 (log (+ 1 (/ (+ x x) (- 1 x))))) (fma.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/5 binary32) (*.f32 x x) #s(literal 1/3 binary32)) x))
Outputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
Calls

4 calls:

3.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
3.0ms
x
3.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
3.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
Results
AccuracySegmentsBranch
98.8%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
98.8%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
98.8%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
98.8%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes38.0ms (0.5%)

Memory
-20.8MiB live, 23.0MiB allocated; 5ms collecting garbage
Counts
7 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
Outputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
Calls

4 calls:

31.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
2.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
2.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
2.0ms
x
Results
AccuracySegmentsBranch
98.8%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
98.8%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
98.8%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
98.8%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes8.0ms (0.1%)

Memory
23.2MiB live, 23.2MiB allocated; 0ms collecting garbage
Counts
5 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
Outputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
Calls

4 calls:

2.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
2.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
2.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
2.0ms
x
Results
AccuracySegmentsBranch
98.5%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
98.5%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
98.5%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
98.5%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes33.0ms (0.4%)

Memory
-35.8MiB live, 10.8MiB allocated; 4ms collecting garbage
Counts
4 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)))
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Calls

4 calls:

2.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
2.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
2.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
2.0ms
x
Results
AccuracySegmentsBranch
97.8%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
97.8%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
97.8%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
97.8%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes4.0ms (0.1%)

Memory
8.1MiB live, 8.1MiB allocated; 0ms collecting garbage
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
Outputs
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
Calls

4 calls:

1.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
1.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
1.0ms
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
1.0ms
x
Results
AccuracySegmentsBranch
96.1%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
96.1%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
96.1%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
96.1%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

simplify46.0ms (0.6%)

Memory
33.7MiB live, 33.7MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047136
160136
282136
3162136
4747136
57264136
Stop Event
node limit
Calls
Call 1
Inputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (+ x x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (+.f32 (*.f32 (*.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) x) x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 (fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32)) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 (fma.f32 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32)) (*.f32 x x) #s(literal 2 binary32)) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))

derivations932.0ms (12.4%)

Memory
-40.6MiB live, 388.4MiB allocated; 60ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039246
060240
0253228
0137541
1504515
21870508
08356477
035199
057189
0206189
0106302
1386291
21450282
37495282
08201262
0928
01528
15328
036028
Stop Event
done
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
node limit
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
node limit
iter limit
iter limit
iter limit
unsound
iter limit
Compiler

Compiled 136 to 46 computations (66.2% saved)

preprocess57.0ms (0.8%)

Memory
53.8MiB live, 93.7MiB allocated; 11ms collecting garbage
Compiler

Compiled 292 to 110 computations (62.3% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...