Distance on a great circle

Time bar (total: 8.3s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze759.0ms (9.2%)

Memory
-3.2MiB live, 257.8MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.8%0.2%0%0%0%0
0%0%99.8%0.2%0%0%0%1
0%0%99.8%0.2%0%0%0%2
0%0%99.8%0.2%0%0%0%3
0%0%99.8%0.2%0%0%0%4
0%0%99.8%0.2%0%0%0%5
0%0%99.8%0.2%0%0%0%6
0%0%99.8%0.2%0%0%0%7
0%0%99.8%0.2%0%0%0%8
0%0%99.8%0.2%0%0%0%9
0%0%99.8%0.2%0%0%0%10
0%0%99.8%0.2%0%0%0%11
0%0%99.8%0.2%0%0%0%12
Compiler

Compiled 67 to 28 computations (58.2% saved)

sample192.0ms (2.3%)

Memory
6.3MiB live, 38.0MiB allocated
Samples
171.0ms235×1valid
4.0ms25×0valid
Precisions
Click to see histograms. Total time spent on operations: 164.0ms
ival-sin: 53.0ms (32.4% of total)
ival-cos: 53.0ms (32.4% of total)
ival-mult: 15.0ms (9.2% of total)
adjust: 11.0ms (6.7% of total)
ival-sub: 7.0ms (4.3% of total)
ival-sqrt: 6.0ms (3.7% of total)
ival-div: 6.0ms (3.7% of total)
ival-atan2: 6.0ms (3.7% of total)
ival-pow2: 5.0ms (3.1% of total)
ival-add: 2.0ms (1.2% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
Bogosity

explain7.0s (84.3%)

Memory
28.9MiB live, 2 574.4MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
79106(-1.3959735936388587e+67 8.615286944815702e-98 -2.088335945683133e+88 -4.018519321886243e+291 4.244057442509283e-62)0-(sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))
76118(-1.3959735936388587e+67 8.615286944815702e-98 -2.088335945683133e+88 -4.018519321886243e+291 4.244057442509283e-62)0-(sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))
140-2(-1.6294311690478434e-25 9.982117444334392e-13 3.2534168844740025e+283 -1.932799130345845e-261 -5.583756611254321e-237)(-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))
10-0-(sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))
00-0-(*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))
00-0-lambda2
00-0-#s(literal 1 binary64)
00-0-phi2
00-0-(atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))
00-0-(pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64))
00-0-(*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))))))
00-0-(*.f64 (cos.f64 phi1) (cos.f64 phi2))
00-0-(-.f64 lambda1 lambda2)
00-0-R
00-0-(cos.f64 phi2)
00-0-lambda1
00-0-(+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))
00-0-phi1
00-0-(/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))
00-0-(*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))
00-0-(sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))))
00-0-#s(literal 2 binary64)
00-0-(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
00-0-(/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))
00-0-(-.f64 phi1 phi2)
00-0-(cos.f64 phi1)
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sin.f64(sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))sensitivity1943
sin.f64(sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))sensitivity1851
-.f64(-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))cancellation1211
sqrt.f64(sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))uflow-rescue10
(pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64))underflow13
(*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))underflow13
(+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))underflow1
Confusion
Predicted +Predicted -
+1350
-10615
Precision
0.5601659751037344
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+13500
-106213
Precision?
0.5555555555555556
Recall?
1.0
Freqs
test
numberfreq
015
192
2147
32
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Total Time
185.19921875
Average Time
0.7234344482421875
Samples
4.3s5 544×1valid
109.0ms600×0valid
Compiler

Compiled 14 868 to 1 296 computations (91.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.9s
ival-sin: 1.3s (32.6% of total)
ival-cos: 1.2s (31.6% of total)
ival-mult: 362.0ms (9.4% of total)
adjust: 265.0ms (6.9% of total)
ival-sub: 166.0ms (4.3% of total)
ival-sqrt: 145.0ms (3.8% of total)
ival-div: 137.0ms (3.6% of total)
ival-atan2: 131.0ms (3.4% of total)
ival-pow2: 113.0ms (2.9% of total)
ival-add: 47.0ms (1.2% of total)
exact: 7.0ms (0.2% of total)
ival-true: 5.0ms (0.1% of total)
ival-assert: 2.0ms (0.1% of total)

preprocess318.0ms (3.8%)

Memory
-5.1MiB live, 43.7MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02331311
15441304
213531304
335321280
461861272
02665
04565
17465
213265
327365
452365
587365
6134565
7163765
8216765
9294965
10412065
11438665
12452765
13458765
14461165
15478065
16522165
17531065
18531065
19531865
20637165
0856163
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
Outputs
(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
(*.f64 (*.f64 #s(literal 2 binary64) R) (atan2.f64 (sqrt.f64 (fma.f64 (*.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 lambda2 lambda1))) (cos.f64 phi2)) (*.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 lambda2 lambda1))) (cos.f64 phi1)) (pow.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 phi1 phi2))) #s(literal 2 binary64)))) (sqrt.f64 (-.f64 (fma.f64 (*.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 lambda2 lambda1))) (cos.f64 phi2)) (*.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 lambda1 lambda2))) (cos.f64 phi1)) #s(literal 1 binary64)) (pow.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) (-.f64 phi1 phi2))) #s(literal 2 binary64))))))
Symmetry

(negabs R)

Compiler

Compiled 65 to 26 computations (60% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 5 computations (-∞% saved)

prune1.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
57.8%
(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
Compiler

Compiled 130 to 52 computations (60% saved)

simplify22.0ms (0.3%)

Memory
3.1MiB live, 18.8MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02665
14165
25565
37365
48965
510365
611165
711665
811865
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
Outputs
(*.f64 R (*.f64 #s(literal 2 binary64) (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))))))))))
(*.f64 (*.f64 (atan2.f64 (sqrt.f64 (+.f64 (*.f64 (*.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))) (*.f64 (cos.f64 phi2) (cos.f64 phi1))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)))) (sqrt.f64 (-.f64 #s(literal 1 binary64) (+.f64 (*.f64 (*.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64))) (*.f64 (cos.f64 phi2) (cos.f64 phi1))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) #s(literal 2 binary64)))) (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64))) #s(literal 2 binary64)))))) #s(literal 2 binary64)) R)

soundness0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Stop Event
fuel
Compiler

Compiled 65 to 26 computations (60% saved)

preprocess6.0ms (0.1%)

Memory
-4.9MiB live, 2.9MiB allocated
Remove

(negabs R)

Compiler

Compiled 520 to 208 computations (60% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...