rsin B (should all be same)

Time bar (total: 2.1s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze239.0ms (11.4%)

Memory
0.9MiB live, 318.9MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
12.5%12.5%87.4%0.1%0%0%0%8
18.8%18.7%81.1%0.1%0%0%0%9
21.9%21.8%78%0.1%0%0%0%10
21.9%21.8%78%0.1%0%0%0%11
23.4%23.4%76.5%0.1%0%0%0%12
Compiler

Compiled 11 to 10 computations (9.1% saved)

sample1.5s (69.8%)

Memory
10.4MiB live, 1 674.9MiB allocated
Samples
951.0ms5 807×1valid
170.0ms2 449×0valid
Precisions
Click to see histograms. Total time spent on operations: 846.0ms
ival-cos: 273.0ms (32.3% of total)
ival-sin: 201.0ms (23.8% of total)
adjust: 104.0ms (12.3% of total)
ival-mult: 99.0ms (11.7% of total)
ival-add: 91.0ms (10.8% of total)
ival-div: 69.0ms (8.2% of total)
ival-true: 6.0ms (0.7% of total)
ival-assert: 3.0ms (0.4% of total)
Bogosity

explain128.0ms (6.1%)

Memory
37.8MiB live, 153.0MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
71131(-1.943801907727607e-173 2.244723821682225e+157 1.20616644357742e-52)0-(cos.f64 (+.f64 a b))
00-0-(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
00-0-(+.f64 a b)
00-0-(sin.f64 b)
00-0-a
00-0-r
00-0-b
00-0-(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
cos.f64(cos.f64 (+.f64 a b))sensitivity2021
Confusion
Predicted +Predicted -
+710
-13154
Precision
0.35148514851485146
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+7100
-131153
Precision?
0.3497536945812808
Recall?
1.0
Freqs
test
numberfreq
054
1202
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
67.0ms380×1valid
10.0ms132×0valid
Compiler

Compiled 97 to 36 computations (62.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 55.0ms
ival-cos: 18.0ms (32.9% of total)
ival-sin: 12.0ms (21.9% of total)
adjust: 7.0ms (12.8% of total)
ival-div: 6.0ms (11% of total)
ival-mult: 6.0ms (11% of total)
ival-add: 5.0ms (9.1% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

preprocess3.0ms (0.1%)

Memory
5.2MiB live, 5.2MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Outputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Compiler

Compiled 9 to 8 computations (11.1% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 3 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
75.4%
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Compiler

Compiled 9 to 8 computations (11.1% saved)

simplify3.0ms (0.2%)

Memory
-40.9MiB live, 0.6MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(cos.f64 (+.f64 a b))
cost-diff0
(sin.f64 b)
cost-diff0
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
cost-diff0
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Calls
Call 1
Inputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
r
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
b
(cos.f64 (+.f64 a b))
(+.f64 a b)
a
Outputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
r
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
b
(cos.f64 (+.f64 a b))
(+.f64 a b)
a

localize46.0ms (2.2%)

Memory
12.1MiB live, 49.9MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(sin.f64 b)
accuracy0.18359375
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
accuracy0.22265625
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
accuracy15.697600517893363
(cos.f64 (+.f64 a b))
Samples
34.0ms190×1valid
5.0ms66×0valid
Compiler

Compiled 58 to 18 computations (69% saved)

Precisions
Click to see histograms. Total time spent on operations: 27.0ms
ival-cos: 10.0ms (36.6% of total)
ival-sin: 6.0ms (22% of total)
ival-add: 3.0ms (11% of total)
adjust: 3.0ms (11% of total)
ival-mult: 3.0ms (11% of total)
ival-div: 2.0ms (7.3% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series16.0ms (0.8%)

Memory
21.3MiB live, 21.3MiB allocated
Counts
4 → 38
Calls
Call 1
Inputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
(cos.f64 (+.f64 a b))
Outputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(/ (sin b) (cos b))
(+ (/ (sin b) (cos b)) (/ (* a (pow (sin b) 2)) (pow (cos b) 2)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (pow (sin b) 2) (pow (cos b) 2))) (+ (* 1/6 (/ (pow (sin b) 2) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b))))) (cos b)))))) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(cos b)
(+ (cos b) (* -1 (* a (sin b))))
(+ (cos b) (* a (- (* -1/2 (* a (cos b))) (sin b))))
(+ (cos b) (* a (- (* a (+ (* -1/2 (cos b)) (* 1/6 (* a (sin b))))) (sin b))))
(/ (sin b) (cos (+ a b)))
(cos (+ a b))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(/ (sin b) (cos (- b (* -1 a))))
(cos (- b (* -1 a)))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(/ b (cos a))
(* b (+ (/ 1 (cos a)) (/ (* b (sin a)) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (cos a))) (+ (* -1/2 (/ (sin a) (pow (cos a) 2))) (* 1/6 (/ (sin a) (pow (cos a) 2))))))) (* 1/2 (/ 1 (cos a)))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
b
(* b (+ 1 (* -1/6 (pow b 2))))
(* b (+ 1 (* (pow b 2) (- (* 1/120 (pow b 2)) 1/6))))
(* b (+ 1 (* (pow b 2) (- (* (pow b 2) (+ 1/120 (* -1/5040 (pow b 2)))) 1/6))))
(cos a)
(+ (cos a) (* -1 (* b (sin a))))
(+ (cos a) (* b (- (* -1/2 (* b (cos a))) (sin a))))
(+ (cos a) (* b (- (* b (+ (* -1/2 (cos a)) (* 1/6 (* b (sin a))))) (sin a))))
(sin b)
(/ (* r (sin b)) (cos (- a (* -1 b))))
(/ (sin b) (cos (- a (* -1 b))))
(cos (- a (* -1 b)))
Calls

