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: 45f85b3ffdb448a12eb53d4e85a7130ce5c61fe7
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
Multiple zeta values Computing using Double Tails: Example::

sage: multizeta([2],170,100)
    sage: multizeta([2,3],170,100)
    sage: multizeta([2,1],170,100)

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])
    sage: mzeta([2,1],100)

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]

Change History (13)

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 4 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 4 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 4 years ago by akhi

  • Keywords SD75 added

comment:8 Changed 4 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

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

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:
    sage: allmultizeta(10,170,100)

Should be changed to

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


        sage: allmultizeta(10, 170, 100)

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

comment:9 Changed 4 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 4 years ago by vdelecroix

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


You might want to coordinate with K. Belabas and/or B. Allombert on the PARI/GP mailing lists:

comment:11 Changed 13 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 13 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 10)?

Version 0, edited 13 months ago by vdelecroix (next)

comment:13 Changed 6 months ago by git

  • Commit changed from 958a570c3a26bb3975ebad973257dbb8a271d7c9 to 45f85b3ffdb448a12eb53d4e85a7130ce5c61fe7

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

f0500ee18010: This introduces function compute multiple zeta values and to find relations between them
45f85b3some details
Note: See TracTickets for help on using tickets.