# Pochhammer.frink

``` /** This program calculates the "rising factorial" and the "falling factorial."     Sometimes this is called the "Pochhammer function" but that naming     convention is almost certainly going to be ambiguous.  (See Knuth, below)     Beware the (terrible) notation as (v)_k or v^(n) which may represent either     the rising or falling factorial!  (Just because a quantity is in parentheses     you're supposed to infer that it means some totally different thing than     that number in parentheses?!  Get out of here with that, you, and your     binomial theorem notation and your Legendre symbol notation and your Jacobi     symbol notation and every other mathematician who thought "hey I'm just     gonna make parentheses mean something TOTALLY NEW and AMBIGUOUS and name it     after myself.")     Pochhammer himself used that notation to mean something else!  So stop it!     See     Knuth, Donald E.  "Two Notes on Notation",     https://arxiv.org/abs/math/9205211     beginning around equation (2.11) for many more details and better (but still     ambiguous and awful) notation. */ /** Calculate the rising factorial.     The rising factorial calculates:      v (v+1) (v+2) ... (v + k - 1)     This function is closely related to the gamma function, which is closely     related to the factorial.     This implementation includes an extension to negative numbers, where:     risingFactorial[v, -k] := (-1)^-k / risingFactorial[1-v, -k]     Since this function only utilizes basic arithmetic, it automatically     works to arbitrary precision and works for complex numbers.     This function also works with symbolic values of v:     risingFactorial[x,3]   produces:     x (1 + x) (2 + x)         See:     https://en.wikipedia.org/wiki/Falling_and_rising_factorials     Gonzalez, Ivan & Jiu, Lin & Moll, Victor. (2015). Pochhammer Symbol with     Negative Indices. A New Rule for the Method of Brackets. Open     Mathematics. 14. 10.1515/math-2016-0063.    Which can be found at: https://www.researchgate.net/publication/280695601_Pochhammer_Symbol_with_Negative_Indices_A_New_Rule_for_the_Method_of_Brackets/fulltext/55c4077508aeb97567402184/280695601_Pochhammer_Symbol_with_Negative_Indices_A_New_Rule_for_the_Method_of_Brackets.pdf?origin=publication_detail    or in arxiv:    https://arxiv.org/abs/1508.00056 */ risingFactorial[v, k] := {    if ! isInteger[k]    {       println["risingFactorial not defined for non-integer value k = \$k"]       return undef    }    // Extension to negative numbers    if k < 0       return (-1)^-k / risingFactorial[1-v, -k]        product = 1    for s = 0 to k-1       product = product * (v+s)        return product } /** An alternate name for the rising factorial.  As noted above, the     name "Pochhammer" can indicate a rising or falling factorial depending     on the conventions in your field and this usage should be deprecated. */ Pochhammer[v, k] := risingFactorial[v, k] /** Calculate the falling factorial.    This calculates    x (x-1) (x-2) ... (x-n+1)             See    https://en.wikipedia.org/wiki/Falling_and_rising_factorials */ fallingFactorial[x, n] := {    product = 1    for k = 0 to n-1       product = product * (x-k)    return product } /** This is a generalization of the binomial theorem to rational r using     Newton's generalization.  r can even be symbolic.     This utilizes the fact that the binomial theorem for (r, k)     can be generalized for r and integer k by:     fallingFactorial[r, k] / k!     See:     https://en.wikipedia.org/wiki/Binomial_theorem#Newton's_generalized_binomial_theorem */ generalizedBinomial[r, k] := fallingFactorial[r, k] / k! ```

This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 18783 days, 12 hours, 57 minutes ago.