Большинство этих 3Д движков написаны на плюсах и валятся на ровном месте от плюсопроблем. +-0.01% крушений этих движков на статистику не сильно повлияют, потому - там на это пофиг.vitaly_l писал(а):от незнания чего? Я делаю стандартные операции, которые есть в каждом, например, 3D движке. Например фигня едет со скоростью -0.1 по оси х. Едет себе едет и вдруг бах: -40265320.00000000Что я не так делаю?
fpc-3.0.0 - запилили баг в арифметику
Модератор: Модераторы
Лекс Айрин писал(а):vitaly_l писал(а):Что я не так делаю?
"Поздравляю! Вы прибыли в область сингулярности! Следующая остановка -- Преисподняя."
Тебе сказали, что делать. Вот когда придумают вещественные числа с фиксированной разрядностью, тогда часть ошибок подобного рода уйдет (кроме деления на ноль) . Но, скорее всего, этого не будет.
Ошибки не уйдут. В компьютере числа имеют ограниченное число разрядов, а у матиматиков числа трансцендентный тоесть с бесконечным числом знаков.
А по поводу придумают они давно придуманы.
Сквозняк писал(а):Какая АЭС реально от этого взорвалась?
Это будет в будущем. Я в этом времени, для того чтобы выяснить, почему они все взорвались в один день.
Ээээ... БОГ - позволяет гулять по временам
Сквозняк писал(а):на ноль делить нельзя математикам, а умным программистам - можно:
Кстати, почему Паскаль не возвращает, что-то типа бесконечности при делении на ноль и переполнении, типа: -inf и inf ?
Pavia писал(а):А по поводу придумают они давно придуманы.
Вот и я о том же. Почему это сразу не вставляют в процессоры?
vitaly_l писал(а):Вот и я о том же. Почему это сразу не вставляют в процессоры?
Я же говорю фиксированы числа подержанны тем же самым ошибкам. При длинных циклах у фиксированных чисел ошибки округления появятся раньше чем у чисел с плавающей точкой они продержатся чуть дольше.
Pavia писал(а):BLAS
А он есть для Lazarusa?
vitaly_l писал(а):Кстати, почему Паскаль не возвращает, что-то типа бесконечности при делении на ноль и переполнении, типа: -inf и inf ?
Вставляет. Но по умолчанию включено кидать исключение. А то что вы не попадали на него так это из-за ошибок округления, которые не дают поставить точно эксперимент.
Добавлено спустя 2 минуты 17 секунд:
vitaly_l писал(а):А он есть для Lazarusa?
Оригинал написан на фортране. Есть перевод на Си. На паскале нет. Но можете взять alglib там есть код на delphi там есть много алгоритмов от туда.
Добавлено спустя 1 минуту 52 секунды:
Сорь немного попутал имел в виду LAPACK (BLAS его часть)
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Pavia писал(а):Я же говорю фиксированы числа подержанны тем же самым ошибкам. При длинных циклах у фиксированных чисел ошибки округления появятся раньше чем у чисел с плавающей точкой они продержатся чуть дольше.
У чисел фиксированной точности проблем с округлением нет в принципе, как и у целых чисел. Не может получиться результат пол-копейки или полтора землекопа, если у числа нет лишних знаков после запятой. Но если промежуточный результат будет extended (сохраняется на стеке арифметики x86 в результате оптимизации), то всякое может получиться, поэтому так делать нельзя.
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 (десятичное)
И, вместо того, чтобы осознав, что есть место тонкостям и нюансам, которые должно изучить, они, эти альтернативно одарённые, бегают и вопиют, обвиняя окружающих в чём угодно, кроме обвинения себя в безграмотности!
Демонстрируя окружающим свою глубокую альтернативность.
Добавлено спустя 6 минут 43 секунды:
Хотя, если альтернативно одарённый воспылает овладеть основами работы с арифметикой с плавающей запятой, то вот ему в помощь - дыдыщ!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sign писал(а):И, вместо того, чтобы осознав, что есть место тонкостям и нюансам, которые должно изучить, они, эти альтернативно одарённые, бегают и вопиют, обвиняя окружающих в чём угодно, кроме обвинения себя в безграмотности!
Демонстрируя окружающим свою глубокую альтернативность.
Ну почему все программисты должны изощряться, если это должно решаться ещё на аппаратном уровне?
Как следствие, в статье, которую вы привели, каких-то лохов, которые не смогли организовать нормальную работу с двоичным кодом, почему-то, называют "китами науки". Китами их естественно называют, т.к. они работали на intel, а в intel как известно - лохов не бывает.
PS: в безграмотности себя признаю
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Виталий, в вашем возрасте пора бы уже осознать, что мир несовершенен и не все хотелки в нем осуществляются. 
Снег Север писал(а):в вашем возрасте пора бы уже осознать, что мир несовершенен и не все хотелки в нем осуществляются.
Всего-то несколько зиллиардов лет. Это даже и не возраст, по сравнению с возрастом вселенной.
И например если взять версию 1.7, там появились хотелки, о которых я даже и не мечтал - вывод: система активно развивается. А intel итд производители процессоров, - не могут сделать нормально, уже 100 лет скоро как! Как тут на них не побухтеть?
.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
https://ru.wikipedia.org/wiki/Число_с_фиксированной_запятой
Снег Север писал(а):https://ru.wikipedia.org/wiki/Число_с_фиксированной_запятой
Этот метод, я предложил ещё вначале топика. Но это не то, хотя безусловно решает поставленную задачу.
Я спрашивал именно про принудительное отсечение знаков после запятой директивой или силами FPC (и не функциями из модуля math).
Но судя по молчанию - такой директивы нет.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vitaly_l писал(а):Я спрашивал именно про принудительное отсечение знаков после запятой директивой или силами FPC (и не функциями из модуля math).
Это оксюморон -- вся более/менее мощная математика располагается в модуле math. В сам язык не встраивают такие вещи никогда.
Все типы описаны в языке и в паскале (в данном случае fpc) нет типа с фиксированной точкой. Так что принудительное отсечение можно организовать только используя символьную математику. (Т. е. числа будут храниться как строки).
Лекс Айрин писал(а): В сам язык не встраивают такие вещи никогда.
Вообще-то, в другие языки уже встраивают и это не только в С, т.к. прописано в ISO. Выше, Снег Север - давал гиперссылку на вики.
.
Последний раз редактировалось vitaly_l 20.03.2017 15:13:43, всего редактировалось 1 раз.
