Equirectangular approximation to distance on a great circle

Time bar (total: 6.6s)

analyze460.0ms (7%)

Memory
3.6MiB live, 196.9MiB 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
3.1%3.1%96.6%0.2%0%0%0%10
15.6%15.6%84.2%0.2%0%0%0%11
15.6%15.6%84.2%0.2%0%0%0%12
Compiler

Compiled 72 to 37 computations (48.6% saved)

sample6.0s (91.1%)

Memory
36.3MiB live, 1 765.7MiB allocated
Samples
1.0s6 002×73valid-sollya
668.0ms6 002×73valid-baseline
565.0ms6 002×73valid-rival
370.0ms809×584valid-baseline
306.0ms525×1168valid-baseline
263.0ms809×584valid-sollya
233.0ms525×1168valid-sollya
222.0ms809×584valid-rival
202.0ms581×292valid-baseline
153.0ms581×292valid-rival
147.0ms525×1168valid-rival
146.0ms581×292valid-sollya
81.0ms338×146valid-baseline
60.0ms338×146valid-rival
57.0ms338×146valid-sollya
0.0ms292valid-rival+sollya-real
Precisions
Click to see Rival histograms. Total time spent on operations: 899.0ms
ival-mult: 275.0ms (30.6% of total)
ival-cos: 235.0ms (26.1% of total)
ival-sub: 109.0ms (12.1% of total)
ival-add: 84.0ms (9.3% of total)
ival-div: 71.0ms (7.9% of total)
ival-sqrt: 70.0ms (7.8% of total)
adjust: 42.0ms (4.7% of total)
ival-true: 7.0ms (0.8% of total)
...in/eval/compile.rkt:110:19: 3.0ms (0.3% of total)
ival-assert: 3.0ms (0.3% of total)
Precisions
Click to see Base histograms. Total time spent on operations: 1.1s
ival-mult: 396.0ms (37.3% of total)
ival-cos: 164.0ms (15.4% of total)
ival-sub: 154.0ms (14.5% of total)
ival-add: 126.0ms (11.9% of total)
ival-div: 109.0ms (10.3% of total)
ival-sqrt: 96.0ms (9% of total)
const: 17.0ms (1.6% of total)
Bogosity

preprocess91.0ms (1.4%)

