Rust f32::atanh

Time bar (total: 4.5s)

start0.0ms (0%)

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

analyze1.0ms (0%)

Memory
2.5MiB live, 2.5MiB 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)

sample1.1s (24.3%)

Memory
-74.1MiB live, 513.7MiB allocated; 1.2s collecting garbage
Samples
939.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 83.0ms
ival-atanh: 73.0ms (87.8% of total)
ival-true: 5.0ms (6% of total)
ival-assert: 3.0ms (3.6% of total)
adjust: 2.0ms (2.4% of total)
Bogosity

explain90.0ms (2%)

Memory
25.4MiB live, 166.9MiB allocated; 26ms 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
36.0ms512×0valid
Compiler

Compiled 92 to 31 computations (66.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 24.0ms
ival-div: 9.0ms (38.3% of total)
ival-mult: 7.0ms (29.8% of total)
ival-log1p: 4.0ms (17% of total)
ival-sub: 3.0ms (12.8% of total)
exact: 1.0ms (4.3% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess217.0ms (4.8%)

Memory
-26.3MiB live, 212.5MiB allocated; 35ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
0910
01510
12410
24010
310810
444410
5229010
6565510
0806510
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.2MiB live, 0.2MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.4MiB live, 1.4MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.9%
(*.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)

simplify241.0ms (5.3%)

Memory
15.9MiB live, 204.3MiB allocated; 19ms 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
5229035
6565535
0806535
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)

localize81.0ms (1.8%)

Memory
-2.7MiB live, 52.2MiB allocated; 7ms 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.0390625
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
Samples
75.0ms256×0valid
Compiler

Compiled 41 to 11 computations (73.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 57.0ms
ival-mult: 52.0ms (90.7% of total)
ival-div: 2.0ms (3.5% of total)
ival-log1p: 2.0ms (3.5% of total)
ival-sub: 1.0ms (1.7% 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
7.2MiB live, 7.2MiB 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
@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))
1.0ms
x
@-inf
((* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (/ (* 2 x) (- 1 x)) (* 2 x))

simplify196.0ms (4.3%)

Memory
-6.2MiB live, 186.5MiB allocated; 37ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0106302
1386291
21450282
37495282
08200262
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))

rewrite107.0ms (2.4%)

Memory
-5.0MiB live, 133.7MiB allocated; 14ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
01528
15328
036528
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 29
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 (*.f32 #s(literal 8 binary32) (pow.f32 (/.f32 x (-.f32 #s(literal 1 binary32) x)) #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))))
(+.f32 x x)

eval11.0ms (0.2%)

Memory
-17.4MiB live, 34.3MiB allocated; 6ms collecting garbage
Compiler

Compiled 950 to 246 computations (74.1% saved)

prune5.0ms (0.1%)

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

8 alts after pruning (8 fresh and 0 done)

PrunedKeptTotal
New45853
Fresh000
Picked101
Done000
Total46854
Accuracy
100.0%
Counts
54 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.9%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.6%
(*.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)))
99.4%
(*.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)))
99.1%
(*.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)))
97.6%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
99.7%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
99.5%
#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))
99.2%
#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 352 to 256 computations (27.3% saved)

simplify201.0ms (4.4%)

Memory
-16.6MiB live, 213.8MiB allocated; 34ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
cost-diff0
(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))
cost-diff0
(pow.f32 x #s(literal 3 binary32))
cost-diff0
(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)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
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
037262
060250
1107250
2310250
31555250
46560250
08066250
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)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(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)
(pow.f32 x #s(literal 3 binary32))
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))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
#s(literal 1/7 binary32)
(*.f32 x x)
#s(literal 1/5 binary32)
#s(literal 1/3 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 x (+.f32 #s(literal -1 binary32) x)) #s(literal -2 binary32))) #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 x (+.f32 #s(literal -1 binary32) x)) #s(literal -2 binary32)))
(/.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)
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(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)
(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.f32 x #s(literal 3 binary32))
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))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
#s(literal 1/7 binary32)
(*.f32 x x)
#s(literal 1/5 binary32)
#s(literal 1/3 binary32)

localize180.0ms (4%)

Memory
21.6MiB live, 204.2MiB allocated; 68ms collecting garbage
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f32 x x)
accuracy0.0078125
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
accuracy0.0390625
(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))
accuracy0.09439430191109
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
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.26524772326667967
#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.0
(*.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)))
accuracy0.03515625
(*.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.04296875
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
accuracy0.15913290905889882
#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)))
accuracy0.7739922425036881
#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.0390625
(/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))
Samples
154.0ms256×0valid
Compiler

