HairBSDF, Mp, lower

Time bar (total: 5.6s)

start0.0ms (0.0%)

Memory
0.3MiB live, 0.3MiB allocated; 0ms collecting garbage

analyze447.0ms (8.0%)

Memory
41.4MiB live, 574.1MiB allocated; 226ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0.0%0.0%3.0%97.0%0.0%0.0%0.0%0
0.0%0.0%3.0%97.0%0.0%0.0%0.0%1
0.0%0.0%3.0%97.0%0.0%0.0%0.0%2
0.0%0.0%3.0%97.0%0.0%0.0%0.0%3
0.0%0.0%3.0%97.0%0.0%0.0%0.0%4
0.0%0.0%3.0%97.0%0.0%0.0%0.0%5
0.0%0.0%1.5%97.0%0.0%1.5%0.0%6
0.0%0.0%1.5%97.0%0.0%1.5%0.0%7
0.0%0.0%1.5%97.0%0.0%1.5%0.0%8
0.0%0.0%1.5%97.0%0.0%1.5%0.0%9
0.0%0.0%1.5%97.0%0.0%1.5%0.0%10
0.0%0.0%1.5%97.0%0.0%1.5%0.0%11
0.0%0.0%1.5%97.0%0.0%1.5%0.0%12
Compiler

Compiled 65 to 44 computations (32.3% saved)

sample2.5s (44.1%)

Memory
77.6MiB live, 2 330.9MiB allocated; 553ms collecting garbage
Samples
1.8s8 256×0valid
14.0ms117×0invalid
Precisions
Click to see histograms. Total time spent on operations: 668.0ms
ival-div!: 195.0ms (29.2% of total, 293.1 MiB)
ival-mult!: 122.0ms (18.3% of total, 203.4 MiB)
ival-log: 113.0ms (16.9% of total, 175.6 MiB)
ival-exp: 81.0ms (12.1% of total, 132.2 MiB)
ival-add!: 52.0ms (7.8% of total, 87.0 MiB)
ival-sub!: 50.0ms (7.5% of total, 82.2 MiB)
adjust: 19.0ms (2.8% of total, 10.0 MiB)
ival-<=: 19.0ms (2.8% of total, 32.5 MiB)
ival-and: 14.0ms (2.1% of total, 29.3 MiB)
ival-assert: 4.0ms (0.6% of total, 9.1 MiB)
Bogosity

preprocess346.0ms (6.2%)

Memory
20.0MiB live, 65.1MiB allocated; 3ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0164441
11817378
216273378
342645378
Stop Event
node-limit
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.1%
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Symmetry

(abs cosTheta_i)

(abs cosTheta_O)

(abs sinTheta_i)

(abs sinTheta_O)

(abs v)

(negabs cosTheta_i)

(negabs cosTheta_O)

(negabs sinTheta_i)

(negabs sinTheta_O)

(negabs v)

(sort cosTheta_i cosTheta_O)

(sort sinTheta_i sinTheta_O)

Compiler

Compiled 50 to 42 computations (16.0% saved)

sample0.0ms (0.0%)

Memory
0.5MiB live, 0.5MiB allocated; 0ms collecting garbage
Calls
Call 1
Inputs
1
6931/10000
2
Outputs
#s(literal 1 binary32)
#s(literal 45423/65536 binary32)
#s(literal 2 binary32)
Samples
0.0ms0valid
Compiler

