Implement a custom action that evaluates a Kahan sum.
This tutorial shows how to implement a Kahan summation custom action.
template <typename T>
public:
using Result_t = T;
private:
int fNSlots;
}
public:
KahanSum(KahanSum &&) = default;
KahanSum(const KahanSum &) = delete;
{
static_assert(std::is_floating_point<T>::value, "Kahan sum makes sense only on floating point numbers");
}
std::shared_ptr<Result_t> GetResultPtr()
const {
return fResultSum; }
{
}
{
}
}
void Finalize()
{
for (int i = 0; i < fNSlots; ++i) {
}
}
std::string GetActionName() { return "KahanSum"; }
};
{
auto dd =
d.Define(
"x",
"(rdfentry_ %2 == 0) ? 0.00000001 : 100000000.");
auto ptr = std::make_shared<double>();
std::cout << std::setprecision(24) <<
"Kahan: " << *
kahanResult <<
" Classical: " << *
plainResult << std::endl;
}
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Base class for action helpers, see RInterface::Book() for more information.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
CPYCPPYY_EXTERN bool Exec(const std::string &cmd)
void EnableImplicitMT(UInt_t numthreads=0)
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal paralleli...
Bool_t IsImplicitMTEnabled()
Returns true if the implicit multi-threading in ROOT is enabled.
UInt_t GetThreadPoolSize()
Returns the size of ROOT's thread pool.
void Initialize(Bool_t useTMVAStyle=kTRUE)
static uint64_t sum(uint64_t i)
Kahan: 1000000000.00000011920929 Classical: 1000000000.00000011920929
- Date
- July 2018
- Authors
- Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
Definition in file df022_useKahan.C.