>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь
|y ↔ %:y*+y . Например:
| 6 _6 3j4
6 6 5
|
|
Обычно, результат соответствует остатку от деления неотрицательного целого на положительное:
3 | 0 1 2 3 4 5 6 7
0 1 2 0 1 2 0 1
|
Определение y-x*<. y % x+0=x расширяет область определения
Остатка на случай нулевого левого аргумента, а также для случаев
(конечных) отрицательных и дробных аргументов. Например:
over =: ({. ,.@; }.)@":@,
by =: ' '&;@,.@[ ,. ]
x=: 3 2 1 0 _1 _2 _3
y=: 0 1 2 3 4 5 6 7 8
x by y over x |/ y
+--+------------------------+
| |0 1 2 3 4 5 6 7 8|
+--+------------------------+
| 3|0 1 2 0 1 2 0 1 2|
| 2|0 1 0 1 0 1 0 1 0|
| 1|0 0 0 0 0 0 0 0 0|
| 0|0 1 2 3 4 5 6 7 8|
|_1|0 0 0 0 0 0 0 0 0|
|_2|0 _1 0 _1 0 _1 0 _1 0|
|_3|0 _2 _1 0 _2 _1 0 _2 _1|
+--+------------------------+
Чтобы для выражений типа (%3)|(2%3) результатом был
точный ноль, Остаток использует погрешность, как показано в
определении res ниже:
res=: f`g@.agenda"0
agenda=: ([ = 0:) +. (<. = >.)@S
S=: ] % [ + [ = 0:
f=: ] - [ * <.@S
g=: ] * [ = 0:
0.1 res 2.5 3.64 2 _1.6
0 0.04 0 0
(,. ; res/~ ; |/~) a=: 2 -~ i.5
+--+------------+------------+
|_2| 0 _1 0 _1 0| 0 _1 0 _1 0|
|_1| 0 0 0 0 0| 0 0 0 0 0|
| 0|_2 _1 0 1 2|_2 _1 0 1 2|
| 1| 0 0 0 0 0| 0 0 0 0 0|
| 2| 0 1 0 1 0| 0 1 0 1 0|
+--+------------+------------+
Диада | применима и к комплексным числам.
Кроме того, ее погрешность можно настроить (!.).
Вычисление диады m&|@^ для целых аргументов избегает
вычисления (потенциально больших) промежуточных результатов.
Например: 2 (1e6&|@^) 10^100x
>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь