Страница 1 из 1

STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 15:51:14
surok01
Есть задача посчитать отношение 2х 32-разряднных беззнаковых чисел (первое произвольное до 10^8, второе всегда порядка 10^7) и вывести результат на дисплей с точностью не менее 8 знаков. Например:
N1 = 12312312
N2 = 10000123
Res = 1,2312161
Как это правильно сделать в IAR STM8? Время выполнения операции и использование ресурсов не важно.
Про простое деление оператором "/" в доке на IAR (DSTM8-3) сказано "The precision of the float operators (+, -, *, and /) is approximately 7 decimal digits.", т.е. нужная точность не гарантируется.

Re: STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 16:29:45
Martian
https://blog.segger.com/algorithms-for- ... ns-method/ там цикл статей, думаю, если их прочесть, то можно создать подходящее
ну и вообще https://en.wikipedia.org/wiki/Division_algorithm

Re: STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 17:01:21
КРАМ
Присоединяюсь к предыдущему оратору. Написать собственное деление 64 разрядного формата мантиссы не составит труда. С порядками, надеюсь, вы справитесь очень легко - там простая арифметика плюс/минус.

Re: STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 17:32:34
veso74
Пример отсюда: How can I divide two longs in an accurate double?
Установил Ваши значения и до 18 знаков после запятой, как из примера. Ниже приведен счет и с калькулятором.

Изображение

Re: STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 18:26:34
linkov1959
veso74, я для частотомера использовал double для результата деления, разве там 8 знаков не будет?

Re: STM8 -- посчитать отношение 2х 32-битных чисел

Добавлено: Чт май 02, 2024 18:31:57
Martian
увы, но (по крайней мере для IAR STM8) double и float одно и тоже. Но вообще да, я бы в любом случае указывал тип double, чтобы подчеркнуть, что требуется точность.