Цитата
Я не понял почему вы вызывали для мантисы 5 type MyFloat_05 is new Float digits 1;
Я не для какой-то мантиссы делал специфическое значение
digits, я просто создал три новых типа, каждый из которых ограничивает вычисления определенной точностью. Первый - одной
десятичной цифрой после запятой, второй - двумя, третий, соответственно, тремя. Зачем? А затем, чтобы все эти 3 типа имели разное представление: разную длину мантиссы, в данном случае.
При желании можно сделать еще и длину экспоненты разной, но меня это в данном случае меньше интересовало. Потом проверил,
что для сконструированного типа возвращает атрибут 'Mantissa - это как раз и будет
число бит в мантиссе (как ты на 5 битах собрался достичь точности
10-5 для меня - загадка). Атрибут 'Epsilon возвращает ту самую точность, до достижения которой надо продолжать вычисления (здесь мне ничего вручную делать не надо -
в отличие от тебя, творящего непонятно что с числами - в случае Ады это забота компилятора. Если я сказал, что мне достаточно одной цифры после запятой, и 'Mantissa показала, что M=5, то все вычисления будут производиться именно так, как они и должны производиться
при пятибитной мантиссе).
Ну, а потом - все просто. Вычисляем очередной член ряда до тех пор, пока не доберемся до
незначащих значений (меньше эпсилон). Можно чуть-чуть поправить, не домножать знаменатель на N, а делить числитель на него. От этого ничего не изменится, разве что будет работать при б
ольших значениях N.
Цитата
Собственно,вопросы которыми я задаюсь следующие.Почему фигня начинается при мантисе 19,а не после 16
Собственно, вопрос: а почему фигня должна начинаться при длине мантиссы = 16? И с какой стати ты решил, что те результаты, которые ты получил - фигня? Я, например, вообще ничего не вижу на твоем скриншоте. Выведи
хотя бы то же самое, что выводил я: длина мантиссы, последний член ряда, сумма ряда. Вот тогда и посмотрим, что у тебя творится...
Цитата
Кстати вы уж извините,но я руками посчитал несколько первых членов ряда,и с вашими цифрами они никак не совпадают.
Вы у ж меня тоже извините, но я посчитал сумму ряда (оно же - значение x(e
x - 1)) при заданном X. Что характерно - сумма (при использовании точных типов) совпадает идеально. Как может быть, что член ряда не совпадает, а их сумма - таки да? И... Что именно не совпадает?
Первый: (-2.3)
2 / 1! = 5.29 (у меня 5.3E+00)
Второй: (-2.3)
3 / 2! = -6.0835 (у меня -6.1E+00)
Дальше продолжать? С учетом точности представления (не забыл? 5 бит мантиссы - это 1 десятичная цифра после запятой) как раз все совпадает...
В общем, убеждаюсь в очередной раз: тебе лучше не отвечать, ибо я ж еще и виноват в том, что ты не умеешь читать и считать.

