Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
45
Task/Bernoulli-numbers/Lua/bernoulli-numbers.lua
Normal file
45
Task/Bernoulli-numbers/Lua/bernoulli-numbers.lua
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env luajit
|
||||
local gmp = require 'gmp' ('libgmp')
|
||||
local ffi = require'ffi'
|
||||
local mpz, mpq = gmp.types.z, gmp.types.q
|
||||
local function mpq_for(buf, op, n)
|
||||
for i=0,n-1 do
|
||||
op(buf[i])
|
||||
end
|
||||
end
|
||||
local function bernoulli(rop, n)
|
||||
local a=ffi.new("mpq_t[?]", n+1)
|
||||
mpq_for(a, gmp.q_init, n+1)
|
||||
|
||||
for m=0,n do
|
||||
gmp.q_set_ui(a[m],1, m+1)
|
||||
for j=m,1,-1 do
|
||||
gmp.q_sub(a[j-1], a[j], a[j-1])
|
||||
gmp.q_set_ui(rop, j, 1)
|
||||
gmp.q_mul(a[j-1], a[j-1], rop)
|
||||
end
|
||||
end
|
||||
gmp.q_set(rop,a[0])
|
||||
mpq_for(a, gmp.q_clear, n+1)
|
||||
end
|
||||
do --MAIN
|
||||
local rop=mpq()
|
||||
local n,d=mpz(),mpz()
|
||||
gmp.q_init(rop)
|
||||
gmp.z_inits(n, d)
|
||||
local to=arg[1] and tonumber(arg[1]) or 60
|
||||
local from=arg[2] and tonumber(arg[2]) or 0
|
||||
if from~=0 then to,from=from,to end
|
||||
|
||||
|
||||
for i=from,to do
|
||||
bernoulli(rop, i)
|
||||
if gmp.q_cmp_ui(rop, 0, 1)~=0 then
|
||||
gmp.q_get_num(n, rop)
|
||||
gmp.q_get_den(d, rop)
|
||||
gmp.printf("B(%-2g) = %44Zd / %Zd\n", i, n, d)
|
||||
end
|
||||
end
|
||||
gmp.z_clears(n,d)
|
||||
gmp.q_clear(rop)
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue