fpc-3.0.0 - запилили баг в арифметику

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Сквозняк » 18.03.2017 19:20:51

vitaly_l писал(а):от незнания чего? Я делаю стандартные операции, которые есть в каждом, например, 3D движке. Например фигня едет со скоростью -0.1 по оси х. Едет себе едет и вдруг бах: -40265320.00000000Что я не так делаю?
Большинство этих 3Д движков написаны на плюсах и валятся на ровном месте от плюсопроблем. +-0.01% крушений этих движков на статистику не сильно повлияют, потому - там на это пофиг.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Pavia » 18.03.2017 19:26:49

Лекс Айрин писал(а):
vitaly_l писал(а):Что я не так делаю?


"Поздравляю! Вы прибыли в область сингулярности! Следующая остановка -- Преисподняя."

Тебе сказали, что делать. Вот когда придумают вещественные числа с фиксированной разрядностью, тогда часть ошибок подобного рода уйдет (кроме деления на ноль) . Но, скорее всего, этого не будет.

Ошибки не уйдут. В компьютере числа имеют ограниченное число разрядов, а у матиматиков числа трансцендентный тоесть с бесконечным числом знаков.

А по поводу придумают они давно придуманы.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 18.03.2017 19:29:51

Сквозняк писал(а):Какая АЭС реально от этого взорвалась?

Это будет в будущем. Я в этом времени, для того чтобы выяснить, почему они все взорвались в один день. :roll:
Ээээ... БОГ - позволяет гулять по временам :wink: . Но Вы безусловно решите, что это банальная фантастика :twisted: .
Сквозняк писал(а):на ноль делить нельзя математикам, а умным программистам - можно:

Кстати, почему Паскаль не возвращает, что-то типа бесконечности при делении на ноль и переполнении, типа: -inf и inf ?
Pavia писал(а):А по поводу придумают они давно придуманы.

Вот и я о том же. Почему это сразу не вставляют в процессоры?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Pavia » 18.03.2017 19:34:44

vitaly_l писал(а):Вот и я о том же. Почему это сразу не вставляют в процессоры?

Я же говорю фиксированы числа подержанны тем же самым ошибкам. При длинных циклах у фиксированных чисел ошибки округления появятся раньше чем у чисел с плавающей точкой они продержатся чуть дольше.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 18.03.2017 19:36:17

Pavia писал(а):BLAS

А он есть для Lazarusa?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Pavia » 18.03.2017 19:37:31

vitaly_l писал(а):Кстати, почему Паскаль не возвращает, что-то типа бесконечности при делении на ноль и переполнении, типа: -inf и inf ?

Вставляет. Но по умолчанию включено кидать исключение. А то что вы не попадали на него так это из-за ошибок округления, которые не дают поставить точно эксперимент.

Добавлено спустя 2 минуты 17 секунд:
vitaly_l писал(а):А он есть для Lazarusa?

Оригинал написан на фортране. Есть перевод на Си. На паскале нет. Но можете взять alglib там есть код на delphi там есть много алгоритмов от туда.

Добавлено спустя 1 минуту 52 секунды:
Сорь немного попутал имел в виду LAPACK (BLAS его часть)
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение serbod » 19.03.2017 01:06:32

Pavia писал(а):Я же говорю фиксированы числа подержанны тем же самым ошибкам. При длинных циклах у фиксированных чисел ошибки округления появятся раньше чем у чисел с плавающей точкой они продержатся чуть дольше.

У чисел фиксированной точности проблем с округлением нет в принципе, как и у целых чисел. Не может получиться результат пол-копейки или полтора землекопа, если у числа нет лишних знаков после запятой. Но если промежуточный результат будет extended (сохраняется на стеке арифметики x86 в результате оптимизации), то всякое может получиться, поэтому так делать нельзя.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение sign » 20.03.2017 06:55:33

vitaly_l писал(а):
Код: Выделить всё
s:string;
R,RR: Single;
I:Integer;
begin     
    R:=1;
    RR := 0.1;
    for I:=1 to 10 do R:=R-RR;

    RR := 3;
    RR := RR / R; // вместо того чтобы наорать на меня, мол на ноль делить нельзя, она во чего делает:

    writestr(s,R:16:16);
    writeln('R = ' +s);
    writestr(s,RR:16:16);
    writeln('RR = ' +s);
readln;
end.     