Удачи тебе в дальнейших обвинениях других...
Вот вычисления при длине мантиссы 15, 18, 21, 25, 28 и 31 бит (Показать/Скрыть)
Mantissa : 15
Epsilon : 6.10352E-05
nxt = 5.290E+00 n! = 1
nxt = -6.083E+00 n! = 2
nxt = 4.664E+00 n! = 6
nxt = -2.682E+00 n! = 24
nxt = 1.234E+00 n! = 120
nxt = -4.729E-01 n! = 720
nxt = 1.554E-01 n! = 5040
nxt = -4.467E-02 n! = 40320
nxt = 1.142E-02 n! = 362880
nxt = -2.626E-03 n! = 3628800
nxt = 5.490E-04 n! = 39916800
nxt = -1.052E-04 n! = 479001600
nxt = 1.862E-05 n! = 6227020800
Last item : -1.052E-04
S : 2.069E+00
N : 13
Relative error : 5.08490E-05
Mantissa : 18
Epsilon : 7.62939E-06
nxt = 5.2900E+00 n! = 1
nxt = -6.0835E+00 n! = 2
nxt = 4.6640E+00 n! = 6
nxt = -2.6818E+00 n! = 24
nxt = 1.2336E+00 n! = 120
nxt = -4.7289E-01 n! = 720
nxt = 1.5538E-01 n! = 5040
nxt = -4.4671E-02 n! = 40320
nxt = 1.1416E-02 n! = 362880
nxt = -2.6257E-03 n! = 3628800
nxt = 5.4901E-04 n! = 39916800
nxt = -1.0523E-04 n! = 479001600
nxt = 1.8617E-05 n! = 6227020800
nxt = -3.0585E-06 n! = 87178291200
Last item : 1.8617E-05
S : 2.0694E+00
N : 14
Relative error : 8.99629E-06
Mantissa : 21
Epsilon : 9.53674E-07
nxt = 5.29000E+00 n! = 1
nxt = -6.08350E+00 n! = 2
nxt = 4.66402E+00 n! = 6
nxt = -2.68181E+00 n! = 24
nxt = 1.23363E+00 n! = 120
nxt = -4.72892E-01 n! = 720
nxt = 1.55379E-01 n! = 5040
nxt = -4.46714E-02 n! = 40320
nxt = 1.14160E-02 n! = 362880
nxt = -2.62569E-03 n! = 3628800
nxt = 5.49007E-04 n! = 39916800
nxt = -1.05226E-04 n! = 479001600
nxt = 1.86170E-05 n! = 6227020800
nxt = -3.05850E-06 n! = 87178291200
nxt = 4.68971E-07 n! = 1307674368000
Last item : -3.05850E-06
S : 2.06940E+00
N : 15
Relative error : 1.47796E-06
Mantissa : 25
Epsilon : 5.96046E-08
nxt = 5.290000E+00 n! = 1
nxt = -6.083500E+00 n! = 2
nxt = 4.664017E+00 n! = 6
nxt = -2.681810E+00 n! = 24
nxt = 1.233632E+00 n! = 120
nxt = -4.728924E-01 n! = 720
nxt = 1.553789E-01 n! = 5040
nxt = -4.467144E-02 n! = 40320
nxt = 1.141604E-02 n! = 362880
nxt = -2.625688E-03 n! = 3628800
nxt = 5.490075E-04 n! = 39916800
nxt = -1.052264E-04 n! = 479001600
nxt = 1.861699E-05 n! = 6227020800
nxt = -3.058505E-06 n! = 87178291200
nxt = 4.689708E-07 n! = 1307674368000
nxt = -6.741455E-08 n! = 20922789888000
nxt = 9.120792E-09 n! = 355687428096000
Last item : -6.741455E-08
S : 2.069405E+00
N : 17
Relative error : 3.25768E-08
Mantissa : 28
Epsilon : 7.45058E-09
nxt = 5.2900000E+00 n! = 1
nxt = -6.0835000E+00 n! = 2
nxt = 4.6640167E+00 n! = 6
nxt = -2.6818096E+00 n! = 24
nxt = 1.2336324E+00 n! = 120
nxt = -4.7289242E-01 n! = 720
nxt = 1.5537894E-01 n! = 5040
nxt = -4.4671445E-02 n! = 40320
nxt = 1.1416036E-02 n! = 362880
nxt = -2.6256883E-03 n! = 3628800
nxt = 5.4900755E-04 n! = 39916800
nxt = -1.0522645E-04 n! = 479001600
nxt = 1.8616987E-05 n! = 6227020800
nxt = -3.0585050E-06 n! = 87178291200
nxt = 4.6897076E-07 n! = 1307674368000
nxt = -6.7414547E-08 n! = 20922789888000
nxt = 9.1207916E-09 n! = 355687428096000
nxt = -1.1654345E-09 n! = 6402373705728000
Last item : 9.1207916E-09
S : 2.0694047E+00
N : 18
Relative error : 4.40745E-09
Mantissa : 31
Epsilon : 9.31323E-10
nxt = 5.29000000E+00 n! = 1
nxt = -6.08350000E+00 n! = 2
nxt = 4.66401667E+00 n! = 6
nxt = -2.68180958E+00 n! = 24
nxt = 1.23363241E+00 n! = 120
nxt = -4.72892423E-01 n! = 720
nxt = 1.55378939E-01 n! = 5040
nxt = -4.46714450E-02 n! = 40320
nxt = 1.14160359E-02 n! = 362880
nxt = -2.62568827E-03 n! = 3628800
nxt = 5.49007546E-04 n! = 39916800
nxt = -1.05226446E-04 n! = 479001600
nxt = 1.86169867E-05 n! = 6227020800
nxt = -3.05850495E-06 n! = 87178291200
nxt = 4.68970760E-07 n! = 1307674368000
nxt = -6.74145467E-08 n! = 20922789888000
nxt = 9.12079161E-09 n! = 355687428096000
nxt = -1.16543448E-09 n! = 6402373705728000
nxt = 1.41078911E-10 n! = 121645100408832000
Last item : -1.16543448E-09
S : 2.06940466E+00
N : 19
Relative error : 5.63174E-10
может быть пригодится...