Compiled 5 to 5 computations (0.0% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
adjust: 0.0ms (0.0% of total, 0.0 MiB)

series118.0ms (2.1%)

Memory
-1.9MiB live, 227.8MiB allocated; 36ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
04844010
Stop Event
iter-limit
Counts
21 → 10
Calls
Call 1
Inputs
cosTheta_i
cosTheta_O
(*.f32 cosTheta_i cosTheta_O)
v
(/.f32 (*.f32 cosTheta_i cosTheta_O) v)
sinTheta_i
sinTheta_O
(*.f32 sinTheta_i sinTheta_O)
(/.f32 (*.f32 sinTheta_i sinTheta_O) v)
(-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v))
#s(literal 1 binary32)
(/.f32 #s(literal 1 binary32) v)
(-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v))
#s(literal 6931/10000 binary32)
(+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32))
#s(literal 2 binary32)
(*.f32 #s(literal 2 binary32) v)
(/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))
(log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs
#s(approx cosTheta_i #s(literal 0 binary32))
#s(approx cosTheta_i cosTheta_i)
#s(approx (* cosTheta_i cosTheta_O) (*.f32 cosTheta_O cosTheta_i))
#s(approx cosTheta_O cosTheta_O)
#s(approx sinTheta_i sinTheta_i)
#s(approx (* sinTheta_i sinTheta_O) (*.f32 sinTheta_O sinTheta_i))
#s(approx sinTheta_O sinTheta_O)
#s(approx v v)
#s(approx (* 2 v) (*.f32 #s(literal 2 binary32) v))
#s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32))
Calls

15 calls:

TimeVariablePoint
26.0ms
cosTheta_i
-inf
22.0ms
v
0
11.0ms
v
inf
9.0ms
v
-inf
6.0ms
cosTheta_i
0

rewrite873.0ms (15.7%)

Memory
3.5MiB live, 92.8MiB allocated; 6ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021133
034115
1172106
21568106
323535106
441115106
05047221
Stop Event
iter-limit
node-limit
iter-limit
Counts
21 → 0
Calls
Call 1
Inputs
cosTheta_i
cosTheta_O
(*.f32 cosTheta_i cosTheta_O)
v
(/.f32 (*.f32 cosTheta_i cosTheta_O) v)
sinTheta_i
sinTheta_O
(*.f32 sinTheta_i sinTheta_O)
(/.f32 (*.f32 sinTheta_i sinTheta_O) v)
(-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v))
#s(literal 1 binary32)
(/.f32 #s(literal 1 binary32) v)
(-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v))
#s(literal 6931/10000 binary32)
(+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32))
#s(literal 2 binary32)
(*.f32 #s(literal 2 binary32) v)
(/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))
(log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs

eval1.0ms (0.0%)

Memory
2.9MiB live, 2.9MiB allocated; 0ms collecting garbage
Compiler

Compiled 284 to 49 computations (82.7% saved)

prune2.0ms (0.0%)

Memory
4.5MiB live, 4.5MiB allocated; 0ms collecting garbage
Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New11112
Fresh000
Picked011
Done000
Total11213
Accuracy
99.3%
Counts
13 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.1%
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
4.7%
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Compiler

Compiled 34 to 23 computations (32.4% saved)

sample0.0ms (0.0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Calls
Call 1
Inputs
1
6931/10000
2
Outputs
#s(literal 1 binary32)
#s(literal 45423/65536 binary32)
#s(literal 2 binary32)
Samples
0.0ms0valid
Compiler

Compiled 5 to 5 computations (0.0% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
adjust: 0.0ms (0.0% of total, 0.0 MiB)

series177.0ms (3.2%)

Memory
13.2MiB live, 193.7MiB allocated; 19ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03893231
Stop Event
iter-limit
Counts
10 → 4
Calls
Call 1
Inputs
v
#s(literal 1 binary32)
#s(literal 6931/10000 binary32)
#s(literal 2 binary32)
(*.f32 #s(literal 2 binary32) v)
(/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))
(log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))
#s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32))
(+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs
#s(approx v #s(literal 0 binary32))
#s(approx v v)
#s(approx (* 2 v) (*.f32 #s(literal 2 binary32) v))
#s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32))
Calls

15 calls:

TimeVariablePoint
136.0ms
v
-inf
9.0ms
v
0
7.0ms
v
inf
2.0ms
cosTheta_i
0
2.0ms
cosTheta_O
0

rewrite896.0ms (16.1%)

Memory
34.9MiB live, 126.5MiB allocated; 37ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02290
02776
116369
2147369
32114369
43841569
05036610
Stop Event
iter-limit
node-limit
iter-limit
Counts
10 → 0
Calls
Call 1
Inputs
v
#s(literal 1 binary32)
#s(literal 6931/10000 binary32)
#s(literal 2 binary32)
(*.f32 #s(literal 2 binary32) v)
(/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))
(log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))
#s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32))
(+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs

eval1.0ms (0.0%)

Memory
1.3MiB live, 1.3MiB allocated; 0ms collecting garbage
Compiler

Compiled 45 to 18 computations (60.0% saved)

prune1.0ms (0.0%)

Memory
2.4MiB live, 2.4MiB allocated; 0ms collecting garbage
Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New505
Fresh000
Picked011
Done011
Total527
Accuracy
99.3%
Counts
7 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.1%
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
4.7%
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Compiler

Compiled 34 to 23 computations (32.4% saved)

regimes31.0ms (0.6%)

Memory
-7.9MiB live, 77.0MiB allocated; 8ms collecting garbage
Counts
1 → 1
2 → 1
Calls
Call 1
Inputs
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Call 2
Inputs
(exp.f32 (+.f32 #s(approx (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Outputs
(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
Calls

18 calls:

6.0ms
v
3.0ms
cosTheta_O
2.0ms
(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
2.0ms
sinTheta_O
2.0ms
cosTheta_O
Results
AccuracySegmentsBranch
4.7%1(*.f32 sinTheta_i sinTheta_O)
4.7%1(*.f32 cosTheta_i cosTheta_O)
4.7%1(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
4.7%1(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
4.7%1cosTheta_i
4.7%1cosTheta_O
4.7%1sinTheta_i
4.7%1sinTheta_O
4.7%1v
99.1%1(*.f32 sinTheta_i sinTheta_O)
99.1%1(*.f32 cosTheta_i cosTheta_O)
99.1%1(+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))))
99.1%1(exp.f32 (+.f32 (+.f32 (-.f32 (-.f32 (/.f32 (*.f32 cosTheta_i cosTheta_O) v) (/.f32 (*.f32 sinTheta_i sinTheta_O) v)) (/.f32 #s(literal 1 binary32) v)) #s(literal 6931/10000 binary32)) (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)))))
99.1%1cosTheta_i
99.1%1cosTheta_O
99.1%1sinTheta_i
99.1%1sinTheta_O
99.1%1v
Compiler

Compiled 154 to 127 computations (17.5% saved)

derivations8.0ms (0.1%)

Memory
19.0MiB live, 19.0MiB allocated; 0ms collecting garbage
Stop Event
done
Compiler

Compiled 34 to 23 computations (32.4% saved)

preprocess217.0ms (3.9%)

Memory
-30.9MiB live, 393.2MiB allocated; 39ms collecting garbage
Compiler

Compiled 1 147 to 1 004 computations (12.5% saved)

end0.0ms (0.0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...