Ну что тут поделать. Альтернативно одарённым компьютер лучше использовать для игр.
Альтернативно одарённые не хотят знать, что 0.1 в десятичной системе счисления не имеет точного представления в двоичной. Они хотят, чтобы было так, как они хотят.
Поэтому, зачем им изучать системы счисления и тонкости преобразований.
0.1 (двоичное) <> 0.1 (десятичное)

1.png


И, вместо того, чтобы осознав, что есть место тонкостям и нюансам, которые должно изучить, они, эти альтернативно одарённые, бегают и вопиют, обвиняя окружающих в чём угодно, кроме обвинения себя в безграмотности!
Демонстрируя окружающим свою глубокую альтернативность.

Добавлено спустя 6 минут 43 секунды:
Хотя, если альтернативно одарённый воспылает овладеть основами работы с арифметикой с плавающей запятой, то вот ему в помощь - дыдыщ!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 20.03.2017 09:06:32

sign писал(а):И, вместо того, чтобы осознав, что есть место тонкостям и нюансам, которые должно изучить, они, эти альтернативно одарённые, бегают и вопиют, обвиняя окружающих в чём угодно, кроме обвинения себя в безграмотности!
Демонстрируя окружающим свою глубокую альтернативность.

Ну почему все программисты должны изощряться, если это должно решаться ещё на аппаратном уровне?

Как следствие, в статье, которую вы привели, каких-то лохов, которые не смогли организовать нормальную работу с двоичным кодом, почему-то, называют "китами науки". Китами их естественно называют, т.к. они работали на intel, а в intel как известно - лохов не бывает.

PS: в безграмотности себя признаю :cry: , т.к. у меня всего 3 класса образования и те прогуливал (к счастью), но я почему-то сразу понял как это можно нивелировать и даже элиминировать. :roll: И поэтому возмущён, что это не делается на аппаратном уровне.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Снег Север » 20.03.2017 10:43:53

Виталий, в вашем возрасте пора бы уже осознать, что мир несовершенен и не все хотелки в нем осуществляются. :wink:
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 20.03.2017 11:30:06

Снег Север писал(а):в вашем возрасте пора бы уже осознать, что мир несовершенен и не все хотелки в нем осуществляются.

Всего-то несколько зиллиардов лет. Это даже и не возраст, по сравнению с возрастом вселенной.

И например если взять версию 1.7, там появились хотелки, о которых я даже и не мечтал - вывод: система активно развивается. А intel итд производители процессоров, - не могут сделать нормально, уже 100 лет скоро как! Как тут на них не побухтеть?

:arrow: :?: А можно ли дать компилятору директиву, чтобы ограничить количество знаков после запятой, у всех: single и double? В смысле задать жёсткое ограничение, для каждого типа своё, чтобы отбраковать мусор?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Снег Север » 20.03.2017 13:17:38

https://ru.wikipedia.org/wiki/Число_с_фиксированной_запятой
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 20.03.2017 13:31:50

Снег Север писал(а):https://ru.wikipedia.org/wiki/Число_с_фиксированной_запятой

Этот метод, я предложил ещё вначале топика. Но это не то, хотя безусловно решает поставленную задачу.

Я спрашивал именно про принудительное отсечение знаков после запятой директивой или силами FPC (и не функциями из модуля math).
Но судя по молчанию - такой директивы нет.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение Лекс Айрин » 20.03.2017 14:25:11

vitaly_l писал(а):Я спрашивал именно про принудительное отсечение знаков после запятой директивой или силами FPC (и не функциями из модуля math).


Это оксюморон -- вся более/менее мощная математика располагается в модуле math. В сам язык не встраивают такие вещи никогда.
Все типы описаны в языке и в паскале (в данном случае fpc) нет типа с фиксированной точкой. Так что принудительное отсечение можно организовать только используя символьную математику. (Т. е. числа будут храниться как строки).
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: fpc-3.0.0 - запилили баг в арифметику

Сообщение vitaly_l » 20.03.2017 15:00:46

Лекс Айрин писал(а): В сам язык не встраивают такие вещи никогда.

Вообще-то, в другие языки уже встраивают и это не только в С, т.к. прописано в ISO. Выше, Снег Север - давал гиперссылку на вики.

.
Последний раз редактировалось vitaly_l 20.03.2017 16:13:43, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

Рейтинг@Mail.ru