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

G. Расширенная и Рациональная Арифметика

Целые константы произвольной точности можно ввести как последовательность цифр, оканчивающуюся x. В применении к обычным целым, монада x: производит целые произвольной точности (расширенные целые). Например, 2-х элементный вектор 1234x 56x (или 1234 56x) эквивалентен x: 1234 56. Различные примитивы, в применении к аргументам произвольной точности, дают результаты произвольной точности. Некоторые глаголы f дают (приближенный) действительный результат для некоторых значений аргумента из за того, что результат не является целым числом; однако, <.@f и >.@f , в применении к аргументам произвольной точности, всегда производят результаты произвольной точности. Сравнения между расширенными целыми выполняются точно. Например:

   !40
8.15915e47

   !40x
815915283247897734345611269596115894272000000000

   */ x: >: i.40
815915283247897734345611269596115894272000000000

   0j_25 ": ! 2000x * i. 5 1            NB. Экспоненциальная запись, 25 цифр
  1.0000000000000000000000000e0    
  3.3162750924506332411753934e5735 
  1.8288019515140650133147432e12673
  2.6839997657267395961163166e20065
  5.1841810604808769398058198e27752

   ] r=: <.@%: 2 * 10 ^ 56x
14142135623730950488016887242

   ,. *: r + _1 0 1
199999999999999999999999999968972697904100132394908592081
199999999999999999999999999997256969151562033370942366564
200000000000000000000000000025541240399023934346976141049
Рациональные числа можно ввести как десятичные цифры числителя и знаменателя, разделенные r ; в начале такой константы может стоять знак. Тоесть 3r4 есть рациональное число три четверти, а _12r5 есть минус двенадцать пятых. Рациональные числа хрянятся и отображаются в сокращенном виде, в котором числитель и знаменатель не имеют общих множителей, а знаменатель положителен. Тоесть:

   1r2 _1r2 2r4 2r_4 _2r_4 0r9 5 _5
1r2 _1r2 1r2 _1r2 1r2 0 5 _5
Если аргументы являются рациональными, различные примитивные глаголы производят (точные) рациональные результаты; иррациональные глаголы производят (приближенные) действительные или комплексные результаты в применении к рациональным аргументам если не все рациональные аргументы глагола приводят к рациональному результату. (Например, %:y дает рациональные результаты, если все атомы y являются точными квадратами; ^0r1 есть действительное число.) Частное двух целых произвольной точности есть целое произвольной точности (если они делятся друг на друга) или рациональное число (если нет). Сравнения между рациональными числами выполняются точно. Диадные глаголы (например + - * % , = <), требующие преобразования типов аргументов, выполняют его в соответствии со следующей таблицей:
     |  B  I  X  Q  D  Z
  ---+------------------
  B  |  B  I  X  Q  D  Z     B - булевский
  I  |  I  I  X  Q  D  Z     I - целый
  X  |  X  X  X  Q  D  Z     X - целый произв. точн.
  Q  |  Q  Q  Q  Q  D  Z     Q - рациональный
  D  |  D  D  D  D  D  Z     D - действительный
  Z  |  Z  Z  Z  Z  Z  Z     Z - комплексный
Например, в выражении 2.5+1r2 перед сложением 1r2 преобразуется в 0.5, а результат — действительное число 3. А в выражении 2+1r2, перед сложением 2 преобразуется в 2r1 , и результат — 5r2.

В частности, это означает, что сравнения между действительными и рациональными числами выполняются с учетом погрешности, поскольку перед сравнением рациональное число преобразуется в действительное.

Глагол x: производит рациональное приближение действительных аргументов.
   2%3
0.666667

   2%3x
2r3

   (+%)/\10$1                           NB. Действ. приближ-я к золотому сечению
1 2 1.5 1.66667 1.6 1.625 1.61538 1.61905 1.61765 1.61818

   (+%)/\x: 10$1                        NB. Рациональные версии того-же
1 2 3r2 5r3 8r5 13r8 21r13 34r21 55r34 89r55

   |: 2 x: (+%)/\x: 10$1
1 2 3 5 8 13 21 34 55 89
1 1 2 3 5  8 13 21 34 55

   (+%)/ 100$1r1
573147844013817084101r354224848179261915075

   0j30 ": (+%)/100$1r1                 NB. Показать 30 цифр после точки
1.618033988749894848204586834366

   H=: % @: >: @: (+/~) @: i. @ x:      NB. Матрица Гильберта порядка n

   ] h=: H 6
  1 1r2 1r3 1r4  1r5  1r6
1r2 1r3 1r4 1r5  1r6  1r7
1r3 1r4 1r5 1r6  1r7  1r8
1r4 1r5 1r6 1r7  1r8  1r9
1r5 1r6 1r7 1r8  1r9 1r10
1r6 1r7 1r8 1r9 1r10 1r11

   -/ .* h                              NB. Определитель h
1r186313420339200000

   ~. q: % -/ .* h                      NB. Разл. простые множ. обр. определителя
2 3 5 7 11

   i.&.(p:^:_1) 2*#h                    NB. Простые, меньшие 2*n
2 3 5 7 11

   ^ 2r1                                NB. ^y действительное или комплексное
7.38906

   %: 49r25                             NB. %: от рационального квадрата рационален
7r5

   %: 49r25 10r9
1.4 1.05409

   %: _2r1
0j1.41421
                
   1 = 1+10r1^_15                       NB. Точное (рациональное) сравнение
0

   (1.5-0.5) = 1+10r1^_15               NB. Приближенное (действительное) сравнение
1
             
   0.5 = 1r2
1



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