Circular: Difference between revisions

Jump to navigation Jump to search
288 bytes added ,  22:28, 10 September 2022
m
Text replacement - "</source>" to "</syntaxhighlight>"
m (Text replacement - "<source" to "<syntaxhighlight")
m (Text replacement - "</source>" to "</syntaxhighlight>")
Tags: Mobile edit Mobile web edit
 
Line 1: Line 1:
{{Built-in|Circular|○}}, or '''Circle Function''', is a [[dyadic]] [[scalar function]], which is essentially a collection of related monadic functions. Circular encompasses [[wikipedia:trigonometric functions|trigonometric functions]], [[wikipedia:hyperbolic functions|hyperbolic functions]], and a few relationships between them. On some implementations with [[complex number|complex numbers]], Circular also includes functions to decompose and assemble a complex number. It shares the [[glyph]] <syntaxhighlight lang=apl inline>○</source> with the [[monadic]] arithmetic function [[Pi Times]].
{{Built-in|Circular|○}}, or '''Circle Function''', is a [[dyadic]] [[scalar function]], which is essentially a collection of related monadic functions. Circular encompasses [[wikipedia:trigonometric functions|trigonometric functions]], [[wikipedia:hyperbolic functions|hyperbolic functions]], and a few relationships between them. On some implementations with [[complex number|complex numbers]], Circular also includes functions to decompose and assemble a complex number. It shares the [[glyph]] <syntaxhighlight lang=apl inline>○</syntaxhighlight> with the [[monadic]] arithmetic function [[Pi Times]].


== Design ==
== Design ==


The Circular function, as found in today's APL implementations, was designed by  [[Gene McDonnell]], based on three things:<ref>[[Gene McDonnell|McDonnell, Gene]]. [https://www.jsoftware.com/papers/eem/storyofo.htm The Story of <syntaxhighlight lang=apl inline>○</source>]. Recreational APL. [[APL Quote-Quad]], Volume 8, Number 2, 1977-12.</ref>
The Circular function, as found in today's APL implementations, was designed by  [[Gene McDonnell]], based on three things:<ref>[[Gene McDonnell|McDonnell, Gene]]. [https://www.jsoftware.com/papers/eem/storyofo.htm The Story of <syntaxhighlight lang=apl inline>○</syntaxhighlight>]. Recreational APL. [[APL Quote-Quad]], Volume 8, Number 2, 1977-12.</ref>
* [[Ken Iverson]] stating that [[Semantic density|a concise programming language]] must group together related monadic functions as a dyadic function that takes a "controlling parameter" as left argument to select specific function.
* [[Ken Iverson]] stating that [[Semantic density|a concise programming language]] must group together related monadic functions as a dyadic function that takes a "controlling parameter" as left argument to select specific function.
* The sine, tangent, hyperbolic sine, and hyperbolic tangent are [[wikipedia:odd function|odd functions]].
* The sine, tangent, hyperbolic sine, and hyperbolic tangent are [[wikipedia:odd function|odd functions]].
Line 13: Line 13:


