adding:计算各子项之和。如上式结果求和为"23400 + 4680 + 1404 = 28080 + 1404 = 29484"即为最后结果(对应上表中可学习任务-Adding+Copying).
针对除法,多位数除以一位数的任务是可学习任务,现在我们考虑多位数除以多位数的任务。为此,我们通过慢除法来进行循环计算:
R
j
−
D
×
(
q
n
−
(
j
+
1
)
×
1
0
j
)
=
R
j
+
1
R_j - D\times (q_{n-(j+1)} \times 10^j) = R_{j + 1}
Rj−D×(qn−(j+1)×10j)=Rj+1,其中
n
n
n表示被除数的位数,
R
j
R_j
Rj表示上一轮的商,
q
n
−
(
j
+
1
)
q_{n-(j+1)}
qn−(j+1)表示模型需要计算的值,要满足
D
×
q
n
−
(
j
+
1
)
×
1
0
j
≤
R
j
D\times q_{n-(j+1)} \times 10^j \le R_j
D×qn−(j+1)×10j≤Rj,
D
D
D表示除数。上式迭代的终止条件为
R
j
+
1
<
D
R_{j + 1} < D
Rj+1<D。考虑8914/64,首先第一轮的
R
j
=
8914
,
D
=
64
R_j=8914, D=64
Rj=8914,D=64,我们找到最大的可以使得
64
×
q
n
−
(
j
+
1
)
×
1
0
j
≤
8914
64 \times q_{n-(j+1)} \times 10^j \le 8914
64×qn−(j+1)×10j≤8914的
j
j
j,得到
j
=
2
j=2
j=2,对应的最大的
q
=
1
q=1
q=1,即得到
8914
−
64
×
(
1
×
1
0
2
)
=
2514
8914 - 64 \times (1 \times 10^2) = 2514
8914−64×(1×102)=2514;接下来
R
j
=
2514
≥
D
R_j = 2514\ge D
Rj=2514≥D,则唏嘘找到最大的可以使得
64
×
q
n
−
(
j
+
1
)
×
1
0
j
≤
2514
64 \times q_{n-(j+1)} \times 10^j \le 2514
64×qn−(j+1)×10j≤2514的
j
j
j,得到
j
=
1
j=1
j=1,对应最大的
q
=
3
q=3
q=3,即得到
2514
−
64
×
(
3
×
1
0
1
)
=
594
2514 - 64 \times (3 \times 10^1) = 594
2514−64×(3×101)=594;接下来
R
j
=
594
≥
D
R_j = 594\ge D
Rj=594≥D,则继续找到最大的可以使得
64
×
q
n
−
(
j
+
1
)
×
1
0
j
≤
594
64 \times q_{n-(j+1)} \times 10^j \le 594
64×qn−(j+1)×10j≤594的
j
j
j,得到
j
=
0
j=0
j=0,对应最大的
q
=
9
q=9
q=9,即得到
594
−
64
×
(
9
×
1
0
0
)
=
18
594 - 64 \times (9 \times 10^0) = 18
594−64×(9×100)=18;最后
R
j
<
D
=
64
R_j< D=64
Rj<D=64,终止判断。最后得到的商由上面所有的
q
n
−
(
j
+
1
)
×
1
0
j
q_{n-(j+1)} \times 10^j
qn−(j+1)×10j组成,即
1
∗
1
0
2
+
3
∗
1
0
1
+
9
∗
1
0
0
=
139
1*10^2 + 3 * 10^1 + 9 * 10^0=139
1∗102+3∗101+9∗100=139(相当于split的反向操作),余数为剩下的
R
j
=
18
R_j = 18
Rj=18。注意到上述整个过程只采用了基本的可学习任务,包括Copyting, Subtraction, Comparison, Multiplication(nD*1D), 反向split。