9 calls:

TimeVariablePointExpression
3.0ms
b
@-inf
((* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))) (sin b) (cos (+ a b)))
2.0ms
b
@0
((* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))) (sin b) (cos (+ a b)))
2.0ms
a
@inf
((* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))) (sin b) (cos (+ a b)))
2.0ms
r
@0
((* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))) (sin b) (cos (+ a b)))
2.0ms
a
@0
((* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))) (sin b) (cos (+ a b)))

simplify1.0ms (0%)

Memory
1.5MiB live, 1.5MiB allocated
Algorithm
egg-herbie
Counts
38 → 4
Calls
Call 1
Inputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(/ (sin b) (cos b))
(+ (/ (sin b) (cos b)) (/ (* a (pow (sin b) 2)) (pow (cos b) 2)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (pow (sin b) 2) (pow (cos b) 2))) (+ (* 1/6 (/ (pow (sin b) 2) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b))))) (cos b)))))) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(cos b)
(+ (cos b) (* -1 (* a (sin b))))
(+ (cos b) (* a (- (* -1/2 (* a (cos b))) (sin b))))
(+ (cos b) (* a (- (* a (+ (* -1/2 (cos b)) (* 1/6 (* a (sin b))))) (sin b))))
(/ (sin b) (cos (+ a b)))
(cos (+ a b))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(/ (sin b) (cos (- b (* -1 a))))
(cos (- b (* -1 a)))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(/ b (cos a))
(* b (+ (/ 1 (cos a)) (/ (* b (sin a)) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (cos a))) (+ (* -1/2 (/ (sin a) (pow (cos a) 2))) (* 1/6 (/ (sin a) (pow (cos a) 2))))))) (* 1/2 (/ 1 (cos a)))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
b
(* b (+ 1 (* -1/6 (pow b 2))))
(* b (+ 1 (* (pow b 2) (- (* 1/120 (pow b 2)) 1/6))))
(* b (+ 1 (* (pow b 2) (- (* (pow b 2) (+ 1/120 (* -1/5040 (pow b 2)))) 1/6))))
(cos a)
(+ (cos a) (* -1 (* b (sin a))))
(+ (cos a) (* b (- (* -1/2 (* b (cos a))) (sin a))))
(+ (cos a) (* b (- (* b (+ (* -1/2 (cos a)) (* 1/6 (* b (sin a))))) (sin a))))
(sin b)
(/ (* r (sin b)) (cos (- a (* -1 b))))
(/ (sin b) (cos (- a (* -1 b))))
(cos (- a (* -1 b)))
Outputs
(/ (* r (sin b)) (cos (+ a b)))
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/ (* r (sin b)) (cos b))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(sin.f64 b)
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(cos.f64 (+.f64 a b))

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
4 → 4
Calls
Call 1
Inputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
(cos.f64 (+.f64 a b))
Outputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
(cos.f64 (+.f64 a b))