{| class="wikitable c" style="margin: 1em auto 1em auto"
{| class="wikitable c" style="margin: 1em auto 1em auto"
! style="width:33%" | <syntaxhighlight lang=apl inline>(-X)○Y</source> !! style="width:33%" | <syntaxhighlight lang=apl inline>X</source> !! <syntaxhighlight lang=apl inline>X○Y</source>
! style="width:33%" | <syntaxhighlight lang=apl inline>(-X)○Y</syntaxhighlight> !! style="width:33%" | <syntaxhighlight lang=apl inline>X</syntaxhighlight> !! <syntaxhighlight lang=apl inline>X○Y</syntaxhighlight>
|-
|-
| → || 0 || <math>\sqrt{1-Y^2}</math>
| → || 0 || <math>\sqrt{1-Y^2}</math>
Line 40: Line 40:
  cos  1 6.1232E¯17 ¯1         
  cos  1 6.1232E¯17 ¯1         
  tan  0 1.6331E16  ¯1.2246E¯16
  tan  0 1.6331E16  ¯1.2246E¯16
</source>{{Works in|[[Dyalog APL]]}}
</syntaxhighlight>{{Works in|[[Dyalog APL]]}}


<syntaxhighlight lang=apl inline>0○Y</source> and <syntaxhighlight lang=apl inline>4○Y</source>/<syntaxhighlight lang=apl inline>¯4○Y</source> reflect the identities <math>\sin^2{Y} + \cos^2{Y} = 1</math> and <math>\cosh^2{Y} - \sinh^2{Y} = 1</math> respectively. In APL code, <syntaxhighlight lang=apl inline>0○Y</source> is equivalent to <syntaxhighlight lang=apl inline>1○¯2○Y</source> and <syntaxhighlight lang=apl inline>2○¯1○Y</source>, <syntaxhighlight lang=apl inline>4○Y</source> is equivalent to <syntaxhighlight lang=apl inline>6○¯5○Y</source>, and <syntaxhighlight lang=apl inline>¯4○Y</source> is equivalent to <syntaxhighlight lang=apl inline>5○¯6○Y</source>.
<syntaxhighlight lang=apl inline>0○Y</syntaxhighlight> and <syntaxhighlight lang=apl inline>4○Y</syntaxhighlight>/<syntaxhighlight lang=apl inline>¯4○Y</syntaxhighlight> reflect the identities <math>\sin^2{Y} + \cos^2{Y} = 1</math> and <math>\cosh^2{Y} - \sinh^2{Y} = 1</math> respectively. In APL code, <syntaxhighlight lang=apl inline>0○Y</syntaxhighlight> is equivalent to <syntaxhighlight lang=apl inline>1○¯2○Y</syntaxhighlight> and <syntaxhighlight lang=apl inline>2○¯1○Y</syntaxhighlight>, <syntaxhighlight lang=apl inline>4○Y</syntaxhighlight> is equivalent to <syntaxhighlight lang=apl inline>6○¯5○Y</syntaxhighlight>, and <syntaxhighlight lang=apl inline>¯4○Y</syntaxhighlight> is equivalent to <syntaxhighlight lang=apl inline>5○¯6○Y</syntaxhighlight>.


<syntaxhighlight lang=apl>
<syntaxhighlight lang=apl>
Line 61: Line 61:
       5○¯6○1 3 10
       5○¯6○1 3 10
0 2.8284 9.9499
0 2.8284 9.9499
</source>
</syntaxhighlight>


On implementations with complex number support, <syntaxhighlight lang=apl inline>¯4○Y</source> is modified to <math>(Y+1)\sqrt{\frac{Y-1}{Y+1}}</math> so that it agrees with <syntaxhighlight lang=apl inline>5○¯6○Y</source> for complex numbers.
On implementations with complex number support, <syntaxhighlight lang=apl inline>¯4○Y</syntaxhighlight> is modified to <math>(Y+1)\sqrt{\frac{Y-1}{Y+1}}</math> so that it agrees with <syntaxhighlight lang=apl inline>5○¯6○Y</syntaxhighlight> for complex numbers.


As a [[mnemonics|mnemonic]], the functions for even X are [[wikipedia:even function|even functions]], and those for odd X are [[wikipedia:odd function|odd functions]]. Also, <syntaxhighlight lang=apl inline>X○Y</source> and <syntaxhighlight lang=apl inline>(-X)○Y</source> are inverses of each other.
As a [[mnemonics|mnemonic]], the functions for even X are [[wikipedia:even function|even functions]], and those for odd X are [[wikipedia:odd function|odd functions]]. Also, <syntaxhighlight lang=apl inline>X○Y</syntaxhighlight> and <syntaxhighlight lang=apl inline>(-X)○Y</syntaxhighlight> are inverses of each other.


=== Functions added with complex number support ===
=== Functions added with complex number support ===
Line 72: Line 72:


{| class="wikitable c" style="margin: 1em auto 1em auto"
{| class="wikitable c" style="margin: 1em auto 1em auto"
! style="width:33%" | <syntaxhighlight lang=apl inline>(-X)○Y</source> !! style="width:33%" | <syntaxhighlight lang=apl inline>X</source> !! <syntaxhighlight lang=apl inline>X○Y</source>
! style="width:33%" | <syntaxhighlight lang=apl inline>(-X)○Y</syntaxhighlight> !! style="width:33%" | <syntaxhighlight lang=apl inline>X</syntaxhighlight> !! <syntaxhighlight lang=apl inline>X○Y</syntaxhighlight>
|-
|-
| <math>-\sqrt{-1-Y^2}</math> || 8 || <math>\sqrt{-1-Y^2}</math>
| <math>-\sqrt{-1-Y^2}</math> || 8 || <math>\sqrt{-1-Y^2}</math>
Line 99: Line 99:
       ¯10 ¯12×.○mat
       ¯10 ¯12×.○mat
1J2 3J¯4 ¯5J¯6
1J2 3J¯4 ¯5J¯6
</source>{{Works in|[[Dyalog APL]]}}
</syntaxhighlight>{{Works in|[[Dyalog APL]]}}


[[J]] has separate built-in functions for these operations: [https://code.jsoftware.com/wiki/Vocabulary/plusdot '''Real/Imag'''] <syntaxhighlight lang=j inline>+.</source> (Cartesian decomposition), [https://code.jsoftware.com/wiki/Vocabulary/stardot '''Length/Angle'''] <syntaxhighlight lang=j inline>*.</source> (polar decomposition), [https://code.jsoftware.com/wiki/Vocabulary/jdot#dyadic '''Complex'''] <syntaxhighlight lang=j inline>j.</source> (Cartesian assembly), and [https://code.jsoftware.com/wiki/Vocabulary/rdot#dyadic '''Polar'''] <syntaxhighlight lang=j inline>r.</source> (polar assembly). Note that, unlike the APL version above, <syntaxhighlight lang=j inline>+.</source> and <syntaxhighlight lang=j inline>*.</source> create a trailing axis of length 2.
[[J]] has separate built-in functions for these operations: [https://code.jsoftware.com/wiki/Vocabulary/plusdot '''Real/Imag'''] <syntaxhighlight lang=j inline>+.</syntaxhighlight> (Cartesian decomposition), [https://code.jsoftware.com/wiki/Vocabulary/stardot '''Length/Angle'''] <syntaxhighlight lang=j inline>*.</syntaxhighlight> (polar decomposition), [https://code.jsoftware.com/wiki/Vocabulary/jdot#dyadic '''Complex'''] <syntaxhighlight lang=j inline>j.</syntaxhighlight> (Cartesian assembly), and [https://code.jsoftware.com/wiki/Vocabulary/rdot#dyadic '''Polar'''] <syntaxhighlight lang=j inline>r.</syntaxhighlight> (polar assembly). Note that, unlike the APL version above, <syntaxhighlight lang=j inline>+.</syntaxhighlight> and <syntaxhighlight lang=j inline>*.</syntaxhighlight> create a trailing axis of length 2.


<syntaxhighlight lang=j>
<syntaxhighlight lang=j>
Line 117: Line 117:
       r./"1 mat
       r./"1 mat
1j2 3j_4 _5j_6
1j2 3j_4 _5j_6
</source>{{Works in|[[J]]}}
</syntaxhighlight>{{Works in|[[J]]}}


== References ==
== References ==

Navigation menu