Equirectangular approximation to distance on a great circle

Time bar (total: 3.1s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.8%0.2%0%0%0%0
100%99.8%0%0.2%0%0%0%1
Compiler

Compiled 34 to 16 computations (52.9% saved)

sample35.0ms (1.1%)

Memory
-3.8MiB live, 11.9MiB allocated
Samples
15.0ms202×0valid
11.0ms58×1valid
Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-hypot: 4.0ms (21.4% of total)
ival-cos: 4.0ms (21.4% of total)
ival-mult: 3.0ms (16.1% of total)
ival-div: 2.0ms (10.7% of total)
ival-sub: 2.0ms (10.7% of total)
ival-add: 1.0ms (5.4% of total)
adjust: 1.0ms (5.4% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
Bogosity

explain2.8s (92.6%)

Memory
13.8MiB live, 1 406.2MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1750-0-(sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))
62118(1.8874365599516237e-279 1.1356108677362649e-14 5.860397685507339e-195 3.616498352026143e-238 5.013743725418967e+93)0-(cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))
00-0-(*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))))
00-0-lambda2
00-0-(+.f64 phi1 phi2)
00-0-phi2
00-0-(+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))
00-0-(-.f64 lambda1 lambda2)
00-0-(*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))
00-0-R
00-0-lambda1
00-0-phi1
00-0-(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
00-0-#s(literal 2 binary64)
00-0-(/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))
00-0-(-.f64 phi1 phi2)
00-0-(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
cos.f64(cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))sensitivity1800
sqrt.f64(sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))oflow-rescue1730
(*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))overflow109
(*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))))overflow115
(+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))overflow173
sqrt.f64(sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))uflow-rescue20
(*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))underflow14
(*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))))underflow19
(+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))underflow2
Confusion
Predicted +Predicted -
+1110
-10342
Precision
0.5186915887850467
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+11100
-103042
Precision?
0.5186915887850467
Recall?
1.0
Freqs
test
numberfreq
042
173
2141
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Total Time
60.096435546875
Average Time
0.23475170135498047
Samples
1.2s4 224×1valid
213.0ms1 920×0valid
Compiler

Compiled 6 012 to 864 computations (85.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0s
ival-mult: 261.0ms (25.3% of total)
ival-cos: 255.0ms (24.7% of total)
ival-hypot: 138.0ms (13.4% of total)
adjust: 130.0ms (12.6% of total)
ival-sub: 90.0ms (8.7% of total)
ival-add: 85.0ms (8.2% of total)
ival-div: 63.0ms (6.1% of total)
ival-true: 5.0ms (0.5% of total)
exact: 4.0ms (0.4% of total)
ival-assert: 2.0ms (0.2% of total)

preprocess159.0ms (5.2%)

Memory
0.2MiB live, 40.7MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0149667
1357661
2923645
34473645
47816645
01732
02832
14332
28832
330232
4105532
5334832
6681232
0814916
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
Outputs
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 (hypot.f64 (-.f64 phi2 phi1) (*.f64 (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64))) (-.f64 lambda1 lambda2))) R)
Symmetry

(negabs R)

(sort lambda1 lambda2)

(sort phi1 phi2)

Compiler

Compiled 32 to 17 computations (46.9% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 5 computations (-∞% saved)

prune1.0ms (0%)

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

Compiled 64 to 34 computations (46.9% saved)

simplify20.0ms (0.6%)

Memory
2.7MiB live, 18.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01732
12532
23332
33732
43932
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
Outputs
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 (sqrt.f64 (+.f64 (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)) (*.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64))) (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64))) (-.f64 lambda1 lambda2))))) R)

soundness1.0ms (0%)

Memory
-9.1MiB live, 0.2MiB allocated
Stop Event
fuel
Compiler

Compiled 32 to 17 computations (46.9% saved)

preprocess13.0ms (0.4%)

Memory
7.7MiB live, 7.7MiB allocated
Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

(negabs R)

Compiler

Compiled 512 to 272 computations (46.9% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...