Compiled 220 to 36 computations (83.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 92.0ms
ival-mult: 54.0ms (58.7% of total)
const: 15.0ms (16.3% of total)
ival-add: 9.0ms (9.8% of total)
ival-pow: 5.0ms (5.4% of total)
ival-div: 4.0ms (4.4% of total)
ival-log1p: 4.0ms (4.4% of total)
ival-sub: 1.0ms (1.1% of total)
exact: 1.0ms (1.1% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series10.0ms (0.2%)

Memory
19.7MiB live, 19.7MiB allocated; 0ms collecting garbage
Counts
20 → 60
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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(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)
(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))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
(*.f32 x 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)))))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))
(pow x 3)
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
1/5
(+ 1/5 (* 1/7 (pow x 2)))
(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))))
(* 1/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* 2/5 (pow x 2))
(* (pow x 2) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/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 (/ (+ 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 (* (pow x 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
Calls

3 calls:

TimeVariablePointExpression
4.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 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 2/5 (* x x)) 2/3) (+ (* 1/7 (* x x)) 1/5) (* x x))
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 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 2/5 (* x x)) 2/3) (+ (* 1/7 (* x x)) 1/5) (* x x))
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 (/ (* 2 x) (- 1 x))))) (+ (* (pow x 3) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 2/5 (* x x)) 2/3) (+ (* 1/7 (* x x)) 1/5) (* x x))

simplify235.0ms (5.2%)

