Power: Difference between revisions

From NARS2000
Jump to navigationJump to search
No edit summary
No edit summary
Line 11: Line 11:
   <td></td>
   <td></td>
   <td></td>
   <td></td>
   <td>for non-negative singleton integer <apll><i>b</i></apll>, successively applies the function <apll><i>f</i></apll> (or, if there is a Left argument, the function <apll>L∘<i>f</i></apll>) to <apll>R</apll>, <apll><i>b</i></apll> number of times.</td>
   <td>for non-negative integer scalar <apll><i>b</i></apll>, successively applies the function <apll><i>f</i></apll> (or, if there is a Left argument, the function <apll>L∘<i>f</i></apll>) to <apll>R</apll>, <apll><i>b</i></apll> number of times;<br/>
      for a negative integer scalar <apll><i>b</i></apll>, successively applies the inverse of the function <apll><i>f</i></apll> (or, if there is a Left argument, the inverse to the function <apll>L∘<i>f</i></apll>), <apll>|<i>b</i></apll> number of times</td>
</tr>
</tr>


Line 23: Line 24:


<tr>
<tr>
   <td colspan="4">In the second case, <apll><i>b</i></apll> must be a non-negative integer singleton.  If <apll><i>b</i></apll> is a negative integer singleton, a <apll>NONCE ERROR</apll> is signaled as Function Inverses haven't been implemented as yet; otherwise a <apll>DOMAIN ERROR</apll> is signaled.</td>
   <td colspan="4">In the second case, <apll><i>b</i></apll> must be an integer scalar, otherwise a <apll>DOMAIN ERROR</apll> is signaled.</td>
</tr>
</tr>


Line 43: Line 44:
       phi
       phi
1.618033988749894
1.618033988749894
</pre></apll>
=Inverses=
When the right operand to the Power Operator is a negative integer scalar, the inverse of the function left operand is applied to the right argument.  At the moment, only a few inverse functions are available as follows:
<table border="1" cellpadding="5" cellspacing="0" summary="">
<tr>
  <td>'''Function'''</td>
  <td>'''Meaning of Inverse'''</td>
</tr>
<tr>
  <td><apll>  L⊥⍣¯1 R</apll></td>
  <td><apll><apll>(N⍴L)⊤R</apll> for <apll>N</apll> sufficiently large to display all digits of <apll>R</apll></td>
</tr>
<tr>
  <td><apll>    ⊥⍣¯1 R</apll></td>
  <td><apll>2⊥⍣¯1 R</apll></td>
</tr>
<tr>
  <td><apll>  L⊤⍣¯1 R</apll></td>
  <td><apll>L⊥R</apll></td>
</tr>
<tr>
  <td><apll>  ×/⍣¯1 R</apll></td>
  <td><apll>πR</apll>, that is, factor <apll>R</apll></td>
</tr>
<tr>
  <td><apll>    π⍣¯1 R</apll></td>
  <td><apll>×/R</apll>, that is, multiply together the factors</td>
</tr>
<tr>
  <td><apll>  +\⍣¯1 R</apll></td>
  <td><apll>¯2-\R</apll></td>
</tr>
<tr>
  <td><apll> ¯2-\⍣¯1 R</apll></td>
  <td><apll>  +\R</apll></td>
