diff test/gxco1.ijs @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/test/gxco1.ijs
@@ -0,0 +1,869 @@
+NB. extended precision integers -----------------------------------------
+
+NB. create test data
+
+x1=: (1-1e4)+10 11 ?@$ 2e4-1
+y1=: (1-1e4)+10 11 ?@$ 2e4-1
+x2=: (1-1e8)+10 11 ?@$ 2e8-1
+y2=: (1-1e8)+10 11 ?@$ 2e8-1
+x3=: (1-1e9)+10 11 ?@$ 2e9-1
+y3=: (1-1e9)+10 11 ?@$ 2e9-1
+
+
+NB. = -------------------------------------------------------------------
+
+x1 (= -: =&.x:) y1
+x1 (= -: =&.x:) y2
+x1 (= -: =&.x:) y3
+x2 (= -: =&.x:) y1
+x2 (= -: =&.x:) y2
+x2 (= -: =&.x:) y3
+0  (= -: =&.x:) y1
+0  (= -: =&.x:) y2
+0  (= -: =&.x:) y3
+
+x1 (= -: =&.x:) x=:x1+($x1) ?@$ 2
+x2 (= -: =&.x:) x=:x2+($x2) ?@$ 2
+x3 (= -: =&.x:) x=:x3+($x3) ?@$ 2
+
+(($x3)$0) -: x3 = ($x3)$a.
+(($x3)$0) -: x3 = ($x3)$a:
+
+(= -: =@:x:) y1
+(= -: =@:x:) y2
+(= -: =@:x:) y3
+
+(= -: =&.x:)~ y1
+(= -: =&.x:)~ y2
+(= -: =&.x:)~ y3
+
+0 0 1 -: 3 3.4 4 = x: 4
+0 0 1 -: 3 3j4 4 = x: 4
+0 0 0 -: '3j4'   = x: 4
+0 0 0 -: (<"0 'abc') = x: 4
+
+(x1=y) -: (x: x1) = y=:x1+0.5*($x1)?@$2
+(x2=y) -: (x: x2) = y=:x2+0.5*($x2)?@$2
+(x3=y) -: (x: x3) = y=:x3+0.5*($x3)?@$2
+
+(x1=y) -: (x: x1) = y=:x1+j./(2,$x1)?@$2
+(x2=y) -: (x: x2) = y=:x2+j./(2,$x1)?@$2
+(x3=y) -: (x: x3) = y=:x3+j./(2,$x1)?@$2
+
+
+NB. < -------------------------------------------------------------------
+
+x1 (< -: <&.x:) y1
+x1 (< -: <&.x:) y2
+x1 (< -: <&.x:) y3
+x2 (< -: <&.x:) y1
+x2 (< -: <&.x:) y2
+x2 (< -: <&.x:) y3
+0  (< -: <&.x:) y1
+0  (< -: <&.x:) y2
+0  (< -: <&.x:) y3
+
+x1 (< -: <&.x:) x=:x1+($x1)?@$2
+x2 (< -: <&.x:) x=:x2+($x2)?@$2
+x3 (< -: <&.x:) x=:x3+($x3)?@$2
+
+(< -: <&.x:)~ y1
+(< -: <&.x:)~ y2
+(< -: <&.x:)~ y3
+
+'domain error' -: (x: x1) < etx 3j4
+'domain error' -: (x: x1) < etx 'a'
+'domain error' -: (x: x1) < etx <12
+
+
+NB. <. ------------------------------------------------------------------
+
+(<. -: <.&.x:) y1
+(<. -: <.&.x:) y2
+(<. -: <.&.x:) y3
+
+x1 (<. -: <.&.x:) y1
+x1 (<. -: <.&.x:) y2
+x2 (<. -: <.&.x:) y1
+x2 (<. -: <.&.x:) y2
+0  (<. -: <.&.x:) y1
+0  (<. -: <.&.x:) y2
+
+'domain error' -: (x: x1) <. etx 3j4
+'domain error' -: (x: x1) <. etx 'a'
+'domain error' -: (x: x1) <. etx <12
+
+
+NB. <: ------------------------------------------------------------------
+
+(<: -: <:&.x:) y1
+(<: -: <:&.x:) y2
+(<: -: <:&.x:) y3
+
+x1 (<: -: <:&.x:) y1
+x1 (<: -: <:&.x:) y2
+x2 (<: -: <:&.x:) y1
+x2 (<: -: <:&.x:) y2
+0  (<: -: <:&.x:) y1
+0  (<: -: <:&.x:) y2
+
+'domain error' -: (x: x1) <: etx 3j4
+'domain error' -: (x: x1) <: etx 'a'
+'domain error' -: (x: x1) <: etx <12
+
+
+NB. > -------------------------------------------------------------------
+
+x1 (> -: >&.x:) y1
+x1 (> -: >&.x:) y2
+x1 (> -: >&.x:) y3
+x2 (> -: >&.x:) y1
+x2 (> -: >&.x:) y2
+x2 (> -: >&.x:) y3
+0  (> -: >&.x:) y1
+0  (> -: >&.x:) y2
+0  (> -: >&.x:) y3
+
+x1 (> -: >&.x:) x=:x1+($x1)?@$2
+x2 (> -: >&.x:) x=:x2+($x2)?@$2
+x3 (> -: >&.x:) x=:x3+($x3)?@$2
+
+(> -: >&.x:)~ y1
+(> -: >&.x:)~ y2
+(> -: >&.x:)~ y3
+
+(><"0 x1) -: ><"0 x: x1
+(><"1 x1) -: ><"1 x: x1
+(><"0 x2) -: ><"0 x: x2
+(><"1 x2) -: ><"1 x: x2
+(><"0 x3) -: ><"0 x: x3
+(><"1 x3) -: ><"1 x: x3
+
+(>(<"_1 x1),<"_1 y1) -: >(<"_1 x: x1),<"_1 y1
+
+3.5 4 -: > 3.5; 4x
+3j5 4 -: > 3j5; 4x
+
+'domain error' -: (x: x1) > etx 3j4
+'domain error' -: (x: x1) > etx 'a'
+'domain error' -: (x: x1) > etx <12
+
+'domain error' -: > etx 'abc';x: 4
+'domain error' -: > etx (<12);x: 4
+
+
+NB. >. ------------------------------------------------------------------
+
+(>. -: >.&.x:) y1
+(>. -: >.&.x:) y2
+(>. -: >.&.x:) y3
+
+x1 (>. -: >.&.x:) y1
+x1 (>. -: >.&.x:) y2
+x2 (>. -: >.&.x:) y1
+x2 (>. -: >.&.x:) y2
+0  (>. -: >.&.x:) y1
+0  (>. -: >.&.x:) y2
+
+'domain error' -: (x: x1) >. etx 3j4
+'domain error' -: (x: x1) >. etx 'a'
+'domain error' -: (x: x1) >. etx <12
+
+
+NB. >: ------------------------------------------------------------------
+
+x1 (>: -: >:&.x:) y1
+x1 (>: -: >:&.x:) y2
+x1 (>: -: >:&.x:) y3
+x2 (>: -: >:&.x:) y1
+x2 (>: -: >:&.x:) y2
+x2 (>: -: >:&.x:) y3
+0  (>: -: >:&.x:) y1
+0  (>: -: >:&.x:) y2
+0  (>: -: >:&.x:) y3
+
+x1 (>: -: >:&.x:) x=:x1+($x1)?@$2
+x2 (>: -: >:&.x:) x=:x2+($x2)?@$2
+x3 (>: -: >:&.x:) x=:x3+($x3)?@$2
+
+(>: -: >:&.x:)~ y1
+(>: -: >:&.x:)~ y2
+(>: -: >:&.x:)~ y3
+
+'domain error' -: (x: x1) >: etx 3j4
+'domain error' -: (x: x1) >: etx 'a'
+'domain error' -: (x: x1) >: etx <12
+
+
+NB. + -------------------------------------------------------------------
+
+(+ -: +&.x:) y1
+(+ -: +&.x:) y2
+(+ -: +&.x:) y3
+
+x1 (+ -: +&.x:) y1
+x1 (+ -: +&.x:) y2
+x1 (+ -: +&.x:) y3
+x2 (+ -: +&.x:) y1
+x2 (+ -: +&.x:) y2
+x2 (+ -: +&.x:) y3
+x3 (+ -: +&.x:) y1
+x3 (+ -: +&.x:) y2
+x3 (+ -: +&.x:) y3
+
+(x1+3.4) -: (x: x1) + 3.4
+(x1+3j4) -: (x: x1) + 3j4
+
+'domain error' -: (x: x1) + etx 'a'
+'domain error' -: (x: x1) + etx <12
+
+
+NB. +. ------------------------------------------------------------------
+
+(+. -: +.&.x:) y1
+(+. -: +.&.x:) y2
+(+. -: +.&.x:) y3
+
+x1 (+. -: +.&.x:) y1
+x1 (+. -: +.&.x:) y2
+x1 (+. -: +.&.x:) y3
+x2 (+. -: +.&.x:) y1
+x2 (+. -: +.&.x:) y2
+x2 (+. -: +.&.x:) y3
+x3 (+. -: +.&.x:) y1
+x3 (+. -: +.&.x:) y2
+x3 (+. -: +.&.x:) y3
+
+0 1 1 1 -: 0 0 1 1 +. x: 0 1 0 1
+
+(+./~ -: +./~@:x:)      _20+i.41
+(+./~ -: +./~@:x:)  1e4+_20+i.41
+(+./~ -: +./~@:x:) 20e4+_20+i.41
+(+./~ -: +./~@:x:) 27e4+_20+i.41
+
+(3.5 +. 4) -: 3.5 +. 4x
+(3j5 +. 4) -: 3j5 +. 4x
+
+'domain error' -: (x: x1) +. etx 'a'
+'domain error' -: (x: x1) +. etx <12
+
+
+NB. +: ------------------------------------------------------------------
+
+(+: -: +:&.x:) y1
+(+: -: +:&.x:) y2
+(+: -: +:&.x:) y3
+
+0 0 1 1 (+: -: +:&.x:) 0 1 0 1
+
+'domain error' -: (x: 1 2 3) +: etx x: 0 1 0
+'domain error' -: (x: x1) +: etx 3.4
+'domain error' -: (x: x1) +: etx 3j4
+'domain error' -: (x: x1) +: etx 'a'
+'domain error' -: (x: x1) +: etx <12
+
+
+NB. * -------------------------------------------------------------------
+
+x1=: (1-1e4)+10 11?@$2e4-1
+y1=: (1-1e4)+10 11?@$2e4-1
+x2=: (1-1e8)+10 11?@$2e8-1
+y2=: (1-1e8)+10 11?@$2e8-1
+x3=: (1-1e9)+10 11?@$2e9-1
+y3=: (1-1e9)+10 11?@$2e9-1
+
+(* -: *&.x:) y1
+(* -: *&.x:) y2
+(* -: *&.x:) y3
+
+x1 (* -: *&.x:) y1
+x1 (* -: *&.x:) y2
+x1 (* -: *&.x:) y3
+x2 (* -: *&.x:) y1
+x2 (* -: *&.x:) y2
+x2 (* -: *&.x:) y3
+x3 (* -: *&.x:) y1
+x3 (* -: *&.x:) y2
+x3 (* -: *&.x:) y3
+
+x=: */8192$2x
+x = *~ */4096$2x
+x = *~ */2048$4x
+x = *~ */1024$16x
+x = *~ */ 512$256x
+x = *~ */ 256$65536x
+x = *~ */ 128$65536x^2
+x = *~ */  64$65536x^4
+x = *~ */  32$65536x^8
+
+y=: x: ?10$40
+(y^n) = */@(n&$)"0 y [ n=:?4000
+(y^n) = */@(n&$)"0 y [ n=:?4000
+(y^n) = */@(n&$)"0 y [ n=:?4000
+
+(3.5 * 4) -: 3.5 * 4x
+(3j5 * 4) -: 3j5 * 4x
+
+'domain error' -: (x: x1) * etx 'a'
+'domain error' -: (x: x1) * etx <12
+
+
+NB. *. ------------------------------------------------------------------
+
+x1=: (1-1e4)+10 11?@$2e4-1
+y1=: (1-1e4)+10 11?@$2e4-1
+y2=: (1-1e8)+10 11?@$2e8-1
+y3=: (1-1e9)+10 11?@$2e9-1
+
+x1 (*. -: *.&.x:) y1
+x1 (*. -: *.&.x:) y2
+x1 (*. -: *.&.x:) y3
+
+0 0 0 1 -: 0 0 1 1 *. etx x: 0 1 0 1
+
+(3.5 *. 4) -: 3.5 *. 4x
+(3j5 *. 4) -: 3j5 *. 4x
+
+'domain error' -: (x: x1) *. etx 'a'
+'domain error' -: (x: x1) *. etx <12
+
+
+NB. *: ------------------------------------------------------------------
+
+(*: -: *:&.x:) y1
+(*: -: *:&.x:) y2
+(*: -: *:&.x:) y3
+
+0 0 1 1 (*: -: *:&.x:) 0 1 0 1
+
+'domain error' -: (x: 1 2 3) *: etx x: 0 1 0
+'domain error' -: (x: x1) *: etx 3.4
+'domain error' -: (x: x1) *: etx 3j4
+'domain error' -: (x: x1) *: etx 'a'
+'domain error' -: (x: x1) *: etx <12
+
+
+NB. - -------------------------------------------------------------------
+
+(- -: -&.x:) y1
+(- -: -&.x:) y2
+(- -: -&.x:) y3
+
+x1 (- -: -&.x:) y1
+x1 (- -: -&.x:) y2
+x1 (- -: -&.x:) y3
+x2 (- -: -&.x:) y1
+x2 (- -: -&.x:) y2
+x2 (- -: -&.x:) y3
+x3 (- -: -&.x:) y1
+x3 (- -: -&.x:) y2
+x3 (- -: -&.x:) y3
+
+(x1 - 3.4) -: (x: x1) - 3.4
+(x1 - 3j4) -: (x: x1) - 3j4
+
+'domain error' -: (x: x1) - etx 'a'
+'domain error' -: (x: x1) - etx <12
+
+
+NB. % -------------------------------------------------------------------
+
+(<.!.0@% -: <.@%&.x:) y1+0=y1
+(<.!.0@% -: <.@%&.x:) y2+0=y2
+(<.!.0@% -: <.@%&.x:) y3+0=y3
+
+(>.!.0@% -: >.@%&.x:) y1+0=y1
+(>.!.0@% -: >.@%&.x:) y2+0=y2
+(>.!.0@% -: >.@%&.x:) y3+0=y3
+
+x1 (<.!.0@% -: <.@%&.x:) y1+0=y1
+x1 (<.!.0@% -: <.@%&.x:) y2+0=y2
+x1 (<.!.0@% -: <.@%&.x:) y3+0=y3
+x2 (<.!.0@% -: <.@%&.x:) y1+0=y1
+x2 (<.!.0@% -: <.@%&.x:) y2+0=y2
+x2 (<.!.0@% -: <.@%&.x:) y3+0=y3
+x3 (<.!.0@% -: <.@%&.x:) y1+0=y1
+x3 (<.!.0@% -: <.@%&.x:) y2+0=y2
+x3 (<.!.0@% -: <.@%&.x:) y3+0=y3
+
+x1 (>.!.0@% -: >.@%&.x:) y1+0=y1
+x1 (>.!.0@% -: >.@%&.x:) y2+0=y2
+x1 (>.!.0@% -: >.@%&.x:) y3+0=y3
+x2 (>.!.0@% -: >.@%&.x:) y1+0=y1
+x2 (>.!.0@% -: >.@%&.x:) y2+0=y2
+x2 (>.!.0@% -: >.@%&.x:) y3+0=y3
+x3 (>.!.0@% -: >.@%&.x:) y1+0=y1
+x3 (>.!.0@% -: >.@%&.x:) y2+0=y2
+x3 (>.!.0@% -: >.@%&.x:) y3+0=y3
+
+(% -: %&.x:)~ y1
+(% -: %&.x:)~ y2
+(% -: %&.x:)~ y3
+
+e=:$0
+e -: 2x % ''
+e -: 2x % $0
+e -: 2x % 0$a:
+e -: 2x <.@% ''
+e -: 2x <.@% $0
+e -: 2x <.@% 0$a:
+e -: 2x >.@% ''
+e -: 2x >.@% $0
+e -: 2x >.@% 0$a:
+
+_  -:   % x: 0
+_  -: 4 % x: 0
+__ -: _4 % x: 0
+
+
+NB. %: ------------------------------------------------------------------
+
+0 -: %: x: 0
+5 -: %: x: 25
+(%: -: %:@x:) *~i.2 10
+
+(<.!.0@%: -: <.@%:@x:)     i.2 10
+(<.!.0@%: -: <.@%:@x:) 1e3*i.2 10
+(<.!.0@%: -: <.@%:@x:) 1e4*i.2 10
+(<.!.0@%: -: <.@%:@x:) 1e5*i.2 10
+(<.!.0@%: -: <.@%:@x:) 1e8*i.2 10
+(<.!.0@%: -: <.@%:@x:) 1e9*i.2 10
+
+(>.!.0@%: -: >.@%:@x:)     i.2 10
+(>.!.0@%: -: >.@%:@x:) 1e3*i.2 10
+(>.!.0@%: -: >.@%:@x:) 1e4*i.2 10
+(>.!.0@%: -: >.@%:@x:) 1e5*i.2 10
+(>.!.0@%: -: >.@%:@x:) 1e8*i.2 10
+(>.!.0@%: -: >.@%:@x:) 1e9*i.2 10
+
+NB. 0 1 _ -: 0x %: 0 1 2x
+NB. 0 1 _ -: 0  %: 0 1 2
+
+f=: 3 : '((*~s)<:y)*.y<:*~1+s=.<.@%: y'
+
+f"0 !x:i.5 10
+f"0 (i.2 10)**/20$x:1e4
+
+(   %:  2) -:    %: x:  2
+(<.@%: _5) -: <.@%: x: _5
+(>.@%: _5) -: >.@%: x: _5
+
+root=: 4 : 0
+ r=.x
+ a=.y
+ f=. ([ * (a&+)@((r-1)&*)@(^&r)) <.@% r&*@(^&r)
+ f^:_ [1
+)
+
+
+NB. ^ -------------------------------------------------------------------
+
+x1 (^ -: ^&.x:) y=:10 11?@$100
+x2 (^ -: ^&.x:) y
+x3 (^ -: ^&.x:) y
+
+1 = 1^x: _3 0 3
+1 = 1^y1
+1 = 1^y2
+1 = 1^y3
+1 = 1^x: 1e50
+
+1 0 0 0 0 -: 0 ^ x: i.5
+(0=t) -: 0^t=:|y1
+(0=t) -: 0^t=:|y2
+(0=t) -: 0^t=:|y3
+0     -: 0^x: 1e50
+
+x1 (^ -: ^&.x:) t=:($x1)?@$50
+x2 (^ -: ^&.x:) t=:($x2)?@$50
+x3 (^ -: ^&.x:) t=:($x3)?@$50
+
+3  (<.!.0@^ -: <.@^&x:) t=:_3+i.7
+_3 (<.!.0@^ -: <.@^&x:) t
+3  (>.!.0@^ -: >.@^&x:) t=:_3+i.7
+_3 (>.!.0@^ -: >.@^&x:) t
+
+f=: 100&|@^
+(2 f e) -: 2 f (20|e)+20*20<e=:(10^100x)+4 5?@$100
+(3 f e) -: 3 f 20|e
+(4 f e) -: 4 f (10|e)+10*10<e
+(5 f e) -: 5 f 2<.e
+(6 f e) -: 6 f ( 5|e)+ 5* 5<e
+(7 f e) -: 7 f 4 |e
+(8 f e) -: 8 f (20|e)+20*20<e
+(9 f e) -: 9 f 10|e
+
+_   -: 0 ^ _2x
+1r9 -: 3 ^ _2x
+1r9 -: 3 ^ _2x 
+
+'limit error' -: 2 ^ etx 10^100x
+
+e0=: 3 : 0  NB. calculate e to y decimal places
+ k=. 1
+ a=. b=. 1x
+ d=. 10x^y
+ e=. +:d
+ whilst. b<e do.
+  a=. >: a * k
+  b=. b * k
+  k=. >:k
+ end.
+ (a*d) <.@% b
+)
+
+e1=: 3 : 0
+ (+/ , {.) */\. }. (i.y),1x
+)
+
+x=: ^/~ 10%~i:10x
+y=: ^/~ 10%~i:9x
+y -: 1 1}. _1 _1}.x
+
+
+NB. ~. ------------------------------------------------------------------
+
+(~.    x) -: ~.    x: x=:_1e9+?100$2e9
+(~.<"0 x) -: ~.<"0 x: x
+
+NB. *** (<"0 ~.x,y) -: ~.(<"0 x: x),<"0 y=.x+0.5*?($x)$2
+
+
+NB. ~: ------------------------------------------------------------------
+
+(x1~:y) -: (x: x1) ~: y=:x1+0.5*($x1)?@$2
+(x2~:y) -: (x: x2) ~: y=:x2+0.5*($x2)?@$2
+(x3~:y) -: (x: x3) ~: y=:x3+0.5*($x3)?@$2
+
+(x1~:y) -: (x: x1) ~: y=:x1+j./(2,$x1)?@$2
+(x2~:y) -: (x: x2) ~: y=:x2+j./(2,$x1)?@$2
+(x3~:y) -: (x: x3) ~: y=:x3+j./(2,$x1)?@$2
+
+1 1 0 -: 3 3.4 4 ~: x:4
+1 1 0 -: 3 3j4 4 ~: x:4
+1 1 1 -: '3j4' ~:x:4
+
+
+NB. | -------------------------------------------------------------------
+
+(| -: |&.x:) y1
+(| -: |&.x:) y2
+(| -: |&.x:) y3
+
+x1 (| -: |&.x:) y1
+x1 (| -: |&.x:) y2
+x1 (| -: |&.x:) y3
+x2 (| -: |&.x:) y1
+x2 (| -: |&.x:) y2
+x2 (| -: |&.x:) y3
+x3 (| -: |&.x:) y1
+x3 (| -: |&.x:) y2
+x3 (| -: |&.x:) y3
+
+0 0 0 -: (x: _123 0 1234) | 0
+
+x=: 15 15 _15 _15
+y=: 4 _4 4 _4 * x
+(x|y) -: x |&.x: y
+
+(| -: | &.x:) y1
+(| -: | &.x:) y2
+(| -: | &.x:) y3
+(| -: | &.x:) _1e8 _1e4 0 1e4 1e8
+
+(| -: | &.x:)~ y1
+(| -: | &.x:)~ y2
+(| -: | &.x:)~ y3
+(| -: | &.x:)~ _1e8 _1e4 0 1e4 1e8
+
+(|/~ -: |/~@:x:)      _20+i.41
+(|/~ -: |/~@:x:)  1e4+_20+i.41
+(|/~ -: |/~@:x:) 20e4+_20+i.41
+(|/~ -: |/~@:x:) 27e4+_20+i.41
+
+(x1 | 3.4) -: (x: x1) | etx 3.4
+(x1 | 3j4) -: (x: x1) | etx 3j4
+
+'domain error' -: (x: x1) | etx 'a'
+'domain error' -: (x: x1) | etx <12
+
+
+NB. . -------------------------------------------------------------------
+
+x=: _1e6+ 5 13 ?@$ 2e6
+y=: _1e6+13  7 ?@$ 2e6
+x (+/ .* -: +/ .*&.x:) y
+x (+/ .* -: +/ .*&.x:) 1
+x (+/ .* -: +/ .*&.x:) 2
+x (+/ .* -: +/@(*"1 _))&:x: y
+
+((x: x) +/ .* 1) -: (x: x) +/ .* 13$1
+((x: x) +/ .* 2) -: (x: x) +/ .* 13$2
+
+
+NB. : -------------------------------------------------------------------
+
+f=: 3 : 'if. y do. ''non-zero'' else. ''zero'' end.'
+
+'zero'     -: f    0
+'zero'     -: f x: 0
+
+'non-zero' -: f    12
+'non-zero' -: f x: 12
+
+
+NB. #. ------------------------------------------------------------------
+
+(#. -: #.&:x:) x1
+(#. -: #.&:x:) x2
+(#. -: #.&:x:) x3
+
+3 (#. -: #.&:x:) x1
+3 (#. -: #.&:x:) x2
+3 (#. -: #.&:x:) x3
+
+
+NB. #: ------------------------------------------------------------------
+
+(!x:20) -: #. #: !x:20
+(!x:40) -: #. #: !x:40
+(!x:60) -: #. #: !x:60
+
+(!x:20) -: 10 #. (90$10) #: !x:20
+(!x:40) -: 10 #. (90$10) #: !x:40
+(!x:60) -: 10 #. (90$10) #: !x:60
+
+
+NB. ! -------------------------------------------------------------------
+
+(!  -: !&.x:) i.10
+(!@x: -: */@:>:@i.@x:"0) x=:2 10?@$150
+
+(!/~ -: !/~@:x:) _11+i.21
+(i.10) (! -: !&.x:) 2e9
+   
+min=: [ <. -~
+arg=: |.@(] - i.@min) ,. >:@i.@min
+f  =: (% +./)@:*
+bc =: {. @ (f/) @ arg " 0
+
+(x=:1+20?@$20) (! -: bc&.x:) y=:1e9*1+20?@$20
+
+ind =: i.@(0&>.)@([ <. -~)
+pf  =: -.&0 @: , @: q:
+num =: pf @ (]  - ind)
+den =: pf @ (1: + ind)
+exp =: , +//. ,&# # 1 _1"_
+bct =: num (exp */@:x:@:# ~.@,) den
+
+x (! -: bct"0) 10+x=:i.11
+(x=:1+?20$20) (bc&x: -: bct"0&x:) y=:1e6*1+20?@$20
+
+bc2=: ((i.@[ -~ ]) %&(*/) >:@i.@[)&x:
+
+3  (! -: bc2) 4*x:2e9
+10 (! -: bc2) 8*x:2e9
+
+(-: */x-0 1) -: 2 ! x=:*/x: 10?@$1e8
+
+
+NB. 3!:x ----------------------------------------------------------------
+
+y=: !x:2 10?@$200
+y -: 3!:2 (3!:1) y
+
+
+NB. /: ------------------------------------------------------------------
+
+(/: -: /:@:       x:) y=:_100+2000?@$200
+(/: -: /:@:(<"0)@:x:) y
+(/: -: /:@:       x:) y=:_1e9+2000?@$2e9
+(/: -: /:@:(<"0)@:x:) y
+
+test=: 4 : '(/:(<"_1 x),<"_1 y) -: /:(<"_1 x: x),<"_1 y'
+
+(x=:_1e9+100  ?@$2e9) test y=: o._1e9+100  ?@$2e9
+(x=:_1e9+100 2?@$2e9) test y=: -:_1e9+100  ?@$2e9
+(x=:_1e9+100  ?@$2e9) test y=: -:_1e9+100 2?@$2e9
+(x=:_1e9+100 2?@$2e9) test y=: o._1e9+100 2?@$2e9
+
+
+NB. \: ------------------------------------------------------------------
+
+(\: -: \:@:       x:) y=:_100+2000?@$200
+(\: -: \:@:(<"0)@:x:) y
+(\: -: \:@:       x:) y=:_1e9+2000?@$2e9
+(\: -: \:@:(<"0)@:x:) y
+
+test=: 4 : '(\:(<"_1 x),<"_1 y) -: \:(<"_1 x: x),<"_1 y'
+
+(x=:_1e9+100  ?@$2e9) test y=: o._1e9+100  ?@$2e9
+(x=:_1e9+100 2?@$2e9) test y=: -:_1e9+100  ?@$2e9
+(x=:_1e9+100  ?@$2e9) test y=: -:_1e9+100 2?@$2e9
+(x=:_1e9+100 2?@$2e9) test y=: o._1e9+100 2?@$2e9
+
+
+NB. ". ------------------------------------------------------------------
+
+(x: y) -: ". ;(":&.>y),&.><'x ' [ y=: +: _1e9+200?@$2e9
+(x: y) -: ". ;(":&.>y),&.><'x ' [ y=: ,y1
+(x: y) -: ". ;(":&.>y),&.><'x ' [ y=: ,y2
+(x: y) -: ". ;(":&.>y),&.><'x ' [ y=: ,y3
+
+(x: 123 _99 456789) -: _99 ". '123x foo 456789'
+
+3.4 45 -: 3.4 ". etx '123x 45'
+
+'ill-formed number' -: ". etx '1234ex'
+'ill-formed number' -: ". etx '123x _x x'
+'ill-formed number' -: ". etx '3j4x'
+'ill-formed number' -: ". etx '123.4 34x'
+
+
+NB. extended integer comparisons ----------------------------------------
+
+x=: 2 2.2 2.5 3 3.5 3.7 4
+y=: _4 _3 _2 _1 0 1 2 3 4
+
+x (<  -: (<  x:)) 3
+x (<: -: (<: x:)) 3
+x (=  -: (=  x:)) 3
+x (~: -: (~: x:)) 3
+x (>: -: (>: x:)) 3
+x (>  -: (>  x:)) 3
+
+(-x) (<  -: (<  x:)) _3
+(-x) (<: -: (<: x:)) _3
+(-x) (=  -: (=  x:)) _3
+(-x) (~: -: (~: x:)) _3
+(-x) (>: -: (>: x:)) _3
+(-x) (>  -: (>  x:)) _3
+
+(x,-x) (< / -: (<  x:)"0/) y
+(x,-x) (<:/ -: (<: x:)"0/) y
+(x,-x) (= / -: (=  x:)"0/) y
+(x,-x) (~:/ -: (~: x:)"0/) y
+(x,-x) (>:/ -: (>: x:)"0/) y
+(x,-x) (> / -: (>  x:)"0/) y
+
+3 (<  -: x:@[ <  ]) x
+3 (<: -: x:@[ <: ]) x
+3 (=  -: x:@[ =  ]) x
+3 (~: -: x:@[ ~: ]) x
+3 (>: -: x:@[ >: ]) x
+3 (>  -: x:@[ >  ]) x
+
+_3 (<  -: x:@[ <  ]) -x
+_3 (<: -: x:@[ <: ]) -x
+_3 (=  -: x:@[ =  ]) -x
+_3 (~: -: x:@[ ~: ]) -x
+_3 (>: -: x:@[ >: ]) -x
+_3 (>  -: x:@[ >  ]) -x
+
+y (< / -: (x:@[ <  ])"0/) x,-x
+y (<:/ -: (x:@[ <: ])"0/) x,-x
+y (= / -: (x:@[ =  ])"0/) x,-x
+y (~:/ -: (x:@[ ~: ])"0/) x,-x
+y (>:/ -: (x:@[ >: ])"0/) x,-x
+y (> / -: (x:@[ >  ])"0/) x,-x
+
+x=: 10?@$20
+y=: 0.5*20?@$40
+(x i. y) -: (x: x) i. y
+(y i. x) -: y i. x: x
+
+
+NB. A. ------------------------------------------------------------------
+
+(<: ! x: #y) = A. |. y=:i.50
+
+'index error' -: (   !50x) A. etx i.50
+'index error' -: (->:!50x) A. etx i.50
+
+
+NB. e. ------------------------------------------------------------------
+
+x=:1000?@$500
+y=:0.25 * 1200?@$2000
+
+(x e. y) -: (x: x) e. y
+(y e. x) -: y e. x: x
+
+
+NB. i. ------------------------------------------------------------------
+
+(type -: type@i.) x: 5
+(type -: type@i.) x: 0
+(type -: type@i.) x: 4 5
+(type -: type@i.) x: _4 5
+(type -: type@i.) x: 4 0
+
+(x:@i. -: i.@:x:) 5
+(x:@i. -: i.@:x:) 4 5
+(x:@i. -: i.@:x:) _4 5
+
+x=:_1e9+400?@$2e9
+y=:x+0.5*($x)?@$2
+
+(x i. y) -: (x: x) i. y
+(y i. x) -: y i. x: x
+
+(x i. x) -: (<"0 x: x) i. <"0 x
+(x i. x) -: (<"0    x) i. <"0 x: x
+(x i. x) -: (<"0 x: x) i. <"0 x: x
+
+(x i. y) -: (<"0 x: x) i. <"0 y
+(x i. y) -: (<"0    x) i. <"0 x: y
+(x i. y) -: (<"0 x: x) i. <"0 x: y
+
+
+NB. j. ------------------------------------------------------------------
+
+(j. x: x1) -: j. x1
+
+
+NB. p. ------------------------------------------------------------------
+
+x=: _100+7?@$200
+c=: _100+?   200
+
+(c;x) (p. -: x:^:_1@(p.x:)) y1
+(c;x) (p. -: x:^:_1@(p.x:)) y2
+(c;x) (p. -: x:^:_1@(p.x:)) y3
+
+x (p. -: x:^:_1@:p.&:x:) y1
+x (p. -: x:^:_1@:p.&:x:) y2
+x (p. -: x:^:_1@:p.&:x:) y3
+
+(p. 1 2 3 5) -: p. x: 1 2 3 5
+
+
+NB. q: ------------------------------------------------------------------
+
+f=: 3 : 0
+ x=. q: y
+ (y=*/x: x) *. *./x e. p:i.>:p:^:_1 {:x
+)
+
+f !20x
+f !30x
+f 12345678901234567890x
+ 
+18 8 4 2 1 1 1 1 -: _ q: !20x
+(!20x) -: */ (p: i.#x)^x:x=: _ q: !20x
+(!30x) -: */ (p: i.#x)^x:x=: _ q: !30x
+
+H  =: %@>:@(+/~)@i.  NB. Hilbert matrix
+det=: -/ .*
+
+(~.@q:@%@det@H -: i.&.(p:^:_1)@+:) 5x
+(~.@q:@%@det@H -: i.&.(p:^:_1)@+:) 6x
+(~.@q:@%@det@H -: i.&.(p:^:_1)@+:) 7x
+(~.@q:@%@det@H -: i.&.(p:^:_1)@+:) 8x
+(~.@q:@%@det@H -: i.&.(p:^:_1)@+:) 9x
+
+
+4!:55 ;:'arg bc bc2 bct c den det e e0 e1 exp f H ind min n'
+4!:55 ;:'num pf root t test x x1 x2 x3 y y1 y2 y3'
+
+