aGrUM 3.0.0
a C++ library for (probabilistic) graphical models
gum Namespace Reference

gum is the global namespace for all aGrUM entities More...

Namespaces

namespace  __sig__
 Internal namespace for aGrUM signaler/listener components.
namespace  __debug__
 Internal namespace for aGrUM debugging tools.
namespace  aggregator
 Aggregators are functional description of CPTs.
namespace  complexity
 Internal namespace for complexity tools (quite empty for now).
namespace  credal
 namespace for all credal networks entities
namespace  prm
 namespace for all probabilistic relational models entities
namespace  formula
namespace  threadsOMP
namespace  threadsSTL
namespace  _rand_namespace_
namespace  learning
 include the inlined functions if necessary
namespace  graph

Classes

class  ApproximationPolicy
 Mother class for all approximation policy classes. More...
class  ApproximationScheme
 Approximation Scheme. More...
class  ApproximationSchemeListener
 The ApproximationSchemeListener class. More...
class  ExactPolicy
 Class implementing exact approximation policy (meaning a value is approximate to itself). More...
class  IApproximationSchemeConfiguration
 Approximation Scheme. More...
class  LinearApproximationPolicy
 Class implementing linear approximation policy (meaning possible value are split out in interval). More...
struct  ArgMaxSet
 Class to handle efficiently argMaxSet. More...
class  AVLTree
 AVL binary search tree. More...
class  AVLTreeIterator
 AVL binary search tree iterator. More...
class  AVLTreeIteratorSafe
 AVL binary search tree safe (w.r.t. More...
class  AVLTreeReverseIterator
 AVL binary search tree reverse iterator. More...
class  AVLTreeReverseIteratorSafe
 AVL binary search tree safe (w.r.t. More...
class  BijectionImplementation
 A non scalar implementation of a Bijection. More...
class  BijectionIteratorGet
 Dummy classes for discriminating scalars and non-scalars operators and -> wihtout any overhead. More...
struct  BijectionIteratorGet< true >
class  BijectionIteratorSafe
 Safe iterators for bijectionIterator. More...
class  BijectionIterator
 Unsafe iterators for bijection. More...
class  Bijection
 Set of pairs of elements with fast search for both elements. More...
class  BinSearchTree
 A generic binary search tree. More...
class  BinSearchTreeIterator
 A Generic binary search tree. More...
class  BinTreeNode
 Nodes of a binary trees. More...
class  ParseError
 This class is used to represent parsing errors for the different parser implemented in aGrUM. More...
class  ErrorsContainer
 This class is used contain and manipulate gum::ParseError. More...
class  Exception
 Base class for all aGrUM's exceptions. More...
struct  Maximizes
 Maximization function object class. More...
struct  Minimizes
 Minimization function object class. More...
struct  ArgumentMaximises
 Arg Max function object class. More...
class  HashFuncConst
 Useful constants for hash functions. More...
class  HashFuncBase
 All hash functions should inherit from this class. More...
class  HashFuncSmallKey
 Generic hash functions for numeric keys smaller than or equal to Size. More...
class  HashFuncSmallCastKey
 Generic hash functions for keys castable as Size and whose size is strictly smaller than that of Size. More...
class  HashFuncMediumCastKey
 Generic hash functions for keys castable as Size and whose size is precisely that of Size. More...
class  HashFuncLargeCastKey
 Generic hash functions for keys castable as Size and whose size is precisely twice that of Size. More...
class  HashFuncCastKey
 Generic hash functions for keys castable as Size whose size is either smaller than Size, or equal to that of one or two Size. More...
class  dummyHash
class  HashFuncConditionalType
 This class enables to safely define hash functions for types that may or may not already has defined hash functions. More...
struct  HashFuncConditionalType< Key >
struct  HashFuncConditionalType< KEY_TYPE, TYPE >
struct  HashFuncConditionalType< KEY_TYPE, FIRST_TYPE, OTHER_TYPES... >
class  HashFunc
 This class should be useless as only its specializations should be used. More...
class  HashFunc< std::pair< Key1, Key2 > >
class  HashFunc< bool >
 Hash function for booleans. More...
class  HashFunc< int >
 Hash function for integers. More...
class  HashFunc< unsigned int >
 Hash function for unsigned integers. More...
class  HashFunc< long >
 Hash function for long integers. More...
class  HashFunc< unsigned long >
 Hash function for unsigned long integers. More...
class  HashFunc< typename HashFuncConditionalType< std::size_t, unsigned long, unsigned int, long, int >::type >
 Hash function for std::size_t. More...
class  HashFunc< float >
 Hash function for floats. More...
class  HashFunc< double >
 Hash function for doubles. More...
class  HashFunc< Type * >
 Hash function for pointers. More...
class  HashFunc< std::string >
 Hash function for strings. More...
class  HashFunc< std::vector< Idx > >
 Hash function for vectors of gum::Idx. More...
class  HashFunc< Debug >
 Hash function for gum::Debug. More...
class  HashFunc< std::shared_ptr< Type > >
 Hash function for shared pointers. More...
class  HashTableConst
 Parameters specifying the default behavior of the hashtables. More...
class  HashTableBucket
 A recipient for a pair of key value in a gum::HashTableList. More...
class  HashTableList
 A chained list used by gum::HashTable. More...
class  HashTable
 The class for generic Hash Tables. More...
class  HashTableConstIteratorSafe
 Safe Const Iterators for hashtables. More...
class  Heap
 Heap data structure. More...
class  IndexedTree
 The class for storing the nodes of the Arborescence. More...
struct  IThreadNumberManager
class  ListBucket
 Bucket for a chained list. More...
class  List
 Generic doubly linked lists. More...
class  ListConstIterator
 Unsafe but fast const iterators for Lists. More...
class  ListIterator
 Unsafe but fast iterators for Lists. More...
class  ListConstIteratorSafe
 Safe const iterators for Lists. More...
class  ListIteratorSafe
 Safe iterators for Lists. More...
class  Chi2
 Static math utilities for the chi2 distribution. More...
class  Dirichlet
 A class for sampling w.r.t. More...
class  FormulaPart
 Represents part of a formula. More...
class  Formula
 Evaluates a string as a algebraic formula. More...
class  GammaLog2
 The class for computing Log2 (Gamma(x)). More...
class  Rational
 Class template used to approximate decimal numbers by rationals. More...
class  VariableLog2ParamComplexity
 the class for computing the log2 of the parametric complexity of an r-ary multinomial variable More...
class  MultiPriorityQueue
 A MultiPriorityQueue is a heap in which each element has a mutable priority and duplicates are allowed. More...
class  optional_ref
 A lightweight wrapper around a pointer providing an optional-like API for references (not supported by std::optional<T&>). More...
class  PriorityQueue
 A priorityQueue is a heap in which each element has a mutable priority. More...
class  PriorityQueueImplementation
 The internal class for representing priority queues. More...
class  ProgressNotifier
 Notification for progress using listener. More...
class  ProgressListener
 The ProgressListener class. More...
class  SequenceImplementation
 The internal class for storing (ordered) sequences of objects. More...
class  Sequence
 The generic class for storing (ordered) sequences of objects. More...
class  SequenceIteratorSafe
 Safe iterators for Sequence. More...
class  Set
 Representation of a set. More...
class  SetIteratorSafe
 Safe iterators for the Set class. More...
class  SetIterator
 Unsafe iterators for the Set class. More...
class  HashFunc< Set< T > >
 the hash function for sets of int More...
class  Listener
 Every class who would catch signal from signaler should derive from Listener. More...
class  Signaler
 Variadic template signaler for any number of arguments. More...
class  FixedAllocator
 Allocates objects of one given size. More...
class  SmallObjectAllocator
 <agrum/base/core/smallObjectAllocator.h> More...
class  SortedPriorityQueue
 A priority queue in which we can iterate over the elements from the top to bottom or conversely. More...
class  SortedPriorityQueueIterator
 Sorted priority queue iterator. More...
class  SortedPriorityQueueIteratorSafe
 Sorted priority queues safe (w.r.t. More...
class  SortedPriorityQueueReverseIterator
 Sorted priority queue reverse iterator. More...
class  SortedPriorityQueueReverseIteratorSafe
 Sorted priority queue safe (w.r.t. More...
class  SplayBinaryNode
 the nodes of splay trees More...
class  SplayTree
 A splay tree. More...
class  ThreadData
 A wrapper that enables to store data in a way that prevents false cacheline sharing. More...
class  ThreadExecutorBase
 Set the max number of threads to be used. More...
class  ThreadNumberManager
 A class to manage the number of threads to use in an algorithm. More...
class  Timer
 Class used to compute response times for benchmark purposes. More...
struct  AlmostDifferent
 Indicate whether two elements are (almost) different or not. More...
struct  AlmostDifferent< T * >
 Indicate whether two elements are (almost) different or not. More...
class  InformationTheory
 InformationTheory is a template class which aims at gathering the implementation of informational functions (entropy, mutual information, etc.). More...
class  DAGmodel
 Virtual base class for PGMs using a DAG. More...
class  DiscreteGraphicalModel
 <agrum/base/graphicalModels/discreteGraphicalModel.h> More...
class  GraphicalModel
 Virtual base class for probabilistic graphical models. More...
class  GraphicalModelInference
 <agrum/base/graphicalModels/graphicalModel.h> More...
class  IScheduleMultiDim
 The Table-agnostic base class of scheduleMultiDim. More...
class  Schedule
 Class containing a schedule of operations to perform on multidims. More...
class  ScheduleBinaryCombination
 a binary Combination operator class used for scheduling inferences More...
class  ScheduledInference
 the class containing the scheduler used by schedule-based inferences More...
class  ScheduleMultiDim
 a Wrapper for multi-dimensional tables used for scheduling inferences More...
class  ScheduleOperator
 the base class for "low-level" operators used to schedule inferences More...
class  ScheduleProjection
 a Projection operator class used for scheduling inferences More...
class  Scheduler
 The common interface of all the schedulers. More...
class  SchedulerParallel
 A scheduler that executes available operators in parallel. More...
class  SchedulerSequential
class  ScheduleStorage
 Class for storing multidimensional tables into containers (sets, etc.). More...
class  UGmodel
 Virtual base class for PGMs using a undirected graph. More...
class  VariableNodeMap
 Container used to map discrete variables with nodes. More...
class  BinaryJoinTreeConverter
class  BinaryJoinTreeConverterDefault
class  DAGCycleDetector
 A class for detecting directed cycles in DAGs when trying to apply many changes to the graph. More...
class  MeekRules
 Applies Meek's orientation rules to propagate arc directions in a mixed graph. More...
class  SimplicialSet
 Class enabling fast retrieval of simplicial, quasi and almost simplicial nodes. More...
class  SpanningForest
 Base class for computing min cost spanning trees or forests. More...
class  SpanningForestPrim
 The Prim algorithm for computing min cost spanning trees or forests. More...
class  DefaultTriangulation
 The default triangulation algorithm used by aGrUM. More...
class  DefaultEliminationSequenceStrategy
 An efficient unconstrained elimination sequence algorithm. More...
class  DefaultPartialOrderedEliminationSequenceStrategy
 An Elimination sequence algorithm that imposes a given partial ordering on the nodes elimination sequence. More...
class  EliminationSequenceStrategy
 The base class for all elimination sequence algorithms used by triangulation algorithms. More...
class  OrderedEliminationSequenceStrategy
 An Elimination sequence algorithm that imposes a given complete ordering on the nodes elimination sequence. More...
class  PartialOrderedEliminationSequenceStrategy
 Base class for all elimination sequence algorithm that impose a given partial ordering on the nodes elimination sequence, that is, the set of all the nodes is divided into several subsets. More...
class  UnconstrainedEliminationSequenceStrategy
 The base class for all elimination sequence algorithms that require only the graph to be triangulated and the nodes' domain sizes to produce the node elimination ordering. More...
class  IncrementalTriangulation
 Class that performs incremental triangulations. More...
class  DefaultJunctionTreeStrategy
 An algorithm producing a junction given the elimination tree produced by a triangulation algorithm. More...
class  JunctionTreeStrategy
 Base Class for all the algorithms producing a junction given a set of cliques/subcliques resulting from a triangulation. More...
class  OrderedTriangulation
 class for graph triangulations for which we enforce a given complete ordering on the nodes eliminations. More...
class  PartialOrderedTriangulation
 class for graph triangulations for which we enforce a given partial ordering on the nodes eliminations, that is, the set of all the nodes is divided into several subsets. More...
class  StaticTriangulation
 base class for all non-incremental triangulation methods More...
class  Triangulation
 Interface for all the triangulation methods. More...
class  UnconstrainedTriangulation
 Interface for all triangulation methods without constraints on node elimination orderings. More...
class  CliqueGraph
 Basic graph of cliques. More...
class  DAG
 Base class for dag. More...
class  DiGraph
 Base class for all oriented graphs. More...
class  Edge
 The base class for all undirected edges. More...
class  Arc
 The base class for all directed edges. More...
class  MixedGraph
 Base class for mixed graphs. More...
class  PAG
 Partial Ancestral Graph: undirected topology with endpoint marks. More...
class  ArcGraphPart
 Classes for directed edge sets. More...
class  EdgeGraphPart
 Classes for undirected edge sets. More...
class  DiGraphListener
 Abstract Base class for all diGraph Listener. More...
class  MixedGraphListener
 Abstract Base class for all mixed Graph Listener. More...
class  UndiGraphListener
 Abstract Base class for all undiGraph Listener. More...
class  NodeGraphPartIterator
 Unsafe iterator on the node set of a graph. More...
class  NodeGraphPartIteratorSafe
 Safe iterator on the node set of a graph. More...
class  NodeGraphPart
 Class for node sets in graph. More...
class  PDAG
 Base class for partially directed acyclic graphs. More...
class  UndiGraph
 Base class for undirected graphs. More...
class  MultiDimICIModel
 abstract class for Conditional Indepency Models More...
class  MultiDimLogit
 Logit representation. More...
class  MultiDimNoisyAND
 Noisy AND representation. More...
class  MultiDimNoisyORCompound
 Noisy OR representation. More...
class  MultiDimNoisyORNet
 Noisy OR representation. More...
class  MultiDimAdressable
 Abstract base class for all multi dimensionnal addressable. More...
class  MultiDimBijArray
 Decorator of a MultiDimArray, using a bijection over the variables. More...
class  MultiDimArray
 Multidimensional matrix stored as an array in memory. More...
class  MultiDimBucket
 A multidim implementation for buckets. More...
class  MultiDimImplementation
 <agrum/base/multidim/multiDimImplementation.h> More...
class  MultiDimContainer
 Abstract base class for all multi dimensionnal containers. More...
class  MultiDimDecorator
 Decorator design pattern in order to separate implementations from multidimensional matrix concepts. More...
class  MultiDimFunctionGraphManager
 Class implementingting a function graph manager. More...
class  MultiDimFunctionGraphROManager
class  MultiDimFunctionGraphTreeManager
class  MultiDimFunctionGraph
 Class implementingting a function graph. More...
class  MultiDimFunctionGraphGenerator
 Class implementing a function graph generator with template type double. More...
class  MultiDimInterface
 Interface for all classes addressing in a multiDim fashion. More...
class  MultiDimPartialInstantiation
 A generic class to instantiate a subset of variables of a multidimensional table. More...
class  MultiDimReadOnly
 Abstract base class for all multi dimensionnal read only structure. More...
class  MultiDimSparse
 Multidimensional matrix stored as a sparse array in memory. More...
class  MultiDimWithOffset
 Abstract class for Multidimensional matrix stored as an array in memory and with an offset associated with each slave instantiation. More...
class  Instantiation
 Class for assigning/browsing values to tuples of discrete variables. More...
class  HashFunc< Instantiation >
 Hash function for gum::Instantiation. More...
class  SetInst
 Class for assigning/browsing values to tuples of discrete variables. More...
class  Tensor
 aGrUM's Tensor is a multi-dimensional array with tensor operators. More...
class  Parent
 Represent a node's parent. More...
class  InternalNode
 Structure used to represent a node internal structure. More...
 Link of a chain list allocated using the SmallObjectAllocator. More...
class  LinkedList
 Chain list allocated using the SmallObjectAllocator. More...
class  MultiDimFunctionGraphOperator
 Class used to perform Function Graph Operations. More...
class  MultiDimFunctionGraphProjector
 Class used to perform Function Graph projections. More...
class  O4DGContext
 Class used to manipulate context during Function Graph Operations. More...
class  Regress
 Class used to perform Function Graph Operations in the FMDP Framework. More...
class  TreeOperator
 Class used to perform Decision Tree Operation in the FMDP Framework. More...
class  TreeRegress
 Class used to perform Decision Tree Regression in the FMDP Framework. More...
class  ExactTerminalNodePolicy
 Implementation of a Terminal Node Policy that maps nodeid directly to value. More...
class  ITerminalNodePolicy
 Interface specifying the methods to be implemented by any TerminalNodePolicy. More...
class  SetTerminalNodePolicy
 Implementation of a Terminal Node Policy that maps nodeid to a set of value. More...
class  CompleteProjectionRegister4MultiDim
 A container for registering complete projection functions on multiDimImplementations, i.e., functions projecting tables over all their variables. More...
struct  CompleteProjections4MultiDimInitialize
 a class used to register complete projections over non-pointers types More...
struct  CompleteProjections4MultiDimInitialize< GUM_ELEMENT * >
 a class used to register complete projections over pointers types More...
class  MultiDimCombination
 A generic interface to combine efficiently several MultiDim tables. More...
class  MultiDimCombinationDefault
 A class to combine efficiently several MultiDim tables. More...
class  MultiDimCombineAndProject
 A generic interface to combine and project efficiently MultiDim tables. More...
class  MultiDimCombineAndProjectDefault
 An efficient class for combining and projecting MultiDim tables. More...
class  MultiDimCompleteProjection
 A generic class to project efficiently a MultiDim table over all of its variables. More...
class  MultiDimProjection
 A generic class to project efficiently a MultiDim table over a subset of its variables. More...
class  OperatorRegister4MultiDim
 A container for registering binary functions on multiDimImplementations. More...
struct  Operators4MultiDimInitialize
 a class used to register operators over non-pointers types More...
struct  Operators4MultiDimInitialize< GUM_ELEMENT * >
 a class used to register operators over pointers types More...
class  ProjectionRegister4MultiDim
 A container for registering projection functions on multiDimImplementations, i.e., functions projecting tables over a subset of their variables. More...
struct  Projections4MultiDimInitialize
 a class used to register projections over non-pointers types More...
struct  Projections4MultiDimInitialize< GUM_ELEMENT * >
 a class used to register projections over pointers types More...
class  PartialInstantiation4MultiDimInitialize
 A class used to register instantiation functions over non-pointers types. More...
struct  PartialInstantiation4MultiDimInitialize< GUM_ELEMENT * >
class  PartialInstantiationRegister4MultiDim
 A container for registering partial instantiation functions on multiDimImplementations, i.e., functions assigning values to subsets of the variables of some tables. More...
class  HashFunc< learning::IdCondSet >
 the hash function for idSets More...
class  ContinuousVariable
 Defines a continuous random variable. More...
class  DiscreteVariable
 Base class for discrete random variable. More...
class  DiscretizedVariable
 Class for discretized random variable. More...
class  IContinuousVariable
 A base class for continuous variables, independent of the GUM_SCALAR type. More...
class  IDiscretizedVariable
 A base class for discretized variables, independent of the ticks type. More...
class  IntegerVariable
 class IntegerVariable More...
class  LabelizedVariable
 class LabelizedVariable More...
class  NumericalDiscreteVariable
 class NumericalDiscreteVariable More...
class  RangeVariable
 Defines a discrete random variable over an integer interval. More...
class  Variable
 Base class for every random variable. More...
class  BarrenNodesFinder
 Detect barren nodes for inference in Bayesian networks. More...
class  BayesBall
 Implementation of Shachter's Bayes Balls algorithm. More...
class  BNdistance
class  ExactBNdistance
 ExactBNdistance computes exactly the KL divergence betweens 2 BNs. More...
class  GibbsBNdistance
 GibbsKL computes the KL divergence betweens 2 BNs using an approximation pattern: GIBBS sampling. More...
class  dSeparationAlgorithm
 the d-separation algorithm as described in Koller & Friedman (2009) More...
class  EssentialGraph
 Class building the essential graph from a BN. More...
class  MarkovBlanket
 Class building the markov Blanket from a BN and a nodeName. More...
class  StructuralMetrics
 A class for comparing graphs based on their structures. More...
class  BayesNetFactory
 A factory class to ease BayesNet construction. More...
class  BayesNet
 Class representing a Bayesian network. More...
class  BayesNetFragment
 Portion of a BN identified by the list of nodes and a BayesNet. More...
class  IBayesNetGenerator
 Class for generating Bayesian networks. More...
class  MaxInducedWidthMCBayesNetGenerator
 maxInducedWidthMCBayesNetGenerator.h <agrum/BN/generator/SimpleMCayesNetGenerator.h> More...
class  MaxParentsMCBayesNetGenerator
 <agrum/BN/generator/SimpleMCayesNetGenerator.h> More...
class  MCBayesNetGenerator
 <agrum/BN/generator/MCayesNetGenerator.h> More...
class  SimpleBayesNetGenerator
 <agrum/BN/generator/simpleBayesNetGenerator.h> More...
class  SimpleCPTDisturber
 <agrum/BN/generator/simpleCPTDisturber.h> More...
class  SimpleCPTGenerator
 <agrum/BN/generator/simpleCPTGenerator.h> More...
class  IBayesNet
 Class representing the minimal interface for Bayesian network with no numerical data. More...
class  IBayesNetFactory
 IBayesNetFactory is the non-template interface for BayesNetFactory : many ways to build a BN do not depend on the specification of the GUM_SCALAR template argument (for instance for BN readers). More...
class  GibbsSampling
 <agrum/BN/inference/gibbsSampling.h> More...
class  ImportanceSampling
class  LazyPropagation
 Implementation of a Shafer-Shenoy's-like version of lazy propagation for inference in Bayesian networks. More...
class  LoopyBeliefPropagation
 <agrum/BN/inference/loopyBeliefPropagation.h> More...
class  LoopySamplingInference
 <agrum/BN/inference/loopySamplingInference.h> More...
class  MonteCarloSampling
class  ShaferShenoyInference
 Implementation of Shafer-Shenoy's propagation algorithm for inference in Bayesian networks. More...
class  AggregatorDecomposition
 <agrum/BN/inference/tools/aggregatorDecomposition.h> More...
class  ApproximateInference
class  JointTargetedInference
 <agrum/BN/inference/jointTargetedInference.h> More...
class  MarginalTargetedInference
 <agrum/BN/inference/marginalTargetedInference.h> More...
class  EvidenceInference
 <agrum/BN/inference/evidenceInference.h> More...
class  BayesNetInference
 <agrum/BN/inference/BayesNetInference.h> More...
class  Estimator
class  GibbsOperator
 class containing all variables and methods required for Gibbssampling More...
class  SamplingInference
 <agrum/BN/inference/samplingInference.h> More...
class  VariableElimination
 Implementation of a Variable Elimination's-like version of lazy propagation for inference in Bayesian networks. More...
class  WeightedSampling
class  BIFReader
 Definition of templatized reader of BIF files for Bayesian networks. More...
class  BIFWriter
 Writes a IBayesNet in the BIF format. More...
class  BIFXMLBNReader
 <agrum/BN/io/BIFXML/BIFXMLBNReader.h> More...
class  BIFXMLBNWriter
 <agrum/BN/io/BIFXML/BIFXMLBNWriter.h> More...
class  BNReader
 Pure virtual class for reading a BN from a file. More...
class  BNWriter
 virtual class for writing a BN to a file. More...
class  CNFWriter
 Writes a IBayesNet in the BN format. More...
class  ContextualDependenciesCNFWriter
 <agrum/BN/io/cnf/ContextualDependenciesCNFWriter.h> More...
class  FactorisedValuesCNFWriter
 <agrum/BN/io/cnf/FactorisedValuesCNFWriter.h> More...
class  GeneralizedCNFWriter
 <agrum/BN/io/cnf/GeneralizedCNFWriter.h> More...
class  DSLReader
 Pure virtual class for reading a BN from a file. More...
class  DSLWriter
 Writes a IBayesNet in the DSL format. More...
class  GumBNReader
class  GumBNWriter
 Writes a IBayesNet in the GUM json format. More...
class  NetReader
 Pure virtual class for reading a BN from a file. More...
class  NetWriter
 Writes a IBayesNet in the BN format. More...
class  UAIBNReader
 Pure virtual class for reading a BN from a file. More...
class  UAIBNWriter
 Writes a Bayes net in a text file with UAI format. More...
class  XDSLBNReader
 <agrum/BN/io/XDSL/XDSLBNReader.h> More...
class  XDSLBNWriter
 <agrum/BN/io/XDSLXML/XDSLBNWriter.h> More...
class  HashFunc< learning::GraphChange >
 the hash function for Graph Changes More...
class  HashFunc< learning::ArcAddition >
 the hash function for Arc Additions More...
class  HashFunc< learning::ArcDeletion >
 the hash function for Arc Deletions More...
class  HashFunc< learning::ArcReversal >
 the hash function for Arc Reversals More...
class  HashFunc< learning::ArcTriangleDeletion1 >
 the hash function for Arc Triangle Deletions creating a v-structure in node 1 More...
class  HashFunc< learning::ArcTriangleDeletion2 >
 the hash function for Arc Triangle Deletions creating a v-structure in node 2 More...
class  HashFunc< learning::EdgeAddition >
 the hash function for Edge Additions More...
class  HashFunc< learning::EdgeDeletion >
 the hash function for Edge Deletions More...
class  CausalImpact
 Builds a CausalFormula for a query (d-sep -> backdoor -> frontdoor -> (optional) do-calculus). More...
class  ASTtree
 Root abstract node for the AST of algebraic expressions. More...
class  CausalModel
 A causal model pairing an observational BayesNet with a causal DAG. More...
class  Counterfactual
 Computes a counterfactual distribution by building a twin model, then evaluating a causal effect on that twin and adapting the result back to the original model’s variables. More...
class  DoorCriteria
 Implements Backdoor and Frontdoor criteria utilities for a DAG. More...
class  CausalFormula
 A container for an identified causal query. More...
class  ASTBinaryOp
 Base class for binary algebraic operators (e.g., +, -, ×, ÷). More...
class  ASTplus
 Sum of two AST sub-expressions. More...
class  ASTminus
 Difference of two AST sub-expressions (left minus right). More...
class  ASTmult
 Elementwise product of two AST sub-expressions. More...
class  ASTdiv
 Elementwise division of two AST sub-expressions (left / right). More...
class  ASTposteriorProba
 Posterior probability term ( \mathbb{P}_{bn}(\mathrm{vars}\mid\mathrm{knw}) ). More...
class  ASTjointProba
 Joint probability term ( \mathbb{P}(\mathrm{vars}) ) in an observational BN. More...
class  ASTsum
 Summation (marginalization) over one or more variables. More...
class  DoCalculus
 Instance-based do-calculus utilities bound to a single CausalModel. More...
class  Separation
 Consolidated d-separation utilities (DAG-centric). More...
class  HashFunc< credal::lp::LpCol >
class  E_GreedyDecider
 <agrum/FMDP/decision/E_GreedyDecider.h> More...
class  LazyDecider
 Class to make decision randomly. More...
class  RandomDecider
 Class to make decision randomly. More...
class  StatisticalLazyDecider
 <agrum/FMDP/decision/statisticalLazyDecider.h> More...
class  FMDP
 This class is used to implement factored decision process. More...
class  FMDPFactory
 A factory class to ease Factored Markov Decision Process construction. More...
class  AbstractFMDPFactory
 A factory class to ease Factored Markov Decision Process construction. More...
class  FMDPDatReader
 Definition of templatized reader of FMDPDat files for Factored Markov Decision Processes. More...
class  FMDPReader
 Pure virtual class for reading a FMDP from a file. More...
class  ChiSquare
 <agrum/FMDP/learning/core/testPolicy/chiSquare.h> More...
class  ContingencyTable
 <agrum/FMDP/learning/core/contingencyTable.h> More...
struct  Int2Type
struct  TestSelect
struct  TestSelect< CHI2TEST, A, B, C >
struct  TestSelect< LEASTSQUARETEST, A, B, C >
struct  ValueSelect
struct  ValueSelect< false, A, B >
struct  LearnerSelect
struct  LearnerSelect< ITILEARNER, A, B >
class  Chi2TestPolicy
 <agrum/base/multidim/core/testPolicy/Chi2TestPolicy.h> More...
class  GTestPolicy
 <agrum/base/multidim/core/testPolicies/GTestPolicy.h> More...
class  ITestPolicy
 <agrum/base/multidim/core/testPolicies/ITestPolicy.h> More...
class  LeastSquareTestPolicy
 <agrum/base/multidim/core/testPolicy/leastSquareTestPolicy.h> More...
class  HashFunc< std::tuple< unsigned int, unsigned int, unsigned int > >
 the hash function for tuple (unsigned int, unsigned int,unsigned int) More...
class  IMDDI
class  IncrementalGraphLearner
 <agrum/FMDP/learning/datastructure/incrementalGraphLearner> More...
class  ITI
 Learn a graphical representation of a function as a decision tree. More...
class  IVisitableGraphLearner
 <agrum/FMDP/SDyna/IVisitableGraphLearner.h> More...
class  AbstractLeaf
 <agrum/FMDP/learning/datastructure/leaves/abstractLeaf.h> More...
class  ComposedLeaf
 <agrum/FMDP/learning/datastructure/leaves/composedLeaf.h> More...
class  ConcreteLeaf
 <agrum/FMDP/learning/datastructure/leaves/concreteLeaf.h> More...
class  FusionContext
 <agrum/FMDP/learning/datastructure/leaves/fusionContext.h> More...
class  LeafAggregator
 <agrum/FMDP/learning/FunctionGraph/leafAggregator.h> More...
class  LeafPair
 <agrum/FMDP/learning/datastructure/leaves/leafPair.h> More...
class  NodeDatabase
 <agrum/FMDP/learning/datastructure/nodeDatabase.h> More...
class  VariableSelector
 <agrum/FMDP/planning/FunctionGraph/variableselector.h> More...
class  FMDPLearner
class  Observation
struct  ArgumentMaximisesAction
 <agrum/FMDP/planning/actionSet.h> More...
class  ActionSet
 A class to store the optimal actions. More...
class  AdaptiveRMaxPlaner
 <agrum/FMDP/planning/adaptiveRMaxPlaner.h> More...
class  IOperatorStrategy
 <agrum/FMDP/SDyna/IOperatorStrategy.h> More...
class  MDDOperatorStrategy
 <agrum/FMDP/planning/mddOperatorStrategy.h> More...
class  StructuredPlaner
 <agrum/FMDP/planning/structuredPlaner.h> More...
class  TreeOperatorStrategy
 <agrum/FMDP/planning/treeOperatorStrategy.h> More...
class  SDYNA
 The general SDyna architecture abstract class. More...
class  IDecisionStrategy
 <agrum/FMDP/SDyna/IDecisionStrategy.h> More...
class  ILearningStrategy
 <agrum/FMDP/SDyna/ILearningStrategy.h> More...
class  IPlanningStrategy
 <agrum/FMDP/SDyna/IPlanningStrategy.h> More...
class  AbstractSimulator
 <agrum/FMDP/simulation/abstractSimulator.h> More...
class  FactorySimulator
 A class to simulate the Factory problem. More...
class  FMDPSimulator
 <agrum/FMDP/simulation/fmdpSimulator.h> More...
class  StatesChecker
 <agrum/FMDP/simulation/statesChecker.h> More...
class  StatesCounter
 <agrum/FMDP/simulation/statesCounter.h> More...
class  TaxiSimulator
 A class to simulate the Taxi problem. More...
class  InfluenceDiagramGenerator
 <agrum/ID/generator/influenceDiagramGenerator.h> More...
class  SimpleUTGenerator
 Class for generating Utility Tables. More...
class  UTGenerator
 Abstract class for generating Utility Tables. More...
class  ShaferShenoyLIMIDInference
class  DecisionTensor
 <agrum/ID/inference/decisionTensor.h> More...
class  InfluenceDiagramInference
 <agrum/ID/inference/influenceDiagramInference.h> More...
class  InfluenceDiagram
 Class representing an Influence Diagram. More...
class  BIFXMLIDReader
 Read an influence diagram from an XML file with BIF format. More...
class  BIFXMLIDWriter
 Writes an influence diagram in a XML files with BIF format. More...
class  GumIDReader
 Reads an InfluenceDiagram from a GUM (json) file. More...
class  GumIDWriter
 Writes an InfluenceDiagram in the GUM json format. More...
class  IDReader
 Pure virtual class for importing an ID from a file. More...
class  IDWriter
 Pure virtual class for exporting an ID. More...
class  IMarkovRandomField
 Class representing the minimal interface for Markov random field. More...
class  ShaferShenoyMRFInference
 <agrum/MRF/inference/ShaferShenoyMRFInference.h> More...
class  EvidenceMRFInference
 <agrum/MRF/inference/evidenceMRFInference.h> More...
class  JointTargetedMRFInference
 <agrum/MRF/inference/jointTargetedMRFInference.h> More...
class  MarginalTargetedMRFInference
 <agrum/MRF/inference/marginalTargetedMRFInference.h> More...
class  MRFInference
 <agrum/MRF/inference/MRFInference.h> More...
class  GumMRFReader
 Reads a MarkovRandomField from a GUM (json) file. More...
class  GumMRFWriter
 Writes a MarkovRandomField in the GUM json format. More...
class  MRFReader
 Pure virtual class for reading a MRF from a file. More...
class  MRFWriter
 Pure virtual class for writing a MRF to a file. More...
class  UAIMRFReader
 Pure virtual class for reading a MRF from a file. More...
class  UAIMRFWriter
 <agrum/MRF/io/UAI/UAIMRFWriter.h> More...
class  O3prmBNReader
 Read an O3PRM and transform the gum::prm::PRMSystem into gum::BayesNet. More...
class  O3prmBNWriter
 <agrum/PRM/o3prm/O3prmBNWriter.h> More...

Concepts

concept  GUM_HasNumericLimits
 Concept checking that std::numeric_limits is specialized for a type.
concept  GUM_IsGumScalar
 Concept defining requirements for scalar types used as GUM_SCALAR.
concept  GUM_Numeric
 Complete concept for GUM_SCALAR template parameter.
concept  JointTargettable
concept  GUM_NodeGraphable
 Concept for any graph that exposes node-level queries.
concept  GUM_DiGraphable
 Concept for directed graphs (arcs with parents/children).
concept  GUM_UndiGraphable
 Concept for undirected graphs (edges with neighbours).
concept  GUM_MixedGraphable
 Concept for mixed graphs (both arcs and edges).

Typedefs

using Signaler0 = Signaler<>
 Signaler with no arguments.
using ThreadExecutor = threadsSTL::ThreadExecutor
using JunctionTree = CliqueGraph
 a junction tree is a clique graph satisfying the running intersection property and such that no clique is included into another one.
using JoinTree = CliqueGraph
 a join tree is a clique graph satisfying the running intersection property (but some cliques may be included into others)
using NodeId = Size
 Type for node ids.
using VariableSet = Set< const DiscreteVariable* >
template<GUM_Numeric GUM_SCALAR>
using HybridMonteCarloSampling = LoopySamplingInference< GUM_SCALAR, MonteCarloSampling >
template<GUM_Numeric GUM_SCALAR>
using HybridWeightedSampling = LoopySamplingInference< GUM_SCALAR, WeightedSampling >
template<GUM_Numeric GUM_SCALAR>
using HybridImportanceSampling = LoopySamplingInference< GUM_SCALAR, ImportanceSampling >
template<GUM_Numeric GUM_SCALAR>
using HybridGibbsSampling = LoopySamplingInference< GUM_SCALAR, GibbsSampling >
using LatentDescriptorIds = std::pair< std::string, std::vector< NodeId > >
 LatentDescriptorIds = (latentName, (child1Id, child2Id, ...)).
using LatentDescriptorVector = std::vector< LatentDescriptorIds >
 Collection of latent descriptors (see LatentDescriptorIds).
using pair_iterator = HashTableConstIteratorSafe< LeafPair*, std::vector< Size > >
template<GUM_Numeric GUM_SCALAR>
using FactorTable = HashTable< NodeSet, const Tensor< GUM_SCALAR >* >
using Size = std::size_t
 In aGrUM, hashed values are unsigned long int.
using Idx = Size
 Type for indexes.
template<class VAL>
using NodeProperty = HashTable< NodeId, VAL >
 Property on graph elements.
template<class VAL>
using EdgeProperty = HashTable< Edge, VAL >
 Property on graph elements.
template<class VAL>
using ArcProperty = HashTable< Arc, VAL >
 Property on graph elements.

Enumerations

enum class  BinTreeDir : char { LEFT_CHILD = 0 , RIGHT_CHILD = 1 , NO_PARENT = 2 }
 The direction of a given edge in a binary tree. More...
enum class  StaticInitializer : char { CONSTINIT , CONSTEXPR }
enum class  ScheduleOperatorType : char { COMBINE_MULTIDIM , PROJECT_MULTIDIM , DELETE_MULTIDIM , STORE_MULTIDIM }
 the currently supported types of "low-level" operators More...
enum  SchedulerType { SEQUENTIAL , PARALLEL_OPERATORS }
 the type of scheduler that can be used More...
enum class  EdgeMark : uint8_t { Circle = 0 , Tail = 1 , Arrowhead = 2 }
 Endpoint marks used in PAG edges. More...
enum class  VarType : char {
  DISCRETIZED , LABELIZED , INTEGER , NUMERICAL ,
  RANGE , CONTINUOUS
}
enum class  Complexity : char { Heavy , Difficult , Correct }
 Complexity allows to characterize the awaited difficulty for an algorithm given a specific instance Therefore this is not a theoretical characterization but rather a pragmatic rate of that very instance. More...
enum class  FindBarrenNodesType { FIND_NO_BARREN_NODES , FIND_BARREN_NODES }
 type of algorithm to determine barren nodes More...
enum class  RelevantTensorsFinderType { FIND_ALL , DSEP_BAYESBALL_NODES , DSEP_BAYESBALL_TENSORS , DSEP_KOLLER_FRIEDMAN_2009 }
 type of algorithm for determining the relevant tensors for combinations using some d-separation analysis More...
enum class  FMDPfactory_state : char {
  NONE , VARIABLE , ACTION , TRANSITION ,
  COST , REWARD , DISCOUNT
}
 The enumeration of states in which the factory can be in. More...
enum  TESTNAME { GTEST = 1 , CHI2TEST = 2 , LEASTSQUARETEST = 3 }
enum  LEARNERNAME { IMDDILEARNER = 1 , ITILEARNER = 2 }
enum  FactorySimulationLandmark : Idx {
  HOME = 0 , WORK = 1 , THEATER = 2 , CLUB = 3 ,
  Factory = 4
}
enum  FactorySimulationLandmarkX : Idx {
  HOMEX = 0 , WORKX = 0 , THEATERX = 3 , CLUBX = 4 ,
  STATIONX = 2
}
enum  FactorySimulationLandmarkY : Idx {
  HOMEY = 0 , WORKY = 4 , THEATERY = 0 , CLUBY = 4 ,
  STATIONY = 1
}
enum  FactorySimulationAction : Idx {
  GoNorth = 0 , GoEast = 1 , GoSouth = 2 , GoWest = 3 ,
  PickUp = 4 , PutDown = 5 , FillUp = 6
}
enum  TaxiSimulationLandmark : Idx {
  HOME = 0 , WORK = 1 , THEATER = 2 , CLUB = 3 ,
  TAXI = 4
}
enum  TaxiSimulationLandmarkX : Idx {
  HOMEX = 0 , WORKX = 0 , THEATERX = 3 , CLUBX = 4 ,
  STATIONX = 2
}
enum  TaxiSimulationLandmarkY : Idx {
  HOMEY = 0 , WORKY = 4 , THEATERY = 0 , CLUBY = 4 ,
  STATIONY = 1
}
enum  TaxiSimulationAction : Idx {
  GoNorth = 0 , GoEast = 1 , GoSouth = 2 , GoWest = 3 ,
  PickUp = 4 , PutDown = 5 , FillUp = 6
}

Functions

template<typename Val, typename Cmp>
std::ostream & operator<< (std::ostream &stream, const AVLTree< Val, Cmp > &tree)
 display the content of a tree
template<typename T1, typename T2>
std::ostream & operator<< (std::ostream &, const Bijection< T1, T2 > &bijection)
 For friendly display of the content of the gum::Bijection.
unsigned int _hashTableLog2_ (const Size nb)
 Returns the size in bits - 1 necessary to store the smallest power of 2 greater than or equal to nb.
template<typename Key, typename Val>
std::ostream & operator<< (std::ostream &s, const HashTableList< Key, Val > &list)
 Prints the content of a gum::HashTableList in the stream.
template<typename Key, typename Val>
std::ostream & operator<< (std::ostream &s, const HashTableList< Key *, Val > &list)
 Prints the content of a gum::HashTableList with pointers key in the stream.
template<typename Key, typename Val>
std::ostream & operator<< (std::ostream &s, const HashTable< Key, Val > &table)
 Prints the content of a gum::HashTable in the stream.
template<typename Key, typename Val>
std::ostream & operator<< (std::ostream &s, const HashTable< Key *, Val > &table)
 Prints the content of a gum::HashTable with pointers key in the stream.
HashTableIteratorSafe< Key, Val > & operator++ () noexcept
HashTableIteratorSafe< Key, Val > & operator+= (Size i) noexcept
 Makes the iterator point to i elements further in the hashtable.
HashTableIteratorSafe< Key, Val > operator+ (Size i) const
 Returns a new iterator pointing to i elements further in the hashtable.
bool operator== (const HashTableIteratorSafe< Key, Val > &from) const noexcept
 Checks whether two iterators are pointing toward equal elements.
value_type & operator* ()
 Returns the value pointed to by the iterator.
template<typename Val, typename Cmp>
std::ostream & operator<< (std::ostream &, const Heap< Val, Cmp > &)
template<typename Key, typename Data>
std::ostream & operator<< (std::ostream &, const IndexedTree< Key, Data > &)
 Necessary for the hashtable operator <<.
template<typename Val>
std::ostream & operator<< (std::ostream &stream, const List< Val > &list)
 an << operator for List
template<typename Val>
ListConstIterator< Val >::difference_type operator- (const ListConstIterator< Val > &iter1, const ListConstIterator< Val > &iter2)
 For STL compliance, a distance operator.
template<typename Val>
ListConstIteratorSafe< Val >::difference_type operator- (const ListConstIteratorSafe< Val > &iter1, const ListConstIteratorSafe< Val > &iter2)
 For STL compliance, a distance operator.
void print_stack (std::stack< FormulaPart > s)
void print_output (std::vector< FormulaPart > v)
std::string func2str (FormulaPart::token_function func)
Formula operator- (const Formula &a)
Formula operator+ (const Formula &a, const Formula &b)
Formula operator- (const Formula &a, const Formula &b)
Formula operator* (const Formula &a, const Formula &b)
Formula operator/ (const Formula &a, const Formula &b)
std::string to_string (const Formula &f)
std::ostream & operator<< (std::ostream &os, const Formula &f)
template<typename T>
bool isCloseToZero (T x, T tol=T(1e-9))
template<typename T>
bool isCloseToOne (T x, T tol=T(1e-9))
template<typename T>
bool isfinite (T arg)
template<typename Val, typename Priority, typename Cmp>
std::ostream & operator<< (std::ostream &stream, const MultiPriorityQueue< Val, Priority, Cmp > &queue)
template<typename Val, typename Priority, typename Cmp>
std::ostream & operator<< (std::ostream &, const PriorityQueue< Val, Priority, Cmp > &)
template<typename Key>
std::ostream & operator<< (std::ostream &stream, const Sequence< Key > &s)
 A << operator for displaying the content of the Sequence.
template<typename Key, bool Gen>
std::ostream & operator<< (std::ostream &stream, const SequenceImplementation< Key, Gen > &seq)
template<typename Key>
std::ostream & operator<< (std::ostream &stream, const SequenceImplementation< Key, true > &seq)
template<typename Key>
std::ostream & operator<< (std::ostream &, const Set< Key > &)
 A << operator for HashTableList.
template<typename Val, typename Priority, typename Cmp>
std::ostream & operator<< (std::ostream &stream, const SortedPriorityQueue< Val, Priority, Cmp > &queue)
 display the content of a sorted priority queue
template<typename Element>
INLINE std::ostream & operator<< (std::ostream &out, const SplayBinaryNode< Element > &e)
 Display the node.
template<typename Element>
INLINE std::ostream & operator<< (std::ostream &out, const SplayTree< Element > &s)
 Display the tree.
template<class Element>
static void removeInfo (const SplayBinaryNode< Element > *e, HashTable< Element, SplayBinaryNode< Element > * > &addr)
template<typename Element>
std::ostream & operator<< (std::ostream &out, const SplayBinaryNode< Element > &e)
 Display the node.
template<typename Element>
std::ostream & operator<< (std::ostream &out, const SplayTree< Element > &s)
 Display the tree.
void setNumberOfThreads (unsigned int number)
 Set the max number of threads to be used when entering the next parallel region.
bool isOMP ()
 indicates whether aGrUM uses openMP or STL threads
std::vector< std::pair< Idx, Idx > > dispatchRangeToThreads (Idx beg, Idx end, unsigned int nb_threads)
 returns a vector equally splitting elements of a range among threads
std::ostream & operator<< (std::ostream &os, const Timer &t)
template<typename GENERATOR>
Idx randomValue (GENERATOR &generator, const Size max)
std::ostream & operator<< (std::ostream &, const VariableNodeMap &)
 for friendly displaying the content of clique graphs
std::ostream & operator<< (std::ostream &, const CliqueGraph &)
 for friendly displaying the content of clique graphs
std::ostream & operator<< (std::ostream &stream, const DiGraph &g)
 for friendly displaying the content of directed graphs
std::ostream & operator<< (std::ostream &stream, const Edge &edge)
 to friendly display an edge
std::ostream & operator<< (std::ostream &stream, const Arc &arc)
 to friendly display an arc
std::ostream & operator<< (std::ostream &stream, const MixedGraph &g)
 for friendly displaying the content of directed graphs
std::ostream & operator<< (std::ostream &stream, const PAG &g)
std::ostream & operator<< (std::ostream &s, const ArcGraphPart &a)
 for friendly displaying the content of arc set
std::ostream & operator<< (std::ostream &, const EdgeGraphPart &)
 for friendly displaying the content of an edge set
std::ostream & operator<< (std::ostream &, const NodeGraphPart &)
 for friendly displaying the content of node set
bool rec_hasMixedReallyOrientedPath (const PDAG &gr, NodeSet &marked, NodeId node, NodeId goal, bool alreadyOriented)
std::ostream & operator<< (std::ostream &stream, const UndiGraph &g)
 for friendly displaying the content of undirected graphs
std::vector< uint8_t > _readVector_ (std::istream &is)
 Reads a length-prefixed byte vector from a binary stream (bgum format).
void _writeVector_ (std::ostream &os, const std::vector< uint8_t > &vec)
 Writes a length-prefixed byte vector to a binary stream (bgum format).
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &s, const MultiDimLogit< GUM_SCALAR > &ag)
 For friendly displaying the content of the array.
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &s, const MultiDimNoisyAND< GUM_SCALAR > &ag)
 For friendly displaying the content of the array.
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &s, const MultiDimNoisyORCompound< GUM_SCALAR > &ag)
 For friendly displaying the content of the array.
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &s, const MultiDimNoisyORNet< GUM_SCALAR > &ag)
 For friendly displaying the content of the array.
