За управление на ИС на Silicon Labs Si5351 се нуждаех от метод на съкращение на дроби.
дробна част =
b / c,
където
b се изчислява, а
c е честотата на кварцовия резонатор (25000000, 27000000, +/- няклко kHz около това или всеобщо: за всяка стойност на честотата на кварцовия резонатор)
c е стойнността на делител и е от 1 до (максимално) 1048575.
-----
В библиотеки за управление на Si5351 виждам, че "мащабират" до "знаменател = 1048575. С такъв голям делител, последващите действия са във
float.
напр. при b = 2345600, c = 25000000:
b/c = ((b * 1048575) / c) / 1048575 = 98381 / 1048575
Това, че делителят да е почти винаги 1048575 "не ми дава покой" и "чувствам", че нещо може да се промени
-----
В първия случай при целочисленото делене на
c резултатът е често "закръглен" и "отрязан надолу":
Проверка:
2345600 / 25000000 = 0,093824
98381 / 1048575 = 0,0938235223994...
Следва наложително е използването на
float, а не ми се иска много това.
Все пак се нуждая от действието "съкращаване на дроб":
2345600 / 25000000 = 1466 / 15625 = 0,093824