eval1.0ms (0%)

Memory
1.9MiB live, 1.9MiB allocated
Compiler

Compiled 98 to 17 computations (82.7% saved)

prune2.0ms (0.1%)

Memory
3.8MiB live, 3.8MiB allocated
Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New538
Fresh000
Picked011
Done000
Total549
Accuracy
75.8%
Counts
9 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
75.4%
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
4.2%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
4.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
3.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
Compiler

Compiled 52 to 42 computations (19.2% saved)

simplify3.0ms (0.1%)

Memory
-36.8MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
cost-diff0
(cos.f64 (+.f64 a b))
cost-diff0
(sin.f64 b)
cost-diff0
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
cost-diff0
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
cost-diff0
(sin.f64 b)
cost-diff0
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
cost-diff0
(+.f64 a b)
cost-diff0
(cos.f64 (+.f64 a b))
cost-diff0
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(cos.f64 (+.f64 a b))
(+.f64 a b)
a
b
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(sin.f64 b)
b
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
b
(cos.f64 (+.f64 a b))
(+.f64 a b)
a
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(cos.f64 (+.f64 a b))
(+.f64 a b)
a
b
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(sin.f64 b)
b
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
(sin.f64 b)
b
(cos.f64 (+.f64 a b))
(+.f64 a b)
a

localize53.0ms (2.5%)

Memory
34.2MiB live, 70.4MiB allocated
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(sin.f64 b)
accuracy0.22265625
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
accuracy15.697600517893363
(cos.f64 (+.f64 a b))
accuracy61.27168722385563
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
accuracy0.0
(sin.f64 b)
accuracy61.2068135654695
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
accuracy0.0
(+.f64 a b)
accuracy15.697600517893363
(cos.f64 (+.f64 a b))
accuracy61.827642416082156
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
Samples
34.0ms190×1valid
5.0ms66×0valid
Compiler