template<typename GUM_ELEMENT>
std::ostream & operator<< (std::ostream &out, const MultiDimContainer< GUM_ELEMENT > &array)
template<typename GUM_ELEMENT>
void _initTensorOperators__ ()
template<typename GUM_ELEMENT>
std::ostream & operator<< (std::ostream &, const MultiDimImplementation< GUM_ELEMENT > &)
 For friendly displaying the content of the array.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > & operator<< (MultiDimImplementation< GUM_ELEMENT > &array, const DiscreteVariable &v)
MultiDimInterfaceoperator<< (MultiDimInterface &c, const DiscreteVariable &v)
 Adds a new var to the sequence of vars.
MultiDimInterfaceoperator>> (MultiDimInterface &c, const DiscreteVariable &v)
 Removes a var from the variables of the MutliDimAdressing.
std::ostream & operator<< (std::ostream &, const Instantiation &)
 Print information of the instantiation in the stream.
std::ostream & operator<< (std::ostream &, const SetInst &)
 Print information of the SetInst in the stream.
gum::SetInstoperator<< (gum::SetInst &inst, const gum::DiscreteVariable &i)
 Adds a variable to inst.
gum::SetInstoperator>> (gum::SetInst &inst, const gum::DiscreteVariable &i)
 Removes a variable to inst.
template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > log2 (const Tensor< GUM_SCALAR > &arg)
template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > abs (const Tensor< GUM_SCALAR > &arg)
template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > sq (const Tensor< GUM_SCALAR > &arg)
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &out, const Tensor< GUM_SCALAR > &array)
template<typename GUM_ELEMENT>
void registerCompleteProjection (std::string_view projection_name, std::string_view type_multidim, typename CompleteProjectionRegister4MultiDim< GUM_ELEMENT >::CompleteProjectionPtr function)
 A function to more easily register new projection functions in MultiDims.
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMax (const MultiDimImplementation< GUM_ELEMENT > &table, Instantiation *instantiation=0)
 the function to be used to project a MultiDimImplementation using a Max
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMin (const MultiDimImplementation< GUM_ELEMENT > &table, Instantiation *instantiation=0)
 the function to be used to project a MultiDimImplementation using a Min
template<typename GUM_ELEMENT>
GUM_ELEMENT projectSum (const MultiDimImplementation< GUM_ELEMENT > &table, Instantiation *instantiation=0)
 the function to be used to project a MultiDimImplementation using a sum
template<typename GUM_ELEMENT>
GUM_ELEMENT projectProduct (const MultiDimImplementation< GUM_ELEMENT > &table, Instantiation *instantiation=0)
 the function to be used to project a MultiDimImplementation using a Product
template<typename GUM_ELEMENT>
void completeProjections4MultiDimInit ()
 the function used to register all the complete projection operators on multidimImplementations over non-pointers types.
template<typename GUM_ELEMENT>
void pointerCompleteProjections4MultiDimInit ()
 The function used to register all the complete projections on multidimImplementations over pointers types.
template<typename GUM_ELEMENT>
void registerOperator (std::string_view operation_name, std::string_view type1, std::string_view type2, typename OperatorRegister4MultiDim< GUM_ELEMENT >::OperatorPtr function)
 A function to more easily register new operators in MultiDims.
template<typename GUM_ELEMENT>
void operators4MultiDimInit ()
 the function used to register all the operators on multidimImplementations over non-pointers types.
template<typename GUM_ELEMENT>
void pointerOperators4MultiDimInit ()
 the function used to register all the operators on multidimImplementations over pointers types.
template<typename GUM_ELEMENT>
void registerProjection (std::string_view projection_name, std::string_view type_multidim, typename ProjectionRegister4MultiDim< GUM_ELEMENT >::ProjectionPtr function)
 A function to more easily register new projection functions in MultiDims.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMax (const MultiDimImplementation< GUM_ELEMENT > &table, const gum::VariableSet &del_vars)
 The function to be used to project a MultiDimImplementation using a Max.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMin (const MultiDimImplementation< GUM_ELEMENT > &table, const gum::VariableSet &del_vars)
 The function to be used to project a MultiDimImplementation using a Min.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectSum (const MultiDimImplementation< GUM_ELEMENT > &table, const gum::VariableSet &del_vars)
 The function to be used to project a MultiDimImplementation using a Sum.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectProduct (const MultiDimImplementation< GUM_ELEMENT > &table, const gum::VariableSet &del_vars)
 The function to be used to project a MultiDimImplementation using a Product.
template<typename GUM_ELEMENT>
void projections4MultiDimInit ()
 the function used to register all the projection operators on multidimImplementations over non-pointers types.
template<typename GUM_ELEMENT>
void pointerProjections4MultiDimInit ()
 the function used to register all the projections on multidimImplementations over pointers types.
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * partialInstantiationMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 A specialized function for instantiating variables in a multiDimArray.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * partialInstantiationMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 A specialized function for instantiating variables in a MultiDimImplementation.
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * partialInstantiationMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 A specialized function for instantiating variables in a MultiDimArray.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * partialInstantiationMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 A specialized function for instantiating variables in a MultiDimArray.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * partialInstantiation (const MultiDimImplementation< GUM_ELEMENT > &table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 Instantiate variables in a MultiDimImplementation.
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * partialInstantiation (const MultiDimDecorator< GUM_ELEMENT > &table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
 Instantiate variables in a MultiDimDecorator.
template<typename GUM_ELEMENT>
void partialInstantiation4MultiDimInit ()
 The function used to register all the instantiation operators on multidimImplementations over non-pointers types.
template<typename GUM_ELEMENT>
void pointerPartialInstantiation4MultiDimInit ()
 The function used to register all the instantiations on multidimImplementations over pointers types.
template<typename GUM_ELEMENT>
void registerPartialInstantiation (std::string_view instantiation_func_name, std::string_view type_multidim, typename PartialInstantiationRegister4MultiDim< GUM_ELEMENT >::PartialInstantiationPtr function)
 A function to more easily register new instantiation functions in MultiDims.
template<GUM_Numeric GUM_SCALAR = double>
std::unique_ptr< DiscreteVariablefastVariable (std::string var_description, Size default_domain_size)
 Create a pointer on a Discrete Variable from a "fast" syntax.
template<GUM_Numeric GUM_SCALAR = double>
std::unique_ptr< DiscreteVariablefastVariable (std::string var_description, std::string_view default_domain="[2]")
 Create a pointer on a Discrete Variable from a "fast" syntax.
template<typename T_VAL>
std::ostream & operator<< (std::ostream &, const ContinuousVariable< T_VAL > &)
 for friendly displaying the content of the variable
std::ostream & operator<< (std::ostream &, const DiscreteVariable &)
 for friendly displaying the content of the variable
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &output, const BayesNet< GUM_SCALAR > &bn)
 Prints map's DAG in output using the Graphviz-dot format.
template<GUM_Numeric GUM_SCALAR>
NodeId build_node (gum::BayesNet< GUM_SCALAR > &bn, std::string_view node, std::string_view default_domain)
template<GUM_Numeric GUM_SCALAR>
gum::Size getMaxModality (gum::BayesNet< GUM_SCALAR > &bayesNet)
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &output, const IBayesNet< GUM_SCALAR > &bn)
 Prints map's DAG in output using the Graphviz-dot format.
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > LPNewmultiTensor (const Tensor< GUM_SCALAR > &t1, const Tensor< GUM_SCALAR > &t2)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > LPNewprojTensor (const Tensor< GUM_SCALAR > &t1, const gum::VariableSet &del_vars)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > LPMaxprojTensor (const Tensor< GUM_SCALAR > &t1, const gum::VariableSet &del_vars)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > SSNewmultiTensor (const Tensor< GUM_SCALAR > &t1, const Tensor< GUM_SCALAR > &t2)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > SSNewprojTensor (const Tensor< GUM_SCALAR > &t1, const gum::VariableSet &del_vars)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > VENewmultiTensor (const Tensor< GUM_SCALAR > &t1, const Tensor< GUM_SCALAR > &t2)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > VENewprojTensor (const Tensor< GUM_SCALAR > &t1, const gum::VariableSet &del_vars)
template<GUM_Numeric GUM_SCALAR>
std::tuple< CausalImpact< GUM_SCALAR >, Tensor< GUM_SCALAR >, std::string > causalImpact (const CausalModel< GUM_SCALAR > &cm, const Set< std::string > &on, const Set< std::string > &doing, const Set< std::string > &knowing=Set< std::string >(), const HashTable< std::string, std::string > &values=HashTable< std::string, std::string >())
 Standalone helper that mirrors the Python function causalImpact(...).
template<GUM_Numeric GUM_SCALAR>
Instantiation makeInstantiationFromValues (const Tensor< GUM_SCALAR > &tensor, const HashTable< std::string, std::string > &values)
 Creates an instance for a tensor based on a HashTable.
std::string _formatVarsForSentence_ (const Set< std::string > &vars)
std::string _dsepExplanation_ (const Set< std::string > &on, const Set< std::string > &doing, const Set< std::string > &knowing)
DAG _removeIncomingIntoLocal_ (const DAG &g, const NodeSet &xset)
template<GUM_Numeric GUM_SCALAR>
std::string _formatNodeSetNames_ (const CausalModel< GUM_SCALAR > &cm, const NodeSet &zset)
template Tensor< doublecounterfactual< double > (const CausalModel< double > &, const Set< std::string > &, const Set< std::string > &, const HashTable< std::string, std::string > &, const HashTable< std::string, std::string > &)
template CausalModel< doublecounterfactualModel< double > (const CausalModel< double > &, const HashTable< std::string, std::string > &, const Set< std::string > &)
template<GUM_Numeric GUM_ELEMENT>
Tensor< GUM_ELEMENT > counterfactual (const CausalModel< GUM_ELEMENT > &cm, const Set< std::string > &on, const Set< std::string > &whatif, const HashTable< std::string, std::string > &profile=HashTable< std::string, std::string >(), const HashTable< std::string, std::string > &values=HashTable< std::string, std::string >())
 Compute a counterfactual distribution using the high-level API.
template<GUM_Numeric GUM_ELEMENT>
CausalModel< GUM_ELEMENT > counterfactualModel (const CausalModel< GUM_ELEMENT > &cm, const HashTable< std::string, std::string > &profile, const Set< std::string > &whatif)
 Build the twin causal model.
template<GUM_Numeric GUM_SCALAR>
std::unique_ptr< ASTtree< GUM_SCALAR > > productOfTrees (std::vector< std::unique_ptr< ASTtree< GUM_SCALAR > > > &&lterms)
 Build a product AST from a list of terms.
template std::unique_ptr< ASTtree< double > > productOfTrees< double > (std::vector< std::unique_ptr< ASTtree< double > > > &&)
INLINE std::ostream & operator<< (std::ostream &streamy, const ActionSet &objy)
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &out, const DecisionTensor< GUM_SCALAR > &array)
template<GUM_Numeric GUM_SCALAR>
NodeId build_node_for_ID (gum::InfluenceDiagram< GUM_SCALAR > &infdiag, std::string node, std::string_view domain)
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &output, const IMarkovRandomField< GUM_SCALAR > &mn)
 Prints map's graph in output using the Graphviz-dot format.
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > SSNewMNmultiTensor (const Tensor< GUM_SCALAR > &t1, const Tensor< GUM_SCALAR > &t2)
template<GUM_Numeric GUM_SCALAR>
static INLINE Tensor< GUM_SCALAR > SSNewMNprojTensor (const Tensor< GUM_SCALAR > &t1, const gum::VariableSet &del_vars)
template<GUM_Numeric GUM_SCALAR>
NodeId build_node_for_MN (MarkovRandomField< GUM_SCALAR > &mn, std::string_view node, std::string_view default_domain)
template<GUM_Numeric GUM_SCALAR>
std::ostream & operator<< (std::ostream &output, const MarkovRandomField< GUM_SCALAR > &mn)
unsigned int getMaxNumberOfThreads ()
 Returns the maximum number of threads you should use at any time.
unsigned int getNumberOfThreads ()
 returns the max number of threads used by default when entering the next parallel region
unsigned int getNumberOfLogicalProcessors ()
 Get the number of logical processors.
Integers Pow utility methods
unsigned long intPow (unsigned long base, unsigned long exponent)
 Specialized pow function with integers (faster implementation).
uint64_t int2Pow (uint64_t exponent)
 Specialized base 2 pow function with integer.
void superiorPow (unsigned long card, unsigned long &num_bits, unsigned long &new_card)
 Compute the superior and closest power of two of an integer.
Idx randomValue (const Size max=2)
 Returns a random Idx between 0 and max-1 included.
double randomProba ()
 Returns a random double between 0 and 1 included (i.e.
template<GUM_Numeric GUM_SCALAR>
std::vector< GUM_SCALAR > randomDistribution (Size n)
 Return a random discrete distribution.
unsigned int randomGeneratorSeed ()
 Returns the aGrUM's seed used by the std::generators.
unsigned int currentRandomGeneratorValue ()
 returns the current generator's value
void initRandom (unsigned int seed=0)
 Initialize random generator seed.
std::mt19937 & randomGenerator ()
 define a random_engine with correct seed
std::string getUniqueFileName ()
 Returns a path to a unique file name.
bool endsWith (const std::string_view &value, const std::string_view &ending)
 Returns true if value ends with ending.
std::vector< std::string > split (std::string_view orig, std::string_view delimiter)
 Split str using the delimiter.
std::string replace (std::string_view s, std::string_view val, std::string_view new_val)
 Replace val by new_val in s.
bool isIntegerWithResult (std::string_view val, int *res)
 return true is a string contains an integer value
bool isNumericalWithResult (std::string_view val, double *res)
 return true is a string contains a numerical (double) value
std::string toLower (std::string_view str)
 Returns the lowercase version of str.
bool contains (std::string_view s, std::string_view needle)
 true if needle in s
bool isInteger (std::string_view val)
 return true is a string contains an integer value
bool isNumerical (std::string_view val)
 return true is a string contains a numerical (double) value
void ltrim (std::string &s)
 trim from start (in place)
void rtrim (std::string &s)
 trim from end (in place)
void trim (std::string &s)
 trim from both ends (in place)
std::string trim_copy (std::string_view s)
 trim from both ends (copying)
std::string remove_newline (std::string_view s)
 remove all newlines in a string
template<typename T>
std::string compact_tostr (T value)
 Returns a path to a unique file name.
Project Max Operators
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMaxMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Max operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMaxMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Max operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectMaxMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Max operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectMaxMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Max operator.
Project Min Operators
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMinMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Min operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT projectMinMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Min operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectMinMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Min operator.
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectMinMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 A specialized function for projecting a multiDimArray using a Min operator.
Project Sum Operators
template<typename GUM_ELEMENT>
GUM_ELEMENT projectSumMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 a specialized function for projecting a multiDimArray using a Sum operator
template<typename GUM_ELEMENT>
GUM_ELEMENT projectSumMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 a specialized function for projecting a multiDimArray using a Sum operator
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectSumMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 a specialized function for projecting a multiDimArray using a Sum operator
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectSumMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 a specialized function for projecting a multiDimArray using a Sum operator
Project Multiply Operators
template<typename GUM_ELEMENT>
GUM_ELEMENT projectProductMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 a function for projecting a multiDimArray using a Product operator
template<typename GUM_ELEMENT>
GUM_ELEMENT projectProductMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, Instantiation *instantiation=0)
 a function for projecting a multiDimArray using a Product operator
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectProductMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 a function for projecting a multiDimArray using a Product operator
template<typename GUM_ELEMENT>
GUM_ELEMENT * projectProductMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, Instantiation *instantiation=0)
 a function for projecting a multiDimArray using a Product operator
Add MultiDims
template<typename T>
MultiDimArray< T > * add2MultiDimArrays (const MultiDimArray< T > *t1, const MultiDimArray< T > *t2)
 a specialized function for summing two multiDimArrays
