Rust f64::atanh

Time bar (total: 3.6s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze2.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
0%0%50%0%0%50%0%3
50%25%25%0%0%50%0%4
75%37.5%12.5%0%0%50%0%5
87.5%43.7%6.2%0%0%50%0%6
93.8%46.9%3.1%0%0%50%0%7
96.9%48.4%1.6%0%0%50%0%8
98.4%49.2%0.8%0%0%50%0%9
99.2%49.6%0.4%0%0%50%0%10
99.6%49.8%0.2%0%0%50%0%11
99.8%49.9%0.1%0%0%50%0%12
Compiler

Compiled 4 to 4 computations (0% saved)

sample775.0ms (21.3%)

Memory
3.8MiB live, 483.7MiB allocated
Samples
457.0ms8 256×0valid
0.0ms0invalid
Precisions
Click to see histograms. Total time spent on operations: 176.0ms
ival-atanh: 167.0ms (94.9% of total)
ival-true: 5.0ms (2.8% of total)
ival-assert: 3.0ms (1.7% of total)
Bogosity

explain307.0ms (8.4%)

Memory
16.4MiB live, 55.2MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-#s(literal 1 binary64)
00-0-(-.f64 #s(literal 1 binary64) x)
00-0-(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
00-0-(*.f64 #s(literal 2 binary64) x)
00-0-#s(literal 2 binary64)
00-0-(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
00-0-#s(literal 1/2 binary64)
00-0-x
00-0-(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) 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
30.0ms512×0valid
Compiler

Compiled 92 to 31 computations (66.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 18.0ms
ival-mult: 7.0ms (40% of total)
ival-sub: 3.0ms (17.1% of total)
ival-div: 3.0ms (17.1% of total)
ival-log1p: 3.0ms (17.1% of total)
exact: 1.0ms (5.7% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess41.0ms (1.1%)

Memory
-11.5MiB live, 26.2MiB allocated
Algorithm
egg-herbie
Rules
124×lower-fma.f64
124×lower-fma.f32
88×lower-*.f32
84×lower-*.f64
76×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
1107
2147
3177
4217
5287
6357
0910
01510
12410
23110
33710
44410
55810
69610
716310
822110
924910
1026010
1127010
1227010
027010
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Outputs
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (log1p.f64 (*.f64 #s(literal -2 binary64) (/.f64 x (-.f64 x #s(literal 1 binary64))))) #s(literal 1/2 binary64))
Compiler

Compiled 10 to 9 computations (10% saved)

eval0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune1.0ms (0%)

Memory
2.3MiB live, 2.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Compiler

Compiled 10 to 9 computations (10% saved)

simplify10.0ms (0.3%)

Memory
20.1MiB live, 20.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 2 binary64) x)
cost-diff0
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
cost-diff0
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
cost-diff0
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Rules
124×lower-fma.f64
124×lower-fma.f32
88×lower-*.f32
84×lower-*.f64
76×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0935
01535
12435
23135
33735
44435
55835
69635
716335
822135
924935
1026035
1127035
1227035
027035
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
#s(literal 1/2 binary64)
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
Outputs
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(*.f64 (log1p.f64 (*.f64 #s(literal -2 binary64) (/.f64 x (-.f64 x #s(literal 1 binary64))))) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
(log1p.f64 (*.f64 #s(literal -2 binary64) (/.f64 x (-.f64 x #s(literal 1 binary64)))))
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
(*.f64 #s(literal -2 binary64) (/.f64 x (-.f64 x #s(literal 1 binary64))))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
x
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)

localize54.0ms (1.5%)

Memory
-33.2MiB live, 48.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 #s(literal 2 binary64) x)
accuracy0
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
accuracy0.00390625
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
accuracy0.0234375
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
Samples
48.0ms256×0valid
Compiler

Compiled 41 to 11 computations (73.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 40.0ms
ival-mult: 31.0ms (77.4% of total)
ival-log1p: 5.0ms (12.5% of total)
ival-div: 2.0ms (5% of total)
ival-sub: 1.0ms (2.5% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.1%)

Memory
2.2MiB live, 2.2MiB allocated
Counts
4 → 48
Calls
Call 1
Inputs
#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())
#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())
#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2)))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))) (taylor 0 x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))) (taylor 0 x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2 x))) (taylor 0 x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* x (+ 2 (* 2 x))))) (taylor 0 x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x))))))) (taylor 0 x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt -2 (taylor inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (+ 2 (* 2 (/ 1 x)))) (taylor inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) (taylor inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x)))) (taylor inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) (patch (*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor -inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor -inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor -inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x))) (taylor -inf x) (#s(alt (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) (patch (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))) #<representation binary64>) () ())) ())
#s(alt -2 (taylor -inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (+ 2 (* 2 (/ 1 x)))) (taylor -inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2) (taylor -inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2) (taylor -inf x) (#s(alt (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) (patch (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify192.0ms (5.3%)

Memory
25.6MiB live, 214.5MiB allocated
Algorithm
egg-herbie
Rules
12 938×lower-fma.f64
12 938×lower-fma.f32
3 522×lower-*.f64
3 522×lower-*.f32
2 748×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0106404
1312390
2799382
32150380
44030380
56476380
08265358
Stop Event
iter limit
node limit
Counts
48 → 47
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))))))))
(* 2 x)
(* x (+ 2 (* 2 x)))
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 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))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
-2
(* -1 (+ 2 (* 2 (/ 1 x))))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 1/5 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 #s(literal 1/7 binary64) (*.f64 x x) #s(literal 1/5 binary64)) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f64 (fma.f64 (fma.f64 #s(literal 2/5 binary64) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 2/7 binary64) (*.f64 x x) #s(literal 2/5 binary64)) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 2 x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x #s(literal 2 binary64)) x)
(* x (+ 2 (* x (+ 2 (* 2 x)))))
(*.f64 (fma.f64 (fma.f64 #s(literal 2 binary64) x #s(literal 2 binary64)) x #s(literal 2 binary64)) x)
(* x (+ 2 (* x (+ 2 (* x (+ 2 (* 2 x)))))))
(*.f64 (fma.f64 #s(literal 2 binary64) x #s(literal 2 binary64)) (+.f64 (pow.f64 x #s(literal 3 binary64)) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (+.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)))))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(+.f64 (+.f64 (-.f64 (/.f64 #s(literal 2/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -2 binary64) x)) (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64)))) (log.f64 #s(literal -1 binary64)))
-2
#s(literal -2 binary64)
(* -1 (+ 2 (* 2 (/ 1 x))))
(-.f64 #s(literal -2 binary64) (/.f64 #s(literal 2 binary64) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(-.f64 #s(literal -2 binary64) (/.f64 (-.f64 (/.f64 #s(literal 2 binary64) x) #s(literal -2 binary64)) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) (pow x 2))) (+ 2 (* 2 (/ 1 x))))
(*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (/.f64 #s(literal 1 binary64) x) x)) (-.f64 (/.f64 #s(literal 2 binary64) x) #s(literal -2 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(-.f64 (fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (*.f64 x x)) #s(literal -1/3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -1 binary64) x))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 (-.f64 #s(literal -2/3 binary64) (/.f64 #s(literal 2/5 binary64) (*.f64 x x))) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -2 binary64) x))
-2
#s(literal -2 binary64)
(* -1 (+ 2 (* 2 (/ 1 x))))
(-.f64 #s(literal -2 binary64) (/.f64 #s(literal 2 binary64) x))
(- (* -1 (/ (+ 2 (* 2 (/ 1 x))) x)) 2)
(-.f64 #s(literal -2 binary64) (/.f64 (-.f64 (/.f64 #s(literal 2 binary64) x) #s(literal -2 binary64)) x))
(- (* -1 (/ (+ 2 (+ (* 2 (/ 1 x)) (/ 2 (pow x 2)))) x)) 2)
(*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (/.f64 #s(literal 1 binary64) x) x)) (-.f64 (/.f64 #s(literal 2 binary64) x) #s(literal -2 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)

rewrite213.0ms (5.9%)

Memory
8.2MiB live, 288.9MiB allocated
Rules
4 286×lower-fma.f64
4 286×lower-fma.f32
3 506×lower-*.f32
3 502×lower-*.f64
2 126×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
01528
15428
240428
3559528
0863628
Stop Event
iter limit
node limit
iter limit
Counts
4 → 162
Calls
Call 1
Inputs
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
(*.f64 #s(literal 2 binary64) x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval74.0ms (2%)

Memory
5.0MiB live, 79.0MiB allocated
Compiler

Compiled 4 261 to 820 computations (80.8% saved)

prune21.0ms (0.6%)

Memory
-23.8MiB live, 15.2MiB allocated
Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New2063209
Fresh000
Picked101
Done000
Total2073210
Accuracy
100.0%
Counts
210 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
99.6%
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
100.0%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
Compiler

Compiled 24 to 21 computations (12.5% saved)

simplify67.0ms (1.8%)

Memory
22.1MiB live, 63.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
cost-diff0
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
cost-diff0
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))
cost-diff0
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
cost-diff0
(*.f64 #s(literal 2 binary64) x)
cost-diff0
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))
cost-diff0
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
cost-diff0
(pow.f64 x #s(literal 3 binary64))
cost-diff0
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
Rules
1 016×lower-fma.f32
1 012×lower-fma.f64
676×lower-*.f32
666×lower-*.f64
212×distribute-lft-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024128
034128
154128
278128
399128
4108128
5128128
6166128
7352128
8532128
9733128
10897128
11991128
121225128
131526128
141617128
151638128
161638128
171642128
01642118
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow.f64 x #s(literal 3 binary64))
x
#s(literal 3 binary64)
#s(literal 1/3 binary64)
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
#s(literal 1/2 binary64)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
#s(literal 1/2 binary64)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
#s(literal 2/3 binary64)
(*.f64 x x)
x
#s(literal 2 binary64)
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)) x))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(fma.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)) x)
(pow.f64 x #s(literal 3 binary64))
x
#s(literal 3 binary64)
#s(literal 1/3 binary64)
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
(*.f64 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
x
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
(*.f64 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 (*.f64 x x) #s(literal 2/3 binary64) #s(literal 2 binary64)) x)) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 (*.f64 x x) #s(literal 2/3 binary64) #s(literal 2 binary64)) x))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 2/3 binary64) #s(literal 2 binary64)) x)
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(fma.f64 (*.f64 x x) #s(literal 2/3 binary64) #s(literal 2 binary64))
#s(literal 2/3 binary64)
(*.f64 x x)
x
#s(literal 2 binary64)

localize144.0ms (4%)

Memory
-20.6MiB live, 141.0MiB allocated
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 x x)
accuracy0
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
accuracy0
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))
accuracy0.0078125
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
accuracy0
(*.f64 #s(literal 2 binary64) x)
accuracy0
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
accuracy0.27360956047890095
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))
accuracy0
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
accuracy0
(pow.f64 x #s(literal 3 binary64))
accuracy0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
Samples
46.0ms256×0valid
Compiler

Compiled 100 to 21 computations (79% saved)

Precisions
Click to see histograms. Total time spent on operations: 32.0ms
ival-mult: 9.0ms (28.5% of total)
ival-pow: 8.0ms (25.4% of total)
const: 6.0ms (19% of total)
ival-div: 2.0ms (6.3% of total)
ival-add: 2.0ms (6.3% of total)
ival-log1p: 2.0ms (6.3% of total)
ival-sub: 1.0ms (3.2% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series10.0ms (0.3%)

Memory
21.0MiB live, 21.0MiB allocated
Counts
11 → 132
Calls
Call 1
Inputs
#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())
#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())
#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())
#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())
#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())
#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())
#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2)))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2)))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))))) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 2/3 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt 2 (taylor 0 x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 2 (* 2/3 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 2 (* 2/3 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 2 (* 2/3 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/3 (pow x 3)) (taylor inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* 2/3 (pow x 3)) (taylor inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 2/3 (pow x 2)) (taylor inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1))) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/3 (pow x 3)) (taylor -inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) (patch (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (pow.f64 x #s(literal 3 binary64)) (patch (pow.f64 x #s(literal 3 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 2 binary64) x) (patch (*.f64 #s(literal 2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1))) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) (patch (*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))) #<representation binary64>) () ())) ())
#s(alt (log -1) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* 2 (/ 1 x))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x)))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x))) (taylor -inf x) (#s(alt #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) (patch #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt (* 2/3 (pow x 3)) (taylor -inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) (patch (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 2/3 (pow x 2)) (taylor -inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) (patch (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
3.0ms
x
@-inf
((* 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))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* x x))
2.0ms
x
@inf
((* 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))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* x x))
1.0ms
x
@0
((* 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))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* 2 x) (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (log (+ 1 (/ (* 2 x) (- 1 x)))) (* (+ (* 2/3 (* x x)) 2) x) (+ (* 2/3 (* x x)) 2) (* x x))

simplify124.0ms (3.4%)

Memory
-22.8MiB live, 172.7MiB allocated
Algorithm
egg-herbie
Rules
9 726×lower-fma.f64
9 726×lower-fma.f32
3 890×lower-*.f64
3 890×lower-*.f32
1 832×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931040
1276999
2724994
31968994
46144994
08329919
Stop Event
iter limit
node limit
Counts
132 → 128
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))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* 1/3 (pow x 2))))
(pow x 3)
(pow x 3)
(pow x 3)
(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))))))))
(* 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 x)
(* 2 x)
(* 2 x)
(* 2 x)
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(* 2 x)
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* 2/3 (pow x 2))))
(* x (+ 2 (* 2/3 (pow x 2))))
2
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* 2/3 (pow x 2)))
(+ 2 (* 2/3 (pow x 2)))
(pow x 2)
(pow x 2)
(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))))))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(* 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 x)
(* 2 x)
(* 2 x)
(* 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/3 (pow x 3))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (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)))))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(pow x 2)
(pow x 2)
(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 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(log -1)
(+ (log -1) (* 2 (/ 1 x)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(* 2/3 (pow x 3))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (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)))))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 1/5 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 #s(literal 1/7 binary64) (*.f64 x x) #s(literal 1/5 binary64)) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 1/5 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 #s(literal 1/7 binary64) (*.f64 x x) #s(literal 1/5 binary64)) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f64 (fma.f64 (fma.f64 #s(literal 2/5 binary64) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 2/7 binary64) (*.f64 x x) #s(literal 2/5 binary64)) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 1/5 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 #s(literal 1/7 binary64) (*.f64 x x) #s(literal 1/5 binary64)) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* 2/5 (pow x 2))))))
(*.f64 (fma.f64 (fma.f64 #s(literal 2/5 binary64) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 2/5 (* 2/7 (pow x 2))))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 2/7 binary64) (*.f64 x x) #s(literal 2/5 binary64)) (*.f64 x x) #s(literal 2/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* 2/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
2
#s(literal 2 binary64)
(+ 2 (* 2/3 (pow x 2)))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(+ 2 (* 2/3 (pow x 2)))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(+ 2 (* 2/3 (pow x 2)))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (+.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)))))
(* 1/3 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (+.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)))))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(+.f64 (+.f64 (-.f64 (/.f64 #s(literal 2/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -2 binary64) x)) (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64)))) (log.f64 #s(literal -1 binary64)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (+.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)))))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (+ (* 2 (/ 1 x)) (* 2/5 (/ 1 (pow x 5))))))
(+.f64 (+.f64 (-.f64 (/.f64 #s(literal 2/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -2 binary64) x)) (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64)))) (log.f64 #s(literal -1 binary64)))
(* 2/3 (pow x 3))
(*.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64)))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* 2/3 (pow x 2))
(*.f64 #s(literal 2/3 binary64) (*.f64 x x))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 (-.f64 x (/.f64 (-.f64 #s(literal -1/3 binary64) (/.f64 #s(literal 1/5 binary64) (*.f64 x x))) x)) (*.f64 x x)))
(* 1/3 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 (-.f64 x (/.f64 (-.f64 #s(literal -1/3 binary64) (/.f64 #s(literal 1/5 binary64) (*.f64 x x))) x)) (*.f64 x x)))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 (-.f64 #s(literal -2/3 binary64) (/.f64 #s(literal 2/5 binary64) (*.f64 x x))) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -2 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 (-.f64 x (/.f64 (-.f64 #s(literal -1/3 binary64) (/.f64 #s(literal 1/5 binary64) (*.f64 x x))) x)) (*.f64 x x)))
(log -1)
(log.f64 #s(literal -1 binary64))
(+ (log -1) (* 2 (/ 1 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 #s(literal -2 binary64) x))
(+ (log -1) (+ (/ 2/3 (pow x 3)) (* 2 (/ 1 x))))
(+.f64 (-.f64 (/.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -2 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+ (log -1) (* -1 (/ (- (* -1 (/ (+ 2/3 (* 2/5 (/ 1 (pow x 2)))) (pow x 2))) 2) x)))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (/.f64 (-.f64 #s(literal -2/3 binary64) (/.f64 #s(literal 2/5 binary64) (*.f64 x x))) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -2 binary64) x))
(* 2/3 (pow x 3))
(*.f64 #s(literal 2/3 binary64) (pow.f64 x #s(literal 3 binary64)))
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* (pow x 3) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* 2/3 (pow x 2))
(*.f64 #s(literal 2/3 binary64) (*.f64 x x))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(* (pow x 2) (+ 2/3 (* 2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)

rewrite223.0ms (6.1%)

Memory
35.3MiB live, 233.3MiB allocated
Rules
8 550×lower-fma.f32
8 546×lower-fma.f64
5 538×lower-*.f32
5 528×lower-*.f64
3 408×lower-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024118
034118
1113118
2739118
08522108
Stop Event
iter limit
node limit
iter limit
Counts
11 → 250
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
#s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x))
(*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval64.0ms (1.8%)

Memory
-9.7MiB live, 114.6MiB allocated
Compiler

Compiled 6 729 to 1 160 computations (82.8% saved)

prune35.0ms (1%)

Memory
-5.1MiB live, 33.0MiB allocated
Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New3771378
Fresh000
Picked213
Done000
Total3792381
Accuracy
100.0%
Counts
381 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.6%
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
100.0%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
Compiler

Compiled 15 to 12 computations (20% saved)

simplify47.0ms (1.3%)

Memory
-1.8MiB live, 35.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff-5824
(*.f64 (*.f64 x x) x)
cost-diff0
(*.f64 x x)
cost-diff0
(fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)
cost-diff0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
Rules
680×lower-fma.f32
678×lower-fma.f64
476×lower-*.f32
472×lower-*.f64
152×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01539
01939
13333
25133
36133
47033
59033
612833
728533
845033
964833
1081233
1190133
12101133
13114033
14116433
15116833
16116833
0116831
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
(fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)
(*.f64 (*.f64 x x) x)
(*.f64 x x)
x
#s(literal 1/3 binary64)
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)) x))
(fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)
(fma.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)) x)
(*.f64 (*.f64 x x) x)
(pow.f64 x #s(literal 3 binary64))
(*.f64 x x)
x
#s(literal 1/3 binary64)

localize54.0ms (1.5%)

Memory
-4.3MiB live, 76.9MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)
accuracy0
(*.f64 x x)
accuracy0
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
accuracy0.09375
(*.f64 (*.f64 x x) x)
Samples
47.0ms256×0valid
Compiler

Compiled 33 to 16 computations (51.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-mult: 13.0ms (56.2% of total)
const: 3.0ms (13% of total)
ival-div: 2.0ms (8.6% of total)
ival-log1p: 2.0ms (8.6% of total)
ival-add: 1.0ms (4.3% of total)
ival-sub: 1.0ms (4.3% 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
11.8MiB live, 11.8MiB allocated
Counts
4 → 48
Calls
Call 1
Inputs
#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())
#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5)))))) (taylor inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/3 (pow x 3)) (taylor inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (log -1)) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (/ 1 x)) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x))) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1))) (taylor -inf x) (#s(alt #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) (patch #s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/3 (pow x 3)) (taylor -inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/3 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) (patch (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 (*.f64 x x) x) (patch (*.f64 (*.f64 x x) x) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify121.0ms (3.3%)

Memory
-0.8MiB live, 192.3MiB allocated
Algorithm
egg-herbie
Rules
10 128×lower-fma.f64
10 128×lower-fma.f32
3 970×lower-*.f64
3 970×lower-*.f32
1 600×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052304
1139279
2358278
3969278
43069278
55962278
08186257
Stop Event
iter limit
node limit
Counts
48 → 46
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))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* 1/3 (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(* 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))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(* 1/2 (log -1))
(+ (* 1/2 (log -1)) (/ 1 x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(* 1/3 (pow x 3))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
Outputs
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 1/5 (pow x 2))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 1/5 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/5 (* 1/7 (pow x 2))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 #s(literal 1/7 binary64) (*.f64 x x) #s(literal 1/5 binary64)) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* x (+ 1 (* 1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (+ (/ 1 x) (* 1/5 (/ 1 (pow x 5))))))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (+.f64 (-.f64 (/.f64 #s(literal 1/5 binary64) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64)))))
(* 1/3 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(* 1/2 (log -1))
(*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64))
(+ (* 1/2 (log -1)) (/ 1 x))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) x))
(+ (* 1/2 (log -1)) (+ (/ 1/3 (pow x 3)) (/ 1 x)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (-.f64 (/.f64 #s(literal 1/3 binary64) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1 binary64) x)))
(+ (* -1 (/ (- (* -1 (/ (+ 1/3 (* 1/5 (/ 1 (pow x 2)))) (pow x 2))) 1) x)) (* 1/2 (log -1)))
(fma.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1/2 binary64) (/.f64 (-.f64 x (/.f64 (-.f64 #s(literal -1/3 binary64) (/.f64 #s(literal 1/5 binary64) (*.f64 x x))) x)) (*.f64 x x)))
(* 1/3 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64))
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(* (pow x 3) (+ 1/3 (/ 1 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))
(pow x 3)
(pow.f64 x #s(literal 3 binary64))

rewrite223.0ms (6.1%)

Memory
13.2MiB live, 297.4MiB allocated
Rules
7 612×lower-fma.f32
7 610×lower-fma.f64
4 476×lower-*.f32
4 472×lower-*.f64
2 858×lower-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01537
01931
17331
256031
3723531
0808329
Stop Event
iter limit
node limit
iter limit
Counts
4 → 106
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
(fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x)
(*.f64 x x)
(*.f64 (*.f64 x x) x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval19.0ms (0.5%)

Memory
-22.5MiB live, 53.5MiB allocated
Compiler

Compiled 2 675 to 434 computations (83.8% saved)

prune4.0ms (0.1%)

Memory
16.2MiB live, 16.2MiB allocated
Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New1520152
Fresh000
Picked011
Done011
Total1522154
Accuracy
100.0%
Counts
154 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.6%
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
100.0%
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
Compiler

Compiled 58 to 37 computations (36.2% saved)

regimes15.0ms (0.4%)

Memory
-12.8MiB live, 29.9MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 (fma.f64 #s(literal 2/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)))
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/3 binary64) x))
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
Calls

4 calls:

7.0ms
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
2.0ms
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
2.0ms
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
2.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
100.0%1(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
100.0%1(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
Compiler

Compiled 26 to 23 computations (11.5% saved)

regimes6.0ms (0.2%)

Memory
13.2MiB live, 13.2MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

4 calls:

1.0ms
(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
1.0ms
(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
1.0ms
(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
1.0ms
x
Results
AccuracySegmentsBranch
99.6%1x
99.6%1(*.f64 #s(literal 1/2 binary64) (log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))))
99.6%1(log1p.f64 (/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x)))
99.6%1(/.f64 (*.f64 #s(literal 2 binary64) x) (-.f64 #s(literal 1 binary64) x))
Compiler

Compiled 26 to 23 computations (11.5% saved)

simplify218.0ms (6%)

Memory
10.5MiB live, 48.4MiB allocated
Algorithm
egg-herbie
Rules
*-commutative-binary64-*.f64
1-exp-binary32-exp.f32
1-exp-binary64-exp.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01837
12437
Stop Event
saturated
Calls
Call 1
Inputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
Outputs
#s(approx (* 1/2 (log (+ 1 (/ (* 2 x) (- 1 x))))) (fma.f64 (*.f64 (*.f64 x x) x) #s(literal 1/3 binary64) x))
(*.f64 #s(literal 1/2 binary64) #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 #s(literal 2 binary64) x)))
(*.f64 #s(approx (log (+ 1 (/ (* 2 x) (- 1 x)))) (*.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))

soundness368.0ms (10.1%)

Memory
-27.7MiB live, 273.5MiB allocated
Rules
12 938×lower-fma.f64
12 938×lower-fma.f32
8 550×lower-fma.f32
8 546×lower-fma.f64
5 538×lower-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024118
034118
1113118
2739118
08522108
0106404
1312390
2799382
32150380
44030380
56476380
08265358
Stop Event
done
iter limit
node limit
iter limit
node limit
iter limit
Compiler

Compiled 33 to 27 computations (18.2% saved)

preprocess197.0ms (5.4%)

Memory
-24.1MiB live, 53.6MiB allocated
Compiler

Compiled 50 to 40 computations (20% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...