Тогда появляется другая аномалия — остатки больше или равные 1000.
В то же время действие if (mod > 0) по идее быстрее, чем if (mod > 1000), т.к. появляется дополнительная команда CMP mod, 1000 (или что-то похожее).
И если идти по этому пути, то лучше использовать div = x * 131 / 131072.
Число 2097 содержит 4 единичных бита, а 131 — три, следовательно действий меньше:
Строка = (точность, (множитель, битовая длина множителя, битовое представление множителя, количество единичных бит в множителе, степень двойки делителя)
(1.6391277311150754e-10,(536871,20,"10000011000100100111",8,29))
(1.6391277311150754e-10,(1073742,21,"100000110001001001110",8,30))
(1.6391277311150754e-10,(2147484,22,"1000001100010010011100",8,31))
(3.017485141962317e-10,(2147483,22,"1000001100010010011011",9,31))
(7.67409801503971e-10,(1073741,21,"100000110001001001101",8,30))
(1.6987323761194495e-9,(268435,19,"1000001100010010011",7,28))
(1.6987323761194495e-9,(536870,20,"10000011000100100110",7,29))
(2.0265579223424646e-9,(67109,17,"10000011000100101",6,26))
(2.0265579223424646e-9,(134218,18,"100000110001001010",6,27))
(2.0265579223424646e-9,(268436,19,"1000001100010010100",6,28))
(5.4240226745813636e-9,(134217,18,"100000110001001001",6,27))
(1.2874603271505192e-8,(16777,15,"100000110001001",5,24))
(1.2874603271505192e-8,(33554,16,"1000001100010010",5,25))
(1.2874603271505192e-8,(67108,17,"10000011000100100",5,26))
(1.692771911619012e-8,(33555,16,"1000001100010011",6,25))
(4.6730041503885433e-8,(8389,14,"10000011000101",5,23))
(4.6730041503885433e-8,(16778,15,"100000110001010",5,24))
(7.247924804689582e-8,(2097,12,"100000110001",4,21))
(7.247924804689582e-8,(4194,13,"1000001100010",4,22))
(7.247924804689582e-8,(8388,14,"10000011000100",4,23))
(1.6593933105466668e-7,(4195,13,"1000001100011",5,22))
(4.043579101562292e-7,(1049,11,"10000011001",4,20))
(4.043579101562292e-7,(2098,12,"100000110010",4,21))
(5.493164062500208e-7,(131,8,"10000011",3,17))
(5.493164062500208e-7,(262,9,"100000110",3,18))
(5.493164062500208e-7,(524,10,"1000001100",3,19))
(5.493164062500208e-7,(1048,11,"10000011000",3,20))
(1.3580322265624792e-6,(525,10,"1000001101",4,19))
(3.265380859374979e-6,(263,9,"100000111",4,18))
(7.080078124999979e-6,(33,6,"100001",2,15))
(7.080078124999979e-6,(66,7,"1000010",2,16))
(7.080078124999979e-6,(132,8,"10000100",2,17))
(8.17871093750002e-6,(65,7,"1000001",2,16))
(2.343750000000002e-5,(1,1,"1",1,10))
(2.343750000000002e-5,(2,2,"10",1,11))
(2.343750000000002e-5,(4,3,"100",1,12))
(2.343750000000002e-5,(8,4,"1000",1,13))
(2.343750000000002e-5,(16,5,"10000",1,14))
(2.343750000000002e-5,(32,6,"100000",1,15))
(3.759765624999998e-5,(17,5,"10001",2,14))
(9.863281249999998e-5,(9,4,"1001",2,13))
(2.2070312499999998e-4,(5,3,"101",2,12))
(4.6484375e-4,(3,2,"11",2,11))
(9.53125e-4,(1,1,"1",1,9))
(9.53125e-4,(2,2,"10",1,10))
... << RSDN@Home 1.2.0 alpha 4 rev. 1302>>