Midpoint on a great circle

Time bar (total: 49.3s)

analyze530.0ms (1.1%)

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 50 to 30 computations (40% saved)

sample48.4s (98.2%)

Results
1.5s4396×1valid-rival
1.9s4395×1valid-rival-baseline
1.6s4394×1valid-sollya
660.0ms3831×0valid-sollya
511.0ms3831×0valid-rival
554.0ms3831×0valid-rival-baseline
8.0ms22×2valid-rival
5.0ms22×2valid-rival-baseline
2.0ms22×2valid-sollya
1.0ms3valid-sollya
3.0ms3valid-rival-baseline
4.0ms3valid-rival
Bogosity

preprocess326.0ms (0.7%)

Algorithm
egg-herbie
Rules
823×fma-neg
781×fma-define
250×unsub-neg
209×distribute-lft-neg-in
184×sub-neg
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01031448
11791356
22941348
35841348
49911348
513491348
617441348
721221348
825841348
931511348
1038841348
1142321348
1244101348
1344991348
1445231348
1545271348
1645271348
1745921348
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%)

Compiler

Compiled 4 to 4 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(+.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%)

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%)

Stop Event
fuel
Compiler

Compiled 24 to 14 computations (41.7% saved)

preprocess32.0ms (0.1%)

Remove

(abs phi2)

(abs phi1)

Compiler

Compiled 288 to 168 computations (41.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...