Polylog

The Polylog package provides Rust implementations of real and complex
polylogarithms, including the dilogarithm and trilogarithm.
The Polylog package depends on the num crate.
Example
extern crate num;
extern crate polylog;
use num::complex::Complex;
use polylog::{Li, Li0, Li1, Li2, Li3, Li4, Li5, Li6};
fn main() {
let x = 1.0;
let z = Complex::new(1.0, 1.0);
let n = 10;
println!("Li0({}) = {}", x, x.li0()); println!("Li1({}) = {}", x, x.li1()); println!("Li2({}) = {}", x, x.li2()); println!("Li3({}) = {}", x, x.li3()); println!("Li4({}) = {}", x, x.li4()); println!("Li_{}({}) = {}", n, x, x.li(n));
println!("Li0({}) = {}", z, z.li0()); println!("Li1({}) = {}", z, z.li1()); println!("Li2({}) = {}", z, z.li2()); println!("Li3({}) = {}", z, z.li3()); println!("Li4({}) = {}", z, z.li4()); println!("Li5({}) = {}", z, z.li5()); println!("Li6({}) = {}", z, z.li6()); println!("Li_{}({}) = {}", n, z, z.li(n)); }
Notes
The implementation of the real dilogarithm is an adaption of
[arXiv:2201.01678].
The implementation of the complex dilogarithm has been inspired by the
implementation in SPheno and has been
translated to Rust.
The implementation of the general n-th order polylogarithm is an
adaption of [arXiv:2010.09860].
Citation
@software{polylog.rs,
author = {{Alexander Voigt}},
title = {{polylog.rs}},
year = {2022},
version = {2.3.0},
url = {https://github.com/Expander/polylog},
note = {[License: LGPL-3.0-only]}
}
Copying
Polylog is licenced under the GNU Lesser General Public License (GNU
LGPL) version 3.