Migdal et al, Equation (51)

Time bar (total: 4.3s)

analyze160.0ms (3.8%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%50%0.1%0%50%0%2
50%25%25%0.1%0%50%0%3
50%25%25%0.1%0%50%0%4
50%25%25%0.1%0%50%0%5
50%25%25%0.1%0%50%0%6
51.6%25%23.4%0.1%0%50%1.6%7
52.5%25%22.6%0.1%0%50%2.3%8
53.8%25%21.5%0.1%0%50%3.5%9
54.5%25%20.9%0.1%0%50%4.1%10
55.3%25%20.2%0.1%0%50%4.8%11
55.7%25%19.9%0.1%0%50%5.1%12
Compiler

Compiled 19 to 14 computations (26.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 102.0ms
ival-pow: 48.0ms (47% of total)
ival-mult: 26.0ms (25.4% of total)
ival-div: 12.0ms (11.7% of total)
ival-sqrt: 7.0ms (6.8% of total)
ival-sub: 4.0ms (3.9% of total)
ival-pi: 3.0ms (2.9% of total)
const: 1.0ms (1% of total)

sample3.8s (89%)

Results
1.3s3155×1024invalid
1.2s8256×256valid
337.0ms1519×512invalid
145.0ms1525×256invalid
121.0ms207×2048invalid
40.0ms184×256unsamplable
Precisions
Click to see histograms. Total time spent on operations: 2.5s
ival-pow: 933.0ms (38% of total)
ival-mult: 587.0ms (23.9% of total)
ival-div: 396.0ms (16.1% of total)
ival-sqrt: 258.0ms (10.5% of total)
ival-sub: 139.0ms (5.7% of total)
ival-pi: 106.0ms (4.3% of total)
const: 38.0ms (1.5% of total)
Bogosity

preprocess136.0ms (3.2%)

Algorithm
egg-herbie
Rules
465×fma-define
240×fma-neg
124×associate-*r*
80×associate-*l*
74×sub-neg
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
039438
196380
2211380
3410364
4686352
51171352
61433352
71698352
82017352
92060352
102088352
112099352
122101352
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64)))))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64)))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 n)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) k) (/.f64 (-.f64 #s(literal 1 binary64) n) #s(literal 2 binary64))))
Outputs
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal -1/2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (fma.f64 k #s(literal -1/2 binary64) #s(literal 1/2 binary64))) (sqrt.f64 k))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal -1/2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (fma.f64 k #s(literal -1/2 binary64) #s(literal 1/2 binary64))) (sqrt.f64 k))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (/.f64 (+.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))) (sqrt.f64 (neg.f64 k)))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (sqrt.f64 (neg.f64 k)))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal 1/2 binary64)))) (sqrt.f64 (neg.f64 k)))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (fma.f64 k #s(literal 1/2 binary64) #s(literal 1/2 binary64))) (sqrt.f64 (neg.f64 k)))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 #s(literal -2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 n #s(literal -2 binary64))) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal -1/2 binary64)))) (sqrt.f64 k))
(/.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 n #s(literal -2 binary64))) (fma.f64 k #s(literal -1/2 binary64) #s(literal 1/2 binary64))) (sqrt.f64 k))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64)))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 k))) (neg.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (/.f64 (-.f64 #s(literal 1 binary64) (neg.f64 k)) #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (/.f64 (+.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))) (neg.f64 (sqrt.f64 (neg.f64 k))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (neg.f64 (sqrt.f64 (neg.f64 k))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal 1/2 binary64)))) (neg.f64 (sqrt.f64 (neg.f64 k))))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 (PI.f64) n)) (fma.f64 k #s(literal 1/2 binary64) #s(literal 1/2 binary64))) (neg.f64 (sqrt.f64 (neg.f64 k))))
(neg.f64 (*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64)))))
(*.f64 (neg.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k))) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) (neg.f64 n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 #s(literal -2 binary64) (*.f64 (PI.f64) n)) (-.f64 #s(literal 1/2 binary64) (/.f64 k #s(literal 2 binary64)))) (neg.f64 (sqrt.f64 k)))
(/.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 n #s(literal -2 binary64))) (+.f64 #s(literal 1/2 binary64) (*.f64 k #s(literal -1/2 binary64)))) (neg.f64 (sqrt.f64 k)))
(/.f64 (pow.f64 (*.f64 (PI.f64) (*.f64 n #s(literal -2 binary64))) (fma.f64 k #s(literal -1/2 binary64) #s(literal 1/2 binary64))) (neg.f64 (sqrt.f64 k)))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 n)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) k) (/.f64 (-.f64 #s(literal 1 binary64) n) #s(literal 2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 n)) (pow.f64 (*.f64 k (*.f64 #s(literal 2 binary64) (PI.f64))) (-.f64 #s(literal 1/2 binary64) (/.f64 n #s(literal 2 binary64)))))
(/.f64 (pow.f64 (*.f64 k (*.f64 #s(literal 2 binary64) (PI.f64))) (-.f64 #s(literal 1/2 binary64) (/.f64 n #s(literal 2 binary64)))) (sqrt.f64 n))
(/.f64 (pow.f64 (*.f64 k (*.f64 #s(literal 2 binary64) (PI.f64))) (+.f64 #s(literal 1/2 binary64) (/.f64 n #s(literal -2 binary64)))) (sqrt.f64 n))
(/.f64 (pow.f64 (*.f64 k (*.f64 #s(literal 2 binary64) (PI.f64))) (+.f64 #s(literal 1/2 binary64) (*.f64 n #s(literal -1/2 binary64)))) (sqrt.f64 n))
(/.f64 (pow.f64 (*.f64 k (*.f64 #s(literal 2 binary64) (PI.f64))) (fma.f64 n #s(literal -1/2 binary64) #s(literal 1/2 binary64))) (sqrt.f64 n))

explain143.0ms (3.4%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
4222(2.9656583032045418e+228 2.0720844514528826e+66)0-(pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64)))
00-0-(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
00-0-(PI.f64)
00-0-(*.f64 #s(literal 2 binary64) (PI.f64))
00-0-(/.f64 #s(literal 1 binary64) (sqrt.f64 k))
00-0-(-.f64 #s(literal 1 binary64) k)
00-0-#s(literal 2 binary64)
00-0-(sqrt.f64 k)
00-0-(*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n)
00-0-#s(literal 1 binary64)
00-0-(/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))
00-0-n
00-0-k
Results
89.0ms512×256valid
Compiler

Compiled 132 to 41 computations (68.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 55.0ms
ival-pow: 25.0ms (45.9% of total)
ival-mult: 11.0ms (20.2% of total)
ival-div: 8.0ms (14.7% of total)
ival-sqrt: 4.0ms (7.3% of total)
ival-sub: 3.0ms (5.5% of total)
ival-pi: 2.0ms (3.7% of total)
const: 1.0ms (1.8% of total)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
99.5%
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
Compiler

Compiled 36 to 26 computations (27.8% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative
1-exp
sub-neg
+-commutative
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01958
12958
23358
33558
43658
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))
Outputs
(*.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 k)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) (PI.f64)) n) (/.f64 (-.f64 #s(literal 1 binary64) k) #s(literal 2 binary64))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 18 to 13 computations (27.8% saved)

preprocess23.0ms (0.5%)

Compiler

Compiled 72 to 52 computations (27.8% saved)

end0.0ms (0%)

Profiling

Loading profile data...