Opened 5 years ago

Last modified 6 months ago

#18010 needs_info enhancement

This introduces function to compute multiple zeta values and finding relations between them

Reported by: akhi Owned by:
Priority: major Milestone: sage-7.4
Component: number theory Keywords: multiple zeta values, sage days 64, SD75
Cc: was Merged in:
Authors: Akhilesh P. Reviewers:
Report Upstream: N/A Work issues:
Branch: public/ticket-multizeta (Commits) Commit: 958a570c3a26bb3975ebad973257dbb8a271d7c9
Dependencies: Stopgaps:

Description (last modified by akhi)

Here it is introducing to three functions that compute multiple zeta values,
The first one multizeta it computing multiple zeta values using Double Tails, this is fastest algorithm to compute one MZV
The second allmultizetaprint is returning the first n multiple zeta values using intial, Middle and final words, this algorith is very efficient to compute a plenty of MZV together
The third one mzeta that compute multiple zeta values using polylogarithm
References: Double tails of multiple zeta values, P. Akhilesh, Journal of Number Theory, Volume 170, January 2017, Pages 228–249
http://www.sciencedirect.com/science/article/pii/S0022314X16301718
Multiple zeta values Computing using Double Tails: Example::

sage: multizeta([2],170,100)
    1.6449340668482264364724151666460251892189499012067984377355582293700074704032008738336289006197587?
    sage: multizeta([2,3],170,100)
    0.7115661975505724320969738060864026120925612044383392364922224964576860857450582651154252344636008?
    sage: multizeta([2,1],170,100)
    1.2020569031595942853997381615114499907649862923404988817922715553418382057863130901864558736093353?
    sage: 

Computing The first 'n' multiple zeta values using a fast algorithm using Initial, Middle and Final words Example::

    sage: allmultizetaprint(10,170,100)
    multizeta( [2] )= 1.644934066848226436472415166646025189218949901206798437735558229370007470403200873833628900619758706?
    multizeta( [3] )= 1.202056903159594285399738161511449990764986292340498881792271555341838205786313090186455873609335258?
    multizeta( [2, 1] )= 1.202056903159594285399738161511449990764986292340498881792271555341838205786313090186455873609335258?
    multizeta( [4] )= 1.082323233711138191516003696541167902774750951918726907682976215444120616186968846556909635941699917?
    multizeta( [3, 1] )= 0.270580808427784547879000924135291975693687737979681726920744053861030154046742211639227408985424980?
    multizeta( [2, 2] )= 0.811742425283353643637002772405875927081063213939045180762232161583090462140226634917682226956274938?
    multizeta( [2, 1, 1] )= 1.082323233711138191516003696541167902774750951918726907682976215444120616186968846556909635941699918?
    multizeta( [5] )= 1.036927755143369926331365486457034168057080919501912811974192677903803589786281484560043106557133337?
    multizeta( [4, 1] )= 0.0965511599894437344656455314289427640320103723436914152525630787528921454259587614177018405925170654?

Computing Multiple Zeta values using Polylogarithm algorithm Example::

    sage: mzeta([2,1])
    1.2020569031595942853997381615114499907649862923404988817922715553418382057863130901864558736093352581461991577952607194184919959986
    732832137763968372079001614539417829493600667191915755222424942439615639096641032911590957809655146512799184051057152559880154371097
    811020398275325667876035223369849416618110570147157786394997375237852779370309560257018531827900030765471075630488433208697115737423
    8079344503160762531771453544441183117818224971852635709182448998796203508335756172022603393785870328131267807990054177348691152537065
    6237057440966221712902627320732361492242913040528555372341033077577798064242024304882815210009146026538220696271552020822743350010152
    9480119869011762595167636699817183557523488070371955574234729408359520886166620257285375581307928258648728217370556619689895266201877
    68106292008177923381358768284264124324314802821736745067206935076268953043459393750329663637757506247332399234828831077339052768020075
    7984356793711505090050273660471140085335034364672248565315181177661811?
    sage: mzeta([2,1],100)
    1.20205690315959428539973816151144999076498629234049888179227155534183820578631309018645587360933526?