Memory
-5.1MiB live, 244.6MiB allocated; 112ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0162620
1590607
22131596
08559565
Stop Event
iter limit
node limit
Counts
60 → 59
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)
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
2/3
(+ 2/3 (* 2/5 (pow x 2)))
1/5
(+ 1/5 (* 1/7 (pow x 2)))
(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))))
(* 1/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* 2/5 (pow x 2))
(* (pow x 2) (+ 2/5 (* 2/3 (/ 1 (pow x 2)))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/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 (/ (+ 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 (* (pow x 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow 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)
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))
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))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
(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))
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/5
#s(literal 1/5 binary32)
(+ 1/5 (* 1/7 (pow x 2)))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
(pow x 2)
(*.f32 x 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))
(* 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)
(* 1/7 (pow x 7))
(*.f32 (pow.f32 x #s(literal 7 binary32)) #s(literal 1/7 binary32))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32)) (/.f32 #s(literal -1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(*.f32 (+.f32 (+.f32 #s(literal 1/7 binary32) (/.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 6 binary32)))) (/.f32 (/.f32 (-.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal -1/5 binary32)) x) x)) (pow.f32 x #s(literal 7 binary32)))
(* 1/7 (pow x 4))
(*.f32 (pow.f32 x #s(literal 4 binary32)) #s(literal 1/7 binary32))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)) (pow.f32 x #s(literal 4 binary32)))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32)) (/.f32 #s(literal -1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 4 binary32)))
(* 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/7 (pow x 2))
(*.f32 #s(literal 1/7 binary32) (*.f32 x x))
(* (pow x 2) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 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 (/.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))
(* -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 (* (pow x 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (+.f32 (/.f32 #s(literal -1/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32))))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (-.f32 (/.f32 (-.f32 #s(literal -1/3 binary32) (/.f32 (/.f32 #s(literal 1 binary32) x) x)) (pow.f32 x #s(literal 4 binary32))) (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32))))

rewrite34.0ms (0.8%)

Memory
-8.0MiB live, 39.0MiB allocated; 1ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037234
060222
0240222
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
20 → 78
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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(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)
(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))
(fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #s(literal 2/3 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
(*.f32 x x)
Outputs
(log.f32 (pow.f32 (fma.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 1 binary32)) #s(literal 1/2 binary32)))
(*.f32 (log1p.f32 (*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))) #s(literal 1/2 binary32))
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)))))
(log.f32 (fma.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x)) #s(literal 1 binary32)))
(log1p.f32 (*.f32 #s(literal 2 binary32) (/.f32 x (-.f32 #s(literal 1 binary32) x))))
(*.f32 #s(literal 2 binary32) (/.f32 x (-.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)) #s(literal 8 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)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(/.f32 (-.f32 (*.f32 (*.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))) (*.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)))) (*.f32 x x)) (-.f32 (*.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))
(/.f32 (+.f32 (pow.f32 (*.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))) #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 (*.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))) (*.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))) (-.f32 (*.f32 x x) (*.f32 (*.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))))
(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)
(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)
(+.f32 (*.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)
(+.f32 x (*.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))))
(/.f32 (-.f32 (*.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x)) #s(literal 1/9 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32)) #s(literal 1/27 binary32)) (fma.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (-.f32 #s(literal 1/9 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32)))))
(fma.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x #s(literal 1/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))
(fma.f32 (*.f32 x x) (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) #s(literal 1/3 binary32))
(+.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))
(+.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) 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)) #s(literal 8/27 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)))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (*.f32 #s(literal 1/7 binary32) (*.f32 x x))) #s(literal 1/25 binary32)) (-.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 3 binary32)) #s(literal 1/125 binary32)) (fma.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (-.f32 #s(literal 1/25 binary32) (*.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32)))))
(fma.f32 (*.f32 #s(literal 1/7 binary32) x) x #s(literal 1/5 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
(fma.f32 (*.f32 x x) #s(literal 1/7 binary32) #s(literal 1/5 binary32))
(+.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32))
(+.f32 #s(literal 1/5 binary32) (*.f32 #s(literal 1/7 binary32) (*.f32 x x)))
(*.f32 (neg.f32 x) (neg.f32 x))
(*.f32 (fabs.f32 x) (fabs.f32 x))
(*.f32 x x)
(pow.f32 x #s(literal 2 binary32))

eval21.0ms (0.5%)

Memory
-24.7MiB live, 32.5MiB allocated; 6ms collecting garbage
Compiler

Compiled 4 395 to 637 computations (85.5% saved)

prune5.0ms (0.1%)

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

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New1454149
Fresh303
Picked235
Done000
Total1507157
Accuracy
100.0%
Counts
157 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.9%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.6%
(*.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)))
99.1%
(*.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)))
99.4%
(*.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.6%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
99.7%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
99.2%
#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 156 to 107 computations (31.4% saved)

simplify164.0ms (3.6%)

Memory
10.5MiB live, 138.8MiB allocated; 27ms 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
(*.f32 x x)
cost-diff0
(fma.f32 (*.f32 (*.f32 x x) x) (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)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
cost-diff2
(*.f32 (*.f32 x x) 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
038298
060298
1118286
2400286
32019286
47450286
08070274
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 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
(fma.f32 (*.f32 (*.f32 x x) x) (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)
(*.f32 (*.f32 x x) x)
(*.f32 x x)
x
(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))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
#s(literal 1/7 binary32)
#s(literal 1/5 binary32)
#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 (/ (* 2 x) (- 1 x))))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
(fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 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 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
(fma.f32 (*.f32 (*.f32 x x) x) (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)
(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)
(*.f32 (*.f32 x x) x)
(pow.f32 x #s(literal 3 binary32))
(*.f32 x x)
x
(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))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
#s(literal 1/7 binary32)
#s(literal 1/5 binary32)
#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)

localize198.0ms (4.4%)

Memory
18.9MiB live, 158.7MiB allocated; 50ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0078125
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
accuracy0.0390625
(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.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.09439430191109
#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.0390625
(*.f32 (fma.f32 #s(literal 2/3 binary32) (*.f32 x x) #s(literal 2 binary32)) x)
accuracy0.26524772326667967
#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.0078125
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
accuracy0.0390625
(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))
accuracy0.07421875
(*.f32 (*.f32 x x) x)
accuracy0.09439430191109
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
accuracy0.0
(fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x)
accuracy0.0
(*.f32 x x)
accuracy0.07421875
(*.f32 (*.f32 x x) x)
accuracy0.26524772326667967
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) #s(literal 1/3 binary32) x))
Samples
176.0ms256×0valid
Compiler

Compiled 234 to 41 computations (82.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 120.0ms
ival-mult: 60.0ms (50.2% of total)
const: 33.0ms (27.6% of total)
ival-add: 10.0ms (8.4% of total)
ival-log1p: 10.0ms (8.4% of total)
ival-div: 4.0ms (3.3% of total)
ival-sub: 2.0ms (1.7% 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)

series13.0ms (0.3%)

Memory
-23.2MiB live, 22.0MiB allocated; 10ms collecting garbage
Counts
18 → 66
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 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
(fma.f32 (*.f32 (*.f32 x x) x) (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)
(*.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 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/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))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 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)
(* 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)))))))
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
1/5
(+ 1/5 (* 1/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)))))
2/5
(+ 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/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(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)))))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/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))))))
(* 2/7 (pow x 2))
(* (pow x 2) (+ 2/7 (* 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 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
(+ (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
7.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 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (* 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) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 1/7 (* x x)) 1/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (+ (* 2/7 (* x x)) 2/5))
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 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (* 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) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 1/7 (* x x)) 1/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (+ (* 2/7 (* x x)) 2/5))
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 (/ (* 2 x) (- 1 x))))) (+ (* (* (* x x) x) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3)) x) (* 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) (+ (* (+ (* 1/7 (* x x)) 1/5) (* x x)) 1/3) (+ (* 1/7 (* x x)) 1/5) (+ (* (+ (* 2/7 (* x x)) 2/5) (* x x)) 2/3) (+ (* 2/7 (* x x)) 2/5))

