Size: a a a

Compiler Development

2020 November 21

KS

Khet Singh in Compiler Development
Can anyone help me with this?
источник

h

hazer_hazer in Compiler Development
@romanarte, стоит ли какая-нибудь история за тем, что mod стал deprecated  в Kotlin и появился rem?
источник

MO

Mar Ort in Compiler Development
hazer_hazer
@romanarte, стоит ли какая-нибудь история за тем, что mod стал deprecated  в Kotlin и появился rem?
>We automatically pick BigInteger.mod() for %, and it gives results inconsistent with % for Ints
источник

KR

K R in Compiler Development
hazer_hazer
@romanarte, стоит ли какая-нибудь история за тем, что mod стал deprecated  в Kotlin и появился rem?
А какая разница между mod и rem,?
источник

h

hazer_hazer in Compiler Development
K R
А какая разница между mod и rem,?
Раньше был mod, но потом, как мне указал Mar Ort, появилась проблема с BigInteger и пришлось добавить rem, а mod сделать deprecated
источник

KR

K R in Compiler Development
А вычислительно чем отличается mod от rem? Есть ли там какая-то разница в определении?
источник

KR

K R in Compiler Development
Нашёл в MATLAB:

The concept of remainder after division is not uniquely defined, and the two functions mod and rem each compute a different variation. The mod function produces a result that is either zero or has the same sign as the divisor. The rem function produces a result that is either zero or has the same sign as the dividend.

Another difference is the convention when the divisor is zero. The mod function follows the convention that mod(a,0) returns a, whereas the rem function follows the convention that rem(a,0) returns NaN.
источник

KR

K R in Compiler Development
Но согласно этому тексту, в разных языках всё может быть совершенно по-разному.
источник

h

hazer_hazer in Compiler Development
K R
А вычислительно чем отличается mod от rem? Есть ли там какая-то разница в определении?
вот issue https://youtrack.jetbrains.com/issue/KT-14650?_ga=2.56753832.305767146.1605768277-1649832817.1600978815
Видимо у BigInteger и Int поведение модуло отличалось
источник

KR

K R in Compiler Development
Я просто наткнулся на то, что в Клине rem может давать отрицательные числа при делении на 3!
источник

h

hazer_hazer in Compiler Development
K R
Нашёл в MATLAB:

The concept of remainder after division is not uniquely defined, and the two functions mod and rem each compute a different variation. The mod function produces a result that is either zero or has the same sign as the divisor. The rem function produces a result that is either zero or has the same sign as the dividend.

Another difference is the convention when the divisor is zero. The mod function follows the convention that mod(a,0) returns a, whereas the rem function follows the convention that rem(a,0) returns NaN.
Пипон  вот вообще не позволяет a % 0
источник

KR

K R in Compiler Development
И 3 ну совершенно положительное число. Пожалуй, самое положительное.
источник

h

hazer_hazer in Compiler Development
hazer_hazer
Пипон  вот вообще не позволяет a % 0
Хотя это ж логично... По-сути деление на ноль
источник

h

hazer_hazer in Compiler Development
Еще одного не хватает...
источник
2020 November 22

AT

Alexander Tchitchigi... in Compiler Development
Для тех, кто пропустил про парсеры: https://www.youtube.com/watch?v=PGRnk-bzTdU 😊
источник

E

EgorBo in Compiler Development
https://godbolt.org/z/MdcxsM хитропопый шланг
источник

E

EgorBo in Compiler Development
источник

K

Kakadu in Compiler Development
А на сколько сложно сделать бенчмарку, где не хватает кэша инструкций и такой шланг работает медленнее gcc?
источник

AP

Antony Polukhin in Compiler Development
Kakadu
А на сколько сложно сделать бенчмарку, где не хватает кэша инструкций и такой шланг работает медленнее gcc?
+
Такие фишечки хорошо показывают себя на бенчмарках, на которых компиляторы соревнуются т.к. там в основном небольшие математические задачки. А вот в больших проектах такое раздувание кода и лишние ветвления весьма сомнительны
источник

E

EgorBo in Compiler Development
не надо забывать что деление интов - это по сложности инструкция как штук 50 сложений :D
источник