Equirectangular approximation to distance on a great circle

Time bar (total: 6.7s)

analyze457.0ms (6.9%)

Memory
8.8MiB live, 197.4MiB 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.1s (91.1%)

Memory
41.0MiB live, 1 787.4MiB allocated
Samples
1.0s5 915×73valid-sollya
651.0ms5 915×73valid-baseline
568.0ms5 915×73valid-rival
409.0ms895×584valid-baseline
305.0ms535×1168valid-baseline
295.0ms895×584valid-sollya
239.0ms535×1168valid-sollya
238.0ms895×584valid-rival
201.0ms577×292valid-baseline
153.0ms535×1168valid-rival
148.0ms577×292valid-rival
146.0ms577×292valid-sollya
82.0ms333×146valid-baseline
63.0ms333×146valid-rival
56.0ms333×146valid-sollya
0.0ms73valid-rival+baseline-real
Precisions
Click to see Rival histograms. Total time spent on operations: 910.0ms
ival-mult: 274.0ms (30.1% of total)
ival-cos: 242.0ms (26.6% of total)
ival-sub: 110.0ms (12.1% of total)
ival-add: 83.0ms (9.1% of total)
ival-div: 74.0ms (8.1% of total)
ival-sqrt: 69.0ms (7.6% of total)
adjust: 45.0ms (4.9% 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: 406.0ms (37.9% of total)
ival-cos: 167.0ms (15.6% of total)
ival-sub: 159.0ms (14.8% of total)
ival-add: 123.0ms (11.5% of total)
ival-div: 102.0ms (9.5% of total)
ival-sqrt: 97.0ms (9.1% of total)
const: 17.0ms (1.6% of total)
Bogosity

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

prune2.0ms (0%)

Memory
-14.8MiB live, 1.0MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
58.8%
(*.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)

simplify3.0ms (0%)

Memory
1.0MiB 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)

preprocess35.0ms (0.5%)

Memory
-1.0MiB 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...