| r243 vs r244 | ||
|---|---|---|
| ... | ... | |
| 18 | 18 | '''rs''' : "result" suprerior value (integer→string); '''ri''' : "result" inferior value (integer→string); |
| 19 | 19 | '''i''' : index; |
| 20 | 20 | '''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); | |
| 23 | 23 | '''pd''' : padding with zeros. (string) |
| 24 | 24 | '''ps''' : pass (logical); '''ts''' : --not about gender-- test (logical) ; '''br''' : break (logical); |
| 25 | 25 | '''ea''' : error code about "a" (integer); '''eb''' : error code about "b" (integer); |
| ... | ... | |
| 232 | 232 | |
| 233 | 233 | 소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다. |
| 234 | 234 | |
| 235 | {{{#!if tv=+("1 | |
| 235 | {{{#!if tv=+(("1"+pd).substr(0,ap+1)) | |
| 236 | 236 | }}} |
| 237 | 237 | |
| 238 | 238 | Case 1 : ru가 0보다 큰 경우 |
| ... | ... | |
| 1458 | 1458 | ##i=0 |
| 1459 | 1459 | {{{#!if br=false |
| 1460 | 1460 | }}}다시 정렬된 bu, bb의 값은 바뀌지 않습니다. bu, bb로 나눈 몫만큼 au, ab에서 감소시킨 다음 au와 ab를 다시 정렬시키며, au와 ab가 모두 0이 되면 더 이상 계산하지 않도록 br를 true로 반환합니다. |
| 1461 | au와 ab의 값을 가져와 tu와 tv로 먼저 복제합니다. | |
| 1461 | au와 ab의 값을 가져와 tu와 tv로 먼저 복제합니다. (계산 결과에 쓰게 됩니다.) | |
| 1462 | 1462 | {{{#!if tu=au, tv=ab |
| 1463 | 1463 | }}} |
| 1464 | 1464 | 그 다음 계산을 편하게 할 수 있도록 텍스트값으로 된 au, ab, bu, bb를 정수값으로 변환합니다. |
| ... | ... | |
| 1536 | 1536 | }}} |
| 1537 | 1537 | ##i=1 part 1 |
| 1538 | 1538 | (변수 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 | |
| 1539 | 1557 | {{{#!if |
| 1540 | 1558 | }}} |
| 1559 | }}} | |
| 1541 | 1560 | ##i=1 part 2 |
| 1542 | 1561 | }}} |
| 1543 | 1562 | |
| ... | ... |