Midpoint on a great circle

Time bar (total: 1.2min)

analyze1.5s (2.2%)

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 25 to 15 computations (40% saved)

sample1.1min (96.9%)

Results
6.3s4301×1valid-rival
2.7s4238×1valid-sollya
2.3s3950×0valid-rival
1.3s3928×0valid-sollya
315.0ms63×1exit-sollya
110.0ms22×0exit-sollya
6.0ms2valid-rival
1.0ms2valid-sollya
Bogosity

preprocess532.0ms (0.8%)

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)

prune2.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)

simplify5.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))))))

soundness1.0ms (0%)

Stop Event
fuel
Compiler

Compiled 24 to 14 computations (41.7% saved)

preprocess96.0ms (0.1%)

Remove

(abs phi2)

(abs phi1)

Compiler

Compiled 288 to 168 computations (41.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...