>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

Модуль |  0 0 0 Остаток

|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  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь