Hyperbolic arc-cosine

Time bar (total: 4.4s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze72.0ms (1.6%)

Memory
-10.3MiB live, 147.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%100%0%0%0%0%3
16.7%12.5%62.5%0%0%25%0%4
30%18.7%43.7%0%0%37.5%0%5
38.9%21.9%34.4%0%0%43.7%0%6
44.1%23.4%29.7%0%0%46.9%0%7
47%24.2%27.3%0%0%48.4%0%8
48.5%24.6%26.2%0%0%49.2%0%9
49.2%24.8%25.6%0%0%49.6%0%10
49.6%24.9%25.3%0%0%49.8%0%11
49.8%24.9%25.1%0%0%49.9%0%12
Compiler

Compiled 11 to 9 computations (18.2% saved)

sample2.8s (62.9%)

Memory
-121.5MiB live, 3 764.1MiB allocated
Samples
1.1s8 004×0valid
1.0s6 848×1invalid
61.0ms1 102×0invalid
Precisions
Click to see histograms. Total time spent on operations: 1.7s
ival-log: 778.0ms (44.6% of total)
ival-sqrt: 263.0ms (15.1% of total)
ival-mult: 182.0ms (10.4% of total)
ival-add: 177.0ms (10.2% of total)
adjust: 163.0ms (9.3% of total)
ival-sub: 148.0ms (8.5% of total)
ival-true: 14.0ms (0.8% of total)
exact: 11.0ms (0.6% of total)
ival-assert: 9.0ms (0.5% of total)
Bogosity

explain2.0ms (0%)

Memory
4.1MiB live, 4.1MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
20-0-(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))
00-0-(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
00-0-#s(literal 1 binary64)
00-0-(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
00-0-(*.f64 x x)
00-0-(-.f64 (*.f64 x x) #s(literal 1 binary64))
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))oflow-rescue20
(-.f64 (*.f64 x x) #s(literal 1 binary64))overflow2
(*.f64 x x)overflow2
Confusion
Predicted +Predicted -
+20
-02
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+200
-002
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
02
12
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
1.0ms0valid
Compiler

Compiled 112 to 32 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-log: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess411.0ms (9.3%)

Memory
-9.4MiB live, 306.7MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0921
12719
25919
313019
429519
557919
6108819
7167719
8302119
9411819
10505919
11548719
12572719
13579919
14588319
15647519
16756519
17762119
18771919
19775319
20776919
079
0129
1219
2259
3409
4719
51329
62929
75729
820459
931559
1044339
1151069
1254089
1355939
1456959
1560149
1665609
1776719
080918
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
Outputs
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
(log.f64 (+.f64 (sqrt.f64 (fma.f64 x x #s(literal -1 binary64))) x))
Compiler

Compiled 9 to 7 computations (22.2% saved)

eval0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
51.6%
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify294.0ms (6.6%)

Memory
33.7MiB live, 305.3MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))
cost-diff0
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
cost-diff0
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
cost-diff128
(-.f64 (*.f64 x x) #s(literal 1 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0733
01233
12133
22533
34033
47133
513233
629233
757233
8204533
9315533
10443333
11510633
12540833
13559333
14569533
15601433
16656033
17767133
0809129
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
x
(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))
(-.f64 (*.f64 x x) #s(literal 1 binary64))
(*.f64 x x)
#s(literal 1 binary64)
Outputs
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
(log.f64 (+.f64 (sqrt.f64 (fma.f64 x x #s(literal -1 binary64))) x))
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
(+.f64 (sqrt.f64 (fma.f64 x x #s(literal -1 binary64))) x)
x
(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))
(sqrt.f64 (fma.f64 x x #s(literal -1 binary64)))
(-.f64 (*.f64 x x) #s(literal 1 binary64))
(fma.f64 x x #s(literal -1 binary64))
(*.f64 x x)
#s(literal 1 binary64)

localize1.0ms (0%)

Memory
1.6MiB live, 1.6MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
accuracy0
(*.f64 x x)
accuracy0
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
accuracy30.233065781164804
(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))
Samples
0.0ms0valid
Compiler

Compiled 68 to 16 computations (76.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-log: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.2%)

Memory
-31.2MiB live, 13.0MiB allocated
Counts
5 → 60
Calls
Call 1
Inputs
#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())
#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())
#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())
#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt -1 (taylor 0 x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (- (pow x 2) 1) (taylor 0 x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (- (pow x 2) 1) (taylor 0 x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (- (pow x 2) 1) (taylor 0 x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (log (sqrt -1)) (taylor 0 x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (/ x (sqrt -1))) (taylor 0 x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1))))) (taylor 0 x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1))))) (taylor 0 x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (sqrt -1) (taylor 0 x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (+ x (sqrt -1)) (taylor 0 x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1)))))) (taylor 0 x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1)))))))) (taylor 0 x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (sqrt -1) (taylor 0 x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* 1/2 (/ (pow x 2) (sqrt -1)))) (taylor 0 x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* (pow x 2) (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1)))))) (taylor 0 x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* (pow x 2) (+ (* (pow x 2) (- (* 1/16 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/8 (/ 1 (pow (sqrt -1) 3))))) (* 1/2 (/ 1 (sqrt -1)))))) (taylor 0 x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 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 (pow x 2) (taylor inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ (log 2) (* -1 (log (/ 1 x)))) (taylor inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2))))) (taylor inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (- 2 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2))))) (taylor inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt x (taylor inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2))))) (taylor inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 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 (pow x 2) (taylor -inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (- 1 (/ 1 (pow x 2)))) (taylor -inf x) (#s(alt (-.f64 (*.f64 x x) #s(literal 1 binary64)) (patch (-.f64 (*.f64 x x) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (log (/ -1 x))) (taylor -inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2)))))) (taylor -inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6))))))) (taylor -inf x) (#s(alt (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) (patch (log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x) (taylor -inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x)) (taylor -inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x)) (taylor -inf x) (#s(alt (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) (patch (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- 1 (* 1/2 (/ 1 (pow x 2)))))) (taylor -inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))) (taylor -inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))) (taylor -inf x) (#s(alt (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))) (patch (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 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
4.0ms
x
@-inf
((- (* x x) 1) (log (+ x (sqrt (- (* x x) 1)))) (+ x (sqrt (- (* x x) 1))) (sqrt (- (* x x) 1)) (* x x))
2.0ms
x
@0
((- (* x x) 1) (log (+ x (sqrt (- (* x x) 1)))) (+ x (sqrt (- (* x x) 1))) (sqrt (- (* x x) 1)) (* x x))
1.0ms
x
@inf
((- (* x x) 1) (log (+ x (sqrt (- (* x x) 1)))) (+ x (sqrt (- (* x x) 1))) (sqrt (- (* x x) 1)) (* x x))

simplify140.0ms (3.2%)

Memory
10.4MiB live, 204.2MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0150595
1411569
21146562
33331524
47979524
08531495
Stop Event
iter limit
node limit
Counts
60 → 59
Calls
Call 1
Inputs
-1
(- (pow x 2) 1)
(- (pow x 2) 1)
(- (pow x 2) 1)
(log (sqrt -1))
(+ (log (sqrt -1)) (/ x (sqrt -1)))
(+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1)))))
(+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1)))))
(sqrt -1)
(+ x (sqrt -1))
(+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1))))))
(+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))))
(sqrt -1)
(+ (sqrt -1) (* 1/2 (/ (pow x 2) (sqrt -1))))
(+ (sqrt -1) (* (pow x 2) (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))
(+ (sqrt -1) (* (pow x 2) (+ (* (pow x 2) (- (* 1/16 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/8 (/ 1 (pow (sqrt -1) 3))))) (* 1/2 (/ 1 (sqrt -1))))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(+ (log 2) (* -1 (log (/ 1 x))))
(- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2))))
(+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2)))))
(- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2))))
(* 2 x)
(* x (- 2 (* 1/2 (/ 1 (pow x 2)))))
(* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
x
(* x (- 1 (* 1/2 (/ 1 (pow x 2)))))
(* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(+ (log -1/2) (log (/ -1 x)))
(+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2)))))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2))))))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6)))))))
(/ 1/2 x)
(/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x)
(* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x))
(* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x))
(* -1 x)
(* -1 (* x (- 1 (* 1/2 (/ 1 (pow x 2))))))
(* -1 (* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2))))))
(* -1 (* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2))))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
-1
#s(literal -1 binary64)
(- (pow x 2) 1)
(fma.f64 x x #s(literal -1 binary64))
(- (pow x 2) 1)
(fma.f64 x x #s(literal -1 binary64))
(- (pow x 2) 1)
(fma.f64 x x #s(literal -1 binary64))
(log (sqrt -1))
(log.f64 (sqrt.f64 #s(literal -1 binary64)))
(+ (log (sqrt -1)) (/ x (sqrt -1)))
(+.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64))))
(+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1)))))
(fma.f64 (fma.f64 (*.f64 x x) #s(literal 1/6 binary64) #s(literal 1 binary64)) (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64))))
(+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1)))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (*.f64 #s(literal 3/40 binary64) x) (/.f64 x (pow.f64 (sqrt.f64 #s(literal -1 binary64)) #s(literal 5 binary64))) (/.f64 #s(literal 1/6 binary64) (sqrt.f64 #s(literal -1 binary64)))) (+.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64)))))
(sqrt -1)
(sqrt.f64 #s(literal -1 binary64))
(+ x (sqrt -1))
(+.f64 (sqrt.f64 #s(literal -1 binary64)) x)
(+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1))))))
(fma.f64 (fma.f64 (/.f64 #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) x #s(literal 1 binary64)) x (sqrt.f64 #s(literal -1 binary64)))
(+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))))
(fma.f64 (fma.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (fma.f64 (*.f64 x x) #s(literal 1/8 binary64) #s(literal 1/2 binary64)) #s(literal 1 binary64)) x (sqrt.f64 #s(literal -1 binary64)))
(sqrt -1)
(sqrt.f64 #s(literal -1 binary64))
(+ (sqrt -1) (* 1/2 (/ (pow x 2) (sqrt -1))))
(fma.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) x) x (sqrt.f64 #s(literal -1 binary64)))
(+ (sqrt -1) (* (pow x 2) (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))
(fma.f64 (*.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) x) (fma.f64 (*.f64 x x) #s(literal 1/8 binary64) #s(literal 1/2 binary64)) (sqrt.f64 #s(literal -1 binary64)))
(+ (sqrt -1) (* (pow x 2) (+ (* (pow x 2) (- (* 1/16 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/8 (/ 1 (pow (sqrt -1) 3))))) (* 1/2 (/ 1 (sqrt -1))))))
(fma.f64 (fma.f64 #s(literal 1/16 binary64) (/.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (sqrt.f64 #s(literal -1 binary64)) #s(literal 5 binary64))) (*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 #s(literal -1 binary64))) (fma.f64 #s(literal 1/8 binary64) (*.f64 x x) #s(literal 1/2 binary64)))) (*.f64 x x) (sqrt.f64 #s(literal -1 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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(+ (log 2) (* -1 (log (/ 1 x))))
(+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64)))
(- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2))))
(-.f64 (+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x)))
(+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2)))))
(-.f64 (+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64))) (/.f64 (/.f64 (+.f64 (/.f64 #s(literal 3/32 binary64) (*.f64 x x)) #s(literal 1/4 binary64)) x) x))
(- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2))))
(-.f64 (-.f64 (log.f64 #s(literal 2 binary64)) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (-.f64 (/.f64 (+.f64 (/.f64 #s(literal 5/96 binary64) (*.f64 x x)) #s(literal 3/32 binary64)) (pow.f64 x #s(literal 4 binary64))) (log.f64 x)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (- 2 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2 binary64) x (/.f64 #s(literal -1/2 binary64) x))
(* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(fma.f64 #s(literal 2 binary64) x (/.f64 (-.f64 #s(literal -1/2 binary64) (/.f64 #s(literal 1/8 binary64) (*.f64 x x))) x))
(* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (-.f64 #s(literal 2 binary64) (/.f64 (+.f64 (/.f64 #s(literal 1/16 binary64) (*.f64 x x)) #s(literal 1/8 binary64)) (pow.f64 x #s(literal 4 binary64)))) x (/.f64 #s(literal -1/2 binary64) x))
x
(* x (- 1 (* 1/2 (/ 1 (pow x 2)))))
(-.f64 x (/.f64 #s(literal 1/2 binary64) x))
(* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(-.f64 x (/.f64 (+.f64 (/.f64 #s(literal 1/8 binary64) (*.f64 x x)) #s(literal 1/2 binary64)) x))
(* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (/.f64 (-.f64 #s(literal -1/8 binary64) (/.f64 #s(literal 1/16 binary64) (*.f64 x x))) (pow.f64 x #s(literal 4 binary64))) x (-.f64 x (/.f64 #s(literal 1/2 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 2)
(*.f64 x x)
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(* (pow x 2) (- 1 (/ 1 (pow x 2))))
(fma.f64 x x #s(literal -1 binary64))
(+ (log -1/2) (log (/ -1 x)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2)))))
(+.f64 (+.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2))))))
(+.f64 (+.f64 (+.f64 (/.f64 #s(literal 3/32 binary64) (pow.f64 x #s(literal 4 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6)))))))
(+.f64 (+.f64 (+.f64 (+.f64 (/.f64 #s(literal 5/96 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (/.f64 #s(literal 3/32 binary64) (pow.f64 x #s(literal 4 binary64)))) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 #s(literal -1/2 binary64)))
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x)
(/.f64 (+.f64 (/.f64 #s(literal 1/8 binary64) (*.f64 x x)) #s(literal 1/2 binary64)) x)
(* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x))
(-.f64 (/.f64 #s(literal 1/2 binary64) x) (/.f64 (-.f64 #s(literal -1/8 binary64) (/.f64 #s(literal 1/16 binary64) (*.f64 x x))) (pow.f64 x #s(literal 3 binary64))))
(* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x))
(-.f64 (-.f64 (/.f64 (+.f64 (/.f64 #s(literal 5/128 binary64) (*.f64 x x)) #s(literal 1/16 binary64)) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -1/2 binary64) x))
(* -1 x)
(neg.f64 x)
(* -1 (* x (- 1 (* 1/2 (/ 1 (pow x 2))))))
(-.f64 (/.f64 #s(literal 1/2 binary64) x) x)
(* -1 (* x (+ 1 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2))))))
(-.f64 (/.f64 (+.f64 (/.f64 #s(literal 1/8 binary64) (*.f64 x x)) #s(literal 1/2 binary64)) x) x)
(* -1 (* x (- (+ 1 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2))))))
(fma.f64 (/.f64 (+.f64 (/.f64 #s(literal 1/16 binary64) (*.f64 x x)) #s(literal 1/8 binary64)) (pow.f64 x #s(literal 4 binary64))) x (-.f64 (/.f64 #s(literal 1/2 binary64) x) 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)

rewrite145.0ms (3.3%)

Memory
28.0MiB live, 222.7MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0731
01231
14931
232231
3362631
0864627
Stop Event
iter limit
node limit
iter limit
Counts
5 → 328
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) #s(literal 1 binary64))
(log.f64 (+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64)))))
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))
(sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 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>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval9.0ms (0.2%)

Memory
-20.3MiB live, 18.6MiB allocated
Compiler

Compiled 8 221 to 1 612 computations (80.4% saved)

prune0.0ms (0%)

Memory
1.6MiB live, 1.6MiB allocated
Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New3861387
Fresh000
Picked101
Done000
Total3871388
Accuracy
100.0%
Counts
388 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
Compiler

Compiled 5 to 5 computations (0% saved)

simplify321.0ms (7.2%)

Memory
14.4MiB live, 296.6MiB allocated
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 2 binary64) x)
cost-diff0
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))
cost-diff0
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01030
01230
12230
22630
34130
47230
513330
629730
757830
8212430
9325930
10455430
11522230
12552530
13571030
14581230
15613130
16667730
17778830
0802428
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
Outputs
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 x #s(literal 2 binary64))))
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
x

localize1.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 #s(literal 2 binary64) x)
accuracy0
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
accuracy0
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))
Samples
0.0ms0valid
Compiler

Compiled 38 to 16 computations (57.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-log: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
5.6MiB live, 5.7MiB allocated
Counts
3 → 36
Calls
Call 1
Inputs
#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())
#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.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>) () ())
Outputs
#s(alt (log (sqrt -1)) (taylor 0 x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (/ x (sqrt -1))) (taylor 0 x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1))))) (taylor 0 x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1))))) (taylor 0 x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (sqrt -1) (taylor 0 x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ x (sqrt -1)) (taylor 0 x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1)))))) (taylor 0 x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1)))))))) (taylor 0 x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.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 (+ (log 2) (* -1 (log (/ 1 x)))) (taylor inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2))))) (taylor inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2)))) (taylor inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (- 2 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2))))) (taylor inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.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 (+ (log -1/2) (log (/ -1 x))) (taylor -inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2)))))) (taylor -inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6))))))) (taylor -inf x) (#s(alt (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) (patch (log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x) (taylor -inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x)) (taylor -inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x)) (taylor -inf x) (#s(alt #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)) (patch #s(approx (+ x (sqrt (- (* x x) 1))) (*.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>) () ())) ())
Calls

3 calls:

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

simplify104.0ms (2.4%)

Memory
-24.9MiB live, 134.2MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0124375
1327357
2875351
32498339
45815339
08078327
Stop Event
iter limit
node limit
Counts
36 → 36
Calls
Call 1
Inputs
(log (sqrt -1))
(+ (log (sqrt -1)) (/ x (sqrt -1)))
(+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1)))))
(+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1)))))
(sqrt -1)
(+ x (sqrt -1))
(+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1))))))
(+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(+ (log 2) (* -1 (log (/ 1 x))))
(- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2))))
(+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2)))))
(- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2))))
(* 2 x)
(* x (- 2 (* 1/2 (/ 1 (pow x 2)))))
(* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(+ (log -1/2) (log (/ -1 x)))
(+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2)))))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2))))))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6)))))))
(/ 1/2 x)
(/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x)
(* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x))
(* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
Outputs
(log (sqrt -1))
(log.f64 (sqrt.f64 #s(literal -1 binary64)))
(+ (log (sqrt -1)) (/ x (sqrt -1)))
(+.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64))))
(+ (log (sqrt -1)) (* x (+ (* -1/6 (/ (pow x 2) (pow (sqrt -1) 3))) (/ 1 (sqrt -1)))))
(fma.f64 (fma.f64 (*.f64 #s(literal 1/6 binary64) x) x #s(literal 1 binary64)) (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64))))
(+ (log (sqrt -1)) (* x (+ (* (pow x 2) (- (* 3/40 (/ (pow x 2) (pow (sqrt -1) 5))) (* 1/6 (/ 1 (pow (sqrt -1) 3))))) (/ 1 (sqrt -1)))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (/.f64 #s(literal 3/40 binary64) (pow.f64 (sqrt.f64 #s(literal -1 binary64)) #s(literal 5 binary64))) (*.f64 x x) (/.f64 #s(literal 1/6 binary64) (sqrt.f64 #s(literal -1 binary64)))) (+.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (log.f64 (sqrt.f64 #s(literal -1 binary64)))))
(sqrt -1)
(sqrt.f64 #s(literal -1 binary64))
(+ x (sqrt -1))
(+.f64 x (sqrt.f64 #s(literal -1 binary64)))
(+ (sqrt -1) (* x (+ 1 (* 1/2 (/ x (sqrt -1))))))
(fma.f64 (fma.f64 (/.f64 #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) x #s(literal 1 binary64)) x (sqrt.f64 #s(literal -1 binary64)))
(+ (sqrt -1) (* x (+ 1 (* x (+ (* -1/8 (/ (pow x 2) (pow (sqrt -1) 3))) (* 1/2 (/ 1 (sqrt -1))))))))
(fma.f64 (fma.f64 (/.f64 x (sqrt.f64 #s(literal -1 binary64))) (fma.f64 (*.f64 #s(literal 1/8 binary64) x) x #s(literal 1/2 binary64)) #s(literal 1 binary64)) x (sqrt.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)
(+ (log 2) (* -1 (log (/ 1 x))))
(+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64)))
(- (+ (log 2) (* -1 (log (/ 1 x)))) (* 1/4 (/ 1 (pow x 2))))
(-.f64 (+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x)))
(+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 1/4 (* 3/32 (/ 1 (pow x 2)))) (pow x 2)))))
(-.f64 (+.f64 (log.f64 x) (log.f64 #s(literal 2 binary64))) (/.f64 (/.f64 (+.f64 (/.f64 #s(literal 3/32 binary64) (*.f64 x x)) #s(literal 1/4 binary64)) x) x))
(- (+ (log 2) (+ (* -1 (log (/ 1 x))) (* -1 (/ (+ 3/32 (* 5/96 (/ 1 (pow x 2)))) (pow x 4))))) (* 1/4 (/ 1 (pow x 2))))
(-.f64 (-.f64 (log.f64 #s(literal 2 binary64)) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (-.f64 (/.f64 (+.f64 (/.f64 #s(literal 5/96 binary64) (*.f64 x x)) #s(literal 3/32 binary64)) (pow.f64 x #s(literal 4 binary64))) (log.f64 x)))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (- 2 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 #s(literal 2 binary64) x (/.f64 #s(literal -1/2 binary64) x))
(* x (+ 2 (* -1 (/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) (pow x 2)))))
(fma.f64 #s(literal 2 binary64) x (/.f64 (-.f64 #s(literal -1/2 binary64) (/.f64 #s(literal 1/8 binary64) (*.f64 x x))) x))
(* x (- (+ 2 (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 4)))) (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (-.f64 #s(literal 2 binary64) (/.f64 (+.f64 (/.f64 #s(literal 1/16 binary64) (*.f64 x x)) #s(literal 1/8 binary64)) (pow.f64 x #s(literal 4 binary64)))) x (/.f64 #s(literal -1/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)
(+ (log -1/2) (log (/ -1 x)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (* 1/4 (/ 1 (pow x 2)))))
(+.f64 (+.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (* 1/4 (/ 1 (pow x 2))))))
(+.f64 (+.f64 (+.f64 (/.f64 #s(literal 3/32 binary64) (pow.f64 x #s(literal 4 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 #s(literal -1/2 binary64)))
(+ (log -1/2) (+ (log (/ -1 x)) (+ (/ 3/32 (pow x 4)) (+ (* 1/4 (/ 1 (pow x 2))) (* 5/96 (/ 1 (pow x 6)))))))
(+.f64 (+.f64 (+.f64 (+.f64 (/.f64 #s(literal 5/96 binary64) (pow.f64 x #s(literal 6 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 x x))) (/.f64 #s(literal 3/32 binary64) (pow.f64 x #s(literal 4 binary64)))) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 #s(literal -1/2 binary64)))
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ (+ 1/2 (* 1/8 (/ 1 (pow x 2)))) x)
(/.f64 (-.f64 (/.f64 #s(literal 1/8 binary64) (*.f64 x x)) #s(literal -1/2 binary64)) x)
(* -1 (/ (- (* -1 (/ (+ 1/8 (* 1/16 (/ 1 (pow x 2)))) (pow x 2))) 1/2) x))
(-.f64 (/.f64 (+.f64 (/.f64 #s(literal 1/16 binary64) (*.f64 x x)) #s(literal 1/8 binary64)) (pow.f64 x #s(literal 3 binary64))) (/.f64 #s(literal -1/2 binary64) x))
(* -1 (/ (- (* -1 (/ (+ 1/16 (* 5/128 (/ 1 (pow x 2)))) (pow x 4))) (+ 1/2 (* 1/8 (/ 1 (pow x 2))))) x))
(-.f64 (-.f64 (/.f64 (+.f64 (/.f64 #s(literal 5/128 binary64) (*.f64 x x)) #s(literal 1/16 binary64)) (pow.f64 x #s(literal 5 binary64))) (/.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 3 binary64)))) (/.f64 #s(literal -1/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)

rewrite133.0ms (3%)

Memory
18.4MiB live, 214.4MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01028
01228
14928
231628
3354628
0812926
Stop Event
iter limit
node limit
iter limit
Counts
3 → 4
Calls
Call 1
Inputs
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
#s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Compiler

Compiled 419 to 140 computations (66.6% saved)

prune0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New40040
Fresh000
Picked011
Done000
Total40141
Accuracy
100.0%
Counts
41 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(log.f64 #s(approx (+ x (sqrt (- (* x x) 1))) (*.f64 #s(literal 2 binary64) x)))
Compiler

Compiled 19 to 16 computations (15.8% saved)

regimes0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Compiler

Compiled 8 to 6 computations (25% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated
Calls

1 calls:

0.0ms
(+.f64 x (sqrt.f64 (-.f64 (*.f64 x x) #s(literal 1 binary64))))

Profiling

Loading profile data...