- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
#include <stdbool.h>
bool impl(bool a, bool b) // ->
{
return (!a || b);
}
bool always_true(bool a, bool b)
{
return (impl(a,b) == impl(b,a)) == (a == b); // ( (a -> b) = (b -> a) ) = (a = b) tautology
}
/*
GCC не хочет мне тавтологию оптимизировать!
https://godbolt.org/z/kgFMpR
always_true:
movl %esi, %eax
xorl %edi, %eax
cmpb %dil, %sil
sete %dl
xorl %edx, %eax
ret
Но Clang может
https://godbolt.org/z/YcOat-
always_true: # @always_true
movb $1, %al
retq
*/
j123123 24.09.2019 14:37 # +2
https://en.wikipedia.org/wiki/Frege%27s_theorem
(P → (Q→R)) → ((P→Q) → (P→R))
GCC опять хрени нагенерил.
а clang норм сделал:
ropuJIJIa 24.09.2019 14:44 # 0
Rooster 25.09.2019 11:48 # 0
guest8 25.09.2019 12:12 # −999
Rooster 25.09.2019 11:47 # 0
guest8 25.09.2019 12:11 # −999
Elvenfighter 25.09.2019 21:40 # +2
GCC сообразил нормально:
Видимо, GCC считает, что bool может иметь значения отличные от false и true.
https://godbolt.org/z/veF6xe
guest8 24.09.2019 14:40 # −999
j123123 24.09.2019 14:46 # 0
j123123 24.09.2019 16:16 # +1
А вот эту хуйню ни один компилятор не оптимизирует
Rooster 25.09.2019 11:47 # 0
guest8 25.09.2019 12:11 # −999
Rooster 25.09.2019 11:49 # 0
guest8 25.09.2019 14:37 # −999
j123123 25.09.2019 19:42 # +1
Metamath is a tiny language that can express theorems in abstract mathematics, accompanied by proofs that can be verified by a computer program. This site has a collection of web pages generated from those proofs and lets you see mathematics developed in complete detail from first principles, with absolute rigor. Hopefully it will amuse you, amaze you, and possibly enlighten you in its own special way.
Нет, это не APL. Это прувчекер
guest8 24.09.2019 22:54 # −999
Rooster 25.09.2019 11:46 # 0
guest8 25.09.2019 11:55 # −999
Rooster 25.09.2019 12:16 # 0
ropuJIJIa 25.09.2019 12:17 # 0
guest8 25.09.2019 12:22 # −999
Rooster 25.09.2019 12:32 # 0
guest8 25.09.2019 12:22 # −999
guest8 25.09.2019 12:10 # −999
guest8 25.09.2019 14:36 # −999
OCETuHCKuu_nemyx 11.10.2019 00:46 # 0
guest8 11.10.2019 01:00 # −999
MPA3b 11.10.2019 01:04 # 0
ropuJIJIa 25.09.2019 12:05 # 0
Если же сделать каст к байту, то выхлоп уже без ветвлений: Выхлоп кодогенератора: Он зачем-то чистит булеву переменную, чтобы на выходе точно не было ничего, кроме нуля и единицы. В функции always_true и always_true2 он подставляет именно этот фрагмент кода, не оптимизируя.
guest8 25.09.2019 14:37 # −999
Rooster 25.09.2019 12:28 # 0
Какой позор (((
Rooster 25.09.2019 12:40 # 0
Rooster 25.09.2019 12:40 # 0
guest8 25.09.2019 12:41 # −999
Rooster 25.09.2019 12:46 # 0
А чего добился ты?
OCETuHCKuu_nemyx 11.10.2019 00:47 # 0
KingKong 12.10.2019 01:10 # 0
Куикк.
guest8 12.10.2019 01:34 # −999
guest8 12.10.2019 10:33 # −999
cmepmop 12.10.2019 13:31 # 0
nymuHckuu_nemyx 12.10.2019 18:23 # −102
> не набухиваться до усрачки
guestinxo 12.10.2019 21:13 # −6
cmepmop 12.10.2019 23:18 # −102
cmepmop 12.10.2019 13:31 # 0
OCETuHCKuu_nemyx 11.10.2019 00:43 # −1
nymuHckuu_nemyx 12.10.2019 18:24 # −102