Пр о ц е с с о р TMS 3 2 0C4 x
178
MPYF
R10, R1, R8
; R8 = vx[1]
SUBRF
2.0, R8
; R8 = 2.0 – vx[1]
MPYF
R8, R10, R1
; R1 = x[2] = x[1](2.0 – vx[1])
RND
R1
MPYF
R1, R0
; z = P(1/Q)
→
R0
PUSHF
R0
; сохранение z
MPYF
R0, R0, R1
; w = z
2
; Вычисление R = wa
0
/ (w + b
0
), где v = w + b
0
MPYF3
∗
AR0++, R1, R0
; a
0
R0
ADDF
∗
AR0++, R1
; w + b
0
RCPF
R1, R10
; x[0] = приближение 1/v
MPYF
R10, R1, R8
; R8 = vx[0]
SUBRF
2.0, R8
; R8 = 2.0 – vx[0]
MPYF
R8, R10
; R10 = x[1] = x[0](2.0 – vx[0])
MPYF
R10, R1, R8
; R8 = vx[1]
SUBRF
2.0, R8
; R8 = 2.0 – vx[1]
MPYF
R8, R10, R1
; R1 = x[2] = x[1](2.0 – vx[1])
RND
R1
MPYF
R1, R0
; R = wa
0
/ (w + b
0
)
→
R0
POPF
R1
; z
→
R1
MPYF
R1, R0
; zR0
→
R0
ADDF
R1, R0
; ln(M{x}) = z + R0
FLOAT
AR2, R2
; E{x}
→
R2
MPYF
∗
AR0++, R2, R1
; R2L
1
→
R1
BUD
R11
ADDF
R1, R0
; R0 + R1
→
R0
MPYF
∗
AR0++, R2, R1
; R2L
2
→
R1
ADDF
R1, R0
; ln(x) = ln(M{x}) + E{x}ln(2)
.data
LOG_ADR: .word
LOG
LOG
.float
0.7071067811865475244
; 1/
2
.float
–0.5527074855
; a
0
.float
–6.632718214
; b
0
.float
–2.1219444005e–4
; L
1
.float
0.693359375
; L
2
( L
1
+ L
2
= ln2 )
.float
0.4342944925
; log
10
e
.end