- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
// https://github.com/QWalk/mainline/blob/b12ea3652226caef23c2f5fc7b168746c89096f2/src/system/Pseudopotential_so.cpp#L36
doublevar legendre_so(doublevar x, int n)
{
switch(n)
{
case 0:
return 1;
case 1:
return x;
case 2:
return .5*(3*x*x-1);
case 3:
return .5*(5*x*x*x - 3*x);
case 4:
return 0.125*(35*x*x*x*x -30*x*x +3);
case 5:
return 0.125*(63*x*x*x*x*x - 70*x*x*x + 15*x);
default:
error("Do not have legendre polynomial of order ", n);
return 0; //shouldn't get here, but gets rid of a compiler message
}
}
j123123 29.04.2019 05:55 # 0
j123123 29.04.2019 06:03 # 0
Ведь наверняка это всё можно как-нибудь легко и элегантно переписать на шаблоны.
j123123 29.04.2019 06:08 # +2
Зато там есть функции Бесселя! Ну разве не круто!
PACTPOBblu_nemyx 29.04.2019 12:31 # 0
https://en.cppreference.com/w/cpp/language/consteval
Теперь нужно думать, где писа́ть constexpr, а где consteval, и что из этого где можно использовать.
guest8 30.04.2019 01:14 # −999
guest8 29.04.2019 07:18 # −999
bormand 29.04.2019 07:25 # 0
j123123 29.04.2019 08:08 # −1
cmepmop 29.04.2019 08:34 # −1
Сколько твоих фаек я уже настрелял? Ах да, 3. Антонов, и т.п. не в щёт.
3:0
guest8 29.04.2019 12:39 # −999
AHCKujlbHblu_netyx 29.04.2019 13:38 # 0
guest8 29.04.2019 14:24 # −999
cmepmop 29.04.2019 15:03 # 0
PACTPOBblu_nemyx 29.04.2019 15:06 # −3
–— Смотрите, кругом живые люди!
Проктолог:
—– И лица! Главное, лица!
AHCKujlbHblu_netyx 29.04.2019 15:17 # 0
КАКОЙ БАГОР ))))
PACTPOBblu_nemyx 29.04.2019 15:44 # 0
https://i.imgur.com/xrkiv72.jpg
Искал изображение, на котором заметны пиксели.
cmepmop 29.04.2019 19:39 # 0
guest8 29.04.2019 20:00 # −999
guest8 29.04.2019 20:43 # −999
guest8 29.04.2019 20:45 # −999
guest8 29.04.2019 15:30 # −999
cmepmop 29.04.2019 23:43 # 0
showmessage('Не гниль')
else
showmessage('Гниль')
cmepmop 29.04.2019 23:47 # 0
IsBadPtr
IsBadReadPtr function
IsBadWritePtr function
IsBadCodePtr function
IsBadStringPtrA function
IsBadStringPtrW function
Некоторые ещё и не потокобезопасные. В общем, пир души.
gost 30.04.2019 00:28 # +2
А суть такова: функции эти крайне тупы и работают за счёт ловли Access Violation при попытке чтения из заданного адреса. Но в винде есть одна штука, называющаяся «автоматическое расширение стека»: у каждого потока стек выделяется «лениво», по одной странице. На следующей же странице (которая находится за последней выделенной) повешен PAGE_GUARD, который генерирует исключение при попытке доступа, после чего автоматически снимается.
В нормальном режиме работы, доступ к стеку, в котором страницы полностью заполнены (но при этом максимальный размер не превышен), генерирует STATUS_GUARD_PAGE_VIOLATION, которое ловится штатным обработчиком, который, в свою очередь, коммитит новую страницу стека и тихо возвращает управление обратно. Но если мы передадим адрес, входящий в «guard page» говнофункциям вроде «IsBadReadPtr», они просто проигнорируют исключение, при этом PAGE_GUARD снимется! И когда потоку понадобится место в стеке — приложение просто тихо упадёт.
«IsBadWritePtr», впрочем, ещё хуйже: она просто пишет рандомный байт в каждую страницу из заданного диапазона и потом восстанавливает его обратно. Если в приложении больше одного потока — у нас появляется шанс получить просто адский багор.
https://blogs.msdn.microsoft.com/oldnewthing/20060927-07/?p=29563
http://blogs.microsoft.co.il/sasha/2010/01/15/isbadxxxptr-is-really-harmful-please-dont-use-these-functions/
guest8 30.04.2019 00:54 # −999
Steve_Brown 30.04.2019 13:14 # +1
ASD_77 29.04.2019 12:36 # 0
BEKTOPHblu_nETyX 02.05.2019 09:32 # 0
cmepmop 29.04.2019 23:38 # 0
XpeHoTeHb 01.05.2019 16:10 # +1
cmepmop 01.05.2019 22:15 # +1
BEKTOPHblu_nETyX 01.05.2019 22:07 # 0