This program allows you to find the linear relationship between the multiple zeta values Example ::

    sage: Rmultizeta([[2,1],[3]])
    [1, -1]
    sage: Rmultizeta([[2,1],[3]],100,100,1000)
    [1, -1]
    sage: 

Change History (12)

comment:1 Changed 5 years ago by akhi

  • Branch set to u/akhi/mzeta

comment:2 Changed 5 years ago by akhi

  • Commit set to c40c4f19230485f7b02aef06f13f402b890bc66d
  • Description modified (diff)

comment:3 Changed 5 years ago by akhi

  • Description modified (diff)

comment:4 Changed 5 years ago by akhi

  • Summary changed from This introducing function compute multiple zeta values and finding relations between them to This introduces function to compute multiple zeta values and finding relations between them

comment:5 Changed 3 years ago by git

  • Commit changed from c40c4f19230485f7b02aef06f13f402b890bc66d to 43f19c7c1eaed13ff371773fdcb0377a5975383d

Branch pushed to git repo; I updated commit sha1. New commits:

f6c5c2aMerge branch 'master' into mzeta
43f19c7included more functions in multiple zeta values and implimented in interval arithmetic

comment:6 Changed 3 years ago by akhi

  • Description modified (diff)
  • Milestone changed from sage-6.6 to sage-7.4
  • Status changed from new to needs_review

comment:7 Changed 3 years ago by akhi

  • Keywords SD75 added

comment:8 Changed 3 years ago by vdelecroix

  • Status changed from needs_review to needs_work

Please fix the syntax to fit with Sage standards:

  1. You should have a look at the developer manual for documentation strings

http://doc.sagemath.org/html/en/developer/coding_basics.html#documentation-strings

For example you need to write EXAMPLES instead of Examples. There should be line breaks before and after EXAMPLES, etc.

  1. For Python syntax, have a look at

https://www.python.org/dev/peps/pep-0008/

For example there should be spaces before and after each assignment.

  1. Revise the description of the function. You can have a look at the developer manual again and look at other files in the Sage sources.

As an example

def allmultizeta(N,n,D):
	r''' the program computing first N-1 multiple zeta values:
    Example::
    sage: allmultizeta(10,170,100)

Should be changed to

def allmultizeta(N, n, D):
    r"""
    Return the first N-1 multiple zeta values.

    EXAMPLES::

        sage: allmultizeta(10, 170, 100)

Minor detail: in the "Authors" field of the ticket you need to put your full name.

comment:9 Changed 3 years ago by vdelecroix

BTW, how does your code compares with the zetamult function available in PARI/GP

? zetamult([2, 1])
%1 = 1.2020569031595942853997381615114499908

comment:10 Changed 3 years ago by vdelecroix

Indeed, in the source code of PARI/GP (file basemath/zetamult.c) one can read

ALGORITHM DUE TO P. AKHILESH. DO NOT REPRODUCE UNTIL PUBLISHED

You might want to coordinate with K. Belabas and/or B. Allombert on the PARI/GP mailing lists: http://pari.math.u-bordeaux.fr/lists-index.html

comment:11 Changed 6 months ago by chapoton

  • Branch changed from u/akhi/mzeta to public/ticket-multizeta
  • Commit changed from 43f19c7c1eaed13ff371773fdcb0377a5975383d to 958a570c3a26bb3975ebad973257dbb8a271d7c9

New commits:

331d975Merge branch 'u/akhi/mzeta' in 8.8.b3
958a570cleanup, all tests pass

comment:12 Changed 6 months ago by vdelecroix

  • Status changed from needs_work to needs_info

How does it compare to the implementation in PARI/GP available through cypari2 (see 9, 10)?

Last edited 6 months ago by vdelecroix (previous) (diff)
Note: See TracTickets for help on using tickets.