2017年7月10日月曜日

170710

Ruby


Borcherds Products(2)

E_{2k} = (1 - q)^c(1) * (1 - q^2)^c(2) * (1 - q^3)^c(3) * ...
となるc(n) を出力してみた。

require 'prime'

def power0(a, n)
  return 1 if n == 0
  k = power0(a, n >> 1)
  k *= k
  return k if n & 1 == 0
  return k * a
end

# x > 0
def sigma(x, i)
  sum = 1
  pq = i.prime_division
  pq.each{|a, n| sum *= (power0(a, (n + 1) * x) - 1) / (power0(a, x) - 1)}
  sum
end

def bernoulli(n)
  ary = []
  a = []
  (0..n).each{|i|
    a << 1r / (i + 1)
    i.downto(1){|j| a[j - 1] = j * (a[j - 1] - a[j])}
    ary << a[0] # Bn = a[0]
  }
  ary
end

def E0_2k(k, n)
  a = -4 * k / bernoulli(2 * k)[-1]
  [1] + (1..n).map{|i| a * sigma(2 * k - 1, i)}
end

# ary[0]を計算の都合上上手く利用
def qdEE(k, n)
  ary = [1]
  a = E0_2k(k, n)
  (1..n).each{|i|
    ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]}
    ary[0] += 1
  }
  # qE'/Eを出力
  p ary[1..-1]
  ary
end

def A008683(n)
  ary = n.prime_division
  return (-1) ** (ary.size % 2) if ary.all?{|i| i[1] == 1}
  0
end

def A(k, n)
  a = qdEE(k, n)
  m_ary = [0] + (1..n).map{|i| A008683(i)}
  ary = []
  (1..n).each{|i|
    s = 0
    (1..i).each{|j|
      s += m_ary[i / j] * a[j] if i % j == 0
    }
    ary << s / i
  }
  ary
end

n = 20
(1..7).each{|k| p [2 * k, A(k, n)]}

出力結果
[(24/1), (720/1), (19296/1), (517920/1), (13893264/1), (372707136/1), (9998360256/1), (268219317312/1), (7195339794744/1), (193024557070560/1), (5178140391612960/1), (138910500937231488/1), (3726458885094926160/1), (99967214347459657344/1), (2681753442755678231616/1), (71941601800917818208384/1), (1929929122926214154035632/1), (51772914784769611993777296/1), (1388877277133816982094600416/1), (37258479630861088042349726400/1)]
[2, [(24/1), (348/1), (6424/1), (129300/1), (2778648/1), (62114524/1), (1428337176/1), (33527349924/1), (799482197272/1), (19302454317660/1), (470740035601176/1), (11575875047000596/1), (286650683468840472/1), (7140515309818664028/1), (178783562850377621272/1), (4496350112540599930692/1), (113525242525071420825624/1), (2876273043597912015627484/1), (73098804059674578004978968/1), (1862923981543044750889606932/1)]]
[(-240/1), (53280/1), (-12288960/1), (2835808320/1), (-654403831200/1), (151013228757120/1), (-34848505552897920/1), (8041801037378486400/1), (-1855762905734676483120/1), (428244362959801779806400/1), (-98823634118413525094402880/1), (22804995243537595828606337280/1), (-5262585338995033221326389251360/1), (1214418339247561600451288629674240/1), (-280244748103684391377173184168924800/1), (64670563924749466394147714714046562560/1), (-14923676060461817600380995991658397700320/1), (3443855962300764146093216928957388554932640/1), (-794720003370771809323025500213738023874564800/1), (183393234406846382045882997606216500974092681600/1)]
[4, [(-240/1), (26760/1), (-4096240/1), (708938760/1), (-130880766192/1), (25168873498760/1), (-4978357936128240/1), (1005225129317834760/1), (-206195878414962688240/1), (42824436296045618358408/1), (-8983966738037593190400240/1), (1900416270294787067711818760/1), (-404814256845771786255876096240/1), (86744167089111545378556727322760/1), (-18682983206912292758478168650186992/1), (4041910245296841649131619604791754760/1), (-877863297674224564728293881862258688240/1), (191325331238931341449726260650672777242760/1), (-41827368598461674174896078958617790730240240/1), (9169661720342319102294128468092677058473856008/1)]]
[(504/1), (287280/1), (153540576/1), (82226602080/1), (44031499226064/1), (23578504122108096/1), (12626092121367162816/1), (6761166974864088760512/1), (3620548496603402008959384/1), (1938773508354916749345180960/1), (1038197035676506069321210300320/1), (555945849395316042744806163186048/1), (297704363274819300973648925452721040/1), (159418202346978959358843609900591944064/1), (85367117095565698138593773880519864618816/1), (45713378860880921566308709979981162458644864/1), (24479132925843908660058308463908687996314100592/1), (13108371416270932659697141110857950973979134065776/1), (7019423510932426730578291404265424048253131675416416/1), (3758842716698661712241372736333114614609259840168936000/1)]
[6, [(504/1), (143388/1), (51180024/1), (20556578700/1), (8806299845112/1), (3929750661380124/1), (1803727445909594616/1), (845145871847732769804/1), (402283166289266872824312/1), (193877350835487271784566812/1), (94381548697864188120110027256/1), (46328820782943001597184984563596/1), (22900335636524561613357609650209272/1), (11387014453355639953301251269944606748/1), (5691141139704379875906251589099214123512/1), (2857086178805057597893871800812893648117772/1), (1439948995637876980003429909641687529194947064/1), (728242856459496258872063193906079488448508696604/1), (369443342680654038451489021277127581487006930285048/1), (187942135834933085612068636719717055312717150429872012/1)]]
[(-480/1), (106560/1), (-24577920/1), (5671616640/1), (-1308807662400/1), (302026457514240/1), (-69697011105795840/1), (16083602074756972800/1), (-3711525811469352966240/1), (856488725919603559612800/1), (-197647268236827050188805760/1), (45609990487075191657212674560/1), (-10525170677990066442652778502720/1), (2428836678495123200902577259348480/1), (-560489496207368782754346368337849600/1), (129341127849498932788295429428093125120/1), (-29847352120923635200761991983316795400640/1), (6887711924601528292186433857914777109865280/1), (-1589440006741543618646051000427476047749129600/1), (366786468813692764091765995212433001948185363200/1)]
[8, [(-480/1), (53520/1), (-8192480/1), (1417877520/1), (-261761532384/1), (50337746997520/1), (-9956715872256480/1), (2010450258635669520/1), (-412391756829925376480/1), (85648872592091236716816/1), (-17967933476075186380800480/1), (3800832540589574135423637520/1), (-809628513691543572511752192480/1), (173488334178223090757113454645520/1), (-37365966413824585516956337300373984/1), (8083820490593683298263239209583509520/1), (-1755726595348449129456587763724517376480/1), (382650662477862682899452521301345554485520/1), (-83654737196923348349792157917235581460480480/1), (18339323440684638204588256936185354116947712016/1)]]
[(264/1), (340560/1), (141251616/1), (85062410400/1), (43377095394864/1), (23729517350865216/1), (12591243615814264896/1), (6769208775901467246912/1), (3618692733697667332476264/1), (1939201752717876551124987360/1), (1038098212042387655796115897440/1), (555968654390559580340634769523328/1), (297699100689480305940427599063469680/1), (159419416765318206920444061189221618304/1), (85366836850817594454202396707335695694016/1), (45713443531444846315775104127695876505207424/1), (24479118002167848198240708082912696337916400272/1), (13108374860126894960461287204074879931367688998416/1), (7019422716212423359806482081239923834515107800851616/1), (3758842900091896119087754782216112220825760814261617600/1)]
[10, [(264/1), (170148/1), (47083784/1), (21265517460/1), (8675419078920/1), (3954919534878884/1), (1798749087973466376/1), (846151096977050604564/1), (402076970410851910136072/1), (193920175271783317402925220/1), (94372564731126150526919627016/1), (46330721199213296384252696382356/1), (22899930822267715841571353774113032/1), (11387101197522729064846629826671929508/1), (5691122456721172963613493110930563936520/1), (2857090220715302894735520932432498439872532/1), (1439948117774579305778865181347805666936258824/1), (728243047784827497803404643632340139121285939364/1), (369443300853285439989814846381048622869216200044808/1), (187942145004594805954387739013845523405394208903728020/1)]]
[(-65520/691), (-181241292960/477481), (1327039595219520/329939371), (16726529010193003834560/227988105361), (-212292443034667545563613600/157539780804451), (-1528649681810919339412397043354240/108859988535875641), (27164473060529939410885608434561293440/75222252078290067931), (139687438912977894679060436101569158428963200/51978576186098436940321), (-3193463223842507280175746274546318586709753414960/35917196144594019925761811), (-12760941836599382345853182009220325316746406140948900800/24818782535914467768701411401), (356849194725533394910591056782950070710601622635665212077760/17149778732316897228172675278091), (1165426878836468344118964839868617205169221239767199309395926455040/11850497104030975984667318617160881), (-38553804480607725215290179618637159035117781145082483289178548106683680/8188693498885404405405117164458168771), (-106405445205627846270822176358961029423817153288294230849493191583102409422080/5658387207729814444134935960640594620761), (4066363140385766008775333102335496734262730722528940739119216398979996237413385600/3909945560541301780897240748802650882945851), (9712225199724388534253473966937692734606569491858692083463225359804746118353448754266880/2701772382334039530599993357422631760115583041), (-421224830028650234025369176318489698028570749040417990650073546093929870607562964294077953760/1866924716192821315644595409979038546239867881331), (-886235566849575408386559844275844948183839658161234093955586295948651511166146475578854785676187680/1290044978889239529110415428295515635451748705999721), (43025693225775251885845031687057113510329466300208931977445869733993002384639653998921260403709882401600/891421080412464514615297060952201304097158355845807211), (80845257078377442797673535848916443999448180879548242369896298541209370209618292421140794551029954179792284800/615971966565012979599170269117971101131136423889452782801)]
[12, [(-65520/691), (-90598009320/477481), (442356959924880/329939371), (4181653887366701917080/227988105361), (-42458488603945952980072176/157539780804451), (-254774947034575235293755006524520/108859988535875641), (3880639008647135220484579615019041680/75222252078290067931), (17460929863645555627595091312548802016985880/51978576186098436940321), (-354829247093611936070806821866257430345618791920/35917196144594019925761811), (-1276094183659934890133882157523523545125344766994118376/24818782535914467768701411401), (32440835884139399537326459855370609314883413712816517006480/17149778732316897228172675278091), (97118906569705709210573520959547444017684136845556422972756182680/11850497104030975984667318617160881), (-2965677267739055785791552278356644814657501925810459068189442440443120/8188693498885404405405117164458168771), (-7600388943259131876633253514220856068432291088409001371962609628048977090920/5658387207729814444134935960640594620761), (271090876025717733918355540506954732367235799025182315752511378202861327020545424/3909945560541301780897240748802650882945851), (607014074982774283390388325796994596354985762176484835702005044352963314819300778067480/2701772382334039530599993357422631760115583041), (-24777931178155896119139363312852335178151210118840676477870794187197946604513531854181006320/1866924716192821315644595409979038546239867881331), (-49235309269420856021475540531976768979239719853660121129359006492384209098786948996506185350022120/1290044978889239529110415428295515635451748705999721), (2264510169777644836097106930897742816333129805278602932866457510944227200184293483334529419943525480080/891421080412464514615297060952201304097158355845807211), (4042262853918872139883676808281374219773059002646605610083148804543384350122733461548089761592996924639267224/615971966565012979599170269117971101131136423889452782801)]]
[(24/1), (393840/1), (128962656/1), (87898218720/1), (42722691563664/1), (23880530579622336/1), (12556395110261366976/1), (6777250576938845733312/1), (3616836970791932655993144/1), (1939629997080836352904793760/1), (1037999388408269242271021494560/1), (555991459385803117936463375860608/1), (297693838104141310907206272674218320/1), (159420631183657454482044512477851292544/1), (85366556606069490769811019534151526769216/1), (45713508202008771065241498275410590551769984/1), (24479103078491787736423107701916704679518699952/1), (13108378303982857261225433297291808888756243931056/1), (7019421921492419989034672758214423620777083926286816/1), (3758843083485130525934136828099109827042261788354299200/1)]
[14, [(24/1), (196908/1), (42987544/1), (21974456220/1), (8544538312728/1), (3980088408377644/1), (1793770730037338136/1), (847156322106368439324/1), (401870774532436947447832/1), (193962999708079363021283628/1), (94363580764388112933729226776/1), (46332621615483591171320408201116/1), (22899526008010870069785097898016792/1), (11387187941689818176392008383399252268/1), (5691103773737966051320734632761913749528/1), (2857094262625548191577170064052103231627292/1), (1439947239911281631554300453053923804677570584/1), (728243239110158736734746093358600789794063182124/1), (369443259025916841528140671484969664251425469804568/1), (187942154174256526296706841307973991498071267377584028/1)]]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。