diff --git a/ChangeLog b/ChangeLog index 3ed43f880a..61b96d1dc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,9 @@ `History` (the actions from the root, comma-joined). - The command-line tools' `-D` report now identifies each player by their own label, rather than by their position among the game's players. +- Substantially faster computation of the agent logit QRE correspondence for extensive games, + and of payoffs, beliefs and regrets of mixed behavior profiles on large game trees. Path + following (logit and hp) also spends about half as long factorizing Jacobians. (#1162) ## [17.0.0-beta.1] - 2026-09-08 diff --git a/Makefile.am b/Makefile.am index ec5d107a5d..e843c4df99 100644 --- a/Makefile.am +++ b/Makefile.am @@ -219,6 +219,8 @@ game_SOURCES = \ src/games/behavpure.h \ src/games/behavmixed.cc \ src/games/behavmixed.h \ + src/games/treelayout.cc \ + src/games/treelayout.h \ src/games/seqpure.cc \ src/games/seqpure.h \ src/games/seqmixed.h \ @@ -317,8 +319,6 @@ path_SOURCES = \ src/solvers/path/path.h logit_SOURCES = \ - src/solvers/logit/logbehav.h \ - src/solvers/logit/logbehav.cc \ src/solvers/logit/logit.h \ src/solvers/logit/efglogit.cc \ src/solvers/logit/nfglogit.cc diff --git a/src/games.h b/src/games.h index 156c80550d..13e81f2c13 100644 --- a/src/games.h +++ b/src/games.h @@ -29,6 +29,7 @@ #include "games/writer.h" #include "games/behavspt.h" +#include "games/treelayout.h" #include "games/behavmixed.h" #include "games/behavpure.h" #include "games/seqpure.h" diff --git a/src/games/behavmixed.cc b/src/games/behavmixed.cc index ae44635c96..72a455a55b 100644 --- a/src/games/behavmixed.cc +++ b/src/games/behavmixed.cc @@ -45,6 +45,7 @@ MixedBehaviorProfile::MixedBehaviorProfile(const Game &p_game) m_profileIndex[action] = index++; } } + InitializeLayout(); SetCentroid(); } @@ -65,6 +66,7 @@ MixedBehaviorProfile::MixedBehaviorProfile(const BehaviorSupportProfile &p_su } } } + InitializeLayout(); SetCentroid(); } @@ -137,6 +139,7 @@ MixedBehaviorProfile::MixedBehaviorProfile(const MixedStrategyProfile &p_p m_probs[index++] = static_cast(0); } } + InitializeLayout(); GameNodeRep *root = m_support.GetGame()->GetRoot().get(); @@ -171,6 +174,7 @@ MixedBehaviorProfile::MixedBehaviorProfile(const MixedSequenceProfile &p_p m_profileIndex[action] = index++; } } + InitializeLayout(); for (auto player : game->GetPlayers()) { for (auto sequence : player->GetSequences()) { if (!sequence->GetAction()) { @@ -194,11 +198,68 @@ MixedBehaviorProfile::operator=(const MixedBehaviorProfile &p_profile) throw MismatchException(); } m_probs = p_profile.m_probs; + m_profileIndex = p_profile.m_profileIndex; m_gameversion = p_profile.m_gameversion; + // The cache is aligned with the layout of the version of the game it was computed for + m_layout = p_profile.m_layout; + m_layoutProfileIndex = p_profile.m_layoutProfileIndex; m_cache = p_profile.m_cache; return *this; } +template void MixedBehaviorProfile::InitializeLayout() +{ + const Game game = m_support.GetGame(); + m_layout = game->GetTreeLayout(); + // The layout numbers the actions at personal information sets in the order of + // GameRep::GetInfosets(), as does m_profileIndex on the full game + m_layoutProfileIndex.assign(m_layout->numActions + 1, -1); + size_t layoutIndex = 1; + for (const auto &infoset : game->GetInfosets()) { + for (const auto &action : infoset->GetActions()) { + m_layoutProfileIndex[layoutIndex++] = m_profileIndex.at(action); + } + } +} + +template +std::optional MixedBehaviorProfile::NodeIndex(const GameNode &p_node) const +{ + if (!p_node || p_node->m_game != m_support.GetGame().get()) { + return std::nullopt; + } + // Node numbers follow the order of GameRep::GetNodes(), as does the layout + return p_node->GetNumber() - 1; +} + +template +std::optional MixedBehaviorProfile::InfosetIndex(const GameInfoset &p_infoset) const +{ + const auto entry = m_layout->infosetIndex.find(p_infoset.get()); + if (entry == m_layout->infosetIndex.end()) { + return std::nullopt; + } + return entry->second; +} + +template +std::optional MixedBehaviorProfile::PlayerIndex(const GamePlayer &p_player) const +{ + if (!p_player || p_player->IsChance() || p_player->GetGame() != m_support.GetGame()) { + return std::nullopt; + } + return p_player->GetNumber() - 1; +} + +template T MixedBehaviorProfile::LayoutActionProb(size_t p_node) const +{ + const size_t action = m_layout->action[p_node]; + if (action == 0) { + return m_layout->template GetNumbers().chanceProb[p_node]; + } + return LayoutProfileProb(action); +} + //======================================================================== // MixedBehaviorProfile: General data access //======================================================================== @@ -292,8 +353,10 @@ template T MixedBehaviorProfile::GetAgentLiapValue() const if (GetInfosetProb(infoset) == T{0}) { continue; } + const auto &entry = m_layout->infosets[*InfosetIndex(infoset)]; for (auto action : m_support.GetActions(infoset)) { - value += sqr(std::max(m_cache.m_actionValues[action] - m_cache.m_infosetValues[infoset], + value += sqr(std::max(m_cache.m_actionValues[entry.firstAction + action->GetNumber() - 1] - + m_cache.m_infosetValues[*InfosetIndex(infoset)], static_cast(0))); } } @@ -304,14 +367,17 @@ template const T &MixedBehaviorProfile::GetRealizProb(const GameNod { CheckVersion(); EnsureRealizations(); - return m_cache.m_realizProbs[node]; + static const T zero(0); + const auto index = NodeIndex(node); + return (index) ? m_cache.m_realizProbs[*index] : zero; } template T MixedBehaviorProfile::GetInfosetProb(const GameInfoset &p_infoset) const { CheckVersion(); EnsureRealizations(); - return m_cache.m_infosetProbs[p_infoset]; + const auto index = InfosetIndex(p_infoset); + return (index) ? m_cache.m_infosetProbs[*index] : T(0); } template @@ -322,7 +388,8 @@ std::optional MixedBehaviorProfile::GetBeliefProb(const GameNode &node) co if (!node->GetInfoset() || GetInfosetProb(node->GetInfoset()) == T{0}) { return std::nullopt; } - return m_cache.m_beliefs[node]; + const auto index = NodeIndex(node); + return (index) ? m_cache.m_beliefs[*index] : T(0); } template Vector MixedBehaviorProfile::GetPayoff(const GameNode &node) const @@ -330,9 +397,10 @@ template Vector MixedBehaviorProfile::GetPayoff(const GameNode & CheckVersion(); EnsureNodeValues(); Vector ret(node->GetGame()->NumPlayers()); - auto players = node->GetGame()->GetPlayers(); - std::transform(players.begin(), players.end(), ret.begin(), - [this, node](GamePlayer player) { return m_cache.m_nodeValues[node][player]; }); + const auto index = NodeIndex(node); + for (size_t pl = 1; pl <= ret.size(); pl++) { + ret[pl] = (index) ? m_cache.m_nodeValues[*index * m_layout->numPlayers + pl - 1] : T(0); + } return ret; } @@ -342,7 +410,12 @@ const T &MixedBehaviorProfile::GetPayoff(const GamePlayer &p_player, { CheckVersion(); EnsureNodeValues(); - return m_cache.m_nodeValues.at(p_node).at(p_player); + const auto node = NodeIndex(p_node); + const auto player = PlayerIndex(p_player); + if (!node || !player) { + throw std::out_of_range("Node or player is not part of the game of the profile"); + } + return m_cache.m_nodeValues[*node * m_layout->numPlayers + *player]; } template @@ -353,7 +426,7 @@ std::optional MixedBehaviorProfile::GetPayoff(const GameInfoset &p_infoset if (GetInfosetProb(p_infoset) == T{0}) { return std::nullopt; } - return m_cache.m_infosetValues[p_infoset]; + return m_cache.m_infosetValues[*InfosetIndex(p_infoset)]; } template T MixedBehaviorProfile::GetActionProb(const GameAction &action) const @@ -375,7 +448,11 @@ template std::optional MixedBehaviorProfile::GetPayoff(const Gam if (GetInfosetProb(act->GetInfoset()) == T{0}) { return std::nullopt; } - return m_cache.m_actionValues[act]; + const size_t info = *InfosetIndex(act->GetInfoset()); + if (info >= m_layout->numPersonalInfosets) { + return T(0); + } + return m_cache.m_actionValues[m_layout->infosets[info].firstAction + act->GetNumber() - 1]; } template T MixedBehaviorProfile::GetRegret(const GameAction &act) const @@ -385,7 +462,11 @@ template T MixedBehaviorProfile::GetRegret(const GameAction &act) c if (GetInfosetProb(act->GetInfoset()) == T{0}) { return T{0}; } - return m_cache.m_regret.at(act); + const size_t info = *InfosetIndex(act->GetInfoset()); + if (info >= m_layout->numPersonalInfosets) { + throw std::out_of_range("Regrets are not defined for chance actions"); + } + return m_cache.m_regret[m_layout->infosets[info].firstAction + act->GetNumber() - 1]; } template T MixedBehaviorProfile::GetRegret(const GameInfoset &p_infoset) const @@ -395,10 +476,13 @@ template T MixedBehaviorProfile::GetRegret(const GameInfoset &p_inf if (GetInfosetProb(p_infoset) == T{0}) { return T{0}; } - T br_payoff = maximize_function(p_infoset->GetActions(), [this](const auto &action) -> T { - return m_cache.m_actionValues.at(action); - }); - return br_payoff - m_cache.m_infosetValues[p_infoset]; + const size_t info = *InfosetIndex(p_infoset); + const auto &entry = m_layout->infosets[info]; + T br_payoff = m_cache.m_actionValues[entry.firstAction]; + for (size_t a = entry.firstAction + 1; a < entry.firstAction + entry.numActions; a++) { + br_payoff = std::max(br_payoff, m_cache.m_actionValues[a]); + } + return br_payoff - m_cache.m_infosetValues[info]; } template T MixedBehaviorProfile::GetMaxRegret() const @@ -417,150 +501,75 @@ template T MixedBehaviorProfile::GetAgentMaxRegret() const [this](const auto &infoset) -> T { return this->GetRegret(infoset); }); } -// -// The following routines compute the derivatives of quantities as -// the probability of the action 'p_oppAction' is changed. -// See Turocy (2001), "Computing the Quantal Response Equilibrium -// Correspondence" for details. -// These assume that the profile is interior (totally mixed), -// and that the game is of perfect recall -// - -template -T MixedBehaviorProfile::DiffActionValue(const GameAction &p_action, - const GameAction &p_oppAction) const -{ - CheckVersion(); - EnsureActionValues(); - T deriv = static_cast(0); - const GameInfoset infoset = p_action->GetInfoset(); - const GamePlayer player = p_action->GetInfoset()->GetPlayer(); - - for (auto member : infoset->GetMembers()) { - const GameNode child = member->GetChild(p_action); - - deriv += DiffRealizProb(member, p_oppAction) * - (m_cache.m_nodeValues[child][player] - m_cache.m_actionValues[p_action]); - deriv += m_cache.m_realizProbs[member] * - DiffNodeValue(member->GetChild(p_action), player, p_oppAction); - } - - return deriv / GetInfosetProb(p_action->GetInfoset()); -} - -template -T MixedBehaviorProfile::DiffRealizProb(const GameNode &p_node, - const GameAction &p_oppAction) const -{ - CheckVersion(); - EnsureActionValues(); - T deriv = static_cast(1); - bool isPrec = false; - GameNode node = p_node; - while (node->GetParent()) { - if (const GameAction prevAction = node->GetPriorAction(); prevAction != p_oppAction) { - deriv *= GetActionProb(prevAction); - } - else { - isPrec = true; - } - node = node->GetParent(); - } - - return (isPrec) ? deriv : static_cast(0); -} - -template -T MixedBehaviorProfile::DiffNodeValue(const GameNode &p_node, const GamePlayer &p_player, - const GameAction &p_oppAction) const -{ - CheckVersion(); - EnsureNodeValues(); - - if (p_node->IsTerminal()) { - // If we reach a terminal node and haven't encountered p_oppAction, - // derivative wrt this path is zero. - return static_cast(0); - } - if (p_node->GetInfoset() == p_oppAction->GetInfoset()) { - // We've encountered the action; since we assume perfect recall, - // we won't encounter it again, and the downtree value must - // be the same. - return m_cache.m_nodeValues[p_node->GetChild(p_oppAction)][p_player]; - } - return sum_function(p_node->GetActions(), [&](auto action_child) -> T { - return DiffNodeValue(action_child.second, p_player, p_oppAction) * - GetActionProb(action_child.first); - }); -} - //======================================================================== // MixedBehaviorProfile: Cached profile information //======================================================================== template void MixedBehaviorProfile::ComputeRealizationProbs() const { - m_cache.m_realizProbs.clear(); - m_cache.m_infosetProbs.clear(); - - const auto &game = m_support.GetGame(); - m_cache.m_realizProbs[game->GetRoot()] = static_cast(1); - for (const auto &node : game->GetNodes()) { - const T incomingProb = m_cache.m_realizProbs[node]; - for (auto [action, child] : node->GetActions()) { - m_cache.m_realizProbs[child] = incomingProb * GetActionProb(action); - } + const auto &layout = *m_layout; + const size_t numNodes = layout.parent.size(); + auto &realiz = m_cache.m_realizProbs; + realiz.assign(numNodes, static_cast(0)); + realiz[0] = static_cast(1); + for (size_t k = 1; k < numNodes; k++) { + realiz[k] = realiz[layout.parent[k]] * LayoutActionProb(k); } - for (const auto &player : game->GetPlayersWithChance()) { - for (const auto &infoset : player->GetInfosets()) { - m_cache.m_infosetProbs[infoset] = - sum_function(infoset->GetMembers(), - [&](const auto &node) -> T { return m_cache.m_realizProbs[node]; }); + auto &infosetProbs = m_cache.m_infosetProbs; + infosetProbs.assign(layout.infosets.size(), static_cast(0)); + for (size_t i = 0; i < layout.infosets.size(); i++) { + for (const size_t member : layout.infosets[i].members) { + infosetProbs[i] += realiz[member]; } } - for (const auto &[infoset, node] : game->GetAbsentMindedReentries()) { - m_cache.m_infosetProbs[infoset] -= m_cache.m_realizProbs[node]; + for (const auto &[infoset, node] : layout.reentries) { + infosetProbs[infoset] -= realiz[node]; } } template void MixedBehaviorProfile::ComputeBeliefs() const { - m_cache.m_beliefs.clear(); // Normalise each member's realization probability by the infoset's upper-frontier probability // (m_infosetProbs, computed in ComputeRealizationProbs), following Halpern and Pass (2021). // For an absent-minded infoset the frontier excludes the reentry members, so the member beliefs // may sum to above 1; for a non-absent-minded infoset the frontier is all members and this is // the standard Selten (1975) normalization. - for (const auto &infoset : m_support.GetGame()->GetInfosets()) { - const T infosetProb = m_cache.m_infosetProbs[infoset]; + const auto &layout = *m_layout; + m_cache.m_beliefs.assign(layout.parent.size(), static_cast(0)); + for (size_t i = 0; i < layout.numPersonalInfosets; i++) { + const T infosetProb = m_cache.m_infosetProbs[i]; if (infosetProb == static_cast(0)) { continue; } - for (const auto &node : infoset->GetMembers()) { - m_cache.m_beliefs[node] = m_cache.m_realizProbs[node] / infosetProb; + for (const size_t member : layout.infosets[i].members) { + m_cache.m_beliefs[member] = m_cache.m_realizProbs[member] / infosetProb; } } } template void MixedBehaviorProfile::ComputeNodeValues() const { - const auto &game = m_support.GetGame(); - m_cache.m_nodeValues.clear(); - - for (const auto &node : game->GetNodes(TraversalOrder::Postorder)) { - auto &vals = m_cache.m_nodeValues[node]; - for (const auto &player : game->GetPlayers()) { - vals[player] = static_cast(0); + const auto &layout = *m_layout; + const auto &payoffs = layout.template GetNumbers().payoffs; + const size_t numPlayers = layout.numPlayers; + auto &values = m_cache.m_nodeValues; + values.resize(layout.parent.size() * numPlayers); + + // Children follow their parents in the layout, so a reverse sweep is a postorder traversal + for (size_t k = layout.parent.size(); k-- > 0;) { + const size_t node = k * numPlayers; + for (size_t pl = 0; pl < numPlayers; pl++) { + values[node + pl] = static_cast(0); } - const GameOutcome &outcome = node->GetOutcome(); - for (const auto &player : game->GetPlayers()) { - vals[player] += outcome->GetPayoff(player); + for (size_t pl = 0; pl < numPlayers; pl++) { + values[node + pl] += payoffs[node + pl]; } - for (auto [action, child] : node->GetActions()) { - const T p = GetActionProb(action); - for (const auto &player : game->GetPlayers()) { - vals[player] += p * m_cache.m_nodeValues[child][player]; + for (size_t j = 0; j < layout.numChildren[k]; j++) { + const size_t child = layout.childList[layout.firstChild[k] + j]; + const T p = LayoutActionProb(child); + for (size_t pl = 0; pl < numPlayers; pl++) { + values[node + pl] += p * values[child * numPlayers + pl]; } } } @@ -568,18 +577,21 @@ template void MixedBehaviorProfile::ComputeNodeValues() const template void MixedBehaviorProfile::ComputeActionValues() const { - const auto &game = m_support.GetGame(); - m_cache.m_actionValues.clear(); + const auto &layout = *m_layout; + const size_t numPlayers = layout.numPlayers; + m_cache.m_actionValues.assign(layout.numActions + 1, static_cast(0)); - for (const auto &infoset : game->GetInfosets()) { - const auto &player = infoset->GetPlayer(); - for (const auto &node : infoset->GetMembers()) { - T belief = m_cache.m_beliefs[node]; + for (size_t i = 0; i < layout.numPersonalInfosets; i++) { + const auto &infoset = layout.infosets[i]; + for (const size_t member : infoset.members) { + const T belief = m_cache.m_beliefs[member]; if (belief == static_cast(0)) { continue; } - for (auto [action, child] : node->GetActions()) { - m_cache.m_actionValues[action] += belief * m_cache.m_nodeValues[child][player]; + for (size_t j = 0; j < layout.numChildren[member]; j++) { + const size_t child = layout.childList[layout.firstChild[member] + j]; + m_cache.m_actionValues[layout.action[child]] += + belief * m_cache.m_nodeValues[child * numPlayers + infoset.player]; } } } @@ -587,19 +599,59 @@ template void MixedBehaviorProfile::ComputeActionValues() const template void MixedBehaviorProfile::ComputeActionRegrets() const { - for (const auto &infoset : m_support.GetGame()->GetInfosets()) { - m_cache.m_infosetValues[infoset] = - sum_function(infoset->GetActions(), [&](const auto &action) -> T { - return GetActionProb(action) * m_cache.m_actionValues[action]; - }); + const auto &layout = *m_layout; + m_cache.m_infosetValues.assign(layout.infosets.size(), static_cast(0)); + m_cache.m_regret.assign(layout.numActions + 1, static_cast(0)); + const auto &values = m_cache.m_actionValues; + + for (size_t i = 0; i < layout.numPersonalInfosets; i++) { + const auto &infoset = layout.infosets[i]; + const size_t first = infoset.firstAction; + const size_t last = first + infoset.numActions; + T infosetValue = static_cast(0); + for (size_t a = first; a < last; a++) { + infosetValue += LayoutProfileProb(a) * values[a]; + } + m_cache.m_infosetValues[i] = infosetValue; + T brpayoff = values[first]; + for (size_t a = first + 1; a < last; a++) { + brpayoff = std::max(brpayoff, values[a]); + } + for (size_t a = first; a < last; a++) { + m_cache.m_regret[a] = std::max(brpayoff - values[a], static_cast(0)); + } + } +} - auto actions = infoset->GetActions(); - const T brpayoff = maximize_function(infoset->GetActions(), [&](const auto &action) -> T { - return m_cache.m_actionValues[action]; - }); - for (const auto &action : infoset->GetActions()) { - m_cache.m_regret[action] = - std::max(brpayoff - m_cache.m_actionValues[action], static_cast(0)); +template void MixedBehaviorProfile::DiffActionValues(Matrix &p_derivs) const +{ + CheckVersion(); + EnsureActionValues(); + const auto &layout = *m_layout; + Matrix derivs(layout.numActions, layout.numActions); + Gambit::DiffActionValues( + layout, m_cache.m_beliefs, m_cache.m_nodeValues, m_cache.m_actionValues, + [this](size_t p_from, size_t p_to) { + T prob = static_cast(1); + for (size_t k = p_to; k != p_from; k = m_layout->parent[k]) { + prob *= LayoutActionProb(k); + } + return prob; + }, + derivs); + + const size_t length = m_probs.size(); + p_derivs = Matrix(length, length); + p_derivs = static_cast(0); + for (size_t a = 1; a <= layout.numActions; a++) { + const int row = m_layoutProfileIndex[a]; + if (row < 0) { + continue; + } + for (size_t b = 1; b <= layout.numActions; b++) { + if (const int col = m_layoutProfileIndex[b]; col >= 0) { + p_derivs(row, col) = derivs(a, b); + } } } } diff --git a/src/games/behavmixed.h b/src/games/behavmixed.h index d3376782d2..05559deb96 100644 --- a/src/games/behavmixed.h +++ b/src/games/behavmixed.h @@ -30,6 +30,7 @@ #include "gametree.h" #include "behavspt.h" #include "seqmixed.h" +#include "treelayout.h" namespace Gambit { @@ -44,38 +45,44 @@ template class MixedBehaviorProfile { /// The index into the action profile for a action (-1 if not in support) std::map m_profileIndex; unsigned int m_gameversion; + /// The flattened structure of the game tree on which cached quantities are computed + std::shared_ptr m_layout; + /// The index into the action profile for each action of the layout (-1 if not in support) + std::vector m_layoutProfileIndex; + /// Cached quantities, stored in arrays aligned with the tree layout struct Cache { enum class Level { None, Realizations, Beliefs, NodeValues, ActionValues, Regrets }; Level m_level{Level::None}; - std::map m_realizProbs, m_beliefs; - std::map m_infosetProbs; - std::map> m_nodeValues; - std::map m_infosetValues; - std::map m_actionValues; - std::map m_regret; - - Cache() = default; - Cache(const Cache &) = default; - Cache &operator=(const Cache &) = default; - ~Cache() = default; - - void Clear() - { - m_level = Level::None; - m_realizProbs.clear(); - m_infosetProbs.clear(); - m_beliefs.clear(); - m_nodeValues.clear(); - m_infosetValues.clear(); - m_actionValues.clear(); - m_regret.clear(); - } + std::vector m_realizProbs, m_beliefs; ///< by node + std::vector m_infosetProbs; ///< by information set + std::vector m_nodeValues; ///< by node, one entry per player + std::vector m_infosetValues; ///< by information set + std::vector m_actionValues, m_regret; ///< by action + + void Clear() { m_level = Level::None; } }; mutable Cache m_cache; + /// @name Locating game elements in the tree layout + //@{ + /// Record the layout of the game and how its actions map into the profile + void InitializeLayout(); + std::optional NodeIndex(const GameNode &p_node) const; + std::optional InfosetIndex(const GameInfoset &p_infoset) const; + std::optional PlayerIndex(const GamePlayer &p_player) const; + /// The probability of the action leading to the node with index p_node + T LayoutActionProb(size_t p_node) const; + /// The probability of the action with layout index p_action + T LayoutProfileProb(size_t p_action) const + { + const int index = m_layoutProfileIndex[p_action]; + return (index < 0) ? T(0) : m_probs[index]; + } + //@} + /// @name Auxiliary functions for cached computation of interesting values //@{ /// Compute the realization probabilities of all nodes, and of information sets @@ -238,7 +245,8 @@ template class MixedBehaviorProfile { { CheckVersion(); EnsureNodeValues(); - return m_cache.m_nodeValues[m_support.GetGame()->GetRoot()][p_player]; + const auto player = PlayerIndex(p_player); + return (player) ? m_cache.m_nodeValues[*player] : T(0); } T GetLiapValue() const; T GetAgentLiapValue() const; @@ -288,10 +296,13 @@ template class MixedBehaviorProfile { /// T GetMaxRegret() const; - T DiffActionValue(const GameAction &action, const GameAction &oppAction) const; - T DiffRealizProb(const GameNode &node, const GameAction &oppAction) const; - T DiffNodeValue(const GameNode &node, const GamePlayer &player, - const GameAction &oppAction) const; + /// @brief Computes the derivatives of all action values with respect to the log + /// probabilities of all actions + /// @details Assumes the game has perfect recall and the profile is totally mixed. + /// @param[out] p_derivs Resized to a square matrix indexed by position in the profile; + /// entry (a, b) is the derivative of the value of action a with respect to the + /// log probability of action b. + void DiffActionValues(Matrix &p_derivs) const; MixedStrategyProfile ToMixedProfile() const; diff --git a/src/games/game.h b/src/games/game.h index e4f3f15864..08c11b5a03 100644 --- a/src/games/game.h +++ b/src/games/game.h @@ -83,6 +83,7 @@ template class MixedStrategyProfile; class StrategySupportProfile; template class MixedBehaviorProfile; +struct TreeLayout; class SequenceContingencies; @@ -746,6 +747,9 @@ class GameRep : public std::enable_shared_from_this { { return {}; } + /// Returns the flattened structure of the game tree for the current version of the game. + /// The layout is shared by all callers until the game is next modified. + virtual std::shared_ptr GetTreeLayout() const { throw UndefinedException(); } /// Returns a list of all subgame roots in the game virtual std::vector GetSubgames() const { throw UndefinedException(); } /// Returns the smallest subgame containing the information set diff --git a/src/games/gametree.cc b/src/games/gametree.cc index 1662bac363..06f7f30e68 100644 --- a/src/games/gametree.cc +++ b/src/games/gametree.cc @@ -1074,6 +1074,17 @@ GameSubgame GameTreeRep::GetMinimalSubgame(const GameInfoset &p_infoset) const return it->second; } +std::shared_ptr GameTreeRep::GetTreeLayout() const +{ + const std::scoped_lock lock(m_layoutMutex); + if (!m_layout || m_layoutVersion != GetVersion()) { + EnsureInfosetOrdering(); + m_layout = std::make_shared(*this); + m_layoutVersion = GetVersion(); + } + return m_layout; +} + std::vector> GameTreeRep::GetAbsentMindedReentries() const { EnsureOwnPriorActions(); diff --git a/src/games/gametree.h b/src/games/gametree.h index 40e0e61f6b..1f72762063 100644 --- a/src/games/gametree.h +++ b/src/games/gametree.h @@ -27,6 +27,7 @@ #include "gameexpl.h" #include "seqpure.h" #include "stratmixed.h" +#include #include namespace Gambit { @@ -722,6 +723,10 @@ class GameTreeRep final : public GameExplicitRep { std::unordered_map> m_subgameByRoot; }; mutable Lazy m_subgameData; + // The flattened layout of the tree, and the version of the game it describes + mutable std::mutex m_layoutMutex; + mutable std::shared_ptr m_layout; + mutable unsigned int m_layoutVersion{0}; /// @name Private auxiliary functions //@{ @@ -780,6 +785,7 @@ class GameTreeRep final : public GameExplicitRep { Rational GetPlayerMaxPayoff(const GamePlayer &) const override; bool IsAbsentMinded(const GameInfoset &p_infoset) const override; std::vector> GetAbsentMindedReentries() const override; + std::shared_ptr GetTreeLayout() const override; std::vector GetSubgames() const override; GameSubgame GetMinimalSubgame(const GameInfoset &) const override; //@} diff --git a/src/games/treelayout.cc b/src/games/treelayout.cc new file mode 100644 index 0000000000..f36e8eecdc --- /dev/null +++ b/src/games/treelayout.cc @@ -0,0 +1,121 @@ +// +// This file is part of Gambit +// Copyright (c) 1994-2026, The Gambit Project (https://www.gambit-project.org) +// +// FILE: src/games/treelayout.cc +// Flattened representation of the structure of a game tree +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// + +#include "games.h" +#include "gametree.h" +#include "treelayout.h" + +namespace Gambit { + +TreeLayout::TreeLayout(const GameRep &p_game) +{ + std::map playerIndex; + for (const auto &player : p_game.GetPlayers()) { + playerIndex[player.get()] = static_cast(m_players.size()); + m_players.push_back(player); + } + numPlayers = m_players.size(); + + size_t first = 1; + for (const auto &infoset : p_game.GetInfosets()) { + const size_t count = infoset->GetActions().size(); + infosetIndex[infoset.get()] = infosets.size(); + infosets.push_back( + {infoset.get(), playerIndex.at(infoset->GetPlayer().get()), first, count, {}}); + first += count; + } + numActions = first - 1; + numPersonalInfosets = infosets.size(); + for (const auto &infoset : p_game.GetChance()->GetInfosets()) { + infosetIndex[infoset.get()] = infosets.size(); + infosets.push_back({infoset.get(), -1, 0, infoset->GetActions().size(), {}}); + } + + std::vector nodes; + for (const auto &node : p_game.GetNodes()) { + nodes.push_back(node); + } + const size_t numNodes = nodes.size(); + parent.assign(numNodes, -1); + action.assign(numNodes, 0); + infoset.assign(numNodes, -1); + firstChild.assign(numNodes, 0); + numChildren.assign(numNodes, 0); + m_outcomes.resize(numNodes); + m_chanceActions.resize(numNodes); + + for (size_t index = 0; index < numNodes; index++) { + const GameNode &node = nodes[index]; + m_outcomes[index] = node->GetOutcome(); + firstChild[index] = childList.size(); + const GameInfoset nodeInfoset = node->GetInfoset(); + if (!nodeInfoset) { + continue; + } + const size_t info = infosetIndex.at(nodeInfoset.get()); + infoset[index] = static_cast(info); + for (const auto &[nodeAction, child] : node->GetActions()) { + const size_t childIndex = child->GetNumber() - 1; + childList.push_back(childIndex); + parent[childIndex] = static_cast(index); + if (info < numPersonalInfosets) { + action[childIndex] = infosets[info].firstAction + nodeAction->GetNumber() - 1; + } + else { + m_chanceActions[childIndex] = nodeAction; + } + } + numChildren[index] = childList.size() - firstChild[index]; + } + + for (auto &entry : infosets) { + for (const auto &member : entry.infoset->GetMembers()) { + entry.members.push_back(member->GetNumber() - 1); + } + } + for (const auto &[reentryInfoset, node] : p_game.GetAbsentMindedReentries()) { + reentries.emplace_back(infosetIndex.at(reentryInfoset.get()), node->GetNumber() - 1); + } +} + +template TreeLayout::Numbers TreeLayout::BuildNumbers() const +{ + Numbers numbers; + const size_t numNodes = parent.size(); + numbers.chanceProb.resize(numNodes, static_cast(1)); + numbers.payoffs.resize(numNodes * numPlayers); + for (size_t k = 0; k < numNodes; k++) { + if (const auto &chanceAction = m_chanceActions[k]) { + numbers.chanceProb[k] = + static_cast(chanceAction->GetInfoset()->GetActionProb(chanceAction)); + } + for (size_t pl = 0; pl < numPlayers; pl++) { + numbers.payoffs[k * numPlayers + pl] = m_outcomes[k]->GetPayoff(m_players[pl]); + } + } + return numbers; +} + +template TreeLayout::Numbers TreeLayout::BuildNumbers() const; +template TreeLayout::Numbers TreeLayout::BuildNumbers() const; + +} // end namespace Gambit diff --git a/src/games/treelayout.h b/src/games/treelayout.h new file mode 100644 index 0000000000..95a893f3ad --- /dev/null +++ b/src/games/treelayout.h @@ -0,0 +1,171 @@ +// +// This file is part of Gambit +// Copyright (c) 1994-2026, The Gambit Project (https://www.gambit-project.org) +// +// FILE: src/games/treelayout.h +// Flattened representation of the structure of a game tree +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// + +#ifndef GAMBIT_GAMES_TREELAYOUT_H +#define GAMBIT_GAMES_TREELAYOUT_H + +#include +#include +#include + +#include "core/lazy.h" +#include "core/matrix.h" +#include "game.h" + +namespace Gambit { + +/// @brief The structure of a game tree, flattened into arrays for repeated evaluation of +/// quantities such as realization probabilities and expected payoffs +/// +/// Nodes are indexed from 0 in the order of GameRep::GetNodes(), so a node's parent always +/// precedes it, and a node's index is one less than GameNodeRep::GetNumber(). Personal +/// information sets are indexed in the order of GameRep::GetInfosets(), followed by those of +/// the chance player. Actions at personal information sets are indexed from 1 in the same +/// order, matching a MixedBehaviorProfile on the full game; index 0 means that no personal +/// action leads to a node. +/// +/// A layout describes one version of a game; see GameRep::GetTreeLayout(). +struct TreeLayout { + struct Infoset { + GameInfosetRep *infoset{nullptr}; + int player{-1}; ///< position of the player in GameRep::GetPlayers(), or -1 for chance + size_t firstAction{0}; ///< index of the first action, for a personal information set + size_t numActions{0}; + std::vector members; ///< in the order of GameInfosetRep::GetMembers() + }; + + /// Numerical data of the game, converted to the arithmetic type used for evaluation + template struct Numbers { + std::vector chanceProb; ///< by node: probability of the chance action leading to it + std::vector payoffs; ///< numPlayers per node: payoffs of the outcome at the node + }; + + size_t numPlayers{0}; + size_t numActions{0}; ///< number of actions at personal information sets + size_t numPersonalInfosets{0}; ///< personal information sets come first in `infosets` + std::vector parent; ///< by node; -1 at the root + std::vector action; ///< by node: personal action leading to it, or 0 + std::vector infoset; ///< by node: its information set, or -1 if terminal + std::vector firstChild; ///< by node: children are the numChildren entries + std::vector numChildren; ///< of childList starting at firstChild + std::vector childList; + std::vector infosets; + std::vector> reentries; ///< (information set, node) absent-minded + std::map infosetIndex; + + /// Numerical data as type T (double or Rational), computed on first use + template const Numbers &GetNumbers() const; + + /// Build the layout of the current version of the game. The layout holds no reference + /// to the game itself, so the game can own the layout it hands out. + explicit TreeLayout(const GameRep &p_game); + +private: + // Sources of the numerical data, by node + std::vector m_players; + std::vector m_outcomes; + std::vector m_chanceActions; // null where no chance action leads to the node + + Lazy> m_doubleNumbers; + Lazy> m_rationalNumbers; + + template Numbers BuildNumbers() const; +}; + +/// @brief Compute the derivatives of action values with respect to the log probabilities +/// of actions at personal information sets +/// +/// The quantities are those of a behavior profile, indexed as in the layout: beliefs by node, +/// node values by node and player, and action values by action. Node values may be any +/// satisfying v(n) = c(n) + sum over children of Pr(child) v(child), for payoffs c(n) which do +/// not depend on the profile: for example, the payoff of the outcome at the node (as in +/// MixedBehaviorProfile), or the total of the outcomes from the root to a terminal node and +/// zero elsewhere. Action values must be the belief-weighted node values of the children of +/// the members of each information set. `p_pathProb(p_from, p_to)` must return the probability +/// of reaching node `p_to` from node `p_from`, an ancestor of it. +/// +/// Assumes the game has perfect recall. See Turocy (2001), "Computing the Quantal Response +/// Equilibrium Correspondence". +/// +/// @param[out] p_derivs Square matrix indexed by action; entry (a, b) is the derivative of the +/// value of action a with respect to the log probability of action b. Entries +/// where a and b are at the same information set are zero. +template +void DiffActionValues(const TreeLayout &p_layout, const std::vector &p_beliefs, + const std::vector &p_nodeValues, const std::vector &p_actionValues, + PathProb p_pathProb, Matrix &p_derivs) +{ + // The value of action a at information set I of player i is + // V(a) = sum_{h in I} mu(h) v_i(h a). Its derivative with respect to the log probability + // of action b has two parts: + // - for b taken above h, the change in beliefs: mu(h) (v_i(h a) - V(a)) for each member h + // whose path contains b; + // - for b taken at a node n below h a, the change in v_i(h a): + // mu(h) Pr(n b | h a) v_i(n b). + // Both are accumulated by visiting each node together with the actions taken above it. + const size_t numPlayers = p_layout.numPlayers; + p_derivs = static_cast(0); + std::vector above; // nodes reached by the personal actions taken above a node + for (size_t n = 0; n < p_layout.parent.size(); n++) { + const int info = p_layout.infoset[n]; + if (info < 0 || std::cmp_greater_equal(info, p_layout.numPersonalInfosets)) { + continue; + } + above.clear(); + for (size_t c = n; p_layout.parent[c] >= 0; c = p_layout.parent[c]) { + if (p_layout.action[c] != 0) { + above.push_back(c); + } + } + if (above.empty()) { + continue; + } + const size_t player = p_layout.infosets[info].player; + for (size_t j = 0; j < p_layout.numChildren[n]; j++) { + const size_t child = p_layout.childList[p_layout.firstChild[n] + j]; + const size_t a = p_layout.action[child]; + const T beliefWeight = + p_beliefs[n] * (p_nodeValues[child * numPlayers + player] - p_actionValues[a]); + for (const size_t up : above) { + p_derivs(a, p_layout.action[up]) += beliefWeight; + const size_t h = p_layout.parent[up]; + const size_t owner = p_layout.infosets[p_layout.infoset[h]].player; + p_derivs(p_layout.action[up], a) += + p_beliefs[h] * p_pathProb(up, child) * p_nodeValues[child * numPlayers + owner]; + } + } + } +} + +template <> inline const TreeLayout::Numbers &TreeLayout::GetNumbers() const +{ + return m_doubleNumbers.Get([this] { return BuildNumbers(); }); +} + +template <> inline const TreeLayout::Numbers &TreeLayout::GetNumbers() const +{ + return m_rationalNumbers.Get([this] { return BuildNumbers(); }); +} + +} // end namespace Gambit + +#endif // GAMBIT_GAMES_TREELAYOUT_H diff --git a/src/pygambit/behavmixed.pxi b/src/pygambit/behavmixed.pxi index a6ec3c9797..6ae081e3ac 100644 --- a/src/pygambit/behavmixed.pxi +++ b/src/pygambit/behavmixed.pxi @@ -1157,6 +1157,11 @@ class MixedBehaviorProfileDouble(MixedBehaviorProfile): def _infoset_regret(self, node: Node) -> float: return deref(self.profile).GetRegret(cython.cast(Node, node)._infoset_handle()) + def _diff_action_values(self) -> list[list[float]]: + # Private, for testing: derivatives of action values with respect to the log + # probabilities of actions, indexed by position in the profile. + return ProfileDiffActionValues(deref(self.profile)) + def _agent_max_regret(self) -> float: return deref(self.profile).GetAgentMaxRegret() diff --git a/src/pygambit/gambit.pxd b/src/pygambit/gambit.pxd index 25ab7c6df1..001ef6ec25 100644 --- a/src/pygambit/gambit.pxd +++ b/src/pygambit/gambit.pxd @@ -498,6 +498,9 @@ cdef extern from "util.h": string WriteHTMLFile(c_Game) stdlist[shared_ptr[T]] make_list_of_pointer[T](stdlist[T]) except + + stdvector[stdvector[double]] ProfileDiffActionValues( + c_MixedBehaviorProfile[double] + ) except + void setitem_array_int "setitem"(Array[int] *, int, int) except + void setitem_array_number "setitem"(Array[c_Number], int, c_Number) except + @@ -692,11 +695,31 @@ cdef extern from "solvers/hp/hp.h" namespace "Gambit::Nash": PolishFailed RegretTargetNotReached +cdef extern from "solvers/path/path.h": + cdef cppclass c_TracePathStats "Gambit::TracePathStats": + size_t predictor_attempts + size_t accepted_steps + size_t rejected_distance + size_t rejected_contraction + size_t rejected_orientation + size_t corrector_iterations + size_t function_evals + size_t jacobian_evals + size_t factorizations + double function_seconds + double jacobian_seconds + double factorization_seconds + double newton_seconds + double terminate_seconds + double callback_seconds + double total_seconds + cdef extern from "solvers/hp/hp.h": cdef cppclass c_HPStrategyResult "Gambit::Nash::HPStrategyResult": optional[c_MixedStrategyProfile[double]] equilibrium bool success c_HPTerminationReason reason + stdvector[c_TracePathStats] stats c_HPStrategyResult HPStrategySolve( c_MixedStrategyProfile[double], double, StrategyCallbackType[double], HPEventCallbackType @@ -760,11 +783,13 @@ cdef extern from "solvers/logit/logit.h": bool success c_LogitTerminationReason reason stdvector[c_LogitBifurcationStrategy] bifurcations + stdvector[c_TracePathStats] stats cdef cppclass c_LogitBehaviorResult "Gambit::LogitBehaviorResult": optional[c_MixedBehaviorProfile[double]] equilibrium bool success c_LogitTerminationReason reason stdvector[c_LogitBifurcationBehavior] bifurcations + stdvector[c_TracePathStats] stats c_LogitStrategyResult LogitStrategySolveEquilibrium( c_LogitQREMixedStrategyProfile, double, double, double, @@ -782,10 +807,14 @@ cdef extern from "nash.h": ] EnumMixedStrategySolveCliquesWrapper[T]( c_Game, StrategyCallbackType[T] ) except +RuntimeError - stdlist[c_LogitQREMixedBehaviorProfile] LogitBehaviorPrincipalBranchWrapper( + pair[ + stdlist[c_LogitQREMixedBehaviorProfile], stdvector[c_TracePathStats] + ] LogitBehaviorPrincipalBranchWrapper( c_Game, double, double, double ) except + - stdlist[shared_ptr[c_LogitQREMixedBehaviorProfile]] LogitBehaviorAtLambdaWrapper( + pair[ + stdlist[shared_ptr[c_LogitQREMixedBehaviorProfile]], stdvector[c_TracePathStats] + ] LogitBehaviorAtLambdaWrapper( c_Game, stdlist[double], double, double, LogitEventCallbackType[c_LogitQREMixedBehaviorProfile] ) except + @@ -793,10 +822,14 @@ cdef extern from "nash.h": shared_ptr[c_MixedBehaviorProfile[double]], bool, double, double, LogitEventCallbackType[c_LogitQREMixedBehaviorProfile] ) except + - stdlist[c_LogitQREMixedStrategyProfile] LogitStrategyPrincipalBranchWrapper( + pair[ + stdlist[c_LogitQREMixedStrategyProfile], stdvector[c_TracePathStats] + ] LogitStrategyPrincipalBranchWrapper( c_Game, double, double, double ) except + - stdlist[shared_ptr[c_LogitQREMixedStrategyProfile]] LogitStrategyAtLambdaWrapper( + pair[ + stdlist[shared_ptr[c_LogitQREMixedStrategyProfile]], stdvector[c_TracePathStats] + ] LogitStrategyAtLambdaWrapper( c_Game, stdlist[double], double, double, LogitEventCallbackType[c_LogitQREMixedStrategyProfile] ) except + diff --git a/src/pygambit/nash.h b/src/pygambit/nash.h index d0b3831d2c..55a2c9eeaa 100644 --- a/src/pygambit/nash.h +++ b/src/pygambit/nash.h @@ -42,13 +42,13 @@ EnumMixedStrategySolveCliquesWrapper( cliques}; } -inline std::list +inline std::pair, std::vector> LogitBehaviorPrincipalBranchWrapper(const Game &p_game, double p_regret, double p_firstStep, double p_maxAccel) { - return LogitBehaviorSolve(LogitQREMixedBehaviorProfile(p_game), p_regret, - PathTracer::TraceDirection::Positive, p_firstStep, p_maxAccel) - .profiles; + auto trace = LogitBehaviorSolve(LogitQREMixedBehaviorProfile(p_game), p_regret, + PathTracer::TraceDirection::Positive, p_firstStep, p_maxAccel); + return {std::move(trace.profiles), std::move(trace.stats)}; } std::shared_ptr @@ -62,45 +62,47 @@ LogitBehaviorEstimateWrapper(std::shared_ptr> p_fre p_stopAtLocal, p_firstStep, p_maxAccel, p_onEvent)); } -std::list> +std::pair>, std::vector> LogitBehaviorAtLambdaWrapper(const Game &p_game, const std::list &p_targetLambda, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent = NullLogitEventCallback) { LogitQREMixedBehaviorProfile start(p_game); - std::list> ret; - for (auto &qre : - LogitBehaviorSolveLambda(start, p_targetLambda, PathTracer::TraceDirection::Positive, - p_firstStep, p_maxAccel, p_onEvent)) { - ret.push_back(std::make_shared(qre)); + auto result = + LogitBehaviorSolveLambda(start, p_targetLambda, PathTracer::TraceDirection::Positive, + p_firstStep, p_maxAccel, p_onEvent); + std::list> profiles; + for (auto &qre : result.profiles) { + profiles.push_back(std::make_shared(qre)); } - return ret; + return {std::move(profiles), std::move(result.stats)}; } -inline std::list +inline std::pair, std::vector> LogitStrategyPrincipalBranchWrapper(const Game &p_game, double p_regret, double p_firstStep, double p_maxAccel) { - return LogitStrategySolve(LogitQREMixedStrategyProfile(p_game), p_regret, - PathTracer::TraceDirection::Positive, p_firstStep, p_maxAccel) - .profiles; + auto trace = LogitStrategySolve(LogitQREMixedStrategyProfile(p_game), p_regret, + PathTracer::TraceDirection::Positive, p_firstStep, p_maxAccel); + return {std::move(trace.profiles), std::move(trace.stats)}; } -std::list> +std::pair>, std::vector> LogitStrategyAtLambdaWrapper(const Game &p_game, const std::list &p_targetLambda, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent = NullLogitEventCallback) { LogitQREMixedStrategyProfile start(p_game); - std::list> ret; - for (auto &qre : - LogitStrategySolveLambda(start, p_targetLambda, PathTracer::TraceDirection::Positive, - p_firstStep, p_maxAccel, p_onEvent)) { - ret.push_back(std::make_shared(qre)); + auto result = + LogitStrategySolveLambda(start, p_targetLambda, PathTracer::TraceDirection::Positive, + p_firstStep, p_maxAccel, p_onEvent); + std::list> profiles; + for (auto &qre : result.profiles) { + profiles.push_back(std::make_shared(qre)); } - return ret; + return {std::move(profiles), std::move(result.stats)}; } std::shared_ptr diff --git a/src/pygambit/nash.pxi b/src/pygambit/nash.pxi index 57486dc294..953fcf621d 100644 --- a/src/pygambit/nash.pxi +++ b/src/pygambit/nash.pxi @@ -196,6 +196,32 @@ class LogitBifurcation: after: "LogitQREMixedStrategyProfile | LogitQREMixedBehaviorProfile" +@dataclasses.dataclass(frozen=True) +class _TracePathStats: + """Counts and wall-clock timings from one run of the path tracer. + + Private and undocumented, pending a consistent design for reporting the performance + of solution methods. + """ + kind: str + predictor_attempts: int + accepted_steps: int + rejected_distance: int + rejected_contraction: int + rejected_orientation: int + corrector_iterations: int + function_evals: int + jacobian_evals: int + factorizations: int + function_seconds: float + jacobian_seconds: float + factorization_seconds: float + newton_seconds: float + terminate_seconds: float + callback_seconds: float + total_seconds: float + + @dataclasses.dataclass(frozen=True) class EnumPolyCandidateSupportEvent: """Reports a support profile examined by :ref:`enumpoly ` as a candidate @@ -515,6 +541,9 @@ class LogitResult(NashResultBase): success: bool reason: LogitTerminationReason bifurcations: list[LogitBifurcation] + _trace_stats: list[_TracePathStats] = dataclasses.field( + default_factory=list, repr=False, compare=False + ) @dataclasses.dataclass(frozen=True, kw_only=True) @@ -540,6 +569,9 @@ class HPResult(NashResultBase): equilibrium: MixedStrategyProfileDouble | None success: bool reason: HPTerminationReason + _trace_stats: list[_TracePathStats] = dataclasses.field( + default_factory=list, repr=False, compare=False + ) cdef public string InvokeStrategyCallbackDouble( @@ -973,6 +1005,33 @@ def _convert_logit_bifurcations_behavior( ] +@cython.cfunc +def _convert_trace_stats(stats: stdvector[c_TracePathStats], kinds: tuple = ("trace",)) -> list: + # Entries beyond the length of `kinds` take its last element. + return [ + _TracePathStats( + kind=kinds[min(i, len(kinds) - 1)], + predictor_attempts=stats[i].predictor_attempts, + accepted_steps=stats[i].accepted_steps, + rejected_distance=stats[i].rejected_distance, + rejected_contraction=stats[i].rejected_contraction, + rejected_orientation=stats[i].rejected_orientation, + corrector_iterations=stats[i].corrector_iterations, + function_evals=stats[i].function_evals, + jacobian_evals=stats[i].jacobian_evals, + factorizations=stats[i].factorizations, + function_seconds=stats[i].function_seconds, + jacobian_seconds=stats[i].jacobian_seconds, + factorization_seconds=stats[i].factorization_seconds, + newton_seconds=stats[i].newton_seconds, + terminate_seconds=stats[i].terminate_seconds, + callback_seconds=stats[i].callback_seconds, + total_seconds=stats[i].total_seconds, + ) + for i in range(stats.size()) + ] + + def _enumpure_strategy_solve(game: Game, nash_callback: object = None) -> EnumPureResult: result: c_EnumPureStrategyResult = EnumPureStrategySolve( game.game, MakeStrategyCallback[c_Rational](nash_callback) @@ -1315,6 +1374,7 @@ def _logit_strategy_solve( equilibrium=_convert_msp_opt_d(result.equilibrium), success=result.success, reason=LogitTerminationReason(result.reason), bifurcations=_convert_logit_bifurcations_strategy(result.bifurcations), + _trace_stats=_convert_trace_stats(result.stats), ) @@ -1333,6 +1393,7 @@ def _logit_behavior_solve( equilibrium=_convert_mbp_opt_d(result.equilibrium), success=result.success, reason=LogitTerminationReason(result.reason), bifurcations=_convert_logit_bifurcations_behavior(result.bifurcations), + _trace_stats=_convert_trace_stats(result.stats), ) @@ -1404,27 +1465,43 @@ def _logit_strategy_lambda(game: Game, lam: float | list[float], first_step: float = .03, max_accel: float = 1.1, - event_callback: object = None) -> list[LogitQREMixedStrategyProfile]: + event_callback: object = None, + _with_stats: bool = False): """Compute the first QRE encountered along the principal branch of the strategic game corresponding to lambda value `lam`. + + If `_with_stats` is True, return a pair of the list of QREs and the list of path-tracing + statistics, one per value of `lam`. """ try: iter(lam) except TypeError: lam = [lam] - return [LogitQREMixedStrategyProfile.wrap(profile) - for profile in LogitStrategyAtLambdaWrapper( - game.game, lam, first_step, max_accel, - MakeLogitEventCallback[c_LogitQREMixedStrategyProfile](event_callback) - )] + result: pair[ + stdlist[shared_ptr[c_LogitQREMixedStrategyProfile]], stdvector[c_TracePathStats] + ] = LogitStrategyAtLambdaWrapper( + game.game, lam, first_step, max_accel, + MakeLogitEventCallback[c_LogitQREMixedStrategyProfile](event_callback) + ) + profiles = [LogitQREMixedStrategyProfile.wrap(profile) for profile in result.first] + if _with_stats: + return profiles, _convert_trace_stats(result.second) + return profiles def _logit_strategy_branch(game: Game, maxregret: float, first_step: float, - max_accel: float): - solns = LogitStrategyPrincipalBranchWrapper(game.game, maxregret, first_step, max_accel) - return [LogitQREMixedStrategyProfile.wrap(profile) for profile in make_list_of_pointer(solns)] + max_accel: float, + _with_stats: bool = False): + result: pair[ + stdlist[c_LogitQREMixedStrategyProfile], stdvector[c_TracePathStats] + ] = LogitStrategyPrincipalBranchWrapper(game.game, maxregret, first_step, max_accel) + profiles = [LogitQREMixedStrategyProfile.wrap(profile) + for profile in make_list_of_pointer(result.first)] + if _with_stats: + return profiles, _convert_trace_stats(result.second) + return profiles @cython.cclass @@ -1495,27 +1572,43 @@ def _logit_behavior_lambda(game: Game, lam: float | list[float], first_step: float = .03, max_accel: float = 1.1, - event_callback: object = None) -> list[LogitQREMixedBehaviorProfile]: + event_callback: object = None, + _with_stats: bool = False): """Compute the first QRE encountered along the principal branch of the extensive game corresponding to lambda value `lam`. + + If `_with_stats` is True, return a pair of the list of QREs and the list of path-tracing + statistics, one per value of `lam`. """ try: iter(lam) except TypeError: lam = [lam] - return [LogitQREMixedBehaviorProfile.wrap(profile) - for profile in LogitBehaviorAtLambdaWrapper( - game.game, lam, first_step, max_accel, - MakeLogitEventCallback[c_LogitQREMixedBehaviorProfile](event_callback) - )] + result: pair[ + stdlist[shared_ptr[c_LogitQREMixedBehaviorProfile]], stdvector[c_TracePathStats] + ] = LogitBehaviorAtLambdaWrapper( + game.game, lam, first_step, max_accel, + MakeLogitEventCallback[c_LogitQREMixedBehaviorProfile](event_callback) + ) + profiles = [LogitQREMixedBehaviorProfile.wrap(profile) for profile in result.first] + if _with_stats: + return profiles, _convert_trace_stats(result.second) + return profiles def _logit_behavior_branch(game: Game, maxregret: float, first_step: float, - max_accel: float): - solns = LogitBehaviorPrincipalBranchWrapper(game.game, maxregret, first_step, max_accel) - return [LogitQREMixedBehaviorProfile.wrap(profile) for profile in make_list_of_pointer(solns)] + max_accel: float, + _with_stats: bool = False): + result: pair[ + stdlist[c_LogitQREMixedBehaviorProfile], stdvector[c_TracePathStats] + ] = LogitBehaviorPrincipalBranchWrapper(game.game, maxregret, first_step, max_accel) + profiles = [LogitQREMixedBehaviorProfile.wrap(profile) + for profile in make_list_of_pointer(result.first)] + if _with_stats: + return profiles, _convert_trace_stats(result.second) + return profiles def _hp_strategy_solve( @@ -1532,4 +1625,5 @@ def _hp_strategy_solve( prior=prior, maxregret=maxregret, equilibrium=_convert_msp_opt_d(result.equilibrium), success=result.success, reason=HPTerminationReason(result.reason), + _trace_stats=_convert_trace_stats(result.stats, ("trace", "polish")), ) diff --git a/src/pygambit/util.h b/src/pygambit/util.h index ff76e6e098..46633afadf 100644 --- a/src/pygambit/util.h +++ b/src/pygambit/util.h @@ -116,6 +116,23 @@ void setitem(C &p_container, const X &p_index, const T &p_value) p_container[p_index] = p_value; } +/// Derivatives of action values with respect to log action probabilities, as nested vectors +/// indexed from 0 by position in the profile +inline std::vector> +ProfileDiffActionValues(const MixedBehaviorProfile &p_profile) +{ + Matrix derivs; + p_profile.DiffActionValues(derivs); + std::vector> result(derivs.NumRows(), + std::vector(derivs.NumColumns())); + for (size_t i = 0; i < derivs.NumRows(); i++) { + for (size_t j = 0; j < derivs.NumColumns(); j++) { + result[i][j] = derivs(derivs.MinRow() + i, derivs.MinCol() + j); + } + } + return result; +} + template std::list> make_list_of_pointer(const std::list &p_list) { std::list> result; diff --git a/src/solvers/hp/hp.cc b/src/solvers/hp/hp.cc index 3e0c80b942..dbbc488888 100644 --- a/src/solvers/hp/hp.cc +++ b/src/solvers/hp/hp.cc @@ -91,7 +91,7 @@ HPStrategyResult HPStrategySolve(const MixedStrategyProfile &p_prior, do criterion_function, NullCriterionBracketFunction, p_cancel); if (!tracing_result.status) { - return {std::nullopt, false, HPTerminationReason::TraceFailed}; + return {std::nullopt, false, HPTerminationReason::TraceFailed, {tracing_result.stats}}; } const PolishResult polishing_result = PolishPoint( @@ -105,14 +105,15 @@ HPStrategyResult HPStrategySolve(const MixedStrategyProfile &p_prior, do p_onEvent(HPStepEvent{.profile = profile, .t = point[1]}); }); + const std::vector stats{tracing_result.stats, polishing_result.stats}; if (!polishing_result.status) { - return {std::nullopt, false, HPTerminationReason::PolishFailed}; + return {std::nullopt, false, HPTerminationReason::PolishFailed, stats}; } const MixedStrategyProfile equilibrium = system.ExtractEquilibrium(x); if (equilibrium.GetMaxRegret() > p_maxRegret) { - return {std::nullopt, false, HPTerminationReason::RegretTargetNotReached}; + return {std::nullopt, false, HPTerminationReason::RegretTargetNotReached, stats}; } p_onEquilibrium(equilibrium); - return {equilibrium, true, HPTerminationReason::Converged}; + return {equilibrium, true, HPTerminationReason::Converged, stats}; } } // namespace Gambit::Nash diff --git a/src/solvers/hp/hp.h b/src/solvers/hp/hp.h index 5b12e57acd..60dd00fb1c 100644 --- a/src/solvers/hp/hp.h +++ b/src/solvers/hp/hp.h @@ -27,8 +27,10 @@ #include #include #include +#include #include "solvers/nash.h" +#include "solvers/path/path.h" namespace Gambit::Nash { @@ -57,6 +59,7 @@ struct HPStrategyResult { std::optional> equilibrium; bool success{false}; HPTerminationReason reason{HPTerminationReason::TraceFailed}; + std::vector stats; ///< one entry for the trace, then one for polishing if run }; /// @brief Compute a Nash equilibrium of a game using the homotopy method of diff --git a/src/solvers/logit/efglogit.cc b/src/solvers/logit/efglogit.cc index 3af5a9ce47..6d779cb973 100644 --- a/src/solvers/logit/efglogit.cc +++ b/src/solvers/logit/efglogit.cc @@ -21,14 +21,17 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // +#include #include +#include #include "games.h" #include "games/gametree.h" #include "logit.h" -#include "logbehav.h" #include "solvers/path/path.h" +namespace Gambit { + namespace { double LogLike(const Vector &p_frequencies, const Vector &p_point) @@ -52,15 +55,6 @@ MixedBehaviorProfile PointToProfile(const Game &p_game, const Vector PointToLogProfile(const Game &p_game, const Vector &p_point) -{ - LogBehavProfile profile(p_game); - for (size_t i = 1; i <= profile.BehaviorProfileLength(); i++) { - profile.SetLogProb(i, p_point[i]); - } - return profile; -} - Vector ProfileToPoint(const LogitQREMixedBehaviorProfile &p_profile) { Vector point(p_profile.size() + 1); @@ -76,170 +70,218 @@ bool RegretTerminationFunction(const Game &p_game, const Vector &p_point return (p_point.back() < 0.0 || PointToProfile(p_game, p_point).GetAgentMaxRegret() < p_regret); } -class EquationSystem { -public: - explicit EquationSystem(const Game &p_game); - ~EquationSystem() = default; - - // Compute the value of the system of equations at the specified point. - void GetValue(const Vector &p_point, Vector &p_lhs) const; - - // Compute the Jacobian matrix at the specified point. - void GetJacobian(const Vector &p_point, Matrix &p_matrix) const; - -private: - // - // This abstract base class represents one of the defining equations of the system. - // - class Equation { - public: - virtual ~Equation() = default; - - virtual double Value(const LogBehavProfile &p_point, double p_lambda) const = 0; - - virtual void Gradient(const LogBehavProfile &p_point, double p_lambda, - Vector &p_gradient) const = 0; - }; - - // - // This class represents the equation that the probabilities of actions - // in information set (pl,iset) sums to one - // - class SumToOneEquation : public Equation { - private: - Game m_game; - GameInfoset m_infoset; - - public: - SumToOneEquation(const Game &p_game, const GameInfoset &p_infoset) - : m_game(p_game), m_infoset(p_infoset) - { - } - - double Value(const LogBehavProfile &p_profile, double p_lambda) const override; - - void Gradient(const LogBehavProfile &p_profile, double p_lambda, - Vector &p_gradient) const override; - }; - - // - // This class represents the equation relating the probability of - // playing the action to the probability of playing the reference action. - // - class RatioEquation : public Equation { - private: - Game m_game; - GameInfoset m_infoset; - GameAction m_action, m_refAction; - - public: - RatioEquation(const Game &p_game, const GameAction &p_action, const GameAction &p_refAction) - : m_game(p_game), m_infoset(p_action->GetInfoset()), m_action(p_action), - m_refAction(p_refAction) - { - } - - double Value(const LogBehavProfile &p_profile, double p_lambda) const override; - - void Gradient(const LogBehavProfile &p_profile, double p_lambda, - Vector &p_gradient) const override; - }; - - Array> m_equations; - Game m_game; +// +// Quantities derived from a point on the path, stored in arrays aligned with the tree layout +// of the game. These are the quantities a MixedBehaviorProfile computes, but derived from the +// log probabilities that are the coordinates of the path. +// +// Realization probabilities are kept as logarithms, and beliefs are computed relative to the +// most likely member of each information set. This keeps beliefs accurate at information +// sets whose realization probability is going to zero, which is needed to approximate the +// limiting sequential equilibrium well, and where the probabilities themselves may underflow. +// +// Node values here include the payoffs of the outcomes above each node, accumulated along the +// path from the root. Off the path these differ from the values a MixedBehaviorProfile would +// compute by more than a per-node constant, because the probabilities at an information set +// need not sum to one there; this convention defines the equations the tracer has always used. +// +struct LogPathValues { + std::vector prob, logProb; // by action; entry 0 unused + std::vector logRealizProb; // by node + std::vector belief; // by node; meaningful at personal information sets + std::vector nodeValues; // by node, one entry per player + std::vector actionValues; // by action; entry 0 unused }; -EquationSystem::EquationSystem(const Game &p_game) : m_game(p_game) +/// Total payoffs of the outcomes on the path from the root to each node, one entry per player +std::vector ComputePathPayoffs(const TreeLayout &p_layout) { - for (const auto &player : m_game->GetPlayers()) { - for (const auto &infoset : player->GetInfosets()) { - m_equations.push_back(std::make_shared(m_game, infoset)); - const auto &actions = infoset->GetActions(); - for (auto action = std::next(actions.begin()); action != actions.end(); ++action) { - m_equations.push_back(std::make_shared(m_game, *action, actions.front())); - } + const size_t numPlayers = p_layout.numPlayers; + const auto &payoffs = p_layout.GetNumbers().payoffs; + std::vector pathPayoffs(payoffs.size()); + for (size_t k = 0; k < p_layout.parent.size(); k++) { + for (size_t pl = 0; pl < numPlayers; pl++) { + const double inherited = + (k == 0) ? 0.0 : pathPayoffs[static_cast(p_layout.parent[k]) * numPlayers + pl]; + pathPayoffs[k * numPlayers + pl] = inherited + payoffs[k * numPlayers + pl]; } } + return pathPayoffs; } -double EquationSystem::SumToOneEquation::Value(const LogBehavProfile &p_profile, - double p_lambda) const +void ComputeLogPathValues(const TreeLayout &p_layout, const std::vector &p_logChanceProb, + const std::vector &p_pathPayoffs, const Vector &p_point, + LogPathValues &p_values) { - double value = -1.0; - for (const auto &action : m_infoset->GetActions()) { - value += p_profile.GetProb(action); + const size_t numNodes = p_layout.parent.size(); + const size_t numPlayers = p_layout.numPlayers; + const auto &numbers = p_layout.GetNumbers(); + auto &v = p_values; + v.prob.resize(p_layout.numActions + 1); + v.logProb.resize(p_layout.numActions + 1); + for (size_t a = 1; a <= p_layout.numActions; a++) { + v.logProb[a] = p_point[a]; + v.prob[a] = std::exp(p_point[a]); } - return value; -} -void EquationSystem::SumToOneEquation::Gradient(const LogBehavProfile &p_profile, - double p_lambda, Vector &p_gradient) const -{ - int i = 1; - for (const auto &player : m_game->GetPlayers()) { - for (const auto &infoset : player->GetInfosets()) { - for (const auto &action : infoset->GetActions()) { - p_gradient[i++] = (infoset == m_infoset) ? p_profile.GetProb(action) : 0.0; + v.logRealizProb.resize(numNodes); + v.logRealizProb[0] = 0.0; + for (size_t k = 1; k < numNodes; k++) { + const size_t a = p_layout.action[k]; + v.logRealizProb[k] = + v.logRealizProb[p_layout.parent[k]] + ((a != 0) ? v.logProb[a] : p_logChanceProb[k]); + } + + v.belief.assign(numNodes, 0.0); + for (size_t i = 0; i < p_layout.numPersonalInfosets; i++) { + const auto &members = p_layout.infosets[i].members; + double infosetProb = 0.0; + for (const size_t m : members) { + infosetProb += std::exp(v.logRealizProb[m]); + } + if (infosetProb == 0.0) { + // Possible when a zero-probability chance action makes the information set + // unreachable; beliefs are then taken to be uniform + for (const size_t m : members) { + v.belief[m] = 1.0 / static_cast(members.size()); } + continue; + } + double maxLogProb = v.logRealizProb[members.front()]; + for (const size_t m : members) { + maxLogProb = std::max(maxLogProb, v.logRealizProb[m]); + } + double total = 0.0; + for (const size_t m : members) { + total += std::exp(v.logRealizProb[m] - maxLogProb); + } + const double mostLikelyBelief = 1.0 / total; + for (const size_t m : members) { + v.belief[m] = mostLikelyBelief * std::exp(v.logRealizProb[m] - maxLogProb); } } - // Derivative wrt lambda is zero - p_gradient[i] = 0.0; -} -double EquationSystem::RatioEquation::Value(const LogBehavProfile &p_profile, - double p_lambda) const -{ - return (p_profile.GetLogProb(m_action) - p_profile.GetLogProb(m_refAction) - - p_lambda * (p_profile.GetPayoff(m_action) - p_profile.GetPayoff(m_refAction))); -} + // Children follow their parents in the layout, so a reverse sweep is a postorder traversal + v.nodeValues.resize(numNodes * numPlayers); + for (size_t k = numNodes; k-- > 0;) { + double *value = &v.nodeValues[k * numPlayers]; + if (p_layout.numChildren[k] == 0) { + std::copy_n(&p_pathPayoffs[k * numPlayers], numPlayers, value); + continue; + } + std::fill_n(value, numPlayers, 0.0); + for (size_t j = 0; j < p_layout.numChildren[k]; j++) { + const size_t child = p_layout.childList[p_layout.firstChild[k] + j]; + const size_t a = p_layout.action[child]; + const double childProb = (a != 0) ? v.prob[a] : numbers.chanceProb[child]; + for (size_t pl = 0; pl < numPlayers; pl++) { + value[pl] += childProb * v.nodeValues[child * numPlayers + pl]; + } + } + } -void EquationSystem::RatioEquation::Gradient(const LogBehavProfile &p_profile, - double p_lambda, Vector &p_gradient) const -{ - int i = 1; - for (const auto &player : m_game->GetPlayers()) { - for (const auto &infoset : player->GetInfosets()) { - for (const auto &action : infoset->GetActions()) { - if (action == m_refAction) { - p_gradient[i] = -1.0; - } - else if (action == m_action) { - p_gradient[i] = 1.0; - } - else if (infoset == m_infoset) { - p_gradient[i] = 0.0; - } - else { - p_gradient[i] = -p_lambda * (p_profile.DiffActionValue(m_action, action) - - p_profile.DiffActionValue(m_refAction, action)); - } - i++; + v.actionValues.assign(p_layout.numActions + 1, 0.0); + for (size_t i = 0; i < p_layout.numPersonalInfosets; i++) { + const auto &infoset = p_layout.infosets[i]; + for (const size_t member : infoset.members) { + for (size_t j = 0; j < p_layout.numChildren[member]; j++) { + const size_t child = p_layout.childList[p_layout.firstChild[member] + j]; + v.actionValues[p_layout.action[child]] += + v.belief[member] * v.nodeValues[child * numPlayers + infoset.player]; } } } +} - p_gradient[i] = (p_profile.GetPayoff(m_refAction) - p_profile.GetPayoff(m_action)); +class EquationSystem { +public: + explicit EquationSystem(const Game &p_game); + ~EquationSystem() = default; + + // Compute the value of the system of equations at the specified point. + void GetValue(const Vector &p_point, Vector &p_lhs) const; + + // Compute the Jacobian matrix at the specified point. + void GetJacobian(const Vector &p_point, Matrix &p_matrix) const; + +private: + std::shared_ptr m_layout; + std::vector m_logChanceProb; // by node + std::vector m_pathPayoffs; // by node, one entry per player + mutable LogPathValues m_values; + mutable Matrix m_derivs; +}; + +EquationSystem::EquationSystem(const Game &p_game) + : m_layout(p_game->GetTreeLayout()), m_pathPayoffs(ComputePathPayoffs(*m_layout)), + m_derivs(m_layout->numActions, m_layout->numActions) +{ + const auto &chanceProb = m_layout->GetNumbers().chanceProb; + m_logChanceProb.resize(chanceProb.size()); + std::ranges::transform(chanceProb, m_logChanceProb.begin(), + [](double p) { return std::log(p); }); } +// Equations are, for each information set in turn, that its action probabilities sum to +// one, followed by one equation for each action but the first relating its log probability +// to that of the first. void EquationSystem::GetValue(const Vector &p_point, Vector &p_lhs) const { - const LogBehavProfile profile(PointToLogProfile(m_game, p_point)); + ComputeLogPathValues(*m_layout, m_logChanceProb, m_pathPayoffs, p_point, m_values); + const auto &v = m_values; const double lambda = p_point.back(); - std::transform( - m_equations.begin(), m_equations.end(), p_lhs.begin(), - [&profile, lambda](std::shared_ptr e) { return e->Value(profile, lambda); }); + size_t row = 1; + for (size_t i = 0; i < m_layout->numPersonalInfosets; i++) { + const auto &infoset = m_layout->infosets[i]; + const size_t ref = infoset.firstAction; + double sum = -1.0; + for (size_t a = ref; a < ref + infoset.numActions; a++) { + sum += v.prob[a]; + } + p_lhs[row++] = sum; + for (size_t a = ref + 1; a < ref + infoset.numActions; a++) { + p_lhs[row++] = + v.logProb[a] - v.logProb[ref] - lambda * (v.actionValues[a] - v.actionValues[ref]); + } + } } void EquationSystem::GetJacobian(const Vector &p_point, Matrix &p_matrix) const { - const LogBehavProfile profile(PointToLogProfile(m_game, p_point)); + // Rows of p_matrix are variables (log probabilities, then lambda); columns are equations, + // in the same order as in GetValue(). + ComputeLogPathValues(*m_layout, m_logChanceProb, m_pathPayoffs, p_point, m_values); + const auto &v = m_values; + DiffActionValues( + *m_layout, v.belief, v.nodeValues, v.actionValues, + [&v](size_t p_from, size_t p_to) { + return std::exp(v.logRealizProb[p_to] - v.logRealizProb[p_from]); + }, + m_derivs); + const size_t numActions = m_layout->numActions; const double lambda = p_point.back(); - Vector column(p_point.size()); - for (size_t i = 1; i <= m_equations.size(); i++) { - m_equations[i]->Gradient(profile, lambda, column); - p_matrix.SetColumn(i, column); + p_matrix = 0.0; + size_t column = 1; + for (size_t i = 0; i < m_layout->numPersonalInfosets; i++) { + const auto &infoset = m_layout->infosets[i]; + const size_t first = infoset.firstAction; + const size_t last = first + infoset.numActions - 1; + for (size_t a = first; a <= last; a++) { + p_matrix(a, column) = v.prob[a]; + } + column++; + for (size_t a = first + 1; a <= last; a++, column++) { + for (size_t var = 1; var < first; var++) { + p_matrix(var, column) = -lambda * (m_derivs(a, var) - m_derivs(first, var)); + } + for (size_t var = last + 1; var <= numActions; var++) { + p_matrix(var, column) = -lambda * (m_derivs(a, var) - m_derivs(first, var)); + } + p_matrix(a, column) = 1.0; + p_matrix(first, column) = -1.0; + p_matrix(numActions + 1, column) = v.actionValues[first] - v.actionValues[a]; + } } } @@ -360,8 +402,6 @@ void EstimatorCallbackFunction::OnPerturbation(bool p_active, const Vector LogitBehaviorSolve(const LogitQREMixedBehaviorProfile &p_start, double p_regret, PathTracer::TraceDirection p_direction, double p_firstStep, double p_maxAccel, @@ -384,7 +424,7 @@ LogitBehaviorSolve(const LogitQREMixedBehaviorProfile &p_start, double p_regret, Vector x(ProfileToPoint(p_start)); TracingCallbackFunction callback(game, p_onEvent); EquationSystem system(game); - tracer.TracePath( + const auto result = tracer.TracePath( [&system](const Vector &p_point, Vector &p_lhs) { system.GetValue(p_point, p_lhs); }, @@ -407,16 +447,16 @@ LogitBehaviorSolve(const LogitQREMixedBehaviorProfile &p_start, double p_regret, if (profiles.back().GetProfile().GetAgentMaxRegret() < p_regret) { p_onEquilibrium(profiles.back().GetProfile()); } - return {profiles, callback.GetBifurcations()}; + return {profiles, callback.GetBifurcations(), {result.stats}}; } -std::list LogitBehaviorSolveLambda( +LogitLambdaResult LogitBehaviorSolveLambda( const LogitQREMixedBehaviorProfile &p_start, const std::list &p_targetLambda, PathTracer::TraceDirection p_direction, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent) { if (p_start.size() == 0) { - return {p_start}; + return {{p_start}, {}}; } PathTracer tracer; tracer.SetMaxDecel(p_maxAccel); @@ -426,9 +466,9 @@ std::list LogitBehaviorSolveLambda( Vector x(ProfileToPoint(p_start)); TracingCallbackFunction callback(game, p_onEvent); EquationSystem system(game); - std::list ret; + LogitLambdaResult ret; for (auto lam : p_targetLambda) { - tracer.TracePath( + const auto result = tracer.TracePath( [&system](const Vector &p_point, Vector &p_lhs) { system.GetValue(p_point, p_lhs); }, @@ -447,7 +487,8 @@ std::list LogitBehaviorSolveLambda( [&callback](bool p_active, const Vector &p_point) { callback.OnPerturbation(p_active, p_point); }); - ret.push_back(callback.GetProfiles().back()); + ret.profiles.push_back(callback.GetProfiles().back()); + ret.stats.push_back(result.stats); } return ret; } diff --git a/src/solvers/logit/logbehav.cc b/src/solvers/logit/logbehav.cc deleted file mode 100644 index 433026952c..0000000000 --- a/src/solvers/logit/logbehav.cc +++ /dev/null @@ -1,265 +0,0 @@ -// -// This file is part of Gambit -// Copyright (c) 1994-2026, The Gambit Project (https://www.gambit-project.org) -// -// FILE: src/solvers/logit/logbehav.cc -// Behavior strategy profile where action probabilities are represented using -// logarithms. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// - -#include "games.h" -#include "games/gametree.h" -#include "logbehav.h" - -//======================================================================== -// LogBehavProfile: Lifecycle -//======================================================================== - -template -LogBehavProfile::LogBehavProfile(const Game &p_game) - : m_game(p_game), m_probs(m_game->BehavProfileLength()), m_logProbs(m_game->BehavProfileLength()) -{ - int index = 1; - for (const auto &player : p_game->GetPlayers()) { - for (const auto &infoset : player->GetInfosets()) { - for (const auto &action : infoset->GetActions()) { - m_profileIndex[action] = index++; - } - } - } - - for (const auto &infoset : m_game->GetInfosets()) { - T center = T(1) / T(infoset->GetActions().size()); - for (const auto &act : infoset->GetActions()) { - SetProb(act, center); - } - } -} - -//======================================================================== -// LogBehavProfile: Operator overloading -//======================================================================== - -template bool LogBehavProfile::operator==(const LogBehavProfile &p_profile) const -{ - return (m_game == p_profile.m_game && m_probs == p_profile.m_probs); -} - -//======================================================================== -// LogBehavProfile: Interesting quantities -//======================================================================== - -template T LogBehavProfile::GetActionProb(const GameAction &action) const -{ - if (action->GetInfoset()->GetPlayer()->IsChance()) { - return static_cast(action->GetInfoset()->GetActionProb(action)); - } - return GetProb(action); -} - -template T LogBehavProfile::GetLogActionProb(const GameAction &action) const -{ - if (action->GetInfoset()->GetPlayer()->IsChance()) { - return log(static_cast(action->GetInfoset()->GetActionProb(action))); - } - return m_logProbs[m_profileIndex.at(action)]; -} - -template const T &LogBehavProfile::GetPayoff(const GameAction &act) const -{ - ComputeSolutionData(); - return m_actionValues[act]; -} - -// -// The following routines compute the derivatives of quantities as -// the probability of the action 'p_oppAction' is changed. -// See Turocy (2001), "Computing the Quantal Response Equilibrium -// Correspondence" for details. -// These assume that the profile is interior (totally mixed), -// and that the game is of perfect recall -// -GameAction GetPrecedingAction(const GameNode &p_node, const GameInfoset &p_infoset) -{ - GameNode node = p_node; - while (node->GetParent()) { - const GameAction prevAction = node->GetPriorAction(); - if (prevAction->GetInfoset() == p_infoset) { - return prevAction; - } - node = node->GetParent(); - } - return nullptr; -} - -template -T LogBehavProfile::DiffActionValue(const GameAction &p_action, - const GameAction &p_oppAction) const -{ - ComputeSolutionData(); - - const GameInfoset infoset = p_action->GetInfoset(); - const GamePlayer player = p_action->GetInfoset()->GetPlayer(); - - // derivs stores the ratio of the derivative of the realization probability - // for each node, divided by the realization probability of the infoset, - // times the probability with which p_oppAction is played - std::map derivs; - for (auto member : infoset->GetMembers()) { - const GameAction act = GetPrecedingAction(member, p_oppAction->GetInfoset()); - derivs[member] = (act == p_oppAction) ? m_beliefs[member] : static_cast(0); - } - - T deriv = static_cast(0); - for (auto member : infoset->GetMembers()) { - const GameNode child = member->GetChild(p_action); - deriv += derivs[member] * m_nodeValues[child][player]; - deriv -= derivs[member] * GetPayoff(p_action); - deriv += GetProb(p_oppAction) * m_beliefs[member] * DiffNodeValue(child, player, p_oppAction); - } - - return deriv; -} - -template -T LogBehavProfile::DiffNodeValue(const GameNode &p_node, const GamePlayer &p_player, - const GameAction &p_oppAction) const -{ - ComputeSolutionData(); - - if (p_node->IsTerminal()) { - // If we reach a terminal node and haven't encountered p_oppAction, - // derivative wrt this path is zero. - return static_cast(0); - } - - const GameInfoset infoset = p_node->GetInfoset(); - if (infoset == p_oppAction->GetInfoset()) { - // We've encountered the action; since we assume perfect recall, - // we won't encounter it again, and the downtree value must - // be the same. - return m_nodeValues[p_node->GetChild(p_oppAction)][p_player]; - } - else { - T deriv = T(0); - for (auto action : infoset->GetActions()) { - deriv += - (DiffNodeValue(p_node->GetChild(action), p_player, p_oppAction) * GetActionProb(action)); - } - return deriv; - } -} - -//======================================================================== -// LogBehavProfile: Cached profile information -//======================================================================== - -template void LogBehavProfile::ComputeSolutionDataPass2(const GameNode &node) const -{ - const GameOutcome outcome = node->GetOutcome(); - for (auto player : m_game->GetPlayers()) { - m_nodeValues[node][player] += outcome->GetPayoff(player); - } - - const GameInfoset infoset = node->GetInfoset(); - if (!infoset) { - return; - } - - // push down payoffs from outcomes attached to non-terminal nodes - for (auto child : node->GetChildren()) { - m_nodeValues[child] = m_nodeValues[node]; - } - - for (auto player : m_game->GetPlayers()) { - m_nodeValues[node][player] = T(0); - } - - for (auto child : node->GetChildren()) { - ComputeSolutionDataPass2(child); - const GameAction action = child->GetPriorAction(); - for (auto player : m_game->GetPlayers()) { - m_nodeValues[node][player] += GetActionProb(action) * m_nodeValues[child][player]; - } - if (!infoset->IsChanceInfoset()) { - m_actionValues[action] += m_beliefs[node] * m_nodeValues[child][infoset->GetPlayer()]; - } - } -} - -template void LogBehavProfile::ComputeSolutionDataPass1(const GameNode &node) const -{ - m_logRealizProbs[node] = (node->GetParent()) ? m_logRealizProbs[node->GetParent()] + - GetLogActionProb(node->GetPriorAction()) - : T(0); - for (auto child : node->GetChildren()) { - ComputeSolutionDataPass1(child); - } -} - -template void LogBehavProfile::ComputeSolutionData() const -{ - if (m_cacheValid) { - return; - } - m_actionValues.clear(); - m_beliefs.clear(); - m_nodeValues.clear(); - ComputeSolutionDataPass1(m_game->GetRoot()); - - for (auto player : m_game->GetPlayers()) { - for (auto infoset : player->GetInfosets()) { - // The log-profile assumes that the mixed behavior profile has full support. - // However, if a game has zero-probability chance actions, then it is possible - // for an information set not to be reached. In this event, we set the beliefs - // at those information sets to be uniform across the nodes. - T infosetProb = T(0); - for (auto member : infoset->GetMembers()) { - infosetProb += exp(m_logRealizProbs[member]); - } - if (infosetProb == T(0)) { - for (auto member : infoset->GetMembers()) { - m_beliefs[member] = 1.0 / T(infoset->GetMembers().size()); - } - continue; - } - - T maxLogProb = m_logRealizProbs[infoset->GetMember(1)]; - for (auto member : infoset->GetMembers()) { - if (m_logRealizProbs[member] > maxLogProb) { - maxLogProb = m_logRealizProbs[member]; - } - } - - T total = 0.0; - for (auto member : infoset->GetMembers()) { - total += exp(m_logRealizProbs[member] - maxLogProb); - } - - // The belief for the most likely node - T mostLikelyBelief = 1.0 / total; - for (auto member : infoset->GetMembers()) { - m_beliefs[member] = mostLikelyBelief * exp(m_logRealizProbs[member] - maxLogProb); - } - } - } - - ComputeSolutionDataPass2(m_game->GetRoot()); - m_cacheValid = true; -} - -template class LogBehavProfile; diff --git a/src/solvers/logit/logbehav.h b/src/solvers/logit/logbehav.h deleted file mode 100644 index 5779c7b97e..0000000000 --- a/src/solvers/logit/logbehav.h +++ /dev/null @@ -1,134 +0,0 @@ -// -// This file is part of Gambit -// Copyright (c) 1994-2026, The Gambit Project (https://www.gambit-project.org) -// -// FILE: src/solvers/logit/logbehav.h -// Behavior strategy profile where action probabilities are represented using -// logarithms. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// - -#ifndef GAMBIT_SOLVERS_LOGIT_LOGBEHAV_H -#define GAMBIT_SOLVERS_LOGIT_LOGBEHAV_H - -using namespace Gambit; - -/// -/// This is a modified behavior profile class used in the tracing procedure. -/// It assumes that all probabilities are positive; therefore, the log -/// of the probability is well-defined. Because of this, the realization -/// probability for any node can be computed by taking the sum of the log -/// probabilities of the actions leading up to it, and then exponentiating -/// the sum. -/// -/// This means that beliefs can be computed accurately even for information -/// sets for which the information set realization probability is going -/// to zero. In computing beliefs, for each information set, we find the -/// member reached with maximum probability. Observe that it must be that -/// this node's realization probability divided by the information set's -/// realization probability must be bounded away from zero. Beliefs are -/// then computed by subtracting the other nodes' log-realization probability -/// from this "leading" node's log-realization probability, and then -/// exponentiating the result. -/// -/// This procedure is significant for this application because it is -/// necessary to accurately compute beliefs for information sets whose -/// realization probabilities are going to zero, so as to be able to -/// get a good approximation to the limiting sequential equilibrium. -/// -template class LogBehavProfile { -protected: - Game m_game; - Vector m_probs, m_logProbs; - std::map m_profileIndex; - - // structures for storing cached data - mutable bool m_cacheValid{false}; - mutable std::map m_logRealizProbs; - mutable std::map m_beliefs; - mutable std::map> m_nodeValues; - mutable std::map m_actionValues; - - /// @name Auxiliary functions for computation of interesting values - //@{ - void ComputeSolutionDataPass2(const GameNode &node) const; - void ComputeSolutionDataPass1(const GameNode &node) const; - void ComputeSolutionData() const; - //@} - -public: - /// @name Lifecycle - //@{ - explicit LogBehavProfile(const Game &); - ~LogBehavProfile() = default; - - LogBehavProfile &operator=(const LogBehavProfile &) = delete; - - //@} - - /// @name Operator overloading - //@{ - bool operator==(const LogBehavProfile &) const; - - void SetProb(const GameAction &p_action, const T &p_value) - { - m_probs[m_profileIndex.at(p_action)] = p_value; - m_logProbs[m_profileIndex.at(p_action)] = log(p_value); - } - - const T &GetProb(const GameAction &p_action) const - { - return m_probs[m_profileIndex.at(p_action)]; - } - - const T &GetLogProb(const GameAction &p_action) const - { - return m_logProbs[m_profileIndex.at(p_action)]; - } - - void SetLogProb(int a, const T &p_value) - { - Invalidate(); - m_logProbs[a] = p_value; - m_probs[a] = exp(p_value); - } - //@} - - /// @name Initialization, validation - //@{ - /// Force recomputation of stored quantities - void Invalidate() const { m_cacheValid = false; } - //@} - - /// @name General data access - //@{ - size_t BehaviorProfileLength() const { return m_probs.size(); } - //@} - - /// @name Computation of interesting quantities - //@{ - T GetActionProb(const GameAction &act) const; - T GetLogActionProb(const GameAction &) const; - const T &GetPayoff(const GameAction &act) const; - - T DiffActionValue(const GameAction &action, const GameAction &oppAction) const; - T DiffNodeValue(const GameNode &node, const GamePlayer &player, - const GameAction &oppAction) const; - - //@} -}; - -#endif // GAMBIT_SOLVERS_LOGIT_LOGBEHAV_H diff --git a/src/solvers/logit/logit.h b/src/solvers/logit/logit.h index 944de898c3..6cab430c97 100644 --- a/src/solvers/logit/logit.h +++ b/src/solvers/logit/logit.h @@ -123,6 +123,14 @@ template void NullLogitEventCallback(const LogitEvent &) {} template struct LogitTrace { std::list profiles; std::vector> bifurcations; + std::vector stats; +}; + +/// @brief The QREs found at each requested value of lambda, together with the tracing +/// statistics for each segment of the path, one per requested value, in order +template struct LogitLambdaResult { + std::list profiles; + std::vector stats; }; /// @brief Why a call to LogitStrategySolveEquilibrium()/LogitBehaviorSolveEquilibrium() did @@ -149,6 +157,7 @@ struct LogitStrategyResult { bool success{false}; LogitTerminationReason reason{LogitTerminationReason::RegretTargetNotReached}; std::vector> bifurcations; + std::vector stats; }; /// @brief Trace the principal branch of the logit QRE correspondence for a strategic game, @@ -168,12 +177,12 @@ inline LogitStrategyResult LogitStrategySolveEquilibrium( const double regret = (scale != 0.0) ? p_regret * scale : p_regret; if (candidate.GetMaxRegret() > regret) { return {std::nullopt, false, LogitTerminationReason::RegretTargetNotReached, - trace.bifurcations}; + trace.bifurcations, trace.stats}; } - return {candidate, true, LogitTerminationReason::Converged, trace.bifurcations}; + return {candidate, true, LogitTerminationReason::Converged, trace.bifurcations, trace.stats}; } -std::list LogitStrategySolveLambda( +LogitLambdaResult LogitStrategySolveLambda( const LogitQREMixedStrategyProfile &p_start, const std::list &p_targetLambda, PathTracer::TraceDirection p_direction, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent = @@ -203,6 +212,7 @@ struct LogitBehaviorResult { bool success{false}; LogitTerminationReason reason{LogitTerminationReason::RegretTargetNotReached}; std::vector> bifurcations; + std::vector stats; }; /// @brief Trace the principal branch of the logit QRE correspondence for an extensive game, @@ -222,12 +232,12 @@ inline LogitBehaviorResult LogitBehaviorSolveEquilibrium( const double regret = (scale != 0.0) ? p_regret * scale : p_regret; if (candidate.GetAgentMaxRegret() > regret) { return {std::nullopt, false, LogitTerminationReason::RegretTargetNotReached, - trace.bifurcations}; + trace.bifurcations, trace.stats}; } - return {candidate, true, LogitTerminationReason::Converged, trace.bifurcations}; + return {candidate, true, LogitTerminationReason::Converged, trace.bifurcations, trace.stats}; } -std::list LogitBehaviorSolveLambda( +LogitLambdaResult LogitBehaviorSolveLambda( const LogitQREMixedBehaviorProfile &p_start, const std::list &p_targetLambda, PathTracer::TraceDirection p_direction, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent = diff --git a/src/solvers/logit/nfglogit.cc b/src/solvers/logit/nfglogit.cc index 2ea083c888..314c2b5fd4 100644 --- a/src/solvers/logit/nfglogit.cc +++ b/src/solvers/logit/nfglogit.cc @@ -423,7 +423,7 @@ LogitStrategySolve(const LogitQREMixedStrategyProfile &p_start, double p_regret, Vector x(ProfileToPoint(p_start)); TracingCallbackFunction callback(game, p_onEvent); EquationSystem system(game); - tracer.TracePath( + const auto result = tracer.TracePath( [&system](const Vector &p_point, Vector &p_lhs) { system.GetValue(p_point, p_lhs); }, @@ -446,16 +446,16 @@ LogitStrategySolve(const LogitQREMixedStrategyProfile &p_start, double p_regret, if (profiles.back().GetProfile().GetMaxRegret() < p_regret) { p_onEquilibrium(profiles.back().GetProfile()); } - return {profiles, callback.GetBifurcations()}; + return {profiles, callback.GetBifurcations(), {result.stats}}; } -std::list LogitStrategySolveLambda( +LogitLambdaResult LogitStrategySolveLambda( const LogitQREMixedStrategyProfile &p_start, const std::list &p_targetLambda, PathTracer::TraceDirection p_direction, double p_firstStep, double p_maxAccel, LogitEventCallbackType p_onEvent) { if (p_start.size() == 0) { - return {p_start}; + return {{p_start}, {}}; } PathTracer tracer; tracer.SetMaxDecel(p_maxAccel); @@ -464,10 +464,10 @@ std::list LogitStrategySolveLambda( const Game game = p_start.GetGame(); Vector x(ProfileToPoint(p_start)); TracingCallbackFunction callback(game, p_onEvent); - std::list ret; + LogitLambdaResult ret; EquationSystem system(game); for (auto lam : p_targetLambda) { - tracer.TracePath( + const auto result = tracer.TracePath( [&system](const Vector &p_point, Vector &p_lhs) { system.GetValue(p_point, p_lhs); }, @@ -486,7 +486,8 @@ std::list LogitStrategySolveLambda( [&callback](bool p_active, const Vector &p_point) { callback.OnPerturbation(p_active, p_point); }); - ret.push_back(callback.GetProfiles().back()); + ret.profiles.push_back(callback.GetProfiles().back()); + ret.stats.push_back(result.stats); } return ret; } diff --git a/src/solvers/path/path.cc b/src/solvers/path/path.cc index 0b5e18b6a4..a1a34dea1b 100644 --- a/src/solvers/path/path.cc +++ b/src/solvers/path/path.cc @@ -22,6 +22,8 @@ #include #include // for std::max +#include +#include #include "games.h" #include "path.h" @@ -34,62 +36,119 @@ namespace Gambit { namespace { -inline double sqr(double x) { return x * x; } +using Clock = std::chrono::steady_clock; -void Givens(Matrix &b, Matrix &q, double &c1, double &c2, int l1, int l2, int l3) +double SecondsSince(Clock::time_point p_start) { - if (std::abs(c1) + std::abs(c2) == 0.0) { - return; - } + return std::chrono::duration(Clock::now() - p_start).count(); +} - double sn; - if (std::abs(c2) >= std::abs(c1)) { - sn = std::sqrt(1.0 + sqr(c1 / c2)) * std::abs(c2); - } - else { - sn = std::sqrt(1.0 + sqr(c2 / c1)) * std::abs(c1); - } - const double s1 = c1 / sn; - const double s2 = c2 / sn; - - for (size_t k = 1; k <= q.NumColumns(); k++) { - const double sv1 = q(l1, k); - const double sv2 = q(l2, k); - q(l1, k) = s1 * sv1 + s2 * sv2; - q(l2, k) = -s2 * sv1 + s1 * sv2; - } +/// Adds the wall-clock duration of its own lifetime to an accumulator +class ScopedTimer { +public: + explicit ScopedTimer(double &p_seconds) : m_seconds(p_seconds), m_start(Clock::now()) {} + ~ScopedTimer() { m_seconds += SecondsSince(m_start); } + ScopedTimer(const ScopedTimer &) = delete; + ScopedTimer &operator=(const ScopedTimer &) = delete; + +private: + double &m_seconds; + Clock::time_point m_start; +}; - for (size_t k = l3; k <= b.NumColumns(); k++) { - const double sv1 = b(l1, k); - const double sv2 = b(l2, k); - b(l1, k) = s1 * sv1 + s2 * sv2; - b(l2, k) = -s2 * sv1 + s1 * sv2; +inline double sqr(double x) { return x * x; } + +// +// QR decomposition of a (transposed) Jacobian by Givens rotations. The rotations are recorded +// rather than accumulated into an explicit orthogonal matrix Q, which is only ever needed to +// extract the tangent to the path and to multiply vectors by its transpose; both are done by +// applying the recorded rotations. Rotating row by row makes the sign of the tangent stable +// from one step to the next, which bifurcation detection relies on. +// +class GivensQR { +public: + /// Reduce b to upper triangular form R in place, recording the rotations used, so that + /// R = Q b where Q is the product of the rotations + void Decompose(Matrix &b); + + /// Replace p_v by Q^T p_v + void ApplyTranspose(Vector &p_v) const; + + /// Set p_row to the last row of Q, the tangent to the path when b is a transposed Jacobian + void LastRow(Vector &p_row) const + { + std::ranges::fill(p_row, 0.0); + p_row[m_rows] = 1.0; + ApplyTranspose(p_row); } - c1 = sn; - c2 = 0.0; -} +private: + size_t m_rows{0}, m_cols{0}; + // Cosine and sine of each rotation, in the order they were applied; rotation (m, k) + // combines rows m and k, for m = 1..m_cols and k = m+1..m_rows + std::vector m_cos, m_sin; +}; -void SetAsIdentity(Matrix &M) +void GivensQR::Decompose(Matrix &b) { - M = 0.0; - for (int i = M.MinRow(); i <= M.MaxRow(); ++i) { - M(i, i) = 1.0; + m_rows = b.NumRows(); + m_cols = b.NumColumns(); + m_cos.clear(); + m_sin.clear(); + for (size_t m = 1; m <= m_cols; m++) { + for (size_t k = m + 1; k <= m_rows; k++) { + double &c1 = b(m, m); + double &c2 = b(k, m); + if (std::abs(c1) + std::abs(c2) == 0.0) { + m_cos.push_back(1.0); + m_sin.push_back(0.0); + continue; + } + double sn; + if (std::abs(c2) >= std::abs(c1)) { + sn = std::sqrt(1.0 + sqr(c1 / c2)) * std::abs(c2); + } + else { + sn = std::sqrt(1.0 + sqr(c2 / c1)) * std::abs(c1); + } + const double s1 = c1 / sn; + const double s2 = c2 / sn; + m_cos.push_back(s1); + m_sin.push_back(s2); + for (size_t j = m + 1; j <= m_cols; j++) { + const double sv1 = b(m, j); + const double sv2 = b(k, j); + b(m, j) = s1 * sv1 + s2 * sv2; + b(k, j) = -s2 * sv1 + s1 * sv2; + } + c1 = sn; + c2 = 0.0; + } } } -void QRDecomp(Matrix &b, Matrix &q) +void GivensQR::ApplyTranspose(Vector &p_v) const { - SetAsIdentity(q); - for (size_t m = 1; m <= b.NumColumns(); m++) { - for (size_t k = m + 1; k <= b.NumRows(); k++) { - Givens(b, q, b(m, m), b(k, m), m, k, m + 1); + // Q^T is the product of the transposed rotations in reverse order of application + size_t index = m_cos.size(); + for (size_t m = m_cols; m >= 1; m--) { + for (size_t k = m_rows; k > m; k--) { + index--; + const double s1 = m_cos[index]; + const double s2 = m_sin[index]; + const double sv1 = p_v[m]; + const double sv2 = p_v[k]; + p_v[m] = s1 * sv1 - s2 * sv2; + p_v[k] = s2 * sv1 + s1 * sv2; } } } -void NewtonStep(Matrix &q, Matrix &b, Vector &u, Vector &y, - double &d) +// Newton step on the system whose (transposed) Jacobian has been decomposed as R = Q b: +// solve for the correction in the row space of the Jacobian, and apply it to u. On return +// y holds the correction and d its length. +void NewtonStep(const GivensQR &p_qr, const Matrix &b, Vector &u, + Vector &y, Vector &p_work, double &d) { for (size_t k = 1; k <= b.NumColumns(); k++) { for (size_t l = 1; l <= k - 1; l++) { @@ -98,14 +157,14 @@ void NewtonStep(Matrix &q, Matrix &b, Vector &u, Vector< y[k] /= b(k, k); } + for (size_t k = 1; k <= p_work.size(); k++) { + p_work[k] = (k <= y.size()) ? y[k] : 0.0; + } + p_qr.ApplyTranspose(p_work); d = 0.0; - for (size_t k = 1; k <= b.NumRows(); k++) { - double s = 0.0; - for (size_t l = 1; l <= b.NumColumns(); l++) { - s += q(l, k) * y[l]; - } - u[k] -= s; - d += s * s; + for (size_t k = 1; k <= p_work.size(); k++) { + u[k] -= p_work[k]; + d += p_work[k] * p_work[k]; } d = std::sqrt(d); } @@ -155,36 +214,76 @@ PathTracer::TracePath(std::function &, Vector const double b_tol = 1.0e-10; // Tolerance for perturbing the b matrix in case of singularity const double b_pert = 1.0e-8; // Perturbation of the b matrix in case of singularity + const auto start = Clock::now(); + TracePathStats stats; + Vector u(x.size()); // t is current tangent at x; newT is tangent at u, which is the next point. Vector t(x.size()), newT(x.size()); Vector y(x.size() - 1); Matrix b(x.size(), x.size() - 1); - Matrix q(x.size(), x.size()); + GivensQR qr; + Vector work(x.size()); + + auto evaluateFunction = [&](const Vector &p_point) { + const ScopedTimer timer(stats.function_seconds); + stats.function_evals++; + p_function(p_point, y); + }; + auto evaluateJacobian = [&](const Vector &p_point) { + const ScopedTimer timer(stats.jacobian_seconds); + stats.jacobian_evals++; + p_jacobian(p_point, b); + }; + auto factorize = [&]() { + const ScopedTimer timer(stats.factorization_seconds); + stats.factorizations++; + qr.Decompose(b); + }; + auto tangent = [&](Vector &p_tangent) { + const ScopedTimer timer(stats.factorization_seconds); + qr.LastRow(p_tangent); + }; + auto newtonStep = [&](double &p_dist) { + const ScopedTimer timer(stats.newton_seconds); + NewtonStep(qr, b, u, y, work, p_dist); + }; + auto shouldTerminate = [&]() -> bool { + const ScopedTimer timer(stats.terminate_seconds); + return p_terminate(x); + }; + auto callback = [&]() { + const ScopedTimer timer(stats.callback_seconds); + p_callback(x); + }; - p_jacobian(x, b); - QRDecomp(b, q); - q.GetRow(q.NumRows(), t); - p_callback(x); int steps = 0; + auto finish = [&](bool p_status, const std::string &p_message) -> TracePathResult { + stats.total_seconds = SecondsSince(start); + return {x, p_status, p_message, steps, stats}; + }; + + evaluateJacobian(x); + factorize(); + tangent(t); + callback(); auto stepsizeBelowMinimum = [&]() -> TracePathResult { if (newton && std::abs(p_criterion(x, t)) < c_newtonTol) { - return {x, true, - "Path following terminated successfully at point satisfying criterion function.", - steps}; + return finish( + true, "Path following terminated successfully at point satisfying criterion function."); } - return {x, false, "Stepsize fell below minimum threshold.", steps}; + return finish(false, "Stepsize fell below minimum threshold."); }; bool first_step = true; double omega = (p_direction == TraceDirection::Positive) ? 1.0 : -1.0; if (p_trackingIndex > x.size() || p_trackingIndex < 1) { - return {x, false, "Tracking index exceeds dimension of point vector.", steps}; + return finish(false, "Tracking index exceeds dimension of point vector."); } - while (!p_terminate(x)) { + while (!shouldTerminate()) { p_cancel.Check(); bool accept = true; @@ -195,8 +294,7 @@ PathTracer::TracePath(std::function &, Vector if (first_step) { if (std::abs(t[p_trackingIndex]) <= c_orientTol) { - return {x, false, "Initial tangent vector is orthogonal to path-following direction.", - steps}; + return finish(false, "Initial tangent vector is orthogonal to path-following direction."); } // Ensure that the tangent is oriented in the same direction as // the path-following direction. @@ -207,13 +305,14 @@ PathTracer::TracePath(std::function &, Vector } // Predictor step + stats.predictor_attempts++; for (size_t k = 1; k <= x.size(); k++) { u[k] = x[k] + h * omega * t[k]; } double decel = 1.0 / m_maxDecel; // initialize deceleration factor - p_jacobian(u, b); - QRDecomp(b, q); + evaluateJacobian(u); + factorize(); // Perturb the b matrix if it is singular or nearly singular for (size_t i = 1; i < b.NumRows(); i++) { @@ -232,17 +331,19 @@ PathTracer::TracePath(std::function &, Vector while (true) { double dist; - p_function(u, y); + stats.corrector_iterations++; + evaluateFunction(u); if (pert != 0.0) { for (size_t i = 1; i <= y.size(); i++) { // Symmetry breaking, perturbing all directions with an altenating sign y[i] += pert * (i % 2 == 0 ? 1.0 : -1.0); } } - NewtonStep(q, b, u, y, dist); + newtonStep(dist); if (dist >= c_maxDist) { accept = false; + stats.rejected_distance++; break; } @@ -251,6 +352,7 @@ PathTracer::TracePath(std::function &, Vector const double contr = dist / (disto + c_tol * c_eta); if (contr > c_maxContr) { accept = false; + stats.rejected_contraction++; break; } decel = std::max(decel, std::sqrt(contr / c_maxContr) * m_maxDecel); @@ -263,12 +365,12 @@ PathTracer::TracePath(std::function &, Vector disto = dist; iter++; if (iter > c_maxIter) { - return {x, false, "Maximum iterations exceeded.", steps}; + return finish(false, "Maximum iterations exceeded."); } } // Obtain the tangent at the next step - q.GetRow(q.NumRows(), newT); + tangent(newT); const double omega_flip = (t * newT < 0.0) ? -1.0 : 1.0; if (omega_flip == -1.0) { @@ -281,6 +383,10 @@ PathTracer::TracePath(std::function &, Vector pert_countdown = std::max(std::abs(10.0 * h), min_pert_countdown); p_onPerturbation(true, x); } + if (accept) { + // Count each rejected attempt under one reason only + stats.rejected_orientation++; + } accept = false; } @@ -318,8 +424,9 @@ PathTracer::TracePath(std::function &, Vector // PC step was successful; update and iterate x = u; t = newT; - p_callback(x); + callback(); steps++; + stats.accepted_steps++; if (pert_countdown > 0.0) { // If we are currently perturbing in the neighborhood of a bifurcation, check to see @@ -332,7 +439,7 @@ PathTracer::TracePath(std::function &, Vector } } } - return {x, true, "Path tracing terminated successfully.", steps}; + return finish(true, "Path tracing terminated successfully."); } PolishResult PolishPoint(std::function &, Vector &)> p_function, @@ -347,19 +454,40 @@ PolishResult PolishPoint(std::function &, Vector y(N); // Equations results Matrix jac_full(N + 1, N); // Full Jacobian matrix (N+1 unknowns, N equations) Matrix jac_square(N, N); // Jacobian matrix with fixed_index row removed - Matrix Q(N, N); // Orthogonal matrix from QR decomposition + GivensQR qr; // QR decomposition of jac_square + Vector work(N); // Scratch for the Newton step Vector x_reduced(N); // Reduced x vector with fixed_index removed + const auto start = Clock::now(); + TracePathStats stats; int steps = 0; double dist = 0.0; - while (!p_terminate(x)) { + auto finish = [&](bool p_status, const std::string &p_message) -> PolishResult { + stats.total_seconds = SecondsSince(start); + return {x, p_status, p_message, steps, stats}; + }; + auto shouldTerminate = [&]() -> bool { + const ScopedTimer timer(stats.terminate_seconds); + return p_terminate(x); + }; + + while (!shouldTerminate()) { if (steps >= max_iter) { - return {x, false, "Polishing exceeded maximum iterations.", steps}; + return finish(false, "Polishing exceeded maximum iterations."); } - p_function(x, y); - p_jacobian(x, jac_full); + stats.corrector_iterations++; + { + const ScopedTimer timer(stats.function_seconds); + stats.function_evals++; + p_function(x, y); + } + { + const ScopedTimer timer(stats.jacobian_seconds); + stats.jacobian_evals++; + p_jacobian(x, jac_full); + } size_t row_index = 1; for (size_t i = 1; i <= N + 1; ++i) { // Newton step expects the transposed Jacobian @@ -379,10 +507,17 @@ PolishResult PolishPoint(std::function &, Vector &, Vector &) {} +/// @brief Counts and wall-clock timings recorded by one call to TracePath() or PolishPoint() +struct TracePathStats { + size_t predictor_attempts{0}; ///< predictor steps tried, whether accepted or rejected + size_t accepted_steps{0}; ///< predictor-corrector steps accepted + size_t rejected_distance{0}; ///< steps rejected because a corrector step was too long + size_t rejected_contraction{0}; ///< steps rejected because the corrector contracted too slowly + size_t rejected_orientation{0}; ///< steps rejected because the tangent orientation flipped + size_t corrector_iterations{0}; ///< Newton corrector iterations, over all attempts + size_t function_evals{0}; ///< evaluations of the system of equations + size_t jacobian_evals{0}; ///< evaluations of the Jacobian + size_t factorizations{0}; ///< QR decompositions of the Jacobian + + double function_seconds{0.0}; ///< time evaluating the system of equations + double jacobian_seconds{0.0}; ///< time evaluating the Jacobian + double factorization_seconds{0.0}; ///< time in QR decompositions + double newton_seconds{0.0}; ///< time in Newton corrector steps + double terminate_seconds{0.0}; ///< time in the termination function + double callback_seconds{0.0}; ///< time in the per-point callback + double total_seconds{0.0}; ///< total time in the call +}; + struct TracePathResult { Vector final_point; bool status; // true if path tracing terminated successfully, false if it terminated due to error std::string message; // error message if status is false int steps; // Step at which the tracing terminated + TracePathStats stats; }; struct PolishResult { @@ -84,6 +106,7 @@ struct PolishResult { bool status; // true if polishing terminated successfully, false if it terminated due to error std::string message; // error message if status is false int steps; // Step at which the polishing terminated + TracePathStats stats; }; // // This class implements a generic path-following algorithm for smooth curves. diff --git a/tests/games.py b/tests/games.py index 6e70a1f0d0..28970e872c 100644 --- a/tests/games.py +++ b/tests/games.py @@ -564,6 +564,66 @@ def create_EFG_for_6x6_bimatrix_with_long_LH_paths_and_unique_eq() -> gbt.Game: return create_efg_corresponding_to_bimatrix_game_arrays(A, B, title) +def create_allpay_correlated_types_efg(p: gbt.Rational, common_value: bool, + bids: int) -> gbt.Game: + """ + Returns + ------- + Game + All-pay contest with correlated types, following the experimental design of + Rentschler and Turocy. + + Nature draws a state of 15 or 30 with equal probability; each contestant then + receives a type equal to the state with probability `p`, independently given the + state. The prize is worth the contestant's own type (private values) or the + state (common values). Both contestants bid simultaneously from `bids` levels + spaced 0.30 apart, the experiment's bid increment; both pay their bid, the + higher bid wins, and ties split the prize. + """ + states = [15, 30] + step = gbt.Rational(3, 10) + g = gbt.ExtensiveGame( + players=["1", "2"], + title=f"All-pay contest, p={p}, {'common' if common_value else 'private'} values", + ) + g.append_event(gbt.H.path(), {f"w={w}": gbt.Rational(1, 2) for w in states}) + + def type_probs(state: int, who: str) -> dict: + return {f"{who}={t}": (p if t == state else 1 - p) for t in states} + + for w in states: + g.append_event(gbt.H.path(f"w={w}"), type_probs(w, "t1")) + for w in states: + for t1 in states: + g.append_event(gbt.H.path(f"w={w}", f"t1={t1}"), type_probs(w, "t2")) + + labels = [str(step * k) for k in range(bids)] + for t in states: + g.append_move(gbt.H.path(..., f"t1={t}", ...), player="1", + actions=[f"b1={b}" for b in labels]) + for t in states: + g.append_move(gbt.H.path(..., ..., f"t2={t}", ...), player="2", + actions=[f"b2={b}" for b in labels]) + + for w in states: + for t1 in states: + for t2 in states: + v1, v2 = (w, w) if common_value else (t1, t2) + for k1 in range(bids): + for k2 in range(bids): + b1, b2 = step * k1, step * k2 + if k1 > k2: + u1, u2 = v1 - b1, -b2 + elif k1 == k2: + u1, u2 = gbt.Rational(v1, 2) - b1, gbt.Rational(v2, 2) - b2 + else: + u1, u2 = -b1, v2 - b2 + path = (f"w={w}", f"t1={t1}", f"t2={t2}", + f"b1={labels[k1]}", f"b2={labels[k2]}") + g.make_outcome(gbt.H.path(*path), {"1": u1, "2": u2}, ",".join(path)) + return g + + class EfgFamilyForReducedStrategicFormTests(ABC): """ """ diff --git a/tests/test_behav_derivatives.py b/tests/test_behav_derivatives.py new file mode 100644 index 0000000000..497a086f0e --- /dev/null +++ b/tests/test_behav_derivatives.py @@ -0,0 +1,86 @@ +"""Tests of the derivatives of action values with respect to log action probabilities. + +The derivatives are computed by MixedBehaviorProfile::DiffActionValues, exposed privately to +Python for testing; they are checked against central finite differences of the profile's own +action values. +""" +import math +import random + +import numpy as np +import pytest + +import pygambit as gbt + +from . import games + +STEP = 1.0e-6 +TOL = 1.0e-7 + + +def _interior_profile(game: gbt.Game, seed: int): + """A random totally mixed profile, with the information sets and their action labels in + the order of the positions of the profile.""" + rng = random.Random(seed) + profile = game.mixed_behavior_profile(rational=False) + infosets = [] + for player in game.players: + for history, mixed_action in profile[player]: + infosets.append((gbt.H.path(*history.actions), [label for label, _ in mixed_action])) + weights = {} + for selector, labels in infosets: + weights[selector] = {label: rng.uniform(0.2, 1.0) for label in labels} + profile[selector] = weights[selector] + return profile, infosets, weights + + +def _action_values(profile, entries) -> np.ndarray: + values = profile.action_values + return np.array([values[selector][label] for selector, label in entries], dtype=float) + + +@pytest.mark.parametrize( + "game", + [ + pytest.param(games.create_stripped_down_poker_efg(), id="stripped_down_poker"), + pytest.param(games.create_stripped_down_poker_efg(nonterm_outcomes=True), + id="stripped_down_poker_nonterm_outcomes"), + pytest.param(games.create_kuhn_poker_efg(), id="kuhn_poker"), + pytest.param(games.read_from_file("chance_in_middle_with_nonterm_outcomes.efg"), + id="chance_in_middle_nonterm_outcomes"), + pytest.param(games.read_from_file("nature_leaves_generic.efg"), + id="nature_leaves_generic"), + pytest.param(games.read_from_file("3_player_with_nonterm_outcomes.efg"), + id="3_player_nonterm_outcomes"), + pytest.param(games.create_allpay_correlated_types_efg(gbt.Rational(3, 5), True, 3), + id="allpay_cv_p60_b3"), + ], +) +def test_diff_action_values_matches_finite_differences(game: gbt.Game): + profile, infosets, weights = _interior_profile(game, seed=1) + entries = [(selector, label) for selector, labels in infosets for label in labels] + analytic = np.array(profile._diff_action_values()) + assert analytic.shape == (len(entries), len(entries)) + + numeric = np.zeros_like(analytic) + for j, (selector, label) in enumerate(entries): + columns = [] + for sign in (+1, -1): + perturbed = game.mixed_behavior_profile(rational=False) + for other, w in weights.items(): + perturbed[other] = dict(w) + shifted = dict(weights[selector]) + shifted[label] *= math.exp(sign * STEP) + perturbed[selector] = shifted + columns.append(_action_values(perturbed, entries)) + numeric[:, j] = (columns[0] - columns[1]) / (2 * STEP) + + # Derivatives with respect to actions at the same information set are defined as zero + start = 0 + for _, labels in infosets: + block = slice(start, start + len(labels)) + numeric[block, block] = 0.0 + assert np.all(analytic[block, block] == 0.0) + start += len(labels) + + np.testing.assert_allclose(analytic, numeric, atol=TOL, rtol=0) diff --git a/tests/test_games/golden_logit/3_player_nonterm_outcomes.json b/tests/test_games/golden_logit/3_player_nonterm_outcomes.json new file mode 100644 index 0000000000..f5bc3f2214 --- /dev/null +++ b/tests/test_games/golden_logit/3_player_nonterm_outcomes.json @@ -0,0 +1,60 @@ +{ + "counts": [{"predictor_attempts": 54, "accepted_steps": 54, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 108, "function_evals": 108, "jacobian_evals": 55, "factorizations": 55}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.00996607638493236, 0.49940138301431913, 0.5005986169856823, 0.5049751582726876, 0.49502484172737954, 0.5018767343768334, 0.49812326562316744, 0.5074740005440327, 0.4925259994566644, 0.5037512360185501, 0.4962487639814716, 0.498779942843604, 0.5012200571564019], + [0.020929886761920563, 0.4987998763812868, 0.5012001236187024, 0.510429616862593, 0.4895703831375253, 0.5039598014142254, 0.4960401985857758, 0.5156922597954405, 0.48430774020579515, 0.5079102061465296, 0.4920897938535079, 0.49749756773751974, 0.5025024322624854], + [0.03298825267167743, 0.49820912221667485, 0.5017908777832781, 0.5164048390480435, 0.483595160952167, 0.5062726568189462, 0.4937273431810551, 0.5247210162801115, 0.4752789837220722, 0.5125231680833018, 0.48747683191676144, 0.4961603277319396, 0.5038396722680584], + [0.046245948095425676, 0.49764745327497223, 0.5023525467248905, 0.522944272956287, 0.4770557270440869, 0.5088412891764252, 0.49115871082357626, 0.5346289335285452, 0.4653710664753017, 0.517641559762593, 0.4823584402375135, 0.4947794579492444, 0.50522054205073], + [0.06081578594057089, 0.49713905937697683, 0.5028609406226772, 0.5300928897675411, 0.4699071102331225, 0.5116943717064635, 0.4883056282935376, 0.5454857356172946, 0.4545142643894556, 0.5233223849777473, 0.47667761502243194, 0.4933709326247587, 0.5066290673751535], + [0.07681847801891224, 0.4967153513613079, 0.5032846486378912, 0.537896505033337, 0.4621034949678394, 0.514863364818864, 0.485136635181136, 0.5573602175860567, 0.442639782425727, 0.5296285126703456, 0.47037148732995737, 0.491956567788798, 0.5080434322109679], + [0.09438220249319468, 0.4964165108303554, 0.5035834891679014, 0.546400840603802, 0.4535991593982786, 0.5183825447915311, 0.4816174552084662, 0.570317487280403, 0.4296825127400316, 0.5366288278141028, 0.46337117218641316, 0.490565250269672, 0.5094347497297743], + [0.1136418123786879, 0.4962931850810182, 0.5037068149153795, 0.5556502892030241, 0.44434971080064056, 0.5222889297483374, 0.47771107025165516, 0.5844153051711706, 0.4155846948639676, 0.544398150321753, 0.455601849679137, 0.48923424751183336, 0.5107657524869564], + [0.13473763682850096, 0.4964082457008898, 0.5035917542920222, 0.5656863598191489, 0.4343136401872651, 0.5266220736950675, 0.4733779263049184, 0.5996994350090024, 0.4003005650507751, 0.553016817388514, 0.44698318261304765, 0.4880105164309076, 0.5119894835666066], + [0.15781386848513637, 0.4968384780917543, 0.5031615218949806, 0.5765458115976022, 0.4234541884135206, 0.5314237046014886, 0.46857629539849155, 0.6161980141582882, 0.38380198594204257, 0.5625698066033271, 0.437430193399467, 0.4869518851858008, 0.513048114809367], + [0.1830166012284259, 0.4976760142303385, 0.5023239857461398, 0.5882585280343965, 0.41174147198464633, 0.5367371958208572, 0.4632628041791264, 0.6339151102233562, 0.36608488994223326, 0.5731452667440152, 0.42685473326107803, 0.4861279351815987, 0.5138720648094927], + [0.2104916826637844, 0.4990292757568616, 0.5009707242038614, 0.6008452383982794, 0.39915476163377167, 0.5426068825363428, 0.4573931174636776, 0.652823849747045, 0.3471761505206605, 0.584832324944519, 0.41516767506489677, 0.48562037318476636, 0.514379626799654], + [0.2403826612596249, 0.5010231790270545, 0.49897682091170703, 0.6143152484939592, 0.3856847515588272, 0.5490772639837453, 0.45092273601640404, 0.6728597610975056, 0.3271402393246019, 0.5977180544161897, 0.4022819456013389, 0.4855226714262647, 0.5144773285478998], + [0.27282920848957276, 0.5037983898729582, 0.49620161003893526, 0.6286643792614155, 0.37133562082324495, 0.5561921600585895, 0.4438078399419091, 0.6939152111474217, 0.30608478949868456, 0.6118835113614605, 0.3881164886711363, 0.4859387839577023, 0.5140612160016682], + [0.30796643696167686, 0.5075095167089155, 0.4924904831761895, 0.6438733070938208, 0.35612669303781086, 0.5639939040702461, 0.43600609593107503, 0.7158359511974437, 0.28416404975807086, 0.627398770810598, 0.37260122924949146, 0.48698082946067167, 0.5130191704786465], + [0.3459254733269874, 0.5123222877867631, 0.4876777120817791, 0.6599064394400613, 0.3400935607576144, 0.5725226362568452, 0.4274773637462183, 0.7384207380143377, 0.26157926334479503, 0.6443168936173665, 0.3556831064917333, 0.48876575553150564, 0.5112342443821435], + [0.38683546468104657, 0.5184099334342427, 0.48159006644366725, 0.6767113496560145, 0.32328865063001955, 0.5818157053489326, 0.4181842946574937, 0.7614247185128854, 0.23857528333921207, 0.6626667358210137, 0.33733326437310623, 0.49141113596873676, 0.5085888639136019], + [0.43082693533350386, 0.5259491244368968, 0.47405087549618785, 0.6942186710779084, 0.3057813293205999, 0.5919070931153728, 0.408092906897024, 0.7845667972208289, 0.21543320518962347, 0.682444491088917, 0.31755550924826553, 0.49503035483618135, 0.5049696450093483], + [0.478036155297628, 0.5351158381419847, 0.4648841619129778, 0.7123422666545176, 0.28765773388062105, 0.6028266746435286, 0.39717332537872013, 0.8075406577147445, 0.19245934527515166, 0.7036039039613317, 0.2963960966086366, 0.4997274593918857, 0.500272540411528], + [0.5286100408535923, 0.5460813926739031, 0.4539186075876277, 0.7309794962088783, 0.26902050448556664, 0.6145990562836386, 0.3854009437539004, 0.8300286243939624, 0.16997137913666432, 0.7260453108556818, 0.2739546900791396, 0.5055919086145744, 0.4944080911419244], + [0.5827111576552659, 0.5590086016237212, 0.4409913989411802, 0.7500115118227576, 0.2499884890512897, 0.6272417381420454, 0.37275826191808126, 0.8517172270492033, 0.148282776918577, 0.749604165395482, 0.2503958360870639, 0.5126933350421959, 0.48730666466457967], + [0.6405226404201078, 0.5740475800042947, 0.42595242096701297, 0.7693036852411741, 0.23069631583003786, 0.6407624603288716, 0.35923753976329886, 0.8723131789706129, 0.12768682527389644, 0.774040531524305, 0.22595947073929856, 0.521076331817464, 0.4789236678430305], + [0.7022531980202744, 0.5913302140881856, 0.40866978739770826, 0.7887064319642638, 0.21129356931860585, 0.6551558161667166, 0.34484418396922206, 0.8915584454818951, 0.1084415588418229, 0.7990320824387033, 0.20096792087034618, 0.5307552293270371, 0.4692447703063288], + [0.768142696326338, 0.6109617502790862, 0.3890382518444393, 0.8080567621451178, 0.19194323935984428, 0.670399516317943, 0.3296004838752505, 0.9092431118292372, 0.09075689236596965, 0.8241741011998842, 0.1758259034004658, 0.5417088635550401, 0.4582911361036322], + [0.8384689497481033, 0.6330074884894183, 0.3669925144360442, 0.8271808155070912, 0.17281918622429615, 0.6864509832908005, 0.313549016973215, 0.9252148677222399, 0.07478513615453718, 0.8489902815119403, 0.15100972452333816, 0.5538754508101311, 0.4461245489876422], + [0.913556207118726, 0.6574724632055885, 0.34252754077351877, 0.8458974571688405, 0.1541025447843038, 0.703245124336579, 0.2967548760088066, 0.939384183405365, 0.0606158200043547, 0.8729571347115159, 0.1270428726976711, 0.5671478347618123, 0.43285216538913357], + [0.9937854162299024, 0.6842727519275457, 0.31572725350655, 0.864022826705343, 0.13597717545297422, 0.7206940506895952, 0.2793059497409634, 0.9517247247241393, 0.04827527812621973, 0.8955421632683672, 0.1044578451700838, 0.5813695234400575, 0.41863047742493226], + [1.0796058886449458, 0.7131992941529642, 0.2868007133495754, 0.8813756613105357, 0.11862434102262553, 0.7386891323170948, 0.2613108681936024, 0.9622692079027896, 0.03773079435695479, 0.9162520282635384, 0.08374798057779709, 0.5963320600553504, 0.4036679420773338], + [1.1715477698363133, 0.7438792540221412, 0.256120756399803, 0.8977832887877929, 0.10221671367604616, 0.7571051820786879, 0.24289481850073957, 0.97110155793762, 0.028898443755911045, 0.9346829813388413, 0.06531702711618179, 0.6117743431743661, 0.3882256610023979], + [1.2702349963066222, 0.7757455618971395, 0.2242544524495407, 0.913088292272372, 0.08691171026559653, 0.7758059520268037, 0.22419404861167036, 0.9783466746982721, 0.02165332649576405, 0.9505635849577444, 0.0494364223693372, 0.6273844578293326, 0.37261554937688113], + [1.3763991671168712, 0.8080302650464661, 0.19196975409519532, 0.9271557807504633, 0.07284422179518725, 0.7946497138470582, 0.20535028685282108, 0.9841591808019624, 0.01584081998420617, 0.9637804945270907, 0.03621951118918504, 0.6428042794078711, 0.35719573192151355], + [1.490895594101452, 0.839797984784097, 0.16020203935128258, 0.9398808405460389, 0.060119161934656586, 0.8134936061247643, 0.18650639465624574, 0.9887122673285331, 0.011287733149245667, 0.9743818516430066, 0.025618152346950685, 0.6576364895538784, 0.3423635268659907], + [1.6147231584012312, 0.8700283292097966, 0.1299716988455023, 0.9511952242681857, 0.048804778074823654, 0.832195670443237, 0.16780433045120924, 0.992187363746955, 0.00781263651626293, 0.9825583207646474, 0.017441681711789024, 0.6714528319966903, 0.3285471899727255], + [1.7490491064043496, 0.8977400048411944, 0.10226002459064057, 0.9610720011131271, 0.03892800102844724, 0.8506140291480891, 0.1493859718932152, 0.9947650398880747, 0.005234960239914548, 0.988606994215566, 0.01139300714276775, 0.6838018668230135, 0.31619816019210734], + [1.8952386781183097, 0.9221301501362195, 0.07786987730174574, 0.9695270548752624, 0.030472947019772063, 0.8686034406236082, 0.1313965605912573, 0.9966173789286276, 0.0033826211244066717, 0.9928865750421724, 0.007113425612720318, 0.6942147210348797, 0.3057853092178106], + [2.054888044194003, 0.9426904088958837, 0.057309613666725025, 0.97661697683301, 0.023383024793613507, 0.886010404644519, 0.11398959676582407, 0.9979019865511759, 0.0020980134672392496, 0.9957727045997866, 0.004227295677403257, 0.7022087432583097, 0.2977912871463126], + [2.2298579804319902, 0.9592650852612443, 0.04073493115884121, 0.9824337288693066, 0.01756627248504045, 0.9026688467183964, 0.09733115490939753, 0.9987577325571132, 0.0012422674493737054, 0.9976204702471341, 0.002379529857032695, 0.707291490667261, 0.2927085361319757], + [2.4223049646221027, 0.9720362297504669, 0.027963781003866397, 0.9870970344471902, 0.01290296663601727, 0.9183988532513101, 0.08160114860868475, 0.999302224345724, 0.0006977756584616704, 0.9987381658628965, 0.0012618341731198005, 0.7089707241837859, 0.2910292957647668], + [2.6347051092248486, 0.98144596590909, 0.01855404059914519, 0.9907455920997316, 0.009254408708334345, 0.9330106909466342, 0.0669893111263501, 0.999630915333259, 0.000369084670657277, 0.999373430510588, 0.0006265695014366218, 0.7067795087921043, 0.29322050293300495], + [2.8698636026328472, 0.9880851042137104, 0.011914899475610863, 0.9935279991864457, 0.006472001343998473, 0.9463153883202851, 0.05368461388030549, 0.9998176847371237, 0.00018231526580250864, 0.9997105933346812, 0.0002894066691295595, 0.7003279770228622, 0.29967202768123596], + [3.1308985318987794, 0.9925817103485128, 0.007418291547913402, 0.9955939842733903, 0.00440601600566939, 0.9581417017545514, 0.041858300416735675, 0.9999166764170533, 8.332358440523159e-05, 0.9998765478332232, 0.000123452167757285, 0.6893918865872657, 0.3106081141241282], + [3.421186558648704, 0.9955149580124609, 0.004485042811678096, 0.9970864000191877, 0.0029136000862854563, 0.9683576208360596, 0.031642381121131255, 0.9999651199166594, 3.488008379182656e-05, 0.999951736958535, 4.8263041622951744e-05, 0.6740371751219388, 0.32596282452303826], + [3.74426541027256, 0.9973651966305503, 0.002634803683851173, 0.998134497436065, 0.0018655025982679692, 0.9768928160587841, 0.02310718554016666, 0.9999867671670526, 1.3232833059283765e-05, 0.9999828455866624, 1.715441335040197e-05, 0.6547539795884769, 0.3452460205311561], + [4.103709218168765, 0.998498066876169, 0.00150193328451397, 0.998849171467081, 0.0011508285532319089, 0.9837566986819919, 0.0162433024940709, 0.9999954986453338, 4.501354727805983e-06, 0.9999945021847992, 5.497815193588177e-06, 0.6325386314564497, 0.36746137022393566], + [4.503020910638604, 0.9991728425668961, 0.0008271575451274575, 0.9993208530727767, 0.000679146926662927, 0.9890457971653959, 0.010954203599088776, 0.9999986414112991, 1.358588736823062e-06, 0.999998424729058, 1.5752709260661719e-06, 0.6088458843016437, 0.3911541208894821], + [4.945599795153634, 0.9995632920750565, 0.0004367079785110558, 0.9996202277958096, 0.0003797721740633107, 0.9929356080341913, 0.0070643923914249325, 0.999999639869646, 3.601303651643511e-07, 0.9999996000741908, 3.9992579764019725e-07, 0.5853732086702996, 0.414626800914965], + [5.434821641748382, 0.9997813437703665, 0.00021865623652577525, 0.9998010396547181, 0.00019896030751189207, 0.9956569307173526, 0.004343069479695639, 0.9999999170033032, 8.29966984010291e-08, 0.9999999109131003, 8.908689542605232e-08, 0.5637315671253597, 0.4362684434776894], + [5.974220388376094, 0.9998974951029969, 0.00010250488930427943, 0.9999035244452816, 9.647553003029339e-05, 0.9974629685996778, 0.00253703147500055, 0.9999999835454069, 1.6454593121722744e-08, 0.9999999827799385, 1.722006046112429e-08, 0.545133403483271, 0.4548666023914493], + [6.567719765605004, 0.9999556076904607, 4.439230381979539e-05, 0.9999572140724818, 4.278591698052333e-05, 0.9985969737723404, 0.0014030262506972615, 0.9999999972265098, 2.7734902285461446e-09, 0.9999999971487695, 2.851230304805156e-09, 0.5302180932093444, 0.4697819055650676], + [7.219854150794346, 0.9999824684369666, 1.753156084289104e-05, 0.9999828348415359, 1.7165155200824495e-05, 0.9992686261444195, 0.000731373861293586, 0.9999999996079229, 3.9207716235171307e-10, 0.9999999996016624, 3.9833760560007825e-10, 0.5190516149734278, 0.48094837951114944], + [7.935934988908262, 0.9999937612230122, 6.238776409245648e-06, 0.9999938316279007, 6.168371328649661e-06, 0.9996424704654975, 0.0003575295355968825, 0.9999999999542488, 4.575111436629036e-11, 0.9999999999538578, 4.614220969180949e-11, 0.511256325328114, 0.4887436691679949], + [8.722145153934939, 0.9999980211667062, 1.9788331828157917e-06, 0.9999980323818786, 1.9676179834928416e-06, 0.9998370892541903, 0.00016291074595894026, 0.9999999999956742, 4.325750512016509e-12, 0.9999999999956558, 4.344229651680787e-12, 0.5061964251784946, 0.4938035714721253], + [9.58556784946003, 0.9999994462949188, 5.537050660712643e-07, 0.9999994477516975, 5.52248284727236e-07, 0.9999312914258314, 6.870857418116027e-05, 0.9999999999996756, 3.244309895594611e-13, 0.9999999999996749, 3.250726444152041e-13, 0.5031565272056737, 0.49684347138585827], + [10.534174186708011, 0.9999998647273982, 1.3527260045495334e-07, 0.9999998648789916, 1.351210068219756e-07, 0.9999733893966036, 2.661060339682152e-05, 0.9999999999999811, 1.8845116991395792e-14, 0.9999999999999811, 1.8860971687999273e-14, 0.5014764668921914, 0.4985235326843081] + ] +} diff --git a/tests/test_games/golden_logit/6x6_long_LH_paths.json b/tests/test_games/golden_logit/6x6_long_LH_paths.json new file mode 100644 index 0000000000..345e4d26a8 --- /dev/null +++ b/tests/test_games/golden_logit/6x6_long_LH_paths.json @@ -0,0 +1,41 @@ +{ + "counts": [{"predictor_attempts": 35, "accepted_steps": 35, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 75, "function_evals": 75, "jacobian_evals": 36, "factorizations": 36}], + "points": [ + [0.0, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669], + [0.0028573885317951823, 0.16457030685926657, 0.16788846211416636, 0.1675412310293814, 0.1675412310293814, 0.16788846211416636, 0.16457030685926657, 0.16474390793087054, 0.16747908986546195, 0.1677770022072204, 0.1677770022072204, 0.167479089865462, 0.16474390793087054], + [0.005984360948175432, 0.16210407468279517, 0.16934302453491817, 0.1685529007844038, 0.1685529007844038, 0.16934302453491817, 0.16210407468279517, 0.16285482124346998, 0.1682856288094804, 0.16885954995044894, 0.16885954995044894, 0.1682856288094804, 0.16285482124346998], + [0.00942176389886812, 0.15923358653002775, 0.17105402936765082, 0.16971238410297884, 0.16971238410297884, 0.17105402936765082, 0.15923358653002775, 0.16105635293919648, 0.16906733023568418, 0.16987631682503676, 0.16987631682503676, 0.16906733023568418, 0.16105635293919648], + [0.013222326779081804, 0.15593122887433772, 0.17304120759482539, 0.17102756352854626, 0.17102756352854626, 0.17304120759482539, 0.15593122887433772, 0.15941990368177741, 0.16980088010343045, 0.17077921619713085, 0.17077921619713085, 0.16980088010343045, 0.1594199036817774], + [0.017455033425689864, 0.15218077748132428, 0.1753171341507801, 0.17250208836255965, 0.17250208836255965, 0.1753171341507801, 0.15218077748132428, 0.15803306678857063, 0.17045815630569325, 0.17150877683295138, 0.17150877683295138, 0.17045815630569325, 0.1580330667885706], + [0.022212260332423347, 0.14798261178990915, 0.17788326988183328, 0.1741341183234669, 0.17413411832346687, 0.17788326988183328, 0.14798261178990918, 0.15700075663518168, 0.17100596066160345, 0.17199328248645018, 0.17199328248645018, 0.17100596066160345, 0.15700075663518168], + [0.027621503566051683, 0.1433591812918325, 0.18072524952306648, 0.17591556918810677, 0.17591556918810677, 0.18072524952306648, 0.1433591812918325, 0.15644572376551327, 0.17140588858486164, 0.1721483870936346, 0.1721483870936346, 0.17140588858486164, 0.15644572376551324], + [0.03386567059300427, 0.13835996274703535, 0.18380754510837102, 0.17783249215078106, 0.17783249215078104, 0.18380754510837102, 0.13835996274703535, 0.15650855881147738, 0.1716143053481688, 0.17187713453246314, 0.17187713453246314, 0.1716143053481688, 0.15650855881147738], + [0.041219693369390145, 0.13306538812934662, 0.1870672487601831, 0.17986736302563988, 0.17986736302563985, 0.1870672487601831, 0.13306538812934662, 0.1573476642488741, 0.17158236236907892, 0.1710699704579211, 0.1710699704579211, 0.1715823623690789, 0.15734766424887406], + [0.05011941813298863, 0.1275901480378135, 0.19040558364656365, 0.18200426764386987, 0.18200426764386993, 0.19040558364656365, 0.12759014803781343, 0.15913949194464583, 0.17125626770741295, 0.169604233974827, 0.169604233974827, 0.17125626770741292, 0.15913949194464583], + [0.06129744891673017, 0.122087567712326, 0.19367362886351566, 0.18423880002381357, 0.18423880002381363, 0.19367362886351566, 0.122087567712326, 0.1620769109777208, 0.17057936305566146, 0.167343712227382, 0.167343712227382, 0.17057936305566146, 0.16207691097772076], + [0.07606392252014409, 0.11675620702721916, 0.19664624592889196, 0.18659753195150164, 0.18659753195150164, 0.19664624592889196, 0.1167562070272191, 0.16635445671864327, 0.16950193905675637, 0.16414357548531538, 0.16414357548531538, 0.16950193905675637, 0.16635445671864327], + [0.09689644873748125, 0.11183900785966533, 0.19898038601683296, 0.18918060662645342, 0.1891806066264534, 0.19898038601683293, 0.11183900785966543, 0.1721023898919906, 0.1680168317424786, 0.15988077891827387, 0.15988077891827385, 0.16801683174247858, 0.1721023898919906], + [0.1285215904596916, 0.10755834910559096, 0.20018681637226474, 0.19225484053770694, 0.19225484053770694, 0.20018681637226474, 0.107558349105591, 0.17916930694459737, 0.16626215882124182, 0.15456853484202693, 0.15456853484202687, 0.16626215882124173, 0.1791693069445973], + [0.17822509805528786, 0.10385585400782932, 0.1997906913252833, 0.19635347417160529, 0.19635347417160529, 0.1997906913252833, 0.10385585400782928, 0.18664678723104333, 0.16469576864433394, 0.14865743331446626, 0.14865743331446626, 0.1646957686443339, 0.18664678723104333], + [0.25021508979245355, 0.10009442998138532, 0.19790604411087645, 0.20199952706383068, 0.20199952706383073, 0.19790604411087653, 0.10009442998138528, 0.1929079660009656, 0.16392071451490922, 0.14317133178211963, 0.14317133178211966, 0.16392071451490922, 0.19290796600096555], + [0.3412283707111999, 0.0955215522727142, 0.19521763709914697, 0.20926081046308426, 0.20926081046308426, 0.19521763709914697, 0.09552155227271424, 0.19726260058548745, 0.16395504183646667, 0.13878236052810838, 0.13878236052810833, 0.1639550418364666, 0.19726260058548745], + [0.44419526495329786, 0.09002405335086983, 0.19225477176995057, 0.21772117618453787, 0.2177211761845379, 0.19225477176995065, 0.0900240533508699, 0.200063445228716, 0.16434661663446867, 0.1355899452042039, 0.13558994520420387, 0.16434661663446848, 0.20006344522871597], + [0.5557818251904885, 0.08374917527759763, 0.18918593960803373, 0.2270648870252961, 0.22706488702529617, 0.18918593960803382, 0.08374917527759755, 0.20185179735928158, 0.16469478683859742, 0.13345342013739742, 0.13345342013739747, 0.16469478683859726, 0.20185179735928144], + [0.6752233484954846, 0.07686591716001007, 0.18604949620216585, 0.23708458879115418, 0.23708458879115418, 0.1860494962021657, 0.07686591716000982, 0.20295636694560898, 0.16475590367065102, 0.13228773153454945, 0.13228773153454956, 0.164755903670651, 0.2029563669456089], + [0.8025160824240404, 0.06955435757382913, 0.18287396146052096, 0.24757168351373351, 0.24757168351373346, 0.18287396146052073, 0.06955435757382891, 0.20354806793333666, 0.16438083558870192, 0.13207109780504134, 0.13207109780504148, 0.16438083558870187, 0.20354806793333652], + [0.9380552208580042, 0.06200292272219671, 0.1796986091528905, 0.25829847113272536, 0.2582984711327252, 0.17969860915289035, 0.06200292272219693, 0.20372084676536079, 0.16347780657486694, 0.1328013475293873, 0.13280134752938708, 0.1634778065748669, 0.2037208467653611], + [1.0825838469350972, 0.054403417162394815, 0.1765726388188716, 0.269023947381407, 0.2690239473814071, 0.17657263881887197, 0.054403417162395155, 0.2035331027004864, 0.16199591283887507, 0.1344709849976646, 0.13447098499766447, 0.16199591283887507, 0.20353310270048663], + [1.2372390495492345, 0.04694186680970479, 0.1735496242430129, 0.27950851238353797, 0.27950851238353824, 0.17354962424301337, 0.04694186680970491, 0.2030274677865163, 0.1599162933924084, 0.13705623908568998, 0.13705623908568998, 0.1599162933924083, 0.2030274677865163], + [1.4036070410970374, 0.03978943170650437, 0.17068213100612312, 0.2895284404233108, 0.28952844042331044, 0.17068213100612267, 0.0397894317065043, 0.2022401322427263, 0.15724580382196335, 0.14051406400521654, 0.14051406400521665, 0.1572458038219634, 0.2022401322427261], + [1.5837777891543217, 0.03309497691514323, 0.168017485948534, 0.2988875396233992, 0.29888753962339887, 0.1680174859485332, 0.0330949769151427, 0.2012051808918379, 0.154011621884331, 0.14478319719661759, 0.14478319719661778, 0.15401162188433104, 0.20120518089183762], + [1.7804153992502711, 0.026979418856677356, 0.16559465872282456, 0.30742592402613755, 0.3074259240261369, 0.16559465872282328, 0.026979418856676683, 0.19995636105471143, 0.15025597877234786, 0.14978766013927755, 0.14978766013927755, 0.1502559787723482, 0.19995636105471168], + [1.9968753220513797, 0.0215315864317137, 0.16344203794249176, 0.3150263762713911, 0.31502637627139146, 0.16344203794249254, 0.02153158643171394, 0.19852724722374931, 0.14603010794913848, 0.15544264484647516, 0.15544264484647483, 0.14603010794913818, 0.1985272472237497], + [2.2374156573021207, 0.01680565407537722, 0.16157603184145092, 0.321618313835292, 0.3216183138352921, 0.16157603184145092, 0.01680565407537715, 0.19695014097999605, 0.1413864316247636, 0.16166342748743978, 0.16166342748743986, 0.1413864316247638, 0.19695014097999602], + [2.5075780349225414, 0.012820575508742466, 0.1600005874193163, 0.32717883610772175, 0.3271788361077215, 0.16000058741931583, 0.012820575508742191, 0.19525385151661961, 0.13636815355846543, 0.16837799507922954, 0.16837799507922965, 0.13636815355846538, 0.1952538515166194], + [2.8148637961831837, 0.009562049168501747, 0.15870777633979716, 0.33173017306098135, 0.3317301730609814, 0.15870777633979732, 0.009562049168501832, 0.1934605040822263, 0.13099566459238673, 0.17554383152133476, 0.17554383152133435, 0.13099566459238696, 0.19346050408222698], + [3.169908690916885, 0.00698741024118607, 0.1576795582211438, 0.3353330299241937, 0.3353330299241936, 0.15767955822114355, 0.006987410241186126, 0.19158162093144313, 0.12524944587992176, 0.1831689333878293, 0.18316893338782897, 0.12524944587992215, 0.19158162093144382], + [3.5884089954118075, 0.005033747792529856, 0.15689081637847388, 0.3380754341539368, 0.3380754341539363, 0.1568908163784729, 0.005033747792529485, 0.18961415927338973, 0.11905048867605214, 0.19133535191215809, 0.1913353519121575, 0.11905048867605261, 0.18961415927339084], + [4.093591120303067, 0.0036298739306027976, 0.15631393023448584, 0.3400561917283247, 0.34005619172832474, 0.15631393023448595, 0.003629873930603036, 0.18753960279214418, 0.11224809270478969, 0.20021230145903687, 0.2002123014590371, 0.1122480927047899, 0.1875396027921439], + [4.715445510360816, 0.002712935702674946, 0.1559252697642516, 0.3413617948207871, 0.34136179482078666, 0.15592526976425083, 0.002712935702674599, 0.18533974771289288, 0.1046685667542351, 0.20999168569818194, 0.20999168569818114, 0.1046685667542357, 0.18533974771289435] + ] +} diff --git a/tests/test_games/golden_logit/allpay_cv_p60_b11_to_lambda_20.json b/tests/test_games/golden_logit/allpay_cv_p60_b11_to_lambda_20.json new file mode 100644 index 0000000000..7ca0d72d21 --- /dev/null +++ b/tests/test_games/golden_logit/allpay_cv_p60_b11_to_lambda_20.json @@ -0,0 +1,234 @@ +{ + "counts": [{"predictor_attempts": 68, "accepted_steps": 68, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 132, "function_evals": 132, "jacobian_evals": 69, "factorizations": 69}, {"predictor_attempts": 72, "accepted_steps": 72, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 79, "function_evals": 79, "jacobian_evals": 73, "factorizations": 73}, {"predictor_attempts": 86, "accepted_steps": 86, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 86, "function_evals": 86, "jacobian_evals": 87, "factorizations": 87}], + "points": [ + [0.0, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909], + [0.0008165808970745147, 0.09031452833458653, 0.09043237242508136, 0.09055056942923694, 0.09066912094744983, 0.09078802858987724, 0.09090729397650923, 0.09102691873724206, 0.09114690451195157, 0.09126725295056776, 0.09138796571314954, 0.09150904446996043, 0.09021395616285413, 0.0903516538699218, 0.09048979045696028, 0.09062836800620691, 0.09076738861304408, 0.09090685438610029, 0.09104676744735167, 0.09118712993222475, 0.09132794398970014, 0.09146921178241688, 0.09161093548677798, 0.09031452833450511, 0.0904323724249955, 0.0905505694291603, 0.09066912094739274, 0.09078802858984666, 0.09090729397650875, 0.09102691873727181, 0.09114690451200827, 0.09126725295064453, 0.09138796571323603, 0.09150904447004271, 0.09021395616275818, 0.09035165386982093, 0.09048979045687038, 0.09062836800613994, 0.0907673886130082, 0.09090685438609969, 0.09104676744738649, 0.09118712993229121, 0.09132794398979024, 0.09146921178251859, 0.09161093548687506], + [0.0017148350574482181, 0.08966667683296062, 0.08991049476641057, 0.09015583818206023, 0.09040272155598955, 0.09065115954920255, 0.0909011670106017, 0.09115275898002, 0.09140595069131213, 0.09166075757550607, 0.0919171952640165, 0.09217527959192143, 0.08945697842534465, 0.0897415999466497, 0.09002811678027321, 0.09031654774499841, 0.09060691190850184, 0.09089922859147107, 0.09119351737180423, 0.09148979808889338, 0.09178809084799362, 0.09208841602467976, 0.09239079426939312, 0.08966667683296062, 0.08991049476641057, 0.09015583818206023, 0.09040272155598955, 0.09065115954920255, 0.0909011670106017, 0.09115275898002, 0.09140595069131213, 0.09166075757550607, 0.0919171952640165, 0.09217527959192143, 0.08945697842534465, 0.0897415999466497, 0.09002811678027317, 0.09031654774499838, 0.0906069119085018, 0.09089922859147102, 0.09119351737180419, 0.09148979808889338, 0.09178809084799358, 0.09208841602467972, 0.09239079426939308], + [0.0027029557543077148, 0.08896142449124284, 0.08933949509781035, 0.08972127294338807, 0.09010681326065598, 0.09049617239209572, 0.0908894078181203, 0.09128657818606586, 0.09168774334007748, 0.09209296435191996, 0.09250230355274913, 0.09291582456587666, 0.08863347998734619, 0.08907435506360102, 0.08951983141389407, 0.08996998077399365, 0.09042487637216894, 0.09088459296810587, 0.09134920689304522, 0.09181879609118732, 0.0922934401624104, 0.0927732204063515, 0.09325821986790096, 0.08896142449124284, 0.08933949509781035, 0.08972127294338807, 0.09010681326065598, 0.09049617239209576, 0.0908894078181203, 0.0912865781860659, 0.09168774334007748, 0.09209296435192, 0.09250230355274913, 0.09291582456587666, 0.08863347998734619, 0.08907435506360102, 0.08951983141389407, 0.08996998077399365, 0.0904248763721689, 0.09088459296810583, 0.09134920689304522, 0.09181879609118732, 0.0922934401624104, 0.0927732204063515, 0.09325821986790096], + [0.003789968569275714, 0.08819447879908776, 0.08871513687990264, 0.08924290843932856, 0.08977794142646049, 0.09032038794879703, 0.09087040441998234, 0.09142815171391046, 0.09199379532551383, 0.0925675055385787, 0.09314945760094788, 0.0937398319074944, 0.08773859854527062, 0.08834503974873215, 0.08896029988983392, 0.08958457092716392, 0.09021805040666404, 0.0908609416658682, 0.09151345404714964, 0.09217580312044292, 0.09284821091593567, 0.09353090616725361, 0.09422412456569403, 0.08819447879908776, 0.08871513687990264, 0.08924290843932856, 0.08977794142646049, 0.09032038794879703, 0.09087040441998234, 0.09142815171391046, 0.09199379532551387, 0.09256750553857875, 0.09314945760094788, 0.0937398319074944, 0.08773859854527062, 0.08834503974873215, 0.08896029988983392, 0.08958457092716392, 0.09021805040666404, 0.09086094166586824, 0.09151345404714967, 0.09217580312044292, 0.09284821091593572, 0.09353090616725361, 0.09422412456569407], + [0.0049858198445602905, 0.08736138925275921, 0.08803290960279213, 0.08871641529931569, 0.08941223266567405, 0.09012070005870244, 0.09084216843091164, 0.0915770019245793, 0.09232557849988557, 0.09308829059939638, 0.09386554585137678, 0.09465776781461409, 0.08676731794726712, 0.08754847203718763, 0.08834446630854947, 0.08915572367381305, 0.089982683197861, 0.09082580087449872, 0.09168555044810411, 0.0925624242835139, 0.09345693428747949, 0.09436961288529025, 0.0953010140564507, 0.08736138925275921, 0.08803290960279213, 0.08871641529931569, 0.08941223266567405, 0.0901207000587024, 0.09084216843091164, 0.0915770019245793, 0.0923255784998856, 0.09308829059939643, 0.09386554585137682, 0.09465776781461413, 0.0867673179472671, 0.0875484720371876, 0.08834446630854943, 0.08915572367381305, 0.08998268319786096, 0.09082580087449872, 0.09168555044810416, 0.0925624242835139, 0.09345693428747949, 0.09436961288529029, 0.0953010140564507], + [0.0063014759010626325, 0.08645757832274469, 0.08728803421791809, 0.08813707875491253, 0.08900534809501467, 0.08989350795804231, 0.09080225536663081, 0.09173232051588327, 0.09268446877904721, 0.09365950286093133, 0.09465826511194468, 0.09568164001694328, 0.08571450912892455, 0.08667917762427053, 0.08766683048270943, 0.08867829112637884, 0.08971442260943013, 0.09077613002497864, 0.091864363089306, 0.09298011891871111, 0.09412444501595506, 0.09529844248496633, 0.09650326949439716, 0.08645757832274469, 0.08728803421791805, 0.08813707875491249, 0.08900534809501459, 0.08989350795804227, 0.09080225536663081, 0.09173232051588327, 0.09268446877904725, 0.09365950286093137, 0.09465826511194472, 0.09568164001694328, 0.08571450912892455, 0.08667917762427049, 0.08766683048270936, 0.0886782911263788, 0.08971442260943009, 0.09077613002497864, 0.091864363089306, 0.09298011891871115, 0.0941244450159551, 0.09529844248496637, 0.09650326949439716], + [0.007749034778043184, 0.08547838228069081, 0.08647547600529618, 0.08749978059978301, 0.08855243421964643, 0.08963463982440233, 0.09074766987653791, 0.09189287145659447, 0.09307167183812091, 0.09428558457157594, 0.09553621613234944, 0.0968252731950256, 0.0845749829594074, 0.0857314093962735, 0.08692142960305187, 0.08814651470401338, 0.08940822260494392, 0.09070820447034189, 0.09204821178846412, 0.09343010408733711, 0.09485585737270628, 0.09632757336787286, 0.09784748964563651, 0.08547838228069081, 0.08647547600529609, 0.08749978059978294, 0.08855243421964634, 0.08963463982440228, 0.09074766987653787, 0.09189287145659451, 0.093071671838121, 0.09428558457157603, 0.09553621613234954, 0.0968252731950256, 0.0845749829594074, 0.08573140939627343, 0.08692142960305178, 0.0881465147040133, 0.08940822260494388, 0.09070820447034185, 0.09204821178846416, 0.09343010408733719, 0.09485585737270641, 0.09632757336787294, 0.09784748964563651], + [0.009341852656611405, 0.08441910340547354, 0.08558996686980154, 0.08679898634193556, 0.08804807265650322, 0.0893392672868033, 0.09067475375283604, 0.09205687024977995, 0.09348812365236517, 0.09497120507368327, 0.09650900718399955, 0.09810464352685955, 0.08334355667846002, 0.08469917873448497, 0.08610182686839803, 0.087553967094774, 0.08905824012975594, 0.09061747709750526, 0.09223471695899213, 0.09391322588727913, 0.09565651884738692, 0.09746838367865682, 0.09935290802439352, 0.08441910340547358, 0.08558996686980141, 0.0867989863419354, 0.08804807265650302, 0.08933926728680315, 0.090674753752836, 0.09205687024977999, 0.09348812365236533, 0.09497120507368345, 0.09650900718399968, 0.09810464352685959, 0.08334355667846007, 0.08469917873448486, 0.08610182686839783, 0.08755396709477381, 0.08905824012975583, 0.09061747709750521, 0.09223471695899221, 0.0939132258872793, 0.09565651884738713, 0.09746838367865698, 0.09935290802439352], + [0.011094687657815835, 0.08327507513560223, 0.08462603940755259, 0.08602874007047459, 0.08748623059353525, 0.08900181124074125, 0.09057905463222173, 0.09222183455990968, 0.09393435855267966, 0.09572120477414402, 0.09758736394253871, 0.09953828709067274, 0.08201513560312534, 0.08357630137611173, 0.08520111024590431, 0.08689349603772194, 0.088657722103641, 0.0904984164679352, 0.09242061155998109, 0.09442978924794034, 0.09653193201589928, 0.09873358128364912, 0.10104190405824484, 0.0832750751356023, 0.0846260394075524, 0.08602874007047422, 0.08748623059353486, 0.08900181124074098, 0.09057905463222161, 0.09222183455990976, 0.09393435855267991, 0.09572120477414435, 0.097587363942539, 0.09953828709067274, 0.08201513560312546, 0.08357630137611151, 0.08520111024590392, 0.08689349603772152, 0.08865772210364069, 0.09049841646793508, 0.09242061155998117, 0.09442978924794063, 0.09653193201589971, 0.09873358128364947, 0.10104190405824484], + [0.013023864392754015, 0.08204174170752485, 0.08357807542809147, 0.08518267025433068, 0.08686021477995824, 0.08861584011592036, 0.09045517360192534, 0.09238440056189194, 0.09441033554830511, 0.09654050482554573, 0.09878324222187583, 0.10114780095475887, 0.0805848116720233, 0.08235646098060533, 0.08421190536493937, 0.08615717358724535, 0.08819888425157398, 0.09034431954300247, 0.09260151029152792, 0.09497933444027286, 0.0974876314453761, 0.10013733569407615, 0.1029406327296311, 0.0820417417075251, 0.08357807542809106, 0.08518267025432996, 0.08686021477995748, 0.08861584011591973, 0.09045517360192507, 0.09238440056189207, 0.09441033554830562, 0.09654050482554645, 0.0987832422218765, 0.10114780095475887, 0.08058481167202355, 0.08235646098060488, 0.08421190536493856, 0.08615717358724446, 0.08819888425157327, 0.09034431954300211, 0.09260151029152805, 0.09497933444027341, 0.09748763144537698, 0.10013733569407687, 0.1029406327296311], + [0.015147463538182526, 0.08071475369825556, 0.0824403719411311, 0.08425401049445569, 0.08616263300717528, 0.08817396293965465, 0.09029659059536367, 0.09254009883207612, 0.09491521137997136, 0.09743396866897651, 0.10010993732412299, 0.10295846111904577, 0.07904798015273055, 0.08103329386471164, 0.08312640749948745, 0.08533625598677021, 0.08767278507331454, 0.0901470980151461, 0.0927716285300446, 0.0955603456559213, 0.09852899759040964, 0.10169540343697438, 0.10507980419497712, 0.0807147536982561, 0.08244037194113037, 0.08425401049445427, 0.08616263300717371, 0.08817396293965336, 0.09029659059536299, 0.09254009883207628, 0.09491521137997229, 0.09743396866897798, 0.10010993732412428, 0.10295846111904577, 0.07904798015273118, 0.08103329386471081, 0.08312640749948579, 0.08533625598676835, 0.08767278507331301, 0.09014709801514526, 0.09277162853004473, 0.09556034565592231, 0.09852899759041127, 0.10169540343697582, 0.10507980419497698], + [0.01748554188416464, 0.0792900806458982, 0.08120722787860067, 0.08323564014495148, 0.08538536850920418, 0.08766772124339066, 0.09009546770976318, 0.0926830833923903, 0.09544704613150408, 0.09840619652934697, 0.10158217939996986, 0.10499998841538805, 0.07740047542598344, 0.07960049857914998, 0.08193643862619245, 0.08442116110621839, 0.08706920047322154, 0.08989703899392308, 0.09292344339993056, 0.09616987372695772, 0.09966098304429286, 0.10342523252319383, 0.10749565410180398, 0.0792900806458995, 0.0812072278785993, 0.08323564014494864, 0.08538536850920088, 0.08766772124338786, 0.09009546770976154, 0.0926830833923903, 0.09544704613150581, 0.09840619652934982, 0.10158217939997247, 0.10499998841538805, 0.07740047542598495, 0.07960049857914843, 0.08193643862618921, 0.0844211611062146, 0.08706920047321826, 0.08989703899392112, 0.09292344339993047, 0.09616987372695965, 0.09966098304429617, 0.10342523252319681, 0.10749565410180378], + [0.020060389839411934, 0.07776414152034197, 0.07987305496809644, 0.08212015065951768, 0.0845195745070696, 0.08708748621160796, 0.08984243266462158, 0.09280580794753816, 0.09600242436985856, 0.0994612272226806, 0.10321619742407916, 0.10730750250531505, 0.07563872613872431, 0.07805197402848496, 0.08063353659108197, 0.08340147259935003, 0.08637650760519859, 0.08958254362991976, 0.09304729017103339, 0.0968030515599066, 0.10088771775329226, 0.10534602255877808, 0.11023115736577746, 0.07776414152034487, 0.07987305496809391, 0.08212015065951203, 0.08451957450706288, 0.08708748621160196, 0.08984243266461783, 0.0928058079475377, 0.09600242436986163, 0.0994612272226863, 0.10321619742408471, 0.10730750250531519, 0.07563872613872767, 0.07805197402848216, 0.08063353659107553, 0.08340147259934226, 0.08637650760519157, 0.08958254362991526, 0.09304729017103265, 0.09680305155990998, 0.10088771775329872, 0.10534602255878435, 0.11023115736577721], + [0.022896835401688246, 0.07613395322607872, 0.07843251612912772, 0.08089994442964821, 0.08355569823147134, 0.0864223706115058, 0.0895263478912376, 0.092898644899104, 0.09657597200287033, 0.1006021128258341, 0.10502972392313996, 0.1099227158312814, 0.07375992914785204, 0.07638198958546698, 0.07920908436378957, 0.08226598247543736, 0.08558159049273639, 0.08918985163976396, 0.0931308894966972, 0.09745247757872956, 0.10221194837371211, 0.1074787029982101, 0.11333755385036842, 0.076133953226085, 0.07843251612912311, 0.08089994442963704, 0.08355569823145757, 0.08642237061149298, 0.08952634789122894, 0.09289864489910185, 0.0965759720028756, 0.10060211282584532, 0.10502972392315153, 0.10992271583128223, 0.07375992914785928, 0.07638198958546184, 0.07920908436377687, 0.0822659824754215, 0.08558159049272145, 0.08918985163975363, 0.0931308894966943, 0.09745247757873532, 0.10221194837372483, 0.10747870299822318, 0.11333755385036842], + [0.02602260625551735, 0.07439729651209191, 0.0768806944370681, 0.07956737363579607, 0.08248354611025001, 0.08566016908198451, 0.08913407562325898, 0.09294944608920146, 0.097159746946591, 0.10183032050851186, 0.10704189657316682, 0.11289543448440664, 0.07176224052759254, 0.07458539000253286, 0.07765448802858102, 0.08100278653206455, 0.08466978507225198, 0.08870276615175209, 0.09315880580950946, 0.09810744026735775, 0.10363425242538697, 0.10984577051266814, 0.11687627467524901, 0.07439729651210533, 0.07688069443705975, 0.07956737363577401, 0.08248354611022186, 0.08566016908195735, 0.08913407562323926, 0.09294944608919449, 0.09715974694659954, 0.1018303205085337, 0.10704189657319106, 0.11289543448440964, 0.07176224052760796, 0.0745853900025236, 0.07765448802855598, 0.08100278653203218, 0.08466978507222031, 0.08870276615172869, 0.09315880580950056, 0.09810744026736687, 0.10363425242541169, 0.1098457705126957, 0.11687627467525068], + [0.029468765137827303, 0.07255289762462469, 0.07521329498530642, 0.07811492705023036, 0.08129240423594078, 0.08478734533868729, 0.088650256321143, 0.09294305042764568, 0.09774248138792284, 0.10314490198787067, 0.1092729884402401, 0.11628545220456853, 0.06964498047311611, 0.07265783674189641, 0.07596141230786153, 0.07959944981062214, 0.08362488747363217, 0.088102402398613, 0.09311184579867385, 0.0987529573177166, 0.1051519501809886, 0.1124708937130328, 0.1209213837927213, 0.07255289762465301, 0.07521329498529122, 0.07811492705018686, 0.08129240423588338, 0.08478734533862975, 0.0886502563210985, 0.09294305042762592, 0.09774248138793513, 0.10314490198791276, 0.10927298844029129, 0.11628545220457834, 0.06964498047314843, 0.07265783674187967, 0.07596141230781232, 0.07959944981055625, 0.08362488747356525, 0.0881024023985603, 0.09311184579864916, 0.0987529573177291, 0.10515195018103622, 0.11247089371309114, 0.12092138379272903], + [0.033270238145433915, 0.070600622774554, 0.07342688076298508, 0.07653547256447686, 0.07997123043291621, 0.08378909064943417, 0.0880571272622124, 0.0928607539420175, 0.09830865680536031, 0.1045413550622822, 0.11174386197785595, 0.12016494777343882, 0.06740884721995034, 0.07059608549716544, 0.07412208170890536, 0.07804326148063623, 0.08242925636359778, 0.0873669960514198, 0.09296642006008343, 0.09936860853448838, 0.10675761708347878, 0.11537814415441747, 0.12556268186182865, 0.07060062277461296, 0.07342688076295756, 0.07653547256439111, 0.07997123043279918, 0.08378909064931257, 0.08805712726211284, 0.09286075394196516, 0.09830865680537393, 0.1045413550623627, 0.11174386197796482, 0.12016494777346866, 0.06740884722001689, 0.0705960854971351, 0.07412208170880845, 0.07804326148050227, 0.08242925636345663, 0.08736699605130205, 0.09296642006001882, 0.09936860853449998, 0.1067576170835691, 0.11537814415454177, 0.1255626818618558], + [0.03746646150651627, 0.06854168104630272, 0.07151914185799257, 0.07482256215998119, 0.07850893574457911, 0.0826494841616548, 0.08733442044114895, 0.09267977403160164, 0.0988374030153958, 0.10601008518223541, 0.11447498732757129, 0.12462152504516782, 0.06505613318015324, 0.06839829705628024, 0.07212965343479631, 0.07632159967044716, 0.0810640474258427, 0.08647182264412949, 0.09269391286279141, 0.09992715668397077, 0.10843707946283558, 0.1185906392036297, 0.13090965840397512, 0.06854168104642368, 0.07151914185794246, 0.07482256215981185, 0.07850893574434084, 0.08264948416139849, 0.08733442044092753, 0.09267977403146888, 0.09883740301539765, 0.10601008518238635, 0.11447498732780402, 0.12462152504525384, 0.06505613318028834, 0.0683982970562249, 0.07212965343460527, 0.07632159967017485, 0.08106404742554552, 0.08647182264386793, 0.09269391286262872, 0.099927156683963, 0.1084370794630034, 0.1185906392038957, 0.13090965840405988], + [0.04210217974414829, 0.06637882984959238, 0.06948919484383868, 0.07297080375998274, 0.07689477327363449, 0.08135179151315593, 0.0864593938893865, 0.09237276361390796, 0.09930123394766531, 0.10753436212806568, 0.11748478561652168, 0.12976206758903477, 0.06259093451034353, 0.06606437522134802, 0.06997866458817259, 0.07442242582075798, 0.07950962436221937, 0.0853892981546083, 0.09226013671823095, 0.10039298112443473, 0.11016676247507122, 0.12212827528006742, 0.13709652179709886, 0.06637882984983734, 0.06948919484374641, 0.07297080375964761, 0.07689477327314921, 0.08135179151261654, 0.08645939388889703, 0.09237276361358127, 0.09930123394761049, 0.10753436212834175, 0.11748478561702208, 0.1297620675892741, 0.06259093451061362, 0.06606437522124539, 0.06997866458779523, 0.07442242582020456, 0.0795096243615952, 0.08538929815403111, 0.09226013671783263, 0.10039298112434766, 0.11016676247537362, 0.12212827528064003, 0.13709652179734744], + [0.04722843722295874, 0.06411657558766606, 0.06733790616186908, 0.070976300582826, 0.07511885015111269, 0.07987894224827827, 0.08540706711182988, 0.09190746388343582, 0.09966467205862359, 0.10908766609441874, 0.12078694404286683, 0.13571761212240888, 0.06001934350957317, 0.0635963213540383, 0.06766555056740527, 0.07233492400255744, 0.0777461942456493, 0.08408935074103188, 0.09162499163320074, 0.10072040389586513, 0.11191026380523622, 0.12600407809366423, 0.14428857824729205, 0.06411657558815465, 0.06733790616169524, 0.07097630058215985, 0.07511885015012351, 0.07987894224714497, 0.08540706711075381, 0.09190746388264993, 0.09966467205837963, 0.10908766609490458, 0.12078694404394778, 0.13571761212306005, 0.06001934351010417, 0.06359632135384269, 0.06766555056665616, 0.07233492400143181, 0.07774619424434037, 0.08408935073976494, 0.09162499163224595, 0.10072040389552614, 0.11191026380575453, 0.12600407809490183, 0.14428857824799368], + [0.05290381543992615, 0.06176136117118851, 0.06506822987642497, 0.06883715308642237, 0.0731727729926927, 0.07821422682841858, 0.08415074710581529, 0.09124662665828598, 0.09988287830473608, 0.11063034469470644, 0.12438619355737855, 0.1426494658074418, 0.057349611962112024, 0.060998590573794004, 0.06518922377058171, 0.07005029209418984, 0.07575471286228543, 0.08254017128906045, 0.09074250307322371, 0.10085207740474965, 0.11361407238412381, 0.1302184908230666, 0.15269025393820027, 0.06176136117214567, 0.06506822987608483, 0.068837153085089, 0.07317277299067192, 0.07821422682603946, 0.08415074710346102, 0.09124662665642813, 0.09988287830394084, 0.110630344695507, 0.1243861935597237, 0.1426494658091885, 0.0573496119631346, 0.06099859057340525, 0.0651892237690839, 0.07005029209189573, 0.07575471285954365, 0.08254017128629354, 0.0907425030709734, 0.10085207740369356, 0.11361407238493629, 0.1302184908257498, 0.15269025394013439], + [0.05919597859069498, 0.05932173176808595, 0.06268554681307016, 0.06655401147428402, 0.07105042764043873, 0.07634224776674511, 0.08266294187353547, 0.0903483857925406, 0.09990050348996243, 0.11210558459474042, 0.12827184072541564, 0.15075677821630787, 0.054592273322389535, 0.05827843034066431, 0.06255169208383882, 0.06756267778329826, 0.0735180943658298, 0.08070945951957223, 0.08956147282950294, 0.10071773679233922, 0.11520247618929629, 0.13475066455107756, 0.16255502254672058, 0.059321731769917604, 0.06268554681236847, 0.06655401147158811, 0.0710504276362956, 0.07634224776175143, 0.08266294186840746, 0.09034838578821244, 0.09990050348767311, 0.1121055845959022, 0.128271840730519, 0.1507567782209538, 0.05459227332430504, 0.05827843033984826, 0.06255169208081236, 0.06756267777860578, 0.07351809436008841, 0.08070945951355701, 0.08956147282427332, 0.10071773678936505, 0.11520247619034195, 0.13475066455690304, 0.16255502255197643], + [0.06618359567286122, 0.056808471331826135, 0.06019798956853063, 0.06413065866255559, 0.06874887988940859, 0.0742501436524782, 0.08091675650655925, 0.08916730331676016, 0.09965111356260498, 0.11343488006706194, 0.13240812334072155, 0.1602856803924758, 0.051760213221121835, 0.05544617917467331, 0.05975868616417006, 0.06487023287596427, 0.07102273555013736, 0.07856627360756323, 0.08802703051797155, 0.10023380179778729, 0.11657196451377387, 0.13954554516755588, 0.17419733801515008, 0.05680847133521595, 0.06019798956698817, 0.06413065865702963, 0.06874887988086761, 0.07425014364198872, 0.08091675649543315, 0.08916730330680334, 0.09965111355645168, 0.11343488006826405, 0.1324081233518427, 0.16028568040478508, 0.05176021322456781, 0.0554461791728515, 0.05975868615796734, 0.06487023286631281, 0.0710227355381068, 0.07856627359453874, 0.08802703050596619, 0.10023380178989136, 0.11657196451437764, 0.13954554518018875, 0.17419733802931717], + [0.07395869827497586, 0.0542347057404514, 0.057616737356490644, 0.06157459594639528, 0.06626936589368972, 0.07192907714682835, 0.07888784367695985, 0.08765634282589362, 0.0990577075837373, 0.11451351017890415, 0.13672028807645226, 0.17153982612609942, 0.04886868211604967, 0.05251550317285643, 0.05682025527737674, 0.0619762357473704, 0.06826032594540264, 0.07608355295854684, 0.0860833965120992, 0.09930452729826787, 0.11758590126042484, 0.14449538719055766, 0.18800623366364774, 0.05423470574640296, 0.05761673735287344, 0.061574595934867936, 0.06626936587595031, 0.07192907712475498, 0.07888784365290379, 0.08765634280325008, 0.09905770756793074, 0.11451351017847784, 0.13672028810065792, 0.17153982615868968, 0.04886868212185309, 0.05251550316854224, 0.05682025526443395, 0.061976235727367004, 0.06826032592014893, 0.0760835529304447, 0.08608339648484638, 0.09930452727813452, 0.1175859012578549, 0.14449538721781474, 0.18800623370168992], + [0.08262948549622769, 0.05161597459239907, 0.05495626754053726, 0.058897598492532476, 0.06361832122316609, 0.06937593793210803, 0.076556926065447, 0.08577000288037656, 0.09803500804149094, 0.11520706873274034, 0.14107535455687184, 0.18489154100179672, 0.04593525215327591, 0.049503552802073435, 0.053751286612136795, 0.05889020768313431, 0.06522986159393093, 0.07324130491748103, 0.08367812327233541, 0.09782559678405285, 0.11807099184420315, 0.1494145588781956, 0.2044592656378444, 0.051615974601908345, 0.05495626753157349, 0.05889759846797852, 0.06361832118597183, 0.06937593788553131, 0.07655692601360364, 0.08577000282945162, 0.09803500800225726, 0.11520706872487291, 0.1410753546092782, 0.18489154108818706, 0.045935252161894265, 0.049503552791360726, 0.053751286584557995, 0.05889020764127577, 0.06522986154077345, 0.07324130485704329, 0.08367812321113957, 0.09782559673430455, 0.11807099182964495, 0.1494145589363632, 0.2044592657398612], + [0.09232344989061772, 0.0489702831527522, 0.05223455810064779, 0.05611620762289658, 0.0608083798309093, 0.06659516187247433, 0.07391281614163, 0.08346874109265744, 0.09649428137066737, 0.11535083040368946, 0.14525723283588982, 0.20079150963437917, 0.04297973337703075, 0.046431034146252395, 0.05057190645185951, 0.0556289305807818, 0.06193971895314877, 0.07003032165745673, 0.0807679266912083, 0.09569111900728675, 0.11781807516472595, 0.15400773864065492, 0.224133499530269, 0.04897028316506978, 0.05223455807757182, 0.05611620756941343, 0.06080837975209804, 0.06659516177389942, 0.07391281603031452, 0.0834687409794733, 0.09649428127613463, 0.11535083037106886, 0.14525723294801665, 0.20079150986372574, 0.042979733386254215, 0.04643103411882186, 0.05057190639179567, 0.05562893049225674, 0.06193971884091362, 0.07003032152794769, 0.08076792655537118, 0.09569111888772813, 0.11781807511279987, 0.15400773876226223, 0.2241334998036261], + [0.10319036756986825, 0.04631815677647265, 0.04947324604900602, 0.0532521321905971, 0.057859261872913174, 0.06360051412006469, 0.07095572899587732, 0.08072459938343388, 0.0943513103344502, 0.11475454259858202, 0.14893793685462384, 0.21977257486595564, 0.04002408163462613, 0.0433222075668647, 0.04730773587060711, 0.0522172678716143, 0.05840958765965136, 0.06645613071853598, 0.07732591402344291, 0.09280474811038862, 0.11659081737837602, 0.15783491377277298, 0.24770660357161348, 0.04631815678296898, 0.04947324598853757, 0.05325213207174844, 0.057859261704348255, 0.0636005139111321, 0.07095572875822836, 0.08072459913540905, 0.09435131011327194, 0.11475454249449646, 0.1489379370891257, 0.2197725754745141, 0.04002408163220823, 0.043322207495785706, 0.047307735737320354, 0.052217267682674776, 0.058409587422329205, 0.06645613044257383, 0.07732591372607629, 0.09280474783098967, 0.11659081722173585, 0.1578349140178671, 0.24770660430205002], + [0.11540398578272511, 0.04368272371819195, 0.04669775239744273, 0.05033253493791443, 0.05479845884992946, 0.06041662964991251, 0.06770052381633315, 0.07752758144827655, 0.09153761726127195, 0.11321567631140753, 0.15165120264005788, 0.2424393069532663, 0.037092345316507264, 0.0402048460543802, 0.043989993895521655, 0.04868869805223597, 0.05467201788984347, 0.06254270299795624, 0.0733495519805899, 0.08909488817385829, 0.11414632907838018, 0.16028349633156347, 0.27593514624430643, 0.04368272368443734, 0.04669775223966078, 0.05033253467078605, 0.05479845848805801, 0.06041662920869572, 0.06770052331447016, 0.07752758091522585, 0.09153761676069558, 0.11321567602011123, 0.15165120311041635, 0.2424393085586074, 0.03709234525988778, 0.04020484587171291, 0.043989993596967085, 0.04868869764775353, 0.05467201738996029, 0.06254270241628862, 0.07334955134198214, 0.08909488754161649, 0.1141463286515515, 0.160283496794146, 0.27593514818005854], + [0.12915989328534236, 0.04108982282515501, 0.043937357196614256, 0.04739015333578355, 0.051661590007476825, 0.05708003284706223, 0.06417931998319011, 0.07389183941060941, 0.08801397639022644, 0.1105434188440952, 0.15278298036875784, 0.26942952452323476, 0.03421068792555567, 0.03711018059906878, 0.04065544147365827, 0.045085468133438736, 0.05077330017740149, 0.05833526477871519, 0.06886813704732911, 0.08453251244264645, 0.11027040036242339, 0.1605695191677944, 0.3095891191885408, 0.04108982264682971, 0.043937356796648744, 0.04739015273893784, 0.05166158923788282, 0.057080031929363395, 0.06417931894609634, 0.07389183829850843, 0.08801397530414601, 0.11054341810424391, 0.15278298124270978, 0.26942952869019904, 0.034210687694383665, 0.0371101801441627, 0.040655440810593996, 0.04508546727665178, 0.0507732991409099, 0.058335263579211906, 0.06886813571591516, 0.08453251107024341, 0.11027039929360234, 0.16056951993879595, 0.3095891242234855], + [0.14466495947713498, 0.038568012503452286, 0.04122508538776208, 0.04446307967900935, 0.04849217404376113, 0.05363920296155838, 0.06044267767395012, 0.06986012102723328, 0.08378364136076806, 0.10659267135044088, 0.15160443365519585, 0.3013289308661033, 0.031407433685963826, 0.03407276939432593, 0.0373460718866285, 0.04145819020582737, 0.046773297933341056, 0.05390136121496314, 0.06394790250322786, 0.07914809879144388, 0.10482553795403521, 0.157804192999528, 0.3493152036644591, 0.03856801192117747, 0.04122508443189567, 0.0444630783900314, 0.048492172460060996, 0.05363920112067384, 0.06044267561696895, 0.06986011881490234, 0.08378363913737591, 0.10659266963847891, 0.15160443506016694, 0.3013289413275532, 0.03140743299518419, 0.0340727683276722, 0.03734607046694892, 0.041458188452524865, 0.04677329586247344, 0.05390135884194659, 0.06394789985698562, 0.07914809598035409, 0.10482553550262931, 0.15780419397532391, 0.3493152162973279], + [0.162111718642565, 0.03614806429290974, 0.03859695461978255, 0.04159370098401638, 0.04534022437588972, 0.05015290273640071, 0.056558129834257245, 0.06550425635450295, 0.07890085337288946, 0.10130155008782725, 0.14738082343591383, 0.33852259697894593, 0.0287128276527973, 0.03112995469030199, 0.03410816773567054, 0.037864415110368664, 0.04274356762681936, 0.04932900593845074, 0.05869230190329649, 0.07304204527171897, 0.09780187402520893, 0.15116761068551446, 0.3954083411807812, 0.03614806279199588, 0.0385969525441898, 0.041593698395789205, 0.04534022133171574, 0.05015289928836258, 0.05655812603394223, 0.06550425227160493, 0.07890084918076631, 0.10130154652113232, 0.14738082509096945, 0.33852262173139086, 0.02871282596005413, 0.031129952418188923, 0.03410816491506906, 0.037864411763939086, 0.04274356376722363, 0.0493290015682317, 0.058692297026592545, 0.07304203997240405, 0.09780186895913512, 0.1511676110461292, 0.395408370972415], + [0.18163246954017456, 0.033861073049380346, 0.03608965274615538, 0.03882578713403513, 0.042258546637045244, 0.04668546465687115, 0.05260437012635944, 0.06091898339295889, 0.07346902354914701, 0.09471927676603376, 0.1395762806079273, 0.3809915419293096, 0.02615776444348816, 0.02832009804863349, 0.030989840738673547, 0.03436519887057465, 0.038762606605911396, 0.04472034309208525, 0.0532346860495325, 0.06638183613615148, 0.08935214858466482, 0.14020125768823063, 0.44751422107074357, 0.03386107302970164, 0.0360896527243015, 0.03882578711031826, 0.042258546611682477, 0.04668546463001809, 0.052604370098214094, 0.06091898336408576, 0.07346902352157299, 0.09471927674777861, 0.13957628065332886, 0.3809915423967453, 0.026157764422171867, 0.02832009802477825, 0.030989840712390408, 0.034365198841853746, 0.03876260657462602, 0.044720343058048756, 0.053234686012752004, 0.06638183609785608, 0.08935214855212564, 0.1402012577223691, 0.44751422165659643], + [0.2032388354951162, 0.031734126890702576, 0.0337355192362372, 0.03619853256110934, 0.03929547746163535, 0.04329770583063387, 0.04865965017975871, 0.05620723690278627, 0.06762464056179665, 0.08700990494381126, 0.12811639750932594, 0.42812080907750016, 0.02377048768243331, 0.02567852779554948, 0.028035924160022808, 0.03101847887285799, 0.0349070048127418, 0.040179519753873544, 0.0477216224448379, 0.05938150116358274, 0.07979036572763497, 0.12513784137139716, 0.5043787286799913, 0.031734126858143155, 0.03373551919964493, 0.03619853252068473, 0.03929547741741569, 0.043297705782527174, 0.04865965012766947, 0.05620723684704201, 0.0676246405046549, 0.0870099048958249, 0.12811639754758414, 0.4281208101465675, 0.02377048764737353, 0.025678527756027587, 0.028035924115916225, 0.031018478823823883, 0.03490700475819547, 0.04017951969302085, 0.04772162237694254, 0.05938150108922577, 0.07979036565500572, 0.12513784138208162, 0.5043787300299843], + [0.22677314909822896, 0.02978350795048081, 0.03155483233262542, 0.03373763013507729, 0.03648430099748476, 0.040034009469889324, 0.04478547540997928, 0.05145890468798245, 0.06150971149457206, 0.07842768481708992, 0.11357709813032436, 0.4786468463525371, 0.021571022785706766, 0.02323100116593409, 0.025280110292298607, 0.02786933358056375, 0.031238924240174007, 0.03579584748657757, 0.04228905487906161, 0.05226654723249581, 0.06954733524269013, 0.10706499502717035, 0.5638458317004506, 0.029783507895476957, 0.031554832272293, 0.03373763006930366, 0.03648430092595779, 0.04003400939212734, 0.04478547532546186, 0.05145890459661107, 0.06150971139830099, 0.07842768472669244, 0.1135770981221011, 0.4786468483308103, 0.021571022728261155, 0.023231001102548155, 0.02528011022245297, 0.02786933350344105, 0.03123892415460805, 0.03579584739104402, 0.04228905477188461, 0.05226654711301147, 0.06954733511729681, 0.10706499496951138, 0.5638458341846054], + [0.25191257389643884, 0.02800778475827989, 0.029548060133074136, 0.031446452449482534, 0.033833029315156034, 0.03691020138573835, 0.04101176649295228, 0.04673186504717021, 0.055246001019069, 0.06927914476904765, 0.09713482881389454, 0.5308508678855749, 0.019565257149563052, 0.020986920945960948, 0.02273702455018537, 0.024940477135262824, 0.02779428188434346, 0.03162833430126088, 0.037040428365824975, 0.04523898339582999, 0.05910169779763278, 0.0877223265690221, 0.6232442719636657, 0.028007784672178147, 0.02954806004323127, 0.031446452355359686, 0.03383302921606696, 0.03691020128087765, 0.04101176638151388, 0.046731864928741616, 0.05524600089494513, 0.06927914464734503, 0.09713482874497531, 0.5308508707189753, 0.01956525706393828, 0.020986920855302793, 0.022737024453604485, 0.02494047703158886, 0.027794281772064982, 0.0316283341784885, 0.03704042823039675, 0.04523898324605475, 0.059101697636235836, 0.08772232643725757, 0.6232442754476264], + [0.27824380745713057, 0.026384774744789504, 0.027692508774977465, 0.029302376459429777, 0.031320410112591714, 0.03390926938939775, 0.0373323154118075, 0.0420469541157347, 0.04892728286680955, 0.059893464617496, 0.08024494655299151, 0.5829456987941062, 0.017742155134424786, 0.018936265870541168, 0.020398815415699253, 0.022228415907969944, 0.024578282957280602, 0.027700107038501284, 0.032038432612763054, 0.03845994128647113, 0.04891613331463552, 0.06897078579569045, 0.6800306681142536, 0.02638477463536479, 0.027692508665955694, 0.029302376349906272, 0.03132041000162591, 0.033909269276034694, 0.03733231529515788, 0.04204695399521532, 0.04892728274288072, 0.059893464494374785, 0.08024494645401223, 0.5829457019337836, 0.01774215503095897, 0.01893626576514153, 0.02039881530731544, 0.022228415795370965, 0.024578282839004793, 0.02770010691280999, 0.032038432477645144, 0.038459941139903996, 0.048916133156224374, 0.06897078563934873, 0.6800306718376551], + [0.30537468185686445, 0.024874472070430097, 0.02594574921606926, 0.02726098799775172, 0.028901339820967147, 0.03098864074880838, 0.03371484583165363, 0.037401617651901864, 0.042634020817845876, 0.05060620972750798, 0.06422737543387551, 0.6334447420174555, 0.016076212271278735, 0.017052591920087578, 0.01823892507387003, 0.019708307568073725, 0.021571796621465952, 0.024006729443701885, 0.02731488543387055, 0.032055179964851944, 0.039393660364180995, 0.05225123645839436, 0.7323304772228496, 0.024874471959914084, 0.025945749109476987, 0.027260987894016812, 0.028901339719071294, 0.030988640647784373, 0.033714845730610656, 0.03740161755011247, 0.04263402071504596, 0.050606209625153054, 0.06422737534189692, 0.6334447448137797, 0.016076212171655443, 0.017052591821386097, 0.018238924975106076, 0.019708307468183132, 0.02157179651926574, 0.02400672933784041, 0.027314885322773985, 0.03205517984673728, 0.03939366023764534, 0.05225123632739061, 0.7323304803779664], + [0.3330236107130678, 0.023426119221733658, 0.024253889545048705, 0.02526605580564284, 0.02651925608991986, 0.02809597062313934, 0.03012131602700098, 0.032795011405856445, 0.03645750795782996, 0.041742741614452905, 0.04998998381280115, 0.6813321487685002, 0.014533759269592965, 0.015300503682905597, 0.016221133185774835, 0.01734513297751994, 0.018745359645224665, 0.02053368063424457, 0.022891127356965083, 0.026131197717500342, 0.030848606652644273, 0.03832868680185919, 0.7791208134460629, 0.023426119128994213, 0.02425388945723946, 0.025266055721763634, 0.02651925600904007, 0.028095970544384737, 0.03012131594954764, 0.03279501132896015, 0.036457507881011035, 0.04174274153835748, 0.049989983743245, 0.6813321508750434, 0.014533759189860128, 0.015300503605233145, 0.01622113310937881, 0.017345132901591877, 0.018745359568901877, 0.02053368055657147, 0.02289112727685703, 0.02613119763378653, 0.03084860656459084, 0.038328686712340986, 0.7791208156818972], + [0.36105722894147846, 0.021985895061659926, 0.022560837922888852, 0.023260936093752543, 0.024120387935537894, 0.02518695787420933, 0.026529516841863353, 0.028251278728945676, 0.030514512598303133, 0.03359040946163031, 0.037970474899245966, 0.7260287931529957, 0.013079883212075413, 0.013643914956954915, 0.01430956373154252, 0.015105927129420684, 0.016074050348500287, 0.017273752847791257, 0.018795743253173847, 0.02078451679017599, 0.023485210302978125, 0.02734997812701117, 0.8200974600458834, 0.02198589499345221, 0.022560837858689616, 0.023260936032776493, 0.02412038787705711, 0.025186957817543043, 0.026529516786383798, 0.0282512786741373, 0.030514512543984695, 0.03359040940866822, 0.037970474851832935, 0.7260287945545567, 0.013079883156288434, 0.013643914903004236, 0.01430956367888102, 0.01510592707749885, 0.016074050296751862, 0.01727375279562567, 0.018795743200002237, 0.020784516735556348, 0.023485210247153523, 0.027349978072792366, 0.820097461433222], + [0.38948691474924396, 0.020503260807400413, 0.020816329424565877, 0.021198712854981195, 0.021666330139152683, 0.02224018213144968, 0.022948578664653305, 0.023830658453550632, 0.024942175032822835, 0.026365464651812973, 0.028227629318920398, 0.767260678922482, 0.011683865513695744, 0.012052652882729099, 0.012476681581873178, 0.012969261511906112, 0.013548114371375148, 0.014237357836882, 0.015070668090912743, 0.016096527104990068, 0.017387356921519465, 0.01905637728068108, 0.8554211373066384, 0.020503260761592573, 0.0208163293812449, 0.021198712813625224, 0.021666330099287267, 0.02224018209265611, 0.02294857862660272, 0.02383065841609226, 0.0249421749961828, 0.026365464617021973, 0.028227629288685867, 0.7672606797693976, 0.011683865478223322, 0.012052652848395136, 0.012476681548344633, 0.012969261478860825, 0.013548114338506738, 0.014237357803922924, 0.01507066805769788, 0.01609652707160771, 0.017387356888652093, 0.019056377250335595, 0.8554211380839566], + [0.41844769536275245, 0.018936133729563404, 0.018982682686561933, 0.019050586301695142, 0.019143618006749897, 0.019266362283016605, 0.019424443735161438, 0.019624839806559703, 0.019876315327472138, 0.02019003844355882, 0.020580473298557778, 0.8049245066858095, 0.010322907483155926, 0.010506984448353868, 0.010708507750067391, 0.010930647813532007, 0.011177299096715047, 0.011453290990172052, 0.011764677196178415, 0.012119140056924323, 0.012526567050969984, 0.01299989171881386, 0.8854900866211115, 0.018936133700768385, 0.018982682658984344, 0.019050586275053752, 0.019143617980813064, 0.019266362257624712, 0.01942444371026725, 0.019624839782293305, 0.019876315304238987, 0.0201900384221824, 0.02058047328043535, 0.804924507156432, 0.01032290746216791, 0.010506984427894942, 0.010708507729970822, 0.010930647793654527, 0.011177299076953197, 0.011453290970491973, 0.011764677176665225, 0.012119140037859135, 0.012526567032946412, 0.012999891702876736, 0.88549008702033], + [0.4481756373434045, 0.017255815283417866, 0.017040876497213624, 0.016812483186671046, 0.01656941390257415, 0.016310402424822054, 0.016034157658845558, 0.015739390168432284, 0.01542484615542499, 0.015089349457202271, 0.014731851716048945, 0.8389914706798336, 0.008984692270643633, 0.009000425856818503, 0.009007115857925812, 0.009003616839556078, 0.008988700034472767, 0.008961062779296423, 0.008919343481883652, 0.008862143179030332, 0.008788054656771276, 0.008695699870114131, 0.9107891831947709, 0.017255811717806803, 0.017040873131597873, 0.01681247999881719, 0.016569410880206175, 0.016310399563303036, 0.016034154958355397, 0.015739387631270235, 0.015424843785350825, 0.015089347265283784, 0.014731849742050157, 0.8389915042159374, 0.008984689910586478, 0.009000423594443162, 0.00900711368290922, 0.00900361474724065, 0.008988698024800013, 0.00896106085533391, 0.008919341648318214, 0.008862141441879098, 0.008788053027376003, 0.008695698379837146, 0.9107892083445234], + [0.47898970161875754, 0.015452097482561728, 0.014995776446400556, 0.01450897264597735, 0.013991838704684621, 0.013445204583494469, 0.012870664634407617, 0.012270637465750493, 0.011648387675043878, 0.011008000188389924, 0.010354301407206818, 0.8694541646396841, 0.007669084139307985, 0.007540879354913245, 0.007390234228010939, 0.0072164098162491395, 0.007019070943361673, 0.006798368265449735, 0.0065550074379084845, 0.006290296610068348, 0.0060061638805249985, 0.005705138112311821, 0.9318093720936199, 0.015452095259588884, 0.014995774339758773, 0.01450897065680176, 0.013991836836573002, 0.013445202840014957, 0.0128706630172183, 0.012270635974072396, 0.01164838630732026, 0.011007998946788536, 0.01035430030503536, 0.8694541829029503, 0.007669082756159647, 0.007540878028547661, 0.007390232961013913, 0.007216408612742139, 0.00701906980759776, 0.006798367200673594, 0.006555006445958421, 0.0062902956922908275, 0.006006163040497456, 0.005705137360522105, 0.9318093847239913], + [0.5112784897716854, 0.013537961377816838, 0.012879212780387452, 0.012192735469135983, 0.0114836313126542, 0.010758030575529867, 0.010022900823219577, 0.009285780220026027, 0.00855445479998468, 0.007836608116780426, 0.00713947639956922, 0.8963092444172323, 0.006388701957814528, 0.0061496346545221745, 0.005887604904441194, 0.005604748188386953, 0.005303931456980407, 0.004988676779546724, 0.004663030927493794, 0.004331389484054097, 0.0039982908240287695, 0.0036681999012780466, 0.949015806999257, 0.013537960110469033, 0.01287921158058455, 0.01219273434646085, 0.011483630273360315, 0.010758029621813985, 0.010022899953590712, 0.009285779430723617, 0.008554454087090662, 0.007836607478412446, 0.007139475837454719, 0.8963092533953335, 0.006388701217316719, 0.006149633947282885, 0.005887604236758814, 0.005604747564909402, 0.005303930880184096, 0.004988676249815063, 0.004663030443810871, 0.004331389045144276, 0.003998290429604771, 0.0036681995529843853, 0.949015812691718], + [0.5454893317767048, 0.011552136647517445, 0.010748816069286278, 0.009937986795597199, 0.009129378199189672, 0.008332800195455582, 0.007557638728266003, 0.006812391169868155, 0.006104289437093828, 0.005439043703259405, 0.00482072028421111, 0.9195648266522517, 0.005167632955007967, 0.004857635695525796, 0.004534223319924413, 0.0042022749801917825, 0.003866956082765642, 0.003533438671168341, 0.00320662658014088, 0.00289091524701286, 0.00259000929285831, 0.002306810730138633, 0.9628434865265599, 0.011552135999512263, 0.010748815461988026, 0.009937986236860716, 0.00912937769177977, 0.008332799738237289, 0.007557638317840901, 0.00681239080220126, 0.006104289108728846, 0.005439043411901643, 0.0048207200286874445, 0.9195648305389024, 0.005167632599687135, 0.004857635360301311, 0.004534223009395136, 0.004202274696397725, 0.0038669558256846635, 0.003533438439493127, 0.003206626372101163, 0.0028909150610201525, 0.002590009127838101, 0.0023068105855370974, 0.9628434887620263], + [0.5821178004460277, 0.009557345016286686, 0.008681033754297704, 0.007828044737340572, 0.007009195203334791, 0.006233640660453153, 0.005508502362056246, 0.0048386987932284185, 0.004226971230242374, 0.003674067914263222, 0.003179037298390668, 0.9392634835314241, 0.00403764572111046, 0.0036990717478308788, 0.0033617760428774433, 0.0030314364132977252, 0.0027131211804513966, 0.0024110491432525237, 0.0021284479514210373, 0.0018675127362938785, 0.0016294520445453199, 0.001414598749592119, 0.973705894288712, 0.009557344728152789, 0.008681033490795189, 0.007828044501314265, 0.007009194994020001, 0.006233640475246494, 0.00550850219790742, 0.004838698647477235, 0.004226971100924707, 0.003674067800043159, 0.003179037198315968, 0.9392634849697713, 0.004037645572743205, 0.003699071611376049, 0.003361775919981458, 0.0030314363038393263, 0.002713121083349005, 0.00241104905712886, 0.0021284478750218405, 0.0018675126686563263, 0.001629451984982809, 0.00141459869758765, 0.973705895021511], + [0.6216962811807377, 0.007632641216711965, 0.006758556268378166, 0.005939732518755562, 0.005183555576321355, 0.004494457701171602, 0.0038741053419276594, 0.0033217787814088886, 0.0028348589915245786, 0.0024093442594942237, 0.00204033750369169, 0.9555106460540538, 0.003031946106107082, 0.002703488474283819, 0.0023906529393054464, 0.002097647906575266, 0.001827417442241739, 0.0015816642011984693, 0.001360974046297691, 0.0011650047589542893, 0.0009927021693295326, 0.0008425140584399602, 0.9820059912554037, 0.007632641111000907, 0.006758556176294765, 0.005939732439645166, 0.0051835555081993605, 0.004494457641887501, 0.003874105289740556, 0.003321778735129836, 0.002834858950420616, 0.002409344223114229, 0.0020403374717098766, 0.9555106465008057, 0.0030319460547621577, 0.002703488429247986, 0.002390652900401197, 0.0020976478729812747, 0.001827417413015935, 0.001581664175549308, 0.001360974023662156, 0.001165004738965334, 0.0009927021517442132, 0.0008425140430724427, 0.9820059914445098], + [0.664781883726864, 0.005860296432437942, 0.0050549606855359724, 0.004329121829716296, 0.00368368658734805, 0.0031166224647759277, 0.0026236858874772316, 0.002199148428485426, 0.0018364430224099585, 0.0015286890940053584, 0.0012690854569256198, 0.9684982692586932, 0.0021777064813680797, 0.0018886511665285224, 0.0016250393927611773, 0.0013883045825620985, 0.00117859498679402, 0.000995044454832534, 0.0008360597210165147, 0.0006995870840040672, 0.0005833368742077997, 0.0004849573757346907, 0.9881427195986751, 0.005860296403985137, 0.0050549606633061486, 0.004329121812135814, 0.0036836865728873164, 0.0031166224523233575, 0.0026236858763739523, 0.002199148418412202, 0.0018364430132475783, 0.0015286890857243093, 0.001269085449518296, 0.9684982693840937, 0.0021777064680801234, 0.001888651155962492, 0.001625039384298728, 0.0013883045755746668, 0.0011785949808090024, 0.0009950444495570897, 0.0008360597162965982, 0.0006995870797695107, 0.0005833368704277688, 0.0004849573723898694, 0.9881427196356751], + [0.7119453597180219, 0.0043103264281522035, 0.0036211287878337786, 0.0030228577989132774, 0.002509596004492438, 0.0020737085253824433, 0.0017067180901080986, 0.0013999827937728872, 0.0011451735178863193, 0.0009345754956775635, 0.0007612503785135729, 0.9785146875581633, 0.0014895903015147956, 0.0012564790008960935, 0.0010524511671781672, 0.000876227408755803, 0.0007257386519390026, 0.0005984616414870977, 0.0004916883055416175, 0.0004027229850499187, 0.00032901365486198144, 0.00026822913729043866, 0.9925093985379975, 0.004310326424929274, 0.0036211287867046514, 0.0030228577987845852, 0.002509596004641121, 0.0020737085254343974, 0.00170671808993061, 0.001399982793367259, 0.001145173517310977, 0.0009345754950032937, 0.0007612503778023065, 0.978514687602625, 0.0014895902998038383, 0.0012564790000492464, 0.001052451166782643, 0.000876227408530398, 0.0007257386517319766, 0.0005984616412383626, 0.0004916883052431248, 0.00040272298471670764, 0.0003290136545150726, 0.0002682291369485829, 0.9925093985458759], + [0.7637634258529633, 0.003027488018717499, 0.002477637818903676, 0.002017028755571937, 0.0016348629997330751, 0.001320304665514197, 0.0010630951476365957, 0.0008539122158972687, 0.0006845355522999033, 0.0005478789624556736, 0.0004379390798736144, 0.9859353196272777, 0.0009665173963869836, 0.000793255939123491, 0.0006473039540245794, 0.0005256634952484218, 0.00042518031607107105, 0.00034277881736514303, 0.0002756080945398257, 0.00022111874306317454, 0.00017709051958980898, 0.00014162807406116438, 0.9954838549743676, 0.00302748802049821, 0.0024776378210794644, 0.0020170287576798587, 0.0016348630015516094, 0.0013203046669790716, 0.0010630951487666765, 0.000853912216745376, 0.000684535552925622, 0.0005478789629128516, 0.0004379390802061638, 0.9859353196511778, 0.0009665173968823867, 0.0007932559397782206, 0.0006473039546758009, 0.0005256634958157407, 0.00042518031652881346, 0.0003427788177170745, 0.00027560809480209434, 0.00022111874325476288, 0.00017709051972807988, 0.00014162807416031258, 0.9954838549785338], + [0.820816598268393, 0.002024992146269516, 0.001614918515766612, 0.0012826630479715057, 0.0010154249179389332, 0.000801747873179877, 0.0006317039551216201, 0.0004968928845428551, 0.00039033410708456457, 0.0003063061619424171, 0.00024016891810856554, 0.9911948488034709, 0.0005927168343992625, 0.0004736089916500536, 0.00037675198063898255, 0.0002986245085440212, 0.00023601439095383622, 0.00018610075305645896, 0.00014647390953337087, 0.00011511734925752889, 9.036961149676147e-05, 7.08779098604668e-05, 0.9974133438759731, 0.002024992147661847, 0.0016149185171155317, 0.0012826630491498186, 0.0010154249189103079, 0.0008017478739542514, 0.0006317039557273389, 0.0004968928850119984, 0.0003903341074464371, 0.0003063061622213927, 0.00024016891832396244, 0.9911948488166006, 0.0005927168348163406, 0.0004736089920581137, 0.0003767519809969395, 0.0002986245088395224, 0.00023601439118934252, 0.00018610075324043245, 0.0001464739096755865, 0.00011511734936697474, 9.036961158092826e-05, 7.087790992529048e-05, 0.9974133438785378], + [0.8836934237202744, 0.001286420377786753, 0.00099996477069691, 0.0007750048280524924, 0.0005992653147937444, 0.00046254067244640287, 0.00035650981915616583, 0.0002744865241762324, 0.0002111570813055367, 0.00016233369647412324, 0.00012473682917024128, 0.9947475806299443, 0.0003423279907618944, 0.0002664328690112601, 0.00020669490183429512, 0.00015994533481582658, 0.00012352508561151626, 9.525149234517964e-05, 7.336207786650416e-05, 5.6451039671097826e-05, 4.340741895913382e-05, 3.335941231289947e-05, 0.9985992424120758, 0.001286420378347506, 0.000999964771192625, 0.0007750048284633586, 0.000599265315122369, 0.0004625406727041419, 0.00035650981935624737, 0.0002744865243308245, 0.0002111570814248004, 0.00016233369656615444, 0.00012473682924133697, 0.9947475806356886, 0.0003423279909194957, 0.00026643286915077965, 0.0002066949019499352, 0.00015994533490823975, 0.00012352508568389193, 9.525149240126424e-05, 7.336207790975137e-05, 5.645103970439236e-05, 4.340741898477176e-05, 3.33594123326641e-05, 0.9985992424131992], + [0.9530004260725665, 0.0007740371007668301, 0.0005864048277125712, 0.00044336202630643824, 0.0003346982138837097, 0.00025237295683927557, 0.00019012952445870507, 0.0001431420200526033, 0.00010771260336532092, 8.102171473413553e-05, 6.092737411374766e-05, 0.9970261918291413, 0.00018551776769330685, 0.0001406540315204386, 0.00010640540919414627, 8.036148896328022e-05, 6.061502757444455e-05, 4.5676707060024355e-05, 3.439485760360706e-05, 2.5885346498802785e-05, 1.947308915541678e-05, 1.4644699105502112e-05, 0.9992863715847365, 0.0007740371009257775, 0.0005864048278445542, 0.00044336202641153695, 0.0003346982139655421, 0.0002523729569022444, 0.000190129524506879, 0.00014314202008936685, 0.00010771260339335682, 8.102171475551882e-05, 6.0927374130065525e-05, 0.9970261918310468, 0.00018551776773404992, 0.00014065403155422078, 0.00010640540922100044, 8.036148898414766e-05, 6.061502759046696e-05, 4.567670707225422e-05, 3.439485761291851e-05, 2.5885346505887358e-05, 1.947308916080809e-05, 1.4644699109607232e-05, 0.999286371585083], + [1.0293758879566497, 0.00043974004075312547, 0.0003245017185049144, 0.0002391538096353036, 0.00017608513472102771, 0.0001295572345370569, 9.527406463461386e-05, 7.003599230534406e-05, 5.1468959384578e-05, 3.781633106303028e-05, 2.7780953891656535e-05, 0.998408585817779, 9.39452780583121e-05, 6.935632084071227e-05, 5.1131270184127196e-05, 3.765609605678157e-05, 2.7710880581426598e-05, 2.0380709748931317e-05, 1.4983284944459914e-05, 1.1011877747048805e-05, 8.091287030984244e-06, 5.944313381603694e-06, 0.9996597886833793, 0.00043974004078689593, 0.00032450171853158703, 0.0002391538096558149, 0.0001760851347365837, 0.00012955723454877218, 9.52740646434071e-05, 7.003599231193487e-05, 5.1468959389515344e-05, 3.781633106672875e-05, 2.7780953894427082e-05, 0.9984085858182569, 9.394527806607655e-05, 6.935632084682775e-05, 5.1131270188817434e-05, 3.765609606032912e-05, 2.7710880584091116e-05, 2.0380709750925944e-05, 1.498328494595103e-05, 1.101187774816302e-05, 8.09128703181683e-06, 5.944313382225938e-06, 0.9996597886834566], + [0.9999855953562428, 0.0005469064767757211, 0.00040760611062252695, 0.000303320235950285, 0.00022545677598395913, 0.0001674376261189854, 0.00012426982263657454, 9.218753009989214e-05, 6.836369673938572e-05, 5.068333727709767e-05, 3.756821026131318e-05, 0.9979762001775992, 0.0001221235966130665, 9.10673437432182e-05, 6.779517449939017e-05, 5.040703856193972e-05, 3.74436279011123e-05, 2.7794735490134577e-05, 2.0621605758960626e-05, 1.52938023814155e-05, 1.1339255175714768e-05, 8.40546257579508e-06, 0.9995477083573011, 0.000546906476775742, 0.0004076061106225436, 0.0003033202359502979, 0.00022545677598396872, 0.00016743762611899282, 0.00012426982263658007, 9.218753009989623e-05, 6.836369673938875e-05, 5.068333727710001e-05, 3.7568210261314914e-05, 0.9979762001775981, 0.00012212359661307087, 9.106734374322177e-05, 6.779517449939293e-05, 5.040703856194187e-05, 3.744362790111383e-05, 2.7794735490135763e-05, 2.062160575896147e-05, 1.529380238141615e-05, 1.133925517571527e-05, 8.405462575795453e-06, 0.9995477083573012], + [0.9999999959602369, 0.0005468481113977128, 0.0004075606087116069, 0.000303284924787478, 0.0002254294740999073, 0.0001674165800300493, 0.00012425363888661785, 9.217511089121364e-05, 6.835418294792978e-05, 5.067606005257711e-05, 3.756265102944638e-05, 0.9979764386571656, 0.0001221079166319357, 9.10551986441894e-05, 6.778580578548815e-05, 5.0399835088246224e-05, 3.74381037754362e-05, 2.779050824968023e-05, 2.0618376631399874e-05, 1.5291339328134703e-05, 1.1337378800076858e-05, 8.404034673285931e-06, 0.9995477715023922, 0.0005468481113977142, 0.000407560608711608, 0.00030328492478747855, 0.00022542947409990812, 0.00016741658003004988, 0.00012425363888661807, 9.217511089121397e-05, 6.835418294793003e-05, 5.0676060052577197e-05, 3.756265102944645e-05, 0.9979764386571653, 0.00012210791663193614, 9.105519864418956e-05, 6.778580578548828e-05, 5.039983508824641e-05, 3.743810377543633e-05, 2.7790508249680328e-05, 2.0618376631399948e-05, 1.5291339328134784e-05, 1.1337378800076899e-05, 8.40403467328596e-06, 0.9995477715023923], + [1.0000000000000004, 0.0005468480950254901, 0.00040756059594778337, 0.0003032849148823054, 0.00022542946644144588, 0.00016741657412641718, 0.0001242536343469297, 9.217510740752145e-05, 6.835418027923757e-05, 5.0676058011263816e-05, 3.756264947004579e-05, 0.9979764387240614, 0.00012210791223355209, 9.105519523738305e-05, 6.778580315748895e-05, 5.039983306761926e-05, 3.743810222588246e-05, 2.779050706391409e-05, 2.061837572561247e-05, 1.5291338637236772e-05, 1.133737827374592e-05, 8.404034272754407e-06, 0.9995477715201049, 0.0005468480950254907, 0.0004075605959477837, 0.0003032849148823059, 0.00022542946644144588, 0.00016741657412641748, 0.0001242536343469297, 9.217510740752162e-05, 6.83541802792377e-05, 5.0676058011263816e-05, 3.756264947004579e-05, 0.9979764387240615, 0.00012210791223355187, 9.105519523738289e-05, 6.778580315748883e-05, 5.039983306761926e-05, 3.743810222588239e-05, 2.779050706391409e-05, 2.061837572561247e-05, 1.5291338637236772e-05, 1.133737827374592e-05, 8.404034272754407e-06, 0.9995477715201049], + [1.0000000044437403, 0.0005468480770160453, 0.00040756058190757763, 0.0003032849039866162, 0.00022542945801713797, 0.00016741656763242228, 0.00012425362935327303, 9.21751035754602e-05, 6.835417734367627e-05, 5.06760557658193e-05, 3.756264775470511e-05, 0.9979764387976473, 0.00012210790739533003, 9.105519148989599e-05, 6.778580026668985e-05, 5.0399830844929724e-05, 3.743810052137328e-05, 2.7790505759571413e-05, 2.061837472924635e-05, 1.5291337877249077e-05, 1.1337377694781917e-05, 8.404033832169746e-06, 0.9995477715395888, 0.0005468480770160453, 0.00040756058190757763, 0.0003032849039866162, 0.00022542945801713797, 0.00016741656763242228, 0.00012425362935327303, 9.21751035754602e-05, 6.835417734367627e-05, 5.067605576581921e-05, 3.756264775470504e-05, 0.9979764387976473, 0.00012210790739532982, 9.105519148989583e-05, 6.778580026668972e-05, 5.0399830844929636e-05, 3.743810052137321e-05, 2.7790505759571366e-05, 2.0618374729246315e-05, 1.529133787724905e-05, 1.1337377694781876e-05, 8.404033832169731e-06, 0.9995477715395888], + [1.0000000093318544, 0.0005468480572056557, 0.0004075605664633513, 0.0003032848920013574, 0.00022542944875039933, 0.00016741656048902768, 0.00012425362386025052, 9.217509936019283e-05, 6.835417411455868e-05, 5.0676053295830294e-05, 3.756264586783041e-05, 0.9979764388785916, 0.000122107902073286, 9.105518736766055e-05, 6.778579708681099e-05, 5.039982839997125e-05, 3.7438098646413313e-05, 2.779050432479449e-05, 2.0618373633243663e-05, 1.529133704126264e-05, 1.133737705792153e-05, 8.404033347526637e-06, 0.9995477715610213, 0.0005468480572056542, 0.0004075605664633502, 0.00030328489200135686, 0.00022542944875039852, 0.00016741656048902708, 0.00012425362386025009, 9.217509936019251e-05, 6.835417411455858e-05, 5.067605329583012e-05, 3.7562645867830284e-05, 0.9979764388785916, 0.00012210790207328623, 9.105518736766071e-05, 6.77857970868111e-05, 5.0399828399971344e-05, 3.7438098646413374e-05, 2.779050432479454e-05, 2.06183736332437e-05, 1.5291337041262666e-05, 1.1337377057921551e-05, 8.404033347526652e-06, 0.9995477715610213], + [1.00000001470878, 0.0005468480354142294, 0.000407560549474704, 0.00030328487881757445, 0.000225429438556988, 0.00016741655263129444, 0.00012425361781792633, 9.217509472339898e-05, 6.835417056252991e-05, 5.067605057884266e-05, 3.756264379226842e-05, 0.9979764389676303, 0.00012210789621903764, 9.105518283320172e-05, 6.778579358894432e-05, 5.0399825710517006e-05, 3.743809658395742e-05, 2.7790502746539996e-05, 2.061837242764076e-05, 1.5291336121677573e-05, 1.1337376357375129e-05, 8.404032814419237e-06, 0.9995477715845966, 0.0005468480354142285, 0.0004075605494747037, 0.00030328487881757445, 0.0002254294385569876, 0.00016741655263129414, 0.00012425361781792633, 9.217509472339882e-05, 6.835417056252979e-05, 5.0676050578842574e-05, 3.756264379226835e-05, 0.9979764389676303, 0.00012210789621903764, 9.105518283320172e-05, 6.778579358894432e-05, 5.0399825710517006e-05, 3.7438096583957354e-05, 2.779050274653995e-05, 2.061837242764076e-05, 1.5291336121677573e-05, 1.1337376357375129e-05, 8.404032814419237e-06, 0.9995477715845966], + [1.0000000206233979, 0.0005468480114436594, 0.00040756053078719166, 0.00030328486431541304, 0.0002254294273442348, 0.00016741654398778744, 0.00012425361117136984, 9.217508962292589e-05, 6.83541666552981e-05, 5.0676047590156277e-05, 3.756264150915023e-05, 0.9979764390655729, 0.00012210788977936508, 9.105517784529719e-05, 6.778578974129122e-05, 5.0399822752117625e-05, 3.743809431525607e-05, 2.7790501010460115e-05, 2.0618371101477637e-05, 1.529133511013411e-05, 1.1337375586774154e-05, 8.404032228001146e-06, 0.9995477716105299, 0.0005468480114436609, 0.00040756053078719236, 0.0003032848643154136, 0.0002254294273442356, 0.00016741654398778804, 0.00012425361117137027, 9.217508962292622e-05, 6.835416665529822e-05, 5.067604759015637e-05, 3.756264150915036e-05, 0.9979764390655729, 0.00012210788977936508, 9.105517784529719e-05, 6.778578974129134e-05, 5.0399822752117625e-05, 3.743809431525607e-05, 2.7790501010460115e-05, 2.0618371101477674e-05, 1.529133511013411e-05, 1.1337375586774154e-05, 8.404032228001161e-06, 0.9995477716105299], + [1.0000000271294776, 0.0005468479850760353, 0.00040756051023093016, 0.00030328484836303663, 0.00022542941501020827, 0.00016741653447993122, 0.00012425360386015828, 9.217508401240613e-05, 6.835416235734354e-05, 5.067604430260165e-05, 3.75626389977205e-05, 0.9979764391733096, 0.0001221078826957256, 9.105517235860287e-05, 6.778578550887332e-05, 5.039981949787858e-05, 3.743809181968478e-05, 2.7790499100772423e-05, 2.0618369642698382e-05, 1.5291333997436394e-05, 1.1337374739113152e-05, 8.404031582941326e-06, 0.9995477716390562, 0.0005468479850760359, 0.0004075605102309305, 0.0003032848483630372, 0.00022542941501020827, 0.00016741653447993122, 0.0001242536038601585, 9.217508401240629e-05, 6.835416235734366e-05, 5.067604430260174e-05, 3.7562638997720565e-05, 0.9979764391733096, 0.0001221078826957254, 9.105517235860254e-05, 6.778578550887309e-05, 5.0399819497878394e-05, 3.743809181968471e-05, 2.7790499100772375e-05, 2.061836964269831e-05, 1.529133399743634e-05, 1.1337374739113131e-05, 8.404031582941297e-06, 0.9995477716390562], + [1.0000000342861652, 0.0005468479560716494, 0.0004075604876190428, 0.0003032848308154237, 0.00022542940144277897, 0.00016741652402128937, 0.0001242535958178261, 9.217507784083457e-05, 6.835415762959388e-05, 5.0676040686291624e-05, 3.756263623514798e-05, 0.9979764392918201, 0.00012210787490372265, 9.105516632323915e-05, 6.778578085321362e-05, 5.039981591821572e-05, 3.743808907455657e-05, 2.7790497000116073e-05, 2.0618368038041237e-05, 1.5291332773468967e-05, 1.1337373806686109e-05, 8.404030873375543e-06, 0.9995477716704355, 0.0005468479560716489, 0.0004075604876190425, 0.00030328483081542315, 0.00022542940144277897, 0.00016741652402128937, 0.00012425359581782588, 9.217507784083441e-05, 6.835415762959376e-05, 5.0676040686291624e-05, 3.756263623514791e-05, 0.9979764392918201, 0.00012210787490372265, 9.105516632323931e-05, 6.778578085321374e-05, 5.0399815918215806e-05, 3.743808907455657e-05, 2.779049700011612e-05, 2.061836803804127e-05, 1.5291332773468967e-05, 1.1337373806686129e-05, 8.404030873375558e-06, 0.9995477716704355], + [1.0000000421585218, 0.0005468479241668268, 0.0004075604627459685, 0.0003032848115130502, 0.00022542938651860822, 0.00016741651251678453, 0.00012425358697126123, 9.217507105210629e-05, 6.835415242906946e-05, 5.0676036708350986e-05, 3.7562633196318367e-05, 0.9979764394221816, 0.0001221078663325201, 9.105515968433978e-05, 6.778577573198856e-05, 5.039981198058701e-05, 3.743808605491576e-05, 2.7790494689394378e-05, 2.0618366272918592e-05, 1.5291331427104914e-05, 1.1337372781016488e-05, 8.404030092853286e-06, 0.9995477717049525, 0.0005468479241668263, 0.00040756046274596775, 0.00030328481151304965, 0.00022542938651860784, 0.00016741651251678423, 0.00012425358697126102, 9.217507105210629e-05, 6.835415242906946e-05, 5.067603670835089e-05, 3.75626331963183e-05, 0.9979764394221816, 0.00012210786633251965, 9.105515968433962e-05, 6.778577573198844e-05, 5.0399811980586836e-05, 3.74380860549157e-05, 2.779049468939428e-05, 2.0618366272918555e-05, 1.5291331427104887e-05, 1.1337372781016468e-05, 8.404030092853256e-06, 0.9995477717049525], + [1.0000000508181144, 0.000546847889071524, 0.00040756043538558805, 0.00030328479028044077, 0.00022542937010202102, 0.0001674164998618297, 0.00012425357724004057, 9.217506358450579e-05, 6.835414670849316e-05, 5.067603233261659e-05, 3.756262985360613e-05, 0.9979764395655792, 0.00012210785690419746, 9.105515238155067e-05, 6.778577009864116e-05, 5.039980764919558e-05, 3.743808273331108e-05, 2.7790492147600555e-05, 2.0618364331283765e-05, 1.529132994610458e-05, 1.1337371652779959e-05, 8.40402923427884e-06, 0.9995477717429209, 0.000546847889071524, 0.00040756043538558805, 0.00030328479028044077, 0.00022542937010202102, 0.0001674164998618297, 0.00012425357724004057, 9.217506358450579e-05, 6.835414670849316e-05, 5.067603233261659e-05, 3.75626298536062e-05, 0.9979764395655792, 0.00012210785690419746, 9.105515238155067e-05, 6.778577009864128e-05, 5.039980764919558e-05, 3.743808273331108e-05, 2.7790492147600606e-05, 2.0618364331283802e-05, 1.529132994610458e-05, 1.1337371652779959e-05, 8.40402923427884e-06, 0.9995477717429209], + [1.0000000603436656, 0.0005468478504666942, 0.00040756040528917246, 0.0003032847669245726, 0.00022542935204377702, 0.00016741648594138076, 0.00012425356653569876, 9.21750553701461e-05, 6.835414041585984e-05, 5.0676027519309294e-05, 3.7562626176623096e-05, 0.9979764397233168, 0.0001221078465330435, 9.105514434848335e-05, 6.778576390195964e-05, 5.039980288466546e-05, 3.743807907954627e-05, 2.7790489351627707e-05, 2.0618362195485702e-05, 1.5291328317004375e-05, 1.133737041171991e-05, 8.404028289847056e-06, 0.9995477717846867, 0.0005468478504666932, 0.00040756040528917175, 0.00030328476692457204, 0.00022542935204377662, 0.00016741648594138046, 0.00012425356653569854, 9.217505537014593e-05, 6.835414041585972e-05, 5.0676027519309294e-05, 3.756262617662303e-05, 0.9979764397233168, 0.00012210784653304393, 9.105514434848366e-05, 6.778576390195988e-05, 5.039980288466564e-05, 3.743807907954641e-05, 2.7790489351627806e-05, 2.0618362195485773e-05, 1.529132831700443e-05, 1.133737041171995e-05, 8.404028289847086e-06, 0.9995477717846867], + [1.0000000708217722, 0.0005468478080013835, 0.0004075603721831172, 0.0003032847412331188, 0.0002254293321797102, 0.0001674164706288882, 0.00012425355476092384, 9.21750463343511e-05, 6.835413349396384e-05, 5.067602222467174e-05, 3.756262213194204e-05, 0.9979764398968279, 0.00012210783512477585, 9.10551355121106e-05, 6.778575708561096e-05, 5.039979764368304e-05, 3.74380750604056e-05, 2.779048627605799e-05, 2.0618359846108184e-05, 1.529132652499443e-05, 1.133736904655407e-05, 8.404027250972273e-06, 0.9995477718306286, 0.0005468478080013835, 0.0004075603721831168, 0.0003032847412331188, 0.0002254293321797098, 0.0001674164706288879, 0.00012425355476092362, 9.21750463343511e-05, 6.835413349396372e-05, 5.067602222467174e-05, 3.756262213194204e-05, 0.9979764398968279, 0.00012210783512477542, 9.105513551211043e-05, 6.778575708561072e-05, 5.039979764368295e-05, 3.743807506040547e-05, 2.7790486276057893e-05, 2.0618359846108113e-05, 1.5291326524994377e-05, 1.133736904655403e-05, 8.404027250972242e-06, 0.9995477718306286], + [1.0000000000000002, 0.0005468480950254916, 0.00040756059594778446, 0.00030328491488230643, 0.00022542946644144628, 0.00016741657412641778, 0.00012425363434693013, 9.217510740752178e-05, 6.835418027923782e-05, 5.067605801126399e-05, 3.7562649470045856e-05, 0.9979764387240614, 0.0001221079122335523, 9.105519523738321e-05, 6.778580315748907e-05, 5.039983306761944e-05, 3.743810222588253e-05, 2.779050706391419e-05, 2.0618375725612503e-05, 1.5291338637236826e-05, 1.133737827374596e-05, 8.404034272754422e-06, 0.9995477715201049, 0.0005468480950254916, 0.00040756059594778446, 0.00030328491488230643, 0.0002254294664414467, 0.00016741657412641778, 0.00012425363434693013, 9.217510740752178e-05, 6.835418027923782e-05, 5.067605801126399e-05, 3.7562649470045856e-05, 0.9979764387240614, 0.00012210791223355209, 9.105519523738305e-05, 6.778580315748895e-05, 5.039983306761926e-05, 3.743810222588246e-05, 2.779050706391409e-05, 2.061837572561247e-05, 1.52913386372368e-05, 1.133737827374592e-05, 8.404034272754422e-06, 0.9995477715201049], + [1.0000000000000002, 0.0005468480950254916, 0.00040756059594778446, 0.00030328491488230643, 0.00022542946644144628, 0.00016741657412641778, 0.00012425363434693013, 9.217510740752178e-05, 6.835418027923782e-05, 5.067605801126399e-05, 3.7562649470045856e-05, 0.9979764387240614, 0.0001221079122335523, 9.105519523738321e-05, 6.778580315748907e-05, 5.039983306761944e-05, 3.743810222588253e-05, 2.779050706391419e-05, 2.0618375725612503e-05, 1.5291338637236826e-05, 1.133737827374596e-05, 8.404034272754422e-06, 0.9995477715201049, 0.0005468480950254916, 0.00040756059594778446, 0.00030328491488230643, 0.0002254294664414467, 0.00016741657412641778, 0.00012425363434693013, 9.217510740752178e-05, 6.835418027923782e-05, 5.067605801126399e-05, 3.7562649470045856e-05, 0.9979764387240614, 0.00012210791223355209, 9.105519523738305e-05, 6.778580315748895e-05, 5.039983306761926e-05, 3.743810222588246e-05, 2.779050706391409e-05, 2.061837572561247e-05, 1.52913386372368e-05, 1.133737827374592e-05, 8.404034272754422e-06, 0.9995477715201049], + [1.0004889166437392, 0.0005448701697586184, 0.0004060187441633442, 0.0003020884900443218, 0.00022450449567555257, 0.00016670360616004122, 0.00012370543063730473, 9.175445664666128e-05, 6.803196442550044e-05, 5.042961016886982e-05, 3.7374397146966706e-05, 0.9979845186351732, 0.00012157674228149291, 9.064381117257146e-05, 6.746849095144349e-05, 5.015587750152268e-05, 3.7251035953031404e-05, 2.7647369689752614e-05, 2.0509044001265776e-05, 1.520795126493752e-05, 1.1273858023062897e-05, 8.355699769839036e-06, 0.9995499101193911, 0.0005448701697586193, 0.00040601874416334527, 0.00030208849004432234, 0.00022450449567555338, 0.00016670360616004152, 0.00012370543063730516, 9.175445664666161e-05, 6.803196442550068e-05, 5.0429610168869994e-05, 3.737439714696684e-05, 0.9979845186351731, 0.00012157674228149291, 9.064381117257146e-05, 6.746849095144361e-05, 5.015587750152268e-05, 3.7251035953031404e-05, 2.7647369689752614e-05, 2.0509044001265776e-05, 1.5207951264937547e-05, 1.1273858023062897e-05, 8.355699769839051e-06, 0.999549910119391], + [1.0010267304822726, 0.0005427025878277105, 0.00040432937936298155, 0.0003007778438769905, 0.00022349139993489545, 0.00016592284632474725, 0.00012310520250414137, 9.129396207761497e-05, 6.767928561054009e-05, 5.015990577132781e-05, 3.71684126268187e-05, 0.9979933691740825, 0.00012099509581885314, 9.019342166087952e-05, 6.712115736891949e-05, 4.9888888669288304e-05, 3.7046343076254475e-05, 2.7490771363021833e-05, 2.038945021004434e-05, 1.5116751803335824e-05, 1.1204398043008134e-05, 8.30285392127811e-06, 0.9995522508680651, 0.0005427025878277109, 0.00040432937936298193, 0.00030077784387699103, 0.00022349139993489583, 0.00016592284632474725, 0.00012310520250414158, 9.129396207761513e-05, 6.76792856105402e-05, 5.01599057713279e-05, 3.716841262681883e-05, 0.9979933691740825, 0.00012099509581885356, 9.019342166087985e-05, 6.712115736891972e-05, 4.988888866928848e-05, 3.7046343076254604e-05, 2.749077136302193e-05, 2.0389450210044372e-05, 1.5116751803335878e-05, 1.1204398043008173e-05, 8.30285392127814e-06, 0.9995522508680652], + [1.001618332378678, 0.0005403280546313879, 0.0004024791186762343, 0.0002993426646134594, 0.00022238226110367847, 0.00016506823157875543, 0.00012244831814782456, 9.079009218373207e-05, 6.729345570542649e-05, 4.986490160578352e-05, 3.694314485083437e-05, 0.9980030597569032, 0.00012035846481989236, 8.970056144613717e-05, 6.674114875542145e-05, 4.9596840551533105e-05, 3.6822480528295615e-05, 2.731953918572424e-05, 2.0258704297624176e-05, 1.5017065776945502e-05, 1.1128487833384415e-05, 8.245110739760659e-06, 0.9995548115960653, 0.0005403280546313893, 0.00040247911867623536, 0.0002993426646134604, 0.00022238226110367888, 0.00016506823157875602, 0.00012244831814782478, 9.07900921837324e-05, 6.729345570542673e-05, 4.9864901605783605e-05, 3.69431448508345e-05, 0.9980030597569033, 0.0001203584648198928, 8.970056144613748e-05, 6.67411487554217e-05, 4.959684055153328e-05, 3.6822480528295676e-05, 2.7319539185724288e-05, 2.025870429762425e-05, 1.5017065776945557e-05, 1.1128487833384454e-05, 8.245110739760672e-06, 0.9995548115960651], + [1.002269102516641, 0.0005377278848166023, 0.0004004535176629062, 0.0002977718333581341, 0.0002211685493579191, 0.00016413323651324257, 0.00012172979707316126, 9.023905299277557e-05, 6.68715893771511e-05, 4.9542406513186314e-05, 3.669693192471221e-05, 0.9980136652004106, 0.00011966199894688442, 8.916150606027975e-05, 6.632561584404077e-05, 4.92775599224234e-05, 3.6577794718382186e-05, 2.7132417439919183e-05, 2.0115854253762695e-05, 1.4908172431256502e-05, 1.1045582371415918e-05, 8.182058516971297e-06, 0.9995576114394945, 0.0005377278848166017, 0.0004004535176629055, 0.00029777183335813354, 0.0002211685493579191, 0.00016413323651324257, 0.00012172979707316104, 9.023905299277541e-05, 6.687158937715098e-05, 4.9542406513186226e-05, 3.669693192471221e-05, 0.9980136652004107, 0.00011966199894688484, 8.916150606028008e-05, 6.632561584404102e-05, 4.927755992242348e-05, 3.6577794718382315e-05, 2.713241743991923e-05, 2.011585425376273e-05, 1.490817243125653e-05, 1.1045582371415957e-05, 8.182058516971327e-06, 0.9995576114394945], + [1.0029849593797948, 0.0005348819303745039, 0.00039823701882214617, 0.0002960533874774075, 0.00021984109732961051, 0.00016311085526580683, 0.00012094429754203066, 8.963677946351827e-05, 6.64105982498808e-05, 4.919007749159587e-05, 3.6427998569362434e-05, 0.9980252659594148, 0.00011890049254567546, 8.857226292063611e-05, 6.587150774171017e-05, 4.892872235201426e-05, 3.631051892804296e-05, 2.6928065936450087e-05, 1.9959885104551507e-05, 1.4789304152959947e-05, 1.0955101811062012e-05, 8.113259700183008e-06, 0.9995606708788068, 0.000534881930374503, 0.00039823701882214546, 0.000296053387477407, 0.0002198410973296101, 0.00016311085526580653, 0.00012094429754203044, 8.963677946351811e-05, 6.64105982498808e-05, 4.9190077491595783e-05, 3.6427998569362366e-05, 0.9980252659594147, 0.00011890049254567589, 8.857226292063643e-05, 6.58715077417104e-05, 4.892872235201452e-05, 3.631051892804316e-05, 2.6928065936450233e-05, 1.9959885104551612e-05, 1.478930415296e-05, 1.095510181106205e-05, 8.113259700183037e-06, 0.9995606708788067], + [1.0037724136382944, 0.0005317685143809174, 0.0003958129053294165, 0.00029417448865020897, 0.0002183900783152354, 0.00016199358687644342, 0.00012008610691317771, 8.89789292657189e-05, 6.59071870317619e-05, 4.8805417401251594e-05, 3.61344548685015e-05, 0.998037948330968, 0.00011806837430274077, 8.792856469233021e-05, 6.537556781024398e-05, 4.8547849772849114e-05, 3.601877198507313e-05, 2.6705059399466146e-05, 1.978971873843579e-05, 1.4659646557571308e-05, 1.085643171403368e-05, 8.038251190725536e-06, 0.9995640117638366, 0.000531768514380915, 0.00039581290532941473, 0.00029417448865020794, 0.00021839007831523462, 0.00016199358687644255, 0.00012008610691317707, 8.897892926571826e-05, 6.590718703176154e-05, 4.880541740125133e-05, 3.6134454868501247e-05, 0.9980379483309683, 0.00011806837430274077, 8.792856469233021e-05, 6.537556781024398e-05, 4.8547849772849114e-05, 3.601877198507313e-05, 2.6705059399466146e-05, 1.978971873843579e-05, 1.4659646557571308e-05, 1.0856431714033662e-05, 8.038251190725523e-06, 0.9995640117638366], + [1.0046386274350974, 0.0005283643732384161, 0.0003931632623551672, 0.00029212139749574314, 0.00021680499007653887, 0.0001607734253266125, 0.00011914913585753148, 8.826087973700964e-05, 6.53578522257711e-05, 4.838577475783907e-05, 3.581429669442755e-05, 0.9980518046122362, 0.00011715970050660779, 8.72258656743344e-05, 6.483433204734816e-05, 4.8132310090453504e-05, 3.570055859373758e-05, 2.6461888183455775e-05, 1.9604214797988316e-05, 1.4518339425252737e-05, 1.0748923953029894e-05, 7.956545173270097e-06, 0.9995676573215547, 0.000528364373238417, 0.0003931632623551682, 0.00029212139749574417, 0.00021680499007653965, 0.0001607734253266131, 0.0001191491358575319, 8.826087973700995e-05, 6.535785222577133e-05, 4.838577475783925e-05, 3.581429669442767e-05, 0.9980518046122363, 0.00011715970050660842, 8.722586567433471e-05, 6.48343320473485e-05, 4.813231009045376e-05, 3.5700558593737706e-05, 2.6461888183455917e-05, 1.960421479798842e-05, 1.4518339425252815e-05, 1.0748923953029952e-05, 7.956545173270155e-06, 0.9995676573215545], + [1.0055914796139651, 0.0005246446109188277, 0.00039026894883134556, 0.0002898794571013553, 0.00021507464610034772, 0.00015944185575139126, 0.00011812691763158033, 8.747772895075293e-05, 6.475888415941435e-05, 4.7928346189955086e-05, 3.546540826208594e-05, 0.9980669331961046, 0.00011616815304548823, 8.645934211561754e-05, 6.424413068781494e-05, 4.7679319406358515e-05, 3.535377176785579e-05, 2.6196960672123853e-05, 1.9402172909676552e-05, 1.436447869633842e-05, 1.0631898451069375e-05, 7.867630602600126e-06, 0.9995716321416451, 0.00052464461091883, 0.0003902689488313469, 0.0002898794571013563, 0.00021507464610034848, 0.0001594418557513921, 0.00011812691763158095, 8.747772895075324e-05, 6.47588841594147e-05, 4.7928346189955343e-05, 3.5465408262086064e-05, 0.9980669331961046, 0.00011616815304548823, 8.645934211561754e-05, 6.424413068781494e-05, 4.7679319406358515e-05, 3.535377176785579e-05, 2.61969606721239e-05, 1.9402172909676552e-05, 1.436447869633842e-05, 1.0631898451069395e-05, 7.867630602600126e-06, 0.999571632141645], + [1.0066396374857605, 0.0005205826694480194, 0.0003871095831213081, 0.0002874330882373966, 0.0002131871765470925, 0.00015798985859694903, 0.00011701261380987792, 8.662430199747754e-05, 6.410637319759891e-05, 4.7430182235991e-05, 3.5085567337310066e-05, 0.9980834385854738, 0.00011508704348669244, 8.562389753404939e-05, 6.360109387357322e-05, 4.718594752105414e-05, 3.497619788903247e-05, 2.5908607766123412e-05, 1.918233656771318e-05, 1.4197119771306494e-05, 1.0504645945920174e-05, 7.770975493480698e-06, 0.9995759621341513, 0.000520582669448024, 0.0003871095831213115, 0.0002874330882373996, 0.0002131871765470944, 0.00015798985859695044, 0.00011701261380987897, 8.662430199747847e-05, 6.410637319759959e-05, 4.743018223599159e-05, 3.5085567337310446e-05, 0.9980834385854737, 0.00011508704348669325, 8.562389753405e-05, 6.360109387357369e-05, 4.718594752105447e-05, 3.497619788903272e-05, 2.5908607766123595e-05, 1.9182336567713316e-05, 1.4197119771306594e-05, 1.0504645945920248e-05, 7.770975493480752e-06, 0.9995759621341512], + [1.0077926357896396, 0.0005161503207259268, 0.0003836635467193867, 0.0002847657995704301, 0.0002111300415252011, 0.00015640792381059072, 0.00011579902812014523, 8.569516376825175e-05, 6.339622114483057e-05, 4.68881972635736e-05, 3.4672453706980625e-05, 0.9981014313036485, 0.0001139093248218872, 8.471417429475646e-05, 6.290116238242433e-05, 4.6649127491996886e-05, 3.456552499414448e-05, 2.5595089928604668e-05, 1.894339903480994e-05, 1.401528239507491e-05, 1.0366431994962226e-05, 7.666030178918173e-06, 0.9995806744524828, 0.0005161503207259313, 0.0003836635467193901, 0.00028476579957043257, 0.00021113004152520335, 0.0001564079238105924, 0.00011579902812014646, 8.569516376825267e-05, 6.339622114483125e-05, 4.6888197263574096e-05, 3.467245370698099e-05, 0.9981014313036485, 0.000113909324821888, 8.471417429475706e-05, 6.290116238242467e-05, 4.664912749199722e-05, 3.456552499414473e-05, 2.559508992860485e-05, 1.8943399034810075e-05, 1.401528239507501e-05, 1.03664319949623e-05, 7.666030178918227e-06, 0.9995806744524828], + [1.00906096357185, 0.0005113176857380529, 0.00037990801085936135, 0.0002818602167703756, 0.0002088900597791166, 0.00015468607749625205, 0.00011447863028832972, 8.468463972899587e-05, 6.262415899484027e-05, 4.629918440935294e-05, 3.422366160503804e-05, 0.9981210276743359, 0.00011262761272370098, 8.372457290448405e-05, 6.214010455713713e-05, 4.606567013657093e-05, 3.411935498255905e-05, 2.5254607322259512e-05, 1.8684011670957104e-05, 1.3817957441415574e-05, 1.0216502462426575e-05, 7.552231721737579e-06, 0.9995857973740773, 0.0005113176857380587, 0.0003799080108593661, 0.00028186021677037914, 0.0002088900597791192, 0.00015468607749625425, 0.00011447863028833134, 8.468463972899708e-05, 6.262415899484117e-05, 4.6299184409353685e-05, 3.422366160503852e-05, 0.9981210276743357, 0.00011262761272370258, 8.372457290448525e-05, 6.214010455713801e-05, 4.606567013657166e-05, 3.411935498255959e-05, 2.525460732225987e-05, 1.8684011670957403e-05, 1.3817957441415768e-05, 1.0216502462426738e-05, 7.552231721737714e-06, 0.9995857973740774], + [1.0104561597775785, 0.0005060532882897097, 0.0003758189917436368, 0.0002786981350472357, 0.00020645345636763666, 0.00015281392383982519, 0.00011304359208185695, 8.358684638611558e-05, 6.178577234412177e-05, 4.5659836555078564e-05, 3.373671687604511e-05, 0.9981423494404764, 0.00011123421843993407, 8.264928069056414e-05, 6.131354073572932e-05, 4.543228448868541e-05, 3.363522052175931e-05, 2.488531363671354e-05, 1.8402795149281214e-05, 1.3604115948354561e-05, 1.0054090756487892e-05, 7.4290096828928775e-06, 0.9995913601299502, 0.0005060532882897187, 0.00037581899174364347, 0.0002786981350472411, 0.0002064534563676407, 0.0001528139238398282, 0.00011304359208185937, 8.358684638611736e-05, 6.178577234412299e-05, 4.565983655507953e-05, 3.373671687604589e-05, 0.9981423494404766, 0.00011123421843993605, 8.26492806905656e-05, 6.131354073573053e-05, 4.54322844886863e-05, 3.363522052176003e-05, 2.4885313636714073e-05, 1.8402795149281607e-05, 1.360411594835485e-05, 1.0054090756488124e-05, 7.429009682893036e-06, 0.9995913601299503], + [1.0119909184313725, 0.000500324151573588, 0.0003713714410076928, 0.0002752606003389397, 0.00020380593342705523, 0.0001507807054972551, 0.00011148583802927424, 8.239573335904939e-05, 6.087653594472088e-05, 4.496677447251163e-05, 3.3209099743087074e-05, 0.998165523186618, 0.00010972119574475937, 8.148231175096226e-05, 6.041697664454869e-05, 4.4745605335575935e-05, 3.3110607515928704e-05, 2.448533426726325e-05, 1.809835406268733e-05, 1.3372720787267357e-05, 9.878427106196042e-06, 7.295793465677842e-06, 0.99959739267332, 0.0005003241515735978, 0.0003713714410077001, 0.0002752606003389456, 0.00020380593342705957, 0.00015078070549725856, 0.00011148583802927681, 8.23957333590513e-05, 6.087653594472229e-05, 4.496677447251275e-05, 3.32090997430879e-05, 0.998165523186618, 0.00010972119574476171, 8.148231175096415e-05, 6.041697664455009e-05, 4.474560533557697e-05, 3.311060751592953e-05, 2.4485334267263856e-05, 1.809835406268778e-05, 1.3372720787267691e-05, 9.878427106196323e-06, 7.295793465678037e-06, 0.9995973926733202], + [1.0136792043697267, 0.0004940959471478679, 0.0003665393789898263, 0.0002715280250868441, 0.00020093276864472395, 0.00014857538603017085, 0.00010979711358152328, 8.110513918408393e-05, 5.9891859022285657e-05, 4.421658337754058e-05, 3.2638274123217366e-05, 0.9981906795248278, 0.00010808040466112623, 8.021756027605898e-05, 5.944584736996124e-05, 4.400222907136037e-05, 3.254298407971369e-05, 2.4052789560191065e-05, 1.7769295462371788e-05, 1.3122741373729703e-05, 9.688750185080576e-06, 7.152021465905336e-06, 0.999603925376496, 0.0004940959471478828, 0.00036653937898983803, 0.00027152802508685327, 0.00020093276864473108, 0.00014857538603017586, 0.00010979711358152718, 8.110513918408696e-05, 5.989185902228789e-05, 4.4216583377542235e-05, 3.263827412321864e-05, 0.9981906795248275, 0.0001080804046611295, 8.021756027606154e-05, 5.9445847369963135e-05, 4.400222907136185e-05, 3.2542984079714785e-05, 2.4052789560191875e-05, 1.7769295462372388e-05, 1.3122741373730168e-05, 9.688750185080937e-06, 7.152021465905615e-06, 0.9996039253764959], + [1.0155363805863764, 0.0004873332072252861, 0.00036129607935491353, 0.00026748034525254683, 0.0001978189465893245, 0.00014618675834826193, 0.00010796907374662354, 7.970886316134107e-05, 5.882714311557162e-05, 4.340585922277098e-05, 3.202172449313553e-05, 0.9982179519995126, 0.00010630359494899665, 7.88488695393496e-05, 5.83955736601822e-05, 4.3198759196053506e-05, 3.192983702065804e-05, 2.3585823879529553e-05, 1.7414251893964342e-05, 1.2853171842666336e-05, 9.484321395936048e-06, 6.997152261362817e-06, 0.9996109886443635, 0.0004873332072253047, 0.00036129607935492833, 0.0002674803452525582, 0.0001978189465893333, 0.00014618675834826816, 0.00010796907374662852, 7.970886316134474e-05, 5.8827143115574436e-05, 4.340585922277314e-05, 3.2021724493137125e-05, 0.9982179519995124, 0.00010630359494900136, 7.884886953935324e-05, 5.8395573660185e-05, 4.3198759196055654e-05, 3.192983702065962e-05, 2.3585823879530725e-05, 1.741425189396527e-05, 1.285317184266702e-05, 9.48432139593657e-06, 6.997152261363203e-06, 0.9996109886443636], + [1.0175793483574072, 0.00047999961250445156, 0.00035561431457805303, 0.00026309722590925827, 0.0001944493285199666, 0.00014360358344549644, 0.00010599339545111723, 7.8200755702876e-05, 5.767785428663676e-05, 4.2531266114256434e-05, 3.135700133928995e-05, 0.9982474756621806, 0.0001043825125973291, 7.737011901380138e-05, 5.7261632409892926e-05, 4.2331862849746966e-05, 3.126871686779298e-05, 2.3082641266360197e-05, 1.7031909501928804e-05, 1.2563053108280135e-05, 9.264442125288076e-06, 6.830678065867047e-06, 0.9996186124321967, 0.00047999961250448013, 0.0003556143145780754, 0.00026309722590927556, 0.00019444932851997971, 0.00014360358344550614, 0.00010599339545112477, 7.820075570288156e-05, 5.7677854286641065e-05, 4.253126611425968e-05, 3.135700133929234e-05, 0.9982474756621803, 0.0001043825125973356, 7.737011901380632e-05, 5.7261632409896795e-05, 4.233186284974989e-05, 3.12687168677952e-05, 2.3082641266361877e-05, 1.7031909501930044e-05, 1.2563053108281073e-05, 9.2644421252888e-06, 6.830678065867592e-06, 0.9996186124321965], + [1.0198267014305022, 0.00047205836904053454, 0.0003494666726648643, 0.0002583583233269576, 0.00019080886667963533, 0.00014081476395872623, 0.00010386191702524873, 7.657482971732515e-05, 5.6439611584878463e-05, 4.158960624418187e-05, 3.0641776215915234e-05, 0.998279385263587, 0.00010230903273285268, 7.577533216717082e-05, 5.603964322532307e-05, 4.139833978401449e-05, 3.055729247644328e-05, 2.2541548443199346e-05, 1.6621041748895677e-05, 1.2251499203493183e-05, 9.028474250708224e-06, 6.652140649597985e-06, 0.9996268256553225, 0.00047205836904057476, 0.0003494666726648953, 0.0002583583233269815, 0.00019080886667965363, 0.00014081476395874025, 0.00010386191702525906, 7.65748297173329e-05, 5.643961158488438e-05, 4.1589606244186374e-05, 3.064177621591866e-05, 0.9982793852635865, 0.0001023090327328625, 7.577533216717835e-05, 5.603964322532875e-05, 4.13983397840189e-05, 3.055729247644659e-05, 2.254154844320183e-05, 1.6621041748897537e-05, 1.2251499203494597e-05, 9.028474250709283e-06, 6.652140649598776e-06, 0.9996268256553226], + [1.0222988956914458, 0.0004634726887497579, 0.0003428259561799388, 0.0002532436118865041, 0.00018688286930551866, 0.0001378095571794482, 0.00010156680823135192, 7.482539554051588e-05, 5.5108293594694436e-05, 4.057790366468872e-05, 2.9873907363711134e-05, 0.9983138130083671, 0.00010007532242438871, 7.405880748917285e-05, 5.4725472928754726e-05, 4.039520511399351e-05, 2.9793416172638588e-05, 2.1961005848585388e-05, 1.618054923265083e-05, 1.1917728235418694e-05, 8.775864132639737e-06, 6.461149882761366e-06, 0.9996356554785452, 0.00046347268874981265, 0.0003428259561799811, 0.000253243611886536, 0.00018688286930554322, 0.00013780955717946678, 0.00010156680823136599, 7.482539554052651e-05, 5.5108293594702466e-05, 4.057790366469477e-05, 2.9873907363715644e-05, 0.9983138130083671, 0.00010007532242440204, 7.40588074891831e-05, 5.47254729287626e-05, 4.039520511399939e-05, 2.9793416172643033e-05, 2.1961005848588783e-05, 1.6180549232653357e-05, 1.191772823542062e-05, 8.775864132641157e-06, 6.461149882762445e-06, 0.9996356554785448], + [1.0250184358625007, 0.000454206388929406, 0.0003356656750529318, 0.00024773378430290965, 0.000182657322576173, 0.00013457783204459908, 9.910077410146013e-05, 7.29472217479199e-05, 5.368016472088095e-05, 3.949350306090485e-05, 2.905151668912577e-05, 0.9983508858168625, 9.767403676483098e-05, 7.221527516288911e-05, 5.331535970428613e-05, 3.9319787037443146e-05, 2.897520025280268e-05, 2.1339687253522476e-05, 1.570950596618894e-05, 1.156109819232587e-05, 8.506170236684414e-06, 6.257404987826991e-06, 0.9996451264744498, 0.0004542063889294839, 0.00033566567505299204, 0.00024773378430295584, 0.0001826573225762077, 0.00013457783204462537, 9.91007741014802e-05, 7.294722174793493e-05, 5.3680164720892296e-05, 3.949350306091348e-05, 2.905151668913222e-05, 0.9983508858168623, 9.767403676484937e-05, 7.221527516290322e-05, 5.331535970429693e-05, 3.931978703745131e-05, 2.8975200252808804e-05, 2.13396872535271e-05, 1.57095059661924e-05, 1.1561098192328478e-05, 8.506170236686392e-06, 6.257404987828469e-06, 0.9996451264744495], + [1.0280100809426032, 0.0004442246264643815, 0.0003279606445756968, 0.00024181073338251145, 0.00017811927535792236, 0.00013111037423543185, 9.645729545297143e-05, 7.093572381008295e-05, 5.215202252559261e-05, 3.8334184380493494e-05, 2.8173078643716084e-05, 0.9983907220412953, 9.509855128750741e-05, 7.024008145906456e-05, 5.1806058269024525e-05, 3.8169840418260815e-05, 2.8101105399786308e-05, 2.0676548291914583e-05, 1.5207212300117751e-05, 1.1181147681805087e-05, 8.219094403335684e-06, 6.040718479741101e-06, 0.9996552596420211, 0.00044422462646448647, 0.0003279606445757778, 0.00024181073338257287, 0.00017811927535796917, 0.00013111037423546725, 9.645729545299817e-05, 7.093572381010312e-05, 5.21520225256078e-05, 3.8334184380504865e-05, 2.8173078643724694e-05, 0.998390722041295, 9.509855128753274e-05, 7.02400814590839e-05, 5.180605826903925e-05, 3.8169840418271935e-05, 2.8101105399794694e-05, 2.06765482919209e-05, 1.5207212300122506e-05, 1.1181147681808643e-05, 8.219094403338357e-06, 6.040718479743107e-06, 0.999655259642021], + [1.0313010702697631, 0.0004334947819403125, 0.00031968769929436545, 0.000235458122721172, 0.00017325729178076528, 0.00012739924272177336, 9.363090822920228e-05, 6.878718191275487e-05, 5.052136687647052e-05, 3.709829370454784e-05, 2.7237521145544274e-05, 0.9984334275898457, 9.234323313894387e-05, 6.812940234145697e-05, 5.0195006926141406e-05, 3.6943676673122146e-05, 2.7170041185360304e-05, 1.997090390906107e-05, 1.467325439469676e-05, 1.0777641456516693e-05, 7.91451660026907e-06, 5.811042626415606e-06, 0.9996660712807642, 0.00043349478194045686, 0.0003196876992944768, 0.0002354581227212569, 0.00017325729178082927, 0.0001273992427218218, 9.363090822923887e-05, 6.878718191278248e-05, 5.0521366876491256e-05, 3.709829370456345e-05, 2.7237521145555984e-05, 0.9984334275898452, 9.234323313897733e-05, 6.812940234148275e-05, 5.0195006926160935e-05, 3.6943676673136844e-05, 2.7170041185371356e-05, 1.9970903909069407e-05, 1.4673254394703015e-05, 1.0777641456521403e-05, 7.9145166002726e-06, 5.811042626418249e-06, 0.9996660712807638], + [1.0349213722728794, 0.0004219875073882848, 0.00031082653189220925, 0.0002286620521754789, 0.0001680619752131519, 0.0001234381797817776, 9.06175226713073e-05, 6.649898828732748e-05, 4.878659084230145e-05, 3.578489005859598e-05, 2.624433811846928e-05, 0.9984790914238102, 8.940375239161087e-05, 6.588048685121882e-05, 4.848051656256415e-05, 3.564030972872789e-05, 2.6181478270090024e-05, 1.9222514271822166e-05, 1.4107569773219339e-05, 1.0350620279976092e-05, 7.5925327479951655e-06, 5.568498066559939e-06, 0.9996775717210783, 0.00042198750738848157, 0.00031082653189236055, 0.00022866205217559344, 0.0001680619752132388, 0.00012343817978184316, 9.06175226713567e-05, 6.649898828736469e-05, 4.8786590842329445e-05, 3.578489005861696e-05, 2.6244338118485133e-05, 0.9984790914238093, 8.940375239165757e-05, 6.588048685125451e-05, 4.8480516562591194e-05, 3.5640309728748275e-05, 2.6181478270105325e-05, 1.9222514271833672e-05, 1.4107569773227985e-05, 1.0350620279982565e-05, 7.592532748000021e-06, 5.568498066563579e-06, 0.9996775717210781], + [1.0389039581848392, 0.00040967794847817225, 0.00030136066336018506, 0.00022141182137757747, 0.00016252656493845249, 0.00011922307456896542, 8.741478166616678e-05, 6.406992300658373e-05, 4.69471921221212e-05, 3.439390691968884e-05, 2.5193712458803292e-05, 0.9985277804114323, 8.627743333183462e-05, 6.349192950835081e-05, 4.666198053480297e-05, 3.42596168894892e-05, 2.5135571151811768e-05, 1.843167806785427e-05, 1.3510517992580044e-05, 9.90045428847797e-06, 7.253494894718907e-06, 5.313403972923859e-06, 0.9996897639193968, 0.00040967794847843566, 0.00030136066336038743, 0.00022141182137773086, 0.00016252656493856855, 0.00011922307456905288, 8.741478166623262e-05, 6.406992300663335e-05, 4.6947192122158395e-05, 3.4393906919716756e-05, 2.519371245882428e-05, 0.9985277804114311, 8.627743333189654e-05, 6.349192950839818e-05, 4.6661980534838694e-05, 3.4259616889516105e-05, 2.5135571151831995e-05, 1.8431678067869462e-05, 1.351051799259142e-05, 9.900454288486483e-06, 7.253494894725285e-06, 5.313403972928635e-06, 0.9996897639193967], + [1.0432851032127464, 0.0003965471472231564, 0.0002912785464276323, 0.00021370079076132563, 0.00015664760357071632, 0.00011475247754464768, 8.402245532475853e-05, 6.150045531759983e-05, 4.500400225961168e-05, 3.2926325935840495e-05, 2.4086647243942683e-05, 0.9985795335488407, 8.296364338683736e-05, 6.096396914645069e-05, 4.474010288256775e-05, 3.280251222965847e-05, 2.4033289324699017e-05, 1.759933132954941e-05, 1.2882954837531485e-05, 9.427898508023046e-06, 6.898052625454906e-06, 5.046308843346143e-06, 0.9997026419369259, 0.0003965471472235107, 0.0002912785464279039, 0.00021370079076153139, 0.00015664760357087158, 0.00011475247754476448, 8.402245532484643e-05, 6.150045531766582e-05, 4.500400225966124e-05, 3.2926325935877635e-05, 2.4086647243970537e-05, 0.9985795335488392, 8.296364338691973e-05, 6.09639691465135e-05, 4.4740102882615196e-05, 3.280251222969413e-05, 2.4033289324725787e-05, 1.759933132956945e-05, 1.2882954837546474e-05, 9.427898508034268e-06, 6.898052625463312e-06, 5.046308843352426e-06, 0.9997026419369257], + [1.0481047179059697, 0.000382583624170316, 0.0002805747980103745, 0.00020552733425270868, 0.00015042566878641965, 0.00011002815940304798, 8.044286582698435e-05, 5.8793065138396424e-05, 4.2959428929886394e-05, 3.138435880659005e-05, 2.2925101754915324e-05, 0.9986343555955312, 7.946421445068672e-05, 5.829880920753971e-05, 4.27171403706324e-05, 3.127112856694763e-05, 2.2876553471690024e-05, 1.6727148939177453e-05, 1.2226307676349612e-05, 8.934148584831094e-06, 6.52719412409287e-06, 4.768020641367572e-06, 0.9997161893340205, 0.0003825836241707846, 0.0002805747980107328, 0.00020552733425297995, 0.00015042566878662407, 0.0001100281594032018, 8.044286582709967e-05, 5.8793065138482896e-05, 4.2959428929951256e-05, 3.1384358806638606e-05, 2.292510175495165e-05, 0.9986343555955295, 7.946421445079527e-05, 5.8298809207622246e-05, 4.271714037069462e-05, 3.1271128566994344e-05, 2.2876553471725054e-05, 1.672714893920366e-05, 1.222630767636918e-05, 8.934148584845726e-06, 6.527194124103803e-06, 4.768020641375737e-06, 0.9997161893340202], + [1.0534067127301803, 0.0003677851291137665, 0.00026925154795592464, 0.0001968958706891247, 0.00014386615711181605, 0.00010505570336764222, 7.668133274381053e-05, 5.595257628982843e-05, 4.0817704163614176e-05, 2.9771631365769307e-05, 2.1712127391290538e-05, 0.9986922102206307, 7.578388763881253e-05, 5.550095151001885e-05, 4.059715145303743e-05, 2.9669002171362e-05, 2.1668371819402138e-05, 1.581764480744899e-05, 1.1542648713480542e-05, 8.420894092777436e-06, 6.142284774004964e-06, 4.4796346013466354e-06, 0.9997303775284898, 0.0003677851291143809, 0.00026925154795639334, 0.00019689587068947936, 0.0001438661571120826, 0.00010505570336784227, 7.668133274396063e-05, 5.595257628994084e-05, 4.0817704163698283e-05, 2.9771631365832242e-05, 2.1712127391337555e-05, 0.9986922102206284, 7.578388763895428e-05, 5.550095151012641e-05, 4.0597151453118416e-05, 2.9669002171422716e-05, 2.166837181944756e-05, 1.5817644807482905e-05, 1.1542648713505865e-05, 8.420894092796313e-06, 6.14228477401905e-06, 4.479634601357131e-06, 0.9997303775284894], + [1.0592393991474296, 0.00035216053607422436, 0.0002573198802882612, 0.00018781795195290738, 0.00013698010015997993, 9.984511385699273e-05, 7.274662438236916e-05, 5.298648936180238e-05, 3.858512850279653e-05, 2.8093361678074473e-05, 2.0451996835795353e-05, 0.9987530128180074, 7.193076789129116e-05, 5.2577531845867546e-05, 3.8386242382736306e-05, 2.8001252128375142e-05, 2.041297005816779e-05, 1.4874265392523569e-05, 1.083476186368066e-05, 7.890366014075262e-06, 5.7451006041108295e-06, 4.182556578801974e-06, 0.9997451641853343, 0.0003521605360750229, 0.0002573198802888687, 0.00018781795195336613, 0.00013698010016032449, 9.98451138572508e-05, 7.274662438256235e-05, 5.298648936194677e-05, 3.858512850290448e-05, 2.8093361678155016e-05, 2.0451996835855516e-05, 0.9987530128180045, 7.193076789147337e-05, 5.257753184600549e-05, 3.8386242382839956e-05, 2.8001252128452686e-05, 2.04129700582257e-05, 1.4874265392566742e-05, 1.083476186371284e-05, 7.89036601409923e-06, 5.745100604128668e-06, 4.182556578815252e-06, 0.9997451641853337], + [1.065655930820692, 0.00033573184122077005, 0.0002448013292356583, 0.00017831337461405336, 0.00012978498481762798, 9.441141751750572e-05, 6.865139523533067e-05, 4.9905297880317395e-05, 3.6270297827205596e-05, 2.635652147423694e-05, 1.9150317938697106e-05, 0.9988166232236969, 6.791676937229813e-05, 4.953864150627751e-05, 3.609279741060647e-05, 2.627474377044708e-05, 1.911590633023327e-05, 1.3901469796039972e-05, 1.0106197902224974e-05, 7.345374194607411e-06, 5.337853300775074e-06, 3.878519397025491e-06, 0.9997604917271417, 0.00033573184122179164, 0.00024480132923643364, 0.00017831337461463745, 0.00012978498481806578, 9.441141751783308e-05, 6.865139523557517e-05, 4.990529788049984e-05, 3.627029782734174e-05, 2.6356521474338394e-05, 1.9150317938772696e-05, 0.9988166232236931, 6.791676937252893e-05, 4.953864150645192e-05, 3.60927974107372e-05, 2.627474377054472e-05, 1.911590633030604e-05, 1.390146979609415e-05, 1.0106197902265259e-05, 7.345374194637356e-06, 5.337853300797328e-06, 3.878519397042019e-06, 0.9997604917271408], + [1.0727147889083832, 0.0003185362013322975, 0.00023172937550570643, 0.00016841126862545346, 0.00012230553855137064, 8.877522464205019e-05, 6.44125835061393e-05, 4.672276680076104e-05, 3.3884296092699366e-05, 2.456996763414186e-05, 1.7814121852039024e-05, 0.99888283865737, 6.375802640206606e-05, 4.6397614114528446e-05, 3.372767646491018e-05, 2.44982229403341e-05, 1.7784160828471053e-05, 1.2904788234716536e-05, 9.3613115004599e-06, 6.789329822789918e-06, 4.923202969947548e-06, 3.5695892639277554e-06, 0.9997762860776147, 0.0003185362013335893, 0.00023172937550668447, 0.00016841126862618817, 0.0001223055385519203, 8.877522464246036e-05, 6.441258350644503e-05, 4.672276680098887e-05, 3.388429609286886e-05, 2.456996763426795e-05, 1.7814121852132787e-05, 0.9988828386573654, 6.375802640235431e-05, 4.639761411474562e-05, 3.372767646507266e-05, 2.4498222940455164e-05, 1.778416082856112e-05, 1.2904788234783426e-05, 9.361311500509554e-06, 6.789329822826762e-06, 4.923202969974877e-06, 3.5695892639480084e-06, 0.9997762860776139], + [1.0804803157929084, 0.0003006279254009197, 0.00021815086879244274, 0.000158151101614, 0.00011457442957377456, 8.29632103700143e-05, 6.005173623742199e-05, 4.345614758350676e-05, 3.1440833728390515e-05, 2.2744527894920364e-05, 1.645191313052694e-05, 0.9989513873081554, 5.947523798984374e-05, 4.317125222674798e-05, 3.130436011517865e-05, 2.2682405262724767e-05, 1.6426187704711717e-05, 1.1890849390345524e-05, 8.60527285942946e-06, 6.226247372344937e-06, 4.5042544309604925e-06, 3.2581590748313798e-06, 0.999792455773772, 0.00030062792540252873, 0.00021815086879365758, 0.0001581511016149102, 0.00011457442957445393, 8.296321037052007e-05, 6.005173623779834e-05, 4.345614758378636e-05, 3.144083372859811e-05, 2.274452789507446e-05, 1.645191313064127e-05, 0.9989513873081497, 5.9475237990198934e-05, 4.317125222701485e-05, 3.130436011537773e-05, 2.268240526287276e-05, 1.6426187704821543e-05, 1.1890849390426908e-05, 8.605272859489748e-06, 6.226247372389565e-06, 4.504254430993505e-06, 3.2581590748558035e-06, 0.9997924557737708], + [1.0890233020004854, 0.0002820803036737994, 0.00020412728104659238, 0.00014758352125138208, 0.00010663281973037641, 7.700846638291538e-05, 5.5595223306600064e-05, 4.0126299653385406e-05, 2.895630832349414e-05, 2.089302282390265e-05, 1.50736680861167e-05, 0.9990219230889023, 5.509390740217081e-05, 3.9879963477753575e-05, 2.8839018373797844e-05, 2.0840002388670977e-05, 1.505191551815791e-05, 1.0867366197376526e-05, 7.844046075828738e-06, 5.660720120255456e-06, 4.0845326607195536e-06, 2.946925361987002e-06, 0.9998088916026722, 0.0002820803036757697, 0.00020412728104807505, 0.0001475835212524897, 0.00010663281973120095, 7.700846638352794e-05, 5.559522330705454e-05, 4.0126299653722335e-05, 2.8956308323743763e-05, 2.089302282408744e-05, 1.5073668086253446e-05, 0.9990219230888956, 5.509390740260025e-05, 3.987996347807505e-05, 2.883901837403703e-05, 2.0840002388848336e-05, 1.5051915518289166e-05, 1.086736619747359e-05, 7.844046075900443e-06, 5.660720120308398e-06, 4.084532660758632e-06, 2.9469253620158404e-06, 0.9998088916026707], + [1.0984216315213622, 0.0002629871281543726, 0.0001897356729071251, 0.00013677094225571319, 9.853069668816928e-05, 7.095066597345624e-05, 5.107429623361982e-05, 3.675768453974473e-05, 2.644976201753713e-05, 1.903020477697093e-05, 1.3690766976491142e-05, 0.9990940221835009, 5.0644432350097006e-05, 3.6547772232576165e-05, 2.6350477496589665e-05, 1.898566576499357e-05, 1.3672681701716761e-05, 9.843069307157532e-06, 7.084326327877559e-06, 5.097863468355292e-06, 3.6679332139137416e-06, 2.638845899267779e-06, 0.9998254669325438, 0.0002629871281567425, 0.0001897356729089023, 0.00013677094225703705, 9.853069668915188e-05, 7.095066597418421e-05, 5.107429623415846e-05, 3.6757684540142954e-05, 2.6449762017831346e-05, 1.9030204777188156e-05, 1.3690766976651458e-05, 0.9990940221834927, 5.0644432350605924e-05, 3.654777223295589e-05, 2.6350477496871355e-05, 1.8985665765201824e-05, 1.3672681701870477e-05, 9.843069307270869e-06, 7.0843263279610685e-06, 5.09786346841678e-06, 3.6679332139590054e-06, 2.6388458993010793e-06, 0.9998254669325422], + [1.1087609912352663, 0.0002434637286571057, 0.00017506923495793077, 0.00012578777057031435, 9.032690284874655e-05, 6.483597964221766e-05, 4.6524944408373686e-05, 3.3378197277190993e-05, 2.3942709359559653e-05, 1.717259459109943e-05, 1.2315846038386479e-05, 0.9991671820966662, 4.616199735713623e-05, 3.32021706038395e-05, 2.3860058089737243e-05, 1.7135828404824346e-05, 1.2301086906546846e-05, 8.827578095401836e-06, 6.3334287021951025e-06, 4.54322104900056e-06, 3.2586441631268926e-06, 2.337075626449346e-06, 0.9998420389113722, 0.00024346372865989736, 0.00017506923496001623, 0.00012578777057186284, 9.032690284989233e-05, 6.483597964306395e-05, 4.652494440899798e-05, 3.3378197277651156e-05, 2.3942709359898582e-05, 1.7172594591348926e-05, 1.2315846038570029e-05, 0.9991671820966568, 4.616199735772655e-05, 3.320217060427836e-05, 2.3860058090061693e-05, 1.7135828405063477e-05, 1.2301086906722791e-05, 8.827578095531172e-06, 6.3334287022901125e-06, 4.543221049070321e-06, 3.2586441631780804e-06, 2.337075626486892e-06, 0.9998420389113702], + [1.1201356506931057, 0.00022364732245575843, 0.00016023724913801602, 0.00011472014768546328, 8.208877341522702e-05, 5.871667640727064e-05, 4.198750129474769e-05, 3.001880074335002e-05, 2.145881111840369e-05, 1.5338198746423796e-05, 1.0962557408865495e-05, 0.9992408239677429, 4.168621902111875e-05, 2.987377336469581e-05, 2.1391259329440943e-05, 1.530842701847729e-05, 1.0950757073289386e-05, 7.831201006275421e-06, 5.599123256214103e-06, 4.002630171657698e-06, 2.86103746880973e-06, 2.044879718382456e-06, 0.9998584506930116, 0.00022364732245897716, 0.00016023724914041097, 0.00011472014768723497, 8.208877341653355e-05, 5.871667640823251e-05, 4.1987501295454904e-05, 3.001880074386956e-05, 2.1458811118785138e-05, 1.5338198746703642e-05, 1.0962557409070686e-05, 0.9992408239677322, 4.168621902178756e-05, 2.987377336519108e-05, 2.1391259329805767e-05, 1.5308427018745254e-05, 1.0950757073485894e-05, 7.831201006419386e-06, 5.599123256319502e-06, 4.002630171734829e-06, 2.861037468866137e-06, 2.044879718423695e-06, 0.9998584506930096], + [1.132649319111136, 0.00020369645826870882, 0.00014536430768443065, 0.00010366509610847047, 7.389129773385095e-05, 5.265034976183065e-05, 3.750595791351402e-05, 2.6712933663836458e-05, 1.9023374463969863e-05, 1.3546094310297106e-05, 9.64522907050656e-06, 0.9993142989084437, 3.726049879692023e-05, 2.6595745922671082e-05, 1.896926884052444e-05, 1.3522491355726165e-05, 9.636005140895934e-06, 6.864660584874374e-06, 4.889413955006029e-06, 3.4820457245971465e-06, 2.479529805760645e-06, 1.765524354726206e-06, 0.9998745348160301, 0.0002036964582723283, 0.00014536430768711172, 0.00010366509611044598, 7.389129773530253e-05, 5.265034976289516e-05, 3.750595791429392e-05, 2.6712933664407348e-05, 1.90233744643874e-05, 1.3546094310602343e-05, 9.64522907072955e-06, 0.9993142989084318, 3.726049879765829e-05, 2.6595745923215233e-05, 1.8969268840923672e-05, 1.3522491356018282e-05, 9.636005141109366e-06, 6.8646605850301656e-06, 4.889413955119669e-06, 3.4820457246799995e-06, 2.4795298058210224e-06, 1.7655243547701786e-06, 0.9998745348160276], + [1.1464160871088942, 0.00018378933302344076, 0.00013058863230844137, 9.272895640996587e-05, 6.581572926365969e-05, 4.66987188166519e-05, 3.312695201526139e-05, 2.3495673157806e-05, 1.666266889847091e-05, 1.1815876694933429e-05, 8.3784234781891e-06, 0.9993868990447126, 3.2931048295986866e-05, 2.3402984327123805e-05, 1.6620286602283007e-05, 1.1797595284572342e-05, 8.371390819271153e-06, 5.9387439792672685e-06, 4.212263578456525e-06, 2.987325259065506e-06, 2.118415770248027e-06, 1.5021480472584116e-06, 0.999890117798618, 0.00018378933302740222, 0.00013058863231136213, 9.272895641210871e-05, 6.58157292652276e-05, 4.669871881779716e-05, 3.312695201609705e-05, 2.349567315841523e-05, 1.6662668898914716e-05, 1.1815876695256558e-05, 8.37842347842421e-06, 0.9993868990446999, 3.2931048296777805e-05, 2.340298432770415e-05, 1.6620286602706967e-05, 1.1797595284881266e-05, 8.371390819495937e-06, 5.938743979430688e-06, 4.212263578575257e-06, 2.9873252591517163e-06, 2.118415770310592e-06, 1.5021480473038003e-06, 0.9998901177986156], + [1.1615614614807166, 0.00016412077983684123, 0.00011605936034891249, 8.202503107611304e-05, 5.794759317235677e-05, 4.092597663271449e-05, 2.8898420201848875e-05, 2.0402648832562468e-05, 1.4403060858666662e-05, 1.0166976441706515e-05, 7.176402630076193e-06, 0.9994578737601347, 2.8745570461268752e-05, 2.03310422550375e-05, 1.4370664762743844e-05, 1.0153175330810875e-05, 7.171185984257458e-06, 5.063887040991499e-06, 3.575272538916936e-06, 2.5239825843990248e-06, 1.7816799807757795e-06, 1.2576191569690276e-06, 0.9999050259205485, 0.00016412077984105016, 0.00011605936035199998, 8.20250310783674e-05, 5.79475931739987e-05, 4.09259766339085e-05, 2.8898420202716213e-05, 2.0402648833192e-05, 1.4403060859123252e-05, 1.0166976442037449e-05, 7.1764026303159035e-06, 0.9994578737601214, 2.8745570462089733e-05, 2.0331042255636834e-05, 1.4370664763179573e-05, 1.0153175331126932e-05, 7.171185984486409e-06, 5.06388704115721e-06, 3.575272539036791e-06, 2.523982584485668e-06, 1.781679980838378e-06, 1.2576191570142344e-06, 0.9999050259205461], + [1.1782235021487208, 0.0001448977755963077, 0.00010193271276289725, 7.16703942050478e-05, 5.037407897597603e-05, 3.539669053732191e-05, 2.4867927649613613e-05, 1.7468727931446114e-05, 1.226998811236948e-05, 8.617865783643282e-06, 6.052518822348335e-06, 0.9995264513311253, 2.475160732493725e-05, 1.7414822518154707e-05, 1.224588356757369e-05, 8.607737040322936e-06, 6.048764797798177e-06, 4.249709155902599e-06, 2.9853264988180524e-06, 2.0969225150068464e-06, 1.4727986088118175e-06, 1.0343882521367204e-06, 0.9999190920404156, 0.0001448977756006334, 0.00010193271276605272, 7.167039420733994e-05, 5.037407897763718e-05, 3.5396690538523936e-05, 2.4867927650482523e-05, 1.7468727932073678e-05, 1.226998811282242e-05, 8.617865783969962e-06, 6.052518822583802e-06, 0.9995264513311121, 2.4751607325760148e-05, 1.741482251875209e-05, 1.2245883568005728e-05, 8.607737040634739e-06, 6.048764798022925e-06, 4.249709156064464e-06, 2.9853264989345596e-06, 2.096922515090656e-06, 1.4727986088720716e-06, 1.0343882521800216e-06, 0.9999190920404135], + [1.1965540714220575, 0.0001263334031948794, 8.836703517118292e-05, 6.178189124998322e-05, 4.318085993861704e-05, 3.0173303604169058e-05, 2.1080725791991782e-05, 1.4726519354609516e-05, 1.0286817240342359e-05, 7.185192884862003e-06, 5.018563438989661e-06, 0.9995918656881303, 2.099460131831664e-05, 1.4687079390559724e-05, 1.0269406079812039e-05, 7.177986861016837e-06, 5.015950874427834e-06, 3.5045259049813038e-06, 2.4482351120767467e-06, 1.7101748934077496e-06, 1.1945448731255714e-06, 8.343468365044872e-07, 0.9999321631478557, 0.00012633340319487962, 8.836703517118308e-05, 6.178189124998333e-05, 4.318085993861712e-05, 3.0173303604169112e-05, 2.1080725791991857e-05, 1.4726519354609541e-05, 1.0286817240342378e-05, 7.1851928848620155e-06, 5.01856343898967e-06, 0.9995918656881305, 2.0994601318316564e-05, 1.4687079390559671e-05, 1.0269406079812003e-05, 7.177986861016811e-06, 5.015950874427816e-06, 3.5045259049812915e-06, 2.448235112076738e-06, 1.7101748934077437e-06, 1.194544873125565e-06, 8.343468365044827e-07, 0.9999321631478557], + [1.216720206794909, 0.0001086393308641651, 7.551680924372962e-05, 5.2471439392127466e-05, 3.644845002802021e-05, 2.531334085272197e-05, 1.7577630505302978e-05, 1.2204776657510267e-05, 8.47365187538669e-06, 5.8828998225049574e-06, 4.0841194794101524e-06, 0.9996533875512793, 1.7515760542540913e-05, 1.217681114135817e-05, 8.461479223709122e-06, 5.87794567264491e-06, 4.082367301386235e-06, 2.8348763849475013e-06, 1.9683911263721404e-06, 1.3666508403446697e-06, 9.488163329305368e-07, 6.587061785594065e-07, 0.999944108195255, 0.0001086393308641651, 7.551680924372962e-05, 5.2471439392127466e-05, 3.6448450028020146e-05, 2.531334085272197e-05, 1.757763050530301e-05, 1.2204776657510267e-05, 8.47365187538669e-06, 5.8828998225049574e-06, 4.084119479410159e-06, 0.9996533875512793, 1.7515760542540913e-05, 1.2176811141358149e-05, 8.461479223709122e-06, 5.87794567264491e-06, 4.082367301386235e-06, 2.8348763849475013e-06, 1.968391126372137e-06, 1.3666508403446674e-06, 9.488163329305335e-07, 6.587061785594053e-07, 0.9999441081952553], + [1.238905629802117, 9.20170380495404e-05, 6.352586446306069e-05, 4.3840842759790455e-05, 3.0248288806341932e-05, 2.086648388588283e-05, 1.4392858117530481e-05, 9.926812920432373e-06, 6.84618296744908e-06, 4.721397034771996e-06, 3.2559750275130165e-06, 0.9997103582559678, 1.4349865103343358e-05, 9.907656055236406e-06, 6.837972889275865e-06, 4.718117060353733e-06, 3.2548469636287783e-06, 2.2451098028165056e-06, 1.5484841136124107e-06, 1.0679472832453004e-06, 7.365035911459144e-07, 5.079108639675607e-07, 0.9999548255862735, 9.201703804954057e-05, 6.352586446306081e-05, 4.384084275979053e-05, 3.0248288806341986e-05, 2.0866483885882867e-05, 1.4392858117530506e-05, 9.926812920432408e-06, 6.846182967449093e-06, 4.721397034772013e-06, 3.2559750275130224e-06, 0.9997103582559678, 1.4349865103343331e-05, 9.907656055236406e-06, 6.837972889275853e-06, 4.718117060353725e-06, 3.2548469636287783e-06, 2.2451098028165013e-06, 1.5484841136124107e-06, 1.0679472832453004e-06, 7.365035911459131e-07, 5.079108639675607e-07, 0.9999548255862734], + [1.2633124048628985, 7.664821483198154e-05, 5.252017021373843e-05, 3.597644842145563e-05, 2.463882635740195e-05, 1.6871736293107567e-05, 1.1551997663536035e-05, 7.909068460072651e-06, 5.41469090425746e-06, 3.7068787026894578e-06, 2.537661835367866e-06, 0.9997622243063163, 1.1523195070714459e-05, 7.896434555890292e-06, 5.409368025107872e-06, 3.7047954635515953e-06, 2.536967711693189e-06, 1.7370797036782727e-06, 1.18930465350659e-06, 8.142259989215944e-07, 5.574193944130179e-07, 3.8160063986918886e-07, 0.9999642496087828, 7.664821483198154e-05, 5.252017021373843e-05, 3.597644842145563e-05, 2.463882635740195e-05, 1.6871736293107567e-05, 1.1551997663536015e-05, 7.909068460072651e-06, 5.41469090425746e-06, 3.7068787026894646e-06, 2.537661835367866e-06, 0.9997622243063167, 1.1523195070714439e-05, 7.896434555890279e-06, 5.409368025107863e-06, 3.7047954635515885e-06, 2.5369677116931803e-06, 1.7370797036782697e-06, 1.1893046535065857e-06, 8.142259989215931e-07, 5.574193944130159e-07, 3.8160063986918817e-07, 0.9999642496087827], + [1.2901627636860973, 6.26849710279358e-05, 4.26007380532687e-05, 2.8944073956116617e-05, 1.9661951630547333e-05, 1.33549488443208e-05, 9.07032690212454e-06, 6.1599891376844375e-06, 4.183317741727737e-06, 2.840866486468827e-06, 1.9291827414996284e-06, 0.9998085696334783, 9.051792130426606e-06, 6.151998009515036e-06, 4.180013605499046e-06, 2.8396024988321314e-06, 1.928776522858508e-06, 1.3099917760230558e-06, 8.896713699473649e-07, 6.041896260554599e-07, 4.103033832066128e-07, 2.7863066254568946e-07, 0.9999723550304153, 6.268497102793557e-05, 4.260073805326862e-05, 2.8944073956116516e-05, 1.9661951630547262e-05, 1.3354948844320752e-05, 9.070326902124525e-06, 6.1599891376844265e-06, 4.183317741727722e-06, 2.840866486468817e-06, 1.929182741499621e-06, 0.9998085696334782, 9.051792130426589e-06, 6.151998009515025e-06, 4.180013605499039e-06, 2.8396024988321263e-06, 1.9287765228585046e-06, 1.3099917760230535e-06, 8.896713699473633e-07, 6.041896260554578e-07, 4.103033832066113e-07, 2.78630662545689e-07, 0.9999723550304148], + [1.3197011125804357, 5.0240681333406706e-05, 3.383728856195611e-05, 2.278471486151483e-05, 1.5340152088666455e-05, 1.0326995609350284e-05, 6.951687053258456e-06, 4.6793713411170216e-06, 3.1497208826912266e-06, 2.120059518748964e-06, 1.4269812444427827e-06, 0.9998491423475048, 6.940276352084946e-06, 4.674543905250925e-06, 3.1477657221599153e-06, 2.11933029864273e-06, 1.4267563893100957e-06, 9.60440929882299e-07, 6.465037710026943e-07, 4.351687608813084e-07, 2.929106091399405e-07, 1.9715430307662562e-07, 0.9999791591489585, 5.0240681333406794e-05, 3.383728856195617e-05, 2.278471486151483e-05, 1.5340152088666482e-05, 1.0326995609350302e-05, 6.951687053258481e-06, 4.67937134111703e-06, 3.1497208826912376e-06, 2.120059518748968e-06, 1.4269812444427852e-06, 0.9998491423475049, 6.940276352084995e-06, 4.674543905250959e-06, 3.1477657221599432e-06, 2.1193302986427487e-06, 1.4267563893101084e-06, 9.604409298823075e-07, 6.465037710027e-07, 4.3516876088131226e-07, 2.929106091399431e-07, 1.9715430307662703e-07, 0.9999791591489587], + [1.3521962419535112, 3.938242408664231e-05, 2.626340505951915e-05, 1.7511566264632602e-05, 1.1674792557860592e-05, 7.782876820141939e-06, 5.188107988274687e-06, 3.4583034740449348e-06, 2.3051933471478027e-06, 1.5365441963538855e-06, 1.0241849376983234e-06, 0.9998838726012677, 5.181417161328891e-06, 3.4555310375251715e-06, 2.3040957829925903e-06, 1.53614622503016e-06, 1.024067950152753e-06, 6.826547438891825e-07, 4.5504833681004084e-07, 3.033215996990531e-07, 2.0218180520516616e-07, 1.347646806231186e-07, 0.9999847207706768, 3.938242408664217e-05, 2.6263405059519057e-05, 1.751156626463254e-05, 1.167479255786055e-05, 7.782876820141912e-06, 5.188107988274659e-06, 3.4583034740449225e-06, 2.3051933471477904e-06, 1.5365441963538775e-06, 1.0241849376983179e-06, 0.9998838726012677, 5.1814171613289e-06, 3.4555310375251774e-06, 2.3040957829925984e-06, 1.5361462250301627e-06, 1.0240679501527548e-06, 6.826547438891837e-07, 4.550483368100417e-07, 3.033215996990536e-07, 2.0218180520516653e-07, 1.3476468062311908e-07, 0.9999847207706767], + [1.3879437593290433, 3.0125998156017642e-05, 1.9873874932036124e-05, 1.310884533726552e-05, 8.645841161409733e-06, 5.7019616126980745e-06, 3.7603158376623077e-06, 2.4797799550299013e-06, 1.6352892097613233e-06, 1.0783782505525564e-06, 7.1112255403436e-07, 0.9999128786026741, 3.756597311863165e-06, 2.4782738945260104e-06, 1.6347077766894897e-06, 1.0781739585129493e-06, 7.110657548110838e-07, 4.689346913884014e-07, 3.092451343724883e-07, 2.0393201788638645e-07, 1.3448154846811639e-07, 8.868221236046942e-08, 0.9999891359060216, 3.0125998157032865e-05, 1.9873874932729336e-05, 1.3108845337737923e-05, 8.64584116173127e-06, 5.701961612916692e-06, 3.76031583781081e-06, 2.4797799551306914e-06, 1.6352892098296747e-06, 1.0783782505988735e-06, 7.111225540657242e-07, 0.9999128786026719, 3.756597312003493e-06, 2.4782738946213554e-06, 1.6347077767541723e-06, 1.078173958556785e-06, 7.110657548407681e-07, 4.689346914084874e-07, 3.0924513438607214e-07, 2.0393201789556638e-07, 1.3448154847431696e-07, 8.868221236465503e-08, 0.999989135906021], + [1.4272687693316577, 2.2434383954632732e-05, 1.4624781919042504e-05, 9.532762813635116e-06, 6.213242085542698e-06, 4.049470798022775e-06, 2.6391590425001212e-06, 1.7199846584155024e-06, 1.1209292106627497e-06, 7.305135618652777e-07, 4.7607577916887164e-07, 0.999936458703956, 2.6372107429154683e-06, 1.7192151057015142e-06, 1.120640236382963e-06, 7.304155400290339e-07, 4.7605025980878334e-07, 3.1025724118093854e-07, 2.0220045507296684e-07, 1.3177606017862817e-07, 8.587902819668867e-08, 5.5967415873933685e-08, 0.9999925303881464, 2.2434383955268484e-05, 1.4624781919471414e-05, 9.532762813923987e-06, 6.2132420857370145e-06, 4.049470798153355e-06, 2.6391590425877836e-06, 1.7199846584743049e-06, 1.120929210702163e-06, 7.305135618916733e-07, 4.760757791865371e-07, 0.9999364587039546, 2.637210742998222e-06, 1.7192151057570715e-06, 1.1206402364202103e-06, 7.304155400539805e-07, 4.760502598254795e-07, 3.102572411921044e-07, 2.0220045508042952e-07, 1.317760601836127e-07, 8.587902820001613e-08, 5.596741587615369e-08, 0.9999925303881466], + [1.4705288261994465, 1.6220226165527892e-05, 1.0436649299864944e-05, 6.714763231454928e-06, 4.319943538373805e-06, 2.7791444709223523e-06, 1.7878660088510437e-06, 1.1501457706937645e-06, 7.39889722004527e-07, 4.7596898054129974e-07, 3.061883965585256e-07, 0.9999550692203115, 1.7869093140867725e-06, 1.1497781604932776e-06, 7.397558406705734e-07, 4.759253254650514e-07, 3.0617789165586267e-07, 1.9696947740816499e-07, 1.2671197578706195e-07, 8.151401635268438e-08, 5.2437778348733667e-08, 3.37329698146247e-08, 0.9999950500874059, 1.6220226165893096e-05, 1.0436649300108105e-05, 6.7147632316165856e-06, 4.319943538481154e-06, 2.779144470993565e-06, 1.7878660088982405e-06, 1.1501457707250174e-06, 7.398897220252049e-07, 4.759689805549705e-07, 3.061883965675576e-07, 0.9999550692203106, 1.7869093141312936e-06, 1.1497781605227762e-06, 7.397558406900939e-07, 4.7592532547795833e-07, 3.061778916643902e-07, 1.9696947741379468e-07, 1.2671197579077608e-07, 8.15140163551335e-08, 5.243777835034737e-08, 3.3732969815687476e-08, 0.9999950500874055], + [1.5181171865462322, 1.135246372489027e-05, 7.20056056147516e-06, 4.566854734614796e-06, 2.8963566777981255e-06, 1.8368627695885605e-06, 1.164916847753351e-06, 7.387696535164186e-07, 4.685118423995609e-07, 2.971190185279681e-07, 1.8842533091251503e-07, 0.9999692891630296, 1.1644794183623701e-06, 7.386065877942216e-07, 4.6845442914809393e-07, 2.9710111160744776e-07, 1.8842141716362016e-07, 1.1949488560924624e-07, 7.578163484556155e-08, 4.80591219798902e-08, 3.0477962100086906e-08, 1.932835506021506e-08, 0.9999968497951731, 1.1352463725081101e-05, 7.20056056160042e-06, 4.566854734696893e-06, 2.8963566778518752e-06, 1.836862769623712e-06, 1.1649168477763183e-06, 7.387696535314118e-07, 4.685118424093406e-07, 2.9711901853434273e-07, 1.884253309166678e-07, 0.9999692891630293, 1.1644794183840173e-06, 7.386065878083587e-07, 4.684544291573174e-07, 2.9710111161345947e-07, 1.8842141716753551e-07, 1.1949488561179472e-07, 7.578163484721921e-08, 4.805912198096774e-08, 3.047796210078693e-08, 1.9328355060669506e-08, 0.9999968497951731], + [1.5704663921945257, 7.666665013950887e-06, 4.78674937212839e-06, 2.9885256239737895e-06, 1.8657871523623842e-06, 1.1648237902177696e-06, 7.272002301739471e-07, 4.539887201443684e-07, 2.8342256139669e-07, 1.7693865199387534e-07, 1.1046135032464884e-07, 0.9999797754403102, 7.270153187539419e-07, 4.539220479555048e-07, 2.8339994859379395e-07, 1.7693194492209862e-07, 1.1046005131235434e-07, 6.896036480236427e-08, 4.305176276034169e-08, 2.687698213631714e-08, 1.6779110273157137e-08, 1.0475062985371514e-08, 0.999998082127461, 7.666665014040813e-06, 4.786749372186482e-06, 2.988525624011274e-06, 1.865787152386542e-06, 1.1648237902333253e-06, 7.272002301839518e-07, 4.5398872015079904e-07, 2.834225614008194e-07, 1.7693865199652494e-07, 1.104613503263481e-07, 0.9999797754403104, 7.270153187633565e-07, 4.5392204796155714e-07, 2.833999485976809e-07, 1.7693194492459286e-07, 1.1046005131395351e-07, 6.896036480338885e-08, 4.305176276099785e-08, 2.6876982136736993e-08, 1.6779110273425686e-08, 1.0475062985543185e-08, 0.9999980821274609], + [1.6280522151479029, 4.978035586621418e-06, 3.054734027139699e-06, 1.874461765011831e-06, 1.1501971033318965e-06, 7.057702543730288e-07, 4.3306352572713667e-07, 2.6572849708199775e-07, 1.6305104697271146e-07, 1.000479973728257e-07, 6.13893178661769e-08, 0.9999872135225821, 4.329918227271189e-07, 2.657035744567172e-07, 1.6304293694996219e-07, 1.0004572551257296e-07, 6.138894213435874e-08, 3.7668535176938657e-08, 2.3113486244185877e-08, 1.4182442743381753e-08, 8.702337497659925e-09, 5.339743259536785e-09, 0.9999988878204823, 4.978035586659195e-06, 3.0547340271636832e-06, 1.8744617650270412e-06, 1.150197103341534e-06, 7.057702543791267e-07, 4.3306352573099226e-07, 2.6572849708443387e-07, 1.6305104697424915e-07, 1.0004799737379535e-07, 6.138931786678824e-08, 0.9999872135225821, 4.329918227307462e-07, 2.657035744590091e-07, 1.6304293695140855e-07, 1.0004572551348536e-07, 6.138894213493364e-08, 3.766853517730078e-08, 2.311348624441375e-08, 1.4182442743525102e-08, 8.702337497750048e-09, 5.339743259593412e-09, 0.9999988878204823], + [1.6913979992307795, 3.0955775746210113e-06, 1.8637702777044503e-06, 1.122109034408297e-06, 6.755739770814602e-07, 4.0673154946158213e-07, 2.4487308991428506e-07, 1.4742570347842803e-07, 8.87574307712172e-08, 5.3436235399976854e-08, 3.21711626664635e-08, 0.9999922695749253, 2.4484780351319465e-07, 1.4741726202685896e-07, 8.87548070945397e-08, 5.3435546969730246e-08, 3.217107121484082e-08, 1.9368630374142805e-08, 1.1660875874760057e-08, 7.020414500637607e-09, 4.226627046692888e-09, 2.5446312414644193e-09, 0.9999993885523439, 3.095577574635039e-06, 1.8637702777131873e-06, 1.1221090344137345e-06, 6.755739770848395e-07, 4.0673154946368097e-07, 2.448730899155874e-07, 1.4742570347923514e-07, 8.875743077171732e-08, 5.3436235400286114e-08, 3.217116266665483e-08, 0.9999922695749253, 2.448478035144142e-07, 1.4741726202761497e-07, 8.875480709500794e-08, 5.343554697002013e-08, 3.217107121502003e-08, 1.936863037425359e-08, 1.1660875874828455e-08, 7.020414500679808e-09, 4.226627046718925e-09, 2.5446312414804662e-09, 0.9999993885523436], + [1.7610794358412578, 1.8356251152317156e-06, 1.0823011180692708e-06, 6.381271162623259e-07, 3.76238583347515e-07, 2.2182869022823806e-07, 1.3078895499766948e-07, 7.711232853156632e-08, 4.546489656578513e-08, 2.6805776128019385e-08, 1.5804488346908485e-08, 0.9999955499034263, 1.3078092160378972e-07, 7.710976325783277e-08, 4.5464138873418586e-08, 2.6805591780045963e-08, 1.580447086727887e-08, 9.31822985441069e-09, 5.4939692980668305e-09, 3.2392066406857856e-09, 1.909813039542613e-09, 1.126011746767342e-09, 0.9999996829478889, 1.8356251152362284e-06, 1.0823011180720239e-06, 6.381271162640035e-07, 3.7623858334853683e-07, 2.2182869022885907e-07, 1.3078895499804678e-07, 7.711232853179563e-08, 4.546489656592404e-08, 2.680577612810357e-08, 1.5804488346959522e-08, 0.9999955499034264, 1.3078092160414447e-07, 7.710976325804809e-08, 4.5464138873549254e-08, 2.68055917801251e-08, 1.5804470867326822e-08, 9.318229854439724e-09, 5.493969298084397e-09, 3.2392066406963963e-09, 1.9098130395490244e-09, 1.1260117467712104e-09, 0.9999996829478889], + [1.8377298148533232, 1.0330551410544658e-06, 5.952450622609826e-07, 3.429770825996593e-07, 1.9762080995677384e-07, 1.1386736026735248e-07, 6.560927776904737e-08, 3.780340603460407e-08, 2.1781932828858467e-08, 1.255052196835929e-08, 7.231478491396954e-09, 0.9999975722581566, 6.560700240700921e-08, 3.780271414759353e-08, 2.1781739731902673e-08, 1.2550478954140249e-08, 7.231476364618508e-09, 4.166707643392758e-09, 2.400815212247509e-09, 1.383325031456348e-09, 7.970574395387053e-10, 4.59256102956874e-10, 0.999999845819429, 1.0330551410557228e-06, 5.952450622617313e-07, 3.429770826001059e-07, 1.976208099570396e-07, 1.1386736026751026e-07, 6.560927776914107e-08, 3.780340603465967e-08, 2.1781932828891435e-08, 1.255052196837882e-08, 7.231478491408515e-09, 0.9999975722581563, 6.560700240709685e-08, 3.7802714147645505e-08, 2.178173973193347e-08, 1.255047895415853e-08, 7.231476364629299e-09, 4.166707643399153e-09, 2.4008152122512787e-09, 1.3833250314585792e-09, 7.97057439540022e-10, 4.5925610295765063e-10, 0.9999998458194291], + [1.9220457961449686, 5.488986691211748e-07, 3.0837266823568326e-07, 1.732438735044661e-07, 9.732825580557889e-08, 5.467886121833736e-08, 3.0718477091526576e-08, 1.7257573532925444e-08, 9.69526511177809e-09, 5.446776969014956e-09, 3.0599861854411364e-09, 0.9999987512996888, 3.0717909065348153e-08, 1.7257409872868006e-08, 9.695222233098113e-09, 5.44676836578096e-09, 3.0599862397958672e-09, 1.7190943772021465e-09, 9.65783510056023e-10, 5.425749645979875e-10, 3.048173328571704e-10, 1.7124564463192674e-10, 0.9999999301191891, 5.488986691214702e-07, 3.0837266823585526e-07, 1.732438735045661e-07, 9.732825580563697e-08, 5.4678861218370965e-08, 3.071847709154611e-08, 1.7257573532936727e-08, 9.6952651117846e-09, 5.446776969018729e-09, 3.0599861854433107e-09, 0.999998751299689, 3.071790906536649e-08, 1.7257409872878555e-08, 9.69522223310421e-09, 5.446768365784481e-09, 3.0599862397979e-09, 1.719094377203319e-09, 9.65783510056699e-10, 5.425749645983769e-10, 3.0481733285739455e-10, 1.712456446320557e-10, 0.9999999301191892], + [2.0147937525814004, 2.737755315640912e-07, 1.4958652553381676e-07, 8.173149025115335e-08, 4.465662198559804e-08, 2.4399563077231005e-08, 1.333147135589698e-08, 7.284068779512253e-09, 3.979879730223678e-09, 2.1745321566848314e-09, 1.1881238324631312e-09, 0.999999397892227, 1.3331347936211698e-08, 7.284035270680719e-09, 3.979871549535395e-09, 2.1745307104341354e-09, 1.1881239448814875e-09, 6.49169033064365e-10, 3.546939291646548e-10, 1.937981687610142e-10, 1.0588771026173405e-10, 5.785507105318176e-11, 0.9999999706806867, 2.7377553156415004e-07, 1.4958652553384995e-07, 8.173149025117222e-08, 4.4656621985608665e-08, 2.4399563077236984e-08, 1.3331471355900341e-08, 7.284068779514142e-09, 3.979879730224738e-09, 2.174532156685426e-09, 1.1881238324634646e-09, 0.999999397892227, 1.3331347936214775e-08, 7.284035270682452e-09, 3.9798715495363565e-09, 2.174530710434684e-09, 1.1881239448817913e-09, 6.491690330645357e-10, 3.546939291647518e-10, 1.937981687610679e-10, 1.0588771026176452e-10, 5.7855071053198615e-11, 0.9999999706806867], + [2.1168167414618533, 1.273753694629238e-07, 6.749783792168087e-08, 3.57679309449887e-08, 1.895385427665667e-08, 1.0043871095369114e-08, 5.3223650243096555e-09, 2.8203833836785755e-09, 1.494554028395149e-09, 7.919815815256355e-10, 4.196802564232919e-10, 0.9999997295121834, 5.322342005344189e-09, 2.82037753016003e-09, 1.4945527081298295e-09, 7.919813821822664e-10, 4.196802912710294e-10, 2.22393508228409e-10, 1.1784891794645186e-10, 6.24495154245491e-11, 3.3092725412123995e-11, 1.7536220315155016e-11, 0.999999988697745, 1.27375369462934e-07, 6.749783792168639e-08, 3.576793094499174e-08, 1.8953854276658353e-08, 1.0043871095370043e-08, 5.322365024310148e-09, 2.820383383678836e-09, 1.4945540283952923e-09, 7.919815815257143e-10, 4.1968025642333515e-10, 0.9999997295121834, 5.322342005344587e-09, 2.8203775301602407e-09, 1.4945527081299463e-09, 7.91981382182331e-10, 4.196802912710637e-10, 2.2239350822842795e-10, 1.178489179464619e-10, 6.244951542455487e-11, 3.309272541212705e-11, 1.7536220315156635e-11, 0.9999999886977452], + [2.229042168234156, 5.489645553161288e-08, 2.8127200931511946e-08, 1.441147787875611e-08, 7.383978389768199e-09, 3.783312890278473e-09, 1.9384476431257963e-09, 9.93198091322313e-10, 5.088826801559233e-10, 2.607350761024723e-10, 1.3359224485386308e-10, 0.9999998875627218, 1.93844401351557e-09, 9.931972326675124e-10, 5.088825030031747e-10, 2.6073505432411787e-10, 1.3359225180638585e-10, 6.844836636434997e-11, 3.507073674152923e-11, 1.796911480646312e-11, 9.206795007983937e-12, 4.717264864327897e-12, 0.9999999960297368, 5.489645553161385e-08, 2.8127200931512445e-08, 1.4411477878756367e-08, 7.38397838976833e-09, 3.783312890278554e-09, 1.9384476431258377e-09, 9.93198091322334e-10, 5.088826801559324e-10, 2.6073507610247785e-10, 1.3359224485386642e-10, 0.999999887562722, 1.9384440135156045e-09, 9.931972326675335e-10, 5.088825030031856e-10, 2.607350543241234e-10, 1.335922518063887e-10, 6.844836636435166e-11, 3.5070736741530105e-11, 1.796911480646357e-11, 9.206795007984166e-12, 4.717264864328031e-12, 0.9999999960297365], + [2.3524902134428785, 2.17494600352685e-08, 1.0738573608355099e-08, 5.302059889877129e-09, 2.6178370868489822e-09, 1.2925298498525073e-09, 6.38173162203139e-10, 3.15091353656896e-10, 1.555730739504486e-10, 7.681258462396681e-11, 3.792541342923194e-11, 0.9999999570759647, 6.381726863917852e-10, 3.150912497192301e-10, 1.5557305456472443e-10, 7.681258283691559e-11, 3.792541444457744e-11, 1.8725278726500406e-11, 9.245411395242753e-12, 4.564825580058514e-12, 2.2538350777707917e-12, 1.1128075894327608e-12, 0.999999998740523, 2.174946003526865e-08, 1.0738573608355137e-08, 5.3020598898771665e-09, 2.6178370868489913e-09, 1.2925298498525166e-09, 6.381731622031434e-10, 3.1509135365689824e-10, 1.5557307395044916e-10, 7.681258462396735e-11, 3.7925413429232344e-11, 0.9999999570759648, 6.38172686391792e-10, 3.150912497192335e-10, 1.5557305456472665e-10, 7.681258283691668e-11, 3.792541444457812e-11, 1.8725278726500735e-11, 9.245411395242885e-12, 4.564825580058595e-12, 2.2538350777708236e-12, 1.1128075894327806e-12, 0.9999999987405229], + [2.488283101233744, 7.854938723833661e-09, 3.723476187856955e-09, 1.765039080553678e-09, 8.366812842850184e-10, 3.9661193155483103e-10, 1.8800590604626866e-10, 8.912041659535972e-11, 4.224574007325133e-11, 2.0025742932008486e-11, 9.492800436508344e-12, 0.999999985074362, 1.8800585513521978e-10, 8.912040641123771e-11, 4.224573838012766e-11, 2.0025742833742787e-11, 9.492800548192452e-12, 4.499871100287685e-12, 2.1330733465110914e-12, 1.011140495142869e-12, 4.79310803640699e-13, 2.2720764076427224e-13, 0.9999999996427588, 7.854938723833661e-09, 3.723476187856942e-09, 1.765039080553678e-09, 8.366812842850184e-10, 3.9661193155483103e-10, 1.88005906046268e-10, 8.912041659535972e-11, 4.224574007325133e-11, 2.0025742932008415e-11, 9.492800436508344e-12, 0.9999999850743622, 1.880058551352211e-10, 8.912040641123867e-11, 4.224573838012796e-11, 2.0025742833743e-11, 9.492800548192554e-12, 4.499871100287733e-12, 2.1330733465111144e-12, 1.011140495142876e-12, 4.793108036407041e-13, 2.2720764076427467e-13, 0.9999999996427588], + [2.637655295292132, 2.562161116354291e-09, 1.1613168200292026e-09, 5.263746726123199e-10, 2.385828635909354e-10, 1.0813928829444032e-10, 4.9014859937524303e-11, 2.221631499294366e-11, 1.0069694215815152e-11, 4.564156639283437e-12, 2.068734698309932e-12, 0.9999999953154914, 4.9014855580453185e-11, 2.2216314202138534e-11, 1.0069694100634084e-11, 4.5641566370518926e-12, 2.068734707565421e-12, 9.376679239528723e-13, 4.250042943126413e-13, 1.9263605533202235e-13, 8.731358788821059e-14, 3.957547103984868e-14, 0.9999999999103841, 2.562161116354291e-09, 1.1613168200292026e-09, 5.263746726123199e-10, 2.385828635909354e-10, 1.0813928829444032e-10, 4.9014859937524303e-11, 2.221631499294358e-11, 1.0069694215815152e-11, 4.564156639283437e-12, 2.0687346983099243e-12, 0.9999999953154914, 4.901485558045301e-11, 2.2216314202138456e-11, 1.0069694100634047e-11, 4.5641566370518764e-12, 2.0687347075654138e-12, 9.376679239528691e-13, 4.250042943126398e-13, 1.9263605533202167e-13, 8.731358788820997e-14, 3.95754710398484e-14, 0.9999999999103839], + [2.8019647160424554, 7.471647697192334e-10, 3.2236883385728894e-10, 1.390880142331176e-10, 6.001037816887601e-11, 2.589184626662481e-11, 1.1171196100992844e-11, 4.819881170448978e-12, 2.0795673340760667e-12, 8.972420986692378e-13, 3.8712061418404347e-13, 0.9999999986861212, 1.1171195809312744e-11, 4.819881122906992e-12, 2.079567328140631e-12, 8.972420988219037e-13, 3.8712061475505103e-13, 1.6702556695938994e-13, 7.206420672456427e-14, 3.109254460052796e-14, 1.341506933355118e-14, 5.788014057113761e-15, 0.9999999999803556, 7.471647697192308e-10, 3.2236883385728775e-10, 1.390880142331171e-10, 6.00103781688758e-11, 2.5891846266624716e-11, 1.1171196100992803e-11, 4.819881170448961e-12, 2.079567334076059e-12, 8.972420986692346e-13, 3.871206141840421e-13, 0.9999999986861212, 1.1171195809312744e-11, 4.819881122906975e-12, 2.079567328140631e-12, 8.972420988219037e-13, 3.8712061475504967e-13, 1.6702556695938936e-13, 7.206420672456427e-14, 3.109254460052785e-14, 1.341506933355118e-14, 5.788014057113761e-15, 0.9999999999803556], + [2.982705081594379, 1.9262263225953358e-10, 7.872190729465661e-11, 3.2172432699655456e-11, 1.314837839096905e-11, 5.373540007207054e-12, 2.1960831477149033e-12, 8.975054033052136e-13, 3.667966532949969e-13, 1.4990415029413338e-13, 6.126352046409724e-14, 0.9999999996742895, 2.1960831328108022e-12, 8.975054011485444e-13, 3.667966530707359e-13, 1.499041503122385e-13, 6.126352048982847e-14, 2.5037458498104743e-14, 1.0232424173249629e-14, 4.18183436893569e-15, 1.7090513834166414e-15, 6.984630125097874e-16, 0.9999999999962865, 1.926226322595329e-10, 7.872190729465634e-11, 3.2172432699655456e-11, 1.3148378390969002e-11, 5.3735400072070346e-12, 2.1960831477148957e-12, 8.975054033052104e-13, 3.6679665329499566e-13, 1.4990415029413283e-13, 6.126352046409724e-14, 0.9999999996742893, 2.19608313281081e-12, 8.975054011485444e-13, 3.667966530707359e-13, 1.499041503122385e-13, 6.126352048982847e-14, 2.5037458498104743e-14, 1.0232424173249629e-14, 4.18183436893569e-15, 1.7090513834166414e-15, 6.984630125097874e-16, 0.9999999999962864], + [3.1815194846085295, 4.3363799530887795e-11, 1.6695999443613888e-11, 6.428320402460155e-12, 2.4750421995773838e-12, 9.529447049333993e-13, 3.6690429390833025e-13, 1.4126607786334316e-13, 5.4390491161098084e-14, 2.0941513868612303e-14, 8.062935151845284e-15, 0.9999999999294924, 3.669042933424992e-13, 1.4126607779158164e-13, 5.4390491155125997e-14, 2.094151386952347e-14, 8.062935152672045e-15, 3.104404183903215e-15, 1.1952626623452627e-15, 4.602019412925358e-16, 1.7718768722635783e-16, 6.82210866308439e-17, 0.9999999999994033, 4.3363799530887647e-11, 1.669599944361383e-11, 6.4283204024601325e-12, 2.475042199577375e-12, 9.52944704933396e-13, 3.6690429390832894e-13, 1.4126607786334266e-13, 5.439049116109789e-14, 2.0941513868612303e-14, 8.062935151845284e-15, 0.9999999999294924, 3.6690429334249656e-13, 1.4126607779158116e-13, 5.439049115512561e-14, 2.094151386952332e-14, 8.062935152671988e-15, 3.1044041839031928e-15, 1.1952626623452542e-15, 4.602019412925325e-16, 1.7718768722635657e-16, 6.822108663084293e-17, 0.9999999999994033], + [3.4002153281893155, 8.409871163385593e-12, 3.0323610974555032e-12, 1.0933834354348865e-12, 3.9424306618083876e-13, 1.4215287171171425e-13, 5.125629508597875e-14, 1.8481566740791814e-14, 6.663928959772066e-15, 2.4028238408414156e-15, 8.663901498602944e-16, 0.9999999999868483, 5.1256295070484493e-14, 1.8481566739094314e-14, 6.663928959665623e-15, 2.4028238408687666e-15, 8.663901498787072e-16, 3.123957233297165e-16, 1.1264104049213477e-16, 4.0615165495555484e-17, 1.4644677117893386e-17, 5.280455348896617e-18, 0.9999999999999198, 8.409871163385682e-12, 3.0323610974555246e-12, 1.0933834354348983e-12, 3.9424306618084295e-13, 1.4215287171171576e-13, 5.1256295085979476e-14, 1.8481566740792012e-14, 6.6639289597721135e-15, 2.4028238408414325e-15, 8.663901498603067e-16, 0.9999999999868483, 5.125629507048504e-14, 1.8481566739094444e-14, 6.663928959665671e-15, 2.4028238408688005e-15, 8.663901498787195e-16, 3.1239572332972093e-16, 1.1264104049213559e-16, 4.0615165495555773e-17, 1.464467711789349e-17, 5.280455348896654e-18, 0.9999999999999198], + [3.640780756195503, 1.384259645108622e-12, 4.643722514343181e-13, 1.5578117057679283e-13, 5.2259309274257396e-14, 1.7531229196080335e-14, 5.8811339337129335e-15, 1.9729213484923806e-15, 6.6184832571551055e-16, 2.2202770859930393e-16, 7.448278022394913e-17, 0.9999999999979169, 5.88113393341674e-15, 1.9729213484648063e-15, 6.618483257143395e-16, 2.2202770859982137e-16, 7.448278022422486e-17, 2.4986451397938532e-17, 8.38210861063291e-18, 2.811913690402453e-18, 9.43301855125382e-19, 3.164458400412803e-19, 0.9999999999999912, 1.384259645108622e-12, 4.643722514343181e-13, 1.5578117057679227e-13, 5.2259309274257213e-14, 1.7531229196080335e-14, 5.881133933712892e-15, 1.9729213484923668e-15, 6.6184832571551055e-16, 2.2202770859930393e-16, 7.448278022394913e-17, 0.9999999999979169, 5.88113393341674e-15, 1.9729213484648063e-15, 6.618483257143442e-16, 2.2202770859982137e-16, 7.448278022422486e-17, 2.4986451397938532e-17, 8.38210861063291e-18, 2.811913690402453e-18, 9.433018551253887e-19, 3.164458400412803e-19, 0.9999999999999911], + [3.905402727016946, 1.9023419954510743e-13, 5.894678714738478e-14, 1.8265504958077958e-14, 5.659827914607837e-15, 1.7537786169331537e-15, 5.434333841269717e-16, 1.6839060536620777e-16, 5.21782371194416e-17, 1.6168172939171656e-17, 5.00993959593858e-18, 0.9999999999997242, 5.434333841231605e-16, 1.6839060536591224e-16, 5.217823711943493e-17, 1.6168172939177745e-17, 5.00993959594125e-18, 1.5524014277554954e-18, 4.810337822934254e-19, 1.490551964011474e-19, 4.6186884148257294e-20, 1.4311666542530015e-20, 0.9999999999999992, 1.9023419954510944e-13, 5.894678714738542e-14, 1.8265504958078154e-14, 5.659827914607917e-15, 1.7537786169331785e-15, 5.434333841269794e-16, 1.6839060536621016e-16, 5.2178237119441976e-17, 1.6168172939171887e-17, 5.009939595938615e-18, 0.9999999999997244, 5.434333841231567e-16, 1.6839060536591104e-16, 5.2178237119434555e-17, 1.616817293917763e-17, 5.009939595941214e-18, 1.5524014277554844e-18, 4.8103378229342205e-19, 1.4905519640114528e-19, 4.618688414825664e-20, 1.431166654252981e-20, 0.9999999999999991], + [4.1964868949232175, 2.1437134666528098e-14, 6.087141615691224e-15, 1.728462951129349e-15, 4.908024754550027e-16, 1.3936490206825573e-16, 3.957310099238701e-17, 1.1236906128536348e-17, 3.190754734278441e-18, 9.060248130457943e-19, 2.5726858696969106e-19, 0.9999999999999701, 3.9573100992355234e-17, 1.1236906128534351e-17, 3.190754734278441e-18, 9.060248130458393e-19, 2.5726858696970936e-19, 7.305222206761e-20, 2.074340754879544e-20, 5.890155625070422e-21, 1.6725281613417054e-21, 4.749196164825647e-22, 1.0, 2.143713466652825e-14, 6.087141615691267e-15, 1.7284629511293612e-15, 4.908024754550062e-16, 1.3936490206825671e-16, 3.957310099238701e-17, 1.1236906128536427e-17, 3.1907547342784637e-18, 9.060248130458008e-19, 2.572685869696929e-19, 0.9999999999999702, 3.9573100992354957e-17, 1.1236906128534271e-17, 3.1907547342784183e-18, 9.06024813045833e-19, 2.5726858696970753e-19, 7.305222206760947e-20, 2.0743407548795292e-20, 5.89015562507038e-21, 1.6725281613416936e-21, 4.749196164825613e-22, 0.9999999999999999], + [4.516679479620526, 1.941926065365129e-15, 5.00912649131543e-16, 1.292085659362072e-16, 3.332887189060962e-17, 8.597059285133548e-18, 2.2175796587020054e-18, 5.720164744231546e-19, 1.4754953479462e-19, 3.8059856999859024e-20, 9.817399403298801e-21, 0.9999999999999976, 2.2175796587018633e-18, 5.720164744231464e-19, 1.4754953479462105e-19, 3.8059856999859295e-20, 9.81739940329894e-21, 2.5323618805044386e-21, 6.532133847663429e-22, 1.6849397762728425e-22, 4.3462398595550924e-23, 1.1210965034353119e-23, 1.0, 1.941926065365129e-15, 5.00912649131543e-16, 1.292085659362072e-16, 3.332887189060962e-17, 8.597059285133548e-18, 2.2175796587020054e-18, 5.720164744231504e-19, 1.4754953479462e-19, 3.8059856999859024e-20, 9.817399403298801e-21, 0.9999999999999974, 2.2175796587018633e-18, 5.720164744231504e-19, 1.4754953479462105e-19, 3.8059856999859566e-20, 9.81739940329894e-21, 2.5323618805044566e-21, 6.5321338476634755e-22, 1.6849397762728545e-22, 4.3462398595551235e-23, 1.1210965034353119e-23, 1.0], + [4.868891322787615, 1.3835830771766896e-16, 3.211038044307516e-17, 7.452219886231978e-18, 1.7295211226539179e-18, 4.01389567051341e-19, 9.315502564688957e-20, 2.1619542498379597e-20, 5.017492235050961e-21, 1.164466284644256e-21, 2.7025088720629087e-22, 1.0, 9.315502564688824e-20, 2.1619542498379443e-20, 5.017492235050925e-21, 1.1644662846442477e-21, 2.7025088720629087e-22, 6.272018606197746e-23, 1.455618436747726e-23, 3.3782186668039536e-24, 7.840214902911788e-25, 1.819567523199862e-25, 0.9999999999999999, 1.3835830771767093e-16, 3.2110380443075387e-17, 7.452219886232085e-18, 1.7295211226539302e-18, 4.0138956705134385e-19, 9.315502564689023e-20, 2.161954249837975e-20, 5.0174922350509964e-21, 1.1644662846442643e-21, 2.7025088720629473e-22, 0.9999999999999998, 9.315502564688824e-20, 2.1619542498379443e-20, 5.017492235050925e-21, 1.1644662846442477e-21, 2.7025088720628894e-22, 6.272018606197746e-23, 1.455618436747726e-23, 3.3782186668039536e-24, 7.840214902911788e-25, 1.819567523199862e-25, 1.0], + [5.256324350271419, 7.569288297575047e-18, 1.563929777433237e-18, 3.23131614570151e-19, 6.676389300936497e-20, 1.379443300741534e-20, 2.8501391009265984e-21, 5.888819707387698e-22, 1.216719476422866e-22, 2.513926997033939e-23, 5.19415450223273e-24, 1.0, 2.8501391009265984e-21, 5.888819707387698e-22, 1.2167194764228745e-22, 2.513926997033939e-23, 5.19415450223273e-24, 1.0731911079715536e-24, 2.217375616636222e-25, 4.581434367776327e-26, 9.465938341147423e-27, 1.95580644587288e-27, 1.0, 7.569288297575101e-18, 1.563929777433248e-18, 3.2313161457015326e-19, 6.676389300936545e-20, 1.3794433007415534e-20, 2.8501391009266187e-21, 5.88881970738774e-22, 1.2167194764228832e-22, 2.5139269970339748e-23, 5.194154502232803e-24, 0.9999999999999999, 2.8501391009265984e-21, 5.888819707387698e-22, 1.216719476422866e-22, 2.513926997033939e-23, 5.19415450223273e-24, 1.0731911079715536e-24, 2.217375616636222e-25, 4.581434367776327e-26, 9.465938341147423e-27, 1.95580644587288e-27, 1.0], + [5.0, 5.175555005801869e-17, 1.1548224173015786e-17, 2.576757109154981e-18, 5.74952226429356e-19, 1.282891823608785e-19, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.0, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.583214286159632e-23, 3.532628572200807e-24, 7.882359790600851e-25, 1.7587922024243116e-25, 3.924395857947463e-26, 1.0, 5.175555005801832e-17, 1.1548224173015786e-17, 2.576757109154981e-18, 5.74952226429356e-19, 1.282891823608785e-19, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284654e-23, 1.0, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.583214286159632e-23, 3.532628572200807e-24, 7.882359790600851e-25, 1.7587922024243116e-25, 3.924395857947463e-26, 1.0], + [5.0, 5.175555005801869e-17, 1.1548224173015786e-17, 2.576757109154981e-18, 5.74952226429356e-19, 1.282891823608785e-19, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.0, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.583214286159632e-23, 3.532628572200807e-24, 7.882359790600851e-25, 1.7587922024243116e-25, 3.924395857947463e-26, 1.0, 5.175555005801832e-17, 1.1548224173015786e-17, 2.576757109154981e-18, 5.74952226429356e-19, 1.282891823608785e-19, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284654e-23, 1.0, 2.8625185805493937e-20, 6.387142293058423e-21, 1.4251640827409352e-21, 3.1799709001977496e-22, 7.095474162284704e-23, 1.583214286159632e-23, 3.532628572200807e-24, 7.882359790600851e-25, 1.7587922024243116e-25, 3.924395857947463e-26, 1.0], + [5.000490578689981, 5.156547367568322e-17, 1.150411917207491e-17, 2.5665381987504275e-18, 5.725878033004648e-19, 1.2774280649634334e-19, 2.8499078250535574e-20, 6.3580680854495315e-21, 1.4184679737300586e-21, 3.1645640868528086e-22, 7.060057784360258e-23, 1.0, 2.849907825053578e-20, 6.358068085449577e-21, 1.4184679737300688e-21, 3.164564086852831e-22, 7.060057784360309e-23, 1.5750799968180345e-23, 3.513961318945638e-24, 7.839553658221342e-25, 1.748983440107196e-25, 3.901935246736002e-26, 1.0, 5.156547367568322e-17, 1.150411917207491e-17, 2.5665381987504275e-18, 5.725878033004648e-19, 1.2774280649634334e-19, 2.8499078250535574e-20, 6.3580680854495315e-21, 1.4184679737300586e-21, 3.1645640868528086e-22, 7.060057784360258e-23, 1.0, 2.849907825053578e-20, 6.358068085449577e-21, 1.4184679737300688e-21, 3.164564086852831e-22, 7.060057784360309e-23, 1.5750799968180345e-23, 3.513961318945638e-24, 7.839553658221342e-25, 1.748983440107196e-25, 3.90193524673603e-26, 1.0], + [5.001030215248962, 5.135719582794519e-17, 1.1455798201274396e-17, 2.5553441988534584e-18, 5.699981668573443e-19, 1.271444803273506e-19, 2.836100152188346e-20, 6.326239292916087e-21, 1.411138586215118e-21, 3.147702793561718e-22, 7.021303912588147e-23, 1.0, 2.836100152188367e-20, 6.3262392929161324e-21, 1.411138586215128e-21, 3.1477027935617405e-22, 7.021303912588198e-23, 1.5661805407346938e-23, 3.493541252043341e-24, 7.7927353598731295e-25, 1.7382569721625274e-25, 3.877377020693294e-26, 1.0, 5.135719582794519e-17, 1.1455798201274396e-17, 2.5553441988534584e-18, 5.699981668573443e-19, 1.271444803273506e-19, 2.836100152188346e-20, 6.326239292916087e-21, 1.411138586215118e-21, 3.147702793561718e-22, 7.021303912588147e-23, 1.0, 2.836100152188367e-20, 6.3262392929161324e-21, 1.411138586215128e-21, 3.1477027935617405e-22, 7.021303912588198e-23, 1.5661805407346938e-23, 3.493541252043341e-24, 7.7927353598731295e-25, 1.7382569721625274e-25, 3.8773770206933216e-26, 1.0], + [5.00162381546384, 5.1129061712883846e-17, 1.140287952337619e-17, 2.543087181118135e-18, 5.671630922267681e-19, 1.2648955787775904e-19, 2.820988966206168e-20, 6.2914116239917134e-21, 1.4031199943234724e-21, 3.129259117242716e-22, 6.978920307930018e-23, 1.0, 2.8209889662061884e-20, 6.2914116239917134e-21, 1.4031199943234724e-21, 3.129259117242738e-22, 6.978920307930067e-23, 1.55644920537466e-23, 3.471216208270372e-24, 7.741558107357887e-25, 1.7265338237015562e-25, 3.85054145825287e-26, 1.0, 5.1129061712883846e-17, 1.140287952337619e-17, 2.543087181118135e-18, 5.67163092226764e-19, 1.2648955787775815e-19, 2.820988966206168e-20, 6.2914116239917134e-21, 1.4031199943234724e-21, 3.129259117242716e-22, 6.978920307930018e-23, 1.0, 2.8209889662061884e-20, 6.2914116239917134e-21, 1.4031199943234724e-21, 3.129259117242738e-22, 6.978920307930067e-23, 1.55644920537466e-23, 3.471216208270372e-24, 7.741558107357887e-25, 1.7265338237015562e-25, 3.85054145825287e-26, 1.0], + [5.002276775700206, 5.0879284485157843e-17, 1.1344951275591975e-17, 2.5296723558111525e-18, 5.640607942955913e-19, 1.2577303891963908e-19, 2.8044596396450316e-20, 6.2533226023291255e-21, 1.3943521602525018e-21, 3.1090958686133845e-22, 6.932593784972029e-23, 1.0, 2.8044596396450515e-20, 6.2533226023291255e-21, 1.3943521602525117e-21, 3.1090958686134066e-22, 6.932593784972128e-23, 1.545814558908021e-23, 3.4468234035460744e-24, 7.685651235957823e-25, 1.7137296578643822e-25, 3.821236808799802e-26, 1.0, 5.0879284485157843e-17, 1.1344951275591975e-17, 2.5296723558111525e-18, 5.640607942955873e-19, 1.2577303891963908e-19, 2.8044596396450316e-20, 6.2533226023291255e-21, 1.3943521602525018e-21, 3.1090958686133845e-22, 6.932593784972029e-23, 1.0, 2.8044596396450515e-20, 6.2533226023291255e-21, 1.3943521602525117e-21, 3.1090958686134066e-22, 6.932593784972128e-23, 1.545814558908021e-23, 3.4468234035460744e-24, 7.685651235957823e-25, 1.7137296578643822e-25, 3.821236808799802e-26, 1.0], + [5.002995031960208, 5.060593865809789e-17, 1.1281570043111105e-17, 2.514997765331536e-18, 5.606678623145151e-19, 1.249895551262614e-19, 2.786389222697613e-20, 6.211690962914812e-21, 1.3847708103536874e-21, 3.0870663216442217e-22, 6.88198971481491e-23, 1.0, 2.786389222697633e-20, 6.2116909629148566e-21, 1.3847708103536974e-21, 3.087066321644244e-22, 6.881989714814959e-23, 1.5342003539979953e-23, 3.420189253030357e-24, 7.624619884920011e-25, 1.6997547237483716e-25, 3.7892592214585043e-26, 1.0, 5.060593865809789e-17, 1.1281570043111105e-17, 2.514997765331518e-18, 5.606678623145151e-19, 1.249895551262614e-19, 2.786389222697613e-20, 6.211690962914812e-21, 1.3847708103536874e-21, 3.0870663216442217e-22, 6.88198971481491e-23, 1.0, 2.786389222697633e-20, 6.2116909629148566e-21, 1.3847708103536974e-21, 3.087066321644244e-22, 6.881989714814959e-23, 1.5342003539979953e-23, 3.420189253030357e-24, 7.624619884920011e-25, 1.6997547237483716e-25, 3.7892592214585043e-26, 1.0], + [5.00378511384621, 5.030695410057618e-17, 1.1212259589842283e-17, 2.498954018537395e-18, 5.569592049422073e-19, 1.2413335886484674e-19, 2.766646218670155e-20, 6.1662162123685945e-21, 1.3743073516625187e-21, 3.0630140620842023e-22, 6.82675176930102e-23, 1.0, 2.766646218670155e-20, 6.1662162123685945e-21, 1.3743073516625284e-21, 3.0630140620842023e-22, 6.826751769301068e-23, 1.521525490090098e-23, 3.3911293324071054e-24, 7.558045017327299e-25, 1.6845138856263436e-25, 3.7543928679475096e-26, 1.0, 5.030695410057618e-17, 1.1212259589842283e-17, 2.498954018537395e-18, 5.569592049422073e-19, 1.2413335886484674e-19, 2.766646218670155e-20, 6.1662162123685945e-21, 1.3743073516625187e-21, 3.0630140620842023e-22, 6.82675176930102e-23, 1.0, 2.766646218670155e-20, 6.1662162123685945e-21, 1.3743073516625284e-21, 3.0630140620842023e-22, 6.826751769301068e-23, 1.521525490090098e-23, 3.3911293324071054e-24, 7.558045017327299e-25, 1.6845138856263436e-25, 3.7543928679475096e-26, 1.0], + [5.004654203920813, 4.998011090973687e-17, 1.1136509814613723e-17, 2.481424082370863e-18, 5.529080096970769e-19, 1.2319831557977648e-19, 2.745090448230206e-20, 6.116578407344518e-21, 1.3628888416887414e-21, 3.036772965371156e-22, 6.766501978094059e-23, 1.0, 2.7450904482302256e-20, 6.116578407344561e-21, 1.3628888416887512e-21, 3.0367729653711777e-22, 6.766501978094107e-23, 1.5077040510321744e-23, 3.3594485198674316e-24, 7.485483871926479e-25, 1.6679067550968795e-25, 3.7164103100015677e-26, 1.0, 4.998011090973687e-17, 1.1136509814613723e-17, 2.4814240823708458e-18, 5.529080096970769e-19, 1.2319831557977648e-19, 2.745090448230206e-20, 6.116578407344518e-21, 1.3628888416887414e-21, 3.036772965371156e-22, 6.766501978094059e-23, 1.0, 2.7450904482302256e-20, 6.116578407344561e-21, 1.3628888416887512e-21, 3.0367729653711777e-22, 6.766501978094107e-23, 1.5077040510321744e-23, 3.3594485198674316e-24, 7.485483871926479e-25, 1.6679067550968795e-25, 3.7164103100015677e-26, 1.0], + [5.005610203002877, 4.962303550244329e-17, 1.1053776015722896e-17, 2.462283150730582e-18, 5.484857215984741e-19, 1.2217790090800077e-19, 2.7215730296098704e-20, 6.0624382154652476e-21, 1.3504380267025814e-21, 3.00816733985374e-22, 6.700841183107189e-23, 1.0, 2.72157302960989e-20, 6.0624382154652476e-21, 1.350438026702591e-21, 3.00816733985374e-22, 6.700841183107236e-23, 1.49264543785017e-23, 3.3249413652000685e-24, 7.406470955313452e-25, 1.6498279514352087e-25, 3.6750731701501455e-26, 1.0, 4.962303550244329e-17, 1.1053776015722896e-17, 2.462283150730582e-18, 5.484857215984741e-19, 1.2217790090800077e-19, 2.7215730296098704e-20, 6.0624382154652476e-21, 1.3504380267025814e-21, 3.00816733985374e-22, 6.700841183107189e-23, 1.0, 2.72157302960989e-20, 6.0624382154652476e-21, 1.350438026702591e-21, 3.00816733985374e-22, 6.700841183107236e-23, 1.49264543785017e-23, 3.3249413652000685e-24, 7.406470955313452e-25, 1.6498279514352087e-25, 3.6750731701501455e-26, 1.0], + [5.006661801993146, 4.9233198339410747e-17, 1.0963478563526376e-17, 2.4413986144931374e-18, 5.436620467046192e-19, 1.2106520388454427e-19, 2.6959365069619343e-20, 6.003437334893914e-21, 1.3368734664531466e-21, 2.977012277480588e-22, 6.629349989108163e-23, 1.0, 2.6959365069619535e-20, 6.003437334893914e-21, 1.3368734664531562e-21, 2.9770122774806093e-22, 6.62934998910821e-23, 1.476254619792218e-23, 3.2873927399193364e-24, 7.320519700047077e-25, 1.630167519323898e-25, 3.630133173525291e-26, 1.0, 4.9233198339410747e-17, 1.0963478563526376e-17, 2.4413986144931374e-18, 5.436620467046192e-19, 1.2106520388454427e-19, 2.6959365069619343e-20, 6.003437334893914e-21, 1.3368734664531466e-21, 2.977012277480588e-22, 6.629349989108163e-23, 1.0, 2.6959365069619535e-20, 6.003437334893914e-21, 1.3368734664531562e-21, 2.9770122774806093e-22, 6.62934998910821e-23, 1.476254619792218e-23, 3.2873927399193364e-24, 7.320519700047077e-25, 1.630167519323898e-25, 3.630133173525291e-26, 1.0], + [5.007818560882443, 4.880791377708099e-17, 1.0865003099799894e-17, 2.4186301610394395e-18, 5.384049872933257e-19, 1.1985293783723606e-19, 2.6680151646497467e-20, 5.9391993615274076e-21, 1.3221097662163607e-21, 2.94311426090121e-22, 6.551590324840419e-23, 1.0, 2.6680151646497467e-20, 5.93919936152745e-21, 1.32210976621637e-21, 2.9431142609012307e-22, 6.551590324840465e-23, 1.4584325302884793e-23, 3.2465788303933135e-24, 7.227124932459553e-25, 1.6088115372529303e-25, 3.581333637631293e-26, 1.0, 4.880791377708099e-17, 1.0865003099799894e-17, 2.4186301610394395e-18, 5.384049872933257e-19, 1.1985293783723606e-19, 2.6680151646497467e-20, 5.9391993615274076e-21, 1.3221097662163607e-21, 2.94311426090121e-22, 6.551590324840419e-23, 1.0, 2.6680151646497467e-20, 5.93919936152745e-21, 1.32210976621637e-21, 2.9431142609012307e-22, 6.551590324840465e-23, 1.4584325302884793e-23, 3.2465788303933135e-24, 7.227124932459553e-25, 1.6088115372529303e-25, 3.581333637631293e-26, 1.0], + [5.009090995660669, 4.83443426334427e-17, 1.0757701403896977e-17, 2.393830036595671e-18, 5.326809165786798e-19, 1.1853346083443387e-19, 2.637635571334173e-20, 5.869331206725688e-21, 1.3060579402490659e-21, 2.9062720831514233e-22, 6.467107745384282e-23, 1.0, 2.6376355713341917e-20, 5.869331206725688e-21, 1.3060579402490751e-21, 2.906272083151444e-22, 6.467107745384327e-23, 1.4390766381741506e-23, 3.202268544260288e-24, 7.125766312605425e-25, 1.5856429540512467e-25, 3.5284114962970835e-26, 1.0, 4.83443426334427e-17, 1.0757701403896977e-17, 2.393830036595671e-18, 5.326809165786798e-19, 1.1853346083443387e-19, 2.637635571334173e-20, 5.869331206725688e-21, 1.3060579402490659e-21, 2.9062720831514233e-22, 6.467107745384282e-23, 1.0, 2.6376355713341917e-20, 5.869331206725688e-21, 1.3060579402490751e-21, 2.906272083151444e-22, 6.467107745384327e-23, 1.4390766381741506e-23, 3.202268544260288e-24, 7.125766312605425e-25, 1.5856429540512467e-25, 3.5284114962970835e-26, 1.0], + [5.010490673916718, 4.783949815505524e-17, 1.0640893089163272e-17, 2.3668435101056282e-18, 5.26454702099599e-19, 1.1709880783390218e-19, 2.6046174042010706e-20, 5.793425183192236e-21, 1.288625934047354e-21, 2.866278143570384e-22, 6.375434623223549e-23, 1.0, 2.6046174042010893e-20, 5.793425183192277e-21, 1.288625934047363e-21, 2.8662781435704045e-22, 6.375434623223595e-23, 1.4180817282570816e-23, 3.1542254087138558e-24, 7.0159129271091135e-25, 1.5605426950398972e-25, 3.471099952840861e-26, 1.0, 4.783949815505524e-17, 1.0640893089163272e-17, 2.3668435101056282e-18, 5.26454702099599e-19, 1.1709880783390136e-19, 2.6046174042010706e-20, 5.793425183192236e-21, 1.288625934047354e-21, 2.866278143570384e-22, 6.375434623223549e-23, 1.0, 2.6046174042010893e-20, 5.793425183192277e-21, 1.288625934047363e-21, 2.8662781435704045e-22, 6.375434623223595e-23, 1.4180817282570816e-23, 3.1542254087138558e-24, 7.0159129271091135e-25, 1.5605426950398972e-25, 3.471099952840861e-26, 1.0], + [5.012030319998371, 4.7290256182410876e-17, 1.0513868318318565e-17, 2.337509583127562e-18, 5.196898882301175e-19, 1.1554073697840125e-19, 2.5687746103693295e-20, 5.7110618916267294e-21, 1.2697193361507648e-21, 2.82292019100486e-22, 6.276094391805532e-23, 1.0, 2.5687746103693475e-20, 5.7110618916267294e-21, 1.2697193361507738e-21, 2.82292019100486e-22, 6.276094391805576e-23, 1.3953409288851311e-23, 3.1022100470064894e-24, 6.897029232445164e-25, 1.5333910828863987e-25, 3.4091318650855083e-26, 1.0, 4.7290256182410876e-17, 1.0513868318318565e-17, 2.337509583127562e-18, 5.196898882301175e-19, 1.1554073697840125e-19, 2.5687746103693295e-20, 5.7110618916267294e-21, 1.2697193361507648e-21, 2.82292019100486e-22, 6.276094391805532e-23, 1.0, 2.5687746103693475e-20, 5.7110618916267294e-21, 1.2697193361507738e-21, 2.82292019100486e-22, 6.276094391805576e-23, 1.3953409288851311e-23, 3.1022100470064894e-24, 6.897029232445164e-25, 1.5333910828863987e-25, 3.4091318650855083e-26, 1.0], + [5.01372393068819, 4.6693370427554985e-17, 1.0375891753056683e-17, 2.305661996239544e-18, 5.1234894960592e-19, 1.1385079278334045e-19, 2.5299169691603605e-20, 5.62181405537139e-21, 1.2492423134210694e-21, 2.7759835922544388e-22, 6.168607020172547e-23, 1.0, 2.5299169691603782e-20, 5.62181405537139e-21, 1.2492423134210782e-21, 2.7759835922544388e-22, 6.168607020172591e-23, 1.370747027305722e-23, 3.045983326094447e-24, 6.768582559746103e-25, 1.5040696209864574e-25, 3.3422439702932254e-26, 1.0, 4.6693370427554985e-17, 1.0375891753056683e-17, 2.305661996239544e-18, 5.1234894960592e-19, 1.1385079278334045e-19, 2.5299169691603605e-20, 5.62181405537139e-21, 1.2492423134210694e-21, 2.7759835922544388e-22, 6.168607020172547e-23, 1.0, 2.5299169691603782e-20, 5.62181405537139e-21, 1.2492423134210782e-21, 2.7759835922544388e-22, 6.168607020172591e-23, 1.370747027305722e-23, 3.045983326094447e-24, 6.768582559746103e-25, 1.5040696209864574e-25, 3.3422439702932254e-26, 1.0], + [5.015586902446991, 4.6045493898220026e-17, 1.0226207980021324e-17, 2.2711305884091103e-18, 5.043936285751856e-19, 1.1202038924827057e-19, 2.4878521250915515e-20, 5.525251463467897e-21, 1.2270988065028467e-21, 2.725254209471981e-22, 6.052495908957208e-23, 1.0, 2.4878521250915515e-20, 5.525251463467936e-21, 1.2270988065028556e-21, 2.7252542094720005e-22, 6.052495908957294e-23, 1.3441941159332016e-23, 2.9853102728006987e-24, 6.630052400357524e-25, 1.472463188566571e-25, 3.270182060049377e-26, 1.0, 4.6045493898220026e-17, 1.0226207980021324e-17, 2.2711305884091103e-18, 5.043936285751856e-19, 1.1202038924827057e-19, 2.4878521250915515e-20, 5.525251463467897e-21, 1.2270988065028467e-21, 2.725254209471981e-22, 6.052495908957208e-23, 1.0, 2.4878521250915515e-20, 5.525251463467936e-21, 1.2270988065028556e-21, 2.7252542094720005e-22, 6.052495908957294e-23, 1.3441941159332016e-23, 2.9853102728006987e-24, 6.630052400357524e-25, 1.472463188566571e-25, 3.270182060049377e-26, 1.0], + [5.017636171381672, 4.534320762152146e-17, 1.0064048681272786e-17, 2.23374307138684e-18, 4.957853709763339e-19, 1.1004091617463055e-19, 2.442388166618575e-20, 5.4209471929258174e-21, 1.203194024198676e-21, 2.670521974013287e-22, 5.927296404615588e-23, 1.0, 2.4423881666185924e-20, 5.420947192925856e-21, 1.2031940241986845e-21, 2.670521974013287e-22, 5.92729640461563e-23, 1.315579613650263e-23, 2.919964857003654e-24, 6.480941691152563e-25, 1.4384626959935557e-25, 3.1927072119624085e-26, 1.0, 4.534320762152146e-17, 1.0064048681272786e-17, 2.23374307138684e-18, 4.957853709763339e-19, 1.1004091617462978e-19, 2.442388166618575e-20, 5.4209471929258174e-21, 1.203194024198676e-21, 2.670521974013287e-22, 5.927296404615588e-23, 1.0, 2.4423881666185924e-20, 5.420947192925856e-21, 1.2031940241986845e-21, 2.670521974013287e-22, 5.92729640461563e-23, 1.315579613650263e-23, 2.919964857003654e-24, 6.480941691152563e-25, 1.4384626959935557e-25, 3.1927072119624085e-26, 1.0], + [5.019890367209821, 4.4583057930056237e-17, 9.88864184043782e-18, 2.1933272859359795e-18, 4.864858754979774e-19, 1.0790387215651497e-19, 2.3933368290397606e-20, 5.3084852867276916e-21, 1.1774362763101166e-21, 2.6115852449232926e-22, 5.792566127548659e-23, 1.0, 2.3933368290397606e-20, 5.308485286727729e-21, 1.1774362763101251e-21, 2.6115852449232926e-22, 5.7925661275487e-23, 1.2848067053239095e-23, 2.849735736627398e-24, 6.320790306401675e-25, 1.4019682451252197e-25, 3.1096031746992474e-26, 1.0, 4.4583057930056237e-17, 9.88864184043782e-18, 2.1933272859359795e-18, 4.864858754979774e-19, 1.0790387215651497e-19, 2.3933368290397606e-20, 5.3084852867276916e-21, 1.1774362763101166e-21, 2.6115852449232926e-22, 5.792566127548659e-23, 1.0, 2.3933368290397606e-20, 5.308485286727729e-21, 1.1774362763101251e-21, 2.6115852449232926e-22, 5.7925661275487e-23, 1.2848067053239095e-23, 2.849735736627398e-24, 6.320790306401675e-25, 1.4019682451252197e-25, 3.1096031746992474e-26, 1.0], + [5.022369982620784, 4.3761603663735523e-17, 9.699223293329407e-18, 2.149714009951209e-18, 4.764577724237703e-19, 1.0560102778888959e-19, 2.340517400595857e-20, 5.187470062737756e-21, 1.1497391835219706e-21, 2.548256036446614e-22, 5.647897297363459e-23, 1.0, 2.3405174005958735e-20, 5.187470062737793e-21, 1.1497391835219706e-21, 2.5482560364466323e-22, 5.647897297363499e-23, 1.2517872390109884e-23, 2.7744330487068555e-24, 6.149190934266507e-25, 1.3628928318774646e-25, 3.020684982852224e-26, 1.0, 4.3761603663735523e-17, 9.699223293329407e-18, 2.149714009951209e-18, 4.764577724237703e-19, 1.0560102778888959e-19, 2.340517400595857e-20, 5.187470062737756e-21, 1.1497391835219625e-21, 2.548256036446614e-22, 5.647897297363459e-23, 1.0, 2.3405174005958735e-20, 5.187470062737793e-21, 1.1497391835219706e-21, 2.5482560364466323e-22, 5.647897297363499e-23, 1.2517872390109884e-23, 2.7744330487068555e-24, 6.149190934266507e-25, 1.3628928318774646e-25, 3.020684982852224e-26, 1.0], + [5.025097559572845, 4.287547469792266e-17, 9.495050940435428e-18, 2.1027403893870315e-18, 4.656654474943513e-19, 1.0312462255662793e-19, 2.283761407394517e-20, 5.0575372172059164e-21, 1.1200242994124771e-21, 2.480366188916441e-22, 5.492931210820202e-23, 1.0, 2.283761407394517e-20, 5.0575372172059164e-21, 1.1200242994124771e-21, 2.480366188916441e-22, 5.492931210820241e-23, 1.2164451128881103e-23, 2.693896311234531e-24, 5.965807465371826e-25, 1.3211666152650193e-25, 2.925808845529074e-26, 1.0, 4.287547469792266e-17, 9.495050940435428e-18, 2.1027403893870315e-18, 4.656654474943513e-19, 1.0312462255662793e-19, 2.283761407394517e-20, 5.0575372172059164e-21, 1.1200242994124771e-21, 2.480366188916441e-22, 5.492931210820202e-23, 1.0, 2.283761407394517e-20, 5.0575372172059164e-21, 1.1200242994124771e-21, 2.480366188916441e-22, 5.492931210820241e-23, 1.2164451128881103e-23, 2.693896311234531e-24, 5.965807465371869e-25, 1.3211666152650193e-25, 2.925808845529074e-26, 1.0], + [5.028097894220111, 4.1921443214290634e-17, 9.275421933821674e-18, 2.0522540603061004e-18, 4.540760256614595e-19, 1.0046759856318899e-19, 2.222918143795484e-20, 4.918366861239641e-21, 1.08822417277305e-21, 2.407774539024735e-22, 5.327374980104233e-23, 1.0, 2.2229181437955e-20, 4.918366861239676e-21, 1.08822417277305e-21, 2.407774539024752e-22, 5.327374980104271e-23, 1.1787201716210703e-23, 2.6080034692043043e-24, 5.770395942259493e-25, 1.2767417575791727e-25, 2.824883304122257e-26, 1.0, 4.1921443214290634e-17, 9.275421933821674e-18, 2.0522540603061004e-18, 4.540760256614595e-19, 1.0046759856318899e-19, 2.222918143795484e-20, 4.918366861239676e-21, 1.08822417277305e-21, 2.407774539024735e-22, 5.327374980104233e-23, 1.0, 2.2229181437955e-20, 4.918366861239676e-21, 1.08822417277305e-21, 2.407774539024752e-22, 5.327374980104271e-23, 1.1787201716210787e-23, 2.6080034692043043e-24, 5.770395942259493e-25, 1.2767417575791727e-25, 2.824883304122257e-26, 1.0], + [5.031398262332105, 4.0896509062138655e-17, 9.03969312702548e-18, 1.9981180229009744e-18, 4.416605273364405e-19, 9.762387365081656e-20, 2.1578610984473623e-20, 4.769698585048422e-21, 1.054285867083026e-21, 2.3303751163968275e-22, 5.151020565368025e-23, 1.0, 2.1578610984473623e-20, 4.769698585048456e-21, 1.054285867083026e-21, 2.330375116396844e-22, 5.1510205653680615e-23, 1.1385726134026548e-23, 2.5166810723030593e-24, 5.5628280051107575e-25, 1.229597812571713e-25, 2.7178815870130933e-26, 1.0, 4.0896509062138655e-17, 9.03969312702548e-18, 1.9981180229009744e-18, 4.416605273364405e-19, 9.762387365081656e-20, 2.1578610984473623e-20, 4.769698585048422e-21, 1.054285867083026e-21, 2.3303751163968275e-22, 5.151020565368025e-23, 1.0, 2.1578610984473623e-20, 4.769698585048456e-21, 1.054285867083026e-21, 2.330375116396844e-22, 5.1510205653680615e-23, 1.1385726134026629e-23, 2.5166810723030593e-24, 5.5628280051107575e-25, 1.229597812571713e-25, 2.7178815870130933e-26, 1.0], + [5.035028667255297, 3.9798000386304e-17, 8.787305026560535e-18, 1.9402163143952504e-18, 4.283952059553083e-19, 9.458865546272459e-20, 2.0884953001036775e-20, 4.611348577921184e-21, 1.0181749370487097e-21, 2.2481063509223666e-22, 4.9637660299387825e-23, 1.0, 2.0884953001036775e-20, 4.611348577921217e-21, 1.0181749370487097e-21, 2.2481063509223666e-22, 4.9637660299387825e-23, 1.0959878828626312e-23, 2.419915507976766e-24, 5.343116614073356e-25, 1.1797476010001683e-25, 2.6048549986720055e-26, 1.0, 3.9798000386304e-17, 8.787305026560535e-18, 1.9402163143952504e-18, 4.283952059553083e-19, 9.458865546272459e-20, 2.0884953001036775e-20, 4.611348577921184e-21, 1.0181749370487097e-21, 2.2481063509223666e-22, 4.9637660299387825e-23, 1.0, 2.0884953001036775e-20, 4.611348577921217e-21, 1.0181749370487097e-21, 2.2481063509223666e-22, 4.9637660299387825e-23, 1.0959878828626312e-23, 2.419915507976766e-24, 5.343116614073356e-25, 1.1797476010001683e-25, 2.6048549986720055e-26, 1.0], + [5.039022112670808, 3.862369038919574e-17, 8.517809399612261e-18, 1.878460505379824e-18, 4.142630698489771e-19, 9.135879649809206e-20, 2.014765569284874e-20, 4.4432287363380556e-21, 9.798798383490099e-22, 2.1609612166719565e-22, 4.7656388030478644e-23, 1.0, 2.0147655692848883e-20, 4.4432287363380556e-21, 9.798798383490168e-22, 2.1609612166719565e-22, 4.7656388030478985e-23, 1.0509819901392205e-23, 2.317765129179688e-24, 5.11144362552751e-25, 1.1272434643191195e-25, 2.485947064943014e-26, 1.0, 3.862369038919574e-17, 8.517809399612261e-18, 1.878460505379824e-18, 4.142630698489771e-19, 9.135879649809206e-20, 2.014765569284874e-20, 4.4432287363380556e-21, 9.798798383490099e-22, 2.1609612166719565e-22, 4.7656388030478644e-23, 1.0, 2.0147655692848883e-20, 4.4432287363380556e-21, 9.798798383490168e-22, 2.1609612166719565e-22, 4.7656388030478985e-23, 1.0509819901392205e-23, 2.317765129179688e-24, 5.11144362552751e-25, 1.1272434643191195e-25, 2.485947064943014e-26, 1.0], + [5.0434149026278705, 3.737193060971847e-17, 8.230900565222527e-18, 1.812797011267125e-18, 3.9925558303354375e-19, 8.793318810252926e-20, 1.9366656093135114e-20, 4.2653675628414584e-21, 9.39416714927323e-22, 2.0689981608453599e-22, 4.5568205478573235e-23, 1.0, 1.9366656093135114e-20, 4.2653675628414885e-21, 9.394167149273296e-22, 2.0689981608453599e-22, 4.5568205478573565e-23, 1.0036071514384973e-23, 2.210373008636689e-24, 4.868188544000207e-25, 1.07218372678882e-25, 2.3614080136800767e-26, 1.0, 3.737193060971847e-17, 8.230900565222527e-18, 1.812797011267125e-18, 3.9925558303354375e-19, 8.793318810252926e-20, 1.9366656093135114e-20, 4.2653675628414584e-21, 9.39416714927323e-22, 2.0689981608453599e-22, 4.5568205478573235e-23, 1.0, 1.9366656093135114e-20, 4.2653675628414885e-21, 9.394167149273296e-22, 2.0689981608453599e-22, 4.5568205478573565e-23, 1.0036071514384973e-23, 2.210373008636689e-24, 4.868188544000207e-25, 1.07218372678882e-25, 2.3614080136800767e-26, 1.0], + [5.04824697158064, 3.604180039786401e-17, 7.926450215892027e-18, 1.743215164932155e-18, 3.8337452812822084e-19, 8.431318851179006e-20, 1.8542478008990377e-20, 4.077932489361556e-21, 8.968344673094811e-22, 1.9723525680048686e-22, 4.3376729979903234e-23, 1.0, 1.854247800899051e-20, 4.077932489361585e-21, 8.968344673094811e-22, 1.9723525680048686e-22, 4.3376729979903546e-23, 9.53957590682042e-24, 2.097979919743849e-24, 4.61395746167447e-25, 1.0147191237531353e-25, 2.23160900086984e-26, 1.0, 3.604180039786401e-17, 7.926450215892027e-18, 1.743215164932155e-18, 3.8337452812822084e-19, 8.431318851178947e-20, 1.8542478008990377e-20, 4.077932489361556e-21, 8.968344673094811e-22, 1.9723525680048686e-22, 4.3376729979903234e-23, 1.0, 1.854247800899051e-20, 4.077932489361585e-21, 8.968344673094811e-22, 1.9723525680048686e-22, 4.3376729979903546e-23, 9.53957590682042e-24, 2.097979919743849e-24, 4.61395746167447e-25, 1.0147191237531353e-25, 2.23160900086984e-26, 1.0], + [5.053562247428685, 3.463327129610524e-17, 7.604545373287923e-18, 1.669755936133531e-18, 3.6663399971899965e-19, 8.050307643236418e-20, 1.7676334764484812e-20, 3.881253047126045e-21, 8.522199549021869e-22, 1.8712483899272663e-22, 4.108763842788952e-23, 1.0, 1.7676334764484936e-20, 3.881253047126072e-21, 8.52219954902193e-22, 1.8712483899272663e-22, 4.108763842788981e-23, 9.021752754302308e-24, 1.980936989177585e-24, 4.349610837229627e-25, 9.550588705600423e-26, 2.097055300736682e-26, 1.0, 3.463327129610524e-17, 7.604545373287923e-18, 1.669755936133531e-18, 3.6663399971899965e-19, 8.050307643236418e-20, 1.7676334764484812e-20, 3.881253047126045e-21, 8.522199549021869e-22, 1.8712483899272663e-22, 4.108763842788952e-23, 1.0, 1.7676334764484936e-20, 3.881253047126072e-21, 8.52219954902193e-22, 1.8712483899272663e-22, 4.108763842788981e-23, 9.021752754302308e-24, 1.980936989177585e-24, 4.349610837229627e-25, 9.550588705600423e-26, 2.097055300736682e-26, 1.0], + [5.059409050861536, 3.314738376599454e-17, 7.265528767035702e-18, 1.5925211062593047e-18, 3.490624777907368e-19, 7.651051714323032e-20, 1.6770233428051044e-20, 3.6758440503653684e-21, 8.057031251577968e-22, 1.7660094307442684e-22, 3.870891414088577e-23, 1.0, 1.6770233428051164e-20, 3.675844050365395e-21, 8.057031251578026e-22, 1.7660094307442684e-22, 3.870891414088605e-23, 8.484552844856608e-24, 1.8597172918660578e-24, 4.0762883665250777e-25, 8.934759557134035e-26, 1.958397472548066e-26, 1.0, 3.314738376599454e-17, 7.265528767035702e-18, 1.5925211062593047e-18, 3.490624777907368e-19, 7.651051714323032e-20, 1.6770233428051044e-20, 3.6758440503653684e-21, 8.057031251577968e-22, 1.7660094307442684e-22, 3.870891414088577e-23, 1.0, 1.6770233428051164e-20, 3.675844050365395e-21, 8.057031251578026e-22, 1.7660094307442684e-22, 3.870891414088605e-23, 8.484552844856608e-24, 1.8597172918660578e-24, 4.0762883665250777e-25, 8.934759557134035e-26, 1.958397472548066e-26, 1.0], + [5.065840534637672, 3.15864320887727e-17, 6.910040533760147e-18, 1.5116826124588055e-18, 3.307049082629303e-19, 7.234702274659697e-20, 1.5827075950548758e-20, 3.46242766646844e-21, 7.574617941421089e-22, 1.657069619508276e-22, 3.6251065666054465e-23, 1.0, 1.5827075950548872e-20, 3.46242766646844e-21, 7.574617941421089e-22, 1.6570696195082877e-22, 3.6251065666054724e-23, 7.930504225372098e-24, 1.734925473585104e-24, 3.7954287815201925e-25, 8.30311149090712e-26, 1.8164393115768073e-26, 1.0, 3.15864320887727e-17, 6.910040533760147e-18, 1.5116826124588055e-18, 3.307049082629303e-19, 7.234702274659697e-20, 1.5827075950548758e-20, 3.46242766646844e-21, 7.574617941421089e-22, 1.657069619508276e-22, 3.6251065666054724e-23, 1.0, 1.5827075950548872e-20, 3.46242766646844e-21, 7.574617941421089e-22, 1.6570696195082877e-22, 3.6251065666054724e-23, 7.930504225372098e-24, 1.734925473585104e-24, 3.7954287815201925e-25, 8.30311149090712e-26, 1.8164393115768202e-26, 1.0], + [5.07291516679142, 2.995415130962721e-17, 6.539059664335399e-18, 1.4274916639015379e-18, 3.11624691486199e-19, 6.802838209118091e-20, 1.4850751228577335e-20, 3.2419529213187375e-21, 7.077257293100504e-22, 1.5449814358306714e-22, 3.372729771162057e-23, 1.0, 1.4850751228577335e-20, 3.2419529213187375e-21, 7.077257293100554e-22, 1.5449814358306822e-22, 3.372729771162081e-23, 7.362746144044766e-24, 1.6073043042214407e-24, 3.5087820166913285e-25, 7.659751304293277e-26, 1.6721412092435604e-26, 1.0, 2.995415130962721e-17, 6.539059664335399e-18, 1.4274916639015379e-18, 3.11624691486199e-19, 6.802838209118091e-20, 1.4850751228577335e-20, 3.2419529213187375e-21, 7.077257293100504e-22, 1.5449814358306714e-22, 3.372729771162081e-23, 1.0, 1.4850751228577335e-20, 3.2419529213187375e-21, 7.077257293100554e-22, 1.5449814358306822e-22, 3.372729771162081e-23, 7.362746144044766e-24, 1.6073043042214407e-24, 3.5087820166913285e-25, 7.659751304293277e-26, 1.6721412092435604e-26, 1.0], + [5.080697262160544, 2.825589780578262e-17, 6.1539430889372e-18, 1.34028710756901e-18, 2.9190545066056827e-19, 6.357502929346215e-20, 1.3846210615520208e-20, 3.0156108544500514e-21, 6.567796112593924e-22, 1.430421491982265e-22, 3.1153610886325974e-23, 1.0, 1.3846210615520208e-20, 3.0156108544500514e-21, 6.567796112593878e-22, 1.430421491982265e-22, 3.11536108863262e-23, 6.78504536387835e-24, 1.477736906898756e-24, 3.218410856375602e-25, 7.009480775691287e-26, 1.5266174188871716e-26, 1.0, 2.825589780578242e-17, 6.153943088937157e-18, 1.3402871075690005e-18, 2.919054506605662e-19, 6.35750292934617e-20, 1.3846210615520208e-20, 3.0156108544500514e-21, 6.567796112593878e-22, 1.430421491982255e-22, 3.1153610886325974e-23, 1.0, 1.3846210615520208e-20, 3.0156108544500514e-21, 6.567796112593878e-22, 1.430421491982265e-22, 3.11536108863262e-23, 6.78504536387835e-24, 1.477736906898756e-24, 3.218410856375602e-25, 7.009480775691287e-26, 1.5266174188871716e-26, 1.0], + [5.08925756706658, 2.6498812505991553e-17, 5.756459702579745e-18, 1.250502387604418e-18, 2.7165242218295515e-19, 5.90123131385901e-20, 1.2819517948643923e-20, 2.7848432250004017e-21, 6.049643846905349e-22, 1.3141921364135125e-22, 2.854880411339564e-23, 1.0, 1.2819517948643923e-20, 2.7848432250004017e-21, 6.049643846905349e-22, 1.3141921364135033e-22, 2.854880411339564e-23, 6.201788868782196e-24, 1.3472433037888017e-24, 2.926678992153744e-25, 6.357760249411342e-26, 1.3811256887879182e-26, 1.0, 2.6498812505991365e-17, 5.756459702579704e-18, 1.250502387604418e-18, 2.7165242218295322e-19, 5.901231313858968e-20, 1.2819517948643923e-20, 2.784843225000382e-21, 6.049643846905305e-22, 1.3141921364135033e-22, 2.854880411339543e-23, 1.0, 1.2819517948643923e-20, 2.7848432250004017e-21, 6.049643846905349e-22, 1.3141921364135033e-22, 2.854880411339564e-23, 6.201788868782196e-24, 1.3472433037888017e-24, 2.926678992153744e-25, 6.357760249411342e-26, 1.3811256887879182e-26, 1.0], + [5.09867390246322, 2.4691953107146802e-17, 5.348816035705096e-18, 1.1586703109174054e-18, 2.5099328158600092e-19, 5.437062364308722e-20, 1.1777863919936549e-20, 2.551342420258959e-21, 5.526764606606151e-22, 1.1972178557566537e-22, 2.5934352124012975e-23, 1.0, 1.1777863919936549e-20, 2.551342420258959e-21, 5.526764606606151e-22, 1.1972178557566537e-22, 2.5934352124012975e-23, 5.617946782686573e-24, 1.2169699054820471e-24, 2.6362224637178794e-25, 5.710633308929626e-26, 1.2370478302906417e-26, 1.0, 2.4691953107146802e-17, 5.348816035705058e-18, 1.1586703109173971e-18, 2.5099328158599914e-19, 5.437062364308683e-20, 1.1777863919936549e-20, 2.551342420258959e-21, 5.526764606606111e-22, 1.1972178557566452e-22, 2.5934352124012975e-23, 1.0, 1.1777863919936549e-20, 2.551342420258959e-21, 5.526764606606151e-22, 1.1972178557566537e-22, 2.5934352124012975e-23, 5.617946782686573e-24, 1.2169699054820471e-24, 2.6362224637178794e-25, 5.710633308929626e-26, 1.2370478302906417e-26, 1.0], + [5.109031871399524, 2.284637904306397e-17, 4.933669723516137e-18, 1.0654247176262974e-18, 2.30078195854604e-19, 4.968532767443928e-20, 1.0729533830647874e-20, 2.317040092345863e-21, 5.003642165890774e-22, 1.0805352486987927e-22, 2.3334131118321077e-23, 1.0, 1.0729533830647874e-20, 2.317040092345863e-21, 5.003642165890774e-22, 1.0805352486987927e-22, 2.3334131118321242e-23, 5.038999659684273e-24, 1.0881706904595894e-24, 2.3499018288274547e-25, 5.0746070019533247e-26, 1.0958600869349075e-26, 1.0, 2.2846379043063807e-17, 4.933669723516101e-18, 1.06542471762629e-18, 2.300781958546024e-19, 4.968532767443892e-20, 1.0729533830647798e-20, 2.3170400923458465e-21, 5.003642165890738e-22, 1.0805352486987852e-22, 2.3334131118321077e-23, 1.0, 1.0729533830647874e-20, 2.317040092345863e-21, 5.003642165890774e-22, 1.0805352486987927e-22, 2.3334131118321242e-23, 5.038999659684273e-24, 1.0881706904595894e-24, 2.3499018288274547e-25, 5.0746070019533247e-26, 1.0958600869349154e-26, 1.0], + [5.1204256372294585, 2.097517078582822e-17, 4.514126507108852e-18, 9.714980788595354e-19, 2.0907888065198375e-19, 4.499646400330852e-20, 9.683817736575534e-21, 2.08408211694856e-21, 4.485212741850619e-22, 9.652754647266054e-23, 2.0773969406381313e-23, 1.0, 9.683817736575534e-21, 2.0840821169485453e-21, 4.485212741850619e-22, 9.652754647266054e-23, 2.0773969406381313e-23, 4.470825382674537e-24, 9.621791200013493e-25, 2.0707332085798116e-25, 4.45648417428683e-26, 9.590927075192729e-27, 1.0, 2.097517078582822e-17, 4.514126507108852e-18, 9.714980788595285e-19, 2.0907888065198228e-19, 4.49964640033082e-20, 9.683817736575465e-21, 2.0840821169485453e-21, 4.485212741850619e-22, 9.652754647265985e-23, 2.0773969406381166e-23, 1.0, 9.683817736575534e-21, 2.0840821169485453e-21, 4.485212741850619e-22, 9.652754647266054e-23, 2.0773969406381313e-23, 4.470825382674537e-24, 9.621791200013493e-25, 2.0707332085798116e-25, 4.4564841742867984e-26, 9.590927075192729e-27, 1.0], + [5.132958779642386, 1.9093363741221618e-17, 4.09371631791305e-18, 8.777140329321162e-19, 1.8818644570825941e-19, 4.034815101451945e-20, 8.650853063106683e-21, 1.8547878115290034e-21, 3.9767613675790727e-22, 8.526382843562249e-23, 1.8281007502154866e-23, 1.0, 8.650853063106683e-21, 1.8547878115290034e-21, 3.9767613675790727e-22, 8.526382843562249e-23, 1.8281007502154866e-23, 3.919542922543939e-24, 8.403703526653709e-25, 1.8017976677253825e-25, 3.863147748042193e-26, 8.282789344512548e-27, 1.0, 1.9093363741221618e-17, 4.093716317913022e-18, 8.7771403293211e-19, 1.8818644570825941e-19, 4.034815101451916e-20, 8.650853063106621e-21, 1.8547878115290034e-21, 3.9767613675790444e-22, 8.52638284356219e-23, 1.8281007502154734e-23, 1.0, 8.650853063106683e-21, 1.8547878115290034e-21, 3.9767613675790727e-22, 8.526382843562249e-23, 1.8281007502154866e-23, 3.919542922543939e-24, 8.403703526653709e-25, 1.8017976677253825e-25, 3.8631477480421654e-26, 8.282789344512548e-27, 1.0], + [5.146745236296606, 1.721777708744399e-17, 3.676344186338992e-18, 7.849739549877575e-19, 1.6760784050057504e-19, 3.5787669156111466e-20, 7.64139231077855e-21, 1.631592048996411e-21, 3.48377953399055e-22, 7.438575009553818e-23, 1.5882864467424213e-23, 1.0, 7.64139231077855e-21, 1.631592048996411e-21, 3.48377953399055e-22, 7.438575009553818e-23, 1.5882864467424328e-23, 3.3913133008213314e-24, 7.24114087097834e-25, 1.5461302587600753e-25, 3.3013012999572866e-26, 7.048947015525012e-27, 1.0, 1.7217777087443868e-17, 3.6763441863389656e-18, 7.849739549877519e-19, 1.6760784050057384e-19, 3.5787669156111214e-20, 7.641392310778497e-21, 1.6315920489963996e-21, 3.483779533990525e-22, 7.438575009553765e-23, 1.5882864467424213e-23, 1.0, 7.64139231077855e-21, 1.631592048996411e-21, 3.48377953399055e-22, 7.438575009553818e-23, 1.5882864467424328e-23, 3.3913133008213314e-24, 7.24114087097834e-25, 1.5461302587600753e-25, 3.3013012999572866e-26, 7.048947015525012e-27, 1.0], + [5.161910338616249, 1.5366720034216373e-17, 3.2662124214657534e-18, 6.942368676193092e-19, 1.475607725922428e-19, 3.1364196607259136e-20, 6.6664928052193725e-21, 1.41697002089816e-21, 3.0117846051707564e-22, 6.401579690580794e-23, 1.3606624612032335e-23, 1.0, 6.6664928052193725e-21, 1.41697002089816e-21, 3.0117846051707564e-22, 6.401579690580794e-23, 1.3606624612032432e-23, 2.8921022978934166e-24, 6.147193694227347e-25, 1.3065924515143415e-25, 2.777175926565379e-26, 5.902916489495394e-27, 1.0, 1.5366720034216262e-17, 3.2662124214657534e-18, 6.942368676193042e-19, 1.475607725922428e-19, 3.1364196607258914e-20, 6.6664928052193725e-21, 1.4169700208981498e-21, 3.011784605170735e-22, 6.40157969058075e-23, 1.3606624612032335e-23, 1.0, 6.6664928052193725e-21, 1.41697002089816e-21, 3.0117846051707564e-22, 6.401579690580794e-23, 1.3606624612032432e-23, 2.8921022978934166e-24, 6.147193694227347e-25, 1.3065924515143415e-25, 2.777175926565379e-26, 5.902916489495394e-27, 1.0], + [5.1785919511678555, 1.3559562800397905e-17, 2.8677118723824836e-18, 6.064923702969292e-19, 1.2826706851926372e-19, 2.712720171314049e-20, 5.737131761726422e-21, 1.2133459690929488e-21, 2.5661053325208597e-22, 5.427056046112435e-23, 1.1477680574675282e-23, 1.0, 5.737131761726422e-21, 1.2133459690929488e-21, 2.5661053325208597e-22, 5.427056046112435e-23, 1.1477680574675362e-23, 2.427414610332734e-24, 5.133739044330845e-25, 1.0857344461510916e-25, 2.296219728700057e-26, 4.856274995384629e-27, 1.0, 1.3559562800397808e-17, 2.8677118723824635e-18, 6.064923702969292e-19, 1.282670685192628e-19, 2.71272017131403e-20, 5.737131761726381e-21, 1.2133459690929401e-21, 2.5661053325208597e-22, 5.427056046112396e-23, 1.1477680574675282e-23, 1.0, 5.737131761726422e-21, 1.2133459690929488e-21, 2.5661053325208597e-22, 5.427056046112435e-23, 1.1477680574675362e-23, 2.427414610332734e-24, 5.133739044330845e-25, 1.0857344461510916e-25, 2.296219728700057e-26, 4.856274995384629e-27, 1.0], + [5.196941724974622, 1.18161676862296e-17, 2.48528221148591e-18, 5.227268125118443e-19, 1.099445846656694e-19, 2.3124529693094044e-20, 4.863758184660857e-21, 1.0229891804424545e-21, 2.1516424615902005e-22, 4.5255271228925715e-23, 9.518493943877647e-24, 1.0, 4.863758184660857e-21, 1.0229891804424472e-21, 2.1516424615902005e-22, 4.5255271228925715e-23, 9.518493943877647e-24, 2.002014892393921e-24, 4.210817018951854e-25, 8.856567468333258e-26, 1.8627925879492085e-26, 3.9179921997156235e-27, 1.0, 1.1816167686229515e-17, 2.4852822114858927e-18, 5.227268125118443e-19, 1.099445846656694e-19, 2.3124529693093882e-20, 4.8637581846608226e-21, 1.0229891804424472e-21, 2.1516424615902005e-22, 4.525527122892539e-23, 9.518493943877579e-24, 1.0, 4.863758184660857e-21, 1.0229891804424472e-21, 2.1516424615902005e-22, 4.5255271228925715e-23, 9.518493943877647e-24, 2.002014892393921e-24, 4.210817018951854e-25, 8.856567468333258e-26, 1.8627925879492085e-26, 3.9179921997156235e-27, 1.0], + [5.217126476162067, 1.0156187266533625e-17, 2.1232441104326806e-18, 4.438836577326881e-19, 9.279795037886478e-20, 1.94002627591759e-20, 4.055802887762813e-21, 8.479027974301423e-22, 1.7726185758658225e-22, 3.705821734552633e-23, 7.747360269862199e-24, 1.0, 4.055802887762813e-21, 8.479027974301423e-22, 1.7726185758658225e-22, 3.705821734552633e-23, 7.747360269862199e-24, 1.619656730689586e-24, 3.386040966073154e-25, 7.07882923997363e-26, 1.4798941864787536e-26, 3.093854547029264e-27, 1.0, 1.0156187266533625e-17, 2.1232441104326806e-18, 4.438836577326881e-19, 9.279795037886478e-20, 1.94002627591759e-20, 4.055802887762813e-21, 8.479027974301423e-22, 1.7726185758658225e-22, 3.705821734552633e-23, 7.747360269862199e-24, 1.0, 4.055802887762813e-21, 8.479027974301423e-22, 1.7726185758658225e-22, 3.705821734552633e-23, 7.747360269862199e-24, 1.619656730689586e-24, 3.386040966073154e-25, 7.07882923997363e-26, 1.4798941864787536e-26, 3.093854547029264e-27, 1.0], + [5.239329702468255, 8.598251815951536e-18, 1.785609823390393e-18, 3.708198491550485e-19, 7.700862681539432e-20, 1.5992478874864812e-20, 3.321178303517914e-21, 6.897132964855299e-22, 1.4323363212539746e-22, 2.974550944047823e-23, 6.177287545839536e-24, 1.0, 3.321178303517914e-21, 6.897132964855299e-22, 1.4323363212539746e-22, 2.974550944047823e-23, 6.177287545839536e-24, 1.282845113153683e-24, 2.664100662515986e-25, 5.532571521880876e-26, 1.1489561214935359e-26, 2.3860517010879637e-27, 1.0, 8.598251815951536e-18, 1.785609823390393e-18, 3.708198491550485e-19, 7.700862681539432e-20, 1.5992478874864697e-20, 3.321178303517914e-21, 6.897132964855299e-22, 1.4323363212539746e-22, 2.974550944047823e-23, 6.177287545839536e-24, 1.0, 3.321178303517914e-21, 6.897132964855299e-22, 1.4323363212539746e-22, 2.974550944047823e-23, 6.177287545839536e-24, 1.282845113153683e-24, 2.664100662515986e-25, 5.532571521880876e-26, 1.1489561214935359e-26, 2.3860517010879637e-27, 1.0], + [5.2637532514050624, 7.159085779228133e-18, 1.4758827907045075e-18, 3.042609180934516e-19, 6.272497169973765e-20, 1.29310793492198e-20, 2.6658093037691743e-21, 5.495704613776935e-22, 1.1329681068779204e-22, 2.335672714258874e-23, 4.815110853531945e-24, 1.0, 2.6658093037691743e-21, 5.495704613776935e-22, 1.1329681068779204e-22, 2.335672714258874e-23, 4.815110853531945e-24, 9.926601612571391e-25, 2.0464205824550539e-25, 4.218802530557951e-26, 8.697280971680746e-27, 1.7929897347045534e-27, 1.0, 7.159085779228133e-18, 1.4758827907045075e-18, 3.042609180934516e-19, 6.272497169973765e-20, 1.29310793492198e-20, 2.6658093037691743e-21, 5.495704613776935e-22, 1.1329681068779204e-22, 2.335672714258874e-23, 4.815110853531945e-24, 1.0, 2.6658093037691743e-21, 5.495704613776935e-22, 1.1329681068779204e-22, 2.335672714258874e-23, 4.815110853531945e-24, 9.926601612571391e-25, 2.0464205824550539e-25, 4.218802530557951e-26, 8.697280971680746e-27, 1.7929897347045534e-27, 1.0], + [5.290619155235551, 5.852611720862542e-18, 1.1968609603420134e-18, 2.447584474610768e-19, 5.00531804349583e-20, 1.0235891335488733e-20, 2.093243037134886e-21, 4.280688675662333e-22, 8.754021971106204e-23, 1.7902002803030872e-23, 3.660965273076959e-24, 1.0, 2.093243037134886e-21, 4.280688675662333e-22, 8.754021971106204e-23, 1.7902002803030872e-23, 3.660965273076985e-24, 7.486685639668444e-25, 1.5310295970141273e-25, 3.1309604005719494e-26, 6.402823987901743e-27, 1.3093795441348055e-27, 1.0, 5.852611720862542e-18, 1.1968609603420134e-18, 2.447584474610768e-19, 5.00531804349583e-20, 1.0235891335488733e-20, 2.093243037134886e-21, 4.280688675662333e-22, 8.754021971106204e-23, 1.7902002803030872e-23, 3.660965273076959e-24, 1.0, 2.093243037134886e-21, 4.280688675662333e-22, 8.754021971106204e-23, 1.7902002803030872e-23, 3.660965273076985e-24, 7.486685639668444e-25, 1.5310295970141273e-25, 3.1309604005719494e-26, 6.402823987901743e-27, 1.3093795441348055e-27, 1.0], + [5.320171649449088, 4.689117052579821e-18, 9.504619097072729e-19, 1.926541461163532e-19, 3.905008673861735e-20, 7.91526839693646e-21, 1.6043875706320489e-21, 3.252017932575573e-22, 6.591686963535148e-23, 1.3361038569312836e-23, 2.7082194988659532e-24, 1.0, 1.6043875706320489e-21, 3.252017932575573e-22, 6.591686963535148e-23, 1.3361038569312836e-23, 2.7082194988659723e-24, 5.489433187389578e-25, 1.1126822154346222e-25, 2.255354369534173e-26, 4.571496930226402e-27, 9.266208656773466e-28, 1.0, 4.689117052579821e-18, 9.504619097072729e-19, 1.9265414611635183e-19, 3.905008673861735e-20, 7.91526839693646e-21, 1.6043875706320489e-21, 3.252017932575573e-22, 6.591686963535148e-23, 1.3361038569312836e-23, 2.7082194988659532e-24, 1.0, 1.6043875706320489e-21, 3.252017932575573e-22, 6.591686963535148e-23, 1.3361038569312836e-23, 2.7082194988659723e-24, 5.489433187389578e-25, 1.1126822154346222e-25, 2.255354369534173e-26, 4.571496930226402e-27, 9.266208656773466e-28, 1.0], + [5.352679393083978, 3.674570392248377e-18, 7.375896844245321e-19, 1.480550062987356e-19, 2.9718806204862886e-20, 5.965400727214269e-21, 1.1974237992919729e-21, 2.403566534214026e-22, 4.8246344258478883e-23, 9.684399001123665e-24, 1.94393140981831e-24, 1.0, 1.1974237992919729e-21, 2.403566534214026e-22, 4.8246344258478883e-23, 9.684399001123665e-24, 1.9439314098183236e-24, 3.9020173844962115e-25, 7.832446963925406e-26, 1.5721925198604627e-26, 3.1558328206877497e-27, 6.334644559315114e-28, 1.0, 3.674570392248377e-18, 7.375896844245321e-19, 1.480550062987356e-19, 2.9718806204862886e-20, 5.965400727214269e-21, 1.1974237992919729e-21, 2.403566534214026e-22, 4.8246344258478883e-23, 9.684399001123665e-24, 1.94393140981831e-24, 1.0, 1.1974237992919729e-21, 2.403566534214026e-22, 4.8246344258478883e-23, 9.684399001123665e-24, 1.9439314098183236e-24, 3.9020173844962115e-25, 7.832446963925406e-26, 1.5721925198604627e-26, 3.1558328206877497e-27, 6.334644559315114e-28, 1.0], + [5.388437911082358, 2.8101766349281915e-18, 5.5806265801828345e-19, 1.1082361386240394e-19, 2.2008054495416065e-20, 4.3704987212794756e-21, 8.679212911202136e-22, 1.723573019051808e-22, 3.4227803631469164e-23, 6.797173827186664e-24, 1.3498257888365894e-24, 1.0, 8.679212911202136e-22, 1.723573019051808e-22, 3.4227803631469164e-23, 6.797173827186664e-24, 1.3498257888365894e-24, 2.6805694639156447e-25, 5.323244458879449e-26, 1.0571235683479642e-26, 2.0993028732555532e-27, 4.168928482548364e-28, 1.0, 2.8101766349281915e-18, 5.5806265801828345e-19, 1.1082361386240394e-19, 2.2008054495416065e-20, 4.3704987212794756e-21, 8.679212911202136e-22, 1.723573019051808e-22, 3.4227803631469164e-23, 6.797173827186664e-24, 1.3498257888365894e-24, 1.0, 8.679212911202136e-22, 1.723573019051808e-22, 3.4227803631469164e-23, 6.797173827186664e-24, 1.3498257888365894e-24, 2.6805694639156447e-25, 5.323244458879449e-26, 1.0571235683479642e-26, 2.0993028732555532e-27, 4.168928482548364e-28, 1.0], + [5.427772280880576, 2.0922490069297947e-18, 4.1061792612862664e-19, 8.058652708149221e-20, 1.5815647427486668e-20, 3.103927078252398e-21, 6.09166545427948e-22, 1.1955302773335578e-22, 2.346308500932443e-23, 4.604788089370893e-24, 9.03720603645493e-25, 1.0, 6.09166545427948e-22, 1.1955302773335578e-22, 2.346308500932443e-23, 4.604788089370893e-24, 9.03720603645493e-25, 1.7736124086547217e-25, 3.4808335269160067e-26, 6.831369685382786e-27, 1.3407022030069257e-27, 2.631218159652148e-28, 1.0, 2.0922490069297947e-18, 4.1061792612862664e-19, 8.058652708149221e-20, 1.5815647427486668e-20, 3.103927078252398e-21, 6.09166545427948e-22, 1.1955302773335578e-22, 2.346308500932443e-23, 4.604788089370893e-24, 9.03720603645493e-25, 1.0, 6.09166545427948e-22, 1.1955302773335578e-22, 2.346308500932443e-23, 4.604788089370893e-24, 9.03720603645493e-25, 1.7736124086547217e-25, 3.4808335269160067e-26, 6.831369685382786e-27, 1.3407022030069257e-27, 2.631218159652148e-28, 1.0], + [5.471040087658615, 1.5124502479329493e-18, 2.930004864157688e-19, 5.676172499373507e-20, 1.0996205035962135e-20, 2.130247542798688e-21, 4.1268370121863514e-22, 7.994743983028552e-23, 1.548787392509822e-23, 3.0003992526708618e-24, 5.812544522873093e-25, 1.0, 4.1268370121863514e-22, 7.994743983028552e-23, 1.548787392509822e-23, 3.0003992526708618e-24, 5.812544522873093e-25, 1.1260392696174365e-25, 2.1814274828020166e-26, 4.225985710374573e-27, 8.186820494876412e-28, 1.5859975496554092e-28, 1.0, 1.5124502479329493e-18, 2.930004864157688e-19, 5.676172499373507e-20, 1.0996205035962135e-20, 2.130247542798688e-21, 4.1268370121863514e-22, 7.994743983028552e-23, 1.548787392509822e-23, 3.0003992526708618e-24, 5.812544522873093e-25, 1.0, 4.1268370121863514e-22, 7.994743983028552e-23, 1.548787392509822e-23, 3.0003992526708618e-24, 5.812544522873093e-25, 1.1260392696174365e-25, 2.1814274828020166e-26, 4.225985710374573e-27, 8.186820494876412e-28, 1.5859975496554092e-28, 1.0], + [5.518634675114458, 1.0584140521692604e-18, 2.021351406806605e-19, 3.8603621157758734e-20, 7.372491301975471e-21, 1.407992990491249e-21, 2.6889747034917375e-22, 5.135384199246421e-23, 9.807519140892076e-24, 1.8730328241668697e-24, 3.577104372683784e-25, 1.0, 2.6889747034917375e-22, 5.135384199246421e-23, 9.807519140892076e-24, 1.8730328241668697e-24, 3.577104372683784e-25, 6.831527738316648e-26, 1.30468016521349e-26, 2.4916686262638746e-27, 4.758570497691132e-28, 9.087883092805053e-29, 1.0, 1.0584140521692604e-18, 2.021351406806605e-19, 3.8603621157758734e-20, 7.372491301975471e-21, 1.407992990491249e-21, 2.6889747034917375e-22, 5.135384199246421e-23, 9.807519140892076e-24, 1.8730328241668697e-24, 3.577104372683784e-25, 1.0, 2.6889747034917375e-22, 5.135384199246421e-23, 9.807519140892076e-24, 1.8730328241668697e-24, 3.577104372683784e-25, 6.831527738316648e-26, 1.30468016521349e-26, 2.4916686262638746e-27, 4.758570497691132e-28, 9.087883092805053e-29, 1.0], + [5.570988721315886, 7.147061956038351e-19, 1.3436700865123527e-19, 2.5261419482487345e-20, 4.7492261729704e-21, 8.92869431096845e-22, 1.6786225628175967e-22, 3.1558631198055954e-23, 5.933121746101096e-24, 1.1154455157810027e-24, 2.0970725899794098e-25, 1.0, 1.6786225628175967e-22, 3.1558631198055954e-23, 5.933121746101096e-24, 1.1154455157810027e-24, 2.0970725899794244e-25, 3.942562308445723e-26, 7.41214091979977e-27, 1.3935057639362646e-27, 2.6198345864369548e-28, 4.9253712743201554e-29, 1.0, 7.147061956038351e-19, 1.3436700865123527e-19, 2.5261419482487345e-20, 4.7492261729704e-21, 8.92869431096845e-22, 1.6786225628175967e-22, 3.1558631198055954e-23, 5.933121746101096e-24, 1.1154455157810027e-24, 2.0970725899794098e-25, 1.0, 1.6786225628175967e-22, 3.1558631198055954e-23, 5.933121746101096e-24, 1.1154455157810027e-24, 2.0970725899794244e-25, 3.942562308445723e-26, 7.41214091979977e-27, 1.3935057639362646e-27, 2.6198345864369548e-28, 4.9253712743201554e-29, 1.0], + [5.628578172137456, 4.640306758766269e-19, 8.574495154505899e-20, 1.584420405305126e-20, 2.9277385729561376e-21, 5.409961347931845e-22, 9.996685515730724e-23, 1.847216918446618e-23, 3.4133416905293356e-24, 6.307273054917223e-25, 1.1654764449648625e-25, 1.0, 9.996685515730724e-23, 1.847216918446618e-23, 3.4133416905293356e-24, 6.307273054917223e-25, 1.1654764449648708e-25, 2.1536016150576676e-26, 3.97948833407679e-27, 7.3534154554529e-28, 1.3587857111544377e-28, 2.5108041562759352e-29, 1.0, 4.640306758766269e-19, 8.574495154505899e-20, 1.584420405305126e-20, 2.9277385729561376e-21, 5.409961347931845e-22, 9.996685515730724e-23, 1.847216918446618e-23, 3.4133416905293356e-24, 6.307273054917223e-25, 1.1654764449648625e-25, 1.0, 9.996685515730724e-23, 1.847216918446618e-23, 3.4133416905293356e-24, 6.307273054917223e-25, 1.1654764449648708e-25, 2.1536016150576676e-26, 3.97948833407679e-27, 7.3534154554529e-28, 1.3587857111544377e-28, 2.5108041562759352e-29, 1.0], + [5.6919265680411835, 2.8854114494297327e-19, 5.231377507539415e-20, 9.484716861367529e-21, 1.7196207654802357e-21, 3.1177478677465225e-22, 5.652613623866928e-23, 1.0248436415039681e-23, 1.8580864701178934e-24, 3.3687922631481786e-25, 6.10776812315246e-26, 1.0, 5.652613623866928e-23, 1.0248436415039755e-23, 1.8580864701178934e-24, 3.3687922631481786e-25, 6.10776812315246e-26, 1.1073651484623085e-26, 2.0077015815001536e-27, 3.6400510219736656e-28, 6.599572149896479e-29, 1.1965313754880663e-29, 1.0, 2.8854114494297327e-19, 5.231377507539415e-20, 9.484716861367529e-21, 1.7196207654802357e-21, 3.1177478677465225e-22, 5.652613623866928e-23, 1.0248436415039681e-23, 1.8580864701178934e-24, 3.3687922631481786e-25, 6.10776812315246e-26, 1.0, 5.652613623866928e-23, 1.0248436415039755e-23, 1.8580864701178934e-24, 3.3687922631481786e-25, 6.10776812315246e-26, 1.1073651484623085e-26, 2.0077015815001536e-27, 3.6400510219736656e-28, 6.599572149896479e-29, 1.1965313754880663e-29, 1.0], + [5.761609803535284, 1.7109405360191213e-19, 3.03783591637665e-20, 5.39378596774612e-21, 9.57685927308255e-22, 1.7004055052401782e-22, 3.0191305936569564e-23, 5.360574000416435e-24, 9.517890241088959e-25, 1.6899353433863415e-25, 3.000540448026396e-26, 1.0, 3.0191305936569564e-23, 5.360574000416435e-24, 9.517890241088959e-25, 1.6899353433863415e-25, 3.000540448026396e-26, 5.3275665341145444e-27, 9.459284307960567e-28, 1.6795296510304616e-28, 2.982064770287781e-29, 5.294762309635523e-30, 1.0, 1.7109405360191213e-19, 3.03783591637665e-20, 5.39378596774612e-21, 9.57685927308255e-22, 1.7004055052401782e-22, 3.0191305936569564e-23, 5.360574000416435e-24, 9.517890241088959e-25, 1.6899353433863415e-25, 3.000540448026396e-26, 1.0, 3.0191305936569564e-23, 5.360574000416435e-24, 9.517890241088959e-25, 1.6899353433863415e-25, 3.000540448026396e-26, 5.3275665341145444e-27, 9.459284307960567e-28, 1.6795296510304616e-28, 2.982064770287781e-29, 5.294762309635523e-30, 1.0], + [5.838261362578794, 9.628636630367981e-20, 1.6707343023036713e-20, 2.8990117874948384e-21, 5.03028478702199e-22, 8.728410538962014e-23, 1.5145295696422387e-23, 2.6279696710891284e-24, 4.559980029835756e-25, 7.912350778341873e-26, 1.3729291450818427e-26, 1.0, 1.5145295696422387e-23, 2.6279696710891467e-24, 4.559980029835756e-25, 7.912350778341873e-26, 1.3729291450818524e-26, 2.3822685447347965e-27, 4.133646255207538e-28, 7.172588246172462e-29, 1.2445676038272603e-29, 2.1595391612266328e-30, 1.0, 9.628636630367981e-20, 1.6707343023036713e-20, 2.8990117874948384e-21, 5.03028478702199e-22, 8.728410538962014e-23, 1.5145295696422387e-23, 2.6279696710891284e-24, 4.559980029835756e-25, 7.912350778341873e-26, 1.3729291450818427e-26, 1.0, 1.5145295696422387e-23, 2.6279696710891467e-24, 4.559980029835756e-25, 7.912350778341873e-26, 1.3729291450818524e-26, 2.3822685447347965e-27, 4.133646255207538e-28, 7.172588246172462e-29, 1.2445676038272603e-29, 2.1595391612266328e-30, 1.0], + [5.922578077526655, 5.1159662074704914e-20, 8.655352780998553e-21, 1.4643398475569574e-21, 2.4774162803052904e-22, 4.1913709007928413e-23, 7.091093316722756e-24, 1.1996935040265427e-24, 2.0296792600504787e-25, 3.433875306361535e-26, 5.809538409209633e-27, 1.0, 7.091093316722756e-24, 1.1996935040265427e-24, 2.0296792600504787e-25, 3.433875306361535e-26, 5.809538409209633e-27, 9.828760079189897e-28, 1.6628605904581498e-28, 2.813279926481582e-29, 4.759595596984837e-30, 8.052433756625474e-31, 1.0, 5.1159662074704914e-20, 8.655352780998553e-21, 1.4643398475569574e-21, 2.4774162803052904e-22, 4.1913709007928413e-23, 7.091093316722756e-24, 1.1996935040265427e-24, 2.0296792600504787e-25, 3.433875306361535e-26, 5.809538409209633e-27, 1.0, 7.091093316722756e-24, 1.1996935040265427e-24, 2.0296792600504787e-25, 3.433875306361535e-26, 5.809538409209633e-27, 9.828760079189897e-28, 1.6628605904581498e-28, 2.813279926481582e-29, 4.759595596984837e-30, 8.052433756625474e-31, 1.0], + [6.015326463969302, 2.551683608946536e-20, 4.1985554846899814e-21, 6.908328327310923e-22, 1.1367004783420297e-22, 1.8703337714204244e-23, 3.0774583834240196e-24, 5.063668445934202e-25, 8.331790372359635e-26, 1.3709177753271633e-26, 2.2557163139183877e-27, 1.0, 3.0774583834240196e-24, 5.063668445934202e-25, 8.331790372359635e-26, 1.3709177753271633e-26, 2.2557163139183877e-27, 3.7115691257729187e-28, 6.107038057219531e-29, 1.0048556976440933e-29, 1.6533955800293784e-30, 2.7205069847042775e-31, 1.0, 2.551683608946536e-20, 4.1985554846899814e-21, 6.908328327310923e-22, 1.1367004783420297e-22, 1.8703337714204244e-23, 3.0774583834240196e-24, 5.063668445934202e-25, 8.331790372359635e-26, 1.3709177753271633e-26, 2.2557163139183877e-27, 1.0, 3.0774583834240196e-24, 5.063668445934202e-25, 8.331790372359635e-26, 1.3709177753271633e-26, 2.2557163139183877e-27, 3.7115691257729187e-28, 6.107038057219531e-29, 1.0048556976440933e-29, 1.6533955800293784e-30, 2.7205069847042775e-31, 1.0], + [6.117349689056215, 1.187178153973834e-20, 1.8945083865153234e-21, 3.02327162487192e-22, 4.824561022169803e-23, 7.699073039005022e-24, 1.228624228972336e-24, 1.9606483642515985e-25, 3.128818329960671e-26, 4.992993297722061e-27, 7.967858610509549e-28, 1.0, 1.228624228972336e-24, 1.9606483642515985e-25, 3.128818329960671e-26, 4.992993297722061e-27, 7.967858610509549e-28, 1.271517245297245e-28, 2.0290973825210613e-29, 3.238049820387083e-30, 5.167305783166441e-31, 8.246027867956976e-32, 1.0, 1.187178153973834e-20, 1.8945083865153234e-21, 3.02327162487192e-22, 4.824561022169803e-23, 7.699073039005022e-24, 1.228624228972336e-24, 1.9606483642515985e-25, 3.128818329960671e-26, 4.992993297722061e-27, 7.967858610509549e-28, 1.0, 1.228624228972336e-24, 1.9606483642515985e-25, 3.128818329960671e-26, 4.992993297722061e-27, 7.967858610509549e-28, 1.271517245297245e-28, 2.0290973825210613e-29, 3.238049820387083e-30, 5.167305783166441e-31, 8.246027867956976e-32, 1.0], + [6.229575236651818, 5.116510572959662e-21, 7.894649093027226e-22, 1.218124802310018e-22, 1.8795364005644887e-23, 2.900078115434237e-24, 4.474748705635417e-25, 6.904426426316291e-26, 1.0653358973293622e-26, 1.643786904315052e-27, 2.53632248154904e-28, 1.0, 4.474748705635417e-25, 6.904426426316291e-26, 1.0653358973293622e-26, 1.643786904315052e-27, 2.53632248154904e-28, 3.9134827717170627e-29, 6.038406991201064e-30, 9.31711243368725e-31, 1.4376073727469008e-31, 2.218192570805238e-32, 1.0, 5.116510572959662e-21, 7.894649093027226e-22, 1.218124802310018e-22, 1.8795364005644887e-23, 2.900078115434237e-24, 4.474748705635417e-25, 6.904426426316291e-26, 1.0653358973293622e-26, 1.643786904315052e-27, 2.53632248154904e-28, 1.0, 4.474748705635417e-25, 6.904426426316291e-26, 1.0653358973293622e-26, 1.643786904315052e-27, 2.53632248154904e-28, 3.9134827717170627e-29, 6.038406991201064e-30, 9.31711243368725e-31, 1.4376073727469008e-31, 2.218192570805238e-32, 1.0], + [6.353023339006981, 2.0271115749331746e-21, 3.014066011573375e-22, 4.481546074947182e-23, 6.663508743589293e-24, 9.907819318005023e-25, 1.4731710787154514e-25, 2.1904245096797414e-26, 3.2568922930453794e-27, 4.842598939896517e-28, 7.200350021633324e-29, 1.0, 1.4731710787154514e-25, 2.1904245096797414e-26, 3.2568922930453794e-27, 4.842598939896482e-28, 7.200350021633324e-29, 1.0706036382014174e-29, 1.5918561551679867e-30, 2.366894645532212e-31, 3.519281717045511e-32, 5.2327397957105505e-33, 1.0, 2.0271115749331746e-21, 3.014066011573375e-22, 4.481546074947182e-23, 6.663508743589293e-24, 9.907819318005023e-25, 1.4731710787154514e-25, 2.1904245096797414e-26, 3.2568922930453794e-27, 4.842598939896517e-28, 7.200350021633324e-29, 1.0, 1.4731710787154514e-25, 2.1904245096797414e-26, 3.2568922930453794e-27, 4.842598939896482e-28, 7.200350021633324e-29, 1.0706036382014174e-29, 1.5918561551679867e-30, 2.366894645532212e-31, 3.519281717045511e-32, 5.2327397957105505e-33, 1.0], + [6.488816251597661, 7.321023633851754e-22, 1.0450923799830915e-22, 1.491892578584782e-23, 2.1297097832369386e-24, 3.04020800553727e-25, 4.339964435381758e-26, 6.195395599930352e-27, 8.844064786964044e-28, 1.2625098864856455e-28, 1.8022608968485034e-29, 1.0, 4.339964435381758e-26, 6.195395599930352e-27, 8.844064786964044e-28, 1.2625098864856455e-28, 1.8022608968485034e-29, 2.5727674492520524e-30, 3.672682661819531e-31, 5.24283605125343e-32, 7.484264879749998e-33, 1.0683954303104113e-33, 1.0, 7.321023633851754e-22, 1.0450923799830915e-22, 1.491892578584782e-23, 2.1297097832369386e-24, 3.04020800553727e-25, 4.339964435381758e-26, 6.195395599930352e-27, 8.844064786964044e-28, 1.2625098864856455e-28, 1.8022608968485034e-29, 1.0, 4.339964435381758e-26, 6.195395599930352e-27, 8.844064786964044e-28, 1.2625098864856455e-28, 1.8022608968485034e-29, 2.5727674492520524e-30, 3.672682661819531e-31, 5.24283605125343e-32, 7.484264879749998e-33, 1.0683954303104113e-33, 1.0], + [6.638188455447408, 2.388005813552687e-22, 3.2595436025931685e-23, 4.44916190610091e-24, 6.072948878778968e-25, 8.289360752120546e-26, 1.131468468620019e-26, 1.5444145016294791e-27, 2.1080712534150693e-28, 2.87744281395069e-29, 3.927607823570229e-30, 1.0, 1.131468468620019e-26, 1.5444145016294791e-27, 2.1080712534150693e-28, 2.87744281395069e-29, 3.927607823570229e-30, 5.361045974912092e-31, 7.317638429336636e-32, 9.988318032169678e-33, 1.3633701374448562e-33, 1.8609520899212555e-34, 1.0, 2.388005813552687e-22, 3.2595436025931685e-23, 4.44916190610091e-24, 6.072948878778968e-25, 8.289360752120546e-26, 1.131468468620019e-26, 1.5444145016294791e-27, 2.1080712534150693e-28, 2.87744281395069e-29, 3.927607823570229e-30, 1.0, 1.131468468620019e-26, 1.5444145016294791e-27, 2.1080712534150693e-28, 2.87744281395069e-29, 3.927607823570229e-30, 5.361045974912092e-31, 7.317638429336636e-32, 9.988318032169678e-33, 1.3633701374448562e-33, 1.8609520899212555e-34, 1.0], + [6.8024978796821305, 6.963784254033588e-23, 9.04813600623918e-24, 1.1756361512776846e-24, 1.527519435205174e-25, 1.9847259905997957e-26, 2.5787804508249764e-27, 3.350643184527157e-28, 4.35353453467771e-29, 5.6566043893170165e-30, 7.349700102840525e-31, 1.0, 2.5787804508249764e-27, 3.350643184527157e-28, 4.35353453467771e-29, 5.6566043893170165e-30, 7.349700102840525e-31, 9.549561518516625e-32, 1.2407870242309436e-32, 1.612170816968572e-33, 2.094714638635187e-34, 2.721690140479747e-35, 1.0, 6.963784254033588e-23, 9.04813600623918e-24, 1.1756361512776846e-24, 1.527519435205174e-25, 1.9847259905997957e-26, 2.5787804508249764e-27, 3.350643184527157e-28, 4.35353453467771e-29, 5.6566043893170165e-30, 7.349700102840525e-31, 1.0, 2.5787804508249764e-27, 3.350643184527157e-28, 4.35353453467771e-29, 5.6566043893170165e-30, 7.349700102840525e-31, 9.549561518516625e-32, 1.2407870242309436e-32, 1.612170816968572e-33, 2.094714638635187e-34, 2.721690140479747e-35, 1.0], + [6.983238246340326, 1.7952966830354448e-23, 2.209539030751045e-24, 2.7193626404733247e-25, 3.346821697867196e-26, 4.119059117236754e-27, 5.06948070227447e-28, 6.239200229778129e-29, 7.6788179684358e-30, 9.450609568667315e-31, 1.163122001153239e-31, 1.0, 5.06948070227447e-28, 6.239200229778129e-29, 7.6788179684358e-30, 9.450609568667182e-31, 1.163122001153239e-31, 1.431497915279456e-32, 1.7617982287478234e-33, 2.168311225387334e-34, 2.668622032548098e-35, 3.284373326679196e-36, 1.0, 1.7952966830354448e-23, 2.209539030751045e-24, 2.7193626404733247e-25, 3.346821697867196e-26, 4.119059117236754e-27, 5.06948070227447e-28, 6.239200229778129e-29, 7.6788179684358e-30, 9.450609568667315e-31, 1.163122001153239e-31, 1.0, 5.06948070227447e-28, 6.239200229778129e-29, 7.6788179684358e-30, 9.450609568667182e-31, 1.163122001153239e-31, 1.431497915279456e-32, 1.7617982287478234e-33, 2.168311225387334e-34, 2.668622032548098e-35, 3.284373326679196e-36, 1.0], + [7.182052649664341, 4.041627103870853e-24, 4.686174872522817e-25, 5.433513377528548e-26, 6.3000354077456005e-27, 7.304748029699689e-28, 8.469689505522186e-29, 9.820412699834406e-30, 1.138654557905461e-30, 1.3202441097620503e-31, 1.5307930726309957e-32, 1.0, 8.469689505522186e-29, 9.820412699834406e-30, 1.138654557905461e-30, 1.3202441097620503e-31, 1.5307930726309957e-32, 1.77491981512221e-33, 2.0579792307910574e-34, 2.386180197146425e-35, 2.7667217667036986e-36, 3.2079510774191166e-37, 1.0, 4.041627103870853e-24, 4.686174872522817e-25, 5.433513377528548e-26, 6.3000354077456005e-27, 7.304748029699689e-28, 8.469689505522186e-29, 9.820412699834406e-30, 1.138654557905461e-30, 1.3202441097620503e-31, 1.5307930726309957e-32, 1.0, 8.469689505522186e-29, 9.820412699834406e-30, 1.138654557905461e-30, 1.3202441097620503e-31, 1.5307930726309957e-32, 1.77491981512221e-33, 2.0579792307910574e-34, 2.386180197146425e-35, 2.7667217667036986e-36, 3.2079510774191166e-37, 1.0], + [7.400748493320757, 7.838234556976573e-25, 8.511125329214597e-26, 9.241781914413729e-27, 1.0035163347954874e-27, 1.089665438469993e-28, 1.1832102045832335e-29, 1.2847855303143762e-30, 1.395080817010546e-31, 1.5148446492190658e-32, 1.6448898754015967e-33, 1.0, 1.1832102045832335e-29, 1.2847855303143762e-30, 1.395080817010546e-31, 1.5148446492190658e-32, 1.6448898754015967e-33, 1.7860991248135615e-34, 1.9394307979923923e-35, 2.1059255715127716e-36, 2.2867134611568596e-37, 2.4830214914384365e-38, 1.0, 7.838234556976573e-25, 8.511125329214597e-26, 9.241781914413729e-27, 1.0035163347954874e-27, 1.089665438469993e-28, 1.1832102045832335e-29, 1.2847855303143762e-30, 1.395080817010546e-31, 1.5148446492190658e-32, 1.6448898754015967e-33, 1.0, 1.1832102045832335e-29, 1.2847855303143762e-30, 1.395080817010546e-31, 1.5148446492190658e-32, 1.6448898754015967e-33, 1.7860991248135615e-34, 1.9394307979923923e-35, 2.1059255715127716e-36, 2.2867134611568596e-37, 2.4830214914384365e-38, 1.0], + [7.641313921342814, 1.2901686093824105e-25, 1.3033838333198355e-26, 1.3167344210712973e-27, 1.330221759171162e-28, 1.3438472483560874e-29, 1.3576123037105436e-30, 1.3715183548136736e-31, 1.3855668458879066e-32, 1.3997592359487938e-33, 1.4140969989566927e-34, 1.0, 1.3576123037105436e-30, 1.3715183548136736e-31, 1.3855668458879066e-32, 1.3997592359487938e-33, 1.4140969989566927e-34, 1.4285816239696868e-35, 1.4432146152983941e-36, 1.4579974926620353e-37, 1.47293179134643e-38, 1.4880190623632777e-39, 1.0, 1.2901686093824105e-25, 1.3033838333198355e-26, 1.3167344210712973e-27, 1.330221759171162e-28, 1.3438472483560874e-29, 1.3576123037105436e-30, 1.3715183548136736e-31, 1.3855668458879066e-32, 1.3997592359487938e-33, 1.4140969989566927e-34, 1.0, 1.3576123037105436e-30, 1.3715183548136736e-31, 1.3855668458879066e-32, 1.3997592359487938e-33, 1.4140969989566927e-34, 1.4285816239696868e-35, 1.4432146152983941e-36, 1.4579974926620353e-37, 1.47293179134643e-38, 1.4880190623632777e-39, 1.0], + [7.9059358921670775, 1.773035814075277e-26, 1.6544978550356214e-27, 1.5438848615390877e-28, 1.440667002640669e-29, 1.344349869736126e-30, 1.2544721083684803e-31, 1.1706032083622337e-32, 1.0923414417002318e-33, 1.0193119382656874e-34, 9.511648902322628e-36, 1.0, 1.2544721083684803e-31, 1.1706032083622337e-32, 1.0923414417002318e-33, 1.0193119382656874e-34, 9.511648902322628e-36, 8.875738765013223e-37, 8.282342991604918e-38, 7.728619244742374e-39, 7.211915214178743e-40, 6.729755912336426e-41, 1.0, 1.773035814075277e-26, 1.6544978550356214e-27, 1.5438848615390877e-28, 1.440667002640669e-29, 1.344349869736126e-30, 1.2544721083684803e-31, 1.1706032083622337e-32, 1.0923414417002318e-33, 1.0193119382656874e-34, 9.511648902322628e-36, 1.0, 1.2544721083684803e-31, 1.1706032083622337e-32, 1.0923414417002318e-33, 1.0193119382656874e-34, 9.511648902322628e-36, 8.875738765013223e-37, 8.282342991604918e-38, 7.728619244742374e-39, 7.211915214178743e-40, 6.729755912336426e-41, 1.0], + [8.197020060073767, 1.998000759359257e-27, 1.7085176705681695e-28, 1.460976737356093e-29, 1.2493011128095676e-30, 1.0682944023405308e-31, 9.135130981397552e-33, 7.81157496140164e-34, 6.679784176259569e-35, 5.711974456096316e-36, 4.884387178713686e-37, 1.0, 9.135130981397552e-33, 7.811574961401752e-34, 6.679784176259569e-35, 5.711974456096316e-36, 4.884387178713686e-37, 4.1767060225767965e-38, 3.571558224346923e-39, 3.054088097402264e-40, 2.6115923417151494e-41, 2.2332081923590893e-42, 1.0, 1.998000759359257e-27, 1.7085176705681695e-28, 1.460976737356093e-29, 1.2493011128095676e-30, 1.0682944023405308e-31, 9.135130981397552e-33, 7.81157496140164e-34, 6.679784176259569e-35, 5.711974456096316e-36, 4.884387178713686e-37, 1.0, 9.135130981397552e-33, 7.811574961401752e-34, 6.679784176259569e-35, 5.711974456096316e-36, 4.884387178713686e-37, 4.1767060225767965e-38, 3.571558224346923e-39, 3.054088097402264e-40, 2.6115923417151494e-41, 2.2332081923590893e-42, 1.0], + [8.517212644771126, 1.809929271599452e-28, 1.4059441466684586e-29, 1.0921304907149792e-30, 8.483615878878803e-32, 6.590031044115271e-33, 5.11910366787405e-34, 3.9764945243834846e-35, 3.088921367560134e-36, 2.39945890946474e-37, 1.8638878667077743e-38, 1.0, 5.11910366787405e-34, 3.9764945243834846e-35, 3.088921367560134e-36, 2.39945890946474e-37, 1.8638878667077743e-38, 1.447858917673814e-39, 1.124689678457079e-40, 8.736534046149802e-42, 6.786496631163621e-43, 5.271717168559732e-44, 1.0, 1.809929271599452e-28, 1.4059441466684586e-29, 1.0921304907149792e-30, 8.483615878878803e-32, 6.590031044115271e-33, 5.11910366787405e-34, 3.9764945243834846e-35, 3.088921367560134e-36, 2.39945890946474e-37, 1.8638878667077743e-38, 1.0, 5.11910366787405e-34, 3.9764945243834846e-35, 3.088921367560134e-36, 2.39945890946474e-37, 1.8638878667077743e-38, 1.447858917673814e-39, 1.124689678457079e-40, 8.736534046149802e-42, 6.786496631163621e-43, 5.271717168559732e-44, 1.0], + [8.86942448793822, 1.289538029142609e-29, 9.012629549185805e-31, 6.298960523472413e-32, 4.402367084958933e-33, 3.076830832406263e-34, 2.1504085844159282e-35, 1.5029286079772137e-36, 1.0504024291224805e-37, 7.341301890522904e-39, 5.130863367558992e-40, 1.0, 2.1504085844159282e-35, 1.5029286079772137e-36, 1.0504024291224805e-37, 7.341301890522904e-39, 5.130863367558992e-40, 3.58597961085669e-41, 2.5062545712648128e-42, 1.7516307000097993e-43, 1.2242212520607627e-44, 8.556128149551372e-46, 1.0, 1.289538029142609e-29, 9.012629549185805e-31, 6.298960523472413e-32, 4.402367084958933e-33, 3.076830832406263e-34, 2.1504085844159282e-35, 1.5029286079772137e-36, 1.0504024291224805e-37, 7.341301890522904e-39, 5.130863367558992e-40, 1.0, 2.1504085844159282e-35, 1.5029286079772137e-36, 1.0504024291224805e-37, 7.341301890522904e-39, 5.130863367558992e-40, 3.58597961085669e-41, 2.5062545712648128e-42, 1.7516307000097993e-43, 1.2242212520607627e-44, 8.556128149551372e-46, 1.0], + [9.256857515422023, 7.054787872358866e-31, 4.389583533566009e-32, 2.731257685812097e-33, 1.6994251252458522e-34, 1.0574050816659601e-35, 6.5793160882638235e-37, 4.0937386191758343e-38, 2.5471790163761926e-39, 1.5848889108541344e-40, 9.861391145259913e-42, 1.0, 6.5793160882638235e-37, 4.0937386191758343e-38, 2.5471790163761926e-39, 1.5848889108541344e-40, 9.861391145259913e-42, 6.135889692571782e-43, 3.817832774791107e-44, 2.3755067034394282e-45, 1.4780720976953997e-46, 9.196762622570114e-48, 1.0, 7.054787872358866e-31, 4.389583533566009e-32, 2.731257685812097e-33, 1.6994251252458522e-34, 1.0574050816659601e-35, 6.5793160882638235e-37, 4.0937386191758343e-38, 2.5471790163761926e-39, 1.5848889108541344e-40, 9.861391145259913e-42, 1.0, 6.5793160882638235e-37, 4.0937386191758343e-38, 2.5471790163761926e-39, 1.5848889108541344e-40, 9.861391145259913e-42, 6.135889692571782e-43, 3.817832774791107e-44, 2.3755067034394282e-45, 1.4780720976953997e-46, 9.196762622570114e-48, 1.0], + [9.683033845654208, 2.886281898192513e-32, 1.5803464145157343e-33, 8.652982896219364e-35, 4.737829143948071e-36, 2.5941372202470806e-37, 1.4203863653604374e-38, 7.777142285131996e-40, 4.2582739174520097e-41, 2.3315629432057292e-42, 1.276617207702545e-43, 1.0, 1.4203863653604374e-38, 7.777142285131996e-40, 4.2582739174520097e-41, 2.3315629432057292e-42, 1.276617207702545e-43, 6.989952811488131e-45, 3.827258477485227e-46, 2.0955660000176818e-47, 1.1474001262949867e-48, 6.282441353842555e-50, 1.0, 2.886281898192513e-32, 1.5803464145157343e-33, 8.652982896219364e-35, 4.737829143948071e-36, 2.5941372202470806e-37, 1.4203863653604374e-38, 7.777142285131996e-40, 4.2582739174520097e-41, 2.3315629432057292e-42, 1.276617207702545e-43, 1.0, 1.4203863653604374e-38, 7.777142285131996e-40, 4.2582739174520097e-41, 2.3315629432057292e-42, 1.276617207702545e-43, 6.989952811488131e-45, 3.827258477485227e-46, 2.0955660000176818e-47, 1.1474001262949867e-48, 6.282441353842555e-50, 1.0], + [10.151827808909612, 8.577861113703657e-34, 4.0805074076218125e-35, 1.9411063530810107e-36, 9.233885636216498e-38, 4.3925797165822226e-39, 2.0895598371776764e-40, 9.940082126826453e-42, 4.728518941171304e-43, 2.249366865558744e-44, 1.0700287677435352e-45, 1.0, 2.0895598371776764e-40, 9.940082126826453e-42, 4.728518941171304e-43, 2.249366865558712e-44, 1.0700287677435352e-45, 5.090150394450393e-47, 2.42139574366411e-48, 1.1518632836128264e-49, 5.479438987232945e-51, 2.6065811838916464e-52, 1.0, 8.577861113703657e-34, 4.0805074076218125e-35, 1.9411063530810107e-36, 9.233885636216498e-38, 4.3925797165822226e-39, 2.0895598371776764e-40, 9.940082126826453e-42, 4.728518941171304e-43, 2.249366865558744e-44, 1.0700287677435352e-45, 1.0, 2.0895598371776764e-40, 9.940082126826453e-42, 4.728518941171304e-43, 2.249366865558712e-44, 1.0700287677435352e-45, 5.090150394450393e-47, 2.42139574366411e-48, 1.1518632836128264e-49, 5.479438987232945e-51, 2.6065811838916464e-52, 1.0], + [10.667501168490555, 1.7935905258292832e-35, 7.309240185398182e-37, 2.9786615907294726e-38, 1.2138641838328874e-39, 4.946739372401992e-41, 2.0158952495990986e-42, 8.215176404943554e-44, 3.3478487226835254e-45, 1.3643153253811016e-46, 5.559857870691776e-48, 1.0, 2.0158952495990986e-42, 8.215176404943554e-44, 3.3478487226835254e-45, 1.3643153253811016e-46, 5.559857870691776e-48, 2.265753302570172e-49, 9.233397952794963e-51, 3.762794372095494e-52, 1.533413978153913e-53, 6.248968707498913e-55, 1.0, 1.7935905258292832e-35, 7.309240185398182e-37, 2.9786615907294726e-38, 1.2138641838328874e-39, 4.946739372401992e-41, 2.0158952495990986e-42, 8.215176404943554e-44, 3.3478487226835254e-45, 1.3643153253811016e-46, 5.559857870691776e-48, 1.0, 2.0158952495990986e-42, 8.215176404943554e-44, 3.3478487226835254e-45, 1.3643153253811016e-46, 5.559857870691776e-48, 2.265753302570172e-49, 9.233397952794963e-51, 3.762794372095494e-52, 1.533413978153913e-53, 6.248968707498913e-55, 1.0], + [11.234741864029592, 2.5474286058939813e-37, 8.756813537405412e-39, 3.010164176984908e-40, 1.0347472095526624e-41, 3.5569547862651e-43, 1.222707076156681e-44, 4.2030688718802184e-46, 1.444809495770409e-47, 4.966548354784688e-49, 1.7072563983434566e-50, 1.0, 1.222707076156681e-44, 4.2030688718802184e-46, 1.444809495770409e-47, 4.966548354784688e-49, 1.7072563983434808e-50, 5.86871243662959e-52, 2.017376282629225e-53, 6.934752911581074e-55, 2.383828855269675e-56, 8.194437615399693e-58, 1.0, 2.5474286058939813e-37, 8.756813537405412e-39, 3.010164176984908e-40, 1.0347472095526624e-41, 3.5569547862651e-43, 1.222707076156681e-44, 4.2030688718802184e-46, 1.444809495770409e-47, 4.966548354784688e-49, 1.7072563983434566e-50, 1.0, 1.222707076156681e-44, 4.2030688718802184e-46, 1.444809495770409e-47, 4.966548354784688e-49, 1.7072563983434808e-50, 5.86871243662959e-52, 2.017376282629225e-53, 6.934752911581074e-55, 2.383828855269675e-56, 8.194437615399693e-58, 1.0], + [11.858706629122533, 2.3643872757335792e-39, 6.740115798750261e-41, 1.9213925504851386e-42, 5.477278793554631e-44, 1.5613979025134012e-45, 4.451048598881034e-47, 1.2688523276296036e-48, 3.61709424996119e-50, 1.031118478345237e-51, 2.939390690182844e-53, 1.0, 4.451048598881097e-47, 1.2688523276296217e-48, 3.6170942499612414e-50, 1.031118478345237e-51, 2.939390690182886e-53, 8.379267573014038e-55, 2.388662565158871e-56, 6.80931692474764e-58, 1.9411195895964531e-59, 5.53351430511459e-61, 1.0, 2.3643872757335792e-39, 6.740115798750261e-41, 1.9213925504851386e-42, 5.477278793554631e-44, 1.5613979025134012e-45, 4.451048598881034e-47, 1.2688523276296036e-48, 3.61709424996119e-50, 1.031118478345237e-51, 2.939390690182844e-53, 0.9999999999999999, 4.451048598881034e-47, 1.2688523276296036e-48, 3.61709424996119e-50, 1.031118478345237e-51, 2.939390690182844e-53, 8.379267573013918e-55, 2.388662565158871e-56, 6.80931692474764e-58, 1.941119589596398e-59, 5.5335143051144325e-61, 1.0], + [12.545067870724768, 1.3743484748091615e-41, 3.1887519662377236e-43, 7.398515943052121e-45, 1.7165975509904445e-46, 3.9828354426046996e-48, 9.240941858338043e-50, 2.1440756882824524e-51, 4.974666681768994e-53, 1.1542180497614234e-54, 2.6780071743848487e-56, 1.0, 9.240941858338043e-50, 2.1440756882824524e-51, 4.974666681768994e-53, 1.1542180497614234e-54, 2.6780071743848487e-56, 6.213490100539595e-58, 1.4416488349540144e-59, 3.344901705313281e-61, 7.760813276393276e-63, 1.8006574786746777e-64, 1.0, 1.3743484748091615e-41, 3.1887519662377236e-43, 7.398515943052121e-45, 1.7165975509904445e-46, 3.9828354426046996e-48, 9.240941858338043e-50, 2.1440756882824524e-51, 4.974666681768994e-53, 1.1542180497614234e-54, 2.6780071743848487e-56, 1.0, 9.240941858338043e-50, 2.1440756882824524e-51, 4.974666681768994e-53, 1.1542180497614234e-54, 2.6780071743848487e-56, 6.213490100539595e-58, 1.4416488349540144e-59, 3.344901705313281e-61, 7.760813276393276e-63, 1.8006574786746777e-64, 1.0], + [13.300065236487226, 4.774335577051842e-44, 8.832211472327332e-46, 1.6339018955194716e-47, 3.0226126407259787e-49, 5.591637540130062e-51, 1.0344167148286184e-52, 1.9136038991038165e-54, 3.540043224525891e-56, 6.548850594096544e-58, 1.2114949277079083e-59, 1.0, 1.0344167148286184e-52, 1.9136038991038165e-54, 3.540043224525891e-56, 6.548850594096544e-58, 1.2114949277079083e-59, 2.2411871194390435e-61, 4.1460509569303345e-63, 7.669925633770798e-65, 1.4188865462263745e-66, 2.6248481760995023e-68, 1.0, 4.774335577051842e-44, 8.832211472327332e-46, 1.6339018955194716e-47, 3.0226126407259787e-49, 5.591637540130062e-51, 1.0344167148286184e-52, 1.9136038991038165e-54, 3.540043224525891e-56, 6.548850594096544e-58, 1.2114949277079083e-59, 1.0, 1.0344167148286184e-52, 1.9136038991038165e-54, 3.540043224525891e-56, 6.548850594096544e-58, 1.2114949277079083e-59, 2.2411871194390435e-61, 4.1460509569303345e-63, 7.669925633770798e-65, 1.4188865462263745e-66, 2.6248481760995023e-68, 1.0], + [14.130562338825932, 9.41478974107459e-47, 1.3575725576614169e-48, 1.9575617724894937e-50, 2.8227206505362193e-52, 4.070242882210952e-54, 5.8691167746415215e-56, 8.463016264932742e-58, 1.2203308785740044e-59, 1.759665120072878e-61, 2.537362111511471e-63, 1.0, 5.8691167746415215e-56, 8.463016264932742e-58, 1.2203308785740044e-59, 1.759665120072878e-61, 2.537362111511471e-63, 3.65876803005978e-65, 5.275787573659694e-67, 7.607460843022634e-69, 1.0969634328543888e-70, 1.5817745208945937e-72, 1.0, 9.41478974107459e-47, 1.3575725576614169e-48, 1.9575617724894937e-50, 2.8227206505362193e-52, 4.070242882210952e-54, 5.8691167746415215e-56, 8.463016264932742e-58, 1.2203308785740044e-59, 1.759665120072878e-61, 2.537362111511471e-63, 1.0, 5.8691167746415215e-56, 8.463016264932742e-58, 1.2203308785740044e-59, 1.759665120072878e-61, 2.537362111511471e-63, 3.65876803005978e-65, 5.275787573659694e-67, 7.607460843022634e-69, 1.0969634328543888e-70, 1.5817745208945937e-72, 1.0], + [15.044109151398507, 9.958595167548453e-50, 1.0917570400682487e-51, 1.1968891339439865e-53, 1.3121450527707648e-55, 1.43849968278795e-57, 1.5770217881106254e-59, 1.7288830508155024e-61, 1.8953679815535486e-63, 2.077884784516716e-65, 2.2779772686605205e-67, 1.0, 1.5770217881106254e-59, 1.7288830508155024e-61, 1.8953679815535486e-63, 2.077884784516716e-65, 2.2779772686605854e-67, 2.4973379059326026e-69, 2.7378221469589526e-71, 3.001464115277486e-73, 3.2904938128668267e-75, 3.607355982503287e-77, 1.0, 9.958595167548453e-50, 1.0917570400682487e-51, 1.1968891339439865e-53, 1.3121450527707648e-55, 1.43849968278795e-57, 1.5770217881106254e-59, 1.7288830508155024e-61, 1.8953679815535486e-63, 2.077884784516716e-65, 2.2779772686605205e-67, 1.0, 1.5770217881106254e-59, 1.7288830508155024e-61, 1.8953679815535486e-63, 2.077884784516716e-65, 2.2779772686605854e-67, 2.4973379059326026e-69, 2.7378221469589526e-71, 3.001464115277486e-73, 3.2904938128668267e-75, 3.607355982503287e-77, 1.0], + [16.04901064522834, 5.3091411993532545e-53, 4.305516389939012e-55, 3.491613933020163e-57, 2.8315692597870287e-59, 2.296297536547997e-61, 1.8622120430679478e-63, 1.5101848249859043e-65, 1.2247038215156096e-67, 9.931893273056696e-70, 8.054396683870295e-72, 1.0, 1.8622120430679478e-63, 1.5101848249859043e-65, 1.2247038215156443e-67, 9.931893273056696e-70, 8.054396683870295e-72, 6.5318166594811825e-74, 5.2970607914700726e-76, 4.2957196276783196e-78, 3.48366912257005e-80, 2.825126313494305e-82, 1.0, 5.3091411993532545e-53, 4.305516389939012e-55, 3.491613933020163e-57, 2.8315692597870287e-59, 2.296297536547997e-61, 1.8622120430679478e-63, 1.5101848249859043e-65, 1.2247038215156096e-67, 9.931893273056696e-70, 8.054396683870295e-72, 1.0, 1.8622120430679478e-63, 1.5101848249859043e-65, 1.2247038215156443e-67, 9.931893273056696e-70, 8.054396683870295e-72, 6.5318166594811825e-74, 5.2970607914700726e-76, 4.2957196276783196e-78, 3.48366912257005e-80, 2.825126313494305e-82, 1.0], + [17.154402288441155, 1.3320885439660928e-56, 7.753796828933922e-59, 4.5133159906459176e-61, 2.6271027834271246e-63, 1.5291792218835585e-65, 8.901018671183656e-68, 5.181088799203894e-70, 3.015798768307225e-72, 1.7554306755601532e-74, 1.0217979027914924e-76, 1.0, 8.901018671183656e-68, 5.181088799203894e-70, 3.015798768307225e-72, 1.7554306755601532e-74, 1.0217979027914924e-76, 5.94766269431837e-79, 3.462004710397609e-81, 2.0151574207906834e-83, 1.1729791754388956e-85, 6.827655903296233e-88, 1.0, 1.3320885439660928e-56, 7.753796828933922e-59, 4.5133159906459176e-61, 2.6271027834271246e-63, 1.5291792218835585e-65, 8.901018671183656e-68, 5.181088799203894e-70, 3.015798768307225e-72, 1.7554306755601532e-74, 1.0217979027914924e-76, 1.0, 8.901018671183656e-68, 5.181088799203894e-70, 3.015798768307225e-72, 1.7554306755601532e-74, 1.0217979027914924e-76, 5.94766269431837e-79, 3.462004710397609e-81, 2.0151574207906834e-83, 1.1729791754388956e-85, 6.827655903296233e-88, 1.0], + [18.37033309597525, 1.4587900508369816e-60, 5.895932521437711e-63, 2.382935109641247e-65, 9.631012085219931e-68, 3.892527052472677e-70, 1.5732268550969425e-72, 6.358447107069037e-75, 2.5698677519016906e-77, 1.0386530155959243e-79, 4.197881723711929e-82, 1.0, 1.5732268550969425e-72, 6.358447107069037e-75, 2.5698677519016906e-77, 1.0386530155959243e-79, 4.197881723711929e-82, 1.696640812828569e-84, 6.857244289413055e-87, 2.7714645839678444e-89, 1.120131588726837e-91, 4.527190364696465e-94, 1.0, 1.4587900508369816e-60, 5.895932521437711e-63, 2.382935109641247e-65, 9.631012085219931e-68, 3.892527052472677e-70, 1.5732268550969425e-72, 6.358447107069037e-75, 2.5698677519016906e-77, 1.0386530155959243e-79, 4.197881723711929e-82, 1.0, 1.5732268550969425e-72, 6.358447107069037e-75, 2.5698677519016906e-77, 1.0386530155959243e-79, 4.197881723711929e-82, 1.696640812828569e-84, 6.857244289413055e-87, 2.7714645839678444e-89, 1.120131588726837e-91, 4.527190364696465e-94, 1.0], + [19.70785698426276, 6.417981515895239e-65, 1.7365784223704514e-67, 4.698836557216211e-70, 1.2714119159267965e-72, 3.440188311036461e-75, 9.308466805398138e-78, 2.5186863750808403e-80, 6.815065454537579e-83, 1.8440214553564444e-85, 4.989556080566981e-88, 1.0, 9.308466805398138e-78, 2.5186863750808403e-80, 6.815065454537579e-83, 1.8440214553564444e-85, 4.989556080566981e-88, 1.3500748491188606e-90, 3.653034596248479e-93, 9.884386610192338e-96, 2.674518844143647e-98, 7.23671718820019e-101, 1.0, 6.417981515895239e-65, 1.7365784223704514e-67, 4.698836557216211e-70, 1.2714119159267965e-72, 3.440188311036461e-75, 9.308466805398138e-78, 2.5186863750808403e-80, 6.815065454537579e-83, 1.8440214553564444e-85, 4.989556080566981e-88, 1.0, 9.308466805398138e-78, 2.5186863750808403e-80, 6.815065454537579e-83, 1.8440214553564444e-85, 4.989556080566981e-88, 1.3500748491188606e-90, 3.653034596248479e-93, 9.884386610192338e-96, 2.674518844143647e-98, 7.23671718820019e-101, 1.0], + [21.179133261379018, 1.0354871126541707e-69, 1.8019821560154755e-72, 3.1358571738040096e-75, 5.457101881764327e-78, 9.496593530065487e-81, 1.65262241074605e-83, 2.8759373809708088e-86, 5.004782559817266e-89, 8.709455441132229e-92, 1.5156425513886338e-94, 1.0, 1.65262241074605e-83, 2.8759373809708088e-86, 5.0047825598174085e-89, 8.709455441132229e-92, 1.5156425513886338e-94, 2.6375613941727856e-97, 4.5899543409209e-100, 7.987560364768472e-103, 1.3900164542382221e-105, 2.4189435257044284e-108, 1.0, 1.0354871126541707e-69, 1.8019821560154755e-72, 3.1358571738040096e-75, 5.457101881764327e-78, 9.496593530065487e-81, 1.65262241074605e-83, 2.8759373809708088e-86, 5.004782559817266e-89, 8.709455441132229e-92, 1.5156425513886338e-94, 1.0, 1.65262241074605e-83, 2.8759373809708088e-86, 5.0047825598174085e-89, 8.709455441132229e-92, 1.5156425513886338e-94, 2.6375613941727856e-97, 4.5899543409209e-100, 7.987560364768472e-103, 1.3900164542382221e-105, 2.4189435257044284e-108, 1.0], + [20.0, 7.175095973164411e-66, 1.7785284761271306e-68, 4.408531331463226e-71, 1.0927656633766312e-73, 2.7086952666810816e-76, 6.714184288211784e-79, 1.6642798918944025e-81, 4.125337404615302e-84, 1.0225689071173033e-86, 2.534694904308355e-89, 1.0, 6.714184288211784e-79, 1.6642798918944025e-81, 4.125337404615302e-84, 1.0225689071173325e-86, 2.5346949043084273e-89, 6.282880511239641e-92, 1.5573703742969903e-94, 3.860335205164366e-97, 9.568814292462946e-100, 2.3718719255558685e-102, 1.0, 7.175095973164411e-66, 1.7785284761271306e-68, 4.408531331463226e-71, 1.0927656633766312e-73, 2.7086952666810816e-76, 6.714184288211594e-79, 1.664279891894355e-81, 4.125337404615185e-84, 1.0225689071173325e-86, 2.534694904308355e-89, 0.9999999999999999, 6.714184288211594e-79, 1.664279891894355e-81, 4.125337404615302e-84, 1.0225689071173033e-86, 2.5346949043084273e-89, 6.282880511239641e-92, 1.5573703742969903e-94, 3.860335205164366e-97, 9.568814292462946e-100, 2.371871925555801e-102, 1.0] + ] +} diff --git a/tests/test_games/golden_logit/allpay_pv_p90_b11.json b/tests/test_games/golden_logit/allpay_pv_p90_b11.json new file mode 100644 index 0000000000..a3e292574e --- /dev/null +++ b/tests/test_games/golden_logit/allpay_pv_p90_b11.json @@ -0,0 +1,76 @@ +{ + "counts": [{"predictor_attempts": 70, "accepted_steps": 70, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 147, "function_evals": 147, "jacobian_evals": 71, "factorizations": 71}], + "points": [ + [0.0, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909, 0.0909090909090909], + [0.0007629607094652176, 0.09054137724926652, 0.09061446013078216, 0.09068769525151929, 0.09076108312999961, 0.09083462428730572, 0.09090831924709791, 0.09098216853563144, 0.09105617268177382, 0.09113033221702226, 0.0912046476755212, 0.09127911959408008, 0.09007199674450295, 0.0902375561806767, 0.09040372861335637, 0.09057051740902183, 0.0907379259587303, 0.09090595767834025, 0.0910746160087383, 0.09124390441606818, 0.09141382639196274, 0.09158438545377778, 0.09175558514482914, 0.09054137724926652, 0.09061446013078216, 0.09068769525151926, 0.09076108312999961, 0.09083462428730572, 0.09090831924709791, 0.09098216853563144, 0.09105617268177382, 0.09113033221702226, 0.0912046476755212, 0.09127911959408005, 0.09007199674450295, 0.0902375561806767, 0.09040372861335637, 0.09057051740902188, 0.0907379259587303, 0.09090595767834025, 0.0910746160087383, 0.09124390441606822, 0.09141382639196274, 0.09158438545377783, 0.09175558514482916], + [0.0016022300049592013, 0.09013954761000352, 0.09029144350811459, 0.0904440007659531, 0.09059722409477282, 0.0907511182545453, 0.09090568805463832, 0.09106093835450642, 0.09121687406439367, 0.09137350014604906, 0.09153082161345495, 0.0916888435335683, 0.0891619277827796, 0.08950325923494448, 0.08984722913845604, 0.09019386780131712, 0.090543205995242, 0.09089527496453974, 0.09125010643520184, 0.09160773262420074, 0.09196818624900387, 0.09233150053730993, 0.09269770923701269, 0.09013954761000356, 0.09029144350811459, 0.0904440007659531, 0.09059722409477282, 0.0907511182545453, 0.09090568805463832, 0.09106093835450642, 0.09121687406439367, 0.09137350014604906, 0.09153082161345495, 0.0916888435335683, 0.0891619277827796, 0.08950325923494444, 0.08984722913845604, 0.09019386780131712, 0.090543205995242, 0.09089527496453974, 0.09125010643520184, 0.09160773262420074, 0.09196818624900391, 0.09233150053730993, 0.09269770923701269], + [0.002525461307108211, 0.08970072246982438, 0.08993743680730515, 0.09017576729123515, 0.09041573198672562, 0.09065734925236785, 0.09090063774666458, 0.09114561643464178, 0.0913923045946472, 0.09164072182534139, 0.09189088805288925, 0.09214282353835763, 0.08817367979203758, 0.08870090195339703, 0.0892345060684014, 0.08977460717552953, 0.09032132308107953, 0.09087477444272968, 0.09143508485614169, 0.09200238094473608, 0.09257679245277645, 0.09315845234190495, 0.0937474968912803, 0.08970072246982443, 0.08993743680730518, 0.09017576729123515, 0.09041573198672566, 0.09065734925236789, 0.09090063774666458, 0.09114561643464182, 0.0913923045946472, 0.09164072182534143, 0.09189088805288928, 0.09214282353835768, 0.08817367979203758, 0.08870090195339699, 0.0892345060684014, 0.08977460717552953, 0.09032132308107953, 0.09087477444272968, 0.09143508485614169, 0.09200238094473612, 0.09257679245277645, 0.093158452341905, 0.0937474968912803], + [0.0035410847120184333, 0.08922183783118477, 0.0895496267444937, 0.08988053572008581, 0.09021461341573331, 0.09055190959350617, 0.09089247515364103, 0.09123636216974187, 0.09158362392537785, 0.091934314952146, 0.09228849106927091, 0.0926462094248188, 0.08710191642662954, 0.08782487529864007, 0.08856001662539516, 0.08930764678470761, 0.09006808246282702, 0.09084165109068607, 0.09162869130246534, 0.0924295534178192, 0.09324459994919913, 0.09407420613581019, 0.09491876050584595, 0.08922183783118477, 0.0895496267444937, 0.08988053572008581, 0.09021461341573331, 0.09055190959350617, 0.09089247515364103, 0.09123636216974187, 0.09158362392537789, 0.091934314952146, 0.09228849106927095, 0.09264620942481884, 0.0871019164266295, 0.08782487529863998, 0.08856001662539512, 0.08930764678470757, 0.09006808246282698, 0.09084165109068602, 0.09162869130246534, 0.09242955341781924, 0.09324459994919918, 0.09407420613581023, 0.094918760505846], + [0.004658389217802896, 0.08869964586516986, 0.08912498135235136, 0.08955560935237437, 0.08999163784634465, 0.09043317802598687, 0.09088034442290491, 0.09133325504453253, 0.09179203151720187, 0.09225679923679025, 0.09272768752744223, 0.0932048298089017, 0.08594122156363453, 0.08686927652662219, 0.08781774038762462, 0.08878728460869169, 0.08977861028217479, 0.0907924497795983, 0.09182956851175388, 0.09289076680886404, 0.09397688193047637, 0.09508879021564584, 0.0962274093849584, 0.08869964586516982, 0.08912498135235132, 0.08955560935237433, 0.08999163784634465, 0.09043317802598683, 0.09088034442290487, 0.09133325504453253, 0.09179203151720185, 0.09225679923679021, 0.09272768752744223, 0.0932048298089017, 0.08594122156363444, 0.08686927652662206, 0.08781774038762451, 0.0887872846086916, 0.08977861028217471, 0.0907924497795983, 0.09182956851175392, 0.09289076680886417, 0.0939768819304765, 0.09508879021564601, 0.09622740938495848], + [0.005887614849898339, 0.08813071880336318, 0.08866024181170729, 0.08919803468866258, 0.08974430937892507, 0.09029928575505779, 0.09086319201988777, 0.09143626513522872, 0.09201875127906586, 0.09261090633354428, 0.09321299640633648, 0.09382529838822196, 0.0846861658085039, 0.08582793817044627, 0.08700116446066455, 0.08820714445741322, 0.08944725017845549, 0.09072293095865602, 0.09203571896146212, 0.09338723516812646, 0.0947791958936656, 0.09621341988437183, 0.09769183605831375, 0.08813071880336314, 0.08866024181170724, 0.08919803468866254, 0.08974430937892502, 0.09029928575505779, 0.09086319201988777, 0.09143626513522875, 0.0920187512790659, 0.09261090633354432, 0.09321299640633653, 0.093825298388222, 0.08468616580850372, 0.08582793817044601, 0.08700116446066428, 0.08820714445741303, 0.08944725017845534, 0.09072293095865598, 0.0920357189614622, 0.09338723516812662, 0.09477919589366585, 0.0962134198843721, 0.097691836058314], + [0.007240056261871651, 0.08751145681938172, 0.08815191638516313, 0.08880458204164374, 0.08946983586015196, 0.09014807739528244, 0.0908397247729956, 0.09154521586626002, 0.09226500956699621, 0.09299958716413657, 0.09374945383882557, 0.09451514028916469, 0.08333138908634947, 0.08469447172331078, 0.08610327825484966, 0.08756011595641074, 0.08906744916544902, 0.09062791284518616, 0.0922443275770517, 0.09391971616040487, 0.09565732202410591, 0.09746062968480021, 0.0993333875222219, 0.08751145681938163, 0.08815191638516305, 0.08880458204164365, 0.08946983586015192, 0.0901480773952824, 0.09083972477299555, 0.09154521586626006, 0.09226500956699625, 0.09299958716413662, 0.09374945383882566, 0.09451514028916477, 0.0833313890863491, 0.08469447172331025, 0.08610327825484912, 0.08756011595641026, 0.0890674491654487, 0.09062791284518609, 0.09224432757705182, 0.0939197161604053, 0.09565732202410647, 0.09746062968480082, 0.09933338752222243], + [0.00872817974620002, 0.08683810073219234, 0.08759627723435556, 0.08837172650293819, 0.08916509542145235, 0.08997706635042199, 0.09080835978027312, 0.0916597372414854, 0.0925320045031435, 0.09342601509559013, 0.0943426741982386, 0.09528294293991178, 0.08187170117772861, 0.08346232937720414, 0.08511658189872108, 0.0868382988822551, 0.0886316341600103, 0.09050108787649129, 0.09245154326067954, 0.09448830817989867, 0.09661716221643542, 0.09884441014217324, 0.10117694282865201, 0.08683810073219218, 0.08759627723435541, 0.08837172650293808, 0.08916509542145222, 0.08997706635042195, 0.09080835978027312, 0.0916597372414854, 0.09253200450314358, 0.09342601509559026, 0.09434267419823876, 0.09528294293991196, 0.08187170117772785, 0.08346232937720308, 0.08511658189871994, 0.08683829888225406, 0.08863163416000963, 0.09050108787649104, 0.09245154326067982, 0.09448830817989948, 0.09661716221643658, 0.09884441014217456, 0.1011769428286531], + [0.010365756048295345, 0.08610675044694378, 0.08698936106673988, 0.08789563000523962, 0.08882660072197442, 0.08978338419398967, 0.09076716488858924, 0.09177920742365263, 0.09282086401471669, 0.09389358282542222, 0.09499891735896754, 0.09613853705376951, 0.08030220187165886, 0.08212488757047437, 0.08403311333430986, 0.08603295677897774, 0.08813108201896672, 0.09033481198611476, 0.09265221170670121, 0.09509218452326836, 0.09766458366976935, 0.10038034213467162, 0.10325162440553014, 0.08610675044694348, 0.08698936106673957, 0.08789563000523934, 0.08882660072197418, 0.08978338419398955, 0.0907671648885892, 0.09177920742365271, 0.0928208640147169, 0.09389358282542251, 0.09499891735896791, 0.0961385370537699, 0.08030220187165736, 0.08212488757047218, 0.08403311333430748, 0.08603295677897563, 0.08813108201896519, 0.09033481198611411, 0.09265221170670167, 0.09509218452326987, 0.09766458366977174, 0.10038034213467434, 0.10325162440553234], + [0.012168011968484412, 0.08531339011886514, 0.08632697473892935, 0.08737212547112581, 0.08845046142247578, 0.0895637237719904, 0.09071378838960437, 0.09190268015903917, 0.09313258929421671, 0.09440588999903482, 0.09572516189545219, 0.0970932147392755, 0.07861842204993962, 0.080675556405684, 0.08284450026679235, 0.08513448663660679, 0.08755578805858191, 0.09011986677906904, 0.0928395516821039, 0.09572924773206462, 0.09880518510849476, 0.1020857170906727, 0.10559167819077767, 0.08531339011886457, 0.0863269747389287, 0.08737212547112523, 0.08845046142247534, 0.08956372377199012, 0.09071378838960432, 0.09190268015903932, 0.09313258929421708, 0.0944058899990354, 0.09572516189545291, 0.09709321473927628, 0.07861842204993671, 0.08067555640567965, 0.08284450026678754, 0.08513448663660236, 0.08755578805857869, 0.09011986677906757, 0.09283955168210463, 0.0957292477320676, 0.09880518510849963, 0.10208571709067837, 0.10559167819078226], + [0.014151804500686786, 0.0844539210721014, 0.0856047071366816, 0.08679670434490616, 0.08803234575648537, 0.08931427600202924, 0.09064537658531578, 0.09202879515436116, 0.0934679795287801, 0.0949667174630371, 0.09652918337364276, 0.09815999358267577, 0.07681648643725997, 0.0791079191411388, 0.08154204431911342, 0.08413241367616364, 0.08689434096288431, 0.0898451972285232, 0.09300476742753493, 0.09639568377897291, 0.10004395585862035, 0.1039796235763074, 0.10823756759488211, 0.0844539210721002, 0.08560470713668031, 0.08679670434490493, 0.0880323457564844, 0.0893142760020286, 0.09064537658531557, 0.09202879515436144, 0.09346797952878085, 0.0949667174630383, 0.09652918337364422, 0.09815999358267734, 0.07681648643725433, 0.07910791914113019, 0.08154204431910368, 0.08413241367615448, 0.08689434096287729, 0.08984519722851969, 0.09300476742753583, 0.09639568377897856, 0.10004395585863017, 0.10397962357631917, 0.10823756759489182], + [0.016335822244209257, 0.08352420351616721, 0.0848179488477465, 0.08616450916471179, 0.08756744251480014, 0.08903066073838815, 0.09055847800895654, 0.09215566814708506, 0.0938275327248531, 0.09557998255110119, 0.09741963589904792, 0.09935393788717174, 0.07489329790042101, 0.0774159058299975, 0.08011684586289147, 0.08301542294215397, 0.08613381591023299, 0.08949763153147296, 0.0931365916593484, 0.0970853924169882, 0.10138478778952369, 0.10608296909651091, 0.11123733906295459, 0.0835242035161648, 0.08481794884774391, 0.08616450916470933, 0.08756744251479816, 0.08903066073838681, 0.09055847800895601, 0.09215566814708555, 0.0938275327248546, 0.09557998255110356, 0.09741963589905095, 0.09935393788717492, 0.0748932979004103, 0.07741590582998058, 0.0801168458628719, 0.08301542294213514, 0.08613381591021803, 0.0894976315314647, 0.09313659165934905, 0.09708539241699884, 0.10138478778954331, 0.1060829690965353, 0.11123733906297505], + [0.018740820100352745, 0.0825201080640787, 0.08396192132943864, 0.08547033324572886, 0.08705042533739583, 0.08870785265753751, 0.09044893341353445, 0.09228075713194225, 0.09421131626907193, 0.09624966779121684, 0.09840613351655918, 0.10069255124354828, 0.07284674201001065, 0.07559400464618649, 0.07855997888525786, 0.08177144235203072, 0.08525970280244569, 0.08906159577128218, 0.09322075769062123, 0.09778926745723283, 0.10282978710678417, 0.1084183880305187, 0.11464833325208135, 0.08252010806407396, 0.08396192132943349, 0.08547033324572396, 0.08705042533739178, 0.08870785265753472, 0.09044893341353333, 0.09228075713194307, 0.09421131626907486, 0.09624966779122167, 0.09840613351656538, 0.10069255124355485, 0.07284674200999028, 0.07559400464615341, 0.07855997888521882, 0.0817714423519922, 0.08525970280241395, 0.08906159577126316, 0.09322075769062003, 0.09778926745725229, 0.10282978710682317, 0.1084183880305692, 0.11464833325212462], + [0.021389894906056868, 0.0814375779534967, 0.08303171742913659, 0.08470863000158937, 0.08647542192732693, 0.08834010394583613, 0.0903117512529996, 0.09240070111848175, 0.09461879955435593, 0.09697971278164189, 0.09949932561256372, 0.1021962584226658, 0.07067590905366306, 0.07363751333710147, 0.07686272564820336, 0.08038779486037237, 0.08425589270483314, 0.08851884463085793, 0.09323940666879098, 0.09849430030740296, 0.10437831700989159, 0.11100995956075806, 0.11853933622608061, 0.08143757795348733, 0.08303171742912624, 0.08470863000157941, 0.08647542192731852, 0.08834010394583021, 0.090311751252997, 0.09240070111848306, 0.09461879955436152, 0.09697971278165153, 0.09949932561257635, 0.10219625842267933, 0.07067590905362445, 0.07363751333703715, 0.07686272564812577, 0.08038779486029386, 0.08425589270476608, 0.08851884463081465, 0.09323940666878262, 0.0984943003074373, 0.10437831700996852, 0.11100995956086246, 0.11853933622617278], + [0.02430881175180139, 0.08027270269252383, 0.0820223552192317, 0.08387353490893848, 0.08583599166881323, 0.08792086669564796, 0.09014096939832347, 0.09251112805369367, 0.09504863965769278, 0.0977738555667941, 0.1007109567103889, 0.10388899942812188, 0.06838132880056168, 0.07154283140516647, 0.07501688044698897, 0.07885144004151991, 0.08310475282369917, 0.08784824113638998, 0.0931704484958593, 0.09918248403580619, 0.10602568383959769, 0.11388261896447517, 0.12299329002418284, 0.08027270269250536, 0.08202235521921107, 0.0838735349089184, 0.08583599166879605, 0.08792086669563554, 0.09014096939831755, 0.0925111280536956, 0.09504863965770353, 0.09777385556681344, 0.10071095671041476, 0.10388899942815007, 0.06838132880048889, 0.07154283140504196, 0.07501688044683552, 0.07885144004136073, 0.08310475282355818, 0.08784824113629225, 0.09317044849582938, 0.09918248403586372, 0.10602568383974771, 0.11388261896469076, 0.12299329002438002], + [0.0275263933719805, 0.07902180358904963, 0.08092884713243927, 0.08295890358789439, 0.08512511613520164, 0.08744271938592968, 0.08992950539465037, 0.09260642937710942, 0.0954984098757473, 0.0986354055337478, 0.10205389533345331, 0.10579896465508445, 0.06596521109201361, 0.0693077908776653, 0.07301513002659656, 0.0771493270022727, 0.08178732801514646, 0.08702563360649666, 0.0929869146816305, 0.09982950713148894, 0.10776136050875529, 0.11706108586985524, 0.12811071121366066, 0.07902180358901331, 0.08092884713239819, 0.08295890358785397, 0.0851251161351664, 0.08744271938590362, 0.089929505394637, 0.09260642937711176, 0.0954984098757677, 0.09863540553378644, 0.10205389533350638, 0.10579896465514327, 0.06596521109187678, 0.06930779087742522, 0.07301513002629438, 0.07714932700195112, 0.08178732801485139, 0.08702563360627827, 0.09298691468154169, 0.09982950713157748, 0.107761360509044, 0.1170610858703005, 0.12811071121408524], + [0.031074988251810747, 0.07768153128647713, 0.07974628630778423, 0.08195836988641693, 0.08433520807848423, 0.08689730366713554, 0.08966899983172755, 0.0926795003936921, 0.09596426024929705, 0.09956692460299589, 0.10354210801046011, 0.10795950768608757, 0.06343168286425291, 0.06693201975787928, 0.0708515146525398, 0.075268880127208, 0.08028371381438901, 0.08602389636113875, 0.09265637034980538, 0.10040325143713412, 0.10956662650419251, 0.12056804651677858, 0.13401399766076036, 0.07768153128640552, 0.07974628630770236, 0.08195836988633544, 0.08433520807841213, 0.08689730366708075, 0.0896689998316974, 0.09267950039369338, 0.0959642602493352, 0.09956692460307273, 0.10354210801056919, 0.10795950768621083, 0.06343168286399621, 0.06693201975741796, 0.07085151465194682, 0.07526888012656091, 0.0802837138137742, 0.0860238963606551, 0.09265637034956467, 0.10040325143724942, 0.10956662650473883, 0.12056804651769748, 0.13401399766168176], + [0.03499103695264755, 0.07624897506095267, 0.0784699518809596, 0.08086542817701722, 0.08345814564311313, 0.086275279880926, 0.08934966051541683, 0.09272144864773856, 0.09644049959724511, 0.10056978744619632, 0.10519054170620327, 0.11041028144525197, 0.06078700967358479, 0.06441732744709025, 0.06852196794232936, 0.07319863545118413, 0.07857365037625466, 0.08481322088491558, 0.09214049254831849, 0.10086215498052913, 0.1114115033113598, 0.12442120519699368, 0.14085283227075154, 0.07624897506081103, 0.07846995188079607, 0.08086542817685256, 0.08345814564296532, 0.08627527988081098, 0.08934966051534958, 0.09272144864773357, 0.09644049959731553, 0.10056978744634916, 0.1051905417064283, 0.11041028144551195, 0.0607870096731032, 0.06441732744620575, 0.06852196794116919, 0.07319863544988668, 0.07857365037497922, 0.08481322088385365, 0.09214049254770161, 0.1008621549806171, 0.11141150331237035, 0.1244212051988889, 0.1408528322727681], + [0.03931576039203432, 0.0747217833375023, 0.0770954347237903, 0.07967354428212477, 0.08248533967253817, 0.08556631226678825, 0.08896011919701266, 0.09272127721693574, 0.09691909088028274, 0.1016435851345251, 0.10701485919089491, 0.1131986540994851, 0.05803978747505966, 0.06176809575654358, 0.06602492497291115, 0.07092903696195309, 0.07663738563275022, 0.08336176270819326, 0.09139497281357883, 0.10115357692035927, 0.11325089568931875, 0.12862865596913137, 0.1488109052515036, 0.07472178333722088, 0.07709543472346257, 0.0796735442817913, 0.08248533967223445, 0.08556631226654635, 0.08896011919686321, 0.09272127721690959, 0.09691909088041048, 0.10164358513482834, 0.10701485919136117, 0.11319865410003721, 0.05803978747415416, 0.061768095754849824, 0.06602492497064681, 0.07092903695936033, 0.07663738563011674, 0.08336176270588168, 0.09139497281205806, 0.10115357692021044, 0.1132508956911275, 0.12862865597303466, 0.14881090525595952], + [0.044095997708029744, 0.07309829486484842, 0.07561878500927678, 0.0783762996017722, 0.08140784303495142, 0.08475909754267273, 0.0884873176576359, 0.09266555677808665, 0.09738905709473736, 0.1027853311466443, 0.10903094477501755, 0.1163814724978514, 0.05520108871402858, 0.05899165303461619, 0.0633619768583571, 0.0684533874422383, 0.07445684557097165, 0.08163676018645154, 0.0903699595427442, 0.10121241766884168, 0.11501994292549048, 0.1331818210265436, 0.1581141473059393, 0.0730982948642853, 0.07561878500861674, 0.07837629960109407, 0.08140784303432545, 0.08475909754216322, 0.08848731765730518, 0.09266555677799983, 0.09738905709496408, 0.102785331147245, 0.10903094477598836, 0.11638147249903392, 0.055201088712316215, 0.058991653031371806, 0.06336197685394479, 0.06845338743707219, 0.07445684556555919, 0.08163676018146222, 0.0903699595391036, 0.10121241766781275, 0.11501994292856753, 0.13318182103456025, 0.15811414731588835], + [0.049385223092030146, 0.07137768065221067, 0.07403668330532182, 0.07696757337256596, 0.08021651197257582, 0.08384145341906342, 0.08791644587112295, 0.09253810977692631, 0.09783580481906402, 0.10398842619152915, 0.111254059616925, 0.12002725100926519, 0.052284546262736306, 0.05609860321711535, 0.06053853652385698, 0.06576892671069007, 0.07201712549892479, 0.07960623522443522, 0.089011308955869, 0.1009604063790042, 0.11662878546086547, 0.13804498238218307, 0.16904054389163609, 0.07137768065107303, 0.07403668330398377, 0.07696757337117976, 0.08021651197128017, 0.08384145341798734, 0.08791644587039339, 0.09253810977667941, 0.09783580481945493, 0.10398842619271687, 0.11125405961895814, 0.12002725101182249, 0.05228454625946575, 0.05609860321088698, 0.06053853651526437, 0.0657689267004226, 0.07201712548785245, 0.07960623521375852, 0.08901130894736088, 0.10096040637532523, 0.11662878546566378, 0.13804498239856472, 0.1690405439140964], + [0.05524476650852998, 0.06956009884389217, 0.07234663840017902, 0.07544176916759893, 0.07890223100358314, 0.0828004867475217, 0.08723096166990985, 0.09231974219544813, 0.09824038856029102, 0.10524134237087282, 0.11369747353392752, 0.12421886751930167, 0.049306360005002894, 0.0531030774597902, 0.05756446625659394, 0.06287798175650144, 0.06930827483524986, 0.07724135048034643, 0.08726294044358353, 0.10030665920579314, 0.117957319574495, 0.14314027995264866, 0.18193129096800387, 0.06956009884156605, 0.07234663839744371, 0.07544176916474717, 0.07890223100088789, 0.08280048674524201, 0.08723096166830449, 0.09231974219479994, 0.0982403885609398, 0.10524134237321689, 0.1136974735382123, 0.1242188675248902, 0.04930635999866167, 0.05310307744777908, 0.05756446623985047, 0.0628779817361362, 0.06930827481270463, 0.07724135045769974, 0.08726294042411449, 0.10030665919491215, 0.11795731958074594, 0.14314027998583875, 0.18193129101928635], + [0.061745243762442406, 0.06764686944901842, 0.07054721907265028, 0.073794095075649, 0.07745621602606924, 0.08162286516977169, 0.08641272900837736, 0.09198807318567326, 0.09857876247443166, 0.1065260029810395, 0.11637033195894776, 0.12905683562266296, 0.0462852145633015, 0.05002287492827676, 0.05445460529940179, 0.0597891008532957, 0.06632728828235407, 0.0745194197984484, 0.0850705584027412, 0.09915029306336494, 0.1188511000445236, 0.1483271545343512, 0.19720239197667327, 0.06764686944419274, 0.07054721906700225, 0.07379409506973819, 0.0774562160204307, 0.0816228651649252, 0.08641272900485085, 0.09198807318405311, 0.09857876247545072, 0.10652600298565827, 0.11637033196803553, 0.12905683563501105, 0.04628521455075594, 0.05002287490494839, 0.054454605266713134, 0.05978910081296299, 0.06632728823666699, 0.07451941975085512, 0.08507055835905646, 0.09915029303414805, 0.11885110004894386, 0.14832715460065998, 0.19720239209505647], + [0.06896814889551978, 0.06564068529440602, 0.06863833582383241, 0.07202091493606086, 0.07587041745470652, 0.08029522345375902, 0.08544232186899822, 0.091517530472636, 0.09882109755089082, 0.1078158682439671, 0.11927443392455937, 0.13466317102427178, 0.043242103101761305, 0.04687946274415995, 0.051229128583265136, 0.056518052514545086, 0.06308014229213697, 0.07142744033089529, 0.08238686440453415, 0.09738595977297959, 0.11912035771968621, 0.1533759680380161, 0.21535452377338904, 0.06564068528423221, 0.06863833581204026, 0.07202091492371165, 0.07587041744284292, 0.08029522344342091, 0.0854423218612641, 0.09151753046872148, 0.09882109755235742, 0.10781586825305466, 0.11927443394394589, 0.13466317105185316, 0.04324210307633234, 0.04687946269841792, 0.0512291285192542, 0.0565180524347717, 0.06308014220003749, 0.07142744023188562, 0.08238686430840486, 0.09738595969935505, 0.11912035770957236, 0.15337596816753649, 0.2153545240493187], + [0.07700744124216813, 0.06354589262091133, 0.06662160561120507, 0.0701202045367683, 0.07413806091178858, 0.07880475075263936, 0.08429955701308059, 0.09087960203835167, 0.09893128244210425, 0.10907379634100253, 0.12239951042790041, 0.14118573740179555, 0.04020006065690132, 0.04369781347761059, 0.04791366871242244, 0.0530885474235368, 0.05958363859133292, 0.06796584036133166, 0.07917810108334677, 0.0949129952605844, 0.11854497344226281, 0.15793761071449502, 0.23697675645271632, 0.06354589259911933, 0.06662160558631916, 0.07012020451078106, 0.07413806088671283, 0.07880475073054179, 0.08429955699616079, 0.09087960202913202, 0.09893128244388645, 0.10907379635885464, 0.1223995104694147, 0.14118573746399116, 0.04020006060405092, 0.04369781338695559, 0.0479136685866738, 0.05308854726606057, 0.059583638406880975, 0.06796584015779662, 0.07917810087615292, 0.09491299508408584, 0.11854497337943039, 0.15793761095846598, 0.23697675710022126], + [0.08597070764981601, 0.061368902230118386, 0.06450086166636301, 0.0680921767878345, 0.07225439353628954, 0.07714003545986772, 0.08296434944966141, 0.09004346919158751, 0.09886677782111014, 0.11024983981292055, 0.1257165348930834, 0.1488026593545667, 0.037183817758356726, 0.04050606936237195, 0.04453914262193594, 0.049532533621424034, 0.055866753125240656, 0.06415194055560663, 0.07543133370400332, 0.09164827674214529, 0.11688874955801784, 0.1615152515977071, 0.26273614302963594, 0.0613689021828661, 0.0645008616134382, 0.0680921767329248, 0.07225439348322373, 0.07714003541270138, 0.08296434941284493, 0.09004346917034428, 0.09886677782238583, 0.11024983984788118, 0.12571653498193397, 0.148802659495699, 0.03718381764626587, 0.040506069181090114, 0.04453914237460196, 0.04953253331195131, 0.055866752759361975, 0.06415194014357435, 0.07543133326798539, 0.09164827633788694, 0.11688874934246822, 0.16151525203058886, 0.26273614455151284], + [0.09597900165648918, 0.059118828602985264, 0.06228291150854309, 0.06594018547465279, 0.07021775394579753, 0.07529229821866823, 0.08141804170886724, 0.08897720747065556, 0.09857906961600148, 0.11127926931263907, 0.129168652368108, 0.15772578220946193, 0.034219382050980275, 0.03733502605652735, 0.041141233958061706, 0.04588992087889293, 0.0519711543223777, 0.06002245231992893, 0.0711613421438872, 0.08754172745035585, 0.11392562863620377, 0.16345181674973688, 0.2933403374309188, 0.05911882850018589, 0.06228291139597572, 0.06594018535899372, 0.07021775383416358, 0.07529229811884076, 0.0814180416296852, 0.08897720742281495, 0.09857906961400568, 0.11127926938050436, 0.12916865255658141, 0.1577257825297785, 0.034219381811355226, 0.037335025693312665, 0.041141233473945035, 0.045889920277127565, 0.051971153608085525, 0.06002245150382391, 0.07116134125355199, 0.0875417265674351, 0.11392562803355571, 0.16345181744163015, 0.293340340983547], + [0.10716366393592629, 0.05680848213489794, 0.05997868248331167, 0.06367206344962613, 0.06803114197374685, 0.07325721555385317, 0.0796454456215784, 0.08764984651695545, 0.09801509322882117, 0.11208131762731481, 0.13265967726009778, 0.1682010351087525, 0.03133352258175046, 0.03421740341145793, 0.0377594691967474, 0.04220759003636251, 0.04795054760439669, 0.05563423317654869, 0.06641550233107596, 0.08259180955534565, 0.10947764184060786, 0.16295665212053062, 0.3294556690482717, 0.05680848191411516, 0.059978682247269294, 0.06367206321000016, 0.06803114174328866, 0.07325721534694593, 0.07964544545517163, 0.08764984641234334, 0.09801509321572041, 0.11208131775607415, 0.13265967765066528, 0.16820103582866236, 0.03133352207598342, 0.03421740269284857, 0.03775946826548121, 0.04220758889212436, 0.04795054624760123, 0.05563423161265944, 0.0664155005856777, 0.08259180773082177, 0.10947764036157721, 0.16295665301728174, 0.3294556771798473], + [0.11965739532659687, 0.054455799362759294, 0.05760486402838999, 0.06130203510495194, 0.06570446813049606, 0.07103756864736752, 0.07763790761150366, 0.08603470832839545, 0.09712020330165881, 0.11255947621133122, 0.13604118285784617, 0.1805017885427032, 0.028553038205870254, 0.031186782076293832, 0.03443575105466481, 0.038537496448452134, 0.043868494016807924, 0.05106251194142147, 0.061274780792806176, 0.07685680465246739, 0.10345898585018799, 0.1592023185981714, 0.37156311035785194, 0.054455798906245106, 0.05760486355154186, 0.06130203462709254, 0.06570446767318712, 0.07103756823565685, 0.07763790727603226, 0.08603470810933589, 0.09712020325736781, 0.11255947644356337, 0.1360411836309493, 0.18050179012124776, 0.028553037181416965, 0.031186780704859397, 0.034435749330178754, 0.03853749436153863, 0.04386849155507484, 0.051062509092867026, 0.06127477756214447, 0.07685680113496302, 0.10345898261070163, 0.15920231920325223, 0.3715631282733391], + [0.13357628535728422, 0.05208556219896084, 0.055185921384488364, 0.058853113230946275, 0.06325744722305066, 0.06864676746284075, 0.07539758597612194, 0.08411443648416277, 0.09584346041651105, 0.11260473398988982, 0.13910160356855625, 0.1949093726933845, 0.025903523389234958, 0.028275915437264956, 0.031212055312658697, 0.03493355705437146, 0.03979431467746082, 0.04639590170445503, 0.05584916891710681, 0.07045712629267237, 0.09591438630759533, 0.1515152679645389, 0.419748910583149, 0.05208556132076834, 0.05518592048603579, 0.05885311234156231, 0.06325744637607812, 0.06864676669808806, 0.07539758534412766, 0.08411443605432915, 0.09584346029494989, 0.11260473437006485, 0.13910160498552113, 0.19490937600389913, 0.025903521463974923, 0.028275912990010473, 0.031212052325635224, 0.034933553500892014, 0.03979431051960978, 0.046395896892364404, 0.05584916339969858, 0.07045712009296626, 0.09591438000698528, 0.15151526679324656, 0.41974894764531534], + [0.14899130011207914, 0.0497306887344587, 0.052755746816558535, 0.05635924129948453, 0.06072241557695949, 0.06611259505404117, 0.07294244404000086, 0.0818875645948302, 0.09414578748079509, 0.11210374990624473, 0.14156474637813596, 0.21167502958377843, 0.023407188876583544, 0.02551397303088901, 0.02812686259726332, 0.03144693118932281, 0.035796747435059374, 0.04172787092722375, 0.050266816635956994, 0.06356544512416584, 0.08703716122384947, 0.13964408722701574, 0.47346712010474196, 0.04973068722535192, 0.05275574529851067, 0.05635923981158364, 0.060722414164366106, 0.06611259377209601, 0.0729424429616722, 0.08188756382554208, 0.09414578719215436, 0.11210375043255093, 0.14156474869543945, 0.21167503607407742, 0.02340718563076812, 0.025513969082628388, 0.02812685791120789, 0.031446925712250655, 0.03579674108860326, 0.041727863598145336, 0.050266808169804354, 0.0635654353694443, 0.08703715050307334, 0.1396440814727901, 0.4734671899476848], + [0.1658944794489937, 0.04743159917515436, 0.05035732700493666, 0.05386542599787737, 0.058145183215200416, 0.06347917576469411, 0.07030994584493432, 0.0793748453343219, 0.09201010119301598, 0.11095359098524975, 0.1431086515140224, 0.2309641541228139, 0.021079455348970887, 0.022922471130370232, 0.02521015863794884, 0.028119676808950684, 0.031935605437213035, 0.03714537442290278, 0.044658171010005555, 0.056385668313200875, 0.07715782076965544, 0.12401067481158717, 0.5313749257084379, 0.047431599158319425, 0.0503573269885443, 0.05386542598212033, 0.058145183200345375, 0.0634791757511452, 0.07030994583335382, 0.07937484532587703, 0.09201010118992331, 0.11095359099213495, 0.14310865154347122, 0.2309641542304794, 0.021079455318473096, 0.02292247109460529, 0.025210158596359947, 0.02811967676075599, 0.031935605381337724, 0.03714537435791615, 0.044658170934166026, 0.05638566822511753, 0.07715782067259883, 0.12401067476274086, 0.5313749270281275], + [0.18417644799597832, 0.04523194014426691, 0.0480384493532265, 0.05142356597925557, 0.05558124221011603, 0.06080403103945791, 0.06755581408127657, 0.07662128462571306, 0.08944953406960737, 0.10908155129009972, 0.14341262171246114, 0.2527999657707954, 0.01892492335439543, 0.02051064769602027, 0.022477987768415652, 0.024978118865384275, 0.028253345984429985, 0.03271752551737034, 0.03913968910262916, 0.04912783689657061, 0.06670673380671183, 0.10577961373060545, 0.5913835805337474, 0.04523194012085455, 0.04803844933011219, 0.051423565956626914, 0.05558124218825953, 0.06080403101884562, 0.06755581406273692, 0.07662128461079427, 0.08944953406142822, 0.10908155129565712, 0.14341262175183717, 0.25279996596441057, 0.018924923308382986, 0.020510647643304156, 0.02247798770812565, 0.0249781187963289, 0.028253345904980083, 0.03271752542530935, 0.039139688995024347, 0.04912783677002115, 0.06670673366032653, 0.10577961360319493, 0.591383582678931], + [0.2036368959971511, 0.04317062957770867, 0.04584316151936109, 0.049083345879548844, 0.05308621034643448, 0.05814839565971189, 0.06474499793294212, 0.07368957129203296, 0.08650758448427817, 0.10646257218539702, 0.14222377435152317, 0.27703975716793416, 0.016934647981240763, 0.01827249035451946, 0.01992913978986532, 0.02202902177362454, 0.024770383039860573, 0.028489287367066803, 0.03380400268433887, 0.04198906127790805, 0.05616322595766484, 0.08662077445534555, 0.6509979688333964, 0.04317062955024415, 0.045843161491993266, 0.04908334585240481, 0.05308621031974304, 0.05814839563389519, 0.06474499790880314, 0.0736895712711711, 0.08650758447012247, 0.10646257218627277, 0.1422237743937034, 0.27703975745809095, 0.016934647919305674, 0.018272490285954526, 0.0199291397136544, 0.022029021688402543, 0.02477038294377304, 0.028489287257564437, 0.033804002557899136, 0.041989061129807444, 0.05616322578299829, 0.08662077426714984, 0.6509979716136832], + [0.22403718195276473, 0.041273105702262385, 0.04380193448527518, 0.0468811552872364, 0.05070336491364911, 0.05556332002379337, 0.06193660354280523, 0.07064498886512248, 0.08324678663421596, 0.10312357705826944, 0.13941317700888095, 0.3034119869267081, 0.015087149844192382, 0.01618812737252002, 0.01754701167486306, 0.019262004070414295, 0.02148805634435239, 0.02448466291132883, 0.02872169968208712, 0.035146686668086104, 0.04600135740240785, 0.0682357523797635, 0.7078374946892476, 0.0412731056758789, 0.04380193445874511, 0.04688115526060152, 0.05070336488702995, 0.05556331999746507, 0.06193660351735893, 0.07064498884184141, 0.08324678661607295, 0.10312357705315979, 0.1394131770446427, 0.30341198728644836, 0.015087149775552477, 0.01618812729876412, 0.017547011595062053, 0.0192620039833382, 0.02148805624833933, 0.02448466280407958, 0.028721699560341415, 0.035146686527155836, 0.04600135723598946, 0.0682357521867147, 0.7078374975361921], + [0.24517427776870568, 0.03954633435749375, 0.04192556511782765, 0.0448326138353812, 0.048454443518062364, 0.053078326497556276, 0.05916997130960279, 0.06753873919281801, 0.07973043373238042, 0.09913012950305013, 0.13498963096262762, 0.33160381238290104, 0.013353898655112424, 0.014230280810826675, 0.015307239013636464, 0.01665856201856939, 0.018399166308815267, 0.020718412881976858, 0.023952159677189368, 0.02875904334042056, 0.036635060624212915, 0.05190647499335653, 0.7600797038742859, 0.03954633433660321, 0.04192556509649162, 0.04483261381358208, 0.048454443495828683, 0.05307832647501439, 0.059169971287093, 0.06753873917118174, 0.07973043371377138, 0.09913012949374626, 0.13498963098685574, 0.33160381275913714, 0.013353898593535635, 0.014230280745966177, 0.015307238944787355, 0.016658561944809316, 0.01839916622890609, 0.020718412794208427, 0.023952159579128635, 0.02875904322853749, 0.03663506049363636, 0.051906474841486305, 0.7600797062185857], + [0.266940506802263, 0.03797973289471569, 0.040205507760561116, 0.04293207135473345, 0.04633795792093486, 0.050697999181710314, 0.0564587118419164, 0.06439813662132808, 0.07600700314280191, 0.09456275348818817, 0.1290673898402793, 0.36135273627032705, 0.0117073777283542, 0.012373468361554792, 0.013188183259490803, 0.014203918096030936, 0.015501015964925783, 0.017209401284295357, 0.019554164490587778, 0.022963420293484065, 0.0283690923636238, 0.0382932731259421, 0.8066366864454833, 0.03797973288054027, 0.040205507745687666, 0.04293207133913158, 0.046337957904594974, 0.05069799916467563, 0.05645871182435944, 0.06439813660374973, 0.07600700312661665, 0.09456275347780974, 0.1290673898534685, 0.3613527366125977, 0.011707377682490338, 0.01237346831376556, 0.013188183209317323, 0.014203918042880712, 0.015501015908015392, 0.01720940122256383, 0.01955416442256996, 0.022963420217161534, 0.028369092276503832, 0.03829327302757038, 0.8066366880477571], + [0.2893481376526583, 0.03655031772424501, 0.03861908620788139, 0.041157776950594194, 0.0443341153904744, 0.048406263854099775, 0.05379356721927785, 0.06122644522331572, 0.07210344141278385, 0.08949541162881869, 0.12181406225425262, 0.39249951235268327, 0.01012862258195285, 0.01060225879287277, 0.01117981028934097, 0.011896235117420032, 0.012804269591936333, 0.013987561582123892, 0.015587666180910769, 0.01786599429737408, 0.021369868620496967, 0.027500057000182373, 0.8470776567977047, 0.03655031771559475, 0.038619086198437236, 0.041157776940344025, 0.04433411537941359, 0.04840626384225105, 0.05379356720674062, 0.061226445210395705, 0.07210344140037493, 0.08949541161974654, 0.1218140622597824, 0.3924995126321329, 0.010128622552625526, 0.01060225876245179, 0.011179810257573763, 0.011896235083987287, 0.01280426955642837, 0.013987561544009305, 0.015587666139501636, 0.017865994251818916, 0.02136986856996842, 0.027500056945226208, 0.8470776577361708], + [0.3125228752922505, 0.035228815012399994, 0.03713608238531296, 0.0394789556050683, 0.042412335136289184, 0.04617415981318267, 0.0511499349350831, 0.058008883249321117, 0.06802643155776275, 0.08398372226079463, 0.11340872161909513, 0.42499198564183444, 0.008611963620749218, 0.008915893461898507, 0.009287810796098897, 0.009749609921699737, 0.010333820547549204, 0.011091140386283872, 0.012105601083476053, 0.01352851659253314, 0.015666712594627864, 0.019271909581396407, 0.8814371195380074, 0.03522881402508547, 0.03713608130060506, 0.03947895441861343, 0.04241233384197811, 0.046174158403811005, 0.05114993340487091, 0.058008881602270544, 0.0680264298360448, 0.08398372065362088, 0.11340872099214182, 0.4249920143557182, 0.008611960973786916, 0.008915890745037994, 0.009287807989704234, 0.009749607001567524, 0.010333817483233339, 0.011091137138675855, 0.012105597601410268, 0.013528512808731772, 0.015666708425129745, 0.019271904956720057, 0.8814371689270849], + [0.3366813651721902, 0.03398454405616076, 0.03572417618069595, 0.037861856718749136, 0.04053792859799375, 0.04396709781742547, 0.048495462368579836, 0.05471986501741351, 0.0637674989069007, 0.07806344873929877, 0.10402423435268496, 0.45885390916430174, 0.007166121010970551, 0.007328364508524176, 0.007532150994076719, 0.007790448339820828, 0.008122271588611599, 0.0085568208359788, 0.009141676666327148, 0.009960784691358466, 0.011180032032557486, 0.013191556775246562, 0.9100298356807165, 0.03398454334844088, 0.03572417537990041, 0.03786185582483691, 0.04053792760882021, 0.04396709672896434, 0.04849546117615931, 0.054719863720322684, 0.0637674975248859, 0.07806344737731988, 0.10402423351539863, 0.4588539324819362, 0.007166119465621455, 0.007328362931295765, 0.00753214937732914, 0.007790446674208828, 0.008122269862531652, 0.008556819034823193, 0.009141674771571186, 0.009960782679854853, 0.011180029878040811, 0.013191554461337789, 0.9100298619161008], + [0.36210533455272037, 0.03278842989217325, 0.034352368497318146, 0.036273621907338655, 0.03867643605863341, 0.041749669363754696, 0.04579529828316888, 0.05132861765931122, 0.05930889198221536, 0.07175666241249692, 0.09383243006050966, 0.49413759299568877, 0.0058117729701177056, 0.005864405244711258, 0.005941134061667506, 0.006049346701194382, 0.006199732510068098, 0.00640847631354341, 0.006701538366902383, 0.007123869089279479, 0.007762162426889268, 0.008814094930929701, 0.9333235065156222, 0.03278842936917822, 0.03435236789064153, 0.036273621220587055, 0.03867643529302978, 0.04174966851820515, 0.045795297354900094, 0.05132861664656385, 0.059308890894460724, 0.07175666131145335, 0.09383242925508566, 0.49413761145904456, 0.005811772139614358, 0.00586440440364329, 0.005941133208224396, 0.006049345832936535, 0.006199731623785561, 0.0064084754050836076, 0.006701537431004831, 0.007123868119580069, 0.007762161416705776, 0.008814093876777137, 0.9333235192176452], + [0.38911752204441075, 0.031614356476994246, 0.032992508007841356, 0.03468398742136083, 0.03679552115316154, 0.03948779511188001, 0.04301468036560489, 0.04780271346508488, 0.05462938497621071, 0.06508303933475268, 0.08302340458619867, 0.5308726282246663, 0.004576247674071237, 0.004552668434040024, 0.004543120629905064, 0.0045517224986108525, 0.004584318546738575, 0.004649592491338222, 0.004761201610674554, 0.004942266141468165, 0.005236093751688665, 0.005737153835776735, 0.9518656376017824, 0.03161435605090797, 0.0329925075095268, 0.03468398685732961, 0.036795520527287025, 0.03948779442552395, 0.04301467961820265, 0.04780271265643919, 0.054629384114990985, 0.06508303847127117, 0.08302340395212206, 0.5308726427812986, 0.004576247251663145, 0.0045526680116739675, 0.0045431202078367785, 0.004551722076780745, 0.004584318124759534, 0.00464959206848223, 0.004761201185875512, 0.004942265713398847, 0.005236093319097594, 0.005737153398536858, 0.9518656432549685], + [0.41806093139858536, 0.03043918148890334, 0.03161924916585737, 0.0330651844343331, 0.034864867952109926, 0.037148799822806576, 0.04011964688241323, 0.04411048069885422, 0.04971072989827056, 0.05807488554546091, 0.0718288569404325, 0.5690181391486524, 0.0034866111232290356, 0.0034180357356030735, 0.0033585436297193625, 0.0033103658690542136, 0.003276572581801509, 0.0032615997311241413, 0.0032722356799194563, 0.003319630822154592, 0.003423885581572427, 0.0036264062447069006, 0.9662461260538304, 0.030439181075620627, 0.0316192486943018, 0.03306518391306067, 0.03486486738681142, 0.03714879921672526, 0.04011964623745393, 0.04411048001891242, 0.049710729199639, 0.05807488489073655, 0.07182885655008828, 0.5690181508736896, 0.003486610910370911, 0.0034180355274808887, 0.0033585434268574937, 0.0033103656717343574, 0.0032765723900847377, 0.0032615995448752686, 0.0032722354988485485, 0.0033196306459204444, 0.003423885410080313, 0.0036264060788738293, 0.9662461284089318], + [0.44928084035098964, 0.02924166805420836, 0.030208770965563497, 0.031390495719751915, 0.03285474072615023, 0.03470036077618323, 0.03707717717731312, 0.04022391025244518, 0.04454616568033605, 0.0507948219817045, 0.060539225257684424, 0.6084226910129648, 0.002562893397708418, 0.0024751737208915958, 0.0023944659261703857, 0.002321868770496915, 0.002258836987895236, 0.002207404286170386, 0.0021705860777880793, 0.002153162519579862, 0.002163357410561831, 0.0022169627381867945, 0.9770752950396309, 0.029241667561185437, 0.030208770435735503, 0.031390495162105556, 0.03285474014689028, 0.03470036017982696, 0.037077176569089314, 0.04022390964406581, 0.04454616510446488, 0.050794821528275046, 0.06053922515059559, 0.6084227009708602, 0.0025628932843851024, 0.002475173614176337, 0.0023944658261562898, 0.0023218686770821147, 0.0022588369008182765, 0.002207404205054155, 0.0021705860022121328, 0.0021531624492287455, 0.0021633573455499796, 0.0022169626795934994, 0.9770752960001302], + [0.4831093758778054, 0.02800052613969925, 0.028736585779981713, 0.02963200556856495, 0.030734039357473125, 0.032109554879931966, 0.03385643542425374, 0.036124035144740003, 0.03915239535093475, 0.043354054087470506, 0.04950490255407758, 0.6487955016061424, 0.0018132827151683974, 0.001725020843812233, 0.001642886852231158, 0.0015672757408011783, 0.0014986995529677836, 0.0014378665850031244, 0.0013858156324729328, 0.0013441588862792362, 0.0013155585834638119, 0.0013047662854318908, 0.9849646716767725, 0.0280005254554083, 0.02873658509706422, 0.029632004893281237, 0.0307340386945366, 0.03210955423484319, 0.03385643480777267, 0.03612403458172261, 0.03915239489751999, 0.043354053860400366, 0.04950490274721126, 0.6487955107680224, 0.001813282647920524, 0.0017250207837307813, 0.001642886798791636, 0.0015672756933894762, 0.0014986995109239631, 0.001437866547681114, 0.0013858155993346866, 0.0013441588570524768, 0.0013155585583755226, 0.001304766265265488, 0.9849646720972164], + [0.5198535261771846, 0.02669185441484197, 0.02717494291755144, 0.027758351771451077, 0.028469067288676844, 0.029343710583470274, 0.03043325350822803, 0.03181082998863396, 0.033585313769618395, 0.03592634798242733, 0.03911400264866675, 0.6896923717620198, 0.0012325156653484532, 0.0011548543988114442, 0.0010826697784274315, 0.0010159396331138708, 0.0009546643931605187, 0.0008988884974739079, 0.0008487321462662666, 0.0008044418015688876, 0.0007664766249364165, 0.0007356688799633999, 0.9905051496837342, 0.02669185341437102, 0.027174941983286013, 0.027758350902175453, 0.028469066485461096, 0.0293437098535909, 0.030433252871534627, 0.031810829487296625, 0.03358531348052623, 0.035926348021973614, 0.039114003117824155, 0.689692380897018, 0.0012325156209290872, 0.0011548543612892386, 0.0010826697467561804, 0.0010159396063253896, 0.0009546643704029315, 0.0008988884780668647, 0.0008487321297773839, 0.0008044417879007645, 0.0007664766143468818, 0.0007356688727092409, 0.9905051499051529], + [0.5597889777406282, 0.02528656490232402, 0.02549073919590569, 0.025733832964740477, 0.026024889896393504, 0.026375407910394815, 0.026800198369930594, 0.027318637030551214, 0.02795653428562298, 0.028749017430199798, 0.02974513131220289, 0.7305191060537239, 0.0008035832850633219, 0.0007413910810638933, 0.0006839109443255518, 0.0006309166935694145, 0.0005821855582203397, 0.0005375024123504124, 0.0004966641506729206, 0.000459484576873652, 0.0004258004044772077, 0.0003954793875910367, 0.9942430821217377, 0.025286563484428683, 0.025490737938655854, 0.025733831855180522, 0.02602488893150285, 0.02637540710151113, 0.026800197747941353, 0.027318636649679717, 0.027956534219210846, 0.028749017741479612, 0.02974513196354557, 0.7305191155438027, 0.0008035832541574704, 0.0007413910560574461, 0.0006839109239461773, 0.0006309166767954582, 0.0005821855442897594, 0.0005375024007758396, 0.0004966641412469984, 0.0004594845696267851, 0.0004258003995087251, 0.0003954793846566911, 0.9942430822645815], + [0.6031636361032606, 0.023748892800376856, 0.023645523925084067, 0.023521015193829053, 0.023371877959903874, 0.023194138542624792, 0.02298332429528701, 0.022734473567024162, 0.0224421804864246, 0.022100687550305195, 0.021704040295578302, 0.77055391836674, 0.0005017709987296561, 0.00045553872350945066, 0.00041314101192930727, 0.0003742967145191461, 0.00033873712926788755, 0.00030620719737266874, 0.0002764663278782003, 0.0002492889167789955, 0.00022446461762054993, 0.00020179841034921727, 0.9966582901833233, 0.023748890958729882, 0.02364552235451684, 0.023521013870612312, 0.023371876880156718, 0.02319413772301746, 0.022983323770257375, 0.02273447337831542, 0.022442180659072546, 0.022100688049664467, 0.021704040969027318, 0.7705539279902192, 0.0005017709776013634, 0.0004555387067273577, 0.0004131409983767063, 0.0003742967034208518, 0.00033873712014881053, 0.00030620719000671605, 0.00027646632220830594, 0.0002492889127893248, 0.00022446461515727553, 0.00020179840894246983, 0.9966582902836277], + [0.6502150684781471, 0.02203780728443445, 0.02159997463578552, 0.021089577743773624, 0.02049984975026392, 0.019825238104854665, 0.019062147407946584, 0.018209742583259452, 0.017270716118867966, 0.016251888173226398, 0.015164492300288695, 0.8089886513564959, 0.0002994714138322686, 0.00026722642438906324, 0.0002379396071162623, 0.00021135924817172, 0.0001872560021587507, 0.00016542247887368287, 0.00014567235846732853, 0.00012783900532645182, 0.00011177357184197151, 9.734263244537156e-05, 0.9981486973368378, 0.022037805179567858, 0.021599972895963347, 0.02108957634453086, 0.02049984869158152, 0.019825237401659285, 0.01906214707446197, 0.018209742611207193, 0.01727071645335871, 0.016251888695853915, 0.015164492834258497, 0.8089886602437304, 0.0002994714004872284, 0.0002672264136911066, 0.00023793959838393688, 0.00021135924101696888, 0.00018725599639961456, 0.00016542247443886913, 0.0001456723552941496, 0.0001278390032681876, 0.00011177357061623536, 9.734263166239195e-05, 0.99814869740341], + [0.7012037551189984, 0.020113713991215757, 0.019325404592426404, 0.01843321343057977, 0.017439180087739637, 0.016350749451368076, 0.015181292384094856, 0.013949960816723438, 0.01268074498729265, 0.011400767625032988, 0.010138043280395241, 0.8449869298799165, 0.00017033190992922408, 0.00014912892836801517, 0.00013010540727156978, 0.00011306880926731213, 9.784918394457189e-05, 8.42960693866429e-05, 7.227492530939655e-05, 6.166335961468026e-05, 5.2347513014803956e-05, 4.421899849507423e-05, 0.9990247148954436, 0.02011371398156405, 0.019325404584680374, 0.018433213424566802, 0.01743918008333458, 0.01635074944848788, 0.015181292382650481, 0.013949960816531888, 0.012680744988001258, 0.01140076762613242, 0.010138043281350652, 0.8449869299080303, 0.00017033190989562455, 0.00014912892834087208, 0.00013010540724915477, 0.00011306880924873588, 9.784918392950977e-05, 8.429606937498775e-05, 7.227492530091921e-05, 6.166335960883705e-05, 5.234751301078725e-05, 4.421899849206927e-05, 0.9990247148956405], + [0.7564579841329047, 0.01795235526262489, 0.01682288530222411, 0.015591914613454086, 0.014280803249176037, 0.012917987264403798, 0.011536806541286911, 0.010172381662427761, 0.008858130676994527, 0.007622636705832318, 0.00648745841691916, 0.8777566408264919, 9.191375142154063e-05, 7.876963596802746e-05, 6.716506249068247e-05, 5.6961971375235835e-05, 4.8037177513263855e-05, 4.0278061273631185e-05, 3.3578849059225965e-05, 2.7837917869781223e-05, 2.2956363667205093e-05, 1.883780268301492e-05, 0.9995136634066968, 0.01795235525501275, 0.016822885296375427, 0.015591914609132167, 0.014280803246222135, 0.01291798726267938, 0.011536806540591579, 0.01017238166245681, 0.00885813067737819, 0.007622636706233429, 0.006487458417120479, 0.8777566408361557, 9.191375140633254e-05, 7.876963595536905e-05, 6.716506248004796e-05, 5.6961971366508746e-05, 4.8037177506440435e-05, 4.027806126859569e-05, 3.357884905567446e-05, 2.7837917867292898e-05, 2.295636366537886e-05, 1.8837802681570905e-05, 0.9995136634067807], + [0.8164182206107888, 0.01556463868613893, 0.01414470729775743, 0.012668549993563785, 0.011178565313588379, 0.009718691652614018, 0.008329374560019615, 0.007043355649901478, 0.005883146565298548, 0.004860458900279012, 0.003977287525378015, 0.9066313073161952, 4.6755673673969144e-05, 3.910934942256285e-05, 3.25006606910029e-05, 2.6829381657893864e-05, 2.2001858659189587e-05, 1.7928404844540397e-05, 1.4522123894956278e-05, 1.1699023563518703e-05, 9.379008214820749e-06, 7.487232451605359e-06, 0.9997717872853283, 0.015564637660108346, 0.014144706574470551, 0.012668549571972833, 0.011178565153492963, 0.009718691681847887, 0.0083293746942862, 0.007043355814616462, 0.005883146709707676, 0.004860459000241108, 0.003977287577547491, 0.9066313096572229, 4.675567240489109e-05, 3.9109348310132053e-05, 3.2500659814447413e-05, 2.6829381034156044e-05, 2.2001858254451034e-05, 1.792840459870639e-05, 1.4522123746532214e-05, 1.1699023465475557e-05, 9.379008139078425e-06, 7.487232385557869e-06, 0.9997717872905705], + [0.8816645532403707, 0.01301505135129139, 0.011405176699565638, 0.00982283938858388, 0.008319605330584803, 0.006936971292161571, 0.005702590139618712, 0.004629552154173512, 0.0037181882614309245, 0.002959302897771482, 0.0023377377369104965, 0.9311530502307194, 2.2235375486752947e-05, 1.8097154686438588e-05, 1.4616386744514015e-05, 1.1717898646891188e-05, 9.329342497210458e-06, 7.38118941332937e-06, 5.807638636784314e-06, 4.547868854920911e-06, 3.5471444155194812e-06, 2.7574917211103246e-06, 0.9998999625098829, 0.013015050864211241, 0.011405176416536123, 0.009822839289154568, 0.008319605361075335, 0.0069369713899837, 0.005702590253411612, 0.004629552252715461, 0.003718188332295567, 0.0029593029409396513, 0.0023377377581459565, 0.9311530513208326, 2.223537513207836e-05, 1.8097154382910593e-05, 1.4616386529011025e-05, 1.17178985147005e-05, 9.329342424763745e-06, 7.381189375475724e-06, 5.807638615242414e-06, 4.547868839557943e-06, 3.5471444021252688e-06, 2.7574917086287537e-06, 0.9998999625108901], + [0.9529155710006632, 0.010425631398003636, 0.008766053549769927, 0.00723403644446763, 0.005869252274636233, 0.004691507187898673, 0.003702771407700507, 0.0028917444316175593, 0.0022390660740687768, 0.0017218521384922394, 0.0013169750613179372, 0.9511411547502667, 9.788791137193033e-06, 7.728743935411676e-06, 6.052064091916912e-06, 4.703767878885338e-06, 3.631908889659805e-06, 2.7886465264848542e-06, 2.131244756053577e-06, 1.6226756920015974e-06, 1.2317379867140216e-06, 9.327625442626445e-07, 0.9999593876569233, 0.01042563123937423, 0.008766053503221953, 0.007234036478488782, 0.005869252347721995, 0.0046915072672187785, 0.0037027714751417667, 0.0028917444813001216, 0.002239066107138767, 0.0017218521587766152, 0.001316975072840001, 0.9511411553407705, 9.788791069646961e-06, 7.728743884576472e-06, 6.052064064604389e-06, 4.7037678688092134e-06, 3.6319088884724135e-06, 2.7886465283196796e-06, 2.1312447580176767e-06, 1.6226756931689697e-06, 1.2317379870771213e-06, 9.327625440903448e-07, 0.9999593876569832], + [1.031000530645384, 0.007955225108953533, 0.006395078938079008, 0.005046959526243391, 0.003921029745135856, 0.0030071338504186573, 0.002282404539483627, 0.0017182362880603613, 0.0012853675712794221, 0.0009569189348530846, 0.0007098030717537473, 0.9667218689283038, 3.946605524340352e-06, 3.0149731584874964e-06, 2.28464166258152e-06, 1.7193116547213349e-06, 1.2865290167055061e-06, 9.582953124677063e-07, 7.112426078565138e-07, 5.264152050808208e-07, 3.8879163900567315e-07, 2.866871728006495e-07, 0.9999848765071362, 0.00795522508493429, 0.006395078961262532, 0.005046959572206575, 0.003921029793899038, 0.0030071338915914434, 0.0022824045702072803, 0.0017182363093655561, 0.001285367585435195, 0.0009569189440541817, 0.0007098030776909218, 0.9667218693051417, 3.946605518243167e-06, 3.014973156550576e-06, 2.28464166444058e-06, 1.7193116581627713e-06, 1.2865290201374524e-06, 9.582953152267919e-07, 7.112426098522421e-07, 5.264152064497622e-07, 3.887916399238645e-07, 2.8668717341421007e-07, 0.999984876507119], + [1.1168202002953929, 0.005758313774040124, 0.004417137739751311, 0.003332342476852211, 0.0024807435342879473, 0.0018277882899347482, 0.00133615087218506, 0.0009710225359540018, 0.000702608199494923, 0.00050677154731818, 0.0003646726113926728, 0.9783024620448583, 1.4413053391089169e-06, 1.0631335577393125e-06, 7.784643094010839e-07, 5.666968059120869e-07, 4.1066746611231686e-07, 2.965714138075266e-07, 2.136215684979271e-07, 1.5357848705945075e-07, 1.1025723085892254e-07, 7.907528745114736e-08, 0.9999948866285473, 0.005758313781642475, 0.004417137761528984, 0.0033323425012605013, 0.002480743555210512, 0.0018277883056971467, 0.0013361508832879679, 0.0009710225435273953, 0.0007026082046055241, 0.0005067715507737317, 0.00036467261374980225, 0.9783024622623998, 1.441305339932531e-06, 1.0631335591653996e-06, 7.784643110221456e-07, 5.666968073458486e-07, 4.106674672228013e-07, 2.9657141461047e-07, 2.1362156906017177e-07, 1.5357848744881827e-07, 1.1025723112861573e-07, 7.907528763895283e-08, 0.9999948866285449], + [1.2113153313543679, 0.003943133992642284, 0.002884777256831174, 0.0020814195819494224, 0.001486216511176265, 0.001053119286568251, 0.0007421053393016629, 0.0005208726063790836, 0.00036456585460005106, 0.0002546590746697447, 0.00017763868125757296, 0.9864914978868503, 4.7162309738703767e-07, 3.353345202889367e-07, 2.369821284693514e-07, 1.667114182800607e-07, 1.1688364321629675e-07, 8.174941648826142e-08, 5.7076745543122155e-08, 3.980129666426629e-08, 2.7730450487229894e-08, 1.9308608996219178e-08, 0.9999984467986746, 0.00394313399956437, 0.0028847772664132346, 0.0020814195906289665, 0.001486216517825831, 0.001053119291281203, 0.0007421053425313677, 0.0005208726085702854, 0.0003645658560899087, 0.0002546590756903615, 0.00017763868196297796, 0.9864914979862804, 4.7162309779787967e-07, 3.353345207198995e-07, 2.369821288416889e-07, 1.667114185641181e-07, 1.1688364341932217e-07, 8.174941662911208e-08, 5.70767456398366e-08, 3.980129673063672e-08, 2.773045053293945e-08, 1.9308609027850177e-08, 0.9999984467986756], + [1.3154541537850482, 0.0025497631714636545, 0.0017796013684602987, 0.0012288663223159252, 0.0008421565660472073, 0.0005740906588831661, 0.00038992331117403264, 0.0002641733627839417, 0.000178672048998607, 0.00012070357412636574, 8.147833621650598e-05, 0.9919905736184926, 1.3678628770793325e-07, 9.361250389379532e-08, 6.376570565570346e-08, 4.329065142302834e-08, 2.9321814475567144e-08, 1.9828498541719254e-08, 1.3394011269451963e-08, 9.040772907633984e-09, 6.099287544983225e-09, 4.113416639593443e-09, 0.9999995807470499, 0.002549763174245501, 0.0017796013713758056, 0.0012288663246399953, 0.0008421565677068962, 0.0005740906600163755, 0.0003899233119367763, 0.0002641733632972316, 0.00017867204934587637, 0.00012070357436285793, 8.147833637850409e-05, 0.9919905736539077, 1.3678628778633383e-07, 9.361250396259816e-08, 6.376570570816861e-08, 4.329065146008859e-08, 2.932181450084698e-08, 1.9828498558744748e-08, 1.33940112808937e-08, 9.0407729153402e-09, 6.099287550191678e-09, 4.113416643125685e-09, 0.9999995807470503], + [1.4302391972007784, 0.0015545243926915642, 0.001035495163497228, 0.0006845025528041328, 0.00045015911720959934, 0.00029503207118112017, 0.000192925554921568, 0.00012596922512654238, 8.21705259613102e-05, 5.356623126771994e-05, 3.490483259128431e-05, 0.9954907511076208, 3.4777969673570296e-08, 2.2872038176376142e-08, 1.4991540166183194e-08, 9.804058098263955e-09, 6.401949683383422e-09, 4.1762567395260435e-09, 2.7225669022706835e-09, 1.7741248007045424e-09, 1.1557617968886123e-09, 7.527889339195241e-10, 0.9999999005709451, 0.001554524393459533, 0.0010354951641711478, 0.0006845025532953697, 0.00045015911754347636, 0.00029503207140268956, 0.00019292555506794502, 0.00012596922522350838, 8.217052602583307e-05, 5.35662313108287e-05, 3.490483262017078e-05, 0.9954907511175505, 3.47779696829508e-08, 2.287203818366383e-08, 1.499154017129707e-08, 9.804058101686764e-09, 6.401949685633219e-09, 4.176256740997908e-09, 2.7225669032343646e-09, 1.774124801337063e-09, 1.1557617973048426e-09, 7.52788934194005e-10, 0.999999900570945], + [1.5567268628403712, 0.0008919184865840307, 0.0005669799931845061, 0.0003585855338110924, 0.00022604777587046756, 0.00014220275695754915, 8.934029459993074e-05, 5.608266806882235e-05, 3.518720655508677e-05, 2.206985566186911e-05, 1.3839660437840485e-05, 0.997597745987448, 7.661402266051157e-09, 4.832235505853722e-09, 3.0409853539220277e-09, 1.910989053835857e-09, 1.199795055129883e-09, 7.528464018693079e-10, 4.72224461401526e-10, 2.961363542005989e-10, 1.8568331506402477e-10, 1.1641664180487526e-10, 0.9999999795312855, 0.0008919184867429924, 0.000566979993306881, 0.00035858553389440945, 0.00022604777592485597, 0.00014220275699264125, 8.934029462255742e-05, 5.6082668083446884e-05, 3.5187206564562656e-05, 2.2069855668019267e-05, 1.3839660441835463e-05, 0.9975977459896517, 7.661402266816876e-09, 4.832235506393934e-09, 3.040985354277374e-09, 1.910989054063186e-09, 1.199795055274046e-09, 7.528464019606337e-10, 4.722244614594646e-10, 2.9613635423742516e-10, 1.8568331508746782e-10, 1.1641664181981596e-10, 0.9999999795312856], + [1.6960521732503564, 0.00048034205313648423, 0.0002911182964865653, 0.0001758770464145985, 0.0001060499492783254, 6.387109750967499e-05, 3.8440765041058774e-05, 2.3125710731959403e-05, 1.3908715545677694e-05, 8.363962763680403e-06, 5.029177127556768e-06, 0.9987938732783919, 1.443854239897658e-09, 8.711276734203405e-10, 5.248494484908204e-10, 3.1595091273206284e-10, 1.900998284435114e-10, 1.1434294503305458e-10, 6.876318555385072e-11, 4.1347933798115496e-11, 2.486121093830043e-11, 1.4947655664682077e-11, 0.9999999963898548, 0.0004803420531617684, 0.0002911182965041395, 0.00017587704642590217, 0.00010604994928542402, 6.387109751410847e-05, 3.8440765043827854e-05, 2.3125710733690576e-05, 1.3908715546760695e-05, 8.3639627643579e-06, 5.0291771279803904e-06, 0.9987938732787776, 1.443854239941044e-09, 8.711276734485718e-10, 5.248494485083834e-10, 3.1595091274282074e-10, 1.9009982845007665e-10, 1.1434294503706243e-10, 6.876318555630003e-11, 4.134793379961414e-11, 2.4861210939217948e-11, 1.494765566524403e-11, 0.9999999963898548], + [1.8494534014914104, 0.00024194075620625514, 0.0001395182804682906, 8.030725307366986e-05, 4.617610981186524e-05, 2.6534706711306927e-05, 1.5242578419713913e-05, 8.754165510989924e-06, 5.027135684530888e-06, 2.886672249228905e-06, 1.657515896374594e-06, 0.9994319548364475, 2.295112115042725e-10, 1.3202888083769737e-10, 7.588980707752481e-11, 4.3600907365843054e-11, 2.5043267416946653e-11, 1.4382002837122033e-11, 8.258652431504548e-12, 4.742167110092947e-12, 2.7229006429973224e-12, 1.5634335498600968e-12, 0.9999999994622566, 0.0002419407562093478, 0.0001395182804702683, 8.030725307487687e-05, 4.6176109812592396e-05, 2.6534706711743634e-05, 1.5242578419976064e-05, 8.754165511147218e-06, 5.027135684625206e-06, 2.8866722492854025e-06, 1.6575158964083921e-06, 0.9994319548365003, 2.2951121150596686e-10, 1.320288808387246e-10, 7.588980707813117e-11, 4.3600907366197933e-11, 2.5043267417154137e-11, 1.4382002837243385e-11, 8.258652431575583e-12, 4.7421671101345435e-12, 2.722900643021681e-12, 1.5634335498743604e-12, 0.9999999994622567], + [2.018294066964694, 0.0001134370011268108, 6.204982171440769e-05, 3.3907644527007224e-05, 1.8519107162474058e-05, 1.0111467500576136e-05, 5.519989628463087e-06, 3.0131730087391948e-06, 1.6447086814089623e-06, 8.977233003360692e-07, 4.899928979252917e-07, 0.9997504093721779, 3.028796250811686e-11, 1.6547225338906474e-11, 9.036330059556711e-12, 4.933509492464707e-12, 2.6931685465395375e-12, 1.4700778532163461e-12, 8.024173991304586e-13, 4.379768621536673e-13, 2.3905453778978304e-13, 1.3047883890384528e-13, 0.9999999999334218, 0.00011343700112709795, 6.204982171457853e-05, 3.3907644527106185e-05, 1.851910716253097e-05, 1.0111467500608753e-05, 5.519989628481776e-06, 3.0131730087498784e-06, 1.6447086814150656e-06, 8.977233003395504e-07, 4.899928979272728e-07, 0.9997504093721834, 3.0287962508161516e-11, 1.6547225338931813e-11, 9.036330059570901e-12, 4.933509492472611e-12, 2.6931685465439387e-12, 1.4700778532188008e-12, 8.02417399131827e-13, 4.3797686215442977e-13, 2.3905453779020683e-13, 1.3047883890408169e-13, 0.9999999999334218], + [2.204081834482466, 4.922145250472451e-05, 2.543476597701166e-05, 1.3136771309867512e-05, 6.783279833604736e-06, 3.502144887879509e-06, 1.8080032059399872e-06, 9.333599484302809e-07, 4.818272059648518e-07, 2.487307306640751e-07, 1.2840013852036409e-07, 0.9998983212644879, 3.259999127192371e-12, 1.6836207088141866e-12, 8.693162011247611e-13, 4.488105770002258e-13, 2.3169864415007227e-13, 1.196109784233163e-13, 6.174644442637809e-14, 3.1874944591680585e-14, 1.6454517546533926e-14, 8.49415055304675e-15, 0.9999999999932684, 4.9221452504744357e-05, 2.543476597702264e-05, 1.3136771309873533e-05, 6.783279833608025e-06, 3.5021448878812944e-06, 1.808003205940957e-06, 9.333599484308082e-07, 4.818272059651342e-07, 2.4873073066422797e-07, 1.284001385204464e-07, 0.9998983212644882, 3.2599991271931354e-12, 1.6836207088145936e-12, 8.693162011249804e-13, 4.488105770003406e-13, 2.3169864415013235e-13, 1.1961097842334817e-13, 6.1746444426395e-14, 3.187494459168942e-14, 1.6454517546538546e-14, 8.494150553049164e-15, 0.9999999999932684], + [2.4084850286265778, 1.962914930206218e-05, 9.534360206980192e-06, 4.63004429283318e-06, 2.2481840636513017e-06, 1.091580633325257e-06, 5.299912821089641e-07, 2.573216119223062e-07, 1.2493415821498807e-07, 6.065754953222676e-08, 2.9450177309733316e-08, 0.9999618643267466, 2.805734950639927e-13, 1.3624842096398033e-13, 6.615671819906809e-14, 3.212150249035022e-14, 1.5595803552050222e-14, 7.572073282133874e-15, 3.6763724641513834e-15, 1.784937676981995e-15, 8.666147043687235e-16, 4.207545110321614e-16, 0.9999999999994551, 1.9629149302063156e-05, 9.5343602069807e-06, 4.6300442928334346e-06, 2.2481840636514334e-06, 1.091580633325327e-06, 5.299912821089989e-07, 2.5732161192232406e-07, 1.2493415821499694e-07, 6.06575495322315e-08, 2.9450177309735513e-08, 0.9999618643267466, 2.8057349506400067e-13, 1.362484209639842e-13, 6.615671819907021e-14, 3.212150249035125e-14, 1.559580355205072e-14, 7.572073282134088e-15, 3.676372464151514e-15, 1.7849376769820586e-15, 8.666147043687542e-16, 4.207545110321764e-16, 0.9999999999994551], + [2.6333479975506964, 7.137306830679771e-06, 3.2397597275043374e-06, 1.4704537872231078e-06, 6.673779679692992e-07, 3.0288944421255543e-07, 1.3746517339982495e-07, 6.238778094623714e-08, 2.831428670114074e-08, 1.2850243686511319e-08, 5.831992323233737e-09, 0.9999869353627674, 1.8888594621821075e-14, 8.573085157241412e-15, 3.890963266701746e-15, 1.7659125003981482e-15, 8.014522003565113e-16, 3.6373444846509853e-16, 1.6507849464631151e-16, 7.491973433135079e-17, 3.400179185872724e-17, 1.5431470427870352e-17, 0.9999999999999656, 7.137306830679796e-06, 3.2397597275043543e-06, 1.4704537872231156e-06, 6.673779679693028e-07, 3.02889444212557e-07, 1.374651733998257e-07, 6.238778094623759e-08, 2.8314286701140942e-08, 1.285024368651141e-08, 5.831992323233758e-09, 0.9999869353627675, 1.8888594621821277e-14, 8.573085157241473e-15, 3.890963266701774e-15, 1.7659125003981733e-15, 8.014522003565227e-16, 3.6373444846510114e-16, 1.6507849464631386e-16, 7.491973433135186e-17, 3.400179185872772e-17, 1.543147042787057e-17, 0.9999999999999656], + [2.880706642810264, 2.345025715192658e-06, 9.88213439957494e-07, 4.1642717609889714e-07, 1.7547737067341213e-07, 7.394359098601835e-08, 3.115866534381547e-08, 1.312975698172273e-08, 5.532664452464809e-09, 2.331373697942238e-09, 9.8240240809721e-10, 0.9999959477778445, 9.707205994769578e-16, 4.0905622438835164e-16, 1.723714164895915e-16, 7.263480086928659e-17, 3.060716417511992e-17, 1.289736374406981e-17, 5.434737825256838e-18, 2.2901090430799657e-18, 9.65014165786552e-19, 4.0664103310899263e-19, 0.9999999999999982, 2.345025715192662e-06, 9.882134399574956e-07, 4.164271760988986e-07, 1.7547737067341276e-07, 7.394359098601835e-08, 3.115866534381547e-08, 1.312975698172273e-08, 5.532664452464829e-09, 2.3313736979422463e-09, 9.8240240809721e-10, 0.9999959477778445, 9.707205994769647e-16, 4.0905622438835455e-16, 1.723714164895915e-16, 7.263480086928659e-17, 3.0607164175120136e-17, 1.289736374406981e-17, 5.434737825256838e-18, 2.2901090430799657e-18, 9.65014165786552e-19, 4.0664103310899263e-19, 0.9999999999999982], + [3.152805231268829, 6.892697371939645e-07, 2.676846667037298e-07, 1.0395678746300731e-07, 4.0372002477791254e-08, 1.567858947896183e-08, 6.0888236787201096e-09, 2.364610940896214e-09, 9.183028834916865e-10, 3.566253282567396e-10, 1.3849637752156732e-10, 0.9999988731713576, 3.707211886133555e-17, 1.4397171312861298e-17, 5.591196710937887e-18, 2.1713584904746013e-18, 8.432531343214729e-19, 3.274796143259478e-19, 1.2717757133610824e-19, 4.938974284657893e-20, 1.9180635635102475e-20, 7.448849897178309e-21, 1.0, 6.892697371939634e-07, 2.6768466670372885e-07, 1.0395678746300731e-07, 4.037200247779111e-08, 1.5678589478961774e-08, 6.088823678720088e-09, 2.3646109408962057e-09, 9.183028834916865e-10, 3.566253282567384e-10, 1.3849637752156732e-10, 0.9999988731713577, 3.707211886133555e-17, 1.43971713128614e-17, 5.5911967109379264e-18, 2.171358490474617e-18, 8.432531343214789e-19, 3.274796143259478e-19, 1.2717757133610915e-19, 4.938974284657928e-20, 1.9180635635102475e-20, 7.448849897178361e-21, 1.0], + [3.4521152654667886, 1.7924341997526206e-07, 6.363192735915053e-08, 2.258944129500864e-08, 8.019280205951573e-09, 2.8468534138130677e-09, 1.0106359854824994e-09, 3.587768292682775e-10, 1.2736614632274153e-10, 4.5215113679996834e-11, 1.6051412084676647e-11, 0.9999997221113007, 1.0213727633147609e-18, 3.6258920687705396e-19, 1.2871964644230715e-19, 4.569562049168281e-20, 1.6221994121278807e-20, 5.75882487749742e-21, 2.0443888064960683e-21, 7.257601414568222e-22, 2.576456003448671e-22, 9.146445432363677e-23, 1.0, 1.792434199755623e-07, 6.363192735926424e-08, 2.258944129505158e-08, 8.019280205967698e-09, 2.846853413819106e-09, 1.010635985484758e-09, 3.5877682926912003e-10, 1.273661463230542e-10, 4.5215113680112976e-11, 1.6051412084719702e-11, 0.999999722111301, 1.0213727633157697e-18, 3.6258920687741984e-19, 1.287196464424407e-19, 4.5695620491731517e-20, 1.622199412129644e-20, 5.758824877503844e-21, 2.044388806498378e-21, 7.257601414576627e-22, 2.57645600345171e-22, 9.146445432374726e-23, 1.0], + [3.781356850400277, 4.073792598658112e-08, 1.3101853358099482e-08, 4.213724961597333e-09, 1.355187904824162e-09, 4.358457452180702e-10, 1.4017355643523887e-10, 4.5081605041981164e-11, 1.4498819598405322e-11, 4.6630054398851286e-12, 1.499682065719104e-12, 0.9999999399495674, 1.964856977928502e-20, 6.319234298151386e-21, 2.032346764807856e-21, 6.5362869648185785e-22, 2.1021533518976754e-22, 6.76079352675648e-23, 2.1743574933680987e-23, 6.993011225958751e-24, 2.2490416656579977e-24, 7.233205052521343e-25, 1.0, 4.073792598658749e-08, 1.310185335810167e-08, 4.213724961598082e-09, 1.355187904824417e-09, 4.3584574521815536e-10, 1.4017355643526774e-10, 4.508160504199109e-11, 1.4498819598408671e-11, 4.6630054398862554e-12, 1.4996820657194822e-12, 0.9999999399495672, 1.9648569779286972e-20, 6.319234298152015e-21, 2.0323467648080582e-21, 6.536286964819275e-22, 2.1021533518978994e-22, 6.760793526757248e-23, 2.174357493368346e-23, 6.993011225959546e-24, 2.2490416656582534e-24, 7.233205052522217e-25, 1.0] + ] +} diff --git a/tests/test_games/golden_logit/chance_in_middle_nonterm_outcomes.json b/tests/test_games/golden_logit/chance_in_middle_nonterm_outcomes.json new file mode 100644 index 0000000000..9e15c5a9dc --- /dev/null +++ b/tests/test_games/golden_logit/chance_in_middle_nonterm_outcomes.json @@ -0,0 +1,99 @@ +{ + "counts": [{"predictor_attempts": 93, "accepted_steps": 93, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 183, "function_evals": 183, "jacobian_evals": 94, "factorizations": 94}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.012620501262644912, 0.4993694728335319, 0.5006305271664682, 0.5037860780433749, 0.49621392195663694, 0.5056789813754183, 0.49432101862471584, 0.504101570868861, 0.49589842913115817, 0.5053635072608169, 0.4946364927392784, 0.5000149430779336, 0.49998505692206635, 0.5000149148077229, 0.49998508519227725], + [0.02650153772732714, 0.4986771175382026, 0.5013228824617975, 0.5079497918796522, 0.49205020812036876, 0.5119234315856219, 0.48807656841461566, 0.5086121472053844, 0.49138785279464947, 0.5112612480857149, 0.4887387519144537, 0.5000659352004305, 0.49993406479956937, 0.500065672465858, 0.49993432753414213], + [0.041766902433092945, 0.4979170972775384, 0.5020829027224616, 0.512527451829378, 0.487472548170659, 0.5187862618965426, 0.4812137381038774, 0.5135709048286852, 0.4864290951713748, 0.5177434751123536, 0.48225652488794457, 0.5001638648625065, 0.499836135137493, 0.5001628323166002, 0.49983716768340003], + [0.05855166783306094, 0.4970830821533019, 0.502916917846698, 0.5175582908990883, 0.48244170910097733, 0.5263239019319302, 0.4736760980688109, 0.519020092144425, 0.480979907855681, 0.5248639158222885, 0.4751360841782381, 0.5003221698088337, 0.49967783019116546, 0.5003193132631407, 0.49968068673686034], + [0.07700289750712476, 0.4961682196348452, 0.5038317803651546, 0.5230844863035696, 0.4769155136965469, 0.534595975279857, 0.46540402472144765, 0.5250050117803735, 0.474994988219814, 0.5326795254565213, 0.4673204745444064, 0.5005573405057354, 0.4994426594942634, 0.5005508144108699, 0.4994491855891332], + [0.09728029758005872, 0.4951651042622051, 0.5048348957377946, 0.5291510948412316, 0.47084890515897515, 0.5436647242329414, 0.45633527576934807, 0.5315738927566128, 0.46842610724371886, 0.5412500210745698, 0.45874997892706026, 0.5008894922117555, 0.49911050778824384, 0.5008762729855282, 0.4991237270144803], + [0.11955677138290877, 0.49406574570985634, 0.505934254290143, 0.5358058705473698, 0.4641941294529966, 0.5535941038075471, 0.4464058961964553, 0.5387776135087019, 0.4612223864918842, 0.5506371248159786, 0.4493628751868759, 0.501343000012824, 0.4986569999871788, 0.5013183435142949, 0.49868165648572677], + [0.1440188363188459, 0.4928615335899127, 0.507138466410086, 0.543098926925269, 0.4569010730753804, 0.5644484520717186, 0.43555154793524486, 0.5466692280051039, 0.4533307719959298, 0.5609034315230401, 0.4390965684819373, 0.5019471817128061, 0.49805281828720854, 0.5019038700395448, 0.4980961299605076], + [0.1708668613639125, 0.4915431965207842, 0.508456803479213, 0.5510822008160469, 0.44891779918510244, 0.5762906347010182, 0.42370936531102404, 0.5553032399863089, 0.44469676001551045, 0.572110805808818, 0.4278891941998145, 0.5027369997441511, 0.49726300025589776, 0.502664306364288, 0.4973356936358323], + [0.20031509032881795, 0.49010075219262583, 0.5098992478073688, 0.5598086719715567, 0.44019132803047334, 0.5891795611002001, 0.41082043892046893, 0.5647345656971214, 0.43526543430606995, 0.584318210165094, 0.4156817898497772, 0.5037537345830706, 0.4962462654170647, 0.5036360175614328, 0.4963639824388309], + [0.2325914340596248, 0.48852344487288096, 0.5114765551271085, 0.5693312934847761, 0.43066870651879713, 0.6031669836050393, 0.3968330164301086, 0.5750171258032695, 0.4249828742023032, 0.5975788741008425, 0.4024211259245613, 0.5050455583973081, 0.49495444160302715, 0.5048603695957068, 0.49513963040484466], + [0.26793704856954526, 0.48679966784055234, 0.5132003321594274, 0.5797015955045399, 0.4202984045017161, 0.6182935276679735, 0.381706472391117, 0.5862020154458228, 0.4137979845638457, 0.6119367411215829, 0.38806325892136223, 0.5066679098437645, 0.49333209015700014, 0.5063834847735403, 0.49361651522755645], + [0.30660576899884195, 0.4849168719252528, 0.5150831280747084, 0.5909679399244205, 0.4090320600864479, 0.6345839668428952, 0.36541603325507377, 0.5983352206005316, 0.40166477941609924, 0.6274221823760264, 0.3725778176956454, 0.5086835419110564, 0.491316458090568, 0.5082555129903782, 0.49174448701168744], + [0.34886354130671626, 0.482861469420875, 0.5171385305790498, 0.6031734275858437, 0.3968265724328352, 0.6520418563812483, 0.3479581437784719, 0.6114548811552114, 0.38854511887307086, 0.644047048025033, 0.3559529520927224, 0.5111620897340587, 0.4888379102691691, 0.5105292494801926, 0.4894707505234645], + [0.394988078604882, 0.4806187570305974, 0.5193812429692564, 0.6163534901812481, 0.38364650985039805, 0.670643771451172, 0.3293562288040539, 0.6255881462019749, 0.3744118538454231, 0.6617992401850954, 0.3382007600047591, 0.514178992259739, 0.48582100774626225, 0.5132579292190855, 0.48674207078694026], + [0.44526905255147575, 0.4781729033355721, 0.521827096664141, 0.6305332313484079, 0.36946676870424294, 0.6903335482542603, 0.3096664521440766, 0.6407477211992725, 0.35925227887873024, 0.6806371272749118, 0.31936287302441047, 0.5178136103170565, 0.48218638969335337, 0.5164920588271529, 0.48350794118195034], + [0.500009189476904, 0.4755070744834903, 0.5244929255159406, 0.6457246070498018, 0.3542753930358844, 0.711017074360403, 0.288982926244558, 0.6569282621596647, 0.3430717379659269, 0.7004842618710904, 0.2995157385886479, 0.5221464240105428, 0.4778535760062247, 0.5202752213249776, 0.47972477868733626], + [0.5595266494299102, 0.47260380107585365, 0.5273961989230069, 0.6619235447726489, 0.33807645536326686, 0.7325582845908744, 0.2674417162998343, 0.6741028186053926, 0.3258971815917396, 0.7212249878299589, 0.2787750128553437, 0.5272552719504665, 0.4727447280744299, 0.5246389163742345, 0.4753610836400377], + [0.6241590034370215, 0.46944570842907307, 0.5305542915686261, 0.679107088278413, 0.32089291193109276, 0.7547770559442482, 0.24522294532258193, 0.6922195555454064, 0.30778044475527566, 0.7427015999506408, 0.25729840103710155, 0.5332107162061338, 0.4667892838275641, 0.5295966795303014, 0.47040332048241557], + [0.6942689870336917, 0.4660167245733909, 0.5339832754219467, 0.6972306225335089, 0.30276937777968677, 0.7774496363385792, 0.2225503653962085, 0.7111989917934768, 0.2888010086510228, 0.7647137285607446, 0.23528627281105438, 0.5400707762744171, 0.4599292237663832, 0.5351379472259542, 0.46486205277914944], + [0.7702520198581677, 0.46230382659959274, 0.5376961733910358, 0.7162251981147499, 0.28377480233893226, 0.8003120872527134, 0.19968791502793504, 0.7309319830569678, 0.26906801757867005, 0.7870205507081584, 0.21297945112190234, 0.5478754628758851, 0.45212453716665046, 0.5412223733327184, 0.4587776266575379], + [0.8525452899052679, 0.4582992738045601, 0.5417007261770788, 0.7359949638367774, 0.26400503680019616, 0.8230669946372023, 0.1769330082339885, 0.7512786662654714, 0.2487213346126791, 0.8093462775037824, 0.1906537248348622, 0.5566417417828714, 0.44335825825162195, 0.547775515809267, 0.4522244841617928], + [0.9416380659598317, 0.4540031115077825, 0.5459968884578383, 0.7564147622537837, 0.24358523861406273, 0.8453934444905687, 0.15460655896318146, 0.7720685800681212, 0.22793142110302236, 0.8313891337106434, 0.1686108691450273, 0.5663597429736105, 0.4336402570391607, 0.5546869411991552, 0.44531305875812155], + [1.038082870720622, 0.4494255471684897, 0.5505744527711052, 0.7773280659479825, 0.2226719352013336, 0.8669600010556501, 0.13304000290549195, 0.793102190068959, 0.20689781143798658, 0.8528337254437953, 0.14716627788046888, 0.5769911568199455, 0.42300884315587756, 0.5618117753365711, 0.4381882246299842], + [1.1425072359290507, 0.44458866414148396, 0.5554113357603377, 0.7985456277894859, 0.20145437369224523, 0.8874401728075278, 0.11255983151420056, 0.8141540654291051, 0.1858459364406135, 0.8733662786093931, 0.12663372507147316, 0.5884707567052783, 0.41152924322125134, 0.5689765015650576, 0.43102349845628735], + [1.2556259415703155, 0.43952692267472065, 0.5604730771791155, 0.8198454446968358, 0.18015455716408757, 0.9065295820718722, 0.09347042240136054, 0.8349779494518113, 0.16502205278313747, 0.8926917402273213, 0.10730826364066187, 0.6007117675331579, 0.3992882323405233, 0.5759893444413833, 0.424010655699301], + [1.378253846020676, 0.43428605352040645, 0.5657139462814009, 0.8409748190663514, 0.1590251832087423, 0.923963739116958, 0.07603626526064539, 0.8553139055587738, 0.14468609701163906, 0.910551235126855, 0.0894487687216654, 0.613615289173965, 0.3863847106576227, 0.5826549060388381, 0.4173450942899075], + [1.5113195556531873, 0.42892026854068716, 0.5710797312150235, 0.8616553599054787, 0.1383446427954138, 0.9395349648287985, 0.060465039204395755, 0.8748975704315944, 0.12510243240760385, 0.9267379939450467, 0.07326200967218117, 0.6270831863299905, 0.3729168134865486, 0.5887919437862137, 0.41120805677902916], + [1.6558801910398742, 0.4234881155884431, 0.5765118841374398, 0.8815916285356664, 0.1184083745646475, 0.9531066808185165, 0.04689332266150105, 0.8934712958958342, 0.10652870710915327, 0.9411097788683309, 0.058890224336290986, 0.6410329035472292, 0.3589670962929783, 0.5942524494663943, 0.4057475513376034], + [1.8131373730434508, 0.4180476667315764, 0.5819523329869298, 0.9004837731425864, 0.09951623027845398, 0.9646231361785856, 0.03537686661596586, 0.9107966309101644, 0.08920337212887057, 0.9535961495052007, 0.04640385316564291, 0.6554118109317649, 0.3445881889709265, 0.5989396736802239, 0.401060327303299], + [1.984454353087664, 0.41265192792946737, 0.5873480718031542, 0.9180439266274598, 0.0819560769755352, 0.9741128304172143, 0.025887171656170025, 0.9266672425708256, 0.07333276035650026, 0.9641996222421583, 0.035800379848688633, 0.6702082215051098, 0.32979177848476404, 0.6028225558141288, 0.3971774452338275], + [2.1713740937749235, 0.407345317366356, 0.5926546823940108, 0.9340154063861573, 0.06598459720614881, 0.9816845205942619, 0.018315480815330316, 0.940921084038236, 0.05907891863750301, 0.9729907147961563, 0.027009286739971782, 0.685456338932431, 0.31454366114611826, 0.6059442030838968, 0.3940557978863633], + [2.3756382126020243, 0.40216176170258155, 0.597838238087541, 0.9481929225254534, 0.05180708083487521, 0.9875157261557715, 0.012484274714280508, 0.9534504721855013, 0.046549530125613775, 0.9800977705014434, 0.01990223055812253, 0.7012331127413896, 0.29876688740688173, 0.6084225824168004, 0.39157741834883053], + [2.5992070813641197, 0.3971244514308033, 0.6028755483800692, 0.9604412007308432, 0.039558802189909384, 0.9918348722943741, 0.008165128188274641, 0.9642087975244199, 0.035791204352721165, 0.9856930899867602, 0.01430691070129892, 0.7176461633422158, 0.28235383685205445, 0.6104423865667374, 0.38955761391900123], + [2.844281923975495, 0.3922467018740659, 0.6077532979419823, 0.970708889290424, 0.02929111304457551, 0.9948993473945908, 0.00510065284342882, 0.973212871431171, 0.026787129994529004, 0.9899771619643709, 0.010022838459457348, 0.7348133944719488, 0.26518660576290454, 0.612238048219366, 0.3877619519761658], + [3.1133302438566703, 0.38753289400520535, 0.6124671058005893, 0.9790346687680579, 0.020965332930778843, 0.9969724948315737, 0.0030275052716127967, 0.9805403924100596, 0.01945960859597168, 0.9931627323453003, 0.006837267906520901, 0.7528364341783103, 0.24716356613175916, 0.6140690216361151, 0.3859309783113673], + [3.4091160605530795, 0.3829783705582249, 0.6170216292289741, 0.9855433963498004, 0.014456604762778961, 0.9983027101970398, 0.0016972898418934918, 0.9863226098786929, 0.01367739077623869, 0.9954602109698333, 0.004539789179280069, 0.7717714081152733, 0.22822859235821585, 0.6161896003599612, 0.3838103994102266], + [3.734735988478296, 0.37856760912223064, 0.621432390649984, 0.9904319116628937, 0.009568088985548513, 0.9991073232094703, 0.0008926768032616237, 0.9907328724525138, 0.00926712793832811, 0.9970655929269585, 0.002934407165737235, 0.7916014519895278, 0.20839854879256914, 0.6188165129619526, 0.3811834867121506], + [4.0936609030953015, 0.3742709263498597, 0.625729073423381, 0.9939464071243476, 0.006053593207833421, 0.9995629248232244, 0.00043707518042967005, 0.993972257843382, 0.006027742369910189, 0.998151699453986, 0.0018483006098240506, 0.8122154897340197, 0.1877845115539126, 0.6220981493458408, 0.3779018503149914], + [4.489780504961452, 0.37004104606064486, 0.6299589537368772, 0.9963552805482129, 0.003644719599064992, 0.9998024972799093, 0.00019750272104162366, 0.9962538223593239, 0.003746177748065684, 0.9988631117258232, 0.001136888323142117, 0.83339696479023, 0.166603037239173, 0.6260893652316761, 0.3739106344914681], + [4.92744419605695, 0.3658116110381928, 0.6341883888050334, 0.9979223791117426, 0.00207762094337644, 0.9999184266480536, 8.157335215416771e-05, 0.9977871618384472, 0.0022128382129763457, 0.9993146913562212, 0.000685308682848867, 0.8548245997335617, 0.14517540328147963, 0.6307353159514841, 0.369264683887157], + [5.411486537817861, 0.3614997934448151, 0.6385002064550998, 0.9988851314327218, 0.0011148685837027185, 0.9999695284646352, 3.047153536080289e-05, 0.998764945352989, 0.0012350546716090173, 0.9995931229844214, 0.00040687704396626687, 0.8760855020841015, 0.12391450211093401, 0.6358667771139102, 0.3641332228524116], + [5.947221231844669, 0.3570145323190518, 0.6429854676347295, 0.9994404574293683, 0.0005595425737638799, 0.9999898204257576, 1.0179574191240999e-05, 0.9993528475027029, 0.0006471525093219571, 0.9997605797926153, 0.00023942022185467358, 0.8966998778420044, 0.10330012758638131, 0.6412083063368303, 0.3587916937062319], + [6.540389324585992, 0.35227074534472985, 0.6477292546513542, 0.9997392106482851, 0.0002607893514661658, 0.999996993621913, 3.0063780498768464e-06, 0.9996838281375273, 0.000316171868158697, 0.9998594829353611, 0.00014051706366272486, 0.9161567031663467, 0.08384330330430259, 0.6463999414016743, 0.35360005857633037], + [7.197061189536923, 0.34720814089667923, 0.6527918591340547, 0.9998879988877746, 0.00011200111164795298, 0.9999992239157932, 7.760841924432228e-07, 0.9998570058107664, 0.0001429941915717606, 0.9999174152756939, 8.25847120894524e-05, 0.9339601196886301, 0.06603988732906717, 0.6510329542512603, 0.3489670454317676], + [7.923513846926916, 0.34181092060841395, 0.6581890794630373, 0.9999560409976201, 4.3959002070356904e-05, 0.9999998267501252, 1.7324987196368913e-07, 0.9999405677785957, 5.9432222157168085e-05, 0.9999515028368555, 4.849714948293602e-05, 0.9496847686144583, 0.05031523821034047, 0.6546992019846177, 0.34530079720947776], + [8.726116146761841, 0.33612223972083305, 0.6638777604003538, 0.9999843673176682, 1.5632682230815348e-05, 0.9999999668841295, 3.311587028014445e-08, 0.9999774639851648, 2.2536015004161754e-05, 0.9999719018102509, 2.8098182914359956e-05, 0.9630330022297747, 0.036967003631153114, 0.6570498489297179, 0.34295014987465655], + [9.61125425126389, 0.3302464279305337, 0.6697535722240672, 0.9999950071411838, 4.992858798082977e-06, 0.9999999946303925, 5.36960764793386e-09, 0.9999922594204929, 7.740579526974419e-06, 0.9999843408546543, 1.5659145063877862e-05, 0.9738801915550835, 0.026119812828430528, 0.6578526849821434, 0.34214731393522874], + [10.58536622900463, 0.324334625138889, 0.675665375009935, 0.999998580696415, 1.4193035846931372e-06, 0.9999999992684384, 7.315616363172618e-10, 0.9999976088380382, 2.3911619604938813e-06, 0.9999918988978491, 8.101103327507441e-06, 0.9822921109468478, 0.017707891880602483, 0.6570316814176521, 0.3429683181230316], + [11.655208384083574, 0.31855620219359815, 0.6814437979409103, 0.9999996442946452, 3.557053552153224e-07, 0.9999999999171693, 8.283079978696104e-11, 0.9999993406431664, 6.593568326242072e-07, 0.99999625564285, 3.7443575777558992e-06, 0.9885045898036815, 0.011495411762463747, 0.6546734457920591, 0.34532655433332515], + [12.8283903994203, 0.3130661705684101, 0.6869338295861859, 0.9999999222304509, 7.776954921503049e-08, 0.9999999999923137, 7.686250788741449e-12, 0.9999998390934451, 1.609065546400197e-07, 0.9999985031339189, 1.4968661427289701e-06, 0.9928693367954324, 0.007130663951104056, 0.6509964761107893, 0.3490035241433022], + [14.113986776573261, 0.3079812190988997, 0.6920187810912608, 0.999999985349038, 1.4650961964778374e-08, 0.9999999999994259, 5.74058480430815e-13, 0.9999999656106335, 3.438936650715504e-08, 0.9999994935628531, 5.064371572924293e-07, 0.995784482583207, 0.004215517724919446, 0.6462960272890077, 0.35370397280881516], + [15.522930589930521, 0.30337089654125693, 0.696629103656569, 0.9999999976563165, 2.343683526803182e-09, 0.9999999999999662, 3.373217162295533e-14, 0.9999999936451271, 6.354872759015937e-09, 0.9999998566606649, 1.4333933773063264e-07, 0.997632993405526, 0.0023670067051127365, 0.640886738926723, 0.35911326105431607], + [17.06806537705113, 0.2992615757456671, 0.7007384244242659, 0.9999999996870187, 3.129812799282551e-10, 0.9999999999999984, 1.5179011230981341e-15, 0.9999999989999626, 1.0000373341528277e-09, 0.9999999662447676, 3.3755232782893794e-08, 0.9987431512428135, 0.0012568487918197732, 0.6350597727471875, 0.36494022724921726], + [18.763976222687464, 0.29564666000649187, 0.7043533401197389, 0.9999999999657714, 3.422860436920315e-11, 1.0, 5.0729882022142043e-17, 0.9999999998682937, 1.317063438691664e-10, 0.9999999934104744, 6.5895256393408745e-09, 0.9993722023951928, 0.0006277976143044281, 0.6290590518516592, 0.3709409482253182], + [20.62680334728341, 0.2924976919859832, 0.7075023080992642, 0.9999999999969986, 3.0013872040813124e-12, 1.0, 1.2176655406094454e-18, 0.9999999999857603, 1.4239785286132068e-11, 0.999999998939128, 1.0608719810448317e-09, 0.9997067931460961, 0.00029320685622287603, 0.623073107982596, 0.37692689216814296], + [22.674163501714634, 0.28977380049067414, 0.7102261995638445, 0.9999999999997937, 2.0620744819326246e-13, 1.0, 2.0243689569856117e-20, 0.9999999999987624, 1.2375286037598136e-12, 0.9999999998603285, 1.3967153997012087e-10, 0.99987283019954, 0.00012716980098301708, 0.6172371136673229, 0.3827628865219472], + [24.92520238536565, 0.287428786485883, 0.7125712135481299, 0.9999999999999891, 1.0825800010384619e-14, 1.0, 2.24180851345455e-22, 0.9999999999999155, 8.44922172021934e-14, 0.999999999985147, 1.485309399479144e-11, 0.999949164587069, 5.083541304603035e-05, 0.6116405339695177, 0.38835946622503953], + [27.400748234657804, 0.2854159538602582, 0.7145840461608273, 0.9999999999999996, 4.226241213629405e-16, 1.0, 1.5854510934623423e-24, 0.9999999999999956, 4.420535180395216e-15, 0.9999999999987449, 1.255151885828989e-12, 0.9999814259556451, 1.8574044380603032e-05, 0.6063370229646191, 0.3936629772141492], + [30.123527424008188, 0.28369106787433257, 0.7163089321387685, 1.0, 1.1908764795231288e-17, 1.0, 6.840485976592898e-27, 0.9999999999999999, 1.7248085307753428e-16, 0.9999999999999174, 8.261285195280797e-14, 0.9999938534247321, 6.1465752736565345e-06, 0.6013542143456618, 0.3986457858076819], + [33.11841277114524, 0.2822139031976331, 0.7177860968105396, 1.0, 2.3444853356457334e-19, 1.0, 1.7128858803111815e-29, 1.0, 4.872176674435179e-18, 0.9999999999999959, 4.137179026015535e-15, 0.9999981761657298, 1.8238342714174694e-06, 0.5967020124885799, 0.4032979876372512], + [36.4126885961353, 0.2809488298240751, 0.719051170181036, 1.0, 3.111472162314164e-21, 1.0, 2.3569219314256853e-32, 1.0, 9.644714907679495e-20, 0.9999999999999998, 1.5350652045542361e-16, 0.9999995200764333, 4.7992356686787e-07, 0.5923788528605749, 0.40762114723964854], + [40.0363274359863, 0.2798648132826942, 0.7201351867205037, 1.0, 2.6764092017879734e-23, 1.0, 1.6783750165137848e-35, 1.0, 1.2909947389022705e-21, 1.0, 4.096689166942295e-18, 0.9999998893558935, 1.1064410650006056e-07, 0.5883760321469438, 0.411623967931231], + [44.02228026320352, 0.27893510549332906, 0.7210648945086701, 1.0, 1.429006076125198e-25, 1.0, 5.790731862631783e-39, 1.0, 1.1235139025621577e-23, 1.0, 7.6096421145007e-20, 0.999999977947071, 2.205292897616102e-08, 0.5846805315194371, 0.4153194685406129], + [48.406785418643835, 0.27813680422276615, 0.721863195778482, 1.0, 4.516038236148872e-28, 1.0, 9.003273826434583e-43, 1.0, 6.088453821107413e-26, 1.0, 9.488548183483798e-22, 0.9999999962552512, 3.744748861364121e-09, 0.5812768135534107, 0.4187231864921853], + [53.22970228620249, 0.2774503817670592, 0.7225496182337195, 1.0, 8.01678451485938e-31, 1.0, 5.824626138333523e-47, 1.0, 1.959288933338976e-28, 1.0, 7.631922570356462e-24, 0.9999999994669098, 5.330901625200862e-10, 0.5781479794504454, 0.421852020583868], + [58.534875265681926, 0.27685923259611706, 0.7231407674043685, 1.0, 7.546777443004741e-34, 1.0, 1.4363270759901184e-51, 1.0, 3.5537377670318103e-31, 1.0, 3.7898905197343156e-26, 0.9999999999374962, 6.250378503123076e-11, 0.5752765402009313, 0.4247234598247137], + [64.37053286166883, 0.2763492608657771, 0.7236507391345258, 1.0, 3.536195576314804e-37, 1.0, 1.2259296872846246e-56, 1.0, 3.4303458514590825e-34, 1.0, 1.107217088881145e-28, 0.9999999999940806, 5.919417810628108e-12, 0.5726449474841898, 0.4273550525348752], + [70.78972623882281, 0.2759085142708434, 0.7240914857293458, 1.0, 7.692437469304248e-41, 1.0, 3.257054593344849e-62, 1.0, 1.6543870839236353e-37, 1.0, 1.8047311689489292e-31, 0.9999999999995568, 4.432150641322723e-13, 0.5702359638862934, 0.4297640361278234], + [77.85081151050238, 0.27552686412333105, 0.7244731358767873, 1.0, 7.195384763803472e-45, 1.0, 2.3968690006725845e-68, 1.0, 3.718994361584104e-41, 1.0, 1.548182482983865e-34, 0.9999999999999744, 2.562599224942489e-14, 0.5680329180682296, 0.4319670819421924], + [85.61798023269084, 0.2751957287094272, 0.7248042712906471, 1.0, 2.6600085662542777e-49, 1.0, 4.2970189256580037e-75, 1.0, 3.610211797632397e-45, 1.0, 6.555165082325053e-38, 0.9999999999999989, 1.1148705125329442e-15, 0.5660198744466026, 0.4339801255610753], + [94.16184294728866, 0.27490783584887696, 0.7250921641511696, 1.0, 3.5421094703479815e-54, 1.0, 1.629530164994859e-82, 1.0, 1.3914694756118849e-49, 1.0, 1.2765305186304057e-41, 1.0, 3.547067749991789e-17, 0.5641817387812131, 0.4358182612244353], + [103.56007108321835, 0.2746570202422085, 0.7253429797578208, 1.0, 1.5341575631363343e-59, 1.0, 1.1190903894181427e-90, 1.0, 1.9414100541563356e-54, 1.0, 1.0578706865293805e-45, 1.0, 7.998416362499313e-19, 0.5625043160137014, 0.43749568399045047], + [113.89810305061681, 0.2744380512501553, 0.7255619487498632, 1.0, 1.9317521007268587e-65, 1.0, 1.1731801109743854e-99, 1.0, 8.857699720096288e-60, 1.0, 3.4251716905498115e-50, 1.0, 1.2349712516937309e-20, 0.5609743330076054, 0.4390256669954454], + [125.26992094648598, 0.2742464870159611, 0.7257535129840508, 1.0, 6.249895723638292e-72, 1.0, 1.5557118828990294e-109, 1.0, 1.1817608470983567e-65, 1.0, 3.94425136483342e-55, 1.0, 1.257075821915059e-22, 0.5595794359480232, 0.44042056405421814], + [137.7789049321645, 0.2740785512094894, 0.7259214487905182, 1.0, 4.535604651830393e-79, 1.0, 2.1220896665051048e-120, 1.0, 4.0769367805583897e-72, 1.0, 1.45673939553549e-60, 1.0, 8.09107642083202e-25, 0.5583081698698094, 0.4416918301318379], + [151.5387730492121, 0.2739310290789893, 0.7260689709210154, 1.0, 6.358256175922717e-87, 1.0, 2.371887796746009e-132, 1.0, 3.1767655069317304e-79, 1.0, 1.5400934376673413e-66, 1.0, 3.1453579163783687e-27, 0.557149945981818, 0.4428500540193932], + [166.67461501711716, 0.2738011799039533, 0.7261988200960499, 1.0, 1.4607938659828004e-95, 1.0, 1.6914877208771734e-145, 1.0, 4.81792869475835e-87, 1.0, 4.112770016518275e-73, 1.0, 7.021675257567868e-30, 0.5560950010488313, 0.44390499895205976], + [183.3240294107038, 0.2736866633289285, 0.7263133366710736, 1.0, 4.5904465589093825e-105, 1.0, 5.844821512298568e-160, 1.0, 1.2074675507239666e-95, 1.0, 2.4176065668959805e-80, 1.0, 8.515620596354692e-33, 0.55513435200387, 0.44486564799678624], + [201.63837455499836, 0.27358547741201994, 0.7264145225879813, 1.0, 1.6171430433304746e-115, 1.0, 7.229914836774515e-176, 1.0, 4.17675210680582e-105, 1.0, 2.68885009563094e-88, 1.0, 5.2781981640051245e-36, 0.5542597481258198, 0.4457402518746636], + [221.78414450916367, 0.273495906538331, 0.7265040934616698, 1.0, 5.131471958227844e-127, 1.0, 2.294773003621929e-193, 1.0, 1.6358362090223126e-115, 1.0, 4.790378903199547e-97, 1.0, 1.5634635471960384e-39, 0.553463622476739, 0.4465363775236176], + [243.94448264832357, 0.27341647762698135, 0.7265835223730192, 1.0, 1.1529335177955478e-139, 1.0, 1.295730227009578e-212, 1.0, 5.834023109323942e-127, 1.0, 1.1383014657855705e-106, 1.0, 2.0556359197994096e-43, 0.5527390438063452, 0.44726095619391815], + [268.3208466030219, 0.2733459233021958, 0.7266540766978046, 1.0, 1.407505456651934e-153, 1.0, 8.699091148925772e-234, 1.0, 1.4909135606077537e-139, 1.0, 2.9494221720407832e-117, 1.0, 1.106058058865526e-47, 0.5520796697634465, 0.44792033023674815], + [295.1348396920628, 0.2732831509071253, 0.7267168490928749, 1.0, 6.977419470094688e-169, 1.0, 4.457952212192009e-257, 1.0, 2.0975623989770542e-153, 1.0, 6.676789806630136e-129, 1.0, 2.227267280208735e-52, 0.551479701978077, 0.44852029802206694], + [324.6302254980735, 0.27322721641695763, 0.7267727835830424, 1.0, 1.019541090146993e-185, 1.0, 1.0709490609259525e-282, 1.0, 1.2157104204111127e-168, 1.0, 1.034866687513881e-141, 1.0, 1.5213827556544028e-57, 0.5509338433725686, 0.4490661566275379], + [357.07514390007674, 0.273177302459063, 0.7268226975409371, 1.0, 3.0869671416655345e-204, 1.0, 7.0545734371887e-311, 1.0, 2.109991742755995e-185, 1.0, 8.399150812545668e-156, 1.0, 3.1638580674242434e-63, 0.5504372579080368, 0.4495627420920422], + [392.76454870880076, 0.27313269977584964, 0.7268673002241504, 1.0, 1.314387804174396e-224, 1.0, 0.0, 1.0, 7.721431770749691e-204, 1.0, 2.6578092498664907e-171, 1.0, 1.778496902082381e-69, 0.5499855328619744, 0.45001446713808424], + [432.0228890650284, 0.2730927915738819, 0.7269072084261182, 1.0, 5.1379552967740344e-247, 1.0, 0.0, 1.0, 4.0501943533339366e-224, 1.0, 2.3705178131706232e-188, 1.0, 2.3709761455289924e-76, 0.5495746436528764, 0.45042535634716707], + [475.20705897732296, 0.27305704029354394, 0.7269429597064561, 1.0, 1.153517274402947e-271, 1.0, 0.0, 1.0, 1.9918149738062812e-246, 1.0, 4.1705806571863336e-207, 1.0, 6.491395441659384e-84, 0.5492009211714818, 0.4507990788285506], + [522.7096418131022, 0.2730249764096674, 0.7269750235903327, 1.0, 8.878616947372481e-299, 1.0, 0.0, 1.0, 5.757248952142548e-271, 1.0, 9.77432832094064e-228, 1.0, 3.1155516161714645e-92, 0.5488610215394524, 0.4511389784605717], + [574.9624792633465, 0.27299618894159516, 0.7270038110773396, 1.0, 0.0, 1.0, 0.0, 1.0, 5.8518290070341325e-298, 1.0, 1.9813808193643934e-250, 1.0, 2.2023804900117853e-101, 0.5485518988899053, 0.4514481026707149], + [632.440597074139, 0.2729703173738871, 0.7270296826412751, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 2.1604218406461142e-275, 1.0, 1.8933138941845572e-111, 0.5482707767336533, 0.4517292245573578], + [695.6665236193709, 0.2729470448279612, 0.7270529551842094, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 7.513936962862749e-303, 1.0, 1.603318002807373e-122, 0.5480151288909966, 0.4519848721768494] + ] +} diff --git a/tests/test_games/golden_logit/coordination_2x2_to_lambda_20.json b/tests/test_games/golden_logit/coordination_2x2_to_lambda_20.json new file mode 100644 index 0000000000..42eb98a31d --- /dev/null +++ b/tests/test_games/golden_logit/coordination_2x2_to_lambda_20.json @@ -0,0 +1,122 @@ +{ + "counts": [{"predictor_attempts": 180, "accepted_steps": 116, "rejected_distance": 0, "rejected_contraction": 14, "rejected_orientation": 50, "corrector_iterations": 292, "function_evals": 292, "jacobian_evals": 181, "factorizations": 181}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5], + [0.03, 0.5, 0.5, 0.5, 0.5], + [0.063, 0.5, 0.5, 0.5, 0.5], + [0.0993, 0.5, 0.5, 0.5, 0.5], + [0.13923000000000002, 0.5, 0.5, 0.5, 0.5], + [0.18315300000000004, 0.5, 0.5, 0.5, 0.5], + [0.23146830000000004, 0.5, 0.5, 0.5, 0.5], + [0.28461513000000005, 0.5, 0.5, 0.5, 0.5], + [0.34307664300000007, 0.5, 0.5, 0.5, 0.5], + [0.4073843073000001, 0.5, 0.5, 0.5, 0.5], + [0.4781227380300001, 0.5, 0.5, 0.5, 0.5], + [0.5559350118330001, 0.5, 0.5, 0.5, 0.5], + [0.6415285130163001, 0.5, 0.5, 0.5, 0.5], + [0.7356813643179301, 0.5, 0.5, 0.5, 0.5], + [0.8392495007497232, 0.5, 0.5, 0.5, 0.5], + [0.9531744508246955, 0.5, 0.5, 0.5, 0.5], + [1.078491895907165, 0.5, 0.5, 0.5, 0.5], + [1.2163410854978816, 0.5, 0.5, 0.5, 0.5], + [1.3679751940476697, 0.5, 0.5, 0.5, 0.5], + [1.5347727134524367, 0.5, 0.5, 0.5, 0.5], + [1.7182499847976804, 0.5, 0.5, 0.5, 0.5], + [1.9200749832774484, 0.5, 0.5, 0.5, 0.5], + [1.9978872570804485, 0.5000237164801274, 0.49997638464002897, 0.5000237164801274, 0.49997638464002897], + [1.999533690601094, 0.5000993690135321, 0.49990072331528035, 0.5000993690076448, 0.49990072332116836], + [1.9995653340227422, 0.5001038536806552, 0.4998962468619809, 0.5001038536754963, 0.4998962468671398], + [1.9997583146185178, 0.5002197705561345, 0.499780330290785, 0.5002197705452982, 0.4997803303016214], + [1.9998672120906935, 0.5003756472492653, 0.4996244527514854, 0.5003756472304867, 0.49962445277026407], + [1.9999135901137826, 0.500573548389693, 0.4994265516103723, 0.5005735483610191, 0.4994265516390463], + [1.9999385522872852, 0.5007934232892045, 0.49920667671080954, 0.500793423249534, 0.49920667675047997], + [1.9999544964057097, 0.5010359967935253, 0.4989641032064849, 0.5010359967417307, 0.4989641032582794], + [1.9999660473256369, 0.5013028534514931, 0.49869724654851727, 0.501302853386353, 0.4986972466136572], + [1.9999753744015436, 0.5015964092741753, 0.49840369072583957, 0.5015964091943582, 0.4984036908056566], + [1.9999836714882047, 0.5019193221822246, 0.4980807778177971, 0.5019193220862621, 0.4980807779137596], + [1.9999917123760405, 0.5022745253694544, 0.4977255746305774, 0.5022745252557321, 0.49772557474429974], + [2.00000008201244, 0.5026652455403002, 0.4973348544597463, 0.5026652454070425, 0.4973348545930041], + [2.0000092891660888, 0.5030950320407853, 0.49690506795928296, 0.503095031886039, 0.4969050681140293], + [2.000019829903321, 0.5035677886280021, 0.49643231137209787, 0.5035677884496191, 0.49643231155048073], + [2.000032229517271, 0.5040878085583338, 0.4959122914418124, 0.5040878083539516, 0.4959122916461947], + [2.000047075220315, 0.5046598131471919, 0.4953402868530222, 0.504659812914212, 0.4953402870860022], + [2.000065045780817, 0.505288994090235, 0.49471110591007855, 0.5052889938257997, 0.49471110617451386], + [2.0000869416459404, 0.5059810598698228, 0.49401904013063624, 0.5059810595707895, 0.4940190404296696], + [2.0001137179300046, 0.5067422865962652, 0.49325781340440683, 0.5067422862591782, 0.4932578137414939], + [2.00014652216723, 0.5075795736537734, 0.49242052634721045, 0.5075795732748329, 0.4924205267261509], + [2.0001867385956538, 0.5085005045356698, 0.49149959546577043, 0.5085005041106985, 0.4914995958907417], + [2.00023604080855, 0.5095134132610997, 0.49048668674100876, 0.5095134127855054, 0.4904866872166028], + [2.000296454815108, 0.5106274567633274, 0.4893726432397588, 0.5106274562320637, 0.4893726437710223], + [2.000370434866464, 0.51185269362357, 0.4881474063809476, 0.5118526930310917, 0.4881474069734255], + [2.0004609548182817, 0.5132001694885368, 0.48679993051807535, 0.5132001688287535, 0.486799931177858], + [2.0005716183203757, 0.5146820094468083, 0.48531809056286895, 0.5146820087130336, 0.48531809129664266], + [2.0007067917565204, 0.5163115175387424, 0.4836885824754198, 0.51631151672364, 0.48368858329052045], + [2.000871764617252, 0.5181032834234516, 0.4818968165972719, 0.5181032825189792, 0.481896817501741], + [2.0010729428925753, 0.5200732960070882, 0.4799268040232326, 0.52007329500444, 0.479926805025875], + [2.001318082137718, 0.5222390635266376, 0.4777610365177188, 0.5222390624161871, 0.477761037628159], + [2.00161656811344, 0.5246197391536394, 0.4753803609112376, 0.5246197379248868, 0.4753803621399718], + [2.001979754349697, 0.5272362505959381, 0.4727638494989316, 0.527236249237468, 0.47276385085736916], + [2.002421367641407, 0.5301114313866497, 0.46988866875204055, 0.5301114298861068, 0.469888670252526], + [2.0029579943620037, 0.5332701505014896, 0.46672994970119464, 0.5332701488455883, 0.4667299513569943], + [2.00360966256453, 0.5367394355706738, 0.4632606647254114, 0.5367394337452628, 0.4632606665506428], + [2.004400537097669, 0.5405485831712876, 0.4594515172610235, 0.5405485811615032, 0.45945151927049105], + [2.0053597473274647, 0.5447292474138261, 0.4552708532170001, 0.5447292452043854, 0.455270855425883], + [2.006522371400651, 0.5493154946196518, 0.45068460538038796, 0.5493154921619192, 0.4506846078381209], + [2.0079305900770645, 0.5543438120669416, 0.4456562879331284, 0.5543438093605243, 0.4456562906395464], + [2.009635061727364, 0.5598530441742554, 0.4401470558258679, 0.5598530411960163, 0.4401470588041083], + [2.011696512784305, 0.5658842409775596, 0.4341158590226568, 0.5658842377026051, 0.4341158622976143], + [2.0141875926039403, 0.5724803828097231, 0.4275197171906559, 0.5724803792113995, 0.42751972078898576], + [2.017195007680949, 0.5796859483472929, 0.42031415165336905, 0.5796859443972331, 0.4203141556034417], + [2.0208219550788824, 0.5875462851665344, 0.41245381483461785, 0.5875462808347716, 0.4124538191664065], + [2.025190865153561, 0.5961067385494692, 0.4038933614525276, 0.5961067338046396, 0.4038933661974083], + [2.030446451505599, 0.6054114933581355, 0.39458860664530543, 0.6054114881677963, 0.3945886118357445], + [2.03675905027149, 0.6155020876813955, 0.3844980123244932, 0.6155020820124864, 0.3844980179935936], + [2.0443282122579522, 0.6264155679766819, 0.3735845320333087, 0.6264155617961639, 0.3735845382141851], + [2.05338649220603, 0.6381822759644278, 0.3618178240523419, 0.6381822692401319, 0.36181783077729207], + [2.064203363350578, 0.6508232894238913, 0.3491768106038938, 0.6508232821256049, 0.3491768179033399], + [2.0770891776148286, 0.6643475826753419, 0.33565251736997986, 0.6643475747761491, 0.3356525252711583], + [2.0923990982447727, 0.6787490258046417, 0.32125107426792915, 0.6787490172825131, 0.321251082793325], + [2.1105369577190385, 0.6940033991352491, 0.30599670097847553, 0.6940033899748416, 0.3059967101440185], + [2.1319590416603633, 0.7100656521747242, 0.28993444799915347, 0.7100656423693127, 0.28993445781221916], + [2.1571778661205707, 0.7268676730789623, 0.2731324271796375, 0.7268676626323914, 0.27313243763692685], + [2.1867660910217066, 0.7443168447456707, 0.25568325562741484, 0.7443168336741965, 0.25568326671280783], + [2.2213607804829336, 0.762295639941193, 0.23770446057968556, 0.7622956282751141, 0.23770447226217653], + [2.2616682621688065, 0.7806624501605214, 0.2193376505418262, 0.780662437945563, 0.2193376627736451], + [2.3084698361802767, 0.7992537587039041, 0.20074634220935728, 0.799253746002405, 0.20074635492437745], + [2.362628530976126, 0.817887670820246, 0.1821124303236593, 0.8178876577122483, 0.18211244343619837], + [2.425097002132998, 0.8363687169346253, 0.16363138444451575, 0.8363687035189277, 0.1636313978486685], + [2.496926532681199, 0.854493759429154, 0.14550634217044917, 0.8544937458242307, 0.1455063557401575], + [2.5792771136923274, 0.8720586513310755, 0.12794135045332006, 0.872058651266824, 0.12794135045208116], + [2.673427224982663, 0.8888660211021231, 0.11113398080973765, 0.8888660209941779, 0.11113398081827776], + [2.7807854656080044, 0.9047321564643217, 0.09526784550291427, 0.9047321563130758, 0.09526784552133682], + [2.902899996466117, 0.9194948407046678, 0.08050516123631792, 0.9194948405171426, 0.08050516126326634], + [3.0414678759593317, 0.9330200292317622, 0.06697997260132614, 0.9330200290210101, 0.0669799726341755], + [3.198342728444478, 0.94520759347768, 0.05479240817546669, 0.9452075932607171, 0.054792408210809114], + [3.375540576869802, 0.9559955791856414, 0.044004422233737496, 0.9559955789802549, 0.044004422268041875], + [3.575243758178106, 0.9653625881778863, 0.03463741297806508, 0.9653625879991339, 0.03463741300834681], + [3.799803228322132, 0.973327992005296, 0.026672008883745144, 0.9733279918627031, 0.026672008908075247], + [4.051740073511826, 0.9799498347624446, 0.02005016587996654, 0.9799498346587455, 0.020050165897691506], + [4.333747649587666, 0.985320469791347, 0.014679530642214193, 0.985320469723102, 0.014679530653839016], + [4.648696410482158, 0.9895601809900474, 0.010439819281422352, 0.9895601809497789, 0.010439819288218934], + [4.999644049739596, 0.9928092393649545, 0.007190760791552236, 0.9928092393438837, 0.007190760795052742], + [5.389853901235265, 0.9952190153029253, 0.0047809847794434614, 0.9952190152932712, 0.00478098478101021], + [5.822824418969483, 0.9969428866530933, 0.0030571133860981697, 0.9969428866492753, 0.0030571133866984655], + [6.3023317815252415, 0.9981277353610929, 0.0018722646555800742, 0.9981277353598103, 0.0018722646557737777], + [6.83248615629502, 0.9989067947990468, 0.0010932052072157095, 0.9989067947986872, 0.0010932052072674307], + [7.417800072171972, 0.9993944797321632, 0.0006055202698838833, 0.9993944797320807, 0.0006055202698950966], + [8.063265189823502, 0.99968359233336, 0.00031640766721303064, 0.9996835923333448, 0.0003164076672149641], + [8.774432303659284, 0.9998449660885362, 0.00015503391159867882, 0.999844966088534, 0.00015503391159893824], + [9.557489410438818, 0.9999292393558737, 7.076064415244297e-05, 0.9999292393558735, 7.076064415246925e-05], + [10.419334419536895, 0.9999701325676428, 2.986743236129148e-05, 0.9999701325676429, 2.9867432361293442e-05], + [11.367642074295501, 0.9999884334202198, 1.1566579780683643e-05, 0.9999884334202198, 1.1566579780683746e-05], + [12.410927775853917, 0.9999959257883546, 4.0742221187706965e-06, 0.9999959257883526, 4.0742221198774204e-06], + [13.558613048582467, 0.9999987070455264, 1.2929562688573118e-06, 0.9999987070455263, 1.2929562689248915e-06], + [14.821097733029507, 0.9999996341666497, 3.658335988937466e-07, 0.9999996341666497, 3.6583359889671775e-07], + [16.209842890966815, 0.9999999087661935, 9.123383376217407e-08, 0.9999999087661935, 9.123383376226483e-08], + [17.737466690746768, 0.999999980197668, 1.9802334383026596e-08, 0.999999980197668, 1.9802334383028495e-08], + [19.41785410993169, 0.9999999963107918, 3.6892082424903103e-09, 0.999999996310792, 3.6892082424903103e-09], + [21.266280592339644, 0.999999999419006, 5.809940685241012e-10, 0.999999999419006, 5.809940685240993e-10], + [19.999999984774874, 0.9999999979388462, 2.061153819505725e-09, 0.9999999979388462, 2.061153819505725e-09], + [20.0, 0.9999999979388462, 2.0611537881243983e-09, 0.9999999979388462, 2.0611537881243983e-09] + ] +} diff --git a/tests/test_games/golden_logit/kuhn_poker.json b/tests/test_games/golden_logit/kuhn_poker.json new file mode 100644 index 0000000000..79d3b1e758 --- /dev/null +++ b/tests/test_games/golden_logit/kuhn_poker.json @@ -0,0 +1,104 @@ +{ + "counts": [{"predictor_attempts": 98, "accepted_steps": 98, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 196, "function_evals": 196, "jacobian_evals": 99, "factorizations": 99}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.008261770519318767, 0.4984775998008401, 0.5015224001991674, 0.5020654308815258, 0.4979345691184747, 0.49847333589495235, 0.5015266641050532, 0.49793467463014923, 0.5020653253698498, 0.4984691155702074, 0.5015308844297971, 0.49380398929751884, 0.5061960107027156, 0.4989886091907528, 0.5010113908092486, 0.4979346040585758, 0.5020653959414243, 0.4989672802808389, 0.501032719719161, 0.49380398929751884, 0.5061960107027156, 0.49899287496650796, 0.5010071250334924, 0.5020654308815258, 0.4979345691184747], + [0.017373811113773997, 0.49686048181811165, 0.5031395181819003, 0.5043433435260553, 0.49565665647394536, 0.4968416355880101, 0.5031583644119988, 0.4956576352835533, 0.5043423647164457, 0.4968231897283937, 0.5031768102716143, 0.48697259076724103, 0.5130274092331799, 0.497922591192342, 0.5020774088076596, 0.4956569783691644, 0.5043430216308356, 0.49782828975104426, 0.5021717102489555, 0.48697259076724103, 0.5130274092331799, 0.49794145138101237, 0.502058548618987, 0.5043433435260553, 0.49565665647394536], + [0.027424136253997474, 0.49515232925568115, 0.5048476707443375, 0.5068556044034492, 0.49314439559655177, 0.49510539726374364, 0.5048946027362711, 0.493148234163271, 0.506851765836728, 0.49506001836782104, 0.5049399816321927, 0.4794434916561861, 0.520556508344564, 0.49680691417125544, 0.5031930858287463, 0.49314564886525336, 0.5068543511347465, 0.4965720520637222, 0.5034279479362774, 0.4794434916561861, 0.520556508344564, 0.49685388612256426, 0.5031461138774328, 0.5068556044034492, 0.49314439559655177], + [0.038509359766481246, 0.4933601746135266, 0.5066398253865021, 0.5096261503627055, 0.4903738496372959, 0.4932676821245498, 0.506732317875474, 0.49038444267552, 0.5096155573244799, 0.49317942363078165, 0.5068205763692422, 0.4711500607531544, 0.528849939248181, 0.4956493313622952, 0.5043506686377066, 0.49037728244313683, 0.5096227175568633, 0.49518653841201554, 0.5048134615879837, 0.4711500607531544, 0.5288499392481809, 0.495741888740447, 0.504258111259545, 0.5096261503627055, 0.4903738496372959], + [0.05073519704455594, 0.49149535547715645, 0.5085046445228872, 0.5126810792227001, 0.48731892077730216, 0.4913348927750605, 0.5086651072249783, 0.48734305082255414, 0.5126569491774494, 0.49118394380260094, 0.5088160561974414, 0.4620218923763948, 0.5379781076259778, 0.4944611056369266, 0.505538894363075, 0.4873266810519057, 0.5126733189480952, 0.4936586196767654, 0.5063413803232337, 0.46202189237639485, 0.5379781076259778, 0.4946216011565013, 0.5053783988434812, 0.5126810792227001, 0.48731892077730216], + [0.06421683389542177, 0.4895746539522435, 0.5104253460478234, 0.5160486937169317, 0.48395130628307165, 0.48931769884699516, 0.5106823011530696, 0.48400001406125337, 0.5159999859387598, 0.4890796555739735, 0.5109203444261048, 0.45198578363554004, 0.5480142163686653, 0.49325785467231376, 0.5067421453276889, 0.4839668517110701, 0.516033148288933, 0.49197404371429965, 0.5080259562856989, 0.45198578363554004, 0.5480142163686653, 0.4935146179550084, 0.5064853820449595, 0.5160486937169317, 0.48395130628307165], + [0.07907908965996979, 0.4876216226080272, 0.5123783773920794, 0.5197594763269697, 0.48024052367303627, 0.48723210692816166, 0.5127678930719519, 0.4803309968072441, 0.5196690031927922, 0.4868771202926522, 0.513122879707499, 0.4409672942701145, 0.5590327057373156, 0.4920605078918322, 0.5079394921081799, 0.4802691841700543, 0.5197308158299546, 0.49011745104160354, 0.5098825489583948, 0.4409672942701145, 0.5590327057373154, 0.4924491348088975, 0.5075508651910559, 0.5197594763269697, 0.48024052367303627], + [0.09545628789302629, 0.485668079374665, 0.5143319206255217, 0.5238459678771459, 0.4761540321228666, 0.4851006514396464, 0.514899348560569, 0.4763121686020547, 0.5236878313980335, 0.48459242190120316, 0.5154075780991045, 0.42889306084853873, 0.571106939164533, 0.4908963463951395, 0.5091036536049124, 0.4762037753893114, 0.5237962246107136, 0.48807244572082087, 0.5119275542791781, 0.42889306084853873, 0.571106939164533, 0.4914611884595573, 0.5085388115404061, 0.5238459678771459, 0.4761540321228666], + [0.11349174477779957, 0.48375572127395583, 0.5162442787264178, 0.528342520862442, 0.47165747913758754, 0.482953651121161, 0.5170463488792831, 0.4719213096924114, 0.5280786903077872, 0.48224822704471, 0.5177517729559449, 0.4156940415934594, 0.5843059584294092, 0.4898000670145425, 0.5101999329856409, 0.471739945607759, 0.528260054392306, 0.4858217408693888, 0.5141782591306129, 0.4156940415934594, 0.5843059584294092, 0.49059591578976264, 0.5094040842103146, 0.528342520862442, 0.47165747913758754], + [0.13333680294409234, 0.48193776075583905, 0.5180622392449997, 0.5332849018100315, 0.4667150981900423, 0.48083043114257495, 0.5191695688584005, 0.4671392724490697, 0.5328607275513566, 0.4798747460521345, 0.5201252539492955, 0.401309839072249, 0.598690160967464, 0.4888147707844555, 0.5111852292161037, 0.4668469922854654, 0.5331530077146953, 0.4833473987043876, 0.5166526012956209, 0.401309839072249, 0.598690160967464, 0.4899087113781856, 0.510091288622316, 0.5332849018100315, 0.4667150981900423], + [0.155149390430411, 0.4802804304272219, 0.5197195695747627, 0.5387097291757583, 0.46129027082442425, 0.4787803555828234, 0.5212196444193705, 0.4619518172105381, 0.5380481827903478, 0.47751040961193447, 0.5224895903911908, 0.385694164715528, 0.6143058353527676, 0.48799272679530575, 0.5120072732062123, 0.4614952223576728, 0.538504777642705, 0.4806311814155702, 0.5193688185844524, 0.3856941647155279, 0.6143058353527676, 0.48946610553164394, 0.5105338944700654, 0.5387097291757583, 0.46129027082442425], + [0.1790921846673623, 0.4788641399395315, 0.521135860065129, 0.5446537578282069, 0.45534624217223024, 0.47686345736870006, 0.5231365426361706, 0.4563517900695584, 0.5436482099322492, 0.4752020099202152, 0.5247979900864611, 0.36882135237855546, 0.6311786477374014, 0.4873957124308582, 0.5126042875728772, 0.45565728679538675, 0.5443427132054637, 0.4776550193346195, 0.5223449806654293, 0.36882135237855546, 0.6311786477374014, 0.4893461275907012, 0.5106538724139474, 0.5446537578282069, 0.45534624217223024], + [0.2053306142231524, 0.4777840191834321, 0.5222159808270226, 0.5511530591492605, 0.44884694085174, 0.4751504097042673, 0.524849590306111, 0.4503415347917232, 0.5496584652119261, 0.47300400742920673, 0.5269959925844485, 0.3506935922806397, 0.6493064079129871, 0.48709469554384305, 0.5129053044645527, 0.4493098133320594, 0.550690186669776, 0.4744015855903308, 0.5255984144097612, 0.3506935922806397, 0.6493064079129872, 0.4896378800106497, 0.5103621200003274, 0.5511530591492605, 0.44884694085174], + [0.23403111999572482, 0.47714956904238764, 0.5228504309795537, 0.5582421925283767, 0.441757807473795, 0.47372157965402634, 0.5262784203667907, 0.44393534042039523, 0.556064659586904, 0.4709767059796277, 0.5290232940466605, 0.3313482665989063, 0.6686517337175707, 0.48716862491542784, 0.5128313751018443, 0.44243529725346, 0.5575647027503324, 0.4708549430333858, 0.529145056966773, 0.33134826659890626, 0.6686517337175707, 0.49044005182089323, 0.509559948202244, 0.5582421925283767, 0.441757807473795], + [0.265360273669802, 0.47708318976399317, 0.5229168102785969, 0.5659535062756249, 0.4340464937288219, 0.4726649672252281, 0.5273350328135624, 0.43716164303886096, 0.5628383569755031, 0.4691830836651915, 0.5308169163817715, 0.31086449299655233, 0.6891355075069863, 0.48770215437644726, 0.5122978456560425, 0.4350241774138862, 0.5649758225935957, 0.4670012052176428, 0.532998794782619, 0.31086449299655233, 0.6891355075069864, 0.4918581689887994, 0.508141831055151, 0.5659535062756249, 0.4340464937288219], + [0.2994854358041095, 0.4777174783401662, 0.5222825217358077, 0.574316722506148, 0.42568327750239326, 0.47207297515310964, 0.5279270249134185, 0.43006465877661193, 0.569935341250831, 0.4676842535902481, 0.5323157464866687, 0.2893678301740748, 0.7106321706011727, 0.4887822534198763, 0.5112177466358555, 0.42707701193500813, 0.5729229880790304, 0.4628291384487598, 0.5371708615516713, 0.28936783017407475, 0.7106321706011726, 0.49400052196083294, 0.5059994781145771, 0.574316722506148, 0.42568327750239326], + [0.3365775475475726, 0.4791913601100739, 0.5208086400140499, 0.5833589295233247, 0.41664107049198734, 0.4720381587732382, 0.5279618413310966, 0.4227051574986908, 0.5772948425514606, 0.4665338021366398, 0.5334661979776046, 0.2670321765925643, 0.7329678245555861, 0.4904938383483761, 0.5095061617385036, 0.41860669007123585, 0.5813933099537202, 0.4583306371612353, 0.5416693628394935, 0.26703217659256423, 0.732967824555586, 0.4969729053768573, 0.5030270947398747, 0.5833589295233247, 0.41664107049198734], + [0.37681635425052296, 0.4816452903938901, 0.5183547097915961, 0.5931050174056088, 0.406894982619926, 0.47264831905981824, 0.5273516810891166, 0.4151602013502282, 0.5848397987363646, 0.4657715522537635, 0.5342284478984635, 0.24407823788367597, 0.7559217637436002, 0.4929147505392692, 0.5070852495833014, 0.40964067319469166, 0.5903593268472253, 0.45350103536872644, 0.5464989646325382, 0.2440782378836759, 0.7559217637436003, 0.5008724985559483, 0.499127501606503, 0.5931050174056088, 0.406894982619926], + [0.4203979117948161, 0.4852158581159584, 0.5147841421375534, 0.6035784627643985, 0.39642153727518126, 0.47398145386371743, 0.5260185463291009, 0.40752183917625845, 0.5924781609639298, 0.46541753739929964, 0.5345824627803105, 0.2207684662553693, 0.779231535943275, 0.4961105584195843, 0.503889441735997, 0.4002233234941502, 0.5997766765723334, 0.4483392658728962, 0.5516607341293003, 0.2207684662553693, 0.7792315359432749, 0.5057813454072015, 0.4942186547947135, 0.6035784627643985, 0.39642153727518126], + [0.4675437697218772, 0.49003010023262955, 0.5099699000842389, 0.6148022351445336, 0.38519776491261987, 0.476101120995209, 0.5238988792303054, 0.39989490476997247, 0.6001050954422069, 0.46546707276650917, 0.5345329274174334, 0.19739889496031854, 0.8026011078652475, 0.5001297327174934, 0.4998702674583912, 0.3904184074961957, 0.6095815926035704, 0.4428479270518201, 0.5571520729519025, 0.19739889496031854, 0.8026011078652475, 0.5117599253446633, 0.48824007487660526, 0.6148022351445336, 0.38519776491261987], + [0.5185109240238787, 0.4961997119892525, 0.5038002883722054, 0.626799504722557, 0.37320049535475763, 0.47905269405996515, 0.5209473061767613, 0.39239415297576824, 0.6076058473246899, 0.465887750570531, 0.5341122495867747, 0.17428860057442463, 0.8257114028768711, 0.5049997480267948, 0.49500025214677495, 0.3803118073444423, 0.6196881927978055, 0.43703334081556827, 0.562966659190502, 0.1742886005744246, 0.8257114028768711, 0.5188412648690581, 0.48115873533884473, 0.626799504722557, 0.37320049535475763], + [0.5736015861938786, 0.5038151964021297, 0.49618480397149844, 0.6395938064100518, 0.360406193688805, 0.48286086396350336, 0.5171391362566798, 0.38514096144403914, 0.6148590389552314, 0.46661899741420315, 0.5333810026876493, 0.15176753531711992, 0.8482324686904444, 0.5107246386785423, 0.489275361464453, 0.3700143206096971, 0.6299856795841589, 0.43090566950899895, 0.5690943305004864, 0.15176753531711987, 0.8482324686904446, 0.527025989447677, 0.4729740107084106, 0.6395938064100518, 0.360406193688805], + [0.6331720100570443, 0.51293994057036, 0.4870600597736107, 0.653208357590649, 0.3467916425303283, 0.48752862780415995, 0.5124713723724837, 0.378259760096236, 0.621740240403681, 0.4675745670514478, 0.5324254329804365, 0.1301632605762617, 0.8698367438497405, 0.5172845184024512, 0.48271548168445216, 0.3596642131957091, 0.6403357870584447, 0.42447910575201275, 0.5755208942621727, 0.1301632605762617, 0.8698367438497406, 0.536278719283044, 0.4637212807888028, 0.6532083575906489, 0.3467916425303283], + [0.697639950928642, 0.523604299496949, 0.47639570077482524, 0.6676643114685502, 0.33233568867548346, 0.49303795072285195, 0.5069620493920223, 0.37187429101857783, 0.6281257095735976, 0.468648033345396, 0.5313519666248585, 0.10978688148719276, 0.8902131231620741, 0.5246375490004386, 0.47536245101830277, 0.34942898856426946, 0.6505710117579463, 0.4177720744428624, 0.5822279255773559, 0.10978688148719272, 0.890213123162074, 0.5465262743474643, 0.4534737256275574, 0.6676643114685502, 0.33233568867548346], + [0.7674906781843253, 0.5357999897721203, 0.4642000103983627, 0.6829778273485236, 0.3170221728216951, 0.49935226361907015, 0.5006477364309982, 0.3661038054624409, 0.6338961952035967, 0.4697209972276972, 0.5302790027116148, 0.090918435435965, 0.9090815692043751, 0.5327247446754585, 0.467275255285672, 0.3395057459480532, 0.6604942544473702, 0.4108073136348735, 0.5891926863922755, 0.090918435435965, 0.9090815692043752, 0.5576582000049018, 0.44234179989176464, 0.6829778273485236, 0.3170221728216951], + [0.8432817346870681, 0.5494753409281361, 0.4505246591452348, 0.699155936907345, 0.30084406329672125, 0.506420902003037, 0.4935790979968064, 0.3610593834000047, 0.6389406173134395, 0.47067332856959954, 0.5293266713801464, 0.0737922260560981, 0.9262077783337026, 0.541477736877005, 0.45852226306201227, 0.33011958963528254, 0.6698804108311611, 0.4036116496644249, 0.5963883503691452, 0.0737922260560981, 0.9262077783337026, 0.5695300351620995, 0.43046996470874566, 0.699155936907345, 0.30084406329672125], + [0.9256468029617211, 0.5645320754001393, 0.43546792463611605, 0.7161912824085197, 0.28380871784425754, 0.5141854239754994, 0.48581457600323563, 0.35684066879939386, 0.6431593319304177, 0.47139436968952275, 0.5286056303037721, 0.05858306784619905, 0.9414169360743179, 0.5508291533892603, 0.44917084657928147, 0.3215198166309655, 0.6784801838877589, 0.3962152598482475, 0.6037847401883034, 0.05858306784619905, 0.9414169360743178, 0.5819694249134756, 0.4180305750087316, 0.7161912824085197, 0.28380871784425754], + [1.0152991106475904, 0.5808241792670484, 0.4191758208651332, 0.734055912580426, 0.26594408774592404, 0.5225874332099092, 0.477412566783136, 0.3535333643911124, 0.6464666363240505, 0.47179372360000205, 0.5282062764451078, 0.04539492836983383, 0.9546050749178683, 0.5607246339717317, 0.43927536607480494, 0.31397394616516616, 0.6860260543585048, 0.38865022009847255, 0.6113497799328492, 0.04539492836983383, 0.9546050749178683, 0.5947846334923094, 0.40521536656178614, 0.734055912580426, 0.26594408774592404], + [1.1130348216052772, 0.5981590975963014, 0.40184090283791024, 0.752694463303724, 0.24730553713369213, 0.5315771095836365, 0.4684228904547164, 0.35120773816659184, 0.648792262507903, 0.47181014359679785, 0.5281898564799952, 0.034253770133664985, 0.965746232437922, 0.5711348624113209, 0.42886513773650414, 0.3077598786628061, 0.6922401217834087, 0.38094815677409405, 0.6190518432375423, 0.03425377013366497, 0.9657462324379218, 0.607774383760405, 0.39222561648353876, 0.7526944633037239, 0.2473055371336922], + [1.2197368529096122, 0.6163011142224173, 0.3836988867651516, 0.7720172375750707, 0.22798276302545376, 0.541121218744733, 0.4588787813564632, 0.3499181274973445, 0.6500818731194445, 0.47141718998555693, 0.5285828100877724, 0.025106277284706116, 0.9748937245771497, 0.5820655365893959, 0.41793446364514175, 0.30315641332303406, 0.6968435869425378, 0.3731368608648656, 0.6268631391063455, 0.025106277284706126, 0.9748937245771497, 0.6207374838333639, 0.37926251661703425, 0.7720172375750707, 0.22798276302545376], + [1.3363795528781923, 0.6349766258764424, 0.36502337590232725, 0.7918939304011008, 0.20810607042931747, 0.5512090748608418, 0.448790925303503, 0.34970304320338147, 0.6502969573488335, 0.4706246954052808, 0.5293753046370017, 0.01782550555642898, 0.9821744956808469, 0.5935630823903095, 0.4064369178835637, 0.30043198676066435, 0.6995680132476951, 0.36523579597001526, 0.6347642039363434, 0.01782550555642898, 0.9821744956808469, 0.6334806439749726, 0.36651935665493157, 0.7918939304011009, 0.20810607042931742], + [1.464034650475012, 0.6538812774278498, 0.3461187252856739, 0.8121489894844454, 0.18785101165428542, 0.5618549032214172, 0.43814509699171134, 0.3505851222882846, 0.6494148781996907, 0.4694755866666429, 0.5305244133408549, 0.012223405562515326, 0.9877765951853693, 0.6057142114126122, 0.3942857888414163, 0.2998310385307537, 0.7001689612392582, 0.3572505766000999, 0.6427494232192653, 0.012223405562515326, 0.9877765951853693, 0.6458233461616306, 0.3541766545923188, 0.8121489894844454, 0.1878510116542854], + [1.6038787764286142, 0.6726894750181621, 0.32731052859886683, 0.8325598009823144, 0.1674402005463841, 0.5730953764704096, 0.4269046237696115, 0.35257004176691675, 0.6474299586576843, 0.468038158768657, 0.531961841222585, 0.008068901237964027, 0.991931099169312, 0.6186381150702107, 0.38136188511869984, 0.3015573014383966, 0.6984426982441001, 0.34916674536531256, 0.6508332543561348, 0.008068901237964027, 0.991931099169312, 0.6575994989271492, 0.342400501890251, 0.8325598009823144, 0.1674402005463841], + [1.7572026068079307, 0.6910671680732976, 0.3089328361970235, 0.8528589618717681, 0.1471410401164694, 0.5849817925421315, 0.4150182077040227, 0.35564373372883656, 0.6443562666263513, 0.466394467362771, 0.5336055326362145, 0.0051091101620470486, 0.9948908900357558, 0.6324711413970924, 0.36752885871341034, 0.3057540205148308, 0.6942459792948539, 0.3409435314435611, 0.6590564681899415, 0.0051091101620470486, 0.9948908900357558, 0.6686565985046452, 0.3313434023298032, 0.8528589618717681, 0.1471410401164694], + [1.9254213541550484, 0.7086884030487153, 0.2913116014376946, 0.8727417685410753, 0.1272582339420789, 0.5975673607407176, 0.4024326394991306, 0.35976786134907707, 0.6402321389203198, 0.46462614333291335, 0.5353738566864354, 0.003090694232263095, 0.9969093058524992, 0.6473451731514149, 0.35265482690404065, 0.3124827841300124, 0.6875172159127944, 0.33250865194315626, 0.6674913476397468, 0.003090694232263095, 0.9969093058524992, 0.6788538635868206, 0.3211461372397191, 0.8727417685410754, 0.12725823394207897], + [2.110086160511424, 0.7252547789857086, 0.2747452252134636, 0.8918796446411171, 0.10812035831291406, 0.6108912284518447, 0.38910877178052616, 0.3648743891968726, 0.635125610965397, 0.4627996429569358, 0.5372003570803048, 0.0017784048474360332, 0.9982215951842491, 0.663362502073287, 0.33663749797935527, 0.3217048321406736, 0.6782951680101036, 0.3237554841537525, 0.6762445154419108, 0.0017784048474360301, 0.9982215951842491, 0.6880610343097128, 0.31193896650039266, 0.8918796446411171, 0.10812035831291406], + [2.3128961811285427, 0.7405151034130014, 0.2594849000922768, 0.9099394812282764, 0.09006052209308346, 0.6249619955987971, 0.3750380046322307, 0.37086090621910756, 0.6291390938262609, 0.4609535655855389, 0.539046434459681, 0.0009686011759262158, 0.9990313988342858, 0.6805714613316456, 0.3194285387826335, 0.33327024111061, 0.6667297589231004, 0.3145439470854694, 0.6854560526000055, 0.0009686011759262141, 0.9990313988342858, 0.696159136881021, 0.3038408639084313, 0.9099394812282763, 0.09006052209308346], + [2.5357117613508824, 0.7542813725774841, 0.24571863003907357, 0.926607737515881, 0.0733922659863018, 0.6397442102630181, 0.36025578996851604, 0.37758874136960724, 0.6224112585844433, 0.45909083431764497, 0.5409091657254054, 0.000496646499317217, 0.9995033535034902, 0.6989478688698625, 0.30105213136372166, 0.34691996470919434, 0.6530800352290009, 0.30470610727496505, 0.6952938925690059, 0.000496646499317217, 0.9995033535034903, 0.7030436623438607, 0.29695633841187374, 0.9266077375158809, 0.0733922659863018], + [2.780569680848501, 0.7664376153189463, 0.23356238643538266, 0.9416167735663715, 0.05838322987007401, 0.655151337579879, 0.34484866263483566, 0.3848855385830923, 0.6151144613584706, 0.45717786405747557, 0.5428221359746791, 0.00023830781520041002, 0.999761692185454, 0.7183868017745259, 0.2816131986194425, 0.3623028255054095, 0.6376971748148231, 0.29405689196507645, 0.7059431080738188, 0.00023830781520041002, 0.999761692185454, 0.7086296413859762, 0.291370359305183, 0.9416167735663715, 0.05838322987007399], + [3.0497014633912, 0.7769401037743904, 0.22305989729101497, 0.9547696390621557, 0.04523036405144293, 0.6710476635996757, 0.3289523365528927, 0.3925528346892515, 0.6074471653659939, 0.4551512795751935, 0.5448487204404057, 0.00010630367518587669, 0.9998936963249443, 0.7387070636809498, 0.26129293690543737, 0.37900520577596497, 0.6209947956555586, 0.28240947583556353, 0.7175905243897367, 0.00010630367518587669, 0.9998936963249444, 0.712857428155518, 0.28714257242259494, 0.9547696390621557, 0.04523036405144293], + [3.3455551298237527, 0.7858099069080096, 0.21419009369457487, 0.9659589834270308, 0.03404101915793561, 0.6872596090687563, 0.3127403909541362, 0.40037773787361125, 0.5996222624322488, 0.4529307708943068, 0.5470692291068094, 4.376355546353621e-05, 0.9999562364445594, 0.7596673753463186, 0.24033262547248002, 0.39658743770778004, 0.6034125653565262, 0.2695940954443663, 0.7304059049229187, 4.376355546353621e-05, 0.9999562364445594, 0.7156978947295736, 0.2843021056816621, 0.9659589834270307, 0.03404101915793561], + [3.6708199447950802, 0.7931205114355323, 0.20687948891353308, 0.9751763142880973, 0.02482368766330036, 0.7035945588802648, 0.29640544094414456, 0.40814668415305455, 0.5918533165004415, 0.4504351011235745, 0.5495648988744403, 1.649461936813193e-05, 0.9999835053806357, 0.7809900119873978, 0.21900998911876873, 0.41461950691063676, 0.5853804977842917, 0.2554784406796496, 0.7445215597793094, 1.649461936813193e-05, 0.9999835053806357, 0.7171561394533207, 0.28284386075276063, 0.9751763142880974, 0.024823687663300335], + [4.028453250028327, 0.7989836750028728, 0.2010163252478071, 0.9825095204409421, 0.017490480888106848, 0.7198634501173266, 0.28013654946578725, 0.4156589140965084, 0.5843410869271156, 0.44759776100925275, 0.5524022389991555, 5.641472801233128e-06, 0.9999943585271994, 0.8023857130789452, 0.19761428837090478, 0.43270996830570546, 0.567290037522157, 0.23998751136652235, 0.7600124891658777, 5.641472801233128e-06, 0.9999943585271994, 0.7172734213993249, 0.2827265785981166, 0.9825095204409421, 0.017490480888106848], + [4.421708627819536, 0.8035360422454035, 0.19646395799571548, 0.9881289283419178, 0.011871072468123597, 0.7359027323467596, 0.2640972669994504, 0.42273775553538606, 0.5772622458062258, 0.44437937566348296, 0.5556206243585231, 1.7339168778973376e-06, 0.9999982660831223, 0.8235739929436482, 0.1764260088821953, 0.45052485137719905, 0.5494751548504926, 0.2231209172953971, 0.7768790833539784, 1.7339168778973437e-06, 0.9999982660831223, 0.7161275025527903, 0.2838724972746242, 0.9881289283419178, 0.011871072468123597], + [4.854165207527281, 0.8069279699547632, 0.19307203030583014, 0.992264466860387, 0.007735533577610952, 0.7515920559893431, 0.24840794317746429, 0.42923863883735763, 0.5707613627233905, 0.44077525193051015, 0.5592247480896653, 4.737926319210662e-07, 0.9999995262073681, 0.8442952543074411, 0.15570474788361655, 0.4677963050760439, 0.532203700858878, 0.20496592551770904, 0.7950340753663045, 4.737926319210662e-07, 0.9999995262073681, 0.7138317297445729, 0.28616826998686423, 0.992264466860387, 0.007735533577610952], + [5.329758550723221, 0.8093150059625391, 0.19068499430589683, 0.9951781236046456, 0.004821876603477112, 0.7668656527482178, 0.23313434633813604, 0.4350535770108693, 0.5649464246580267, 0.4368177714132334, 0.5631822285731869, 1.1374852276076899e-07, 0.9999998862514772, 0.8643142956863319, 0.13568570681427605, 0.4843227916465216, 0.5156772135077055, 0.1857049530860669, 0.8142950482196826, 1.1374852276076899e-07, 0.9999998862514772, 0.7105330566316129, 0.289466943099398, 0.9951781236046456, 0.004821876603477112], + [5.852813964690113, 0.8108517924620887, 0.1891482077856204, 0.9971364171272824, 0.0028635829587152746, 0.7817170259576868, 0.21828297316489315, 0.44011238527388485, 0.5598876164034998, 0.432574235050668, 0.5674257648654251, 2.368457326683603e-08, 0.9999999763154267, 0.883417638145653, 0.11658236457716177, 0.4999635290872589, 0.5000364750444823, 0.16561652829857715, 0.8343834736664045, 2.368457326683603e-08, 0.9999999763154268, 0.7064089470072891, 0.2935910528274362, 0.9971364171272824, 0.0028635829587152772], + [6.428083232789047, 0.8116878304911367, 0.18831216971031575, 0.9983870613134118, 0.0016129387171283528, 0.7961975711354035, 0.2038024281335122, 0.44438120127059033, 0.5556188003343671, 0.42814113422060956, 0.5718588655988043, 4.2165452615460695e-09, 0.9999999957834548, 0.9014086830070964, 0.09859131983637295, 0.5146298605965879, 0.48537014248040444, 0.14506893036103488, 0.8549310725149173, 4.2165452615460695e-09, 0.9999999957834548, 0.7016628623925582, 0.2983371376495025, 0.9983870613134118, 0.0016129387171283528], + [7.060785689495143, 0.8119644600612507, 0.18803554008227025, 0.9991426320936655, 0.000857367915533844, 0.8104097968583935, 0.18959020264834273, 0.4478590178740665, 0.552140983592757, 0.4236358070042764, 0.5763641927120527, 6.318575965296291e-10, 0.9999999993681424, 0.9181047782790781, 0.08189522458067756, 0.5282757011891542, 0.4717243009424157, 0.12450578131066202, 0.87549422268055, 6.318575965296291e-10, 0.9999999993681424, 0.6965178999957381, 0.3034821003475834, 0.9991426320936654, 0.000857367915533844], + [7.756654431817071, 0.8118124878979106, 0.18818751219077232, 0.9995722973006447, 0.00042770270167142893, 0.8244950530161476, 0.17550494680883955, 0.45057305320912316, 0.5494269480628091, 0.4191862899081635, 0.5808137097187043, 7.833996021592681e-11, 0.99999999992166, 0.9333390789096351, 0.06666092386131747, 0.5408885035636292, 0.4591114978042475, 0.10442292226394048, 0.8955770829085878, 7.833996021592681e-11, 0.99999999992166, 0.6912081396766617, 0.30879186103664236, 0.9995722973006447, 0.00042770270167142893], + [8.521988353167703, 0.8113500724285876, 0.18864992761737948, 0.9998009963474797, 0.00019900365300005358, 0.8386146146663, 0.1613853855681082, 0.45257386377990766, 0.5474261372471796, 0.41492012167305553, 0.5850798778906126, 7.885739931595669e-12, 0.9999999999921143, 0.9469681785510153, 0.053031824023469766, 0.552481492219195, 0.44751850858370085, 0.08533620099137655, 0.9146638051888668, 7.885739931595669e-12, 0.9999999999921143, 0.6859674034643088, 0.31403259763775293, 0.9998009963474795, 0.00019900365300005323], + [9.363710661386344, 0.8106807210178678, 0.1893192789992194, 0.9999142261554351, 8.577384464512704e-05, 0.8529224607002844, 0.14707754005992718, 0.4539310675125381, 0.5460689332325989, 0.410953018914802, 0.5890469806169526, 6.312136600854686e-13, 0.9999999999993688, 0.9588844547813681, 0.04111554749016261, 0.5630873402990518, 0.43691266011836594, 0.0677406893366348, 0.9322593173793363, 6.312136600854686e-13, 0.9999999999993688, 0.6810154831748176, 0.31898451825646484, 0.9999142261554352, 8.577384464512704e-05], + [10.289434569791274, 0.8098915353946328, 0.19010846460458267, 0.9999660108281766, 3.398917183406939e-05, 0.8675292234601268, 0.13247077794800433, 0.4547302393080486, 0.5452697611453212, 0.40737870058010545, 0.5926212989539076, 3.927046405424695e-14, 0.9999999999999607, 0.9690303753513312, 0.030969626527247447, 0.5727530696537713, 0.42724693052086893, 0.0520637249358942, 0.9479362816046792, 3.927046405424695e-14, 0.9999999999999607, 0.6765425355703363, 0.3234574660380298, 0.9999660108281766, 3.398917183406945e-05], + [11.307536804415568, 0.8090520900777198, 0.19094790991135485, 0.9999877201283156, 1.2279871685509055e-05, 0.882460536169942, 0.11753946595892593, 0.455070862621888, 0.5449291375735089, 0.4042614829899632, 0.5957385165836219, 1.851814523043196e-15, 0.9999999999999981, 0.9774109668540195, 0.022589034580988772, 0.5815357807312493, 0.4184642193029412, 0.038617199211694674, 0.9613828064163917, 1.851814523043196e-15, 0.9999999999999981, 0.6726933307441636, 0.3273066708216836, 0.9999877201283156, 1.2279871685509034e-05], + [12.427239279007768, 0.80821441587908, 0.191785584105717, 0.9999959921005704, 4.007899429585859e-06, 0.8976191803715742, 0.10238082245095792, 0.4550642588117884, 0.5449357412067605, 0.4016331882710954, 0.598366811375667, 6.438069601586886e-17, 0.9999999999999999, 0.984100466562085, 0.01589953443542697, 0.589498870810034, 0.4105011291501497, 0.027558134846046984, 0.972441869388699, 6.438069601586886e-17, 0.9999999999999999, 0.6695542234080946, 0.330445777902649, 0.9999959921005704, 4.007899429585859e-06], + [13.658698702896215, 0.8074143374273538, 0.19258566255745632, 0.9999988302258626, 1.1697741374893874e-06, 0.9127662345407773, 0.08723376883931788, 0.4548296525007062, 0.5451703474474325, 0.3994949576451383, 0.6005050420903221, 1.6006912468099495e-18, 1.0, 0.9892400803053135, 0.010759920316426858, 0.596708619692504, 0.4032913802322178, 0.018868920881293667, 0.9811310818969741, 1.600691246809938e-18, 1.0, 0.6671465389913497, 0.3328534619466946, 0.9999988302258624, 1.1697741374893874e-06], + [15.013103311617716, 0.806673885920069, 0.1933261140666917, 0.9999996980799573, 3.019200428087466e-07, 0.9275363328959164, 0.0724636708129494, 0.4544867731424154, 0.5455132268262293, 0.3978227963486291, 0.6021772034665778, 2.752176147277833e-20, 1.0, 0.99302584223802, 0.006974158104325977, 0.6032312695476958, 0.39676873036143334, 0.012366589777989673, 0.987633411822343, 2.752176147277833e-20, 1.0, 0.6654295625209421, 0.3345704380555759, 0.9999996980799571, 3.019200428087466e-07], + [16.50277596560458, 0.806004020269273, 0.19399597971935004, 0.9999999319331846, 6.806681547503069e-08, 0.9414917556701138, 0.05850824806973209, 0.45414512603550194, 0.5458548739974292, 0.3965741982227265, 0.6034258016503544, 3.1535983968329686e-22, 1.0, 0.9956883748282404, 0.004311625335751711, 0.6091308172108687, 0.3908691826926597, 0.007742392797009699, 0.9922576080255998, 3.153598396832991e-22, 1.0, 0.6643138071790111, 0.33568619313056086, 0.9999999319331845, 6.806681547503069e-08], + [18.141283905315323, 0.8054069457407969, 0.1945930542492258, 0.9999999867766802, 1.3223319747021695e-08, 0.9542024901409464, 0.04579751331601816, 0.45389254157813924, 0.546107458513245, 0.3956935256183626, 0.604306474294342, 2.3121793374685716e-24, 1.0, 0.9974687549809804, 0.002531245086284498, 0.6144675933814351, 0.38553240652278126, 0.004621400004002139, 0.995378600381864, 2.3121793374685716e-24, 1.0, 0.6636814626849988, 0.3363185374633723, 0.9999999867766802, 1.3223319747021695e-08], + [19.943556988398303, 0.8048779740708123, 0.19512202592082584, 0.9999999978191628, 2.180837214376619e-09, 0.9653260455935522, 0.03467395732447762, 0.45378695692340254, 0.5462130431918085, 0.39511599730605906, 0.6048840026367215, 1.0372172985325687e-26, 1.0, 0.9985955653019132, 0.0014044347213363604, 0.619297464875435, 0.38070253503447815, 0.0026240839710732567, 0.9973759161974609, 1.0372172985325687e-26, 1.0, 0.663408153081737, 0.33659184698226846, 0.9999999978191628, 2.1808372143766117e-09], + [21.92601725813219, 0.8044074651576938, 0.19559253483607789, 0.9999999996996333, 3.0036663870947204e-10, 0.9746616663227948, 0.025338335911604837, 0.4538543046531192, 0.5461456954495495, 0.3947720202698043, 0.6052279796970539, 2.709911350681052e-29, 1.0, 0.9992673312262642, 0.0007326687804043863, 0.6236714027538445, 0.37632859716542094, 0.001413340323298892, 0.998586659745507, 2.709911350681052e-29, 1.0, 0.6633803041599685, 0.3366196958644665, 0.9999999996996334, 3.0036663870947204e-10], + [24.106722707799637, 0.8039832677110261, 0.19601673228496239, 0.99999999996607, 3.392996027813303e-11, 0.9821670833050817, 0.017832918231508357, 0.45409262321263455, 0.5459073768577755, 0.3945931698745432, 0.6054068301094465, 3.906160227234604e-32, 1.0, 0.9996426265157716, 0.0003573734857926435, 0.627635274224826, 0.37236472570563744, 0.0007193577146141787, 0.9992806423111339, 3.906160227234604e-32, 1.0, 0.66350518072555, 0.33649481928230573, 0.99999999996607, 3.3929960278133144e-11], + [26.50552750521552, 0.8035933977989017, 0.19640660219885078, 0.9999999999969182, 3.0817376522551428e-12, 0.9879415149448479, 0.012058485993817852, 0.45448008922774774, 0.5455199108099128, 0.39451898637389293, 0.6054810136199003, 2.926759209815957e-35, 1.0, 0.9998380143077544, 0.00016198569254116584, 0.631229871987871, 0.36877012795399033, 0.00034432720359897916, 0.9996556728049429, 2.9267592098159984e-35, 1.0, 0.6637138658715563, 0.33628613413030806, 0.9999999999969182, 3.0817376522551537e-12], + [29.144260375730173, 0.8032282066176539, 0.1967717933812427, 0.9999999999997798, 2.2019555088010264e-13, 0.992187620513051, 0.007812379991274345, 0.45498394291592625, 0.5450160570991179, 0.3945022737409714, 0.6054977262571642, 1.0676419233772644e-38, 1.0, 0.9999322342453888, 6.776575465548831e-05, 0.634491224033619, 0.3655087759187912, 0.0001540761778229482, 0.9998459238246079, 1.0676419233772644e-38, 1.0, 0.6639593518473528, 0.3360406481527816, 0.9999999999997798, 2.2019555088010264e-13], + [32.0469225938447, 0.8028814279746718, 0.19711857202487662, 0.9999999999999879, 1.2083656064546791e-14, 0.9951662637996297, 0.0048337364365700405, 0.4555680591918762, 0.5444319408117262, 0.39451106521069684, 0.6054889347888847, 1.7643919454744707e-42, 1.0, 0.9999740331655688, 2.596683443636822e-05, 0.6374511395421166, 0.362548860419525, 6.399748632420625e-05, 0.9999360025142535, 1.7643919454744707e-42, 1.0, 0.6642122225541853, 0.3357877774456428, 0.9999999999999879, 1.2083656064546704e-14], + [35.2399070290846, 0.8025500424020203, 0.1974499575978716, 0.9999999999999996, 4.960241647579406e-16, 0.9971545759406618, 0.002845424154896197, 0.45619822054896547, 0.5438017794506511, 0.3945271221157284, 0.6054728778841972, 1.2204177162017785e-46, 1.0, 0.9999909632741243, 9.036725876080115e-06, 0.6401378596888078, 0.35986214028064384, 2.4474577057693733e-05, 0.9999755254230546, 1.2204177162017785e-46, 1.0, 0.6644558073236507, 0.33554419267622027, 0.9999999999999996, 4.960241647579406e-16], + [38.75223979796219, 0.8022333737771888, 0.19776662622286945, 1.0, 1.4795038320260433e-17, 0.99841335665593, 0.0015866433771204835, 0.45684515669153153, 0.5431548433075404, 0.3945422819885148, 0.6054577180114684, 3.2385326739383905e-51, 1.0, 0.9999971707368448, 2.8292631552064868e-06, 0.642576672011919, 0.3574233279639915, 8.539105175340448e-06, 0.9999914608948421, 3.2385326739383905e-51, 1.0, 0.6646818839721093, 0.3353181160278324, 1.0, 1.4795038320260433e-17], + [42.615846246234895, 0.8019319799993837, 0.1980680200007404, 1.0, 3.10579748274708e-19, 0.999166090240337, 0.0008339097693167096, 0.457485868633382, 0.5425141313661107, 0.3945543771401933, 0.6054456228598046, 2.995845420295408e-56, 1.0, 0.9999992114256537, 7.885743462299776e-07, 0.644790402213206, 0.35520959776795324, 2.6906045886925738e-06, 0.9999973093954135, 2.995845420295408e-56, 1.0, 0.6648873673131825, 0.33511263268679853, 1.0, 3.1057974827471023e-19], + [46.865843238561574, 0.8016467519824886, 0.19835324801764742, 1.0, 4.430195501349322e-21, 0.99958920135049, 0.000410798651857161, 0.45810379164610837, 0.5418962083537735, 0.3945639605098659, 0.605436039490142, 8.694981759125066e-62, 1.0, 0.9999998065908438, 1.934091562662236e-07, 0.6467997666971235, 0.3532002332882394, 7.571903023982954e-07, 0.9999992428096978, 8.694981759125315e-62, 1.0, 0.6650720165713103, 0.334927983428686, 1.0, 4.430195501349322e-21], + [51.540860076447714, 0.8013783813759104, 0.19862161862421268, 1.0, 4.131320388000483e-23, 0.9998115125255982, 0.0001884874748690129, 0.4586882226411285, 0.5413117773589241, 0.3945722861791805, 0.6054277138208322, 7.051258378158502e-68, 1.0, 0.9999999587882905, 4.1211709539100567e-08, 0.6486236147597026, 0.35137638522898607, 1.8803073864177754e-07, 0.9999998119692614, 7.051258378158702e-68, 1.0, 0.6652369920326135, 0.3347630079673869, 1.0, 4.1313203880004536e-23], + [56.68339078142339, 0.8011271574525509, 0.19887284254755172, 1.0, 2.4138827325447265e-25, 0.9999200078604482, 7.999213962648807e-05, 0.45923331688730346, 0.5407666831127805, 0.3945803850014417, 0.6054196149985713, 1.4065283951888004e-74, 1.0, 0.9999999924775339, 7.522466072246149e-09, 0.6502791026322686, 0.3497208973590266, 4.06649940087072e-08, 0.999999959335006, 1.4065283951888405e-74, 1.0, 0.6653840255916713, 0.3346159744083297, 1.0, 2.4138827325447265e-25], + [62.34018092940995, 0.8008929685092575, 0.19910703149082495, 1.0, 8.433414018438167e-28, 0.9999688422809118, 3.115771909759533e-05, 0.45973689605264517, 0.5402631039474208, 0.3945888274376844, 0.6054111725623268, 5.998052524446901e-82, 1.0, 0.9999999988418279, 1.158172145477494e-09, 0.6517818335040928, 0.34821816648923, 7.550670682040357e-09, 0.9999999924493294, 5.99805252444673e-82, 1.0, 0.6655149860658756, 0.33448501393412505, 1.0, 8.433414018438167e-28], + [68.5626526646898, 0.800675389861281, 0.19932461013878405, 1.0, 1.673471355719361e-30, 0.9999889559184005, 1.1044081600352816e-05, 0.4601992738435667, 0.5398007261564766, 0.39459779712538434, 0.6054022028746245, 4.686567205783916e-90, 1.0, 0.9999999998521345, 1.4786548273698462e-10, 0.6531459830090518, 0.34685401698583984, 1.1851547957038084e-09, 0.9999999988148451, 4.686567205783916e-90, 1.0, 0.6656316734723853, 0.33436832652761517, 1.0, 1.673471355719361e-30], + [75.40737193500055, 0.8004737852930711, 0.19952621470697995, 1.0, 1.7823560876450432e-33, 0.9999964709981801, 3.529001819965367e-06, 0.46062225543370444, 0.5393777445663223, 0.3946072423364322, 0.6053927576635746, 5.662176740498431e-99, 1.0, 0.9999999999846357, 1.5364260360525267e-11, 0.6543844178767187, 0.34561558211938165, 1.54602788529112e-10, 0.9999999998453972, 5.662176740498431e-99, 1.0, 0.665735734760432, 0.33426426523956826, 1.0, 1.7823560876450686e-33], + [82.93656237373989, 0.8002873908887345, 0.1997126091113056, 1.0, 9.574334866745366e-37, 0.999998993921727, 1.0060782729824635e-06, 0.46100839268067817, 0.5389916073193386, 0.39461700423815604, 0.6053829957618492, 8.776590575852558e-109, 1.0, 0.9999999999987272, 1.2728180099312394e-12, 0.655508809117191, 0.34449119087983776, 1.6452715853276114e-11, 0.9999999999835473, 8.776590575852309e-109, 1.0, 0.6658286393907002, 0.33417136060929986, 1.0, 9.574334866745366e-37], + [91.21867063258706, 0.8001153749600755, 0.19988462503995597, 1.0, 2.422337752178118e-40, 0.9999997470025525, 2.5299744757305464e-07, 0.46136049995072154, 0.5386395000492888, 0.39462689794098793, 0.6053731020590158, 1.421360012486289e-119, 1.0, 0.9999999999999178, 8.21856190085867e-14, 0.65652973891617, 0.3434702610815698, 1.399505040955455e-12, 0.9999999999986005, 1.42136001248637e-119, 1.0, 0.6659116824638218, 0.33408831753617824, 1.0, 2.422337752178118e-40], + [100.32898837073988, 0.7999568778447433, 0.20004312215528128, 1.0, 2.6771578310957306e-44, 0.9999999445814053, 5.5418594667754524e-08, 0.46168138156024, 0.5383186184397666, 0.3946367536518669, 0.605363246348136, 1.918765614173644e-131, 1.0, 0.999999999999996, 4.034427211178667e-15, 0.6574568002605619, 0.34254319973772107, 9.30446214506381e-14, 0.999999999999907, 1.918765614173644e-131, 1.0, 0.6659859992720746, 0.33401400072792536, 1.0, 2.6771578310957306e-44], + [110.35033656646165, 0.7998110374913906, 0.2001889625086287, 1.0, 1.1897555873568962e-48, 0.9999999895707026, 1.0429297376246178e-08, 0.4619737021790218, 0.5380262978209823, 0.3946464322779854, 0.6053535677220169, 1.684120875016624e-144, 1.0, 0.9999999999999999, 1.4649545618079744e-16, 0.658298688784551, 0.34170131121414626, 4.717183230591889e-15, 0.9999999999999953, 1.68412087501672e-144, 1.0, 0.6660525834109775, 0.3339474165890225, 1.0, 1.1897555873568794e-48], + [121.37381835157795, 0.7996770058605498, 0.20032299413946533, 1.0, 1.9409772378704018e-53, 0.9999999983391885, 1.6608114944600685e-09, 0.46223993882521247, 0.53776006117479, 0.39465582759162604, 0.6053441724083756, 7.312423356344523e-159, 1.0, 1.0, 3.8179656843796535e-18, 0.6590632868075704, 0.3409367131914422, 1.7749050956704977e-16, 0.9999999999999998, 7.312423356344108e-159, 1.0, 0.6661123047844931, 0.3338876952155068, 1.0, 1.9409772378704018e-53], + [133.49964718433796, 0.7995539595950326, 0.20044604040497924, 1.0, 1.0515741261662735e-58, 0.9999999997799114, 2.2008857670350268e-10, 0.4624823722573155, 0.5375176277426859, 0.3946648627386483, 0.6053351372613529, 1.1628392314959086e-174, 1.0, 1.0, 6.908845779302434e-20, 0.6597577398620875, 0.34024226013716485, 4.810808284560156e-18, 1.0, 1.1628392314959086e-174, 1.0, 0.6661659260040943, 0.33383407399590576, 1.0, 1.0515741261662735e-58], + [146.8380578666119, 0.7994411070544652, 0.2005588929455441, 1.0, 1.6945006319504213e-64, 0.999999999976171, 2.382908046399718e-11, 0.46270309424406314, 0.5372969057559374, 0.3946734851758455, 0.6053265148241556, 4.865474552242114e-192, 1.0, 1.0, 8.3695923804562e-22, 0.6603885261838122, 0.3396114738156223, 9.09005040531468e-20, 1.0, 4.865474552242114e-192, 1.0, 0.6662141167604825, 0.3337858832395174, 1.0, 1.6945006319504213e-64], + [161.51030867383923, 0.7993376929050536, 0.2006623070949537, 1.0, 7.1938962881917574e-71, 0.9999999999979343, 2.0657251861955895e-12, 0.4629040198859397, 0.5370959801140602, 0.3946816617656089, 0.6053183382343919, 3.722995552266198e-211, 1.0, 1.0, 6.520844754266289e-24, 0.6609615197062466, 0.33903848029332584, 1.154915536222469e-21, 1.0, 3.722995552266198e-211, 1.0, 0.6662574662207826, 0.3337425337792173, 1.0, 7.1938962881917574e-71], + [177.64978370167742, 0.7992430009526585, 0.20075699904734723, 1.0, 7.04172769904905e-78, 0.9999999999998598, 1.4022920012083998e-13, 0.46308690085092763, 0.536913099149072, 0.39468937456317593, 0.6053106254368246, 3.491706096347725e-232, 1.0, 1.0, 3.126344682208809e-26, 0.661482047110336, 0.338517952889341, 9.482727748779109e-24, 1.0, 3.491706096347725e-232, 1.0, 0.6662964936669545, 0.33370350633304546, 1.0, 7.04172769904905e-78], + [195.40320544832187, 0.7991563556565792, 0.20084364434342544, 1.0, 1.3723539213042792e-85, 0.9999999999999927, 7.274191632596341e-15, 0.4632533382136343, 0.5367466617863653, 0.3946966173524537, 0.6053033826475468, 2.5846300110169138e-255, 1.0, 1.0, 8.78656310425478e-29, 0.6619549394593233, 0.3380450605404329, 4.816762890472685e-26, 1.0, 2.5846300110169138e-255, 1.0, 0.6663316576182252, 0.33366834238177484, 1.0, 1.3723539213042792e-85], + [214.93196865526124, 0.7990771226367506, 0.2009228773632531, 1.0, 4.5313961195727694e-94, 0.9999999999999997, 2.806913987279855e-16, 0.46340479455897743, 0.5365952054410221, 0.39470339284264416, 0.6052966071573563, 9.30456523820904e-281, 1.0, 1.0, 1.3723265940262311e-31, 0.6623845789159692, 0.3376154210838467, 1.4426466845843157e-28, 1.0, 9.30456523820904e-281, 1.0, 0.6663633636606441, 0.333636636339356, 1.0, 4.5313961195727694e-94], + [236.41360753211856, 0.7990047084157111, 0.20099529158429172, 1.0, 2.122632463128267e-103, 1.0, 7.822058687582257e-18, 0.46354260528840635, 0.5364573947115931, 0.3947097104157919, 0.6052902895842084, 9.563666119017024e-309, 1.0, 1.0, 1.1231552922193526e-34, 0.6627749410022199, 0.33722505899764127, 2.416604709697474e-31, 1.0, 9.563666119017024e-309, 1.0, 0.6663919711767909, 0.333608028823209, 1.0, 2.122632463128267e-103], + [260.04340970395066, 0.7989385595873897, 0.20106144041261262, 1.0, 1.1603315745191666e-113, 1.0, 1.5237900109851187e-19, 0.46366798913610957, 0.5363320108638898, 0.3947155843264212, 0.605284415673579, 0.0, 1.0, 1.0, 4.5154621824436044e-38, 0.6631296328237812, 0.3368703671761141, 2.136270291967753e-34, 1.0, 0.0, 1.0, 0.6664177991397783, 0.3335822008602217, 1.0, 1.1603315745191666e-113], + [286.0361915532457, 0.7988781615662872, 0.20112183843371467, 1.0, 5.971183034526239e-125, 1.0, 2.0021297561363174e-21, 0.46378205792128496, 0.5362179420787145, 0.3947210322700118, 0.6052789677299883, 0.0, 1.0, 1.0, 8.305663528629612e-42, 0.6634519276454622, 0.3365480723544589, 9.348720407260784e-38, 1.0, 0.0, 1.0, 0.6664411311105367, 0.3335588688894633, 1.0, 5.971183034526239e-125], + [314.6282510960887, 0.7988230370396409, 0.20117696296036058, 1.0, 2.283950557192422e-137, 1.0, 1.7057620161164062e-23, 0.46388582556998215, 0.5361141744300174, 0.3947260742518628, 0.6052739257481373, 0.0, 1.0, 1.0, 6.4639597934383585e-46, 0.6637447961683679, 0.3362552038315727, 1.8878088625946024e-41, 1.0, 0.0, 1.0, 0.6664622195559793, 0.33353778044402077, 1.0, 2.283950557192422e-137], + [346.0795161459128, 0.7987727442196692, 0.20122725578033201, 1.0, 5.006979785982112e-151, 1.0, 9.023800416052094e-26, 0.46398021644383897, 0.5360197835561608, 0.3947307316997262, 0.6052692683002738, 0.0, 1.0, 1.0, 1.9530876194345643e-50, 0.6640109348274607, 0.3359890651724946, 1.6281135711523458e-45, 1.0, 0.0, 1.0, 0.6664812895875465, 0.33351871041245346, 1.0, 5.006979785982112e-151], + [380.67590729359625, 0.7987268749724165, 0.20127312502758438, 1.0, 4.7266567925732195e-166, 1.0, 2.8262438843091727e-28, 0.4640660730152769, 0.5359339269847228, 0.3947350267740735, 0.6052649732259267, 0.0, 1.0, 1.0, 2.0842734156212326e-55, 0.6642527913978459, 0.33574720860212043, 5.507877184046653e-50, 1.0, 0.0, 1.0, 0.6664985422043601, 0.33350145779563994, 1.0, 4.7266567925732195e-166], + [418.7319371855408, 0.7986850528826833, 0.20131494711731743, 1.0, 1.4029115271616864e-182, 1.0, 4.972944783774441e-31, 0.46414416292937377, 0.5358558370706259, 0.3947389818376184, 0.6052610181623816, 0.0, 1.0, 1.0, 7.079452085880016e-61, 0.6644725881704234, 0.33552741182955115, 6.656009504678114e-55, 1.0, 0.0, 1.0, 0.6665141571123159, 0.33348584288768407, 1.0, 1.4029115271616864e-182], + [460.59356972953174, 0.798646931301096, 0.20135306869890457, 1.0, 9.26305550405817e-201, 1.0, 4.640445849493376e-34, 0.4642151854927752, 0.5357848145072247, 0.3947426190532859, 0.6052573809467141, 0.0, 1.0, 1.0, 6.825568400367413e-67, 0.6646723429322243, 0.3353276570677567, 2.5921894737579464e-60, 1.0, 0.0, 1.0, 0.6665282951795826, 0.33347170482041744, 1.0, 9.26305550405817e-201], + [506.64136522115894, 0.7986121914082146, 0.2013878085917858, 1.0, 9.299311177914058e-221, 1.0, 2.155271127074537e-37, 0.46427977762909495, 0.5357202223709048, 0.394745960085072, 0.6052540399149279, 0.0, 1.0, 1.0, 1.6469581808538557e-73, 0.6648538879637421, 0.3351461120362434, 2.9051259593148556e-66, 1.0, 0.0, 1.0, 0.6665411005797979, 0.33345889942020224, 1.0, 9.299311177914058e-221], + [557.2939399828567, 0.7985805403216867, 0.20141945967831368, 1.0, 9.339358947335906e-243, 1.0, 4.646647424575279e-41, 0.4643385193390035, 0.5356614806609963, 0.3947490258808846, 0.6052509741191154, 0.0, 1.0, 1.0, 8.659088876651219e-81, 0.6650188872447016, 0.3349811127552876, 8.272049610591163e-73, 1.0, 0.0, 1.0, 0.6665527026665297, 0.3334472973334704, 1.0, 9.339358947335906e-243], + [613.0117719668266, 0.7985517092654217, 0.2014482907345785, 1.0, 5.92065960577504e-267, 1.0, 4.306679722801909e-45, 0.46439193870166595, 0.5356080612983339, 0.39475183652045426, 0.6052481634795458, 0.0, 1.0, 1.0, 8.517910212461168e-89, 0.6651688520408553, 0.33483114795913654, 5.21802567024892e-80, 1.0, 0.0, 1.0, 0.6665632176160418, 0.3334367823839583, 1.0, 5.92065960577504e-267], + [674.3013869182317, 0.7985254518141972, 0.20147454818580302, 1.0, 1.427672261786843e-293, 1.0, 1.5770551019745665e-49, 0.4644405164524979, 0.5355594835475018, 0.3947544111148482, 0.6052455888851518, 0.0, 1.0, 1.0, 1.3257846245096555e-97, 0.6653051550273926, 0.33469484497260127, 6.27174927974208e-88, 1.0, 0.0, 1.0, 0.6665727498699053, 0.3334272501300946, 1.0, 1.427672261786843e-293], + [741.7199631546922, 0.7985015422224454, 0.20149845777755473, 1.0, 7.4e-323, 1.0, 2.0793262592120927e-54, 0.4644846901700843, 0.5355153098299156, 0.39475676774610996, 0.6052432322538901, 0.0, 1.0, 1.0, 2.7153167670521515e-107, 0.6654290430892128, 0.3345709569107826, 1.2169128885562456e-96, 1.0, 0.0, 1.0, 0.666581393404355, 0.33341860659564504, 1.0, 7.4e-323] + ] +} diff --git a/tests/test_games/golden_logit/nature_leaves_generic.json b/tests/test_games/golden_logit/nature_leaves_generic.json new file mode 100644 index 0000000000..0bd8cae31b --- /dev/null +++ b/tests/test_games/golden_logit/nature_leaves_generic.json @@ -0,0 +1,49 @@ +{ + "counts": [{"predictor_attempts": 43, "accepted_steps": 43, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 86, "function_evals": 86, "jacobian_evals": 44, "factorizations": 44}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.008319705603215063, 0.49168106213805945, 0.5083189378632677, 0.5041597568260697, 0.49584024317395115, 0.5041597568260697, 0.49584024317395115], + [0.017469359482566522, 0.48253774541375816, 0.5174622545885892, 0.5087337913042073, 0.4912662086958298, 0.5087337913042073, 0.4912662086958298], + [0.027529077246022413, 0.4724987062856187, 0.5275012937185197, 0.5137610625244898, 0.48623893747557695, 0.5137610625244898, 0.48623893747557695], + [0.0385856087396778, 0.4614908067720683, 0.5385091932351995, 0.5192832353764477, 0.4807167646236733, 0.5192832353764477, 0.4807167646236733], + [0.0507325044941547, 0.4494408810828717, 0.5505591189298277, 0.5253445121851075, 0.4746554878151138, 0.5253445121851075, 0.4746554878151138], + [0.06407016302417164, 0.43627822510436914, 0.5637217749176786, 0.5319913188508107, 0.4680086811495969, 0.5319913188508107, 0.4680086811495969], + [0.0787057313269487, 0.4219379561713969, 0.5780620438665702, 0.539271808187671, 0.4607281918130855, 0.539271808187671, 0.4607281918130855], + [0.09475283942816562, 0.4063653677042871, 0.5936346323604311, 0.5472351436291016, 0.4527648563723077, 0.5472351436291016, 0.4527648563723077], + [0.11233116851301897, 0.38952134288288714, 0.6104786572260399, 0.5559305326632332, 0.44406946733939284, 0.5559305326632332, 0.44406946733939284], + [0.13156588392201884, 0.37138877989947316, 0.6286112202810197, 0.5654059932732381, 0.43459400673162907, 0.5654059932732381, 0.43459400673162907], + [0.15258701028744476, 0.35197980922980465, 0.6480201910636316, 0.5757068593474332, 0.4242931406614852, 0.5757068593474332, 0.4242931406614852], + [0.17552888356537774, 0.3313433538282209, 0.6686566466380235, 0.5868740611773648, 0.41312593883868487, 0.5868740611773648, 0.41312593883868487], + [0.20052987483589874, 0.3095723203154002, 0.6904276804055577, 0.5989422497258978, 0.4010577503022859, 0.5989422497258978, 0.4010577503022859], + [0.22773262789943385, 0.2868094638989755, 0.7131905371810827, 0.6119378590387541, 0.3880621410092473, 0.6119378590387541, 0.3880621410092473], + [0.25728506704219267, 0.26325081554955365, 0.7367491860108839, 0.6258772080409817, 0.374122792037908, 0.6258772080409816, 0.37412279203790794], + [0.2893423953909609, 0.23914557503759595, 0.7608544271271281, 0.6407647206762647, 0.359235279448378, 0.6407647206762648, 0.359235279448378], + [0.32407021203767256, 0.214791610288471, 0.7852083925834777, 0.6565912893462901, 0.3434087108426305, 0.6565912893462901, 0.3434087108426305], + [0.36164874019184157, 0.19052615899724712, 0.8094738446340569, 0.6733327312033445, 0.32666726907129184, 0.6733327312033445, 0.32666726907129184], + [0.4022780098188447, 0.16671193274321605, 0.8332880716200378, 0.6909482136942928, 0.309051786689285, 0.6909482136942928, 0.309051786689285], + [0.4461837155803013, 0.14371945966337032, 0.8562805453071257, 0.7093784859023392, 0.29062151461421953, 0.7093784859023392, 0.29062151461421953], + [0.4936234063492066, 0.12190704663968532, 0.8780929587178619, 0.7285437739352357, 0.2714562267389236, 0.7285437739352357, 0.2714562267389236], + [0.5448926688492894, 0.10160010981951707, 0.8983998956342484, 0.7483412977827103, 0.2516587030750345, 0.7483412977827103, 0.2516587030750345], + [0.6003310364343146, 0.08307178029337287, 0.9169282249391715, 0.7686425424645021, 0.23135745860562676, 0.7686425424645021, 0.23135745860562676], + [0.6603274624875082, 0.06652664725202313, 0.9334733574681909, 0.789290649372555, 0.21070935194260015, 0.789290649372555, 0.21070935194260015], + [0.7253253220511644, 0.05208927376324028, 0.9479107302281414, 0.8100985498399066, 0.18990145175576037, 0.8100985498399066, 0.18990145175576037], + [0.7958270263834838, 0.03979872317194694, 0.9602012799797861, 0.8308486910417108, 0.16915131086810706, 0.8308486910417108, 0.16915131086810706], + [0.8723984409770091, 0.02960977462751931, 0.9703902276857592, 0.8512953361271192, 0.1487046661192867, 0.8512953361271193, 0.1487046661192867], + [0.9556733784341043, 0.021400807378413333, 0.9785991941911194, 0.871170375636086, 0.12882962694469371, 0.871170375636086, 0.12882962694469371], + [1.0463584822176963, 0.014987557437807412, 0.985012443540367, 0.8901932909778028, 0.10980671189581762, 0.8901932909778028, 0.10980671189581762], + [1.145238813257103, 0.010141207297233975, 0.9898587932587288, 0.9080853263831683, 0.09191467669183659, 0.9080853263831683, 0.09191467669183659], + [1.2531843910574096, 0.006608700817082224, 0.9933912994688069, 0.9245870938725756, 0.07541290926238467, 0.9245870938725756, 0.07541290926238467], + [1.371157830019473, 0.004132913008976564, 0.9958670871228779, 0.9394779001185529, 0.06052210290036206, 0.9394779001185529, 0.06052210290036206], + [1.5002230743304985, 0.0024704232846823626, 0.9975295767693545, 0.9525942808532764, 0.04740572186961886, 0.9525942808532762, 0.04740572186961886], + [1.641555110404985, 0.0014051284527590848, 0.9985948715667289, 0.9638448272320903, 0.03615517504902924, 0.9638448272320902, 0.03615517504902924], + [1.7964504664556176, 0.0007566885328133197, 0.9992433114733119, 0.9732185971960248, 0.026781404564238023, 0.9732185971960248, 0.026781404564238023], + [1.9663383226614795, 0.0003836664397438415, 0.9996163335619193, 0.9807852763239336, 0.019214724916663865, 0.9807852763239336, 0.019214724916663865], + [2.1527921553624583, 0.00018202788557173167, 0.9998179721148156, 0.9866866388284523, 0.01331336196310854, 0.9866866388284523, 0.01331336196310854], + [2.357542000594737, 8.025927193025837e-05, 0.9999197407281469, 0.9911204399796107, 0.008879560473392759, 0.9911204399796107, 0.008879560473392759], + [2.5824876037982447, 3.263964006804543e-05, 0.9999673603599452, 0.9943192510293848, 0.005680749200841475, 0.9943192510293848, 0.005680749200841475], + [2.8297128769971924, 1.2141713349015269e-05, 0.9999878582866528, 0.9965275825076573, 0.0034724175951307765, 0.9965275825076573, 0.0034724175951307765], + [3.1015021740005233, 4.093898800899662e-06, 0.9999959061011994, 0.997980743018468, 0.0020192570213711423, 0.997980743018468, 0.0020192570213711423], + [3.4003588976032604, 1.238713980360428e-06, 0.9999987612860196, 0.9988882613793632, 0.0011117386338668827, 0.9988882613793632, 0.0011117386338668827], + [3.7290268725838285, 3.32672330794783e-07, 0.9999996673276693, 0.9994235548483154, 0.0005764451553948184, 0.9994235548483154, 0.0005764451553948184] + ] +} diff --git a/tests/test_games/golden_logit/stripped_down_poker.json b/tests/test_games/golden_logit/stripped_down_poker.json new file mode 100644 index 0000000000..f98a126724 --- /dev/null +++ b/tests/test_games/golden_logit/stripped_down_poker.json @@ -0,0 +1,97 @@ +{ + "counts": [{"predictor_attempts": 91, "accepted_steps": 91, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 164, "function_evals": 164, "jacobian_evals": 92, "factorizations": 92}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.013777688941776597, 0.5086219018603445, 0.49137809814137146, 0.5016871017330612, 0.49831289826689223, 0.5033970846681189, 0.4966029153319527], + [0.028962157508261914, 0.5181442933682376, 0.4818557066348742, 0.5034674669094463, 0.4965325330904977, 0.5070320355153459, 0.49296796448476604], + [0.045693287719725056, 0.528651470641721, 0.4713485293638492, 0.505337694204777, 0.49466230579517384, 0.5109064590394881, 0.48909354096069846], + [0.06412235765624053, 0.5402300673047045, 0.459769932705239, 0.5072925371612041, 0.49270746283879713, 0.5150179626616657, 0.48498203733865175], + [0.08441190717573796, 0.5529665107571486, 0.4470334892605317, 0.5093247865823294, 0.4906752134178207, 0.5193593622261059, 0.4806406377744501], + [0.10673519776607587, 0.5669433620566047, 0.43305663797466276, 0.5114252425401816, 0.48857475746031476, 0.523917983388541, 0.47608201661246313], + [0.13127519506086857, 0.5822343325028367, 0.41776566755205474, 0.5135828010497113, 0.4864171989514921, 0.5286751874790058, 0.4713248125228489], + [0.15822304931241798, 0.5988978492262477, 0.4011021508691744, 0.5157846670468257, 0.484215332955687, 0.5336062894778506, 0.46639371052559625], + [0.187776136882868, 0.6169692052630049, 0.3830307949007279, 0.5180166786678598, 0.4819833213368804, 0.53868105803829, 0.4613189419680169], + [0.2201358562880693, 0.6364515905968977, 0.3635484096793003, 0.5202636863585052, 0.4797363136497333, 0.5438649763559104, 0.45613502365520325], + [0.2555055325353295, 0.6573066473303059, 0.3426933531255033, 0.522509877614959, 0.4774901223983621, 0.5491213783608613, 0.45087862165762], + [0.2940889379354966, 0.679445569209396, 0.32055443152236357, 0.5247388854680125, 0.4752611145521631, 0.5544144451211287, 0.4455855549073568], + [0.3360900305632076, 0.7027220708656667, 0.2972779302701528, 0.5269334853885613, 0.4730665146402621, 0.5597128593440525, 0.4402871406959752], + [0.38171448491378007, 0.7269286588744347, 0.2730713428195976, 0.5290746936958499, 0.47092530634333973, 0.5649937078949017, 0.43500629215553144], + [0.4311734135028367, 0.7517974465609535, 0.248202555853039, 0.5311401471839061, 0.4688598528673758, 0.5702460540656432, 0.42975394599021205], + [0.48468938079626517, 0.7770062565587759, 0.22299374671236322, 0.5331017684573779, 0.4668982316080309, 0.5754735359932578, 0.42452646405948774], + [0.5425044794621909, 0.802190052751168, 0.197809951449217, 0.5349228839046635, 0.46507711617765146, 0.5806954191897691, 0.41930458085006655], + [0.6048899865812285, 0.826957017672011, 0.1730429874273052, 0.5365551275530688, 0.4634448725500886, 0.5859457240696708, 0.41405427594967653], + [0.6721570276467026, 0.8509080172435936, 0.14909198860147876, 0.5379356017822771, 0.4620643983470078, 0.5912703057873366, 0.4087296942090042], + [0.7446677620900359, 0.8736578612576942, 0.1263421450632146, 0.5389848557878623, 0.46101514437391866, 0.5967220158964066, 0.4032779840798936], + [0.8228468072685542, 0.8948566586636504, 0.10514334778047842, 0.5396062794309637, 0.4603937207697621, 0.6023542812115599, 0.39764571875083693], + [0.9071928418778961, 0.9142096015199356, 0.08579040466676104, 0.539687491946998, 0.46031250829723674, 0.6082135935223822, 0.39178640643189766], + [0.9982904819347787, 0.9314936145882412, 0.0685063909945219, 0.5391042210696471, 0.460895779217949, 0.6143315420811428, 0.38566845786822196], + [1.0968225417251543, 0.9465694544845903, 0.05343055023684552, 0.5377269927950581, 0.462273007527991, 0.6207171670061443, 0.37928283293971343], + [1.2035826591499978, 0.959388065459699, 0.040611938267191734, 0.5354306511091681, 0.46456934923153026, 0.6273505655732647, 0.3726494343718888], + [1.3194880052633586, 0.9699903585716115, 0.030009644159298493, 0.5321062762723849, 0.4678937240583365, 0.6341787998542994, 0.36582120009662156], + [1.4455914858668573, 0.9785001220755082, 0.02149987976950434, 0.5276744829028924, 0.4723255173838705, 0.6411151464886119, 0.35888485347546767], + [1.5830926021605813, 0.9851104854521096, 0.014889515687771193, 0.5220984366002195, 0.4779015636101878, 0.6480424944462568, 0.3519575055304899], + [1.7333461191368462, 0.9900651701925065, 0.009934830445350668, 0.5153944010344318, 0.4846055990816464, 0.6548211633844037, 0.34517883658708526], + [1.897868017687735, 0.9936365281318159, 0.006363472187959318, 0.5076374631243519, 0.4923625369090448, 0.6613006055343819, 0.3386993943961716], + [2.07833889156478, 0.9961029200585767, 0.0038970800833043845, 0.4989605273863153, 0.5010394726151293, 0.6673335290504819, 0.33266647080090544], + [2.2766058339944872, 0.9977281579043703, 0.00227184215060209, 0.48954581935546315, 0.5104541806964874, 0.6727902299447387, 0.3272097698110064], + [2.4946846337517314, 0.9987454141679938, 0.0012545858503375724, 0.4796097918447217, 0.5203902083439067, 0.67757066257422, 0.32242933710701405], + [2.7347644437473573, 0.9993471941050515, 0.0006528059001278912, 0.46938396482314004, 0.5306160355554698, 0.6816122004070886, 0.3183877992518886], + [2.999216834808806, 0.999681819486774, 0.0003181805144450304, 0.4590952069913077, 0.5409047935745629, 0.6848920546573658, 0.3151079450376746], + [3.2906104043821554, 0.9998556704909024, 0.00014432950933236958, 0.4489488726582326, 0.5510511280401709, 0.6874245768384233, 0.31257542293161195], + [3.6117311852796243, 0.9999395035362715, 6.0496463764808835e-05, 0.4391171181508637, 0.5608828825990337, 0.6892547225698034, 0.31074527728450135], + [3.965608342668734, 0.9999767520161672, 2.3247983837255753e-05, 0.4297331556632513, 0.5702668450605796, 0.6904494786852177, 0.30955052123928256], + [4.355544276087943, 0.9999918798782244, 8.120121775973084e-06, 0.42089079831990805, 0.5791092023230779, 0.6910889991643262, 0.30891100080655526], + [4.785148275154186, 0.9999974465741986, 2.553425801415708e-06, 0.4126478269448246, 0.587352173590332, 0.6912587353543214, 0.3087412646407688], + [5.258373176682664, 0.999999284661768, 7.153382320299788e-07, 0.4050315285335572, 0.5949684718896665, 0.6910432492190235, 0.3089567507850449], + [5.779554851940243, 0.999999823513061, 1.7648693889295237e-07, 0.39804501946837945, 0.6019549808531766, 0.6905218802817329, 0.30947811972329126], + [6.35345467487965, 0.9999999621375896, 3.7862410458414956e-08, 0.3916734038196478, 0.608326596417102, 0.6897660976816646, 0.3102339023214023], + [6.985305329435095, 0.9999999930349139, 6.965086086035864e-09, 0.3858892315085218, 0.6141107686615398, 0.6888382078123652, 0.3111617921885615], + [7.680860421005581, 0.999999998918101, 1.081899084213378e-09, 0.38065702757856107, 0.6193429725412561, 0.6877910541315917, 0.3122089458680174], + [8.446448408680151, 0.9999999998604789, 1.3952101580008476e-10, 0.37593685766202883, 0.6240631424211228, 0.6866683814291515, 0.3133316185700349], + [9.289031409654118, 0.9999999999853377, 1.466223654621917e-11, 0.37168700353843437, 0.6283129965186006, 0.6855056000807833, 0.3144943999185911], + [10.21626946545224, 0.9999999999987698, 1.2301976049687225e-12, 0.3678658754164007, 0.6321341246223721, 0.6843307527988635, 0.31566924720098455], + [11.236590905495211, 0.9999999999999194, 8.05713253595498e-14, 0.36443330489892384, 0.6355666951272576, 0.6831655461190164, 0.3168344538813507], + [12.35926949573491, 0.999999999999996, 4.018424255434218e-15, 0.36135135824011705, 0.6386486417774752, 0.682026357367864, 0.3179736426329332], + [13.594509117220316, 0.9999999999999998, 1.485126412276245e-16, 0.35858479315294933, 0.6414152068588306, 0.6809251646302716, 0.3190748353708152], + [14.95353678191775, 1.0, 3.947140820698702e-18, 0.35610126106446843, 0.6438987389434009, 0.6798703734349965, 0.32012962656623956], + [16.44870486225899, 1.0, 7.299460714771729e-20, 0.35387133495781015, 0.6461286650474393, 0.6788675314028993, 0.3211324685983702], + [18.093603488211023, 1.0, 9.058020467710249e-22, 0.3518684233678036, 0.6481315766356955, 0.6779199330122477, 0.3220800669889723], + [19.903184152394005, 1.0, 7.247369817638707e-24, 0.3500686147844128, 0.6499313852179195, 0.6770291228084122, 0.3229708771927064], + [21.89389566092585, 1.0, 3.578241821560082e-26, 0.34845048381313093, 0.6515495161884238, 0.6761953083536956, 0.3238046916472948], + [24.083833676132954, 1.0, 1.038801682007679e-28, 0.3469948806161626, 0.6530051193848744, 0.6754176951359525, 0.3245823048649009], + [26.492905217920303, 1.0, 1.6815285690271963e-31, 0.34568471790076194, 0.6543152820999302, 0.6746947553573668, 0.3253052446433531], + [29.143009624395166, 1.0, 1.431571977349031e-34, 0.34450476449649503, 0.6554952355039675, 0.6740244415661892, 0.3259755584344076], + [32.058237620357296, 1.0, 6.011062196732536e-38, 0.34344145089023775, 0.6565585491100716, 0.6734043548354404, 0.32659564516504785], + [35.26509030571987, 1.0, 1.1598971515381242e-41, 0.342482689566806, 0.6575173104334012, 0.6728318758549292, 0.3271681241454653], + [38.7927200561862, 1.0, 9.515889509102457e-46, 0.34161771131858004, 0.6583822886815588, 0.6723042660135029, 0.32769573398681284], + [42.673195527128776, 1.0, 3.047162890932152e-50, 0.34083691759845425, 0.659163082401639, 0.6718187443730288, 0.328181255627222], + [46.94179317033827, 1.0, 3.466559513711193e-55, 0.34013174831768944, 0.6598682516823733, 0.6713725454018616, 0.32862745459833603], + [51.637317914067076, 1.0, 1.2633185173010656e-60, 0.3394945641030996, 0.6605054358969425, 0.6709629614484681, 0.32903703855168676], + [56.802455921736495, 1.0, 1.3161286506140689e-66, 0.3389185418327423, 0.6610814581672861, 0.6705873731879468, 0.32941262681217404], + [62.484162636189275, 1.0, 3.4583686414425915e-73, 0.3383975821996918, 0.6616024178003274, 0.6702432706517367, 0.32975672934835715], + [68.73408963707968, 1.0, 1.99714490919281e-80, 0.33792622806342437, 0.6620737719365886, 0.6699282669378558, 0.3300717330622169], + [75.60905419180305, 1.0, 2.178256345357654e-88, 0.3374995924062099, 0.6625004075937989, 0.6696401062794876, 0.3303598937205685], + [83.17155576847331, 1.0, 3.798262125439729e-97, 0.3371132947963062, 0.6628867052036997, 0.6693766678086575, 0.3306233321913857], + [91.49034420638029, 1.0, 8.814840138010492e-107, 0.3367634053565821, 0.663236594643422, 0.6691359660757457, 0.3308640339242874], + [100.64104470897665, 1.0, 2.2254216156946534e-117, 0.33644639533736287, 0.6635536046626398, 0.6689161491631211, 0.33108385083690406], + [110.70684534102159, 1.0, 4.895925978238396e-129, 0.3361590934901455, 0.6638409065098564, 0.6687154950524484, 0.33128450494757083], + [121.7792532797335, 1.0, 7.35366888631978e-142, 0.335898647945, 0.6641013533167658, 0.6685324069598664, 0.331467593635331], + [133.95892669489106, 1.0, 5.765596408058901e-156, 0.33566249040830487, 0.66433751062751, 0.6683654068211641, 0.3316345936754235], + [147.35658982025123, 1.0, 1.7563944795570436e-171, 0.33544830872179404, 0.6645516921290099, 0.6682131303744376, 0.33178687003947516], + [162.09403953515502, 1.0, 1.50238407485528e-188, 0.33525401823182194, 0.6647459824673745, 0.6680743197719178, 0.3319256805727945], + [178.3052526068986, 1.0, 2.524403439696442e-207, 0.33507773858173195, 0.6649222619931469, 0.667947817231387, 0.3320521830554781], + [196.1376036596894, 1.0, 5.624410998046657e-228, 0.3349177726479154, 0.6650822278249573, 0.667832558487583, 0.33216744175098145], + [215.75320494257474, 1.0, 1.0784242011244746e-250, 0.3347725878041005, 0.6652274125850234, 0.6677275663799059, 0.33227243381837046], + [237.33038007600652, 1.0, 1.1060523782208638e-275, 0.3346407992354166, 0.6653592010849101, 0.6676319446477227, 0.3323680555169799], + [261.06528517470224, 1.0, 3.596353691216868e-303, 0.3345211550594056, 0.6654788452043773, 0.6675448719826131, 0.33245512815413375], + [287.17369208425094, 1.0, 0.0, 0.33441252304208124, 0.6655874771752069, 0.6674655963698388, 0.33253440374364746], + [315.89294994267965, 1.0, 0.0, 0.33431387872396034, 0.6656861214550799, 0.6673934297381656, 0.33260657035597957], + [347.4841428993363, 1.0, 0.0, 0.33422429479425125, 0.6657757053533123, 0.6673277429271212, 0.33267225715095106], + [382.23446360669584, 1.0, 0.0, 0.3341429315715547, 0.6658570685500952, 0.6672679609731755, 0.3327320390915471], + [420.459824062274, 1.0, 0.0, 0.33406902846690767, 0.6659309716334014, 0.6672135587106793, 0.3327864413429607], + [462.50772753555924, 1.0, 0.0, 0.33400189632017735, 0.6659981037625512, 0.6671640566792816, 0.3328359433651618], + [508.7604276883819, 1.0, 0.0, 0.3339409105139825, 0.6660590895542596, 0.6671190173266233, 0.3328809827101915], + [559.638403607985, 1.0, 0.0, 0.3338855047807595, 0.666114495275542, 0.6670780414931248, 0.3329219585373643], + [615.6041823439997, 1.0, 0.0, 0.3338351656285655, 0.666164834417892, 0.6670407651644307, 0.3329592348608147] + ] +} diff --git a/tests/test_games/golden_logit/stripped_down_poker_nonterm_outcomes.json b/tests/test_games/golden_logit/stripped_down_poker_nonterm_outcomes.json new file mode 100644 index 0000000000..f98a126724 --- /dev/null +++ b/tests/test_games/golden_logit/stripped_down_poker_nonterm_outcomes.json @@ -0,0 +1,97 @@ +{ + "counts": [{"predictor_attempts": 91, "accepted_steps": 91, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 164, "function_evals": 164, "jacobian_evals": 92, "factorizations": 92}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], + [0.013777688941776597, 0.5086219018603445, 0.49137809814137146, 0.5016871017330612, 0.49831289826689223, 0.5033970846681189, 0.4966029153319527], + [0.028962157508261914, 0.5181442933682376, 0.4818557066348742, 0.5034674669094463, 0.4965325330904977, 0.5070320355153459, 0.49296796448476604], + [0.045693287719725056, 0.528651470641721, 0.4713485293638492, 0.505337694204777, 0.49466230579517384, 0.5109064590394881, 0.48909354096069846], + [0.06412235765624053, 0.5402300673047045, 0.459769932705239, 0.5072925371612041, 0.49270746283879713, 0.5150179626616657, 0.48498203733865175], + [0.08441190717573796, 0.5529665107571486, 0.4470334892605317, 0.5093247865823294, 0.4906752134178207, 0.5193593622261059, 0.4806406377744501], + [0.10673519776607587, 0.5669433620566047, 0.43305663797466276, 0.5114252425401816, 0.48857475746031476, 0.523917983388541, 0.47608201661246313], + [0.13127519506086857, 0.5822343325028367, 0.41776566755205474, 0.5135828010497113, 0.4864171989514921, 0.5286751874790058, 0.4713248125228489], + [0.15822304931241798, 0.5988978492262477, 0.4011021508691744, 0.5157846670468257, 0.484215332955687, 0.5336062894778506, 0.46639371052559625], + [0.187776136882868, 0.6169692052630049, 0.3830307949007279, 0.5180166786678598, 0.4819833213368804, 0.53868105803829, 0.4613189419680169], + [0.2201358562880693, 0.6364515905968977, 0.3635484096793003, 0.5202636863585052, 0.4797363136497333, 0.5438649763559104, 0.45613502365520325], + [0.2555055325353295, 0.6573066473303059, 0.3426933531255033, 0.522509877614959, 0.4774901223983621, 0.5491213783608613, 0.45087862165762], + [0.2940889379354966, 0.679445569209396, 0.32055443152236357, 0.5247388854680125, 0.4752611145521631, 0.5544144451211287, 0.4455855549073568], + [0.3360900305632076, 0.7027220708656667, 0.2972779302701528, 0.5269334853885613, 0.4730665146402621, 0.5597128593440525, 0.4402871406959752], + [0.38171448491378007, 0.7269286588744347, 0.2730713428195976, 0.5290746936958499, 0.47092530634333973, 0.5649937078949017, 0.43500629215553144], + [0.4311734135028367, 0.7517974465609535, 0.248202555853039, 0.5311401471839061, 0.4688598528673758, 0.5702460540656432, 0.42975394599021205], + [0.48468938079626517, 0.7770062565587759, 0.22299374671236322, 0.5331017684573779, 0.4668982316080309, 0.5754735359932578, 0.42452646405948774], + [0.5425044794621909, 0.802190052751168, 0.197809951449217, 0.5349228839046635, 0.46507711617765146, 0.5806954191897691, 0.41930458085006655], + [0.6048899865812285, 0.826957017672011, 0.1730429874273052, 0.5365551275530688, 0.4634448725500886, 0.5859457240696708, 0.41405427594967653], + [0.6721570276467026, 0.8509080172435936, 0.14909198860147876, 0.5379356017822771, 0.4620643983470078, 0.5912703057873366, 0.4087296942090042], + [0.7446677620900359, 0.8736578612576942, 0.1263421450632146, 0.5389848557878623, 0.46101514437391866, 0.5967220158964066, 0.4032779840798936], + [0.8228468072685542, 0.8948566586636504, 0.10514334778047842, 0.5396062794309637, 0.4603937207697621, 0.6023542812115599, 0.39764571875083693], + [0.9071928418778961, 0.9142096015199356, 0.08579040466676104, 0.539687491946998, 0.46031250829723674, 0.6082135935223822, 0.39178640643189766], + [0.9982904819347787, 0.9314936145882412, 0.0685063909945219, 0.5391042210696471, 0.460895779217949, 0.6143315420811428, 0.38566845786822196], + [1.0968225417251543, 0.9465694544845903, 0.05343055023684552, 0.5377269927950581, 0.462273007527991, 0.6207171670061443, 0.37928283293971343], + [1.2035826591499978, 0.959388065459699, 0.040611938267191734, 0.5354306511091681, 0.46456934923153026, 0.6273505655732647, 0.3726494343718888], + [1.3194880052633586, 0.9699903585716115, 0.030009644159298493, 0.5321062762723849, 0.4678937240583365, 0.6341787998542994, 0.36582120009662156], + [1.4455914858668573, 0.9785001220755082, 0.02149987976950434, 0.5276744829028924, 0.4723255173838705, 0.6411151464886119, 0.35888485347546767], + [1.5830926021605813, 0.9851104854521096, 0.014889515687771193, 0.5220984366002195, 0.4779015636101878, 0.6480424944462568, 0.3519575055304899], + [1.7333461191368462, 0.9900651701925065, 0.009934830445350668, 0.5153944010344318, 0.4846055990816464, 0.6548211633844037, 0.34517883658708526], + [1.897868017687735, 0.9936365281318159, 0.006363472187959318, 0.5076374631243519, 0.4923625369090448, 0.6613006055343819, 0.3386993943961716], + [2.07833889156478, 0.9961029200585767, 0.0038970800833043845, 0.4989605273863153, 0.5010394726151293, 0.6673335290504819, 0.33266647080090544], + [2.2766058339944872, 0.9977281579043703, 0.00227184215060209, 0.48954581935546315, 0.5104541806964874, 0.6727902299447387, 0.3272097698110064], + [2.4946846337517314, 0.9987454141679938, 0.0012545858503375724, 0.4796097918447217, 0.5203902083439067, 0.67757066257422, 0.32242933710701405], + [2.7347644437473573, 0.9993471941050515, 0.0006528059001278912, 0.46938396482314004, 0.5306160355554698, 0.6816122004070886, 0.3183877992518886], + [2.999216834808806, 0.999681819486774, 0.0003181805144450304, 0.4590952069913077, 0.5409047935745629, 0.6848920546573658, 0.3151079450376746], + [3.2906104043821554, 0.9998556704909024, 0.00014432950933236958, 0.4489488726582326, 0.5510511280401709, 0.6874245768384233, 0.31257542293161195], + [3.6117311852796243, 0.9999395035362715, 6.0496463764808835e-05, 0.4391171181508637, 0.5608828825990337, 0.6892547225698034, 0.31074527728450135], + [3.965608342668734, 0.9999767520161672, 2.3247983837255753e-05, 0.4297331556632513, 0.5702668450605796, 0.6904494786852177, 0.30955052123928256], + [4.355544276087943, 0.9999918798782244, 8.120121775973084e-06, 0.42089079831990805, 0.5791092023230779, 0.6910889991643262, 0.30891100080655526], + [4.785148275154186, 0.9999974465741986, 2.553425801415708e-06, 0.4126478269448246, 0.587352173590332, 0.6912587353543214, 0.3087412646407688], + [5.258373176682664, 0.999999284661768, 7.153382320299788e-07, 0.4050315285335572, 0.5949684718896665, 0.6910432492190235, 0.3089567507850449], + [5.779554851940243, 0.999999823513061, 1.7648693889295237e-07, 0.39804501946837945, 0.6019549808531766, 0.6905218802817329, 0.30947811972329126], + [6.35345467487965, 0.9999999621375896, 3.7862410458414956e-08, 0.3916734038196478, 0.608326596417102, 0.6897660976816646, 0.3102339023214023], + [6.985305329435095, 0.9999999930349139, 6.965086086035864e-09, 0.3858892315085218, 0.6141107686615398, 0.6888382078123652, 0.3111617921885615], + [7.680860421005581, 0.999999998918101, 1.081899084213378e-09, 0.38065702757856107, 0.6193429725412561, 0.6877910541315917, 0.3122089458680174], + [8.446448408680151, 0.9999999998604789, 1.3952101580008476e-10, 0.37593685766202883, 0.6240631424211228, 0.6866683814291515, 0.3133316185700349], + [9.289031409654118, 0.9999999999853377, 1.466223654621917e-11, 0.37168700353843437, 0.6283129965186006, 0.6855056000807833, 0.3144943999185911], + [10.21626946545224, 0.9999999999987698, 1.2301976049687225e-12, 0.3678658754164007, 0.6321341246223721, 0.6843307527988635, 0.31566924720098455], + [11.236590905495211, 0.9999999999999194, 8.05713253595498e-14, 0.36443330489892384, 0.6355666951272576, 0.6831655461190164, 0.3168344538813507], + [12.35926949573491, 0.999999999999996, 4.018424255434218e-15, 0.36135135824011705, 0.6386486417774752, 0.682026357367864, 0.3179736426329332], + [13.594509117220316, 0.9999999999999998, 1.485126412276245e-16, 0.35858479315294933, 0.6414152068588306, 0.6809251646302716, 0.3190748353708152], + [14.95353678191775, 1.0, 3.947140820698702e-18, 0.35610126106446843, 0.6438987389434009, 0.6798703734349965, 0.32012962656623956], + [16.44870486225899, 1.0, 7.299460714771729e-20, 0.35387133495781015, 0.6461286650474393, 0.6788675314028993, 0.3211324685983702], + [18.093603488211023, 1.0, 9.058020467710249e-22, 0.3518684233678036, 0.6481315766356955, 0.6779199330122477, 0.3220800669889723], + [19.903184152394005, 1.0, 7.247369817638707e-24, 0.3500686147844128, 0.6499313852179195, 0.6770291228084122, 0.3229708771927064], + [21.89389566092585, 1.0, 3.578241821560082e-26, 0.34845048381313093, 0.6515495161884238, 0.6761953083536956, 0.3238046916472948], + [24.083833676132954, 1.0, 1.038801682007679e-28, 0.3469948806161626, 0.6530051193848744, 0.6754176951359525, 0.3245823048649009], + [26.492905217920303, 1.0, 1.6815285690271963e-31, 0.34568471790076194, 0.6543152820999302, 0.6746947553573668, 0.3253052446433531], + [29.143009624395166, 1.0, 1.431571977349031e-34, 0.34450476449649503, 0.6554952355039675, 0.6740244415661892, 0.3259755584344076], + [32.058237620357296, 1.0, 6.011062196732536e-38, 0.34344145089023775, 0.6565585491100716, 0.6734043548354404, 0.32659564516504785], + [35.26509030571987, 1.0, 1.1598971515381242e-41, 0.342482689566806, 0.6575173104334012, 0.6728318758549292, 0.3271681241454653], + [38.7927200561862, 1.0, 9.515889509102457e-46, 0.34161771131858004, 0.6583822886815588, 0.6723042660135029, 0.32769573398681284], + [42.673195527128776, 1.0, 3.047162890932152e-50, 0.34083691759845425, 0.659163082401639, 0.6718187443730288, 0.328181255627222], + [46.94179317033827, 1.0, 3.466559513711193e-55, 0.34013174831768944, 0.6598682516823733, 0.6713725454018616, 0.32862745459833603], + [51.637317914067076, 1.0, 1.2633185173010656e-60, 0.3394945641030996, 0.6605054358969425, 0.6709629614484681, 0.32903703855168676], + [56.802455921736495, 1.0, 1.3161286506140689e-66, 0.3389185418327423, 0.6610814581672861, 0.6705873731879468, 0.32941262681217404], + [62.484162636189275, 1.0, 3.4583686414425915e-73, 0.3383975821996918, 0.6616024178003274, 0.6702432706517367, 0.32975672934835715], + [68.73408963707968, 1.0, 1.99714490919281e-80, 0.33792622806342437, 0.6620737719365886, 0.6699282669378558, 0.3300717330622169], + [75.60905419180305, 1.0, 2.178256345357654e-88, 0.3374995924062099, 0.6625004075937989, 0.6696401062794876, 0.3303598937205685], + [83.17155576847331, 1.0, 3.798262125439729e-97, 0.3371132947963062, 0.6628867052036997, 0.6693766678086575, 0.3306233321913857], + [91.49034420638029, 1.0, 8.814840138010492e-107, 0.3367634053565821, 0.663236594643422, 0.6691359660757457, 0.3308640339242874], + [100.64104470897665, 1.0, 2.2254216156946534e-117, 0.33644639533736287, 0.6635536046626398, 0.6689161491631211, 0.33108385083690406], + [110.70684534102159, 1.0, 4.895925978238396e-129, 0.3361590934901455, 0.6638409065098564, 0.6687154950524484, 0.33128450494757083], + [121.7792532797335, 1.0, 7.35366888631978e-142, 0.335898647945, 0.6641013533167658, 0.6685324069598664, 0.331467593635331], + [133.95892669489106, 1.0, 5.765596408058901e-156, 0.33566249040830487, 0.66433751062751, 0.6683654068211641, 0.3316345936754235], + [147.35658982025123, 1.0, 1.7563944795570436e-171, 0.33544830872179404, 0.6645516921290099, 0.6682131303744376, 0.33178687003947516], + [162.09403953515502, 1.0, 1.50238407485528e-188, 0.33525401823182194, 0.6647459824673745, 0.6680743197719178, 0.3319256805727945], + [178.3052526068986, 1.0, 2.524403439696442e-207, 0.33507773858173195, 0.6649222619931469, 0.667947817231387, 0.3320521830554781], + [196.1376036596894, 1.0, 5.624410998046657e-228, 0.3349177726479154, 0.6650822278249573, 0.667832558487583, 0.33216744175098145], + [215.75320494257474, 1.0, 1.0784242011244746e-250, 0.3347725878041005, 0.6652274125850234, 0.6677275663799059, 0.33227243381837046], + [237.33038007600652, 1.0, 1.1060523782208638e-275, 0.3346407992354166, 0.6653592010849101, 0.6676319446477227, 0.3323680555169799], + [261.06528517470224, 1.0, 3.596353691216868e-303, 0.3345211550594056, 0.6654788452043773, 0.6675448719826131, 0.33245512815413375], + [287.17369208425094, 1.0, 0.0, 0.33441252304208124, 0.6655874771752069, 0.6674655963698388, 0.33253440374364746], + [315.89294994267965, 1.0, 0.0, 0.33431387872396034, 0.6656861214550799, 0.6673934297381656, 0.33260657035597957], + [347.4841428993363, 1.0, 0.0, 0.33422429479425125, 0.6657757053533123, 0.6673277429271212, 0.33267225715095106], + [382.23446360669584, 1.0, 0.0, 0.3341429315715547, 0.6658570685500952, 0.6672679609731755, 0.3327320390915471], + [420.459824062274, 1.0, 0.0, 0.33406902846690767, 0.6659309716334014, 0.6672135587106793, 0.3327864413429607], + [462.50772753555924, 1.0, 0.0, 0.33400189632017735, 0.6659981037625512, 0.6671640566792816, 0.3328359433651618], + [508.7604276883819, 1.0, 0.0, 0.3339409105139825, 0.6660590895542596, 0.6671190173266233, 0.3328809827101915], + [559.638403607985, 1.0, 0.0, 0.3338855047807595, 0.666114495275542, 0.6670780414931248, 0.3329219585373643], + [615.6041823439997, 1.0, 0.0, 0.3338351656285655, 0.666164834417892, 0.6670407651644307, 0.3329592348608147] + ] +} diff --git a/tests/test_logit_golden.py b/tests/test_logit_golden.py new file mode 100644 index 0000000000..fa93b2fe07 --- /dev/null +++ b/tests/test_logit_golden.py @@ -0,0 +1,138 @@ +"""Regression tests pinning the principal branch traced by the agent logit QRE solver. + +Each case records the full sequence of points traced along the path by the current +implementation, together with the path tracer's step and evaluation counts. Changes to +how the equations or their Jacobian are computed must reproduce both: a subtly wrong +Jacobian may still yield points on the correct curve, because the corrector only drives +the equations themselves to zero, but it almost always changes the steps taken. + +To regenerate the reference data after an intentional change in tracing behaviour, run +``python -m tests.test_logit_golden`` from the repository root. +""" +import dataclasses +import json +import pathlib + +import numpy as np +import pytest + +import pygambit as gbt + +from . import games + +GOLDEN_DIR = pathlib.Path(__file__).parent / "test_games" / "golden_logit" +FIRST_STEP = 0.03 +MAX_ACCEL = 1.1 +RTOL = 1.0e-7 +ATOL = 1.0e-9 + + +@dataclasses.dataclass(frozen=True) +class GoldenCase: + factory: object + maxregret: float | None = None + lams: tuple[float, ...] | None = None + + +CASES = { + "stripped_down_poker": GoldenCase( + lambda: games.create_stripped_down_poker_efg(), maxregret=1.0e-4 + ), + "stripped_down_poker_nonterm_outcomes": GoldenCase( + lambda: games.create_stripped_down_poker_efg(nonterm_outcomes=True), maxregret=1.0e-4 + ), + "kuhn_poker": GoldenCase(lambda: games.create_kuhn_poker_efg(), maxregret=1.0e-4), + "chance_in_middle_nonterm_outcomes": GoldenCase( + lambda: games.read_from_file("chance_in_middle_with_nonterm_outcomes.efg"), + maxregret=1.0e-4, + ), + "nature_leaves_generic": GoldenCase( + lambda: games.read_from_file("nature_leaves_generic.efg"), maxregret=1.0e-4 + ), + "3_player_nonterm_outcomes": GoldenCase( + lambda: games.read_from_file("3_player_with_nonterm_outcomes.efg"), maxregret=1.0e-4 + ), + "6x6_long_LH_paths": GoldenCase( + lambda: games.create_EFG_for_6x6_bimatrix_with_long_LH_paths_and_unique_eq(), + maxregret=1.0e-4, + ), + "allpay_pv_p90_b11": GoldenCase( + lambda: games.create_allpay_correlated_types_efg(gbt.Rational(9, 10), False, 11), + maxregret=1.0e-8, + ), + "coordination_2x2_to_lambda_20": GoldenCase( + lambda: games.create_EFG_for_nxn_bimatrix_coordination_game(2), lams=(20.0,) + ), + "allpay_cv_p60_b11_to_lambda_20": GoldenCase( + lambda: games.create_allpay_correlated_types_efg(gbt.Rational(3, 5), True, 11), + lams=(1.0, 5.0, 20.0), + ), +} + +COUNT_FIELDS = [ + "predictor_attempts", "accepted_steps", "rejected_distance", "rejected_contraction", + "rejected_orientation", "corrector_iterations", "function_evals", "jacobian_evals", + "factorizations", +] + + +def _point(qre) -> list[float]: + return [qre.lam] + [qre[i] for i in range(len(qre))] + + +def _trace(case: GoldenCase) -> dict: + game = case.factory() + if case.lams is None: + profiles, stats = gbt.gambit._logit_behavior_branch( + game, case.maxregret, FIRST_STEP, MAX_ACCEL, _with_stats=True + ) + points = [_point(qre) for qre in profiles] + else: + events = [] + _, stats = gbt.gambit._logit_behavior_lambda( + game, list(case.lams), FIRST_STEP, MAX_ACCEL, events.append, _with_stats=True + ) + points = [_point(e.qre) for e in events if isinstance(e, gbt.LogitPathEvent)] + return { + "counts": [{f: getattr(s, f) for f in COUNT_FIELDS} for s in stats], + "points": points, + } + + +def _golden_path(name: str) -> pathlib.Path: + return GOLDEN_DIR / f"{name}.json" + + +@pytest.mark.parametrize("name", list(CASES)) +def test_logit_behavior_path_matches_golden(name: str): + path = _golden_path(name) + if not path.exists(): + pytest.fail(f"no reference data at {path}; run `python -m tests.test_logit_golden`") + expected = json.loads(path.read_text()) + actual = _trace(CASES[name]) + assert actual["counts"] == expected["counts"] + assert len(actual["points"]) == len(expected["points"]) + np.testing.assert_allclose( + np.array(actual["points"]), np.array(expected["points"]), rtol=RTOL, atol=ATOL + ) + + +def _regenerate() -> None: + GOLDEN_DIR.mkdir(parents=True, exist_ok=True) + for name, case in CASES.items(): + data = _trace(case) + # One point per line keeps the files compact and their diffs readable. + lines = [ + "{", + f' "counts": {json.dumps(data["counts"])},', + ' "points": [', + ",\n".join(f" {json.dumps(point)}" for point in data["points"]), + " ]", + "}", + ] + _golden_path(name).write_text("\n".join(lines) + "\n") + print(f"{name}: {len(data['points'])} points, counts {data['counts']}") + + +if __name__ == "__main__": + _regenerate() diff --git a/tests/test_trace_stats.py b/tests/test_trace_stats.py new file mode 100644 index 0000000000..0c51438734 --- /dev/null +++ b/tests/test_trace_stats.py @@ -0,0 +1,129 @@ +"""Tests of the private path-tracing statistics reported by the logit and HP solvers. + +These statistics are deliberately undocumented and not part of the public API; the tests +check that they are populated, internally consistent, and do not leak into public +behaviour. +""" +import dataclasses + +import pytest + +import pygambit as gbt + +from . import games + +TIME_TOL = 1.0e-3 + +TIMING_FIELDS = [ + "function_seconds", "jacobian_seconds", "factorization_seconds", "newton_seconds", + "terminate_seconds", "callback_seconds", +] + + +def _check_trace_invariants(stats) -> None: + """Relationships that must hold for any trace that ends by its termination or + criterion function, rather than by exceeding the corrector's iteration limit.""" + assert stats.kind == "trace" + # One Jacobian evaluation and factorisation per predictor attempt, plus one for the + # tangent at the starting point. + assert stats.jacobian_evals == stats.predictor_attempts + 1 + assert stats.factorizations == stats.jacobian_evals + # Each corrector iteration evaluates the system of equations exactly once. + assert stats.function_evals == stats.corrector_iterations + # Every predictor attempt is either accepted or rejected for exactly one reason. + assert stats.predictor_attempts == ( + stats.accepted_steps + stats.rejected_distance + stats.rejected_contraction + + stats.rejected_orientation + ) + _check_timings(stats) + + +def _check_timings(stats) -> None: + timings = [getattr(stats, f) for f in TIMING_FIELDS] + assert all(t >= 0.0 for t in timings) + assert sum(timings) <= stats.total_seconds + TIME_TOL + + +@pytest.mark.parametrize( + "game,branch", + [ + pytest.param(games.create_stripped_down_poker_efg(), gbt.gambit._logit_behavior_branch, + id="behavior-poker"), + pytest.param(games.create_stripped_down_poker_efg(), gbt.gambit._logit_strategy_branch, + id="strategy-poker"), + pytest.param(games.create_2x2_symmetric_coordination_nfg(), + gbt.gambit._logit_strategy_branch, id="strategy-2x2"), + pytest.param(games.read_from_file("2x2_fraction_types.bagg"), + gbt.gambit._logit_strategy_branch, id="strategy-bagg"), + ], +) +def test_logit_branch_trace_stats(game: gbt.Game, branch): + profiles, stats = branch(game, 0.01, 0.1, 1.1, _with_stats=True) + assert len(stats) == 1 + # The tracer reports the starting point and then each accepted step. + assert stats[0].accepted_steps == len(profiles) - 1 + _check_trace_invariants(stats[0]) + + +def test_logit_branch_without_stats_returns_profiles_only(): + game = games.create_stripped_down_poker_efg() + profiles = gbt.gambit._logit_behavior_branch(game, 0.01, 0.1, 1.1) + assert isinstance(profiles, list) + assert all(isinstance(p, gbt.LogitQREMixedBehaviorProfile) for p in profiles) + + +@pytest.mark.parametrize( + "lam_solve", [gbt.gambit._logit_behavior_lambda, gbt.gambit._logit_strategy_lambda] +) +def test_logit_lambda_trace_stats_one_entry_per_target(lam_solve): + game = games.create_stripped_down_poker_efg() + targets = [0.5, 1.0, 2.0] + profiles, stats = lam_solve(game, targets, 0.1, 1.1, _with_stats=True) + assert [p.lam for p in profiles] == pytest.approx(targets) + assert len(stats) == len(targets) + for entry in stats: + _check_trace_invariants(entry) + + +def test_logit_lambda_records_orientation_rejection_at_bifurcation(): + """The 2x2 symmetric coordination game's principal branch has a bifurcation + (see test_logit_solve_lambda_reports_bifurcation_and_perturbation_events); + detecting it rejects at least one step for a flip in tangent orientation.""" + game = games.create_2x2_symmetric_coordination_nfg() + _, stats = gbt.gambit._logit_strategy_lambda(game, [20.0], 0.03, 1.1, _with_stats=True) + assert stats[0].rejected_orientation >= 1 + _check_trace_invariants(stats[0]) + + +@pytest.mark.parametrize("use_strategic", [False, True]) +def test_logit_solve_result_has_trace_stats(use_strategic: bool): + game = games.create_stripped_down_poker_efg() + result = gbt.nash.logit_solve(game, use_strategic=use_strategic) + assert len(result._trace_stats) == 1 + _check_trace_invariants(result._trace_stats[0]) + + +def test_trace_stats_hidden_from_repr_and_equality(): + game = games.create_stripped_down_poker_efg() + result = gbt.nash.logit_solve(game) + assert "_trace_stats" not in repr(result) + assert dataclasses.replace(result, _trace_stats=[]) == result + + +def test_hp_solve_result_has_trace_and_polish_stats(): + game = games.create_hs1988_base_game() + prior = game.mixed_strategy_profile( + data=[[0.5, 0.5], [2.0 / 3.0, 1.0 / 3.0]], rational=False + ) + result = gbt.nash.hp_solve(prior) + assert result.success + assert [s.kind for s in result._trace_stats] == ["trace", "polish"] + trace, polish = result._trace_stats + _check_trace_invariants(trace) + # Polishing is Newton iteration: each iteration evaluates the system and its + # Jacobian once, and factorises once, with no predictor steps. + assert polish.predictor_attempts == 0 + assert polish.function_evals == polish.corrector_iterations + assert polish.jacobian_evals == polish.corrector_iterations + assert polish.factorizations == polish.corrector_iterations + _check_timings(polish)