Vsevolod
Вообще, так любимая на собеседованиях задача про сумму дробных чисел с минимальной ошибкой не имеет полиномиального алгоритма
Vsevolod
(потому что все забывают про отрицательные числа)
Anonymous
В double точность теряется вот на этом моменте. double a = 0.3; Всё, мы уже потеряли точность.
Vsevolod
Только потому что он 2 based
Vsevolod
Был бы 10 based, нифига бы не потеряли
Anonymous
Потеряли бы на double a = 1 / 7;
Vsevolod
Тут и fixed point не поможет
Anonymous
А вот rational спасёт.
Anonymous
Энивей, лично у меня процессор двоичный.
Anonymous
Если бы у бабушки...
Vsevolod
В rational не представить pi
Anonymous
С какой точностью тебе нужен pi?
Anonymous
22/7
Anonymous
179/57
Anonymous
1726375805/549522486 Этого хватит для любых практических нужд
Anonymous
2141273049928/681588380811, если ты принципиальный
Vsevolod
Кроме тригонометрии - или делать свою тригонометрию, с числителями и знаменателями
Anonymous
Вот тебе число пи.
Anonymous
1726375805/549522486
Anonymous
Но вообще тригонометрия довольно редко мне нужна. Ради неё можно поконвертить туда обратно.
Anonymous
2141273049928/681588380811, если ты принципиальный
Кстати, вот этот вариант точнее, чем влезает в double
Anonymous
В rational не представить pi
Так что это утверждение неверно. Тогда уж в double не представить pi.
Anonymous
Нет, конечно.
Anonymous
Но в rational можно точнее.
Dmitrii
В какой версии Boost'а io_service переименовали в io_context? 1.66?
kitsu
gtest поддерживает substring ассерты или regexp? Понятно, что можно через ASSERT_TRUE, но хочется что-нибудь более информативное в логах
Alexander "SonnySlave"
Просто правильно называешь тест и всё.
Berkus
я думаю он хочет в s.substr(1,2) видеть что там на самом деле
kitsu
А чего хочется?
Есть некий билдер, который при невалидности параметров выкидывает ошибки (user-friendly) Большинство и так норм по STREQ проверяются, но вот есть runtime инфой, вроде Your time is too old <time>
Alexander "SonnySlave"
А как он возвращает ошибки?
Alexander "SonnySlave"
Можешь сам ручками вывод написать
Berkus
> Your time is too old твое время слишком старое?
kitsu
А как он возвращает ошибки?
да просто полем в классе
kitsu
да просто полем в классе
Ну т.е есть билдер с набором методов set/add_<something> И есть аггрегатор ошибок, типа std::vector<std::string>
kitsu
можно конечно, но хочется просто вызвать assert_superassert
Berkus
можно конечно, но хочется просто вызвать assert_superassert
как у тебя сейчас выглядит проверка то?
Berkus
может ты чот не то делаешь
kitsu
ой, там много кода ладно уж, пусть будет ASSERT_TRUE
Stanislav
https://blogs.msdn.microsoft.com/vcblog/2018/01/15/spectre-mitigations-in-msvc/
Александр
Знает кто, как решить мета-задачку? Дано: T. void foo(int, float) void foo(bool, struct A) ... Найти: U такое, что существует foo(T, U)
Александр
Навеяно: есть много функций, которые вместо U foo(T) делают void foo(T, U). Нужно делать вывод типов. В первом случае решается decltype(foo(std::declval<T>())), а вот во втором - хз
Alexander "SonnySlave"
Свежий Conan 1.0.2: http://docs.conan.io/en/latest/changelog.html
Alexander "SonnySlave"
Как пирожки лепят.
да там только фиксы минорные
Anonymous
https://github.com/telegramdesktop/tdesktop/issues/2580#issuecomment-358009413 Давать латентную пощёчину девелоперам телеги — так в моём стиле...
Ignat
лол
Anatoly
Знает кто, как решить мета-задачку? Дано: T. void foo(int, float) void foo(bool, struct A) ... Найти: U такое, что существует foo(T, U)
#include <iostream> #include <utility> #include <typeinfo> struct A {}; void foo(int, float) {} void foo(bool, struct A) {} template<typename T, typename U> U detect_U(void (*)(T, U)); template<typename T> void detect_for(T) { auto&& type_of_U = typeid(decltype(detect_U<T>(&foo))); std::cout << type_of_U.name() << std::endl; } int main() { detect_for(10); detect_for(true); return 0; }
Vladislav
вот прям вообще-вообще никогда, даже если постоянно добавлять/удалять в середину?
для этого нужно знать куда вставлять. Можно конечно где-то еще хранить итераторы и вставлять по ним, но это очень узкий юз-кейс. Если кто-то вдруг сталкивался с такой задачей на практике, было бы интересно посмотреть
Anonymous
https://github.com/procxx/kepka/pull/67
Anonymous
Да я вам руки поотрываю за такие ПР
Anonymous
Соржу ваше бьющееся сердце и сожгу ваше тело
Nikita
Да я вам руки поотрываю за такие ПР
Этот pr лучше https://github.com/emacs-mirror/emacs/pull/6
Дмитрий ⬡
Этот pr лучше https://github.com/emacs-mirror/emacs/pull/6
Да лааадно, это хотя бы тупо поржать. Хотя всё равно слишком много шутничков.
Stanislav
https://github.com/procxx/kepka/pull/67
обновил комент для pr
Stanislav
Anonymous
всё, умничка
Дмитрий ⬡
Чуваки, а в чём суть форка?)
Matwey
Во всем хочу дойти до самой сути
Matwey
В работе, в поисках, в душевной смуте
Дмитрий ⬡
Это ж всегда самое интересное в форке — ну форкнулись, а от апстрима дифф руками читать это уныло.
Stanislav
Чуваки, а в чём суть форка?)
нууу не знаю, лень поглядеть ишью и коммиты?
Дмитрий ⬡
Thanks!
Alexander "SonnySlave"
Появилась полная программа C++Russia2018 http://cppconf.ru/
Berkus
Про UB тут хорошо написали For example, if any C code stores through a bad pointer, the effects are undefined, which is to say, the language specification then allows anything to happen. Corruption potentially spreads through the whole program instantly, totally, and undetectably.
Evgenii
го патч к clang который рмрфит при ub
Berkus
го патч к clang который рмрфит при ub
уже есть если ты пропустил
Alexander "SonnySlave"
так надо чтобы при всех UB
Vladislav
а как их детектить-то?)
Berkus
го патч к clang который рмрфит при ub
https://kristerw.blogspot.com.ee/2017/09/why-undefined-behavior-may-call-never.html