| 498 | } |
| 499 | |
| 500 | double ma(const std::string_view& variable, const std::weak_ptr<Payload> payload) { |
| 501 | const auto p = std::dynamic_pointer_cast<PayloadExpressionParser>(payload.lock()); |
| 502 | if (!p) { |
| 503 | assert(p); // Debug build |
| 504 | return NAN; |
| 505 | } |
| 506 | return (cell(p->row, variable, payload) + cell(p->row + 1, variable, payload)) / 2.; |
| 507 | } |
| 508 | |
| 509 | double mr(const std::string_view& variable, const std::weak_ptr<Payload> payload) { |
| 510 | const auto p = std::dynamic_pointer_cast<PayloadExpressionParser>(payload.lock()); |