| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent b18fd54 commit 7c26472
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2767,8 +2767,15 @@ x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem) | |||
| 2767 | 2767 | vtop = vk[size_w]; | |
| 2768 | 2768 | assert(vtop <= wm1); | |
| 2769 | 2769 | vv = ((twodigits)vtop << PyLong_SHIFT) | vk[size_w-1]; | |
| 2770 | + /* The code used to compute the remainder via | ||
| 2771 | + * r = (digit)(vv - (twodigits)wm1 * q); | ||
| 2772 | + * and compilers generally generated code to do the * and -. | ||
| 2773 | + * But modern processors generally compute q and r with a single | ||
| 2774 | + * instruction, and modern optimizing compilers exploit that if we | ||
| 2775 | + * _don't_ try to optimize it. | ||
| 2776 | + */ | ||
| 2770 | 2777 | q = (digit)(vv / wm1); | |
| 2771 | - r = (digit)(vv - (twodigits)wm1 * q); /* r = vv % wm1 */ | ||
| 2778 | + r = (digit)(vv % wm1); | ||
| 2772 | 2779 | while ((twodigits)wm2 * q > (((twodigits)r << PyLong_SHIFT) | |
| 2773 | 2780 | | vk[size_w-2])) { | |
| 2774 | 2781 | --q; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments