Alexander "SonnySlave"
А зачем вам котангенс?
пишу свою программу для решения всякого математического говна. Распознаю изображение, превращаю это в текстовую форму, потом паршу и выполняю.
Alexander "SonnySlave"
да, такое есть.
Alexander "SonnySlave"
и да, пишу сам, а не юзаю всякие мощные бекенды. и для этого хочу хотя бы такие базовые вещи в комплекте
Matwey
ну ладно
Alexander "SonnySlave"
я бы был счастлив, если бы GNU GMP был в cmath. но пока что это не так 😞
Matwey
большое подозрение, что тангенс реально вычисляется дробно-линейной апроксимацией, как и половина всего в это мире, и ты сэкономишь тольно reciprocal.
Igor
Если там кто-то заведёт речь про "Слишком специализировано, не нужно", то не верь им - это ложь
что там в последних стандартах добавили в стд, дзета-функцию римана?
Vladislav
да и зачем?
Alexander "SonnySlave"
без шансов
естессно
Berkus
чтобы не выдумывать инты всё большей разрядности
Vladislav
инты все большей разрядности полезны там, где они есть в железе
Vladislav
gmp - несколько другое
Alexander "SonnySlave"
будет вам инты нужной длины 😊
Alexander "SonnySlave"
а как только они появятся - можно будет гадить компиляторописателям с запросами оптимизации этой штуки
Alexander "SonnySlave"
Для любителей посмеяться: https://bugs.llvm.org/show_bug.cgi?id=35597
Vladislav
Alexander "SonnySlave"
А в gcc недочёты нашлись?
да, нашлись, но намного меньше
Alexander "SonnySlave"
в msvc я не репортил, ибо пока что рано. в ICC репортить не буду, потому что платный и не хочу
🐙 Antony
Кинь ссылочек на Gcc недочёты
Alexander "SonnySlave"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83354 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83351 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83350 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83349 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83348
🐙 Antony
Я сейчас осознал, что на первом моём примере из Нижнего Новгорода tail call оптимизация в GCC не сработала... завтра тикет заведу
Alexey
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83354 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83351 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83350 Есть куча разных тригонометрических формул, да и многочлены можно по-разному посокращать. Почему частные какие-то случаи должны оптимизироваться?
Alexey
Тогда можно дойти до того, что в компиляторе будет какой-то аналог вольфрамальфа, который будет сокращать и оптимизировать выражения😕
🐙 Antony
Он уже там есть :)
Sergey
в плюсах сам программист должен оптимизировать
Alexey
ты не поверишь....
А можно где-нибудь про это почитать?
Alexander "SonnySlave"
Причина: вброс абсолютно вредной информации
Alexander "SonnySlave"
А можно где-нибудь про это почитать?
да, конечно: https://github.com/gcc-mirror/gcc/blob/07b69d3f1cd3dd8ebb0af1fbff95914daee477d2/gcc/match.pd
Sergey
ну и компиляция будет у тебя ещё больше для больших проектов
Alexander "SonnySlave"
с таким можно к любому аппелировать - ввели новую фичу - компиляция стала дольше
Sergey
нет
Sergey
ты пишешь частные случаи
Alexander "SonnySlave"
хорошо, у тебя есть generic решение?
Sergey
моё первое утверждение которое ты забанил, вот что я хотел донести
Sergey
но наверное ты эксперт, а я просто пишу в продакшен
Alexander "SonnySlave"
моё первое утверждение которое ты забанил, вот что я хотел донести
1) Я не банил. 2) Нет, оптимизировать должен компилятор. А то, что он не всегда может это делать - это его недоработка. Если он обладает информацией для оптимизации и не оптимизирует - его проблемы, которые надо решать 3) Давай начнём меряться письками, кто и сколько написал в прод.
Alexander "SonnySlave"
я абсолютно не понимаю, почему оптимизациями ДОЛЖЕН заниматься программист
Sergey
ты сейчас чётко выделил, ключевой фактор нашего недопонимания)
Sergey
я просто в контексте своей задачи думаю, что умнее машины
Alexander "SonnySlave"
ну ты же понимаешь, какие примерно оптимизации проводит компилятор?
Sergey
да, но в контексте формул это странно
Alexander "SonnySlave"
я просто в контексте своей задачи думаю, что умнее машины
простой вопрос: что быстрее: unsigned foo(unsigned x) { return (x<<4) - (x<<2) - (x<<1); } vs unsigned foo(unsigned x) { return x*10; } ?
Alexander "SonnySlave"
да, но в контексте формул это странно
формулы генерируются в код. Как он скомпилируется - это уже дело компилятора. я всего лишь хочу, чтобы это работало правильно и как можно быстрее. Ты же не задумываешь о том, что синус и косинус нынче вместе считаются
Sergey
в вакууме ты прав, но как то реальность далека от желаемого
Alexander "SonnySlave"
Berkus
кто мешает ситуацию улучшить?
умение писать в прод, очевидно
Nikita
я абсолютно не понимаю, почему оптимизациями ДОЛЖЕН заниматься программист
та же история, что с компиляцией vs jit: результат компиляции должен хорошо работать в общем случае, но под конкретное распределение заточиться не может
Alexander "SonnySlave"
#supapro
Nikita
распределение == железо?
распределение == распределение вероятностей по заходу в те или иные ветки
Nikita
а, ну для этого PGO и придумали
или jit для этого же придумали
Alexander "SonnySlave"
к сожалению в рантайме мы не можем собирать такую инфу 😞
Alexander "SonnySlave"
рантайме == во время выполнения нашего бинаря
Nikita
и тут уже приходит экспертиза программиста — что куда нужно оптимизировать
Alexander "SonnySlave"
и тут уже приходит экспертиза программиста — что куда нужно оптимизировать
ну, тот же бранч предкшен руками выставлять - такое себе, на самом деле
Artem
Господа, а среди нас есть люди связанные с системой образования?
Evgenii
тысячи их
Berkus
или jit для этого же придумали
джит не для этого, вроде как
Artem
студенты)
А люди с другой стороны баррикады ?😂
Berkus
с другой стороны баррикады борланд с++ билдер и турбо си
Artem
Вот именно об этом я и хотел спросить
Artem
Что движет ими? Министерство требует такого или что?
Alexander "SonnySlave"
Так, это или я туплю, или компиляторы сосут? https://godbolt.org/g/CE7ACv
Evgenii
есть же всякие шады и тп
Artem
Сейчас мы изучаем библиотеку graphics.h прости господи