4,494
edits
m (Text replacement - "<source" to "<syntaxhighlight") |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
Line 2: | Line 2: | ||
== Description == | == Description == | ||
A call to Power is of the form <syntaxhighlight lang=apl inline>X(f⍣g)Y</ | A call to Power is of the form <syntaxhighlight lang=apl inline>X(f⍣g)Y</syntaxhighlight>, where | ||
* <syntaxhighlight lang=apl inline>X</ | * <syntaxhighlight lang=apl inline>X</syntaxhighlight> is an optional argument. | ||
* <syntaxhighlight lang=apl inline>f</ | * <syntaxhighlight lang=apl inline>f</syntaxhighlight> is a function. If <syntaxhighlight lang=apl inline>X</syntaxhighlight> is given, then it is bound to <syntaxhighlight lang=apl inline>f</syntaxhighlight> so <syntaxhighlight lang=apl inline>X f⍣g Y</syntaxhighlight> is equivalent to <syntaxhighlight lang=apl inline>X∘f⍣g Y</syntaxhighlight>. | ||
* <syntaxhighlight lang=apl inline>g</ | * <syntaxhighlight lang=apl inline>g</syntaxhighlight> can be an [[array]] or a function. | ||
Power repeatedly applies <syntaxhighlight lang=apl inline>f</ | Power repeatedly applies <syntaxhighlight lang=apl inline>f</syntaxhighlight> to <syntaxhighlight lang=apl inline>Y</syntaxhighlight> based on the type of operand <syntaxhighlight lang=apl inline>g</syntaxhighlight>: | ||
* '''Function''': Must be dyadic and must return a boolean [[singleton]]. The previous iteration value is provided as the right argument to <syntaxhighlight lang=apl inline>f</ | * '''Function''': Must be dyadic and must return a boolean [[singleton]]. The previous iteration value is provided as the right argument to <syntaxhighlight lang=apl inline>f</syntaxhighlight>, and the current iteration value is given as the left argument. <syntaxhighlight lang=apl inline>f</syntaxhighlight> is repeatedly applied until this function returns 1. | ||
* '''Integer''': Applies <syntaxhighlight lang=apl inline>f</ | * '''Integer''': Applies <syntaxhighlight lang=apl inline>f</syntaxhighlight> <syntaxhighlight lang=apl inline>g</syntaxhighlight> times to <syntaxhighlight lang=apl inline>Y</syntaxhighlight>. If <syntaxhighlight lang=apl inline>g</syntaxhighlight> is negative, then the inverse of <syntaxhighlight lang=apl inline>f</syntaxhighlight> (if available) is applied. | ||
* '''Integer Array''': In [[Extended Dyalog APL]], <syntaxhighlight lang=apl inline>g</ | * '''Integer Array''': In [[Extended Dyalog APL]], <syntaxhighlight lang=apl inline>g</syntaxhighlight> can be an integer array. Each integer <syntaxhighlight lang=apl inline>i</syntaxhighlight> in <syntaxhighlight lang=apl inline>g</syntaxhighlight> will be replaced by <syntaxhighlight lang=apl inline>⊂(f⍣i)Y</syntaxhighlight>. | ||
== Examples == | == Examples == | ||
Line 19: | Line 19: | ||
40 | 40 | ||
1 +∘÷⍣= 1 ⍝ iterate till fixed point | 1 +∘÷⍣= 1 ⍝ iterate till fixed point | ||
1.618033989</ | 1.618033989</syntaxhighlight> | ||
A well-known use for Power is iterating until a fixed point is reached. | A well-known use for Power is iterating until a fixed point is reached. | ||
<syntaxhighlight lang=apl> | <syntaxhighlight lang=apl> | ||
Line 25: | Line 25: | ||
1 0 1 | 1 0 1 | ||
1 0 1 | 1 0 1 | ||
1 0 1</ | 1 0 1</syntaxhighlight> | ||
Power is also used to access function inverses. | Power is also used to access function inverses. | ||
<syntaxhighlight lang=apl> 2(⊥⍣¯1)5 | <syntaxhighlight lang=apl> 2(⊥⍣¯1)5 | ||
1 0 1</ | 1 0 1</syntaxhighlight> | ||
== External Links == | == External Links == | ||
=== Lessons === | === Lessons === |