(49g 50g) Some Relatives of Bernoulli Numbers - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Software Libraries (/forum-10.html) +--- Forum: General Software Library (/forum-13.html) +--- Thread: (49g 50g) Some Relatives of Bernoulli Numbers (/thread-18345.html) (49g 50g) Some Relatives of Bernoulli Numbers - John Keith - 05-09-2022 03:25 PM This is a collection of three programs which compute Poly-Bernoulli numbers, Genocchi numbers and Gregory coefficients, numbers related to Bernoulli numbers. Given an integer n on level 2 and a number k on level 1, the first program PBERN returns the Poly-Bernoulli number Bn(k). If k is a negative integer, the result will be an integer. Otherwise it will be a rational number (a fraction). The level 1 argument may be symbolic, but the resulting expression may be very large. Given an integer n, the second program GENOC will return n terms of the unsigned Genocchi numbers to level 2 and the Genocchi medians A005439 to level 1. The reason for the program returning both sequences is that the Seidel algorithm used by the program generates both at once. The last program Gn returns a list of the Gregory coefficients from 0 to n. Also known as the Bernoulli numbers of the second kind, they are rational numbers as well. All three programs require the ListExt library. The programs are posted as a directory for convenience but each program is independent and any unused programs may be deleted or moved to other directories. Code: ``` DIR   PBERN   \<< OVER I\->R \-> n k r     \<< r 1.       IF >       THEN { 1 } 2. r         START 0 SWAP + 2.           \<< NSUB R\->I * +           \>> DOSUBS 1 +          @ Stirling S2 numbers         NEXT n LSEQ :: * LSCAN         -1 -1 n LMSEQ * *         @ Multiply by signed factorials         2 n 1 + LSEQR k ^ 2.      @ {2..n}^k         \<< / EVAL         \>> DOLIST \GSLIST EVAL   @ Divide, sum and simplify         r 2. MOD :: NEG IFT EVAL  @ Negate if n is odd       ELSE r 1. SAME         { 2 k ^ INV EVAL }        @ Return 1/2^k if n = 1         { n 1 + } IFTE            @ Return 1 if n = 0, preserving type       END     \>>   \>>   GENOC   \<< I\->R \-> n     \<< 1 1 { 1 } 3. n 2. *       FOR k         IF k 2. MOD         THEN 0 + :: + LSCAN DUP LPOPR NIP         ELSE REV :: + LSCAN REV DUP HEAD      @ Seidel algorithm         END NEWOB SWAP       NEXT DROP n 2. * \->LIST -2 LDIST EVAL  @ Break into 2 lists     \>>   \>>   Gn   \<< 1 - 2 OVER 1 + LSEQR :: * LSCAN \-> n f  @ Factorials 2..n     \<< 1 2 INV { 1 } 1 n       FOR k 0 SWAP + 2.         \<< k * -         \>> DOSUBS 1 + DUP 2 k 2 + LSEQR /     @ Stirling S1 numbers           \GSLIST f k GET / EVAL SWAP       NEXT DROP n 2 + \->LIST     \>>   \>> END``` RE: (49g 50g) Some Relatives of Bernoulli Numbers - John Keith - 04-09-2024 06:55 PM Some additional background information on poly-Bernoulli numbers: As mentioned above, Bn(k) is an integer if k is a negative integer. A table of these numbers can be found at A099594.. Donald Knuth has published a paper covering the history and applications of poly-Bernoulli numbers. The table on page 1 is A099594. Both links have many additional references. See also A371761.