-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnclip.decay.h
62 lines (57 loc) · 1.05 KB
/
nclip.decay.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* defines nclip::decay functions */
#pragma once
namespace nclip {
void decay (
const double start
,const ninstruction::sinst &inst
) {
nlowlevel::decay (
nregister::localreg[inst.reg0] + tto(inst.start - start)
,tto(inst.len)
,0.0
,1.0
);
}
void bdecay (
const double start
,const ninstruction::sinst &inst
,uacc &acc
) {
nlowlevel::decay (
nregister::localreg[inst.reg0]
,tto(inst.start + inst.len - start)
,acc.d
,1.0
);
}
void edecay (
const double start
,const ninstruction::sinst &inst
,uacc &acc
) {
int offset = tto(inst.start - start);
acc.i = nregister::len - offset;
acc.d = (nregister::rrate * acc.i) / inst.len;
nlowlevel::decay (
nregister::localreg[inst.reg0] + offset
,acc.i
,0.0
,acc.d
);
}
void bedecay (
const double start
,const ninstruction::sinst &inst
,uacc &acc
) {
acc.i += nregister::len;
double end = (nregister::rrate * acc.i) / inst.len;
nlowlevel::decay (
nregister::localreg[inst.reg0]
,nregister::len
,acc.d
,end
);
acc.d = end;
}
}