Compiled 132 to 25 computations (81.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 26.0ms
ival-cos: 8.0ms (30.9% of total)
ival-sin: 6.0ms (23.2% of total)
ival-add: 3.0ms (11.6% of total)
adjust: 3.0ms (11.6% of total)
ival-mult: 3.0ms (11.6% of total)
ival-div: 2.0ms (7.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series15.0ms (0.7%)

Memory
-27.8MiB live, 14.0MiB allocated
Counts
7 → 44
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(cos.f64 (+.f64 a b))
(+.f64 a b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(sin.f64 b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
Outputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(cos b)
(+ (cos b) (* -1 (* a (sin b))))
(+ (cos b) (* a (- (* -1/2 (* a (cos b))) (sin b))))
(+ (cos b) (* a (- (* a (+ (* -1/2 (cos b)) (* 1/6 (* a (sin b))))) (sin b))))
b
(+ a b)
(/ (sin b) (cos b))
(+ (/ (sin b) (cos b)) (/ (* a (pow (sin b) 2)) (pow (cos b) 2)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (pow (sin b) 2) (pow (cos b) 2))) (+ (* 1/6 (/ (pow (sin b) 2) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b))))) (cos b)))))) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(cos (+ a b))
a
(* a (+ 1 (/ b a)))
(/ (sin b) (cos (+ a b)))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(cos (- b (* -1 a)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(/ (sin b) (cos (- b (* -1 a))))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(cos a)
(+ (cos a) (* -1 (* b (sin a))))
(+ (cos a) (* b (- (* -1/2 (* b (cos a))) (sin a))))
(+ (cos a) (* b (- (* b (+ (* -1/2 (cos a)) (* 1/6 (* b (sin a))))) (sin a))))
(* b (+ 1 (* -1/6 (pow b 2))))
(* b (+ 1 (* (pow b 2) (- (* 1/120 (pow b 2)) 1/6))))
(* b (+ 1 (* (pow b 2) (- (* (pow b 2) (+ 1/120 (* -1/5040 (pow b 2)))) 1/6))))
(/ b (cos a))
(* b (+ (/ 1 (cos a)) (/ (* b (sin a)) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (cos a))) (+ (* -1/2 (/ (sin a) (pow (cos a) 2))) (* 1/6 (/ (sin a) (pow (cos a) 2))))))) (* 1/2 (/ 1 (cos a)))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ 1 (/ a b)))
(sin b)
(/ (* r (sin b)) (cos (- a (* -1 b))))
(cos (- a (* -1 b)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
(/ (sin b) (cos (- a (* -1 b))))
Calls

9 calls:

TimeVariablePointExpression
7.0ms
a
@-inf
((* r (/ (sin b) (cos (+ a b)))) (cos (+ a b)) (+ a b) (* r (/ (sin b) (cos (+ a b)))) (sin b) (* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))))
1.0ms
r
@-inf
((* r (/ (sin b) (cos (+ a b)))) (cos (+ a b)) (+ a b) (* r (/ (sin b) (cos (+ a b)))) (sin b) (* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))))
1.0ms
r
@0
((* r (/ (sin b) (cos (+ a b)))) (cos (+ a b)) (+ a b) (* r (/ (sin b) (cos (+ a b)))) (sin b) (* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))))
1.0ms
a
@inf
((* r (/ (sin b) (cos (+ a b)))) (cos (+ a b)) (+ a b) (* r (/ (sin b) (cos (+ a b)))) (sin b) (* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))))
1.0ms
r
@inf
((* r (/ (sin b) (cos (+ a b)))) (cos (+ a b)) (+ a b) (* r (/ (sin b) (cos (+ a b)))) (sin b) (* r (/ (sin b) (cos (+ a b)))) (/ (sin b) (cos (+ a b))))

simplify1.0ms (0%)

