Disney BSSRDF, PDF of scattering profile

Time bar (total: 2.7s)

start0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated

analyze65.0ms (2.4%)

Memory
9.1MiB live, 127.9MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%2.1%97.9%0%0%0%0
0%0%2.1%97.9%0%0%0%1
0%0%2.1%97.9%0%0%0%2
25%0.5%1.5%97.9%0%0%0%3
37.5%0.8%1.3%97.9%0%0%0%4
56.2%1.2%0.9%97.9%0%0%0%5
65.6%1.3%0.7%97.9%0%0%0%6
76.6%1.6%0.5%97.9%0%0%0%7
82%1.7%0.4%97.9%0%0%0%8
87.9%1.8%0.2%97.9%0%0%0%9
90.8%1.9%0.2%97.9%0%0%0%10
93.8%1.9%0.1%97.9%0%0%0%11
95.4%2%0.1%97.9%0%0%0%12
Compiler

Compiled 49 to 37 computations (24.5% saved)

sample2.0s (72.7%)

Memory
96.0MiB live, 2 768.4MiB allocated
Samples
1.4s8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 1.2s
ival-mult: 433.0ms (36.4% of total)
ival-div: 246.0ms (20.7% of total)
ival-exp: 144.0ms (12.1% of total)
const: 120.0ms (10.1% of total)
ival-<=: 43.0ms (3.6% of total)
ival-neg: 43.0ms (3.6% of total)
ival-<: 36.0ms (3% of total)
ival-add: 35.0ms (2.9% of total)
ival-pi: 32.0ms (2.7% of total)
exact: 30.0ms (2.5% of total)
ival-and: 24.0ms (2% of total)
ival-assert: 4.0ms (0.3% of total)
Bogosity

explain276.0ms (10.3%)

