Binomial (!
) is a dyadic scalar function which gives the binomial coefficient between the two arguments. The argument order <syntaxhighlight lang=apl inline>k!n</source> is reversed compared to most of traditional mathematical notation's alternative notations, for example and , but not others, like . Binomial shares the glyph <syntaxhighlight lang=apl inline>!</source> with the monadic arithmetic function Factorial.
Examples
For non-negative integer arguments, the binomial coefficient <syntaxhighlight lang=apl inline>k!n</source> is equal to the number of ways to choose k items out of n distinct items. For example, <syntaxhighlight lang=apl inline>3!5</source> is 10 because there are 10 ways to pick 3 items out of 5: 123, 124, 125, 134, 135, 145, 234, 235, 245, 345.
<syntaxhighlight lang=apl>
0 1 2 3 4 5!5
1 5 10 10 5 1
</source>
<syntaxhighlight lang=apl inline>k!n</source> also corresponds to the k-th value (zero-indexed) on the n-th row (also zero-indexed) of Pascal's triangle.
<syntaxhighlight lang=apl>
⍉∘.!⍨ 0,⍳5
1 0 0 0 0 0
1 1 0 0 0 0
1 2 1 0 0 0
1 3 3 1 0 0
1 4 6 4 1 0
1 5 10 10 5 1
</source>
Properties
The value of <syntaxhighlight lang=apl inline>X!Y</source> equals <syntaxhighlight lang=apl inline>(!Y)÷(!X)×!Y-X</source>.
<syntaxhighlight lang=apl>
Alt←{(!⍵)÷(!⍺)×!⍵-⍺}
0 1 2 3 4 5 Alt 5
1 5 10 10 5 1
</source>
In multiple implementations where Factorial is extended to use the Gamma function , Binomial is defined to use the above equality for non-integers. In that case, the Beta function becomes closely related to the Binomial, giving the identity <syntaxhighlight lang=apl inline>÷Y×(X-1)!X+Y-1</source>.
<syntaxhighlight lang=apl>
1 1.2 1.4 1.6 1.8 2!5
5 6.105689248 7.219424686 8.281104786 9.227916704 10
2!3j2
1J5
</source>
External links
Documentation
APL built-ins [edit]
|
Primitives (Timeline) |
Functions
|
Scalar
|
Monadic
|
Conjugate ∙ Negate ∙ Signum ∙ Reciprocal ∙ Magnitude ∙ Exponential ∙ Natural Logarithm ∙ Floor ∙ Ceiling ∙ Factorial ∙ Not ∙ Pi Times ∙ Roll ∙ Type ∙ Imaginary ∙ Square Root ∙ Round
|
Dyadic
|
Add ∙ Subtract ∙ Times ∙ Divide ∙ Residue ∙ Power ∙ Logarithm ∙ Minimum ∙ Maximum ∙ Binomial ∙ Comparison functions ∙ Boolean functions (And, Or, Nand, Nor) ∙ GCD ∙ LCM ∙ Circular ∙ Complex ∙ Root
|
Non-Scalar
|
Structural
|
Shape ∙ Reshape ∙ Tally ∙ Depth ∙ Ravel ∙ Enlist ∙ Table ∙ Catenate ∙ Reverse ∙ Rotate ∙ Transpose ∙ Raze ∙ Mix ∙ Split ∙ Enclose ∙ Nest ∙ Cut (K) ∙ Pair ∙ Link ∙ Partitioned Enclose ∙ Partition
|
Selection
|
First ∙ Pick ∙ Take ∙ Drop ∙ Unique ∙ Identity ∙ Stop ∙ Select ∙ Replicate ∙ Expand ∙ Set functions (Intersection ∙ Union ∙ Without) ∙ Bracket indexing ∙ Index ∙ Cartesian Product ∙ Sort
|
Selector
|
Index generator ∙ Grade ∙ Index Of ∙ Interval Index ∙ Indices ∙ Deal ∙ Prefix and suffix vectors
|
Computational
|
Match ∙ Not Match ∙ Membership ∙ Find ∙ Nub Sieve ∙ Encode ∙ Decode ∙ Matrix Inverse ∙ Matrix Divide ∙ Format ∙ Execute ∙ Materialise ∙ Range
|
Operators |
Monadic
|
Each ∙ Commute ∙ Constant ∙ Replicate ∙ Expand ∙ Reduce ∙ Windowed Reduce ∙ Scan ∙ Outer Product ∙ Key ∙ I-Beam ∙ Spawn ∙ Function axis ∙ Identity (Null, Ident)
|
Dyadic
|
Bind ∙ Compositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner Product ∙ Determinant ∙ Power ∙ At ∙ Under ∙ Rank ∙ Depth ∙ Variant ∙ Stencil ∙ Cut ∙ Direct definition (operator) ∙ Identity (Lev, Dex)
|
Quad names
|
Index origin ∙ Comparison tolerance ∙ Migration level ∙ Atomic vector
|