simplify195.0ms (4.3%)

Memory
-33.3MiB live, 273.4MiB allocated; 43ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0159710
1589701
22034694
08064660
Stop Event
iter limit
node limit
Counts
66 → 65
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)
(* 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)))))))
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
1/5
(+ 1/5 (* 1/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)))))
2/5
(+ 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/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(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)))))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/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))))))
(* 2/7 (pow x 2))
(* (pow x 2) (+ 2/7 (* 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 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
(+ (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)
(* 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))
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))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
(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))
1/5
#s(literal 1/5 binary32)
(+ 1/5 (* 1/7 (pow x 2)))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/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))
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))
(* 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/7 (pow x 7))
(*.f32 (pow.f32 x #s(literal 7 binary32)) #s(literal 1/7 binary32))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32)) (/.f32 #s(literal -1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(*.f32 (+.f32 (+.f32 (/.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 6 binary32))) #s(literal 1/7 binary32)) (/.f32 (/.f32 (-.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal -1/5 binary32)) x) x)) (pow.f32 x #s(literal 7 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 (+.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/7 (pow x 4))
(*.f32 (pow.f32 x #s(literal 4 binary32)) #s(literal 1/7 binary32))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 4 binary32)) (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32)) (/.f32 #s(literal -1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 4 binary32)))
(* 1/7 (pow x 2))
(*.f32 #s(literal 1/7 binary32) (*.f32 x x))
(* (pow x 2) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/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)))
(* 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))
(+ (* -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)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (+.f32 (/.f32 #s(literal -1/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32))))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (-.f32 (/.f32 (-.f32 #s(literal -1/3 binary32) (/.f32 (/.f32 #s(literal 1 binary32) x) x)) (pow.f32 x #s(literal 4 binary32))) (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 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))))

rewrite33.0ms (0.7%)

Memory
26.1MiB live, 26.1MiB allocated; 0ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038268
060258
0268246
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
18 → 75
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 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
(fma.f32 (*.f32 (*.f32 x x) x) (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)
(*.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 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/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))
(fma.f32 #s(literal 2/7 binary32) (*.f32 x x) #s(literal 2/5 binary32))
Outputs
(*.f32 (*.f32 x x) x)
(*.f32 x (*.f32 x x))
(pow.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 (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))
(/.f32 (-.f32 (*.f32 (*.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))) (*.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)))) (*.f32 x x)) (-.f32 (*.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))
(/.f32 (+.f32 (pow.f32 (*.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))) #s(literal 3 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 (*.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))) (*.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))) (-.f32 (*.f32 x x) (*.f32 (*.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))))
(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)
(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)
(fma.f32 (*.f32 x x) (*.f32 x (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)
(+.f32 (*.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)
(+.f32 x (*.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))))
(*.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)) #s(literal 8 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)) #s(literal 8 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 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x)) #s(literal 1/9 binary32)) (-.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32)) #s(literal 1/27 binary32)) (fma.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) (-.f32 #s(literal 1/9 binary32) (*.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32)))))
(fma.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x #s(literal 1/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))
(fma.f32 (*.f32 x x) (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) #s(literal 1/3 binary32))
(+.f32 (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))
(+.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 (fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32)) x) x))
(/.f32 (-.f32 (*.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (*.f32 #s(literal 1/7 binary32) (*.f32 x x))) #s(literal 1/25 binary32)) (-.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32)))
(/.f32 (+.f32 (pow.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 3 binary32)) #s(literal 1/125 binary32)) (fma.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) (-.f32 #s(literal 1/25 binary32) (*.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32)))))
(fma.f32 (*.f32 #s(literal 1/7 binary32) x) x #s(literal 1/5 binary32))
(fma.f32 #s(literal 1/7 binary32) (*.f32 x x) #s(literal 1/5 binary32))
(fma.f32 (*.f32 x x) #s(literal 1/7 binary32) #s(literal 1/5 binary32))
(+.f32 (*.f32 #s(literal 1/7 binary32) (*.f32 x x)) #s(literal 1/5 binary32))
(+.f32 #s(literal 1/5 binary32) (*.f32 #s(literal 1/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)) #s(literal 8/27 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))
(/.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)) #s(literal 8/125 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)))

eval24.0ms (0.5%)

Memory
-5.6MiB live, 37.4MiB allocated; 8ms collecting garbage
Compiler

Compiled 5 939 to 770 computations (87% saved)

prune6.0ms (0.1%)

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

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New1711172
Fresh000
Picked044
Done033
Total1718179
Accuracy
100.0%
Counts
179 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.9%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.6%
(*.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)))
99.1%
(*.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)))
99.4%
(*.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.6%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
99.7%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
99.5%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
99.2%
#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 190 to 130 computations (31.6% saved)

simplify150.0ms (3.3%)

Memory
10.6MiB live, 147.3MiB allocated; 39ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f32 x x)
cost-diff0
(fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 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) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
cost-diff2
(*.f32 (*.f32 x x) x)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02289
02889
16083
220883
397783
4325783
5703483
0824977
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) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(*.f32 (*.f32 x x) x)
(*.f32 x x)
x
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
#s(literal 1/5 binary32)
#s(literal 1/3 binary32)
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(fma.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(*.f32 (*.f32 x x) x)
(pow.f32 x #s(literal 3 binary32))
(*.f32 x x)
x
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
#s(literal 1/5 binary32)
#s(literal 1/3 binary32)

localize85.0ms (1.9%)

Memory
-21.1MiB live, 66.6MiB allocated; 16ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0390625
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
accuracy0.07421875
(*.f32 (*.f32 x x) x)
accuracy0.09439430191109
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
accuracy0.8729484286306711
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
Samples
72.0ms256×0valid
Compiler

Compiled 66 to 22 computations (66.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 29.0ms
ival-mult: 11.0ms (38.5% of total)
const: 8.0ms (28% of total)
ival-add: 3.0ms (10.5% of total)
ival-div: 2.0ms (7% of total)
ival-log1p: 2.0ms (7% of total)
ival-sub: 1.0ms (3.5% 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)

series4.0ms (0.1%)

Memory
6.0MiB live, 6.0MiB allocated; 0ms collecting garbage
Counts
6 → 27
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) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(*.f32 x x)
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/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/5
(+ 1/5 (* 1/7 (pow x 2)))
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/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/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/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 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
Calls

3 calls:

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

simplify178.0ms (3.9%)

Memory
12.2MiB live, 197.1MiB allocated; 58ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
084294
1273288
2887284
33841280
08262264
Stop Event
iter limit
node limit
Counts
27 → 26
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/5
(+ 1/5 (* 1/7 (pow x 2)))
1/3
(+ 1/3 (* 1/5 (pow x 2)))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/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/7 (pow x 7))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(* 1/7 (pow x 2))
(* (pow x 2) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* 1/7 (pow x 4))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/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 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/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 (*.f32 x x) #s(literal 1/5 binary32) #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 (*.f32 x x) #s(literal 1/7 binary32) #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/5
#s(literal 1/5 binary32)
(+ 1/5 (* 1/7 (pow x 2)))
(fma.f32 (*.f32 x x) #s(literal 1/7 binary32) #s(literal 1/5 binary32))
1/3
#s(literal 1/3 binary32)
(+ 1/3 (* 1/5 (pow x 2)))
(fma.f32 (*.f32 x x) #s(literal 1/5 binary32) #s(literal 1/3 binary32))
(+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))
(fma.f32 (fma.f32 (*.f32 x x) #s(literal 1/7 binary32) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/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)))
(-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x)) (/.f32 #s(literal -1/3 binary32) (pow.f32 x #s(literal 3 binary32))))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(-.f32 (-.f32 (fma.f32 (log.f32 #s(literal -1 binary32)) #s(literal 1/2 binary32) (/.f32 #s(literal 1 binary32) x)) (/.f32 #s(literal -1/3 binary32) (pow.f32 x #s(literal 3 binary32)))) (/.f32 #s(literal -1/5 binary32) (pow.f32 x #s(literal 5 binary32))))
(* 1/7 (pow x 7))
(*.f32 (pow.f32 x #s(literal 7 binary32)) #s(literal 1/7 binary32))
(* (pow x 7) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(*.f32 (-.f32 (+.f32 (/.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32)) (/.f32 #s(literal -1/5 binary32) (*.f32 x x))) (pow.f32 x #s(literal 7 binary32)))
(* (pow x 7) (+ 1/7 (+ (/ 1/3 (pow x 4)) (+ (* 1/5 (/ 1 (pow x 2))) (/ 1 (pow x 6))))))
(*.f32 (+.f32 (+.f32 (/.f32 #s(literal 1 binary32) (pow.f32 x #s(literal 6 binary32))) #s(literal 1/7 binary32)) (/.f32 (/.f32 (-.f32 (/.f32 #s(literal 1/3 binary32) (*.f32 x x)) #s(literal -1/5 binary32)) x) x)) (pow.f32 x #s(literal 7 binary32)))
(* 1/7 (pow x 2))
(*.f32 (*.f32 x x) #s(literal 1/7 binary32))
(* (pow x 2) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(fma.f32 (*.f32 x x) #s(literal 1/7 binary32) #s(literal 1/5 binary32))
(* 1/7 (pow x 4))
(*.f32 (pow.f32 x #s(literal 4 binary32)) #s(literal 1/7 binary32))
(* (pow x 4) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))
(*.f32 (pow.f32 x #s(literal 4 binary32)) (-.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal -1/7 binary32)))
(* (pow x 4) (+ 1/7 (+ (/ 1/3 (pow x 4)) (* 1/5 (/ 1 (pow x 2))))))
(fma.f32 (pow.f32 x #s(literal 4 binary32)) (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32)) #s(literal 1/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 (/.f32 (-.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal -1/3 binary32)) x) x) #s(literal 1 binary32)) x))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/5 (* 1/3 (/ 1 (pow x 2)))) (pow x 2))) 1/7)))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (+.f32 (/.f32 #s(literal -1/5 binary32) (*.f32 x x)) (-.f32 (/.f32 #s(literal -1/3 binary32) (pow.f32 x #s(literal 4 binary32))) #s(literal 1/7 binary32))))
(* -1 (* (pow x 7) (- (* -1 (/ (+ 1/3 (/ 1 (pow x 2))) (pow x 4))) (+ 1/7 (* 1/5 (/ 1 (pow x 2)))))))
(*.f32 (neg.f32 (pow.f32 x #s(literal 7 binary32))) (-.f32 (/.f32 (-.f32 #s(literal -1/3 binary32) (/.f32 (/.f32 #s(literal 1 binary32) x) x)) (pow.f32 x #s(literal 4 binary32))) (+.f32 (/.f32 #s(literal 1/5 binary32) (*.f32 x x)) #s(literal 1/7 binary32))))

rewrite101.0ms (2.2%)

Memory
-11.9MiB live, 95.7MiB allocated; 16ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02286
02880
112779
0103374
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
6 → 83
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) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
(fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(*.f32 x x)
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
Outputs
(*.f32 (*.f32 x (fabs.f32 x)) (fabs.f32 x))
(*.f32 (*.f32 x (neg.f32 x)) (neg.f32 x))
(*.f32 (pow.f32 x #s(literal 3/2 binary32)) (pow.f32 x #s(literal 3/2 binary32)))
(*.f32 (neg.f32 x) (*.f32 (neg.f32 x) x))
(*.f32 (fabs.f32 x) (*.f32 (fabs.f32 x) x))
(*.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 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x))
(/.f32 (-.f32 (*.f32 x x) (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32))) (-.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))))
(/.f32 (neg.f32 (-.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)) (*.f32 x x))) (neg.f32 (-.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x)))
(/.f32 (neg.f32 (+.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #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)))) (neg.f32 (fma.f32 x (-.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)))))
(/.f32 (-.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)) (*.f32 x x)) (-.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #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(approx (+ (* 1/7 (* x x)) 1/5) #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 x x (-.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)) (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (*.f32 (pow.f32 x #s(literal 3 binary32)) x)))))
(/.f32 (+.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #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 x (-.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32))))
(-.f32 (/.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)) (-.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x)) (/.f32 (*.f32 x x) (-.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) x)))
(-.f32 x (*.f32 (neg.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))) (pow.f32 x #s(literal 3 binary32))))
(-.f32 x (*.f32 (neg.f32 (pow.f32 x #s(literal 3 binary32))) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))))
(-.f32 x (*.f32 (neg.f32 (*.f32 x x)) (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)))
(fma.f32 (*.f32 (pow.f32 x #s(literal 3 binary32)) (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x)) x (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (pow.f32 x #s(literal 3 binary32)) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))) (*.f32 x x) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (pow.f32 x #s(literal 3 binary32)) (*.f32 x x)) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) (*.f32 x x)) x (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (*.f32 x x)) x x)
(fma.f32 (*.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) x) (*.f32 x x) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x) (*.f32 x x) x)
(fma.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) (*.f32 x (pow.f32 x #s(literal 3 binary32))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (neg.f32 x) (*.f32 (neg.f32 x) (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)) x)
(fma.f32 (fabs.f32 x) (*.f32 (fabs.f32 x) (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)) x)
(fma.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) (pow.f32 x #s(literal 3 binary32)) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)) x)
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 (*.f32 x x) (pow.f32 x #s(literal 3 binary32))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (pow.f32 x #s(literal 3 binary32)) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) 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)) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)
(fma.f32 (*.f32 x x) (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (pow.f32 x #s(literal 3 binary32))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 x x) (*.f32 x (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 (*.f32 x x) (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x) x)
(fma.f32 x (*.f32 (*.f32 x x) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(fma.f32 x (*.f32 (*.f32 x x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))) x)
(fma.f32 x (*.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x)) x)
(+.f32 (+.f32 x (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) (*.f32 x (pow.f32 x #s(literal 3 binary32))))) (*.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32))))
(+.f32 (/.f32 (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 3 binary32)) (fma.f32 x (-.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)))) (/.f32 (pow.f32 x #s(literal 3 binary32)) (fma.f32 x (-.f32 x (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32)))) (pow.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))) #s(literal 2 binary32)))))
(+.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) (*.f32 x (pow.f32 x #s(literal 3 binary32)))) (fma.f32 #s(literal 1/3 binary32) (pow.f32 x #s(literal 3 binary32)) x))
(+.f32 (*.f32 (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #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(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) (pow.f32 x #s(literal 3 binary32))))
(*.f32 (neg.f32 (neg.f32 x)) (neg.f32 (neg.f32 x)))
(*.f32 (neg.f32 (fabs.f32 x)) (neg.f32 (fabs.f32 x)))
(*.f32 (fabs.f32 (fabs.f32 x)) (fabs.f32 (fabs.f32 x)))
(*.f32 (pow.f32 x #s(literal 1 binary32)) (pow.f32 x #s(literal 1 binary32)))
(*.f32 (pow.f32 x #s(literal 1 binary32)) x)
(*.f32 (neg.f32 x) (neg.f32 x))
(*.f32 (fabs.f32 x) (fabs.f32 x))
(*.f32 x x)
(pow.f32 (neg.f32 x) #s(literal 2 binary32))
(pow.f32 (fabs.f32 x) #s(literal 2 binary32))
(pow.f32 x #s(literal 2 binary32))
(fabs.f32 (*.f32 x x))
(exp.f32 (*.f32 (log.f32 x) #s(literal 2 binary32)))
(neg.f32 (*.f32 x (neg.f32 x)))
(neg.f32 (*.f32 (neg.f32 x) x))
#s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))
(/.f32 (-.f32 #s(literal 1/9 binary32) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32))) (-.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)))
(/.f32 (neg.f32 (-.f32 (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)) #s(literal 1/9 binary32))) (neg.f32 (-.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))))
(/.f32 (neg.f32 (+.f32 #s(literal 1/27 binary32) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32)))) (neg.f32 (fma.f32 #s(literal 1/3 binary32) (-.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)))))
(/.f32 (-.f32 (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)) #s(literal 1/9 binary32)) (-.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32)))
(/.f32 (+.f32 #s(literal 1/27 binary32) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32))) (+.f32 #s(literal 1/9 binary32) (-.f32 (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) (*.f32 x #s(literal 1/3 binary32))))))
(/.f32 (+.f32 #s(literal 1/27 binary32) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32))) (fma.f32 #s(literal 1/3 binary32) (-.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32))))
(-.f32 (/.f32 (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)) (-.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))) (/.f32 #s(literal 1/9 binary32) (-.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))))
(-.f32 #s(literal 1/3 binary32) (*.f32 (neg.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x)) x))
(-.f32 #s(literal 1/3 binary32) (*.f32 (neg.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))) (*.f32 x x)))
(-.f32 #s(literal 1/3 binary32) (*.f32 (neg.f32 (*.f32 x x)) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))))
(fma.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (neg.f32 x)) (neg.f32 x) #s(literal 1/3 binary32))
(fma.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (fabs.f32 x)) (fabs.f32 x) #s(literal 1/3 binary32))
(fma.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x #s(literal 1/3 binary32))
(fma.f32 (neg.f32 x) (*.f32 (neg.f32 x) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))) #s(literal 1/3 binary32))
(fma.f32 (fabs.f32 x) (*.f32 (fabs.f32 x) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32))) #s(literal 1/3 binary32))
(fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32))
(fma.f32 (*.f32 x x) #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) #s(literal 1/3 binary32))
(fma.f32 x (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) #s(literal 1/3 binary32))
(+.f32 (/.f32 (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 3 binary32)) (fma.f32 #s(literal 1/3 binary32) (-.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)))) (/.f32 #s(literal 1/27 binary32) (fma.f32 #s(literal 1/3 binary32) (-.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x)) (pow.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 2 binary32)))))
(+.f32 (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x) #s(literal 1/3 binary32))
(+.f32 #s(literal 1/3 binary32) (*.f32 (*.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) x) x))

eval37.0ms (0.8%)

Memory
-11.1MiB live, 34.5MiB allocated; 3ms collecting garbage
Compiler

Compiled 5 027 to 500 computations (90.1% saved)

prune7.0ms (0.1%)

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

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New1230123
Fresh000
Picked011
Done077
Total1238131
Accuracy
100.0%
Counts
131 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.9%
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
99.6%
(*.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)))
99.1%
(*.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)))
99.4%
(*.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.6%
(*.f32 #s(literal 1/2 binary32) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f32 #s(literal 2 binary32) x)))
99.7%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
99.5%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
99.2%
#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 514 to 209 computations (59.3% saved)

regimes29.0ms (0.6%)

Memory
1.5MiB live, 46.6MiB allocated; 4ms 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)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 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 (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) (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))
(*.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)))
#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))
(*.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 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (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))
Outputs
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (+.f32 x x) (-.f32 #s(literal 1 binary32) x))))
Calls

4 calls:

17.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
4.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))
Results
AccuracySegmentsBranch
99.9%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
99.9%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
99.9%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
99.9%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes26.0ms (0.6%)

Memory
-17.9MiB live, 40.5MiB allocated; 20ms 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)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 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 (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) (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))
(*.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)))
#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))
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
Calls

4 calls:

15.0ms
(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) 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))
3.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.3%)

Memory
-13.5MiB live, 33.0MiB allocated; 3ms collecting garbage
Counts
6 → 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)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 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 (fma.f32 #s(literal 2/5 binary32) (*.f32 x x) #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) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 binary32)) x))
Calls

4 calls:

5.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
99.5%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
99.5%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
99.5%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
99.5%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes7.0ms (0.2%)

Memory
28.2MiB live, 28.2MiB allocated; 0ms 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
99.2%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
99.2%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
99.2%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
99.2%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes18.0ms (0.4%)

Memory
-25.9MiB live, 20.2MiB allocated; 3ms 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:

14.0ms
(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
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
(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
1.0ms
x
Results
AccuracySegmentsBranch
97.6%1(/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))
97.6%1(log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x)))
97.6%1(*.f32 #s(literal 1/2 binary32) (log1p.f32 (/.f32 (*.f32 #s(literal 2 binary32) x) (-.f32 #s(literal 1 binary32) x))))
97.6%1x
Compiler

Compiled 26 to 23 computations (11.5% saved)

simplify46.0ms (1%)

Memory
13.5MiB live, 59.4MiB allocated; 4ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036112
155112
2107112
3261112
41031112
54959112
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))))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 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))))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (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))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f32 (*.f32 (*.f32 x x) x) (fma.f32 #s(approx (+ (* 1/7 (* x x)) 1/5) #s(literal 1/5 binary32)) (*.f32 x x) #s(literal 1/3 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)))

derivations441.0ms (9.7%)

Memory
-5.6MiB live, 321.2MiB allocated; 69ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037234
060222
0240222
0928
01528
15328
036528
0159710
1589701
22034694
08064660
0106302
1386291
21450282
37495282
08200262
Stop Event
done
iter limit
node limit
iter limit
node limit
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
iter limit
unsound
iter limit
Compiler

Compiled 112 to 41 computations (63.4% saved)

preprocess27.0ms (0.6%)

Memory
0.2MiB live, 44.6MiB allocated; 6ms collecting garbage
Compiler

Compiled 244 to 100 computations (59% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...