Midpoint on a great circle

Time bar (total: 1.5min)

analyze463.0ms (0.5%)

Memory
2.9MiB live, 178.5MiB 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
9.4%9.4%90.4%0.2%0%0%0%9
9.4%9.4%90.4%0.2%0%0%0%10
10.9%10.9%88.9%0.2%0%0%0%11
10.9%10.9%88.9%0.2%0%0%0%12
Compiler

Compiled 47 to 31 computations (34% saved)

sample1.5min (99.1%)

Memory
17.3MiB live, 45 558.9MiB allocated
Samples
1.7s6 160×0valid-baseline
1.3s2 084×1valid-baseline
1.1s2 084×1valid-sollya
1.1s6 160×0valid-sollya
731.0ms2 084×1valid-rival
682.0ms6 160×0valid-rival
6.0ms10×2valid-baseline
4.0ms10×2valid-rival
1.0ms10×2valid-sollya
0.0ms0valid-rival+sollya-real
Bogosity

preprocess333.0ms (0.4%)

Memory
-3.2MiB live, 43.5MiB allocated
Algorithm
egg-herbie
Rules
823×fmm-def
781×fma-define
227×unsub-neg
209×distribute-lft-neg-in
185×sub-neg
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01031448
11791356
22941348
35841348
49911348
513491348
617441348
721221348
825851348
931521348
1038851348
1142341348
1244121348
1345011348
1445251348
1545291348
1645291348
1745941348
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 (neg.f64 lambda2)))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 (neg.f64 lambda2)))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 (neg.f64 phi1)) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 (neg.f64 phi2)) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 (neg.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))))
(neg.f64 (+.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2)))))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 (neg.f64 lambda2)))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 (neg.f64 lambda2))))))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 (neg.f64 phi1)) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 (neg.f64 phi2)) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 (neg.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))))
(+.f64 lambda2 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda2 lambda1))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda2 lambda1))))))
(+.f64 phi1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 phi1 lambda2))) (+.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 phi1 lambda2))))))
(+.f64 phi2 (atan2.f64 (*.f64 (cos.f64 lambda1) (sin.f64 (-.f64 phi2 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 lambda1) (cos.f64 (-.f64 phi2 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 phi1))) (+.f64 (cos.f64 lambda2) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 phi1))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 lambda2) (sin.f64 (-.f64 lambda1 phi2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 lambda2) (cos.f64 (-.f64 lambda1 phi2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi1) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi2) (*.f64 (cos.f64 phi1) (cos.f64 (-.f64 lambda1 lambda2))))))
Outputs
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2))))))
(-.f64 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2)) (cos.f64 phi1))) lambda1)
(-.f64 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda2) lambda1))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))) lambda1)
(-.f64 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))) lambda1)
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 (neg.f64 lambda2)))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 (neg.f64 lambda2)))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (+.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 (neg.f64 phi1)) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 (neg.f64 phi2)) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 (neg.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(neg.f64 (+.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2)))))))
(-.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 (neg.f64 lambda1) lambda2)) (cos.f64 phi1))))
(-.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda2) lambda1))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))))
(-.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 (neg.f64 lambda1) lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 (neg.f64 lambda2)))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 (neg.f64 lambda2))))))))
(-.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (+.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (+.f64 lambda1 lambda2)) (cos.f64 phi1))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 (neg.f64 phi1)) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))))
(-.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 (neg.f64 phi2)) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 (neg.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))))
(neg.f64 (+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)))))))
(-.f64 (neg.f64 lambda1) (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 lambda2 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda2 lambda1))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda2 lambda1))))))
(+.f64 lambda2 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda2 lambda1))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda2 lambda1)) (cos.f64 phi1))))
(+.f64 lambda2 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda2 lambda1))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
(+.f64 phi1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 phi1 lambda2))) (+.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 phi1 lambda2))))))
(+.f64 phi1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 phi1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 phi1 lambda2)) (cos.f64 lambda1))))
(+.f64 phi2 (atan2.f64 (*.f64 (cos.f64 lambda1) (sin.f64 (-.f64 phi2 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 lambda1) (cos.f64 (-.f64 phi2 lambda2))))))
(+.f64 phi2 (atan2.f64 (*.f64 (cos.f64 lambda1) (sin.f64 (-.f64 phi2 lambda2))) (fma.f64 (cos.f64 lambda1) (cos.f64 (-.f64 phi2 lambda2)) (cos.f64 phi1))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 phi1))) (+.f64 (cos.f64 lambda2) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 phi1))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 phi1))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 phi1)) (cos.f64 lambda2))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 lambda2) (sin.f64 (-.f64 lambda1 phi2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 lambda2) (cos.f64 (-.f64 lambda1 phi2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 lambda2) (sin.f64 (-.f64 lambda1 phi2))) (fma.f64 (cos.f64 lambda2) (cos.f64 (-.f64 lambda1 phi2)) (cos.f64 phi1))))
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi1) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi2) (*.f64 (cos.f64 phi1) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) (+.f64 (cos.f64 phi2) (*.f64 (cos.f64 phi1) (cos.f64 (-.f64 lambda1 lambda2))))))
(+.f64 lambda1 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) (fma.f64 (cos.f64 phi1) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))))
Symmetry

(abs phi1)

(abs phi2)

Compiler

Compiled 24 to 14 computations (41.7% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 4 to 4 computations (0% saved)

prune1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.5%
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
Compiler

Compiled 48 to 28 computations (41.7% saved)

simplify2.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Rules
+-commutative
*-commutative
sub-neg
neg-sub0
neg-mul-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02287
12887
23387
33587
43687
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
Outputs
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))

soundness0.0ms (0%)

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

Compiled 24 to 14 computations (41.7% saved)

preprocess28.0ms (0%)

Memory
-6.6MiB live, 27.0MiB allocated
Remove

(abs phi2)

(abs phi1)

Compiler

Compiled 288 to 168 computations (41.7% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...