Memory
1.4MiB live, 1.4MiB allocated
Algorithm
egg-herbie
Counts
44 → 7
Calls
Call 1
Inputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(cos b)
(+ (cos b) (* -1 (* a (sin b))))
(+ (cos b) (* a (- (* -1/2 (* a (cos b))) (sin b))))
(+ (cos b) (* a (- (* a (+ (* -1/2 (cos b)) (* 1/6 (* a (sin b))))) (sin b))))
b
(+ a b)
(/ (sin b) (cos b))
(+ (/ (sin b) (cos b)) (/ (* a (pow (sin b) 2)) (pow (cos b) 2)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (pow (sin b) 2) (pow (cos b) 2))) (+ (* 1/6 (/ (pow (sin b) 2) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b))))) (cos b)))))) (+ (* -1 (/ (pow (sin b) 3) (pow (cos b) 3))) (* -1/2 (/ (sin b) (cos b)))))) (* -1 (/ (pow (sin b) 2) (pow (cos b) 2))))) (/ (sin b) (cos b)))
(cos (+ a b))
a
(* a (+ 1 (/ b a)))
(/ (sin b) (cos (+ a b)))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(cos (- b (* -1 a)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(/ (sin b) (cos (- b (* -1 a))))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(cos a)
(+ (cos a) (* -1 (* b (sin a))))
(+ (cos a) (* b (- (* -1/2 (* b (cos a))) (sin a))))
(+ (cos a) (* b (- (* b (+ (* -1/2 (cos a)) (* 1/6 (* b (sin a))))) (sin a))))
(* b (+ 1 (* -1/6 (pow b 2))))
(* b (+ 1 (* (pow b 2) (- (* 1/120 (pow b 2)) 1/6))))
(* b (+ 1 (* (pow b 2) (- (* (pow b 2) (+ 1/120 (* -1/5040 (pow b 2)))) 1/6))))
(/ b (cos a))
(* b (+ (/ 1 (cos a)) (/ (* b (sin a)) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* 1/2 (/ 1 (cos a))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (cos a))) (+ (* -1/2 (/ (sin a) (pow (cos a) 2))) (* 1/6 (/ (sin a) (pow (cos a) 2))))))) (* 1/2 (/ 1 (cos a)))) (+ (* -1 (/ (pow (sin a) 2) (pow (cos a) 3))) (* 1/6 (/ 1 (cos a)))))) (* -1 (/ (sin a) (pow (cos a) 2))))) (/ 1 (cos a))))
(* b (+ 1 (/ a b)))
(sin b)
(/ (* r (sin b)) (cos (- a (* -1 b))))
(cos (- a (* -1 b)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
(/ (sin b) (cos (- a (* -1 b))))
Outputs
(/ (* r (sin b)) (cos (+ a b)))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(/ (* r (sin b)) (cos b))
(cos.f64 (+.f64 a b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+.f64 a b)
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(sin.f64 b)
(cos b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(+ (cos b) (* -1 (* a (sin b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))

rewrite0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Counts
7 → 7
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(cos.f64 (+.f64 a b))
(+.f64 a b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(sin.f64 b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
(cos.f64 (+.f64 a b))
(+.f64 a b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
(sin.f64 b)
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))

eval2.0ms (0.1%)

Memory
3.3MiB live, 3.3MiB allocated
Compiler

Compiled 324 to 26 computations (92% saved)

prune3.0ms (0.1%)

Memory
5.1MiB live, 5.1MiB allocated
Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New16117
Fresh000
Picked033
Done011
Total16521
Accuracy
75.8%
Counts
21 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
75.4%
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
4.2%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
3.1%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
4.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
3.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
Compiler

Compiled 65 to 52 computations (20% saved)

simplify0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 a b)
cost-diff0
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(+.f64 a b)
a
b
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(+.f64 a b)
a
b

localize45.0ms (2.2%)

Memory
18.9MiB live, 56.3MiB allocated
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 a b)
accuracy62.03187425156128
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
Samples
35.0ms190×1valid
5.0ms66×0valid
Compiler

Compiled 34 to 20 computations (41.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 26.0ms
ival-cos: 8.0ms (31.3% of total)
ival-sin: 6.0ms (23.5% of total)
ival-add: 3.0ms (11.7% of total)
adjust: 3.0ms (11.7% of total)
ival-mult: 3.0ms (11.7% of total)
ival-div: 2.0ms (7.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series10.0ms (0.5%)

Memory
-26.8MiB live, 11.5MiB allocated
Counts
2 → 18
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(+.f64 a b)
Outputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
b
(+ a b)
a
(* a (+ 1 (/ b a)))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ 1 (/ a b)))
(/ (* r (sin b)) (cos (- a (* -1 b))))
(* -1 (* b (- (* -1 (/ a b)) 1)))
Calls

9 calls:

TimeVariablePointExpression
4.0ms
a
@-inf
((* r (/ (sin b) (cos (+ a b)))) (+ a b))
1.0ms
r
@-inf
((* r (/ (sin b) (cos (+ a b)))) (+ a b))
1.0ms
r
@0
((* r (/ (sin b) (cos (+ a b)))) (+ a b))
1.0ms
r
@inf
((* r (/ (sin b) (cos (+ a b)))) (+ a b))
1.0ms
a
@inf
((* r (/ (sin b) (cos (+ a b)))) (+ a b))

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
18 → 2
Calls
Call 1
Inputs
(/ (* r (sin b)) (cos (+ a b)))
(/ (* r (sin b)) (cos b))
(+ (/ (* a (* r (pow (sin b) 2))) (pow (cos b) 2)) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* -1 (* a (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
(+ (* a (- (* a (- (* -1 (* a (+ (* -1/2 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (+ (* 1/6 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))) (/ (* (sin b) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b))))) (cos b)))))) (+ (* -1 (/ (* r (pow (sin b) 3)) (pow (cos b) 3))) (* -1/2 (/ (* r (sin b)) (cos b)))))) (* -1 (/ (* r (pow (sin b) 2)) (pow (cos b) 2))))) (/ (* r (sin b)) (cos b)))
b
(+ a b)
a
(* a (+ 1 (/ b a)))
(/ (* r (sin b)) (cos (- b (* -1 a))))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(/ (* b r) (cos a))
(* b (+ (/ r (cos a)) (/ (* b (* r (sin a))) (pow (cos a) 2))))
(* b (+ (* b (- (* b (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ (* b (- (* b (- (+ (* -1 (* b (+ (* -1 (/ (* (sin a) (- (* -1/6 (/ r (cos a))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (cos a))) (+ (* -1/2 (/ (* r (sin a)) (pow (cos a) 2))) (* 1/6 (/ (* r (sin a)) (pow (cos a) 2))))))) (* -1/6 (/ r (cos a)))) (+ (* -1 (/ (* r (pow (sin a) 2)) (pow (cos a) 3))) (* -1/2 (/ r (cos a)))))) (* -1 (/ (* r (sin a)) (pow (cos a) 2))))) (/ r (cos a))))
(* b (+ 1 (/ a b)))
(/ (* r (sin b)) (cos (- a (* -1 b))))
(* -1 (* b (- (* -1 (/ a b)) 1)))
Outputs
(/ (* r (sin b)) (cos (+ a b)))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(/ (* r (sin b)) (cos b))
(+.f64 a b)

rewrite0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Counts
2 → 2
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(+.f64 a b)
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
(+.f64 a b)

eval0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Compiler

Compiled 49 to 11 computations (77.6% saved)

prune3.0ms (0.1%)

Memory
5.4MiB live, 5.4MiB allocated
Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New303
Fresh000
Picked011
Done044
Total358
Accuracy
75.8%
Counts
8 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
75.4%
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
4.2%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
3.1%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
4.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
3.4%
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
Compiler

Compiled 130 to 69 computations (46.9% saved)

regimes12.0ms (0.6%)

Memory
23.1MiB live, 23.1MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Outputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Calls

5 calls:

2.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
2.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
2.0ms
r
2.0ms
a
2.0ms
b
Results
AccuracySegmentsBranch
75.4%1r
75.4%1a
75.4%1b
75.4%1(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
75.4%1(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
Compiler

Compiled 19 to 24 computations (-26.3% saved)

regimes11.0ms (0.5%)

Memory
-18.0MiB live, 21.2MiB allocated
Counts
4 → 1
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (cos.f64 (+.f64 a b)))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
Calls

5 calls:

3.0ms
r
2.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
2.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
2.0ms
a
2.0ms
b
Results
AccuracySegmentsBranch
4.4%1a
4.4%1b
4.4%1(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
4.4%1r
4.4%1(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
Compiler

Compiled 19 to 24 computations (-26.3% saved)

regimes6.0ms (0.3%)

Memory
14.8MiB live, 14.7MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
Outputs
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
Calls

5 calls:

1.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
1.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
1.0ms
a
1.0ms
b
1.0ms
r
Results
AccuracySegmentsBranch
3.1%1b
3.1%1(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
3.1%1(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
3.1%1r
3.1%1a
Compiler

Compiled 19 to 24 computations (-26.3% saved)

simplify4.0ms (0.2%)

Memory
9.4MiB live, 9.4MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))
Outputs
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (sin.f64 b))
#s(approx (* r (/ (sin b) (cos (+ a b)))) (+.f64 a b))

soundness2.0ms (0.1%)

Memory
-43.5MiB live, 1.2MiB allocated
Stop Event
done
Compiler

Compiled 34 to 15 computations (55.9% saved)

preprocess23.0ms (1.1%)

Memory
2.5MiB live, 40.7MiB allocated
Compiler

Compiled 86 to 46 computations (46.5% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...