Memory
11.4MiB live, 26.9MiB allocated
Algorithm
egg-herbie
Rules
632×distribute-lft-neg-out
541×distribute-rgt-neg-out
494×distribute-rgt-in
494×distribute-lft-in
358×unsub-neg
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01591548
14001540
210451524
349171516
Stop Event
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)))))
(*.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 (neg.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 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 (neg.f64 phi1) phi2) (-.f64 (neg.f64 phi1) phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 (neg.f64 phi2)) (-.f64 phi1 (neg.f64 phi2))))))
(neg.f64 (*.f64 (neg.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))))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 (neg.f64 phi1) phi2) (-.f64 (neg.f64 phi1) phi2))))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 (neg.f64 phi2)) (-.f64 phi1 (neg.f64 phi2)))))))
(*.f64 lambda1 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 R lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 R lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 lambda2 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 R) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 R) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 phi1 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 R phi2) (-.f64 R phi2)))))
(*.f64 phi2 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 R) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 R) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 R) (-.f64 phi1 R)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda2 lambda1) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda2 lambda1) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 phi1 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 phi1 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 lambda1 phi2) (-.f64 lambda1 phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 phi2 lambda2) (cos.f64 (/.f64 (+.f64 phi1 lambda1) #s(literal 2 binary64)))) (*.f64 (-.f64 phi2 lambda2) (cos.f64 (/.f64 (+.f64 phi1 lambda1) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 lambda1) (-.f64 phi1 lambda1)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 lambda2 phi2) (-.f64 lambda2 phi2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 phi1 lambda2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 phi1 lambda2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 lambda2) (-.f64 phi1 lambda2)))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64))))) (*.f64 (-.f64 phi2 phi1) (-.f64 phi2 phi1)))))
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 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)))
(*.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 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)))
(*.f64 (neg.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 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)) (neg.f64 R))
(*.f64 R (neg.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2)) (-.f64 phi1 phi2)))
(*.f64 R (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2))))
(*.f64 R (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (+.f64 lambda1 lambda2))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2)) (-.f64 phi1 phi2)))
(*.f64 R (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2))))
(*.f64 R (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (+.f64 lambda1 lambda2))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 (neg.f64 phi1) phi2) (-.f64 (neg.f64 phi1) phi2)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi2 phi1) #s(literal 2 binary64)))) (-.f64 (neg.f64 phi1) phi2)))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi2 phi1) #s(literal 2 binary64)))) (+.f64 phi1 phi2)))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 (neg.f64 phi2)) (-.f64 phi1 (neg.f64 phi2))))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 (neg.f64 phi2))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))) (+.f64 phi1 phi2)))
(neg.f64 (*.f64 (neg.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 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 (neg.f64 lambda1) lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))))
(*.f64 (neg.f64 R) (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2)) (-.f64 phi1 phi2)))
(*.f64 (neg.f64 R) (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2))))
(*.f64 (neg.f64 R) (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (+.f64 lambda1 lambda2))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 (neg.f64 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2))))))
(*.f64 (neg.f64 R) (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2)) (-.f64 phi1 phi2)))
(*.f64 (neg.f64 R) (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 (neg.f64 lambda1) lambda2))))
(*.f64 (neg.f64 R) (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (+.f64 lambda1 lambda2))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 (neg.f64 phi1) phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 (neg.f64 phi1) phi2) (-.f64 (neg.f64 phi1) phi2))))))
(*.f64 R (neg.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi2 phi1) #s(literal 2 binary64)))) (-.f64 (neg.f64 phi1) phi2))))
(*.f64 R (neg.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi2 phi1) #s(literal 2 binary64)))) (+.f64 phi1 phi2))))
(neg.f64 (*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 (neg.f64 phi2)) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 (neg.f64 phi2)) (-.f64 phi1 (neg.f64 phi2)))))))
(*.f64 R (neg.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 (neg.f64 phi2)))))
(*.f64 R (neg.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (-.f64 phi1 phi2) #s(literal 2 binary64)))) (+.f64 phi1 phi2))))
(*.f64 lambda1 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 R lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 R lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 lambda1 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 R lambda2)) (-.f64 phi1 phi2)))
(*.f64 lambda1 (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 R lambda2))))
(*.f64 lambda2 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 R) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 R) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 lambda2 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 lambda1 R)) (-.f64 phi1 phi2)))
(*.f64 lambda2 (hypot.f64 (-.f64 phi1 phi2) (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))) (-.f64 lambda1 R))))
(*.f64 phi1 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 R phi2) (-.f64 R phi2)))))
(*.f64 phi1 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi2) #s(literal 2 binary64)))) (-.f64 R phi2)))
(*.f64 phi2 (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 R) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 R) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 R) (-.f64 phi1 R)))))
(*.f64 phi2 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 R phi1) #s(literal 2 binary64)))) (-.f64 phi1 R)))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda2 lambda1) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda2 lambda1) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 phi1 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 phi1 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 lambda1 phi2) (-.f64 lambda1 phi2)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 phi1 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi2) #s(literal 2 binary64)))) (-.f64 lambda1 phi2)))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 phi2 lambda2) (cos.f64 (/.f64 (+.f64 phi1 lambda1) #s(literal 2 binary64)))) (*.f64 (-.f64 phi2 lambda2) (cos.f64 (/.f64 (+.f64 phi1 lambda1) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 lambda1) (-.f64 phi1 lambda1)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 phi2 lambda2) (cos.f64 (/.f64 (+.f64 lambda1 phi1) #s(literal 2 binary64)))) (-.f64 phi1 lambda1)))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64))))) (*.f64 (-.f64 lambda2 phi2) (-.f64 lambda2 phi2)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64)))) (-.f64 lambda2 phi2)))
(*.f64 R (hypot.f64 (-.f64 phi2 lambda2) (*.f64 (-.f64 lambda1 phi1) (cos.f64 (/.f64 (+.f64 lambda2 phi2) #s(literal 2 binary64))))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 phi1 lambda2) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 phi1 lambda2) #s(literal 2 binary64))))) (*.f64 (-.f64 phi1 lambda2) (-.f64 phi1 lambda2)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 lambda2 phi1) #s(literal 2 binary64)))) (-.f64 phi1 lambda2)))
(*.f64 R (hypot.f64 (-.f64 phi1 lambda2) (*.f64 (-.f64 lambda1 phi2) (cos.f64 (/.f64 (+.f64 lambda2 phi1) #s(literal 2 binary64))))))
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64)))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi2 phi1) #s(literal 2 binary64))))) (*.f64 (-.f64 phi2 phi1) (-.f64 phi2 phi1)))))
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) #s(literal 2 binary64)))) (-.f64 phi1 phi2)))
Symmetry

(negabs R)

(sort lambda1 lambda2)

(sort phi1 phi2)

Compiler

Compiled 37 to 17 computations (54.1% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 5 to 5 computations (0% saved)

prune1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
56.5%
(*.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 74 to 34 computations (54.1% saved)

simplify4.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
026136
134136
242136
346136
448136
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)))))

soundness0.0ms (0%)

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

Compiled 37 to 17 computations (54.1% saved)

preprocess31.0ms (0.5%)

Memory
-1.2MiB live, 32.6MiB allocated
Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

(negabs R)

Compiler

Compiled 592 to 272 computations (54.1% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...