polylog

Crates.iopolylog
lib.rspolylog
version2.6.0
sourcesrc
created_at2018-09-25 12:35:22.197149
updated_at2024-03-06 17:03:52.138859
descriptionRust implementation of polylogarithms.
homepagehttps://github.com/Expander/polylog
repositoryhttps://github.com/Expander/polylog
max_upload_size
id86475
size26,743,595
Alexander Voigt (Expander)

documentation

README

polylog

Build Status Documentation Coverage Status

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

use num::complex::Complex;
use polylog::{Li, Li0, Li1, Li2, Li3, Li4, Li5, Li6};

let x = 1.0;
let z = Complex::new(1.0, 1.0);
let n = 10;

// real polylogarithms for real arguments
println!("Li0({}) = {}", x, x.li0());      // Re[Li_0(x)]
println!("Li1({}) = {}", x, x.li1());      // Re[Li_1(x)]
println!("Li2({}) = {}", x, x.li2());      // Re[Li_2(x)] (dilogarithm)
println!("Li3({}) = {}", x, x.li3());      // Re[Li_3(x)] (trilogarithm)
println!("Li4({}) = {}", x, x.li4());      // Re[Li_4(x)]
println!("Li_{}({}) = {}", n, x, x.li(n)); // Re[Li_n(x)]

// complex polylogarithms for complex arguments
println!("Li0({}) = {}", z, z.li0());      // Li_0(z)
println!("Li1({}) = {}", z, z.li1());      // Li_1(z)
println!("Li2({}) = {}", z, z.li2());      // Li_2(z) (dilogarithm)
println!("Li3({}) = {}", z, z.li3());      // Li_3(z) (trilogarithm)
println!("Li4({}) = {}", z, z.li4());      // Li_4(z)
println!("Li5({}) = {}", z, z.li5());      // Li_5(z)
println!("Li6({}) = {}", z, z.li6());      // Li_6(z)
println!("Li_{}({}) = {}", n, z, z.li(n)); // Li_n(z)

Notes

The implementation of the real dilogarithm is an adaptation 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 real trilogarithm is an adaptation of [arXiv:2308.11619].

The implementation of the general n-th order polylogarithm is an adaptation of [arXiv:2010.09860].

Copying

polylog is licenced under the GNU Lesser General Public License (GNU LGPL) version 3.

Commit count: 166

cargo fmt