template<typename T>
MultiDimImplementation< T > * add2MultiDimArrays (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for summing two multiDimArrays
template<typename T>
MultiDimArray< T * > * add2MultiDimArrays4Pointers (const MultiDimArray< T * > *t1, const MultiDimArray< T * > *t2)
 a specialized function for summing two multiDimArrays
template<typename T>
MultiDimImplementation< T * > * add2MultiDimArrays4Pointers (const MultiDimImplementation< T * > *t1, const MultiDimImplementation< T * > *t2)
 a specialized function for summing two multiDimArrays
template<typename T>
MultiDimFunctionGraph< T > * add2MultiDimFunctionGraphs (const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
 a specialized function for summing two multiDimArrays
template<typename T>
MultiDimImplementation< T > * add2MultiDimFunctionGraphs (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for summing two multiDimArrays
Substract MultiDims
template<typename T>
MultiDimArray< T > * subtract2MultiDimArrays (const MultiDimArray< T > *t1, const MultiDimArray< T > *t2)
 a specialized function for subtracting two multiDimArrays
template<typename T>
MultiDimImplementation< T > * subtract2MultiDimArrays (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for subtracting two multiDimArrays
template<typename T>
MultiDimArray< T * > * subtract2MultiDimArrays4Pointers (const MultiDimArray< T * > *t1, const MultiDimArray< T * > *t2)
 a specialized function for subtracting two multiDimArrays
template<typename T>
MultiDimImplementation< T * > * subtract2MultiDimArrays4Pointers (const MultiDimImplementation< T * > *t1, const MultiDimImplementation< T * > *t2)
 a specialized function for subtracting two multiDimArrays
template<typename T>
MultiDimFunctionGraph< T > * subtract2MultiDimFunctionGraphs (const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
 a specialized function for subtracting two multiDimArrays
template<typename T>
MultiDimImplementation< T > * subtract2MultiDimFunctionGraphs (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for subtracting two multiDimArrays
Multiply MultiDims
template<typename T>
MultiDimArray< T > * multiply2MultiDimArrays (const MultiDimArray< T > *t1, const MultiDimArray< T > *t2)
 a specialized function for multiplying two multiDimArrays
template<typename T>
MultiDimImplementation< T > * multiply2MultiDimArrays (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for multiplying two multiDimArrays
template<typename T>
MultiDimArray< T * > * multiply2MultiDimArrays4Pointers (const MultiDimArray< T * > *t1, const MultiDimArray< T * > *t2)
 a specialized function for multiplying two multiDimArrays
template<typename T>
MultiDimImplementation< T * > * multiply2MultiDimArrays4Pointers (const MultiDimImplementation< T * > *t1, const MultiDimImplementation< T * > *t2)
 a specialized function for multiplying two multiDimArrays
template<typename T>
MultiDimFunctionGraph< T > * multiply2MultiDimFunctionGraphs (const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
 a specialized function for multiplying two multiDimArrays
template<typename T>
MultiDimImplementation< T > * multiply2MultiDimFunctionGraphs (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for multiplying two multiDimArrays
Divide MultiDims
template<typename T>
MultiDimArray< T > * divide2MultiDimArrays (const MultiDimArray< T > *t1, const MultiDimArray< T > *t2)
 a specialized function for dividing two multiDimArrays
template<typename T>
MultiDimImplementation< T > * divide2MultiDimArrays (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for dividing two multiDimArrays
template<typename T>
MultiDimArray< T * > * divide2MultiDimArrays4Pointers (const MultiDimArray< T * > *t1, const MultiDimArray< T * > *t2)
 a specialized function for dividing two multiDimArrays
template<typename T>
MultiDimImplementation< T * > * divide2MultiDimArrays4Pointers (const MultiDimImplementation< T * > *t1, const MultiDimImplementation< T * > *t2)
 a specialized function for dividing two multiDimArrays
template<typename T>
MultiDimFunctionGraph< T > * divide2MultiDimFunctionGraphs (const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
 a specialized function for dividing two multiDimArrays
template<typename T>
MultiDimImplementation< T > * divide2MultiDimFunctionGraphs (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for dividing two multiDimArrays
Maximise MultiDims
template<typename T>
MultiDimFunctionGraph< T > * maximise2MultiDimFunctionGraphs (const MultiDimFunctionGraph< T > *t1, const MultiDimFunctionGraph< T > *t2)
 a specialized function for compare value from two multiDimFunctionGraphs and gets the maximal
template<typename T>
MultiDimImplementation< T > * maximise2MultiDimFunctionGraphs (const MultiDimImplementation< T > *t1, const MultiDimImplementation< T > *t2)
 a specialized function for compare value from two multiDimFunctionGraphs and gets the maximal
Operators over MultiDim
template<typename T>
MultiDimImplementation< T > * operator+ (const MultiDimImplementation< T > &, const MultiDimImplementation< T > &)
 The function to be used to add two MultiDimImplementations.
template<typename T>
MultiDimImplementation< T > * operator- (const MultiDimImplementation< T > &, const MultiDimImplementation< T > &)
 The function to be used to subtract two MultiDimImplementations.
template<typename T>
MultiDimImplementation< T > * operator* (const MultiDimImplementation< T > &, const MultiDimImplementation< T > &)
 The function to be used to multiply two MultiDimImplementations.
template<typename T>
MultiDimImplementation< T > * operator/ (const MultiDimImplementation< T > &, const MultiDimImplementation< T > &)
 The function to be used to divide two MultiDimImplementations.
Project Max for MultiDim
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * projectMaxMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Max operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMaxMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Max operator
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * projectMaxMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Max operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * projectMaxMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Max operator
Project Min for MultiDim
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * projectMinMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Min operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMinMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Min operator
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * projectMinMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Min operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * projectMinMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a Min operator
Project Sum for MultiDim
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * projectSumMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a summation
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectSumMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a summation
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * projectSumMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a summation
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * projectSumMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using a summation
Project Product for MultiDim
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * projectProductMultiDimArray (const MultiDimArray< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using products
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectProductMultiDimArray (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using products
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * projectProductMultiDimArray4Pointers (const MultiDimArray< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using products
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * projectProductMultiDimArray4Pointers (const MultiDimImplementation< GUM_ELEMENT * > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimArray using products
Project Function for MultiDim
template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * ProjectFuncMultiDimArray (const MultiDimArray< GUM_ELEMENT > *t1, const MultiDimArray< GUM_ELEMENT > *t2, const GUM_ELEMENT(*f)(const GUM_ELEMENT &, const GUM_ELEMENT &))
 a specialized function for functionally projecting a multiDimArray
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * combine2MultiDimArrays (const MultiDimImplementation< GUM_ELEMENT > *t1, const MultiDimImplementation< GUM_ELEMENT > *t2, const GUM_ELEMENT(*f)(const GUM_ELEMENT &, const GUM_ELEMENT &))
 a specialized function for functionally projecting a multiDimArray
Projectors For Function Graphs
template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * projectMaxMultiDimFunctionGraph (const MultiDimFunctionGraph< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a Max operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMaxMultiDimFunctionGraph (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a Max operator
template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * projectMinMultiDimFunctionGraph (const MultiDimFunctionGraph< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a Min operator
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectMinMultiDimFunctionGraph (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a Min operator
template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * projectSumMultiDimFunctionGraph (const MultiDimFunctionGraph< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a summation
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectSumMultiDimFunctionGraph (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using a summation
template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * projectProductMultiDimFunctionGraph (const MultiDimFunctionGraph< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using products
template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * projectProductMultiDimFunctionGraph (const MultiDimImplementation< GUM_ELEMENT > *table, const gum::VariableSet &del_vars)
 a specialized function for projecting a multiDimFunctionGraph using products

Variables

const double VariableLog2ParamComplexityCTable [4][1000]
constexpr std::size_t VariableLog2ParamComplexityCTableRSize {std::size_t(4)}
constexpr std::size_t VariableLog2ParamComplexityCTableNSize {std::size_t(1000)}
template<>
const float MultiDimFunctionGraph< float >::defaultValue = 0.0f
template<>
const double MultiDimFunctionGraph< double >::defaultValue = 0.0
template<typename T1, typename T2>
using forbidden_type = typename std::enable_if< !std::is_same< T1, T2 >::value, int >::type
 Forbidden_type<T1,T2> return the "int" type if T1 and T2 are of the same type, else nothing.
bool Memcmp (const void *const in_, const void *const out_, unsigned long size)
 Cross-platform replacement for memcmp.
void _atexit_ ()
 Used for debug purpose.
using EdgeSet = Set< Edge >
 Some typdefs and define for shortcuts ...
using NodeSet = Set< NodeId >
 Some typdefs and define for shortcuts ...
using ArcSet = Set< Arc >
 Some typdefs and define for shortcuts ...
using ArcSetIterator = ArcSet::const_iterator
 Some typdefs and define for shortcuts ...
using EdgeSetIterator = EdgeSet::const_iterator
 Some typdefs and define for shortcuts ...
using NodeSetIterator = NodeSet::const_iterator
 Some typdefs and define for shortcuts ...
const NodeSet emptyNodeSet
 Some typdefs and define for shortcuts ...

Detailed Description

gum is the global namespace for all aGrUM entities

c++11 stuff, like declval ( decltype from prototype without a default constructor )

include the inlined functions if necessary

the function to be used to partially instantiate a MultiDimDecorator

class for LOGIT implementation as multiDim

Author
Pierre-Henri WUILLEMIN(_at_LIP6) & Christophe GONZALES(_at_AMU)
Todo
virtual for all functions that MAY be one day redefined in any derived class

Typedef Documentation

◆ FactorTable

template<GUM_Numeric GUM_SCALAR>
using gum::FactorTable = HashTable< NodeSet, const Tensor< GUM_SCALAR >* >

Definition at line 61 of file IMarkovRandomField.h.

◆ HybridGibbsSampling

template<GUM_Numeric GUM_SCALAR>
using gum::HybridGibbsSampling = LoopySamplingInference< GUM_SCALAR, GibbsSampling >

Definition at line 245 of file loopySamplingInference.h.

◆ HybridImportanceSampling

template<GUM_Numeric GUM_SCALAR>
using gum::HybridImportanceSampling = LoopySamplingInference< GUM_SCALAR, ImportanceSampling >

Definition at line 243 of file loopySamplingInference.h.

◆ HybridMonteCarloSampling

template<GUM_Numeric GUM_SCALAR>
using gum::HybridMonteCarloSampling = LoopySamplingInference< GUM_SCALAR, MonteCarloSampling >

Definition at line 239 of file loopySamplingInference.h.

◆ HybridWeightedSampling

template<GUM_Numeric GUM_SCALAR>
using gum::HybridWeightedSampling = LoopySamplingInference< GUM_SCALAR, WeightedSampling >

Definition at line 241 of file loopySamplingInference.h.

◆ JoinTree

a join tree is a clique graph satisfying the running intersection property (but some cliques may be included into others)

Definition at line 337 of file cliqueGraph.h.

◆ JunctionTree

a junction tree is a clique graph satisfying the running intersection property and such that no clique is included into another one.

Definition at line 333 of file cliqueGraph.h.

◆ LatentDescriptorIds

using gum::LatentDescriptorIds = std::pair< std::string, std::vector< NodeId > >

LatentDescriptorIds = (latentName, (child1Id, child2Id, ...)).

Compact descriptor for a single latent variable and its observed children.

The first element is the name of the latent to create; the second element is the list of **NodeId**s of observed children the latent points to in the causal DAG.

Definition at line 63 of file causalModel.h.

◆ LatentDescriptorVector

Collection of latent descriptors (see LatentDescriptorIds).

Definition at line 66 of file causalModel.h.

◆ pair_iterator

Definition at line 70 of file fusionContext.h.

◆ Signaler0

Signaler with no arguments.

This is an alias for Signaler<> (empty parameter pack). The callback signature is void handler(const void* src).

Definition at line 273 of file signaler.h.

◆ ThreadExecutor

◆ VariableSet

Definition at line 192 of file discreteVariable.h.

Enumeration Type Documentation

◆ BinTreeDir

enum class gum::BinTreeDir : char
strong

The direction of a given edge in a binary tree.

Enumerator
LEFT_CHILD 
RIGHT_CHILD 
NO_PARENT 

Definition at line 56 of file binTreeNode.h.

◆ Complexity

enum class gum::Complexity : char
strong

Complexity allows to characterize the awaited difficulty for an algorithm given a specific instance Therefore this is not a theoretical characterization but rather a pragmatic rate of that very instance.

Enumerator
Heavy 
Difficult 
Correct 

Definition at line 64 of file BNdistance.h.

◆ EdgeMark

enum class gum::EdgeMark : uint8_t
strong

Endpoint marks used in PAG edges.

Convention: marks_[Arc(x,y)] stores the mark at the y-endpoint when traversing from x. For edge x-y:

  • x→y : marks_[Arc(x,y)] = Arrowhead, marks_[Arc(y,x)] = Tail
  • x↔y : both = Arrowhead
  • xo-oy : both = Circle
Enumerator
Circle 
Tail 
Arrowhead 

Definition at line 65 of file PAG.h.

65: uint8_t { Circle = 0, Tail = 1, Arrowhead = 2 };
@ Arrowhead
Definition PAG.h:65

◆ FactorySimulationAction

Enumerator
GoNorth 
GoEast 
GoSouth 
GoWest 
PickUp 
PutDown 
FillUp 

Definition at line 80 of file factorySimulator.h.

80 : Idx {
81 GoNorth = 0,
82 GoEast = 1,
83 GoSouth = 2,
84 GoWest = 3,
85 PickUp = 4,
86 PutDown = 5,
87 FillUp = 6
88 };
Size Idx
Type for indexes.
Definition types.h:79

◆ FactorySimulationLandmark

Enumerator
HOME 
WORK 
THEATER 
CLUB 
Factory 

Definition at line 62 of file factorySimulator.h.

62: Idx { HOME = 0, WORK = 1, THEATER = 2, CLUB = 3, Factory = 4 };

◆ FactorySimulationLandmarkX

Enumerator
HOMEX 
WORKX 
THEATERX 
CLUBX 
STATIONX 

Definition at line 64 of file factorySimulator.h.

64 : Idx {
65 HOMEX = 0,
66 WORKX = 0,
67 THEATERX = 3,
68 CLUBX = 4,
69 STATIONX = 2
70 };

◆ FactorySimulationLandmarkY

Enumerator
HOMEY 
WORKY 
THEATERY 
CLUBY 
STATIONY 

Definition at line 72 of file factorySimulator.h.

72 : Idx {
73 HOMEY = 0,
74 WORKY = 4,
75 THEATERY = 0,
76 CLUBY = 4,
77 STATIONY = 1
78 };

◆ FindBarrenNodesType

enum class gum::FindBarrenNodesType
strong

type of algorithm to determine barren nodes

When constructing messages from one clique to its neighbor, we can determine that some nodes are barren, i.e., they are the only one at the left hand side of a conditioning bar and they appear in only one tensor. In such case, in a classical BN inference, there is no need to take them into account since their removal will necessarily create a constant tensor. So, we can discard their tensor from the computation. However, when computing p(evidence), we should not do that because the constant is important and need be computed.

Enumerator
FIND_NO_BARREN_NODES 
FIND_BARREN_NODES 

Definition at line 73 of file BayesNetInference.h.

73 {
74 FIND_NO_BARREN_NODES, // do not try to find barren nodes
75 FIND_BARREN_NODES // use a bottom-up algorithm to detect barren nodes
76 };

◆ FMDPfactory_state

enum class gum::FMDPfactory_state : char
strong

The enumeration of states in which the factory can be in.

Every documentation section's name indicates from which state you can call it's methods, and in which state it places the factory.

There is an exception for the delegated CPT definition methods which do not changes the state of the factory.

Enumerator
NONE 
VARIABLE 
ACTION 
TRANSITION 
COST 
REWARD 
DISCOUNT 

Definition at line 71 of file IfmdpFactory.h.

◆ LEARNERNAME

Enumerator
IMDDILEARNER 
ITILEARNER 

Definition at line 87 of file templateStrategy.h.

87{ IMDDILEARNER = 1, ITILEARNER = 2 };

◆ RelevantTensorsFinderType

enum class gum::RelevantTensorsFinderType
strong

type of algorithm for determining the relevant tensors for combinations using some d-separation analysis

When constructing messages from one clique to its neighbor, we can exploit d-separation to determine that some tensors are irrelevant for the message computation. So we can discard them and, thereby, speed-up the computations.

Enumerator
FIND_ALL 
DSEP_BAYESBALL_NODES 
DSEP_BAYESBALL_TENSORS 
DSEP_KOLLER_FRIEDMAN_2009 

Definition at line 63 of file relevantTensorsFinderType.h.

63 {
64 FIND_ALL, // do not perform d-separation analysis
65 DSEP_BAYESBALL_NODES, // BayesBall requisite nodes -> tensors
66 DSEP_BAYESBALL_TENSORS, // BayesBall requisite tensors (directly)
67 DSEP_KOLLER_FRIEDMAN_2009 // Koller & Friedman 2009 requisite tensors
68 };

◆ ScheduleOperatorType

enum class gum::ScheduleOperatorType : char
strong

the currently supported types of "low-level" operators

the types of "low-level" operators used for scheduling inferences

Enumerator
COMBINE_MULTIDIM 

combine 2 ScheduleMultiDims

PROJECT_MULTIDIM 

project a ScheduleMultiDim over a subset of its variables

DELETE_MULTIDIM 

remove from memory a multidimensional table stored in a ScheduleMultiDim

STORE_MULTIDIM 

store a multidimensional table outside of the scheduler

Definition at line 67 of file scheduleOperator.h.

67 : char {
76 };
@ STORE_MULTIDIM
store a multidimensional table outside of the scheduler
@ PROJECT_MULTIDIM
project a ScheduleMultiDim over a subset of its variables
@ DELETE_MULTIDIM
remove from memory a multidimensional table stored in a ScheduleMultiDim
@ COMBINE_MULTIDIM
combine 2 ScheduleMultiDims

◆ SchedulerType

the type of scheduler that can be used

Enumerator
SEQUENTIAL 
PARALLEL_OPERATORS 

Definition at line 61 of file scheduler.h.

61 {
62 SEQUENTIAL, // fully sequential scheduler
63 PARALLEL_OPERATORS // combinations and projections are dispatched among threads
64 };
@ PARALLEL_OPERATORS
Definition scheduler.h:63
@ SEQUENTIAL
Definition scheduler.h:62

◆ StaticInitializer

enum class gum::StaticInitializer : char
strong
Enumerator
CONSTINIT 
CONSTEXPR 

Definition at line 68 of file staticInitializer.h.

◆ TaxiSimulationAction

Enumerator
GoNorth 
GoEast 
GoSouth 
GoWest 
PickUp 
PutDown 
FillUp 

Definition at line 81 of file taxiSimulator.h.

81 : Idx {
82 GoNorth = 1,
83 GoEast = 2,
84 GoSouth = 3,
85 GoWest = 4,
86 PickUp = 5,
87 PutDown = 6,
88 FillUp = 7
89 };

◆ TaxiSimulationLandmark

Enumerator
HOME 
WORK 
THEATER 
CLUB 
TAXI 

Definition at line 63 of file taxiSimulator.h.

63: Idx { HOME = 0, WORK = 1, THEATER = 2, CLUB = 3, TAXI = 4 };

◆ TaxiSimulationLandmarkX

Enumerator
HOMEX 
WORKX 
THEATERX 
CLUBX 
STATIONX 

Definition at line 65 of file taxiSimulator.h.

65 : Idx {
66 HOMEX = 0,
67 WORKX = 0,
68 THEATERX = 3,
69 CLUBX = 4,
70 STATIONX = 2
71 };

◆ TaxiSimulationLandmarkY

Enumerator
HOMEY 
WORKY 
THEATERY 
CLUBY 
STATIONY 

Definition at line 73 of file taxiSimulator.h.

73 : Idx {
74 HOMEY = 0,
75 WORKY = 4,
76 THEATERY = 0,
77 CLUBY = 4,
78 STATIONY = 1
79 };

◆ TESTNAME

Enumerator
GTEST 
CHI2TEST 
LEASTSQUARETEST 

Definition at line 60 of file templateStrategy.h.

60{ GTEST = 1, CHI2TEST = 2, LEASTSQUARETEST = 3 };
@ LEASTSQUARETEST

◆ VarType

enum class gum::VarType : char
strong
Enumerator
DISCRETIZED 
LABELIZED 
INTEGER 
NUMERICAL 
RANGE 
CONTINUOUS 

Definition at line 62 of file variable.h.

Function Documentation

◆ _dsepExplanation_()

std::string gum::_dsepExplanation_ ( const Set< std::string > & on,
const Set< std::string > & doing,
const Set< std::string > & knowing )
inline

Definition at line 70 of file causalImpact_tpl.h.

72 {
73 std::string os = std::format("No causal effect of {} on {} because they are d-separated "
74 "after removing incoming edges into {}",
78 if (!knowing.empty()) {
79 os += std::format(" and conditioning on {}", _formatVarsForSentence_(knowing));
80 }
81 os += ".";
82 return os;
83 }
bool empty() const noexcept
Indicates whether the set is the empty set.
Definition set_tpl.h:613
std::string _formatVarsForSentence_(const Set< std::string > &vars)

References _formatVarsForSentence_(), and gum::Set< Key >::empty().

Here is the call graph for this function:

◆ _formatNodeSetNames_()

template<GUM_Numeric GUM_SCALAR>
std::string gum::_formatNodeSetNames_ ( const CausalModel< GUM_SCALAR > & cm,
const NodeSet & zset )

Definition at line 96 of file causalImpact_tpl.h.

96 {
97 std::vector< std::string > names;
98 for (auto id: zset) {
99 names.push_back(cm.nameFromId(id));
100 }
101 std::ranges::sort(names);
102 std::string out = "[";
103 for (size_t i = 0; i < names.size(); ++i) {
104 if (i > 0) out += ", ";
105 out += "'" + names[i] + "'";
106 }
107 out += "]";
108 return out;
109 }
std::string nameFromId(NodeId id) const
Variable name from node id (observed or latent).

◆ _formatVarsForSentence_()

std::string gum::_formatVarsForSentence_ ( const Set< std::string > & vars)
inline

Definition at line 51 of file causalImpact_tpl.h.

51 {
52 std::vector< std::string > names;
53 for (const auto& v: vars) {
54 names.push_back(v);
55 }
56 std::ranges::sort(names);
57
58 if (names.empty()) { return ""; }
59 if (names.size() == 1) { return names[0]; }
60 if (names.size() == 2) { return names[0] + " and " + names[1]; }
61
62 std::string os;
63 for (size_t i = 0; i < names.size(); ++i) {
64 if (i > 0) { os += (i + 1 == names.size() ? ", and " : ", "); }
65 os += names[i];
66 }
67 return os;
68 }

Referenced by _dsepExplanation_().

Here is the caller graph for this function:

◆ _initTensorOperators__()

template<typename GUM_ELEMENT>
void gum::_initTensorOperators__ ( )

Definition at line 63 of file multiDimDecorator_tpl.h.

63 {
64 // ensure that only one thread will register the projections
65 static std::once_flag first;
66 std::call_once(first, []() {
67 // register the operators that will be used by the decorator
69 op.init();
70
71 // register the projectors that will be used by the decorator
73 proj.init();
74
75 // register the projectors that will be used by the decorator
77 comp_proj.init();
78
79 // register the partial instantiators that will be used by the decorator
81 inst.init();
82 });
83 }
a class used to register complete projections over non-pointers types
a class used to register operators over non-pointers types
A class used to register instantiation functions over non-pointers types.
void init()
Initialize the partial instantiation functions.
a class used to register projections over non-pointers types

References gum::CompleteProjections4MultiDimInitialize< GUM_ELEMENT >::init(), gum::Operators4MultiDimInitialize< GUM_ELEMENT >::init(), gum::PartialInstantiation4MultiDimInitialize< GUM_ELEMENT >::init(), and gum::Projections4MultiDimInitialize< GUM_ELEMENT >::init().

Referenced by gum::MultiDimDecorator< GUM_ELEMENT >::MultiDimDecorator(), and gum::MultiDimDecorator< GUM_ELEMENT >::MultiDimDecorator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _readVector_()

INLINE std::vector< uint8_t > gum::_readVector_ ( std::istream & is)

Reads a length-prefixed byte vector from a binary stream (bgum format).

The first 8 bytes encode the payload length as a little-endian uint64_t, followed by that many payload bytes.

Parameters
isThe input binary stream.
Returns
The payload bytes.

Definition at line 50 of file GumBinaryIO_inl.h.

50 {
51 uint64_t size = 0;
52 is.read(reinterpret_cast< char* >(&size), sizeof(size));
53 if (!is) throw std::runtime_error("GumBinaryIO: failed to read vector size");
54 constexpr uint64_t kMaxVecSize = uint64_t(256) << 20;
55 if (size > kMaxVecSize)
56 throw std::runtime_error("GumBinaryIO: vector size exceeds 256 MB limit");
57 std::vector< uint8_t > vec(size);
58 is.read(reinterpret_cast< char* >(vec.data()), static_cast< std::streamsize >(size));
59 if (!is) throw std::runtime_error("GumBinaryIO: failed to read vector data");
60 return vec;
61 }

◆ _removeIncomingIntoLocal_()

DAG gum::_removeIncomingIntoLocal_ ( const DAG & g,
const NodeSet & xset )
inline

Definition at line 85 of file causalImpact_tpl.h.

85 {
86 DAG out(g);
87 for (const auto x: xset) {
88 const auto parents = out.parents(x);
89 for (const auto p: parents)
90 out.eraseArc(Arc(p, x));
91 }
92 return out;
93 }
The base class for all directed edges.
Base class for dag.
Definition DAG.h:121

◆ _writeVector_()

INLINE void gum::_writeVector_ ( std::ostream & os,
const std::vector< uint8_t > & vec )

Writes a length-prefixed byte vector to a binary stream (bgum format).

Parameters
osThe output binary stream.
vecThe payload bytes to write.

Definition at line 63 of file GumBinaryIO_inl.h.

63 {
64 uint64_t size = vec.size();
65 os.write(reinterpret_cast< const char* >(&size), sizeof(size));
66 os.write(reinterpret_cast< const char* >(vec.data()), size);
67 }

◆ abs()

template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > gum::abs ( const Tensor< GUM_SCALAR > & arg)
inline

◆ build_node()

template<GUM_Numeric GUM_SCALAR>
NodeId gum::build_node ( gum::BayesNet< GUM_SCALAR > & bn,
std::string_view node,
std::string_view default_domain )

Definition at line 78 of file BayesNet_tpl.h.

80 {
81 auto v = fastVariable< GUM_SCALAR >(std::string{node}, std::string(default_domain));
82
83 NodeId res;
84 if (bn.exists(v->name())) res = bn.idFromName(v->name());
85 else res = bn.add(*v);
86 return res;
87 }
NodeId idFromName(std::string_view name) const override
Returns the NodeId of a variable given its name.
NodeId add(const DiscreteVariable &var)
Add a variable to the gum::BayesNet.
bool exists(NodeId node) const final
Return true if this node exists in this graphical model.
std::unique_ptr< DiscreteVariable > fastVariable(std::string var_description, Size default_domain_size)
Create a pointer on a Discrete Variable from a "fast" syntax.

References gum::BayesNet< GUM_SCALAR >::add(), gum::DAGmodel::exists(), fastVariable(), and gum::BayesNet< GUM_SCALAR >::idFromName().

Referenced by gum::BayesNet< GUM_SCALAR >::fastPrototype().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_node_for_ID()

template<GUM_Numeric GUM_SCALAR>
NodeId gum::build_node_for_ID ( gum::InfluenceDiagram< GUM_SCALAR > & infdiag,
std::string node,
std::string_view domain )

Definition at line 61 of file influenceDiagram_tpl.h.

63 {
64 bool isUtil = false;
65 bool isDeci = false;
66 bool isChanc = false;
67 std::string ds(domain);
68 switch (*(node.begin())) {
69 case '*' :
70 isDeci = true;
71 node.erase(0, 1);
72 break;
73 case '$' :
74 isUtil = true;
75 ds = "[1]";
76 node.erase(0, 1);
77 break;
78 default : isChanc = true;
79 }
80 auto v = fastVariable< GUM_SCALAR >(node, ds);
81
82 NodeId res;
83 if (infdiag.exists(v->name())) {
84 res = infdiag.idFromName(v->name());
85 } else {
86 if (isChanc) res = infdiag.addChanceNode(*v);
87 else if (isDeci) res = infdiag.addDecisionNode(*v);
88 else if (isUtil) res = infdiag.addUtilityNode(*v);
89 else
90 GUM_ERROR(FatalError,
91 "No type (chance, decision or utility) for the node '" << node << "'.")
92 }
93
94 return res;
95 }
NodeId idFromName(std::string_view name) const override
Returns the NodeId of a variable given its name.
NodeId addChanceNode(const DiscreteVariable &variable, NodeId id=0)
Add a chance variable, it's associate node and it's CPT.
NodeId addUtilityNode(const DiscreteVariable &variable, NodeId id=0)
Add a utility variable, it's associate node and it's UT.
NodeId addDecisionNode(const DiscreteVariable &variable, NodeId id=0)
Add a decision variable.
#define GUM_ERROR(type, msg)
Definition exceptions.h:76

References gum::InfluenceDiagram< GUM_SCALAR >::addChanceNode(), gum::InfluenceDiagram< GUM_SCALAR >::addDecisionNode(), gum::InfluenceDiagram< GUM_SCALAR >::addUtilityNode(), gum::DAGmodel::exists(), fastVariable(), GUM_ERROR, and gum::InfluenceDiagram< GUM_SCALAR >::idFromName().

Referenced by gum::InfluenceDiagram< GUM_SCALAR >::fastPrototype().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_node_for_MN()

template<GUM_Numeric GUM_SCALAR>
NodeId gum::build_node_for_MN ( MarkovRandomField< GUM_SCALAR > & mn,
std::string_view node,
std::string_view default_domain )

Definition at line 76 of file MarkovRandomField_tpl.h.

78 {
79 auto v = fastVariable< GUM_SCALAR >(std::string{node}, default_domain);
80
81 NodeId res;
82 if (mn.exists(v->name())) res = mn.idFromName(v->name());
83 else res = mn.add(*v);
84 return res;
85 }

References fastVariable().

Here is the call graph for this function:

◆ causalImpact()

template<GUM_Numeric GUM_SCALAR>
std::tuple< CausalImpact< GUM_SCALAR >, Tensor< GUM_SCALAR >, std::string > gum::causalImpact ( const CausalModel< GUM_SCALAR > & cm,
const Set< std::string > & on,
const Set< std::string > & doing,
const Set< std::string > & knowing = Set< std::string >(),
const HashTable< std::string, std::string > & values = HashTable< std::string, std::string >() )

Standalone helper that mirrors the Python function causalImpact(...).

Returns: (symbolic CausalFormula, numeric Tensor, explanation string). If not identifiable, the formula carries a null AST and the tensor is empty.

Definition at line 322 of file causalImpact_tpl.h.

326 {
327 // Delegate to the dedicated class.
328 CausalImpact< GUM_SCALAR > ci(cm, on, doing, knowing);
329
330 // Numeric value: empty tensor if not identifiable
331 Tensor< GUM_SCALAR > numeric;
332 if (ci.isIdentified()) { numeric = ci.eval(); }
333
334 // If specific values were provided, strictly slice the tensor to those values
335 if (!values.empty() && numeric.nbrDim() > 0) {
336 const auto I
337 = makeInstantiationFromValues(numeric, values); // throws if any key/label is invalid
338 numeric = numeric.extract(I); // keep only remaining free dimensions (if any)
339 }
340
341 // Always return the explanation the class computed
342 // Capture before moving ci: explanation() returns a const ref into ci internals
343 std::string expl = ci.explanation();
344 return std::make_tuple(std::move(ci), std::move(numeric), std::move(expl));
345 }
Builds a CausalFormula for a query (d-sep -> backdoor -> frontdoor -> (optional) do-calculus).
bool empty() const noexcept
Indicates whether the hash table is empty.
Instantiation makeInstantiationFromValues(const Tensor< GUM_SCALAR > &tensor, const HashTable< std::string, std::string > &values)
Creates an instance for a tensor based on a HashTable.

References gum::HashTable< Key, Val >::empty(), gum::CausalImpact< GUM_SCALAR >::eval(), gum::CausalImpact< GUM_SCALAR >::explanation(), gum::CausalImpact< GUM_SCALAR >::isIdentified(), and makeInstantiationFromValues().

Here is the call graph for this function:

◆ combine2MultiDimArrays()

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::combine2MultiDimArrays ( const MultiDimImplementation< GUM_ELEMENT > * t1,
const MultiDimImplementation< GUM_ELEMENT > * t2,
const GUM_ELEMENT(* )(const GUM_ELEMENT &, const GUM_ELEMENT &) )

a specialized function for functionally projecting a multiDimArray

The function produces a tensorial functional combination of t1 and t2, that is, if t1 and t2 are multiDimArrays over variables A,B,C,D and D,B,E respectively, function combine2MultiDimArrays will return a multiDimArray T defined as T[A,B,C,D,E] = f ( t1[A,B,C,D],t2[D,B,E] ) for all A,B,C,D,E.

Returns
function combine2MultiDimArrays allocates on the heap the new T multiDimArray and returns it.

◆ counterfactual()

template<GUM_Numeric GUM_ELEMENT>
Tensor< GUM_ELEMENT > gum::counterfactual ( const CausalModel< GUM_ELEMENT > & cm,
const Set< std::string > & on,
const Set< std::string > & whatif,
const HashTable< std::string, std::string > & profile = HashTable< std::string, std::string >(),
const HashTable< std::string, std::string > & values = HashTable< std::string, std::string >() )

Compute a counterfactual distribution using the high-level API.

Mirrors the Python function counterfactual(cm, profile, on, whatif, values). Internally constructs a Counterfactual<GUM_ELEMENT> instance and returns its evaluated tensor adapted to variables from cm.

Template Parameters
GUM_ELEMENTnumeric scalar type (e.g., double)
Parameters
cmCausal model (original, observational world)
onNames of variables of interest (can be a singleton)
whatifIntervention targets (do-variables) by name
profileOptional evidence on original world (name -> label)
valuesOptional intervention values (name -> label). If empty, the result spans all values of the whatif variables.
Returns
Tensor<GUM_ELEMENT> probability distribution over on (variables are those of cm).

Definition at line 308 of file counterfactual_tpl.h.

312 {
313 // Use the class implementation and return the adapted tensor.
314 Counterfactual< GUM_ELEMENT > cf(cm, on, whatif, profile, values);
315 return cf.value();
316 }
Computes a counterfactual distribution by building a twin model, then evaluating a causal effect on t...

References gum::Counterfactual< GUM_ELEMENT >::value().

Here is the call graph for this function:

◆ counterfactual< double >()

template Tensor< double > gum::counterfactual< double > ( const CausalModel< double > & ,
const Set< std::string > & ,
const Set< std::string > & ,
const HashTable< std::string, std::string > & ,
const HashTable< std::string, std::string > &  )

◆ counterfactualModel()

template<GUM_Numeric GUM_ELEMENT>
CausalModel< GUM_ELEMENT > gum::counterfactualModel ( const CausalModel< GUM_ELEMENT > & cm,
const HashTable< std::string, std::string > & profile,
const Set< std::string > & whatif )

Build the twin causal model.

Mirrors the Python function counterfactualModel(cm, profile, whatif). It computes posteriors of idiosyncratic nodes in the original BN given profile and replaces their priors in a cloned model.

Template Parameters
GUM_ELEMENTnumeric scalar type (e.g., double)
Parameters
cmOriginal causal model
profileOptional evidence on the original BN (name -> label)
whatifIntervention targets (do-variables) by name
Returns
CausalModel<GUM_ELEMENT> the twin causal model

Definition at line 320 of file counterfactual_tpl.h.

322 {
323 const auto& origBN = cm.observationalBN();
324
325 // Clone model (copy semantics)
326 CausalModel< GUM_ELEMENT > twincm(origBN);
327
328 // what-if ids
329 NodeSet whatifIds;
330 for (const auto& w: whatif)
331 whatifIds.insert(cm.idFromName(w));
332
333 // idiosyncratic = parentless \ (whatif ∪ latent)
334 NodeSet idiosyncratic;
335 for (auto nid: origBN.nodes())
336 if (origBN.parents(nid).size() == 0) idiosyncratic.insert(nid);
337 for (auto id: whatifIds)
338 idiosyncratic.erase(id);
339 for (auto id: cm.latentVariablesIds())
340 idiosyncratic.erase(id);
341
342 // Posteriors in the original BN
344 if (!profile.empty()) {
345 for (const auto& kv: profile) {
346 const NodeId nid = cm.idFromName(kv.first);
347 const auto& var = origBN.variable(nid);
348 const Idx valId = var.index(kv.second);
349 ie.addEvidence(nid, valId);
350 }
351 }
352 ie.makeInference();
353
354 // Update priors in the twin with posteriors
355 auto& twinBN = twincm.observationalBN();
356 for (auto f: idiosyncratic) {
357 const auto& name = origBN.variable(f).name();
358 const NodeId twinId = twinBN.idFromName(name);
359 const Tensor< GUM_ELEMENT > post = ie.posterior(f);
360 twinBN.cpt(twinId).fillWith(post);
361 }
362
363 return twincm;
364 }
NodeSet latentVariablesIds() const
Node ids of all latent variables.
NodeId idFromName(std::string_view name) const
Node id from variable name (observed or latent).
const BayesNet< GUM_SCALAR > & observationalBN() const
Observational BN (observed variables only).
Implementation of a Shafer-Shenoy's-like version of lazy propagation for inference in Bayesian networ...
void insert(const Key &k)
Inserts a new element into the set.
Definition set_tpl.h:510
void erase(const Key &k)
Erases an element from the set.
Definition set_tpl.h:553
const Tensor< GUM_SCALAR > & fillWith(const Tensor< GUM_SCALAR > &src) const
copy a Tensor data using name of variables and labels (not necessarily the same variables in the same...
Definition tensor_tpl.h:304
Size NodeId
Type for node ids.
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...

References gum::GraphicalModelInference< GUM_SCALAR >::addEvidence(), gum::HashTable< Key, Val >::empty(), gum::Set< Key >::erase(), gum::CausalModel< GUM_SCALAR >::idFromName(), gum::Set< Key >::insert(), gum::CausalModel< GUM_SCALAR >::latentVariablesIds(), gum::GraphicalModelInference< GUM_SCALAR >::makeInference(), gum::CausalModel< GUM_SCALAR >::observationalBN(), and gum::JointTargetedInference< GUM_SCALAR >::posterior().

Here is the call graph for this function:

◆ counterfactualModel< double >()

template CausalModel< double > gum::counterfactualModel< double > ( const CausalModel< double > & ,
const HashTable< std::string, std::string > & ,
const Set< std::string > &  )

◆ dispatchRangeToThreads()

std::vector< std::pair< Idx, Idx > > gum::dispatchRangeToThreads ( Idx beg,
Idx end,
unsigned int nb_threads )

returns a vector equally splitting elements of a range among threads

Parameters
begthe beginning of the range (included)
endthe end of the range (excluded)
nb_threadsthe number of threads over which we would like performing the splitting
Returns
a vector containing the range [beginning,end) that each thread should work on

Definition at line 76 of file threads.cpp.

76 {
77 // there should always be at least one thread
78 const auto real_nb_threads
79 = nb_threads < 1 ? static_cast< Idx >(1) : static_cast< Idx >(nb_threads);
80 const Idx range_size = end - beg;
81 std::vector< std::pair< Idx, Idx > > result;
82 result.reserve(real_nb_threads);
83
84 // if the number of elements in the range is lower than or equal to the
85 // number of threads, assign only one element per thread
86 if (range_size <= real_nb_threads) {
87 for (Idx i = static_cast< Idx >(0); i < range_size; ++i) {
88 result.emplace_back(i, i + 1);
89 }
90 for (Idx i = range_size; i < real_nb_threads; ++i) {
91 result.emplace_back(range_size, range_size);
92 }
93 } else {
94 // here there are more elements in the range than threads. So try to balance
95 // the number of elements among the threads
96 Idx nb_elts_par_thread = range_size / real_nb_threads;
97 Idx rest_elts = range_size - nb_elts_par_thread * real_nb_threads;
98
99 Idx begin_index = beg;
100 for (Idx i = static_cast< Idx >(0); i < real_nb_threads; ++i) {
101 Idx end_index = begin_index + nb_elts_par_thread;
102 if (rest_elts != static_cast< Idx >(0)) {
103 ++end_index;
104 --rest_elts;
105 }
106 result.emplace_back(begin_index, end_index);
107 begin_index = end_index;
108 }
109 }
110
111 return result;
112 }

Referenced by gum::credal::CredalNet< GUM_SCALAR >::_H2Vlrs_(), gum::credal::CNLoopyPropagation< GUM_SCALAR >::enum_combi_(), gum::credal::CNLoopyPropagation< GUM_SCALAR >::enum_combi_(), gum::credal::MultipleInferenceEngine< GUM_SCALAR, BNInferenceEngine >::expFusion_(), gum::credal::CNMonteCarloSampling< GUM_SCALAR, BNInferenceEngine >::makeInference(), and gum::credal::MultipleInferenceEngine< GUM_SCALAR, BNInferenceEngine >::verticesFusion_().

Here is the caller graph for this function:

◆ fastVariable() [1/2]

template<GUM_Numeric GUM_SCALAR = double>
std::unique_ptr< DiscreteVariable > gum::fastVariable ( std::string var_description,
Size default_domain_size )

Create a pointer on a Discrete Variable from a "fast" syntax.

Parameters
var_description: the string in "fast" syntax
default_domain_size: the domain size if the description does not give this information. Note that if default_domain_size=1, a variable with a domain Size=1 is not an error.
Returns
an unique_ptr on the new variable.

Definition at line 52 of file allDiscreteVariables_tpl.h.

53 {
54 if (default_domain_size < 1)
55 GUM_ERROR(InvalidArgument, "default_domain_size can not be less than 1")
56
57 const std::string domain = "[" + std::to_string(default_domain_size) + "]";
58 return fastVariable< GUM_SCALAR >(var_description, domain);
59 }
Exception: at least one argument passed to a function is not what was expected.
std::string to_string(const Formula &f)
STL namespace.

References fastVariable(), and GUM_ERROR.

Referenced by gum::BayesNet< GUM_SCALAR >::add(), gum::InfluenceDiagram< GUM_SCALAR >::addChanceNode(), gum::InfluenceDiagram< GUM_SCALAR >::addDecisionNode(), gum::InfluenceDiagram< GUM_SCALAR >::addUtilityNode(), build_node(), build_node_for_ID(), build_node_for_MN(), and fastVariable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastVariable() [2/2]

template<GUM_Numeric GUM_SCALAR = double>
std::unique_ptr< DiscreteVariable > gum::fastVariable ( std::string var_description,
std::string_view default_domain = "[2]" )

Create a pointer on a Discrete Variable from a "fast" syntax.

Parameters
var_description: the string in "fast" syntax
default_domain_size: the domain size if the description does not give this information. Note that if default_domain_size=1, a variable with a domain Size=1 is not an error.
Returns
an unique_ptr on the new variable.

Definition at line 62 of file allDiscreteVariables_tpl.h.

63 {
64 Size ds = 0;
65 long range_min = 0;
66 long range_max = 1;
67 std::vector< std::string > labels;
68 std::vector< GUM_SCALAR > ticks;
69 std::string name;
70
71 std::vector< int > values;
72 std::vector< double > numerical_values;
73
74 trim(var_description);
75
76 if (default_domain.empty()) GUM_ERROR(InvalidArgument, "default_domain can not be empty")
77
78
79 if (auto t = *default_domain.begin(); t != '[' && t != '{')
81 "default_domain (" << default_domain << ") must start with '[' or '{'")
82
83 if (var_description.find('[') == std::string::npos
84 && var_description.find('{') == std::string::npos) {
85 var_description += default_domain;
86 }
87
88 // [1,3,5]...
89 if (*(var_description.rbegin()) == ']') {
90 if (auto posBrack = var_description.find('['); posBrack != std::string::npos) {
91 name = var_description.substr(0, posBrack);
92 const auto& s_args
93 = var_description.substr(posBrack + 1, var_description.size() - posBrack - 2);
94 const auto& args = split(s_args, ",");
95 if (args.empty()) {
96 // n[]
97 GUM_ERROR(InvalidArgument, "Empty range for variable " << var_description)
98 } else if (args.size() == 1) {
99 // n[4] or n[0:5.5:10]
100
101 const auto& labels = split(args[0], ":");
102
103 if (labels.size() == 3) {
104 // b{1.1:3.31:5}
105 const double fmin = std::stod(labels[0]);
106 const double fmax = std::stod(labels[1]);
107 const int nbr = std::stoi(labels[2]);
108
109 if (fmax <= fmin) { GUM_ERROR(InvalidArgument, "last<=first in " << var_description) }
110 if (nbr <= 1) { GUM_ERROR(InvalidArgument, "nbr<=1 in " << var_description) }
111 const auto step = (fmax - fmin) / nbr;
112 double current = fmin;
113 for (auto i = 0; i <= nbr; i += 1) {
114 ticks.push_back(current);
115 current += step;
116 }
117 ds = ticks.size();
118 } else {
119 // n[4]
120 int n = std::stoi(args[0]);
121 if ((n < 2) && (default_domain != "[1]"))
122 GUM_ERROR(InvalidArgument, n << " is not >=2 for variable " << var_description)
123 ds = static_cast< Size >(n);
124 range_min = 0;
125 range_max = static_cast< long >(ds) - 1;
126 }
127 } else if (args.size() == 2) {
128 // n[5,10]
129 range_min = std::stol(args[0]);
130 range_max = std::stol(args[1]);
131
132 if (range_max < range_min)
133 GUM_ERROR(InvalidArgument,
134 "Invalid range for variable " << var_description << ": max<min")
135 if (range_max == range_min && default_domain != "[1]")
136 GUM_ERROR(InvalidArgument,
137 "Invalid range for variable "
138 << var_description << ": max==min not allowed if default_domain_size>1")
139
140 ds = static_cast< Size >(1 + range_max - range_min);
141 } else {
142 // n[3.14,5,10,12]
143 for (const auto& tick: args) {
144 ticks.push_back(static_cast< GUM_SCALAR >(std::strtod(tick.c_str(), nullptr)));
145 }
146 ds = args.size() - 1;
147 }
148 }
149 // var_description like "n{one|two|three}" or b{1.1:3.31:5}
150 } else if (*(var_description.rbegin()) == '}') {
151 if (auto posBrack = var_description.find('{'); posBrack != std::string::npos) {
152 name = var_description.substr(0, posBrack);
153 labels = split(var_description.substr(posBrack + 1, var_description.size() - posBrack - 2),
154 ":");
155 if (labels.size() == 3) {
156 // b{1.1:3.31:5}
157 const auto fmin = std::stod(labels[0]);
158 const auto fmax = std::stod(labels[1]);
159 const int nbr = std::stoi(labels[2]);
160
161 if (fmax <= fmin) { GUM_ERROR(InvalidArgument, "last<=first in " << var_description) }
162 if (nbr <= 1) { GUM_ERROR(InvalidArgument, "nbr<=1 in " << var_description) }
163 const auto step = double((fmax - fmin) / (nbr - 1));
164
165 if ((trunc(step) == step) && (trunc(fmin) == fmin) && (trunc(fmax) == fmax)) {
166 // b{1:6:5} => IntegerVariable
167 labels.clear();
168 numerical_values.clear();
169 int v = int(fmin);
170 for (int i = 1; i <= nbr; i++) {
171 labels.push_back(std::to_string(v));
172 v += int(step);
173 }
174 ds = labels.size();
175 } else {
176 // b{1.3:6.3:5} => NumericalDiscreteVariable
177 labels.clear();
178 numerical_values.clear();
179 ds = nbr;
180 double v = fmin;
181 numerical_values.push_back(v);
182 for (auto i = 1; i < nbr - 1; i++) {
183 v += step;
184 numerical_values.push_back(v);
185 }
186 numerical_values.push_back(fmax);
187 }
188 } else {
189 labels
190 = split(var_description.substr(posBrack + 1, var_description.size() - posBrack - 2),
191 "|");
192 if (labels.size() < 2) {
193 if (labels.size() == 1
194 && default_domain != "[1]") // 1 is ok if default_domain_size==1
195 GUM_ERROR(InvalidArgument, "Not enough labels in var_description " << var_description)
196 }
197 if (!hasUniqueElts(labels)) {
198 GUM_ERROR(InvalidArgument, "Duplicate labels in var_description " << var_description)
199 }
200 ds = labels.size();
201 }
202 }
203 } else {
204 name = var_description;
205 }
206
207 if (ds == 0) {
208 GUM_ERROR(InvalidArgument, "No value for variable " << var_description << ".")
209 } else if (ds == 1) {
210 if (default_domain != "[1]")
211 GUM_ERROR(InvalidArgument,
212 "Only one value for variable " << var_description << " (2 at least are needed).")
213 }
214
215 if (!labels.empty()) {
216 if (std::all_of(labels.cbegin(), labels.cend(), isInteger)) {
217 for (const auto& label: labels)
218 values.push_back(std::stoi(label));
219 if (values.size() >= 2) {
220 // there can be an enumeration of consecutive integers
221 std::sort(values.begin(), values.end());
222 range_min = values[0];
223 auto v = range_min;
224 bool is_range = true;
225 for (const auto item: values) {
226 if (item != v) { is_range = false; }
227 v += 1;
228 }
229 if (is_range) {
230 values.clear(); // not an IntegerVariable but rather a RangeVariable
231 labels.clear();
232 range_max = v - 1;
233 }
234 }
235 } else if (std::all_of(labels.cbegin(), labels.cend(), isNumerical))
236 for (const auto& label: labels)
237 numerical_values.push_back(std::stod(label));
238 }
239
240 trim(name);
241
242 if (!values.empty()) {
243 return std::make_unique< IntegerVariable >(name, name, values);
244 } else if (!numerical_values.empty()) {
245 if (!std::all_of(numerical_values.cbegin(),
246 numerical_values.cend(),
248 GUM_ERROR(DefaultInLabel, "Infinite value is not allowed for variable " << name)
249 }
250 return std::make_unique< NumericalDiscreteVariable >(name, name, numerical_values);
251 } else if (!labels.empty()) {
252 return std::make_unique< LabelizedVariable >(name, name, labels);
253 } else if (!ticks.empty()) {
254 if (!std::all_of(ticks.cbegin(), ticks.cend(), gum::isfinite< double >)) {
255 GUM_ERROR(DefaultInLabel, "Infinite value is not allowed for variable " << name)
256 }
257 // if last character of name is a +, we remove the character from the name and set empirical
258 // to True
259 if (name.back() == '+') {
260 name.pop_back();
261 trim(name);
262 return std::make_unique< DiscretizedVariable< GUM_SCALAR > >(name, name, ticks, true);
263 } else {
264 return std::make_unique< DiscretizedVariable< GUM_SCALAR > >(name, name, ticks);
265 }
266 } else {
267 return std::make_unique< RangeVariable >(name, name, range_min, range_max);
268 }
269 }
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
std::vector< std::string > split(std::string_view str, std::string_view delim)
Split str using the delimiter.
bool isInteger(std::string_view val)
return true is a string contains an integer value
bool hasUniqueElts(std::vector< T > const &x)
void trim(std::string &s)
trim from both ends (in place)
bool isNumerical(std::string_view val)
return true is a string contains a numerical (double) value
bool isfinite(T arg)

References GUM_ERROR, isfinite(), isInteger(), isNumerical(), split(), and trim().

Here is the call graph for this function:

◆ func2str()

std::string gum::func2str ( FormulaPart::token_function func)

Definition at line 79 of file formula.cpp.

79 {
80 switch (func) {
82 return "exp";
83 }
85 return "log";
86 }
88 return "ln";
89 }
91 return "pow";
92 }
94 return "sqrt";
95 }
97 return "nil";
98 }
99 default : {
100 GUM_ERROR(OperationNotAllowed, "unknown function")
101 }
102 }
103 }

References gum::FormulaPart::exp, GUM_ERROR, gum::FormulaPart::ln, gum::FormulaPart::log, gum::FormulaPart::nil, gum::FormulaPart::pow, and gum::FormulaPart::sqrt.

Referenced by gum::FormulaPart::str().

Here is the caller graph for this function:

◆ getMaxModality()

template<GUM_Numeric GUM_SCALAR>
gum::Size gum::getMaxModality ( gum::BayesNet< GUM_SCALAR > & bayesNet)

Definition at line 56 of file MCBayesNetGenerator_tpl.h.

56 {
57 gum::Size maxMod = 0;
58
59 for (auto node: bayesNet.nodes())
60 if (maxMod < bayesNet.variable(node).domainSize())
61 maxMod = bayesNet.variable(node).domainSize();
62
63 return maxMod;
64 }
const DiscreteVariable & variable(std::string_view name) const
Returns a gum::DiscreteVariable given its name in the gum::BayesNet.
const NodeGraphPart & nodes() const final
Returns a named copy of the internal DAG: each node id is assigned the name of the corresponding vari...
virtual Size domainSize() const =0

References gum::DiscreteVariable::domainSize(), gum::DAGmodel::nodes(), and gum::BayesNet< GUM_SCALAR >::variable().

Referenced by gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::MCBayesNetGenerator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getMaxNumberOfThreads()

INLINE unsigned int gum::threadsSTL::getMaxNumberOfThreads ( )

Returns the maximum number of threads you should use at any time.

By default, it should be the number of CPU cores available. Note that it is preferable to use function getNumberOfThreads(), which corresponds to the max number of threads the user wants to launch in parallel regions (this is by default equal to getMaxNumberOfThreads(), but the user may wish to change it for some reason).

Returns
Returns the maximum number of threads that should be used at any time.

Definition at line 61 of file threadsSTL_inl.h.

61 {
62 return std::max(1u, std::thread::hardware_concurrency());
63 }

◆ getNumberOfLogicalProcessors()

Get the number of logical processors.

Returns
The number of logical processors.

Definition at line 66 of file threadsSTL_inl.h.

66 {
67 return std::max(1u, std::thread::hardware_concurrency());
68 }

◆ getNumberOfThreads()

returns the max number of threads used by default when entering the next parallel region

This is the number of threads launched in parallel regions. By default, this number is equal to getMaxNumberOfThreads() but if the user has changed it using method setNumberOfThreads, then this number is what the user required.

Returns
the number of threads used by default the next time we enter into a parallel region

Definition at line 70 of file threadsSTL.cpp.

70{ return _nb_threads_; }

Referenced by gum::credal::CredalNet< GUM_SCALAR >::_H2Vlrs_(), gum::credal::CNMonteCarloSampling< GUM_SCALAR, BNInferenceEngine >::_mcThreadDataCopy_(), gum::credal::CNLoopyPropagation< GUM_SCALAR >::enum_combi_(), gum::credal::CNLoopyPropagation< GUM_SCALAR >::enum_combi_(), and gum::credal::CNMonteCarloSampling< GUM_SCALAR, BNInferenceEngine >::makeInference().

Here is the caller graph for this function:

◆ isCloseToOne()

template<typename T>
bool gum::isCloseToOne ( T x,
T tol = T(1e-9) )

Definition at line 52 of file math_utils_tpl.h.

52 {
53 return std::abs(x - T(1)) <= tol;
54 }

Referenced by gum::credal::LRSWrapper< GUM_SCALAR >::H2V(), gum::Tensor< GUM_SCALAR >::mean(), gum::credal::CredalNet< GUM_SCALAR >::setCPT(), gum::credal::CredalNet< GUM_SCALAR >::setCPT(), gum::credal::CredalNet< GUM_SCALAR >::setCPTs(), and gum::Tensor< GUM_SCALAR >::variance().

Here is the caller graph for this function:

◆ isCloseToZero()

template<typename T>
bool gum::isCloseToZero ( T x,
T tol = T(1e-9) )

Definition at line 47 of file math_utils_tpl.h.

47 {
48 return std::abs(x) <= tol;
49 }

◆ isfinite()

template<typename T>
bool gum::isfinite ( T arg)

Definition at line 57 of file math_utils_tpl.h.

57 {
58 if constexpr (std::numeric_limits< T >::has_infinity) {
59 if constexpr (std::numeric_limits< T >::is_signed) {
60 return arg == arg && arg != std::numeric_limits< T >::infinity()
61 && arg != -std::numeric_limits< T >::infinity(); // neither Nan, infty nor -infty
62 } else {
63 return arg == arg
64 && arg != std::numeric_limits< T >::infinity(); // neither Nan nor inftty
65 }
66 } else {
67 return arg == arg; // not Nan
68 }
69 }

Referenced by gum::IntegerVariable::IntegerVariable(), gum::NumericalDiscreteVariable::NumericalDiscreteVariable(), gum::NumericalDiscreteVariable::NumericalDiscreteVariable(), and fastVariable().

Here is the caller graph for this function:

◆ isOMP()

bool gum::isOMP ( )

indicates whether aGrUM uses openMP or STL threads

Definition at line 66 of file threads.cpp.

66 {
67#ifdef GUM_THREADS_USE_OMP
68 return true;
69#else
70 return false;
71#endif
72 }

◆ log2()

template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > gum::log2 ( const Tensor< GUM_SCALAR > & arg)
inline

◆ LPMaxprojTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::LPMaxprojTensor ( const Tensor< GUM_SCALAR > & t1,
const gum::VariableSet & del_vars )
static

◆ LPNewmultiTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::LPNewmultiTensor ( const Tensor< GUM_SCALAR > & t1,
const Tensor< GUM_SCALAR > & t2 )
static

◆ LPNewprojTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::LPNewprojTensor ( const Tensor< GUM_SCALAR > & t1,
const gum::VariableSet & del_vars )
static

◆ makeInstantiationFromValues()

template<GUM_Numeric GUM_SCALAR>
Instantiation gum::makeInstantiationFromValues ( const Tensor< GUM_SCALAR > & tensor,
const HashTable< std::string, std::string > & values )
inline

Creates an instance for a tensor based on a HashTable.

Parameters
tensorThe target tensor whose variables define the instantiation’s scope.
valuesMapping from variable name to label that must be fully applicable.
Returns
A gum::Instantiation positioned according to values.
Exceptions
NotFoundIf a variable name in values is not a dimension of tensor.
NotFoundIf a label in values is not in the corresponding variable’s domain.

Definition at line 299 of file causalImpact_tpl.h.

300 {
301 Instantiation I; // start empty (partial instantiation)
302
303 for (const auto& [k, v]: values) {
304 try {
305 const auto& var = tensor.variable(k); // skip if not in tensor
306 const gum::Idx idx = var.index(v); // skip if label unknown
307 I.add(var); // add this dim only
308 I.chgVal(var, idx); // fix its value
309 } catch (const gum::NotFound&) {
310 // variable or label not found: ignore (non-strict)
311 continue;
312 } catch (...) {
313 // any other issue: ignore
314 continue;
315 }
316 }
317 return I;
318 }
Class for assigning/browsing values to tuples of discrete variables.
Instantiation & chgVal(const DiscreteVariable &v, Idx newval)
Assign newval to variable v in the Instantiation.
void add(const DiscreteVariable &v) final
Adds a new variable in the Instantiation.

References gum::Instantiation::add(), and gum::Instantiation::chgVal().

Referenced by causalImpact(), and gum::Counterfactual< GUM_ELEMENT >::run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator*() [1/2]

const value_type & gum::operator* ( )

Returns the value pointed to by the iterator.

Returns
Returns the value pointed to by the iterator.
Exceptions
UndefinedIteratorValueRaised when the iterator does not point to a valid hash table element
Returns
Returns the value pointed to by the iterator.
Exceptions
UndefinedIteratorValueRaised when the iterator does not point to a valid hash table element.

◆ operator*() [2/2]

INLINE Formula gum::operator* ( const Formula & a,
const Formula & b )

Definition at line 252 of file formula_inl.h.

252 {
253 return Formula(std::to_string(a.result() * b.result()));
254 }
Evaluates a string as a algebraic formula.
Definition formula.h:293
double result() const
Returns the result of this gum::Formula.
Definition formula.cpp:304

References gum::Formula::result().

Here is the call graph for this function:

◆ operator+() [1/2]

INLINE Formula gum::operator+ ( const Formula & a,
const Formula & b )

Definition at line 242 of file formula_inl.h.

242 {
243 return Formula(std::to_string(a.result() + b.result()));
244 }

References gum::Formula::result().

Here is the call graph for this function:

◆ operator+() [2/2]

HashTableIteratorSafe< Key, Val > gum::operator+ ( Size i) const

Returns a new iterator pointing to i elements further in the hashtable.

Parameters
iThe number of increments.
Returns
Returns this gum::HashTableIteratorSafe.

◆ operator++()

HashTableIteratorSafe< Key, Val > & gum::operator++ ( )
noexcept

◆ operator+=()

HashTableIteratorSafe< Key, Val > & gum::operator+= ( Size i)
noexcept

Makes the iterator point to i elements further in the hashtable.

Parameters
iThe number of increments.
Returns
Return this gum::HashTableIteratorSafe.

Referenced by gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::ArgMaxSet(), and gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::operator=().

Here is the caller graph for this function:

◆ operator-() [1/4]

INLINE Formula gum::operator- ( const Formula & a)

Definition at line 239 of file formula_inl.h.

239{ return Formula(std::to_string(-1 * a.result())); }

References gum::Formula::result().

Here is the call graph for this function:

◆ operator-() [2/4]

INLINE Formula gum::operator- ( const Formula & a,
const Formula & b )

Definition at line 247 of file formula_inl.h.

247 {
248 return Formula(std::to_string(a.result() - b.result()));
249 }

References gum::Formula::result().

Here is the call graph for this function:

◆ operator-() [3/4]

template<typename Val>
ListConstIterator< Val >::difference_type gum::operator- ( const ListConstIterator< Val > & iter1,
const ListConstIterator< Val > & iter2 )

For STL compliance, a distance operator.

Definition at line 348 of file list_tpl.h.

348 {
350
351 for (ListConstIterator< Val > iter3 = iter2; iter1 != iter3; ++iter3, ++res) {}
352
353 return res;
354 }
Unsafe but fast const iterators for Lists.
Definition list.h:1449
std::ptrdiff_t difference_type
Types for STL compliance.
Definition list.h:1459

◆ operator-() [4/4]

template<typename Val>
ListConstIteratorSafe< Val >::difference_type gum::operator- ( const ListConstIteratorSafe< Val > & iter1,
const ListConstIteratorSafe< Val > & iter2 )

For STL compliance, a distance operator.

Definition at line 944 of file list_tpl.h.

945 {
947 ListConstIteratorSafe< Val > iter3{iter2};
948
949 for (; iter1 != iter3; ++iter3, ++res) {}
950
951 return res;
952 }
Safe const iterators for Lists.
Definition list.h:2005
std::ptrdiff_t difference_type
Types for STL compliance.
Definition list.h:2015

◆ operator/()

INLINE Formula gum::operator/ ( const Formula & a,
const Formula & b )

Definition at line 257 of file formula_inl.h.

257 {
258 return Formula(std::to_string(a.result() / b.result()));
259 }

References gum::Formula::result().

Here is the call graph for this function:

◆ operator<<() [1/47]

gum::SetInst & gum::operator<< ( gum::SetInst & inst,
const gum::DiscreteVariable & i )

Adds a variable to inst.

Parameters
instThe SetInst to which a variable is added.
iThe variable to add.
Returns
Returns a reference over inst.
Exceptions
DuplicateElementIf i is already in the SetInst.

◆ operator<<() [2/47]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > & gum::operator<< ( MultiDimImplementation< GUM_ELEMENT > & array,
const DiscreteVariable & v )

Definition at line 127 of file multiDimImplementation_tpl.h.

149 {
150 array.add(v);
151 return array;
152 }
void add(const DiscreteVariable &v) override
Adds a new var to the variables of the multidimensional matrix.

◆ operator<<() [3/47]

template<typename T1, typename T2>
std::ostream & gum::operator<< ( std::ostream & stream,
const Bijection< T1, T2 > & bijection )

For friendly display of the content of the gum::Bijection.

Parameters
bijectionThe gum::Bijection to display.
Template Parameters
T1The first type of elements in the gum::Bjection.
T2The second type of elements in the gum::Bjection.
Returns
The stream in which the gum::Bijection is displayed.

Definition at line 1083 of file bijection_tpl.h.

1083 {
1084 stream << b.toString();
1085 return stream;
1086 }

References gum::BijectionImplementation< T1, T2, Gen >::toString().

Here is the call graph for this function:

◆ operator<<() [4/47]

std::ostream & gum::operator<< ( std::ostream & ,
const CliqueGraph &  )

for friendly displaying the content of clique graphs

◆ operator<<() [5/47]

template<typename T_VAL>
std::ostream & gum::operator<< ( std::ostream & ,
const ContinuousVariable< T_VAL > &  )

for friendly displaying the content of the variable

◆ operator<<() [6/47]

std::ostream & gum::operator<< ( std::ostream & ,
const DiscreteVariable &  )

for friendly displaying the content of the variable

◆ operator<<() [7/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const EdgeGraphPart & set )

for friendly displaying the content of an edge set

Definition at line 167 of file edgeGraphPart.cpp.

167 {
168 stream << set.toString();
169 return stream;
170 }
virtual std::string toString() const
to friendly display the content of the EdgeGraphPart

References gum::EdgeGraphPart::toString().

Here is the call graph for this function:

◆ operator<<() [8/47]

template<typename Val, typename Cmp>
std::ostream & gum::operator<< ( std::ostream & stream,
const Heap< Val, Cmp > & heap )

Definition at line 310 of file heap_tpl.h.

310 {
311 stream << heap.toString();
312 return stream;
313 }
std::string toString() const
Definition heap_tpl.h:292

References gum::Heap< Val, Cmp >::toString().

Here is the call graph for this function:

◆ operator<<() [9/47]

template<typename Key, typename Data>
std::ostream & gum::operator<< ( std::ostream & ,
const IndexedTree< Key, Data > &  )

Necessary for the hashtable operator <<.

◆ operator<<() [10/47]

std::ostream & gum::operator<< ( std::ostream & aStream,
const Instantiation & i )

Print information of the instantiation in the stream.

Definition at line 273 of file instantiation.cpp.

273 {
274 aStream << i.toString();
275 return aStream;
276 }
std::string toString() const
Give a string version of instantiation.

References gum::Instantiation::toString().

Here is the call graph for this function:

◆ operator<<() [11/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const NodeGraphPart & set )

for friendly displaying the content of node set

Definition at line 209 of file nodeGraphPart.cpp.

209 {
210 stream << set.toString();
211 return stream;
212 }
virtual std::string toString() const
a function to display the set of nodes

References gum::NodeGraphPart::toString().

Here is the call graph for this function:

◆ operator<<() [12/47]

template<typename Val, typename Priority, typename Cmp>
std::ostream & gum::operator<< ( std::ostream & stream,
const PriorityQueue< Val, Priority, Cmp > & queue )

Definition at line 1032 of file priorityQueue_tpl.h.

1032 {
1033 stream << queue.toString();
1034 return stream;
1035 }
std::string toString() const
Displays the content of the queue.

References gum::PriorityQueueImplementation< Val, Priority, Cmp, Gen >::toString().

Here is the call graph for this function:

◆ operator<<() [13/47]

template<typename Key>
std::ostream & gum::operator<< ( std::ostream & stream,
const Set< Key > & set )

A << operator for HashTableList.

Definition at line 716 of file set_tpl.h.

716 {
717 stream << set.toString();
718 return stream;
719 }
std::string toString() const
Prints the content of the set.
Definition set_tpl.h:693

References gum::Set< Key >::toString().

Here is the call graph for this function:

◆ operator<<() [14/47]

std::ostream & gum::operator<< ( std::ostream & ,
const SetInst &  )

Print information of the SetInst in the stream.

◆ operator<<() [15/47]

std::ostream & gum::operator<< ( std::ostream & ,
const VariableNodeMap &  )

for friendly displaying the content of clique graphs

◆ operator<<() [16/47]

INLINE std::ostream & gum::operator<< ( std::ostream & os,
const Formula & f )

Definition at line 265 of file formula_inl.h.

265 {
266 os << f.result();
267 return os;
268 }

References gum::Formula::result().

Here is the call graph for this function:

◆ operator<<() [17/47]

INLINE std::ostream & gum::operator<< ( std::ostream & os,
const Timer & t )

Definition at line 95 of file timer_inl.h.

95{ return os << t.toString(); }
std::string toString() const
Returns the delta time between now and the last reset() in a human format.
Definition timer.cpp:83

References gum::Timer::toString().

Here is the call graph for this function:

◆ operator<<() [18/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & out,
const DecisionTensor< GUM_SCALAR > & array )

Definition at line 217 of file decisionTensor_tpl.h.

217 {
218 out << array.toString();
219 return out;
220 }
virtual std::string toString() const

References gum::DecisionTensor< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [19/47]

template<typename GUM_ELEMENT>
std::ostream & gum::operator<< ( std::ostream & out,
const MultiDimContainer< GUM_ELEMENT > & array )

Definition at line 314 of file multiDimContainer_tpl.h.

314 {
315 out << array.toString();
316 return out;
317 }
virtual std::string toString() const
Returns a representation of this MultiDimContainer.

◆ operator<<() [20/47]

template<typename Element>
INLINE std::ostream & gum::operator<< ( std::ostream & out,
const SplayBinaryNode< Element > & e )

Display the node.

Friendly to display.

Definition at line 794 of file splay_tpl.h.

794 {
795 if (e.fg) out << *e.fg << ",";
796
797 out << e.elt;
798
799 if (e.fd) out << "," << *e.fd;
800
801 return out;
802 }
SplayBinaryNode * fg
The left child.
Definition splay.h:214
SplayBinaryNode * fd
The right child.
Definition splay.h:217
Element elt
The content.
Definition splay.h:208

◆ operator<<() [21/47]

template<typename Element>
std::ostream & gum::operator<< ( std::ostream & out,
const SplayBinaryNode< Element > & e )

Display the node.

Friendly to display.

Definition at line 794 of file splay_tpl.h.

794 {
795 if (e.fg) out << *e.fg << ",";
796
797 out << e.elt;
798
799 if (e.fd) out << "," << *e.fd;
800
801 return out;
802 }

◆ operator<<() [22/47]

template<typename Element>
INLINE std::ostream & gum::operator<< ( std::ostream & out,
const SplayTree< Element > & s )

Display the tree.

Friendly to display.

Definition at line 807 of file splay_tpl.h.

807 {
808 out << "|[";
809
810 if (s.root) out << *s.root;
811
812 out << "]|";
813
814 return out;
815 }
SplayBinaryNode< Element > * root
Root of the tree.
Definition splay.h:434

◆ operator<<() [23/47]

template<typename Element>
std::ostream & gum::operator<< ( std::ostream & out,
const SplayTree< Element > & s )

Display the tree.

Friendly to display.

Definition at line 807 of file splay_tpl.h.

807 {
808 out << "|[";
809
810 if (s.root) out << *s.root;
811
812 out << "]|";
813
814 return out;
815 }

◆ operator<<() [24/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & out,
const Tensor< GUM_SCALAR > & array )

Definition at line 751 of file tensor_tpl.h.

751 {
752 out << array.toString();
753 return out;
754 }

◆ operator<<() [25/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & output,
const BayesNet< GUM_SCALAR > & bn )

Prints map's DAG in output using the Graphviz-dot format.

Definition at line 536 of file BayesNet_tpl.h.

536 {
537 output << bn.toString();
538 return output;
539 }

◆ operator<<() [26/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & output,
const IBayesNet< GUM_SCALAR > & bn )

Prints map's DAG in output using the Graphviz-dot format.

Definition at line 316 of file IBayesNet_tpl.h.

316 {
317 output << bn.toString();
318 return output;
319 }
std::string toString() const

References gum::IBayesNet< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [27/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & output,
const IMarkovRandomField< GUM_SCALAR > & mn )

Prints map's graph in output using the Graphviz-dot format.

Definition at line 303 of file IMarkovRandomField_tpl.h.

303 {
304 output << bn.toString();
305 return output;
306 }

References gum::IMarkovRandomField< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [28/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & output,
const MarkovRandomField< GUM_SCALAR > & mn )

Definition at line 331 of file MarkovRandomField_tpl.h.

331 {
332 output << mn.toString();
333 return output;
334 }

◆ operator<<() [29/47]

std::ostream & gum::operator<< ( std::ostream & s,
const ArcGraphPart & a )

for friendly displaying the content of arc set

Parameters
sthe stream to which we display the content of a
athe ArcGraphPart to be displayed

Definition at line 198 of file arcGraphPart.cpp.

198 {
199 stream << set.toString();
200 return stream;
201 }

References gum::ArcGraphPart::toString().

Here is the call graph for this function:

◆ operator<<() [30/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & s,
const MultiDimLogit< GUM_SCALAR > & ag )

For friendly displaying the content of the array.

Definition at line 129 of file multiDimLogit_tpl.h.

129 {
130 return s << ag.toString();
131 }
std::string toString() const override
Returns the real name of the multiDimArray.

References gum::MultiDimLogit< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [31/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & s,
const MultiDimNoisyAND< GUM_SCALAR > & ag )

For friendly displaying the content of the array.

Definition at line 131 of file multiDimNoisyAND_tpl.h.

131 {
132 return s << ag.toString();
133 }
std::string toString() const override
Returns the real name of the multiDimArray.

References gum::MultiDimNoisyAND< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [32/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & s,
const MultiDimNoisyORCompound< GUM_SCALAR > & ag )

For friendly displaying the content of the array.

Definition at line 137 of file multiDimNoisyORCompound_tpl.h.

137 {
138 return s << ag.toString();
139 }
std::string toString() const override
returns the real name of the multiDimArray

References gum::MultiDimNoisyORCompound< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [33/47]

template<GUM_Numeric GUM_SCALAR>
std::ostream & gum::operator<< ( std::ostream & s,
const MultiDimNoisyORNet< GUM_SCALAR > & ag )

For friendly displaying the content of the array.

Definition at line 132 of file multiDimNoisyORNet_tpl.h.

132 {
133 return s << ag.toString();
134 }
std::string toString() const final
Returns the real name of the multiDimArray.

References gum::MultiDimNoisyORNet< GUM_SCALAR >::toString().

Here is the call graph for this function:

◆ operator<<() [34/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const Arc & arc )

to friendly display an arc

◆ operator<<() [35/47]

template<typename Val, typename Cmp>
std::ostream & gum::operator<< ( std::ostream & stream,
const AVLTree< Val, Cmp > & tree )

display the content of a tree

◆ operator<<() [36/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const DiGraph & g )

for friendly displaying the content of directed graphs

Definition at line 109 of file diGraph.cpp.

109 {
110 stream << g.toString();
111 return stream;
112 }
std::string toString() const override
to friendly display the content of the graph
Definition diGraph.cpp:86

References gum::DiGraph::toString().

Here is the call graph for this function:

◆ operator<<() [37/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const Edge & edge )

to friendly display an edge

◆ operator<<() [38/47]

template<typename Val>
std::ostream & gum::operator<< ( std::ostream & stream,
const List< Val > & list )

an << operator for List

Definition at line 1966 of file list_tpl.h.

1966 {
1967 stream << list.toString();
1968 return stream;
1969 }
std::string toString() const
Converts a list into a string.
Definition list_tpl.h:1828

References gum::List< Val >::toString().

Here is the call graph for this function:

◆ operator<<() [39/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const MixedGraph & g )

for friendly displaying the content of directed graphs

Definition at line 131 of file mixedGraph.cpp.

131 {
132 stream << g.toString();
133 return stream;
134 }
std::string toString() const override
to friendly display the content of the MixedGraph

References gum::MixedGraph::toString().

Here is the call graph for this function:

◆ operator<<() [40/47]

template<typename Val, typename Priority, typename Cmp>
std::ostream & gum::operator<< ( std::ostream & stream,
const MultiPriorityQueue< Val, Priority, Cmp > & queue )

Definition at line 603 of file multiPriorityQueue_tpl.h.

604 {
605 stream << queue.toString();
606 return stream;
607 }
std::string toString() const
Displays the content of the queue.

References gum::MultiPriorityQueue< Val, Priority, Cmp >::toString().

Here is the call graph for this function:

◆ operator<<() [41/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const PAG & g )

Definition at line 260 of file PAG.cpp.

260 {
261 stream << g.toString();
262 return stream;
263 }
std::string toString() const override
approximate conversion for learnDAG/learnPDAG: Tail-Arrowhead → arc; Arrowhead-Arrowhead → two arcs; ...
Definition PAG.cpp:215

References gum::PAG::toString().

Here is the call graph for this function:

◆ operator<<() [42/47]

template<typename Key>
std::ostream & gum::operator<< ( std::ostream & stream,
const Sequence< Key > & s )

A << operator for displaying the content of the Sequence.

Definition at line 1068 of file sequence_tpl.h.

1068 {
1069 stream << seq.toString();
1070 return stream;
1071 }

References gum::SequenceImplementation< Key, Gen >::toString().

Here is the call graph for this function:

◆ operator<<() [43/47]

template<typename Key, bool Gen>
std::ostream & gum::operator<< ( std::ostream & stream,
const SequenceImplementation< Key, Gen > & seq )

Definition at line 577 of file sequence_tpl.h.

577 {
578 stream << seq.toString();
579 return stream;
580 }
std::string toString() const
Displays the content of the sequence.

References gum::SequenceImplementation< Key, Gen >::toString().

Here is the call graph for this function:

◆ operator<<() [44/47]

template<typename Key>
std::ostream & gum::operator<< ( std::ostream & stream,
const SequenceImplementation< Key, true > & seq )

Definition at line 931 of file sequence_tpl.h.

931 {
932 stream << seq.toString();
933 return stream;
934 }

References gum::SequenceImplementation< Key, Gen >::toString().

Here is the call graph for this function:

◆ operator<<() [45/47]

template<typename Val, typename Priority, typename Cmp>
std::ostream & gum::operator<< ( std::ostream & stream,
const SortedPriorityQueue< Val, Priority, Cmp > & queue )

display the content of a sorted priority queue

Definition at line 1080 of file sortedPriorityQueue_tpl.h.

1081 {
1082 return stream << queue.toString();
1083 }
std::string toString() const
Displays the content of the queue.

References gum::SortedPriorityQueue< Val, Priority, Cmp >::toString().

Here is the call graph for this function:

◆ operator<<() [46/47]

std::ostream & gum::operator<< ( std::ostream & stream,
const UndiGraph & g )

for friendly displaying the content of undirected graphs

Definition at line 141 of file undiGraph.cpp.

141 {
142 stream << g.toString();
143 return stream;
144 }
std::string toString() const override
to friendly display the content of the graph
Definition undiGraph.cpp:95

References gum::UndiGraph::toString().

Here is the call graph for this function:

◆ operator<<() [47/47]

INLINE std::ostream & gum::operator<< ( std::ostream & streamy,
const ActionSet & objy )

Definition at line 115 of file actionSet_inl.h.

115 {
116 streamy << objy._actionSeq_->toString();
117 return streamy;
118 }
Sequence< Idx > * _actionSeq_
The very bone of the ActionSet.
Definition actionSet.h:186

◆ operator==()

bool gum::operator== ( const HashTableIteratorSafe< Key, Val > & from) const
noexcept

Checks whether two iterators are pointing toward equal elements.

Parameters
fromThe gum::HashTableIteratorSafe to test for equality.
Returns
Returns true if this and from are equal.

Referenced by gum::List< Val >::operator!=(), gum::ListIterator< Val >::operator!=(), gum::ListIteratorSafe< Val >::operator!=(), gum::SequenceImplementation< Key, Gen >::operator!=(), and gum::SequenceIteratorSafe< Key >::operator!=().

Here is the caller graph for this function:

◆ operator>>()

gum::SetInst & gum::operator>> ( gum::SetInst & inst,
const gum::DiscreteVariable & i )

Removes a variable to inst.

Parameters
instThe SetInst to which a variable is removed.
iThe variable to remove.
Returns
Returns a reference over inst.
Exceptions
NotFoundRaised if i is not found in inst.

◆ partialInstantiation() [1/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::partialInstantiation ( const MultiDimDecorator< GUM_ELEMENT > & table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

Instantiate variables in a MultiDimDecorator.

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimImplementation.

◆ partialInstantiation() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::partialInstantiation ( const MultiDimImplementation< GUM_ELEMENT > & table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

Instantiate variables in a MultiDimImplementation.

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimImplementation.

◆ partialInstantiation4MultiDimInit()

template<typename GUM_ELEMENT>
void gum::partialInstantiation4MultiDimInit ( )

The function used to register all the instantiation operators on multidimImplementations over non-pointers types.

Definition at line 117 of file partialInstantiation4MultiDim_tpl.h.

117 {
118 // ensure that only one thread will register the projections
119 static std::once_flag first;
120 std::call_once(first, []() {
121 std::string MultiDimArrayString("MultiDimArray");
122 std::string MultiDimDecisionDiagramString("MultiDimDecisionDiagram");
123 std::string BaseNameString("MultiDimImplementation");
124
125 // register base functions for multiDimArrays
127 MultiDimArrayString,
129
130 // register default basename functions
132 BaseNameString,
133 &partialInstantiationMultiDimImplementation);
134 });
135 }
MultiDimArray< GUM_ELEMENT > * partialInstantiationMultiDimArray(const MultiDimArray< GUM_ELEMENT > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a multiDimArray.
void registerPartialInstantiation(std::string_view instantiation_func_name, std::string_view type_multidim, typename PartialInstantiationRegister4MultiDim< GUM_ELEMENT >::PartialInstantiationPtr function)
A function to more easily register new instantiation functions in MultiDims.

References partialInstantiationMultiDimArray(), and registerPartialInstantiation().

Referenced by gum::PartialInstantiation4MultiDimInitialize< GUM_ELEMENT >::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ partialInstantiationMultiDimArray() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * gum::partialInstantiationMultiDimArray ( const MultiDimArray< GUM_ELEMENT > * table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

A specialized function for instantiating variables in a multiDimArray.

Warning
In practice, do not use this function but rather operator/function partialInstantiation on multiDimDecorators. This operator will take care to select this function if it is appropriate for your instantiation.

The function instantiates some variables in a multiDimArray. For instance, if table is a MultiDimArray defined over A,B,C,D and if inst_vars = {<A=a1>,<C=c2>}, then the function returns a table over B,D defined as table (a1,B,c2,D).

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimArray.

Referenced by partialInstantiation4MultiDimInit().

Here is the caller graph for this function:

◆ partialInstantiationMultiDimArray() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::partialInstantiationMultiDimArray ( const MultiDimImplementation< GUM_ELEMENT > * table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

A specialized function for instantiating variables in a MultiDimImplementation.

Warning
In practice, do not use this function but rather operator/function partialInstantiation on multiDimDecorators. This operator will take care to select this function if it is appropriate for your instantiation.

The function instantiates some variables in a multiDimArray. For instance, if table is a MultiDimArray defined over A,B,C,D and if inst_vars = {<A=a1>,<C=c2>}, then the function returns a table over B,D defined as table (a1,B,c2,D).

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimImplementation.

◆ partialInstantiationMultiDimArray4Pointers() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * gum::partialInstantiationMultiDimArray4Pointers ( const MultiDimArray< GUM_ELEMENT * > * table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

A specialized function for instantiating variables in a MultiDimArray.

Warning
In practice, do not use this function but rather operator/function partialInstantiation on multiDimDecorators. This operator will take care to select this function if it is appropriate for your instantiation.

The function instantiates some variables in a multiDimArray. For instance, if table is a MultiDimArray defined over A,B,C,D and if inst_vars = {<A=a1>,<C=c2>}, then the function returns a table over B,D defined as table (a1,B,c2,D).

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimArray.

Referenced by pointerPartialInstantiation4MultiDimInit().

Here is the caller graph for this function:

◆ partialInstantiationMultiDimArray4Pointers() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * gum::partialInstantiationMultiDimArray4Pointers ( const MultiDimImplementation< GUM_ELEMENT * > * table,
const HashTable< const DiscreteVariable *, Idx > & inst_vars )

A specialized function for instantiating variables in a MultiDimArray.

Warning
In practice, do not use this function but rather operator/function partialInstantiation on multiDimDecorators. This operator will take care to select this function if it is appropriate for your instantiation.

The function instantiates some variables in a multiDimArray. For instance, if table is a MultiDimArray defined over A,B,C,D and if inst_vars = {<A=a1>,<C=c2>}, then the function returns a table over B,D defined as table (a1,B,c2,D).

Parameters
tableThe table to instantiate.
inst_varsThe variables instantiation.
Returns
Returns the partial instantiation of table as a new MultiDimImplementation.

◆ pointerPartialInstantiation4MultiDimInit()

template<typename GUM_ELEMENT>
void gum::pointerPartialInstantiation4MultiDimInit ( )

The function used to register all the instantiations on multidimImplementations over pointers types.

Definition at line 139 of file partialInstantiation4MultiDim_tpl.h.

139 {
140 // ensure that only one thread will register the projections
141 static std::once_flag first;
142 std::call_once(first, []() {
143 std::string MultiDimArrayString("MultiDimArray");
144 std::string BaseNameString("MultiDimImplementation");
145
146 // register base functions for multiDimArrays
148 MultiDimArrayString,
150
151 // register default basename functions
153 "i",
154 BaseNameString,
155 &partialInstantiationMultiDimImplementation4Pointers);
156 });
157 }
MultiDimArray< GUM_ELEMENT * > * partialInstantiationMultiDimArray4Pointers(const MultiDimArray< GUM_ELEMENT * > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a MultiDimArray.

References partialInstantiationMultiDimArray4Pointers(), and registerPartialInstantiation().

Referenced by gum::PartialInstantiation4MultiDimInitialize< GUM_ELEMENT * >::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pointerProjections4MultiDimInit()

template<typename GUM_ELEMENT>
void gum::pointerProjections4MultiDimInit ( )

the function used to register all the projections on multidimImplementations over pointers types.

◆ print_output()

void gum::print_output ( std::vector< FormulaPart > v)

Definition at line 71 of file formula.cpp.

71 {
72 std::cout << "Output: ";
73 for (const auto& elt: v) {
74 std::cout << elt.str() << " ";
75 }
76 std::cout << std::endl;
77 }

◆ print_stack()

void gum::print_stack ( std::stack< FormulaPart > s)

Definition at line 55 of file formula.cpp.

55 {
56 std::cout << std::endl;
57 std::list< FormulaPart > l;
58 while (!s.empty()) {
59 l.push_front(s.top());
60 s.pop();
61 }
62
63 std::cout << "Stack: ";
64 for (const auto& elt: l) {
65 std::cout << elt.str() << " ";
66 }
67 std::cout << std::endl;
68 }

◆ productOfTrees()

template<GUM_Numeric GUM_SCALAR>
std::unique_ptr< ASTtree< GUM_SCALAR > > gum::productOfTrees ( std::vector< std::unique_ptr< ASTtree< GUM_SCALAR > > > && lterms)

Build a product AST from a list of terms.

Consumes the vector of unique_ptrs and returns a single AST representing their Elementwise product (e.g., left-associated chain of ASTmult nodes).

Parameters
ltermslist of term nodes (ownership transferred)
Returns
product AST

Definition at line 633 of file doAST_tpl.h.

633 {
634 if (lterms.empty()) { GUM_ERROR(InvalidArgument, "productOfTrees requires at least one term"); }
635
636 auto it = lterms.begin();
637 auto end = lterms.end();
638
639 // Take the first term as accumulator
640 std::unique_ptr< ASTtree< GUM_SCALAR > > acc = std::move(*it);
641 ++it;
642
643 // Left-associate: (((t1 * t2) * t3) * ...)
644 for (; it != end; ++it) {
645 acc = std::make_unique< ASTmult< GUM_SCALAR > >(std::move(acc), std::move(*it));
646 }
647 return acc;
648 }

References GUM_ERROR.

Referenced by gum::DoCalculus< GUM_SCALAR >::getBackDoorTree().

Here is the caller graph for this function:

◆ productOfTrees< double >()

template std::unique_ptr< gum::ASTtree< double > > gum::productOfTrees< double > ( std::vector< std::unique_ptr< ASTtree< double > > > && )
extern

◆ ProjectFuncMultiDimArray()

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * gum::ProjectFuncMultiDimArray ( const MultiDimArray< GUM_ELEMENT > * t1,
const MultiDimArray< GUM_ELEMENT > * t2,
const GUM_ELEMENT(* )(const GUM_ELEMENT &, const GUM_ELEMENT &) )

a specialized function for functionally projecting a multiDimArray

The function produces a tensorial functional combination of t1 and t2, that is, if t1 and t2 are multiDimArrays over variables A,B,C,D and D,B,E respectively, function combine2MultiDimArrays will return a multiDimArray T defined as T[A,B,C,D,E] = f ( t1[A,B,C,D],t2[D,B,E] ) for all A,B,C,D,E.

Returns
function combine2MultiDimArrays allocates on the heap the new T multiDimArray and returns it.

◆ projections4MultiDimInit()

template<typename GUM_ELEMENT>
void gum::projections4MultiDimInit ( )

the function used to register all the projection operators on multidimImplementations over non-pointers types.

◆ projectMax() [1/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectMax ( const MultiDimImplementation< GUM_ELEMENT > & table,
const gum::VariableSet & del_vars )

The function to be used to project a MultiDimImplementation using a Max.

◆ projectMax() [2/2]

template<typename GUM_ELEMENT>
GUM_ELEMENT gum::projectMax ( const MultiDimImplementation< GUM_ELEMENT > & table,
Instantiation * instantiation = 0 )

the function to be used to project a MultiDimImplementation using a Max

Referenced by gum::Tensor< GUM_SCALAR >::max(), gum::Tensor< GUM_SCALAR >::maxIn(), and gum::Tensor< GUM_SCALAR >::maxOut().

Here is the caller graph for this function:

◆ projectMaxMultiDimFunctionGraph() [1/2]

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::projectMaxMultiDimFunctionGraph ( const MultiDimFunctionGraph< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a Max operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Max_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraph allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectMax on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMaxMultiDimFunctionGraph() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectMaxMultiDimFunctionGraph ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a Max operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Max_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraph allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectMax on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMin() [1/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectMin ( const MultiDimImplementation< GUM_ELEMENT > & table,
const gum::VariableSet & del_vars )

The function to be used to project a MultiDimImplementation using a Min.

◆ projectMin() [2/2]

template<typename GUM_ELEMENT>
GUM_ELEMENT gum::projectMin ( const MultiDimImplementation< GUM_ELEMENT > & table,
Instantiation * instantiation = 0 )

the function to be used to project a MultiDimImplementation using a Min

Referenced by gum::Tensor< GUM_SCALAR >::minIn(), and gum::Tensor< GUM_SCALAR >::minOut().

Here is the caller graph for this function:

◆ projectMinMultiDimArray() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * gum::projectMinMultiDimArray ( const MultiDimArray< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMinMultiDimArray() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectMinMultiDimArray ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMinMultiDimArray4Pointers() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * gum::projectMinMultiDimArray4Pointers ( const MultiDimArray< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMinMultiDimArray4Pointers() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * gum::projectMinMultiDimArray4Pointers ( const MultiDimImplementation< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMinMultiDimFunctionGraph() [1/2]

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::projectMinMultiDimFunctionGraph ( const MultiDimFunctionGraph< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectMinMultiDimFunctionGraph() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectMinMultiDimFunctionGraph ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a Min operator

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Min_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectMin on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProduct() [1/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectProduct ( const MultiDimImplementation< GUM_ELEMENT > & table,
const gum::VariableSet & del_vars )

The function to be used to project a MultiDimImplementation using a Product.

◆ projectProduct() [2/2]

template<typename GUM_ELEMENT>
GUM_ELEMENT gum::projectProduct ( const MultiDimImplementation< GUM_ELEMENT > & table,
Instantiation * instantiation = 0 )

the function to be used to project a MultiDimImplementation using a Product

Referenced by gum::Tensor< GUM_SCALAR >::prodIn(), and gum::Tensor< GUM_SCALAR >::prodOut().

Here is the caller graph for this function:

◆ projectProductMultiDimArray() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * gum::projectProductMultiDimArray ( const MultiDimArray< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProductMultiDimArray() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectProductMultiDimArray ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProductMultiDimArray4Pointers() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * gum::projectProductMultiDimArray4Pointers ( const MultiDimArray< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProductMultiDimArray4Pointers() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * gum::projectProductMultiDimArray4Pointers ( const MultiDimImplementation< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProductMultiDimFunctionGraph() [1/2]

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::projectProductMultiDimFunctionGraph ( const MultiDimFunctionGraph< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectProductMultiDimFunctionGraph() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectProductMultiDimFunctionGraph ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using products

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Prod_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectProduct on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSum() [1/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectSum ( const MultiDimImplementation< GUM_ELEMENT > & table,
const gum::VariableSet & del_vars )

The function to be used to project a MultiDimImplementation using a Sum.

◆ projectSum() [2/2]

template<typename GUM_ELEMENT>
GUM_ELEMENT gum::projectSum ( const MultiDimImplementation< GUM_ELEMENT > & table,
Instantiation * instantiation = 0 )

the function to be used to project a MultiDimImplementation using a sum

Referenced by gum::Tensor< GUM_SCALAR >::sum(), and gum::Tensor< GUM_SCALAR >::sumIn().

Here is the caller graph for this function:

◆ projectSumMultiDimArray() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT > * gum::projectSumMultiDimArray ( const MultiDimArray< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSumMultiDimArray() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectSumMultiDimArray ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSumMultiDimArray4Pointers() [1/2]

template<typename GUM_ELEMENT>
MultiDimArray< GUM_ELEMENT * > * gum::projectSumMultiDimArray4Pointers ( const MultiDimArray< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSumMultiDimArray4Pointers() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT * > * gum::projectSumMultiDimArray4Pointers ( const MultiDimImplementation< GUM_ELEMENT * > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimArray using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimArray defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimArrays allocates on the heap the new T multiDimArray and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSumMultiDimFunctionGraph() [1/2]

template<typename GUM_ELEMENT>
MultiDimFunctionGraph< GUM_ELEMENT > * gum::projectSumMultiDimFunctionGraph ( const MultiDimFunctionGraph< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ projectSumMultiDimFunctionGraph() [2/2]

template<typename GUM_ELEMENT>
MultiDimImplementation< GUM_ELEMENT > * gum::projectSumMultiDimFunctionGraph ( const MultiDimImplementation< GUM_ELEMENT > * table,
const gum::VariableSet & del_vars )

a specialized function for projecting a multiDimFunctionGraph using a summation

The function projects a table over the subset of its variables NOT IN the set of variables del_vars. For instance, if table is a MultiDimFunctionGraph defined over A,B,C,D and if del_vars = {A,C}, then the function returns a table over B,D defined as Sum_{A,C} table (A,B,C,D).

Returns
function ProjectMaxMultiDimFunctionGraphs allocates on the heap the new T multiDimFunctionGraph and returns it
Warning
In practice, do not use this function but rather operator/function projectSum on MultiDimImplementation. This operator will take care to select this function if it is appropriate for your projection.

◆ randomValue()

template<typename GENERATOR>
Idx gum::randomValue ( GENERATOR & generator,
const Size max )

Definition at line 83 of file utils_random_tpl.h.

83 {
84 std::uniform_int_distribution< Idx > uni_int(0, max - 1);
85 return uni_int(generator);
86 }

◆ rec_hasMixedReallyOrientedPath()

bool gum::rec_hasMixedReallyOrientedPath ( const PDAG & gr,
NodeSet & marked,
NodeId node,
NodeId goal,
bool alreadyOriented )

Definition at line 90 of file PDAG.cpp.

94 {
95 if (node == goal) return alreadyOriented;
96 if (marked.contains(node)) return false;
97 marked.insert(node);
98 for (const auto nod: gr.children(node))
99 if (rec_hasMixedReallyOrientedPath(gr, marked, nod, goal, true)) return true;
100 for (const auto nod: gr.neighbours(node))
101 if (rec_hasMixedReallyOrientedPath(gr, marked, nod, goal, alreadyOriented)) return true;
102 return false;
103 }
NodeSet children(const NodeSet &ids) const
returns the set of nodes which consists in the node and its parents returns the set of children of a ...
const NodeSet & neighbours(NodeId id) const
returns the set of node neighbours to a given node
bool contains(const Key &k) const
Indicates whether a given elements belong to the set.
Definition set_tpl.h:468
bool rec_hasMixedReallyOrientedPath(const PDAG &gr, NodeSet &marked, NodeId node, NodeId goal, bool alreadyOriented)
Definition PDAG.cpp:90

References gum::ArcGraphPart::children(), gum::Set< Key >::contains(), gum::Set< Key >::insert(), gum::EdgeGraphPart::neighbours(), and rec_hasMixedReallyOrientedPath().

Referenced by gum::PDAG::hasMixedReallyOrientedPath(), and rec_hasMixedReallyOrientedPath().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ registerOperator()

template<typename GUM_ELEMENT>
void gum::registerOperator ( std::string_view operation_name,
std::string_view type1,
std::string_view type2,
typename OperatorRegister4MultiDim< GUM_ELEMENT >::OperatorPtr function )

A function to more easily register new operators in MultiDims.

◆ registerPartialInstantiation()

template<typename GUM_ELEMENT>
void gum::registerPartialInstantiation ( std::string_view instantiation_func_name,
std::string_view type_multidim,
typename PartialInstantiationRegister4MultiDim< GUM_ELEMENT >::PartialInstantiationPtr function )

A function to more easily register new instantiation functions in MultiDims.

Referenced by partialInstantiation4MultiDimInit(), and pointerPartialInstantiation4MultiDimInit().

Here is the caller graph for this function:

◆ registerProjection()

template<typename GUM_ELEMENT>
void gum::registerProjection ( std::string_view projection_name,
std::string_view type_multidim,
typename ProjectionRegister4MultiDim< GUM_ELEMENT >::ProjectionPtr function )

A function to more easily register new projection functions in MultiDims.

◆ removeInfo()

template<class Element>
void gum::removeInfo ( const SplayBinaryNode< Element > * e,
HashTable< Element, SplayBinaryNode< Element > * > & addr )
static

Definition at line 664 of file splay_tpl.h.

665 {
666 GUM_ASSERT(addr.exists(e->getElement()));
667 addr.erase(e->getElement());
668
669 if (e->getFg()) removeInfo(e->getFg(), addr);
670
671 if (e->getFd()) removeInfo(e->getFd(), addr);
672 }
void erase(const Key &key)
Removes a given element from the hash table.
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
const Element & getElement() const
Returns the element in the node.
Definition splay_tpl.h:332
const SplayBinaryNode< Element > * getFd() const
Returns the right child.
Definition splay_tpl.h:352
const SplayBinaryNode< Element > * getFg() const
Returns the left child.
Definition splay_tpl.h:342
static void removeInfo(const SplayBinaryNode< Element > *e, HashTable< Element, SplayBinaryNode< Element > * > &addr)
Definition splay_tpl.h:664

References gum::SplayBinaryNode< Element >::getElement(), gum::SplayBinaryNode< Element >::getFd(), gum::SplayBinaryNode< Element >::getFg(), and removeInfo().

Referenced by removeInfo(), gum::SplayTree< Element >::split(), and gum::SplayTree< Element >::split_by_val().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sq()

template<GUM_Numeric GUM_SCALAR>
Tensor< GUM_SCALAR > gum::sq ( const Tensor< GUM_SCALAR > & arg)
inline

◆ SSNewMNmultiTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::SSNewMNmultiTensor ( const Tensor< GUM_SCALAR > & t1,
const Tensor< GUM_SCALAR > & t2 )
static

◆ SSNewMNprojTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::SSNewMNprojTensor ( const Tensor< GUM_SCALAR > & t1,
const gum::VariableSet & del_vars )
static

◆ SSNewmultiTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::SSNewmultiTensor ( const Tensor< GUM_SCALAR > & t1,
const Tensor< GUM_SCALAR > & t2 )
static

◆ SSNewprojTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::SSNewprojTensor ( const Tensor< GUM_SCALAR > & t1,
const gum::VariableSet & del_vars )
static

◆ to_string()

INLINE std::string gum::to_string ( const Formula & f)

Definition at line 262 of file formula_inl.h.

262{ return std::to_string(f.result()); }

References gum::Formula::result().

Referenced by gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), gum::Formula::Formula(), and gum::Formula::Formula().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VENewmultiTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::VENewmultiTensor ( const Tensor< GUM_SCALAR > & t1,
const Tensor< GUM_SCALAR > & t2 )
static

◆ VENewprojTensor()

template<GUM_Numeric GUM_SCALAR>
INLINE Tensor< GUM_SCALAR > gum::VENewprojTensor ( const Tensor< GUM_SCALAR > & t1,
const gum::VariableSet & del_vars )
static

Variable Documentation

◆ MultiDimFunctionGraph< double >::defaultValue

Definition at line 70 of file multiDimFunctionGraph.cpp.

◆ MultiDimFunctionGraph< float >::defaultValue

template<>
const float gum::MultiDimFunctionGraph< float >::defaultValue = 0.0f

Definition at line 67 of file multiDimFunctionGraph.cpp.

◆ VariableLog2ParamComplexityCTable

const double gum::VariableLog2ParamComplexityCTable

Definition at line 246 of file variableLog2ParamComplexity.cpp.

246 {{0,
247 1,
248 1.3219280948873624038,
249 1.5305148703230577745,
250 1.6865005853516363832,
251 1.8116353900270942834,
252 1.9163583844844809256,
253 2.0065271644294311315,
254 2.0857704966116465961,
255 2.1564986340920730967,
256 2.2203965250090043071,
257 2.2786902190668105739,
258 2.3322990996918790962,
259 2.3819333135364253451,
260 2.4281502505698502326,
261 2.4713970635580784219,
262 2.5120389433034655546,
263 2.5503761743106676541,
264 2.5866596296997594884,
265 2.6211016700234877064,
266 2.6538820078470202191,
267 2.6851559155058404293,
268 2.7150583520600020115,
269 2.7437053059117562093,
270 2.7711991437760832291,
271 2.79763156718914896,
272 2.8230804530606610214,
273 2.8476192305148533279,
274 2.8713103180418357852,
275 2.8942112722722521667,
276 2.9163733091011145859,
277 2.9378445477276624587,
278 2.9586657568594088019,
279 2.9788760126291720098,
280 2.9985108275544174461,
281 3.0176020678569406286,
282 3.0361794852617554064,
283 3.054270010943741287,
284 3.0718997050205953947,
285 3.0890904999196213687,
286 3.1058645897056522678,
287 3.1222418647242431433,
288 3.1382404560408532213,
289 3.1538784964406412215,
290 3.1691716096623245846,
291 3.1841343571506448562,
292 3.1987813380348359971,
293 3.2131256939662806715,
294 3.2271791995449077284,
295 3.2409529086398065623,
296 3.2544605816423333167,
297 3.2677107412971055922,
298 3.2807131309745982684,
299 3.2934769361591986758,
300 3.3060108350527364074,
301 3.3183230373618513021,
302 3.3304213181985549141,
303 3.3423130485925671707,
304 3.3540052232282806521,
305 3.365504485776890764,
306 3.3768171521001946189,
307 3.3879492315483643594,
308 3.3989064465446894303,
309 3.4096942506232235104,
310 3.4203178450640367991,
311 3.4307821942586769204,
312 3.4410920399192130859,
313 3.4512519142354931567,
314 3.4612661520716652142,
315 3.4711389022871026455,
316 3.4808741382541863452,
317 3.4904756676427037831,
318 3.4999471415291836252,
319 3.5092920628885035939,
320 3.5185137945163771356,
321 3.5276155664278530111,
322 3.5366004827734669469,
323 3.5454715283100086687,
324 3.5542315744600920802,
325 3.5628833849918311039,
326 3.5714296213456182549,
327 3.5798728476357393191,
328 3.5882155353493616623,
329 3.5964600677650082616,
330 3.6046087441100200799,
331 3.6126637834754928846,
332 3.6206273285060115441,
333 3.6285014488783944309,
334 3.6362881445853285634,
335 3.6439893490354289263,
336 3.6516069319827231254,
337 3.6591427022967493166,
338 3.6665984105827660322,
339 3.6739757516632027823,
340 3.6812763669277042133,
341 3.6885018465600203363,
342 3.6956537316512108049,
343 3.7027335162031129734,
344 3.709742649032294004,
345 3.7166825355772776796,
346 3.7235545396163005627,
347 3.7303599849017525791,
348 3.7371001567142370092,
349 3.7437763033413591351,
350 3.7503896374878165076,
351 3.7569413376170515129,
352 3.7634325492308957628,
353 3.769864386090051589,
354 3.776237931378247481,
355 3.7825542388137973759,
356 3.7888143337102198061,
357 3.7950192139907077404,
358 3.8011698511566636149,
359 3.8072671912138411621,
360 3.813312155558833183,
361 3.8193056418268742647,
362 3.8252485247035634686,
363 3.8311416567014151546,
364 3.8369858689048319533,
365 3.8427819716839515252,
366 3.8485307553783489887,
367 3.8542329909524455367,
368 3.8598894306260795872,
369 3.8655008084775124289,
370 3.8710678410228189783,
371 3.876591227773807713,
372 3.882071651772597054,
373 3.8875097801044717905,
374 3.8929062643933862731,
375 3.8982617412758329145,
376 3.9035768328586790687,
377 3.9088521471579533717,
378 3.9140882785229149654,
379 3.9192858080418018218,
380 3.9244453039363653701,
381 3.9295673219370383933,
382 3.9346524056491860577,
383 3.9397010869028807889,
384 3.9447138860910029301,
385 3.9496913124958692443,
386 3.9546338646043004417,
387 3.9595420304092820984,
388 3.9644162877048079174,
389 3.9692571043686029064,
390 3.9740649386334756521,
391 3.9788402393527797507,
392 3.9835834462536925393,
393 3.9882949901852819963,
394 3.9929752933534228276,
395 3.9976247695539166571,
396 4.0022438243928535329,
397 4.0068328555018473125,
398 4.0113922527467709145,
399 4.0159223984285752351,
400 4.0204236674779094685,
401 4.0248964276438972121,
402 4.0293410396769857584,
403 4.0337578575052832619,
404 4.0381472284054762412,
405 4.0425094931694394162,
406 4.0468449862648130377,
407 4.0511540359901010433,
408 4.0554369646269510241,
409 4.0596940885851129366,
410 4.0639257185455752719,
411 4.0681321595976314143,
412 4.0723137113727130298,
413 4.0764706681735560778,
414 4.0806033191015051997,
415 4.0847119481760802984,
416 4.0887968344559588729,
417 4.0928582521525260773,
418 4.096896470742770191,
419 4.1009117550762148596,
420 4.1049043654819339366,
421 4.1088745578704353179,
422 4.1128225838338998699,
423 4.1167486907416792619,
424 4.1206531218352182577,
425 4.1245361163190610299,
426 4.1283979094510820929,
427 4.132238732626686506,
428 4.1360588134663576199,
429 4.139858375893271436,
430 4.1436376402167542921,
431 4.1473968232080631324,
432 4.1511361381755982336,
433 4.1548557950390989646,
434 4.1585560004008677026,
435 4.1622369576153950277,
436 4.1658988668573400105,
437 4.1695419251878274025,
438 4.1731663266171183935,
439 4.1767722621704104213,
440 4.1803599199458023605,
441 4.1839294851754313953,
442 4.1874811402837543994,
443 4.1910150649428796754,
444 4.1945314361289192107,
445 4.1980304281754907691,
446 4.2015122128245518951,
447 4.2049769592809953522,
448 4.2084248342581513924,
449 4.2118560020307898029,
450 4.2152706244788999967,
451 4.2186688611367610946,
452 4.2220508692363925007,
453 4.225416803753091699,
454 4.2287668174469059679,
455 4.2321010609056335383,
456 4.2354196825864427467,
457 4.2387228288547360577,
458 4.2420106440234812695,
459 4.2452832703925196256,
460 4.2485408482849811307,
461 4.2517835160841324083,
462 4.2550114102685414608,
463 4.2582246654469715352,
464 4.26142341439412764,
465 4.2646077880808599403,
466 4.2677779157089421602,
467 4.2709339247424109587,
468 4.274075940938657503,
469 4.2772040883774593567,
470 4.2803184894933243854,
471 4.2834192651025713161,
472 4.2865065344308401762,
473 4.289580415144497394,
474 4.2926410233744620726,
475 4.2956884737434544164,
476 4.2987228793938232485,
477 4.3017443520103322285,
478 4.3047530018470325786,
479 4.3077489377515956193,
480 4.3107322671875394349,
481 4.3137030962596352168,
482 4.316661529734781233,
483 4.3196076710668069865,
484 4.3225416224157466871,
485 4.3254634846717516794,
486 4.3283733574735760996,
487 4.3312713392326411821,
488 4.3341575271484868992,
489 4.3370320172331373598,
490 4.3398949043284797966,
491 4.3427462821229729784,
492 4.3455862431756866471,
493 4.3484148789292014214,
494 4.3512322797302420696,
495 4.3540385348456256409,
496 4.356833732481850241,
497 4.3596179597991531196,
498 4.3623913029289527188,
499 4.3651538469910677875,
500 4.3679056761079779747,
501 4.3706468734213030913,
502 4.3733775211061569621,
503 4.3760977003871506241,
504 4.3788074915526937758,
505 4.3815069739687659833,
506 4.3841962260935583018,
507 4.3868753254904069294,
508 4.3895443488443355307,
509 4.3922033719697441967,
510 4.3948524698297672941,
511 4.3974917165443105915,
512 4.4001211854055455319,
513 4.4027409488877315979,
514 4.4053510786623730766,
515 4.4079516456074374631,
516 4.4105427198193112304,
517 4.413124370626925419,
518 4.4156966665987864573,
519 4.41825967555714616,
520 4.4208134645886669745,
521 4.4233581000526163152,
522 4.4258936475945764855,
523 4.4284201721547953312,
524 4.4309377379767873606,
525 4.4334464086213936085,
526 4.43594624697273332,
527 4.4384373152494838166,
528 4.4409196750140704779,
529 4.4433933871817323791,
530 4.4458585120283409253,
531 4.4483151092023449635,
532 4.45076323773105198,
533 4.453202956028516013,
534 4.455634321906808637,
535 4.4580573925828819171,
536 4.4604722246857066992,
537 4.4628788742656686495,
538 4.4652773968013761419,
539 4.4676678472091388983,
540 4.470050279849242969,
541 4.4724247485319761353,
542 4.4747913065293190016,
543 4.4771500065773404131,
544 4.479500900886822734,
545 4.4818440411483351227,
546 4.4841794785394766265,
547 4.486507263732785411,
548 4.4888274469003111022,
549 4.4911400777222940661,
550 4.4934452053927378401,
551 4.4957428786234023832,
552 4.4980331456558610981,
553 4.5003160542619937701,
554 4.5025916517526587413,
555 4.5048599849818993235,
556 4.5071211003542339668,
557 4.509375043832439367,
558 4.5116218609378160309,
559 4.5138615967603969992,
560 4.5160942959626275695,
561 4.5183200027852965519,
562 4.520538761050457488,
563 4.5227506141726685485,
564 4.5249556051553225799,
565 4.5271537766050604645,
566 4.5293451707288889807,
567 4.5315298293447279221,
568 4.5337077938817769152,
569 4.5358791053897657974,
570 4.5380438045398090452,
571 4.5402019316310466834,
572 4.5423535265940566674,
573 4.5444986289971485149,
574 4.5466372780479309412,
575 4.5487695126010194713,
576 4.5508953711591386693,
577 4.553014891878988557,
578 4.555128112576217525,
579 4.5572350707277848869,
580 4.5593358034746458429,
581 4.5614303476320641195,
582 4.5635187396852909814,
583 4.5656010157987418907,
584 4.5676772118182524807,
585 4.5697473632747893646,
586 4.5718115053883314758,
587 4.5738696730711936311,
588 4.5759219009318297111,
589 4.5779682232786962359,
590 4.580008674122619361,
591 4.5820432871812135645,
592 4.584072095882786968,
593 4.586095133367030563,
594 4.5881124324917292867,
595 4.5901240258338660283,
596 4.5921299456936059968,
597 4.5941302240962302861,
598 4.5961248927967330857,
599 4.5981139832828796798,
600 4.6000975267765156218,
601 4.6020755542377775882,
602 4.6040480963680820992,
603 4.6060151836140565962,
604 4.6079768461666379409,
605 4.6099331139685295611,
606 4.6118840167134669272,
607 4.6138295838511140801,
608 4.6157698445869090875,
609 4.6177048278901766665,
610 4.6196345624913410788,
611 4.6215590768852035097,
612 4.6234783993373831379,
613 4.6253925578819199416,
614 4.6273015803267174562,
615 4.6292054942556273289,
616 4.6311043270312808318,
617 4.6329981057947851042,
618 4.6348868574709847223,
619 4.6367706087697735384,
620 4.6386493861883799639,
621 4.6405232160142411146,
622 4.6423921243242238788,
623 4.6442561369929995507,
624 4.6461152796873097515,
625 4.6479695778763394642,
626 4.6498190568245965082,
627 4.6516637416049304576,
628 4.6535036570902770237,
629 4.6553388279622769375,
630 4.6571692787102758615,
631 4.6589950336343957105,
632 4.6608161168481601067,
633 4.6626325522775369237,
634 4.6644443636669574715,
635 4.6662515745784025611,
636 4.6680542083924478902,
637 4.6698522883139945705,
638 4.6716458373701978957,
639 4.6734348784128760812,
640 4.6752194341241404274,
641 4.6769995270109037122,
642 4.6787751794146723583,
643 4.6805464135071934706,
644 4.6823132512952057027,
645 4.6840757146187979032,
646 4.6858338251597526636,
647 4.6875876044357518424,
648 4.6893370738041744161,
649 4.6910822544682728719,
650 4.6928231674714568911,
651 4.6945598337046998694,
652 4.6962922739035599662,
653 4.6980205086537933923,
654 4.6997445583900265831,
655 4.701464443396743853,
656 4.7031801838139450922,
657 4.7048917996347849879,
658 4.7065993107051991018,
659 4.7083027367308956102,
660 4.7100020972750966664,
661 4.711697411761337051,
662 4.7133886994705447293,
663 4.7150759795503836003,
664 4.716759271010333876,
665 4.7184385927245848791,
666 4.7201139634314115412,
667 4.7217854017414575551,
668 4.7234529261286848367,
669 4.7251165549405174104,
670 4.7267763063949077562,
671 4.7284321985804709243,
672 4.7300842494594608212,
673 4.7317324768711976901,
674 4.7333768985298183551,
675 4.7350175320239840104,
676 4.7366543948237511685,
677 4.7382875042768928253,
678 4.7399168776121101132,
679 4.7415425319386947933,
680 4.7431644842495428449,
681 4.7447827514203240185,
682 4.7463973502112200009,
683 4.7480082972698944843,
684 4.7496156091286225731,
685 4.7512193022091739891,
686 4.7528193928204247598,
687 4.754415897162219018,
688 4.7560088313258255255,
689 4.7575982112920573996,
690 4.7591840529372824165,
691 4.7607663720297326293,
692 4.7623451842321564698,
693 4.7639205051033224336,
694 4.7654923501002564024,
695 4.7670607345735351856,
696 4.7686256737765431168,
697 4.7701871828583897184,
698 4.7717452768708836786,
699 4.7732999707639018894,
700 4.7748512793922586184,
701 4.7763992175118508143,
702 4.7779437997822711282,
703 4.779485040768117976,
704 4.7810229549378044922,
705 4.7825575566684097595,
706 4.7840888602415843067,
707 4.7856168798473426307,
708 4.7871416295831812349,
709 4.7886631234593268758,
710 4.7901813753921604899,
711 4.7916963992098375869,
712 4.793208208654144542,
713 4.7947168173766101518,
714 4.7962222389421578228,
715 4.7977244868320019222,
716 4.7992235744391740226,
717 4.8007195150724708554,
718 4.8022123219588612741,
719 4.8037020082385737396,
720 4.8051885869703383491,
721 4.806672071133410995,
722 4.8081524736236067596,
723 4.8096298072548462343,
724 4.8111040847635733186,
725 4.8125753188071112021,
726 4.8140435219620663077,
727 4.815508706729492161,
728 4.8169708855305968243,
729 4.8184300707133571606,
730 4.8198862745447037526,
731 4.8213395092214463844,
732 4.8227897868634492795,
733 4.8242371195151969587,
734 4.8256815191494624173,
735 4.8271229976646479187,
736 4.8285615668882222451,
737 4.8299972385755332027,
738 4.8314300244083812075,
739 4.8328599360013910768,
740 4.8342869848977274572,
741 4.8357111825698240182,
742 4.8371325404227860645,
743 4.8385510697928113544,
744 4.8399667819487799392,
745 4.8413796880902806308,
746 4.8427897993521877851,
747 4.8441971268038637177,
748 4.8456016814473992227,
749 4.8470034742173515596,
750 4.8484025159888686218,
751 4.849798817568856002,
752 4.8511923897029873842,
753 4.8525832430713089494,
754 4.853971388294493039,
755 4.8553568359266421339,
756 4.8567395964647177564,
757 4.8581196803414918861,
758 4.8594970979306104653,
759 4.8608718595434847742,
760 4.8622439754347617225,
761 4.8636134557955728042,
762 4.8649803107635145594,
763 4.8663445504125162344,
764 4.8677061847613245504,
765 4.8690652237710372319,
766 4.8704216773445008215,
767 4.8717755553306814065,
768 4.873126867518017491,
769 4.8744756236406097116,
770 4.8758218333816891743,
771 4.8771655063631165206,
772 4.878506652155493839,
773 4.8798452802753393698,
774 4.8811814001828057741,
775 4.8825150212892536317,
776 4.8838461529498840008,
777 4.8851748044667928639,
778 4.8865009850920388956,
779 4.8878247040260154321,
780 4.8891459704159974109,
781 4.8904647933599099119,
782 4.8917811819041414623,
783 4.8930951450436799277,
784 4.8944066917270454553,
785 4.8957158308505261957,
786 4.8970225712604733559,
787 4.8983269217598017775,
788 4.8996288910962872976,
789 4.9009284879733785445,
790 4.902225721046442608,
791 4.903520598923560847,
792 4.9048131301646282765,
793 4.9061033232843991314,
794 4.9073911867492512329,
795 4.9086767289830364192,
796 4.909959958360117227,
797 4.9112408832123994884,
798 4.9125195118262006133,
799 4.9137958524402511884,
800 4.9150699132533270941,
801 4.9163417024166076175,
802 4.9176112280417614286,
803 4.918878498192087001,
804 4.920143520891094191,
805 4.92140630411920732,
806 4.9226668558117179231,
807 4.9239251838645961001,
808 4.9251812961328695906,
809 4.9264352004250104855,
810 4.9276869045139148895,
811 4.9289364161274331622,
812 4.930183742953959225,
813 4.9314288926429705739,
814 4.9326718728017695526,
815 4.9339126909990707048,
816 4.9351513547632901435,
817 4.9363878715825793009,
818 4.9376222489086307732,
819 4.9388544941514433972,
820 4.9400846146855030838,
821 4.9413126178442805525,
822 4.9425385109245425497,
823 4.9437623011874967105,
824 4.9449839958525672046,
825 4.9462036021044877288,
826 4.9474211270911467864,
827 4.94863657792356193,
828 4.9498499616762590136,
829 4.951061285385411459,
830 4.9522705560567228389,
831 4.953477780653996021,
832 4.9546829661095603825,
833 4.9558861193187082606,
834 4.9570872471431259854,
835 4.9582863564077985785,
836 4.9594834539061531942,
837 4.9606785463950835435,
838 4.9618716405975016315,
839 4.9630627432033493918,
840 4.9642518608677059788,
841 4.9654390002135828652,
842 4.9666241678332916365,
843 4.9678073702783995813,
844 4.9689886140775181289,
845 4.9701679057200074396,
846 4.9713452516644425216,
847 4.9725206583386771797,
848 4.9736941321387124759,
849 4.9748656794271779447,
850 4.9760353065382254556,
851 4.9772030197691305986,
852 4.9783688253938667145,
853 4.9795327296494962255,
854 4.9806947387447246811,
855 4.9818548588592266313,
856 4.9830130961401488676,
857 4.9841694567042216235,
858 4.9853239466419916326,
859 4.9864765720105195257,
860 4.9876273388394878339,
861 4.9887762531291475199,
862 4.9899233208496038827,
863 4.991068547943197764,
864 4.9922119403239273439,
865 4.9933535038756051705,
866 4.9944932444557128548,
867 4.9956311678911315965,
868 4.9967672799847102638,
869 4.9979015865084877035,
870 4.9990340932062125034,
871 5.0001648057961816107,
872 5.0012937299703708049,
873 5.0024208713897557743,
874 5.0035462356939701678,
875 5.0046698284898649689,
876 5.005791655360565251,
877 5.0069117218661789437,
878 5.0080300335340695028,
879 5.0091465958702752204,
880 5.0102614143550079362,
881 5.011374494437898619,
882 5.0124858415485151752,
883 5.013595461088218741,
884 5.0147033584340050538,
885 5.0158095389358994254,
886 5.016914007923525709,
887 5.0180167706959730722,
888 5.019117832532923984,
889 5.0202171986848211915,
890 5.0213148743816304886,
891 5.0224108648275542777,
892 5.023505175204015849,
893 5.0245978106638364835,
894 5.0256887763431103977,
895 5.0267780773503911718,
896 5.0278657187677264773,
897 5.0289517056634220893,
898 5.0300360430708339621,
899 5.031118736011032766,
900 5.0321997894735872592,
901 5.033279208430878171,
902 5.0343569978304349988,
903 5.0354331625974140252,
904 5.0365077076369173525,
905 5.0375806378261662744,
906 5.038651958026854949,
907 5.0397216730759275549,
908 5.0407897877868261816,
909 5.041856306954672462,
910 5.0429212353508097166,
911 5.0439845777257694692,
912 5.0450463388084694216,
913 5.0461065233078148395,
914 5.0471651359122242653,
915 5.0482221812838998787,
916 5.0492776640733696425,
917 5.0503315889010202966,
918 5.0513839603731200967,
919 5.0524347830748155275,
920 5.0534840615674294639,
921 5.0545318003950736596,
922 5.05557800408043434,
923 5.0566226771290772035,
924 5.0576658240231813224,
925 5.0587074492262962266,
926 5.0597475571842567277,
927 5.0607861523217154698,
928 5.0618232390409545474,
929 5.0628588217326138121,
930 5.0638929047618450596,
931 5.0649254924753428497,
932 5.0659565892059488235,
933 5.0669861992626907821,
934 5.0680143269352670998,
935 5.0690409764981279039,
936 5.0700661522092937972,
937 5.0710898582985928229,
938 5.0721120989893737629,
939 5.0731328784784439634,
940 5.074152200949661129,
941 5.0751700705663855828,
942 5.0761864914751884115,
943 5.0772014678021966105,
944 5.0782150036598769915,
945 5.0792271031403100068,
946 5.0802377703232988182,
947 5.0812470092607417982,
948 5.0822548239972018536,
949 5.0832612185565020368,
950 5.0842661969462712435,
951 5.0852697631546215362,
952 5.0862719211552098741,
953 5.0872726749042893601,
954 5.0882720283436793096,
955 5.0892699853939786792,
956 5.0902665499607424593,
957 5.091261725937645366,
958 5.0922555171965226961,
959 5.0932479275947484254,
960 5.094238960975246755,
961 5.0952286211621018452,
962 5.0962169119655813532,
963 5.0972038371799763823,
964 5.0981894005837675721,
965 5.0991736059372865242,
966 5.1001564569885795564,
967 5.1011379574663200387,
968 5.1021181110905606815,
969 5.1030969215600734401,
970 5.1040743925584699525,
971 5.1050505277576778695,
972 5.1060253308124812222,
973 5.1069988053626742541,
974 5.1079709550334140289,
975 5.1089417834336536828,
976 5.1099112941604722948,
977 5.1108794907935513052,
978 5.1118463769002309149,
979 5.1128119560305220759,
980 5.11377623172347473,
981 5.1147392075002322542,
982 5.1157008868717728234,
983 5.116661273330823434,
984 5.1176203703575344761,
985 5.1185781814189557082,
986 5.1195347099664330059,
987 5.1204899594392658813,
988 5.1214439332609789091,
989 5.1223966348441702934,
990 5.1233480675841667207,
991 5.1242982348635015555,
992 5.1252471400564001414,
993 5.1261947865156995974,
994 5.1271411775841633229,
995 5.1280863165930874459,
996 5.1290302068593502938,
997 5.1299728516864773198,
998 5.1309142543640433587,
999 5.1318544181685155081,
1000 5.1327933463647230639,
1001 5.1337310422057331749,
1002 5.1346675089254301128,
1003 5.1356027497561580475,
1004 5.1365367679072226892,
1005 5.1374695665772396325,
1006 5.1384011489590157851,
1007 5.1393315182221570581,
1008 5.1402606775344112933,
1009 5.1411886300445432951,
1010 5.1421153788897671078,
1011 5.1430409271974797392,
1012 5.1439652780826365941,
1013 5.1448884346451242422,
1014 5.1458103999755540059,
1015 5.1467311771488537531,
1016 5.1476507692358399737,
1017 5.1485691792869845429,
1018 5.1494864103439317304,
1019 5.1504024654393774085,
1020 5.1513173475900968512,
1021 5.1522310598052882824,
1022 5.1531436050768171242,
1023 5.154054986390756099,
1024 5.1549652067224593921,
1025 5.1558742690289873778,
1026 5.1567821762629959537,
1027 5.1576889313596012698,
1028 5.1585945372493107186,
1029 5.1594989968480309273,
1030 5.1604023130584497636,
1031 5.1613044887765493485,
1032 5.1622055268855175925,
1033 5.1631054302586427696,
1034 5.1640042017523919426,
1035 5.1649018442226921621,
1036 5.1657983605064501376,
1037 5.1666937534335160009,
1038 5.1675880258200974637,
1039 5.1684811804786026102,
1040 5.1693732202005282517,
1041 5.1702641477748567667,
1042 5.1711539659809906411,
1043 5.1720426775792134322,
1044 5.1729302853286380781,
1045 5.1738167919714435072,
1046 5.1747022002469185153,
1047 5.1755865128781888274,
1048 5.1764697325776172221,
1049 5.1773518620504228593,
1050 5.1782329039929742009,
1051 5.1791128610875416527,
1052 5.1799917360116936038,
1053 5.1808695314259356479,
1054 5.1817462499881834503,
1055 5.1826218943436206388,
1056 5.1834964671259511348,
1057 5.1843699709595680858,
1058 5.1852424084628720991,
1059 5.1861137822415441789,
1060 5.1869840948945533654,
1061 5.1878533490036060627,
1062 5.1887215471528209676,
1063 5.1895886919050626673,
1064 5.1904547858231815383,
1065 5.1913198314537947198,
1066 5.192183831339884037,
1067 5.1930467880138593273,
1068 5.1939087039925064815,
1069 5.1947695817944223862,
1070 5.1956294239197946538,
1071 5.1964882328643193787,
1072 5.1973460111126827954,
1073 5.1982027611443841764,
1074 5.1990584854245227575,
1075 5.1999131864112939638,
1076 5.2007668665594337654,
1077 5.2016195283058488386,
1078 5.2024711740834899132,
1079 5.203321806317999787,
1080 5.204171427421442786,
1081 5.2050200398034256466,
1082 5.2058676458613843963,
1083 5.2067142479828039114,
1084 5.2075598485492484713,
1085 5.2084044499348749468,
1086 5.2092480545023915894,
1087 5.2100906646060316518,
1088 5.2109322825951016611,
1089 5.2117729108069843491,
1090 5.2126125515733319205,
1091 5.213451207214731653,
1092 5.2142888800491773438,
1093 5.2151255723779401663,
1094 5.2159612865027060735,
1095 5.2167960247110647387,
1096 5.2176297892858354288,
1097 5.2184625824991188736,
1098 5.2192944066195696706,
1099 5.220125263904654922,
1100 5.2209551566026108915,
1101 5.2217840869550187222,
1102 5.2226120572001928366,
1103 5.2234390695608432509,
1104 5.2242651262570420911,
1105 5.2250902295006715903,
1106 5.2259143814924087224,
1107 5.2267375844326826595,
1108 5.2275598405055427875,
1109 5.2283811518936920137,
1110 5.2292015207701219026,
1111 5.2300209492999023553,
1112 5.2308394396413042671,
1113 5.2316569939448518411,
1114 5.232473614353325253,
1115 5.2332893030042768601,
1116 5.2341040620237198056,
1117 5.2349178935364628629,
1118 5.2357307996543065443,
1119 5.2365427824845500737,
1120 5.2373538441268099319,
1121 5.238163986674397421,
1122 5.2389732122109791135,
1123 5.2397815228161856993,
1124 5.2405889205596087876,
1125 5.241395407508760762,
1126 5.2422009857169236113,
1127 5.2430056572353631594,
1128 5.2438094241079955538,
1129 5.2446122883720418528,
1130 5.2454142520553670437,
1131 5.2462153171821466202,
1132 5.2470154857665374237,
1133 5.2478147598175572952,
1134 5.2486131413384571331,
1135 5.2494106323246381152,
1136 5.2502072347647210648,
1137 5.2510029506425377477,
1138 5.251797781929518294,
1139 5.2525917305996054907,
1140 5.2533847986118153983,
1141 5.2541769879225519446,
1142 5.2549683004819565113,
1143 5.2557587382321022673,
1144 5.2565483031086124299,
1145 5.2573369970446170996,
1146 5.2581248219619407536,
1147 5.2589117797758726525,
1148 5.2596978723983403015,
1149 5.2604831017338673504,
1150 5.2612674696825720844,
1151 5.2620509781352522438,
1152 5.2628336289762662759,
1153 5.2636154240880941302,
1154 5.2643963653400520641,
1155 5.265176454600734246,
1156 5.2659556937352318684,
1157 5.2667340845913157565,
1158 5.2675116290245780348,
1159 5.2682883288747248685,
1160 5.2690641859777169742,
1161 5.2698392021680051656,
1162 5.2706133792652787307,
1163 5.271386719093205997,
1164 5.2721592234625580531,
1165 5.2729308941811661171,
1166 5.2737017330491058331,
1167 5.2744717418625182148,
1168 5.2752409224120926368,
1169 5.2760092764806643117,
1170 5.2767768058460946534,
1171 5.277543512281305027,
1172 5.2783093975509522977,
1173 5.2790744634183006667,
1174 5.2798387116383533879,
1175 5.2806021439611363633,
1176 5.2813647621308099644,
1177 5.2821265678829112389,
1178 5.2828875629518661228,
1179 5.2836477490664632839,
1180 5.2844071279468405322,
1181 5.2851657013085491243,
1182 5.2859234708673588088,
1183 5.2866804383222154584,
1184 5.2874366053748973471,
1185 5.2881919737240625778,
1186 5.2889465450525703361,
1187 5.2897003210486817082,
1188 5.290453303389528017,
1189 5.2912054937457764225,
1190 5.2919568937911822815,
1191 5.2927075051818022189,
1192 5.293457329578695969,
1193 5.2942063686346854112,
1194 5.2949546239952445248,
1195 5.2957020973001824871,
1196 5.2964487901885801691,
1197 5.2971947042925213722,
1198 5.297939841235940861,
1199 5.2986842026422600327,
1200 5.2994277901252901941,
1201 5.300170605297537918,
1202 5.3009126497653964449,
1203 5.3016539251279422018,
1204 5.3023944329858592184,
1205 5.3031341749252627338,
1206 5.3038731525346189954,
1207 5.3046113673943970923,
1208 5.3053488210808819048,
1209 5.306085515167051625,
1210 5.3068214512167317665,
1211 5.3075566307942354527,
1212 5.30829105545386426,
1213 5.3090247267513417384,
1214 5.3097576462314437507,
1215 5.3104898154367718988,
1216 5.3112212359058306177,
1217 5.3119519091693705448,
1218 5.3126818367597845594,
1219 5.3134110201977717836,
1220 5.3141394610034575763,
1221 5.3148671606899267061,
1222 5.3155941207672805504,
1223 5.3163203427447527361,
1224 5.3170458281155896785,
1225 5.317770578381833424,
1226 5.3184945950302289219,
1227 5.319217879550071082,
1228 5.3199404334246933601,
1229 5.3206622581300351271,
1230 5.3213833551401314992,
1231 5.3221037259237444772,
1232 5.322823371944543247,
1233 5.3235422946629959995,
1234 5.3242604955346219953,
1235 5.3249779760101221271,
1236 5.3256947375405347955,
1237 5.3264107815598338291,
1238 5.3271261095145172604,
1239 5.3278407228337982815,
1240 5.3285546229469780144,
1241 5.3292678112797853274,
1242 5.3299802892558414413,
1243 5.3306920582895092053,
1244 5.3314031197943716478,
1245 5.3321134751741725566},
1246 {0,
1247 1.5849625007211560757,
1248 2.1699250014423121513,
1249 2.5579955284837421203,
1250 2.8517490673526251221,
1251 3.0892269252300743609,
1252 3.2890510328453164135,
1253 3.4618085511600300563,
1254 3.6141229290066028135,
1255 3.7504259155236727707,
1256 3.8738343594563144912,
1257 3.9866268417936208124,
1258 4.0905208835103650244,
1259 4.1868449994830516658,
1260 4.2766477253538210945,
1261 4.3607719993149194337,
1262 4.4399061203561185351,
1263 4.5146190672093302609,
1264 4.5853869701682743454,
1265 4.6526125097847090828,
1266 4.7166389444279692711,
1267 4.7777617636723892502,
1268 4.8362371518461326758,
1269 4.8922882172546229285,
1270 4.9461109414819546259,
1271 4.9978786087594517795,
1272 5.0477441915345888646,
1273 5.0958449174691766714,
1274 5.142302922386489783,
1275 5.1872282989971658651,
1276 5.2307202260764773527,
1277 5.272868845842570984,
1278 5.3137554441091534585,
1279 5.3534544662673164694,
1280 5.3920338893693333659,
1281 5.4295558604443643347,
1282 5.4660775512431785117,
1283 5.5016515105679610897,
1284 5.5363264478263589652,
1285 5.5701470085010997835,
1286 5.6031549010092156493,
1287 5.6353887148233496873,
1288 5.666884276405992793,
1289 5.6976751795378968168,
1290 5.7277925478387725633,
1291 5.7572654681792094777,
1292 5.786121332867177891,
1293 5.8143857277800439221,
1294 5.8420825800477009793,
1295 5.8692343821621539846,
1296 5.8958628449458272414,
1297 5.9219877053718938953,
1298 5.9476278617615392363,
1299 5.9728011606503024211,
1300 5.9975244751027325663,
1301 6.0218137748042357416,
1302 6.0456841897349296033,
1303 6.0691500682567394165,
1304 6.0922250302291720558,
1305 6.1149220156687800198,
1306 6.1372533293993125625,
1307 6.1592306820850524218,
1308 6.1808652279951372677,
1309 6.2021675998074830005,
1310 6.2231479407269647552,
1311 6.2438159341637256006,
1312 6.2641808311908375728,
1313 6.2842514759783121292,
1314 6.3040363293799472899,
1315 6.3235434908322130099,
1316 6.3427807187080356144,
1317 6.3617554492549714951,
1318 6.3804748142341640715,
1319 6.3989456573660392635,
1320 6.4171745496783119123,
1321 6.4351678038431758822,
1322 6.4529314875827097353,
1323 6.4704714362143045392,
1324 6.4877932644015752217,
1325 6.5049023771705218877,
1326 6.5218039802452860698,
1327 6.5385030897536235983,
1328 6.5550045413475777067,
1329 6.5713129987812495258,
1330 6.5874329619839846472,
1331 6.6033687746642577565,
1332 6.6191246314767182568,
1333 6.6347045847820735887,
1334 6.6501125510274698982,
1335 6.6653523167725232668,
1336 6.6804275443844689519,
1337 6.6953417774240433502,
1338 6.7100984457419530216,
1339 6.7247008703045993983,
1340 6.7391522677659985163,
1341 6.7534557548017595252,
1342 6.7676143522200646885,
1343 6.7816309888629486835,
1344 6.7955085053110009241,
1345 6.8092496574029155454,
1346 6.8228571195810641115,
1347 6.8363334880734170085,
1348 6.8496812839211305146,
1349 6.8629029558607514971,
1350 6.8760008830695991122,
1351 6.8889773777816616374,
1352 6.9018346877815446305,
1353 6.9145749987831877093,
1354 6.9272004366996293712,
1355 6.9397130698098399293,
1356 6.9521149108280493323,
1357 6.9644079188810090741,
1358 6.9765940013978378076,
1359 6.9886750159171633356,
1360 7.0006527718159281548,
1361 7.0125290319637931802,
1362 7.0243055143070174395,
1363 7.0359838933852882903,
1364 7.0475658017850904002,
1365 7.0590528315326412923,
1366 7.0704465354293475343,
1367 7.0817484283326272987,
1368 7.0929599883849858699,
1369 7.1040826581934402029,
1370 7.1151178459619242034,
1371 7.1260669265790523852,
1372 7.1369312426630076018,
1373 7.1477121055656445137,
1374 7.1584107963380390061,
1375 7.1690285666587305613,
1376 7.1795666397268513848,
1377 7.1900262111213359972,
1378 7.2004084496281084427,
1379 7.2107144980362312126,
1380 7.220945473905043599,
1381 7.231102470302680274,
1382 7.2411865565182020887,
1383 7.2511987787476739342,
1384 7.2611401607557306548,
1385 7.2710117045136426484,
1386 7.2808143908148288403,
1387 7.2905491798685311267,
1388 7.3002170118731619652,
1389 7.3098188075696226562,
1390 7.3193554687754387444,
1391 7.3288278789009924097,
1392 7.338236903447949544,
1393 7.3475833904912182248,
1394 7.3568681711443213445,
1395 7.3660920600098922506,
1396 7.3752558556148146707,
1397 7.3843603408312903369,
1398 7.393406283284258862,
1399 7.4023944357455100373,
1400 7.4113255365151546883,
1401 7.4202003097909541296,
1402 7.4290194660259221138,
1403 7.4377837022745927342,
1404 7.4464937025284365646,
1405 7.4551501380409357367,
1406 7.46375366764251158,
1407 7.472304938045723155,
1408 7.4808045841413086663,
1409 7.489253229284988933,
1410 7.4976514855758464861,
1411 7.505999954126187923,
1412 7.5142992253234304201,
1413 7.5225498790841633934,
1414 7.530752485100896898,
1415 7.5389076030812161022,
1416 7.5470157829804103145,
1417 7.5550775652270116822,
1418 7.563093480942076674,
1419 7.5710640521519403379,
1420 7.5789897919952027294,
1421 7.5868712049236606276,
1422 7.5947087868976961289,
1423 7.6025030255760297493,
1424 7.6102544005003744942,
1425 7.617963383274865663,
1426 7.6256304377407069239,
1427 7.6332560201457235749,
1428 7.640840579309796432,
1429 7.6483845567851513891,
1430 7.655888387013034091,
1431 7.6633524974757074588,
1432 7.670777308844529685,
1433 7.6781632351241988488,
1434 7.685510683793099318,
1435 7.6928200559400004011,
1436 7.7000917463971996213,
1437 7.7073261438702260762,
1438 7.7145236310640221689,
1439 7.7216845848063044855,
1440 7.7288093761672360671,
1441 7.7358983705764634564,
1442 7.7429519279370788709,
1443 7.7499704027365883263,
1444 7.7569541441553138128,
1445 7.7639034961719657346,
1446 7.7708187976664913066,
1447 7.7777003825208090859,
1448 7.784548579716417116,
1449 7.7913637134303490583,
1450 7.7981461031281220642,
1451 7.8048960636549837844,
1452 7.8116139053245801094,
1453 7.8182999340057701687,
1454 7.8249544512071169677,
1455 7.8315777541595927858,
1456 7.8381701358972941662,
1457 7.844731885336115873,
1458 7.8512632873507026687,
1459 7.8577646228496798031,
1460 7.8642361688489810234,
1461 7.8706781985435876337,
1462 7.8770909813775560337,
1463 7.883474783112487394,
1464 7.8898298658945753559,
1465 7.896156488319749478,
1466 7.9024549054977795137,
1467 7.908725369114728565,
1468 7.9149681274940411058,
1469 7.9211834256561690637,
1470 7.9273715053771969252,
1471 7.9335326052458050583,
1472 7.9396669607190686335,
1473 7.9457748041773976766,
1474 7.9518563649777309621,
1475 7.9579118695058941313,
1476 7.9639415412279186413,
1477 7.9699456007399085422,
1478 7.975924265817205594,
1479 7.9818777514623482361,
1480 7.9878062699518972423,
1481 7.9937100308825455031,
1482 7.999589241215965707,
1483 8.0054441053230434022,
1484 8.0112748250268044359,
1485 8.0170815996448503427,
1486 8.0228646260305200855,
1487 8.0286240986136814257,
1488 8.0343602094400452529,
1489 8.0400731482104017545,
1490 8.0457631023185527397,
1491 8.0514302568884446032,
1492 8.0570747948111662851,
1493 8.0626968967803556154,
1494 8.0682967413275274993,
1495 8.0738745048563789197,
1496 8.0794303616766942611,
1497 8.0849644840372061338,
1498 8.0904770421580760598,
1499 8.0959682042627640897,
1500 8.1014381366090564285,
1501 8.1068870035196916035,
1502 8.1123149674122601027,
1503 8.1177221888286599238,
1504 8.1231088264638859897,
1505 8.1284750371942582348,
1506 8.1338209761051807334,
1507 8.1391467965182808797,
1508 8.1444526500183069828,
1509 8.1497386864789014282,
1510 8.1550050540887468742,
1511 8.1602518993764316946,
1512 8.1654793672353918055,
1513 8.170687600948014051,
1514 8.1758767422096845223,
1515 8.1810469311519824487,
1516 8.1861983063656609261,
1517 8.1913310049233842847,
1518 8.1964451624015488562,
1519 8.2015409129022316392,
1520 8.2066183890745207918,
1521 8.2116777221352794669,
1522 8.2167190418899522797,
1523 8.2217424767526345875,
1524 8.2267481537658095903,
1525 8.2317361986201333934,
1526 8.2367067356733052463,
1527 8.241659887969012388,
1528 8.2465957772553721838,
1529 8.2515145240030918217,
1530 8.2564162474231999056,
1531 8.2613010654847940373,
1532 8.2661690949320902888,
1533 8.2710204513012843819,
1534 8.2758552489373915506,
1535 8.2806736010104877721,
1536 8.2854756195317040834,
1537 8.2902614153691143173,
1538 8.2950310982631840773,
1539 8.2997847768421522119,
1540 8.3045225586369397774,
1541 8.3092445500957996529,
1542 8.3139508565991242506,
1543 8.3186415824733579427,
1544 8.3233168310052789707,
1545 8.3279767044556507471,
1546 8.3326213040728056569,
1547 8.3372507301060672091,
1548 8.3418650818187281004,
1549 8.3464644575010957794,
1550 8.3510489544831312259,
1551 8.3556186691467750904,
1552 8.3601736969386344356,
1553 8.3647141323816800451,
1554 8.369240069087316769,
1555 8.3737515997669760281,
1556 8.3782488162437136481,
1557 8.3827318094636957824,
1558 8.3872006695069654114,
1559 8.3916554855987435246,
1560 8.3960963461200979197,
1561 8.4005233386186137778,
1562 8.4049365498186912049,
1563 8.4093360656322566626,
1564 8.4137219711682984524,
1565 8.4180943507434804474,
1566 8.4224532878914430967,
1567 8.4267988653728433945,
1568 8.4311311651845954884,
1569 8.4354502685695358366,
1570 8.4397562560254097974,
1571 8.4440492073140998031,
1572 8.4483292014705000383,
1573 8.4525963168114621737,
1574 8.4568506309442881275,
1575 8.4610922207755105973,
1576 8.4653211625191104872,
1577 8.4695375317049190755,
1578 8.473741403186858534,
1579 8.4779328511508715849,
1580 8.4821119491227694454,
1581 8.4862787699764776761,
1582 8.4904333859411753593,
1583 8.4945758686092514012,
1584 8.4987062889436693069,
1585 8.5028247172853355096,
1586 8.506931223360369998,
1587 8.5110258762872401661,
1588 8.5151087445838271606,
1589 8.5191798961743927521,
1590 8.5232393983963561368,
1591 8.5272873180071080412,
1592 8.5313237211906951529,
1593 8.5353486735642061234,
1594 8.5393622401844559988,
1595 8.5433644855542283381,
1596 8.5473554736285937139,
1597 8.5513352678210345914,
1598 8.5553039310096448133,
1599 8.559261525543142568,
1600 8.5632081132467057216,
1601 8.5671437554278941917,
1602 8.5710685128824284362,
1603 8.5749824458999448495,
1604 8.5788856142693692419,
1605 8.5827780772847415136,
1606 8.5866598937504541311,
1607 8.5905311219867694916,
1608 8.5943918198349464888,
1609 8.5982420446628271549,
1610 8.6020818533696523644,
1611 8.6059113023911972817,
1612 8.6097304477050542459,
1613 8.6135393448352655099,
1614 8.617338048857405397,
1615 8.6211266144033853465,
1616 8.6249050956662340894,
1617 8.6286735464046238064,
1618 8.6324320199476947124,
1619 8.6361805691995492396,
1620 8.6399192466437746418,
1621 8.6436481043479265196,
1622 8.6473671939677334564,
1623 8.6510765667518167987,
1624 8.6547762735454778493,
1625 8.6584663647954265286,
1626 8.6621468905533784977,
1627 8.6658179004808459922,
1628 8.6694794438525466518,
1629 8.6731315695608337535,
1630 8.676774326119449654,
1631 8.6804077616675030526,
1632 8.6840319239733609891,
1633 8.6876468604382779404,
1634 8.6912526181003944004,
1635 8.6948492436382860404,
1636 8.6984367833745608323,
1637 8.7020152832797155185,
1638 8.705584788975468058,
1639 8.7091453457383103398,
1640 8.7126969985032332033,
1641 8.7162397918667089414,
1642 8.719773770090577969,
1643 8.7232989771050313266,
1644 8.7268154565120994448,
1645 8.7303232515887216891,
1646 8.7338224052903772332,
1647 8.7373129602538170957,
1648 8.7407949588003539532,
1649 8.7442684429392354417,
1650 8.7477334543702767178,
1651 8.751190034487249747,
1652 8.7546382243806064594,
1653 8.7580780648406779676,
1654 8.7615095963604296969,
1655 8.7649328591383266485,
1656 8.7683478930814207075,
1657 8.7717547378079583353,
1658 8.7751534326500451044,
1659 8.7785440166567312303,
1660 8.7819265285965109058,
1661 8.7853010069600987464,
1662 8.7886674899628154378,
1663 8.7920260155476928077,
1664 8.7953766213876924951,
1665 8.7987193448883527225,
1666 8.8020542231902112462,
1667 8.8053812931717150292,
1668 8.80870059145107831,
1669 8.8120121543892508953,
1670 8.8153160180920835387,
1671 8.8186122184126460866,
1672 8.8219007909536948375,
1673 8.825181771070118586,
1674 8.8284551938710524865,
1675 8.8317210942220629732,
1676 8.8349795067477270294,
1677 8.8382304658335790748,
1678 8.8414740056284273351,
1679 8.8447101600464375082,
1680 8.8479389627694029485,
1681 8.851160447248741292,
1682 8.8543746467076420714,
1683 8.85758159414324453,
1684 8.8607813223284672688,
1685 8.8639738638142553384,
1686 8.8671592509313903463,
1687 8.8703375157926309669,
1688 8.8735086902946509468,
1689 8.8766728061198012512,
1690 8.87982989473832518,
1691 8.8829799874099784063,
1692 8.8861231151860042843,
1693 8.8892593089110185645,
1694 8.8923885992249100951,
1695 8.8955110165643418441,
1696 8.8986265911650068716,
1697 8.9017353530629570457,
1698 8.9048373320966920375,
1699 8.9079325579085857356,
1700 8.9110210599469397152,
1701 8.9141028674674096521,
1702 8.9171780095347799033,
1703 8.9202465150246617043,
1704 8.9233084126249995194,
1705 8.9263637308379379931,
1706 8.9294124979811471121,
1707 8.9324547421895719168,
1708 8.9354904914169157593,
1709 8.9385197734374433054,
1710 8.9415426158471085216,
1711 8.9445590460653381371,
1712 8.9475690913366126011,
1713 8.9505727787316828881,
1714 8.9535701351492082978,
1715 8.9565611873173409663,
1716 8.9595459617948716158,
1717 8.962524484972838934,
1718 8.9654967830760323722,
1719 8.9684628821640810514,
1720 8.9714228081330880116,
1721 8.9743765867170655071,
1722 8.9773242434890434538,
1723 8.9802658038624407766,
1724 8.9832012930926143923,
1725 8.9861307362780333818,
1726 8.9890541583614531618,
1727 8.9919715841314573623,
1728 8.994883038223447258,
1729 8.9977885451212387125,
1730 9.0006881291578313409,
1731 9.0035818145172239468,
1732 9.0064696252352121064,
1733 9.0093515852006547107,
1734 9.0122277181568346549,
1735 9.0150980477024660331,
1736 9.0179625972930210764,
1737 9.020821390241794191,
1738 9.0236744497209304683,
1739 9.0265217987628947327,
1740 9.029363460261317087,
1741 9.0321994569721244517,
1742 9.0350298115147893441,
1743 9.0378545463733157561,
1744 9.0406736838973671411,
1745 9.0434872463032078826,
1746 9.0462952556749733901,
1747 9.0490977339656488709,
1748 9.0518947029979894836,
1749 9.0546861844654991103,
1750 9.0574721999338638767,
1751 9.0602527708414495322,
1752 9.0630279185006585863,
1753 9.065797664098649733,
1754 9.0685620286986239336,
1755 9.071321033240385745,
1756 9.0740746985417786163,
1757 9.0768230452992337831,
1758 9.0795660940889533208,
1759 9.0823038653676579912,
1760 9.0850363794737685197,
1761 9.0877636566279367258,
1762 9.0904857169344612799,
1763 9.093202580381621658,
1764 9.0959142668429873169,
1765 9.0986207960781442239,
1766 9.1013221877335137577,
1767 9.1040184613434220751,
1768 9.1067096363305779505,
1769 9.1093957320072203032,
1770 9.1120767675761324966,
1771 9.1147527621308750412,
1772 9.1174237346571320728,
1773 9.1200897040333597232,
1774 9.1227506890314327137,
1775 9.1254067083178451725,
1776 9.1280577804540730114,
1777 9.1307039238975100659,
1778 9.1333451570023846955,
1779 9.1359814980204188117,
1780 9.1386129651014957886,
1781 9.1412395762946001554,
1782 9.1438613495484197813,
1783 9.1464783027120866166,
1784 9.1490904535361448069,
1785 9.1516978196729557027,
1786 9.1543004186775274178,
1787 9.1568982680085433401,
1788 9.1594913850284438439,
1789 9.1620797870046715161,
1790 9.1646634911101561016,
1791 9.1672425144240268224,
1792 9.169816873932221668,
1793 9.1723865865283151777,
1794 9.1749516690139980568,
1795 9.1775121381000293042,
1796 9.1800680104065133236,
1797 9.1826193024639000129,
1798 9.1851660307134590511,
1799 9.1877082115077879365,
1800 9.1902458611118387211,
1801 9.1927789957031240675,
1802 9.195307631372749313,
1803 9.1978317841255563536,
1804 9.2003514698811557082,
1805 9.202866704474359949,
1806 9.2053775036556562128,
1807 9.2078838830920837211,
1808 9.2103858583677364891,
1809 9.2128834449840368848,
1810 9.2153766583608636154,
1811 9.2178655138366352162,
1812 9.2203500266691449383,
1813 9.2228302120361433936,
1814 9.2253060850357151423,
1815 9.227777660687003447,
1816 9.2302449539306632431,
1817 9.2327079796293904934,
1818 9.2351667525686451654,
1819 9.2376212874569070266,
1820 9.2400715989265123085,
1821 9.2425177015338793041,
1822 9.2449596097602455558,
1823 9.2473973380122238552,
1824 9.2498309006219940898,
1825 9.2522603118481541173,
1826 9.254685585876105236,
1827 9.2571067368185335766,
1828 9.2595237787159199172,
1829 9.2619367255369269287,
1830 9.2643455911792624846,
1831 9.2667503894695819611,
1832 9.2691511341644829969,
1833 9.2715478389506813528,
1834 9.2739405174456504,
1835 9.2763291831979213242,
1836 9.2787138496877830107,
1837 9.2810945303274987594,
1838 9.2834712384618587322,
1839 9.285843987368689767,
1840 9.2882127902591804514,
1841 9.2905776602784708729,
1842 9.2929386105061357881,
1843 9.2952956539561206739,
1844 9.2976488035780473496,
1845 9.2999980722568178493,
1846 9.3023434728134599681,
1847 9.3046850180055340473,
1848 9.3070227205274900228,
1849 9.3093565930109996032,
1850 9.311686648025593982,
1851 9.3140128980786549562,
1852 9.3163353556164789637,
1853 9.3186540330239928664,
1854 9.320968942625574627,
1855 9.3232800966853961455,
1856 9.3255875074076399756,
1857 9.3278911869369842691,
1858 9.3301911473591836454,
1859 9.3324874007010816257,
1860 9.3347799589312909774,
1861 9.3370688339604512862,
1862 9.3393540376415664639,
1863 9.34163558177047193,
1864 9.3439134780861792251,
1865 9.3461877382711318063,
1866 9.3484583739517486123,
1867 9.350725396698571501,
1868 9.3529888180269242781,
1869 9.3552486493969340131,
1870 9.3575049022139946686,
1871 9.3597575878292413876,
1872 9.3620067175398471448,
1873 9.3642523025891293287,
1874 9.3664943541673526539,
1875 9.3687328834114964593,
1876 9.3709679014060256463,
1877 9.3731994191832459506,
1878 9.375427447723154728,
1879 9.3776519979543113692,
1880 9.3798730807539385523,
1881 9.3820907069480021789,
1882 9.3843048873120320508,
1883 9.3865156325710366048,
1884 9.3887229533999985165,
1885 9.3909268604240470069,
1886 9.393127364219079567,
1887 9.3953244753115736643,
1888 9.3975182041794180776,
1889 9.3997085612517317088,
1890 9.4018955569095847835,
1891 9.4040792014860254966,
1892 9.4062595052665187723,
1893 9.4084364784889498168,
1894 9.4106101313444767698,
1895 9.412780473977290896,
1896 9.4149475164849523168,
1897 9.4171112689192728595,
1898 9.4192717412855753167,
1899 9.4214289435440576881,
1900 9.4235828856091341521,
1901 9.4257335773503960752,
1902 9.4278810285925107593,
1903 9.4300252491156033585,
1904 9.4321662486556316907,
1905 9.4343040369042689974,
1906 9.4364386235097583722,
1907 9.4385700180767280187,
1908 9.440698230166502114,
1909 9.4428232692976035167,
1910 9.4449451449457448859,
1911 9.4470638665442159265,
1912 9.4491794434840983286,
1913 9.4512918851145837351,
1914 9.4534012007431940106,
1915 9.4555073996357528188,
1916 9.4576104910173146578,
1917 9.4597104840715289242,
1918 9.4618073879416328964,
1919 9.4639012117303611404,
1920 9.4659919645000414334,
1921 9.4680796552731454341,
1922 9.4701642930323188807,
1923 9.472245886720807917,
1924 9.4743244452423986957,
1925 9.4763999774618543626,
1926 9.4784724922051921681,
1927 9.4805419982597332051,
1928 9.4826085043742764924,
1929 9.4846720192598077404,
1930 9.4867325515890765786,
1931 9.4887901099971383445,
1932 9.4908447030817804091,
1933 9.4928963394032717105,
1934 9.4949450274847819742,
1935 9.4969907758127760644,
1936 9.4990335928371791852,
1937 9.5010734869710180561,
1938 9.503110466591646599,
1939 9.5051445400400176311,
1940 9.507175715621507095,
1941 9.5092040016057683971,
1942 9.5112294062271054429,
1943 9.5132519376844975056,
1944 9.5152716041421108173,
1945 9.5172884137291759998,
1946 9.5193023745405671576,
1947 9.5213134946362618649,
1948 9.5233217820424851396,
1949 9.5253272447512795651,
1950 9.5273298907209031938,
1951 9.5293297278758579694,
1952 9.5313267641073178282,
1953 9.5333210072731695561,
1954 9.5353124651983272031,
1955 9.537301145674614844,
1956 9.5392870564612177731,
1957 9.5412702052850129064,
1958 9.5432505998402863412,
1959 9.5452282477892520518,
1960 9.5472031567622206438,
1961 9.5491753343575780377,
1962 9.5511447881421851491,
1963 9.5531115256514489431,
1964 9.5550755543895036226,
1965 9.5570368818292728008,
1966 9.5589955154129011561,
1967 9.560951462551601665,
1968 9.5629047306263057493,
1969 9.5648553269872600424,
1970 9.566803258954459821,
1971 9.5687485338179740779,
1972 9.5706911588378549283,
1973 9.5726311412443987336,
1974 9.5745684882383184089,
1975 9.5765032069908322399,
1976 9.5784353046440138257,
1977 9.5803647883107014849,
1978 9.5822916650748783951,
1979 9.5842159419916015395,
1980 9.5861376260874422428,
1981 9.5880567243603245231,
1982 9.5899732437800206952,
1983 9.5918871912879453134,
1984 9.593798573797551299,
1985 9.5957073981944507324,
1986 9.5976136713364592623,
1987 9.5995174000538874282,
1988 9.6014185911495335546,
1989 9.6033172513990301411,
1990 9.605213387550714188,
1991 9.6071070063259647043,
1992 9.6089981144195437679,
1993 9.6108867184991506605,
1994 9.6127728252060666847,
1995 9.6146564411552315477,
1996 9.6165375729352522427,
1997 9.6184162271085789087,
1998 9.6202924102116149641,
1999 9.6221661287548982955,
2000 9.6240373892232859987,
2001 9.6259061980760947108,
2002 9.6277725617468910002,
2003 9.6296364866444132957,
2004 9.6314979791517441043,
2005 9.6333570456269885796,
2006 9.6352136924036173582,
2007 9.637067925789827072,
2008 9.638919752069607938,
2009 9.6407691775021095992,
2010 9.6426162083221047538,
2011 9.6444608507401774489,
2012 9.6463031109427408438,
2013 9.6481429950920354344,
2014 9.6499805093265145217,
2015 9.6518156597606754588,
2016 9.6536484524856920331,
2017 9.6554788935688211637,
2018 9.6573069890540246263,
2019 9.6591327449620880685,
2020 9.660956167290423835,
2021 9.6627772620135541359,
2022 9.6645960350828108432,
2023 9.6664124924269376748,
2024 9.6682266399520031541,
2025 9.6700384835411750117,
2026 9.6718480290554449397,
2027 9.6736552823331614093,
2028 9.6754602491907100159,
2029 9.6772629354221866294,
2030 9.6790633467995643713,
2031 9.6808614890730950719,
2032 9.6826573679711405163,
2033 9.6844509892004175811,
2034 9.6862423584457957304,
2035 9.6880314813711176924,
2036 9.6898183636184977985,
2037 9.6916030108089490369,
2038 9.6933854285422000885,
2039 9.695165622397226457,
2040 9.6969435979316163099,
2041 9.6987193606824604331,
2042 9.7004929161661550552,
2043 9.7022642698780909853,
2044 9.7040334272935258042,
2045 9.7058003938670083244,
2046 9.7075651750330749223,
2047 9.709327776205789462,
2048 9.7110882027790612625,
2049 9.7128464601269044465,
2050 9.714602553603462809,
2051 9.7163564885428765905,
2052 9.71810827025978341,
2053 9.7198579040488848335,
2054 9.7216053951856586934,
2055 9.7233507489260198042,
2056 9.7250939705064674001,
2057 9.7268350651442680999,
2058 9.7285740380376939385,
2059 9.7303108943658269681,
2060 9.732045639288898542,
2061 9.7337782779479429252,
2062 9.735508815465712118,
2063 9.7372372569457716907,
2064 9.7389636074734795557,
2065 9.7406878721153962175,
2066 9.7424100559198993921,
2067 9.7441301639169832782,
2068 9.7458482011181271076,
2069 9.7475641725171211505,
2070 9.749278083089297553,
2071 9.7509899377922018004,
2072 9.7526997415654061996,
2073 9.7544074993308349519,
2074 9.7561132159924639495,
2075 9.7578168964367151261,
2076 9.7595185455326891599,
2077 9.761218168131639672,
2078 9.7629157690676375836,
2079 9.7646113531575178257,
2080 9.7663049252006874923,
2081 9.7679964899796782873,
2082 9.7696860522598232279,
2083 9.77137361678941474,
2084 9.7730591882999711117,
2085 9.7747427715062382703,
2086 9.7764243711061045161,
2087 9.7781039917808012518,
2088 9.7797816381951268028,
2089 9.7814573149972368071,
2090 9.7831310268189692891,
2091 9.7848027782757078796,
2092 9.7864725739668010362,
2093 9.7881404184750540054,
2094 9.7898063163675157483,
2095 9.7914702721949478104,
2096 9.7931322904922861738,
2097 9.7947923757784653986,
2098 9.7964505325568023153,
2099 9.7981067653147295715,
2100 9.799761078523964386,
2101 9.8014134766406790789,
2102 9.8030639641057177869,
2103 9.8047125453441488219,
2104 9.8063592247658739609,
2105 9.808004006765477456,
2106 9.8096468957221532037,
2107 9.8112878960002429807,
2108 9.8129270119486307067,
2109 9.8145642479014316706,
2110 9.8161996081777154188,
2111 9.8178330970816496404,
2112 9.8194647189026085243,
2113 9.8210944779152047346,
2114 9.8227223783793551348,
2115 9.8243484245404442134,
2116 9.8259726206291411188,
2117 9.8275949708618810519,
2118 9.8292154794404424933,
2119 9.8308341505523735293,
2120 9.8324509883709101388,
2121 9.8340659970551094204,
2122 9.8356791807497643276,
2123 9.8372905435857056489,
2124 9.8389000896796154905,
2125 9.840507823134412746,
2126 9.842113748038819665,
2127 9.8437178684679249585,
2128 9.8453201884830239266,
2129 9.8469207121317090525,
2130 9.8485194434478149361,
2131 9.850116386451720274,
2132 9.8517115451501400258,
2133 9.853304923536390092,
2134 9.8548965255904139582,
2135 9.8564863552787667089,
2136 9.8580744165547073976,
2137 9.859660713358344708,
2138 9.8612452496163776061,
2139 9.8628280292427703557,
2140 9.8644090561380899373,
2141 9.8659883341900709297,
2142 9.8675658672735178101,
2143 9.8691416592502925198,
2144 9.8707157139694334802,
2145 9.8722880352673758608,
2146 9.873858626967640717,
2147 9.8754274928810925616,
2148 9.8769946368061170006,
2149 9.8785600625285159282,
2150 9.8801237738216762807,
2151 9.8816857744464314806,
2152 9.883246068151228414,
2153 9.8848046586723690154,
2154 9.8863615497335946003,
2155 9.8879167450466596279,
2156 9.8894702483112570945,
2157 9.8910220632145193775,
2158 9.8925721934320840489,
2159 9.894120642627184381,
2160 9.8956674144512000169,
2161 9.8972125125437848681,
2162 9.8987559405323946038,
2163 9.9002977020330895641,
2164 9.9018378006498988242,
2165 9.9033762399752784944,
2166 9.9049130235899642827,
2167 9.9064481550631775519,
2168 9.9079816379526075565,
2169 9.9095134758043652567,
2170 9.9110436721531538495,
2171 9.9125722305223096242,
2172 9.9140991544237220268,
2173 9.9156244473581569565,
2174 9.9171481128150240636,
2175 9.91867015427256149,
2176 9.9201905751978429748,
2177 9.9217093790467156822,
2178 9.9232265692641501431,
2179 9.9247421492840981472,
2180 9.9262561225294287937,
2181 9.9277684924121238907,
2182 9.9292792623335266455,
2183 9.9307884356836986228,
2184 9.9322960158422564092,
2185 9.9338020061781726611,
2186 9.9353064100493160282,
2187 9.936809230803342885,
2188 9.9383104717770827108,
2189 9.9398101362967672401,
2190 9.9413082276784496827,
2191 9.9428047492272302321,
2192 9.9442997042381904294,
2193 9.9457930959959259809,
2194 9.9472849277746036023,
2195 9.9487752028380889158,
2196 9.9502639244401756002,
2197 9.951751095824379334,
2198 9.9532367202239377946,
2199 9.9547208008621499431,
2200 9.9562033409520598326,
2201 9.9576843436968260903,
2202 9.9591638122895727037,
2203 9.9606417499133783622,
2204 9.9621181597416814668,
2205 9.9635930449376655105,
2206 9.9650664086549767262,
2207 9.9665382540373581577,
2208 9.9680085842188272949,
2209 9.9694774023237648919,
2210 9.9709447114667177914,
2211 9.972410514752809263,
2212 9.9738748152773819555,
2213 9.9753376161264686317,
2214 9.9767989203763605133,
2215 9.9782587310939732106,
2216 9.9797170513368271827,
2217 9.981173884152926945,
2218 9.982629232581176737,
2219 9.9840830996508902473,
2220 9.9855354883822684542,
2221 9.9869864017861758043,
2222 9.9884358428643462702,
2223 9.9898838146094934842,
2224 9.9913303200047582919,
2225 9.9927753620247212751,
2226 9.994218943634486152,
2227 9.9956610677904205176,
2228 9.9971017374398591926,
2229 9.9985409555210758015,
2230 9.9999787249635438968,
2231 10.001415048687835707,
2232 10.002849929605661217,
2233 10.004283370619978299,
2234 10.005715374624967851,
2235 10.007145944506056878,
2236 10.008575083140170747,
2237 10.010002793395079479,
2238 10.011429078130582582,
2239 10.012853940197395275,
2240 10.014277382437839492,
2241 10.015699407685753286,
2242 10.017120018766567213,
2243 10.018539218497068077,
2244 10.019957009685757754,
2245 10.021373395132535222},
2246 {0,
2247 2,
2248 2.8073549220576041741,
2249 3.3536370631535943332,
2250 3.7714895106311274731,
2251 4.1115655159417610065,
2252 4.3990864632756769836,
2253 4.6485587228878513244,
2254 4.8691354356993361563,
2255 5.0669818295080517601,
2256 5.2464571207588184265,
2257 5.4107623502682091754,
2258 5.5623190195081955167,
2259 5.703006746365687718,
2260 5.8343126340271016517,
2261 5.9574352031222339576,
2262 6.0733556433332545055,
2263 6.1828862241989339665,
2264 6.2867078798528943651,
2265 6.3853976809854211538,
2266 6.4794477668063832354,
2267 6.5692827294485240941,
2268 6.6552714096263994037,
2269 6.7377346850569788117,
2270 6.8169550088563353185,
2271 6.8931830556583326697,
2272 6.9666387250830359434,
2273 7.0375214021316967461,
2274 7.1060071323467326465,
2275 7.1722554489534200428,
2276 7.2364098410621791047,
2277 7.2986017269949030606,
2278 7.3589482121966680594,
2279 7.4175576159293372669,
2280 7.4745288259800064523,
2281 7.5299519580007014952,
2282 7.5839102229344481643,
2283 7.636479902408856546,
2284 7.6877324099684969383,
2285 7.7377320545346357505,
2286 7.7865399808308852769,
2287 7.8342124006415465587,
2288 7.8808013171713264811,
2289 7.9263562226457615623,
2290 7.9709222592914628081,
2291 8.014541602938578535,
2292 8.0572545500522494422,
2293 8.0990984438340216656,
2294 8.1401078875996137896,
2295 8.1803154063567138365,
2296 8.2197544148135897046,
2297 8.2584527204338957773,
2298 8.296437980622632935,
2299 8.3337363124671615111,
2300 8.3703724126775718162,
2301 8.4063696607852769205,
2302 8.4417502120744956073,
2303 8.4765350821312299701,
2304 8.5107442240840303072,
2305 8.5443965993439707773,
2306 8.5775102425159595043,
2307 8.6101023210584628487,
2308 8.6421891902008951547,
2309 8.6737864435672200614,
2310 8.704908959903193022,
2311 8.7355709462653319264,
2312 8.7657859779877131956,
2313 8.7955670357126791714,
2314 8.824926539740017617,
2315 8.8538763819264332255,
2316 8.8824279553406579879,
2317 8.9105921818632936038,
2318 8.9383795378983084134,
2319 8.9658000783512310505,
2320 8.9928634590117084713,
2321 9.019578957466292124,
2322 9.0459554926564464949,
2323 9.0720016431856116412,
2324 9.0977256644704276312,
2325 9.123135504822986519,
2326 9.1482388205421223404,
2327 9.1730429900877190619,
2328 9.1975551274032909532,
2329 9.2217820944479775847,
2330 9.2457305129933153864,
2331 9.2694067757362059723,
2332 9.29281705677560943,
2333 9.3159673214952327669,
2334 9.3388633358935919659,
2335 9.3615106753968824194,
2336 9.3839147331894565696,
2337 9.406080728093311194,
2338 9.4280137120249349891,
2339 9.449718577057726776,
2340 9.4712000621136365197,
2341 9.4924627593071306819,
2342 9.5135111199645425728,
2343 9.5343494603360063877,
2344 9.5549819670216145084,
2345 9.5754127021261776775,
2346 9.5956456081599235119,
2347 9.6156845127008168106,
2348 9.6355331328306839112,
2349 9.6551950793585383792,
2350 9.674673860845226514,
2351 9.6939728874374058165,
2352 9.7130954745238167192,
2353 9.7320448462231041731,
2354 9.7508241387121277199,
2355 9.7694364034039420375,
2356 9.7878846099825516092,
2357 9.8061716493038666442,
2358 9.8243003361679885899,
2359 9.8422734119705577172,
2360 9.8600935472398969495,
2361 9.877763344064923956,
2362 9.8952853384199102038,
2363 9.9126620023905385182,
2364 9.9298957463077943686,
2365 9.9469889207933022135,
2366 9.963943818719975809,
2367 9.9807626770924713355,
2368 9.9974476788531525528,
2369 10.014000954613710093,
2370 10.030424584318293313,
2371 10.046720598842311389,
2372 10.062890981527374379,
2373 10.078937669655852361,
2374 10.094862555870758314,
2375 10.110667489539036268,
2376 10.126354278064880532,
2377 10.141924688152043288,
2378 10.157380447020491587,
2379 10.172723243575690688,
2380 10.187954729538160947,
2381 10.203076520527410764,
2382 10.218090197110742068,
2383 10.2329973058114021,
2384 10.247799360081446096,
2385 10.262497841240575625,
2386 10.277094199381865636,
2387 10.291589854243699875,
2388 10.305986196054695014,
2389 10.320284586347755251,
2390 10.334486358744756629,
2391 10.348592819717516988,
2392 10.362605249320205658,
2393 10.376524901900120668,
2394 10.390353006780426171,
2395 10.404090768925623678,
2396 10.417739369580614195,
2397 10.431299966890730246,
2398 10.444773696502085869,
2399 10.458161672141519816,
2400 10.471464986178167678,
2401 10.484684710167483601,
2402 10.497821895378095292,
2403 10.510877573301435461,
2404 10.523852756145510412,
2405 10.536748437314278348,
2406 10.549565591871418846,
2407 10.562305176989406519,
2408 10.574968132386613817,
2409 10.587555380748748135,
2410 10.60006782813989723,
2411 10.612506364399679981,
2412 10.624871863529332217,
2413 10.637165184065759505,
2414 10.649387169446338675,
2415 10.661538648359456971,
2416 10.673620435089258507,
2417 10.685633329846911721,
2418 10.697578119094702132,
2419 10.709455575858433107,
2420 10.721266460033740842,
2421 10.733011518681895069,
2422 10.744691486318380669,
2423 10.756307085191693318,
2424 10.76785902555625718,
2425 10.77934800593665976,
2426 10.790774713386179329,
2427 10.802139823735060986,
2428 10.813444001837114072,
2429 10.82468790180285545,
2430 10.8358721672335232,
2431 10.846997431443936577,
2432 10.858064317680760524,
2433 10.869073439335851461,
2434 10.880025400153099824,
2435 10.890920794430101637,
2436 10.901760207214730158,
2437 10.912544214496701755,
2438 10.923273383392475111,
2439 10.933948272329693907,
2440 10.944569431221378153,
2441 10.955137401639886363,
2442 10.965652716985310633,
2443 10.976115902648308165,
2444 10.986527476171035644,
2445 10.996887947402781194,
2446 11.00719781865054081,
2447 11.017457584830406603,
2448 11.027667733608263134,
2449 11.037828745544826958,
2450 11.047941094229994263,
2451 11.058005246419710943,
2452 11.06802166216550809,
2453 11.077990794943804786,
2454 11.087913091779419972,
2455 11.097788993368448374,
2456 11.107618934197896365,
2457 11.117403342660917787,
2458 11.127142641170605586,
2459 11.136837246271941382,
2460 11.146487568749375185,
2461 11.156094013733063974,
2462 11.165656980801944798,
2463 11.175176864084914286,
2464 11.184654052361224785,
2465 11.194088929154311529,
2466 11.203481872828279009,
2467 11.212833256679813232,
2468 11.22214344902846328,
2469 11.231412813303665033,
2470 11.240641708133454202,
2471 11.24983048742707048,
2472 11.258979500456714362,
2473 11.268089091941565272,
2474 11.277159602123761672,
2475 11.286191366846269446,
2476 11.295184717630176507,
2477 11.304139981746262222,
2478 11.31305748228920649,
2479 11.321937538248453947,
2480 11.33078046457609922,
2481 11.339586572256690644,
2482 11.348356168371918073,
2483 11.357089556167919042,
2484 11.36578703511664834,
2485 11.374448900980526744,
2486 11.383075445871300602,
2487 11.39166695831309184,
2488 11.400223723296788236,
2489 11.408746022341706094,
2490 11.417234133550113739,
2491 11.425688331660353469,
2492 11.434108888105869895,
2493 11.442496071063368746,
2494 11.45085014550727287,
2495 11.45917137325921864,
2496 11.46746001304017426,
2497 11.475716320516829327,
2498 11.483940548350432209,
2499 11.492132946244762337,
2500 11.500293760990789593,
2501 11.508423236512726362,
2502 11.516521613911566035,
2503 11.52458913150951858,
2504 11.532626024892328687,
2505 11.540632526950561854,
2506 11.548608867921116072,
2507 11.55655527542666583,
2508 11.564471974517864794,
2509 11.572359187706947381,
2510 11.580217135011519503,
2511 11.588046033987483341,
2512 11.595846099768325033,
2513 11.60361754509874288,
2514 11.611360580372707574,
2515 11.619075413665630236,
2516 11.626762250768615914,
2517 11.634421295224266046,
2518 11.642052748355579794,
2519 11.649656809300974913,
2520 11.657233675045707955,
2521 11.664783540450647692,
2522 11.672306598285697277,
2523 11.67980303925796548,
2524 11.687273052039778065,
2525 11.694716823301339659,
2526 11.702134537735622288,
2527 11.709526378087792509,
2528 11.716892525182384333,
2529 11.724233157950031625,
2530 11.731548453452740333,
2531 11.738838586912624606,
2532 11.74610373173514688,
2533 11.753344059533525012,
2534 11.76055974015594785,
2535 11.767750941708468915,
2536 11.7749178305778468,
2537 11.782060571456211662,
2538 11.78917932736304941,
2539 11.796274259669399243,
2540 11.803345528118841301,
2541 11.810393290847994052,
2542 11.817417704411964152,
2543 11.824418923801028214,
2544 11.831397102464613624,
2545 11.838352392329960949,
2546 11.845284943822530721,
2547 11.85219490588682234,
2548 11.859082426003874744,
2549 11.865947650212342879,
2550 11.872790723126504631,
2551 11.879611787952603308,
2552 11.886410986512389698,
2553 11.893188459255847889,
2554 11.899944345281237901,
2555 11.906678782350832435,
2556 11.913391906909305717,
2557 11.920083854102388798,
2558 11.926754757788433636,
2559 11.933404750558930019,
2560 11.940033963752854973,
2561 11.94664252747291755,
2562 11.953230570598858407,
2563 11.95979822080824917,
2564 11.966345604583398909,
2565 11.972872847234746985,
2566 11.979380072908185184,
2567 11.985867404604579889,
2568 11.992334964189772961,
2569 11.998782872412620648,
2570 12.005211248915145461,
2571 12.011620212247880346,
2572 12.018009879882104229,
2573 12.024380368224580451,
2574 12.030731792627817001,
2575 12.037064267405851226,
2576 12.04337790584380663,
2577 12.049672820211730695,
2578 12.05594912177746636,
2579 12.062206920817002853,
2580 12.068446326625002385,
2581 12.074667447532235087,
2582 12.080870390909414169,
2583 12.087055263183344778,
2584 12.093222169846605141,
2585 12.099371215468432084,
2586 12.105502503705665163,
2587 12.111616137313081509,
2588 12.117712218154043313,
2589 12.123790847211116883,
2590 12.129852124595206675,
2591 12.135896149556476331,
2592 12.141923020494703067,
2593 12.147932834966560733,
2594 12.153925689698381163,
2595 12.159901680593627304,
2596 12.165860902742954508,
2597 12.171803450432264526,
2598 12.177729417153157598,
2599 12.183638895611851538,
2600 12.189531977736416835,
2601 12.195408754686605235,
2602 12.201269316862454417,
2603 12.207113753913702681,
2604 12.212942154744636625,
2605 12.218754607526607359,
2606 12.224551199702874626,
2607 12.230332017998598815,
2608 12.236097148426086534,
2609 12.241846676297585716,
2610 12.247580686227967917,
2611 12.25329926214290488,
2612 12.259002487289937022,
2613 12.264690444241271194,
2614 12.27036321490379045,
2615 12.27602088052585394,
2616 12.281663521704766495,
2617 12.287291218391240832,
2618 12.292904049898977448,
2619 12.298502094910508831,
2620 12.304085431483887447,
2621 12.309654137059869328,
2622 12.315208288465633757,
2623 12.32074796192694599,
2624 12.326273233067174928,
2625 12.331784176921180674,
2626 12.337280867932953754,
2627 12.342763379971831483,
2628 12.348231786328973669,
2629 12.353686159729406313,
2630 12.359126572335103589,
2631 12.36455309575179129,
2632 12.369965801035290198,
2633 12.375364758694480827,
2634 12.380750038700686133,
2635 12.386121710490597181,
2636 12.391479842970930747,
2637 12.396824504527426569,
2638 12.402155763026529556,
2639 12.407473685821198472,
2640 12.412778339759659829,
2641 12.418069791183780737,
2642 12.423348105941609987,
2643 12.428613349386717246,
2644 12.43386558638595929,
2645 12.439104881321272345,
2646 12.444331298100673067,
2647 12.449544900156126914,
2648 12.454745750450241459,
2649 12.45993391148516416,
2650 12.465109445300381452,
2651 12.470272413482664575,
2652 12.47542287716634668,
2653 12.480560897041524271,
2654 12.485686533355790928,
2655 12.490799845918079569,
2656 12.495900894106803491,
2657 12.500989736870524283,
2658 12.50606643273041918,
2659 12.511131039789567865,
2660 12.516183615733602608,
2661 12.521224217836033787,
2662 12.526252902958219693,
2663 12.531269727560710336,
2664 12.536274747701293464,
2665 12.541268019040277437,
2666 12.546249596842478979,
2667 12.55121953598744966,
2668 12.556177890963562405,
2669 12.561124715879925517,
2670 12.56606006446608248,
2671 12.570983990074571679,
2672 12.575896545686061856,
2673 12.580797783914913879,
2674 12.585687757009413446,
2675 12.590566516853797907,
2676 12.595434114976942652,
2677 12.600290602551172725,
2678 12.605136030397488867,
2679 12.60997044898745223,
2680 12.614793908448151072,
2681 12.619606458563602303,
2682 12.62440814877846762,
2683 12.629199028202942046,
2684 12.633979145612149964,
2685 12.638748549452740733,
2686 12.643507287842705722,
2687 12.648255408576973835,
2688 12.652992959129829131,
2689 12.657719986655116884,
2690 12.662436537993787766,
2691 12.667142659672373739,
2692 12.67183839790736144,
2693 12.676523798608469562,
2694 12.681198907382585261,
2695 12.685863769531220413,
2696 12.690518430060949484,
2697 12.695162933678602712,
2698 12.699797324799542153,
2699 12.704421647545103724,
2700 12.709035945750736474,
2701 12.713640262964121419,
2702 12.718234642449314009,
2703 12.722819127189644917,
2704 12.727393759888265379,
2705 12.731958582974320038,
2706 12.736513638600756693,
2707 12.741058968649468852,
2708 12.745594614732066674,
2709 12.750120618196341127,
2710 12.75463702012170053,
2711 12.75914386132594025,
2712 12.763641182368505866,
2713 12.768129023548373979,
2714 12.772607424908949625,
2715 12.777076426242249596,
2716 12.781536067086181063,
2717 12.785986386729678799,
2718 12.790427424216378682,
2719 12.794859218341448681,
2720 12.799281807657878929,
2721 12.80369523047976088,
2722 12.808099524879954956,
2723 12.812494728692886525,
2724 12.816880879520020642,
2725 12.821258014729650654,
2726 12.825626171456725899,
2727 12.829985386608969478,
2728 12.834335696864167531,
2729 12.838677138677613954,
2730 12.843009748276069004,
2731 12.847333561669227464,
2732 12.851648614644567203,
2733 12.855954942770035032,
2734 12.86025258139869365,
2735 12.864541565667426681,
2736 12.868821930501345818,
2737 12.873093710613842333,
2738 12.87735694050643076,
2739 12.881611654475847217,
2740 12.885857886611180589,
2741 12.890095670795693295,
2742 12.894325040711107633,
2743 12.898546029837236304,
2744 12.90275867145457056,
2745 12.906962998643509266,
2746 12.911159044289716391,
2747 12.915346841084431873,
2748 12.919526421523887194,
2749 12.923697817910088759,
2750 12.927861062359458089,
2751 12.93201618679557896,
2752 12.936163222956782448,
2753 12.940302202393013431,
2754 12.944433156472694435,
2755 12.948556116376956027,
2756 12.95267111310943875,
2757 12.956778177490662074,
2758 12.96087734016371229,
2759 12.964968631592270754,
2760 12.969052082066681919,
2761 12.973127721698544335,
2762 12.977195580430983313,
2763 12.981255688030060469,
2764 12.985308074093628861,
2765 12.989352768049899467,
2766 12.993389799157773368,
2767 12.997419196511796002,
2768 13.00144098903680856,
2769 13.005455205494589777,
2770 13.009461874487961097,
2771 13.013461024451787651,
2772 13.01745268366328645,
2773 13.021436880240200296,
2774 13.02541364213947972,
2775 13.029382997165184221,
2776 13.03334497296239114,
2777 13.03729959702083363,
2778 13.041246896678583056,
2779 13.045186899121286928,
2780 13.04911963138158626,
2781 13.053045120343410801,
2782 13.056963392740687624,
2783 13.060874475158223973,
2784 13.064778394037061204,
2785 13.068675175669824284,
2786 13.07256484620359771,
2787 13.076447431646739616,
2788 13.080322957858628641,
2789 13.084191450560513914,
2790 13.08805293533270131,
2791 13.091907437615986964,
2792 13.095754982711513392,
2793 13.09959559578430266,
2794 13.103429301860911593,
2795 13.107256125835576199,
2796 13.111076092464362119,
2797 13.114889226372408615,
2798 13.118695552051653053,
2799 13.122495093859603443,
2800 13.126287876027134871,
2801 13.130073922651970264,
2802 13.133853257706881834,
2803 13.137625905032018991,
2804 13.141391888343568084,
2805 13.145151231231277933,
2806 13.148903957157155986,
2807 13.152650089461509708,
2808 13.156389651362033533,
2809 13.160122665949137044,
2810 13.163849156196825163,
2811 13.167569144954404337,
2812 13.171282654952305435,
2813 13.174989708803149568,
2814 13.178690328999275394,
2815 13.182384537916657763,
2816 13.186072357813859668,
2817 13.189753810832621994,
2818 13.193428919001977562,
2819 13.197097704233886617,
2820 13.200760188329571321,
2821 13.204416392974891892,
2822 13.20806633974491362,
2823 13.211710050105512693,
2824 13.215347545408052454,
2825 13.218978846896556334,
2826 13.22260397570619439,
2827 13.226222952863775362,
2828 13.229835799288590437,
2829 13.233442535791176908,
2830 13.237043183081210529,
2831 13.240637761757254154,
2832 13.244226292317046401,
2833 13.247808795152753447,
2834 13.251385290554667407,
2835 13.254955798708774495,
2836 13.258520339702053903,
2837 13.262078933518273161,
2838 13.265631600040839189,
2839 13.269178359054219385,
2840 13.272719230242602251,
2841 13.276254233192984699,
2842 13.279783387396898675,
2843 13.283306712241415681,
2844 13.286824227026306389,
2845 13.290335950949151211,
2846 13.293841903113740699,
2847 13.297342102530555152,
2848 13.300836568116132241,
2849 13.304325318692056257,
2850 13.307808372989974544,
2851 13.311285749644119036,
2852 13.3147574672044815,
2853 13.318223544124418112,
2854 13.321683998769101365,
2855 13.32513884941529092,
2856 13.32858811424843104,
2857 13.332031811365043339,
2858 13.335469958777091293,
2859 13.33890257440550009,
2860 13.342329676086286838,
2861 13.345751281569015134,
2862 13.349167408516496636,
2863 13.352578074507405859,
2864 13.355983297036111423,
2865 13.359383093511311813,
2866 13.362777481260028623,
2867 13.366166477523949041,
2868 13.369550099465973503,
2869 13.372928364164186732,
2870 13.37630128861458978,
2871 13.379668889734126935,
2872 13.383031184360207888,
2873 13.386388189246655855,
2874 13.389739921073138262,
2875 13.393086396434743079,
2876 13.396427631850842843,
2877 13.399763643766091192,
2878 13.403094448541603256,
2879 13.406420062466038345,
2880 13.409740501751686637,
2881 13.413055782530316051,
2882 13.416365920863402295,
2883 13.419670932734781843,
2884 13.422970834054583023,
2885 13.426265640657085498,
2886 13.429555368307228846,
2887 13.432840032691371945,
2888 13.436119649428079015,
2889 13.439394234059173883,
2890 13.44266380205828959,
2891 13.445928368826187693,
2892 13.449187949693879318,
2893 13.45244255991741511,
2894 13.455692214689392472,
2895 13.458936929129038163,
2896 13.462176718283481947,
2897 13.465411597140072075,
2898 13.468641580606668384,
2899 13.47186668353329253,
2900 13.475086920694291592,
2901 13.478302306802110166,
2902 13.48151285650034481,
2903 13.484718584366349958,
2904 13.487919504913703506,
2905 13.491115632585090722,
2906 13.494306981764220055,
2907 13.497493566767404971,
2908 13.500675401844988599,
2909 13.503852501186502266,
2910 13.507024878915773414,
2911 13.510192549093989811,
2912 13.513355525719184413,
2913 13.5165138227280206,
2914 13.519667453995577233,
2915 13.522816433330204333,
2916 13.525960774487495897,
2917 13.529100491153101871,
2918 13.532235596958095414,
2919 13.535366105472615317,
2920 13.538492030203547856,
2921 13.541613384601010495,
2922 13.544730182054616208,
2923 13.54784243589776338,
2924 13.550950159401967454,
2925 13.554053365781573603,
2926 13.557152068194858074,
2927 13.560246279740981734,
2928 13.563336013459098339,
2929 13.566421282338698262,
2930 13.569502099306779641,
2931 13.572578477234690908,
2932 13.575650428942710235,
2933 13.578717967190852889,
2934 13.581781104683333439,
2935 13.584839854072622956,
2936 13.587894227958557281,
2937 13.590944238877442629,
2938 13.593989899322760806,
2939 13.597031221726449957,
2940 13.600068218471934145,
2941 13.603100901887216878,
2942 13.606129284248572375,
2943 13.609153377777310823,
2944 13.612173194646384644,
2945 13.615188746974233425,
2946 13.618200046832647843,
2947 13.621207106232205319,
2948 13.624209937141896987,
2949 13.627208551476659437,
2950 13.630202961101861803,
2951 13.633193177830367659,
2952 13.636179213427501722,
2953 13.639161079608454585,
2954 13.642138788041277664,
2955 13.645112350340662388,
2956 13.648081778073958503,
2957 13.651047082764348417,
2958 13.654008275881622581,
2959 13.656965368849332876,
2960 13.65991837304498091,
2961 13.662867299796056741,
2962 13.665812160384957608,
2963 13.668752966047126307,
2964 13.67168972797138693,
2965 13.674622457297903821,
2966 13.677551165123905008,
2967 13.680475862497145201,
2968 13.683396560426253075,
2969 13.686313269868923825,
2970 13.68922600173787707,
2971 13.69213476690431186,
2972 13.695039576192915121,
2973 13.697940440384053673,
2974 13.700837370214280497,
2975 13.703730376375016675,
2976 13.706619469516800436,
2977 13.70950466024423342,
2978 13.712385959120915402,
2979 13.715263376664893258,
2980 13.718136923354830259,
2981 13.721006609623605854,
2982 13.723872445865787029,
2983 13.72673444243013563,
2984 13.729592609625129285,
2985 13.732446957718616787,
2986 13.735297496935510608,
2987 13.738144237461392905,
2988 13.740987189439143989,
2989 13.743826362973667443,
2990 13.746661768126049452,
2991 13.749493414917923317,
2992 13.752321313335878372,
2993 13.755145473319212002,
2994 13.757965904770790289,
2995 13.76078261755586496,
2996 13.763595621499426613,
2997 13.766404926387352248,
2998 13.769210541965978933,
2999 13.772012477943038178,
3000 13.774810743989194251,
3001 13.777605349738051288,
3002 13.780396304779271688,
3003 13.783183618675410642,
3004 13.78596730094170475,
3005 13.788747361057883012,
3006 13.791523808472934576,
3007 13.794296652588764474,
3008 13.797065902780534685,
3009 13.799831568380581004,
3010 13.802593658685578859,
3011 13.805352182958312568,
3012 13.80810715042531811,
3013 13.81085857027452235,
3014 13.813606451660854546,
3015 13.816350803700302663,
3016 13.819091635480996061,
3017 13.821828956047957249,
3018 13.824562774414131283,
3019 13.827293099560392875,
3020 13.83001994042906091,
3021 13.832743305931924027,
3022 13.835463204941126136,
3023 13.838179646300201142,
3024 13.840892638819539684,
3025 13.843602191269319235,
3026 13.846308312392787698,
3027 13.84901101089392661,
3028 13.851710295449825239,
3029 13.854406174701319188,
3030 13.857098657254422136,
3031 13.859787751686601709,
3032 13.862473466541130662,
3033 13.86515581032993083,
3034 13.867834791527137384,
3035 13.870510418584625967,
3036 13.873182699914616833,
3037 13.875851643901116361,
3038 13.878517258893786845,
3039 13.881179553217378952,
3040 13.883838535155623717,
3041 13.886494212968770512,
3042 13.889146594887002095,
3043 13.891795689101494204,
3044 13.894441503781525427,
3045 13.897084047059651724,
3046 13.899723327045110821,
3047 13.902359351811346855,
3048 13.904992129401231082,
3049 13.907621667830589729,
3050 13.910247975086692307,
3051 13.912871059123370188,
3052 13.915490927870026283,
3053 13.91810758922001412,
3054 13.920721051044457894,
3055 13.923331321182732978,
3056 13.925938407443748446,
3057 13.928542317608103573,
3058 13.931143059431320808,
3059 13.933740640637571673,
3060 13.936335068925462366,
3061 13.938926351958125238,
3062 13.941514497381966464,
3063 13.944099512804314145,
3064 13.94668140581365634,
3065 13.949260183964351967,
3066 13.951835854788662061,
3067 13.954408425790269632,
3068 13.95697790443957409,
3069 13.959544298190312617,
3070 13.962107614460476768,
3071 13.96466786064560317,
3072 13.967225044112664634,
3073 13.969779172205697648,
3074 13.972330252237139092,
3075 13.97487829149502403,
3076 13.977423297246341249,
3077 13.979965276723488543,
3078 13.982504237137508341,
3079 13.985040185675003954,
3080 13.987573129492263391,
3081 13.990103075725903281,
3082 13.992630031483724196,
3083 13.99515400384691155,
3084 13.997674999873927604,
3085 14.000193026599195179,
3086 14.002708091029330006,
3087 14.005220200146053955,
3088 14.007729360909634053,
3089 14.01023558025232596,
3090 14.01273886508432831,
3091 14.01523922228879826,
3092 14.017736658729967658,
3093 14.020231181239813267,
3094 14.022722796634397469,
3095 14.025211511700168998,
3096 14.027697333202896246,
3097 14.030180267882093048,
3098 14.03266032245799444,
3099 14.035137503624289579,
3100 14.037611818050047319,
3101 14.040083272382236856,
3102 14.04255187324901577,
3103 14.045017627248094882,
3104 14.04748054095911769,
3105 14.04994062093845919,
3106 14.052397873716437005,
3107 14.054852305807788326,
3108 14.057303923696416348,
3109 14.059752733849744999,
3110 14.062198742710839028,
3111 14.0646419567001697,
3112 14.067082382216762326,
3113 14.069520025637352489,
3114 14.071954893316462432,
3115 14.07438699158885953,
3116 14.076816326763628595,
3117 14.07924290513405019,
3118 14.081666732966468203,
3119 14.084087816508418456,
3120 14.086506161985690611,
3121 14.088921775603690634,
3122 14.091334663544339278,
3123 14.093744831971463327,
3124 14.096152287025153882,
3125 14.09855703482939937,
3126 14.100959081480601398,
3127 14.103358433059241861,
3128 14.105755095624877171,
3129 14.10814907521682926,
3130 14.110540377851714666,
3131 14.112929009528890845,
3132 14.115314976224503596,
3133 14.117698283896190858,
3134 14.120078938482535591,
3135 14.122456945901159742,
3136 14.124832312049791838,
3137 14.127205042808224533,
3138 14.129575144031136347,
3139 14.131942621562323836,
3140 14.13430748121819569,
3141 14.136669728799523327,
3142 14.139029370088032067,
3143 14.141386410844752675,
3144 14.143740856811602313,
3145 14.146092713715217926,
3146 14.148441987258625119,
3147 14.1507886831258336,
3148 14.153132806984910275,
3149 14.155474364484195604,
3150 14.157813361255202622,
3151 14.160149802908009065,
3152 14.162483695034042697,
3153 14.164815043210477796,
3154 14.167143852989557473,
3155 14.169470129910484602,
3156 14.171793879496814128,
3157 14.17411510724339152,
3158 14.176433818640294504,
3159 14.178750019150349715,
3160 14.181063714220734084,
3161 14.183374909285145549,
3162 14.185683609751258416,
3163 14.187989821018593517,
3164 14.19029354846252744,
3165 14.192594797443804921,
3166 14.194893573304014467,
3167 14.197189881369276065,
3168 14.199483726948839646,
3169 14.20177511533286463,
3170 14.204064051795191048,
3171 14.206350541593439019,
3172 14.208634589965885908,
3173 14.210916202138053066,
3174 14.213195383316227449,
3175 14.215472138690623538,
3176 14.21774647343459641,
3177 14.220018392702060694,
3178 14.222287901634690144,
3179 14.224555005357652604,
3180 14.226819708976794487,
3181 14.229082017582555864,
3182 14.231341936254585434,
3183 14.233599470045575686,
3184 14.235854624000007007,
3185 14.238107403148534402,
3186 14.240357812495970435,
3187 14.24260585704149662,
3188 14.244851541762988845,
3189 14.247094871621490242,
3190 14.249335851570357647,
3191 14.251574486535515618,
3192 14.253810781437111999,
3193 14.256044741176957302,
3194 14.258276370639412889,
3195 14.260505674693048306,
3196 14.262732658195368174,
3197 14.264957325986895142,
3198 14.267179682890123615,
3199 14.269399733716818801,
3200 14.271617483259406711,
3201 14.273832936298923357,
3202 14.276046097600476159,
3203 14.278256971912142603,
3204 14.280465563973503862,
3205 14.282671878500293516,
3206 14.284875920200541088,
3207 14.287077693764764774,
3208 14.289277203869636068,
3209 14.291474455178866165,
3210 14.293669452337670833,
3211 14.29586219998199681,
3212 14.29805270272855644,
3213 14.300240965185764708,
3214 14.302426991941993961,
3215 14.304610787573965425,
3216 14.306792356644967512,
3217 14.308971703701400813,
3218 14.311148833281771786,
3219 14.313323749904027338,
3220 14.315496458076189867,
3221 14.317666962290227062,
3222 14.319835267025963432,
3223 14.322001376753128454,
3224 14.324165295916989393,
3225 14.326327028962005272,
3226 14.328486580308904763,
3227 14.330643954371728555,
3228 14.33279915554975581,
3229 14.334952188226184333,
3230 14.337103056773381482,
3231 14.339251765549725803,
3232 14.341398318899807762,
3233 14.343542721156270048,
3234 14.345684976638173325,
3235 14.34782508965116854,
3236 14.349963064492426312,
3237 14.35209890543410971,
3238 14.354232616751593454,
3239 14.356364202695091947,
3240 14.358493667506255775,
3241 14.360621015414713142,
3242 14.362746250639503387,
3243 14.364869377382294857,
3244 14.366990399835495751,
3245 14.36910932217366188},
3246 {0,
3247 2.3219280948873626258,
3248 3.3219280948873626258,
3249 4.009984184985102118,
3250 4.5410966501985230437,
3251 4.9759235872791061084,
3252 5.3451175544612743451,
3253 5.6664899140623274931,
3254 5.951365559463460464,
3255 6.2074181133603802962,
3256 6.4400996405551707014,
3257 6.6534295905427747186,
3258 6.8504593992211040288,
3259 7.0335637469580500891,
3260 7.2046269409945082884,
3261 7.3651708911261204449,
3262 7.5164434474353214455,
3263 7.65948003120419596,
3264 7.7951500049725712671,
3265 7.924190846958517831,
3266 8.0472329877362867023,
3267 8.164820486503929331,
3268 8.2774261368204520295,
3269 8.3854626148977526867,
3270 8.4892931373039921539,
3271 8.5892394441002384298,
3272 8.6855861004875691833,
3273 8.7785887576787668962,
3274 8.8684753364507304951,
3275 8.9554515670237062608,
3276 9.0397030433341374334,
3277 9.1213986619859461769,
3278 9.2006909239974170589,
3279 9.2777196513117612398,
3280 9.3526126611213786788,
3281 9.4254869321160441586,
3282 9.4964501859713710274,
3283 9.5656015283077344691,
3284 9.6330329117983168885,
3285 9.6988286850167657605,
3286 9.763067719441490766,
3287 9.8258230457748947373,
3288 9.8871625158589804272,
3289 9.9471498081558671345,
3290 10.005843953918361677,
3291 10.063300157904480514,
3292 10.119570450540107842,
3293 10.174703458716329862,
3294 10.228744679631718739,
3295 10.281736906750806426,
3296 10.333721504103394295,
3297 10.384736055219464745,
3298 10.434816581828172843,
3299 10.483997118677041982,
3300 10.532309860431933402,
3301 10.579785293150695935,
3302 10.626452313782410286,
3303 10.672338339249707317,
3304 10.717469406258699038,
3305 10.761870262792360364,
3306 10.805564452116826146,
3307 10.848574390029094516,
3308 10.890921435992128252,
3309 10.932625958730842086,
3310 10.973707396799733615,
3311 11.014184314579676283,
3312 11.05407445411208478,
3313 11.093394783137521031,
3314 11.132161539667729144,
3315 11.17039027338819146,
3316 11.20809588415779956,
3317 11.24529265784756582,
3318 11.281994299735856657,
3319 11.318213965658326714,
3320 11.35396429109132832,
3321 11.389257418331439453,
3322 11.424105021919139347,
3323 11.458518332441173015,
3324 11.492508158834391807,
3325 11.526084909303103032,
3326 11.559258610951991031,
3327 11.592038928228676653,
3328 11.624435180261382783,
3329 11.65645635717043227,
3330 11.688111135425632625,
3331 11.719407892315885533,
3332 11.750354719592182917,
3333 11.780959436339754731,
3334 11.811229601131572053,
3335 11.841172523510511638,
3336 11.870795274844477163,
3337 11.900104698595182384,
3338 11.929107420038091547,
3339 11.957809855468735094,
3340 11.986218220927369771,
3341 12.014338540471927175,
3342 12.042176654027532123,
3343 12.06973822483764458,
3344 12.097028746541726107,
3345 12.124053549900946081,
3346 12.150817809193112495,
3347 12.177326548296401043,
3348 12.203584646479432863,
3349 12.229596843914722015,
3350 12.255367746931701944,
3351 12.280901833023179393,
3352 12.306203455619561637,
3353 12.331276848643559774,
3354 12.356126130857282064,
3355 12.380755310013151771,
3356 12.405168286818895496,
3357 12.429368858727011471,
3358 12.453360723557475254,
3359 12.477147482962628544,
3360 12.500732645742624882,
3361 12.524119631018825416,
3362 12.547311771272545045,
3363 12.570312315255755209,
3364 12.593124430780569867,
3365 12.615751207393291367,
3366 12.63819565893856911,
3367 12.660460726019156397,
3368 12.682549278356763267,
3369 12.704464117057906236,
3370 12.72620797678986726,
3371 12.747783527871257903,
3372 12.769193378280535356,
3373 12.790440075586433366,
3374 12.811526108804656587,
3375 12.832453910183094337,
3376 12.853225856919832992,
3377 12.873844272816173273,
3378 12.89431142986833656,
3379 12.914629549799643726,
3380 12.93480080553720768,
3381 12.954827322633622799,
3382 12.974711180638211161,
3383 12.994454414418219912,
3384 13.014059015433037558,
3385 13.033526932963361844,
3386 13.052860075297083142,
3387 13.07206031087321918,
3388 13.091129469386942219,
3389 13.110069342856098373,
3390 13.12888168665087818,
3391 13.14756822048918572,
3392 13.166130629397750695,
3393 13.184570564641676427,
3394 13.202889644622032961,
3395 13.221089455744994723,
3396 13.239171553261353864,
3397 13.257137462079056078,
3398 13.274988677549504956,
3399 13.292726666228245946,
3400 13.310352866611388833,
3401 13.327868689848640926,
3402 13.345275520433842686,
3403 13.362574716873641734,
3404 13.379767612335315974,
3405 13.396855515274722848,
3406 13.413839710044697995,
3407 13.430721457484715131,
3408 13.447501995492977755,
3409 13.464182539580649589,
3410 13.480764283409936155,
3411 13.497248399315717293,
3412 13.513636038811856821,
3413 13.529928333082400727,
3414 13.546126393458756354,
3415 13.562231311882127827,
3416 13.578244161353515196,
3417 13.59416599636993972,
3418 13.609997853348680508,
3419 13.625740751038870613,
3420 13.641395690922031747,
3421 13.65696365760090103,
3422 13.672445619177601372,
3423 13.687842527620885491,
3424 13.703155319123602851,
3425 13.718384914450053813,
3426 13.733532219274177777,
3427 13.748598124507793727,
3428 13.763583506621067443,
3429 13.778489227952839258,
3430 13.793316137014183909,
3431 13.808065068782807927,
3432 13.822736844989913507,
3433 13.837332274399686938,
3434 13.851852153081235741,
3435 13.866297264673491441,
3436 13.880668380643250259,
3437 13.894966260536559588,
3438 13.909191652223285018,
3439 13.923345292136307449,
3440 13.937427905503477987,
3441 13.951440206574563518,
3442 13.965382898842245041,
3443 13.979256675257280662,
3444 13.993062218438765854,
3445 14.006800200878895879,
3446 14.020471285142434681,
3447 14.034076124062194069,
3448 14.047615360928320527,
3449 14.06108962967455156,
3450 14.074499555058505251,
3451 14.087845752838797253,
3452 14.10112882994708805,
3453 14.114349384656605935,
3454 14.127508006746113622,
3455 14.140605277660474925,
3456 14.153641770667354294,
3457 14.166618051009944423,
3458 14.179534676056375631,
3459 14.192392195445822978,
3460 14.205191151230881275,
3461 14.217932078016900732,
3462 14.230615503097977737,
3463 14.243241946589959568,
3464 14.255811921560713529,
3465 14.26832593415661421,
3466 14.280784483727142486,
3467 14.293188062946203587,
3468 14.305537157930841019,
3469 14.317832248357067471,
3470 14.330073807573846523,
3471 14.342262302713766786,
3472 14.354398194801470723,
3473 14.366481938860525602,
3474 14.37851398401674885,
3475 14.390494773600016387,
3476 14.402424745244067239,
3477 14.414304330983403801,
3478 14.426133957348937997,
3479 14.437914045461239354,
3480 14.449645011121564409,
3481 14.461327264901584044,
3482 14.472961212230551098,
3483 14.484547253481402151,
3484 14.496085784054198342,
3485 14.507577194458724179,
3486 14.519021870394517748,
3487 14.53042019283030406,
3488 14.541772538080387278,
3489 14.553079277881092679,
3490 14.564340779464544084,
3491 14.575557405630885199,
3492 14.586729514820371278,
3493 14.597857461182197625,
3494 14.608941594643322759,
3495 14.619982260975177724,
3496 14.63097980185975544,
3497 14.641934554953504488,
3498 14.652846853950602934,
3499 14.663717028645002927,
3500 14.674545404990841035,
3501 14.685332305162079436,
3502 14.696078047610706463,
3503 14.7067829471241307,
3504 14.717447314881251685,
3505 14.728071458507404401,
3506 14.738655682128454671,
3507 14.74920028642363512,
3508 14.759705568678020526,
3509 14.770171822832590891,
3510 14.780599339535331893,
3511 14.790988406189555349,
3512 14.801339307002578494,
3513 14.811652323032616252,
3514 14.821927732235725017,
3515 14.832165809510927446,
3516 14.842366826745026387,
3517 14.852531052856953409,
3518 14.862658753840213066,
3519 14.872750192805749947,
3520 14.882805630023494103,
3521 14.892825322962799817,
3522 14.902809526333083312,
3523 14.912758492122891951,
3524 14.922672469638355253,
3525 14.932551705541857956,
3526 14.942396443888757318,
3527 14.952206926164333112,
3528 14.961983391319785497,
3529 14.971726075807604062,
3530 14.981435213616160596,
3531 14.991111036304362258,
3532 15.000753773034849914,
3533 15.010363650606890928,
3534 15.019940893489275524,
3535 15.029485723851959023,
3536 15.038998361597258224,
3537 15.048479024390861269,
3538 15.057927927691952874,
3539 15.067345284783257853,
3540 15.076731306800107646,
3541 15.086086202758982822,
3542 15.095410179586501442,
3543 15.104703442146483638,
3544 15.113966193267872384,
3545 15.123198633771341548,
3546 15.132400962495822228,
3547 15.141573376324718225,
3548 15.150716070211185382,
3549 15.159829237203657826,
3550 15.168913068470484262,
3551 15.177967753323947875,
3552 15.186993479245153083,
3553 15.195990431906743368,
3554 15.204958795196526822,
3555 15.213898751240062523,
3556 15.22281048042335172,
3557 15.231694161415287425,
3558 15.240549971188583456,
3559 15.249378085041929154,
3560 15.258178676620790526,
3561 15.266951917938254013,
3562 15.275697979395104653,
3563 15.284417029800843935,
3564 15.293109236392155026,
3565 15.30177476485382293,
3566 15.310413779336720097,
3567 15.319026442477570171,
3568 15.327612915416869654,
3569 15.336173357817893148,
3570 15.344707927884149612,
3571 15.353216782377456795,
3572 15.361700076635271373,
3573 15.370157964588184285,
3574 15.378590598776474607,
3575 15.386998130367325999,
3576 15.395380709170815692,
3577 15.403738483656383096,
3578 15.412071600968927143,
3579 15.420380206944292567,
3580 15.428664446124571441,
3581 15.436924461774330197,
3582 15.445160395894429683,
3583 15.453372389237655327,
3584 15.461560581323100294,
3585 15.469725110450553984,
3586 15.477866113714734198,
3587 15.48598372701921555,
3588 15.494078085090247754,
3589 15.502149321490390932,
3590 15.510197568631737042,
3591 15.518222957789250316,
3592 15.526225619113853682,
3593 15.534205681644861485,
3594 15.542163273323119199,
3595 15.55009852100315193,
3596 15.558011550465563388,
3597 15.565902486428969453,
3598 15.573771452562155559,
3599 15.581618571495846837,
3600 15.58944396483406436,
3601 15.597247753165763839,
3602 15.605030056076110156,
3603 15.61279099215777677,
3604 15.620530679021365827,
3605 15.628249233306904742,
3606 15.635946770694022945,
3607 15.643623405912785884,
3608 15.651279252753669269,
3609 15.658914424078590244,
3610 15.666529031830227936,
3611 15.674123187042097172,
3612 15.681696999848927732,
3613 15.689250579495666926,
3614 15.696784034347469827,
3615 15.704297471899081984,
3616 15.711790998784220363,
3617 15.719264720784371647,
3618 15.726718742838274423,
3619 15.734153169050728138,
3620 15.741568102701412712,
3621 15.748963646253692161,
3622 15.756339901362776956,
3623 15.763696968885094307,
3624 15.771034948885528593,
3625 15.778353940646855591,
3626 15.785654042676592113,
3627 15.792935352716584774,
3628 15.800197967749502581,
3629 15.807441984007605029,
3630 15.814667496980062467,
3631 15.821874601420745421,
3632 15.829063391355868262,
3633 15.8362339600910218,
3634 15.84338640021911182,
3635 15.85052080362721405,
3636 15.857637261503635173,
3637 15.864735864345528071,
3638 15.871816701965334673,
3639 15.878879863497770586,
3640 15.885925437407175664,
3641 15.892953511493228547,
3642 15.899964172898714665,
3643 15.906957508115239008,
3644 15.913933602990130822,
3645 15.920892542732380193,
3646 15.927834411919890911,
3647 15.934759294504681648,
3648 15.941667273819362549,
3649 15.948558432583851641,
3650 15.955432852910384156,
3651 15.962290616310255587,
3652 15.969131803699074368,
3653 15.975956495403114133,
3654 15.982764771164655215,
3655 15.989556710147573071,
3656 15.996332390943504009,
3657 16.003091891576833206,
3658 16.009835289509922518,
3659 16.016562661649235366,
3660 16.023274084350191515,
3661 16.029969633422599173,
3662 16.036649384135277074,
3663 16.043313411222285936,
3664 16.049961788887149083,
3665 16.056594590808071388,
3666 16.06321189014266082,
3667 16.069813759533747799,
3668 16.076400271112841978,
3669 16.082971496506125675,
3670 16.089527506838599891,
3671 16.096068372738621122,
3672 16.102594164342761474,
3673 16.109104951300661668,
3674 16.115600802779091794,
3675 16.122081787466211011,
3676 16.128547973576740304,
3677 16.134999428855678616,
3678 16.141436220582889405,
3679 16.147858415577157842,
3680 16.15426608020066368,
3681 16.160659280362882129,
3682 16.167038081524790272,
3683 16.173402548703187165,
3684 16.179752746474186154,
3685 16.186088738977709056,
3686 16.192410589920971375,
3687 16.198718362582724239,
3688 16.205012119817048699,
3689 16.211291924056759228,
3690 16.217557837317844616,
3691 16.223809921202544615,
3692 16.230048236903265035,
3693 16.236272845206283222,
3694 16.242483806495499721,
3695 16.248681180755276898,
3696 16.254865027575021941,
3697 16.261035406151624017,
3698 16.267192375293703321,
3699 16.273335993424268509,
3700 16.279466318584869811,
3701 16.285583408438316866,
3702 16.291687320272192352,
3703 16.29777811100215601,
3704 16.303855837174928922,
3705 16.309920554971963469,
3706 16.315972320211983515,
3707 16.322011188354480282,
3708 16.32803721450256873,
3709 16.334050453406625536,
3710 16.340050959466346114,
3711 16.346038786734354176,
3712 16.35201398891931035,
3713 16.357976619388217898,
3714 16.363926731169687656,
3715 16.369864376957092844,
3716 16.375789609110704248,
3717 16.381702479660933847,
3718 16.38760304031129067,
3719 16.393491342440427161,
3720 16.39936743710541478,
3721 16.405231375044614595,
3722 16.411083206679727198,
3723 16.416922982118538954,
3724 16.42275075115799865,
3725 16.428566563286491231,
3726 16.434370467686111539,
3727 16.440162513235755171,
3728 16.445942748512983655,
3729 16.451711221797250317,
3730 16.457467981071285834,
3731 16.463213074024810822,
3732 16.468946548055996004,
3733 16.474668450273952658,
3734 16.480378827501461103,
3735 16.486077726276892719,
3736 16.491765192856849609,
3737 16.497441273218242941,
3738 16.503106013060264701,
3739 16.508759457807375526,
3740 16.514401652610878557,
3741 16.520032642351136332,
3742 16.525652471640096763,
3743 16.531261184823158317,
3744 16.536858825981433085,
3745 16.542445438933519597,
3746 16.548021067238092741,
3747 16.553585754195804469,
3748 16.559139542851017524,
3749 16.56468247599375232,
3750 16.570214596162603726,
3751 16.575735945645583058,
3752 16.58124656648287143,
3753 16.586746500468152021,
3754 16.592235789151260406,
3755 16.597714473839104699,
3756 16.603182595598692473,
3757 16.608640195258043804,
3758 16.614087313408600011,
3759 16.619523990406634084,
3760 16.624950266375659425,
3761 16.630366181207346443,
3762 16.635771774564467762,
3763 16.641167085881356513,
3764 16.646552154366641929,
3765 16.651927019004610031,
3766 16.657291718556798799,
3767 16.662646291564161771,
3768 16.667990776347878068,
3769 16.67332521101173981,
3770 16.678649633444148748,
3771 16.683964081318414685,
3772 16.689268592095569232,
3773 16.694563203025555964,
3774 16.699847951148498737,
3775 16.7051228732971353,
3776 16.710388006097431912,
3777 16.715643385970452073,
3778 16.72088904913420393,
3779 16.726125031604901494,
3780 16.731351369198250723,
3781 16.736568097531343113,
3782 16.741775252023799681,
3783 16.746972867899227566,
3784 16.752160980187191797,
3785 16.757339623723915167,
3786 16.762508833153923149,
3787 16.767668642932196832,
3788 16.772819087324098319,
3789 16.777960200408021052,
3790 16.78309201607625667,
3791 16.788214568036401886,
3792 16.793327889812555753,
3793 16.798432014746957464,
3794 16.803526976000899396,
3795 16.808612806556670449,
3796 16.813689539217989477,
3797 16.818757206612087174,
3798 16.823815841190555176,
3799 16.828865475230337267,
3800 16.833906140835850351,
3801 16.838937869939254455,
3802 16.843960694302634096,
3803 16.848974645518083548,
3804 16.853979755009937946,
3805 16.858976054035494485,
3806 16.863963573685946784,
3807 16.868942344888196772,
3808 16.873912398405796154,
3809 16.878873764839386951,
3810 16.883826474629124448,
3811 16.88877055805463101,
3812 16.893706045236768887,
3813 16.89863296613876642,
3814 16.903551350566903722,
3815 16.908461228171997703,
3816 16.913362628450251179,
3817 16.918255580744297362,
3818 16.923140114244670684,
3819 16.928016257990233129,
3820 16.932884040869893738,
3821 16.937743491622981651,
3822 16.9425946388407489,
3823 16.947437510967478858,
3824 16.952272136300749139,
3825 16.957098542993239931,
3826 16.96191675905342322,
3827 16.966726812346532682,
3828 16.97152873059555489,
3829 16.976322541381929199,
3830 16.981108272147434235,
3831 16.98588595019374381,
3832 16.990655602684576309,
3833 16.995417256645946935,
3834 17.000170938967471557,
3835 17.004916676402888953,
3836 17.009654495571563615,
3837 17.014384422958759302,
3838 17.019106484916822097,
3839 17.023820707666160956,
3840 17.028527117295869431,
3841 17.033225739764919382,
3842 17.037916600903137976,
3843 17.042599726410895045,
3844 17.047275141861980785,
3845 17.051942872702550602,
3846 17.056602944252908571,
3847 17.061255381708321011,
3848 17.065900210139698601,
3849 17.070537454494196794,
3850 17.075167139596587162,
3851 17.079789290149054892,
3852 17.084403930733540022,
3853 17.089011085810952295,
3854 17.093610779722894222,
3855 17.09820303669236452,
3856 17.102787880824081412,
3857 17.107365336105484488,
3858 17.111935426407960392,
3859 17.116498175486722033,
3860 17.121053606982243878,
3861 17.125601744420752226,
3862 17.130142611214846937,
3863 17.13467623066448553,
3864 17.139202625957615567,
3865 17.143721820170679138,
3866 17.148233836269717756,
3867 17.152738697110592625,
3868 17.157236425440402172,
3869 17.16172704389739323,
3870 17.166210575011906059,
3871 17.170687041207379764,
3872 17.175156464800888756,
3873 17.179618868003288412,
3874 17.1840742729209488,
3875 17.188522701555097427,
3876 17.192964175803492566,
3877 17.197398717461133799,
3878 17.201826348219785956,
3879 17.206247089669904682,
3880 17.210660963300732362,
3881 17.215067990500390493,
3882 17.219468192557663144,
3883 17.223861590661691423,
3884 17.228248205903000212,
3885 17.232628059273807253,
3886 17.237001171669344757,
3887 17.241367563887312286,
3888 17.245727256629706403,
3889 17.250080270502291313,
3890 17.254426626016165613,
3891 17.258766343587716108,
3892 17.263099443539541511,
3893 17.267425946100338763,
3894 17.271745871406800177,
3895 17.276059239502956189,
3896 17.280366070340821949,
3897 17.284666383782386845,
3898 17.288960199597774192,
3899 17.293247537468293018,
3900 17.297528416984857103,
3901 17.301802857650077527,
3902 17.306070878877939379,
3903 17.31033249999460466,
3904 17.314587740239179681,
3905 17.318836618763349122,
3906 17.323079154633266086,
3907 17.327315366829022736,
3908 17.331545274245296895,
3909 17.335768895692414304,
3910 17.339986249896234938,
3911 17.344197355498977231,
3912 17.348402231059612433,
3913 17.352600895054518304,
3914 17.356793365877905444,
3915 17.360979661841657418,
3916 17.365159801177412646,
3917 17.369333802034987002,
3918 17.373501682484608466,
3919 17.377663460516604488,
3920 17.381819154041554754,
3921 17.38596878089148845,
3922 17.39011235881985229,
3923 17.394249905502434217,
3924 17.398381438537139587,
3925 17.402506975444918425,
3926 17.406626533670333856,
3927 17.41074013058159764,
3928 17.41484778347087925,
3929 17.418949509555904598,
3930 17.42304532597886535,
3931 17.427135249807612638,
3932 17.431219298036570109,
3933 17.435297487586080223,
3934 17.439369835303278222,
3935 17.443436357962969652,
3936 17.447497072267900364,
3937 17.451551994847879001,
3938 17.455601142262541003,
3939 17.459644530999561596,
3940 17.463682177476531621,
3941 17.467714098040527659,
3942 17.471740308968911393,
3943 17.475760826469311837,
3944 17.479775666680737345,
3945 17.483784845673248753,
3946 17.48778837944919573,
3947 17.491786283941920033,
3948 17.495778575018331225,
3949 17.499765268477847968,
3950 17.503746380053250675,
3951 17.507721925410677954,
3952 17.511691920150553869,
3953 17.515656379807619913,
3954 17.519615319851602919,
3955 17.523568755686863341,
3956 17.527516702653390013,
3957 17.531459176027503588,
3958 17.535396191021135337,
3959 17.539327762782946252,
3960 17.543253906398700082,
3961 17.547174636891110566,
3962 17.551089969220726061,
3963 17.55499991828603612,
3964 17.558904498923816107,
3965 17.56280372590921246,
3966 17.566697613956709034,
3967 17.570586177719679455,
3968 17.574469431791861496,
3969 17.57834739070633745,
3970 17.582220068936514679,
3971 17.586087480896782864,
3972 17.589949640942283082,
3973 17.593806563369430052,
3974 17.597658262416263852,
3975 17.601504752262602693,
3976 17.605346047030799639,
3977 17.609182160785461946,
3978 17.613013107534300161,
3979 17.616838901227882985,
3980 17.620659555760632031,
3981 17.624475084970370631,
3982 17.628285502639439386,
3983 17.632090822494131288,
3984 17.635891058205594106,
3985 17.639686223390050657,
3986 17.643476331608823671,
3987 17.647261396368989494,
3988 17.651041431123289271,
3989 17.654816449270906986,
3990 17.658586464157085771,
3991 17.662351489073873978,
3992 17.666111537260881903,
3993 17.669866621904166237,
3994 17.673616756137700889,
3995 17.677361953043504883,
3996 17.681102225651589066,
3997 17.684837586940343357,
3998 17.688568049836735696,
3999 17.692293627216667318,
4000 17.696014331905388417,
4001 17.699730176677736182,
4002 17.703441174257626756,
4003 17.707147337320158442,
4004 17.710848678489600871,
4005 17.714545210340972403,
4006 17.718236945400757776,
4007 17.721923896145383992,
4008 17.725606075003664586,
4009 17.729283494355279061,
4010 17.732956166531788966,
4011 17.736624103817053566,
4012 17.740287318447204967,
4013 17.7439458226106197,
4014 17.7475996284487465,
4015 17.751248748055697746,
4016 17.754893193479659885,
4017 17.758532976721472352,
4018 17.762168109736034438,
4019 17.76579860443253267,
4020 17.769424472673936322,
4021 17.773045726278112966,
4022 17.77666237701702201,
4023 17.780274436618149991,
4024 17.78388191676421215,
4025 17.78748482909260531,
4026 17.791083185197049232,
4027 17.794676996626467513,
4028 17.798266274886522353,
4029 17.801851031438815198,
4030 17.805431277701234904,
4031 17.809007025048853023,
4032 17.81257828481349037,
4033 17.816145068284257036,
4034 17.819707386707019481,
4035 17.823265251286301236,
4036 17.826818673183591812,
4037 17.830367663518767785,
4038 17.833912233369645151,
4039 17.837452393773155279,
4040 17.840988155723845665,
4041 17.844519530175912081,
4042 17.848046528042708303,
4043 17.851569160195964514,
4044 17.855087437467808797,
4045 17.858601370649363815,
4046 17.862110970492363293,
4047 17.865616247708004494,
4048 17.869117212967694286,
4049 17.872613876903582053,
4050 17.876106250108616535,
4051 17.879594343136158585,
4052 17.883078166501164219,
4053 17.886557730679083278,
4054 17.890033046107532755,
4055 17.893504123185451249,
4056 17.896970972273397393,
4057 17.900433603693965523,
4058 17.903892027732293712,
4059 17.907346254635566396,
4060 17.91079629461380307,
4061 17.91424215783896301,
4062 17.917683854447119529,
4063 17.921121394536235982,
4064 17.924554788168489239,
4065 17.927984045368805965,
4066 17.931409176126305027,
4067 17.934830190393768135,
4068 17.938247098087309439,
4069 17.941659909088286895,
4070 17.945068633241451295,
4071 17.948473280356495252,
4072 17.951873860207587796,
4073 17.955270382534095575,
4074 17.958662857039847438,
4075 17.962051293394043938,
4076 17.965435701231751153,
4077 17.968816090152635923,
4078 17.972192469722518382,
4079 17.975564849473183671,
4080 17.97893323890192363,
4081 17.982297647472794466,
4082 17.985658084615817387,
4083 17.989014559727348086,
4084 17.992367082170634518,
4085 17.995715661275820452,
4086 17.999060306339703885,
4087 18.002401026626170477,
4088 18.005737831366715795,
4089 18.009070729759883989,
4090 18.01239973097204583,
4091 18.015724844137011473,
4092 18.019046078357007445,
4093 18.022363442701447411,
4094 18.025676946208754714,
4095 18.028986597885083398,
4096 18.032292406705376919,
4097 18.035594381612927606,
4098 18.03889253152023997,
4099 18.042186865308398325,
4100 18.045477391827411395,
4101 18.048764119896610225,
4102 18.05204705830509937,
4103 18.055326215810708845,
4104 18.058601601141383242,
4105 18.061873222994794475,
4106 18.065141090038160598,
4107 18.068405210909475045,
4108 18.071665594216039352,
4109 18.074922248536097413,
4110 18.078175182418121381,
4111 18.081424404381138515,
4112 18.084669922914958562,
4113 18.087911746480227038,
4114 18.091149883508542473,
4115 18.094384342402832999,
4116 18.097615131536880284,
4117 18.10084225925644219,
4118 18.104065733878233146,
4119 18.107285563690883379,
4120 18.110501756954750618,
4121 18.113714321902179449,
4122 18.116923266737305909,
4123 18.120128599636711186,
4124 18.123330328748984641,
4125 18.126528462195601321,
4126 18.129723008069866808,
4127 18.132913974438224614,
4128 18.136101369339865386,
4129 18.139285200786897434,
4130 18.142465476764218835,
4131 18.145642205230174682,
4132 18.148815394116070365,
4133 18.15198505132675777,
4134 18.155151184740685011,
4135 18.158313802209818277,
4136 18.161472911559862098,
4137 18.164628520590550664,
4138 18.16778063707504387,
4139 18.170929268761465636,
4140 18.17407442337134782,
4141 18.177216108600919853,
4142 18.180354332120867156,
4143 18.183489101576274294,
4144 18.186620424586880773,
4145 18.189748308747581973,
4146 18.192872761627686629,
4147 18.19599379077147816,
4148 18.199111403698633893,
4149 18.202225607903937288,
4150 18.205336410857679397,
4151 18.208443820005285829,
4152 18.211547842767703997,
4153 18.214648486541943129,
4154 18.217745758700090164,
4155 18.220839666590617156,
4156 18.223930217538207188,
4157 18.227017418842539342,
4158 18.23010127778079692,
4159 18.23318180160549673,
4160 18.236258997545750304,
4161 18.239332872807583641,
4162 18.242403434572771914,
4163 18.245470690000708203,
4164 18.248534646226922007,
4165 18.251595310364102431,
4166 18.254652689501750018,
4167 18.257706790706624389,
4168 18.260757621022719377,
4169 18.263805187471096048,
4170 18.266849497050291262,
4171 18.269890556736381626,
4172 18.272928373482780984,
4173 18.275962954220982937,
4174 18.278994305859999514,
4175 18.282022435286766182,
4176 18.28504734936614895,
4177 18.28806905494078805,
4178 18.291087558831872428,
4179 18.294102867838830662,
4180 18.297114988739124897,
4181 18.300123928288716257,
4182 18.30312969322262262,
4183 18.306132290253390948,
4184 18.30913172607304773,
4185 18.312128007352608705,
4186 18.315121140740988182,
4187 18.318111132867077373,
4188 18.321097990338280681,
4189 18.324081719741027285,
4190 18.327062327641758799,
4191 18.330039820585078303,
4192 18.333014205095942373,
4193 18.335985487678517103,
4194 18.338953674816348638,
4195 18.341918772972586993,
4196 18.344880788590554488,
4197 18.347839728093219946,
4198 18.35079559788319159,
4199 18.353748404343495082,
4200 18.356698153836823906,
4201 18.359644852706377804,
4202 18.36258850727550751,
4203 18.365529123847672111,
4204 18.368466708707362756,
4205 18.371401268118660255,
4206 18.374332808326904853,
4207 18.377261335557800948,
4208 18.380186856017850516,
4209 18.383109375894512993,
4210 18.386028901355754073,
4211 18.388945438550987177,
4212 18.391858993610199491,
4213 18.394769572645088829,
4214 18.397677181747976505,
4215 18.400581826992706169,
4216 18.403483514434544333,
4217 18.406382250109903254,
4218 18.409278040037300173,
4219 18.412170890216181363,
4220 18.415060806628041234,
4221 18.417947795235875219,
4222 18.420831861984659383,
4223 18.423713012801581357,
4224 18.426591253594740039,
4225 18.429466590255497493,
4226 18.432339028656336666,
4227 18.435208574652552471,
4228 18.438075234081573228,
4229 18.440939012762864735,
4230 18.443799916498530678,
4231 18.446657951073060389,
4232 18.449513122253410558,
4233 18.452365435789261028,
4234 18.455214897412911768,
4235 18.458061512839364582,
4236 18.460905287766870231,
4237 18.463746227875390105,
4238 18.466584338829385104,
4239 18.469419626275136892,
4240 18.472252095842428332,
4241 18.475081753144252161,
4242 18.477908603777017049,
4243 18.480732653319968506,
4244 18.483553907336020217,
4245 18.486372371370983103}};

Referenced by gum::VariableLog2ParamComplexity::log2Cnr().

◆ VariableLog2ParamComplexityCTableNSize

std::size_t gum::VariableLog2ParamComplexityCTableNSize {std::size_t(1000)}
constexpr

◆ VariableLog2ParamComplexityCTableRSize

std::size_t gum::VariableLog2ParamComplexityCTableRSize {std::size_t(4)}
constexpr

Definition at line 70 of file variableLog2ParamComplexity.h.

70{std::size_t(4)};

Referenced by gum::VariableLog2ParamComplexity::log2Cnr().