A quarter-circle in the lower-left quadrant

Time bar (total: 2.9s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 15 to 11 computations (26.7% saved)

sample1.2s (41.3%)

Memory
-18.4MiB live, 1 123.9MiB allocated; 1.1s collecting garbage
Samples
951.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 759.0ms
ival-pow2: 577.0ms (76% of total)
ival-fmax: 83.0ms (10.9% of total)
ival-add: 43.0ms (5.7% of total)
ival-sub: 41.0ms (5.4% of total)
ival-true: 6.0ms (0.8% of total)
exact: 5.0ms (0.7% of total)
ival-assert: 3.0ms (0.4% of total)
adjust: 2.0ms (0.3% of total)
Bogosity

explain125.0ms (4.2%)

Memory
-11.5MiB live, 179.4MiB allocated; 30ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
00-0-(pow.f64 x #s(literal 2 binary64))
00-0-(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
00-0-y
00-0-#s(literal 2 binary64)
00-0-(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
00-0-(pow.f64 y #s(literal 2 binary64))
00-0-(fmax.f64 x y)
00-0-#s(literal 1/2 binary64)
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
40.0ms512×0valid
Compiler

Compiled 101 to 34 computations (66.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 21.0ms
ival-pow2: 10.0ms (48.3% of total)
ival-fmax: 5.0ms (24.2% of total)
ival-sub: 2.0ms (9.7% of total)
ival-add: 2.0ms (9.7% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess276.0ms (9.4%)

Memory
42.4MiB live, 184.9MiB allocated; 28ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02475
13971
28471
315971
421871
535671
687971
7594971
01013
01613
12313
24513
310113
420113
533613
683313
7560313
0896411
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
Outputs
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
(fmax.f64 (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))) (fmax.f64 x y))
Compiler

Compiled 13 to 10 computations (23.1% saved)

eval0.0ms (0%)

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

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify157.0ms (5.3%)

Memory
-3.9MiB live, 82.5MiB allocated; 17ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(pow.f64 y #s(literal 2 binary64))
cost-diff0
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
cost-diff1
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
cost-diff1
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01042
01642
12342
24542
310142
420142
533642
683342
7560342
0896437
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(pow.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
x
#s(literal 1/2 binary64)
(fmax.f64 x y)
Outputs
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
(fmax.f64 (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))) (fmax.f64 x y))
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(fma.f64 x x (*.f64 y y))
(pow.f64 y #s(literal 2 binary64))
(*.f64 y y)
y
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 1/2 binary64)
(fmax.f64 x y)

localize29.0ms (1%)

Memory
-5.4MiB live, 38.5MiB allocated; 7ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fmax.f64 x y)
accuracy0.0
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
accuracy0.00390625
(pow.f64 x #s(literal 2 binary64))
accuracy0.00390625
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Samples
22.0ms256×0valid
Compiler

Compiled 44 to 12 computations (72.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-pow2: 5.0ms (49.3% of total)
ival-fmax: 2.0ms (19.7% of total)
ival-sub: 1.0ms (9.9% of total)
ival-add: 1.0ms (9.9% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.2%)

Memory
7.8MiB live, 7.8MiB allocated; 0ms collecting garbage
Counts
6 → 16
Calls
Call 1
Inputs
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
(pow.f64 y #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(fmax.f64 x y)
Outputs
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (+ (pow x 2) (pow y 2))))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (pow x 2) #s(hole binary64 (pow x 2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (pow y 2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
y
@inf
((- (+ (pow y 2) (pow x 2)) 1/2) (+ (pow y 2) (pow x 2)) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (pow y 2) (pow x 2) (fmax x y))
1.0ms
x
@inf
((- (+ (pow y 2) (pow x 2)) 1/2) (+ (pow y 2) (pow x 2)) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (pow y 2) (pow x 2) (fmax x y))
1.0ms
x
@0
((- (+ (pow y 2) (pow x 2)) 1/2) (+ (pow y 2) (pow x 2)) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (pow y 2) (pow x 2) (fmax x y))
1.0ms
x
@-inf
((- (+ (pow y 2) (pow x 2)) 1/2) (+ (pow y 2) (pow x 2)) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (pow y 2) (pow x 2) (fmax x y))
1.0ms
y
@-inf
((- (+ (pow y 2) (pow x 2)) 1/2) (+ (pow y 2) (pow x 2)) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (pow y 2) (pow x 2) (fmax x y))

simplify144.0ms (4.9%)

Memory
10.0MiB live, 161.5MiB allocated; 34ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046228
189228
2263228
31549228
08849194
Stop Event
iter limit
node limit
Counts
16 → 16
Calls
Call 1
Inputs
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (+ (pow x 2) (pow y 2))))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (pow x 2) #s(hole binary64 (pow x 2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (pow y 2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))))
Outputs
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (pow y 2) (pow x 2)) (*.f64 y y))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (+ (pow x 2) (pow y 2))))
#s(approx (+ (pow y 2) (pow x 2)) (fma.f64 x x (*.f64 y y)))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (fmax.f64 (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))) (fmax.f64 x y)))
#s(approx (pow x 2) #s(hole binary64 (pow x 2)))
#s(approx (pow x 2) (*.f64 x x))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (fmax x y) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (pow y 2) (pow x 2)) (*.f64 x x))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))))
#s(approx (+ (pow y 2) (pow x 2)) (fma.f64 x x (*.f64 y y)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (pow y 2) #s(hole binary64 (pow y 2)))
#s(approx (pow y 2) (*.f64 y y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (+ (pow y 2) (pow x 2)) #s(hole binary64 (* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))))
#s(approx (+ (pow y 2) (pow x 2)) (fma.f64 x x (*.f64 y y)))

