Alexander "SonnySlave"
а не заниматься такими заменами, пусть и простыми
Evgenii
Evgenii
что на бумажке люди не пишут котангенс
Evgenii
ну точнее
Evgenii
в России он используется, а вот здесь например нет вообще
Evgenii
я не видел котангенс кроме вольфрама нигде уже давно
Anonymous
Anonymous
Alexander "SonnySlave"
ахахах, оптимизаторы хороши!
https://godbolt.org/g/eNRjqj
Vladislav
такое очень давно умели, казалось бы
Alexander "SonnySlave"
и он из-за этого фейлит. Чувствуется, как там всё писано
Ioann_
Согласен - что за разработчики там только сидят ...
Vladislav
а, в этом смысле)
Vladislav
лол, да
Vladislav
я только на gcc посмотрел что-то
Alexander "SonnySlave"
ладно msvc - ему простительно
Alexander "SonnySlave"
но вот clang и icc - плоховато вышло как-то у них
Vladislav
хех, а в даблах наоборот у шланга самый адекватный результат https://godbolt.org/g/eLq9kn
Alexander "SonnySlave"
Alexander "SonnySlave"
мне уже надоело это делать сегодня
Ioann_
Вот только посмотрите на код Студии
Ioann_
Что за WTF
Ioann_
И вы еще говорите, что руками писать вставки - не ок
Ioann_
Ну как так то братцы ?
Ioann_
По-моему там просто еще код биткоин майнера добавляется
Alexander "SonnySlave"
у них в последнем апдейте новый оптимизатор появился
Alexander "SonnySlave"
так что теперь не всё так плохо у них
Alexander "SonnySlave"
но всё равно - это пиздец
Ioann_
А на годболте старый стоит оптимайзер ?
Alexander "SonnySlave"
Alexander "SonnySlave"
инфа сотка
Vladislav
а /Ox - правильная настройка?
Vladislav
я не умею в флаги msvc
Vladislav
с /O3 совсем уж ересь выдает
Vladislav
tv65 = 0
$T1 = 8
_Left$ = 32
_Right$ = 40
std::max<double>, COMDAT PROC
mov QWORD PTR [rsp+16], rdx
mov QWORD PTR [rsp+8], rcx
sub rsp, 24
mov rax, QWORD PTR _Right$[rsp]
mov rcx, QWORD PTR _Left$[rsp]
movsd xmm0, QWORD PTR [rax]
comisd xmm0, QWORD PTR [rcx]
jbe SHORT $LN3@max
mov rax, QWORD PTR _Right$[rsp]
mov QWORD PTR tv65[rsp], rax
jmp SHORT $LN4@max
$LN3@max:
mov rax, QWORD PTR _Left$[rsp]
mov QWORD PTR tv65[rsp], rax
$LN4@max:
mov rax, QWORD PTR tv65[rsp]
mov QWORD PTR $T1[rsp], rax
mov rax, QWORD PTR $T1[rsp]
add rsp, 24
ret 0
std::max<double> ENDP
tv65 = 32
a$ = 64
b$ = 72
test PROC
movsd QWORD PTR [rsp+16], xmm1
movsd QWORD PTR [rsp+8], xmm0
sub rsp, 56 ; 00000038H
lea rdx, QWORD PTR a$[rsp]
lea rcx, QWORD PTR b$[rsp]
call std::max<double>
mov QWORD PTR tv65[rsp], rax
lea rdx, QWORD PTR b$[rsp]
lea rcx, QWORD PTR a$[rsp]
call std::max<double>
mov rcx, QWORD PTR tv65[rsp]
mov rdx, rcx
mov rcx, rax
call std::max<double>
movsd xmm0, QWORD PTR [rax]
add rsp, 56 ; 00000038H
ret 0
test ENDP
Ioann_
Вроде верная. Кек.
Vladislav
Nikita
Vladislav
Vladislav
а march ему никак не указать?
Vladislav
интересно что gcc выдает чуть более адекватный код если убрать -ffast-math
Vladislav
а шланг наоборот ><
Alexander "SonnySlave"
Vladislav
Vladislav
или fast-math ему включить
Alexander "SonnySlave"
Alexander "SonnySlave"
Alexander "SonnySlave"
ахахах, вы только посмотрите на msvc
Alexander "SonnySlave"
https://godbolt.org/g/8PV96o
Vladislav
ᅟ
Vladislav
Ioann_
А что не так ?
Ioann_
Ioann_
ахахах, вы только посмотрите на msvc
Ioann_
https://godbolt.org/g/8PV96o
Ioann_
Ioann_
На сколько я вижу, сверху код инстанцирования шаблонов макс, мин, а вот снизу - да, 4 строчки кода который бегает по циклу
Ioann_
до константы, но макс мин не вызывает
Ioann_
так что, не все так плачевно :)
Ioann_
Ну, блин, там свои проблемы есть. В х64 нельзя в вставки. А в х32 можно.
Ioann_
Только отдельный АСМ собрать и слинковать кек. Ну слава богу MASM64 есть в комплекте
Ioann_
Правильно делать так, берем GCC, ICC - генерируем ASM, открываем MSVC - делаем ASM вставку, того из компиляторов, что дал лучшие результаты, в код. PROFIT ???
Alexander "SonnySlave"
Alexander "SonnySlave"
применение ровно такое же, как и у тангенса, это очевидно. Просто это настолько очевидная вещь, что до меня это наверняка обсуждали и не раз.
Ты с комитета, тебе виднее
🐙 Antony
Alexander "SonnySlave"
смотри в Depends on
🐙 Antony
Alexander "SonnySlave"
Alexander "SonnySlave"
Alexander "SonnySlave"
Если там кто-то заведёт речь про "Слишком специализировано, не нужно", то не верь им - это ложь
Matwey
А зачем вам котангенс?
Berkus
Matwey
котангенс полезен тем что у него полюс не там где у тангенса