Power | u^:n _ _ _ |
n may be integer, boxed, or a gerund. Integer. The verb u is applied n times. An infinite power n produces the limit of the application of u . For example, (2&o.^:_)1 is 0.73908 , the solution of the equation y=Cos y . If n is negative, the obverse u^:_1 (see below) is applied |n times. Finally, u^:n y for an array n is produced by assembling u^:a y (for all the atoms a in n) into an overall result. The obverse is used in u&.v and is produced by v b. _1 . Repeated application of a verb is also provided by Bond (&). Boxed. If n is boxed it must be an atom, and u^:(<m)
Gerund. See on the right. |
n may be integer, boxed, or a gerund. Integer or Boxed. x u^:n y ↔ x&u^:n y Gerund. (Compare with the gerund cases of the merge adverb }) |
The obverse (which is normally the inverse) is specified for six cases:
1. |
The self-inverse functions + - -. % %. |. |: /: [ ] C. p. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. |
The pairs in the following tables:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. |
Obviously invertible bonded dyads such
as -&3 and 10&^.
and 1 0 2&|: and 3&|. and 1&o.
and a.&i. as well as u@v and u&v
if u and v are invertible. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. |
Monads of the form v/\ and v/\. where v
is one of + * - % = ~: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. |
Obverses specified by the conjunction :. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6. |
The following cases merit special mention: p:^:_1 n gives the number of primes less than n, denoted by π(n) in math q:^:_1 is */ b&#^:_1 where b is a boolean list is Expand (whose fill atom f can be specified by fit, b&#^:_1!.f or #^:_1!.f ) a&#.^:_1 produces the base-a representation !^:_1 and !&n^:_1 and n&!^:_1 produce the appropriate results {= and i."1&1 are inverses of each other; these convert between integer permutation vectors and boolean permutation matrices |
(] ; +/\ ; +/\^:2 ; +/\^:0 1 2 3 _1 _2 _3 _4) 1 2 3 4 5 +---------+-----------+------------+-------------+ |1 2 3 4 5|1 3 6 10 15|1 4 10 20 35|1 2 3 4 5| | | | |1 3 6 10 15| | | | |1 4 10 20 35| | | | |1 5 15 35 70| | | | |1 1 1 1 1| | | | |1 0 0 0 0| | | | |1 _1 0 0 0| | | | |1 _2 1 0 0| +---------+-----------+------------+-------------+
Example 2: Fibonacci Sequence
+/\@|.^:(i.10) 0 1 0 1 1 1 1 2 2 3 3 5 5 8 8 13 13 21 21 34 34 55 {. +/\@|.^:n 0 1x [ n=:128 NB. n-th term of the Fibonacci sequence 251728825683549488150424261 {.{: +/ .*~^:k 0 1,:1 1x [ k=:7 NB. (2^k)-th term of the Fibonacci sequence 251728825683549488150424261
Example 3: Newton Iteration
-:@(+2&%)^:(0 1 2 3) 1 1 1.5 1.41667 1.41422 -:@(+2&%)^:(_) 1 1.41421 -:@(+2&%)^:a: 1 1 1.5 1.41667 1.41422 1.41421 1.41421 %: 2 1.41421
Example 4: Subgroup Generated by a Set of Permutations
sg=: ~. @ (,/) @ ({"1/~) ^: _ @ (i.@{:@$ , ]) sg ,: 1 2 3 0 4 0 1 2 3 4 1 2 3 0 4 2 3 0 1 4 3 0 1 2 4 # sg 1 2 3 4 5 0 ,: 1 0 2 3 4 5 720
Example 5: Transitive Closure
x=: (#x)<. (#x),~x=: (i.20)+1+20 ?.@# 3 (i.#x) ,: x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 4 5 5 7 6 9 9 10 12 11 14 14 15 16 18 18 18 20 20 20 {&x^:(<15) 0 0 1 4 7 9 12 14 16 18 20 20 20 20 20 20 {&x^:a: 0 0 1 4 7 9 12 14 16 18 20 x {~^:a: 0 0 1 4 7 9 12 14 16 18 20
Interpretation: x specifies a directed graph with nodes numbered i.#x and links from i to i{x . For example, the links are: 0 1 , 1 4 , 2 5 , 3 5 and so on. Then {&x^:a:0 or x{~^:a:0 computes all the nodes reachable from node 0.
Example 6: Transitive Closure
Each record of a file begins with a byte indicating the record length (excluding the record length byte itself), followed by the record contents. Given a file, the verb rec below produces the list of boxed records.
rec=: 3 : 0 n=. #y d=. _1 ,~ n<.1+(i.n)+a.i.y m=. d {~^:a: 0 ((i.n) e. m) <;._1 y ) randomfile=: 3 : 0 c =. 1+y ?@$ 255 NB. record lengths rec=. {&a.&.> c ?@$&.> 256 NB. record contents (c{a.),&.> rec NB. records with lengths ) boxed_rec=: randomfile 1000 $ boxed_rec 1000 file=: ; boxed_rec $ file 132045 r=: rec file $r 1000 r -: }.&.> boxed_rec 1
The last phrase verifies that the result of rec are the records without the leading length bytes.