rewrite54.0ms (1.8%)

Memory
-43.5MiB live, 59.6MiB allocated; 17ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
01638
16138
044235
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
6 → 60
Calls
Call 1
Inputs
(-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64))
(+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
(pow.f64 y #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(fmax.f64 x y)
Outputs
(/.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) (*.f64 (-.f64 (*.f64 x x) #s(literal 1/2 binary64)) (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))) (-.f64 (*.f64 y y) (-.f64 (*.f64 x x) #s(literal 1/2 binary64))))
(/.f64 (+.f64 (pow.f64 y #s(literal 6 binary64)) (pow.f64 (-.f64 (*.f64 x x) #s(literal 1/2 binary64)) #s(literal 3 binary64))) (+.f64 (pow.f64 y #s(literal 4 binary64)) (-.f64 (*.f64 (-.f64 (*.f64 x x) #s(literal 1/2 binary64)) (-.f64 (*.f64 x x) #s(literal 1/2 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 x x) #s(literal 1/2 binary64))))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64))) (neg.f64 (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 3 binary64)) #s(literal 1/8 binary64))) (neg.f64 (fma.f64 #s(literal 1/2 binary64) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64))) (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64))))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 3 binary64)) #s(literal 1/8 binary64)) (fma.f64 #s(literal 1/2 binary64) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64))) (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64))))
(fma.f64 (neg.f64 y) (neg.f64 y) (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(fma.f64 (neg.f64 x) (neg.f64 x) (-.f64 (*.f64 y y) #s(literal 1/2 binary64)))
(fma.f64 (fabs.f64 y) (fabs.f64 y) (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (-.f64 (*.f64 y y) #s(literal 1/2 binary64)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (-.f64 (*.f64 y y) #s(literal 1/2 binary64)))
(fma.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)) (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(fma.f64 x x (-.f64 (*.f64 y y) #s(literal 1/2 binary64)))
(fma.f64 y y (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64)))) (/.f64 #s(literal 1/4 binary64) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64)))))
(-.f64 (/.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 3 binary64)) (fma.f64 #s(literal 1/2 binary64) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64))) (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)))) (/.f64 #s(literal 1/8 binary64) (fma.f64 #s(literal 1/2 binary64) (fma.f64 x x (fma.f64 y y #s(literal 1/2 binary64))) (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)))))
(-.f64 (fma.f64 x x (*.f64 y y)) #s(literal 1/2 binary64))
(+.f64 (-.f64 (*.f64 x x) #s(literal 1/2 binary64)) (*.f64 y y))
(+.f64 (*.f64 x x) (-.f64 (*.f64 y y) #s(literal 1/2 binary64)))
(+.f64 (*.f64 y y) (-.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 y #s(literal 4 binary64))) (-.f64 (*.f64 x x) (*.f64 y y)))
(/.f64 (neg.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64)))) (neg.f64 (*.f64 (+.f64 y x) (-.f64 y x))))
(/.f64 (neg.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 6 binary64)))) (neg.f64 (+.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (pow.f64 y #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64))) (*.f64 (+.f64 y x) (-.f64 y x)))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 6 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (pow.f64 y #s(literal 4 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 6 binary64))) (+.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (pow.f64 y #s(literal 4 binary64))))
(fma.f64 (neg.f64 y) (neg.f64 y) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 y y))
(fma.f64 (fabs.f64 y) (fabs.f64 y) (*.f64 x x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 y y))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 y y))
(fma.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)) (*.f64 x x))
(fma.f64 x x (*.f64 y y))
(fma.f64 y y (*.f64 x x))
(-.f64 (/.f64 (pow.f64 y #s(literal 4 binary64)) (*.f64 (+.f64 y x) (-.f64 y x))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (+.f64 y x) (-.f64 y x))))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 y) y))
(-.f64 (*.f64 y y) (*.f64 (neg.f64 x) x))
(+.f64 (/.f64 (pow.f64 y #s(literal 6 binary64)) (+.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (pow.f64 y #s(literal 4 binary64)))) (/.f64 (pow.f64 x #s(literal 6 binary64)) (+.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (pow.f64 y #s(literal 4 binary64)))))
(+.f64 (*.f64 x x) (*.f64 y y))
(+.f64 (*.f64 y y) (*.f64 x x))
(fmax.f64 (-.f64 (fma.f64 x x (*.f64 y y)) #s(literal 1/2 binary64)) (fmax.f64 x y))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (fabs.f64 y) (fabs.f64 y))
(*.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)))
(*.f64 y y)
(pow.f64 (exp.f64 (log.f64 y)) #s(literal 2 binary64))
(pow.f64 (*.f64 y y) #s(literal 1 binary64))
(pow.f64 y #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(fmax.f64 x y)

eval9.0ms (0.3%)

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

Compiled 1 333 to 287 computations (78.5% saved)

prune3.0ms (0.1%)

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

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New68472
Fresh000
Picked101
Done000
Total69473
Accuracy
100.0%
Counts
73 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
68.5%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
55.8%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
61.7%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
Compiler

Compiled 73 to 51 computations (30.1% saved)

simplify161.0ms (5.5%)

Memory
7.9MiB live, 94.5MiB allocated; 14ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
cost-diff0
(fma.f64 y y #s(literal -1/2 binary64))
cost-diff0
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
cost-diff0
(fmax.f64 x y)
cost-diff0
(fma.f64 x x #s(literal -1/2 binary64))
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
cost-diff0
(fmax.f64 x y)
cost-diff0
(*.f64 y y)
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
cost-diff0
(fmax.f64 x y)
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
023173
033173
153173
2116173
3234173
4324173
5403173
6900157
75757157
09118157
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
(*.f64 x x)
x
(fmax.f64 x y)
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
(*.f64 y y)
y
(fmax.f64 x y)
x
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 x x #s(literal -1/2 binary64))
x
#s(literal -1/2 binary64)
(fmax.f64 x y)
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
x
(fma.f64 y y #s(literal -1/2 binary64))
y
#s(literal -1/2 binary64)
(fmax.f64 x y)
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
(*.f64 x x)
x
(fmax.f64 x y)
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
(*.f64 y y)
y
(fmax.f64 x y)
x
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 x x #s(literal -1/2 binary64))
x
#s(literal -1/2 binary64)
(fmax.f64 x y)
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
x
(fma.f64 y y #s(literal -1/2 binary64))
y
#s(literal -1/2 binary64)
(fmax.f64 x y)

localize43.0ms (1.5%)

Memory
15.1MiB live, 59.0MiB allocated; 7ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
accuracy0.0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
accuracy0.0
(fmax.f64 x y)
accuracy0.0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
accuracy0.0
(fma.f64 x x #s(literal -1/2 binary64))
accuracy0.0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
accuracy0.0
(fmax.f64 x y)
accuracy20.83402705190863
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
accuracy0.0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
accuracy0.0
(fmax.f64 x y)
accuracy0.0
(*.f64 y y)
accuracy38.05779379415326
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
accuracy0.0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
accuracy0.0
(fmax.f64 x y)
accuracy0.0
(*.f64 x x)
accuracy34.079234932928024
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
Samples
32.0ms256×0valid
Compiler

Compiled 137 to 17 computations (87.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-mult: 7.0ms (34.6% of total)
ival-pow2: 5.0ms (24.7% of total)
ival-add: 4.0ms (19.8% of total)
ival-fmax: 2.0ms (9.9% of total)
ival-sub: 1.0ms (4.9% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series22.0ms (0.7%)

Memory
-36.9MiB live, 21.9MiB allocated; 12ms collecting garbage
Counts
14 → 26
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
(*.f64 x x)
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
(*.f64 y y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 x x #s(literal -1/2 binary64))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 y y #s(literal -1/2 binary64))
Outputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
Calls

6 calls:

TimeVariablePointExpression
6.0ms
y
@inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* x x) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* y y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2))
1.0ms
y
@-inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* x x) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* y y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2))
1.0ms
x
@inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* x x) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* y y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2))
1.0ms
x
@-inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* x x) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* y y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2))
1.0ms
x
@0
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* x x) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (* y y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2))

simplify89.0ms (3%)

Memory
9.7MiB live, 96.2MiB allocated; 14ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
064390
1112390
2383374
31847374
08534314
Stop Event
iter limit
node limit
Counts
26 → 26
Calls
Call 1
Inputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
Outputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (fmax.f64 (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))) (fmax.f64 x y)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (* x x) #s(hole binary64 (pow x 2)))
#s(approx (* x x) (*.f64 x x))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (fmax x y) (fmax.f64 x y))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) -1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 y x) x) y #s(literal 1 binary64)) (*.f64 x x) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) (*.f64 x x))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 y x) x) y #s(literal 1 binary64)) (*.f64 x x) #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (* y y) (*.f64 y y))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(literal -1/2 binary64))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* y y) -1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 x y) y) x #s(literal 1 binary64)) (*.f64 y y) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 x y) y) x #s(literal 1 binary64)) (*.f64 y y) #s(literal -1/2 binary64)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) (*.f64 y y))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) (fma.f64 y y #s(literal -1/2 binary64)))

rewrite50.0ms (1.7%)

Memory
15.1MiB live, 58.5MiB allocated; 7ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023154
033154
1121154
0947146
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
14 → 119
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
(*.f64 x x)
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
(*.f64 y y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 x x #s(literal -1/2 binary64))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 y y #s(literal -1/2 binary64))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(neg.f64 (*.f64 x (neg.f64 x)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
(*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)))
(*.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)))
(*.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)))
(*.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (fabs.f64 y) (fabs.f64 y))
(*.f64 y y)
(pow.f64 (exp.f64 (log.f64 y)) #s(literal 2 binary64))
(pow.f64 (neg.f64 y) #s(literal 2 binary64))
(pow.f64 (fabs.f64 y) #s(literal 2 binary64))
(pow.f64 (*.f64 y y) #s(literal 1 binary64))
(pow.f64 y #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 y) y))
(neg.f64 (*.f64 y (neg.f64 y)))
(fabs.f64 (*.f64 y y))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
(/.f64 (-.f64 #s(literal 1/4 binary64) (pow.f64 x #s(literal 4 binary64))) (-.f64 #s(literal -1/2 binary64) (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/4 binary64))) (neg.f64 (-.f64 (*.f64 x x) #s(literal -1/2 binary64))))
(/.f64 (neg.f64 (+.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/4 binary64)) (-.f64 (*.f64 x x) #s(literal -1/2 binary64)))
(/.f64 (+.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 6 binary64))) (+.f64 #s(literal 1/4 binary64) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(literal -1/2 binary64) (*.f64 x x)))))
(/.f64 (+.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) #s(literal -1/2 binary64))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) #s(literal -1/2 binary64))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) #s(literal -1/2 binary64))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) #s(literal -1/2 binary64))
(fma.f64 (neg.f64 x) (neg.f64 x) #s(literal -1/2 binary64))
(fma.f64 (fabs.f64 x) (fabs.f64 x) #s(literal -1/2 binary64))
(fma.f64 x x #s(literal -1/2 binary64))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) #s(literal -1/2 binary64))) (/.f64 #s(literal 1/4 binary64) (-.f64 (*.f64 x x) #s(literal -1/2 binary64))))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 x) x))
(-.f64 #s(literal -1/2 binary64) (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 #s(literal -1/8 binary64) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 #s(literal -1/2 binary64) (*.f64 x x))
(+.f64 (*.f64 x x) #s(literal -1/2 binary64))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
(/.f64 (-.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)))
(/.f64 (+.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 3 binary64)) #s(literal -1/8 binary64)) (+.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)) (-.f64 #s(literal 1/4 binary64) (*.f64 (fma.f64 x x (*.f64 y y)) #s(literal -1/2 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 x x) (fma.f64 y y #s(literal -1/2 binary64)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (fma.f64 y y #s(literal -1/2 binary64)) (-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 (fma.f64 x x (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (-.f64 (fma.f64 x x (*.f64 y y)) #s(literal -1/2 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 2 binary64))) (-.f64 (*.f64 x x) (fma.f64 y y #s(literal -1/2 binary64))))
(/.f64 (+.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (+.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (fma.f64 y y #s(literal -1/2 binary64)) (-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 (neg.f64 y) (neg.f64 y) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (neg.f64 x) (neg.f64 x) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 (fabs.f64 y) (fabs.f64 y) (fma.f64 x x #s(literal -1/2 binary64)))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))
(fma.f64 y y (fma.f64 x x #s(literal -1/2 binary64)))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) (fma.f64 y y #s(literal -1/2 binary64)))) (/.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 2 binary64)) (-.f64 (*.f64 x x) (fma.f64 y y #s(literal -1/2 binary64)))))
(-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 (neg.f64 x) x))
(-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (fma.f64 y y #s(literal -1/2 binary64)) (-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (fma.f64 y y #s(literal -1/2 binary64)) #s(literal 3 binary64)) (fma.f64 (fma.f64 y y #s(literal -1/2 binary64)) (-.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (fma.f64 y y #s(literal -1/2 binary64)) (*.f64 x x))
(+.f64 (fma.f64 x x #s(literal -1/2 binary64)) (*.f64 y y))
(+.f64 #s(literal -1/2 binary64) (fma.f64 x x (*.f64 y y)))
(+.f64 (*.f64 y y) (fma.f64 x x #s(literal -1/2 binary64)))
(+.f64 (*.f64 x x) (fma.f64 y y #s(literal -1/2 binary64)))
(+.f64 (fma.f64 x x (*.f64 y y)) #s(literal -1/2 binary64))
(/.f64 (-.f64 #s(literal 1/4 binary64) (pow.f64 y #s(literal 4 binary64))) (-.f64 #s(literal -1/2 binary64) (*.f64 y y)))
(/.f64 (neg.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/4 binary64))) (neg.f64 (-.f64 (*.f64 y y) #s(literal -1/2 binary64))))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1/8 binary64))) (neg.f64 (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/4 binary64)) (-.f64 (*.f64 y y) #s(literal -1/2 binary64)))
(/.f64 (+.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1/8 binary64)) (+.f64 #s(literal 1/4 binary64) (-.f64 (pow.f64 y #s(literal 4 binary64)) (*.f64 #s(literal -1/2 binary64) (*.f64 y y)))))
(/.f64 (+.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1/8 binary64)) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)) #s(literal -1/2 binary64))
(fma.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)) #s(literal -1/2 binary64))
(fma.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)) #s(literal -1/2 binary64))
(fma.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)) #s(literal -1/2 binary64))
(fma.f64 (neg.f64 y) (neg.f64 y) #s(literal -1/2 binary64))
(fma.f64 (fabs.f64 y) (fabs.f64 y) #s(literal -1/2 binary64))
(fma.f64 y y #s(literal -1/2 binary64))
(-.f64 (/.f64 (pow.f64 y #s(literal 4 binary64)) (-.f64 (*.f64 y y) #s(literal -1/2 binary64))) (/.f64 #s(literal 1/4 binary64) (-.f64 (*.f64 y y) #s(literal -1/2 binary64))))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 (neg.f64 y)) (neg.f64 y)))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 (fabs.f64 y)) (fabs.f64 y)))
(-.f64 #s(literal -1/2 binary64) (*.f64 (neg.f64 y) y))
(-.f64 #s(literal -1/2 binary64) (*.f64 y (neg.f64 y)))
(+.f64 (/.f64 (pow.f64 y #s(literal 6 binary64)) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64)))) (/.f64 #s(literal -1/8 binary64) (fma.f64 #s(literal -1/2 binary64) (-.f64 #s(literal -1/2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64)))))
(+.f64 #s(literal -1/2 binary64) (*.f64 y y))
(+.f64 (*.f64 y y) #s(literal -1/2 binary64))

eval24.0ms (0.8%)

Memory
-24.3MiB live, 33.4MiB allocated; 9ms collecting garbage
Compiler

Compiled 3 303 to 514 computations (84.4% saved)

prune5.0ms (0.2%)

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

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1362138
Fresh000
Picked134
Done000
Total1375142
Accuracy
100.0%
Counts
142 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.0%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
68.5%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
55.8%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
61.7%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
25.3%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Compiler

Compiled 99 to 70 computations (29.3% saved)

simplify161.0ms (5.5%)

Memory
18.2MiB live, 104.5MiB allocated; 14ms collecting garbage
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (+ (* y y) -1/2) (*.f64 y y))
cost-diff0
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
cost-diff0
(fmax.f64 x y)
cost-diff0
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
cost-diff0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
cost-diff0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022128
027128
145128
2105128
3204128
4286128
5365128
6862128
75670128
09031113
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
#s(literal -1/2 binary64)
(fmax.f64 x y)
x
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
x
#s(approx (+ (* y y) -1/2) (*.f64 y y))
(*.f64 y y)
y
(fmax.f64 x y)
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
#s(literal -1/2 binary64)
(fmax.f64 x y)
x
y
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
x
#s(approx (+ (* y y) -1/2) (*.f64 y y))
(*.f64 y y)
y
(fmax.f64 x y)

localize39.0ms (1.3%)

Memory
10.0MiB live, 54.0MiB allocated; 8ms collecting garbage
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fmax.f64 x y)
accuracy0.0
(*.f64 y y)
accuracy0.0
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
accuracy30.41610474682694
#s(approx (+ (* y y) -1/2) (*.f64 y y))
accuracy0.0
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
accuracy0.0
(fmax.f64 x y)
accuracy20.83402705190863
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
accuracy35.755929146674895
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
Samples
30.0ms256×0valid
Compiler

Compiled 79 to 17 computations (78.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-add: 8.0ms (39.6% of total)
ival-pow2: 5.0ms (24.7% of total)
ival-mult: 3.0ms (14.8% of total)
ival-fmax: 2.0ms (9.9% of total)
ival-sub: 1.0ms (4.9% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
6.7MiB live, 6.7MiB allocated; 0ms collecting garbage
Counts
9 → 25
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
#s(approx (+ (* y y) -1/2) (*.f64 y y))
(*.f64 y y)
Outputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2) (* y y))
1.0ms
y
@inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2) (* y y))
1.0ms
x
@inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2) (* y y))
1.0ms
x
@-inf
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2) (* y y))
0.0ms
y
@0
((fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) -1/2) (fmax x y) (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (- (+ (pow y 2) (pow x 2)) 1/2) (+ (* x x) (+ (* y y) -1/2)) (+ (* y y) -1/2) (* y y))

simplify109.0ms (3.7%)

Memory
-39.7MiB live, 105.5MiB allocated; 32ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
063383
1110383
2381367
31853367
08524307
Stop Event
iter limit
node limit
Counts
25 → 25
Calls
Call 1
Inputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
Outputs
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) #s(hole binary64 (fmax (- (+ (pow x 2) (pow y 2)) 1/2) (fmax x y))))
#s(approx (fmax (- (+ (pow y 2) (pow x 2)) 1/2) (fmax x y)) (fmax.f64 (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))) (fmax.f64 x y)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (+ (* x x) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (+ (* x x) -1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (fmax x y) #s(hole binary64 (fmax x y)))
#s(approx (fmax x y) (fmax.f64 x y))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (+ (pow x 2) (pow y 2)) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 y x) x) y #s(literal 1 binary64)) (*.f64 x x) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (pow x 2)))
#s(approx (+ (* x x) -1/2) (*.f64 x x))
#s(approx (+ (* x x) -1/2) #s(hole binary64 (* (pow x 2) (- 1 (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (+ (* x x) -1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow x 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (* 1/2 (/ 1 (pow x 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 y x) x) y #s(literal 1 binary64)) (*.f64 x x) #s(literal -1/2 binary64)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (- (pow x 2) 1/2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 -1/2))
#s(approx (+ (* y y) -1/2) #s(literal -1/2 binary64))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (- (pow y 2) 1/2)))
#s(approx (+ (* y y) -1/2) (fma.f64 y y #s(literal -1/2 binary64)))
#s(approx (* y y) #s(hole binary64 (pow y 2)))
#s(approx (* y y) (*.f64 y y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 x y) y) x #s(literal 1 binary64)) (*.f64 y y) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (pow y 2)))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y))
#s(approx (+ (* x x) (+ (* y y) -1/2)) #s(hole binary64 (* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 (fma.f64 (/.f64 (/.f64 x y) y) x #s(literal 1 binary64)) (*.f64 y y) #s(literal -1/2 binary64)))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (pow y 2)))
#s(approx (+ (* y y) -1/2) (*.f64 y y))
#s(approx (+ (* y y) -1/2) #s(hole binary64 (* (pow y 2) (- 1 (* 1/2 (/ 1 (pow y 2)))))))
#s(approx (+ (* y y) -1/2) (fma.f64 y y #s(literal -1/2 binary64)))

rewrite50.0ms (1.7%)

Memory
14.3MiB live, 57.3MiB allocated; 8ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022120
027120
1112120
0884109
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
9 → 45
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
#s(approx (+ (* y y) -1/2) (*.f64 y y))
(*.f64 y y)
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64)))
#s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))
(fmax.f64 x y)
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
#s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 x x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 2 binary64))) (-.f64 (*.f64 x x) #s(approx (+ (* y y) -1/2) (*.f64 y y))))
(/.f64 (+.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (+.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 (neg.f64 x) (neg.f64 x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 (fabs.f64 x) (fabs.f64 x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (/.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 2 binary64)) (-.f64 (*.f64 x x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))))
(-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 (neg.f64 x) x))
(-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) #s(literal 3 binary64)) (fma.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (-.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 #s(approx (+ (* y y) -1/2) (*.f64 y y)) (*.f64 x x))
(+.f64 (*.f64 x x) #s(approx (+ (* y y) -1/2) (*.f64 y y)))
#s(approx (+ (* y y) -1/2) (*.f64 y y))
(*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)))
(*.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)))
(*.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)))
(*.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (fabs.f64 y) (fabs.f64 y))
(*.f64 y y)
(pow.f64 (exp.f64 (log.f64 y)) #s(literal 2 binary64))
(pow.f64 (neg.f64 y) #s(literal 2 binary64))
(pow.f64 (fabs.f64 y) #s(literal 2 binary64))
(pow.f64 (*.f64 y y) #s(literal 1 binary64))
(pow.f64 y #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 y) y))
(neg.f64 (*.f64 y (neg.f64 y)))
(fabs.f64 (*.f64 y y))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))))

eval8.0ms (0.3%)

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

Compiled 1 840 to 264 computations (85.7% saved)

prune5.0ms (0.2%)

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

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New61061
Fresh000
Picked022
Done033
Total61566
Accuracy
100.0%
Counts
66 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.0%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
68.5%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
55.8%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
61.7%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
25.3%
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Compiler

Compiled 232 to 112 computations (51.7% saved)

regimes14.0ms (0.5%)

Memory
-42.8MiB live, 17.1MiB allocated; 8ms collecting garbage
Counts
7 → 1
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
Calls

3 calls:

7.0ms
x
4.0ms
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
3.0ms
y
Results
AccuracySegmentsBranch
100.0%1(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
100.0%1x
100.0%1y
Compiler

Compiled 15 to 14 computations (6.7% saved)

regimes7.0ms (0.2%)

Memory
13.0MiB live, 13.0MiB allocated; 0ms collecting garbage
Counts
5 → 2
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y))
Calls

3 calls:

2.0ms
y
2.0ms
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
2.0ms
x
Results
AccuracySegmentsBranch
100.0%2(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
92.0%1x
100.0%3y
Compiler

Compiled 15 to 14 computations (6.7% saved)

regimes6.0ms (0.2%)

Memory
11.8MiB live, 11.8MiB allocated; 0ms collecting garbage
Counts
4 → 3
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
Calls

3 calls:

2.0ms
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
2.0ms
y
2.0ms
x
Results
AccuracySegmentsBranch
85.6%3x
90.5%3y
68.5%1(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
Compiler

Compiled 15 to 14 computations (6.7% saved)

regimes3.0ms (0.1%)

Memory
7.3MiB live, 7.3MiB allocated; 0ms collecting garbage
Counts
3 → 3
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
Calls

2 calls:

2.0ms
x
2.0ms
y
Results
AccuracySegmentsBranch
85.5%3x
83.7%3y
Compiler

Compiled 2 to 4 computations (-100% saved)

regimes7.0ms (0.2%)

Memory
-35.4MiB live, 9.4MiB allocated; 5ms collecting garbage
Counts
2 → 2
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))
Calls

3 calls:

4.0ms
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
1.0ms
y
1.0ms
x
Results
AccuracySegmentsBranch
68.3%2(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
61.7%1y
68.3%3x
Compiler

Compiled 15 to 14 computations (6.7% saved)

regimes3.0ms (0.1%)

Memory
8.3MiB live, 8.3MiB allocated; 0ms collecting garbage
Counts
1 → 1
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Calls

3 calls:

1.0ms
(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
1.0ms
x
1.0ms
y
Results
AccuracySegmentsBranch
25.3%1y
25.3%1x
25.3%1(fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y))
Compiler

Compiled 15 to 14 computations (6.7% saved)

bsearch0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
166610315357236.47
5009968748327628.0
Compiler

Compiled 16 to 15 computations (6.3% saved)

bsearch39.0ms (1.3%)

Memory
6.6MiB live, 50.2MiB allocated; 7ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
20.0ms
4.646035019329716e+75
5.634012038531379e+91
16.0ms
-4.661490566975151e+57
-1.9058242307629457e+47
Samples
24.0ms320×0valid
Compiler

Compiled 716 to 554 computations (22.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-pow2: 10.0ms (60.7% of total)
ival-fmax: 3.0ms (18.2% of total)
ival-sub: 1.0ms (6.1% of total)
ival-add: 1.0ms (6.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch33.0ms (1.1%)

Memory
-2.6MiB live, 40.9MiB allocated; 9ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
20.0ms
3.9947925729479136e-16
0.8267010268873837
10.0ms
-1.989772753603199e+51
-3.0108917526419835e+50
Samples
16.0ms256×0valid
Compiler

Compiled 560 to 430 computations (23.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-pow2: 5.0ms (50.3% of total)
ival-fmax: 2.0ms (20.1% of total)
ival-sub: 1.0ms (10.1% of total)
ival-add: 1.0ms (10.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.005334160300138e-62
8.070022450677092e-62
Compiler

Compiled 16 to 15 computations (6.3% saved)

simplify45.0ms (1.5%)

Memory
-3.1MiB live, 52.5MiB allocated; 11ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057243
182243
2142243
3238243
4328243
5648243
63723243
Stop Event
node limit
Calls
Call 1
Inputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
(if (<=.f64 (fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y)) #s(literal 200000000000000 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y)))
(if (<=.f64 y #s(literal -639999999999999995609484183006093628650188439552 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)) (if (<=.f64 y #s(literal 5199999999999999698353764330651748179343881336095363139875911071997525753856 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))))
(if (<=.f64 x #s(literal -370000000000000007460960977900671398069385075621888 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y)) (if (<=.f64 x #s(literal 7385903388887613/9007199254740992 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))))
(if (<=.f64 (fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y)) #s(literal 578960446186581/28948022309329048855892746252171976963317496166410141009864396001978282409984 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y)))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))
Outputs
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x (fma.f64 y y #s(literal -1/2 binary64)))) (fmax.f64 x y))
(if (<=.f64 (fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y)) #s(literal 200000000000000 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(approx (+ (* y y) -1/2) (*.f64 y y)))) (fmax.f64 x y)))
(if (<=.f64 y #s(literal -639999999999999995609484183006093628650188439552 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)) (if (<=.f64 y #s(literal 5199999999999999698353764330651748179343881336095363139875911071997525753856 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y))))
(if (or (<=.f64 y #s(literal -639999999999999995609484183006093628650188439552 binary64)) (not (<=.f64 y #s(literal 5199999999999999698353764330651748179343881336095363139875911071997525753856 binary64)))) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (fma.f64 x x #s(literal -1/2 binary64))) (fmax.f64 x y)))
(if (<=.f64 x #s(literal -370000000000000007460960977900671398069385075621888 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y)) (if (<=.f64 x #s(literal 7385903388887613/9007199254740992 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y))))
(if (or (<=.f64 x #s(literal -370000000000000007460960977900671398069385075621888 binary64)) (not (<=.f64 x #s(literal 7385903388887613/9007199254740992 binary64)))) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 y y)) (fmax.f64 x y)))
(if (<=.f64 (fmax.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 1/2 binary64)) (fmax.f64 x y)) #s(literal 578960446186581/28948022309329048855892746252171976963317496166410141009864396001978282409984 binary64)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y)) (fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) (*.f64 x x)) (fmax.f64 x y)))
(fmax.f64 #s(approx (- (+ (pow y 2) (pow x 2)) 1/2) #s(approx (+ (* x x) -1/2) #s(literal -1/2 binary64))) (fmax.f64 x y))

derivations0.0ms (0%)

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

end0.0ms (0%)

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

Profiling

Loading profile data...