- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
[code=cpp]
#include <iostream>
#include <cmath>
void foo(double x, double y)
{
if (std::cos(x) != std::cos(y))
std::cout << "Я знаю точно невозможное возможно";
}
int main()
{
foo(1.0, 1.0);
return 0;
}
[/code]
govnokod.ru и нуб.
Ты думал для нас Америку открыть?
Тут язык не причем. Это проблема более капитальная на уровне чисел с плавающей точкой и в общем случае не разрешимая.
Первый блин комом.
То же самое на паскале: http://ideone.com/ES3XQ7хх
http://ideone.com/LPGxy9
БЕЛИИИИВ ИИН
АС ЛОНГ АС АЙМ БРЕЕФИН
ЗЕ ИС НОТ А ЛИМИТ ТУ ВААТ АЙ КЭЭН ДРИИИМ
КОЗ АЙ БЕЛИИВИИН МИИИ
А жаль...
Такие дела...
Пых смотрел, изменилось ли число, и прибавлял к нему маленькую дельту. Но вот незадача. Дельту он прибавлял, число подрезалось до 64битного, и совсем не менялось. Но сравнение шло 80битным, поэтому пыхе казалось, что число изменилось, и он занимался этим вечно...
> movl
> fstpl
Это щито за команды такие?
P.S. gcc с опцией -S выдает код именно в таком формате, а преобразовывать его в интеловский мне влом.
Это ещё ладно, тут всё понятно, а вот синтаксис гццшной асмовставки я там и не осилил, хотя чувствую, что задумка очень хорошая.
P.S. Сишный аналог, кстати, long double. Но он в разных реализациях компилятора разный. Он не обязан быть 80-битным.
Вот это реально сильное колдунство.
какой багор ))
но я бы ожидал в остальном одинаковово поведения
n4659 / [cstddef.syn]
> из <sth.h> — наборот: в глобальный неймспейс обязано, в std:: — как компилятор решит.
Спасибо. Не знал.
«Я все языки программирования изучаю по Говнокоду» ⓒ
https://govnokod.ru/27650#comment670193
З.Ы. Выше есть дизасм и его разбор.
В <math.h> синус и косинус определены как функции дабла, а в <cmath> перегрузка?
> ISO-код таджикского языка
Какое удобство идентификации )))
uk — ISO-код Соединённого Королевства, ISO-код украинского языка.
ソシッン
Ещё где-то Eukaryot приводил подобные штучки.
Вот нахуя так делать-то??? Нахуя одинаково делать разное и совсем непохожее блять?????
am — ISO-код Армении, ISO-код амхарского языка (Эфиопия).
ar — ISO-код Аргентины, ISO-код арабского языка.
af — ISO-код Афганистана, ISO-код африкаанса.
eu — ISO-код Евросоюза, ISO-код баскского языка (самоназвание euskara).
be — ISO-код Бельгии, ISO-код белорусского языка.
cy — ISO-код Кипра, ISO-код валийского языка (самоназвание Cymraeg).
ca — ISO-код Канады, ISO-код каталанского языка.
kg — ISO-код Киргизии, ISO-код языка конго.
La — ISO-код Лаоса, ISO-код латинского языка.
sr — ISO-код Суринама, ISO-код сербского языка.
si — ISO-код Словении, ISO-код сингальского языка (Шри-Ланка).
sl — ISO-код Сьерра-Леоне, ISO-код словенского языка.
tt — ISO-код Тринидада и Тобаго, ISO-код татарского языка.
tk — ISO-код Токелау, ISO-код туркменского языка.
ch — ISO-код Швейцарии, ISO-код языка чаморро (Полинезия).
sv — ISO-код Сальвадора, ISO-код шведского языка.
et — ISO-код Эфиопии, ISO-код эстонского языка.
Пока мы не смотрим на результаты косинуса - они разные: http://ideone.com/euqaru.
Если мы наблюдаем за одним из косинусов - глючит второй: http://ideone.com/rAEQym, http://ideone.com/sZqrPA
Но как только мы начинаем наблюдать за двумя косинусами сразу - баг пропадает: http://ideone.com/kmCqZK.
Видимо сказываются квантовые эффекты.
Сам посмотри:
http://www.gamedev.ru/files/images/66384_1303576956_screen.png
Потом один шутник создал пародию на юзера Webkill, заменив в юзернейме латинскую «e» на русскую «е». Потом кто-то создал похожую учётку с украинской «і» вместо латинской «i». И пошло-поехало...
Чтобы прекратить поток поддельных учёток, Страйкер решил оставить только латиницу, цифры и ещё пару символов.
–— Как найти площадь Ильича?
—– Чтобы найти площадь Ильича, нужно длину Ильича умножить на ширину Ильича.
The standard does not require an implementation to support extended or extendable precision formats.
Так что 80 битная интелоарифметика идет лесом.
употребляет вещества.
https://ideone.com/oq2JMX
https://ideone.com/kNTAxn
Гэцэцэ и шланг на x86_64 выделяют по 128 бит. Возможно, внутри они используют 80-битного питуха, выровненного до размера машинного слова.
Кресты в отличии от хаскеля не умеют в перегрузку операторов настолько хорошо
не воспроизводится.
Попробовал на clang - по дефолту он сгенерил сравнение через SSE регистры, тем самым подрезав оба аргумента до 64битных. Если же дать ему -march=i386, то он делает как гцц, но временную переменную оформляет не как 64 битный double, а как 80 битный, поэтому тоже не багует.
#косинус #синус #плавающий питух #float