</tr>
<tr>
  <td><apll> +∘÷/⍣¯1 R</apll></td>
  <td>Display the [https://en.wikipedia.org/wiki/Continued_fraction Continued Fraction] expansion of <apll>R</apll> to at most <apll>⎕PP</apll> terms</td>
</tr>
<tr>
  <td><apll>L+∘÷/⍣¯1 R</apll></td>
  <td>Display the [https://en.wikipedia.org/wiki/Continued_fraction Continued Fraction] expansion of <apll>R</apll> to at most <apll>L</apll> terms</td>
</tr>
</table>
<p>For example,</p>
<apll><pre>
      10⊥⍣¯1 1234567890
1 2 3 4 5 6 7 8 9 0
      ⊥⍣¯1 19
1 0 0 1 1
      10 10 10⊤⍣¯1 2 3 4
234
      ×/⍣¯1 130
2 5 13
      π⍣¯1 2 5 13
130
      +\⍣¯1 ⍳4
1 1 1 1
      ¯2-\⍣¯1 4⍴1
1 2 3 4
      +∘÷/⍣¯1 449<_r/>303
1 2 13 3 1 2
      +∘÷/+∘÷/⍣¯1 449<_r/>303
449<_r/>303
      15 +∘÷/⍣¯1 ○1<_x/>
3 7 15 1 292 1 1 1 2 1 3 1 14 2 1
      +∘÷\3 7 15 1<_x/>    ⍝ Convergents to Pi
3 22<_r/>7 333<_r/>106 355<_r/>113
      25 +∘÷/⍣¯1 *1<_x/>
2 1 2 1 1 4 1 1 6 1 1 8 1 1 10 1 1 12 1 1 14 1 1 16 1
</pre></apll>
</pre></apll>

Revision as of 20:57, 17 December 2019

Z←{L} fg R successively applies the function f (or, if there is a Left argument, the function L∘f) to R until the expression Zn g Zn-1 returns a singleton 1. Zn and Zn-1 represent two consecutive applications of f (or L∘f) to R where Z0←R and Znf Zn-1 (or Zn←L∘f Zn-1).
Z←{L} fb R for non-negative integer scalar b, successively applies the function f (or, if there is a Left argument, the function L∘f) to R, b number of times;
for a negative integer scalar b, successively applies the inverse of the function f (or, if there is a Left argument, the inverse to the function L∘f), |b number of times
L and R are arbitrary arrays.
In the first case, Zn g Zn-1 must return a Boolean-valued singleton; otherwise a DOMAIN ERROR is signaled.
In the second case, b must be an integer scalar, otherwise a DOMAIN ERROR is signaled.


For example,

      sqrt←{{0.5×⍵+⍺÷⍵}⍣=⍨⍵} ⍝ Calculate square root using Newton's method
      sqrt 2
1.414213562373095
      fib←{⍵,+/¯2↑⍵} ⍝ Calculate a Fibonacci sequence
      fib⍣15 ⊢ 1 1
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 
      pow←{⍵=0:,1 ⋄ ⍺+⍡×⍣(⍵-1) ⍺} ⍝ Raise a polynomial to a non-negative integer power
      1 ¯1 pow 5
1 ¯5 10 ¯10 5 ¯1
      phi←1+∘÷⍣=1 ⍝ Calculate the Golden Ratio
      phi
1.618033988749894

Inverses

When the right operand to the Power Operator is a negative integer scalar, the inverse of the function left operand is applied to the right argument. At the moment, only a few inverse functions are available as follows:

Function Meaning of Inverse
L⊥⍣¯1 R (N⍴L)⊤R for N sufficiently large to display all digits of R
⊥⍣¯1 R 2⊥⍣¯1 R
L⊤⍣¯1 R L⊥R
×/⍣¯1 R πR, that is, factor R
π⍣¯1 R ×/R, that is, multiply together the factors
+\⍣¯1 R ¯2-\R
¯2-\⍣¯1 R +\R
+∘÷/⍣¯1 R Display the Continued Fraction expansion of R to at most ⎕PP terms
L+∘÷/⍣¯1 R Display the Continued Fraction expansion of R to at most L terms

For example,

      10⊥⍣¯1 1234567890
1 2 3 4 5 6 7 8 9 0
      ⊥⍣¯1 19
1 0 0 1 1
      10 10 10⊤⍣¯1 2 3 4
234
      ×/⍣¯1 130
2 5 13 
      π⍣¯1 2 5 13
130
      +\⍣¯1 ⍳4
1 1 1 1 
      ¯2-\⍣¯1 4⍴1
1 2 3 4
      +∘÷/⍣¯1 449r303
1 2 13 3 1 2
      +∘÷/+∘÷/⍣¯1 449r303
449r303
      15 +∘÷/⍣¯1 ○1x
3 7 15 1 292 1 1 1 2 1 3 1 14 2 1
      +∘÷\3 7 15 1x     ⍝ Convergents to Pi
3 22r7 333r106 355r113 
      25 +∘÷/⍣¯1 *1x
2 1 2 1 1 4 1 1 6 1 1 8 1 1 10 1 1 12 1 1 14 1 1 16 1