Equirectangular approximation to distance on a great circle

Time bar (total: 6.4s)

analyze459.0ms (7.2%)

Memory
7.3MiB live, 199.6MiB 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)

sample5.8s (90.7%)

Memory
38.7MiB live, 1 705.3MiB allocated
Samples
1.0s6 129×0valid-sollya
927.0ms2 126×1valid-baseline
694.0ms6 129×0valid-baseline
691.0ms2 126×1valid-sollya
606.0ms6 129×0valid-rival
476.0ms2 126×1valid-rival
0.0ms0valid-rival+baseline-real
Precisions
Click to see Rival histograms. Total time spent on operations: 797.0ms
ival-mult: 263.0ms (33% of total)
ival-cos: 151.0ms (19% of total)
ival-sub: 104.0ms (13.1% of total)
ival-add: 83.0ms (10.4% of total)
ival-sqrt: 72.0ms (9% of total)
ival-div: 71.0ms (8.9% of total)
adjust: 40.0ms (5% of total)
ival-true: 7.0ms (0.9% of total)
...in/eval/compile.rkt:76:19: 3.0ms (0.4% of total)
ival-assert: 3.0ms (0.4% of total)
Precisions
Click to see Base histograms. Total time spent on operations: 1.0s
ival-mult: 397.0ms (38.2% of total)
ival-cos: 163.0ms (15.7% of total)
ival-sub: 144.0ms (13.8% of total)
ival-add: 122.0ms (11.7% of total)
ival-div: 100.0ms (9.6% of total)
ival-sqrt: 97.0ms (9.3% of total)
const: 17.0ms (1.6% of total)
Bogosity

preprocess92.0ms (1.4%)

Memory
-4.2MiB live, 27.0MiB 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.3MiB live, 0.3MiB 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
60.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
0.9MiB live, 0.9MiB 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)

preprocess36.0ms (0.6%)

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