Opened 6 years ago

Closed 8 months ago

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

Reported by: Owned by: akhi major sage-duplicate/invalid/wontfix number theory multiple zeta values, sage days 64, SD75 was, tscrim, mkoeppe Travis Scrimshaw N/A public/ticket-multizeta 45f85b3ffdb448a12eb53d4e85a7130ce5c61fe7

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:
```

### comment:1 Changed 6 years ago by akhi

• Branch set to u/akhi/mzeta

### comment:2 Changed 6 years ago by akhi

• Commit set to c40c4f19230485f7b02aef06f13f402b890bc66d
• Description modified (diff)

### comment:3 Changed 6 years ago by akhi

• Description modified (diff)

### comment:4 Changed 6 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 5 years ago by git

• Commit changed from c40c4f19230485f7b02aef06f13f402b890bc66d to 43f19c7c1eaed13ff371773fdcb0377a5975383d

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

 ​f6c5c2a `Merge branch 'master' into mzeta` ​43f19c7 `included more functions in multiple zeta values and implimented in interval arithmetic`

### comment:6 Changed 5 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:8 Changed 5 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:
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 5 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 5 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 2 years ago by chapoton

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

New commits:

 ​331d975 `Merge branch 'u/akhi/mzeta' in 8.8.b3` ​958a570 `cleanup, all tests pass`

### comment:12 Changed 2 years 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 2 years ago by vdelecroix (next)

### comment:13 Changed 17 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:

 ​f0500ee `18010: This introduces function compute multiple zeta values and to find relations between them` ​45f85b3 `some details`

### comment:14 Changed 9 months ago by chapoton

• Milestone changed from sage-7.4 to sage-duplicate/invalid/wontfix
• Status changed from needs_info to needs_review

Given that pari has multizetas, and that we have an interface to them, this ticket may be closed as invalid.

Vincent, do you agree ?

### comment:15 Changed 8 months ago by chapoton

shall we close as duplicate ?

### comment:16 follow-up: ↓ 17 Changed 8 months ago by tscrim

Before we close it as a duplicate, it would be good to do some comparison timings IMO as Vincent suggested in comment:12. Or does the PARI version use the same algorithm?

### comment:17 in reply to: ↑ 16 Changed 8 months ago by vdelecroix

Before we close it as a duplicate, it would be good to do some comparison timings IMO as Vincent suggested in comment:12. Or does the PARI version use the same algorithm?

PARI indeed implements Akilesh algorithms. In the last master branch there is also some alternatives that are faster for some specific signatures. The only disadvantage I see with PARI is that the result is a floating point number and not a ball/interval with guarantees on the result. However, the implementation is very careful to provide an accurate floating point number.

### comment:18 Changed 8 months ago by tscrim

• Authors Akhilesh P. deleted
• Reviewers set to Travis Scrimshaw
• Status changed from needs_review to positive_review

Then I would say we should close this as a duplicate.

### comment:19 Changed 8 months ago by chapoton

• Resolution set to duplicate
• Status changed from positive_review to closed

thanx, closing now

Note: See TracTickets for help on using tickets.