* some related stuff. */
/*
- * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <stdexcept>
#include "inifcns.h"
-#include "ex.h"
#include "constant.h"
#include "pseries.h"
#include "numeric.h"
#include "symbol.h"
#include "utils.h"
-#ifndef NO_NAMESPACE_GINAC
namespace GiNaC {
-#endif // ndef NO_NAMESPACE_GINAC
//////////
// Logarithm of Gamma function
static ex lgamma_series(const ex & arg,
- const relational & rel,
- int order,
- unsigned options)
+ const relational & rel,
+ int order,
+ unsigned options)
{
// method:
// Taylor series where there is no pole falls back to psi function
ex recur;
for (numeric p; p<=m; ++p)
recur += log(arg+p);
- cout << recur << endl;
return (lgamma(arg+m+_ex1())-recur).series(rel, order, options);
}
REGISTER_FUNCTION(lgamma, eval_func(lgamma_eval).
- evalf_func(lgamma_evalf).
- derivative_func(lgamma_deriv).
- series_func(lgamma_series));
+ evalf_func(lgamma_evalf).
+ derivative_func(lgamma_deriv).
+ series_func(lgamma_series));
//////////
static ex tgamma_series(const ex & arg,
- const relational & rel,
- int order,
- unsigned options)
+ const relational & rel,
+ int order,
+ unsigned options)
{
// method:
// Taylor series where there is no pole falls back to psi function
REGISTER_FUNCTION(tgamma, eval_func(tgamma_eval).
- evalf_func(tgamma_evalf).
- derivative_func(tgamma_deriv).
- series_func(tgamma_series));
+ evalf_func(tgamma_evalf).
+ derivative_func(tgamma_deriv).
+ series_func(tgamma_series));
//////////
static ex beta_series(const ex & arg1,
- const ex & arg2,
- const relational & rel,
- int order,
- unsigned options)
+ const ex & arg2,
+ const relational & rel,
+ int order,
+ unsigned options)
{
// method:
// Taylor series where there is no pole of one of the tgamma functions
const symbol *s = static_cast<symbol *>(rel.lhs().bp);
ex arg1_ser, arg2_ser, arg1arg2_ser;
if ((!arg1_pt.info(info_flags::integer) || arg1_pt.info(info_flags::positive)) &&
- (!arg2_pt.info(info_flags::integer) || arg2_pt.info(info_flags::positive)))
+ (!arg2_pt.info(info_flags::integer) || arg2_pt.info(info_flags::positive)))
throw do_taylor(); // caught by function::series()
// trap the case where arg1 is on a pole:
if (arg1.info(info_flags::integer) && !arg1.info(info_flags::positive))
REGISTER_FUNCTION(beta, eval_func(beta_eval).
- evalf_func(beta_evalf).
- derivative_func(beta_deriv).
- series_func(beta_series));
+ evalf_func(beta_evalf).
+ derivative_func(beta_deriv).
+ series_func(beta_series));
//////////
}
static ex psi1_series(const ex & arg,
- const relational & rel,
- int order,
- unsigned options)
+ const relational & rel,
+ int order,
+ unsigned options)
{
// method:
// Taylor series where there is no pole falls back to polygamma function
const unsigned function_index_psi1 =
function::register_new(function_options("psi").
- eval_func(psi1_eval).
- evalf_func(psi1_evalf).
- derivative_func(psi1_deriv).
- series_func(psi1_series).
- overloaded(2));
+ eval_func(psi1_eval).
+ evalf_func(psi1_evalf).
+ derivative_func(psi1_deriv).
+ series_func(psi1_series).
+ overloaded(2));
//////////
// Psi-functions (aka polygamma-functions) psi(0,x)==psi(x)
}
static ex psi2_series(const ex & n,
- const ex & arg,
- const relational & rel,
- int order,
- unsigned options)
+ const ex & arg,
+ const relational & rel,
+ int order,
+ unsigned options)
{
// method:
// Taylor series where there is no pole falls back to polygamma function
const unsigned function_index_psi2 =
function::register_new(function_options("psi").
- eval_func(psi2_eval).
- evalf_func(psi2_evalf).
- derivative_func(psi2_deriv).
- series_func(psi2_series).
- overloaded(2));
+ eval_func(psi2_eval).
+ evalf_func(psi2_evalf).
+ derivative_func(psi2_deriv).
+ series_func(psi2_series).
+ overloaded(2));
-#ifndef NO_NAMESPACE_GINAC
} // namespace GiNaC
-#endif // ndef NO_NAMESPACE_GINAC