00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifndef __NESTEDSUMS_HARMONIC_POLYLOG_H__
00027
#define __NESTEDSUMS_HARMONIC_POLYLOG_H__
00028
00029
#include "ginac/ginac.h"
00030
00031
namespace nestedsums {
00032
00034
00049 class harmonic_polylog :
public multiple_polylog
00050 {
00051 GINAC_DECLARE_REGISTERED_CLASS(
harmonic_polylog,
multiple_polylog)
00052
00053
00054
public:
00055
explicit harmonic_polylog(
const GiNaC::ex & llc);
00056
00057
00058
public:
00059
void archive(GiNaC::archive_node &node)
const;
00060
void read_archive(
const GiNaC::archive_node &node, GiNaC::lst &sym_lst);
00061
00062 GiNaC::return_type_t return_type_tinfo()
const;
00063
00064
void print(
const GiNaC::print_context & c,
unsigned level = 0)
const;
00065 GiNaC::ex
eval(
int level = 0)
const;
00066 };
00067
00068 GINAC_DECLARE_UNARCHIVER(
harmonic_polylog);
00069
00075 inline GiNaC::ex
create_harmonic_polylog(
const GiNaC::ex & llc)
00076 {
00077
return (
new harmonic_polylog(llc))->setflag(GiNaC::status_flags::dynallocated);
00078 }
00079
00080 }
00081
00082
namespace GiNaC {
00083
00084
00085
template<>
inline const nestedsums::harmonic_polylog &ex_to<nestedsums::harmonic_polylog>(
const ex &e)
00086 {
00087
return dynamic_cast<const nestedsums::harmonic_polylog &>(*e.bp);
00088 }
00089
00090 }
00091
00092
#endif // ndef __NESTEDSUMS_HARMONIC_POLYLOG_H__