r243 vs r244
......
1818
'''rs''' : "result" suprerior value (integer→string); '''ri''' : "result" inferior value (integer→string);
1919
'''i''' : index;
2020
'''tu''' : temporary value 1 (integer); '''tv''' : temporary value 2 (integer);
21
'''tw''' : temporary value 3 (integer); '''tx''' : temporary value 4 (integer);
22
'''ty''' : temporary value 5 (integer);
21
'''tw''' : temporary value 3 (integer); '''tx''' : temporary value 4 (integer→string);
22
'''ty''' : temporary value 5 (integer); '''tz''' : temporary value 6 (integer);
2323
'''pd''' : padding with zeros. (string)
2424
'''ps''' : pass (logical); '''ts''' : --not about gender-- test (logical) ; '''br''' : break (logical);
2525
'''ea''' : error code about "a" (integer); '''eb''' : error code about "b" (integer);
......
232232
233233
소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다.
234234
235
{{{#!if tv=+("1000000000000000000".substr(0,ap+1))
235
{{{#!if tv=+(("1"+pd).substr(0,ap+1))
236236
}}}
237237
238238
Case 1 : ru가 0보다 큰 경우
......
14581458
##i=0
14591459
{{{#!if br=false
14601460
}}}다시 정렬된 bu, bb의 값은 바뀌지 않습니다. bu, bb로 나눈 몫만큼 au, ab에서 감소시킨 다음 au와 ab를 다시 정렬시키며, au와 ab가 모두 0이 되면 더 이상 계산하지 않도록 br를 true로 반환합니다.
1461
au와 ab의 값을 가져와 tu와 tv로 먼저 복제합니다.
1461
au와 ab의 값을 가져와 tu와 tv로 먼저 복제합니다. (계산 결과에 쓰게 됩니다.)
14621462
{{{#!if tu=au, tv=ab
14631463
}}}
14641464
그 다음 계산을 편하게 할 수 있도록 텍스트값으로 된 au, ab, bu, bb를 정수값으로 변환합니다.
......
15361536
}}}
15371537
##i=1 part 1
15381538
(변수 tn으로 만들 수 있는 여분의 1자리 +) 18자리 + 18자리 숫자를 18자리+18자리 숫자로 나누는 계산을 합니다. tn이 9가 될 경우 9로 시작하는 19자리 숫자를 long integer로 모두 표현할 수 없으므로 10**18 자리부터 먼저 계산합니다. 10**18의 1번째 숫자의 몫을 구한 다음 나머지를 18자리 숫자에 더하는 과정(part 1)을 거친 다음 그 18자리에서 몫을 구하는 과정(part 2)을 거칩니다.
1539
1540
tn이 빈 문자열이 아니라면 (앞에 au에서 한 자리 수를 떼온 것이므로) tn에 0을 더하여 19자리로 만들고 몫을 구합니다.
1541
{{{#!if tn!=""
1542
tn을 19자리 정수로 바꿉니다.
1543
{{{#!if tn+=pd, tn=+tn
1544
}}}
1545
tz를 몫으로 정의합니다. 앞의 tw를 처리하는 방법과 같습니다. tn을 정수로 만들었으므로 소수점 아래를 비교한다면 정수의 소수점 아래에 해당하는 0과 비교합니다.
1546
{{{#!if tz=tn/bu, tx=bu*tz, ty=bb*tz
1547
}}}{{{#!if ty=ty.toString(), ty.length==19
1548
{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18), ty=+ty
1549
}}}}}}
1550
{{{#!if (tx>tn)||((tx==tn)&&(ty>0))
1551
{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1552
}}}{{{#!if ty=ty.toString(), ty.length==19
1553
{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18), ty=+ty
1554
}}}}}}}}}
1555
나머지를 반영합니다. 나눈 만큼 빼는데 처리해야할 소수점 아래 부분인 ab보다 ty가 크다면 tn에서 뺍니다.
1556
{{{#!if ty>0
15391557
{{{#!if
15401558
}}}
1559
}}}
15411560
##i=1 part 2
15421561
}}}
15431562
......