Memory
-1.8MiB live, 426.1MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
00-0-(*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))))
00-0-(PI.f32)
00-0-#s(literal 2 binary32)
00-0-(*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s)
00-0-(*.f32 #s(literal 6 binary32) (PI.f32))
00-0-(/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))
00-0-(neg.f32 r)
00-0-s
00-0-(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
03(1.468770980834961 2035.634765625)0-(exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))
00-0-(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
00-0-#s(literal 3/4 binary32)
00-0-(/.f32 (neg.f32 r) s)
00-0-#s(literal 1/4 binary32)
02(0.004090161062777042 2.788966417312622)0-(exp.f32 (/.f32 (neg.f32 r) s))
00-0-(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
00-0-(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
00-0-(*.f32 #s(literal 3 binary32) s)
00-0-(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
00-0-#s(literal 6 binary32)
00-0-r
00-0-#s(literal 3 binary32)
00-0-(*.f32 #s(literal 2 binary32) (PI.f32))
00-0-(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
exp.f32(exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))sensitivity31
exp.f32(exp.f32 (/.f32 (neg.f32 r) s))sensitivity20
Confusion
Predicted +Predicted -
+00
-4252
Precision
0.0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-40252
Precision?
0.0
Recall?
0/0
Freqs
test
numberfreq
0252
13
21
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-100
Precision?
0.0
Recall?
0/0
Samples
92.0ms512×0valid
Compiler

Compiled 475 to 104 computations (78.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 69.0ms
ival-mult: 27.0ms (39.3% of total)
ival-div: 20.0ms (29.1% of total)
ival-exp: 13.0ms (18.9% of total)
ival-pi: 2.0ms (2.9% of total)
ival-add: 2.0ms (2.9% of total)
ival-neg: 2.0ms (2.9% of total)
exact: 1.0ms (1.5% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

preprocess3.0ms (0.1%)

Memory
5.6MiB live, 5.6MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Outputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Compiler

Compiled 33 to 25 computations (24.2% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.8%
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Compiler

Compiled 33 to 25 computations (24.2% saved)

simplify1.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(exp.f32 (/.f32 (neg.f32 r) s))
cost-diff0
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
cost-diff0
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
cost-diff0
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
#s(literal 1/4 binary32)
(exp.f32 (/.f32 (neg.f32 r) s))
(/.f32 (neg.f32 r) s)
(neg.f32 r)
r
s
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(*.f32 #s(literal 2 binary32) (PI.f32))
#s(literal 2 binary32)
(PI.f32)
(/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))))
#s(literal 3/4 binary32)
(exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
(*.f32 #s(literal 3 binary32) s)
#s(literal 3 binary32)
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s)
(*.f32 #s(literal 6 binary32) (PI.f32))
#s(literal 6 binary32)
Outputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
#s(literal 1/4 binary32)
(exp.f32 (/.f32 (neg.f32 r) s))
(/.f32 (neg.f32 r) s)
(neg.f32 r)
r
s
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(*.f32 #s(literal 2 binary32) (PI.f32))
#s(literal 2 binary32)
(PI.f32)
(/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))))
#s(literal 3/4 binary32)
(exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
(*.f32 #s(literal 3 binary32) s)
#s(literal 3 binary32)
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s)
(*.f32 #s(literal 6 binary32) (PI.f32))
#s(literal 6 binary32)

localize320.0ms (11.9%)

Memory
-133.5MiB live, 90.3MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.2578125
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
accuracy0.2734375
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
accuracy0.27734375
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
accuracy0.36328125
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
Samples
41.0ms256×0valid
Compiler

Compiled 294 to 52 computations (82.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 30.0ms
ival-mult: 11.0ms (36.1% of total)
ival-div: 6.0ms (19.7% of total)
ival-add: 6.0ms (19.7% of total)
ival-exp: 4.0ms (13.1% of total)
ival-pi: 1.0ms (3.3% of total)
exact: 1.0ms (3.3% of total)
ival-neg: 1.0ms (3.3% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series30.0ms (1.1%)

Memory
1.9MiB live, 45.3MiB allocated
Counts
8 → 46
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
(exp.f32 (/.f32 (neg.f32 r) s))
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
Outputs
(/ (+ (* 1/8 (/ (exp (* -1 (/ r s))) (* r (PI)))) (* 1/8 (/ (exp (* -1/3 (/ r s))) (* r (PI))))) s)
(* 1/8 (/ (exp (* -1 (/ r s))) (* r (* s (PI)))))
(* 1/4 (exp (* -1 (/ r s))))
(exp (* -1 (/ r s)))
(* 2 (* s (PI)))
(* 6 (* r (* s (PI))))
(* 2 (* r (* s (PI))))
(* -1/3 (/ r s))
(/ 1/4 (* r (* s (PI))))
(/ (- (* 1/4 (/ 1 (* r (PI)))) (* 1/6 (/ 1 (* s (PI))))) s)
(/ (- (+ (* 1/144 (/ r (* (pow s 2) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* r (PI)))))) (/ 1/6 (* s (PI)))) s)
(/ (- (+ (* -1/48 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* -1/1296 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* 1/144 (/ r (* (pow s 2) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* r (PI)))))))) (/ 1/6 (* s (PI)))) s)
(/ 1/8 (* r (* s (PI))))
(/ (- (* 1/8 (/ 1 (* r (PI)))) (* 1/8 (/ 1 (* s (PI))))) s)
(/ (- (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* r (PI))))) (/ 1/8 (* s (PI)))) s)
(/ (- (+ (* -1/48 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* r (PI)))))) (/ 1/8 (* s (PI)))) s)
1/4
(+ 1/4 (* -1/4 (/ r s)))
(+ 1/4 (+ (* -1/4 (/ r s)) (* 1/8 (/ (pow r 2) (pow s 2)))))
(+ 1/4 (+ (* -1/4 (/ r s)) (+ (* -1/24 (/ (pow r 3) (pow s 3))) (* 1/8 (/ (pow r 2) (pow s 2))))))
1
(+ 1 (* -1 (/ r s)))
(+ 1 (+ (* -1 (/ r s)) (* 1/2 (/ (pow r 2) (pow s 2)))))
(+ 1 (+ (* -1 (/ r s)) (+ (* -1/6 (/ (pow r 3) (pow s 3))) (* 1/2 (/ (pow r 2) (pow s 2))))))
(* -1 (/ (- (* 1/6 (/ 1 (* s (PI)))) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1/16 (/ r (PI))) (* -1/144 (/ r (PI)))) s)) (* 1/6 (/ 1 (PI)))) s)) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1 (/ (+ (* -1/48 (/ (pow r 2) (PI))) (* -1/1296 (/ (pow r 2) (PI)))) s)) (+ (* -1/16 (/ r (PI))) (* -1/144 (/ r (PI))))) s)) (* 1/6 (/ 1 (PI)))) s)) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* 1/8 (/ 1 (* s (PI)))) (* 1/8 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* 1/16 (/ r (* s (PI)))) (* 1/8 (/ 1 (PI)))) s)) (* 1/8 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1/16 (/ r (PI))) (* 1/48 (/ (pow r 2) (* s (PI))))) s)) (* 1/8 (/ 1 (PI)))) s)) (* 1/8 (/ 1 (* r (PI))))) s))
(+ 1/4 (* -1 (/ (+ (* -1/8 (/ (pow r 2) s)) (* 1/4 r)) s)))
(+ 1/4 (* -1 (/ (+ (* -1 (/ (+ (* -1/24 (/ (pow r 3) s)) (* 1/8 (pow r 2))) s)) (* 1/4 r)) s)))
(+ 1 (* -1 (/ (+ r (* -1/2 (/ (pow r 2) s))) s)))
(+ 1 (* -1 (/ (+ r (* -1 (/ (+ (* -1/6 (/ (pow r 3) s)) (* 1/2 (pow r 2))) s))) s)))
(/ (+ (* -1/6 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* 5/72 (/ r (* (pow s 3) (PI)))) (* 1/6 (/ 1 (* (pow s 2) (PI)))))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* r (+ (* -7/324 (/ r (* (pow s 4) (PI)))) (* 5/72 (/ 1 (* (pow s 3) (PI)))))) (* 1/6 (/ 1 (* (pow s 2) (PI)))))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* -1/8 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* 1/16 (/ r (* (pow s 3) (PI)))) (* 1/8 (/ 1 (* (pow s 2) (PI)))))) (* 1/8 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* r (+ (* -1/48 (/ r (* (pow s 4) (PI)))) (* 1/16 (/ 1 (* (pow s 3) (PI)))))) (* 1/8 (/ 1 (* (pow s 2) (PI)))))) (* 1/8 (/ 1 (* s (PI))))) r)
(+ 1/4 (* r (- (* 1/8 (/ r (pow s 2))) (* 1/4 (/ 1 s)))))
(+ 1/4 (* r (- (* r (+ (* -1/24 (/ r (pow s 3))) (* 1/8 (/ 1 (pow s 2))))) (* 1/4 (/ 1 s)))))
(+ 1 (* r (- (* 1/2 (/ r (pow s 2))) (/ 1 s))))
(+ 1 (* r (- (* r (+ (* -1/6 (/ r (pow s 3))) (* 1/2 (/ 1 (pow s 2))))) (/ 1 s))))
(/ (+ (* 1/8 (/ (exp (* -1 (/ r s))) (* s (PI)))) (* 1/8 (/ (exp (* -1/3 (/ r s))) (* s (PI))))) r)
(* -1 (/ (+ (* -1/8 (/ (exp (* -1 (/ r s))) (* s (PI)))) (* -1/8 (/ (exp (* -1/3 (/ r s))) (* s (PI))))) r))
Calls

6 calls:

TimeVariablePointExpression
8.0ms
s
@-inf
((+ (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (/ (* 3/4 (exp (/ (neg r) (* 3 s)))) (* (* (* 6 (PI)) s) r))) (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (* 1/4 (exp (/ (neg r) s))) (exp (/ (neg r) s)) (* (* 2 (PI)) s) (* (* (* 6 (PI)) s) r) (* (* (* 2 (PI)) s) r) (/ (neg r) (* 3 s)))
6.0ms
r
@inf
((+ (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (/ (* 3/4 (exp (/ (neg r) (* 3 s)))) (* (* (* 6 (PI)) s) r))) (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (* 1/4 (exp (/ (neg r) s))) (exp (/ (neg r) s)) (* (* 2 (PI)) s) (* (* (* 6 (PI)) s) r) (* (* (* 2 (PI)) s) r) (/ (neg r) (* 3 s)))
5.0ms
s
@inf
((+ (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (/ (* 3/4 (exp (/ (neg r) (* 3 s)))) (* (* (* 6 (PI)) s) r))) (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (* 1/4 (exp (/ (neg r) s))) (exp (/ (neg r) s)) (* (* 2 (PI)) s) (* (* (* 6 (PI)) s) r) (* (* (* 2 (PI)) s) r) (/ (neg r) (* 3 s)))
4.0ms
s
@0
((+ (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (/ (* 3/4 (exp (/ (neg r) (* 3 s)))) (* (* (* 6 (PI)) s) r))) (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (* 1/4 (exp (/ (neg r) s))) (exp (/ (neg r) s)) (* (* 2 (PI)) s) (* (* (* 6 (PI)) s) r) (* (* (* 2 (PI)) s) r) (/ (neg r) (* 3 s)))
4.0ms
r
@-inf
((+ (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (/ (* 3/4 (exp (/ (neg r) (* 3 s)))) (* (* (* 6 (PI)) s) r))) (/ (* 1/4 (exp (/ (neg r) s))) (* (* (* 2 (PI)) s) r)) (* 1/4 (exp (/ (neg r) s))) (exp (/ (neg r) s)) (* (* 2 (PI)) s) (* (* (* 6 (PI)) s) r) (* (* (* 2 (PI)) s) r) (/ (neg r) (* 3 s)))

simplify1.0ms (0%)

Memory
1.8MiB live, 1.8MiB allocated
Algorithm
egg-herbie
Counts
46 → 8
Calls
Call 1
Inputs
(/ (+ (* 1/8 (/ (exp (* -1 (/ r s))) (* r (PI)))) (* 1/8 (/ (exp (* -1/3 (/ r s))) (* r (PI))))) s)
(* 1/8 (/ (exp (* -1 (/ r s))) (* r (* s (PI)))))
(* 1/4 (exp (* -1 (/ r s))))
(exp (* -1 (/ r s)))
(* 2 (* s (PI)))
(* 6 (* r (* s (PI))))
(* 2 (* r (* s (PI))))
(* -1/3 (/ r s))
(/ 1/4 (* r (* s (PI))))
(/ (- (* 1/4 (/ 1 (* r (PI)))) (* 1/6 (/ 1 (* s (PI))))) s)
(/ (- (+ (* 1/144 (/ r (* (pow s 2) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* r (PI)))))) (/ 1/6 (* s (PI)))) s)
(/ (- (+ (* -1/48 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* -1/1296 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* 1/144 (/ r (* (pow s 2) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* r (PI)))))))) (/ 1/6 (* s (PI)))) s)
(/ 1/8 (* r (* s (PI))))
(/ (- (* 1/8 (/ 1 (* r (PI)))) (* 1/8 (/ 1 (* s (PI))))) s)
(/ (- (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* r (PI))))) (/ 1/8 (* s (PI)))) s)
(/ (- (+ (* -1/48 (/ (pow r 2) (* (pow s 3) (PI)))) (+ (* 1/16 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* r (PI)))))) (/ 1/8 (* s (PI)))) s)
1/4
(+ 1/4 (* -1/4 (/ r s)))
(+ 1/4 (+ (* -1/4 (/ r s)) (* 1/8 (/ (pow r 2) (pow s 2)))))
(+ 1/4 (+ (* -1/4 (/ r s)) (+ (* -1/24 (/ (pow r 3) (pow s 3))) (* 1/8 (/ (pow r 2) (pow s 2))))))
1
(+ 1 (* -1 (/ r s)))
(+ 1 (+ (* -1 (/ r s)) (* 1/2 (/ (pow r 2) (pow s 2)))))
(+ 1 (+ (* -1 (/ r s)) (+ (* -1/6 (/ (pow r 3) (pow s 3))) (* 1/2 (/ (pow r 2) (pow s 2))))))
(* -1 (/ (- (* 1/6 (/ 1 (* s (PI)))) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1/16 (/ r (PI))) (* -1/144 (/ r (PI)))) s)) (* 1/6 (/ 1 (PI)))) s)) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1 (/ (+ (* -1/48 (/ (pow r 2) (PI))) (* -1/1296 (/ (pow r 2) (PI)))) s)) (+ (* -1/16 (/ r (PI))) (* -1/144 (/ r (PI))))) s)) (* 1/6 (/ 1 (PI)))) s)) (* 1/4 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* 1/8 (/ 1 (* s (PI)))) (* 1/8 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* 1/16 (/ r (* s (PI)))) (* 1/8 (/ 1 (PI)))) s)) (* 1/8 (/ 1 (* r (PI))))) s))
(* -1 (/ (- (* -1 (/ (- (* -1 (/ (+ (* -1/16 (/ r (PI))) (* 1/48 (/ (pow r 2) (* s (PI))))) s)) (* 1/8 (/ 1 (PI)))) s)) (* 1/8 (/ 1 (* r (PI))))) s))
(+ 1/4 (* -1 (/ (+ (* -1/8 (/ (pow r 2) s)) (* 1/4 r)) s)))
(+ 1/4 (* -1 (/ (+ (* -1 (/ (+ (* -1/24 (/ (pow r 3) s)) (* 1/8 (pow r 2))) s)) (* 1/4 r)) s)))
(+ 1 (* -1 (/ (+ r (* -1/2 (/ (pow r 2) s))) s)))
(+ 1 (* -1 (/ (+ r (* -1 (/ (+ (* -1/6 (/ (pow r 3) s)) (* 1/2 (pow r 2))) s))) s)))
(/ (+ (* -1/6 (/ r (* (pow s 2) (PI)))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* 5/72 (/ r (* (pow s 3) (PI)))) (* 1/6 (/ 1 (* (pow s 2) (PI)))))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* r (+ (* -7/324 (/ r (* (pow s 4) (PI)))) (* 5/72 (/ 1 (* (pow s 3) (PI)))))) (* 1/6 (/ 1 (* (pow s 2) (PI)))))) (* 1/4 (/ 1 (* s (PI))))) r)
(/ (+ (* -1/8 (/ r (* (pow s 2) (PI)))) (* 1/8 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* 1/16 (/ r (* (pow s 3) (PI)))) (* 1/8 (/ 1 (* (pow s 2) (PI)))))) (* 1/8 (/ 1 (* s (PI))))) r)
(/ (+ (* r (- (* r (+ (* -1/48 (/ r (* (pow s 4) (PI)))) (* 1/16 (/ 1 (* (pow s 3) (PI)))))) (* 1/8 (/ 1 (* (pow s 2) (PI)))))) (* 1/8 (/ 1 (* s (PI))))) r)
(+ 1/4 (* r (- (* 1/8 (/ r (pow s 2))) (* 1/4 (/ 1 s)))))
(+ 1/4 (* r (- (* r (+ (* -1/24 (/ r (pow s 3))) (* 1/8 (/ 1 (pow s 2))))) (* 1/4 (/ 1 s)))))
(+ 1 (* r (- (* 1/2 (/ r (pow s 2))) (/ 1 s))))
(+ 1 (* r (- (* r (+ (* -1/6 (/ r (pow s 3))) (* 1/2 (/ 1 (pow s 2))))) (/ 1 s))))
(/ (+ (* 1/8 (/ (exp (* -1 (/ r s))) (* s (PI)))) (* 1/8 (/ (exp (* -1/3 (/ r s))) (* s (PI))))) r)
(* -1 (/ (+ (* -1/8 (/ (exp (* -1 (/ r s))) (* s (PI)))) (* -1/8 (/ (exp (* -1/3 (/ r s))) (* s (PI))))) r))
Outputs
(/ (+ (* 1/8 (/ (exp (* -1 (/ r s))) (* r (PI)))) (* 1/8 (/ (exp (* -1/3 (/ r s))) (* r (PI))))) s)
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(* 1/8 (/ (exp (* -1 (/ r s))) (* r (* s (PI)))))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(* 1/4 (exp (* -1 (/ r s))))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
(exp (* -1 (/ r s)))
(exp.f32 (/.f32 (neg.f32 r) s))
(* 2 (* s (PI)))
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(* 6 (* r (* s (PI))))
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(* 2 (* r (* s (PI))))
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(* -1/3 (/ r s))
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))

rewrite0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
8 → 8
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
(exp.f32 (/.f32 (neg.f32 r) s))
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))
Outputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r))
(*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s)))
(exp.f32 (/.f32 (neg.f32 r) s))
(*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s)
(*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)
(*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)
(/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s))

eval1.0ms (0.1%)

Memory
3.0MiB live, 3.0MiB allocated
Compiler

Compiled 621 to 73 computations (88.2% saved)

prune8.0ms (0.3%)

Memory
-27.9MiB live, 9.9MiB allocated
Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New16016
Fresh000
Picked011
Done000
Total16117
Accuracy
99.8%
Counts
17 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.8%
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Compiler

Compiled 66 to 50 computations (24.2% saved)

simplify5.0ms (0.2%)

Memory
10.3MiB live, 10.3MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
Outputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))

soundness0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Stop Event
done
Compiler

Compiled 33 to 25 computations (24.2% saved)

preprocess24.0ms (0.9%)

Memory
9.2MiB live, 47.4MiB allocated
Compiler

Compiled 132 to 100 computations (24.2% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...