From aa4abe554a558cf87e1de7dc4b37a764273dd363 Mon Sep 17 00:00:00 2001 From: "Lei, HUANG" <6406592+v0y4g3r@users.noreply.github.com> Date: Mon, 19 Oct 2026 01:00:14 -0700 Subject: [PATCH] feat(promql): add evaluated series arithmetic and basic aggregates (#9682) * feat(promql): add evaluated series math kernels Signed-off-by: Lei, HUANG * feat(promql): add evaluated series scalar arithmetic Signed-off-by: Lei, HUANG * feat(promql): complete evaluated series math functions Signed-off-by: Lei, HUANG * feat(promql): add series comparisons and scalar results Signed-off-by: Lei, HUANG * feat(promql): add sparse evaluated series basic aggregates Signed-off-by: Lei, HUANG * feat(promql): align time-varying scalar maps on evaluated grids Signed-off-by: Lei, HUANG * fix(promql): drop metric name in evaluated series math like Prometheus Prometheus' simpleFloatFunc drops __name__ together with __type__ and __unit__. Check abs, ceil, floor, sqrt and round against fixtures generated by the Prometheus v3.15.0 engine. Signed-off-by: Lei, HUANG * fix(promql): drop empty labels with the metric name in series math Prometheus has no empty-valued labels, so a kept empty value would hide a same-labelset collision from the caller. Round shares its calculation with the UDF, so check it only against the Prometheus fixtures. Signed-off-by: Lei, HUANG * fix(promql): align evaluated series map kernels with Prometheus Follow Prometheus v3.15.0 simpleFloatFunc, clamp, VectorscalarBinop and vectorElemBinop: drop __name__, __type__ and __unit__ for math, arithmetic and bool comparisons; use ports of Go math (including the amd64 Log and Exp assembly) for ^, %, atan2 and the transcendental functions; empty a clamp with max < min; keep -0 in sgn and Prometheus' operation order in deg and rad. Fields are compared independently and filtered output is trimmed with GridSeriesBuilder. Check the kernels against fixtures generated by the Prometheus engine and Go math results built for amd64. Signed-off-by: Lei, HUANG * fix(promql): align evaluated series aggregation with Prometheus Follow Prometheus aggregation and generateGroupingLabels: no modifier is by (), without drops __name__, empty label values are absent, sum and avg use Neumaier compensation and avg switches to an incremental mean on overflow. Fields are aggregated independently, so a field without values at a row is null also for count and group. Output is trimmed with GridSeriesBuilder. Check against fixtures generated by the Prometheus engine and drop the main UDAF oracle and the common-function dependency. Signed-off-by: Lei, HUANG * fix(promql): validate whole segments in series comparisons map_compare checked sample types one by one, so a histogram or mixed segment without a present sample passed. Validate segments up front as the other kernels do, check them before an empty clamp, share the empty-label rule with aggregation, and pin exact bits in the deg, rad and incremental avg tests. Signed-off-by: Lei, HUANG * chore: exclude promql golden fixtures from typos Signed-off-by: Lei, HUANG * docs(promql): point series round at Prometheus funcRound Signed-off-by: Lei, HUANG * fix(promql): keep Go math ports only where std leaves the tolerance Series math now follows the relative-1e-10 comparison rule: functions use Rust's standard library unless Go's amd64 result differs beyond the tolerance or in overflow and sign. asin, atan, tanh, asinh, acosh and atanh use std; the Exp assembly port is reduced to its overflow edge, and sinh/cosh build on it above 21. Golden and Go math fixtures are compared with almost.Equal. The Go cases are evaluated through the kernels' own per-sample functions, and each retained port must have a case where std fails, so a port that is no longer needed, or a swap back to std, fails a test. Signed-off-by: Lei, HUANG * refactor(promql): validate aggregate input like series maps aggregate_float repeated map's schema, grid-axis and float-segment checks in a different order, so one bad series could fail with a different error category in each. Both now use validate_float_series, and map_math/map_negate/map_arithmetic run it before mapping instead of their own axis check. Signed-off-by: Lei, HUANG * test(promql): pin avg compensation to Prometheus bits With fixtures compared within the tolerance, dropping or misplacing the Kahan compensation in avg only moves the last bits. Three Prometheus cases where it does are compared exactly: compensation on the incremental mean, the separate division of sum and compensation, and rescaling the compensation when avg switches to the incremental mean. Signed-off-by: Lei, HUANG * test(promql): pin the zero sign of clamp and the Neumaier swap Under the fixture tolerance, +0 and -0 compare equal and no case had an addend larger than the running sum, so two branches lost their tests: Go's Max picking +0 over -0, whose sign a later 1/x turns into the sign of an infinity, and the Neumaier swap, without which sum(1, 1e100, 1, -1e100) is 1 instead of 2. Signed-off-by: Lei, HUANG * chore: allow the Unicode category Nd in typos Signed-off-by: Lei, HUANG * perf(promql): keep aggregate state in fixed-size grid blocks Aggregation kept one B-tree entry and one Vec allocation per populated evaluation point, plus a tree lookup per sample. State is now stored in 64-point blocks keyed by absolute grid index / 64, holding one state per field and point. A block is allocated only once a sample falls in it, so sparse input never expands to the full grid, and each field's run through a block costs one lookup. Points without samples are skipped on output, which also keeps the last block from reaching past the grid. Signed-off-by: Lei, HUANG * perf(promql): drop reserved and empty labels in one rebuild drop_metric_name removed empty-valued labels one at a time, and each MetricName::remove copies the whole label array, so the cost grew with the square of the number of empty labels. Filter the labels once and rebuild the name with MetricName::try_new. Signed-off-by: Lei, HUANG * test(promql): pin that aggregation keeps type and unit labels Prometheus generateGroupingLabels drops only the metric name, unlike math and arithmetic. Nothing failed when grouping dropped __type__ or __unit__. Signed-off-by: Lei, HUANG * fix(promql): return aggregate groups in first-seen order Groups were collected in a BTreeMap and returned sorted by label. Prometheus' rangeEvalAgg appends groups in the order their first input appears, and a nested aggregation folds them in that order: for sum(sum by (g) (m)) over 1e308, -1e308, 1e308 with g = a, c, b, Prometheus gives 1e308 and label order overflows to +Inf. Look groups up by label key and keep them in a Vec. Signed-off-by: Lei, HUANG * test(promql): pin which zero min and max keep Prometheus replaces the min/max accumulator only on a strict comparison, so of +0 and -0 the first is kept. The golden tolerance treats the zeros as equal, and a non-strict comparison passed every test. Signed-off-by: Lei, HUANG --------- Signed-off-by: Lei, HUANG --- src/promql/src/aggregate.rs | 308 ++ src/promql/src/aggregate/prometheus_cases.txt | 1380 +++++++ src/promql/src/aggregate/tests.rs | 637 ++++ src/promql/src/golden.rs | 224 ++ src/promql/src/lib.rs | 3 + src/promql/src/map.rs | 328 +- src/promql/src/map/broadcast.rs | 141 + src/promql/src/map/comparison.rs | 128 + src/promql/src/map/go_math.rs | 592 +++ src/promql/src/map/go_math/tests.rs | 158 + src/promql/src/map/go_math_cases.txt | 758 ++++ src/promql/src/map/prometheus_cases.txt | 3368 ++++++++++++++++- src/promql/src/map/tests.rs | 36 +- src/promql/src/map/tests/arithmetic.rs | 200 + src/promql/src/map/tests/broadcast.rs | 313 ++ src/promql/src/map/tests/comparison.rs | 176 + src/promql/src/map/tests/math_functions.rs | 171 + src/promql/src/map/tests/prometheus.rs | 398 +- 18 files changed, 8942 insertions(+), 377 deletions(-) create mode 100644 src/promql/src/aggregate.rs create mode 100644 src/promql/src/aggregate/prometheus_cases.txt create mode 100644 src/promql/src/aggregate/tests.rs create mode 100644 src/promql/src/golden.rs create mode 100644 src/promql/src/map/broadcast.rs create mode 100644 src/promql/src/map/comparison.rs create mode 100644 src/promql/src/map/go_math.rs create mode 100644 src/promql/src/map/go_math/tests.rs create mode 100644 src/promql/src/map/go_math_cases.txt create mode 100644 src/promql/src/map/tests/arithmetic.rs create mode 100644 src/promql/src/map/tests/broadcast.rs create mode 100644 src/promql/src/map/tests/comparison.rs create mode 100644 src/promql/src/map/tests/math_functions.rs diff --git a/src/promql/src/aggregate.rs b/src/promql/src/aggregate.rs new file mode 100644 index 00000000000..17b65b121b0 --- /dev/null +++ b/src/promql/src/aggregate.rs @@ -0,0 +1,308 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Local float aggregation over evaluated series, following Prometheus' `aggregation`. State +//! is keyed by absolute grid index, never by local row number; sparse state and trimmed output +//! do not expand the full grid. + +#[cfg(test)] +mod tests; + +use std::collections::{BTreeMap, HashMap}; +use std::sync::Arc; + +use datafusion::error::{DataFusionError, Result}; +use datatypes::series::MetricName; +use datatypes::series::samples::{SampleRef, Series, SeriesSchema}; +use datatypes::series::time::TimeAxis; + +use crate::grid_series::GridSeriesBuilder; +use crate::map::{drop_empty_labels, validate_float_series}; + +/// Basic float aggregations. +#[derive(Clone, Copy, Debug)] +pub enum AggregateOp { + Sum, + Count, + Avg, + Min, + Max, + Group, +} + +/// Grouping by series labels. No modifier is `By(&[])`, as in Prometheus. +#[derive(Clone, Copy, Debug)] +pub enum Grouping<'a> { + By(&'a [&'a str]), + Without(&'a [&'a str]), +} + +/// Aggregates each field at each absolute evaluation instant. +/// +/// Each field is aggregated independently; an output row exists where any field has a value, +/// and a field without input values at that row is null. Ordinary NaNs count as values. +/// +/// Inputs are folded in slice order. Prometheus folds them in storage postings order, and the +/// compensated `sum`/`avg` depend on that order in the last bits, so callers must keep it. +/// Groups are returned in the order their first input appears, as in Prometheus: a nested +/// aggregation folds them in that order. +/// +/// Only float evaluated inputs on the shared schema/grid are admitted. `by` on a value field +/// needs per-point labels and an output schema adapter, and is rejected. There is no fallback. +pub fn aggregate_float( + schema: &Arc, + input: &[Series], + op: AggregateOp, + grouping: Grouping<'_>, +) -> Result> { + validate_input(schema, input, grouping)?; + let mut group_index = HashMap::new(); + let mut groups = Vec::new(); + for series in input { + let metric = grouping.apply(&series.metric)?; + let index = *group_index.entry(label_key(&metric)).or_insert_with(|| { + groups.push(Group { + metric, + blocks: BTreeMap::new(), + }); + groups.len() - 1 + }); + groups[index].accumulate(series, op)?; + } + let mut builder = GridSeriesBuilder::try_new(schema.clone())?; + let mut output = Vec::with_capacity(groups.len()); + let mut row = Vec::with_capacity(schema.fields.len()); + for group in groups { + for (&block, states) in &group.blocks { + // The last block can extend past the grid; only points with a sample are pushed. + for (offset, point) in states.chunks_exact(schema.fields.len()).enumerate() { + if !point.iter().any(|state| state.seen) { + continue; + } + row.clear(); + row.extend(point.iter().map(|state| state.finish(op))); + builder.push(block * BLOCK_POINTS + offset, &row)?; + } + } + output.extend(builder.finish(group.metric)?); + } + Ok(output) +} + +/// Schema validation is repeated because Series exposes its fields publicly. +fn validate_input(schema: &SeriesSchema, input: &[Series], grouping: Grouping<'_>) -> Result<()> { + if schema.eval_grid.is_none() { + return Err(DataFusionError::Execution( + "Aggregate requires an evaluated grid".into(), + )); + } + grouping.validate(schema)?; + for series in input { + validate_float_series(schema, series)?; + } + Ok(()) +} + +impl Grouping<'_> { + fn validate(self, schema: &SeriesSchema) -> Result<()> { + if let Self::By(labels) = self + && schema + .fields + .iter() + .any(|field| labels.contains(&field.name.as_ref())) + { + return Err(DataFusionError::NotImplemented( + "aggregate by value field requires a per-point label/schema adapter".into(), + )); + } + Ok(()) + } + + /// Prometheus `generateGroupingLabels`; empty values are dropped as absent labels. + fn apply(self, input: &MetricName) -> Result { + let mut metric = input.clone(); + match self { + Self::By(labels) => metric.keep_only(labels), + Self::Without(labels) => { + metric.remove_all(labels); + metric.remove("__name__"); + } + } + drop_empty_labels(&metric) + } +} + +fn label_key(metric: &MetricName) -> Vec<(Arc, Arc)> { + let mut labels = Vec::with_capacity(metric.tags().len() + 1); + if let Some(name) = metric.name() { + labels.push((Arc::from("__name__"), Arc::from(name))); + } + labels.extend( + metric + .tags() + .iter() + .map(|label| (label.name.clone(), label.value.clone())), + ); + labels +} + +/// Grid points per state block. A block is allocated only once a sample falls in it, so sparse +/// input never expands to the full grid and dense input costs one allocation per block. +const BLOCK_POINTS: usize = 64; + +struct Group { + metric: MetricName, + /// Keyed by absolute grid index / `BLOCK_POINTS`; each block holds one state per field for + /// each of its points, point by point. + blocks: BTreeMap>, +} + +impl Group { + fn accumulate(&mut self, series: &Series, op: AggregateOp) -> Result<()> { + let TimeAxis::Grid(range) = &series.time else { + return Err(DataFusionError::Execution( + "Aggregate requires an evaluated grid".into(), + )); + }; + let width = series.fields.len(); + let mut pending = Vec::with_capacity(BLOCK_POINTS); + for (field_index, field) in series.fields.iter().enumerate() { + let mut block = range.start() / BLOCK_POINTS; + for (offset, sample) in field.iter().enumerate() { + let index = range.start() + offset; + if index / BLOCK_POINTS != block { + self.update_block(block, width, field_index, op, &mut pending); + block = index / BLOCK_POINTS; + } + if let SampleRef::Float(sample) = sample { + pending.push((index % BLOCK_POINTS, sample)); + } + } + self.update_block(block, width, field_index, op, &mut pending); + } + Ok(()) + } + + /// Applies one field's samples within a block, so a block costs one lookup per field run. + fn update_block( + &mut self, + block: usize, + width: usize, + field_index: usize, + op: AggregateOp, + pending: &mut Vec<(usize, f64)>, + ) { + if pending.is_empty() { + return; + } + let states = self.blocks.entry(block).or_insert_with(|| { + vec![FloatState::default(); BLOCK_POINTS * width].into_boxed_slice() + }); + for (offset, sample) in pending.drain(..) { + states[offset * width + field_index].update(op, sample); + } + } +} + +/// The float part of Prometheus' `groupedAggregation`. +#[derive(Clone, Copy, Default)] +struct FloatState { + seen: bool, + value: f64, + mean: f64, + compensation: f64, + count: f64, + incremental_mean: bool, +} + +impl FloatState { + fn update(&mut self, op: AggregateOp, sample: f64) { + if !self.seen { + *self = Self { + seen: true, + value: if matches!(op, AggregateOp::Group) { + 1.0 + } else { + sample + }, + mean: sample, + count: 1.0, + ..Self::default() + }; + return; + } + match op { + AggregateOp::Sum => { + (self.value, self.compensation) = kahan_inc(sample, self.value, self.compensation); + } + AggregateOp::Avg => self.update_avg(sample), + AggregateOp::Count => self.count += 1.0, + AggregateOp::Max => { + if self.value < sample || self.value.is_nan() { + self.value = sample; + } + } + AggregateOp::Min => { + if self.value > sample || self.value.is_nan() { + self.value = sample; + } + } + AggregateOp::Group => {} + } + } + + /// Sums directly until the running sum would overflow, then switches to an incremental mean. + fn update_avg(&mut self, sample: f64) { + self.count += 1.0; + if !self.incremental_mean { + let (value, compensation) = kahan_inc(sample, self.value, self.compensation); + if !value.is_infinite() { + (self.value, self.compensation) = (value, compensation); + return; + } + self.incremental_mean = true; + self.mean = self.value / (self.count - 1.0); + self.compensation /= self.count - 1.0; + } + let q = (self.count - 1.0) / self.count; + (self.mean, self.compensation) = + kahan_inc(sample / self.count, q * self.mean, q * self.compensation); + } + + fn finish(self, op: AggregateOp) -> Option { + if !self.seen { + return None; + } + Some(match op { + AggregateOp::Sum => self.value + self.compensation, + AggregateOp::Avg if self.incremental_mean => self.mean + self.compensation, + AggregateOp::Avg => self.value / self.count + self.compensation / self.count, + AggregateOp::Count => self.count, + AggregateOp::Min | AggregateOp::Max | AggregateOp::Group => self.value, + }) + } +} + +/// Prometheus `kahansum.Inc`, with the Neumaier swap. +fn kahan_inc(inc: f64, sum: f64, compensation: f64) -> (f64, f64) { + let t = sum + inc; + let compensation = if t.is_infinite() { + 0.0 + } else if sum.abs() >= inc.abs() { + compensation + ((sum - t) + inc) + } else { + compensation + ((inc - t) + sum) + }; + (t, compensation) +} diff --git a/src/promql/src/aggregate/prometheus_cases.txt b/src/promql/src/aggregate/prometheus_cases.txt new file mode 100644 index 00000000000..3d2459e8be6 --- /dev/null +++ b/src/promql/src/aggregate/prometheus_cases.txt @@ -0,0 +1,1380 @@ +# Generated by promql-compat cmd/narthex-golden-map built for amd64 (Prometheus v3.15.0 +# engine, go1.26.5, seed 1): 149 agg. A case lists its operation, the PromQL +# expression, the grid, the inputs read back from the engine in storage postings order +# and the result series. +# Points are `grid index:hex value bits`. +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 0 1000 3 +series __name__=a,i=0 ; 1:7fefffffffffffff +series __name__=a,i=1 ; 1:7fefffffffffffff +series __name__=a,i=2 ; 1:feddf3e82d6b6d88 +series __name__=a,i=3 ; 1:fdd403bb24f542bf +series __name__=a,i=4 ; 1:ffeed9db23be0a71 +series __name__=a,i=5 ; 1:ffb8f2c40125fbb7 +result - ; 1:7fc40528ec14be57 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 0 1000 3 +series __name__=a,i=0 ; 1:7fefffffffffffff +series __name__=a,i=1 ; 1:7fe2b55f24962471 +series __name__=a,i=2 ; 1:7f7b95c7ed3a8f06 +series __name__=a,i=3 ; 1:7f75d53a379fb517 +series __name__=a,i=4 ; 1:7f71a21ceafb8ae4 +series __name__=a,i=5 ; 1:ffe1f8b2ce599b68 +result - ; 1:7fc62c8462e82319 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 0 1000 3 +series __name__=a,i=0 ; 1:406c76fff31cc498 +series __name__=a,i=1 ; 1:c300281b07086372 +series __name__=a,i=2 ; 1:c2b33ace5f269b56 +series __name__=a,i=3 ; 1:c2807b0afee3570f +series __name__=a,i=4 ; 1:40527b1b3a5c44e6 +result - ; 1:c2daea473b33e9f1 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 0 1000 3 +series __name__=a,i=0 ; 1:ffe985777be7cf98 +series __name__=a,i=1 ; 1:7fb976769842f3a1 +series __name__=a,i=2 ; 1:ffe6ef0261aba506 +series __name__=a,i=3 ; 1:7fbc6cc7f64a3057 +result - ; 1:ffd4dc0905e0e810 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid 0 1000 3 +series __name__=a,i=0 ; 1:3ff0000000000000 +series __name__=a,i=1 ; 1:54b249ad2594c37d +series __name__=a,i=2 ; 1:3ff0000000000000 +series __name__=a,i=3 ; 1:d4b249ad2594c37d +result - ; 1:4000000000000000 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid 219680840871 1 5 +series __name__=a,job=j1,zone=z1 ; 0:7fefffffffffffff 1:7fefffffffffffff 2:ffefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff +result - ; 0:7fefffffffffffff 1:7fefffffffffffff 2:ffefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid 1789887976818 15000 9 +series __name__=a,host=h1,job=j1 ; 0:8000000000000001 1:7c55a9b1e1c0627c 2:403af33333333334 3:7ff0000000000000 4:fdcc30f03c00b384 5:3fe677ced916872b 6:fa539f7693acc750 7:0016c3875baa7360 8:4038900000000000 +series __name__=b,zone=z2 ; 0:c008000000000000 1:4128b62c00000000 2:0000000000000001 3:4013d1eb851eb852 5:4014000000000000 7:c341c37937e08000 8:8000000000000000 +result - ; 0:c008000000000000 1:7c55a9b1e1c0627c 2:403af33333333334 3:7ff0000000000000 4:fdcc30f03c00b384 5:4016cef9db22d0e5 6:fa539f7693acc750 7:c341c37937e08000 8:4038900000000000 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid 51106776327 1000 3 +series __name__=a ; 0:fda8438e3c37677e 1:4341c37937e08000 2:4022ff5c28f5c28f +result - ; 0:fda8438e3c37677e 1:4341c37937e08000 2:4022ff5c28f5c28f +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid 2914681379649 60000 10 +series __name__=b,host=h2,zone=z2 ; 0:4008000000000000 1:feb1670f0654abb6 2:7fefffffffffffff 3:c0c575c000000000 6:40469ccccccccccd 7:0000000000000001 8:bfe0000000000000 9:40f579a800000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:000fffffffffffff 1:c060d40000000000 2:c073780000000000 4:408acb0000000000 5:c00f7ae147ae147b 6:000000165354657a 7:c0824e0000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c0f0a8d800000000 1:8000000000000000 2:8062b14266752a3a 3:c0f7589000000000 4:c01c000000000000 5:0000000000000000 6:bfe3b74bc6a7ef9e 7:fb1298d86d1942c0 8:c0b7afc000000000 9:c0f1bbd800000000 +series __name__=a,host=h2,zone=z1 ; 1:4022cd70a3d70a3e 2:3fe0000000000000 4:40e1a6c000000000 5:40f1a21000000000 6:4110b55800000000 7:40e6391000000000 8:40ebf2b000000000 9:c01c000000000000 +result - ; 0:c0f0a8a800000000 1:feb1670f0654abb6 2:7fefffffffffffff 3:c0fa074800000000 4:40e2110c00000000 5:40f1a1d10a3d70a4 6:4110b60a6f7ced91 7:fb1298d86d1942c0 8:40e8fca800000000 9:40cdeb0000000000 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid -604533754757 15000 3 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 1:8014775c0c1ea438 2:c0c168e000000000 +series __name__=b,host=h1 ; 0:4000000000000000 1:40f19bd000000000 2:c0568ccccccccccd +series __name__=a,host=h1,job=j1 ; 0:406e240000000000 2:800000000000001c +series __name__=b,host=h1,job=j2,zone=z1 ; 0:c080db0000000000 1:79a8631a7f083bd2 2:c0d6922000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 2:8000000000518138 +result - ; 0:ffe1ccf385ebc8a0 1:79a8631a7f083bd2 2:c0df5d1ccccccccd +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid -2962713532215 1 10 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:8000000000000000 1:3fea666666666667 2:40858f0000000000 3:fd20e89049e21476 4:f9f391b611275f20 5:c0116147ae147ae1 6:7ff8000000000001 7:4020000000000000 +series __name__=a,host=h2,zone=z2 ; 0:bfebd604189374bd 1:bfeaf5c28f5c28f6 2:7fefffffffffffff 3:4000000000000000 6:c123459800000000 8:c0282ccccccccccd 9:c040f80000000000 +series __name__=b,host=h1,zone=z2 ; 0:c090860000000000 1:0000000b052ff4fc 3:3fd6666666666667 4:c07c700000000000 5:0000000000000000 6:c022000000000000 8:fcefe8af01db2170 9:c0f699f000000000 +series __name__=b,job=j1,zone=z2 ; 1:7a0fd2a115b52870 2:40818e0000000000 3:fd2ed8a6cd663a00 4:7ff8000000000001 8:7e2ee5ddbbc90e98 9:8002b0ee2e12172a +result - ; 0:c090897ac083126f 1:7a0fd2a115b52870 2:7fefffffffffffff 3:fd37e09b8ba4273b 4:7ff8000000000001 5:c0116147ae147ae1 6:7ff8000000000001 7:4020000000000000 8:7e2ee5dbbd3e1e7a 9:c0f69c0f00000000 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid -3548945492485 1 10 +series __name__=b,host=h1,job=j2,zone=z2 ; 0:ffefffffffffffff 1:c05f400000000000 2:bfedbc6a7ef9db23 3:0000000000000000 4:3fdae147ae147ae1 6:802c7cc387a67ec0 7:c01ec3d70a3d70a4 8:408cdb0000000000 9:ffe1ccf385ebc8a0 +series __name__=b,job=j2,zone=z1 ; 0:c10dada800000000 1:4000000000000000 2:4120d49800000000 3:400c87ae147ae148 4:40726a0000000000 5:3fe9a2d0e5604189 6:8000000001d69541 +series __name__=a ; 1:7c0a489f44473ee4 2:782a67fa6c1344b4 4:412c791000000000 5:bfd5be76c8b43958 7:78f75bdfb9a00e88 8:ff1b067510d22312 9:3fe43126e978d4fe +result - ; 0:ffefffffffffffff 1:7c0a489f44473ee4 2:782a67fa6c1344b4 3:400c87ae147ae148 4:412c7b5e170a3d71 5:3fdd872b020c49ba 6:802c7cc38891c960 7:78f75bdfb9a00e88 8:ff1b067510d22312 9:ffe1ccf385ebc8a0 +end +case agg sum none - +expr sum({__name__=~"a|b"}) +grid -3544116501466 60000 8 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:802dc0445669d422 1:0000000000000002 2:c0e8e0c000000000 3:c01c000000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c045700000000000 2:4085c30000000000 3:4022c66666666667 5:4000000000000000 6:40e0a81000000000 7:000677544027c40a +series __name__=a,host=h1,job=j1,zone=z2 ; 0:4341c37937e08000 1:c127a6b000000000 2:8000000000000000 3:40238d70a3d70a3e 4:8000000000000001 5:3fde9fbe76c8b43a 6:bfdde353f7ced917 7:c0ab508000000000 +series __name__=a,host=h2,zone=z1 ; 1:7b162d38e8c8ffd4 3:c01c000000000000 4:7a9956047b631df8 7:c0af8d8000000000 +series __name__=b,host=h2,zone=z1 ; 1:410cc34800000000 2:4010000000000000 3:78d6bfa04792fb40 4:c050780000000000 5:0000000059b707f6 6:c0b7818000000000 7:4127eef400000000 +result - ; 0:4341c37937e07feb 1:7b162d38e8c8ffd4 2:c0e8893400000000 3:78d6bfa04792fb40 4:7a9956047b631df8 5:4003d3f7ced91687 6:40db6fa21cac0831 7:4127b41600000000 +end +case agg sum by __name__ +expr sum by (__name__) ({__name__=~"a|b"}) +grid 3527909357966 15000 6 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:7fe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 +series __name__=a,host=h1,zone=z2 ; 1:7fe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:7fe1ccf385ebc8a0 +series __name__=b,host=h1,job=j1,zone=z1 ; 1:ffe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 +result __name__=a ; 0:7fe1ccf385ebc8a0 1:7fe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:7ff0000000000000 5:7fe1ccf385ebc8a0 +result __name__=b ; 1:ffe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 +end +case agg sum by __name__ +expr sum by (__name__) ({__name__=~"a|b"}) +grid 362005804151 1000 8 +series __name__=b,zone=z1 ; 0:ffefffffffffffff 1:c0f39c5000000000 2:3fdf5e353f7ced92 4:c04771999999999a 7:c0a3178000000000 +result __name__=b ; 0:ffefffffffffffff 1:c0f39c5000000000 2:3fdf5e353f7ced92 4:c04771999999999a 7:c0a3178000000000 +end +case agg sum by host +expr sum by (host) ({__name__=~"a|b"}) +grid 360879133452 1 4 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:c341c37937e08000 1:bff0000000000000 3:00000000000ab2e0 +series __name__=b,zone=z2 ; 1:4008000000000000 3:000fffffffffffff +series __name__=a,host=h2,job=j1 ; 1:4020000000000000 2:7ff0000000000000 +series __name__=b,host=h1,job=j2,zone=z1 ; 2:000000000024e8ac 3:40104ccccccccccd +result - ; 1:4008000000000000 3:000fffffffffffff +result host=h1 ; 0:c341c37937e08000 1:bff0000000000000 2:000000000024e8ac 3:40104ccccccccccd +result host=h2 ; 1:4020000000000000 2:7ff0000000000000 +end +case agg sum by zone +expr sum by (zone) ({__name__=~"a|b"}) +grid 3133758685184 15000 4 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:78218d8c495b1120 1:4058400000000000 2:402193d70a3d70a4 3:bfd56e978d4fdf3c +series __name__=a,zone=z1 ; 0:4341c37937e08000 1:3fe347ae147ae148 2:c021db851eb851ec +series __name__=a,host=h2,zone=z2 ; 0:3ff0000000000000 1:0000000009435fb2 2:c0b3998000000000 3:c053a33333333334 +series __name__=b,host=h1,job=j1,zone=z2 ; 2:c09c200000000000 +result zone=z1 ; 0:4341c37937e08000 1:3fe347ae147ae148 2:c021db851eb851ec +result zone=z2 ; 0:78218d8c495b1120 1:4058400000000000 2:c0ba98b6147ae148 3:c053b8a1cac08313 +end +case agg sum by __name__,host +expr sum by (__name__,host) ({__name__=~"a|b"}) +grid -817226714612 1 6 +series __name__=a,job=j2,zone=z2 ; 0:000000000000014f 2:c056b66666666667 3:40c0112000000000 4:ffefffffffffffff +series __name__=a,zone=z1 ; 1:405230cccccccccd 2:40ec840000000000 3:0000000000000000 4:c00ca147ae147ae1 5:bff0000000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 1:4010000000000000 3:fd8f255aabfcc9c2 4:8000000000000253 5:7fefffffffffffff +result __name__=a ; 0:000000000000014f 1:405230cccccccccd 2:40ec78a4cccccccd 3:40c0112000000000 4:ffefffffffffffff 5:bff0000000000000 +result __name__=a,host=h2 ; 1:4010000000000000 3:fd8f255aabfcc9c2 4:8000000000000253 5:7fefffffffffffff +end +case agg sum by __name__,job +expr sum by (__name__,job) ({__name__=~"a|b"}) +grid 1652740290798 60000 5 +series __name__=a,host=h2 ; 0:bfd64fdf3b645a1d 1:c055b33333333334 2:400e30a3d70a3d71 4:4008000000000000 +result __name__=a ; 0:bfd64fdf3b645a1d 1:c055b33333333334 2:400e30a3d70a3d71 4:4008000000000000 +end +case agg sum by - +expr sum by () ({__name__=~"a|b"}) +grid -128760043963 60000 5 +series __name__=b,host=h2,job=j2,zone=z2 ; 0:8000000000000015 2:4008000000000000 3:c0bb990000000000 4:800000000000304d +series __name__=b,zone=z1 ; 0:c12a13c800000000 3:fb5cce50d24c3e94 4:412a265600000000 +series __name__=b,host=h2,zone=z1 ; 0:f95bd1bec52d88fc 1:4047c00000000000 2:c021b147ae147ae1 3:7ff0000000000000 4:8000000000000001 +series __name__=b,host=h2,job=j1 ; 0:0000000000000000 1:c12c176800000000 2:7cc952a9e608b874 4:7df02c2e3b40b0c0 +series __name__=b,host=h1,job=j1,zone=z1 ; 1:c10d0d8000000000 4:4081ee0000000000 +result - ; 0:f95bd1bec52d88fc 1:c131ad3480000000 2:7cc952a9e608b874 3:7ff0000000000000 4:7df02c2e3b40b0c0 +end +case agg sum by job +expr sum by (job) ({__name__=~"a|b"}) +grid -974972002802 1 8 +series __name__=a,host=h1,zone=z2 ; 0:4022e0a3d70a3d71 2:c341c37937e08000 3:c0c24d0000000000 4:40bce1c000000000 6:c0f3b61800000000 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:4020000000000000 2:7f8a249a2b96ee00 3:4108fe7000000000 4:40b8df8000000000 5:40f0680000000000 7:bff0000000000000 +series __name__=a,zone=z2 ; 0:c05051999999999a 1:4127f2dc00000000 2:40c6bac000000000 3:bff0000000000000 4:fb735d06f4141a44 5:3fec99999999999a 6:c01f000000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:40c23e0000000000 1:8000000000000001 2:bfe25e353f7ced92 3:80000007caacec44 6:bfe0000000000000 7:c0ec458000000000 +result - ; 0:c04beb0a3d70a3d8 1:4127f2dc00000000 2:c341c37937e06945 3:c0c24d8000000000 4:fb735d06f4141a44 5:3fec99999999999a 6:c0f3b69400000000 +result job=j1 ; 0:4020000000000000 2:7f8a249a2b96ee00 3:4108fe7000000000 4:40b8df8000000000 5:40f0680000000000 7:bff0000000000000 +result job=j2 ; 0:40c23e0000000000 1:8000000000000001 2:bfe25e353f7ced92 3:80000007caacec44 6:bfe0000000000000 7:c0ec458000000000 +end +case agg sum without __name__,job +expr sum without (__name__,job) ({__name__=~"a|b"}) +grid 815154435612 1 5 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:7fefffffffffffff 2:ffefffffffffffff 4:7fefffffffffffff +result host=h2,zone=z1 ; 0:7fefffffffffffff 2:ffefffffffffffff 4:7fefffffffffffff +end +case agg sum without - +expr sum without () ({__name__=~"a|b"}) +grid 3522274344520 1000 7 +series __name__=a,host=h1,zone=z2 ; 0:fff0000000000000 2:c008000000000000 3:bff80f5c28f5c290 4:00000000000007a7 6:80000000000636d4 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:c0555ccccccccccd 2:c122287000000000 3:c072480000000000 4:bfae147ae147ae15 5:8000000000000001 6:c052c66666666667 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:40b9618000000000 2:c12d8d6e00000000 4:f9cfadcc9a887980 5:c01c000000000000 6:408aa30000000000 +series __name__=b,job=j2,zone=z2 ; 0:4020000000000000 1:0000000000000000 2:c007266666666667 3:3fe9df3b645a1cac 4:4010000000000000 5:4008000000000000 6:c0b8948000000000 +result host=h1,job=j2,zone=z1 ; 0:40b90c0ccccccccd 2:c137daef00000000 3:c072480000000000 4:f9cfadcc9a887980 5:c01c000000000000 6:40884a3333333333 +result host=h1,zone=z2 ; 0:fff0000000000000 2:c008000000000000 3:bff80f5c28f5c290 4:00000000000007a7 6:80000000000636d4 +result job=j2,zone=z2 ; 0:4020000000000000 1:0000000000000000 2:c007266666666667 3:3fe9df3b645a1cac 4:4010000000000000 5:4008000000000000 6:c0b8948000000000 +end +case agg sum without - +expr sum without () ({__name__=~"a|b"}) +grid -462437012543 1000 6 +series __name__=b,host=h2,zone=z1 ; 1:c020000000000000 2:7b941bdd5e1f7400 3:c018000000000000 4:c341c37937e08000 5:411b8ac800000000 +series __name__=b,host=h1,zone=z2 ; 1:4020951eb851eb85 2:c0b0234000000000 3:c102c4b000000000 5:c1092d5000000000 +result host=h1,zone=z2 ; 1:4020951eb851eb85 2:c0b0234000000000 3:c102c4b000000000 5:c1092d5000000000 +result host=h2,zone=z1 ; 1:c020000000000000 2:7b941bdd5e1f7400 3:c018000000000000 4:c341c37937e08000 5:411b8ac800000000 +end +case agg sum without job +expr sum without (job) ({__name__=~"a|b"}) +grid -973117360676 1 5 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:405cf00000000000 1:40b246c000000000 2:78f187976c2eea08 3:c0f4677000000000 4:fe0e89fe26a5b9de +series __name__=b,job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:3ff0000000000000 2:40f0e69000000000 3:c089a40000000000 +result host=h2,zone=z1 ; 0:405cf00000000000 1:40b246c000000000 2:78f187976c2eea08 3:c0f4677000000000 4:fe0e89fe26a5b9de +result zone=z2 ; 0:7fe1ccf385ebc8a0 1:3ff0000000000000 2:40f0e69000000000 3:c089a40000000000 +end +case agg sum without __name__,host +expr sum without (__name__,host) ({__name__=~"a|b"}) +grid 2407391671499 60000 7 +series __name__=a,zone=z1 ; 0:fc2eee18ddef15ac 1:0000000000000000 2:4341c37937e08000 3:c073660000000000 5:bff0000000000000 6:8020852a160ae1c0 +series __name__=b,host=h2 ; 1:c10777d000000000 3:3ff0000000000000 4:3ff0000000000000 5:c085a30000000000 6:4018000000000000 +result - ; 1:c10777d000000000 3:3ff0000000000000 4:3ff0000000000000 5:c085a30000000000 6:4018000000000000 +result zone=z1 ; 0:fc2eee18ddef15ac 1:0000000000000000 2:4341c37937e08000 3:c073660000000000 5:bff0000000000000 6:8020852a160ae1c0 +end +case agg sum without zone +expr sum without (zone) ({__name__=~"a|b"}) +grid 2132505907296 1000 6 +series __name__=a,job=j2,zone=z1 ; 0:3fb0f5c28f5c28f6 1:ffefffffffffffff 3:40e0059000000000 5:bfeec9ba5e353f7d +series __name__=b,host=h2,job=j2,zone=z2 ; 1:bfe0000000000000 2:8000000000000074 3:40c1d8c000000000 4:4341c37937e08000 5:3ff0000000000000 +series __name__=a ; 1:c01c000000000000 4:4095590000000000 5:4008828f5c28f5c3 +series __name__=b,host=h1,zone=z2 ; 3:8000000000000000 4:c09ab30000000000 +result - ; 1:c01c000000000000 4:4095590000000000 5:4008828f5c28f5c3 +result host=h1 ; 3:0000000000000000 4:c09ab30000000000 +result host=h2,job=j2 ; 1:bfe0000000000000 2:8000000000000074 3:40c1d8c000000000 4:4341c37937e08000 5:3ff0000000000000 +result job=j2 ; 0:3fb0f5c28f5c28f6 1:ffefffffffffffff 3:40e0059000000000 5:bfeec9ba5e353f7d +end +case agg sum without zone +expr sum without (zone) ({__name__=~"a|b"}) +grid 2050809498560 1000 8 +series __name__=a,host=h1,zone=z1 ; 0:40b269c000000000 1:4010000000000000 3:c12c59d000000000 7:c09ea00000000000 +series __name__=a,host=h2,job=j2 ; 0:3fe0000000000000 1:0000019a5ceb133d 2:bfd8cccccccccccd 3:c077620000000000 4:0000000000062267 7:c000000000000000 +series __name__=b,host=h1,job=j1,zone=z2 ; 1:0000000000000000 2:00000000000000dd 3:40f1d02800000000 5:c10e0f5000000000 6:3fe0000000000000 7:c01c000000000000 +series __name__=b,host=h2,zone=z2 ; 1:c02ac00000000000 3:bfbd47ae147ae148 4:c341c37937e08000 5:c341c37937e08000 6:c000e147ae147ae1 7:c022066666666667 +result host=h1 ; 0:40b269c000000000 1:4010000000000000 3:c12c59d000000000 7:c09ea00000000000 +result host=h1,job=j1 ; 1:0000000000000000 2:00000000000000dd 3:40f1d02800000000 5:c10e0f5000000000 6:3fe0000000000000 7:c01c000000000000 +result host=h2 ; 1:c02ac00000000000 3:bfbd47ae147ae148 4:c341c37937e08000 5:c341c37937e08000 6:c000e147ae147ae1 7:c022066666666667 +result host=h2,job=j2 ; 0:3fe0000000000000 1:0000019a5ceb133d 2:bfd8cccccccccccd 3:c077620000000000 4:0000000000062267 7:c000000000000000 +end +case agg sum without __name__ +expr sum without (__name__) ({__name__=~"a|b"}) +grid 461713728024 60000 4 +series __name__=b,host=h2,zone=z1 ; 0:4008000000000000 1:0000000000000005 2:00025ccca34475c2 3:c10e26c000000000 +series __name__=a,host=h1,zone=z2 ; 0:7ff0000000000000 1:c341c37937e08000 2:c018000000000000 3:7ff8000000000001 +series __name__=a,host=h2,job=j2 ; 0:3fdc8d4fdf3b645a 1:4341c37937e08000 +series __name__=b,host=h2 ; 2:4073600000000000 3:fdc0c1b1d9aa74f0 +series __name__=b,job=j1,zone=z2 ; 2:3ff0000000000000 3:4052580000000000 +result host=h1,zone=z2 ; 0:7ff0000000000000 1:c341c37937e08000 2:c018000000000000 3:7ff8000000000001 +result host=h2 ; 2:4073600000000000 3:fdc0c1b1d9aa74f0 +result host=h2,job=j2 ; 0:3fdc8d4fdf3b645a 1:4341c37937e08000 +result host=h2,zone=z1 ; 0:4008000000000000 1:0000000000000005 2:00025ccca34475c2 3:c10e26c000000000 +result job=j1,zone=z2 ; 2:3ff0000000000000 3:4052580000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid 2220625484714 15000 7 +series __name__=b,host=h1,zone=z2 ; 0:c341c37937e08000 1:40a43e8000000000 3:7fd11571cca91f9c 4:7fe1ccf385ebc8a0 5:c0be4c4000000000 +series __name__=b,job=j2,zone=z2 ; 0:c0f03ab000000000 1:c00a51eb851eb852 2:bfe8353f7ced9169 3:c101ce9800000000 4:4023e28f5c28f5c3 5:8000000000000016 6:000fffffffffffff +series __name__=b,zone=z2 ; 0:8000000000000001 1:fca96b753658ec1a 4:4341c37937e08000 5:40a2408000000000 6:0000000228a1217e +series __name__=a,host=h2,job=j2 ; 0:4010000000000000 2:7fefffffffffffff 4:4008000000000000 6:ffe1ccf385ebc8a0 +series __name__=a ; 1:c024000000000000 3:c0f2694800000000 4:3fe0000000000000 5:bfe0000000000000 6:8000000000000000 +series __name__=b,job=j1,zone=z2 ; 1:bfe2a1cac083126f 2:c039b33333333334 4:bfc86e978d4fdf3c 5:c0b93d4000000000 6:7926da3face667fc +result - ; 0:4010000000000000 1:4014000000000000 2:4008000000000000 3:4008000000000000 4:4018000000000000 5:4014000000000000 6:4014000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid 405309322771 15000 7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 2:4022000000000000 3:000000050298c217 4:7ff8000000000001 5:4000000000000000 +series __name__=b,host=h2,job=j2 ; 0:fff0000000000000 1:c020000000000000 4:c0b4438000000000 5:c117450800000000 +result - ; 0:4000000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:4000000000000000 5:4000000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid 3545913804850 1000 8 +series __name__=b,zone=z1 ; 0:409e6e0000000000 1:4085ac0000000000 2:3fdbbc6a7ef9db23 3:bff023d70a3d70a4 4:40724a0000000000 5:800034ec5acaab15 6:40b7674000000000 7:bff55c28f5c28f5c +series __name__=a,host=h1,job=j1,zone=z1 ; 0:bff0000000000000 1:4018aa3d70a3d70a 2:410a13c800000000 5:fb2862529867c73a +series __name__=a,host=h2,zone=z1 ; 0:bff0000000000000 3:8000000352c83617 4:c01bc7ae147ae148 5:4083920000000000 6:401e6147ae147ae1 7:401c000000000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:79575c22a83c03f0 3:7fe1ccf385ebc8a0 4:c0c34b6000000000 5:c10a1f8000000000 6:bfb3ae147ae147ae +result - ; 0:4008000000000000 1:4008000000000000 2:4000000000000000 3:4008000000000000 4:4008000000000000 5:4010000000000000 6:4008000000000000 7:4000000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid -989473305478 15000 9 +series __name__=b,job=j2 ; 0:000fffffffffffff 1:c016933333333333 2:40534d999999999a 3:7fe1ccf385ebc8a0 4:c0774c0000000000 5:c008000000000000 6:3fe8ced916872b02 7:c020b70a3d70a3d7 8:7fe1ccf385ebc8a0 +series __name__=a,host=h2,zone=z1 ; 0:404ea66666666667 1:00000001d7c90979 2:3fd7fbe76c8b4396 3:40f5199000000000 5:bfee4fdf3b645a1d 7:00190396fed4d716 +series __name__=a,host=h2,job=j2 ; 1:0000000000000001 2:c0b93fc000000000 3:c125a02200000000 4:c00fb5c28f5c28f6 5:bfd972b020c49ba6 7:0000000000000008 8:bff0000000000000 +series __name__=b,host=h1,job=j2,zone=z1 ; 1:4052aa6666666667 3:fadafbedc85f8b8c 4:411341b000000000 5:c021eb851eb851ec 7:408a8a0000000000 +series __name__=a,job=j2 ; 1:8010735fabb4eaf0 2:800000000000012b 3:4116126400000000 4:ffe1ccf385ebc8a0 5:c008000000000000 6:c0c1da0000000000 7:c126cfd800000000 +result - ; 0:4000000000000000 1:4014000000000000 2:4010000000000000 3:4014000000000000 4:4010000000000000 5:4014000000000000 6:4000000000000000 7:4014000000000000 8:4000000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid 1186522019120 15000 8 +series __name__=a,job=j1,zone=z2 ; 0:40adec0000000000 1:7e12ad13ecfb769e 3:40163851eb851eb8 4:f9d77d15cf193c48 5:40d8a56000000000 6:3fe05916872b020c 7:40cb328000000000 +series __name__=b,host=h2,job=j1,zone=z1 ; 0:c009e3d70a3d70a4 1:3fc56c8b43958106 2:bfd0020c49ba5e35 3:c0bc994000000000 5:4008000000000000 7:fe46382707b17a70 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:00000000000000fe 1:3f94bc6a7ef9db23 6:000000000003ea8c 7:3fe1e872b020c49c +series __name__=a,host=h2,job=j1 ; 2:c0184a3d70a3d70a 3:ffefffffffffffff 4:40f33b7000000000 5:c0ea8ce000000000 7:006db75ead80314a +result - ; 0:4008000000000000 1:4008000000000000 2:4000000000000000 3:4008000000000000 4:4000000000000000 5:4008000000000000 6:4000000000000000 7:4010000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid 1327672571311 1 3 +series __name__=b,zone=z1 ; 0:401a27ae147ae148 1:40d7b1a000000000 2:7878fce706d17b3c +series __name__=b,host=h2,job=j2,zone=z2 ; 0:0000000001c9d55f 1:40d478a000000000 +series __name__=a ; 0:fff0000000000000 2:f87959120c323c90 +series __name__=a,host=h1 ; 1:40d35c4000000000 2:bff0000000000000 +result - ; 0:4008000000000000 1:4008000000000000 2:4008000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid -29687008173 1 8 +series __name__=a,job=j1,zone=z1 ; 0:408bd50000000000 1:0000287555303992 7:4075d80000000000 +series __name__=a,host=h2 ; 0:ff53e78ebbe5e9b0 2:c000000000000000 4:40b05a4000000000 6:412ced4600000000 7:c0c2d86000000000 +series __name__=b,host=h2,job=j2,zone=z2 ; 0:7d7afa554a989e9e 1:c0e8862000000000 2:40ce078000000000 3:005d24f046dadae8 4:40acf70000000000 5:411ab1fc00000000 6:8000000000000001 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:0000000000000000 2:c0085c28f5c28f5c 4:3fe0b851eb851eb8 5:7ff8000000000001 6:c013cccccccccccd 7:bfe0000000000000 +series __name__=b,host=h1,job=j2,zone=z2 ; 0:7d44b13978d26eac 2:3facfdf3b645a1cb 4:c107f4d000000000 5:3fbcc49ba5e353f8 6:7fe1ccf385ebc8a0 7:c023933333333334 +result - ; 0:4014000000000000 1:4000000000000000 2:4010000000000000 3:3ff0000000000000 4:4010000000000000 5:4008000000000000 6:4010000000000000 7:4010000000000000 +end +case agg count none - +expr count({__name__=~"a|b"}) +grid -3372840102891 15000 7 +series __name__=b,zone=z1 ; 0:8000000000000001 1:c000000000000000 6:7fe1ccf385ebc8a0 +series __name__=a,job=j2 ; 0:c008ae147ae147ae 1:3fd64395810624dd 3:3fe5b020c49ba5e3 4:c01c000000000000 6:c045c33333333334 +result - ; 0:4000000000000000 1:4000000000000000 3:3ff0000000000000 4:3ff0000000000000 6:4000000000000000 +end +case agg count by - +expr count by () ({__name__=~"a|b"}) +grid 3932127051441 1000 3 +series __name__=b,job=j1,zone=z2 ; 1:bff0000000000000 2:fd9b67dc63d694d8 +result - ; 1:3ff0000000000000 2:3ff0000000000000 +end +case agg count by - +expr count by () ({__name__=~"a|b"}) +grid -2183610507001 1000 10 +series __name__=b,host=h1,job=j1,zone=z2 ; 2:3fe9820c49ba5e35 3:0000000000000000 4:4055cb3333333334 6:8000000000000000 8:40a8088000000000 +result - ; 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 8:3ff0000000000000 +end +case agg count by zone +expr count by (zone) ({__name__=~"a|b"}) +grid 2468504055209 60000 9 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:3fe0000000000000 1:c0358ccccccccccd 2:405259999999999a 3:3fe0000000000000 4:0000000022e8ecea 7:c12a69b800000000 8:0000000000000000 +result zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case agg count by - +expr count by () ({__name__=~"a|b"}) +grid 3025651072918 1000 6 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4128160400000000 1:bfcc978d4fdf3b65 2:0000000000000000 3:4020000000000000 4:c115762400000000 +series __name__=a,host=h1,job=j1 ; 0:c0efbd0000000000 1:3fd7dd2f1a9fbe77 3:409a630000000000 5:7ff8000000000001 +series __name__=b,host=h1,job=j2,zone=z1 ; 1:c129332c00000000 2:f852297ba08e56d0 3:bfdec49ba5e353f8 4:410e70f800000000 5:40f71d3000000000 +result - ; 0:4000000000000000 1:4008000000000000 2:4000000000000000 3:4008000000000000 4:4000000000000000 5:4000000000000000 +end +case agg count by __name__ +expr count by (__name__) ({__name__=~"a|b"}) +grid 3799302470847 1 7 +series __name__=a,zone=z2 ; 0:3ff5570a3d70a3d7 1:c123449e00000000 3:c0a6918000000000 4:c010f33333333333 5:bfc5fbe76c8b4396 6:c050780000000000 +series __name__=b,host=h2,zone=z1 ; 0:bfc2a3d70a3d70a4 2:c0043d70a3d70a3e 3:c341c37937e08000 4:7ff0000000000000 5:3fee5f3b645a1cac 6:c01c000000000000 +series __name__=a,job=j1 ; 1:3fd8d2f1a9fbe76d 2:fff0000000000000 3:40f02d6800000000 4:3ff7800000000000 5:8000b5d477fab2ff +result __name__=a ; 0:3ff0000000000000 1:4000000000000000 2:3ff0000000000000 3:4000000000000000 4:4000000000000000 5:4000000000000000 6:3ff0000000000000 +result __name__=b ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case agg count by - +expr count by () ({__name__=~"a|b"}) +grid -3786328086221 15000 10 +series __name__=a,host=h2 ; 0:f9eb9a5f77c158cc 1:40233147ae147ae1 2:0000000000000001 4:c01019999999999a 6:4036133333333334 7:3fef5c28f5c28f5c 9:bfe2e147ae147ae1 +series __name__=b,host=h2,job=j1 ; 0:c07b1c0000000000 1:c341c37937e08000 3:bfef15810624dd2f 4:4022966666666667 7:bfe0000000000000 9:800000000000000f +series __name__=b,job=j2 ; 0:c014a00000000000 1:0000000005b134c2 2:bfe8083126e978d5 5:8000000000000000 6:c071720000000000 7:000fffffffffffff 8:c00c000000000000 +result - ; 0:4008000000000000 1:4008000000000000 2:4000000000000000 3:3ff0000000000000 4:4000000000000000 5:3ff0000000000000 6:4000000000000000 7:4008000000000000 8:3ff0000000000000 9:4000000000000000 +end +case agg count by job +expr count by (job) ({__name__=~"a|b"}) +grid -2868160833652 15000 5 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:40f55d8800000000 1:fcd3ad6ca681d5d4 2:00000068137a2d73 4:401248f5c28f5c29 +series __name__=a,host=h2,job=j1 ; 0:4018000000000000 1:c0b318c000000000 3:ffa0c3c92b85aaba 4:401c000000000000 +series __name__=b,host=h2 ; 0:3ff0000000000000 1:c005cccccccccccd 3:c0f2b12800000000 4:40435b3333333334 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:40a40a0000000000 3:ffefffffffffffff +series __name__=a,host=h2,job=j2,zone=z1 ; 1:f857dc70c9c9f8ac 2:c014000000000000 3:40ed16e000000000 4:bfdc16872b020c4a +result - ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 +result job=j1 ; 0:4000000000000000 1:3ff0000000000000 3:4000000000000000 4:3ff0000000000000 +result job=j2 ; 0:3ff0000000000000 1:4000000000000000 2:4000000000000000 3:3ff0000000000000 4:4000000000000000 +end +case agg count by - +expr count by () ({__name__=~"a|b"}) +grid -1870740583519 15000 6 +series __name__=b,host=h1 ; 0:40f328b000000000 1:c041366666666667 3:ffe1ccf385ebc8a0 5:c0d3df8000000000 +series __name__=a,host=h1 ; 1:c0b6800000000000 2:3fbad0e560418937 3:bfe0000000000000 4:4022466666666667 5:402e19999999999a +result - ; 0:3ff0000000000000 1:4000000000000000 2:3ff0000000000000 3:4000000000000000 4:3ff0000000000000 5:4000000000000000 +end +case agg count without zone +expr count without (zone) ({__name__=~"a|b"}) +grid -2198141294115 1000 4 +series __name__=b,job=j1,zone=z1 ; 0:c01c000000000000 1:40d6d3c000000000 2:4000000000000000 3:40db0d0000000000 +series __name__=a,zone=z2 ; 0:80000011a59c8cf6 2:bfe0000000000000 3:4000000000000000 +series __name__=b,host=h1 ; 0:bfec9fbe76c8b43a 2:c082330000000000 3:409c8e0000000000 +series __name__=b,host=h2,job=j2 ; 1:c10fff6800000000 2:3ff0000000000000 +series __name__=a,job=j2,zone=z1 ; 2:c0b1300000000000 +result - ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result host=h1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result host=h2,job=j2 ; 1:3ff0000000000000 2:3ff0000000000000 +result job=j1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result job=j2 ; 2:3ff0000000000000 +end +case agg count without zone +expr count without (zone) ({__name__=~"a|b"}) +grid 3298192913675 1 6 +series __name__=a,zone=z2 ; 0:ffe1ccf385ebc8a0 1:fed3df1f5af0edbc 2:40715c0000000000 5:c05380cccccccccd +series __name__=b,host=h1,job=j1 ; 0:7989a8eac03a9764 2:c081e60000000000 3:bfe783126e978d50 4:bfe0000000000000 5:c341c37937e08000 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:80000000ecabf51c 1:c089380000000000 2:c09e140000000000 3:4010000000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 5:3ff0000000000000 +result host=h1,job=j1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result host=h1,job=j2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +end +case agg count without - +expr count without () ({__name__=~"a|b"}) +grid 1305431900671 60000 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:40e09a0000000000 2:8000000000000001 3:7f39bcefa9e15ff8 4:7ff8000000000001 5:c009c28f5c28f5c3 6:c01c000000000000 7:7fbbab3c3e3a3f28 8:40aec30000000000 +result host=h2,job=j1,zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case agg count without job +expr count without (job) ({__name__=~"a|b"}) +grid 1643821623354 15000 7 +series __name__=a,host=h2,job=j1 ; 0:40f7bb0000000000 1:c035766666666667 3:3fe0000000000000 4:7e9da8fd80f36eb4 5:4021cc28f5c28f5c 6:0000000000000000 +series __name__=b,host=h1,job=j2 ; 0:fb71a41308386d4c 1:4056473333333334 4:800000000000e983 5:80000022c0c7afd8 6:c018000000000000 +series __name__=b,host=h2,zone=z1 ; 0:fff0000000000000 2:c07d800000000000 4:8000000000093d50 6:3fd93d70a3d70a3e +series __name__=a,host=h1,job=j1 ; 0:4000000000000000 2:4128855800000000 3:bfef8e5604189375 4:c1278a5e00000000 6:bfef6a7ef9db22d1 +series __name__=b,job=j2,zone=z1 ; 0:fce0b35eaee7b928 2:fd94ebe2ec6d6200 3:40f612c800000000 4:8000000000000add 5:c056140000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c06ea80000000000 1:40cd5ec000000000 2:c0e9df7000000000 3:fa2eb9adcf80d45c 4:f9202260d636475c 6:40c0bee000000000 +result host=h1 ; 0:4000000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:4000000000000000 5:3ff0000000000000 6:4000000000000000 +result host=h1,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 +result host=h2 ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +result host=h2,zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 +result zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case agg count without - +expr count without () ({__name__=~"a|b"}) +grid -3701516023218 15000 7 +series __name__=b,job=j2,zone=z1 ; 2:c012ef5c28f5c28f 5:8000000000000001 +result job=j2,zone=z1 ; 2:3ff0000000000000 5:3ff0000000000000 +end +case agg count without - +expr count without () ({__name__=~"a|b"}) +grid 1237408713588 1000 4 +series __name__=a,host=h1 ; 0:c0e016c000000000 1:bfeafae147ae147b 2:0000157880e08339 3:4039600000000000 +series __name__=a,job=j2,zone=z1 ; 0:bfe7a7ef9db22d0e 2:3ff0000000000000 3:3fe0000000000000 +series __name__=a,job=j2,zone=z2 ; 2:3fcecccccccccccd 3:79157637bd947a20 +result host=h1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result job=j2,zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result job=j2,zone=z2 ; 2:3ff0000000000000 3:3ff0000000000000 +end +case agg count without zone +expr count without (zone) ({__name__=~"a|b"}) +grid 2559299484804 1000 10 +series __name__=a,host=h1,zone=z1 ; 1:c01c000000000000 2:40b8bc8000000000 3:4008000000000000 4:c125faf400000000 5:c05379999999999a 6:f8f28fb91ae5269a 9:c018d9999999999a +result host=h1 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 9:3ff0000000000000 +end +case agg count without host +expr count without (host) ({__name__=~"a|b"}) +grid 256372009869 1 10 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:c06ef40000000000 1:c0550d999999999a 2:c024000000000000 3:c0f085b000000000 4:c04434cccccccccd 5:c01c000000000000 6:c0f1c85800000000 7:c0ef270000000000 8:c010000000000000 +series __name__=a,job=j2,zone=z1 ; 1:807d0e31e9a6424a 2:7fefffffffffffff 4:fc2c967d0bb639e4 5:c071480000000000 6:800001bfba960227 7:4000000000000000 9:bfdd8f5c28f5c290 +series __name__=a ; 1:401c000000000000 2:00000171762f7924 3:800040852768bf7f 5:c0b6df0000000000 6:40b8bc8000000000 7:bfe0000000000000 8:bfe0000000000000 9:4064ec0000000000 +result - ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +result job=j2,zone=z1 ; 1:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 9:3ff0000000000000 +result job=j2,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 70472641653 15000 8 +series __name__=a,job=j2,zone=z1 ; 0:7fefffffffffffff 1:7fefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff 6:ffefffffffffffff 7:3ff0000000000000 +result - ; 0:7fefffffffffffff 1:7fefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff 6:ffefffffffffffff 7:3ff0000000000000 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 1518653907328 1 9 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:7ff8000000000001 1:40b6db4000000000 2:c01659999999999a 3:fff0000000000000 4:000000000193305b 5:7b8b105951e86666 6:f9e8209d93cc9214 8:c068200000000000 +series __name__=b,host=h1,zone=z1 ; 0:4056b40000000000 1:41276c1800000000 3:7bddfd57a6fa8930 4:4341c37937e08000 5:c00d6b851eb851ec 6:7ae4f3bc21bfdfc0 7:7efd2a677cf325b6 8:c01f428f5c28f5c3 +series __name__=a,host=h2,zone=z1 ; 1:4051dd999999999a 2:0000046ef1d93c8a 4:c116107000000000 5:41132e2800000000 7:c015133333333333 8:4341c37937e08000 +result - ; 0:7ff8000000000001 1:410f787c91111111 2:c00659999999999a 3:fff0000000000000 4:4327af4c4a7cfd43 5:7b720ae6369aeeef 6:7ad4f3a401224bf3 7:7eed2a677cf325b6 8:4327af4c4a80aa24 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 1407270205530 1 7 +series __name__=a,host=h1,zone=z2 ; 0:3ff0000000000000 1:bfe59cac083126ea 2:4057566666666667 3:bfd0e147ae147ae1 +series __name__=b,job=j1,zone=z1 ; 0:c0b8e84000000000 1:4010000000000000 4:3fc16c8b43958106 5:c01f1ae147ae147b 6:c000000000000000 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:7e2747dc4a9e2b88 1:003b04a82284435c 2:4087700000000000 3:3fe44bc6a7ef9db2 4:8000000000000033 5:4099870000000000 6:3fd2ba5e353f7cee +series __name__=a,host=h1,job=j2,zone=z2 ; 0:c001c00000000000 1:c014000000000000 2:40feea1000000000 3:c341c37937e08000 4:4008000000000000 5:40c29ee000000000 +series __name__=b,job=j1,zone=z2 ; 1:bfc676c8b4395811 2:bfdced916872b021 3:c0f7476000000000 4:0000000000000000 6:bfeee76c8b439581 +series __name__=b,host=h1 ; 1:4024000000000000 4:00000000636440d9 5:fa302378c30233f0 +result - ; 0:7e0747dc4a9e2b88 1:3ff5bb22d0e56041 2:40df1ebe5e353f7d 3:c321c37937e13a3b 4:3fe4123a29c779a6 5:fa102378c30233f0 6:bfec8369d0369d04 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid -1436783536548 15000 7 +series __name__=b,host=h2,job=j1 ; 0:000000006d235a2c 1:c006266666666667 2:40f2086800000000 3:bfe0000000000000 5:bfe83d70a3d70a3e 6:40c304c000000000 +series __name__=b,host=h1,zone=z1 ; 0:c341c37937e08000 1:404511999999999a 2:4086be0000000000 3:c01c000000000000 4:4026c00000000000 5:4126d1cc00000000 6:4018000000000000 +series __name__=a,job=j1 ; 0:80021c07e9ea105c 1:3fe0000000000000 2:bfea51eb851eb852 3:40f73ba800000000 5:4022000000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:bff0000000000000 3:bfecb95810624dd3 4:80000000000001f0 5:0000000000000064 6:c002851eb851eb85 +series __name__=b,job=j2 ; 1:3ffa851eb851eb85 2:c0b9514000000000 4:ffe1ccf385ebc8a0 5:000fac4aa255ec80 6:0000000000000068 +result - ; 0:c321c37937e08000 1:4024c35c28f5c290 2:40d0a0c2d70a3d71 3:40d73b21a353f7cf 4:ffc7bbef5d3a60d5 5:4102417d3020c49c 6:40a30697ae147ae1 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 3834563205582 1000 9 +series __name__=a,host=h1,zone=z1 ; 0:7c264c4eea5de758 1:40ef306000000000 2:3fe04395810624dd 3:8000e625dc20cf0d 5:401215c28f5c28f6 6:bfe845a1cac08313 8:402347ae147ae148 +result - ; 0:7c264c4eea5de758 1:40ef306000000000 2:3fe04395810624dd 3:8000e625dc20cf0d 5:401215c28f5c28f6 6:bfe845a1cac08313 8:402347ae147ae148 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 2039805163959 60000 9 +series __name__=a,host=h1 ; 0:fbfee8a8a910d734 1:7fefffffffffffff 2:fc2ea34c8bcbbfb6 3:40f8fe7000000000 4:4341c37937e08000 5:3fe0000000000000 6:4090040000000000 7:4024000000000000 8:3ff0000000000000 +series __name__=b,job=j1,zone=z1 ; 0:f81481a1e5e852c0 2:bfe516872b020c4a 3:8000000000000001 4:c006eb851eb851ec 5:c0f83be800000000 6:40f57c0000000000 7:bfb3126e978d4fdf 8:c0e9f3c000000000 +series __name__=b,host=h2 ; 0:7ff0000000000000 1:4040e80000000000 3:4000000000000000 4:4072340000000000 5:7f3894e283798980 7:c020000000000000 8:c0e892a000000000 +series __name__=b,host=h1,job=j1 ; 1:c0b7200000000000 5:c0c2d04000000000 6:3fdbb020c49ba5e3 7:0000000002587280 8:4041333333333333 +result - ; 0:7ff0000000000000 1:7fd5555555555555 2:fc1ea34c8bcbbfb6 3:40e0a9b555555555 4:4327af4c4a80ab6b 5:7f1894e283798980 6:40dcfac93ab596df 7:3fdeced916872b02 8:c0d940f99999999a +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid 1221521858288 15000 6 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0ed45c000000000 1:412e21de00000000 2:40c1c88000000000 3:c055ea6666666667 4:ff0a78dd9a892520 5:000005277c0e89be +series __name__=b,host=h2,job=j1,zone=z2 ; 0:0000000000000000 3:ffd9a97231aba486 4:c0e9f23000000000 +series __name__=b,host=h1,job=j1 ; 0:000000000000396f 1:c010000000000000 2:c0d94e2000000000 3:40f77a2800000000 4:4008000000000000 +series __name__=b ; 0:8000000000000000 1:f83e91e5e760a378 2:40b01a8000000000 3:40e7fca000000000 4:c0ae820000000000 5:3fee10624dd2f1aa +series __name__=a,zone=z2 ; 1:ffefffffffffffff 3:c016c00000000000 4:4030333333333333 5:800000000002de9b +result - ; 0:c0cd45c000000000 1:ffcfffffffffffff 2:c0b0845555555555 3:ffb4878e8e22ea05 4:fee52d7e153a841a 5:3fd40aec33e1f671 +end +case agg avg none - +expr avg({__name__=~"a|b"}) +grid -521520277553 1 9 +series __name__=b,host=h1,job=j2 ; 0:4008000000000000 1:00001d4b0c3a6488 2:bfe0000000000000 3:411a34fc00000000 6:bfe884189374bc6b 7:4000000000000000 8:800000000d60a72c +series __name__=a,host=h2,job=j1,zone=z2 ; 0:fc8bde04b826b438 1:c01b200000000000 3:404a9ccccccccccd 6:c0c2340000000000 7:c0ed88f000000000 8:3feeb126e978d4fe +series __name__=b,zone=z2 ; 0:000fffffffffffff 1:7b5b2908b852a170 2:4076e40000000000 4:c010000000000000 5:c123b4ec00000000 6:40f347f000000000 8:00000000001242b2 +series __name__=a,job=j2,zone=z2 ; 0:401b3eb851eb851f 1:404f533333333334 3:40aa1d0000000000 4:7e7a26c93a08eda8 6:403c033333333334 7:c057400000000000 8:c127b07400000000 +series __name__=b,host=h1,job=j1 ; 0:40f2f90800000000 1:800000d8d7baaf56 2:4000000000000000 3:4052df3333333333 4:3fdec49ba5e353f8 5:408c3d0000000000 6:7fbff0fd5c3e7558 7:00000195673cc60b 8:4051d80000000000 +result - ; 0:fc664b36f9b8902d 1:7b35ba6d60421ac0 2:405ea55555555555 3:40fa6b38d999999a 4:7e616f30d15b491b 5:c113addcc0000000 6:7f998d977cfec446 7:c0cd945000000000 8:c102f31c43f14120 +end +case agg avg by __name__,zone +expr avg by (__name__,zone) ({__name__=~"a|b"}) +grid 2992134442507 1000 5 +series __name__=b,host=h2,zone=z1 ; 1:7fefffffffffffff 2:ffefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff +result __name__=b,zone=z1 ; 1:7fefffffffffffff 2:ffefffffffffffff 3:3ff0000000000000 4:7fefffffffffffff +end +case agg avg by host +expr avg by (host) ({__name__=~"a|b"}) +grid 1132568263482 1000 3 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:fff0000000000000 2:40755a0000000000 +series __name__=a,zone=z2 ; 0:412e00aa00000000 1:c0f5f83800000000 2:8000212532911e09 +result - ; 0:412e00aa00000000 1:c0f5f83800000000 2:8000212532911e09 +result host=h2 ; 0:fff0000000000000 2:40755a0000000000 +end +case agg avg by - +expr avg by () ({__name__=~"a|b"}) +grid 1292076301016 1 7 +series __name__=a,host=h2 ; 0:40b71d8000000000 1:40ebe4a000000000 2:c087ee0000000000 3:4000000000000000 4:40d34fc000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:7fefffffffffffff 1:c000000000000000 2:4076c80000000000 3:0000000000000000 4:0000000000000001 6:4008000000000000 +result - ; 0:7fdfffffffffffff 1:40dbe46000000000 2:c069140000000000 3:3ff0000000000000 4:40c34fc000000000 6:4008000000000000 +end +case agg avg by __name__,zone +expr avg by (__name__,zone) ({__name__=~"a|b"}) +grid 2335920279816 1000 6 +series __name__=a,host=h1,job=j1 ; 0:40f117c800000000 1:fa9402dc302445c8 3:8001b0194b450530 4:40c1ad0000000000 5:40884f0000000000 +series __name__=a,host=h2 ; 0:8000007a95913b09 1:4341c37937e08000 2:c01c000000000000 3:7afe3781cc51f0a0 4:bfe6978d4fdf3b64 5:41097f5800000000 +series __name__=b,zone=z1 ; 0:3fe0000000000000 1:7bb77284fc553a6c 2:c01c000000000000 4:801841c09e8c9934 +result __name__=a ; 0:40e117c800000000 1:fa8402dc302445c8 2:c01c000000000000 3:7aee3781cc51f0a0 4:40b1aca5a1cac083 5:40f997a700000000 +result __name__=b,zone=z1 ; 0:3fe0000000000000 1:7bb77284fc553a6c 2:c01c000000000000 4:801841c09e8c9934 +end +case agg avg by host,job +expr avg by (host,job) ({__name__=~"a|b"}) +grid -2939877879858 1000 7 +series __name__=a,host=h2,job=j1 ; 0:c0ac688000000000 2:bfee624dd2f1a9fc 3:400b0f5c28f5c290 4:401c000000000000 6:bfe3083126e978d5 +series __name__=a,job=j1,zone=z1 ; 1:c341c37937e08000 2:c020000000000000 3:c341c37937e08000 4:40ba6bc000000000 5:4008000000000000 6:c053a26666666667 +result host=h2,job=j1 ; 0:c0ac688000000000 2:bfee624dd2f1a9fc 3:400b0f5c28f5c290 4:401c000000000000 6:bfe3083126e978d5 +result job=j1 ; 1:c341c37937e08000 2:c020000000000000 3:c341c37937e08000 4:40ba6bc000000000 5:4008000000000000 6:c053a26666666667 +end +case agg avg by zone +expr avg by (zone) ({__name__=~"a|b"}) +grid -2847737577065 1000 6 +series __name__=b,host=h1,zone=z1 ; 0:40b52d4000000000 1:800008ca5db31f53 2:00000000000b1586 3:3fe4926e978d4fdf 4:412af36a00000000 5:8001203d64e6b10a +series __name__=a,host=h1 ; 0:fad61c3309f4bd50 1:ffefffffffffffff 2:3ff0000000000000 3:4041400000000000 4:c00f800000000000 5:bfdde147ae147ae1 +series __name__=b,job=j2,zone=z1 ; 0:0000000000000001 1:c05d700000000000 2:c05bb80000000000 3:4012a28f5c28f5c3 4:800000c63184cedc +series __name__=b,host=h2,job=j2,zone=z1 ; 0:bfe39fbe76c8b439 1:c01c000000000000 2:c024000000000000 3:0000000000000001 4:7f7b37acb8a68b2a +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0450b3333333334 1:c020feb851eb851f 3:0000000000000001 5:3fe1d4fdf3b645a2 +series __name__=b,job=j1,zone=z1 ; 1:3fefad0e56041894 2:000000000000acf6 3:bfe5cfdf3b645a1d 5:4089010000000000 +result - ; 0:fad61c3309f4bd50 1:ffefffffffffffff 2:3ff0000000000000 3:4041400000000000 4:c00f800000000000 5:bfdde147ae147ae1 +result zone=z1 ; 0:4095028c9ba5e354 1:c03a73972474538f 2:c03e380000000000 3:3fed916872b020c5 4:7f62251dd06f0771 5:4070ae4e2a53490b +end +case agg avg by __name__,zone +expr avg by (__name__,zone) ({__name__=~"a|b"}) +grid -2457226594210 15000 3 +series __name__=b,host=h2,job=j1 ; 0:fff0000000000000 2:7fefffffffffffff +series __name__=a,host=h2,zone=z2 ; 0:ffefffffffffffff 1:c092110000000000 2:c028b33333333334 +series __name__=b,host=h2,zone=z1 ; 0:7fe1ccf385ebc8a0 1:78779ace9d122d02 2:3ff0000000000000 +series __name__=a ; 0:4341c37937e08000 1:402f466666666667 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:7bfb1e79b7c09c90 1:bff0000000000000 2:bff251eb851eb852 +series __name__=b,host=h2,zone=z2 ; 1:ffe1ccf385ebc8a0 2:4022000000000000 +result __name__=a ; 0:4341c37937e08000 1:402f466666666667 +result __name__=a,zone=z2 ; 0:ffefffffffffffff 1:c092110000000000 2:c028b33333333334 +result __name__=b ; 0:fff0000000000000 2:7fefffffffffffff +result __name__=b,zone=z1 ; 0:7fe1ccf385ebc8a0 1:78779ace9d122d02 2:3ff0000000000000 +result __name__=b,zone=z2 ; 0:7bfb1e79b7c09c90 1:ffd1ccf385ebc8a0 2:400f6b851eb851ec +end +case agg avg by - +expr avg by () ({__name__=~"a|b"}) +grid -1839262841085 1 7 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:0000000000000001 3:4000851eb851eb85 5:7fefffffffffffff 6:c014ee147ae147ae +series __name__=a,host=h1 ; 1:7fe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 4:c0f347f000000000 5:000000310b624cf6 6:4008000000000000 +result - ; 0:0000000000000001 1:7fe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 3:4000851eb851eb85 4:c0f347f000000000 5:7fdfffffffffffff 6:bff1dc28f5c28f5c +end +case agg avg without __name__,host +expr avg without (__name__,host) ({__name__=~"a|b"}) +grid 2679744018010 1000 9 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:7fe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:7fe1ccf385ebc8a0 7:ffe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +series __name__=a,job=j2,zone=z2 ; 0:7fe1ccf385ebc8a0 1:ffe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 6:7fe1ccf385ebc8a0 7:7fe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:ffe1ccf385ebc8a0 1:7fe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 6:7fe1ccf385ebc8a0 7:7fe1ccf385ebc8a0 8:ffe1ccf385ebc8a0 +series __name__=a,job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:7fe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 6:7fe1ccf385ebc8a0 7:ffe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +series __name__=b,host=h2,job=j2,zone=z2 ; 0:7fe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 6:ffe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +series __name__=b,host=h1,job=j1 ; 2:ffe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 5:7fe1ccf385ebc8a0 7:7fe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +result job=j1 ; 2:ffe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 5:7fe1ccf385ebc8a0 7:7fe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +result job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:7fe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:7fe1ccf385ebc8a0 6:7fe1ccf385ebc8a0 7:ffe1ccf385ebc8a0 8:7fe1ccf385ebc8a0 +result job=j2,zone=z2 ; 0:7fc7bbef5d3a60d5 1:0000000000000000 2:7fe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:7fe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 6:7fc7bbef5d3a60d5 7:7fe1ccf385ebc8a0 8:7fc7bbef5d3a60d5 +end +case agg avg without - +expr avg without () ({__name__=~"a|b"}) +grid -2633334957645 1 10 +series __name__=a,job=j1,zone=z1 ; 0:800003a2e60404e1 2:c10ede5800000000 3:3ff0000000000000 4:7ff0000000000000 5:bfb8000000000000 6:4113b4ec00000000 7:bff0000000000000 8:bfe2395810624dd3 9:c010000000000000 +series __name__=b,host=h2,job=j1 ; 0:fd0f13eac12eb36c 3:40b647c000000000 4:4092de0000000000 5:c010000000000000 6:c002028f5c28f5c3 7:4000000000000000 +result host=h2,job=j1 ; 0:fd0f13eac12eb36c 3:40b647c000000000 4:4092de0000000000 5:c010000000000000 6:c002028f5c28f5c3 7:4000000000000000 +result job=j1,zone=z1 ; 0:800003a2e60404e1 2:c10ede5800000000 3:3ff0000000000000 4:7ff0000000000000 5:bfb8000000000000 6:4113b4ec00000000 7:bff0000000000000 8:bfe2395810624dd3 9:c010000000000000 +end +case agg avg without job +expr avg without (job) ({__name__=~"a|b"}) +grid 3079098614698 15000 4 +series __name__=a,host=h1,job=j2 ; 0:4000000000000000 1:4079760000000000 2:c0f3acb800000000 3:c010000000000000 +result host=h1 ; 0:4000000000000000 1:4079760000000000 2:c0f3acb800000000 3:c010000000000000 +end +case agg avg without __name__ +expr avg without (__name__) ({__name__=~"a|b"}) +grid -407811588031 1 7 +series __name__=b,job=j2 ; 0:7fe1ccf385ebc8a0 1:c058a9999999999a 3:c000000000000000 4:fff0000000000000 5:7c195b9df33d736c +series __name__=b,host=h2,zone=z2 ; 0:798da7958783386e 1:0000000000000000 2:c0beed8000000000 3:c0c19d6000000000 4:40ae9b0000000000 5:4008000000000000 6:000001da917e2a5f +series __name__=b,job=j1,zone=z1 ; 1:fe829c6487be4d58 3:0000000000000000 4:40e52de000000000 5:c12c85c200000000 6:0000000000000002 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:40bfcac000000000 2:40b4014000000000 3:bfe0000000000000 4:8000008e735a92e8 5:bfe0000000000000 6:c0e680f000000000 +result host=h2,job=j2,zone=z2 ; 1:40bfcac000000000 2:40b4014000000000 3:bfe0000000000000 4:8000008e735a92e8 5:bfe0000000000000 6:c0e680f000000000 +result host=h2,zone=z2 ; 0:798da7958783386e 1:0000000000000000 2:c0beed8000000000 3:c0c19d6000000000 4:40ae9b0000000000 5:4008000000000000 6:000001da917e2a5f +result job=j1,zone=z1 ; 1:fe829c6487be4d58 3:0000000000000000 4:40e52de000000000 5:c12c85c200000000 6:0000000000000002 +result job=j2 ; 0:7fe1ccf385ebc8a0 1:c058a9999999999a 3:c000000000000000 4:fff0000000000000 5:7c195b9df33d736c +end +case agg avg without __name__,host +expr avg without (__name__,host) ({__name__=~"a|b"}) +grid 2939748333577 15000 4 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:403e133333333334 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:400c0f5c28f5c290 1:7fefffffffffffff 2:40b29bc000000000 3:4008000000000000 +series __name__=b,host=h1,job=j1 ; 0:c0b50a4000000000 2:c05231999999999a +result job=j1 ; 0:c0b50a4000000000 2:c05231999999999a +result job=j2,zone=z1 ; 0:400c0f5c28f5c290 1:7fefffffffffffff 2:40b29bc000000000 3:4008000000000000 +result job=j2,zone=z2 ; 0:403e133333333334 +end +case agg avg without __name__,zone +expr avg without (__name__,zone) ({__name__=~"a|b"}) +grid -2909718044332 1 6 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c071400000000000 2:c0ba658000000000 4:404e833333333334 +result host=h1,job=j1 ; 0:c071400000000000 2:c0ba658000000000 4:404e833333333334 +end +case agg avg without __name__,host +expr avg without (__name__,host) ({__name__=~"a|b"}) +grid 3043763107764 1 4 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:c12d6a4600000000 2:c010000000000000 3:7fe1ccf385ebc8a0 +series __name__=b,host=h1,zone=z1 ; 0:fdcca1d85f6b19d4 1:7fbea34444a20ac8 2:bfe0000000000000 3:c0ab878000000000 +result job=j2,zone=z1 ; 0:c12d6a4600000000 2:c010000000000000 3:7fe1ccf385ebc8a0 +result zone=z1 ; 0:fdcca1d85f6b19d4 1:7fbea34444a20ac8 2:bfe0000000000000 3:c0ab878000000000 +end +case agg avg without __name__,host +expr avg without (__name__,host) ({__name__=~"a|b"}) +grid 2163316261348 1000 7 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:80000000000110c3 2:c12da4de00000000 4:c018000000000000 5:3ff0000000000000 +result job=j1,zone=z2 ; 0:80000000000110c3 2:c12da4de00000000 4:c018000000000000 5:3ff0000000000000 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -3072506315904 15000 9 +series __name__=b,job=j1,zone=z1 ; 0:8073cae3546c5b60 1:4022000000000000 3:007ed14fa89fa612 5:4008000000000000 6:40c0b4e000000000 7:f91116f2b94aefb0 8:3fed3e76c8b43958 +series __name__=a,host=h1 ; 0:c0bc674000000000 1:c120942400000000 2:7e1c3c812a012e40 3:8000000000000001 4:4024000000000000 5:bfcfef9db22d0e56 7:c01c000000000000 8:c063a00000000000 +series __name__=a,zone=z2 ; 0:40be6a4000000000 1:c0f053b000000000 6:c088180000000000 7:c341c37937e08000 +series __name__=a,job=j2,zone=z1 ; 0:c079780000000000 1:c01a30a3d70a3d71 2:4070500000000000 3:0000000000000000 4:8000000000000001 5:8000000000000000 6:0000000000000001 8:00077bc060dcab9c +series __name__=a,host=h1,job=j2 ; 0:408bc30000000000 1:bfe6ef9db22d0e56 3:8000000000000001 4:8000054dae797e06 5:4000000000000000 7:4020eccccccccccd 8:80000054267e0320 +series __name__=a,host=h2,job=j2 ; 0:408e530000000000 1:c01763d70a3d70a4 2:c0a4ac8000000000 3:c0f28ec800000000 4:4007266666666667 5:4024000000000000 6:c12cbe6600000000 7:409c160000000000 +result - ; 0:c0bc674000000000 1:c120942400000000 2:c0a4ac8000000000 3:c0f28ec800000000 4:8000054dae797e06 5:bfcfef9db22d0e56 6:c12cbe6600000000 7:f91116f2b94aefb0 8:c063a00000000000 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -840712937453 1000 10 +series __name__=b,host=h1 ; 0:c01ffc28f5c28f5c 1:412d397200000000 2:c03f39999999999a 3:4048b00000000000 4:c020000000000000 6:ff1ba705df922530 8:c122313a00000000 9:ff3400781002d578 +series __name__=b,job=j1 ; 0:ff59811696d44856 1:0001a46fad5c310a 2:412a68be00000000 5:4014000000000000 6:f86157932bd7dc60 7:40f23a6800000000 8:c121d66800000000 +series __name__=a,host=h1,job=j2 ; 0:bfd3b645a1cac083 1:c05ef00000000000 3:4050f80000000000 4:7fe1ccf385ebc8a0 5:4341c37937e08000 6:8000000000000b42 7:7ff0000000000000 8:c05469999999999a 9:3fdcb851eb851eb8 +series __name__=b,host=h1,job=j2,zone=z2 ; 0:40545c0000000000 2:fa3d8d0be8771ff0 4:c0708a0000000000 5:fc421871c4f3cee4 7:bfe09fbe76c8b439 8:c0c25d4000000000 9:c01c2147ae147ae1 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:4024000000000000 1:c022000000000000 2:fc6f81bfad81f1dc 4:000000000b37a035 6:bfb77ced916872b0 8:800000006617cbf6 +result - ; 0:ff59811696d44856 1:c05ef00000000000 2:fc6f81bfad81f1dc 3:4048b00000000000 4:c0708a0000000000 5:fc421871c4f3cee4 6:ff1ba705df922530 7:bfe09fbe76c8b439 8:c122313a00000000 9:ff3400781002d578 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -3559133227688 1 5 +series __name__=a,host=h2,zone=z1 ; 0:40f5d5d800000000 1:c057580000000000 2:4124282800000000 3:c0343ccccccccccd 4:3f92f1a9fbe76c8b +series __name__=a,host=h2,job=j1,zone=z1 ; 0:0000000000000001 1:4008000000000000 2:4071160000000000 3:403bb66666666667 4:fb1faaf53f10b9b0 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:8000000000000001 1:411cbd6c00000000 2:4052873333333333 3:f8f40d4a08d4a846 4:3ff0000000000000 +series __name__=a,host=h1,zone=z2 ; 0:c01c000000000000 1:c0363ccccccccccd 2:4061700000000000 +series __name__=b,job=j2,zone=z1 ; 0:408b390000000000 1:4023166666666667 2:00000413408dc4a0 3:c020000000000000 +series __name__=b,host=h1,job=j1,zone=z2 ; 1:411631a400000000 2:bff0000000000000 4:4008000000000000 +result - ; 0:c01c000000000000 1:c057580000000000 2:bff0000000000000 3:f8f40d4a08d4a846 4:fb1faaf53f10b9b0 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid 545108741184 60000 3 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c118b62c00000000 2:7ef54876401bb67c +series __name__=b,job=j1 ; 0:bff0000000000000 1:40f6db9000000000 2:c081370000000000 +series __name__=b,host=h1,job=j1 ; 0:ffe1ccf385ebc8a0 1:7ff8000000000001 2:40103851eb851eb8 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:40c4050000000000 1:c01ff1eb851eb852 2:3fd46e978d4fdf3c +series __name__=b,host=h2,job=j2,zone=z1 ; 1:fa5f8bf92c5e0928 +series __name__=b,job=j2 ; 1:c03a7ccccccccccd 2:bfed15810624dd2f +result - ; 0:ffe1ccf385ebc8a0 1:fa5f8bf92c5e0928 2:c081370000000000 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -2220804245983 15000 9 +series __name__=b,host=h2,zone=z1 ; 0:c010000000000000 2:000000000709450b 3:bfbae978d4fdf3b6 4:0000000000000001 5:ffefffffffffffff 6:c020000000000000 7:3ff0000000000000 8:fb52da29c6f8fc46 +series __name__=b,host=h1,job=j2 ; 0:bfd23d70a3d70a3e 1:40f271e000000000 2:c081d80000000000 3:c0a2a70000000000 5:800000000017e38b 6:7fe1ccf385ebc8a0 7:c01c000000000000 8:4021366666666667 +series __name__=b,host=h2,job=j2 ; 1:401f6e147ae147ae 3:fff0000000000000 4:fa11f89732a3edb4 5:f8584552f568a188 6:c0003d70a3d70a3e 7:fa93e8b5757f3a5a 8:c341c37937e08000 +series __name__=a,host=h2,zone=z2 ; 1:7ff0000000000000 2:3fe0000000000000 3:4089540000000000 4:402319999999999a 6:c0c18f0000000000 7:c057700000000000 8:3feda8f5c28f5c29 +series __name__=a,host=h1,job=j1,zone=z1 ; 2:bfe45810624dd2f2 3:4011a66666666667 5:401e228f5c28f5c3 6:4069d40000000000 7:c010000000000000 +result - ; 0:c010000000000000 1:401f6e147ae147ae 2:c081d80000000000 3:fff0000000000000 4:fa11f89732a3edb4 5:ffefffffffffffff 6:c0c18f0000000000 7:fa93e8b5757f3a5a 8:fb52da29c6f8fc46 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -1686183360731 1000 10 +series __name__=a,job=j2,zone=z2 ; 1:40e0f18000000000 2:7f56af01bc87e3b8 3:c0b165c000000000 4:000fffffffffffff 5:c008000000000000 6:3ff0000000000000 7:3ff0000000000000 8:4013eccccccccccd 9:c008000000000000 +result - ; 1:40e0f18000000000 2:7f56af01bc87e3b8 3:c0b165c000000000 4:000fffffffffffff 5:c008000000000000 6:3ff0000000000000 7:3ff0000000000000 8:4013eccccccccccd 9:c008000000000000 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid -515457873975 1 9 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:8000000000000001 1:80000000000003b2 2:c006ab851eb851ec 3:80000000000012ed 4:ffefffffffffffff 5:bfe7c9ba5e353f7d 6:c0b0720000000000 7:c044cb3333333334 8:c08a6e0000000000 +series __name__=b,host=h1 ; 1:411a2b3800000000 2:c11cd8c400000000 3:40f62d5800000000 4:3fc44189374bc6a8 5:c071560000000000 6:40ee69f000000000 +result - ; 0:8000000000000001 1:80000000000003b2 2:c11cd8c400000000 3:80000000000012ed 4:ffefffffffffffff 5:c071560000000000 6:c0b0720000000000 7:c044cb3333333334 8:c08a6e0000000000 +end +case agg min none - +expr min({__name__=~"a|b"}) +grid 3846611061654 60000 9 +series __name__=b,host=h2,job=j1,zone=z1 ; 0:3fd83b645a1cac08 1:c04cdccccccccccd 3:fe4f5a5172efae88 4:c020000000000000 6:3f9fdf3b645a1cac 8:7f7e6c9e7a3da180 +series __name__=b,job=j1,zone=z2 ; 0:c055b4cccccccccd 1:c126cbf000000000 3:790c1e62d103b99a 4:7dd4ce86f2172f18 5:3fe0000000000000 6:8000000000000000 7:4016051eb851eb85 8:c0b33d0000000000 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:c0c3c04000000000 3:408da50000000000 5:7fe1ccf385ebc8a0 8:c045466666666667 +series __name__=b,host=h1,job=j1 ; 0:c01c000000000000 1:c008000000000000 3:bfe0000000000000 4:4000000000000000 5:403439999999999a 6:ffcc5b6b413d5900 7:40c1684000000000 +series __name__=b,zone=z2 ; 1:8000000000000000 3:40381ccccccccccd 4:40790e0000000000 5:8000000000000001 6:3fe0000000000000 8:c0c23a4000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 1:7b22b50e617a1bb4 2:fe9f3fd2ba7dc28e 3:4022000000000000 4:80000000000073c6 6:802505a72eb64954 7:c06f640000000000 +result - ; 0:c0c3c04000000000 1:c126cbf000000000 2:fe9f3fd2ba7dc28e 3:fe4f5a5172efae88 4:c020000000000000 5:8000000000000001 6:ffcc5b6b413d5900 7:c06f640000000000 8:c0c23a4000000000 +end +case agg min by host,zone +expr min by (host,zone) ({__name__=~"a|b"}) +grid 1615447684046 1000 4 +series __name__=a,job=j1 ; 0:800256ec7b36bced 1:000000003d211f0a 2:c0f04e3800000000 +series __name__=b,host=h1 ; 0:c1153b8c00000000 1:00000004037a89de 3:c0d737c000000000 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:401c000000000000 1:c054266666666667 2:80004c1379e9ed20 3:3fcc4dd2f1a9fbe8 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:3fcbd2f1a9fbe76d 1:4000000000000000 2:40033ae147ae147b 3:c01c000000000000 +series __name__=a ; 1:4056640000000000 2:8000000000007eba 3:c04e900000000000 +result - ; 0:800256ec7b36bced 1:000000003d211f0a 2:c0f04e3800000000 3:c04e900000000000 +result host=h1 ; 0:c1153b8c00000000 1:00000004037a89de 3:c0d737c000000000 +result host=h2,zone=z1 ; 0:401c000000000000 1:c054266666666667 2:80004c1379e9ed20 3:3fcc4dd2f1a9fbe8 +result host=h2,zone=z2 ; 0:3fcbd2f1a9fbe76d 1:4000000000000000 2:40033ae147ae147b 3:c01c000000000000 +end +case agg min by __name__,job +expr min by (__name__,job) ({__name__=~"a|b"}) +grid 3599024684326 1000 5 +series __name__=b,zone=z1 ; 1:c10f0d3800000000 2:0000000001565063 3:c0c2bba000000000 4:40537ccccccccccd +series __name__=a,host=h2 ; 1:3fc3a9fbe76c8b44 2:c0d05b8000000000 3:fed9340786c39860 4:c12abdb400000000 +result __name__=a ; 1:3fc3a9fbe76c8b44 2:c0d05b8000000000 3:fed9340786c39860 4:c12abdb400000000 +result __name__=b ; 1:c10f0d3800000000 2:0000000001565063 3:c0c2bba000000000 4:40537ccccccccccd +end +case agg min by __name__,zone +expr min by (__name__,zone) ({__name__=~"a|b"}) +grid 657750887391 1000 10 +series __name__=b,host=h1,job=j2 ; 0:7e7684d4f01d5a90 2:3fd251eb851eb852 3:c036133333333334 4:c341c37937e08000 5:000fffffffffffff 6:40c3164000000000 7:412316b800000000 9:7ee94e0d49806db2 +series __name__=b,job=j2,zone=z1 ; 0:40755e0000000000 2:40e4c53000000000 3:c086290000000000 5:7fefffffffffffff 7:8000000000000001 9:bfbb4395810624dd +series __name__=b,job=j2,zone=z2 ; 0:8000000000723e49 1:7ff8000000000001 2:40a94b0000000000 3:ff7eaf2757799018 4:401ff47ae147ae15 5:3fd620c49ba5e354 6:4003547ae147ae15 7:40f2aae800000000 8:41123bf800000000 9:3ff0000000000000 +series __name__=a,host=h2,zone=z1 ; 1:c08d560000000000 2:bfe0000000000000 3:4341c37937e08000 5:c0e4d98000000000 6:7fe1ccf385ebc8a0 7:4014000000000000 8:401a1eb851eb851f 9:8000000000000001 +result __name__=a,zone=z1 ; 1:c08d560000000000 2:bfe0000000000000 3:4341c37937e08000 5:c0e4d98000000000 6:7fe1ccf385ebc8a0 7:4014000000000000 8:401a1eb851eb851f 9:8000000000000001 +result __name__=b ; 0:7e7684d4f01d5a90 2:3fd251eb851eb852 3:c036133333333334 4:c341c37937e08000 5:000fffffffffffff 6:40c3164000000000 7:412316b800000000 9:7ee94e0d49806db2 +result __name__=b,zone=z1 ; 0:40755e0000000000 2:40e4c53000000000 3:c086290000000000 5:7fefffffffffffff 7:8000000000000001 9:bfbb4395810624dd +result __name__=b,zone=z2 ; 0:8000000000723e49 1:7ff8000000000001 2:40a94b0000000000 3:ff7eaf2757799018 4:401ff47ae147ae15 5:3fd620c49ba5e354 6:4003547ae147ae15 7:40f2aae800000000 8:41123bf800000000 9:3ff0000000000000 +end +case agg min by __name__,host,job +expr min by (__name__,host,job) ({__name__=~"a|b"}) +grid 2008823444837 1000 6 +series __name__=b,host=h2,job=j2,zone=z2 ; 0:7c6410ea74fbe060 1:0000000000000001 2:bfde0a3d70a3d70a 5:401c000000000000 +series __name__=b,host=h1,job=j2 ; 0:fb6e377112e00026 1:0000000000000001 2:fe2de9f85b23bace 3:7a35765ac0310b8c 4:405fd80000000000 5:40f5ae0000000000 +series __name__=b,host=h1,job=j2,zone=z2 ; 0:7ff0000000000000 1:bff0000000000000 2:40aa4f0000000000 4:c070de0000000000 5:404eb00000000000 +result __name__=b,host=h1,job=j2 ; 0:fb6e377112e00026 1:bff0000000000000 2:fe2de9f85b23bace 3:7a35765ac0310b8c 4:c070de0000000000 5:404eb00000000000 +result __name__=b,host=h2,job=j2 ; 0:7c6410ea74fbe060 1:0000000000000001 2:bfde0a3d70a3d70a 5:401c000000000000 +end +case agg min by __name__,job,zone +expr min by (__name__,job,zone) ({__name__=~"a|b"}) +grid -3216930295105 1 7 +series __name__=a,job=j2,zone=z2 ; 0:7d7dbac99e5734b4 1:7a3f130a701d195a 2:4004cccccccccccd 3:ffbaebf7e2a648b0 4:00000000000056fc 5:fdad5f880abed478 +result __name__=a,job=j2,zone=z2 ; 0:7d7dbac99e5734b4 1:7a3f130a701d195a 2:4004cccccccccccd 3:ffbaebf7e2a648b0 4:00000000000056fc 5:fdad5f880abed478 +end +case agg min by __name__,host,job +expr min by (__name__,host,job) ({__name__=~"a|b"}) +grid 834700728834 15000 5 +series __name__=b,host=h1 ; 1:7ff8000000000001 2:c0792c0000000000 3:00000000000003cb 4:40bf75c000000000 +result __name__=b,host=h1 ; 1:7ff8000000000001 2:c0792c0000000000 3:00000000000003cb 4:40bf75c000000000 +end +case agg min by __name__,job +expr min by (__name__,job) ({__name__=~"a|b"}) +grid -2272102860622 1000 3 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:80000000028d5c91 1:bfecf2b020c49ba6 2:c01c000000000000 +result __name__=a,job=j1 ; 0:80000000028d5c91 1:bfecf2b020c49ba6 2:c01c000000000000 +end +case agg min by __name__,zone +expr min by (__name__,zone) ({__name__=~"a|b"}) +grid 1303975643628 15000 7 +series __name__=b,host=h1,job=j2 ; 0:c08aa40000000000 1:40c51e4000000000 3:f8f5676cbbbab91c 5:3fe204189374bc6b 6:000fffffffffffff +series __name__=b,host=h1 ; 1:7fefffffffffffff 2:40150b851eb851ec 3:c341c37937e08000 4:40bb134000000000 +result __name__=b ; 0:c08aa40000000000 1:40c51e4000000000 2:40150b851eb851ec 3:f8f5676cbbbab91c 4:40bb134000000000 5:3fe204189374bc6b 6:000fffffffffffff +end +case agg min without - +expr min without () ({__name__=~"a|b"}) +grid 3138054828202 1 4 +series __name__=b,host=h2,zone=z1 ; 0:3fe0000000000000 1:7c7119b1fe2c1048 2:c0f4325000000000 3:40551a6666666667 +series __name__=b,host=h1 ; 0:f9f82148c2b84d80 1:4098ce0000000000 2:c077f00000000000 3:c0f7719000000000 +series __name__=a,host=h1,job=j2 ; 0:c0a89e8000000000 1:401af851eb851eb8 2:c014000000000000 +series __name__=a,job=j2 ; 1:80005e81f97062ce 2:c0f64ef000000000 3:4000000000000000 +result host=h1 ; 0:f9f82148c2b84d80 1:4098ce0000000000 2:c077f00000000000 3:c0f7719000000000 +result host=h1,job=j2 ; 0:c0a89e8000000000 1:401af851eb851eb8 2:c014000000000000 +result host=h2,zone=z1 ; 0:3fe0000000000000 1:7c7119b1fe2c1048 2:c0f4325000000000 3:40551a6666666667 +result job=j2 ; 1:80005e81f97062ce 2:c0f64ef000000000 3:4000000000000000 +end +case agg min without zone +expr min without (zone) ({__name__=~"a|b"}) +grid 2112113932866 1000 8 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:f8cf2f101ade1370 1:8000000000000001 2:3ff0000000000000 3:bff0000000000000 4:8000015f6bda71a6 6:c122640200000000 7:c0d174c000000000 +series __name__=b,host=h2,zone=z1 ; 1:c11b32e400000000 2:408f220000000000 3:401e3851eb851eb8 4:c1225f2000000000 5:c020547ae147ae15 +series __name__=a,job=j1 ; 2:c087540000000000 3:000000000000a3c2 4:0000000000003d6e 6:40e5950000000000 7:3fcf22d0e5604189 +result host=h2 ; 1:c11b32e400000000 2:408f220000000000 3:401e3851eb851eb8 4:c1225f2000000000 5:c020547ae147ae15 +result host=h2,job=j1 ; 0:f8cf2f101ade1370 1:8000000000000001 2:3ff0000000000000 3:bff0000000000000 4:8000015f6bda71a6 6:c122640200000000 7:c0d174c000000000 +result job=j1 ; 2:c087540000000000 3:000000000000a3c2 4:0000000000003d6e 6:40e5950000000000 7:3fcf22d0e5604189 +end +case agg min without __name__,host +expr min without (__name__,host) ({__name__=~"a|b"}) +grid -3403500037131 1 7 +series __name__=a,job=j2 ; 0:c0c3506000000000 2:c085c30000000000 4:410eea1000000000 5:400668f5c28f5c29 6:c03a9ccccccccccd +result job=j2 ; 0:c0c3506000000000 2:c085c30000000000 4:410eea1000000000 5:400668f5c28f5c29 6:c03a9ccccccccccd +end +case agg min without __name__ +expr min without (__name__) ({__name__=~"a|b"}) +grid -1944747746525 1000 4 +series __name__=a,host=h1,zone=z1 ; 0:c0f777d000000000 1:40ce0dc000000000 2:c122a47600000000 3:c0b8ad8000000000 +series __name__=b,zone=z2 ; 0:c1285e4800000000 2:4008000000000000 3:c000000000000000 +result host=h1,zone=z1 ; 0:c0f777d000000000 1:40ce0dc000000000 2:c122a47600000000 3:c0b8ad8000000000 +result zone=z2 ; 0:c1285e4800000000 2:4008000000000000 3:c000000000000000 +end +case agg min without __name__ +expr min without (__name__) ({__name__=~"a|b"}) +grid -2973038834283 1 9 +series __name__=a,host=h1,job=j2 ; 0:409da10000000000 1:0000000000000001 2:0000000ec2f7c481 4:c008000000000000 6:c051fb3333333333 7:401e55c28f5c28f6 +series __name__=b,job=j2 ; 0:c000000000000000 1:4022000000000000 2:8000000000000000 4:000fffffffffffff 5:411dd6ac00000000 7:4125762400000000 +series __name__=a,job=j1 ; 1:8000000000000000 2:4018000000000000 3:0000000000000283 4:8000000000000000 6:79b37322f35f02c0 7:c090540000000000 8:3fe0000000000000 +series __name__=a,job=j2 ; 1:40854c0000000000 2:c010000000000000 3:c01c000000000000 4:bfd8810624dd2f1b 7:c010000000000000 8:800aacd9f34318f3 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:4008000000000000 2:0000000000000000 3:bff0000000000000 4:4014000000000000 5:c0e89c0000000000 7:40edb00000000000 8:c08e8e0000000000 +result host=h1,job=j2 ; 0:409da10000000000 1:0000000000000001 2:0000000ec2f7c481 4:c008000000000000 6:c051fb3333333333 7:401e55c28f5c28f6 +result host=h1,job=j2,zone=z1 ; 1:4008000000000000 2:0000000000000000 3:bff0000000000000 4:4014000000000000 5:c0e89c0000000000 7:40edb00000000000 8:c08e8e0000000000 +result job=j1 ; 1:8000000000000000 2:4018000000000000 3:0000000000000283 4:8000000000000000 6:79b37322f35f02c0 7:c090540000000000 8:3fe0000000000000 +result job=j2 ; 0:c000000000000000 1:4022000000000000 2:c010000000000000 3:c01c000000000000 4:bfd8810624dd2f1b 5:411dd6ac00000000 7:c010000000000000 8:800aacd9f34318f3 +end +case agg min without __name__,host +expr min without (__name__,host) ({__name__=~"a|b"}) +grid 2084306878620 15000 5 +series __name__=a,host=h1,zone=z2 ; 0:410b929800000000 1:fce637f39b2343aa 2:7ff8000000000001 4:7fefffffffffffff +series __name__=b,host=h2 ; 0:3ff0000000000000 1:8000000000000000 2:40e8141000000000 3:4126145800000000 4:404f19999999999a +series __name__=a,job=j2,zone=z2 ; 0:bfcda1cac083126f 1:ffefffffffffffff 2:8000000000000001 3:c04c6ccccccccccd 4:4023b147ae147ae1 +series __name__=b,host=h2,zone=z2 ; 0:40b0d74000000000 2:7fefffffffffffff 3:3fb47ae147ae147b 4:4075ca0000000000 +series __name__=b,host=h1,job=j1 ; 1:4077d40000000000 2:7a1866658cda76d8 4:8000000000000000 +result - ; 0:3ff0000000000000 1:8000000000000000 2:40e8141000000000 3:4126145800000000 4:404f19999999999a +result job=j1 ; 1:4077d40000000000 2:7a1866658cda76d8 4:8000000000000000 +result job=j2,zone=z2 ; 0:bfcda1cac083126f 1:ffefffffffffffff 2:8000000000000001 3:c04c6ccccccccccd 4:4023b147ae147ae1 +result zone=z2 ; 0:40b0d74000000000 1:fce637f39b2343aa 2:7fefffffffffffff 3:3fb47ae147ae147b 4:4075ca0000000000 +end +case agg min without - +expr min without () ({__name__=~"a|b"}) +grid 1755175693916 1 9 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:4042fccccccccccd 1:ff32981c5c975cac 2:000000000230621c 3:7e33b665a1b6f84c 4:4008000000000000 5:fb9de40debedfdd0 6:4000000000000000 7:4008000000000000 8:c018000000000000 +series __name__=b,job=j2,zone=z1 ; 0:bfe0000000000000 1:c056ab3333333334 2:8000000000000000 3:40be1e0000000000 4:bfd289374bc6a7f0 5:4000000000000000 6:fbcdb5b4f307f714 8:4039f66666666667 +series __name__=a,job=j2 ; 0:00724c65bdcb68e6 2:c004800000000000 4:c0725c0000000000 6:4051d80000000000 +series __name__=a,zone=z2 ; 0:c0f5022000000000 3:7fe1ccf385ebc8a0 4:000fffffffffffff 5:80000142c602c7c4 6:c011251eb851eb85 7:7ff0000000000000 8:8000000000000000 +series __name__=a,host=h1,job=j1 ; 0:3fd824dd2f1a9fbf 1:40f5374000000000 2:c0c3416000000000 4:4075680000000000 7:c0b5b08000000000 +series __name__=b,host=h1,job=j1 ; 1:412249a400000000 6:40b4848000000000 7:801a459b5b8aaea0 8:40bd18c000000000 +result host=h1,job=j1 ; 0:3fd824dd2f1a9fbf 1:40f5374000000000 2:c0c3416000000000 4:4075680000000000 6:40b4848000000000 7:c0b5b08000000000 8:40bd18c000000000 +result host=h2,job=j2,zone=z1 ; 0:4042fccccccccccd 1:ff32981c5c975cac 2:000000000230621c 3:7e33b665a1b6f84c 4:4008000000000000 5:fb9de40debedfdd0 6:4000000000000000 7:4008000000000000 8:c018000000000000 +result job=j2 ; 0:00724c65bdcb68e6 2:c004800000000000 4:c0725c0000000000 6:4051d80000000000 +result job=j2,zone=z1 ; 0:bfe0000000000000 1:c056ab3333333334 2:8000000000000000 3:40be1e0000000000 4:bfd289374bc6a7f0 5:4000000000000000 6:fbcdb5b4f307f714 8:4039f66666666667 +result zone=z2 ; 0:c0f5022000000000 3:7fe1ccf385ebc8a0 4:000fffffffffffff 5:80000142c602c7c4 6:c011251eb851eb85 7:7ff0000000000000 8:8000000000000000 +end +case agg min without host +expr min without (host) ({__name__=~"a|b"}) +grid 891913502252 60000 7 +series __name__=b,zone=z2 ; 1:4023f28f5c28f5c3 2:3fe0000000000000 3:7ff8000000000001 4:c013866666666667 5:bff0000000000000 6:bfe3f0a3d70a3d71 +result zone=z2 ; 1:4023f28f5c28f5c3 2:3fe0000000000000 3:7ff8000000000001 4:c013866666666667 5:bff0000000000000 6:bfe3f0a3d70a3d71 +end +case agg max none - +expr max({__name__=~"a|b"}) +grid 1216224986835 1 3 +series __name__=b,job=j2,zone=z2 ; 0:c0cc2c8000000000 2:3febea7ef9db22d1 +series __name__=a,job=j1,zone=z1 ; 0:fe113af21dd6be80 2:8000000000000001 +series __name__=a,job=j1 ; 0:7c32e148dedbd252 1:401c000000000000 2:0000000000000014 +series __name__=b,zone=z1 ; 0:782539834e331bb4 1:40ecd3b000000000 2:7ff8000000000001 +result - ; 0:7c32e148dedbd252 1:40ecd3b000000000 2:3febea7ef9db22d1 +end +case agg max none - +expr max({__name__=~"a|b"}) +grid 2252937529467 1000 4 +series __name__=b,host=h2 ; 0:40e7b7e000000000 3:3fb60c49ba5e3540 +result - ; 0:40e7b7e000000000 3:3fb60c49ba5e3540 +end +case agg max none - +expr max({__name__=~"a|b"}) +grid 1264216716622 60000 10 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:4012600000000000 1:800000000003f09a 3:8000000000000000 4:f8d26b0e15c2aa48 5:800017258a5054cf 6:7b659266a16be664 7:c010a8f5c28f5c29 8:c014000000000000 +series __name__=a,host=h1,zone=z2 ; 0:7b324f6e5fc7ce88 1:000000001caa7c97 4:c101558000000000 5:405318cccccccccd 6:3fe0000000000000 7:7fefffffffffffff 8:8047c512c5634a90 +series __name__=a,host=h1,job=j2 ; 0:40a50b8000000000 1:80000000000001eb 2:bfe195810624dd2f 3:0000000000000000 6:f8857f39068e5e74 7:3fade353f7ced917 +result - ; 0:7b324f6e5fc7ce88 1:000000001caa7c97 2:bfe195810624dd2f 3:8000000000000000 4:c101558000000000 5:405318cccccccccd 6:7b659266a16be664 7:7fefffffffffffff 8:8047c512c5634a90 +end +case agg max none - +expr max({__name__=~"a|b"}) +grid 1418964211207 1 4 +series __name__=a,host=h1,zone=z2 ; 0:bfebc7ae147ae148 1:4019251eb851eb85 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0507f3333333333 1:7ad574a5e5bef3e8 3:7fefffffffffffff +series __name__=a,host=h2,job=j1 ; 0:7b6ef07f6a9e1e44 1:40f7395000000000 3:c010000000000000 +series __name__=b,host=h1,zone=z1 ; 2:8000000000000001 3:80000000037dd0e0 +result - ; 0:7b6ef07f6a9e1e44 1:7ad574a5e5bef3e8 2:8000000000000001 3:7fefffffffffffff +end +case agg max none - +expr max({__name__=~"a|b"}) +grid -2139350708589 1000 6 +series __name__=a,host=h1,zone=z2 ; 0:7ff8000000000001 2:40e73e0000000000 3:40817a0000000000 4:7fefffffffffffff 5:c0f1a21000000000 +result - ; 0:7ff8000000000001 2:40e73e0000000000 3:40817a0000000000 4:7fefffffffffffff 5:c0f1a21000000000 +end +case agg max none - +expr max({__name__=~"a|b"}) +grid -2054107440206 15000 5 +series __name__=b,host=h1,job=j2 ; 0:fff0000000000000 3:3fec6147ae147ae1 4:ffe1ccf385ebc8a0 +series __name__=a,job=j1,zone=z1 ; 0:3fc578d4fdf3b646 1:800000062b1a8f3e 2:c0c0392000000000 3:403b600000000000 4:ffefffffffffffff +series __name__=a,zone=z2 ; 0:411f16fc00000000 1:000fffffffffffff 2:4015466666666667 3:7f2ececc58b00930 4:7fb14b978f52d58a +result - ; 0:411f16fc00000000 1:000fffffffffffff 2:4015466666666667 3:7f2ececc58b00930 4:7fb14b978f52d58a +end +case agg max none - +expr max({__name__=~"a|b"}) +grid -3390680046858 1 8 +series __name__=a,job=j1,zone=z2 ; 0:7ff8000000000001 2:4024000000000000 3:404bee6666666667 4:bfd8b020c49ba5e3 5:c05e000000000000 6:3fe0000000000000 +series __name__=b,host=h2,job=j2 ; 0:8000000000000000 1:c08c4f0000000000 2:bf947ae147ae147b 4:406e040000000000 5:404314cccccccccd 7:bf9d4fdf3b645a1d +series __name__=b,host=h2,job=j1,zone=z1 ; 0:c0ef270000000000 1:c044900000000000 3:fea66558d3361a82 4:ffe1ccf385ebc8a0 7:0057c0db56d2ee3c +result - ; 0:8000000000000000 1:c044900000000000 2:4024000000000000 3:404bee6666666667 4:406e040000000000 5:404314cccccccccd 6:3fe0000000000000 7:0057c0db56d2ee3c +end +case agg max none - +expr max({__name__=~"a|b"}) +grid -1355676788217 1 7 +series __name__=b,host=h1,job=j2 ; 0:796378c17144b9d0 3:4044066666666667 4:4011d70a3d70a3d7 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:ffe1ccf385ebc8a0 2:c086f20000000000 3:c0e9190000000000 4:fff0000000000000 5:0000000000000001 6:c0c0cc0000000000 +series __name__=b,job=j1 ; 0:00000000b0a29225 1:4018000000000000 2:c020000000000000 3:bfe0000000000000 4:40135ae147ae147b 5:000fffffffffffff +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c12874be00000000 4:4008000000000000 5:7e6de0d037e405c0 6:7e7a3333d74b36ba +series __name__=a,host=h1,job=j1,zone=z2 ; 1:c036c00000000000 3:4129a95600000000 4:0000000000003cd1 5:fef9a2fb04e37bee 6:00000000000002c4 +result - ; 0:796378c17144b9d0 1:4018000000000000 2:c020000000000000 3:4129a95600000000 4:40135ae147ae147b 5:7e6de0d037e405c0 6:7e7a3333d74b36ba +end +case agg max by __name__ +expr max by (__name__) ({__name__=~"a|b"}) +grid 2952290953514 1 4 +series __name__=a,host=h2,zone=z2 ; 0:4341c37937e08000 1:7ff8000000000001 2:fb5119391f6d6a98 3:c0f3acb800000000 +series __name__=a,host=h1 ; 1:c03bc9999999999a 2:7f8e343720f6be60 3:4000000000000000 +series __name__=b,host=h1,job=j2 ; 1:7a884ea524c96e80 2:c0f5542800000000 3:4038200000000000 +result __name__=a ; 0:4341c37937e08000 1:c03bc9999999999a 2:7f8e343720f6be60 3:4000000000000000 +result __name__=b ; 1:7a884ea524c96e80 2:c0f5542800000000 3:4038200000000000 +end +case agg max by job +expr max by (job) ({__name__=~"a|b"}) +grid 1431467125645 60000 4 +series __name__=b,job=j1,zone=z2 ; 0:c0580e6666666667 2:40153851eb851eb8 3:40c06da000000000 +series __name__=a,job=j2 ; 0:ffe1ccf385ebc8a0 1:fef802d83d18e2b4 2:407b6c0000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:3fe0000000000000 3:40b5e14000000000 +series __name__=b,job=j1 ; 1:40853a0000000000 2:800000000000dbcb 3:c074dc0000000000 +series __name__=b,host=h2,job=j1,zone=z2 ; 1:7fe1ccf385ebc8a0 2:0000000000af2b1c 3:40c3042000000000 +result job=j1 ; 0:3fe0000000000000 1:7fe1ccf385ebc8a0 2:40153851eb851eb8 3:40c3042000000000 +result job=j2 ; 0:ffe1ccf385ebc8a0 1:fef802d83d18e2b4 2:407b6c0000000000 +end +case agg max by host,job +expr max by (host,job) ({__name__=~"a|b"}) +grid 3089160146607 1000 3 +series __name__=b,host=h2,job=j2,zone=z2 ; 0:7dc4b792ec5323d8 1:7a2b88472dd8396e 2:800000d67ba33c0b +series __name__=b,job=j1,zone=z2 ; 0:c022670a3d70a3d7 1:c0f6fb9800000000 2:c041bccccccccccd +series __name__=b,host=h1,job=j1,zone=z2 ; 0:c0c1bde000000000 1:c123bbc200000000 2:412cd8c400000000 +series __name__=b,host=h1,zone=z2 ; 0:3fde353f7ced9169 1:00000000000d22cd +series __name__=b,host=h2,job=j2 ; 1:3ff0000000000000 2:c052933333333333 +result host=h1 ; 0:3fde353f7ced9169 1:00000000000d22cd +result host=h1,job=j1 ; 0:c0c1bde000000000 1:c123bbc200000000 2:412cd8c400000000 +result host=h2,job=j2 ; 0:7dc4b792ec5323d8 1:7a2b88472dd8396e 2:800000d67ba33c0b +result job=j1 ; 0:c022670a3d70a3d7 1:c0f6fb9800000000 2:c041bccccccccccd +end +case agg max by - +expr max by () ({__name__=~"a|b"}) +grid -2058897169736 60000 7 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:0000000000041f82 1:7bd2018944158820 3:4056100000000000 4:c0751c0000000000 5:bfdf20c49ba5e354 6:fa76be8c84019422 +series __name__=a,host=h1,zone=z2 ; 0:bff0000000000000 1:40f25c0000000000 2:c01f8a3d70a3d70a 3:c341c37937e08000 5:c12750c000000000 6:c008000000000000 +series __name__=b,host=h1 ; 0:bfb7be76c8b43958 1:7ff8000000000001 2:ffe1ccf385ebc8a0 3:412c8aa400000000 5:bfe22e147ae147ae 6:fc30788028ce9ed4 +series __name__=a,host=h2,zone=z1 ; 1:4018000000000000 2:4097480000000000 3:4074c60000000000 4:c022000000000000 5:ffe1ccf385ebc8a0 6:411873c400000000 +series __name__=a,job=j1,zone=z2 ; 1:bfed7ae147ae147b 2:3ff0000000000000 3:c1293afc00000000 4:bfdbd2f1a9fbe76d 5:4010000000000000 6:4083d80000000000 +result - ; 0:0000000000041f82 1:7bd2018944158820 2:4097480000000000 3:412c8aa400000000 4:bfdbd2f1a9fbe76d 5:4010000000000000 6:411873c400000000 +end +case agg max by job +expr max by (job) ({__name__=~"a|b"}) +grid -252337219622 1 5 +series __name__=a,zone=z2 ; 0:c0523a6666666667 1:4122843c00000000 3:40834a0000000000 +series __name__=b,host=h1,zone=z1 ; 0:80565005664c6bd6 3:c022a851eb851eb8 +series __name__=a,host=h1 ; 0:c341c37937e08000 2:4008000000000000 3:c018000000000000 4:c01c000000000000 +series __name__=b,host=h1 ; 0:fb1d729c05549370 1:bff0000000000000 3:bfd6d2f1a9fbe76d 4:000000000000004d +series __name__=b,job=j1,zone=z2 ; 2:c0b86b4000000000 4:c0b6184000000000 +series __name__=b,host=h1,job=j1,zone=z2 ; 3:8000000000000000 4:ffe1ccf385ebc8a0 +result - ; 0:80565005664c6bd6 1:4122843c00000000 2:4008000000000000 3:40834a0000000000 4:000000000000004d +result job=j1 ; 2:c0b86b4000000000 3:8000000000000000 4:c0b6184000000000 +end +case agg max by __name__,host,job,zone +expr max by (__name__,host,job,zone) ({__name__=~"a|b"}) +grid -1420122635980 60000 9 +series __name__=b,job=j2 ; 0:0000000000000001 1:40d45c8000000000 2:bff68f5c28f5c28f 3:8000000000000001 4:4010000000000000 5:41159b4000000000 6:c1219dc400000000 7:c01c000000000000 8:00001a6c924e1409 +series __name__=a,host=h1,job=j2 ; 0:40a9e38000000000 1:401595c28f5c28f6 2:4008000000000000 3:79d42dd726c68240 5:80000000000019b3 7:c0fe654000000000 +series __name__=b,host=h2,zone=z1 ; 0:7ff8000000000001 1:000000000f53bec2 2:4085e00000000000 3:c11d7ec800000000 4:40f6a4e000000000 5:0000000000000000 6:f83ec0777726b638 7:0000000000000001 +series __name__=a,job=j1 ; 1:c03cd33333333334 2:c05374cccccccccd 3:0000000000000000 4:412391c400000000 6:8000640155fab9d5 7:4024000000000000 8:4018000000000000 +series __name__=b,host=h2,job=j1,zone=z1 ; 1:c018000000000000 2:3fd51eb851eb851f 3:c0976b0000000000 4:c0112e147ae147ae 5:c0e8ebb000000000 7:c022000000000000 8:40a2b10000000000 +series __name__=b,host=h1,zone=z2 ; 1:7910c6d680aeffc0 2:f83ecf2c1169a124 3:0000000000000001 4:00000000002f8b91 6:c04d8b3333333334 7:c008000000000000 8:0000000000000000 +result __name__=a,host=h1,job=j2 ; 0:40a9e38000000000 1:401595c28f5c28f6 2:4008000000000000 3:79d42dd726c68240 5:80000000000019b3 7:c0fe654000000000 +result __name__=a,job=j1 ; 1:c03cd33333333334 2:c05374cccccccccd 3:0000000000000000 4:412391c400000000 6:8000640155fab9d5 7:4024000000000000 8:4018000000000000 +result __name__=b,host=h1,zone=z2 ; 1:7910c6d680aeffc0 2:f83ecf2c1169a124 3:0000000000000001 4:00000000002f8b91 6:c04d8b3333333334 7:c008000000000000 8:0000000000000000 +result __name__=b,host=h2,job=j1,zone=z1 ; 1:c018000000000000 2:3fd51eb851eb851f 3:c0976b0000000000 4:c0112e147ae147ae 5:c0e8ebb000000000 7:c022000000000000 8:40a2b10000000000 +result __name__=b,host=h2,zone=z1 ; 0:7ff8000000000001 1:000000000f53bec2 2:4085e00000000000 3:c11d7ec800000000 4:40f6a4e000000000 5:0000000000000000 6:f83ec0777726b638 7:0000000000000001 +result __name__=b,job=j2 ; 0:0000000000000001 1:40d45c8000000000 2:bff68f5c28f5c28f 3:8000000000000001 4:4010000000000000 5:41159b4000000000 6:c1219dc400000000 7:c01c000000000000 8:00001a6c924e1409 +end +case agg max by job +expr max by (job) ({__name__=~"a|b"}) +grid 940325209703 1000 9 +series __name__=b,zone=z1 ; 0:00000000000075b2 2:bff7051eb851eb85 3:40e7be2000000000 6:bff0000000000000 7:0000000000000000 8:c116685400000000 +series __name__=b,host=h2 ; 0:c05b580000000000 1:c03c49999999999a 2:fff0000000000000 4:c0b79bc000000000 5:c088100000000000 6:3fca083126e978d5 7:bfeee5604189374c 8:c114689c00000000 +series __name__=a,host=h2,zone=z1 ; 0:4032133333333333 1:7d1f05cc6ad46ce0 2:bf926e978d4fdf3c 3:4000000000000000 4:4057f5999999999a 5:fedf4edead6a246e 6:c01b266666666667 +series __name__=a,host=h2,zone=z2 ; 0:c01c000000000000 2:c01c000000000000 4:000000000000002f 5:00000196a6702d88 6:0000000000000019 8:7ff8000000000001 +series __name__=a ; 0:c107a6b000000000 1:4093ab0000000000 2:c0a76d8000000000 4:4008000000000000 5:3fe0916872b020c5 6:8000000000000507 7:000000000000000c 8:7ff0000000000000 +series __name__=b,host=h1,job=j2 ; 2:40af7c0000000000 3:4000000000000000 5:ffe1ccf385ebc8a0 6:c07afe0000000000 7:4010000000000000 8:40c3646000000000 +result - ; 0:4032133333333333 1:7d1f05cc6ad46ce0 2:bf926e978d4fdf3c 3:40e7be2000000000 4:4057f5999999999a 5:3fe0916872b020c5 6:3fca083126e978d5 7:000000000000000c 8:7ff0000000000000 +result job=j2 ; 2:40af7c0000000000 3:4000000000000000 5:ffe1ccf385ebc8a0 6:c07afe0000000000 7:4010000000000000 8:40c3646000000000 +end +case agg max by __name__ +expr max by (__name__) ({__name__=~"a|b"}) +grid -2608787380495 1 9 +series __name__=b,host=h2 ; 0:40c2e6c000000000 1:3fe0000000000000 3:40e99ab000000000 4:ffe1ccf385ebc8a0 5:bfe0000000000000 7:4128efca00000000 8:c085ed0000000000 +series __name__=b,job=j1 ; 0:c024000000000000 1:41218b3600000000 2:fa2d58b34e7fca80 4:bfe0000000000000 5:bfe3a9fbe76c8b44 6:3ff21eb851eb851f 8:4341c37937e08000 +series __name__=b,host=h1,job=j2 ; 1:3fd36e978d4fdf3c 2:8000000000000000 3:405ab80000000000 4:4022000000000000 5:40b5ae0000000000 6:c0a9140000000000 7:bfeb1eb851eb851f 8:c053426666666667 +result __name__=b ; 0:40c2e6c000000000 1:41218b3600000000 2:8000000000000000 3:40e99ab000000000 4:4022000000000000 5:40b5ae0000000000 6:3ff21eb851eb851f 7:4128efca00000000 8:4341c37937e08000 +end +case agg max without host,zone +expr max without (host,zone) ({__name__=~"a|b"}) +grid -3879265438673 1 10 +series __name__=b,zone=z1 ; 0:c1159b4000000000 1:4120c8e000000000 2:c119a85c00000000 3:000fffffffffffff 4:411bd8e800000000 5:405160cccccccccd 6:8000000000000000 7:c12248aa00000000 8:ffe1ccf385ebc8a0 9:7ff0000000000000 +series __name__=a,host=h2,job=j1 ; 0:7d90862d581e4210 1:4014000000000000 2:ffe1ccf385ebc8a0 3:c045333333333334 4:000fffffffffffff 5:0000000000000000 6:c061840000000000 7:8003e1d05f0a3e5d 9:4066080000000000 +series __name__=b,host=h1,zone=z2 ; 0:401e7851eb851eb8 1:fe37f2dc44b644f0 2:fede5d298cdcde8c 3:c0a5090000000000 4:c05148cccccccccd 5:40c0554000000000 6:fff0000000000000 7:412e78c800000000 8:8000000000000000 9:411d76f800000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 2:fff0000000000000 3:7b9de8425ae9cc50 4:800000280025e118 5:c01c000000000000 7:c0f15ee000000000 8:4086340000000000 +result - ; 0:401e7851eb851eb8 1:4120c8e000000000 2:c119a85c00000000 3:000fffffffffffff 4:411bd8e800000000 5:40c0554000000000 6:8000000000000000 7:412e78c800000000 8:8000000000000000 9:7ff0000000000000 +result job=j1 ; 0:7d90862d581e4210 1:4014000000000000 2:ffe1ccf385ebc8a0 3:7b9de8425ae9cc50 4:000fffffffffffff 5:0000000000000000 6:c061840000000000 7:8003e1d05f0a3e5d 8:4086340000000000 9:4066080000000000 +end +case agg max without __name__,job +expr max without (__name__,job) ({__name__=~"a|b"}) +grid -2017635847522 1000 8 +series __name__=b,host=h2 ; 0:c055300000000000 1:c054833333333334 4:c0eb616000000000 5:800000578734bc82 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:7f0611652213bfe4 1:40c31b4000000000 2:bfe7a9fbe76c8b44 3:c01c000000000000 4:0000000000000000 5:40b91cc000000000 7:3fe0000000000000 +series __name__=b,host=h1 ; 0:c0be2f8000000000 1:bfedb22d0e560419 2:3fe0000000000000 6:c09acc0000000000 7:ffefffffffffffff +series __name__=b,job=j2,zone=z2 ; 0:7ff0000000000000 1:3fe95604189374bd 4:c0ec3db000000000 5:3fe9d604189374bd 6:4008000000000000 7:fdf0a1aae06c8c54 +result host=h1 ; 0:c0be2f8000000000 1:bfedb22d0e560419 2:3fe0000000000000 6:c09acc0000000000 7:ffefffffffffffff +result host=h1,zone=z1 ; 0:7f0611652213bfe4 1:40c31b4000000000 2:bfe7a9fbe76c8b44 3:c01c000000000000 4:0000000000000000 5:40b91cc000000000 7:3fe0000000000000 +result host=h2 ; 0:c055300000000000 1:c054833333333334 4:c0eb616000000000 5:800000578734bc82 +result zone=z2 ; 0:7ff0000000000000 1:3fe95604189374bd 4:c0ec3db000000000 5:3fe9d604189374bd 6:4008000000000000 7:fdf0a1aae06c8c54 +end +case agg max without - +expr max without () ({__name__=~"a|b"}) +grid 948901045752 1000 6 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:806cf48b958f38ac 1:0000000000007084 2:4024000000000000 3:4022000000000000 4:c023f9999999999a +series __name__=a,host=h2,job=j1 ; 0:ffe1ccf385ebc8a0 2:c117cfb400000000 3:4084cb0000000000 4:3fe0000000000000 +series __name__=a,host=h2,zone=z1 ; 0:40565e6666666667 1:f91d8e53630bfeec 2:80330d56ace40918 3:c012bd70a3d70a3e 4:7ff0000000000000 +series __name__=b,job=j2 ; 1:c341c37937e08000 2:bfe4ced916872b02 3:feeb3cf19492b750 4:c0fffb8000000000 5:c0c3434000000000 +result host=h2,job=j1 ; 0:ffe1ccf385ebc8a0 2:c117cfb400000000 3:4084cb0000000000 4:3fe0000000000000 +result host=h2,job=j2,zone=z2 ; 0:806cf48b958f38ac 1:0000000000007084 2:4024000000000000 3:4022000000000000 4:c023f9999999999a +result host=h2,zone=z1 ; 0:40565e6666666667 1:f91d8e53630bfeec 2:80330d56ace40918 3:c012bd70a3d70a3e 4:7ff0000000000000 +result job=j2 ; 1:c341c37937e08000 2:bfe4ced916872b02 3:feeb3cf19492b750 4:c0fffb8000000000 5:c0c3434000000000 +end +case agg max without __name__ +expr max without (__name__) ({__name__=~"a|b"}) +grid 1627934021375 1 9 +series __name__=a,job=j2 ; 0:3fc2b020c49ba5e3 1:f9192e28c0d69b58 2:c04839999999999a 3:0000000000000000 4:412c8e8c00000000 5:c0eead2000000000 8:4000000000000000 +series __name__=b ; 0:c11143ec00000000 3:4010000000000000 4:400c8a3d70a3d70a 5:800000000aaec273 6:7ff0000000000000 8:4000000000000000 +series __name__=a,host=h2,zone=z1 ; 1:ffe1ccf385ebc8a0 2:3fe0000000000000 3:4010000000000000 4:c0525b3333333333 5:c056f9999999999a 6:c020000000000000 7:3f98b4395810624e 8:bfd56872b020c49c +series __name__=a,job=j2,zone=z2 ; 2:7fefffffffffffff 3:c0c9c80000000000 4:7fefffffffffffff 5:40bd7cc000000000 6:4010ea3d70a3d70a 7:7cfbd0c53ecd4c38 8:3fe515810624dd2f +series __name__=a,host=h2,job=j2,zone=z1 ; 2:c0f3f56000000000 3:c018000000000000 4:4010000000000000 5:4051766666666667 6:4033933333333334 7:8001c8da7762f210 8:bfefdd2f1a9fbe77 +result - ; 0:c11143ec00000000 3:4010000000000000 4:400c8a3d70a3d70a 5:800000000aaec273 6:7ff0000000000000 8:4000000000000000 +result host=h2,job=j2,zone=z1 ; 2:c0f3f56000000000 3:c018000000000000 4:4010000000000000 5:4051766666666667 6:4033933333333334 7:8001c8da7762f210 8:bfefdd2f1a9fbe77 +result host=h2,zone=z1 ; 1:ffe1ccf385ebc8a0 2:3fe0000000000000 3:4010000000000000 4:c0525b3333333333 5:c056f9999999999a 6:c020000000000000 7:3f98b4395810624e 8:bfd56872b020c49c +result job=j2 ; 0:3fc2b020c49ba5e3 1:f9192e28c0d69b58 2:c04839999999999a 3:0000000000000000 4:412c8e8c00000000 5:c0eead2000000000 8:4000000000000000 +result job=j2,zone=z2 ; 2:7fefffffffffffff 3:c0c9c80000000000 4:7fefffffffffffff 5:40bd7cc000000000 6:4010ea3d70a3d70a 7:7cfbd0c53ecd4c38 8:3fe515810624dd2f +end +case agg max without host,job,zone +expr max without (host,job,zone) ({__name__=~"a|b"}) +grid 744070911264 15000 8 +series __name__=b,job=j1,zone=z1 ; 0:7f3cdb3359d982c8 1:c0519a6666666667 2:c341c37937e08000 3:c018dc28f5c28f5c 4:7df968aa9c6b2dde 5:c014000000000000 +series __name__=a,job=j1,zone=z1 ; 1:4000000000000000 2:fff0000000000000 3:0000000000000001 4:c017b70a3d70a3d7 5:78781f8b635faa48 7:40e2f84000000000 +result - ; 0:7f3cdb3359d982c8 1:4000000000000000 2:c341c37937e08000 3:0000000000000001 4:7df968aa9c6b2dde 5:78781f8b635faa48 7:40e2f84000000000 +end +case agg max without __name__,host,zone +expr max without (__name__,host,zone) ({__name__=~"a|b"}) +grid 465608466090 1000 8 +series __name__=b,host=h2,zone=z1 ; 0:c12298be00000000 1:bfe4b53f7ced9169 3:7fefffffffffffff 4:800000000001f499 5:c0f231d000000000 6:0000000000000001 7:4113dbfc00000000 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:c0f4c85000000000 1:407b240000000000 2:80000000a9cf5531 3:00000025e8dc462c 5:c08b800000000000 7:c01c000000000000 +result - ; 0:c12298be00000000 1:bfe4b53f7ced9169 3:7fefffffffffffff 4:800000000001f499 5:c0f231d000000000 6:0000000000000001 7:4113dbfc00000000 +result job=j1 ; 0:c0f4c85000000000 1:407b240000000000 2:80000000a9cf5531 3:00000025e8dc462c 5:c08b800000000000 7:c01c000000000000 +end +case agg max without zone +expr max without (zone) ({__name__=~"a|b"}) +grid -69005963730 15000 7 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:4000000000000000 1:fc6c83a90055cd48 4:40f619d000000000 5:c0232ccccccccccd 6:4052c8cccccccccd +series __name__=b,job=j1,zone=z1 ; 0:bfe90d4fdf3b645a 1:3ff0000000000000 2:7f800eafb54ed2a8 5:c1290e1000000000 6:8000031bd5757bf3 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:8002162129fbf7f7 3:406cec0000000000 4:7fe1ccf385ebc8a0 5:800000000000073a +series __name__=a,job=j1 ; 0:c0738c0000000000 1:bfde000000000000 2:c086160000000000 3:c1227e6000000000 4:400cee147ae147ae 5:c024000000000000 6:c0a8b78000000000 +series __name__=b,host=h2,job=j1,zone=z1 ; 0:411b38c000000000 1:7c668c109a5b2b9e 2:4020133333333333 3:408e8d0000000000 5:40c2994000000000 +series __name__=a,job=j2,zone=z1 ; 0:411e24cc00000000 1:7ff8000000000001 2:0000000000000003 3:80000000147b9a68 4:40066b851eb851ec 6:3ff2428f5c28f5c3 +result host=h1,job=j1 ; 0:4000000000000000 1:fc6c83a90055cd48 3:406cec0000000000 4:7fe1ccf385ebc8a0 5:800000000000073a 6:4052c8cccccccccd +result host=h2,job=j1 ; 0:411b38c000000000 1:7c668c109a5b2b9e 2:4020133333333333 3:408e8d0000000000 5:40c2994000000000 +result job=j1 ; 0:bfe90d4fdf3b645a 1:3ff0000000000000 2:7f800eafb54ed2a8 3:c1227e6000000000 4:400cee147ae147ae 5:c024000000000000 6:8000031bd5757bf3 +result job=j2 ; 0:411e24cc00000000 1:7ff8000000000001 2:0000000000000003 3:80000000147b9a68 4:40066b851eb851ec 6:3ff2428f5c28f5c3 +end +case agg max without host +expr max without (host) ({__name__=~"a|b"}) +grid -1539199569254 1 8 +series __name__=a,zone=z2 ; 1:bfe0000000000000 3:0000000000000001 4:c11c697000000000 5:41200c6600000000 6:4072280000000000 7:c120961800000000 +result zone=z2 ; 1:bfe0000000000000 3:0000000000000001 4:c11c697000000000 5:41200c6600000000 6:4072280000000000 7:c120961800000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid -2306868510341 60000 6 +series __name__=a,host=h1,zone=z1 ; 0:7fefffffffffffff 1:8000000001f48bde 4:404bc00000000000 5:7e772c7a29d95e5c +series __name__=a,host=h1,job=j1,zone=z2 ; 0:403f833333333334 1:c09c750000000000 2:000000009bbf2e9d 3:4082970000000000 4:4008000000000000 5:0000000000000fd7 +series __name__=b,host=h1,zone=z2 ; 0:c0c0c2a000000000 1:fc825fe7f942d510 2:c0fc59d000000000 4:000000000001daab 5:c081150000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:7fa75ffb518b1006 1:c12584ca00000000 2:7fefffffffffffff 3:402faccccccccccd 4:3fe8072b020c49bb 5:0000000000000228 +series __name__=b,host=h1,zone=z1 ; 0:c022000000000000 1:80000061d59c0054 2:4000000000000000 5:c0bbf80000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 2:c008000000000000 3:805c5c9863ed7e6c +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid 155829979837 1 5 +series __name__=a,host=h1,job=j2 ; 0:fbbdafc40bb09408 2:80000000000034a9 3:c018000000000000 4:c0c0162000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:3fe0a0c49ba5e354 1:c0539e6666666667 2:4014000000000000 3:c0f03f6000000000 4:4008000000000000 +series __name__=b,host=h2,job=j1 ; 1:c04aa00000000000 2:4089930000000000 4:c01c000000000000 +series __name__=b,job=j2,zone=z1 ; 2:8000000000000005 3:7edd132fbc966d16 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid 2586223115383 60000 5 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c014000000000000 1:bff0000000000000 2:800020dbb53800d9 3:4014000000000000 4:c040f4cccccccccd +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid -2233089818920 15000 8 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0221eb851eb851f 1:bfe9374bc6a7ef9e 2:c125f51800000000 4:4127162800000000 5:8000000000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid 733818647279 60000 10 +series __name__=b,job=j2,zone=z2 ; 0:4045cccccccccccd 1:c008000000000000 3:000000011287b974 4:bfd0126e978d4fdf 5:c010000000000000 6:c0a2a70000000000 7:8000000000000007 8:80000013b8c54f83 9:3fc2b020c49ba5e3 +series __name__=a ; 1:c0f1396000000000 2:4000000000000000 3:40578e6666666667 4:bfb08b4395810625 5:7fe1ccf385ebc8a0 6:4000000000000000 7:fff0000000000000 8:c03389999999999a 9:3fdc666666666667 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid -2293781046094 60000 8 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:bfcc3126e978d4fe 1:f8fb114d26cc28e0 3:4008000000000000 4:bfd6d4fdf3b645a2 7:4054940000000000 +series __name__=b,host=h1,zone=z1 ; 0:4014000000000000 1:40f4f73000000000 2:7fefffffffffffff 3:00001a0de08be4cd 4:c0197d70a3d70a3e 7:7ca0ed347bab6500 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 7:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid 3132222124257 15000 10 +series __name__=b,host=h1 ; 0:7d0a82e812297480 1:ffefffffffffffff 3:800000000000595e 4:c01c000000000000 5:40141851eb851eb8 6:bff0000000000000 7:7c39408e8cde97d0 8:4000000000000000 9:0000000000000001 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:3fc51a9fbe76c8b4 1:0000000056881f39 2:0001208725f7e1e0 3:404e0e6666666667 4:c0bef78000000000 6:c020000000000000 8:0000000000000001 +series __name__=a,host=h1,job=j2 ; 2:8000000000000000 4:c0f2f45800000000 5:4104532000000000 6:c014000000000000 7:c05694cccccccccd 8:bfda624dd2f1a9fc 9:c057a73333333334 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case agg group none - +expr group({__name__=~"a|b"}) +grid 2311025912945 15000 10 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:40df018000000000 2:4086450000000000 3:c048d33333333334 4:4096da0000000000 5:40d640e000000000 6:c08bb50000000000 7:80006013204d996f 9:c03fd66666666667 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:4000000000000000 1:c022000000000000 2:fdb57bcf172a3914 3:4008000000000000 4:ffefffffffffffff 5:40e4f41000000000 6:3fe6000000000000 7:fa75caeeb552c424 8:7e346a8a08039986 +series __name__=b,host=h2,job=j1 ; 0:ffefffffffffffff 2:c022566666666667 4:bfe0000000000000 5:000fffffffffffff 6:fe9d0a3da20d4d86 8:3fdc5810624dd2f2 9:bfeaa4dd2f1a9fbf +series __name__=a,job=j2,zone=z1 ; 1:4055dd999999999a 2:4046f1999999999a 3:0000000000000000 5:4018000000000000 7:4067cc0000000000 8:3fe0000000000000 9:bfced0e560418937 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case agg group by - +expr group by () ({__name__=~"a|b"}) +grid -1581931315676 1000 8 +series __name__=b,host=h2,job=j2 ; 0:8000000000000000 1:3fec26e978d4fdf4 3:3fc9126e978d4fdf 4:8000000000000000 5:bfeb3e76c8b43958 6:40d80f6000000000 7:8000000000000000 +series __name__=b,host=h1,zone=z2 ; 0:4000000000000000 1:8000059a7fc763f9 3:40c0892000000000 4:c125743000000000 6:3fecd916872b020c 7:7a29c77ea3e03a30 +series __name__=b,job=j1,zone=z1 ; 0:7f60a3aa41157744 1:4058ef3333333334 2:40228d70a3d70a3e 3:febd6790bc4e17be 4:c0bae28000000000 5:c004f0a3d70a3d71 6:c01c000000000000 +series __name__=b,zone=z2 ; 0:40b971c000000000 1:ffe1ccf385ebc8a0 2:bfe9083126e978d5 3:8000000000000001 5:c0f6bea800000000 7:0000000000000000 +series __name__=b,host=h1,job=j2,zone=z2 ; 3:40f2c7d000000000 4:4000000000000000 5:c062b40000000000 7:c0c2a0c000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case agg group by __name__ +expr group by (__name__) ({__name__=~"a|b"}) +grid -2259273255362 1000 9 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:c0b3d94000000000 1:c043100000000000 3:3ff0000000000000 4:407f900000000000 5:f86282989260c686 6:797f0cbd3871e350 8:7e0059d4f8817444 +series __name__=b,host=h2,job=j2,zone=z1 ; 0:3fd1fbe76c8b4396 1:bfb6c083126e978d 3:8000000019a8e469 4:3ff0000000000000 5:411e74e000000000 6:4054526666666667 7:bfef74bc6a7ef9db 8:c01af33333333333 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:409eaa0000000000 2:4018066666666667 4:c024000000000000 5:4087fa0000000000 7:40e5eaf000000000 8:7fefffffffffffff +series __name__=a,job=j2,zone=z2 ; 0:ffe1ccf385ebc8a0 1:78ef77765c72095c 2:c0392ccccccccccd 3:bff0000000000000 5:c341c37937e08000 6:8000000000000001 7:c120049600000000 8:0017ddafe67b1190 +result __name__=a ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result __name__=b ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case agg group by - +expr group by () ({__name__=~"a|b"}) +grid 1783203117782 60000 6 +series __name__=a,job=j2,zone=z1 ; 0:3fe0000000000000 1:3ffbb33333333333 2:8000000000006d34 3:fca7fedda17dfe5a 5:408dc90000000000 +series __name__=a,host=h1,zone=z2 ; 0:3fe0000000000000 1:40763c0000000000 3:4008000000000000 4:4095c70000000000 5:bff0000000000000 +series __name__=b,job=j2,zone=z2 ; 0:002e0ccbfb29aab4 1:4022000000000000 2:80000000004b72e2 3:00000000419b3da4 4:c0f4f1b800000000 5:40e96d6000000000 +series __name__=b,host=h2,job=j1 ; 1:c022000000000000 2:c0764e0000000000 3:c085950000000000 4:c01c1c28f5c28f5c 5:c0b890c000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 3:c03f29999999999a 4:0000000000000000 5:c008000000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case agg group by host +expr group by (host) ({__name__=~"a|b"}) +grid -2470636980754 1 8 +series __name__=b,zone=z2 ; 0:fd235c2e6e606164 1:7aee6d01f90d193c 2:800000dd9d63aeff 3:c0d7cdc000000000 4:7fe1ccf385ebc8a0 5:7ac304015ed116ae 6:800000adeffca4e5 7:7a5abcd10d6024c0 +series __name__=a ; 0:c0cd7e0000000000 1:3fe252f1a9fbe76d 5:400bee147ae147ae 7:7bc0cf857357dca0 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:fac8dc5c3c1a9cdc 2:fd4adf72a1833e20 3:40c2ab6000000000 4:fcd463c302b27a8e 6:40506c0000000000 7:40bfc48000000000 +series __name__=b,job=j1,zone=z1 ; 1:7ff0000000000000 2:401c000000000000 3:3fed010624dd2f1b 5:40508a6666666667 6:c000000000000000 7:0048895fd4f1f574 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +result host=h1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case agg group by - +expr group by () ({__name__=~"a|b"}) +grid 1541428079559 60000 5 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:fd8b54a4120060a8 1:bfde3d70a3d70a3e 2:0000000000000001 3:c018000000000000 +series __name__=b,host=h1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:40bb828000000000 2:40c333a000000000 3:ffe1ccf385ebc8a0 4:7ff0000000000000 +series __name__=b,host=h2,job=j1,zone=z1 ; 0:bfe0000000000000 1:8000000001ecd8c9 2:7b61653d956c4bc0 3:c09b580000000000 4:0000001f93530c35 +series __name__=b,host=h1,job=j1,zone=z1 ; 0:7d5d23174f7594f2 1:c0c0f7c000000000 2:3ff0000000000000 3:40adf38000000000 4:fb4ef2e5b2c47292 +series __name__=b,host=h2 ; 1:0000000000000000 2:c0a6940000000000 3:000000000016cb4f 4:c047f66666666667 +series __name__=a,host=h2,job=j1,zone=z1 ; 2:c0c3240000000000 3:c07ade0000000000 4:7af3a4d649ae69d0 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 +end +case agg group by job +expr group by (job) ({__name__=~"a|b"}) +grid 377123667067 1000 3 +series __name__=b,host=h1,job=j2 ; 0:c079920000000000 1:804a898683eaab30 2:7ff8000000000001 +result job=j2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 +end +case agg group by zone +expr group by (zone) ({__name__=~"a|b"}) +grid 137858375535 1000 6 +series __name__=b,host=h1,job=j2,zone=z1 ; 0:40ecb15000000000 1:c0218ccccccccccd 2:40ecdb8000000000 4:c0b7250000000000 +series __name__=b,host=h2,zone=z1 ; 0:0000000000000000 1:80000000013a44c9 2:40f7130800000000 4:3ff0000000000000 +series __name__=a,job=j2 ; 0:fad326897a18f05e 1:3fdbba5e353f7cee 2:40f59c0800000000 3:c020000000000000 5:c001947ae147ae15 +series __name__=a,host=h1,job=j1 ; 1:0000000000000314 2:8000000000f8ed04 4:c0e397a000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:7ff8000000000001 2:7f40c309ecce906e 3:40b3a60000000000 5:3feade353f7ced92 +series __name__=a,host=h1,zone=z2 ; 1:40ed1eb000000000 2:000fffffffffffff 3:400e000000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 +result zone=z2 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 +end +case agg group by __name__ +expr group by (__name__) ({__name__=~"a|b"}) +grid -1636586945471 15000 8 +series __name__=b,host=h2,job=j1,zone=z2 ; 0:bff0000000000000 1:bff0000000000000 2:c01c000000000000 3:000000000045b780 5:4083080000000000 6:7fe1ccf385ebc8a0 7:fcdb74c2a8e71d00 +series __name__=b,job=j1,zone=z1 ; 0:0000000000000000 1:40c2fca000000000 2:7ff8000000000001 3:bfeb53f7ced91687 4:4020f47ae147ae15 5:4056366666666667 6:4000000000000000 7:c05371999999999a +series __name__=b,job=j2,zone=z2 ; 1:0000000000000335 3:c07fd60000000000 4:40188ccccccccccd 5:4008000000000000 6:4068600000000000 7:bfe471a9fbe76c8b +series __name__=b,job=j1 ; 2:c0ed970000000000 4:408cd60000000000 5:4094b90000000000 6:40141ae147ae147b 7:7ff0000000000000 +result __name__=b ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case agg group without host,job,zone +expr group without (host,job,zone) ({__name__=~"a|b"}) +grid -366578853246 1000 10 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c052a66666666667 1:40182ccccccccccd 4:c0535c0000000000 5:4017cccccccccccd 6:40ea356000000000 7:c0da5e0000000000 9:8000000000000000 +series __name__=a,zone=z2 ; 0:00000fe4c3e4156b 1:c341c37937e08000 2:c0bf798000000000 3:7cfac54546577e00 4:4341c37937e08000 5:c07a940000000000 7:40740e0000000000 8:c014eb851eb851ec 9:c0231c28f5c28f5c +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case agg group without host,zone +expr group without (host,zone) ({__name__=~"a|b"}) +grid -2876854491124 1 9 +series __name__=b,job=j2 ; 0:8000000000000000 2:c01c000000000000 3:7ff8000000000001 6:407d7c0000000000 7:c06ec40000000000 8:00000000001a9630 +result job=j2 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case agg group without __name__ +expr group without (__name__) ({__name__=~"a|b"}) +grid 148931314694 1 10 +series __name__=a,job=j2 ; 0:4006ab851eb851ec 1:c0d27e6000000000 2:40778a0000000000 3:3ffa7ae147ae147b 4:40f623f800000000 7:7ec5a57fe690650e 8:000000072cf5e799 9:0000000000000049 +series __name__=a,host=h1 ; 0:4067e80000000000 1:40b0298000000000 2:002b7a6ff7d1b7b4 3:4087860000000000 4:4086b80000000000 5:8000000000000064 7:4044833333333334 9:8000000000000002 +series __name__=a,job=j1 ; 0:8000000000000000 2:803dce53dd9376b0 3:c010000000000000 6:c079de0000000000 7:ffe1ccf385ebc8a0 8:c04bc1999999999a 9:4059000000000000 +series __name__=b,job=j1,zone=z2 ; 1:0000000000000001 2:4000000000000000 3:401f39999999999a 4:fce4c27acd6c2e40 5:7ff8000000000001 6:c107932800000000 7:c000000000000000 8:000000f9a7156c35 +result host=h1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 7:3ff0000000000000 9:3ff0000000000000 +result job=j1 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +result job=j1,zone=z2 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result job=j2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case agg group without job,zone +expr group without (job,zone) ({__name__=~"a|b"}) +grid 413191811245 1 3 +series __name__=a ; 0:80000091300dbc79 2:c0f02fc000000000 +series __name__=a,job=j1,zone=z2 ; 0:c0c0ffe000000000 1:c00311eb851eb852 2:c0bca98000000000 +series __name__=a,zone=z2 ; 0:c341c37937e08000 1:400607ae147ae148 2:4113da0800000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 +end +case agg group without __name__,host +expr group without (__name__,host) ({__name__=~"a|b"}) +grid -2479739666475 15000 7 +series __name__=b,zone=z2 ; 0:000fffffffffffff 1:405240cccccccccd 2:c018000000000000 6:408d330000000000 +series __name__=b ; 0:c0b5c70000000000 1:3fbcf5c28f5c28f6 2:c074420000000000 3:0000000000000000 4:bfe890624dd2f1aa 5:c06c700000000000 +series __name__=b,host=h1,job=j1,zone=z2 ; 0:c016733333333333 1:8000000000001b75 2:8000000000000001 3:80480178792095a0 6:7df152fc784403c0 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:79c914c77f732774 1:c010000000000000 2:406e740000000000 3:bfe7fdf3b645a1cb 4:40f0ee6000000000 6:bfef916872b020c5 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result job=j1,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 6:3ff0000000000000 +result job=j2,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 +result zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 6:3ff0000000000000 +end +case agg group without __name__,host,job +expr group without (__name__,host,job) ({__name__=~"a|b"}) +grid 2542506852770 60000 6 +series __name__=a,job=j1,zone=z1 ; 0:3fdb5a1cac083127 1:bff0000000000000 3:40bbbfc000000000 5:7d0444c824cffec0 +series __name__=b,host=h2,job=j2 ; 0:8000000000000078 1:c0b6ff8000000000 2:c0ebf44000000000 3:3fc6147ae147ae15 4:0000001146c3ca7d 5:40e4325000000000 +series __name__=b,host=h2,job=j1 ; 1:4014e7ae147ae148 2:c000000000000000 4:c0b8cf4000000000 5:4008000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 1:00000000000003aa 2:c08af70000000000 3:3fc7851eb851eb85 4:4022000000000000 5:8000000000000001 +series __name__=a,host=h1 ; 1:4076040000000000 2:c070f20000000000 3:0000000000000001 5:c056e4cccccccccd +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 +result zone=z2 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case agg group without __name__ +expr group without (__name__) ({__name__=~"a|b"}) +grid -930974658462 60000 9 +series __name__=a,host=h2,job=j2 ; 0:7ff0000000000000 2:4014000000000000 3:fff0000000000000 5:800000000000226d 7:4341c37937e08000 8:ffe1ccf385ebc8a0 +series __name__=b,zone=z1 ; 0:bfefbb645a1cac08 1:c10f306000000000 2:c018000000000000 3:0000000000002b50 5:80000491641102e4 6:bf953f7ced916873 7:c064700000000000 +series __name__=a,host=h1,zone=z1 ; 0:bff0000000000000 3:7db442eb8ebeb764 4:4000000000000000 5:0000000000000001 +series __name__=a,host=h2 ; 0:00000c62a21ed207 1:c341c37937e08000 3:7fefffffffffffff 4:c0b9488000000000 5:c341c37937e08000 6:40a5630000000000 8:bfe0000000000000 +series __name__=b,host=h2,job=j1 ; 0:8000000000000001 1:fae1ab6e346466c8 2:4008000000000000 3:c0a1170000000000 4:40ed362000000000 6:3fdd2d0e56041894 7:000fffffffffffff 8:79b8d537c10d7b4c +result host=h1,zone=z1 ; 0:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result host=h2 ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 8:3ff0000000000000 +result host=h2,job=j1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result host=h2,job=j2 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case agg group without host +expr group without (host) ({__name__=~"a|b"}) +grid 2167066619576 15000 9 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:411f4fa000000000 1:c01d1c28f5c28f5c 2:4019000000000000 3:c0ee74e000000000 4:4022000000000000 5:c010000000000000 6:fbfa1c24c4e1545c +series __name__=b ; 0:4086e00000000000 1:c341c37937e08000 3:4046c66666666667 5:0000000000000000 7:3ff0000000000000 8:7ff0000000000000 +series __name__=b,host=h2 ; 1:c094b40000000000 3:412746fc00000000 6:000000000000005e 8:c124ed6c00000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end diff --git a/src/promql/src/aggregate/tests.rs b/src/promql/src/aggregate/tests.rs new file mode 100644 index 00000000000..f37d30c8244 --- /dev/null +++ b/src/promql/src/aggregate/tests.rs @@ -0,0 +1,637 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use datatypes::arrow::array::{Float64Array, UInt32Array}; +use datatypes::series::Label; +use datatypes::series::histogram::HistogramBatchBuilder; +use datatypes::series::samples::{FieldSpec, Samples, SeriesFields}; +use datatypes::series::time::{EvalGrid, GridRange, GridSpec}; + +use super::*; +use crate::golden::{assert_result, cases}; + +const CASES: &str = include_str!("prometheus_cases.txt"); + +const OPS: [AggregateOp; 6] = [ + AggregateOp::Sum, + AggregateOp::Count, + AggregateOp::Avg, + AggregateOp::Min, + AggregateOp::Max, + AggregateOp::Group, +]; + +fn schema(fields: &[&str]) -> Arc { + Arc::new(SeriesSchema { + fields: fields + .iter() + .map(|name| FieldSpec { + name: (*name).into(), + }) + .collect(), + eval_grid: Some(Arc::new( + EvalGrid::try_new(GridSpec::try_new(-1000, 250, 128).unwrap()).unwrap(), + )), + }) +} + +fn metric(name: &str, labels: &[(&str, &str)]) -> MetricName { + MetricName::try_new( + Some(name.into()), + labels + .iter() + .map(|(name, value)| Label { + name: (*name).into(), + value: (*value).into(), + }) + .collect(), + ) + .unwrap() +} + +/// Each field is split at a different offset into chunks with nonzero Arrow offsets. +fn input( + schema: &SeriesSchema, + metric: MetricName, + start: usize, + fields: &[Vec>], +) -> Series { + let len = fields[0].len(); + let fields = fields + .iter() + .enumerate() + .map(|(index, samples)| { + let mut padded = vec![Some(999.0)]; + padded.extend(samples); + padded.push(Some(999.0)); + let array = Float64Array::from(padded); + let split = (index + 1).min(len); + Samples::try_from_chunks(vec![ + Samples::from_float(array.slice(1, split)), + Samples::from_float(array.slice(1 + split, len - split)), + ]) + .unwrap() + }) + .collect(); + Series::try_new( + schema, + metric, + TimeAxis::Grid(GridRange::try_new(schema.eval_grid.clone().unwrap(), start, len).unwrap()), + SeriesFields::try_from_vec(fields).unwrap(), + ) + .unwrap() +} + +fn values(series: &Series, field: usize) -> (usize, Vec>) { + let TimeAxis::Grid(range) = &series.time else { + panic!("lost grid") + }; + let values = series + .fields + .get(field) + .unwrap() + .iter() + .map(|sample| match sample { + SampleRef::Float(value) => Some(value), + SampleRef::Missing => None, + _ => panic!("unexpected histogram"), + }) + .collect(); + (range.start(), values) +} + +fn grouping<'a>(header: &[String], labels: &'a [&'a str]) -> Grouping<'a> { + match header[2].as_str() { + "none" | "by" => Grouping::By(labels), + "without" => Grouping::Without(labels), + other => panic!("unmapped grouping {other}"), + } +} + +#[test] +fn aggregates_match_prometheus() { + let mut matched = BTreeMap::::new(); + for case in cases(CASES) { + let h = &case.header; + let op = match h[1].as_str() { + "sum" => AggregateOp::Sum, + "count" => AggregateOp::Count, + "avg" => AggregateOp::Avg, + "min" => AggregateOp::Min, + "max" => AggregateOp::Max, + "group" => AggregateOp::Group, + other => panic!("unmapped aggregate {other}"), + }; + let labels = h[3] + .split(',') + .filter(|label| *label != "-") + .collect::>(); + let output = aggregate_float(&case.schema, &case.series, op, grouping(h, &labels)).unwrap(); + assert_result(&case, output); + *matched.entry(format!("{} {}", h[1], h[2])).or_default() += 1; + } + for op in ["sum", "count", "avg", "min", "max", "group"] { + for grouping in ["none", "by", "without"] { + let count = matched + .get(&format!("{op} {grouping}")) + .copied() + .unwrap_or_default(); + assert!(count >= 8, "{op} {grouping}: {count}"); + } + } +} + +#[test] +fn compensated_sum_and_overflowing_avg_follow_prometheus() { + let schema = schema(&["value"]); + let series = [1e16, 1.0, -1e16] + .into_iter() + .enumerate() + .map(|(i, value)| { + input( + &schema, + metric("m", &[("i", &i.to_string())]), + 3, + &[vec![Some(value)]], + ) + }) + .collect::>(); + // A plain left fold loses the 1. + let sum = aggregate_float(&schema, &series, AggregateOp::Sum, Grouping::By(&[])).unwrap(); + assert_eq!(values(&sum[0], 0), (3, vec![Some(1.0)])); + let avg = aggregate_float(&schema, &series, AggregateOp::Avg, Grouping::By(&[])).unwrap(); + assert_eq!(values(&avg[0], 0), (3, vec![Some(1.0 / 3.0)])); + + let series = [f64::MAX, f64::MAX, f64::MAX / 2.0] + .into_iter() + .enumerate() + .map(|(i, value)| { + input( + &schema, + metric("m", &[("i", &i.to_string())]), + 3, + &[vec![Some(value)]], + ) + }) + .collect::>(); + // The direct sum overflows, so the mean switches to the incremental form. + let avg = aggregate_float(&schema, &series, AggregateOp::Avg, Grouping::By(&[])).unwrap(); + let (_, avg) = values(&avg[0], 0); + // Bits from the same calculation in Go on amd64; a plain mean is +Inf. + assert_eq!(avg, vec![Some(f64::from_bits(0x7feaaaaaaaaaaaa9))]); + let sum = aggregate_float(&schema, &series, AggregateOp::Sum, Grouping::By(&[])).unwrap(); + assert_eq!(values(&sum[0], 0), (3, vec![Some(f64::INFINITY)])); +} + +/// Kahan compensation is part of Prometheus' algorithm, but its effect on these means stays +/// within the fixture tolerance, so the Prometheus bits (from `aggregate/prometheus_cases.txt`) +/// are compared exactly. +#[test] +fn avg_compensation_matches_prometheus_bits() { + let schema = schema(&["value"]); + let cases: [(&[u64], u64); 3] = [ + // Compensation added to the incremental mean. + ( + &[ + 0x7fefffffffffffff, + 0x7fe2b55f24962471, + 0x7f7b95c7ed3a8f06, + 0x7f75d53a379fb517, + 0x7f71a21ceafb8ae4, + 0xffe1f8b2ce599b68, + ], + 0x7fc62c8462e82319, + ), + // The direct mean divides sum and compensation separately. + ( + &[ + 0x406c76fff31cc498, + 0xc300281b07086372, + 0xc2b33ace5f269b56, + 0xc2807b0afee3570f, + 0x40527b1b3a5c44e6, + ], + 0xc2daea473b33e9f1, + ), + // The compensation is rescaled when the mean switches to the incremental form. + ( + &[ + 0xffe985777be7cf98, + 0x7fb976769842f3a1, + 0xffe6ef0261aba506, + 0x7fbc6cc7f64a3057, + ], + 0xffd4dc0905e0e810, + ), + ]; + for (inputs, expected) in cases { + let series = inputs + .iter() + .enumerate() + .map(|(i, bits)| { + input( + &schema, + metric("a", &[("i", &i.to_string())]), + 1, + &[vec![Some(f64::from_bits(*bits))]], + ) + }) + .collect::>(); + let avg = aggregate_float(&schema, &series, AggregateOp::Avg, Grouping::By(&[])).unwrap(); + let (_, avg) = values(&avg[0], 0); + assert_eq!(avg[0].map(f64::to_bits), Some(expected)); + } +} + +#[test] +fn fields_are_aggregated_independently() { + // A field without input values at a row is null there, even for count and group; the row + // exists because another field has a value. Single-field projections are the oracle. + let multi = schema(&["a", "b"]); + let single = schema(&["value"]); + let samples = [ + None, + Some(-0.0), + Some(0.0), + Some(-5.0), + Some(7.5), + Some(f64::NAN), + Some(f64::INFINITY), + Some(f64::NEG_INFINITY), + Some(1e16), + ]; + let mut seed = 17_u64; + let mut next = || { + seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); + (seed >> 33) as usize + }; + let mut series = Vec::new(); + for i in 0..24 { + let (start, len) = (next() % 80, 1 + next() % 20); + let fields = [0, 1].map(|_| (0..len).map(|_| samples[next() % samples.len()]).collect()); + let host = ["h1", "h2", ""][i % 3]; + series.push(input( + &multi, + metric(["a", "b"][i % 2], &[("host", host), ("i", &i.to_string())]), + start, + &fields, + )); + } + let project = |field: usize| -> Vec { + series + .iter() + .filter_map(|s| { + let (start, values) = values(s, field); + let first = values.iter().position(Option::is_some)?; + let last = values.iter().rposition(Option::is_some)?; + Some(input( + &single, + s.metric.clone(), + start + first, + &[values[first..=last].to_vec()], + )) + }) + .collect() + }; + for grouping in [ + Grouping::By(&[]), + Grouping::By(&["host"]), + Grouping::Without(&["i"]), + ] { + for op in OPS { + let output = aggregate_float(&multi, &series, op, grouping).unwrap(); + for field in [0, 1] { + let expected = aggregate_float(&single, &project(field), op, grouping).unwrap(); + let expected = expected + .iter() + .map(|s| (s.metric.clone(), values(s, 0))) + .collect::>(); + for actual in &output { + let (start, actual_values) = values(actual, field); + let present = actual_values + .iter() + .enumerate() + .filter_map(|(i, v)| v.map(|v| (start + i, v.to_bits()))) + .collect::>(); + let reference = expected + .iter() + .find(|(metric, _)| metric == &actual.metric) + .map_or_else(Vec::new, |(_, (start, v))| { + v.iter() + .enumerate() + .filter_map(|(i, v)| v.map(|v| (start + i, v.to_bits()))) + .collect() + }); + assert_eq!(present, reference, "{op:?} {grouping:?} field {field}"); + } + assert!( + expected + .iter() + .all(|(m, _)| output.iter().any(|s| &s.metric == m)) + ); + } + } + } +} + +#[test] +fn state_blocks_keep_absolute_indices_across_boundaries_and_gaps() { + // A 512-point grid spans eight state blocks; inputs straddle a block edge, leave whole + // blocks empty and land in a far block, in both fields. + let schema = Arc::new(SeriesSchema { + fields: vec![ + FieldSpec { name: "a".into() }, + FieldSpec { name: "b".into() }, + ] + .into(), + eval_grid: Some(Arc::new( + EvalGrid::try_new(GridSpec::try_new(0, 1, 512).unwrap()).unwrap(), + )), + }); + let mut gap = vec![None; 200]; + gap[0] = Some(1.0); + gap[199] = Some(2.0); + let inputs = [ + input( + &schema, + metric("m", &[("i", "0")]), + 60, + &[vec![Some(1.0); 8], vec![Some(10.0); 8]], + ), + input( + &schema, + metric("m", &[("i", "1")]), + 100, + &[gap.clone(), vec![None; 200]], + ), + input( + &schema, + metric("m", &[("i", "2")]), + 62, + &[vec![Some(3.0); 4], vec![None, None, Some(5.0), None]], + ), + input( + &schema, + metric("m", &[("i", "3")]), + 509, + &[vec![Some(4.0); 3], vec![Some(6.0); 3]], + ), + ]; + let output = aggregate_float(&schema, &inputs, AggregateOp::Sum, Grouping::By(&[])).unwrap(); + assert_eq!(output.len(), 1); + let mut a = vec![None; 452]; + let mut b = vec![None; 452]; + for i in 60..68 { + a[i - 60] = Some(if (62..66).contains(&i) { 4.0 } else { 1.0 }); + b[i - 60] = Some(if i == 64 { 15.0 } else { 10.0 }); + } + a[100 - 60] = Some(1.0); + a[299 - 60] = Some(2.0); + for i in 509..512 { + a[i - 60] = Some(4.0); + b[i - 60] = Some(6.0); + } + assert_eq!(values(&output[0], 0), (60, a)); + assert_eq!(values(&output[0], 1), (60, b)); +} + +#[test] +fn grouping_labels_follow_prometheus_and_treat_empty_values_as_absent() { + let schema = schema(&["value"]); + let series = [ + input( + &schema, + metric("a", &[("host", ""), ("job", "x")]), + 0, + &[vec![Some(1.0)]], + ), + input(&schema, metric("b", &[("job", "x")]), 0, &[vec![Some(2.0)]]), + ]; + let labels = |grouping| { + aggregate_float(&schema, &series, AggregateOp::Sum, grouping) + .unwrap() + .into_iter() + .map(|s| { + let values = values(&s, 0).1; + (s.metric, values) + }) + .collect::>() + }; + let job = MetricName::try_new(None, metric("m", &[("job", "x")]).tags().to_vec()).unwrap(); + assert_eq!( + labels(Grouping::By(&["host", "job"])), + [(job.clone(), vec![Some(3.0)])] + ); + // `without` always drops the name; only `by (__name__)` keeps it. + assert_eq!( + labels(Grouping::Without(&["host"])), + [(job, vec![Some(3.0)])] + ); + let by_name = labels(Grouping::By(&["__name__"])); + assert_eq!(by_name.len(), 2); + assert_eq!( + by_name[0].0, + MetricName::try_new(Some("a".into()), vec![]).unwrap() + ); + let unnamed = [ + input(&schema, metric("", &[]), 0, &[vec![Some(1.0)]]), + input( + &schema, + MetricName::try_new(None, vec![]).unwrap(), + 0, + &[vec![Some(2.0)]], + ), + ]; + let by_name = aggregate_float( + &schema, + &unnamed, + AggregateOp::Sum, + Grouping::By(&["__name__"]), + ) + .unwrap(); + assert_eq!(by_name.len(), 1); + assert_eq!(by_name[0].metric.name(), None); + let none = labels(Grouping::By(&[])); + assert_eq!( + none, + [(MetricName::try_new(None, vec![]).unwrap(), vec![Some(3.0)])] + ); +} + +#[test] +fn min_and_max_keep_the_first_of_equal_zeros() { + // Prometheus replaces the accumulator only on a strict comparison; the tolerance treats + // the zeros as equal, but their sign shows through a later `1 / x`. + let schema = schema(&["value"]); + for (first, second) in [(0.0, -0.0), (-0.0, 0.0)] { + let series = [("0", first), ("1", second)] + .map(|(i, v)| input(&schema, metric("m", &[("i", i)]), 0, &[vec![Some(v)]])); + for op in [AggregateOp::Min, AggregateOp::Max] { + let output = aggregate_float(&schema, &series, op, Grouping::By(&[])).unwrap(); + let value = values(&output[0], 0).1[0].unwrap(); + assert_eq!( + value.to_bits(), + f64::to_bits(first), + "{op:?} {first} {second}" + ); + } + } +} + +#[test] +fn groups_keep_first_seen_order_for_nested_aggregation() { + // `sum(sum by (g) (m))` from the Prometheus engine with series created as g=a, c, b: the + // outer sum folds 1e308, -1e308, 1e308 and gets 1e308; label order would overflow. + let schema = schema(&["value"]); + let series = [("0", "a", 1e308), ("1", "c", -1e308), ("2", "b", 1e308)].map(|(a, g, v)| { + input( + &schema, + metric("m", &[("a", a), ("g", g)]), + 0, + &[vec![Some(v)]], + ) + }); + let inner = aggregate_float(&schema, &series, AggregateOp::Sum, Grouping::By(&["g"])).unwrap(); + let order = inner + .iter() + .map(|s| s.metric.get("g").unwrap()) + .collect::>(); + assert_eq!(order, ["a", "c", "b"]); + let outer = aggregate_float(&schema, &inner, AggregateOp::Sum, Grouping::By(&[])).unwrap(); + assert_eq!(values(&outer[0], 0), (0, vec![Some(1e308)])); +} + +#[test] +fn grouping_keeps_type_and_unit_labels() { + // Unlike math and arithmetic, Prometheus `generateGroupingLabels` drops only the name. + let schema = schema(&["value"]); + let series = [input( + &schema, + metric( + "a", + &[("__type__", "gauge"), ("__unit__", "seconds"), ("job", "x")], + ), + 0, + &[vec![Some(1.0)]], + )]; + let labels = |grouping| { + aggregate_float(&schema, &series, AggregateOp::Sum, grouping).unwrap()[0] + .metric + .clone() + }; + assert_eq!( + labels(Grouping::Without(&["job"])), + MetricName::try_new( + None, + metric("a", &[("__type__", "gauge"), ("__unit__", "seconds")]) + .tags() + .to_vec() + ) + .unwrap() + ); + assert_eq!( + labels(Grouping::By(&["__unit__"])), + MetricName::try_new( + None, + metric("a", &[("__unit__", "seconds")]).tags().to_vec() + ) + .unwrap() + ); +} + +#[test] +fn empty_inputs_produce_no_groups() { + let schema = schema(&["a", "b"]); + let empty = input(&schema, metric("m", &[]), 127, &[vec![None], vec![None]]); + for op in OPS { + assert!( + aggregate_float(&schema, &[], op, Grouping::By(&[])) + .unwrap() + .is_empty() + ); + let output = + aggregate_float(&schema, std::slice::from_ref(&empty), op, Grouping::By(&[])).unwrap(); + assert!(output.is_empty()); + } +} + +#[test] +fn unsupported_shapes_and_mutated_schema_fail_without_partial_output() { + let schema = schema(&["a", "b"]); + let source = input( + &schema, + metric("m", &[]), + 11, + &[vec![Some(1.0)], vec![Some(2.0)]], + ); + assert!(matches!( + aggregate_float( + &schema, + std::slice::from_ref(&source), + AggregateOp::Sum, + Grouping::By(&["a"]) + ), + Err(DataFusionError::NotImplemented(_)) + )); + let mut histogram = source.clone(); + let batch = HistogramBatchBuilder::new().finish().unwrap(); + histogram.fields = SeriesFields::try_from_vec(vec![ + source.fields.get(0).unwrap().clone(), + Samples::try_from_histogram(UInt32Array::from(vec![None]), batch).unwrap(), + ]) + .unwrap(); + for op in OPS { + assert!(matches!( + aggregate_float( + &schema, + &[source.clone(), histogram.clone()], + op, + Grouping::By(&[]) + ), + Err(DataFusionError::NotImplemented(_)) + )); + } + let mut invalid = source.clone(); + invalid.fields = SeriesFields::one(source.fields.get(0).unwrap().clone()); + // Wrong in two ways at once, the series fails as it does in Map. + let mut raw_invalid = invalid.clone(); + raw_invalid.time = TimeAxis::try_new(vec![1750].into()).unwrap(); + assert_eq!( + aggregate_float( + &schema, + &[raw_invalid.clone()], + AggregateOp::Sum, + Grouping::By(&[]) + ) + .unwrap_err() + .to_string(), + crate::map::map_math(&schema, &raw_invalid, crate::map::MathOp::Abs) + .unwrap_err() + .to_string() + ); + assert!(aggregate_float(&schema, &[invalid], AggregateOp::Sum, Grouping::By(&[])).is_err()); + let mut raw = source.clone(); + raw.time = TimeAxis::try_new(vec![1750].into()).unwrap(); + assert!(aggregate_float(&schema, &[raw], AggregateOp::Sum, Grouping::By(&[])).is_err()); + let mut other_grid = schema.as_ref().clone(); + other_grid.eval_grid = Some(Arc::new( + EvalGrid::try_new(GridSpec::try_new(0, 250, 128).unwrap()).unwrap(), + )); + let other_grid = Arc::new(other_grid); + assert!(aggregate_float(&other_grid, &[source], AggregateOp::Sum, Grouping::By(&[])).is_err()); + let mut raw_schema = schema.as_ref().clone(); + raw_schema.eval_grid = None; + let raw_schema = Arc::new(raw_schema); + assert!(aggregate_float(&raw_schema, &[], AggregateOp::Sum, Grouping::By(&[])).is_err()); +} diff --git a/src/promql/src/golden.rs b/src/promql/src/golden.rs new file mode 100644 index 00000000000..0c502c0281d --- /dev/null +++ b/src/promql/src/golden.rs @@ -0,0 +1,224 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Fixtures evaluated by the Prometheus engine; each fixture's header names its generator. + +use std::sync::Arc; + +use datatypes::arrow::array::Float64Array; +use datatypes::series::samples::{ + FieldSpec, SampleRef, Samples, Series, SeriesFields, SeriesSchema, +}; +use datatypes::series::time::{EvalGrid, GridRange, GridSpec, TimeAxis}; +use datatypes::series::{Label, MetricName}; + +type Points = Vec<(usize, f64)>; + +pub(crate) struct Case { + pub(crate) header: Vec, + pub(crate) expr: String, + pub(crate) schema: Arc, + pub(crate) series: Vec, + pub(crate) scalar: Option, + pub(crate) result: Vec<(MetricName, Points)>, +} + +/// Parses a fixture of `case`/`expr`/`grid`/`series`/`scalar`/`result`/`end` blocks. +pub(crate) fn cases(text: &str) -> Vec { + let mut cases = Vec::new(); + let mut lines = text.lines().filter(|line| !line.starts_with('#')); + while let Some(line) = lines.next() { + let header = line.strip_prefix("case ").expect("case line"); + let expr = lines + .next() + .unwrap() + .strip_prefix("expr ") + .unwrap() + .to_string(); + let grid: Vec = lines.next().unwrap()["grid ".len()..] + .split(' ') + .map(|v| v.parse().unwrap()) + .collect(); + let schema = Arc::new(SeriesSchema { + fields: vec![FieldSpec { + name: "value".into(), + }] + .into(), + eval_grid: Some(Arc::new( + EvalGrid::try_new(GridSpec::try_new(grid[0], grid[1], grid[2] as u64).unwrap()) + .unwrap(), + )), + }); + let mut case = Case { + header: header.split(' ').map(String::from).collect(), + expr, + series: Vec::new(), + scalar: None, + result: Vec::new(), + schema, + }; + for line in lines.by_ref() { + if line == "end" { + break; + } + let (head, points) = line.split_once(';').unwrap(); + let (kind, labels) = head + .trim_end() + .split_once(' ') + .unwrap_or((head.trim_end(), "-")); + let (metric, points) = (parse_metric(labels), parse_points(points)); + match kind { + "series" => { + if let Some(series) = grid_series(&case.schema, metric, &points) { + case.series.push(series); + } + } + "scalar" => case.scalar = grid_series(&case.schema, metric, &points), + "result" => case.result.push((metric, points)), + _ => panic!("unknown line {line}"), + } + } + cases.push(case); + } + cases +} + +fn parse_metric(labels: &str) -> MetricName { + let mut name = None; + let mut tags = Vec::new(); + for label in labels + .split(',') + .filter(|label| *label != "-" && !label.is_empty()) + { + let (key, value) = label.split_once('=').unwrap(); + if key == "__name__" { + name = Some(Arc::from(value)); + } else { + tags.push(Label { + name: key.into(), + value: value.into(), + }); + } + } + MetricName::try_new(name, tags).unwrap() +} + +fn parse_points(points: &str) -> Points { + points + .split_whitespace() + .map(|point| { + let (index, bits) = point.split_once(':').unwrap(); + ( + index.parse().unwrap(), + f64::from_bits(u64::from_str_radix(bits, 16).unwrap()), + ) + }) + .collect() +} + +pub(crate) fn hex(bits: &str) -> f64 { + f64::from_bits(u64::from_str_radix(bits, 16).unwrap()) +} + +/// Builds the trimmed series Eval produces: from the first to the last point, nulls between. +fn grid_series(schema: &SeriesSchema, metric: MetricName, points: &Points) -> Option { + let (&(start, _), &(last, _)) = points.first().zip(points.last())?; + let mut values = vec![None; last - start + 1]; + for &(index, value) in points { + values[index - start] = Some(value); + } + let range = GridRange::try_new(schema.eval_grid.clone().unwrap(), start, values.len()).unwrap(); + Some( + Series::try_new( + schema, + metric, + TimeAxis::Grid(range), + SeriesFields::one(Samples::from_float(Float64Array::from(values))), + ) + .unwrap(), + ) +} + +/// Compares labels and the trimmed absolute range exactly, and values with [`close`]. +pub(crate) fn assert_result(case: &Case, mut actual: Vec) { + actual.sort_by_key(|series| label_key(&series.metric)); + let mut expected = case.result.iter().collect::>(); + expected.sort_by_key(|(metric, _)| label_key(metric)); + let context = || format!("{} ({})", case.expr, case.header.join(" ")); + assert_eq!(actual.len(), expected.len(), "{}", context()); + for (actual, (metric, points)) in actual.iter().zip(expected) { + assert_eq!(&actual.metric, metric, "{}", context()); + let TimeAxis::Grid(range) = &actual.time else { + panic!("{}: lost grid axis", context()); + }; + let mut present = Vec::new(); + for field in actual.fields.iter() { + for (offset, sample) in field.iter().enumerate() { + match sample { + SampleRef::Float(value) => present.push((range.start() + offset, value)), + SampleRef::Missing => {} + _ => panic!("{}: non-float output", context()), + } + } + } + assert_eq!( + (range.start(), range.start() + range.len()), + (points[0].0, points.last().unwrap().0 + 1), + "{}: untrimmed range", + context() + ); + assert_eq!(present.len(), points.len(), "{}", context()); + for (&(index, actual), &(expected_index, expected)) in present.iter().zip(points) { + assert_eq!(index, expected_index, "{}", context()); + assert!( + close(actual, expected), + "{} at {index}: {actual:e} ({:016x}) != {expected:e} ({:016x})", + context(), + actual.to_bits(), + expected.to_bits(), + ); + } + } +} + +/// Prometheus `almost.Equal` with relative tolerance 1e-10, treating results below 1e-10 as +/// equal and any NaN as equal to NaN, as promql-compat compares engines. +pub(crate) fn close(a: f64, b: f64) -> bool { + const EPSILON: f64 = 1e-10; + if a.is_nan() || b.is_nan() { + return a.is_nan() && b.is_nan(); + } + if a == b { + return true; + } + let (diff, sum) = ((a - b).abs(), a.abs() + b.abs()); + let equal = if a == 0.0 || b == 0.0 || sum < f64::MIN_POSITIVE { + diff < EPSILON * f64::MIN_POSITIVE + } else { + diff / sum.min(f64::MAX) < EPSILON + }; + equal || (a.abs() < EPSILON && b.abs() < EPSILON) +} + +fn label_key(metric: &MetricName) -> Vec<(String, String)> { + let mut key = metric + .tags() + .iter() + .map(|label| (label.name.to_string(), label.value.to_string())) + .collect::>(); + if let Some(name) = metric.name() { + key.insert(0, ("__name__".into(), name.into())); + } + key +} diff --git a/src/promql/src/lib.rs b/src/promql/src/lib.rs index 737d90a4581..9ca7fa801fc 100644 --- a/src/promql/src/lib.rs +++ b/src/promql/src/lib.rs @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +pub mod aggregate; pub mod error; pub mod extension_plan; pub mod functions; mod go_sort; +#[cfg(test)] +mod golden; pub mod grid_series; pub mod histogram_eval; pub mod instant_eval; diff --git a/src/promql/src/map.rs b/src/promql/src/map.rs index 5e22906c954..13d1bb00235 100644 --- a/src/promql/src/map.rs +++ b/src/promql/src/map.rs @@ -17,14 +17,25 @@ //! Expression column naming and omission of missing points belong to the planner/output adapter; //! these kernels retain the shared field schema and represent missing grid positions by validity. +mod broadcast; +mod comparison; +mod go_math; #[cfg(test)] mod tests; +pub use broadcast::{ScalarSeriesOperand, map_arithmetic_series, map_compare_series}; +pub use comparison::{Comparison, ComparisonOp, map_compare, scalar_arithmetic, scalar_compare}; + +use std::f64::consts::PI; +use std::sync::Arc; + use datafusion::error::{DataFusionError, Result}; use datatypes::arrow::array::Float64Array; use datatypes::series::MetricName; -use datatypes::series::samples::{DenseSamplesRef, Samples, Series, SeriesFields, SeriesSchema}; -use datatypes::series::time::TimeAxis; +use datatypes::series::samples::{ + DenseSamplesRef, SampleRef, Samples, Series, SeriesFields, SeriesSchema, +}; +use datatypes::series::time::{GridRange, TimeAxis}; use crate::functions::Round; @@ -40,7 +51,57 @@ pub enum MathOp { /// IEEE square root, returning NaN for negative input. Sqrt, /// Rounds to a constant multiple; use `1.0` for PromQL's default argument. - Round { nearest: f64 }, + Round { + nearest: f64, + }, + Exp, + Ln, + Log2, + Log10, + Sin, + Cos, + Tan, + Asin, + Acos, + Atan, + Sinh, + Cosh, + Tanh, + Asinh, + Acosh, + Atanh, + Deg, + Rad, + Sgn, + Clamp { + min: f64, + max: f64, + }, + ClampMin { + min: f64, + }, + ClampMax { + max: f64, + }, +} + +/// Float arithmetic between a vector and a scalar, as in Prometheus. +#[derive(Clone, Copy, Debug)] +pub enum ArithmeticOp { + Add, + Subtract, + Multiply, + Divide, + Modulo, + Power, + Atan2, +} + +/// The scalar's position in a binary expression; noncommutative operators retain this order. +#[derive(Clone, Copy, Debug)] +pub enum ScalarOperand { + Left(f64), + Right(f64), } /// Applies float math to every field of one evaluated series and drops the metric name, like @@ -56,74 +117,287 @@ pub enum MathOp { /// admitted to the ordinary path before execution; this function neither falls back nor returns /// partial results. /// +/// Returns `None` for `clamp` with `max < min`, which yields no series in Prometheus. +/// /// Distinct inputs can share a label set once the name is dropped. Merging them, or failing /// when both have a value at one step, is left to the caller (Prometheus /// `mergeSeriesWithSameLabelset`). -pub fn map_math(schema: &SeriesSchema, series: &Series, op: MathOp) -> Result { - if !matches!(series.time, TimeAxis::Grid(_)) { - return Err(DataFusionError::Execution( - "Map math requires an evaluated grid time axis".into(), - )); +pub fn map_math(schema: &SeriesSchema, series: &Series, op: MathOp) -> Result> { + if op.is_empty_clamp() { + validate_float_series(schema, series)?; + return Ok(None); } + let mut output = map_float_fields(schema, series, |floats| op.apply(floats))?; + output.metric = drop_metric_name(&output.metric)?; + Ok(Some(output)) +} + +/// Negates every float field and drops the metric name, like Prometheus' unary minus. +/// +/// Shares the evaluated-grid, missingness, unsupported-type and same-labelset contract of +/// [`map_math`]. +pub fn map_negate(schema: &SeriesSchema, series: &Series) -> Result { + let mut output = map_float_fields(schema, series, |floats| floats.unary(|v| -v))?; + output.metric = drop_metric_name(&output.metric)?; + Ok(output) +} + +/// Applies arithmetic against a constant scalar to every field and drops the metric name. +/// +/// Shares the evaluated-grid, missingness, unsupported-type and same-labelset contract of +/// [`map_math`]. Results follow Prometheus `vectorElemBinop`, including Go's `math.Pow`, +/// `math.Mod` and `math.Atan2`. +pub fn map_arithmetic( + schema: &SeriesSchema, + series: &Series, + op: ArithmeticOp, + scalar: ScalarOperand, +) -> Result { + let mut output = map_float_fields(schema, series, |floats| op.apply(floats, scalar))?; + output.metric = drop_metric_name(&output.metric)?; + Ok(output) +} + +/// Produces an unlabelled scalar over exactly the requested evaluated range. +/// +/// Scalar results require a single-field schema. No points outside `range` are allocated. +pub fn constant_series(schema: &SeriesSchema, range: GridRange, scalar: f64) -> Result { + let fields = SeriesFields::one(Samples::from_float(Float64Array::from(vec![ + scalar; + range.len() + ]))); + Series::try_new( + schema, + MetricName::try_new(None, vec![]).map_err(series_error)?, + TimeAxis::Grid(range), + fields, + ) + .map_err(series_error) +} + +/// Evaluates `pi()` without a vector input, preserving the requested short grid range. +pub fn map_pi(schema: &SeriesSchema, range: GridRange) -> Result { + constant_series(schema, range, PI) +} + +fn map_float_fields( + schema: &SeriesSchema, + series: &Series, + map: impl Fn(&Float64Array) -> Float64Array, +) -> Result { + validate_float_series(schema, series)?; let fields = series .fields .iter() - .map(|samples| map_samples(samples, op)) + .map(|samples| map_samples(samples, &map)) .collect::>>()?; let fields = SeriesFields::try_from_vec(fields).map_err(series_error)?; - let metric = drop_metric_name(&series.metric)?; - Series::try_new(schema, metric, series.time.clone(), fields).map_err(series_error) + Series::try_new(schema, series.metric.clone(), series.time.clone(), fields) + .map_err(series_error) } /// Prometheus `DropReserved(schema.IsMetadataLabel)` drops the type and unit labels with the /// name. Empty values are dropped too: Prometheus has no empty labels, and keeping them would /// hide a same-labelset collision from the caller. pub(crate) fn drop_metric_name(metric: &MetricName) -> Result { - // One rebuild: removing labels one by one copies the label array each time. + rebuild_labels(metric, None, |name| { + !matches!(name, "__type__" | "__unit__") + }) +} + +/// Drops labels with empty values, which Prometheus treats as absent. +pub(crate) fn drop_empty_labels(metric: &MetricName) -> Result { + let name = metric.name().filter(|name| !name.is_empty()).map(Arc::from); + rebuild_labels(metric, name, |_| true) +} + +/// One rebuild: removing labels one by one copies the label array each time. +fn rebuild_labels( + metric: &MetricName, + name: Option>, + keep: impl Fn(&str) -> bool, +) -> Result { let tags = metric .tags() .iter() - .filter(|label| { - !label.value.is_empty() && !matches!(label.name.as_ref(), "__type__" | "__unit__") - }) + .filter(|label| !label.value.is_empty() && keep(&label.name)) .cloned() .collect(); - MetricName::try_new(None, tags).map_err(series_error) + MetricName::try_new(name, tags).map_err(series_error) } impl MathOp { fn apply(self, floats: &Float64Array) -> Float64Array { + floats.unary(|sample| self.calculate(sample)) + } + + /// The function applied to one sample. + pub(crate) fn calculate(self, v: f64) -> f64 { match self { - Self::Abs => floats.unary(f64::abs), - Self::Ceil => floats.unary(f64::ceil), - Self::Floor => floats.unary(f64::floor), - Self::Sqrt => floats.unary(f64::sqrt), - Self::Round { nearest } => { - floats.unary(|sample| Round::round_to_nearest(sample, nearest)) + Self::Exp => go_math::exp(v), + Self::Ln => go_math::log(v), + Self::Log2 => go_math::log2(v), + Self::Log10 => go_math::log10(v), + Self::Sin => go_math::sin(v), + Self::Cos => go_math::cos(v), + Self::Tan => go_math::tan(v), + Self::Asin => v.asin(), + Self::Acos => go_math::acos(v), + Self::Atan => v.atan(), + Self::Sinh => go_math::sinh(v), + Self::Cosh => go_math::cosh(v), + Self::Tanh => v.tanh(), + Self::Asinh => v.asinh(), + Self::Acosh => v.acosh(), + Self::Atanh => v.atanh(), + // Prometheus' operation order, which rounds differently from to_degrees/to_radians. + Self::Deg => v * 180.0 / PI, + Self::Rad => v * PI / 180.0, + // Zeros and NaN are returned unchanged, so -0 keeps its sign. + Self::Sgn => { + if v < 0.0 { + -1.0 + } else if v > 0.0 { + 1.0 + } else { + v + } } + Self::Clamp { min, max } => go_max(min, go_min(max, v)), + Self::ClampMin { min } => go_max(min, v), + Self::ClampMax { max } => go_min(max, v), + Self::Abs => v.abs(), + Self::Ceil => v.ceil(), + Self::Floor => v.floor(), + Self::Sqrt => v.sqrt(), + Self::Round { nearest } => Round::round_to_nearest(v, nearest), + } + } + + /// Prometheus returns an empty vector when `max < min`; NaN bounds do not compare. + fn is_empty_clamp(self) -> bool { + match self { + Self::Clamp { min, max } => max < min, + _ => false, } } } -fn map_samples(samples: &Samples, op: MathOp) -> Result { +/// Go `math.Max`: +Inf wins over NaN, and +0 over -0. +fn go_max(x: f64, y: f64) -> f64 { + if x == f64::INFINITY || y == f64::INFINITY { + f64::INFINITY + } else if x.is_nan() || y.is_nan() { + f64::NAN + } else if x == 0.0 && x == y { + if x.is_sign_negative() { y } else { x } + } else if x > y { + x + } else { + y + } +} + +/// Go `math.Min`: -Inf wins over NaN, and -0 over +0. +fn go_min(x: f64, y: f64) -> f64 { + if x == f64::NEG_INFINITY || y == f64::NEG_INFINITY { + f64::NEG_INFINITY + } else if x.is_nan() || y.is_nan() { + f64::NAN + } else if x == 0.0 && x == y { + if x.is_sign_negative() { x } else { y } + } else if x < y { + x + } else { + y + } +} + +impl ArithmeticOp { + /// Prometheus `vectorElemBinop` for two floats. + pub(crate) fn calculate(self, left: f64, right: f64) -> f64 { + match self { + Self::Add => left + right, + Self::Subtract => left - right, + Self::Multiply => left * right, + Self::Divide => left / right, + Self::Modulo => go_math::fmod(left, right), + Self::Power => go_math::pow(left, right), + Self::Atan2 => go_math::atan2(left, right), + } + } + + fn apply(self, floats: &Float64Array, scalar: ScalarOperand) -> Float64Array { + match scalar { + ScalarOperand::Left(scalar) => floats.unary(|sample| self.calculate(scalar, sample)), + ScalarOperand::Right(scalar) => floats.unary(|sample| self.calculate(sample, scalar)), + } + } +} + +fn map_samples(samples: &Samples, map: &impl Fn(&Float64Array) -> Float64Array) -> Result { let chunks = samples .segments() .iter() - .map(|segment| map_float_segment(segment, op)) + .map(|segment| map_float_segment(segment, map)) .collect::>>()?; Samples::try_from_chunks(chunks).map_err(series_error) } -fn map_float_segment(segment: &Samples, op: MathOp) -> Result { +fn map_float_segment( + segment: &Samples, + map: &impl Fn(&Float64Array) -> Float64Array, +) -> Result { let Some(DenseSamplesRef::Float(floats)) = segment.dense() else { return Err(DataFusionError::NotImplemented( - "Map math supports only float samples; histogram/mixed samples are not supported" + "Series operators support only float samples; histogram/mixed samples are not supported" .into(), )); }; - Ok(Samples::from_float(op.apply(floats))) + Ok(Samples::from_float(map(floats))) } fn series_error(error: datatypes::error::Error) -> DataFusionError { DataFusionError::External(Box::new(error)) } + +/// Checks an evaluated float series up front, so no segment of another type yields a result. +pub(crate) fn validate_float_series<'a>( + schema: &SeriesSchema, + series: &'a Series, +) -> Result<&'a GridRange> { + let TimeAxis::Grid(range) = &series.time else { + return Err(DataFusionError::Execution( + "Series operators require an evaluated grid time axis".into(), + )); + }; + Series::try_new( + schema, + series.metric.clone(), + series.time.clone(), + series.fields.clone(), + ) + .map_err(series_error)?; + for field in series.fields.iter() { + if field + .segments() + .iter() + .any(|segment| !matches!(segment.dense(), Some(DenseSamplesRef::Float(_)))) + { + return Err(DataFusionError::NotImplemented( + "Series operators support only float samples; histogram/mixed samples are not supported" + .into(), + )); + } + } + Ok(range) +} + +/// A sample of a series accepted by [`validate_float_series`]. +fn float_sample(sample: SampleRef<'_>) -> Option { + match sample { + SampleRef::Float(sample) => Some(sample), + SampleRef::Missing => None, + _ => unreachable!("validated as float"), + } +} diff --git a/src/promql/src/map/broadcast.rs b/src/promql/src/map/broadcast.rs new file mode 100644 index 00000000000..1c0bb4c46cb --- /dev/null +++ b/src/promql/src/map/broadcast.rs @@ -0,0 +1,141 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::sync::Arc; + +use datafusion::error::{DataFusionError, Result}; +use datatypes::series::MetricName; +use datatypes::series::samples::{FieldSpec, Samples, Series, SeriesSchema}; +use datatypes::series::time::GridRange; + +use crate::grid_series::GridSeriesBuilder; +use crate::map::{ + ArithmeticOp, Comparison, drop_metric_name, float_sample, series_error, validate_float_series, +}; + +/// A time-varying, unlabelled single-field scalar, with explicit operand direction. +#[derive(Clone, Copy, Debug)] +pub enum ScalarSeriesOperand<'a> { + Left(&'a Series), + Right(&'a Series), +} + +/// Applies arithmetic between vector fields and a time-varying scalar, aligned by absolute grid +/// index, and drops the metric name. +/// +/// Prometheus scalars exist at every step; a missing scalar point here yields a missing output. +/// The output is trimmed to its first and last valid rows, and `None` means no valid row. The +/// scalar must be unlabelled and single-field on the same grid; histogram/mixed/raw inputs are +/// rejected even outside the overlap. Two unlabelled single-field inputs also evaluate +/// scalar–scalar operations. Same-labelset merging is left to the caller, as in +/// [`crate::map::map_math`]. +pub fn map_arithmetic_series( + schema: &Arc, + vector: &Series, + op: ArithmeticOp, + scalar: ScalarSeriesOperand<'_>, +) -> Result> { + let metric = drop_metric_name(&vector.metric)?; + map_grid_scalar(schema, vector, scalar, metric, |left, right, _| { + Some(op.calculate(left, right)) + }) +} + +/// Compares against a time-varying scalar. Filter keeps vector values and labels; bool emits +/// 0/1 and drops the metric name. +/// +/// Shares [`map_arithmetic_series`]'s alignment and trimming contract. Each field is compared +/// independently; a row is kept where any field passes a filter. +pub fn map_compare_series( + schema: &Arc, + vector: &Series, + comparison: Comparison, + scalar: ScalarSeriesOperand<'_>, +) -> Result> { + let metric = if matches!(comparison, Comparison::Bool(_)) { + drop_metric_name(&vector.metric)? + } else { + vector.metric.clone() + }; + map_grid_scalar(schema, vector, scalar, metric, |left, right, sample| { + comparison.apply(left, right, sample) + }) +} + +/// Calls `calculate(left, right, vector_sample)` at each index where both operands exist. +fn map_grid_scalar( + schema: &Arc, + vector: &Series, + scalar: ScalarSeriesOperand<'_>, + metric: MetricName, + calculate: impl Fn(f64, f64, f64) -> Option, +) -> Result> { + let vector_range = validate_float_series(schema, vector)?; + let (scalar_series, scalar_left) = match scalar { + ScalarSeriesOperand::Left(s) => (s, true), + ScalarSeriesOperand::Right(s) => (s, false), + }; + let scalar_range = validate_scalar(schema, scalar_series)?; + let start = vector_range.start().max(scalar_range.start()); + let end = + (vector_range.start() + vector_range.len()).min(scalar_range.start() + scalar_range.len()); + let mut builder = GridSeriesBuilder::try_new(schema.clone())?; + if start >= end { + return builder.finish(metric); + } + let len = end - start; + let scalar_samples = scalar_series.fields.as_slice()[0] + .slice(start - scalar_range.start(), len) + .map_err(series_error)?; + let fields = vector + .fields + .iter() + .map(|field| field.slice(start - vector_range.start(), len)) + .collect::, _>>() + .map_err(series_error)?; + let mut fields = fields.iter().map(Samples::iter).collect::>(); + let mut row = Vec::with_capacity(fields.len()); + for (offset, scalar) in scalar_samples.iter().enumerate() { + let scalar = float_sample(scalar); + row.clear(); + for field in &mut fields { + let sample = float_sample(field.next().expect("sliced to the same length")); + row.push(scalar.zip(sample).and_then(|(scalar, sample)| { + if scalar_left { + calculate(scalar, sample, sample) + } else { + calculate(sample, scalar, sample) + } + })); + } + builder.push(start + offset, &row)?; + } + builder.finish(metric) +} + +fn validate_scalar<'a>(schema: &SeriesSchema, scalar: &'a Series) -> Result<&'a GridRange> { + if scalar.metric.name().is_some() || !scalar.metric.tags().is_empty() { + return Err(DataFusionError::Execution( + "grid scalar must be unlabelled".into(), + )); + } + let schema = SeriesSchema { + fields: vec![FieldSpec { + name: "scalar".into(), + }] + .into(), + eval_grid: schema.eval_grid.clone(), + }; + validate_float_series(&schema, scalar) +} diff --git a/src/promql/src/map/comparison.rs b/src/promql/src/map/comparison.rs new file mode 100644 index 00000000000..41e4e73d04d --- /dev/null +++ b/src/promql/src/map/comparison.rs @@ -0,0 +1,128 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::sync::Arc; + +use datafusion::error::Result; +use datatypes::series::samples::{Series, SeriesSchema}; +use datatypes::series::time::GridRange; + +use crate::grid_series::GridSeriesBuilder; +use crate::map::{ + ArithmeticOp, ScalarOperand, constant_series, drop_metric_name, float_sample, map_arithmetic, + validate_float_series, +}; + +/// IEEE comparisons: NaN only satisfies `NotEqual`, and signed zeros compare equal. +#[derive(Clone, Copy, Debug)] +pub enum ComparisonOp { + Equal, + NotEqual, + Less, + LessEqual, + Greater, + GreaterEqual, +} + +/// Filter keeps the vector value and labels; bool emits 0/1 and drops the metric name. +#[derive(Clone, Copy, Debug)] +pub enum Comparison { + Filter(ComparisonOp), + Bool(ComparisonOp), +} + +/// Compares a vector with a constant scalar, like Prometheus `VectorscalarBinop`. +/// +/// Each field is compared independently; a row is kept where any field passes a filter. The +/// output is trimmed to its first and last kept rows, and `None` means nothing passed. Raw axes +/// and histogram/mixed inputs share [`crate::map::map_math`]'s rejection contract. +pub fn map_compare( + schema: &Arc, + series: &Series, + comparison: Comparison, + scalar: ScalarOperand, +) -> Result> { + let range = validate_float_series(schema, series)?; + let mut builder = GridSeriesBuilder::try_new(schema.clone())?; + let mut fields = series + .fields + .iter() + .map(|field| field.iter()) + .collect::>(); + let mut row = Vec::with_capacity(fields.len()); + for index in range.start()..range.start() + range.len() { + row.clear(); + for field in &mut fields { + let sample = float_sample(field.next().expect("validated length")); + row.push(sample.and_then(|sample| { + let (left, right) = match scalar { + ScalarOperand::Left(scalar) => (scalar, sample), + ScalarOperand::Right(scalar) => (sample, scalar), + }; + comparison.apply(left, right, sample) + })); + } + builder.push(index, &row)?; + } + let metric = if matches!(comparison, Comparison::Bool(_)) { + drop_metric_name(&series.metric)? + } else { + series.metric.clone() + }; + builder.finish(metric) +} + +/// Evaluates scalar–scalar arithmetic as an unlabelled, single-field series on `range`. +pub fn scalar_arithmetic( + schema: &SeriesSchema, + range: GridRange, + op: ArithmeticOp, + operands: [f64; 2], +) -> Result { + let left = constant_series(schema, range, operands[0])?; + map_arithmetic(schema, &left, op, ScalarOperand::Right(operands[1])) +} + +/// Evaluates scalar–scalar comparison, which requires bool in PromQL, on `range`. +pub fn scalar_compare( + schema: &SeriesSchema, + range: GridRange, + op: ComparisonOp, + operands: [f64; 2], +) -> Result { + constant_series(schema, range, f64::from(op.apply(operands[0], operands[1]))) +} + +impl Comparison { + /// The output for one `left op right` pair, where `vector` is the vector operand's value. + pub(crate) fn apply(self, left: f64, right: f64, vector: f64) -> Option { + match self { + Self::Filter(op) => op.apply(left, right).then_some(vector), + Self::Bool(op) => Some(f64::from(op.apply(left, right))), + } + } +} + +impl ComparisonOp { + fn apply(self, left: f64, right: f64) -> bool { + match self { + Self::Equal => left == right, + Self::NotEqual => left != right, + Self::Less => left < right, + Self::LessEqual => left <= right, + Self::Greater => left > right, + Self::GreaterEqual => left >= right, + } + } +} diff --git a/src/promql/src/map/go_math.rs b/src/promql/src/map/go_math.rs new file mode 100644 index 00000000000..34e36132c8f --- /dev/null +++ b/src/promql/src/map/go_math.rs @@ -0,0 +1,592 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! The Go `math` functions whose results on amd64 differ from Rust's standard library beyond +//! the comparison tolerance (relative 1e-10), or in whether they overflow or keep their sign. +//! Everything else uses the standard library. Inputs where the standard library fails, all in +//! `go_math_cases.txt`: +//! +//! - `exp`, `sinh`, `cosh`: +Inf from `exp(709.44)` on, where libm is finite up to 709.78. +//! - `log`, `log10`: `log_amd64.s` does not normalize subnormals (`log(5e-324)` is -709.09, +//! not -744.44). +//! - `log2`: `log(frac) / ln 2 + exp` cancels near 1 (`log2(1.0000000000882365)`). +//! - `acos`: `π/2 - asin(x)` cancels near 1 (`acos(0.999999992587986)`). +//! - `sin`, `cos`, `tan`: `trigReduce` loses precision from 2^29 on (`sin(1.0446683604636763e12)`). +//! - `pow`: repeated squaring accumulates error (`pow(1.0000006850274261, 9.80019037e8)`), and +//! subnormal bases go through `log`. +//! - `atan2`: `atan(y / x)` underflows to +0 and picks the wrong half-turn +//! (`atan2(-1e-300, -1e300)` is +π). +//! +//! `asin` and `atan` are kept only as dependencies of `acos` and `atan2`. + +#![allow(clippy::excessive_precision)] + +use std::f64::consts::{FRAC_1_SQRT_2, FRAC_PI_2, FRAC_PI_4, LOG2_E, PI}; + +#[cfg(test)] +mod tests; + +const MASK: u64 = 0x7FF; +const SHIFT: u32 = 64 - 11 - 1; +const BIAS: i64 = 1023; + +// Go folds constant expressions exactly before rounding, so derived constants are spelled +// as Go's bits where a Rust expression would round differently. +const FOUR_OVER_PI: f64 = f64::from_bits(0x3ff45f306dc9c883); +const THREE_PI_4: f64 = f64::from_bits(0x4002d97c7f3321d2); +const INV_LN10: f64 = f64::from_bits(0x3fdbcb7b1526e50e); +const INV_LN2: f64 = f64::from_bits(0x3ff71547652b82fe); + +/// Go `math.Exp` on amd64 overflows once `x * log2(e)` rounds to 1024, from about 709.44 +/// (`exp_amd64.s`); below that libm is within the tolerance. +pub(crate) fn exp(x: f64) -> f64 { + if x.is_finite() && (LOG2_E * x).round_ties_even() >= 1024.0 { + f64::INFINITY + } else { + x.exp() + } +} + +/// Go `math.Mod`. Both Go's loop and C `fmod` compute the exact remainder with the sign of +/// `x`, and return NaN for a zero divisor, an infinite dividend or NaN input. +pub(crate) fn fmod(x: f64, y: f64) -> f64 { + x % y +} + +/// Go `math.Pow`. +pub(crate) fn pow(x: f64, y: f64) -> f64 { + if y == 0.0 || x == 1.0 { + return 1.0; + } + if y == 1.0 { + return x; + } + if x.is_nan() || y.is_nan() { + return f64::NAN; + } + if x == 0.0 { + if y < 0.0 { + return if x.is_sign_negative() && is_odd_int(y) { + f64::NEG_INFINITY + } else { + f64::INFINITY + }; + } + return if x.is_sign_negative() && is_odd_int(y) { + x + } else { + 0.0 + }; + } + if y.is_infinite() { + return if x == -1.0 { + 1.0 + } else if (x.abs() < 1.0) == (y > 0.0) { + 0.0 + } else { + f64::INFINITY + }; + } + if x.is_infinite() { + if x < 0.0 { + return pow(1.0 / x, -y); + } + return if y < 0.0 { 0.0 } else { f64::INFINITY }; + } + if y == 0.5 { + return x.sqrt(); + } + if y == -0.5 { + return 1.0 / x.sqrt(); + } + + let (mut yi, mut yf) = (y.abs().trunc(), y.abs().fract()); + if yf != 0.0 && x < 0.0 { + return f64::NAN; + } + if yi >= (1u64 << 63) as f64 { + return if x == -1.0 { + 1.0 + } else if (x.abs() < 1.0) == (y > 0.0) { + 0.0 + } else { + f64::INFINITY + }; + } + + let mut a1 = 1.0; + let mut ae: i64 = 0; + if yf != 0.0 { + if yf > 0.5 { + yf -= 1.0; + yi += 1.0; + } + a1 = exp(yf * log(x)); + } + + let (mut x1, mut xe) = frexp(x); + let mut i = yi as i64; + while i != 0 { + if !(-(1 << 12)..=(1 << 12)).contains(&xe) { + ae += xe; + break; + } + if i & 1 == 1 { + a1 *= x1; + ae += xe; + } + x1 *= x1; + xe <<= 1; + if x1 < 0.5 { + x1 += x1; + xe -= 1; + } + i >>= 1; + } + + if y < 0.0 { + a1 = 1.0 / a1; + ae = -ae; + } + ldexp(a1, ae) +} + +fn is_odd_int(x: f64) -> bool { + if x.abs() >= (1u64 << 53) as f64 { + return false; + } + x.fract() == 0.0 && (x.trunc() as i64) & 1 == 1 +} + +fn normalize(x: f64) -> (f64, i64) { + if x.abs() < f64::MIN_POSITIVE { + return (x * (1u64 << 52) as f64, -52); + } + (x, 0) +} + +/// Go `math.Frexp`. +fn frexp(f: f64) -> (f64, i64) { + if f == 0.0 || f.is_infinite() || f.is_nan() { + return (f, 0); + } + let (f, mut exp) = normalize(f); + let mut x = f.to_bits(); + exp += ((x >> SHIFT) & MASK) as i64 - BIAS + 1; + x &= !(MASK << SHIFT); + x |= ((-1 + BIAS) as u64) << SHIFT; + (f64::from_bits(x), exp) +} + +/// Go `math.Ldexp`. +fn ldexp(frac: f64, exp: i64) -> f64 { + if frac == 0.0 || frac.is_infinite() || frac.is_nan() { + return frac; + } + let (frac, e) = normalize(frac); + let mut exp = exp + e; + let mut x = frac.to_bits(); + exp += ((x >> SHIFT) & MASK) as i64 - BIAS; + if exp < -1075 { + return 0.0_f64.copysign(frac); + } + if exp > 1023 { + return if frac < 0.0 { + f64::NEG_INFINITY + } else { + f64::INFINITY + }; + } + let mut m = 1.0; + if exp < -1022 { + exp += 53; + m = 1.0 / (1u64 << 53) as f64; + } + x &= !(MASK << SHIFT); + x |= ((exp + BIAS) as u64) << SHIFT; + m * f64::from_bits(x) +} + +/// Go `math.Atan2`. +pub(crate) fn atan2(y: f64, x: f64) -> f64 { + if y.is_nan() || x.is_nan() { + return f64::NAN; + } + if y == 0.0 { + if x >= 0.0 && !x.is_sign_negative() { + return 0.0_f64.copysign(y); + } + return PI.copysign(y); + } + if x == 0.0 { + return FRAC_PI_2.copysign(y); + } + if x.is_infinite() { + if x > 0.0 { + return if y.is_infinite() { + FRAC_PI_4.copysign(y) + } else { + 0.0_f64.copysign(y) + }; + } + return if y.is_infinite() { + THREE_PI_4.copysign(y) + } else { + PI.copysign(y) + }; + } + if y.is_infinite() { + return FRAC_PI_2.copysign(y); + } + let q = atan(y / x); + if x < 0.0 { + if q <= 0.0 { + return q + PI; + } + return q - PI; + } + q +} + +/// Go `math.Atan`. +fn atan(x: f64) -> f64 { + if x == 0.0 { + return x; + } + if x > 0.0 { satan(x) } else { -satan(-x) } +} + +fn satan(x: f64) -> f64 { + const MOREBITS: f64 = 6.123233995736765886130e-17; + const TAN3PIO8: f64 = 2.41421356237309504880; + if x <= 0.66 { + return xatan(x); + } + if x > TAN3PIO8 { + return FRAC_PI_2 - xatan(1.0 / x) + MOREBITS; + } + FRAC_PI_4 + xatan((x - 1.0) / (x + 1.0)) + 0.5 * MOREBITS +} + +fn xatan(x: f64) -> f64 { + const P0: f64 = -8.750608600031904122785e-01; + const P1: f64 = -1.615753718733365076637e+01; + const P2: f64 = -7.500855792314704667340e+01; + const P3: f64 = -1.228866684490136173410e+02; + const P4: f64 = -6.485021904942025371773e+01; + const Q0: f64 = 2.485846490142306297962e+01; + const Q1: f64 = 1.650270098316988542046e+02; + const Q2: f64 = 4.328810604912902668951e+02; + const Q3: f64 = 4.853903996359136964868e+02; + const Q4: f64 = 1.945506571482613964425e+02; + let mut z = x * x; + z = z * ((((P0 * z + P1) * z + P2) * z + P3) * z + P4) + / (((((z + Q0) * z + Q1) * z + Q2) * z + Q3) * z + Q4); + x * z + x +} + +/// Go `math.Asin`. +fn asin(x: f64) -> f64 { + if x == 0.0 { + return x; + } + let (x, sign) = if x < 0.0 { (-x, true) } else { (x, false) }; + if x > 1.0 { + return f64::NAN; + } + let mut temp = (1.0 - x * x).sqrt(); + if x > 0.7 { + temp = FRAC_PI_2 - satan(temp / x); + } else { + temp = satan(x / temp); + } + if sign { -temp } else { temp } +} + +/// Go `math.Acos`. +pub(crate) fn acos(x: f64) -> f64 { + FRAC_PI_2 - asin(x) +} + +const PI4A: f64 = 7.85398125648498535156e-1; +const PI4B: f64 = 3.77489470793079817668e-8; +const PI4C: f64 = 2.69515142907905952645e-15; +const REDUCE_THRESHOLD: f64 = (1u64 << 29) as f64; + +const SIN: [f64; 6] = [ + 1.58962301576546568060e-10, + -2.50507477628578072866e-8, + 2.75573136213857245213e-6, + -1.98412698295895385996e-4, + 8.33333333332211858878e-3, + -1.66666666666666307295e-1, +]; +const COS: [f64; 6] = [ + -1.13585365213876817300e-11, + 2.08757008419747316778e-9, + -2.75573141792967388112e-7, + 2.48015872888517045348e-5, + -1.38888888888730564116e-3, + 4.16666666666665929218e-2, +]; + +/// The octant and the reduced argument of a non-negative finite `x`. +fn reduce(x: f64) -> (u64, f64) { + if x >= REDUCE_THRESHOLD { + return trig_reduce(x); + } + let mut j = (x * FOUR_OVER_PI) as u64; + let mut y = j as f64; + if j & 1 == 1 { + j += 1; + y += 1.0; + } + (j, ((x - y * PI4A) - y * PI4B) - y * PI4C) +} + +fn sin_poly(z: f64, zz: f64) -> f64 { + z + z + * zz + * ((((((SIN[0] * zz) + SIN[1]) * zz + SIN[2]) * zz + SIN[3]) * zz + SIN[4]) * zz + SIN[5]) +} + +fn cos_poly(zz: f64) -> f64 { + 1.0 - 0.5 * zz + + zz * zz + * ((((((COS[0] * zz) + COS[1]) * zz + COS[2]) * zz + COS[3]) * zz + COS[4]) * zz + + COS[5]) +} + +/// Go `math.Cos`. +pub(crate) fn cos(x: f64) -> f64 { + if x.is_nan() || x.is_infinite() { + return f64::NAN; + } + let (mut j, z) = reduce(x.abs()); + j &= 7; + let mut sign = false; + if j > 3 { + j -= 4; + sign = !sign; + } + if j > 1 { + sign = !sign; + } + let zz = z * z; + let y = if j == 1 || j == 2 { + sin_poly(z, zz) + } else { + cos_poly(zz) + }; + if sign { -y } else { y } +} + +/// Go `math.Sin`. +pub(crate) fn sin(x: f64) -> f64 { + if x == 0.0 || x.is_nan() { + return x; + } + if x.is_infinite() { + return f64::NAN; + } + let (x, mut sign) = if x < 0.0 { (-x, true) } else { (x, false) }; + let (mut j, z) = reduce(x); + j &= 7; + if j > 3 { + sign = !sign; + j -= 4; + } + let zz = z * z; + let y = if j == 1 || j == 2 { + cos_poly(zz) + } else { + sin_poly(z, zz) + }; + if sign { -y } else { y } +} + +/// Go `math.Tan`. +pub(crate) fn tan(x: f64) -> f64 { + const P: [f64; 3] = [ + -1.30936939181383777646e4, + 1.15351664838587416140e6, + -1.79565251976484877988e7, + ]; + const Q: [f64; 5] = [ + 1.00000000000000000000e0, + 1.36812963470692954678e4, + -1.32089234440210967447e6, + 2.50083801823357915839e7, + -5.38695755929454629881e7, + ]; + if x == 0.0 || x.is_nan() { + return x; + } + if x.is_infinite() { + return f64::NAN; + } + let (x, sign) = if x < 0.0 { (-x, true) } else { (x, false) }; + let (j, z) = reduce(x); + let zz = z * z; + let mut y = if zz > 1e-14 { + z + z + * (zz * (((P[0] * zz) + P[1]) * zz + P[2]) + / ((((zz + Q[1]) * zz + Q[2]) * zz + Q[3]) * zz + Q[4])) + } else { + z + }; + if j & 2 == 2 { + y = -1.0 / y; + } + if sign { -y } else { y } +} + +const M_PI4: [u64; 20] = [ + 0x0000000000000001, + 0x45f306dc9c882a53, + 0xf84eafa3ea69bb81, + 0xb6c52b3278872083, + 0xfca2c757bd778ac3, + 0x6e48dc74849ba5c0, + 0x0c925dd413a32439, + 0xfc3bd63962534e7d, + 0xd1046bea5d768909, + 0xd338e04d68befc82, + 0x7323ac7306a673e9, + 0x3908bf177bf25076, + 0x3ff12fffbc0b301f, + 0xde5e2316b414da3e, + 0xda6cfd9e4f96136e, + 0x9e8c7ecd3cbfd45a, + 0xea4f758fd7cbe2f6, + 0x7a0e73ef14a525d4, + 0xd7f6bf623f1aba10, + 0xac06608df8f6d757, +]; + +/// Go `trigReduce`: Payne–Hanek reduction for `x >= 2^29`. +fn trig_reduce(x: f64) -> (u64, f64) { + if x < FRAC_PI_4 { + return (0, x); + } + let mut ix = x.to_bits(); + let exp = ((ix >> SHIFT) & MASK) as i64 - BIAS - SHIFT as i64; + ix &= !(MASK << SHIFT); + ix |= 1 << SHIFT; + let (digit, bitshift) = (((exp + 61) / 64) as usize, ((exp + 61) % 64) as u32); + let join = |hi: u64, lo: u64| shl(hi, bitshift) | shr(lo, 64 - bitshift); + let z0 = join(M_PI4[digit], M_PI4[digit + 1]); + let z1 = join(M_PI4[digit + 1], M_PI4[digit + 2]); + let z2 = join(M_PI4[digit + 2], M_PI4[digit + 3]); + let z2hi = ((z2 as u128 * ix as u128) >> 64) as u64; + let z1prod = z1 as u128 * ix as u128; + let (z1hi, z1lo) = ((z1prod >> 64) as u64, z1prod as u64); + let z0lo = z0.wrapping_mul(ix); + let (lo, carry) = z1lo.overflowing_add(z2hi); + let mut hi = z0lo.wrapping_add(z1hi).wrapping_add(carry as u64); + let mut j = hi >> 61; + hi = (hi << 3) | (lo >> 61); + let lz = hi.leading_zeros(); + let e = (BIAS as u64).wrapping_sub(lz as u64 + 1); + hi = shl(hi, lz + 1) | shr(lo, 64u32.wrapping_sub(lz + 1)); + hi >>= 64 - SHIFT; + hi |= e << SHIFT; + let mut z = f64::from_bits(hi); + if j & 1 == 1 { + j += 1; + j &= 7; + z -= 1.0; + } + (j, z * FRAC_PI_4) +} + +// Go shifts by 64 or more produce 0 instead of panicking. +fn shl(x: u64, n: u32) -> u64 { + x.checked_shl(n).unwrap_or(0) +} + +fn shr(x: u64, n: u32) -> u64 { + x.checked_shr(n).unwrap_or(0) +} + +/// Go `math.Sinh`, which is `exp(|x|) / 2` above 21 and so overflows with [`exp`]. +pub(crate) fn sinh(x: f64) -> f64 { + if x.abs() > 21.0 { + (exp(x.abs()) * 0.5).copysign(x) + } else { + x.sinh() + } +} + +/// Go `math.Cosh`, which is `exp(|x|) / 2` above 21 and so overflows with [`exp`]. +pub(crate) fn cosh(x: f64) -> f64 { + if x.abs() > 21.0 { + exp(x.abs()) * 0.5 + } else { + x.cosh() + } +} + +const LN2_HI: f64 = 6.93147180369123816490e-01; +const LN2_LO: f64 = 1.90821492927058770002e-10; +const L1: f64 = 6.666666666666735130e-01; +const L2: f64 = 3.999999999940941908e-01; +const L3: f64 = 2.857142874366239149e-01; +const L4: f64 = 2.222219843214978396e-01; +const L5: f64 = 1.818357216161805012e-01; +const L6: f64 = 1.531383769920937332e-01; +const L7: f64 = 1.479819860511658591e-01; + +/// Go `math.Log`, following `log_amd64.s` operation by operation. Its inline frexp does not +/// normalize subnormal input, which changes the result there. +pub(crate) fn log(x: f64) -> f64 { + let bits = x.to_bits(); + if bits & !(1 << 63) == 0 { + return f64::NEG_INFINITY; + } + if (bits as i64) < 0 { + return f64::NAN; + } + if bits >= f64::INFINITY.to_bits() { + return x; + } + let mut f1 = f64::from_bits((bits & 0x000FFFFFFFFFFFFF) | 0.5f64.to_bits()); + let mut k = (((bits >> 52) & 0x7FF) as i32 - 0x3FE) as f64; + // CMPSD predicate 5 is "not less than": Sqrt2/2 >= f1. + if FRAC_1_SQRT_2 >= f1 { + k -= 1.0; + f1 *= 2.0; + } + let f = f1 - 1.0; + let s = f / (2.0 + f); + let s2 = s * s; + let s4 = s2 * s2; + let t1 = s2 * (((L7 * s4 + L5) * s4 + L3) * s4 + L1); + let t2 = s4 * ((L6 * s4 + L4) * s4 + L2); + let r = t1 + t2; + let hfsq = 0.5 * f * f; + k * LN2_HI - ((hfsq - (s * (hfsq + r) + k * LN2_LO)) - f) +} + +/// Go `math.Log2`. +pub(crate) fn log2(x: f64) -> f64 { + // Go returns `exp - 1` for `frac == 0.5`, which is also what the general formula gives. + let (frac, exp) = frexp(x); + log(frac) * INV_LN2 + exp as f64 +} + +/// Go `math.Log10`. +pub(crate) fn log10(x: f64) -> f64 { + log(x) * INV_LN10 +} diff --git a/src/promql/src/map/go_math/tests.rs b/src/promql/src/map/go_math/tests.rs new file mode 100644 index 00000000000..3bb8b10807a --- /dev/null +++ b/src/promql/src/map/go_math/tests.rs @@ -0,0 +1,158 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::collections::BTreeMap; + +use super::*; +use crate::golden::close; +use crate::map::{ArithmeticOp, MathOp}; + +const CASES: &str = include_str!("../go_math_cases.txt"); + +fn hex(s: &str) -> f64 { + f64::from_bits(u64::from_str_radix(s, 16).unwrap()) +} + +/// Each function as the kernels evaluate it. +fn evaluate(name: &str, args: &[f64]) -> f64 { + let op = match (name, args) { + ("atan2", [y, x]) => return ArithmeticOp::Atan2.calculate(*y, *x), + ("mod", [x, y]) => return ArithmeticOp::Modulo.calculate(*x, *y), + ("pow", [x, y]) => return ArithmeticOp::Power.calculate(*x, *y), + ("sin", [_]) => MathOp::Sin, + ("cos", [_]) => MathOp::Cos, + ("tan", [_]) => MathOp::Tan, + ("asin", [_]) => MathOp::Asin, + ("acos", [_]) => MathOp::Acos, + ("atan", [_]) => MathOp::Atan, + ("sinh", [_]) => MathOp::Sinh, + ("cosh", [_]) => MathOp::Cosh, + ("tanh", [_]) => MathOp::Tanh, + ("asinh", [_]) => MathOp::Asinh, + ("acosh", [_]) => MathOp::Acosh, + ("atanh", [_]) => MathOp::Atanh, + ("log", [_]) => MathOp::Ln, + ("log2", [_]) => MathOp::Log2, + ("log10", [_]) => MathOp::Log10, + ("exp", [_]) => MathOp::Exp, + _ => panic!("unknown case {name} {args:?}"), + }; + op.calculate(args[0]) +} + +/// The standard library function each port replaces. +fn evaluate_std(name: &str, args: &[f64]) -> Option { + Some(match (name, args) { + ("sin", [x]) => x.sin(), + ("cos", [x]) => x.cos(), + ("tan", [x]) => x.tan(), + ("acos", [x]) => x.acos(), + ("sinh", [x]) => x.sinh(), + ("cosh", [x]) => x.cosh(), + ("log", [x]) => x.ln(), + ("log2", [x]) => x.log2(), + ("log10", [x]) => x.log10(), + ("exp", [x]) => x.exp(), + ("atan2", [y, x]) => y.atan2(*x), + ("pow", [x, y]) => x.powf(*y), + _ => return None, + }) +} + +fn cases() -> impl Iterator, f64)> { + CASES + .lines() + .filter(|line| !line.starts_with('#')) + .map(|line| { + let words = line.split(' ').collect::>(); + let args = words[1..words.len() - 1] + .iter() + .map(|word| hex(word)) + .collect(); + (line, words[0], args, hex(words[words.len() - 1])) + }) +} + +#[test] +fn kernels_match_go_math_on_amd64() { + let mut counts = BTreeMap::<&str, usize>::new(); + for (line, name, args, expected) in cases() { + let actual = evaluate(name, &args); + assert!( + close(actual, expected), + "{line}: got {:016x} ({actual:e})", + actual.to_bits() + ); + *counts.entry(name).or_default() += 1; + } + + // Lower bounds keep coverage from silently shrinking when the cases are regenerated. + let minimums = [ + ("sin", 44), + ("cos", 44), + ("tan", 44), + ("asin", 32), + ("acos", 33), + ("atan", 36), + ("sinh", 33), + ("cosh", 31), + ("tanh", 31), + ("asinh", 37), + ("acosh", 41), + ("atanh", 34), + ("log", 40), + ("log2", 33), + ("log10", 33), + ("exp", 40), + ("atan2", 64), + ("mod", 34), + ("pow", 72), + ]; + assert_eq!(counts.len(), minimums.len()); + for (name, minimum) in minimums { + assert!( + counts[name] >= minimum, + "{name}: only {} cases", + counts[name] + ); + } +} + +/// Every port needs a case the standard library fails, or it should be the standard library. +#[test] +fn every_port_has_a_case_std_fails() { + let mut failing = BTreeMap::<&str, usize>::new(); + for (_, name, args, expected) in cases() { + if let Some(actual) = evaluate_std(name, &args) { + let entry = failing.entry(name).or_default(); + if !close(actual, expected) { + *entry += 1; + } + } + } + let unneeded = failing + .iter() + .filter(|(_, count)| **count == 0) + .map(|(name, _)| *name) + .collect::>(); + assert_eq!(failing.len(), 12); + assert!(unneeded.is_empty(), "std passes every case of {unneeded:?}"); +} + +/// Within the tolerance, but `floor(log10(1e15))` is 14 in Prometheus, so `log10` must not +/// become `f64::log10`, which returns exactly 15. +#[test] +fn log10_keeps_go_rounding_below_powers_of_ten() { + assert_eq!(log10(1e15).floor(), 14.0); +} diff --git a/src/promql/src/map/go_math_cases.txt b/src/promql/src/map/go_math_cases.txt new file mode 100644 index 00000000000..fe6c7cfc447 --- /dev/null +++ b/src/promql/src/map/go_math_cases.txt @@ -0,0 +1,758 @@ +# Generated by promql-compat cmd/narthex-golden-gomath (go1.26.5, GOARCH=amd64, AVX+FMA CPU, seed 1). +# Each line is ` [] ` as hex bit patterns of Go math results. +sin 7ff8000000000001 7ff8000000000001 +sin 7ff0000000000000 7ff8000000000001 +sin fff0000000000000 7ff8000000000001 +sin 0000000000000000 0000000000000000 +sin 8000000000000000 8000000000000000 +sin 0000000000000001 0000000000000001 +sin 8000000000000001 8000000000000001 +sin 000fffffffffffff 000fffffffffffff +sin 8010000000000000 8010000000000000 +sin 7fefffffffffffff 3f7452fc98b34eb0 +sin ffefffffffffffff bf7452fc98b34eb0 +sin 3ff0000000000000 3feaed548f090cee +sin bff0000000000000 bfeaed548f090cee +sin 3fe0000000000000 3fdeaee8744b05f0 +sin c000000000000000 bfed18f6ead1b445 +sin 3fe921fb54442d17 3fe6a09e667f3bcc +sin 3fe921fb54442d18 3fe6a09e667f3bcc +sin 3fe921fb54442d19 3fe6a09e667f3bcd +sin 41bfffffffffffff 3fd4e67c4aa3dd2f +sin 41c0000000000000 3fd4e67c0e2622df +sin 41c0000000000001 3fd4e67b952aadfe +sin 3ff921fb54442d17 3ff0000000000000 +sin 3ff921fb54442d18 3ff0000000000000 +sin 3ff921fb54442d19 3ff0000000000000 +sin 400921fb54442d17 3cc469898cc51700 +sin 400921fb54442d18 3ca1a62633145c00 +sin 400921fb54442d19 bcb72cece675d200 +sin 3e7ad7f29abcaf47 3e7ad7f29abcaf3a +sin 3e7ad7f29abcaf48 3e7ad7f29abcaf3b +sin 3e7ad7f29abcaf49 3e7ad7f29abcaf3c +sin 4202a05f20000000 bfdf334c7896a4e4 +sin 4480f0cf064dd592 bfeb453ab76bf398 +sin 7e37e43c8800759c bfea2c16b010e386 +sin 41132cbd0fba43a8 3dbaa8ecfb278780 +sin c30c6bf526340000 bfeb76f88136ceba +sin 3e45798ee2308c3a 3e45798ee2308c3a +sin 426e6762c4e1f5a4 3e238fd3cd5ef108 +sin 424e15ae48b2b67c 3fefffffffffffff +sin c27e8f300e08ad06 bfe30678f36bcc55 +sin c237a6e57c5284e2 3fe745e704a91c92 +sin 41ec904d43d89136 3fc70ae0ffe8a1c6 +sin c043c29c909c1016 bfef0053a506e970 +sin 406b38c9777f52bf bfeb020e9e147e8b +sin c20ea7242ab02d20 bfdbe0d09ff65d3d +cos 7ff8000000000001 7ff8000000000001 +cos 7ff0000000000000 7ff8000000000001 +cos fff0000000000000 7ff8000000000001 +cos 0000000000000000 3ff0000000000000 +cos 8000000000000000 3ff0000000000000 +cos 0000000000000001 3ff0000000000000 +cos 8000000000000001 3ff0000000000000 +cos 000fffffffffffff 3ff0000000000000 +cos 8010000000000000 3ff0000000000000 +cos 7fefffffffffffff bfefffe62ecfab75 +cos ffefffffffffffff bfefffe62ecfab75 +cos 3ff0000000000000 3fe14a280fb5068c +cos bff0000000000000 3fe14a280fb5068c +cos 3fe0000000000000 3fec1528065b7d50 +cos c000000000000000 bfdaa22657537205 +cos 3fe921fb54442d17 3fe6a09e667f3bce +cos 3fe921fb54442d18 3fe6a09e667f3bcd +cos 3fe921fb54442d19 3fe6a09e667f3bcc +cos 41bfffffffffffff bfee3edd238bb17a +cos 41c0000000000000 bfee3edd2dfeef90 +cos 41c0000000000001 bfee3edd42e56b61 +cos 3ff921fb54442d17 3cb469898cc51700 +cos 3ff921fb54442d18 3c91a62633145c00 +cos 3ff921fb54442d19 bca72cece675d200 +cos 400921fb54442d17 bff0000000000000 +cos 400921fb54442d18 bff0000000000000 +cos 400921fb54442d19 bff0000000000000 +cos 3e7ad7f29abcaf47 3fefffffffffffd3 +cos 3e7ad7f29abcaf48 3fefffffffffffd3 +cos 3e7ad7f29abcaf49 3fefffffffffffd3 +cos 4202a05f20000000 3febf098901c931a +cos 4480f0cf064dd592 3fe0be2cef01c8f3 +cos 7e37e43c8800759c bfe2699022adc4c1 +cos 41132cbd0fba43a8 3ff0000000000000 +cos c30c6bf526340000 bfe06c154609d33e +cos 3e45798ee2308c3a 3ff0000000000000 +cos 426e6762c4e1f5a4 bff0000000000000 +cos 424e15ae48b2b67c 3e4916ae56ee5415 +cos 407738e0f02dd61d 3fe5311f6d02caef +cos c13442eab43a81fc 3feffe4f7851cc5d +cos c0683ca4acf01acb 3fe44c82521caab9 +cos bfd792e6ec8216cc 3fedda87725a5070 +cos c1e2334fb929b159 bfe59d9dd16fa979 +cos bfc0418aabaaf62a 3fefbe0630f2ce5b +tan 7ff8000000000001 7ff8000000000001 +tan 7ff0000000000000 7ff8000000000001 +tan fff0000000000000 7ff8000000000001 +tan 0000000000000000 0000000000000000 +tan 8000000000000000 8000000000000000 +tan 0000000000000001 0000000000000001 +tan 8000000000000001 8000000000000001 +tan 000fffffffffffff 000fffffffffffff +tan 8010000000000000 8010000000000000 +tan 7fefffffffffffff bf74530cfe72949d +tan ffefffffffffffff 3f74530cfe72949d +tan 3ff0000000000000 3ff8eb245cbee3a5 +tan bff0000000000000 bff8eb245cbee3a5 +tan 3fe0000000000000 3fe17b4f5bf3474a +tan c000000000000000 40017af62e0950f8 +tan 3fe921fb54442d17 3feffffffffffffd +tan 3fe921fb54442d18 3ff0000000000000 +tan 3fe921fb54442d19 3ff0000000000000 +tan 41bfffffffffffff bfd61cd928a38268 +tan 41c0000000000000 bfd61cd8e0ffa035 +tan 41c0000000000001 bfd61cd851b7dc63 +tan 3ff921fb54442d17 4329153d9443ed0d +tan 3ff921fb54442d18 434d02967c31cdc0 +tan 3ff921fb54442d19 c33617a154947677 +tan 400921fb54442d17 bcc469898cc51700 +tan 400921fb54442d18 bca1a62633145c00 +tan 400921fb54442d19 3cb72cece675d200 +tan 3e7ad7f29abcaf47 3e7ad7f29abcaf47 +tan 3e7ad7f29abcaf48 3e7ad7f29abcaf48 +tan 3e7ad7f29abcaf49 3e7ad7f29abcaf62 +tan 4202a05f20000000 bfe1de000f443f51 +tan 4480f0cf064dd592 bffa0f79c1b6b259 +tan 7e37e43c8800759c 3ff6be411f37ac76 +tan 41132cbd0fba43a8 3dbaa8ecfb278780 +tan c30c6bf526340000 3ffac23600a95be5 +tan 3e45798ee2308c3a 3e45798ee2308c3a +tan 426e6762c4e1f5a4 be238fd3cd5ef108 +tan 424e15ae48b2b67c 4194685d861d2ae7 +tan c063120eaccf52cc 40140947240353ee +tan bffbeb9eea0105a6 4016b9c19d3aa369 +tan 3fe4581c6fc6e67e 3fe79d6e14271946 +tan c27fcb137176ce42 3feb30b2ef58568e +tan c209027869d95ed3 bff657be9c221051 +tan c21f1120be3fe33b 403c87f1f6b27777 +asin 7ff8000000000001 7ff8000000000001 +asin 7ff0000000000000 7ff8000000000001 +asin fff0000000000000 7ff8000000000001 +asin 0000000000000000 0000000000000000 +asin 8000000000000000 8000000000000000 +asin 0000000000000001 0000000000000001 +asin 8000000000000001 8000000000000001 +asin 000fffffffffffff 000fffffffffffff +asin 8010000000000000 8010000000000000 +asin 7fefffffffffffff 7ff8000000000001 +asin ffefffffffffffff 7ff8000000000001 +asin 3ff0000000000000 3ff921fb54442d18 +asin bff0000000000000 bff921fb54442d18 +asin 3fe0000000000000 3fe0c152382d7366 +asin c000000000000000 7ff8000000000001 +asin 3fe6666666666665 3fe8d00e692afd93 +asin 3fe6666666666666 3fe8d00e692afd95 +asin 3fe6666666666667 3fe8d00e692afd96 +asin 3fefffffffffffff 3ff921fb50442d18 +asin 3ff0000000000000 3ff921fb54442d18 +asin 3ff0000000000001 7ff8000000000001 +asin 3fe68f5c28f5c28f 3fe9099c43e0fdac +asin 3fe6a7ef9db22d0e 3fe92c5621d2671e +asin 3e45798ee2308c3a 3e45798ee2308c3b +asin 3fefffffca501acb 3ff920266447a7d1 +asin bfd3333333333333 bfd380159e14f6ff +asin 3fc05410006eeb4b 3fc05f7bba74ffc4 +asin bf1e539083b9cce4 bf1e539084dc54cf +asin 3e15e73d3f65e1a4 3e15e73d3f65e1a4 +asin 3f2ad365bb3e31f4 3f2ad365be628bb7 +asin bf22f399bda4ada9 bf22f399bec04a3a +asin bf467e227c75ece0 bf467e229a184d4c +acos 7ff8000000000001 7ff8000000000001 +acos 7ff0000000000000 7ff8000000000001 +acos fff0000000000000 7ff8000000000001 +acos 0000000000000000 3ff921fb54442d18 +acos 8000000000000000 3ff921fb54442d18 +acos 0000000000000001 3ff921fb54442d18 +acos 8000000000000001 3ff921fb54442d18 +acos 000fffffffffffff 3ff921fb54442d18 +acos 8010000000000000 3ff921fb54442d18 +acos 7fefffffffffffff 7ff8000000000001 +acos ffefffffffffffff 7ff8000000000001 +acos 3ff0000000000000 0000000000000000 +acos bff0000000000000 400921fb54442d18 +acos 3fe0000000000000 3ff0c152382d7365 +acos c000000000000000 7ff8000000000001 +acos 3fe6666666666665 3fe973e83f5d5c9d +acos 3fe6666666666666 3fe973e83f5d5c9b +acos 3fe6666666666667 3fe973e83f5d5c9a +acos 3fefffffffffffff 3e50000000000000 +acos 3ff0000000000000 0000000000000000 +acos 3ff0000000000001 7ff8000000000001 +acos bff0000000000001 7ff8000000000001 +acos bff0000000000000 400921fb54442d18 +acos bfefffffffffffff 400921fb52442d18 +acos 3e45798ee2308c3a 3ff921fb5194fb3c +acos bfefffffca501acb 40092110dc45ea74 +acos 3feffffffc054cf1 3f1feac532850000 +acos be1352c1f4a03468 3ff921fb54917820 +acos bfe24e1c05975004 40017030f3a99a5a +acos beb7f8016b436d6a 3ff921fcd3c443cc +acos 3e9dba14cfc3749e 3ff921fadd5bd9d9 +acos 3fdba2dd2e98670e 3ff1fd195bafe240 +acos 3f71859a7695ff58 3ff91075b64cff73 +atan 7ff8000000000001 7ff8000000000001 +atan 7ff0000000000000 3ff921fb54442d18 +atan fff0000000000000 bff921fb54442d18 +atan 0000000000000000 0000000000000000 +atan 8000000000000000 8000000000000000 +atan 0000000000000001 0000000000000001 +atan 8000000000000001 8000000000000001 +atan 000fffffffffffff 000fffffffffffff +atan 8010000000000000 8010000000000000 +atan 7fefffffffffffff 3ff921fb54442d18 +atan ffefffffffffffff bff921fb54442d18 +atan 3ff0000000000000 3fe921fb54442d18 +atan bff0000000000000 bfe921fb54442d18 +atan 3fe0000000000000 3fddac670561bb4f +atan c000000000000000 bff1b6e192ebbe44 +atan 3fe51eb851eb851e 3fe2aafdde4d0c9e +atan 3fe51eb851eb851f 3fe2aafdde4d0c9f +atan 3fe51eb851eb8520 3fe2aafdde4d0c9f +atan 4003504f333f9de5 3ff2d97c7f3321d2 +atan 4003504f333f9de6 3ff2d97c7f3321d2 +atan 4003504f333f9de7 3ff2d97c7f3321d2 +atan 400350e560418937 3ff2d9a87a576c56 +atan 40035c28f5c28f5c 3ff2dcf3400d72c6 +atan 400399999999999a 3ff2eeaf2ac0364c +atan 4008000000000000 3ff3fc176b7a8560 +atan 4014000000000000 3ff5f97315254856 +atan 401c000000000000 3ff6dcc57bb565fc +atan 01a56e1fc2f8f359 01a56e1fc2f8f359 +atan 7e37e43c8800759c 3ff921fb54442d18 +atan c008000000000000 bff3fc176b7a8560 +atan 3efab63dd043666e 3efab63dd02a953c +atan bf27e538b7b61815 bf27e538b3451767 +atan 419e76fa16b54ed4 3ff921fb522a5fd4 +atan 3e385cba3985f6c2 3e385cba3985f6c2 +atan 3f42d10b9a6e361c 3f42d10b77bb2f5a +atan 3f47ccac013ad9bc 3f47ccabbb04f5ef +sinh 7ff8000000000001 7ff8000000000001 +sinh 7ff0000000000000 7ff0000000000000 +sinh fff0000000000000 fff0000000000000 +sinh 0000000000000000 0000000000000000 +sinh 8000000000000000 8000000000000000 +sinh 0000000000000001 0000000000000001 +sinh 8000000000000001 8000000000000001 +sinh 000fffffffffffff 000fffffffffffff +sinh 8010000000000000 8010000000000000 +sinh 7fefffffffffffff 7ff0000000000000 +sinh ffefffffffffffff fff0000000000000 +sinh 3ff0000000000000 3ff2cd9fc44eb982 +sinh bff0000000000000 bff2cd9fc44eb982 +sinh 3fe0000000000000 3fe0acd00fe63b97 +sinh c000000000000000 c00d03cf63b6e1a0 +sinh 3fdfffffffffffff 3fe0acd00fe63b96 +sinh 3fe0000000000000 3fe0acd00fe63b97 +sinh 3fe0000000000001 3fe0acd00fe63b98 +sinh 4034ffffffffffff 41c3a6e1fd9eecea +sinh 4035000000000000 41c3a6e1fd9eecfd +sinh 4035000000000001 41c3a6e1fd9eed11 +sinh 3fe199999999999a 3fe28037cac6a8a7 +sinh 3fe28f5c28f5c28f 3fe39e450b3fd0e8 +sinh 4024000000000000 40c5829dced69992 +sinh 4086300000000000 7ff0000000000000 +sinh 4086380000000000 7ff0000000000000 +sinh bfd0000000000000 bfd02accd9d08102 +sinh be38cf2f2fb9c8d2 be38cf2f2fb9c8d2 +sinh 403fc7091e85dcb4 42bcbe9b6a57ffae +sinh c062c5b669b56823 cd69501b80c21d04 +sinh 407e0cb613376c9a 6b38ede7bdce39b7 +sinh 3e44aef20e5b0856 3e44aef20e5b0856 +sinh 3e5aa84ef8ec5e7f 3e5aa84ef8ec5e7f +cosh 7ff8000000000001 7ff8000000000001 +cosh 7ff0000000000000 7ff0000000000000 +cosh fff0000000000000 7ff0000000000000 +cosh 0000000000000000 3ff0000000000000 +cosh 8000000000000000 3ff0000000000000 +cosh 0000000000000001 3ff0000000000000 +cosh 8000000000000001 3ff0000000000000 +cosh 000fffffffffffff 3ff0000000000000 +cosh 8010000000000000 3ff0000000000000 +cosh 7fefffffffffffff 7ff0000000000000 +cosh ffefffffffffffff 7ff0000000000000 +cosh 3ff0000000000000 3ff8b07551d9f550 +cosh bff0000000000000 3ff8b07551d9f550 +cosh 3fe0000000000000 3ff20ac1862ae8d0 +cosh c000000000000000 400e18fa0df2d9bc +cosh 4034ffffffffffff 41c3a6e1fd9eecea +cosh 4035000000000000 41c3a6e1fd9eecfd +cosh 4035000000000001 41c3a6e1fd9eed11 +cosh 4024000000000000 40c5829dd053712e +cosh 4086340000000000 7ff0000000000000 +cosh 4086380000000000 7ff0000000000000 +cosh c008000000000000 402422a497d6185e +cosh 3e112e0be826d695 3ff0000000000000 +cosh 40862c0000000000 7ff0000000000000 +cosh c086300000000000 7ff0000000000000 +cosh c06fbeaf943b88c6 56c4e5e38d86bb30 +cosh 3e39028660d37252 3ff0000000000000 +cosh be1b4a2d189d5f04 3ff0000000000000 +cosh 3eb034c893b713de 3ff0000000000835 +cosh 3e3cbf84cecc924f 3ff0000000000000 +cosh 3e8c6cd42e9d466b 3ff0000000000065 +tanh 7ff8000000000001 7ff8000000000001 +tanh 7ff0000000000000 3ff0000000000000 +tanh fff0000000000000 bff0000000000000 +tanh 0000000000000000 0000000000000000 +tanh 8000000000000000 8000000000000000 +tanh 0000000000000001 0000000000000001 +tanh 8000000000000001 8000000000000001 +tanh 000fffffffffffff 000fffffffffffff +tanh 8010000000000000 8010000000000000 +tanh 7fefffffffffffff 3ff0000000000000 +tanh ffefffffffffffff bff0000000000000 +tanh 3ff0000000000000 3fe85efab514f394 +tanh bff0000000000000 bfe85efab514f394 +tanh 3fe0000000000000 3fdd9353d7568af3 +tanh c000000000000000 bfeed9505e1bc3d4 +tanh 3fe3ffffffffffff 3fe1bf47eabb8f94 +tanh 3fe4000000000000 3fe1bf47eabb8f96 +tanh 3fe4000000000001 3fe1bf47eabb8f96 +tanh 404601e678fc457a 3ff0000000000000 +tanh 404601e678fc457b 3ff0000000000000 +tanh 404601e678fc457c 3ff0000000000000 +tanh 4024000000000000 3feffffffdc96f35 +tanh c028000000000000 bfeffffffff59f7c +tanh 3ddb7cdfd9d7bdbb 3ddb7cdfd9d7bdbb +tanh bfd3333333333333 bfd2a4dda7d914fa +tanh 3eb576b6a60a0ab6 3eb576b6a609fdd6 +tanh 3eab40d12af7b28e 3eab40d12af7abf7 +tanh 3ec92cb567ea6d54 3ec92cb567ea1a3b +tanh 3f67adcf71ad7a97 3f67adcb1f4c1ed8 +tanh 3f6b20b4999f0b22 3f6b20ae19fc1780 +tanh 3ec0adbe9d1e93c4 3ec0adbe9d1e7b9a +asinh 7ff8000000000001 7ff8000000000001 +asinh 7ff0000000000000 7ff0000000000000 +asinh fff0000000000000 fff0000000000000 +asinh 0000000000000000 0000000000000000 +asinh 8000000000000000 8000000000000000 +asinh 0000000000000001 0000000000000001 +asinh 8000000000000001 8000000000000001 +asinh 000fffffffffffff 000fffffffffffff +asinh 8010000000000000 8010000000000000 +asinh 7fefffffffffffff 408633ce8fb9f87d +asinh ffefffffffffffff c08633ce8fb9f87d +asinh 3ff0000000000000 3fec34366179d427 +asinh bff0000000000000 bfec34366179d427 +asinh 3fe0000000000000 3fdecc2caec5160a +asinh c000000000000000 bff719218313d087 +asinh 3e2fffffffffffff 3e2fffffffffffff +asinh 3e30000000000000 3e30000000000000 +asinh 3e30000000000001 3e30000000000001 +asinh 3fffffffffffffff 3ff719218313d087 +asinh 4000000000000000 3ff719218313d087 +asinh 4000000000000001 3ff719218313d088 +asinh 41afffffffffffff 403419ecb712c481 +asinh 41b0000000000000 403419ecb712c481 +asinh 41b0000000000001 403419ecb712c480 +asinh 3e60000000000000 3e5fffffffffffff +asinh 3e601b2b29a4692b 3e601b2b29a4692a +asinh 400199999999999a 3ff8797d488657e0 +asinh 40311882ca4b952e 400c433cf6065ed6 +asinh 40609d0b2f8e7820 401654cd9cc84077 +asinh 40b1862a91f03ce4 4022342c5d5dba6f +asinh 7fe6c8e5ca239029 40863116f85cb427 +asinh 40e919aa0bd75796 402714cf4ab33f27 +asinh c012528e8487618a c001d0428452da3b +asinh c1a58530db4002e1 c033b45bf13b454f +asinh 404d65dfd7f5ee36 401311b4dd6c7a28 +asinh bf803833bd049a44 bf803828a07a5f37 +asinh bf52b967f4d411a0 bf52b967b0724c32 +acosh 7ff8000000000001 7ff8000000000001 +acosh 7ff0000000000000 7ff0000000000000 +acosh fff0000000000000 7ff8000000000001 +acosh 0000000000000000 7ff8000000000001 +acosh 8000000000000000 7ff8000000000001 +acosh 0000000000000001 7ff8000000000001 +acosh 8000000000000001 7ff8000000000001 +acosh 000fffffffffffff 7ff8000000000001 +acosh 8010000000000000 7ff8000000000001 +acosh 7fefffffffffffff 408633ce8fb9f87d +acosh ffefffffffffffff 7ff8000000000001 +acosh 3ff0000000000000 0000000000000000 +acosh bff0000000000000 7ff8000000000001 +acosh 3fe0000000000000 7ff8000000000001 +acosh c000000000000000 7ff8000000000001 +acosh 3fefffffffffffff 7ff8000000000001 +acosh 3ff0000000000000 0000000000000000 +acosh 3ff0000000000001 3e56a09e667f3bcd +acosh 3fffffffffffffff 3ff5124271980434 +acosh 4000000000000000 3ff5124271980434 +acosh 4000000000000001 3ff5124271980436 +acosh 41afffffffffffff 403419ecb712c481 +acosh 41b0000000000000 403419ecb712c480 +acosh 41b0000000000001 403419ecb712c480 +acosh 400199999999999a 3ff6ce81ff1a70f3 +acosh 4003333333333333 3ff85a6fe512c39d +acosh 4008000000000000 3ffc34366179d426 +acosh 4012000000000000 40017a268632d3b9 +acosh 401c000000000000 4005124271980435 +acosh 4024000000000000 4007f21ed1ce05d4 +acosh 4034000000000000 400d818b3e5d4c5f +acosh 4041800000000000 4010fe400585b88f +acosh 4049000000000000 40126b9783d0a89d +acosh 4054000000000000 40144cf01fbfd077 +acosh 7e37e43c8800759c 40859bbfd8b83e43 +acosh c005597208859522 7ff8000000000001 +acosh c11046c4bef318dd 7ff8000000000001 +acosh 4144b5913e9a2daa 402f03b398c93fc0 +acosh 40ccf87431ed4e21 40249872c6942263 +acosh c0819644082a5278 7ff8000000000001 +acosh c0807567fb142384 7ff8000000000001 +atanh 7ff8000000000001 7ff8000000000001 +atanh 7ff0000000000000 7ff8000000000001 +atanh fff0000000000000 7ff8000000000001 +atanh 0000000000000000 0000000000000000 +atanh 8000000000000000 8000000000000000 +atanh 0000000000000001 0000000000000001 +atanh 8000000000000001 8000000000000001 +atanh 000fffffffffffff 000fffffffffffff +atanh 8010000000000000 8010000000000000 +atanh 7fefffffffffffff 7ff8000000000001 +atanh ffefffffffffffff 7ff8000000000001 +atanh 3ff0000000000000 7ff0000000000000 +atanh bff0000000000000 fff0000000000000 +atanh 3fe0000000000000 3fe193ea7aad030a +atanh c000000000000000 7ff8000000000001 +atanh 3e2fffffffffffff 3e2fffffffffffff +atanh 3e30000000000000 3e30000000000000 +atanh 3e30000000000001 3e30000000000001 +atanh 3fdfffffffffffff 3fe193ea7aad030a +atanh 3fe0000000000000 3fe193ea7aad030a +atanh 3fe0000000000001 3fe193ea7aad030c +atanh 3fefffffffffffff 4032b708872320e2 +atanh 3ff0000000000000 7ff0000000000000 +atanh 3ff0000000000001 7ff8000000000001 +atanh 3e60000000000000 3e60000000000001 +atanh 3e601b2b29a4692b 3e601b2b29a4692d +atanh 3fe199999999999a 3fe3c9c79bc850a0 +atanh bfe8000000000000 bfef2272ae325a57 +atanh bfae0c1dbe9120c4 bfae14f717dffc09 +atanh be1475606e08af5d be1475606e08af5d +atanh 3f83dba51ea57cb3 3f83dbcde84afe09 +atanh 3deccd3fdb63b60e 3deccd3fdb63b60e +atanh befb3a1ea9912a98 befb3a1ea9ab727f +atanh bf3bdc5064b62c20 bf3bdc5080dec2eb +log 7ff8000000000001 7ff8000000000001 +log 7ff0000000000000 7ff0000000000000 +log fff0000000000000 7ff8000000000001 +log 0000000000000000 fff0000000000000 +log 8000000000000000 fff0000000000000 +log 0000000000000001 c08628b76e3a7b61 +log 8000000000000001 7ff8000000000001 +log 000fffffffffffff c086232bdd7abcd2 +log 8010000000000000 7ff8000000000001 +log 7fefffffffffffff 40862e42fefa39ef +log ffefffffffffffff 7ff8000000000001 +log 3ff0000000000000 0000000000000000 +log bff0000000000000 7ff8000000000001 +log 3fe0000000000000 bfe62e42fefa39ef +log c000000000000000 7ff8000000000001 +log 3fe6a09e667f3bcc bfd62e42fefa39f1 +log 3fe6a09e667f3bcd bfd62e42fefa39ee +log 3fe6a09e667f3bce bfd62e42fefa39eb +log 3ff6a09e667f3bcc 3fd62e42fefa39ee +log 3ff6a09e667f3bcd 3fd62e42fefa39f0 +log 3ff6a09e667f3bce 3fd62e42fefa39f3 +log 3fefffffffffffff bca0000000000000 +log 3ff0000000000000 0000000000000000 +log 3ff0000000000001 3cafffffffffffff +log 3fdfffffffffffff bfe62e42fefa39f0 +log 3fe0000000000000 bfe62e42fefa39ef +log 3fe0000000000001 bfe62e42fefa39ed +log 0166a09e667f3bcd c085abf335603bdb +log 3f46a09e667f3bcd c01d1cb7eea86c0a +log 4086a09e667f3bcd 401a56ef8ec924cc +log 4626a09e667f3bcd 40513df614348309 +log 7e66a09e667f3bcd 4085a667a4a07d4c +log 0000000000004000 c08628b76e3a7b41 +log 7e37e43c8800759c 4085963447f87fb5 +log 616c4cb7d66b2fd2 40773676cc3f5fd8 +log 2add5877c2929b68 c06d35ab928b93ee +log 39db456c5d80a243 c050d94aa8801dc5 +log 51554045f66e7a04 40681f51cb3bf5f1 +log 5eec3feb39f815ac 40757ad2522acaa3 +log 595226ac2f095ecc 407198b3cc1833f7 +log2 7ff8000000000001 7ff8000000000001 +log2 7ff0000000000000 7ff0000000000000 +log2 fff0000000000000 7ff8000000000001 +log2 0000000000000000 fff0000000000000 +log2 8000000000000000 fff0000000000000 +log2 0000000000000001 c090c80000000000 +log2 8000000000000001 7ff8000000000001 +log2 000fffffffffffff c08ff00000000000 +log2 8010000000000000 7ff8000000000001 +log2 7fefffffffffffff 4090000000000000 +log2 ffefffffffffffff 7ff8000000000001 +log2 3ff0000000000000 0000000000000000 +log2 bff0000000000000 7ff8000000000001 +log2 3fe0000000000000 bff0000000000000 +log2 c000000000000000 7ff8000000000001 +log2 3fe6a09e667f3bcc bfe0000000000001 +log2 3fe6a09e667f3bcd bfdffffffffffffe +log2 3fe6a09e667f3bce bfdffffffffffffa +log2 3fefffffffffffff bca71547652b82fe +log2 3ff0000000000000 0000000000000000 +log2 3ff0000000000001 3cb8000000000000 +log2 401fffffffffffff 4008000000000000 +log2 4020000000000000 4008000000000000 +log2 4020000000000001 4008000000000001 +log2 0000000000004000 c090900000000000 +log2 000012688b70e62b c0901730dabca5f6 +log2 3ff0000000061046 3de17eeb00000000 +log2 d823a26aa6a33ed4 7ff8000000000001 +log2 2686f97ffe8dda36 c07967a60470ab68 +log2 906658fcefca0e90 7ff8000000000001 +log2 ae74b8d6c26d0ef7 7ff8000000000001 +log2 73c1cc5f64c78f03 4089e93ab759727d +log2 5a29cb27fd2c2c9c 407a3b05e6032815 +log10 7ff8000000000001 7ff8000000000001 +log10 7ff0000000000000 7ff0000000000000 +log10 fff0000000000000 7ff8000000000001 +log10 0000000000000000 fff0000000000000 +log10 8000000000000000 fff0000000000000 +log10 0000000000000001 c0733f424bcb5221 +log10 8000000000000001 7ff8000000000001 +log10 000fffffffffffff c0733a7146f72a42 +log10 8010000000000000 7ff8000000000001 +log10 7fefffffffffffff 40734413509f79ff +log10 ffefffffffffffff 7ff8000000000001 +log10 3ff0000000000000 0000000000000000 +log10 bff0000000000000 7ff8000000000001 +log10 3fe0000000000000 bfd34413509f79ff +log10 c000000000000000 7ff8000000000001 +log10 3fe6a09e667f3bcc bfc34413509f7a00 +log10 3fe6a09e667f3bcd bfc34413509f79fe +log10 3fe6a09e667f3bce bfc34413509f79fb +log10 3fefffffffffffff bc8bcb7b1526e50e +log10 3ff0000000000000 0000000000000000 +log10 3ff0000000000001 3c9bcb7b1526e50d +log10 4023ffffffffffff 3fefffffffffffff +log10 4024000000000000 3ff0000000000000 +log10 4024000000000001 3ff0000000000000 +log10 408f400000000000 4008000000000000 +log10 000012688b70e62b c0733f3a51bf529c +log10 430c6bf526340000 402dffffffffffff +log10 26ebbf2fed09c31e c05e1e54f33fbafb +log10 77dfd697e91f5264 4070d6b6de196d40 +log10 f4c1a373dda62828 7ff8000000000001 +log10 8c08784870b934af 7ff8000000000001 +log10 55bfdd0f35666977 405a43afeaf2cdfb +log10 9140deece79b4d03 7ff8000000000001 +exp 7ff8000000000001 7ff8000000000001 +exp 7ff0000000000000 7ff0000000000000 +exp fff0000000000000 0000000000000000 +exp 0000000000000000 3ff0000000000000 +exp 8000000000000000 3ff0000000000000 +exp 0000000000000001 3ff0000000000000 +exp 8000000000000001 3ff0000000000000 +exp 000fffffffffffff 3ff0000000000000 +exp 8010000000000000 3ff0000000000000 +exp 7fefffffffffffff 7ff0000000000000 +exp ffefffffffffffff 0000000000000000 +exp 3ff0000000000000 4005bf0a8b145769 +exp bff0000000000000 3fd78b56362cef38 +exp 3fe0000000000000 3ffa61298e1e069c +exp c000000000000000 3fc152aaa3bf81cc +exp 3fdfffffffffffff 3ffa61298e1e069b +exp 3fe0000000000000 3ffa61298e1e069c +exp 3fe0000000000001 3ffa61298e1e069d +exp 40862e42fefa39ee 7ff0000000000000 +exp 40862e42fefa39ef 7ff0000000000000 +exp 40862e42fefa39f0 7ff0000000000000 +exp c0874910d52d3052 0000000000000000 +exp c0874910d52d3051 0000000000000001 +exp c0874910d52d3050 0000000000000001 +exp 40862c0000000000 7ff0000000000000 +exp 40862b3333333333 7fe5d303de3ac8fd +exp c086240000000000 000e6cf6d08897ac +exp c08628cccccccccd 0007eabddec4fd38 +exp c0874f3333333333 0000000000000000 +exp c087540000000000 0000000000000000 +exp fe37e43c8800759c 0000000000000000 +exp 7e37e43c8800759c 7ff0000000000000 +exp 3bc79ca10c924223 3ff0000000000000 +exp 4044000000000000 438a220d397972eb +exp c08631b15f366464 00029adbadf5571d +exp c07fe1defdef5055 11f0a488943d9284 +exp c0362305cc9e861c 3df0b7d4a11a4ca8 +exp 3eb95db124645c62 3ff0000195db2662 +exp 3e933b2cb8e67288 3ff000004cecb39d +exp be336c86dd2ef1ec 3feffffffd926f24 +atan2 7ff8000000000001 7ff8000000000001 7ff8000000000001 +atan2 7ff8000000000001 7ff0000000000000 7ff8000000000001 +atan2 7ff8000000000001 fff0000000000000 7ff8000000000001 +atan2 7ff8000000000001 0000000000000000 7ff8000000000001 +atan2 7ff8000000000001 8000000000000000 7ff8000000000001 +atan2 7ff8000000000001 4004000000000000 7ff8000000000001 +atan2 7ff8000000000001 c004000000000000 7ff8000000000001 +atan2 7ff0000000000000 7ff8000000000001 7ff8000000000001 +atan2 7ff0000000000000 7ff0000000000000 3fe921fb54442d18 +atan2 7ff0000000000000 fff0000000000000 4002d97c7f3321d2 +atan2 7ff0000000000000 0000000000000000 3ff921fb54442d18 +atan2 7ff0000000000000 8000000000000000 3ff921fb54442d18 +atan2 7ff0000000000000 4004000000000000 3ff921fb54442d18 +atan2 7ff0000000000000 c004000000000000 3ff921fb54442d18 +atan2 fff0000000000000 7ff8000000000001 7ff8000000000001 +atan2 fff0000000000000 7ff0000000000000 bfe921fb54442d18 +atan2 fff0000000000000 fff0000000000000 c002d97c7f3321d2 +atan2 fff0000000000000 0000000000000000 bff921fb54442d18 +atan2 fff0000000000000 8000000000000000 bff921fb54442d18 +atan2 fff0000000000000 4004000000000000 bff921fb54442d18 +atan2 fff0000000000000 c004000000000000 bff921fb54442d18 +atan2 0000000000000000 7ff8000000000001 7ff8000000000001 +atan2 0000000000000000 7ff0000000000000 0000000000000000 +atan2 0000000000000000 fff0000000000000 400921fb54442d18 +atan2 0000000000000000 0000000000000000 0000000000000000 +atan2 0000000000000000 8000000000000000 400921fb54442d18 +atan2 0000000000000000 4004000000000000 0000000000000000 +atan2 0000000000000000 c004000000000000 400921fb54442d18 +atan2 8000000000000000 7ff8000000000001 7ff8000000000001 +atan2 8000000000000000 7ff0000000000000 8000000000000000 +atan2 8000000000000000 fff0000000000000 c00921fb54442d18 +atan2 8000000000000000 0000000000000000 8000000000000000 +atan2 8000000000000000 8000000000000000 c00921fb54442d18 +atan2 8000000000000000 4004000000000000 8000000000000000 +atan2 8000000000000000 c004000000000000 c00921fb54442d18 +atan2 4004000000000000 7ff8000000000001 7ff8000000000001 +atan2 4004000000000000 7ff0000000000000 0000000000000000 +atan2 4004000000000000 fff0000000000000 400921fb54442d18 +atan2 4004000000000000 0000000000000000 3ff921fb54442d18 +atan2 4004000000000000 8000000000000000 3ff921fb54442d18 +atan2 4004000000000000 4004000000000000 3fe921fb54442d18 +atan2 4004000000000000 c004000000000000 4002d97c7f3321d2 +atan2 c004000000000000 7ff8000000000001 7ff8000000000001 +atan2 c004000000000000 7ff0000000000000 8000000000000000 +atan2 c004000000000000 fff0000000000000 c00921fb54442d18 +atan2 c004000000000000 0000000000000000 bff921fb54442d18 +atan2 c004000000000000 8000000000000000 bff921fb54442d18 +atan2 c004000000000000 4004000000000000 bfe921fb54442d18 +atan2 c004000000000000 c004000000000000 c002d97c7f3321d2 +atan2 0000000000000001 fe37e43c8800759c 400921fb54442d18 +atan2 8000000000000001 fe37e43c8800759c 400921fb54442d18 +atan2 81a56e1fc2f8f359 fe37e43c8800759c 400921fb54442d18 +atan2 40aea8b61a6fd041 40e6ec94d2138db8 3fb55955a8245661 +atan2 bff3d712f2f6139a c0161a29f66d448e c0075ddf868b0c86 +atan2 3f565e8204f04675 bf244f648da0b843 3ffaf0df520cfef0 +atan2 412d2cd852efff7e c061046d9d136d04 3ff92290a61b3c94 +atan2 3f04423fc4e56d1e 401f82ce01c21660 3ed492bd1bbf3aee +atan2 3f7359ecdda1c91a 40b8175190917d74 3ea9b4426204573a +atan2 402f2b22209e6a50 4090c1c0ee80fd48 3f8dc234e90f5df1 +atan2 bf63c737c1125a90 3ee5fb3bb3edefdf bff9103315d21b75 +atan2 3f322f680d3df6da bf90a31e340fdd0c 4008ff01fa2ade6b +atan2 c08c039326160b54 408bf8cabaecea40 bfe928251c5ce306 +atan2 c052eec25e890aac bf1c7d09cc124ab2 bff921fcd579d013 +atan2 c0b6711fe66c4f08 c06fe147e68c681f bff9d7b19f172d50 +mod 4016000000000000 4000000000000000 3ff8000000000000 +mod c016000000000000 4000000000000000 bff8000000000000 +mod 4016000000000000 c000000000000000 3ff8000000000000 +mod c010000000000000 4000000000000000 8000000000000000 +mod 4010000000000000 c000000000000000 0000000000000000 +mod 7e37e43c8800759c 4008000000000000 0000000000000000 +mod fe37e43c8800759c 01d2c05bca99d4ee 81ce478ecb1573bc +mod 4008000000000000 7ff0000000000000 4008000000000000 +mod c008000000000000 fff0000000000000 c008000000000000 +mod 7ff0000000000000 4008000000000000 7ff8000000000001 +mod 4008000000000000 0000000000000000 7ff8000000000001 +mod 8000000000000000 4008000000000000 8000000000000000 +mod 3ff0000000000000 0000000000000001 0000000000000000 +mod 000080dbd0164b2d 00000000000017b8 00000000000016d5 +mod 800080dbd0164b2d 00000000000017b8 80000000000016d5 +mod 7fefffffffffffff 0000000000000001 0000000000000000 +mod 7ff8000000000001 3ff0000000000000 7ff8000000000001 +mod 3ff0000000000000 7ff8000000000001 7ff8000000000001 +mod 3fd3333333333333 3fb999999999999a 3fb9999999999998 +mod bfd3333333333333 3fb999999999999a bfb9999999999998 +mod 3ff0000000000000 3ff0000000000000 0000000000000000 +mod 4000000000000000 3ff0000000000000 0000000000000000 +mod c37b44dbf4422d92 403e3bd0e406e87a bffb8a85c8074f60 +mod 41ee397ebdb50539 3e81b7033b170344 3e7265807c0baff8 +mod be6607791d7153b6 3f5ba03dd74ec012 be6607791d7153b6 +mod c2fd954a033aa585 bf4e34a2f6d02d69 bf002548e3820e60 +mod 3f8f8dba152fdd38 3e719f1abc786ae8 3e682f2fdef88870 +mod 4381092ebb744468 bf277561b95af638 3f08653c8af49180 +mod bf9c366cd2ba18e0 c02c1c045f3f0318 bf9c366cd2ba18e0 +mod c11b86fc57bf2a5e 400d9220769fcb80 bfe08b8ffee99c00 +mod c300147779c31dc1 c0714b8a0429051a c06544f2783877d0 +mod 438d03db0245846b bfa57a38686161d5 3f84d32a41d32fc8 +mod 4147e4ed5ea7f202 bfe4ca79c70b2a37 3fda88f525448f90 +mod 3f8ba31159d39518 3fca4dc77621a84c 3f8ba31159d39518 +pow 0000000000000000 bff0000000000000 7ff0000000000000 +pow 8000000000000000 bff0000000000000 fff0000000000000 +pow 8000000000000000 c000000000000000 7ff0000000000000 +pow 8000000000000000 4008000000000000 8000000000000000 +pow 0000000000000000 4008000000000000 0000000000000000 +pow 0000000000000000 bfe0000000000000 7ff0000000000000 +pow c000000000000000 4008000000000000 c020000000000000 +pow c000000000000000 4010000000000000 4030000000000000 +pow c000000000000000 c008000000000000 bfc0000000000000 +pow c000000000000000 3fe0000000000000 fff8000000000000 +pow c020000000000000 3fd5555555555555 7ff8000000000001 +pow 4000000000000000 3fe0000000000000 3ff6a09e667f3bcd +pow 4000000000000000 bfe0000000000000 3fe6a09e667f3bcc +pow 7ff8000000000001 0000000000000000 3ff0000000000000 +pow 3ff0000000000000 7ff8000000000001 3ff0000000000000 +pow bff0000000000000 7ff0000000000000 3ff0000000000000 +pow 3fe0000000000000 7ff0000000000000 0000000000000000 +pow 3fe0000000000000 fff0000000000000 7ff0000000000000 +pow 4000000000000000 7ff0000000000000 7ff0000000000000 +pow 4000000000000000 fff0000000000000 0000000000000000 +pow fff0000000000000 4008000000000000 fff0000000000000 +pow fff0000000000000 c008000000000000 8000000000000000 +pow fff0000000000000 4000000000000000 7ff0000000000000 +pow 7ff0000000000000 c000000000000000 0000000000000000 +pow 7ff0000000000000 3fe0000000000000 7ff0000000000000 +pow 4000000000000000 43e0000000000000 7ff0000000000000 +pow 3fe0000000000000 43e0000000000000 0000000000000000 +pow bff0000000000000 43f0000000000000 3ff0000000000000 +pow 3ff000001ad7f29b 43d0000000000000 7ff0000000000000 +pow 4000000000000000 408ff80000000000 7fe0000000000000 +pow 4000000000000000 4090000000000000 7ff0000000000000 +pow 4000000000000000 c090c80000000000 0000000000000001 +pow 4000000000000000 c090cc0000000000 0000000000000000 +pow 4024000000000000 4072c00000000000 7e37e43c880075a0 +pow 4024000000000000 c072c00000000000 01a56e1fc2f8f355 +pow 3ff8000000000000 409f400000000000 7ff0000000000000 +pow 3ff8000000000000 409a900000000000 7e15a63b3b6d05e3 +pow 3fefffffffffffff 43d0000000000000 11c44104df1f819a +pow 4000000000000000 c090d00000000000 0000000000000000 +pow 4000000000000000 c090d40000000000 0000000000000000 +pow 298d12ed0af1a281 4008000000000000 0000000000000001 +pow 4008000000000000 c085380000000000 0000000000000000 +pow 0000000000000001 3fe0000000000000 1e60000000000000 +pow 0000000000000001 4000000000000000 0000000000000000 +pow 01a56e1fc2f8f359 c000000000000000 7ff0000000000000 +pow 4008000000000000 3ff8000000000000 4014c8dc2e423980 +pow 4008000000000000 400599999999999a 40336b452019ac38 +pow 401c000000000000 bfd0000000000000 3fe3ac58345c9b0b +pow 3ff00000b7e2b9ed 41cd34f3ae800000 7c773d083e152846 +pow 0000000000000001 3f50624dd2f1a9fc 3fdf7e6f7d7c3075 +pow 403c04a18a010b48 c037000000000000 3905400e74a4a20e +pow 3fa04ae232e371ad 4043800000000000 33d03753047875fe +pow 3fb83e208526ca62 c03a000000000000 45754fd6230748c9 +pow 4047aaa650be3c74 c032000000000000 39ac855c70434e2d +pow 3fd5e0db4331d3c5 402fda7806f364a3 3e6433b309d51b79 +pow 3f89ef9d13e70104 c043994be1d47ea8 4f60c358bd4d37e8 +pow 4073fb9bc9765e94 c024fa1ab0a6ee90 3a7a830aa218d6e7 +pow 3f83fec6613ccf28 4041000000000000 31be90af878fa640 +pow 4092315575a9db01 c036d4c6fa78572c 3165fa8cd0d939ee +pow 402a88dc3e79cdb8 c01c000000000000 3e4dadd9d0aa2d77 +pow 3f9726d47e5ae63c 4041000000000000 34516e2b068a7b59 +pow 3fa66220e7eded1c c0333d2e80a9da90 455d5ffcc89c7eba +pow 3fa4807ab9b713f7 4028f11b8e4b02c0 3c513883932d86b9 +pow 3f6edf631c58d557 4021f9e6b484472c 3b68c3be1657038e +pow 407faec6330b694a 4042800000000000 54b621e1f06b8d57 +pow 405d0bdb64068826 403ef95eeca0f86f 4d367d208ea83211 +pow c005182e1a73e74e c026000000000000 bef879d4bbfd7c35 +pow c0297004356ebf48 c028000000000000 3d2f69fcf296bf44 +pow bff8fe018d9396e0 c022000000000000 bf927fa0e585f2b8 +pow bfd8b25190d49e78 3ff0000000000000 bfd8b25190d49e78 +pow bff3d1828e7f3a0e 4008000000000000 bffe680d02bc0fd1 +pow bfbc53feb70a1f92 4032000000000000 3c5c8a45b3416914 diff --git a/src/promql/src/map/prometheus_cases.txt b/src/promql/src/map/prometheus_cases.txt index 76c71343913..75edf1c9fa3 100644 --- a/src/promql/src/map/prometheus_cases.txt +++ b/src/promql/src/map/prometheus_cases.txt @@ -1,6 +1,7 @@ # Generated by promql-compat cmd/narthex-golden-map built for amd64 (Prometheus v3.15.0 -# engine, go1.26.5, seed 1): 48 math. A case lists its operation, the PromQL -# expression, the grid, the inputs read back from the engine and the result series. +# engine, go1.26.5, seed 1): 10 neg, 185 math, 24 scalar_cmp, 36 cmp_series, 42 arith_series, 42 scalar_arith, 48 cmp, 70 arith. A case lists its operation, the PromQL +# expression, the grid, the inputs read back from the engine in storage postings order +# and the result series. # Points are `grid index:hex value bits`. case math abs expr abs(a) @@ -17,9 +18,9 @@ end case math abs expr abs(a) grid 2320841668853 1 3 -series __name__=a,host=h1,zone=z2 ; 1:c014d9999999999a 2:4008000000000000 series __name__=a,host=h2 ; 0:4013d1eb851eb852 2:4014000000000000 series __name__=a,host=h2,job=j2 ; 0:c04f700000000000 1:c01ce8f5c28f5c29 2:fff0000000000000 +series __name__=a,host=h1,zone=z2 ; 1:c014d9999999999a 2:4008000000000000 result host=h1,zone=z2 ; 1:4014d9999999999a 2:4008000000000000 result host=h2 ; 0:4013d1eb851eb852 2:4014000000000000 result host=h2,job=j2 ; 0:404f700000000000 1:401ce8f5c28f5c29 2:7ff0000000000000 @@ -39,9 +40,9 @@ end case math abs expr abs(a) grid 1493340200482 15000 5 -series __name__=a,host=h2,job=j2,zone=z1 ; 0:c081cf0000000000 1:408acb0000000000 2:c00f7ae147ae147b 3:000000165354657a 4:c0824e0000000000 series __name__=a,job=j2,zone=z2 ; 0:40c005e000000000 1:c022b00000000000 2:bfe1be76c8b43958 3:4058073333333334 series __name__=a,zone=z2 ; 0:4015e7ae147ae148 1:bfe0000000000000 2:40f579a800000000 3:c08eca0000000000 4:8000000003b6a28c +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c081cf0000000000 1:408acb0000000000 2:c00f7ae147ae147b 3:000000165354657a 4:c0824e0000000000 result host=h2,job=j2,zone=z1 ; 0:4081cf0000000000 1:408acb0000000000 2:400f7ae147ae147b 3:000000165354657a 4:40824e0000000000 result job=j2,zone=z2 ; 0:40c005e000000000 1:4022b00000000000 2:3fe1be76c8b43958 3:4058073333333334 result zone=z2 ; 0:4015e7ae147ae148 1:3fe0000000000000 2:40f579a800000000 3:408eca0000000000 4:0000000003b6a28c @@ -58,8 +59,8 @@ case math ceil expr ceil(a) grid -2295928214828 1 7 series __name__=a,host=h1 ; 0:7fefffffffffffff 1:80001a78509b389c 3:7acb7cd9a5ea2f80 6:800000000000001c -series __name__=a,host=h1,job=j1 ; 2:c0d6922000000000 4:000000000000000f 5:bff0000000000000 series __name__=a,host=h1,job=j2,zone=z1 ; 2:4000000000000000 3:40f19bd000000000 4:c0568ccccccccccd 5:c0bc9d0000000000 +series __name__=a,host=h1,job=j1 ; 2:c0d6922000000000 4:000000000000000f 5:bff0000000000000 result host=h1 ; 0:7fefffffffffffff 1:8000000000000000 3:7acb7cd9a5ea2f80 6:8000000000000000 result host=h1,job=j1 ; 2:c0d6920000000000 4:3ff0000000000000 5:bff0000000000000 result host=h1,job=j2,zone=z1 ; 2:4000000000000000 3:40f19bd000000000 4:c056800000000000 5:c0bc9d0000000000 @@ -76,8 +77,8 @@ case math ceil expr ceil(a) grid 2052594281964 1000 4 series __name__=a,host=h1,job=j2,zone=z1 ; 0:c0e73f9000000000 2:c048100000000000 3:40be190000000000 -series __name__=a,host=h1,zone=z2 ; 1:c123459800000000 3:c0282ccccccccccd series __name__=a,job=j2,zone=z1 ; 0:bfd7333333333333 1:f896e9a156d2b750 3:fcefe8af01db2170 +series __name__=a,host=h1,zone=z2 ; 1:c123459800000000 3:c0282ccccccccccd result host=h1,job=j2,zone=z1 ; 0:c0e73f8000000000 2:c048000000000000 3:40be190000000000 result host=h1,zone=z2 ; 1:c123459800000000 3:c028000000000000 result job=j2,zone=z1 ; 0:8000000000000000 1:f896e9a156d2b750 3:fcefe8af01db2170 @@ -85,8 +86,8 @@ end case math ceil expr ceil(a) grid 305490743228 60000 9 -series __name__=a,host=h1,job=j2,zone=z2 ; 0:4011c00000000000 1:4008000000000000 2:c0fdb19000000000 3:c0c13c8000000000 4:4122a28200000000 6:c10dada800000000 7:4000000000000000 8:4120d49800000000 series __name__=a,host=h2,job=j1,zone=z2 ; 0:401c27ae147ae148 1:fa6899d641714788 2:ffefffffffffffff 3:c05f400000000000 4:bfedbc6a7ef9db23 5:0000000000000000 6:3fdae147ae147ae1 8:802c7cc387a67ec0 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:4011c00000000000 1:4008000000000000 2:c0fdb19000000000 3:c0c13c8000000000 4:4122a28200000000 6:c10dada800000000 7:4000000000000000 8:4120d49800000000 series __name__=a,host=h2,zone=z1 ; 2:ffe1ccf385ebc8a0 3:0000000000000001 6:7c0a489f44473ee4 7:782a67fa6c1344b4 result host=h1,job=j2,zone=z2 ; 0:4014000000000000 1:4008000000000000 2:c0fdb19000000000 3:c0c13c8000000000 4:4122a28200000000 6:c10dada800000000 7:4000000000000000 8:4120d49800000000 result host=h2,job=j1,zone=z2 ; 0:4020000000000000 1:fa6899d641714788 2:ffefffffffffffff 3:c05f400000000000 4:8000000000000000 5:0000000000000000 6:3ff0000000000000 8:8000000000000000 @@ -102,8 +103,8 @@ case math floor expr floor(a) grid -3544116501466 60000 8 series __name__=a,host=h2,job=j1,zone=z1 ; 0:802dc0445669d422 1:0000000000000002 2:c0e8e0c000000000 3:c01c000000000000 -series __name__=a,host=h2,job=j1,zone=z2 ; 1:78d6bfa04792fb40 2:c050780000000000 3:0000000059b707f6 4:c0b7818000000000 5:4127eef400000000 6:c0f1733000000000 7:c10dd8a000000000 series __name__=a,host=h2,zone=z1 ; 1:7b162d38e8c8ffd4 3:c01c000000000000 4:7a9956047b631df8 7:c0af8d8000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 1:78d6bfa04792fb40 2:c050780000000000 3:0000000059b707f6 4:c0b7818000000000 5:4127eef400000000 6:c0f1733000000000 7:c10dd8a000000000 result host=h2,job=j1,zone=z1 ; 0:bff0000000000000 1:0000000000000000 2:c0e8e0c000000000 3:c01c000000000000 result host=h2,job=j1,zone=z2 ; 1:78d6bfa04792fb40 2:c050800000000000 3:0000000000000000 4:c0b7820000000000 5:4127eef400000000 6:c0f1733000000000 7:c10dd8a000000000 result host=h2,zone=z1 ; 1:7b162d38e8c8ffd4 3:c01c000000000000 4:7a9956047b631df8 7:c0af8e0000000000 @@ -135,32 +136,32 @@ end case math floor expr floor(a) grid -951820580376 1000 9 -series __name__=a ; 0:bfec872b020c49bb 1:c0c0d88000000000 2:3ff0000000000000 3:000fffffffffffff 4:c04771999999999a 7:c0a3178000000000 8:406b140000000000 series __name__=a,host=h1,job=j2,zone=z2 ; 0:8000000000000001 1:401c000000000000 2:fea65e065a8a2a94 5:c08f110000000000 6:3ff0000000000000 7:3fd6353f7ced9169 +series __name__=a ; 0:bfec872b020c49bb 1:c0c0d88000000000 2:3ff0000000000000 3:000fffffffffffff 4:c04771999999999a 7:c0a3178000000000 8:406b140000000000 result - ; 0:bff0000000000000 1:c0c0d88000000000 2:3ff0000000000000 3:0000000000000000 4:c047800000000000 7:c0a3180000000000 8:406b000000000000 result host=h1,job=j2,zone=z2 ; 0:bff0000000000000 1:401c000000000000 2:fea65e065a8a2a94 5:c08f180000000000 6:3ff0000000000000 7:0000000000000000 end case math sqrt expr sqrt(a) grid 360879133452 1 4 -series __name__=a,host=h2,job=j1 ; 1:4020000000000000 2:7ff0000000000000 series __name__=a,zone=z2 ; 1:4008000000000000 3:000fffffffffffff +series __name__=a,host=h2,job=j1 ; 1:4020000000000000 2:7ff0000000000000 result host=h2,job=j1 ; 1:4006a09e667f3bcd 2:7ff0000000000000 result zone=z2 ; 1:3ffbb67ae8584caa 3:1fffffffffffffff end case math sqrt expr sqrt(a) grid 3408288750287 60000 7 -series __name__=a,host=h1,job=j2,zone=z2 ; 1:8000000000016c4a 4:c0b304c000000000 5:bfe122d0e5604189 6:c010000000000000 series __name__=a,zone=z2 ; 0:c018000000000000 1:c0801c0000000000 3:7fefffffffffffff 4:40f319d800000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:8000000000016c4a 4:c0b304c000000000 5:bfe122d0e5604189 6:c010000000000000 result host=h1,job=j2,zone=z2 ; 1:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 result zone=z2 ; 0:fff8000000000000 1:fff8000000000000 3:5fefffffffffffff 4:40717b5acfe20ea7 end case math sqrt expr sqrt(a) grid 1581145206376 15000 6 -series __name__=a,host=h1,job=j2,zone=z2 ; 0:4111d85c00000000 1:4008000000000000 2:80000000005f05dc 4:0000000000000002 5:40a99b0000000000 series __name__=a,zone=z1 ; 0:4341c37937e08000 1:3fe347ae147ae148 2:c021db851eb851ec 4:80000000000257c7 5:bfc849ba5e353f7d +series __name__=a,host=h1,job=j2,zone=z2 ; 0:4111d85c00000000 1:4008000000000000 2:80000000005f05dc 4:0000000000000002 5:40a99b0000000000 series __name__=a,zone=z2 ; 1:404e666666666667 2:c0d14c2000000000 3:3ff0000000000000 4:402193d70a3d70a4 5:bfd56e978d4fdf3c result host=h1,job=j2,zone=z2 ; 0:4080e5bca789e64e 1:3ffbb67ae8584caa 2:fff8000000000000 4:1e66a09e667f3bcd 5:404c9fee1d0b2e27 result zone=z1 ; 0:4197d78400000000 1:3fe8d6b3b35c8629 2:fff8000000000000 4:fff8000000000000 5:fff8000000000000 @@ -169,17 +170,17 @@ end case math sqrt expr sqrt(a) grid -1962160767282 60000 5 -series __name__=a,host=h1,job=j2,zone=z1 ; 0:bfe0000000000000 1:ffefffffffffffff 3:40c368c000000000 4:c01e8ccccccccccd series __name__=a,host=h2,job=j2,zone=z2 ; 0:c00ca147ae147ae1 1:bff0000000000000 3:c1214fa400000000 4:c023770a3d70a3d7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:bfe0000000000000 1:ffefffffffffffff 3:40c368c000000000 4:c01e8ccccccccccd result host=h1,job=j2,zone=z1 ; 0:fff8000000000000 1:fff8000000000000 3:4058ebf7f9932c00 4:fff8000000000000 result host=h2,job=j2,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 3:fff8000000000000 4:fff8000000000000 end case math sqrt expr sqrt(a) grid 1348888560782 60000 5 +series __name__=a,job=j2,zone=z1 ; 0:f8d7b7fd453652b6 1:fc0c5487d15de900 2:412195f400000000 3:3fe0000000000000 4:c010000000000000 series __name__=a,host=h1 ; 0:c0f78ce800000000 1:7dd845edd8013610 2:4008000000000000 3:40bffe0000000000 4:40b38bc000000000 series __name__=a,host=h2,job=j2,zone=z2 ; 0:8000000000000015 2:4008000000000000 3:c0bb990000000000 4:800000000000304d -series __name__=a,job=j2,zone=z1 ; 0:f8d7b7fd453652b6 1:fc0c5487d15de900 2:412195f400000000 3:3fe0000000000000 4:c010000000000000 result host=h1 ; 0:fff8000000000000 1:5ee3b505cc2390b1 2:3ffbb67ae8584caa 3:40569fe95eb7dd64 4:4051af2e1d829cb0 result host=h2,job=j2,zone=z2 ; 0:fff8000000000000 2:3ffbb67ae8584caa 3:fff8000000000000 4:fff8000000000000 result job=j2,zone=z1 ; 0:fff8000000000000 1:fff8000000000000 2:4087b8e3fd11a620 3:3fe6a09e667f3bcd 4:fff8000000000000 @@ -192,207 +193,3312 @@ series __name__=a,zone=z1 ; 0:4008000000000000 1:0000000000000000 3:fa74d01a2a81 result host=h1,job=j2,zone=z2 ; 0:fff8000000000000 1:408ced67475c5d9d 2:4020fd5d290afe95 3:400f33db3bef5d6f result zone=z1 ; 0:3ffbb67ae8584caa 1:0000000000000000 3:fff8000000000000 end -case math round 3ff0000000000000 -expr round(a) +case math exp +expr exp(a) grid -3022986188931 1000 4 -series __name__=a,host=h1,job=j1,zone=z1 ; 1:c10d0d8000000000 -series __name__=a,host=h2,job=j2,zone=z2 ; 0:c020000000000000 1:c0b23e0000000000 3:c0847c0000000000 series __name__=a,job=j1 ; 0:c12c176800000000 1:7cc952a9e608b874 3:7df02c2e3b40b0c0 -result host=h1,job=j1,zone=z1 ; 1:c10d0d8000000000 -result host=h2,job=j2,zone=z2 ; 0:c020000000000000 1:c0b23e0000000000 3:c084780000000000 -result job=j1 ; 0:c12c176800000000 1:7cc952a9e608b874 3:7df02c2e3b40b0c0 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c020000000000000 1:c0b23e0000000000 3:c0847c0000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:c10d0d8000000000 +result host=h1,job=j1,zone=z1 ; 1:0000000000000000 +result host=h2,job=j2,zone=z2 ; 0:3f35fc21041027ac 1:0000000000000000 3:04d3e1d3862115aa +result job=j1 ; 0:0000000000000000 1:7ff0000000000000 3:7ff0000000000000 end -case math round 3ff0000000000000 -expr round(a) +case math exp +expr exp(a) grid 2091185698579 15000 4 -series __name__=a,host=h1,job=j1,zone=z2 ; 0:c014dc28f5c28f5c 2:0000000004bc4ca6 3:c022666666666667 series __name__=a,job=j1,zone=z1 ; 0:8000001d70ebc600 1:c11391c400000000 2:405291999999999a -result host=h1,job=j1,zone=z2 ; 0:c014000000000000 2:0000000000000000 3:c022000000000000 -result job=j1,zone=z1 ; 0:0000000000000000 1:c11391c400000000 2:4052800000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c014dc28f5c28f5c 2:0000000004bc4ca6 3:c022666666666667 +result host=h1,job=j1,zone=z2 ; 0:3f76426aa0dc4117 2:3ff0000000000000 3:3f1a7ca3b4bbd157 +result job=j1,zone=z1 ; 0:3ff0000000000000 1:0000000000000000 2:46a1d449c4eb3c4f end -case math round 3ff0000000000000 -expr round(a) +case math exp +expr exp(a) grid 1147230677471 15000 5 -series __name__=a,host=h1,job=j1 ; 0:bfe25e353f7ced92 1:80000007caacec44 4:bfe0000000000000 series __name__=a,host=h1,zone=z1 ; 0:4000000000000000 1:4024000000000000 2:c024000000000000 3:fc09bd4e2758d562 4:00000000000fe1be series __name__=a,host=h2,zone=z2 ; 0:3fec99999999999a 1:c01f000000000000 3:41154d2000000000 4:40863c0000000000 -result host=h1,job=j1 ; 0:bff0000000000000 1:0000000000000000 4:0000000000000000 -result host=h1,zone=z1 ; 0:4000000000000000 1:4024000000000000 2:c024000000000000 3:fc09bd4e2758d562 4:0000000000000000 -result host=h2,zone=z2 ; 0:3ff0000000000000 1:c020000000000000 3:41154d2000000000 4:4086400000000000 +series __name__=a,host=h1,job=j1 ; 0:bfe25e353f7ced92 1:80000007caacec44 4:bfe0000000000000 +result host=h1,job=j1 ; 0:3fe2064a4f1462ed 1:3ff0000000000000 4:3fe368b2fc6f960a +result host=h1,zone=z1 ; 0:401d8e64b8d4ddae 1:40d5829dcf950560 2:3f07cd79b5647c9b 3:0000000000000000 4:3ff0000000000000 +result host=h2,zone=z2 ; 0:40038de1e70497ab 1:3f3c3aa91ff0d498 3:7ff0000000000000 4:7ff0000000000000 end -case math round 3ff0000000000000 -expr round(a) +case math exp +expr exp(a) grid -2682458523828 1 4 -series __name__=a,host=h1,job=j1 ; 0:bfe0f0a3d70a3d71 1:c056926666666667 2:c008c7ae147ae148 3:bfd1fdf3b645a1cb series __name__=a,host=h2,job=j1,zone=z1 ; 0:4010000000000000 2:4341c37937e08000 3:4008000000000000 +series __name__=a,host=h1,job=j1 ; 0:bfe0f0a3d70a3d71 1:c056926666666667 2:c008c7ae147ae148 3:bfd1fdf3b645a1cb series __name__=a,host=h2,job=j2,zone=z1 ; 1:40068ccccccccccd 2:3ff0000000000000 3:40af9a0000000000 -result host=h1,job=j1 ; 0:bff0000000000000 1:c056800000000000 2:c008000000000000 3:0000000000000000 -result host=h2,job=j1,zone=z1 ; 0:4010000000000000 2:4341c37937e08000 3:4008000000000000 -result host=h2,job=j2,zone=z1 ; 1:4008000000000000 2:3ff0000000000000 3:40af9a0000000000 +result host=h1,job=j1 ; 0:3fe2d8ddd3aa72da 1:37cac5b844aeca1d 2:3fa71f782086ac84 3:3fe8286b4520be6f +result host=h2,job=j1,zone=z1 ; 0:404b4c902e273a58 2:7ff0000000000000 3:403415e5bf6fb106 +result host=h2,job=j2,zone=z1 ; 1:4030c1822f45d43f 2:4005bf0a8b145769 3:7ff0000000000000 end -case math round 3ff0000000000000 -expr round(a, 1) +case math exp +expr exp(a) grid -2013284349647 15000 5 -series __name__=a,host=h1,zone=z2 ; 0:800000000000ab55 3:800000118741c447 4:c0e0cd9000000000 series __name__=a,zone=z1 ; 0:40f22d2000000000 1:c0555ccccccccccd 3:c122287000000000 4:c072480000000000 -result host=h1,zone=z2 ; 0:0000000000000000 3:0000000000000000 4:c0e0cd8000000000 -result zone=z1 ; 0:40f22d2000000000 1:c055400000000000 3:c122287000000000 4:c072400000000000 +series __name__=a,host=h1,zone=z2 ; 0:800000000000ab55 3:800000118741c447 4:c0e0cd9000000000 +result host=h1,zone=z2 ; 0:3ff0000000000000 3:3ff0000000000000 4:0000000000000000 +result zone=z1 ; 0:7ff0000000000000 1:383a62da7c283615 3:0000000000000000 4:2590215abc5d724b end -case math round 3ff0000000000000 -expr round(a, 1) +case math exp +expr exp(a) grid -1934277777347 60000 9 series __name__=a,job=j2,zone=z1 ; 0:79498be2a0084080 1:40ea932000000000 3:4115aae000000000 5:ffe1ccf385ebc8a0 6:40b77dc000000000 7:40fae2d000000000 8:0000000000000000 -result job=j2,zone=z1 ; 0:79498be2a0084080 1:40ea932000000000 3:4115aae000000000 5:ffe1ccf385ebc8a0 6:40b77e0000000000 7:40fae2d000000000 8:0000000000000000 +result job=j2,zone=z1 ; 0:7ff0000000000000 1:7ff0000000000000 3:7ff0000000000000 5:0000000000000000 6:7ff0000000000000 7:7ff0000000000000 8:3ff0000000000000 end -case math round 3fe0000000000000 -expr round(a, 0.5) +case math ln +expr ln(a) grid -1733790336954 15000 7 series __name__=a,host=h1,zone=z2 ; 1:4008000000000000 2:c0b8948000000000 3:4123524a00000000 4:40152f5c28f5c28f 6:fea794b1b4e30050 -result host=h1,zone=z2 ; 1:4008000000000000 2:c0b8948000000000 3:4123524a00000000 4:4016000000000000 6:fea794b1b4e30050 +result host=h1,zone=z2 ; 1:3ff193ea7aad030a 2:7ff8000000000001 3:402ab7833d58fd7f 4:3ffaac072ae123f4 6:7ff8000000000001 end -case math round 3fe0000000000000 -expr round(a, 0.5) +case math ln +expr ln(a) grid 1861395254097 1 10 series __name__=a,host=h1,job=j1,zone=z2 ; 1:c341c37937e08000 2:411b8ac800000000 4:8000007c3d9a1780 5:80000001c0d0aa17 7:0000000000066342 8:4014000000000000 9:405249999999999a series __name__=a,host=h2,job=j2,zone=z1 ; 2:c010000000000000 5:40ddd26000000000 6:405cf00000000000 7:40b246c000000000 8:78f187976c2eea08 9:c0f4677000000000 -result host=h1,job=j1,zone=z2 ; 1:c341c37937e08000 2:411b8ac800000000 4:0000000000000000 5:0000000000000000 7:0000000000000000 8:4014000000000000 9:4052400000000000 -result host=h2,job=j2,zone=z1 ; 2:c010000000000000 5:40ddd26000000000 6:405d000000000000 7:40b2470000000000 8:78f187976c2eea08 9:c0f4677000000000 +result host=h1,job=j1,zone=z2 ; 1:7ff8000000000001 2:402a0a202ee8c3cf 4:7ff8000000000001 5:7ff8000000000001 7:c08628b76e3a782f 8:3ff9c041f7ed8d33 9:40112b884c949a09 +result host=h2,job=j2,zone=z1 ; 2:7ff8000000000001 5:4024a746a07d37a9 6:401301779265be1c 7:4020e6cd74e1a914 8:4083c1eea956afca 9:7ff8000000000001 end -case math round 3fb999999999999a -expr round(a, 0.1) +case math ln +expr ln(a) grid 892799548686 15000 4 +series __name__=a,job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:3ff0000000000000 2:40f0e69000000000 3:c089a40000000000 series __name__=a,host=h2,job=j1 ; 0:3fd77ced916872b0 1:c0f571d800000000 2:000fffffffffffff series __name__=a,host=h2,zone=z2 ; 1:7d2967c5469db91e 3:7fe1ccf385ebc8a0 -series __name__=a,job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:3ff0000000000000 2:40f0e69000000000 3:c089a40000000000 -result host=h2,job=j1 ; 0:3fd999999999999a 1:c0f571d800000000 2:0000000000000000 -result host=h2,zone=z2 ; 1:7d2967c5469db91e 3:7ff0000000000000 -result job=j1,zone=z2 ; 0:7ff0000000000000 1:3ff0000000000000 2:40f0e69000000000 3:c089a40000000000 +result host=h2,job=j1 ; 0:bff009cdb1b8f237 1:7ff8000000000001 2:c086232bdd7abcd2 +result host=h2,zone=z2 ; 1:4085386d7cf3a685 3:40862991d5d62a5e +result job=j1,zone=z2 ; 0:40862991d5d62a5e 1:0000000000000000 2:40264a4cd22fd227 3:7ff8000000000001 end -case math round 3fb999999999999a -expr round(a, 0.1) +case math ln +expr ln(a) grid 1935929279437 1 6 -series __name__=a,host=h2,job=j1 ; 0:4121076000000000 1:40eff54000000000 2:4081b30000000000 4:40e0059000000000 series __name__=a,host=h2,zone=z2 ; 0:4008000000000000 2:c08e3d0000000000 3:80000000000761f1 4:3fe1428f5c28f5c3 +series __name__=a,host=h2,job=j1 ; 0:4121076000000000 1:40eff54000000000 2:4081b30000000000 4:40e0059000000000 series __name__=a,job=j2,zone=z2 ; 1:4086120000000000 3:4120f0ea00000000 5:8000000000000000 -result host=h2,job=j1 ; 0:4121076000000000 1:40eff54000000000 2:4081b33333333333 4:40e0059000000000 -result host=h2,zone=z2 ; 0:4008000000000000 2:c08e3ccccccccccd 3:0000000000000000 4:3fe0000000000000 -result job=j2,zone=z2 ; 1:4086126666666666 3:4120f0ea00000000 5:0000000000000000 +result host=h2,job=j1 ; 0:402a76d7ad872f08 1:40262d96e20fbfe8 2:40195b6607cf27ff 4:4024cc10b020c04d +result host=h2,zone=z2 ; 0:3ff193ea7aad030a 2:7ff8000000000001 3:7ff8000000000001 4:bfe3c148a8e052d6 +result job=j2,zone=z2 ; 1:401a3d68966bbb7a 3:402a74329b1e21e4 5:fff0000000000000 end -case math round 4008000000000000 -expr round(a, 3) +case math ln +expr ln(a) grid -1472300150492 1 5 series __name__=a,host=h2,job=j2,zone=z2 ; 1:bfe0000000000000 2:8000000000000074 3:40c1d8c000000000 4:4341c37937e08000 -result host=h2,job=j2,zone=z2 ; 1:0000000000000000 2:0000000000000000 3:40c1d90000000000 4:4341c37937e08000 +result host=h2,job=j2,zone=z2 ; 1:7ff8000000000001 2:7ff8000000000001 3:40223d83440f9a91 4:40426bb1bbb55516 end -case math round 4008000000000000 -expr round(a, 3) +case math ln +expr ln(a) grid -553570169856 60000 3 -series __name__=a,host=h1,zone=z2 ; 1:f90da661f15293b8 2:ffe1ccf385ebc8a0 series __name__=a,zone=z1 ; 0:40236ccccccccccd 1:4095590000000000 2:4008828f5c28f5c3 -result host=h1,zone=z2 ; 1:f90da661f15293b7 2:ffe1ccf385ebc8a0 -result zone=z1 ; 0:4022000000000000 1:4095540000000000 2:4008000000000000 +series __name__=a,host=h1,zone=z2 ; 1:f90da661f15293b8 2:ffe1ccf385ebc8a0 +result host=h1,zone=z2 ; 1:7ff8000000000001 2:7ff8000000000001 +result zone=z1 ; 0:40022ff387b975e5 1:401ce119d0add196 2:3ff1ea0b45939649 end -case math round c000000000000000 -expr round(a, (-2)) +case math log2 +expr log2(a) grid 793533970766 60000 4 -series __name__=a,host=h1,job=j2,zone=z1 ; 1:c0763c0000000000 2:40e8399000000000 3:4125f51800000000 -series __name__=a,host=h1,job=j2,zone=z2 ; 1:3ff0000000000000 2:bfebd604189374bd 3:bfee570a3d70a3d7 series __name__=a,job=j2,zone=z1 ; 0:4004fd70a3d70a3e 1:4000000000000000 2:c341c37937e08000 -result host=h1,job=j2,zone=z1 ; 1:c076400000000000 2:40e8398000000000 3:4125f51800000000 -result host=h1,job=j2,zone=z2 ; 1:8000000000000000 2:8000000000000000 3:8000000000000000 -result job=j2,zone=z1 ; 0:4000000000000000 1:4000000000000000 2:c341c37937e08000 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:3ff0000000000000 2:bfebd604189374bd 3:bfee570a3d70a3d7 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:c0763c0000000000 2:40e8399000000000 3:4125f51800000000 +result host=h1,job=j2,zone=z1 ; 1:7ff8000000000001 2:402f32639636b283 3:403374e60abc6d4b +result host=h1,job=j2,zone=z2 ; 1:0000000000000000 2:7ff8000000000001 3:7ff8000000000001 +result job=j2,zone=z1 ; 0:3ff6441e17d575ea 1:3ff0000000000000 2:7ff8000000000001 end -case math round c000000000000000 -expr round(a, (-2)) +case math log2 +expr log2(a) grid 1566718578387 15000 5 -series __name__=a,host=h2,zone=z2 ; 0:3fe6851eb851eb85 1:c0f3948000000000 2:4056eccccccccccd 3:4020000000000000 4:c089650000000000 series __name__=a,job=j2,zone=z2 ; 0:c0f0c5c000000000 1:ffefffffffffffff 2:c018e66666666667 3:c0ef4fa000000000 4:3fe0000000000000 +series __name__=a,host=h2,zone=z2 ; 0:3fe6851eb851eb85 1:c0f3948000000000 2:4056eccccccccccd 3:4020000000000000 4:c089650000000000 series __name__=a,zone=z2 ; 0:c07f820000000000 2:8000000000000089 3:3fe91fbe76c8b439 4:3fe0000000000000 -result host=h2,zone=z2 ; 0:8000000000000000 1:c0f3948000000000 2:4057000000000000 3:4020000000000000 4:c089600000000000 -result job=j2,zone=z2 ; 0:c0f0c5c000000000 1:ffefffffffffffff 2:c018000000000000 3:c0ef4fc000000000 4:8000000000000000 -result zone=z2 ; 0:c07f800000000000 2:8000000000000000 3:8000000000000000 4:8000000000000000 +result host=h2,zone=z2 ; 0:bfe0383d1c85d5dc 1:7ff8000000000001 2:401a134d5e9756c6 3:4008000000000000 4:7ff8000000000001 +result job=j2,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:bff0000000000000 +result zone=z2 ; 0:7ff8000000000001 2:7ff8000000000001 3:bfd6561c21d3d142 4:bff0000000000000 end -case math round 0000000000000000 -expr round(a, 0) +case math log2 +expr log2(a) grid -1026082157982 60000 7 series __name__=a,host=h1,zone=z2 ; 0:7ff0000000000000 1:c341c37937e08000 2:c018000000000000 3:7ff8000000000001 4:c024000000000000 5:4056533333333334 6:7ff8000000000001 series __name__=a,job=j2,zone=z2 ; 0:40abb48000000000 4:3ff0000000000000 5:4052580000000000 6:4082180000000000 series __name__=a,zone=z1 ; 0:8000000000000001 2:c024000000000000 4:c0f2694800000000 5:3fe0000000000000 6:bfe0000000000000 -result host=h1,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:7ff8000000000001 4:fff8000000000000 5:fff8000000000000 6:7ff8000000000001 -result job=j2,zone=z2 ; 0:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 -result zone=z1 ; 0:fff8000000000000 2:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 +result host=h1,zone=z2 ; 0:7ff0000000000000 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 5:4019ec1f54ddfb8a 6:7ff8000000000001 +result job=j2,zone=z2 ; 0:4027958b512dd112 4:0000000000000000 5:4018c9f32c3c8822 6:40225ad6bbd2aba0 +result zone=z1 ; 0:7ff8000000000001 2:7ff8000000000001 4:7ff8000000000001 5:bff0000000000000 6:7ff8000000000001 end -case math round 0000000000000000 -expr round(a, 0) +case math log2 +expr log2(a) grid -2669275454038 60000 5 series __name__=a,host=h1,job=j2 ; 0:407aae0000000000 1:4022e1eb851eb852 2:ffe1ccf385ebc8a0 3:7fe1ccf385ebc8a0 4:c0be4c4000000000 series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0f03ab000000000 1:c00a51eb851eb852 2:bfe8353f7ced9169 3:c101ce9800000000 4:4023e28f5c28f5c3 -result host=h1,job=j2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 -result host=h2,job=j2,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 +result host=h1,job=j2 ; 0:402179afdd432f15 1:4009e96d3c556308 2:7ff8000000000001 3:408ff93b176658a4 4:7ff8000000000001 +result host=h2,job=j2,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:400a8245416d81e3 end -case math round 7ff8000000000001 -expr round(a, NaN) +case math log2 +expr log2(a) grid -119798354174 1000 5 series __name__=a,job=j2 ; 0:40aff18000000000 1:c020000000000000 2:40f39ac000000000 4:4341c37937e08000 -result job=j2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 4:7ff8000000000001 +result job=j2 ; 0:4027feb0ff88ed61 1:7ff8000000000001 2:40304b09697f928c 4:404a934f0979a371 end -case math round 7ff8000000000001 -expr round(a, NaN) +case math log2 +expr log2(a) grid -2544211762022 60000 5 -series __name__=a,host=h1,job=j2 ; 1:80000000000000d7 2:bfe2a1cac083126f 3:c039b33333333334 -series __name__=a,host=h2,zone=z1 ; 0:4008000000000000 2:ffe1ccf385ebc8a0 3:4064b80000000000 series __name__=a,host=h2,zone=z2 ; 0:c02189999999999a 2:bfd34189374bc6a8 3:fc2814243a77b35e +series __name__=a,host=h2,zone=z1 ; 0:4008000000000000 2:ffe1ccf385ebc8a0 3:4064b80000000000 +series __name__=a,host=h1,job=j2 ; 1:80000000000000d7 2:bfe2a1cac083126f 3:c039b33333333334 result host=h1,job=j2 ; 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 -result host=h2,zone=z1 ; 0:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 +result host=h2,zone=z1 ; 0:3ff95c01a39fbd69 2:7ff8000000000001 3:401d7dd0569c04c0 result host=h2,zone=z2 ; 0:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 end -case math round 7ff0000000000000 -expr round(a, Inf) +case math log10 +expr log10(a) grid 877674442098 1 10 -series __name__=a ; 2:c0b4438000000000 3:c117450800000000 5:bfc4f5c28f5c28f6 8:401671eb851eb852 series __name__=a,host=h1,job=j1,zone=z1 ; 1:0000000000000000 3:7fefffffffffffff 5:bfed916872b020c5 6:4000000000000000 8:c12ab1fc00000000 9:f8483959c1011e02 -result - ; 2:fff8000000000000 3:fff8000000000000 5:fff8000000000000 8:fff8000000000000 -result host=h1,job=j1,zone=z1 ; 1:fff8000000000000 3:fff8000000000000 5:fff8000000000000 6:fff8000000000000 8:fff8000000000000 9:fff8000000000000 +series __name__=a ; 2:c0b4438000000000 3:c117450800000000 5:bfc4f5c28f5c28f6 8:401671eb851eb852 +result - ; 2:7ff8000000000001 3:7ff8000000000001 5:7ff8000000000001 8:3fe7f84be07a5db9 +result host=h1,job=j1,zone=z1 ; 1:fff0000000000000 3:40734413509f79ff 5:7ff8000000000001 6:3fd34413509f79ff 8:7ff8000000000001 9:7ff8000000000001 end -case math round 7ff0000000000000 -expr round(a, Inf) +case math log10 +expr log10(a) grid 2715442887313 15000 8 -series __name__=a,host=h1 ; 0:c341c37937e08000 1:8000000352c83617 2:c01bc7ae147ae148 3:4083920000000000 4:401e6147ae147ae1 5:401c000000000000 6:7ff0000000000000 7:c0d01d0000000000 series __name__=a,host=h2,job=j1,zone=z2 ; 0:f85d39a07811acb8 1:4039a66666666667 2:8029d1b066bfc15c 3:405264cccccccccd 4:41154b2c00000000 5:c0f4363800000000 6:7fefffffffffffff series __name__=a,job=j1,zone=z2 ; 0:0000000000000001 1:410a13c800000000 4:fb2862529867c73a 7:c020000000000000 -result host=h1 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 7:fff8000000000000 -result host=h2,job=j1,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 -result job=j1,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 4:fff8000000000000 7:fff8000000000000 +series __name__=a,host=h1 ; 0:c341c37937e08000 1:8000000352c83617 2:c01bc7ae147ae148 3:4083920000000000 4:401e6147ae147ae1 5:401c000000000000 6:7ff0000000000000 7:c0d01d0000000000 +result host=h1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:40065fbd474d0d0c 4:3fec2d489752ab4a 5:3feb0b0b0b78cc3f 6:7ff0000000000000 7:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 1:3ff68b9f328fc30e 2:7ff8000000000001 3:3ffdde208f76ade6 4:40162bb1a520743d 5:7ff8000000000001 6:40734413509f79ff +result job=j1,zone=z2 ; 0:c0733f424bcb5221 1:4015519050514136 4:7ff8000000000001 7:7ff8000000000001 end -case math round 01a56e1fc2f8f359 -expr round(a, 1e-300) +case math log10 +expr log10(a) grid -3966454058935 15000 4 series __name__=a,host=h1,zone=z2 ; 1:7fe1ccf385ebc8a0 2:c0c34b6000000000 3:c10a1f8000000000 series __name__=a,host=h2 ; 1:c0408ccccccccccd 2:4014000000000000 3:4020000000000000 -result host=h1,zone=z2 ; 1:7ff0000000000000 2:c0c34b6000000000 3:c10a1f8000000000 -result host=h2 ; 1:c0408ccccccccccd 2:4014000000000000 3:4020000000000000 +result host=h1,zone=z2 ; 1:4073400000000000 2:7ff8000000000001 3:7ff8000000000001 +result host=h2 ; 1:7ff8000000000001 2:3fe65df657b04300 3:3fece61cf8ef36fe end -case math round 01a56e1fc2f8f359 -expr round(a, 1e-300) +case math log10 +expr log10(a) grid -716571138391 15000 7 series __name__=a,job=j2 ; 0:40534d999999999a 1:7fe1ccf385ebc8a0 2:c0774c0000000000 3:c008000000000000 4:3fe8ced916872b02 5:c020b70a3d70a3d7 6:7fe1ccf385ebc8a0 -result job=j2 ; 0:40534d999999999a 1:7ff0000000000000 2:c0774c0000000000 3:c008000000000000 4:3fe8ced916872b03 5:c020b70a3d70a3d7 6:7ff0000000000000 +result job=j2 ; 0:3ffe33f7ed8ade3e 1:4073400000000000 2:7ff8000000000001 3:7ff8000000000001 4:bfbc4d8b39116e3b 5:7ff8000000000001 6:4073400000000000 end -case math round 3fd0000000000000 -expr round(a, 0.25) +case math log10 +expr log10(a) grid 571617009559 1 10 +series __name__=a,zone=z1 ; 0:4008000000000000 1:bfe16a7ef9db22d1 2:7c981b9fc7dc7ca0 3:00000000000024d9 4:0000000000000003 5:0000000000000008 6:bff0000000000000 7:4088e30000000000 8:40c1aa8000000000 9:4052aa6666666667 series __name__=a,host=h1,job=j1,zone=z1 ; 0:40e753e000000000 1:ffefffffffffffff 2:408a8a0000000000 4:8000000000ca7e01 5:7e4c0821a7721ad8 6:4022000000000000 7:c0f255c000000000 8:c080840000000000 9:c041cccccccccccd series __name__=a,job=j2,zone=z1 ; 0:bfee4fdf3b645a1d 2:00190396fed4d716 5:3ff4147ae147ae15 6:c0d10a8000000000 8:0000000000f835bd 9:c0737e0000000000 -series __name__=a,zone=z1 ; 0:4008000000000000 1:bfe16a7ef9db22d1 2:7c981b9fc7dc7ca0 3:00000000000024d9 4:0000000000000003 5:0000000000000008 6:bff0000000000000 7:4088e30000000000 8:40c1aa8000000000 9:4052aa6666666667 -result host=h1,job=j1,zone=z1 ; 0:40e753e000000000 1:fff0000000000000 2:408a8a0000000000 4:0000000000000000 5:7e4c0821a7721ad8 6:4022000000000000 7:c0f255c000000000 8:c080840000000000 9:c041c00000000000 -result job=j2,zone=z1 ; 0:bff0000000000000 2:0000000000000000 5:3ff4000000000000 6:c0d10a8000000000 8:0000000000000000 9:c0737c0000000000 -result zone=z1 ; 0:4008000000000000 1:bfe0000000000000 2:7c981b9fc7dc7ca0 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:bff0000000000000 7:4088e40000000000 8:40c1aa8000000000 9:4052b00000000000 +result host=h1,job=j1,zone=z1 ; 0:4012b780631e45c3 1:7ff8000000000001 2:40076eaa317efeb2 4:7ff8000000000001 5:4072c5ed4e6b7810 6:3fee8927964fd5fe 7:7ff8000000000001 8:7ff8000000000001 9:7ff8000000000001 +result job=j2,zone=z1 ; 0:7ff8000000000001 2:c073375664937cfb 5:3fb940b718570073 6:7ff8000000000001 8:c0733f424bcae655 9:7ff8000000000001 +result zone=z1 ; 0:3fde8927964fd5fc 1:7ff8000000000001 2:407242d58bd72b88 3:c0733f424bcb5210 4:c0733f424bcb5221 5:c0733f424bcb5221 6:7ff8000000000001 7:4007357d275c5f00 8:400fa6b989773396 9:3ffdf83a5b2c361b end -case math round 3fd0000000000000 -expr round(a, 0.25) +case math log10 +expr log10(a) grid 24248430186 1 5 series __name__=a,host=h1,zone=z1 ; 0:c010000000000000 1:4082150000000000 2:7b27f6e2e1474872 3:c11bb1d800000000 4:800000068c10face series __name__=a,job=j1,zone=z2 ; 0:40adec0000000000 1:7e12ad13ecfb769e 3:40163851eb851eb8 4:f9d77d15cf193c48 -result host=h1,zone=z1 ; 0:c010000000000000 1:4082160000000000 2:7b27f6e2e1474872 3:c11bb1d800000000 4:0000000000000000 -result job=j1,zone=z2 ; 0:40adec0000000000 1:7e12ad13ecfb769e 3:4016000000000000 4:f9d77d15cf193c48 +result host=h1,zone=z1 ; 0:7ff8000000000001 1:40061963b32f26ce 2:4071d4037dde9e98 3:7ff8000000000001 4:7ff8000000000001 +result job=j1,zone=z2 ; 0:400caa641e6a19a9 1:4072b4a7dc46abbc 3:3fe7d473ac340d48 4:7ff8000000000001 +end +case math sin +expr sin(a) +grid 1110892946972 15000 7 +series __name__=a,host=h2 ; 0:4008000000000000 1:c0898e0000000000 6:c0184a3d70a3d70a +series __name__=a,job=j1,zone=z1 ; 0:4341c37937e08000 1:40f1db1800000000 2:fe6b1c62b891e970 4:c123786000000000 5:4341c37937e08000 6:7c3ea57d8b4b8268 +series __name__=a,job=j1 ; 0:bfffcccccccccccd 3:4008000000000000 5:fe46382707b17a70 6:c0a1648000000000 +result host=h2 ; 0:3fc210386db6d55b 1:bfe9c3b332aec0cc 6:3fcac4c67350fb61 +result job=j1 ; 0:bfed42feb2096dc7 3:3fc210386db6d55b 5:3febd1fad04e7f15 6:bfed10c1c9a54809 +result job=j1,zone=z1 ; 0:3fe8f334432ebba5 1:3fee1594b8774e95 2:3fc3aefac35e9307 4:3fe971f9a9614d68 5:3fe8f334432ebba5 6:bfece798a892e0aa +end +case math sin +expr sin(a) +grid -1929187841627 1000 6 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:bff21eb851eb851f 1:800000164badfd8d 3:7ea8f55df9c5dd6a 5:7878fce706d17b3c +series __name__=a,host=h1,job=j1,zone=z2 ; 4:000000000003ea8c 5:3fe1e872b020c49c +result host=h1,job=j1,zone=z2 ; 4:000000000003ea8c 5:3fe0fcdfcf7ce92a +result host=h1,job=j2,zone=z1 ; 0:bfecf9a8d416b08c 1:800000164badfd8d 3:bfefc43d28c4aa95 5:bfdc70a29d4f03ca +end +case math sin +expr sin(a) +grid -2940449194770 15000 10 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:40d478a000000000 2:3fc45604189374bd 3:c0f5db5000000000 4:c053b5999999999a 5:3fdf9374bc6a7efa 6:0000000000000000 7:3ffac28f5c28f5c3 8:4008000000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c0b1198000000000 1:0000000000000002 2:404a3ccccccccccd 9:4075d80000000000 +result host=h2,job=j2,zone=z1 ; 0:3fee7b1b82dc6763 1:0000000000000002 2:3fe9b104e8a039be 9:bfe693f61ab771d6 +result host=h2,job=j2,zone=z2 ; 0:3fef351e524f3279 2:3fc440247e469b7c 3:bfea522f28e1a859 4:3fd2c588c29f7103 5:3fde4f7ae2b77441 6:0000000000000000 7:3fefd5ab4190e5b6 8:3fc210386db6d55b +end +case math sin +expr sin(a) +grid 3814435031641 15000 4 +series __name__=a,host=h1,zone=z1 ; 0:c000000000000000 2:40b05a4000000000 +result host=h1,zone=z1 ; 0:bfed18f6ead1b445 2:3fefe73a1da8ac80 +end +case math sin +expr sin(a) +grid -173828729924 60000 8 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0c4dfc000000000 1:c024533333333334 3:c12aaf0e00000000 4:3fe22d0e56041894 5:c01c000000000000 6:c0085c28f5c28f5c +series __name__=a,host=h1,zone=z2 ; 0:4341c37937e08000 1:4008000000000000 4:40d5856000000000 6:bfb28f5c28f5c28f +series __name__=a,host=h2,job=j2,zone=z2 ; 2:0000000000000001 6:c0e8862000000000 7:40ce078000000000 +result host=h1,job=j1,zone=z1 ; 0:3fc9346bb8b0b4a3 1:3fe585f8be10bc12 3:bfe35a36d2f7f0af 4:3fe136dcfb097151 5:bfe50608c26d0a08 6:bfb8b074fc7ff8b5 +result host=h1,zone=z2 ; 0:3fe8f334432ebba5 1:3fc210386db6d55b 4:3fe6553817898547 6:bfb28b32de4b9b79 +result host=h2,job=j2,zone=z2 ; 2:0000000000000001 6:3fd670c5e7d7bf35 7:3fa750b394f951ac +end +case math sin +expr sin(a) +grid 1312635507848 15000 5 +series __name__=a ; 0:7cc1151a41869cd0 1:7ff0000000000000 2:7fe1ccf385ebc8a0 3:c023933333333334 +series __name__=a,job=j2,zone=z1 ; 2:78c43d27ad388300 3:8000000000000001 4:c000000000000000 +result - ; 0:bfeeec869143d557 1:7ff8000000000001 2:3fdd0472b6b4d937 3:3fd6b560edc6fd7d +result job=j2,zone=z1 ; 2:bfeca42885f16ef0 3:8000000000000001 4:bfed18f6ead1b445 +end +case math cos +expr cos(a) +grid -1504833549716 60000 4 +series __name__=a,job=j1 ; 0:c015800000000000 2:0000000000000001 3:fff0000000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0c0108000000000 2:4341c37937e08000 3:c122a37c00000000 +result host=h2,job=j2,zone=z2 ; 0:3fee786f1cdcb2d7 2:bfe40991e398dbfb 3:3fe78810f76311c0 +result job=j1 ; 0:3fe3af889be34831 2:3ff0000000000000 3:7ff8000000000001 +end +case math cos +expr cos(a) +grid -3948775770063 1 4 +series __name__=a,job=j2 ; 0:c0c2138000000000 1:3fefb95810624dd3 2:c341c37937e08000 +result job=j2 ; 0:3fefb8c7dc595097 1:3fe18572334b1c1a 2:bfe40991e398dbfb +end +case math cos +expr cos(a) +grid 2857563783643 1000 3 +series __name__=a,host=h2,zone=z2 ; 0:fc15b1b0ac9208e6 1:4055cb3333333334 +series __name__=a,zone=z1 ; 1:4051ef3333333333 2:4064500000000000 +result host=h2,zone=z2 ; 0:bf86f065cab81c7a 1:3fe68842de397f29 +result zone=z1 ; 1:bfebc8b588b14076 2:3fe4cf4075054dd3 +end +case math cos +expr cos(a) +grid 3072072008011 15000 7 +series __name__=a,job=j2,zone=z2 ; 0:3fe0000000000000 1:c0358ccccccccccd 2:405259999999999a 3:3fe0000000000000 4:0000000022e8ecea +series __name__=a,host=h2,job=j1 ; 0:c0478ccccccccccd 1:3fc5d2f1a9fbe76d 2:c00ca66666666667 3:3fedba5e353f7cee 4:4128160400000000 5:bfcc978d4fdf3b65 6:0000000000000000 +result host=h2,job=j1 ; 0:bfeffda995120bfd 1:3fef893767fbc2fb 2:bfecf4ebba30ddf8 3:3fe32805392c1fdf 4:3fef0d5467964e2f 5:3fef3479079b6475 6:3ff0000000000000 +result job=j2,zone=z2 ; 0:3fec1528065b7d50 1:bfecefb6885fb28b 2:bfda87acf610dfb5 3:3fec1528065b7d50 4:3ff0000000000000 +end +case math cos +expr cos(a) +grid -2550621532608 60000 8 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:7fefffffffffffff 3:c129332c00000000 4:f852297ba08e56d0 5:bfdec49ba5e353f8 6:410e70f800000000 7:40f71d3000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:40b9f3c000000000 2:40b8a60000000000 3:0000000011a0d7db 4:c01c000000000000 5:faffefd597c97ca0 6:7ff8000000000001 7:c085a60000000000 +result host=h1,job=j2,zone=z1 ; 1:bfe8171757b449c3 2:bfbc65ae045a6a54 3:3ff0000000000000 4:3fe81ff79ed92017 5:bfeff83f09ac5196 6:7ff8000000000001 7:bf9d81e9ea3dfe99 +result host=h2,job=j2,zone=z1 ; 0:bfefffe62ecfab75 3:3fd5f5ad596f13ee 4:3fd56e9de059c365 5:3fec5f6c565cbb85 6:bfb66227c4a70f05 7:3feffaa16714d1c3 +end +case math cos +expr cos(a) +grid 3799302470847 1 7 +series __name__=a,zone=z2 ; 0:3ff5570a3d70a3d7 1:c123449e00000000 3:c0a6918000000000 4:c010f33333333333 5:bfc5fbe76c8b4396 6:c050780000000000 +series __name__=a,host=h2,zone=z1 ; 0:bfc2a3d70a3d70a4 2:c0043d70a3d70a3e 3:c341c37937e08000 4:7ff0000000000000 5:3fee5f3b645a1cac 6:c01c000000000000 +result host=h2,zone=z1 ; 0:3fefa94a7ebf398b 2:bfea3312e700002a 3:bfe40991e398dbfb 4:7ff8000000000001 5:3fe2a2fa02df4066 6:3fe81ff79ed92017 +result zone=z2 ; 0:3fce0efe72ecaf87 1:bfee913871ed1e1e 3:3fac6df68a1dd45c 4:bfdd436a5e0ba903 5:3fef8778ff9e66e2 6:bfefd855dddcefe5 +end +case math tan +expr tan(a) +grid 1881769695190 60000 4 +series __name__=a,host=h1,job=j1 ; 0:fff0000000000000 1:40f02d6800000000 2:3ff7800000000000 3:8000b5d477fab2ff +series __name__=a,job=j1,zone=z2 ; 0:7fefffffffffffff 1:401bf851eb851eb8 2:3fd79db22d0e5604 3:bfdc76c8b4395811 +result host=h1,job=j1 ; 0:7ff8000000000001 1:3f9c6c7da7f7e44f 2:402387e6aab2b243 3:8000b5d477fab2ff +result job=j1,zone=z2 ; 0:bf74530cfe72949d 1:3feb7780c0dc72c5 2:3fd8bfe897f65436 3:bfde808deeb3adf1 +end +case math tan +expr tan(a) +grid -2188022303726 15000 4 +series __name__=a,host=h2 ; 1:4036133333333334 2:3fef5c28f5c28f5c +result host=h2 ; 1:3fb58433d99a7581 2:3ff7daf70e07fa5c +end +case math tan +expr tan(a) +grid -1971099655181 1 6 +series __name__=a,host=h2,job=j1 ; 0:c07b1c0000000000 1:c341c37937e08000 3:bfef15810624dd2f 4:4022966666666667 +result host=h2,job=j1 ; 0:bfcb4f93807813be 1:3ff3ec3afb0422e0 3:bff76a8c1bca5049 4:bfc0de43d7bf7c57 +end +case math tan +expr tan(a) +grid -3781616805970 60000 7 +series __name__=a,job=j2 ; 0:fe00642a623cad98 2:c014a00000000000 3:0000000005b134c2 4:bfe8083126e978d5 +series __name__=a,zone=z2 ; 0:00000000000000f5 1:c0517e6666666667 2:7d50e8c34b0594a0 3:40b3984000000000 4:c12ae3ca00000000 +result job=j2 ; 0:3fdbd338aae87b5d 2:4000d2fde878197d 3:0000000005b134c2 4:bfeddef43e9b9257 +result zone=z2 ; 0:00000000000000f5 1:bff2955d0f2958be 2:403c77e7e0ff659b 3:bff31964748ef172 4:3fe77c7565895102 +end +case math tan +expr tan(a) +grid -3416454549761 1 6 +series __name__=a,job=j1 ; 0:407d260000000000 2:c0bcd2c000000000 3:7fe1ccf385ebc8a0 5:3fdb7ae147ae147b +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c0f2b12800000000 1:40435b3333333334 2:c0e6bde000000000 3:c0ec61a000000000 4:bfe0000000000000 +series __name__=a,host=h1,zone=z1 ; 2:ffa0c3c92b85aaba 3:401c000000000000 4:c020000000000000 5:c010000000000000 +result host=h1,zone=z1 ; 2:c007028595e6ed54 3:3febe2e6e13eea79 4:401b32e78f49a1e3 5:bff2866f9be4de13 +result host=h2,job=j1,zone=z2 ; 0:400872d87d603bb2 1:3ff9ab008e4b6c48 2:bff3b5ab9236b74d 3:3feda612ada77738 4:bfe17b4f5bf3474a +result job=j1 ; 0:401a32e09d9589fb 2:3ff24160333503e3 3:bfe047282056e683 5:3fdd4da81609efbf +end +case math tan +expr tan(a) +grid 2195001845346 1000 9 +series __name__=a,host=h2,job=j1 ; 0:c341c37937e08000 1:f857dc70c9c9f8ac 2:c014000000000000 3:40ed16e000000000 4:bfdc16872b020c4a 5:40f0a81000000000 6:3fde8f5c28f5c290 7:3fda1eb851eb851f 8:c01c000000000000 +series __name__=a,job=j1,zone=z1 ; 0:7ff8000000000001 1:c12bdcd000000000 2:4087300000000000 3:8000000000000004 4:4000000000000000 5:4114f53c00000000 6:c0b9a28000000000 7:ffe1ccf385ebc8a0 +result host=h2,job=j1 ; 0:3ff3ec3afb0422e0 1:3fd62b9cf1beb34e 2:400b0b4b739bbb06 3:3ff7c756a84802b7 4:bfde0ac34dc37fe8 5:bff73af8b994f9fd 6:3fe08ed8d5760819 7:3fdbac811423307d 8:bfebe2e6e13eea79 +result job=j1,zone=z1 ; 0:7ff8000000000001 1:3fce44c7343c203e 2:3fe527abd3a061fe 3:8000000000000004 4:c0017af62e0950f8 5:bffdba2ea90f1bcc 6:3fd2e4a9fefe551c 7:3fe047282056e683 +end +case math asin +expr asin(a) +grid 1732172980813 60000 6 +series __name__=a,job=j2,zone=z2 ; 0:fff0000000000000 1:c01c27ae147ae148 2:3fef84189374bc6b 3:c01c000000000000 4:40d6d3c000000000 5:4000000000000000 +series __name__=a,host=h2,job=j1 ; 0:40a32b8000000000 1:bfe0000000000000 3:bfe0000000000000 4:4000000000000000 5:3fdcbe76c8b43958 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:78b6415da5d90404 2:7ca9ac1e596a60a8 3:c0b1300000000000 5:4052ba6666666667 +result host=h1,job=j2,zone=z2 ; 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 5:7ff8000000000001 +result host=h2,job=j1 ; 0:7ff8000000000001 1:bfe0c152382d7366 3:bfe0c152382d7366 4:7ff8000000000001 5:3fddcf6f1cf0acf0 +result job=j2,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:3ff658aecf9e74ee 3:7ff8000000000001 4:7ff8000000000001 5:7ff8000000000001 +end +case math asin +expr asin(a) +grid -1490027038729 60000 7 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:c119eac400000000 3:411fdc4000000000 4:3fdde353f7ced917 5:8000000000000006 +series __name__=a,job=j1 ; 1:0000000012edebb1 2:c05380cccccccccd 3:40e9fb9000000000 4:3ff0000000000000 5:bfca10624dd2f1aa 6:c081e60000000000 +result host=h1,job=j1,zone=z1 ; 1:7ff8000000000001 3:7ff8000000000001 4:3fdf18e78c26a176 5:8000000000000006 +result job=j1 ; 1:0000000012edebb1 2:7ff8000000000001 3:7ff8000000000001 4:3ff921fb54442d18 5:bfca3f6037c03318 6:7ff8000000000001 +end +case math asin +expr asin(a) +grid 1865037379069 15000 9 +series __name__=a,job=j2 ; 2:000fffffffffffff 3:40e6d3c000000000 5:c0b9e74000000000 6:40e7331000000000 7:4024266666666667 8:3fe0000000000000 +result job=j2 ; 2:000fffffffffffff 3:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 8:3fe0c152382d7366 +end +case math asin +expr asin(a) +grid 2531387483247 15000 9 +series __name__=a,host=h1 ; 0:40e86eb000000000 2:40afd60000000000 5:8000000000000001 6:7f39bcefa9e15ff8 7:7ff8000000000001 8:c009c28f5c28f5c3 +result host=h1 ; 0:7ff8000000000001 2:7ff8000000000001 5:8000000000000001 6:7ff8000000000001 7:7ff8000000000001 8:7ff8000000000001 +end +case math asin +expr asin(a) +grid 943480160096 1 5 +series __name__=a,host=h1,job=j1 ; 0:4010000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:c1150ea000000000 1:40c0d9c000000000 2:f7f7a9ef55095780 3:c0b129c000000000 4:c0207b851eb851ec +result host=h1,job=j1 ; 0:7ff8000000000001 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 +end +case math asin +expr asin(a) +grid -2116238274736 1 5 +series __name__=a,host=h1,job=j2 ; 0:fb71a41308386d4c 1:4056473333333334 4:800000000000e983 +result host=h1,job=j2 ; 0:7ff8000000000001 1:7ff8000000000001 4:800000000000e983 +end +case math acos +expr acos(a) +grid -2494585477158 60000 3 +series __name__=a ; 0:80000000843b81ac 1:fff0000000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:ff9c4d47532008f4 1:3fd93d70a3d70a3e 2:804da9c8d9bc99c8 +result - ; 0:3ff921fb54442d18 1:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 1:3ff2a58397a87314 2:3ff921fb54442d18 +end +case math acos +expr acos(a) +grid -1051056692157 15000 6 +series __name__=a,zone=z1 ; 0:f92f12ea9290c6d0 2:c1278a5e00000000 4:bfef6a7ef9db22d1 +result zone=z1 ; 0:7ff8000000000001 2:7ff8000000000001 4:40079a1d48b8de19 +end +case math acos +expr acos(a) +grid -2600602268290 15000 6 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:800000686d24dffb 1:80000000000029af 2:4129fc5800000000 4:4000000000000000 5:4082160000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:40cd5ec000000000 1:c0e9df7000000000 2:fa2eb9adcf80d45c 3:f9202260d636475c 5:40c0bee000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:40f17bc800000000 1:bfd54bc6a7ef9db2 3:c012ef5c28f5c28f +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 1:3ffe8f6b74351f2c 3:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 0:3ff921fb54442d18 1:3ff921fb54442d18 2:7ff8000000000001 4:7ff8000000000001 5:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 5:7ff8000000000001 +end +case math acos +expr acos(a) +grid 3504278918540 1 7 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:4009733333333333 2:3fd92f1a9fbe76c9 3:002ecb68b1961658 4:c004cccccccccccd 5:bfe0000000000000 6:8000000000000001 +result host=h2,job=j2,zone=z2 ; 1:7ff8000000000001 2:3ff2a969d0c858b4 3:3ff921fb54442d18 4:7ff8000000000001 5:4000c152382d7366 6:3ff921fb54442d18 +end +case math acos +expr acos(a) +grid 2296131833259 60000 8 +series __name__=a,host=h1,zone=z2 ; 0:3ff8333333333333 1:c09f950000000000 2:000000000000001a 3:c081ec0000000000 7:3fcecccccccccccd +series __name__=a,job=j2,zone=z2 ; 1:4008f0a3d70a3d71 2:ffe1ccf385ebc8a0 3:4008000000000000 6:c01c000000000000 7:40b8bc8000000000 +result host=h1,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:3ff921fb54442d18 3:7ff8000000000001 7:3ff53e9d2b785f3e +result job=j2,zone=z2 ; 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 +end +case math acos +expr acos(a) +grid 234495547118 1000 3 +series __name__=a,host=h2,job=j1 ; 0:0000000000000001 1:3ff0000000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c0e710b000000000 1:c01c000000000000 2:40f8053800000000 +series __name__=a,job=j2,zone=z1 ; 0:00000003dedb3c5c 1:4057ad999999999a +result host=h2,job=j1 ; 0:3ff921fb54442d18 1:0000000000000000 +result host=h2,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 +result job=j2,zone=z1 ; 0:3ff921fb54442d18 1:7ff8000000000001 +end +case math atan +expr atan(a) +grid 567819318028 15000 10 +series __name__=a,host=h1,zone=z2 ; 0:bfdd8f5c28f5c290 1:40e5ac7000000000 2:40b62ec000000000 3:3ff0000000000000 4:c0550d999999999a 5:c024000000000000 6:c0f085b000000000 7:c04434cccccccccd 8:c01c000000000000 9:c0f1c85800000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 2:fb175e8d31c98814 3:401c000000000000 4:00000171762f7924 5:800040852768bf7f 7:c0b6df0000000000 8:40b8bc8000000000 9:bfe0000000000000 +result host=h1,zone=z2 ; 0:bfdbb11d2d638694 1:3ff921e3b4b85ace 2:3ff92142ae19c497 3:3fe921fb54442d18 4:bff8f1585dbfe16f 5:bff789bd2c160053 6:bff921ebd5ba75cc 7:bff8bca5ccb4ef45 8:bff6dcc57bb565fc 9:bff921eceedd4e97 +result host=h2,job=j1,zone=z1 ; 2:bff921fb54442d18 3:3ff6dcc57bb565fc 4:00000171762f7924 5:800040852768bf7f 7:bff921483d0cb7cb 8:3ff92155be24b180 9:bfddac670561bb4f +end +case math atan +expr atan(a) +grid 411965825226 60000 8 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:3f98d4fdf3b645a2 1:79654a9925b23802 2:800000000011ede2 3:8000000000000008 6:c0ead01000000000 7:bfece76c8b439581 +result host=h1,job=j2,zone=z2 ; 0:3f98d3bf0feaa5a6 1:3ff921fb54442d18 2:800000000011ede2 3:8000000000000008 6:bff921e83bd83951 7:bfe781e82e668ff5 +end +case math atan +expr atan(a) +grid -453186043543 1 9 +series __name__=a,host=h2,zone=z2 ; 0:f9b6d8f1255e38fc 4:c042800000000000 5:ffefffffffffffff 7:7ff8000000000001 8:40b6db4000000000 +series __name__=a,host=h1,zone=z2 ; 0:3fca666666666667 1:3fdd20c49ba5e354 2:7b08e5a7fc6e042c 3:c12ae3ca00000000 4:8009a7e0b9be150b 5:4008000000000000 7:4056b40000000000 8:41276c1800000000 +result host=h1,zone=z2 ; 0:3fca08f128134ed0 1:3fdb55bb850d684e 2:3ff921fb54442d18 3:bff921fa239d90ca 4:8009a7e0b9be150b 5:3ff3fc176b7a8560 7:3ff8f4e1310aa315 8:3ff921f9f683660d +result host=h2,zone=z2 ; 0:bff921fb54442d18 4:bff8b34e55aadb0b 5:bff921fb54442d18 7:7ff8000000000001 8:3ff921481faaadf7 +end +case math atan +expr atan(a) +grid 1472124544901 1 5 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:bfccf5c28f5c28f6 1:4108cba800000000 2:c07d6a0000000000 3:40e312d000000000 4:c01227ae147ae148 +series __name__=a,host=h1 ; 0:408eaa0000000000 1:c116107000000000 2:41132e2800000000 4:c015133333333333 +result host=h1 ; 0:3ff91dceb790aa20 1:bff921f86db4ce09 2:3ff921f7fe0e7225 4:bff621b4c13fa730 +result host=h2,job=j1,zone=z1 ; 0:bfcc7b01ec54d7d4 1:3ff921f62abce7f4 2:bff9194748577ac7 3:3ff921e07c519275 4:bff5a9b8dd66bb4e +end +case math atan +expr atan(a) +grid -54653809545 1 3 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c008000000000000 1:0000000000000017 2:bfc676c8b4395811 +series __name__=a,host=h2,zone=z2 ; 0:bfc1b645a1cac083 1:c072ce0000000000 2:7ff0000000000000 +series __name__=a,host=h2,job=j2 ; 0:0000c809ee72cc78 1:bfe0000000000000 2:8000000d6266fd8d +result host=h1,job=j1,zone=z2 ; 0:bff3fc176b7a8560 1:0000000000000017 2:bfc63ccf4ee035ae +result host=h2,job=j2 ; 0:0000c809ee72cc78 1:bfddac670561bb4f 2:8000000d6266fd8d +result host=h2,zone=z2 ; 0:bfc199a8e8814d37 1:bff9145e40e5c618 2:3ff921fb54442d18 +end +case math atan +expr atan(a) +grid 3985526320512 15000 4 +series __name__=a,host=h2,zone=z1 ; 0:4000000000000000 1:4010000000000000 2:4010000000000000 +result host=h2,zone=z1 ; 0:3ff1b6e192ebbe44 1:3ff5368c951e9cfc 2:3ff5368c951e9cfc +end +case math sinh +expr sinh(a) +grid 2550275684746 1 3 +series __name__=a,host=h2 ; 0:c000000000000000 1:3fe26a7ef9db22d1 2:c055700000000000 +series __name__=a ; 0:bff0000000000000 1:fa302378c30233f0 +result - ; 0:bff2cd9fc44eb982 1:fff0000000000000 +result host=h2 ; 0:c00d03cf63b6e1a0 1:3fe373148177196e 2:c79a315cf881d5cb +end +case math sinh +expr sinh(a) +grid -1031178804457 1000 8 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:003b04a82284435c 1:4087700000000000 2:3fe44bc6a7ef9db2 3:8000000000000033 4:4099870000000000 5:3fd2ba5e353f7cee 6:8000000000f46a0c 7:000039b4af2d5809 +series __name__=a,host=h2,job=j2 ; 0:40feea1000000000 1:c341c37937e08000 2:4008000000000000 3:40c29ee000000000 5:8000000000000000 6:4018000000000000 +result host=h2,job=j2 ; 0:7ff0000000000000 1:fff0000000000000 2:40240926e70949ae 3:7ff0000000000000 5:8000000000000000 6:406936d22f67c805 +result host=h2,job=j2,zone=z1 ; 0:003b04a82284435c 1:7ff0000000000000 2:3fe5af341f22c714 3:8000000000000033 4:7ff0000000000000 5:3fd2ff15ade3b295 6:8000000000f46a0c 7:000039b4af2d5809 +end +case math sinh +expr sinh(a) +grid 1765961315513 1000 9 +series __name__=a,host=h1,zone=z1 ; 0:4054800000000000 1:4052e4cccccccccd 4:4026c00000000000 5:4126d1cc00000000 6:4018000000000000 7:7d33f6ada62d76c0 +series __name__=a,host=h2,job=j1 ; 0:4008000000000000 1:ffbe1cf0f3a92e10 3:7ff8000000000001 4:3fe2b33333333333 5:c01df0a3d70a3d71 7:3ffa851eb851eb85 8:c0b9514000000000 +series __name__=a,host=h2,job=j2 ; 1:c006266666666667 2:40f2086800000000 3:bfe0000000000000 5:bfe83d70a3d70a3e 6:40c304c000000000 8:0000000000000000 +result host=h1,zone=z1 ; 0:4743b63da8e91210 1:46b05aee8cb9aadb 4:40e544c5cb552a7a 5:7ff0000000000000 6:406936d22f67c805 7:7ff0000000000000 +result host=h2,job=j1 ; 0:40240926e70949ae 1:fff0000000000000 3:7ff8000000000001 4:3fe3c85b6a326359 5:c08bd47e932fb295 7:400438e5c96651ff 8:fff0000000000000 +result host=h2,job=j2 ; 1:c01fc07d8a62e19b 2:7ff0000000000000 3:bfe0acd00fe63b97 5:bfeaa0277acb2987 6:7ff0000000000000 8:0000000000000000 +end +case math sinh +expr sinh(a) +grid -1782083715885 1000 6 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:c0f0ddf800000000 1:c0c6b48000000000 2:bff0000000000000 5:bfecb95810624dd3 +series __name__=a,host=h2 ; 0:bfdbf1a9fbe76c8b 1:0000000000000000 2:7f301c4e92c90530 3:0000000000000001 4:8000000000000007 +series __name__=a,host=h1,job=j2 ; 0:4014000000000000 1:3fe04395810624dd 2:8000e625dc20cf0d 4:401215c28f5c28f6 5:bfe845a1cac08313 +result host=h1,job=j2 ; 0:40528d0166f07374 1:3fe0f92b1942c31b 2:8000e625dc20cf0d 4:4046fc2239316cae 5:bfeaaad082b8e5fa +result host=h1,job=j2,zone=z2 ; 0:fff0000000000000 1:fff0000000000000 2:bff2cd9fc44eb982 5:bff05eaeec0d3f1c +result host=h2 ; 0:bfdcd7234c5ec430 1:0000000000000000 2:7ff0000000000000 3:0000000000000001 4:8000000000000007 +end +case math sinh +expr sinh(a) +grid 3522834518856 60000 4 +series __name__=a,job=j2,zone=z1 ; 0:3fe0000000000000 1:c0e35f6000000000 2:401c000000000000 3:c0b7200000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:3fdbb020c49ba5e3 1:0000000002587280 2:4041333333333333 +series __name__=a,host=h1,zone=z2 ; 0:bfb16872b020c49c 1:800cc0225060bf28 2:3ff0000000000000 3:bfe91ba5e353f7cf +result host=h1,zone=z2 ; 0:bfb16be21b5d6642 1:800cc0225060bf28 2:3ff2cd9fc44eb982 3:bfebc3c3d013db9f +result host=h2,job=j2,zone=z2 ; 0:3fdc8f505ea108bd 1:0000000002587280 2:42f8bd2880f6b91f +result job=j2,zone=z1 ; 0:3fe0acd00fe63b97 1:fff0000000000000 2:408122876ba380c9 3:fff0000000000000 +end +case math sinh +expr sinh(a) +grid 2822745192454 15000 9 +series __name__=a,host=h1,job=j2 ; 0:c022000000000000 2:4000000000000000 4:c0068ccccccccccd 5:000fffffffffffff 6:bfe516872b020c4a 7:8000000000000001 8:c006eb851eb851ec +series __name__=a,host=h1,job=j1,zone=z1 ; 1:bfb3126e978d4fdf 2:c0e9f3c000000000 3:8000000000004002 5:7ff0000000000000 6:4040e80000000000 8:4000000000000000 +result host=h1,job=j1,zone=z1 ; 1:bfb316f31ff84d9d 2:fff0000000000000 3:8000000000004002 5:7ff0000000000000 6:42eb7edc26f090fb 8:400d03cf63b6e1a0 +result host=h1,job=j2 ; 0:c0afa7157430966f 2:400d03cf63b6e1a0 4:c020b23af6b030e5 5:000fffffffffffff 6:bfe6a5d8e9024bb4 7:8000000000000001 8:c0217df84de8d3e1 +end +case math cosh +expr cosh(a) +grid 1814653599048 1 5 +series __name__=a,job=j1,zone=z2 ; 0:3fe0000000000000 1:c01c000000000000 2:c014000000000000 3:4054d0cccccccccd +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0ed45c000000000 1:412e21de00000000 2:40c1c88000000000 3:c055ea6666666667 4:ff0a78dd9a892520 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:3fef189374bc6a7f 1:0000000000000000 4:ffd9a97231aba486 +result host=h1,job=j2,zone=z2 ; 0:3ff82afa400a04e5 1:3ff0000000000000 4:7ff0000000000000 +result host=h2,job=j2,zone=z2 ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:47c62a684c2d02af 4:7ff0000000000000 +result job=j1,zone=z2 ; 0:3ff20ac1862ae8d0 1:4081228949ba3a8b 2:40528d6fcbeff3aa 3:47616aaa0acb1f86 +end +case math cosh +expr cosh(a) +grid 572409405415 1 9 +series __name__=a,host=h1,zone=z1 ; 0:800ec006b1caa48e 1:c008000000000000 3:c0d94e2000000000 4:40f77a2800000000 5:4008000000000000 7:8000000000000000 +series __name__=a,job=j2,zone=z1 ; 0:c016c00000000000 1:4030333333333333 2:800000000002de9b 3:0000000000000000 4:401e4a3d70a3d70a 5:f83e91e5e760a378 6:40b01a8000000000 7:40e7fca000000000 8:c0ae820000000000 +series __name__=a,host=h2,zone=z2 ; 0:c032600000000000 2:0035b980c3018010 3:0000000000000000 4:4008000000000000 5:00001d4b0c3a6488 6:bfe0000000000000 7:411a34fc00000000 +result host=h1,zone=z1 ; 0:3ff0000000000000 1:402422a497d6185e 3:7ff0000000000000 4:7ff0000000000000 5:402422a497d6185e 7:3ff0000000000000 +result host=h2,zone=z2 ; 0:4186c6f98d840181 2:3ff0000000000000 3:3ff0000000000000 4:402422a497d6185e 5:3ff0000000000000 6:3ff20ac1862ae8d0 7:7ff0000000000000 +result job=j2,zone=z1 ; 0:40627287fb30ed33 1:4154b391fcc522eb 2:3ff0000000000000 3:3ff0000000000000 4:408e5ffa95a90b8c 5:7ff0000000000000 6:7ff0000000000000 7:7ff0000000000000 8:7ff0000000000000 +end +case math cosh +expr cosh(a) +grid 1050102725129 1 4 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:3ff0000000000000 1:4080e70000000000 2:4020cccccccccccd 3:4020000000000000 +result host=h1,job=j2,zone=z2 ; 0:3ff8b07551d9f550 1:70a3f0f2685e24a7 2:40a15f11251d39c7 3:409749eaa93f4e76 +end +case math cosh +expr cosh(a) +grid -1600933747789 60000 9 +series __name__=a,zone=z1 ; 0:c0c2340000000000 1:c0ed88f000000000 2:3feeb126e978d4fe 3:0000000000000000 4:3fd599999999999a 5:f91105cb6eba5182 6:c0c1954000000000 7:4039300000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:4020000000000000 3:c024000000000000 5:40f6107000000000 6:8000000000000000 7:404f533333333334 +result host=h2,job=j2,zone=z1 ; 0:409749eaa93f4e76 3:40c5829dd053712e 5:7ff0000000000000 6:3ff0000000000000 7:4584e439791174ae +result zone=z1 ; 0:7ff0000000000000 1:7ff0000000000000 2:3ff7f0ed661b31e1 3:3ff0000000000000 4:3ff0eb80b505c928 5:7ff0000000000000 6:7ff0000000000000 7:422438ee4e87447f +end +case math cosh +expr cosh(a) +grid 289579292977 15000 6 +series __name__=a,zone=z1 ; 0:403c033333333334 1:c057400000000000 2:c127b07400000000 5:bfe7666666666667 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:40b33e4000000000 1:4052df3333333333 2:3fdec49ba5e353f8 3:408c3d0000000000 4:7fbff0fd5c3e7558 5:00000195673cc60b +result host=h1,job=j1,zone=z2 ; 0:7ff0000000000000 1:46adf84abb726cef 2:3ff1e2859a7c7d9a 3:7ff0000000000000 4:7ff0000000000000 5:3ff0000000000000 +result zone=z1 ; 0:42654f7f26581f85 1:48420247cc4c46c1 2:7ff0000000000000 5:3ff478cc1c5d51bc +end +case math cosh +expr cosh(a) +grid -3924209656421 1 4 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:3ff0000000000000 2:3fed6a7ef9db22d1 3:0000000000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:783e8b99e37cd6e8 2:c010ea3d70a3d70a +result host=h2,job=j1,zone=z1 ; 0:7ff0000000000000 2:404129576825764b +result host=h2,job=j2,zone=z1 ; 0:3ff8b07551d9f550 2:3ff73ff407d56ef4 3:3ff0000000000000 +end +case math tanh +expr tanh(a) +grid 1433686000015 1 8 +series __name__=a,host=h1,zone=z2 ; 0:fff0000000000000 2:40755a0000000000 3:7c21127e62adda48 4:c0b7700000000000 5:80000000e8ffcb6e 6:ffefffffffffffff 7:bfd65c28f5c28f5c +series __name__=a,host=h2,zone=z1 ; 1:c010000000000000 2:4008000000000000 4:3ff34ccccccccccd 5:c121344c00000000 6:c0bcc3c000000000 7:40d34fc000000000 +result host=h1,zone=z2 ; 0:bff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:bff0000000000000 5:80000000e8ffcb6e 6:bff0000000000000 7:bfd57e17f97db3b1 +result host=h2,zone=z1 ; 1:bfeffa81708a0b42 2:3fefd77d111a0b00 4:3feabcd59c37e40c 5:bff0000000000000 6:bff0000000000000 7:3ff0000000000000 +end +case math tanh +expr tanh(a) +grid 815905909741 1000 3 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:7fefffffffffffff 1:fdce72d56c742d3a 2:7ff0000000000000 +series __name__=a ; 1:4008000000000000 2:412c3d7e00000000 +result - ; 1:3fefd77d111a0b00 2:3ff0000000000000 +result host=h2,job=j1,zone=z1 ; 0:3ff0000000000000 1:bff0000000000000 2:3ff0000000000000 +end +case math tanh +expr tanh(a) +grid 2335920279816 1000 6 +series __name__=a,host=h1,job=j1 ; 0:40f117c800000000 1:fa9402dc302445c8 3:8001b0194b450530 4:40c1ad0000000000 5:40884f0000000000 +series __name__=a,host=h2 ; 0:8000007a95913b09 1:4341c37937e08000 2:c01c000000000000 3:7afe3781cc51f0a0 4:bfe6978d4fdf3b64 5:41097f5800000000 +result host=h1,job=j1 ; 0:3ff0000000000000 1:bff0000000000000 3:8001b0194b450530 4:3ff0000000000000 5:3ff0000000000000 +result host=h2 ; 0:8000007a95913b09 1:3ff0000000000000 2:bfeffffc832750f2 3:3ff0000000000000 4:bfe37611032a4477 5:3ff0000000000000 +end +case math tanh +expr tanh(a) +grid -3600294848739 60000 7 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0ac688000000000 2:bfee624dd2f1a9fc 3:400b0f5c28f5c290 4:401c000000000000 6:bfe3083126e978d5 +series __name__=a,host=h1,job=j2 ; 1:c0e672e000000000 3:801841c09e8c9934 5:3fe2353f7ced9169 6:fff0000000000000 +series __name__=a,job=j1,zone=z1 ; 1:c341c37937e08000 2:c020000000000000 3:c341c37937e08000 4:40ba6bc000000000 5:4008000000000000 6:c053a26666666667 +result host=h1,job=j2 ; 1:bff0000000000000 3:801841c09e8c9934 5:3fe077cdc9d6ed2a 6:bff0000000000000 +result host=h2,job=j2,zone=z2 ; 0:bff0000000000000 2:bfe7aa729e15619d 3:3fefed1faa16889e 4:3feffffc832750f2 6:bfe110d1fd195aab +result job=j1,zone=z1 ; 1:bff0000000000000 2:bfefffff872a91f8 3:bff0000000000000 4:3ff0000000000000 5:3fefd77d111a0b00 6:bff0000000000000 +end +case math tanh +expr tanh(a) +grid 2434422532972 1 3 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:800000000a572f1a 1:4010000000000000 2:800008ca5db31f53 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:bfa851eb851eb852 2:8001203d64e6b10a +result host=h1,job=j2,zone=z2 ; 0:bfa84d3de7594dec 2:8001203d64e6b10a +result host=h2,job=j2,zone=z1 ; 0:800000000a572f1a 1:3feffa81708a0b42 2:800008ca5db31f53 +end +case math tanh +expr tanh(a) +grid -412057816513 15000 7 +series __name__=a,host=h1,job=j2 ; 0:800000000000020d 1:3fe0000000000000 2:4100ad8800000000 3:3ff0000000000000 5:7ff8000000000001 +result host=h1,job=j2 ; 0:800000000000020d 1:3fdd9353d7568af3 2:3ff0000000000000 3:3fe85efab514f394 5:7ff8000000000001 +end +case math asinh +expr asinh(a) +grid -819329489417 15000 4 +series __name__=a,host=h2 ; 0:000000000000acf6 1:bfe5cfdf3b645a1d 3:4089010000000000 +result host=h2 ; 0:000000000000acf6 1:bfe466cb850fe00e 3:401d82fc4a581914 +end +case math asinh +expr asinh(a) +grid -2672800779018 1000 7 +series __name__=a,host=h2 ; 0:c05d700000000000 1:c05bb80000000000 2:4012a28f5c28f5c3 3:800000c63184cedc 5:c12753ae00000000 +series __name__=a,host=h1,job=j2 ; 0:c01c000000000000 1:c024000000000000 2:0000000000000001 3:7f7b37acb8a68b2a 5:c037cccccccccccd 6:c018000000000000 +series __name__=a,host=h2,zone=z2 ; 0:7ce81983b74b3378 1:7e37a8a2919fa1b6 4:bff0000000000000 5:7cccccaac0ad9c32 6:40ea4cd000000000 +result host=h1,job=j2 ; 0:c0052728c91b5f1d 1:c007fc5c506d2bdb 2:0000000000000001 3:40860bb214919970 5:c00ee7fc1b13c688 6:c003ef2a467f8864 +result host=h2 ; 0:c015d8cf78e6af05 1:c0159b356abbc166 2:4001f21cc2ae234a 3:800000c63184cedc 5:c02c7adc29ea6f6c +result host=h2,zone=z2 ; 0:4085275ebc3f10e8 1:40859babca96c736 4:bfec34366179d427 5:40851db479908da4 6:40272cb76e2bf12b +end +case math asinh +expr asinh(a) +grid -2046527399291 60000 7 +series __name__=a,zone=z2 ; 0:c018000000000000 1:7da8b05ce62c6c6c 3:ffefffffffffffff 4:c092110000000000 5:c028b33333333334 +result zone=z2 ; 0:c003ef2a467f8864 1:40856a1afe2f37d5 3:c08633ce8fb9f87d 4:c01efbfd9dbcdf5c 5:c009aae1b72c7485 +end +case math asinh +expr asinh(a) +grid -1198923912225 60000 4 +series __name__=a,zone=z2 ; 0:c0bd740000000000 2:00000000000079ee 3:7ea7d5d26f57cef0 +series __name__=a,host=h1,zone=z2 ; 0:c115ba8000000000 1:4020000000000000 2:3fd626e978d4fdf4 3:80000003770ec0f9 +series __name__=a,job=j2,zone=z2 ; 0:412b6e7600000000 1:c04679999999999a 2:bfe0000000000000 3:fba67b7dcd437520 +result host=h1,zone=z2 ; 0:c02af3a0686e347f 1:40063637195fabd3 2:3fd5bb61d5c7395a 3:80000003770ec0f9 +result job=j2,zone=z2 ; 0:402ccdd907f6d60f 1:c011fecb1a47243d 2:bfdecc2caec5160a 3:c084b7e92938b4a7 +result zone=z2 ; 0:c0233e040cb24523 2:00000000000079ee 3:4085c28bf8e38753 +end +case math asinh +expr asinh(a) +grid 1812217371604 60000 3 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0c2444000000000 1:40f1b34000000000 2:3fe16353f7ced917 +series __name__=a,zone=z1 ; 1:40f0d88000000000 +series __name__=a,job=j2 ; 1:bfe0000000000000 2:7fefffffffffffff +result host=h1,job=j1,zone=z1 ; 0:c023ac4fc6e499b5 1:4027c4dbbeb99996 2:3fe0a11d8b3c4271 +result job=j2 ; 1:bfdecc2caec5160a 2:408633ce8fb9f87d +result zone=z1 ; 1:4027ab864b822445 +end +case math asinh +expr asinh(a) +grid 661678990819 1000 9 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:bfe3bc6a7ef9db23 1:40f50c4800000000 2:fa4a6884187e76dc 3:403ca9999999999a 4:bfe04bc6a7ef9db2 5:7b7302167629eed4 6:c008000000000000 7:c024000000000000 +result host=h2,job=j2,zone=z1 ; 0:bfe2a90a2f1a2d7a 1:40281d8d2a921616 2:c0843f34562a7dd8 3:40103237cd9723ae 4:bfdf5379b3252d67 5:4084a5eeadd063bb 6:bffd185b507edc0e 7:c007fc5c506d2bdb +end +case math acosh +expr acosh(a) +grid 521093385136 60000 8 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:ffefffffffffffff 2:4010000000000000 3:40075c28f5c28f5c 5:4050b00000000000 7:c04e59999999999a +series __name__=a,host=h2,job=j1 ; 0:4022000000000000 2:c08f080000000000 3:00000000614b71d8 4:40f44a8800000000 5:c02d19999999999a 6:7fe1ccf385ebc8a0 7:4022000000000000 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 2:400081eb4b421592 3:3ffbbe95aaedacf3 5:40139380a0b521b9 7:7ff8000000000001 +result host=h2,job=j1 ; 0:400719218313d087 2:7ff8000000000001 3:7ff8000000000001 4:40280acd4d04f440 5:7ff8000000000001 6:40862f1d6695e8ec 7:400719218313d087 +end +case math acosh +expr acosh(a) +grid 3810537473792 1000 4 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c000000000000000 1:c0807f0000000000 2:4341c37937e08000 +series __name__=a,job=j1,zone=z1 ; 1:4014000000000000 +result host=h1,job=j1,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:4042c46ac7b13dfe +result job=j1,zone=z1 ; 1:400256e66a48a3b6 +end +case math acosh +expr acosh(a) +grid -3483405820155 1 5 +series __name__=a,job=j1,zone=z1 ; 0:8000000000000001 1:006bbf85d7926084 2:c09dab0000000000 3:fe2fdd584a36e6da 4:c01c000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:7c22386a7cb7d484 2:40b8e34000000000 3:c12123b200000000 4:c07a4a0000000000 +result host=h1,job=j2,zone=z1 ; 1:4084e297362d5d04 2:4022e7c80cd2a307 3:7ff8000000000001 4:7ff8000000000001 +result job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 +end +case math acosh +expr acosh(a) +grid -638682314182 15000 8 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:0000000000002029 2:4115ba8000000000 4:c0f13e1000000000 5:7ff8000000000001 6:40bc9d0000000000 7:4341c37937e08000 +result host=h2,job=j2,zone=z2 ; 0:7ff8000000000001 2:402af3a0686e2bd2 4:7ff8000000000001 5:7ff8000000000001 6:40232f344351baed 7:4042c46ac7b13dfe +end +case math acosh +expr acosh(a) +grid -3942172589293 15000 5 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:bfe2395810624dd3 1:c010000000000000 2:40da518000000000 3:ffefffffffffffff 4:400c11eb851eb852 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c04381999999999a 1:8000000000000050 3:4000000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:bfdd1cac083126ea 3:7ff0000000000000 4:bfb8000000000000 +result host=h1,job=j2,zone=z1 ; 1:7ff8000000000001 3:7ff0000000000000 4:7ff8000000000001 +result host=h2,job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 3:3ff5124271980434 +result host=h2,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:4025ca2e77441a07 3:7ff8000000000001 4:3ffed6d86f529612 +end +case math acosh +expr acosh(a) +grid 3261066000972 15000 5 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c022000000000000 1:c010000000000000 2:4031500000000000 3:7fe1ccf385ebc8a0 4:c0506c0000000000 +series __name__=a,host=h2,zone=z2 ; 0:3ff0000000000000 2:80000000037c4a9a 3:c021b851eb851eb8 4:40c299e000000000 +series __name__=a,job=j1 ; 0:4024000000000000 1:c085400000000000 2:000fffffffffffff 3:4020000000000000 +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:400c5994c8bf2fb2 3:40862f1d6695e8ec 4:7ff8000000000001 +result host=h2,zone=z2 ; 0:0000000000000000 2:7ff8000000000001 3:7ff8000000000001 4:4023b59a1397167e +result job=j1 ; 0:4007f21ed1ce05d4 1:7ff8000000000001 2:7ff8000000000001 3:40062636e408c33b +end +case math atanh +expr atanh(a) +grid 3296565373424 60000 4 +series __name__=a,host=h2,zone=z1 ; 0:c04ea00000000000 1:8000008e735a92e8 2:bfe0000000000000 3:c0e680f000000000 +result host=h2,zone=z1 ; 0:7ff8000000000001 1:8000008e735a92e8 2:bfe193ea7aad030a 3:7ff8000000000001 +end +case math atanh +expr atanh(a) +grid -3618791511133 60000 3 +series __name__=a,zone=z1 ; 1:41215d5000000000 2:7db356e76d9ea0c8 +series __name__=a,host=h2,job=j2,zone=z2 ; 2:c000000000000000 +result host=h2,job=j2,zone=z2 ; 2:7ff8000000000001 +result zone=z1 ; 1:7ff8000000000001 2:7ff8000000000001 +end +case math atanh +expr atanh(a) +grid 889213877596 60000 10 +series __name__=a,host=h2,job=j1 ; 1:c0c19d6000000000 2:40ae9b0000000000 3:4008000000000000 4:000001da917e2a5f 5:40a27f0000000000 6:c055ea6666666667 7:40ae5a0000000000 8:4007028f5c28f5c3 9:c0b08ec000000000 +result host=h2,job=j1 ; 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:000001da917e2a5f 5:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 8:7ff8000000000001 9:7ff8000000000001 +end +case math atanh +expr atanh(a) +grid 2194467919989 1 4 +series __name__=a,host=h2,job=j1 ; 0:0000000000000000 1:7fefffffffffffff 2:40b29bc000000000 3:4008000000000000 +series __name__=a,host=h1,job=j1 ; 0:c0b50a4000000000 2:c05231999999999a +series __name__=a,job=j2 ; 1:0000000000000000 2:c02d000000000000 +result host=h1,job=j1 ; 0:7ff8000000000001 2:7ff8000000000001 +result host=h2,job=j1 ; 0:0000000000000000 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 +result job=j2 ; 1:0000000000000000 2:7ff8000000000001 +end +case math atanh +expr atanh(a) +grid 255809364367 1000 3 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:404e833333333334 2:3fdd9db22d0e5604 +result host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 2:3fe006982ccd4160 +end +case math atanh +expr atanh(a) +grid 3043763107764 1 4 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:c12d6a4600000000 2:c010000000000000 3:7fe1ccf385ebc8a0 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 +end +case math deg +expr deg(a) +grid 3167248919711 60000 5 +series __name__=a,host=h2,zone=z1 ; 0:7fbea34444a20ac8 1:bfe0000000000000 2:c0ab878000000000 3:000fffffffffffff +result host=h2,zone=z1 ; 0:7ff0000000000000 1:c03ca5dc1a63c1f8 2:c108a5400643ea13 3:006ca5dc1a63c1f7 +end +case math deg +expr deg(a) +grid 2163316261348 1000 7 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:80000000000110c3 2:c12da4de00000000 4:c018000000000000 5:3ff0000000000000 +result host=h2,job=j1,zone=z2 ; 0:80000000003d0c18 2:c18a89e83e989e1f 4:c0757c6513cad17a 5:404ca5dc1a63c1f8 +end +case math deg +expr deg(a) +grid -3149264645940 1 10 +series __name__=a,host=h1,job=j2 ; 0:4008000000000000 2:8073cae3546c5b60 3:4022000000000000 5:007ed14fa89fa612 7:4008000000000000 8:40c0b4e000000000 9:f91116f2b94aefb0 +series __name__=a,host=h2,zone=z2 ; 0:0000000000000000 1:4083240000000000 2:3fe8d2f1a9fbe76d 3:4341c37937e08000 8:c088180000000000 9:c341c37937e08000 +series __name__=a,host=h2 ; 2:000fffffffffffff 3:c0ed844000000000 4:3fcf0e5604189375 6:c01b55c28f5c28f6 8:4024000000000000 9:bfcfef9db22d0e56 +result host=h1,job=j2 ; 0:40657c6513cad17a 2:80d1b81d31378f71 3:40801d4bced81d1c 5:00db96e0eeb6f2df 7:40657c6513cad17a 8:411de9b7189615b3 9:f96e99508313439b +result host=h2 ; 2:006ca5dc1a63c1f7 3:c14a6cb4ef8f7810 4:402bcd82cb467264 6:c07878b874c855bc 8:4081e7a9907e593b 9:c02c97312ab88cd8 +result host=h2,zone=z2 ; 0:0000000000000000 1:40e122b54748eb65 2:4046393de1871d73 3:439fce3850e84149 8:c0e591e178de9c4c 9:c39fce3850e84149 +end +case math deg +expr deg(a) +grid -1051365680084 15000 10 +series __name__=a,zone=z1 ; 0:c0e98fc000000000 1:bfe54bc6a7ef9db2 2:c08b1c0000000000 3:409b490000000000 5:4020eccccccccccd 6:80000054267e0320 7:c1183b2000000000 8:7f423d2f610498f0 +series __name__=a,job=j1 ; 0:c0a4ac8000000000 1:c0f28ec800000000 2:4007266666666667 3:4024000000000000 4:c12cbe6600000000 5:409c160000000000 7:fd8ffe5f2b6721e0 +series __name__=a,host=h1,job=j1 ; 1:c01a30a3d70a3d71 2:4070500000000000 3:0000000000000000 4:8000000000000001 5:8000000000000000 6:0000000000000001 8:00077bc060dcab9c 9:407d380000000000 +result host=h1,job=j1 ; 1:c077724e4cf5534f 2:40cd351966e7b4c2 3:0000000000000000 4:8000000000000039 5:8000000000000000 6:0000000000000039 8:005acc4796ac09c3 9:40da2871b918965c +result job=j1 ; 0:c1028217a6fc9afd 1:c1509d1edc2cdcb8 2:4064b996d4b0f7ed 3:4081e7a9907e593b 4:c189bb94b2a18e27 5:40f924d29e696e4e 7:fdeca466efe2be08 +result zone=z1 ; 0:c146e245075c7bab 1:c04310af05c94cfd 2:c0e84502d6db42f3 3:40f86d4c14605f3c 5:407e4dd93a50b995 6:800012d575e2a104 7:c175b153877793cb 8:7fa0541264e092de +end +case math deg +expr deg(a) +grid 87733577824 15000 8 +series __name__=a,job=j1 ; 0:c122313a00000000 1:ff3400781002d578 3:3fd0374bc6a7ef9e 4:ff59811696d44856 5:0001a46fad5c310a 6:412a68be00000000 +series __name__=a,zone=z1 ; 0:4122b7fe00000000 1:40cf84c000000000 2:ffe1ccf385ebc8a0 4:40c1a08000000000 5:7c6b26dde5289160 6:0000000000000000 +series __name__=a ; 1:7d5a80d3e6df4300 4:c03f39999999999a 5:4048b00000000000 6:c020000000000000 +result - ; 1:7db7ba17fa2de872 4:c09bf43e2c268aac 5:40a619f54e5bf625 6:c07ca5dc1a63c1f8 +result job=j1 ; 0:c180495db47f75b1 1:ff91e8150ccd33b8 3:402d08ddec27688f 4:ffb6d524ccf72724 5:0037864e3610f8a4 6:4187a487f991ae80 +result zone=z1 ; 0:4180c203b6121911 1:412c378548a61dbf 2:fff0000000000000 4:411f8f99a3f2b6c9 5:7cc84ebd5242d8f7 6:0000000000000000 +end +case math deg +expr deg(a) +grid 3435522596626 1 9 +series __name__=a,host=h1 ; 0:40f656c000000000 1:8000000000000b42 2:7ff0000000000000 3:c05469999999999a 4:3fdcb851eb851eb8 6:c01c000000000000 7:c0ad240000000000 8:c008000000000000 +result host=h1 ; 0:4153ffb0f4d41fca 1:8000000000028506 2:7ff0000000000000 3:c0b246334d3bd5a2 4:4039b6239f5d5f5d 6:c0791120971749b9 7:c10a168a0f881803 8:c0657c6513cad17a +end +case math rad +expr rad(a) +grid -3481184466033 1000 9 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:bff0000000000000 2:bfe09fbe76c8b439 3:c0c25d4000000000 4:c01c2147ae147ae1 5:411652d800000000 7:000fffffffffffff 8:c0b6760000000000 +result host=h1,job=j1,zone=z2 ; 0:bf91df46a2529d39 2:bf8291b6305552f8 3:c0648358be46fa5c 4:bfbf6be82efbce55 5:40b8ef8aaf6b0eef 7:0000477d1a894a75 8:c05916cfc81eb976 +end +case math rad +expr rad(a) +grid 1369461607634 15000 10 +series __name__=a,zone=z2 ; 0:3fe3051eb851eb85 1:800000000000efe1 2:bfb77ced916872b0 4:800000006617cbf6 6:7b963f45e75fbfb8 9:c08b390000000000 +series __name__=a,job=j1,zone=z2 ; 2:c057580000000000 3:4124282800000000 4:c0343ccccccccccd 5:3f92f1a9fbe76c8b 7:7fe1ccf385ebc8a0 9:40f0c43000000000 +series __name__=a,host=h2 ; 2:4008000000000000 3:c0ba400000000000 4:412def1600000000 5:f8f83c63bf85795a 7:4071160000000000 8:403bb66666666667 9:fb1faaf53f10b9b0 +result host=h2 ; 2:3faacee9f37bebd5 3:c05d524fe24f89f2 4:40d0b7dfe427c71a 5:f89b125ea7d020bc 7:401315ce0d96f8a5 8:3fdef4855725e3eb 9:fac1afc78d2c1463 +result job=j1,zone=z2 ; 2:bffa13418dd38862 3:40c683f329ada8df 4:bfd69b0257501810 5:3f3529206e4524a6 7:7ff0000000000000 9:4092ba6b616af837 +result zone=z2 ; 0:3f853edbf75c7294 1:8000000000000430 2:bf5a3c814a732232 4:8000000001c827dc 6:7b38d9ae5aa3d91f 9:c02e68729d8dafa1 +end +case math rad +expr rad(a) +grid 761822522024 1000 4 +series __name__=a,host=h2,job=j1 ; 0:411cbd6c00000000 1:4052873333333333 2:f8f40d4a08d4a846 3:3ff0000000000000 +series __name__=a,host=h1,zone=z2 ; 0:c01c000000000000 1:c0363ccccccccccd 2:4061700000000000 +result host=h1,zone=z2 ; 0:bfbf46bb9c109324 1:bfd8d6eb2b9a6bb7 2:40037a55fae80959 +result host=h2,job=j1 ; 0:40c00d28d8c56559 1:3ff4b2348b78915d 2:f89665f066cf0415 3:3f91df46a2529d39 +end +case math rad +expr rad(a) +grid 1351446475908 60000 4 +series __name__=a,host=h1,job=j2 ; 0:c0bc548000000000 1:c0885a0000000000 3:c020000000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c0b0324000000000 1:800175b4c66f83a6 +result host=h1,job=j2 ; 0:c05fa51ec919d772 1:c02b3371e0ccfc8a 3:bfc1df46a2529d39 +result host=h2,job=j1,zone=z2 ; 0:c0521767dc2868af 1:80000685bc30a989 +end +case math rad +expr rad(a) +grid 3695503478157 1 6 +series __name__=a,host=h2,zone=z1 ; 1:fac804b5bab49b6e 2:4012d1eb851eb852 3:4010b5c28f5c28f6 4:0000000000000021 5:c0f84d1800000000 +result host=h2,zone=z1 ; 1:fa6ad42cc380df5b 2:3fb505ab155503d0 3:3fb2aa4dc4b9ccd7 4:0000000000000001 5:c09b250746530ce6 +end +case math rad +expr rad(a) +grid 1816281760519 60000 4 +series __name__=a,host=h2,zone=z2 ; 0:0000000000000000 1:fc91059cf96fe204 2:c022000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:bfbde353f7ced917 1:40103851eb851eb8 3:4008000000000000 +result host=h1,job=j2,zone=z1 ; 0:bf60b14ec5b07d57 1:3fb21e2f9af463dd 3:3faacee9f37bebd5 +result host=h2,zone=z2 ; 0:0000000000000000 1:fc3303802a1ae432 2:bfc41b2f769cf0e0 +end +case math sgn +expr sgn(a) +grid 3959884376761 1 4 +series __name__=a,host=h2,zone=z2 ; 0:0038854bb1ed73c0 1:40793c0000000000 2:f82c21730dc19980 3:bfe0000000000000 +result host=h2,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:bff0000000000000 3:bff0000000000000 +end +case math sgn +expr sgn(a) +grid -1409479613022 15000 4 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:000fffffffffffff 2:79a99329c1e9661c 3:4000000000000000 +result host=h1,job=j2,zone=z2 ; 0:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +end +case math sgn +expr sgn(a) +grid 188931966745 15000 6 +series __name__=a,host=h1 ; 1:c0d559a000000000 2:c0504ccccccccccd 4:bfe45810624dd2f2 5:4011a66666666667 +result host=h1 ; 1:bff0000000000000 2:bff0000000000000 4:bff0000000000000 5:3ff0000000000000 +end +case math sgn +expr sgn(a) +grid 546312268702 15000 6 +series __name__=a,host=h1,job=j2,zone=z2 ; 2:3fd3fdf3b645a1cb 3:c05671999999999a +result host=h1,job=j2,zone=z2 ; 2:3ff0000000000000 3:bff0000000000000 +end +case math sgn +expr sgn(a) +grid -2493864324778 1000 10 +series __name__=a,host=h1,zone=z1 ; 0:c087ad0000000000 1:c020000000000000 2:3ff0000000000000 3:fb52da29c6f8fc46 4:3fde2d0e56041894 5:40554a6666666667 6:c01c000000000000 7:c086310000000000 9:80445ae0d66cb4b8 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:7aec5477262f2d74 1:bfd1eb851eb851ec 2:c016ca3d70a3d70a 3:40d6bac000000000 4:bfeb22d0e5604189 5:c100f7c000000000 6:405611999999999a 7:c079400000000000 8:3ff0000000000000 9:c031366666666667 +result host=h1,zone=z1 ; 0:bff0000000000000 1:bff0000000000000 2:3ff0000000000000 3:bff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:bff0000000000000 7:bff0000000000000 9:bff0000000000000 +result host=h2,job=j1,zone=z2 ; 0:3ff0000000000000 1:bff0000000000000 2:bff0000000000000 3:3ff0000000000000 4:bff0000000000000 5:bff0000000000000 6:3ff0000000000000 7:bff0000000000000 8:3ff0000000000000 9:bff0000000000000 +end +case math sgn +expr sgn(a) +grid -2750590389691 1000 5 +series __name__=a,host=h2,job=j1 ; 0:40b5734000000000 2:c12b66a600000000 4:40e0f18000000000 +series __name__=a,zone=z1 ; 0:401588f5c28f5c29 1:401c000000000000 4:3ff0000000000000 +series __name__=a,job=j1,zone=z1 ; 1:c008000000000000 3:8000000001f28b8f 4:c051c1999999999a +result host=h2,job=j1 ; 0:3ff0000000000000 2:bff0000000000000 4:3ff0000000000000 +result job=j1,zone=z1 ; 1:bff0000000000000 3:bff0000000000000 4:bff0000000000000 +result zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 4:3ff0000000000000 +end +case math round 3ff0000000000000 +expr round(a) +grid -779703987952 15000 7 +series __name__=a,host=h1 ; 0:80000000000003b2 1:c006ab851eb851ec 2:80000000000012ed 3:ffefffffffffffff 4:bfe7c9ba5e353f7d 5:c0b0720000000000 6:c044cb3333333334 +result host=h1 ; 0:0000000000000000 1:c008000000000000 2:0000000000000000 3:ffefffffffffffff 4:bff0000000000000 5:c0b0720000000000 6:c045000000000000 +end +case math round 3ff0000000000000 +expr round(a) +grid -3193452970987 15000 10 +series __name__=a,host=h2,job=j2 ; 0:7fe1ccf385ebc8a0 1:40c2f98000000000 2:bfe05604189374bd 3:40f4965000000000 4:3fcb333333333333 5:4046933333333334 8:3f9fdf3b645a1cac +series __name__=a,host=h1 ; 1:411a2b3800000000 2:c11cd8c400000000 3:40f62d5800000000 4:3fc44189374bc6a8 5:c071560000000000 6:40ee69f000000000 +result host=h1 ; 1:411a2b3800000000 2:c11cd8c400000000 3:40f62d6000000000 4:0000000000000000 5:c071500000000000 6:40ee6a0000000000 +result host=h2,job=j2 ; 0:7fe1ccf385ebc8a0 1:40c2f98000000000 2:bff0000000000000 3:40f4965000000000 4:0000000000000000 5:4046800000000000 8:0000000000000000 +end +case math round 3ff0000000000000 +expr round(a) +grid -1487286925218 1000 6 +series __name__=a,job=j1,zone=z2 ; 0:c055b4cccccccccd 1:c126cbf000000000 3:790c1e62d103b99a 4:7dd4ce86f2172f18 5:3fe0000000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:bfedc189374bc6a8 4:c045466666666667 +series __name__=a,zone=z2 ; 1:4075300000000000 2:80000853f26a45e2 4:40dda9c000000000 +result host=h2,job=j1,zone=z1 ; 0:bff0000000000000 4:c045800000000000 +result job=j1,zone=z2 ; 0:c055c00000000000 1:c126cbf000000000 3:790c1e62d103b99a 4:7dd4ce86f2172f18 5:3ff0000000000000 +result zone=z2 ; 1:4075300000000000 2:0000000000000000 4:40dda9c000000000 +end +case math round 3ff0000000000000 +expr round(a) +grid 2284956594645 1 6 +series __name__=a,host=h1,zone=z2 ; 0:f8c05d7bb7452bf0 1:7ff0000000000000 2:40c0554000000000 3:0000000000000001 4:c12a91c200000000 5:3fe05a1cac083127 +series __name__=a,job=j2,zone=z2 ; 0:7e1bff5aa62eaa88 2:4000000000000000 3:000004fca24fdb37 4:4024000000000000 +result host=h1,zone=z2 ; 0:f8c05d7bb7452bf0 1:7ff0000000000000 2:40c0558000000000 3:0000000000000000 4:c12a91c200000000 5:3ff0000000000000 +result job=j2,zone=z2 ; 0:7e1bff5aa62eaa88 2:4000000000000000 3:0000000000000000 4:4024000000000000 +end +case math round 3ff0000000000000 +expr round(a, 1) +grid 771869651986 60000 3 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:408b280000000000 1:40461e6666666667 2:8000000000000009 +series __name__=a,host=h2,job=j1 ; 1:802505a72eb64954 2:c06f640000000000 +result host=h1,job=j2,zone=z1 ; 0:408b280000000000 1:4046000000000000 2:0000000000000000 +result host=h2,job=j1 ; 1:0000000000000000 2:c06f600000000000 +end +case math round 3ff0000000000000 +expr round(a, 1) +grid -1554833525396 15000 5 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:0000000000000000 1:4056640000000000 2:8000000000007eba 3:c04e900000000000 4:7dec3363641338ce +result host=h2,job=j1,zone=z2 ; 0:0000000000000000 1:4056800000000000 2:0000000000000000 3:c04e800000000000 4:7dec3363641338ce +end +case math round 3fe0000000000000 +expr round(a, 0.5) +grid -2991297603472 15000 8 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:412991e600000000 2:0000000000000001 3:c1153b8c00000000 4:00000004037a89de 6:c0d737c000000000 7:4086da0000000000 +series __name__=a,host=h1,zone=z2 ; 0:c054266666666667 1:80004c1379e9ed20 2:3fcc4dd2f1a9fbe8 3:40c1e5e000000000 4:c0501c0000000000 5:fff0000000000000 6:4000000000000000 7:40033ae147ae147b +series __name__=a,job=j2 ; 0:7fe1ccf385ebc8a0 2:78a97499a53fe964 3:c01c000000000000 5:c10f0d3800000000 6:0000000001565063 7:c0c2bba000000000 +result host=h1,zone=z2 ; 0:c054200000000000 1:0000000000000000 2:0000000000000000 3:40c1e60000000000 4:c050200000000000 5:fff0000000000000 6:4000000000000000 7:4004000000000000 +result host=h2,job=j2,zone=z1 ; 0:412991e600000000 2:0000000000000000 3:c1153b8c00000000 4:0000000000000000 6:c0d737c000000000 7:4086dc0000000000 +result job=j2 ; 0:7ff0000000000000 2:78a97499a53fe964 3:c01c000000000000 5:c10f0d3800000000 6:0000000000000000 7:c0c2bb8000000000 +end +case math round 3fe0000000000000 +expr round(a, 0.5) +grid -798237218033 1 9 +series __name__=a,zone=z1 ; 0:4022f51eb851eb85 1:40de654000000000 2:bfe0000000000000 3:c341c37937e08000 4:fed9340786c39860 5:c12abdb400000000 7:fcabebda9b54bbea 8:4084710000000000 +result zone=z1 ; 0:4023000000000000 1:40de654000000000 2:bfe0000000000000 3:c341c37937e08000 4:fed9340786c39860 5:c12abdb400000000 7:fcabebda9b54bbea 8:4084700000000000 +end +case math round 3fb999999999999a +expr round(a, 0.1) +grid 3486754646038 1 10 +series __name__=a,host=h1,job=j2 ; 0:c0e36a5000000000 1:40a62b0000000000 2:0000000000001e46 3:c024000000000000 4:8000000000000001 6:bfbb4395810624dd 7:7fefffffffffffff 8:80011aa6b6d773fd +series __name__=a,host=h2,job=j1,zone=z1 ; 1:c01c000000000000 2:7fefffffffffffff 3:c341c37937e08000 4:000fffffffffffff 5:40c3164000000000 6:412316b800000000 8:7ee94e0d49806db2 9:c341c37937e08000 +result host=h1,job=j2 ; 0:c0e36a5000000000 1:40a62b0000000000 2:0000000000000000 3:c024000000000000 4:0000000000000000 6:bfb999999999999a 7:7ff0000000000000 8:0000000000000000 +result host=h2,job=j1,zone=z1 ; 1:c01c000000000000 2:7ff0000000000000 3:c341c37937e08000 4:0000000000000000 5:40c3164000000000 6:412316b800000000 8:7ee94e0d49806db2 9:c341c37937e08000 +end +case math round 3fb999999999999a +expr round(a, 0.1) +grid 2306422723193 60000 3 +series __name__=a,host=h2,job=j1 ; 1:c08ef00000000000 +result host=h2,job=j1 ; 1:c08ef00000000000 +end +case math round 4008000000000000 +expr round(a, 3) +grid -2667820001122 60000 10 +series __name__=a,host=h1,job=j2 ; 0:40e454b000000000 1:401a1eb851eb851f 2:8000000000000001 3:c058dd999999999a 4:4031e33333333333 6:80011444499fcbc5 8:40033ae147ae147b +series __name__=a,zone=z1 ; 0:7fefffffffffffff 2:401c000000000000 3:407e480000000000 5:0000000000000001 6:0000000006ce2dc4 8:c0b4794000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 2:41123bf800000000 3:3ff0000000000000 4:bfe16978d4fdf3b6 5:3ff0000000000000 6:c08d560000000000 7:bfe0000000000000 8:4341c37937e08000 +result host=h1,job=j2 ; 0:40e454a000000000 1:4018000000000000 2:0000000000000000 3:c058c00000000000 4:4032000000000000 6:0000000000000000 8:4008000000000000 +result host=h2,job=j2,zone=z2 ; 2:41123bf400000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:c08d580000000000 7:0000000000000000 8:4341c37937e08000 +result zone=z1 ; 0:7feffffffffffffe 2:4018000000000000 3:407e600000000000 5:0000000000000000 6:0000000000000000 8:c0b4790000000000 +end +case math round 4008000000000000 +expr round(a, 3) +grid -194439044093 1 6 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c1158ba000000000 1:7fefffffffffffff 3:7ff0000000000000 4:bff0000000000000 5:40aa4f0000000000 +result host=h2,job=j1,zone=z1 ; 0:c1158ba400000000 1:7feffffffffffffe 3:7ff0000000000000 4:0000000000000000 5:40aa520000000000 +end +case math round c000000000000000 +expr round(a, (-2)) +grid 3511028638591 60000 4 +series __name__=a,host=h1,zone=z2 ; 0:c0440ccccccccccd 1:c057b80000000000 3:c069b00000000000 +series __name__=a,host=h2,job=j2 ; 1:bfe5d70a3d70a3d7 2:7fe1ccf385ebc8a0 3:00000000020f0d14 +series __name__=a,job=j1 ; 2:c00a9eb851eb851f 3:4341c37937e08000 +result host=h1,zone=z2 ; 0:c044000000000000 1:c057800000000000 3:c069c00000000000 +result host=h2,job=j2 ; 1:8000000000000000 2:7fe1ccf385ebc8a0 3:8000000000000000 +result job=j1 ; 2:c010000000000000 3:4341c37937e08000 +end +case math round c000000000000000 +expr round(a, (-2)) +grid -3887137857277 1000 3 +series __name__=a,job=j2 ; 0:3fe36978d4fdf3b6 2:00000000000003cb +series __name__=a,host=h2,job=j2 ; 0:c018000000000000 1:0000000000000000 2:40ecd09000000000 +result host=h2,job=j2 ; 0:c018000000000000 1:8000000000000000 2:40ecd08000000000 +result job=j2 ; 0:8000000000000000 2:8000000000000000 +end +case math round 0000000000000000 +expr round(a, 0) +grid -1283387106734 1 10 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c01c000000000000 1:c05604cccccccccd 4:4000000000000000 5:c083ec0000000000 7:c08aa40000000000 8:40c51e4000000000 +series __name__=a,job=j1,zone=z2 ; 0:c00c051eb851eb85 1:4024000000000000 2:c01e47ae147ae148 4:7fefffffffffffff 5:40150b851eb851ec 6:c341c37937e08000 7:40bb134000000000 +result host=h2,job=j2,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 4:fff8000000000000 5:fff8000000000000 7:fff8000000000000 8:fff8000000000000 +result job=j1,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 7:fff8000000000000 +end +case math round 0000000000000000 +expr round(a, 0) +grid -3523090397301 15000 6 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:4053f66666666667 1:bff27ae147ae147b 4:c0f4325000000000 5:40551a6666666667 +result host=h2,job=j2,zone=z2 ; 0:fff8000000000000 1:fff8000000000000 4:fff8000000000000 5:fff8000000000000 +end +case math round 7ff8000000000001 +expr round(a, NaN) +grid -2044759194153 60000 7 +series __name__=a,host=h2 ; 0:4098ce0000000000 1:c077f00000000000 2:c0f7719000000000 5:bfe60d4fdf3b645a 6:c0a89e8000000000 +result host=h2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 +end +case math round 7ff8000000000001 +expr round(a, NaN) +grid -444185705915 1 4 +series __name__=a,host=h2 ; 0:c01710a3d70a3d71 2:80005e81f97062ce 3:c0f64ef000000000 +result host=h2 ; 0:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 +end +case math round 7ff0000000000000 +expr round(a, Inf) +grid -3255888699375 1000 10 +series __name__=a,host=h1,job=j2 ; 0:000000000338e18b 1:bfc3f7ced916872b 2:c11b32e400000000 3:408f220000000000 4:401e3851eb851eb8 5:c1225f2000000000 6:c020547ae147ae15 9:41010f3000000000 +series __name__=a,host=h2 ; 0:c341c37937e08000 1:c022000000000000 2:3fd55e353f7ced92 3:c0e3ce5000000000 4:fd5a60d25c522fe0 5:4059700000000000 6:40bf2c0000000000 7:bfe0000000000000 9:7fe1ccf385ebc8a0 +series __name__=a,job=j1,zone=z1 ; 0:c04c59999999999a 2:c017e00000000000 5:40e5950000000000 6:3fcf22d0e5604189 8:bfb15810624dd2f2 9:c011370a3d70a3d7 +result host=h1,job=j2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 9:fff8000000000000 +result host=h2 ; 0:fff8000000000000 1:fff8000000000000 2:fff8000000000000 3:fff8000000000000 4:fff8000000000000 5:fff8000000000000 6:fff8000000000000 7:fff8000000000000 9:fff8000000000000 +result job=j1,zone=z1 ; 0:fff8000000000000 2:fff8000000000000 5:fff8000000000000 6:fff8000000000000 8:fff8000000000000 9:fff8000000000000 +end +case math round 7ff0000000000000 +expr round(a, Inf) +grid -1337656759966 1 4 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:000000000000378d 2:c0d1972000000000 3:7f0adb45ea227140 +result host=h2,job=j2,zone=z1 ; 0:fff8000000000000 2:fff8000000000000 3:fff8000000000000 +end +case math round 01a56e1fc2f8f359 +expr round(a, 1e-300) +grid 1298308266650 1000 5 +series __name__=a,host=h1,zone=z1 ; 0:c04e180000000000 2:c0f392f000000000 3:3fe0000000000000 4:4037c00000000000 +result host=h1,zone=z1 ; 0:c04e180000000001 2:c0f392f000000000 3:3fe0000000000000 4:4037c00000000000 +end +case math round 01a56e1fc2f8f359 +expr round(a, 1e-300) +grid 3574978716849 60000 5 +series __name__=a,host=h2 ; 0:c11e20e400000000 1:3fe5f8d4fdf3b646 2:c050b80000000000 3:7da2a2fa50029360 4:3ff0000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:800000002be29f12 1:3fd7c28f5c28f5c3 2:0000000ec2f7c481 4:c008000000000000 +series __name__=a,job=j1 ; 0:401e55c28f5c28f6 2:7fe1ccf385ebc8a0 3:3fe0000000000000 4:8000000000000000 +result host=h1,job=j1,zone=z2 ; 0:0000000000000000 1:3fd7c28f5c28f5c3 2:0000000000000000 4:c008000000000000 +result host=h2 ; 0:c11e20e400000000 1:3fe5f8d4fdf3b645 2:c050b80000000000 3:7ff0000000000000 4:3ff0000000000000 +result job=j1 ; 0:401e55c28f5c28f6 2:7ff0000000000000 3:3fe0000000000000 4:0000000000000000 +end +case math round 3fd0000000000000 +expr round(a, 0.25) +grid -2554684639665 1 3 +series __name__=a,job=j1 ; 0:c118298c00000000 1:40854c0000000000 2:c010000000000000 +series __name__=a,job=j1,zone=z1 ; 0:4014000000000000 1:c010000000000000 2:800aacd9f34318f3 +series __name__=a,host=h1,job=j1 ; 1:79b37322f35f02c0 2:c090540000000000 +result host=h1,job=j1 ; 1:79b37322f35f02c0 2:c090540000000000 +result job=j1 ; 0:c118298c00000000 1:40854c0000000000 2:c010000000000000 +result job=j1,zone=z1 ; 0:4014000000000000 1:c010000000000000 2:0000000000000000 +end +case math round 3fd0000000000000 +expr round(a, 0.25) +grid 2899885797338 1000 5 +series __name__=a,job=j2 ; 0:c0229147ae147ae1 1:bfe8d0e560418937 2:3febfced916872b0 3:c0bc818000000000 +result job=j2 ; 0:c022800000000000 1:bfe8000000000000 2:3fe8000000000000 3:c0bc818000000000 +end +case math clamp bff0000000000000 3ff0000000000000 +expr clamp(a, (-1), 1) +grid 3015578673916 1 5 +series __name__=a,host=h2,job=j1 ; 0:4008000000000000 1:0000000000000000 2:bff0000000000000 3:4014000000000000 4:c0e89c0000000000 +series __name__=a,job=j2,zone=z1 ; 0:bfe25b22d0e56042 1:c0ddee8000000000 2:40ec778000000000 4:ffe1ccf385ebc8a0 +series __name__=a,host=h2,zone=z1 ; 0:3fe0000000000000 1:7ff8000000000001 3:7fefffffffffffff 4:3fe1bb645a1cac08 +result host=h2,job=j1 ; 0:3ff0000000000000 1:0000000000000000 2:bff0000000000000 3:3ff0000000000000 4:bff0000000000000 +result host=h2,zone=z1 ; 0:3fe0000000000000 1:7ff8000000000001 3:3ff0000000000000 4:3fe1bb645a1cac08 +result job=j2,zone=z1 ; 0:bfe25b22d0e56042 1:bff0000000000000 2:3ff0000000000000 4:bff0000000000000 +end +case math clamp 0000000000000000 0000000000000000 +expr clamp(a, 0, 0) +grid -2329435060628 1 4 +series __name__=a,host=h1,zone=z2 ; 0:bfce978d4fdf3b65 2:4077d40000000000 3:7a1866658cda76d8 +series __name__=a,host=h2 ; 1:c120dd6200000000 +result host=h1,zone=z2 ; 0:0000000000000000 2:0000000000000000 3:0000000000000000 +result host=h2 ; 1:0000000000000000 +end +case math clamp 3ff0000000000000 bff0000000000000 +expr clamp(a, 1, (-1)) +grid 3936731634175 1000 8 +series __name__=a,job=j2,zone=z2 ; 0:bfcda1cac083126f 1:ffefffffffffffff 2:8000000000000001 3:c04c6ccccccccccd 4:4023b147ae147ae1 5:bfe0000000000000 7:c0f8092000000000 +end +case math clamp 7ff8000000000001 3ff0000000000000 +expr clamp(a, NaN, 1) +grid -1047749612679 1000 5 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:c12ab8d200000000 1:c01ad9999999999a 2:faf6b03c3fcbac9c 4:4022000000000000 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 4:7ff8000000000001 +end +case math clamp bff0000000000000 7ff8000000000001 +expr clamp(a, (-1), NaN) +grid 2830799997839 60000 5 +series __name__=a,host=h1,zone=z2 ; 0:4010000000000000 1:4022000000000000 2:000000000230621c 3:7e33b665a1b6f84c 4:4008000000000000 +series __name__=a,job=j1 ; 0:3fd999999999999a 2:c018000000000000 4:4120d88000000000 +series __name__=a,zone=z2 ; 0:c054df3333333334 1:ffefffffffffffff 2:c001b5c28f5c28f6 3:bfc88b4395810625 4:4010147ae147ae15 +result host=h1,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 +result job=j1 ; 0:7ff8000000000001 2:7ff8000000000001 4:7ff8000000000001 +result zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 +end +case math clamp 7ff8000000000001 7ff8000000000001 +expr clamp(a, NaN, NaN) +grid -3687360216817 60000 3 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4023370a3d70a3d7 1:7fefffffffffffff +series __name__=a,host=h1,job=j2,zone=z2 ; 1:00724c65bdcb68e6 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 +result host=h1,job=j2,zone=z2 ; 1:7ff8000000000001 +end +case math clamp fff0000000000000 7ff0000000000000 +expr clamp(a, (-Inf), Inf) +grid 1652308830520 15000 5 +series __name__=a,host=h2,job=j1,zone=z2 ; 1:7fe1ccf385ebc8a0 2:000fffffffffffff 3:80000142c602c7c4 4:c011251eb851eb85 +result host=h2,job=j1,zone=z2 ; 1:7fe1ccf385ebc8a0 2:000fffffffffffff 3:80000142c602c7c4 4:c011251eb851eb85 +end +case math clamp 8000000000000000 0000000000000000 +expr clamp(a, (-0), 0) +grid 3798078246629 60000 9 +series __name__=a,job=j2 ; 0:c01bdc28f5c28f5c 1:7d7c285ae2085660 5:c0c3416000000000 7:4075680000000000 +series __name__=a,host=h2,job=j2 ; 0:c12336f200000000 2:c0b5c34000000000 +result host=h2,job=j2 ; 0:8000000000000000 2:8000000000000000 +result job=j2 ; 0:8000000000000000 1:0000000000000000 5:8000000000000000 7:0000000000000000 +end +case math clamp 0000000000000000 8000000000000000 +expr clamp(a, 0, (-0)) +grid 2895352430952 1 4 +series __name__=a,host=h2,job=j1 ; 0:3fe0000000000000 1:7ff8000000000001 2:c013866666666667 3:bff0000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:4058340000000000 2:3f83333333333333 3:7d53048c331fbf98 +result host=h1,job=j2,zone=z1 ; 1:0000000000000000 2:0000000000000000 3:0000000000000000 +result host=h2,job=j1 ; 0:0000000000000000 1:7ff8000000000001 2:0000000000000000 3:0000000000000000 +end +case math clamp c059000000000000 7e37e43c8800759c +expr clamp(a, (-100), 1e+300) +grid 3571074659519 60000 7 +series __name__=a,job=j1,zone=z1 ; 1:c024000000000000 3:0000000000000002 4:4341c37937e08000 6:3febea7ef9db22d1 +result job=j1,zone=z1 ; 1:c024000000000000 3:0000000000000002 4:4341c37937e08000 6:3febea7ef9db22d1 +end +case math clamp 4014000000000000 4014000000000000 +expr clamp(a, 5, 5) +grid 1969580956986 60000 7 +series __name__=a,host=h1,zone=z1 ; 0:c003451eb851eb85 1:4015ab851eb851ec 3:0000000000000000 5:401ecccccccccccd 6:ffefffffffffffff +series __name__=a ; 1:40f77c8000000000 2:0000000000000014 3:0000000000000001 4:000fffffffffffff +series __name__=a,host=h2,zone=z2 ; 1:7ff8000000000001 2:407f800000000000 3:bff0000000000000 5:ffabbf0c16187df2 6:c01c000000000000 +result - ; 1:4014000000000000 2:4014000000000000 3:4014000000000000 4:4014000000000000 +result host=h1,zone=z1 ; 0:4014000000000000 1:4014000000000000 3:4014000000000000 5:4014000000000000 6:4014000000000000 +result host=h2,zone=z2 ; 1:7ff8000000000001 2:4014000000000000 3:4014000000000000 5:4014000000000000 6:4014000000000000 +end +case math clamp_min 0000000000000000 +expr clamp_min(a, 0) +grid 2640149954816 1 5 +series __name__=a,job=j1 ; 0:c089880000000000 3:7a89a5201c56d9b4 4:ff919a607f20800c +series __name__=a,job=j1,zone=z2 ; 1:8000000000000000 2:f8d26b0e15c2aa48 3:800017258a5054cf 4:7b659266a16be664 +series __name__=a,host=h2,zone=z2 ; 3:8000000000000000 4:4010000000000000 +result host=h2,zone=z2 ; 3:0000000000000000 4:4010000000000000 +result job=j1 ; 0:0000000000000000 3:7a89a5201c56d9b4 4:0000000000000000 +result job=j1,zone=z2 ; 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:7b659266a16be664 +end +case math clamp_max 0000000000000000 +expr clamp_max(a, 0) +grid -2041056768151 15000 3 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c1260f7600000000 2:c0b89fc000000000 +series __name__=a,job=j1,zone=z2 ; 0:8000000000140476 2:8001e73f495885cc +result host=h2,job=j2,zone=z1 ; 0:c1260f7600000000 2:c0b89fc000000000 +result job=j1,zone=z2 ; 0:8000000000140476 2:8001e73f495885cc +end +case math clamp_min 8000000000000000 +expr clamp_min(a, (-0)) +grid 2329013269731 1000 7 +series __name__=a,zone=z1 ; 0:4000000000000000 1:c0b8a60000000000 3:f8857f39068e5e74 4:3fade353f7ced917 +result zone=z1 ; 0:4000000000000000 1:8000000000000000 3:8000000000000000 4:3fade353f7ced917 +end +case math clamp_max 8000000000000000 +expr clamp_max(a, (-0)) +grid 1467142707528 60000 6 +series __name__=a,job=j2,zone=z1 ; 0:000fffffffffffff 2:bfebc7ae147ae148 3:4019251eb851eb85 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:c0507f3333333333 1:7ad574a5e5bef3e8 3:7fefffffffffffff 4:4014000000000000 5:bfb374bc6a7ef9db +series __name__=a ; 0:80000000037dd0e0 2:3fd204189374bc6b 3:c035a00000000000 4:40238c28f5c28f5c 5:4033b66666666667 +result - ; 0:80000000037dd0e0 2:8000000000000000 3:c035a00000000000 4:8000000000000000 5:8000000000000000 +result host=h2,job=j2,zone=z2 ; 0:c0507f3333333333 1:8000000000000000 3:8000000000000000 4:8000000000000000 5:bfb374bc6a7ef9db +result job=j2,zone=z1 ; 0:8000000000000000 2:bfebc7ae147ae148 3:8000000000000000 +end +case math clamp_min 7ff8000000000001 +expr clamp_min(a, NaN) +grid -1601973691726 1000 9 +series __name__=a,job=j2 ; 0:401990a3d70a3d71 1:790b504a358028d4 4:40e73e0000000000 5:40817a0000000000 6:7fefffffffffffff 7:c0f1a21000000000 8:4023800000000000 +result job=j2 ; 0:7ff8000000000001 1:7ff8000000000001 4:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 8:7ff8000000000001 +end +case math clamp_max 7ff8000000000001 +expr clamp_max(a, NaN) +grid -2054107440206 15000 5 +series __name__=a,host=h1,job=j2 ; 0:fff0000000000000 3:3fec6147ae147ae1 4:ffe1ccf385ebc8a0 +series __name__=a,job=j1,zone=z1 ; 0:3fc578d4fdf3b646 1:800000062b1a8f3e 2:c0c0392000000000 3:403b600000000000 4:ffefffffffffffff +result host=h1,job=j2 ; 0:fff0000000000000 3:7ff8000000000001 4:7ff8000000000001 +result job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 +end +case math clamp_min 3ff0000000000000 +expr clamp_min(a, 1) +grid -2059621471936 60000 4 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:412bb9a800000000 1:3fb6b851eb851eb8 2:ffe1ccf385ebc8a0 3:4024000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 1:4015466666666667 2:7f2ececc58b00930 3:7fb14b978f52d58a +result host=h1,job=j1,zone=z2 ; 1:4015466666666667 2:7f2ececc58b00930 3:7fb14b978f52d58a +result host=h2,job=j2,zone=z2 ; 0:412bb9a800000000 1:3ff0000000000000 2:3ff0000000000000 3:4024000000000000 +end +case math clamp_max 3ff0000000000000 +expr clamp_max(a, 1) +grid 742735628228 60000 4 +series __name__=a,host=h2,zone=z1 ; 0:8000000000000030 1:c0a4e60000000000 2:bfe1883126e978d5 3:8000000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c1126ccc00000000 1:c0b066c000000000 2:c010000000000000 3:bf9d4fdf3b645a1d +result host=h1,job=j1,zone=z2 ; 0:c1126ccc00000000 1:c0b066c000000000 2:c010000000000000 3:bf9d4fdf3b645a1d +result host=h2,zone=z1 ; 0:8000000000000030 1:c0a4e60000000000 2:bfe1883126e978d5 3:8000000000000000 +end +case math clamp_min fe37e43c8800759c +expr clamp_min(a, (-1e+300)) +grid 1752881790434 1000 4 +series __name__=a,host=h1,job=j2 ; 0:c0f2976000000000 1:bff0000000000000 2:c07cfc0000000000 3:40f1bef800000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:4008000000000000 2:bfe0000000000000 3:0000000000006e47 +series __name__=a,job=j2,zone=z2 ; 0:4044066666666667 1:4011d70a3d70a3d7 +result host=h1,job=j2 ; 0:c0f2976000000000 1:bff0000000000000 2:c07cfc0000000000 3:40f1bef800000000 +result host=h2,job=j2,zone=z1 ; 0:4008000000000000 2:bfe0000000000000 3:0000000000006e47 +result job=j2,zone=z2 ; 0:4044066666666667 1:4011d70a3d70a3d7 +end +case math clamp_max fe37e43c8800759c +expr clamp_max(a, (-1e+300)) +grid 1598129801495 60000 3 +series __name__=a,host=h1,job=j2 ; 0:409d1a0000000000 1:c07bee0000000000 +series __name__=a,job=j1 ; 1:bfc974bc6a7ef9db 2:c036c00000000000 +series __name__=a,host=h2,zone=z1 ; 2:c014000000000000 +result host=h1,job=j2 ; 0:fe37e43c8800759c 1:fe37e43c8800759c +result host=h2,zone=z1 ; 2:fe37e43c8800759c +result job=j1 ; 1:fe37e43c8800759c 2:fe37e43c8800759c +end +case math clamp_min 7ff0000000000000 +expr clamp_min(a, Inf) +grid 3643201921998 60000 9 +series __name__=a,job=j2,zone=z1 ; 0:4030f33333333333 5:3fd7000000000000 6:c12874be00000000 +series __name__=a,zone=z1 ; 0:7da8170bd2901d54 1:c0893e0000000000 2:4341c37937e08000 4:4052400000000000 5:c0296ccccccccccd 6:c022000000000000 7:7ff0000000000000 8:7a1cae03ace99a38 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:0000000000000000 2:c341c37937e08000 3:4045e66666666667 4:80000000000214fc 6:40357ccccccccccd 8:c020000000000000 +result host=h2,job=j2,zone=z2 ; 1:7ff0000000000000 2:7ff0000000000000 3:7ff0000000000000 4:7ff0000000000000 6:7ff0000000000000 8:7ff0000000000000 +result job=j2,zone=z1 ; 0:7ff0000000000000 5:7ff0000000000000 6:7ff0000000000000 +result zone=z1 ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 4:7ff0000000000000 5:7ff0000000000000 6:7ff0000000000000 7:7ff0000000000000 8:7ff0000000000000 +end +case math clamp_max 7ff0000000000000 +expr clamp_max(a, Inf) +grid -696309019469 1000 7 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c0f6d16800000000 1:000030afaedf6405 2:bfb6c083126e978d 3:bfef53f7ced91687 4:c010000000000000 6:40853a0000000000 +series __name__=a,host=h2 ; 0:3ff0000000000000 1:4008000000000000 2:3ff0000000000000 3:c0580e6666666667 5:40153851eb851eb8 6:40c06da000000000 +series __name__=a,host=h1,job=j1 ; 1:c03bc9999999999a 2:7f8e343720f6be60 3:4000000000000000 4:403539999999999a +result host=h1,job=j1 ; 1:c03bc9999999999a 2:7f8e343720f6be60 3:4000000000000000 4:403539999999999a +result host=h2 ; 0:3ff0000000000000 1:4008000000000000 2:3ff0000000000000 3:c0580e6666666667 5:40153851eb851eb8 6:40c06da000000000 +result host=h2,job=j1,zone=z2 ; 0:c0f6d16800000000 1:000030afaedf6405 2:bfb6c083126e978d 3:bfef53f7ced91687 4:c010000000000000 6:40853a0000000000 +end +case neg +expr -a +grid -3060629051934 15000 8 +series __name__=a,host=h2,job=j1 ; 0:c11d84a400000000 1:40efcfc000000000 3:c11775dc00000000 4:80000004b9313fd0 7:40b5e14000000000 +result host=h2,job=j1 ; 0:411d84a400000000 1:c0efcfc000000000 3:411775dc00000000 4:00000004b9313fd0 7:c0b5e14000000000 +end +case neg +expr -a +grid -897644651589 60000 10 +series __name__=a,host=h2,zone=z2 ; 0:bff0000000000000 2:c0b56bc000000000 3:400e59999999999a 4:404d233333333334 5:c04ec80000000000 6:c019b33333333334 7:7dc4b792ec5323d8 8:7a2b88472dd8396e 9:800000d67ba33c0b +series __name__=a,job=j1,zone=z2 ; 0:c022670a3d70a3d7 1:c0f6fb9800000000 2:c041bccccccccccd 3:40904a0000000000 4:798b41c43b5d59de 5:c0c7700000000000 6:3ff0000000000000 7:80000cca4d3fc09a 9:806694eae23ed738 +result host=h2,zone=z2 ; 0:3ff0000000000000 2:40b56bc000000000 3:c00e59999999999a 4:c04d233333333334 5:404ec80000000000 6:4019b33333333334 7:fdc4b792ec5323d8 8:fa2b88472dd8396e 9:000000d67ba33c0b +result job=j1,zone=z2 ; 0:4022670a3d70a3d7 1:40f6fb9800000000 2:4041bccccccccccd 3:c0904a0000000000 4:f98b41c43b5d59de 5:40c7700000000000 6:bff0000000000000 7:00000cca4d3fc09a 9:006694eae23ed738 +end +case neg +expr -a +grid 973688860889 15000 7 +series __name__=a,job=j1,zone=z2 ; 0:c022000000000000 2:4018000000000000 3:4341c37937e08000 4:408cd60000000000 5:fe8d2855245ed900 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:7d14d6b56e8a7014 1:c0aa360000000000 2:c083030000000000 3:4027866666666667 4:411ae2d000000000 5:411873c400000000 +result host=h1,job=j2,zone=z2 ; 0:fd14d6b56e8a7014 1:40aa360000000000 2:4083030000000000 3:c027866666666667 4:c11ae2d000000000 5:c11873c400000000 +result job=j1,zone=z2 ; 0:4022000000000000 2:c018000000000000 3:c341c37937e08000 4:c08cd60000000000 5:7e8d2855245ed900 +end +case neg +expr -a +grid 2647080646603 15000 4 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:3fe315810624dd2f 1:4056100000000000 2:c0751c0000000000 3:bfdf20c49ba5e354 +series __name__=a,job=j2,zone=z2 ; 0:3ff0000000000000 1:4081980000000000 2:40f25c0000000000 3:c01f8a3d70a3d70a +result host=h2,job=j2,zone=z1 ; 0:bfe315810624dd2f 1:c056100000000000 2:40751c0000000000 3:3fdf20c49ba5e354 +result job=j2,zone=z2 ; 0:bff0000000000000 1:c081980000000000 2:c0f25c0000000000 3:401f8a3d70a3d70a +end +case neg +expr -a +grid 3462948395580 60000 9 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:bff0000000000000 1:c0eac07000000000 2:bfed7ae147ae147b 3:3ff0000000000000 4:c1293afc00000000 5:bfdbd2f1a9fbe76d 6:4010000000000000 7:4083d80000000000 8:0000000000000000 +series __name__=a,host=h2,job=j2 ; 2:ffe1ccf385ebc8a0 3:412c8aa400000000 5:bfe22e147ae147ae 6:fc30788028ce9ed4 8:000000000bf8138e +result host=h2,job=j1,zone=z2 ; 0:3ff0000000000000 1:40eac07000000000 2:3fed7ae147ae147b 3:bff0000000000000 4:41293afc00000000 5:3fdbd2f1a9fbe76d 6:c010000000000000 7:c083d80000000000 8:8000000000000000 +result host=h2,job=j2 ; 2:7fe1ccf385ebc8a0 3:c12c8aa400000000 5:3fe22e147ae147ae 6:7c30788028ce9ed4 8:800000000bf8138e +end +case neg +expr -a +grid -1541997564086 15000 7 +series __name__=a,job=j2,zone=z1 ; 0:4010000000000000 3:bfe0000000000000 4:bff0000000000000 6:ffefffffffffffff +series __name__=a,host=h2 ; 0:c0b86b4000000000 2:c0b6184000000000 6:000000214173aeea +series __name__=a,host=h2,zone=z2 ; 0:805ce666b4da213c 3:8000000000000001 4:c341c37937e08000 6:4008000000000000 +result host=h2 ; 0:40b86b4000000000 2:40b6184000000000 6:800000214173aeea +result host=h2,zone=z2 ; 0:005ce666b4da213c 3:0000000000000001 4:4341c37937e08000 6:c008000000000000 +result job=j2,zone=z1 ; 0:c010000000000000 3:3fe0000000000000 4:3ff0000000000000 6:7fefffffffffffff +end +case neg +expr -a +grid -2896937997014 60000 4 +series __name__=a,host=h2,job=j1 ; 0:c022000000000000 1:7ff0000000000000 2:c114cc3800000000 3:c020000000000000 +result host=h2,job=j1 ; 0:4022000000000000 1:fff0000000000000 2:4114cc3800000000 3:4020000000000000 +end +case neg +expr -a +grid 523810596722 60000 4 +series __name__=a,job=j2 ; 0:4008000000000000 1:40a4c08000000000 2:412d56be00000000 3:8000000000000000 +series __name__=a,job=j1,zone=z2 ; 0:4018000000000000 1:3fb8dd2f1a9fbe77 2:c022000000000000 3:0000000000000001 +result job=j1,zone=z2 ; 0:c018000000000000 1:bfb8dd2f1a9fbe77 2:4022000000000000 3:8000000000000001 +result job=j2 ; 0:c008000000000000 1:c0a4c08000000000 2:c12d56be00000000 3:0000000000000000 +end +case neg +expr -a +grid 2978293992755 1000 5 +series __name__=a,job=j2,zone=z1 ; 0:8000000000000001 2:c0fe654000000000 4:3fe6322d0e560419 +series __name__=a,host=h2,zone=z1 ; 1:4010000000000000 2:41159b4000000000 3:c1219dc400000000 4:c01c000000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:7fefffffffffffff 2:4008000000000000 3:401595c28f5c28f6 4:4008000000000000 +result host=h1,job=j1,zone=z1 ; 1:ffefffffffffffff 2:c008000000000000 3:c01595c28f5c28f6 4:c008000000000000 +result host=h2,zone=z1 ; 1:c010000000000000 2:c1159b4000000000 3:41219dc400000000 4:401c000000000000 +result job=j2,zone=z1 ; 0:0000000000000001 2:40fe654000000000 4:bfe6322d0e560419 +end +case neg +expr -a +grid 1510876496343 15000 9 +series __name__=a,host=h2,zone=z1 ; 1:c0b85ec000000000 2:40aa928000000000 3:bfd64fdf3b645a1d 4:bfedfbe76c8b4396 5:fff0000000000000 6:800000000000005c 7:c092c00000000000 8:c03cd33333333334 +result host=h2,zone=z1 ; 1:40b85ec000000000 2:c0aa928000000000 3:3fd64fdf3b645a1d 4:3fedfbe76c8b4396 5:7ff0000000000000 6:000000000000005c 7:4092c00000000000 8:403cd33333333334 +end +case arith + left c05374cccccccccd +expr (-77.825) + a +grid 926108195118 1000 7 +series __name__=a,job=j1 ; 0:c088070000000000 2:40f1b34000000000 3:c034800000000000 4:4071740000000000 5:c018000000000000 6:3fd51eb851eb851f +series __name__=a,host=h1,job=j1,zone=z1 ; 0:806af57e9d458f82 3:c022000000000000 4:40a2b10000000000 5:bfe4d1eb851eb852 6:40f51be800000000 +series __name__=a,zone=z1 ; 0:000fffffffffffff 1:fb7a03fe9a20eb8c 5:c04d8b3333333334 6:c008000000000000 +result host=h1,job=j1,zone=z1 ; 0:c05374cccccccccd 3:c055b4cccccccccd 4:40a215599999999a 5:c0539e70a3d70a3e 6:40f5170acccccccd +result job=j1 ; 0:c08a75999999999a 2:40f1ae62cccccccd 3:c05894cccccccccd 4:40692d999999999a 5:c054f4cccccccccd 6:c0535fae147ae148 +result zone=z1 ; 0:c05374cccccccccd 1:fb7a03fe9a20eb8c 5:c0611d3333333334 6:c05434cccccccccd +end +case arith + right 0000000000000000 +expr a + 0 +grid -3701471606848 60000 5 +series __name__=a,host=h1,job=j2 ; 1:c08eba0000000000 3:c0c30c4000000000 4:7c9b30520e75f000 +result host=h1,job=j2 ; 1:c08eba0000000000 3:c0c30c4000000000 4:7c9b30520e75f000 +end +case arith + left 40c2d2c000000000 +expr 9637.5 + a +grid -3739629549089 60000 10 +series __name__=a,job=j2,zone=z1 ; 0:4010000000000000 1:4056326666666667 3:40af7c0000000000 4:4000000000000000 6:ffe1ccf385ebc8a0 7:c07afe0000000000 8:4010000000000000 9:40c3646000000000 +result job=j2,zone=z1 ; 0:40c2d4c000000000 1:40c2ff24cccccccd 3:40cab1c000000000 4:40c2d3c000000000 6:ffe1ccf385ebc8a0 7:40c1fad000000000 8:40c2d4c000000000 9:40d31b9000000000 +end +case arith + right 7fe1ccf385ebc8a0 +expr a + 1e+308 +grid -3243670278067 1 3 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:fff0000000000000 2:c0b79bc000000000 +result host=h2,job=j2,zone=z2 ; 0:fff0000000000000 2:7fe1ccf385ebc8a0 +end +case arith + left c088100000000000 +expr (-770) + a +grid 560595743119 1 4 +series __name__=a,host=h1 ; 0:4022000000000000 1:40202d70a3d70a3e 2:c0f16a9800000000 3:4000000000000000 +result host=h1 ; 0:c087c80000000000 1:c087cf4a3d70a3d7 2:c0f19ab800000000 3:c088000000000000 +end +case arith + right 4000000000000000 +expr a + 2 +grid 1404194425768 60000 10 +series __name__=a,host=h1 ; 0:00000196a6702d88 1:0000000000000019 3:7ff8000000000001 4:c010000000000000 5:c0182147ae147ae1 7:4093ab0000000000 8:c0a76d8000000000 +series __name__=a,job=j2,zone=z2 ; 0:408f0d0000000000 1:bff0000000000000 3:7ff8000000000001 4:4010800000000000 5:c01c000000000000 8:c09fe50000000000 9:7bc0504b4edddc8c +series __name__=a,host=h2,job=j1,zone=z2 ; 1:fedf4edead6a246e 2:c01b266666666667 5:3fea820c49ba5e35 7:40f8380000000000 9:c01c000000000000 +result host=h1 ; 0:4000000000000000 1:4000000000000000 3:7ff8000000000001 4:c000000000000000 5:c0102147ae147ae1 7:4093b30000000000 8:c0a7698000000000 +result host=h2,job=j1,zone=z2 ; 1:fedf4edead6a246e 2:c013266666666667 5:4006a083126e978d 7:40f8382000000000 9:c014000000000000 +result job=j2,zone=z2 ; 0:408f1d0000000000 1:3ff0000000000000 3:7ff8000000000001 4:4018800000000000 5:c014000000000000 8:c09fdd0000000000 9:7bc0504b4edddc8c +end +case arith + left 7a3e3876b1653e1e +expr 6.8570686882481105e+280 + a +grid -2446962561220 60000 10 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:c0f83a5800000000 1:80000000000001bc 2:fe01d5f16a1bd7ac 5:4000000000000000 6:0000000000000001 7:409b260000000000 8:c126be4400000000 +series __name__=a,host=h2,job=j2 ; 1:c071960000000000 2:c0876c0000000000 3:3ff0000000000000 4:404c5e6666666667 5:400e451eb851eb85 6:40c2e6c000000000 7:3fe0000000000000 9:40e99ab000000000 +series __name__=a,job=j2 ; 2:4128efca00000000 3:c085ed0000000000 4:c01c000000000000 5:8000000000000000 8:41218b3600000000 9:fa2d58b34e7fca80 +result host=h1,job=j2,zone=z2 ; 0:7a3e3876b1653e1e 1:7a3e3876b1653e1e 2:fe01d5f16a1bd7ac 5:7a3e3876b1653e1e 6:7a3e3876b1653e1e 7:7a3e3876b1653e1e 8:7a3e3876b1653e1e +result host=h2,job=j2 ; 1:7a3e3876b1653e1e 2:7a3e3876b1653e1e 3:7a3e3876b1653e1e 4:7a3e3876b1653e1e 5:7a3e3876b1653e1e 6:7a3e3876b1653e1e 7:7a3e3876b1653e1e 9:7a3e3876b1653e1e +result job=j2 ; 2:7a3e3876b1653e1e 3:7a3e3876b1653e1e 4:7a3e3876b1653e1e 5:7a3e3876b1653e1e 8:7a3e3876b1653e1e 9:7a2f183a144ab1bc +end +case arith + right ffe1ccf385ebc8a0 +expr a + (-1e+308) +grid -2510586684307 15000 8 +series __name__=a,host=h1,job=j2 ; 0:c0864a0000000000 1:ff274e86d1eb2d12 2:3ffb147ae147ae15 3:3f9810624dd2f1aa 4:0000000000000000 5:8000000048f31e33 6:c0b24f8000000000 7:4010000000000000 +result host=h1,job=j2 ; 0:ffe1ccf385ebc8a0 1:ffe1ce686e58e753 2:ffe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:ffe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 6:ffe1ccf385ebc8a0 7:ffe1ccf385ebc8a0 +end +case arith + left fff0000000000000 +expr (-Inf) + a +grid 3430809457443 15000 5 +series __name__=a,host=h2,job=j1 ; 0:7d90862d581e4210 1:4014000000000000 2:ffe1ccf385ebc8a0 3:c045333333333334 4:000fffffffffffff +series __name__=a,host=h1,job=j1 ; 2:c0f15ee000000000 3:4086340000000000 +result host=h1,job=j1 ; 2:fff0000000000000 3:fff0000000000000 +result host=h2,job=j1 ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 3:fff0000000000000 4:fff0000000000000 +end +case arith + right 0000000000000000 +expr a + 0 +grid 901217603819 15000 4 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:40ceeec000000000 1:c341c37937e08000 2:7fe1ccf385ebc8a0 +series __name__=a,zone=z1 ; 0:fede5d298cdcde8c 1:c0a5090000000000 2:c05148cccccccccd 3:40c0554000000000 +result host=h1,job=j2,zone=z2 ; 0:40ceeec000000000 1:c341c37937e08000 2:7fe1ccf385ebc8a0 +result zone=z1 ; 0:fede5d298cdcde8c 1:c0a5090000000000 2:c05148cccccccccd 3:40c0554000000000 +end +case arith - left fff0000000000000 +expr (-Inf) - a +grid -1327272681921 60000 10 +series __name__=a,zone=z1 ; 0:c020c51eb851eb85 3:fd2cf2aea925e9ec 4:3fe4cccccccccccd 5:4010000000000000 6:4020000000000000 7:404fa00000000000 9:c0eb616000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:409d6f0000000000 2:8000000000000001 3:40a60d0000000000 6:bfe7a9fbe76c8b44 7:c01c000000000000 8:0000000000000000 9:40b91cc000000000 +series __name__=a,zone=z2 ; 0:0000000000003ab6 1:c0be2f8000000000 2:bfedb22d0e560419 3:3fe0000000000000 7:c09acc0000000000 8:ffefffffffffffff 9:7fe1ccf385ebc8a0 +result host=h2,job=j2,zone=z2 ; 0:fff0000000000000 2:fff0000000000000 3:fff0000000000000 6:fff0000000000000 7:fff0000000000000 8:fff0000000000000 9:fff0000000000000 +result zone=z1 ; 0:fff0000000000000 3:fff0000000000000 4:fff0000000000000 5:fff0000000000000 6:fff0000000000000 7:fff0000000000000 9:fff0000000000000 +result zone=z2 ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 3:fff0000000000000 7:fff0000000000000 8:fff0000000000000 9:fff0000000000000 +end +case arith - right 000fffffffffffff +expr a - 2.225073858507201e-308 +grid -1035651763535 60000 5 +series __name__=a,host=h1 ; 1:c0ec3db000000000 2:3fe9d604189374bd 3:4008000000000000 4:fdf0a1aae06c8c54 +result host=h1 ; 1:c0ec3db000000000 2:3fe9d604189374bd 3:4008000000000000 4:fdf0a1aae06c8c54 +end +case arith - left 4000000000000000 +expr 2 - a +grid -1705892077813 1 10 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:7b7d853f8885c6c0 1:403d7ccccccccccd 3:412700ac00000000 4:4022000000000000 5:c023f9999999999a 7:c0c0b4e000000000 8:0000000000000001 9:3fecde353f7ced92 +result host=h1,job=j2,zone=z2 ; 0:fb7d853f8885c6c0 1:c03b7ccccccccccd 3:c12700a800000000 4:c01c000000000000 5:4027f9999999999a 7:40c0b5e000000000 8:4000000000000000 9:3ff190e560418937 +end +case arith - right 3f878d4fdf3b645a +expr a - 0.0115 +grid 1295613020977 1000 8 +series __name__=a,host=h1,zone=z2 ; 0:40c2b42000000000 1:7fefffffffffffff 2:c0c9c80000000000 3:7fefffffffffffff 4:40bd7cc000000000 5:4010ea3d70a3d70a 6:7cfbd0c53ecd4c38 7:3fe515810624dd2f +series __name__=a,host=h2 ; 1:ffefffffffffffff 2:c341c37937e08000 3:bfe4ced916872b02 4:feeb3cf19492b750 5:c0fffb8000000000 6:c0c3434000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:0000000000000001 2:3ff0000000000000 3:c01ca66666666667 5:77ad9216008ab000 6:40cf914000000000 7:40e8862000000000 +result host=h1,job=j1,zone=z1 ; 1:bf878d4fdf3b645a 2:3fefa1cac083126f 3:c01cb22d0e560419 5:77ad9216008ab000 6:40cf913e872b020c 7:40e8861fa1cac083 +result host=h1,zone=z2 ; 0:40c2b41e872b020c 1:7fefffffffffffff 2:c0c9c80178d4fdf4 3:7fefffffffffffff 4:40bd7cbd0e560419 5:4010de76c8b43958 6:7cfbd0c53ecd4c38 7:3fe4b74bc6a7ef9e +result host=h2 ; 1:ffefffffffffffff 2:c341c37937e08000 3:bfe52d0e56041893 4:feeb3cf19492b750 5:c0fffb802f1a9fbe 6:c0c3434178d4fdf4 +end +case arith - left 0000000000000000 +expr 0 - a +grid 3144679996165 1000 9 +series __name__=a,host=h1 ; 0:0000000000000000 2:c000000000000000 4:4016a147ae147ae1 5:800045b0cb0fee8b 6:7ff8000000000001 7:4000000000000000 8:c010000000000000 +series __name__=a,zone=z2 ; 0:c00ec51eb851eb85 1:4010000000000000 2:4051766666666667 3:4033933333333334 4:8001c8da7762f210 5:bfefdd2f1a9fbe77 6:405379999999999a 7:402005c28f5c28f6 8:bfea7be76c8b4396 +series __name__=a,job=j2,zone=z2 ; 1:4010000000000000 2:400c8a3d70a3d70a 3:800000000aaec273 4:7ff0000000000000 6:4000000000000000 7:c044e4cccccccccd 8:bff0000000000000 +result host=h1 ; 0:0000000000000000 2:4000000000000000 4:c016a147ae147ae1 5:000045b0cb0fee8b 6:7ff8000000000001 7:c000000000000000 8:4010000000000000 +result job=j2,zone=z2 ; 1:c010000000000000 2:c00c8a3d70a3d70a 3:000000000aaec273 4:fff0000000000000 6:c000000000000000 7:4044e4cccccccccd 8:3ff0000000000000 +result zone=z2 ; 0:400ec51eb851eb85 1:c010000000000000 2:c051766666666667 3:c033933333333334 4:0001c8da7762f210 5:3fefdd2f1a9fbe77 6:c05379999999999a 7:c02005c28f5c28f6 8:3fea7be76c8b4396 +end +case arith - right c0b26c4000000000 +expr a - (-4716.25) +grid 2700899346599 15000 8 +series __name__=a,host=h2,job=j2 ; 0:78f905b2b374f1c8 1:408aac0000000000 3:c085860000000000 4:80000000000001a9 6:805ffc09aeb2ddb8 7:ffefffffffffffff +series __name__=a,host=h1 ; 0:0000000000000001 1:c017b70a3d70a3d7 2:78781f8b635faa48 4:40e2f84000000000 5:000fffffffffffff 6:c1248db800000000 7:c03fa33333333334 +result host=h1 ; 0:40b26c4000000000 1:40b266523d70a3d7 2:78781f8b635faa48 4:40e545c800000000 5:40b26c4000000000 6:c12468df80000000 7:40b24c9ccccccccd +result host=h2,job=j2 ; 0:78f905b2b374f1c8 1:40b5c1c000000000 3:40af770000000000 4:40b26c4000000000 6:40b26c4000000000 7:ffefffffffffffff +end +case arith - left c12a5e0000000000 +expr (-864000) - a +grid -3520057885029 15000 5 +series __name__=a,job=j2,zone=z1 ; 0:4089140000000000 1:7a171f8ff7897df8 2:4113dbfc00000000 3:80000f9266b33df2 +series __name__=a,job=j1 ; 1:c014000000000000 4:0000000000000001 +series __name__=a,host=h2 ; 1:0000000000000001 2:8000000000000001 3:000000000000026a 4:c08b100000000000 +result host=h2 ; 1:c12a5e0000000000 2:c12a5e0000000000 3:c12a5e0000000000 4:c12a573c00000000 +result job=j1 ; 1:c12a5df600000000 4:c12a5e0000000000 +result job=j2,zone=z1 ; 0:c12a644500000000 1:fa171f8ff7897df8 2:c13225ff00000000 3:c12a5e0000000000 +end +case arith - right 4109f0a000000000 +expr a - 212500 +grid 269821663664 1 7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4050ed999999999a 1:c08b800000000000 3:c01c000000000000 4:7862ae3b7ec5b9e0 5:bff0000000000000 6:40863b0000000000 +series __name__=a,job=j1,zone=z1 ; 1:fc6c83a90055cd48 4:40f619d000000000 5:c0232ccccccccccd 6:4052c8cccccccccd +result host=h1,job=j2,zone=z1 ; 0:c109ee824ccccccd 1:c10a0c2000000000 3:c109f0d800000000 4:7862ae3b7ec5b9e0 5:c109f0a800000000 6:c109da6500000000 +result job=j1,zone=z1 ; 1:fc6c83a90055cd48 4:c0fdc77000000000 5:c109f0ecb3333333 6:c109ee46e6666666 +end +case arith - left 4341c37937e08000 +expr 1e+16 - a +grid -2796369567605 60000 5 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:bf84bc6a7ef9db23 2:c1290e1000000000 3:8000031bd5757bf3 4:40521e6666666667 +series __name__=a,host=h1,zone=z1 ; 0:40c0e82000000000 1:0000000000000000 2:7fe1ccf385ebc8a0 3:800000000000073a +series __name__=a,job=j1 ; 0:c0738c0000000000 1:bfde000000000000 2:c086160000000000 3:c1227e6000000000 4:400cee147ae147ae +result host=h1,job=j2,zone=z2 ; 0:4341c37937e08000 2:4341c37937e6c384 3:4341c37937e08000 4:4341c37937e07fdc +result host=h1,zone=z1 ; 0:4341c37937e06f18 1:4341c37937e08000 2:ffe1ccf385ebc8a0 3:4341c37937e08000 +result job=j1 ; 0:4341c37937e0809c 1:4341c37937e08000 2:4341c37937e08161 3:4341c37937e51f98 4:4341c37937e07ffe +end +case arith - right 8000000000000001 +expr a - (-5e-324) +grid -3724266498815 15000 3 +series __name__=a,host=h1,zone=z1 ; 0:c12d4eee00000000 1:c02479999999999a +result host=h1,zone=z1 ; 0:c12d4eee00000000 1:c02479999999999a +end +case arith * left 4057fd999999999a +expr 95.9625 * a +grid -896122957575 1000 6 +series __name__=a,job=j1,zone=z1 ; 0:000006bfb7a6ec08 1:3ff2428f5c28f5c3 2:bfea800000000000 4:7ff0000000000000 5:0000000000000000 +series __name__=a,job=j2,zone=z1 ; 2:4022000000000000 3:c0a8678000000000 4:bfd399999999999a 5:c058fb3333333334 +result job=j1,zone=z1 ; 0:000287a41482408d 1:405b6119db22d0e6 2:c053de0333333334 4:7ff0000000000000 5:0000000000000000 +result job=j2,zone=z1 ; 2:408afd4ccccccccd 3:c1124bcb70000000 4:c03d6375c28f5c2a 5:c0c2ba86c28f5c2a +end +case arith * right 4020fa3d70a3d70a +expr a * 8.48875 +grid -3427129131841 1000 5 +series __name__=a,job=j2 ; 0:40888d0000000000 2:4072280000000000 3:c120961800000000 4:4000000000000000 +result job=j2 ; 0:40ba0cf966666666 2:40a343f6b851eb85 3:c1519980e8000000 4:4030fa3d70a3d70a +end +case arith * left 7ddac04658426b78 +expr 1.7495120467380662e+298 * a +grid 2917295243343 1 8 +series __name__=a,host=h1 ; 0:fafdec551a602ab0 4:404bc00000000000 5:7e772c7a29d95e5c 6:00000002ce8e1012 +series __name__=a,job=j2 ; 0:4024000000000000 1:fb505be6166cd600 3:41157a0c00000000 4:c0514ccccccccccd 6:4020000000000000 7:4000000000000000 +result host=h1 ; 0:fff0000000000000 4:7e3732bd00899932 5:7ff0000000000000 6:3cd2c587681d4a2e +result job=j2 ; 0:7e10b82bf729832b 1:fff0000000000000 3:7f01f4353e3674d9 4:fe3cecb275d49dcd 6:7e0ac04658426b78 7:7deac04658426b78 +end +case arith * right 7fefffffffffffff +expr a * 1.7976931348623157e+308 +grid 506007906727 60000 10 +series __name__=a,host=h2,zone=z2 ; 0:80484891dec6395e 1:0000000000000001 3:40c278c000000000 4:c018000000000000 5:c0aa6d0000000000 6:412d220200000000 7:fa4284ebb4363b30 8:c07d020000000000 9:c026133333333334 +series __name__=a,host=h1,zone=z1 ; 0:c12584ca00000000 1:7fefffffffffffff 2:402faccccccccccd 3:3fe8072b020c49bb 4:0000000000000228 5:3fe0926e978d4fdf 6:00000000000129e8 7:bfe6f1a9fbe76c8b 8:00000009f051a7a1 +result host=h1,zone=z1 ; 0:fff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:7fe8072b020c49ba 4:3d613fffffffffff 5:7fe0926e978d4fde 6:3dd29e7fffffffff 7:ffe6f1a9fbe76c8a 8:3f03e0a34f41ffff +result host=h2,zone=z2 ; 0:c0484891dec6395d 1:3ccfffffffffffff 3:7ff0000000000000 4:fff0000000000000 5:fff0000000000000 6:7ff0000000000000 7:fff0000000000000 8:fff0000000000000 9:fff0000000000000 +end +case arith * left 4341c37937e08000 +expr 1e+16 * a +grid 1695867145327 60000 7 +series __name__=a,host=h1,zone=z2 ; 0:4070520000000000 1:7ff0000000000000 2:c04aa00000000000 3:4089930000000000 5:c01c000000000000 6:bff0000000000000 +result host=h1,zone=z2 ; 0:43c21e83051ede90 1:7ff0000000000000 2:c39d8f47b6fb9500 3:43dc64a151002698 5:c36f161421c8e000 6:c341c37937e08000 +end +case arith * right c0dc80e000000000 +expr a * (-29187.5) +grid -2574439794580 60000 4 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c018000000000000 1:c0c0162000000000 2:40d1238000000000 +series __name__=a,zone=z1 ; 1:c0c7cdc000000000 2:0000000000000001 +result host=h2,job=j1,zone=z1 ; 0:410560a800000000 1:41aca84a35c00000 2:c1be882bf1000000 +result zone=z1 ; 1:41b533e5a0400000 2:8000000000007204 +end +case arith * left fbeb338cd7855440 +expr (-8.283933469029303e+288) * a +grid -149375805480 1 6 +series __name__=a,job=j2,zone=z2 ; 0:4066c00000000000 1:40b2ad4000000000 2:401c000000000000 4:bfe0000000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c008000000000000 1:7fefffffffffffff 2:c0576e6666666667 4:c040f4cccccccccd 5:8000000000000088 +series __name__=a ; 2:c118fa8800000000 3:0000000000000008 4:c12bc46600000000 5:3fdabe76c8b43958 +result - ; 2:7d153b9ff90e54c9 3:b8fb338cd7855440 4:7d279a7148d17eb3 5:fbd6bbc97c0eb9ce +result host=h2,job=j1,zone=z2 ; 0:7c0466a9a1a3ff30 1:fff0000000000000 2:7c53eae57a68fa24 4:7c3cd3bb28cd3296 5:393ce6c5a4fda984 +result job=j2,zone=z2 ; 0:fc6356a62138c9e6 1:fcafc088a383ae7c 2:fc17cd1b3c94a9b8 4:7bdb338cd7855440 +end +case arith * right 00000000459822d4 +expr a * 5.76870204e-315 +grid 2433118213566 60000 7 +series __name__=a,host=h2 ; 0:4086590000000000 1:4000000000000000 2:c0b0c0c000000000 3:c02013d70a3d70a4 4:80000000000eb05c 6:000000011287b974 +result host=h2 ; 0:000000c2689c4a76 1:000000008b3045a8 2:8000048de879791f 3:800000022f7376b2 4:8000000000000000 6:0000000000000000 +end +case arith * left c341c37937e08000 +expr (-1e+16) * a +grid -1861818650227 15000 10 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:7ff0000000000000 1:bfe0000000000000 2:3fc2b020c49ba5e3 4:0000000000000001 6:c0f1396000000000 7:4000000000000000 8:40578e6666666667 9:bfb08b4395810625 +series __name__=a,job=j1,zone=z1 ; 0:fff0000000000000 1:c03389999999999a 2:3fdc666666666667 3:0000006fe24a6304 5:7c3bd5ef74c1e8b4 6:40f20ea800000000 7:c09bbc0000000000 8:0000000000000000 9:405660cccccccccd +result host=h1,job=j2,zone=z2 ; 0:fff0000000000000 1:4331c37937e08000 2:c314bf72f57d0000 4:8021c37937e08000 6:44431f63c00ce70b 7:c351c37937e08000 8:c3aa2716c3f73941 9:43025e166d7d2000 +result job=j1,zone=z1 ; 0:7ff0000000000000 1:4385b0e43807ef80 2:c32f87c3f661b001 3:828f0dd52676531a 5:ff8ee760a585de67 6:c4440c2ded663f25 7:43eeca955e9b65e0 8:8000000000000000 9:c3a8d83ee3cd24a0 +end +case arith * right 4008000000000000 +expr a * 3 +grid -3658804085202 60000 7 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:8000000000000001 1:c010000000000000 2:c0b9b18000000000 4:7ff0000000000000 5:ffefffffffffffff +result host=h2,job=j1,zone=z2 ; 0:8000000000000003 1:c028000000000000 2:c0d3452000000000 4:7ff0000000000000 5:fff0000000000000 +end +case arith / left 80000006814fe58a +expr (-1.38038486674e-313) / a +grid -2301444780028 1 3 +series __name__=a,job=j1,zone=z1 ; 0:c0efcfc000000000 1:3fcea3d70a3d70a4 2:0000000000000001 +result job=j1,zone=z1 ; 0:0000000000068b2e 1:8000001b2cead8fa 2:c21a053f96280000 +end +case arith / right 4000000000000000 +expr a / 2 +grid 1306413140707 1 8 +series __name__=a,host=h1 ; 0:c01c000000000000 1:40141851eb851eb8 2:bff0000000000000 3:7c39408e8cde97d0 4:4000000000000000 5:0000000000000001 6:4047c80000000000 7:fff0000000000000 +series __name__=a,host=h1,zone=z2 ; 0:4022833333333333 1:400163d70a3d70a4 3:bfe324dd2f1a9fbf 4:40eb51c000000000 6:c057a73333333334 7:c113766c00000000 +result host=h1 ; 0:c00c000000000000 1:40041851eb851eb8 2:bfe0000000000000 3:7c29408e8cde97d0 4:3ff0000000000000 5:0000000000000000 6:4037c80000000000 7:fff0000000000000 +result host=h1,zone=z2 ; 0:4012833333333333 1:3ff163d70a3d70a4 3:bfd324dd2f1a9fbf 4:40db51c000000000 6:c047a73333333334 7:c103766c00000000 +end +case arith / left bfe0000000000000 +expr (-0.5) / a +grid 2734779207333 15000 4 +series __name__=a,host=h2,job=j1 ; 0:0000000056881f39 1:0001208725f7e1e0 2:404e0e6666666667 3:c0bef78000000000 +series __name__=a,job=j2,zone=z2 ; 0:7ce42d761348e9e2 1:7de532f5ae41a200 2:bff0000000000000 3:000000000ad78ed6 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:4086450000000000 2:c048d33333333334 3:4096da0000000000 +result host=h2,job=j1 ; 0:fff0000000000000 1:fff0000000000000 2:bf8108e3d6e75a56 3:3f1088a999dbbc40 +result host=h2,job=j2,zone=z2 ; 1:bf46fdb5ba65eed9 2:3f849fd6c0527f5a 3:bf3667cce33499b0 +result job=j2,zone=z2 ; 0:82e95febf8432788 1:81e826ea4fe1ab4b 2:3fe0000000000000 3:fff0000000000000 +end +case arith / right 4008000000000000 +expr a / 3 +grid 685991953615 15000 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c03fd66666666667 1:c0503f3333333333 2:4109f48800000000 3:c0298ccccccccccd 5:fdb57bcf172a3914 6:4008000000000000 7:ffefffffffffffff 8:40e4f41000000000 +series __name__=a,host=h1 ; 0:8000000000000001 1:7e346a8a08039986 3:c341c37937e08000 4:80000005fb3bee54 5:4055dd999999999a 6:4046f1999999999a 7:0000000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:40e142c000000000 1:8000000000000001 2:ffefffffffffffff 4:c022566666666667 6:bfe0000000000000 7:000fffffffffffff 8:fe9d0a3da20d4d86 +result host=h1 ; 0:8000000000000000 1:7e1b38b80aaf775d 3:c327af4c4a80aaab 4:80000001fe694f71 5:403d277777777778 6:402e977777777778 7:0000000000000000 +result host=h1,job=j1,zone=z2 ; 0:40c703aaaaaaaaab 1:8000000000000000 2:ffd5555555555555 4:c008733333333334 6:bfc5555555555555 7:0005555555555555 8:fe835c2916b38904 +result host=h2,job=j1,zone=z1 ; 0:c02539999999999a 1:c035a99999999999 2:40f14db000000000 3:c011088888888889 5:fd9ca5141ee2f6c5 6:3ff0000000000000 7:ffd5555555555555 8:40cbf01555555555 +end +case arith / left 000fffffffffffff +expr 2.225073858507201e-308 / a +grid 1899248260081 1000 10 +series __name__=a,zone=z2 ; 0:fe4e5cd85609fe48 1:40aebb8000000000 2:40968a0000000000 3:4085120000000000 4:40f2c7d000000000 5:4000000000000000 6:c062b40000000000 8:c0c2a0c000000000 9:40c0dba000000000 +result zone=z2 ; 0:8000000000000000 1:0000010a8f12db37 2:000002d6ea6ffbbe 3:000006132c84823b 4:0000000da192dd43 5:0008000000000000 6:80001b6006d801b6 8:8000006df14399a0 9:000000797c6a3616 +end +case arith / right 8000000000000001 +expr a / (-5e-324) +grid 3232450190716 1 3 +series __name__=a,job=j1,zone=z1 ; 0:8000000000000000 1:bfe9851eb851eb85 2:3fa8f5c28f5c28f6 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:40a9640000000000 1:7f025fa11fcceec4 2:3fecd916872b020c +series __name__=a,zone=z1 ; 1:ffefffffffffffff 2:fe11a81f098d7d8e +result host=h1,job=j2,zone=z2 ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 +result job=j1,zone=z1 ; 0:0000000000000000 1:7ff0000000000000 2:fff0000000000000 +result zone=z1 ; 1:7ff0000000000000 2:7ff0000000000000 +end +case arith / left 8000000000000001 +expr (-5e-324) / a +grid -1142381444732 1000 8 +series __name__=a,host=h2,job=j2 ; 0:40c35c4000000000 2:4341c37937e08000 5:febd6790bc4e17be 6:c0bae28000000000 7:c004f0a3d70a3d71 +result host=h2,job=j2 ; 0:8000000000000000 2:8000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 +end +case arith / right c01c000000000000 +expr a / (-7) +grid 2175575551685 60000 5 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c0f38fd000000000 1:3ff0000000000000 2:c022000000000000 3:c0f6bea800000000 +result host=h1,job=j1,zone=z2 ; 0:40c65b36db6db6db 1:bfc2492492492492 2:3ff4924924924925 3:40c9fe76db6db6db +end +case arith / left 0000000000000000 +expr 0 / a +grid 3822231812048 60000 7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:fa0d66695ddb2eb0 1:c0b3d94000000000 2:c043100000000000 4:3ff0000000000000 5:407f900000000000 6:f86282989260c686 +series __name__=a ; 1:7e0059d4f8817444 3:4341c37937e08000 5:4018000000000000 6:8000000019037a9d +result - ; 1:0000000000000000 3:0000000000000000 5:0000000000000000 6:8000000000000000 +result host=h1,job=j2,zone=z1 ; 0:8000000000000000 1:8000000000000000 2:8000000000000000 4:0000000000000000 5:0000000000000000 6:8000000000000000 +end +case arith / right c024000000000000 +expr a / (-10) +grid -1875946368809 1000 8 +series __name__=a,zone=z2 ; 0:411d01c800000000 1:3fd27ced916872b0 2:7ff0000000000000 3:c01af33333333333 5:c087400000000000 6:7d2ab6b1df83550c 7:4052866666666667 +result zone=z2 ; 0:c0e734a000000000 1:bf9d94af4f0d844d 2:fff0000000000000 3:3fe58f5c28f5c28f 5:405299999999999a 6:fcf55ef4b2cf773d 7:c01da3d70a3d70a5 +end +case arith % left 0000000000000001 +expr 5e-324 % a +grid 1480186127358 15000 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:3fdfcccccccccccd 2:bfe0000000000000 4:bfe384189374bc6b 5:fed87315bb63da30 6:c01c000000000000 7:c008000000000000 +result host=h2,job=j1,zone=z1 ; 0:0000000000000001 2:0000000000000001 4:0000000000000001 5:0000000000000001 6:0000000000000001 7:0000000000000001 +end +case arith % right 4018000000000000 +expr a % 6 +grid -2614508317800 60000 4 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:412746fc00000000 1:8000000000000000 2:40ad6a0000000000 +result host=h1,job=j1,zone=z1 ; 0:0000000000000000 1:8000000000000000 2:4008000000000000 +end +case arith % left 0000000000000000 +expr 0 % a +grid -3203294071585 15000 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:7f4a9b438d3fa2c8 1:3f93b645a1cac083 2:40f5455000000000 3:8000001de0ba7176 7:c03f29999999999a 8:0000000000000000 +result host=h2,job=j1,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 7:0000000000000000 8:7ff8000000000001 +end +case arith % right 000fffffffffffff +expr a % 2.225073858507201e-308 +grid -1304863200438 1 5 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:bfda0c49ba5e3540 1:c0980b0000000000 2:0000000000000128 3:c0b9b68000000000 4:bfcd47ae147ae148 +series __name__=a,host=h1 ; 1:3ffbb33333333333 2:8000000000006d34 3:fca7fedda17dfe5a +result host=h1 ; 1:000cccd2eccccccc 2:8000000000006d34 3:800b42fbfcb6ffdb +result host=h2,job=j1,zone=z1 ; 0:800e3541a0c49ba5 1:8000180b00000000 2:0000000000000128 3:800066da00000000 4:800d70a4ea3d70a3 +end +case arith % left 7ff0000000000000 +expr Inf % a +grid -1191361927313 60000 8 +series __name__=a,host=h2,job=j1 ; 0:3fea19999999999a 1:bfe448b439581062 2:c0b0c70000000000 3:79410849e8a20990 4:c12e50be00000000 5:7fefffffffffffff 6:c0544f3333333334 7:bfefd1eb851eb852 +series __name__=a ; 0:c0cd7e0000000000 1:3fe252f1a9fbe76d 5:400bee147ae147ae 7:7bc0cf857357dca0 +series __name__=a,job=j1 ; 2:800000dd9d63aeff 3:c0d7cdc000000000 4:7fe1ccf385ebc8a0 5:7ac304015ed116ae 6:800000adeffca4e5 7:7a5abcd10d6024c0 +result - ; 0:7ff8000000000001 1:7ff8000000000001 5:7ff8000000000001 7:7ff8000000000001 +result host=h2,job=j1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 +result job=j1 ; 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 +end +case arith % right c008000000000000 +expr a % (-3) +grid 64761024066 1 5 +series __name__=a,zone=z2 ; 0:c0bb580000000000 1:c070540000000000 3:c03beccccccccccd 4:0048895fd4f1f574 +result zone=z2 ; 0:bff0000000000000 1:bfd0000000000000 3:bfed9999999999a0 4:0048895fd4f1f574 +end +case arith % left 80000033047185f3 +expr (-1.08258617302e-312) % a +grid 961381607742 15000 10 +series __name__=a,job=j2,zone=z1 ; 0:40b6e68000000000 3:fcd463c302b27a8e 5:40506c0000000000 6:40bfc48000000000 7:fcc161253359f7e4 8:8000000000000001 9:0000000000000004 +result job=j2,zone=z1 ; 0:80000033047185f3 3:80000033047185f3 5:80000033047185f3 6:80000033047185f3 7:80000033047185f3 8:8000000000000000 9:8000000000000003 +end +case arith % right 3fe0000000000000 +expr a % 0.5 +grid -1401129565401 1 5 +series __name__=a,host=h1 ; 0:0000000000000001 1:c018000000000000 3:8000000000005090 4:bfe8ab020c49ba5e +result host=h1 ; 0:0000000000000001 1:8000000000000000 3:8000000000005090 4:bfd15604189374bc +end +case arith % left 40e5e4b000000000 +expr 44837.5 % a +grid 1428356935062 15000 4 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:406dd00000000000 1:40d09a0000000000 3:c03f600000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0c3240000000000 1:c07ade0000000000 2:7af3a4d649ae69d0 3:00059e0e396a7222 +series __name__=a,zone=z1 ; 1:00000000000f0758 3:0000000fd1556342 +result host=h1,job=j1,zone=z1 ; 0:40b6058000000000 1:4060500000000000 2:40e5e4b000000000 3:000062a909c8e7a6 +result host=h1,job=j2,zone=z2 ; 0:406dc00000000000 1:40c52ac000000000 3:4005000000000000 +result zone=z1 ; 1:00000000000d4d50 3:0000000e7e76575e +end +case arith % right c01c000000000000 +expr a % (-7) +grid -573646317350 60000 7 +series __name__=a,job=j1,zone=z1 ; 0:c07f440000000000 1:c01e5c28f5c28f5c 2:000000004184637d 3:7b7c31c6a999d110 4:0000000000000000 5:c0a6940000000000 6:000000000016cb4f +series __name__=a,host=h2 ; 0:bfee4ccccccccccd 2:40bd844000000000 4:7fefffffffffffff 5:4008000000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:000fffffffffffff 3:406c980000000000 5:bfe0000000000000 6:0000000000fe87ae +result host=h1,job=j1,zone=z1 ; 1:000fffffffffffff 3:4013000000000000 5:bfe0000000000000 6:0000000000fe87ae +result host=h2 ; 0:bfee4ccccccccccd 2:400a000000000000 4:4014000000000000 5:4008000000000000 +result job=j1,zone=z1 ; 0:c00a000000000000 1:bfe2e147ae147ae0 2:000000004184637d 3:4014000000000000 4:0000000000000000 5:c018000000000000 6:000000000016cb4f +end +case arith ^ left 4056980000000000 +expr 90.375 ^ a +grid -2915530137497 1 7 +series __name__=a,host=h1,zone=z2 ; 0:fef3a2031bf60f38 1:800000054afc81c8 2:4058fccccccccccd 4:0000000000000026 6:0000000000000314 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:4127f1e200000000 1:40effb8000000000 2:3ffd70a3d70a3d71 3:80000000013a44c9 4:40f7130800000000 6:3ff0000000000000 +series __name__=a,host=h1,job=j2 ; 0:412047f800000000 3:7f40c309ecce906e 4:40b3a60000000000 6:3feade353f7ced92 +result host=h1,job=j2 ; 0:7ff0000000000000 3:7ff0000000000000 4:7ff0000000000000 6:4045f1ae32701c4a +result host=h1,zone=z2 ; 0:0000000000000000 1:3ff0000000000000 2:6886035b33da5458 4:3ff0000000000000 6:3ff0000000000000 +result host=h2,job=j2,zone=z1 ; 0:7ff0000000000000 1:7ff0000000000000 2:40af0a305d9d97be 3:3ff0000000000000 4:7ff0000000000000 6:4056980000000000 +end +case arith ^ right 8000000000000000 +expr a ^ (-0) +grid 3291231385275 60000 6 +series __name__=a,job=j1,zone=z1 ; 0:c341c37937e08000 2:bfc220c49ba5e354 4:c001947ae147ae15 +series __name__=a,host=h1,job=j2,zone=z1 ; 2:fff0000000000000 3:7c40372ecc9c5d9e 4:000fffffffffffff 5:c0235f5c28f5c28f +result host=h1,job=j2,zone=z1 ; 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +result job=j1,zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 +end +case arith ^ left 4000000000000000 +expr 2 ^ a +grid 2197106461746 60000 6 +series __name__=a,host=h1 ; 0:0000000000000335 2:c07fd60000000000 3:40188ccccccccccd 4:4008000000000000 5:4068600000000000 +result host=h1 ; 0:3ff0000000000000 2:2018ace5422aa0db 3:40519996c8637c1f 4:4020000000000000 5:4c20000000000000 +end +case arith ^ right bfe471a9fbe76c8b +expr a ^ (-0.638875) +grid 705637717291 1 10 +series __name__=a,host=h2,job=j2,zone=z1 ; 1:c0e5a31000000000 2:000000000045b780 4:4083080000000000 5:7fe1ccf385ebc8a0 6:fcdb74c2a8e71d00 8:402a39999999999a 9:bff5570a3d70a3d7 +series __name__=a,host=h1,job=j2 ; 1:bfeb53f7ced91687 2:4020f47ae147ae15 3:4056366666666667 4:4000000000000000 5:c05371999999999a 6:3ff0000000000000 7:ffe1ccf385ebc8a0 9:c0ed970000000000 +result host=h1,job=j2 ; 1:7ff8000000000001 2:3fd055e4715ffda6 3:3fad20f3fbc482ea 4:3fe48d036bf35f34 5:7ff8000000000001 6:3ff0000000000000 7:7ff8000000000001 9:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 1:7ff8000000000001 2:6a95ca9ccaa8a2bb 4:3f91084fd40d9ce3 5:171425f327032865 6:7ff8000000000001 8:3fc8b9c7a8e8fd91 9:7ff8000000000001 +end +case arith ^ left 3fed7df3b645a1cb +expr 0.921625 ^ a +grid -569147292256 60000 5 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:4000000000000000 1:8000000000001607 2:0000000000000000 3:406bf00000000000 4:800000339748b6b5 +result host=h1,job=j1,zone=z1 ; 0:3feb2e39799e5190 1:3ff0000000000000 2:3ff0000000000000 3:3e49b13eb46a2a3c 4:3ff0000000000000 +end +case arith ^ right 7fefffffffffffff +expr a ^ 1.7976931348623157e+308 +grid -1474909743297 1000 5 +series __name__=a,job=j1,zone=z2 ; 0:4017cccccccccccd 1:40ea356000000000 2:c0da5e0000000000 4:8000000000000000 +result job=j1,zone=z2 ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 4:0000000000000000 +end +case arith ^ left fff0000000000000 +expr (-Inf) ^ a +grid 3587732829006 60000 6 +series __name__=a,job=j2,zone=z1 ; 0:c010000000000000 2:4341c37937e08000 3:000000003f4a86ad 4:f89da1762d0afbcc 5:bfdd0a3d70a3d70a +series __name__=a,host=h2,zone=z2 ; 1:c00bf851eb851eb8 2:3fdf22d0e5604189 3:c055ce6666666667 4:7e3e479292383920 5:000000091b34cc71 +result host=h2,zone=z2 ; 1:0000000000000000 2:7ff0000000000000 3:0000000000000000 4:7ff0000000000000 5:7ff0000000000000 +result job=j2,zone=z1 ; 0:0000000000000000 2:7ff0000000000000 3:7ff0000000000000 4:0000000000000000 5:0000000000000000 +end +case arith ^ right bfc2f9db22d0e560 +expr a ^ (-0.14825) +grid 2096912374760 1000 8 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:7b6b387602ea1030 2:3ff0000000000000 3:800000000000001d 4:401d67ae147ae148 5:4006ab851eb851ec 6:c0d27e6000000000 7:40778a0000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:bfe9c28f5c28f5c3 3:c020200000000000 4:c117b07400000000 5:000182a6d241f62a 7:fff0000000000000 +series __name__=a,host=h2,zone=z1 ; 1:41229e9a00000000 2:c341c37937e08000 3:000000072cf5e799 4:0000000000000049 5:4021f1eb851eb852 6:4008000000000000 7:c0b6f30000000000 +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 5:4968f0f084193c7c 7:0000000000000000 +result host=h1,job=j2,zone=z2 ; 0:371dde9326f8797b 2:3ff0000000000000 3:7ff8000000000001 4:3fe7ceb1a1edd592 5:3feb6bd796e46a6f 6:7ff8000000000001 7:3fda9082426ba678 +result host=h2,zone=z1 ; 1:3fc1c3623616de17 2:7ff8000000000001 3:496946e3f4215493 4:496946e5a25b5e33 5:3fe71d421b2b1d87 6:3feb30c2cbe6e41f 7:7ff8000000000001 +end +case arith ^ left ffefffffffffffff +expr (-1.7976931348623157e+308) ^ a +grid -2994626526150 15000 3 +series __name__=a,host=h2,job=j1,zone=z1 ; 1:4056973333333334 2:3fe079db22d0e560 +result host=h2,job=j1,zone=z1 ; 1:7ff8000000000001 2:7ff8000000000001 +end +case arith ^ right ffe1ccf385ebc8a0 +expr a ^ (-1e+308) +grid 2176473418367 60000 7 +series __name__=a,host=h1,job=j2 ; 0:0000000000006c60 2:0000000000000001 3:4000000000000000 4:401f39999999999a 5:fce4c27acd6c2e40 6:7ff8000000000001 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:000000f9a7156c35 3:4079d80000000000 4:40549a6666666667 5:c022000000000000 6:80000091300dbc79 +result host=h1,job=j2 ; 0:7ff0000000000000 2:7ff0000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 0:7ff0000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:7ff0000000000000 +end +case arith atan2 left c01c000000000000 +expr (-7) atan2 a +grid 981126918517 60000 3 +series __name__=a,host=h1,zone=z1 ; 0:4090cc0000000000 1:fe608fcfd0fd297a 2:bfc1f7ced916872b +result host=h1,zone=z1 ; 0:bf7aabd71a1c8fc4 1:c00921fb54442d18 2:bff9741c346f8ca4 +end +case arith atan2 right bff0000000000000 +expr a atan2 (-1) +grid -1737819209191 60000 5 +series __name__=a,host=h2,zone=z1 ; 0:c0f4edd000000000 1:0000000000000000 2:c0883a0000000000 4:40e9a28000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:7d415368d3240958 2:408d330000000000 3:788d7802f3166892 4:c0b5c70000000000 +series __name__=a,host=h1,zone=z2 ; 0:0000000000000057 1:3fd7f9db22d0e560 2:c076da0000000000 +result host=h1,job=j1,zone=z1 ; 0:3ff921fb54442d18 2:3ff9265d8cf0602a 3:3ff921fb54442d18 4:bff922b76a1f9584 +result host=h1,zone=z2 ; 0:400921fb54442d18 1:400643e48fd85f7d 2:bff92d2f38e120e4 +result host=h2,zone=z1 ; 0:bff922078f9f338a 1:400921fb54442d18 2:bff92743e4b57ae6 4:3ff9220f4d52970b +end +case arith atan2 left 4000000000000000 +expr 2 atan2 a +grid 3345939558974 15000 5 +series __name__=a,host=h1 ; 0:403d466666666667 2:c08dc80000000000 3:0000000000007fcc 4:407af40000000000 +series __name__=a,job=j2,zone=z2 ; 0:79c914c77f732774 1:c010000000000000 2:406e740000000000 3:bfe7fdf3b645a1cb 4:40f0ee6000000000 +series __name__=a,host=h2 ; 1:c0f64e2800000000 3:c0abc10000000000 +result host=h1 ; 0:3fb176523679dd24 2:40091daf0a8a0ac1 3:3ff921fb54442d18 4:3f72feed21b45c66 +result host=h2 ; 1:400921efda215824 3:400920d429dda872 +result job=j2,zone=z2 ; 0:062469e9a66d04e1 1:40056c6e7397f5ae 2:3f80cff5f5c11284 3:3ffedf0eb9f25cb1 4:3efe3d7833111534 +end +case arith atan2 right c0b48d4000000000 +expr a atan2 (-5261.25) +grid -78124591501 15000 8 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:000005ac270469a3 1:bfe0000000000000 2:c08cda0000000000 4:3ff0000000000000 6:800000008854926d +result host=h1,job=j1,zone=z2 ; 0:400921fb54442d18 1:c00921c980f55933 2:c007be37fab678d8 4:40092197ada69468 6:c00921fb54442d18 +end +case arith atan2 left 7fe1ccf385ebc8a0 +expr 1e+308 atan2 a +grid -2217766543210 15000 7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:00000000000003aa 1:c08af70000000000 2:3fc7851eb851eb85 3:4022000000000000 4:8000000000000001 5:4018000000000000 6:c017933333333333 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:c0ebf44000000000 1:3fc6147ae147ae15 2:0000001146c3ca7d 3:40e4325000000000 4:8000000000017379 5:c11d03bc00000000 6:800001309d43b315 +result host=h1,job=j2,zone=z1 ; 0:3ff921fb54442d18 1:3ff921fb54442d18 2:3ff921fb54442d18 3:3ff921fb54442d18 4:3ff921fb54442d18 5:3ff921fb54442d18 6:3ff921fb54442d18 +result host=h2,job=j1,zone=z2 ; 0:3ff921fb54442d18 1:3ff921fb54442d18 2:3ff921fb54442d18 3:3ff921fb54442d18 4:3ff921fb54442d18 5:3ff921fb54442d18 6:3ff921fb54442d18 +end +case arith atan2 right 3ff0000000000000 +expr a atan2 1 +grid 3688777031583 15000 4 +series __name__=a,host=h1 ; 1:40aaa40000000000 2:c072700000000000 3:c05624cccccccccd +result host=h1 ; 1:3ff920c7d43188fa 2:bff91418d90daa8b 3:bff8f3bd8c543ac9 +end +case arith atan2 left 7ff0000000000000 +expr Inf atan2 a +grid -472677656420 15000 7 +series __name__=a,zone=z2 ; 0:c019347ae147ae15 1:0000000000002b50 3:80000491641102e4 4:bf953f7ced916873 5:c064700000000000 +series __name__=a,host=h1,zone=z1 ; 0:bff0000000000000 3:7db442eb8ebeb764 4:4000000000000000 5:0000000000000001 +series __name__=a,zone=z1 ; 1:7fcb7e1d0b0ee8ac 4:ffe1ccf385ebc8a0 5:fff0000000000000 6:40f7589000000000 +result host=h1,zone=z1 ; 0:3ff921fb54442d18 3:3ff921fb54442d18 4:3ff921fb54442d18 5:3ff921fb54442d18 +result zone=z1 ; 1:3ff921fb54442d18 4:3ff921fb54442d18 5:4002d97c7f3321d2 6:3ff921fb54442d18 +result zone=z2 ; 0:3ff921fb54442d18 1:3ff921fb54442d18 3:3ff921fb54442d18 4:3ff921fb54442d18 5:3ff921fb54442d18 +end +case arith atan2 right 4008000000000000 +expr a atan2 3 +grid 3300527457826 1 4 +series __name__=a,job=j2,zone=z2 ; 0:3feb4bc6a7ef9db2 3:c0b9488000000000 +result job=j2,zone=z2 ; 0:3fd1babc6e0c087c 3:bff920155098cde1 +end +case arith atan2 left c341c37937e08000 +expr (-1e+16) atan2 a +grid 1082972137775 1 4 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:40f684d800000000 1:4024000000000000 3:0000000000000000 +series __name__=a,host=h2,zone=z2 ; 0:bfebac083126e979 1:7fefffffffffffff 2:41206c1a00000000 +result host=h2,job=j2,zone=z2 ; 0:bff921fb54438ad4 1:bff921fb54442d13 3:bff921fb54442d18 +result host=h2,zone=z2 ; 0:bff921fb54442d18 1:8341c37937e08001 2:bff921fb54407a6a +end +case arith atan2 right 3fecd1eb851eb852 +expr a atan2 0.900625 +grid -3256216596239 60000 10 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:7cd67917a9bc5e10 1:40f130c800000000 2:c124ed6c00000000 3:800000729aae8188 7:411f4fa000000000 8:c01d1c28f5c28f5c 9:4019000000000000 +series __name__=a,host=h1,job=j2 ; 0:4008000000000000 2:7ff0000000000000 3:4086e00000000000 4:c341c37937e08000 6:4046c66666666667 8:0000000000000000 +result host=h1,job=j1,zone=z1 ; 0:3ff921fb54442d18 1:3ff921edeaca1ffb 2:bff921f9f3b7edbb 3:8000007f3fe9bbb4 7:3ff921f97cfff7d5 8:bff729a58a8c5b4a 9:3ff6d7c88a5d6cdd +result host=h1,job=j2 ; 0:3ff4776453352e89 2:3ff921fb54442d18 3:3ff91cf133a48074 4:bff921fb54442d18 6:3ff8d10158a0981e 8:0000000000000000 +end +case cmp == filter left 7ff8000000000001 +expr NaN == a +grid -72884376899 60000 5 +series __name__=a,job=j1,zone=z2 ; 1:4065380000000000 2:7ff8000000000001 3:7ff8000000000001 4:fd9e2a90b6880d38 +end +case cmp == filter right 7ff8000000000001 +expr a == NaN +grid 3232992661696 60000 5 +series __name__=a,host=h2,job=j1 ; 0:7ff8000000000001 1:7ff8000000000001 2:c000000000000000 3:7fe1ccf385ebc8a0 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0555c0000000000 2:412de45800000000 3:00526133c4abdf3e 4:4341c37937e08000 +series __name__=a,job=j2 ; 0:0000000000000001 1:7ff8000000000001 3:7ff8000000000001 +end +case cmp == bool left 8000000000000000 +expr (-0) == bool a +grid -2464606814040 15000 9 +series __name__=a,job=j2,zone=z2 ; 0:8000000000000000 1:3ff0000000000000 2:8000000000000001 3:401c000000000000 5:80000000dfbf8840 7:8000000000000000 8:c0bf158000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:8000000000000000 2:4000000000000000 3:fb2957a51a08b668 5:fff0000000000000 8:c05301999999999a +series __name__=a,host=h2,job=j2,zone=z2 ; 2:8000000000000000 7:ffefffffffffffff 8:c01c000000000000 +result host=h1,job=j1,zone=z1 ; 1:3ff0000000000000 2:0000000000000000 3:0000000000000000 5:0000000000000000 8:0000000000000000 +result host=h2,job=j2,zone=z2 ; 2:3ff0000000000000 7:0000000000000000 8:0000000000000000 +result job=j2,zone=z2 ; 0:3ff0000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 5:0000000000000000 7:3ff0000000000000 8:0000000000000000 +end +case cmp == bool right c110347000000000 +expr a == bool (-265500) +grid -2886082046212 60000 6 +series __name__=a,host=h2,job=j1 ; 0:f950299d0281a560 1:79acfc032ce01e08 2:c000000000000000 3:c0a3a88000000000 4:3ff0000000000000 +series __name__=a,zone=z2 ; 1:c110347000000000 3:3fe9883126e978d5 4:c110347000000000 +result host=h2,job=j1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +result zone=z2 ; 1:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 +end +case cmp == filter left c0db710000000000 +expr (-28100) == a +grid 2279589543261 1 10 +series __name__=a,host=h1,job=j1,zone=z2 ; 1:c058cb3333333334 2:405d980000000000 4:4000000000000000 5:4008000000000000 6:3fe0000000000000 8:c0db710000000000 9:fc81c1a3457d3af0 +result __name__=a,host=h1,job=j1,zone=z2 ; 8:c0db710000000000 +end +case cmp == filter right c08bc40000000000 +expr a == (-888.5) +grid -3989807441346 60000 4 +series __name__=a,host=h2,zone=z2 ; 1:fff0000000000000 2:8000000000000001 +series __name__=a,zone=z2 ; 1:c08bc40000000000 2:4022000000000000 3:7d78948ca2facbb8 +result __name__=a,zone=z2 ; 1:c08bc40000000000 +end +case cmp == bool left c018000000000000 +expr (-6) == bool a +grid -2660761568607 60000 5 +series __name__=a,job=j1,zone=z2 ; 0:7b3d25d6afe2ea64 1:c018000000000000 2:c018000000000000 3:c0118ccccccccccd 4:c020000000000000 +series __name__=a,zone=z1 ; 1:ffefffffffffffff +result job=j1,zone=z2 ; 0:0000000000000000 1:3ff0000000000000 2:3ff0000000000000 3:0000000000000000 4:0000000000000000 +result zone=z1 ; 1:0000000000000000 +end +case cmp == bool right fff0000000000000 +expr a == bool (-Inf) +grid -712378894936 60000 8 +series __name__=a,host=h2,job=j1,zone=z2 ; 2:000fffffffffffff 3:c125280400000000 4:ffe1ccf385ebc8a0 6:40110e147ae147ae 7:3ff0000000000000 +result host=h2,job=j1,zone=z2 ; 2:0000000000000000 3:0000000000000000 4:0000000000000000 6:0000000000000000 7:0000000000000000 +end +case cmp != filter left 7ff8000000000001 +expr NaN != a +grid 3436586073109 60000 7 +series __name__=a,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 4:40c0d2e000000000 5:3fe0000000000000 6:7ff8000000000001 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:7ff8000000000001 4:3fe44ac083126e98 5:fc81561fdf6e6a20 6:c091940000000000 +result __name__=a,host=h1,job=j2,zone=z2 ; 1:7ff8000000000001 4:3fe44ac083126e98 5:fc81561fdf6e6a20 6:c091940000000000 +result __name__=a,host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 4:40c0d2e000000000 5:3fe0000000000000 6:7ff8000000000001 +result __name__=a,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 +end +case cmp != filter right 7ff8000000000001 +expr a != NaN +grid 144451786010 1 3 +series __name__=a,zone=z2 ; 0:c12c2af000000000 1:7ff8000000000001 2:40b8970000000000 +series __name__=a,job=j1,zone=z2 ; 0:c10ff79800000000 2:7ff8000000000001 +series __name__=a,host=h2 ; 0:4011e7ae147ae148 2:40bc160000000000 +result __name__=a,host=h2 ; 0:4011e7ae147ae148 2:40bc160000000000 +result __name__=a,job=j1,zone=z2 ; 0:c10ff79800000000 2:7ff8000000000001 +result __name__=a,zone=z2 ; 0:c12c2af000000000 1:7ff8000000000001 2:40b8970000000000 +end +case cmp != bool left c00b733333333333 +expr (-3.43125) != bool a +grid -647106300788 60000 5 +series __name__=a,zone=z1 ; 0:c00b733333333333 2:bfe927ef9db22d0e 3:c00b733333333333 4:f846d349b413d51e +result zone=z1 ; 0:0000000000000000 2:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 +end +case cmp != bool right 0000000000000000 +expr a != bool 0 +grid 1976481032031 1 9 +series __name__=a,host=h1,job=j1 ; 0:0000000000000000 5:c0f80d0800000000 7:c0ea2f2000000000 8:403cc00000000000 +series __name__=a,host=h2,zone=z2 ; 0:c085d10000000000 1:411acf4800000000 3:0000000000000000 5:7ff8000000000001 7:4088560000000000 +series __name__=a,job=j1,zone=z2 ; 0:c0b142c000000000 2:c04f500000000000 3:0000000000000000 4:0000000000000000 7:4083f60000000000 +result host=h1,job=j1 ; 0:0000000000000000 5:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +result host=h2,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 3:0000000000000000 5:3ff0000000000000 7:3ff0000000000000 +result job=j1,zone=z2 ; 0:3ff0000000000000 2:3ff0000000000000 3:0000000000000000 4:0000000000000000 7:3ff0000000000000 +end +case cmp != filter left 40b04dc000000000 +expr 4173.75 != a +grid 2057424446790 1 10 +series __name__=a,host=h2,zone=z2 ; 0:40d53d8000000000 1:4022000000000000 2:40b04dc000000000 3:c0e2abb000000000 4:bfef8f5c28f5c290 6:40813a0000000000 7:40b04dc000000000 9:0000000000000001 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:4022000000000000 1:40b04dc000000000 3:4090860000000000 5:4020000000000000 6:401a8e147ae147ae 7:0000000000000001 8:40b04dc000000000 9:40b04dc000000000 +series __name__=a,host=h2 ; 1:c0f7ee9000000000 2:c051f4cccccccccd 3:40b04dc000000000 4:40b04dc000000000 5:0000000000000020 6:40b04dc000000000 8:40ca89c000000000 +result __name__=a,host=h2 ; 1:c0f7ee9000000000 2:c051f4cccccccccd 5:0000000000000020 8:40ca89c000000000 +result __name__=a,host=h2,job=j1,zone=z1 ; 0:4022000000000000 3:4090860000000000 5:4020000000000000 6:401a8e147ae147ae 7:0000000000000001 +result __name__=a,host=h2,zone=z2 ; 0:40d53d8000000000 1:4022000000000000 3:c0e2abb000000000 4:bfef8f5c28f5c290 6:40813a0000000000 9:0000000000000001 +end +case cmp != filter right 404c0e6666666667 +expr a != 56.112500000000004 +grid 1245498701512 60000 9 +series __name__=a,job=j1,zone=z1 ; 1:c341c37937e08000 2:8000000000000000 3:4000000000000000 4:c05889999999999a 5:404c0e6666666667 6:404c0e6666666667 7:ff3fef07e196cf40 8:3fe0000000000000 +result __name__=a,job=j1,zone=z1 ; 1:c341c37937e08000 2:8000000000000000 3:4000000000000000 4:c05889999999999a 7:ff3fef07e196cf40 8:3fe0000000000000 +end +case cmp != bool left 7ff8000000000001 +expr NaN != bool a +grid 3381583017626 60000 6 +series __name__=a ; 0:bfe0000000000000 1:4000000000000000 2:7ff8000000000001 3:3fda04189374bc6b 4:0000000000000001 5:c0b2110000000000 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 +end +case cmp != bool right c01c000000000000 +expr a != bool (-7) +grid -1068164719247 1 3 +series __name__=a,job=j1,zone=z2 ; 0:c01c000000000000 2:c01c000000000000 +series __name__=a,job=j2,zone=z1 ; 0:401e747ae147ae15 1:fb63492133ff6910 2:0000000000000001 +series __name__=a,host=h2,job=j1,zone=z1 ; 1:4032400000000000 2:c0ef84c000000000 +result host=h2,job=j1,zone=z1 ; 1:3ff0000000000000 2:3ff0000000000000 +result job=j1,zone=z2 ; 0:0000000000000000 2:0000000000000000 +result job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 +end +case cmp > filter left 7ff8000000000001 +expr NaN > a +grid -1902295960945 15000 4 +series __name__=a,host=h1,zone=z1 ; 0:0000074b73240794 1:7ff8000000000001 2:bff7800000000000 3:7ff8000000000001 +series __name__=a ; 1:7ff8000000000001 2:40a04c8000000000 3:40f4476800000000 +end +case cmp > filter right 7ff8000000000001 +expr a > NaN +grid -736648286216 15000 9 +series __name__=a,zone=z1 ; 0:c0c1b34000000000 1:7baddde719099ec0 2:7ff8000000000001 3:4055700000000000 5:7ff8000000000001 6:4047900000000000 7:4088570000000000 8:7ff8000000000001 +series __name__=a,host=h2,job=j1 ; 2:c073240000000000 3:7c0db91a66537674 4:4022000000000000 5:7fe1ccf385ebc8a0 6:7ff8000000000001 7:7ff8000000000001 8:000000034bc3ad79 +end +case cmp > bool left 3fe0000000000000 +expr 0.5 > bool a +grid 2821496715859 15000 5 +series __name__=a,job=j2 ; 0:7e29a97f95a07a1e 1:3fe0000000000000 2:3ff0000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 3:c020000000000000 4:3fe0000000000000 +result host=h1,job=j1,zone=z2 ; 3:3ff0000000000000 4:0000000000000000 +result job=j2 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 +end +case cmp > bool right 00001dff13ebeb48 +expr a > bool 1.62949708095412e-310 +grid 2151944653004 15000 8 +series __name__=a,host=h2,zone=z2 ; 0:00001dff13ebeb48 1:c01c000000000000 2:40db774000000000 3:c11d5f8800000000 4:c0c072a000000000 5:7fe1ccf385ebc8a0 6:00001dff13ebeb48 +result host=h2,zone=z2 ; 0:0000000000000000 1:0000000000000000 2:3ff0000000000000 3:0000000000000000 4:0000000000000000 5:3ff0000000000000 6:0000000000000000 +end +case cmp > filter left 40e87e5000000000 +expr 50162.5 > a +grid -784102709156 60000 7 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 1:bff5fae147ae147b 2:c0be1b8000000000 3:c11ec8dc00000000 4:40e87e5000000000 +series __name__=a,host=h1,job=j1 ; 1:c341c37937e08000 2:40e87e5000000000 3:c01c000000000000 4:c0876e0000000000 5:40e87e5000000000 6:c010000000000000 +series __name__=a,host=h1,zone=z1 ; 1:40e87e5000000000 2:40e87e5000000000 3:c0f6440000000000 4:80000000000377c6 5:40e87e5000000000 6:f921b3f7f2187db4 +result __name__=a,host=h1,job=j1 ; 1:c341c37937e08000 3:c01c000000000000 4:c0876e0000000000 6:c010000000000000 +result __name__=a,host=h1,job=j2,zone=z1 ; 1:bff5fae147ae147b 2:c0be1b8000000000 3:c11ec8dc00000000 +result __name__=a,host=h1,zone=z1 ; 3:c0f6440000000000 4:80000000000377c6 6:f921b3f7f2187db4 +end +case cmp > filter right bfe0000000000000 +expr a > (-0.5) +grid -1757614931889 60000 8 +series __name__=a,host=h1,zone=z2 ; 0:c010000000000000 1:bfe0000000000000 2:40000ccccccccccd 3:bfe0000000000000 6:c0c0900000000000 7:8000000000000001 +result __name__=a,host=h1,zone=z2 ; 2:40000ccccccccccd 7:8000000000000001 +end +case cmp > bool left fff0000000000000 +expr (-Inf) > bool a +grid 488592069837 60000 5 +series __name__=a,host=h1 ; 0:fff0000000000000 1:4041d00000000000 2:fab66b29d116ada8 4:fb18346e4d95e08e +series __name__=a ; 1:fff0000000000000 2:7ee71c1e4dca28e0 3:0000000000000000 4:fff0000000000000 +result - ; 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +result host=h1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 4:0000000000000000 +end +case cmp > bool right c0f1f35000000000 +expr a > bool (-73525) +grid -2043851604303 1 8 +series __name__=a ; 0:c071600000000000 1:7ff8000000000001 4:c0f1f35000000000 6:c0a57c0000000000 7:7dc1751d2ac1e0c0 +result - ; 0:3ff0000000000000 1:0000000000000000 4:0000000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case cmp < filter left 7ff8000000000001 +expr NaN < a +grid -351207600303 1 3 +series __name__=a,job=j1,zone=z2 ; 0:40212e147ae147ae 1:4045080000000000 2:bfee1fbe76c8b43a +series __name__=a,job=j2,zone=z1 ; 0:c010000000000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:fe37aa05c7ceb10c +end +case cmp < filter right 7ff8000000000001 +expr a < NaN +grid 3748396885302 60000 3 +series __name__=a,host=h1,zone=z1 ; 0:7ff8000000000001 +series __name__=a,job=j1 ; 1:c037d33333333334 2:fce5f8408ea4ac40 +end +case cmp < bool left 8000000000000000 +expr (-0) < bool a +grid -3793135109164 60000 10 +series __name__=a ; 0:bfe9395810624dd3 1:8000000000000000 2:c01c5c28f5c28f5c 5:8000000000000000 6:c008000000000000 7:c010000000000000 8:8000000000000000 9:8000000000007cdb +series __name__=a,host=h1 ; 0:c04d64cccccccccd 1:8000000000000001 2:c01c000000000000 3:c022000000000000 4:8000000000000000 5:4020000000000000 7:c0d8da8000000000 8:c0e5bc1000000000 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 9:0000000000000000 +result host=h1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:3ff0000000000000 7:0000000000000000 8:0000000000000000 +end +case cmp < bool right 000000003875f6ad +expr a < bool 4.68006132e-315 +grid -2524070042516 1000 8 +series __name__=a,host=h2 ; 0:000000003875f6ad 1:fcd67dd142b96ba2 2:4000000000000000 3:c08cd40000000000 4:000000003875f6ad 5:000000003875f6ad 6:c02328f5c28f5c29 7:c0a82e0000000000 +result host=h2 ; 0:0000000000000000 1:3ff0000000000000 2:0000000000000000 3:3ff0000000000000 4:0000000000000000 5:0000000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case cmp < filter left bfe0000000000000 +expr (-0.5) < a +grid -217874937028 1000 7 +series __name__=a,host=h2 ; 0:7fa174803c590688 2:bfe0000000000000 3:4016666666666667 5:7b4e1079768313c4 +series __name__=a,zone=z1 ; 0:7fb20e79ff471b84 2:c08ea00000000000 3:fff0000000000000 4:8000000000000000 5:4008000000000000 +result __name__=a,host=h2 ; 0:7fa174803c590688 3:4016666666666667 5:7b4e1079768313c4 +result __name__=a,zone=z1 ; 0:7fb20e79ff471b84 4:8000000000000000 5:4008000000000000 +end +case cmp < filter right ffefffffffffffff +expr a < (-1.7976931348623157e+308) +grid 1510050331453 1 9 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:8000000000002870 3:c0bfe3c000000000 4:7fe1ccf385ebc8a0 5:ffefffffffffffff 6:ffefffffffffffff 7:c0f6d55000000000 8:ffefffffffffffff +series __name__=a,host=h2,job=j2,zone=z1 ; 0:ffefffffffffffff 2:ffefffffffffffff 3:402d6ccccccccccd 5:ffefffffffffffff 6:800034030fd2a54a 7:ffefffffffffffff 8:ffefffffffffffff +series __name__=a,host=h1,job=j1,zone=z1 ; 2:ffefffffffffffff 3:40b06d0000000000 4:789427bcebde0114 5:ffefffffffffffff 6:4022b66666666667 8:ffefffffffffffff +end +case cmp < bool left 4124b5c200000000 +expr 678625 < bool a +grid 726911887245 60000 4 +series __name__=a,job=j2 ; 1:4124b5c200000000 2:4124b5c200000000 3:bfe0000000000000 +series __name__=a,host=h1 ; 2:4113c0a400000000 3:4124b5c200000000 +series __name__=a,host=h2,zone=z1 ; 2:ffe1ccf385ebc8a0 3:4124b5c200000000 +result host=h1 ; 2:0000000000000000 3:0000000000000000 +result host=h2,zone=z1 ; 2:0000000000000000 3:0000000000000000 +result job=j2 ; 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case cmp < bool right fff0000000000000 +expr a < bool (-Inf) +grid 2349087342951 15000 6 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:fff0000000000000 1:fff0000000000000 2:fd6fe24b13ee076c 3:fff0000000000000 5:fff0000000000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:7b246c3cd56088b2 1:000000001fef6a51 3:3fead3f7ced91687 4:c341c37937e08000 5:40f26ba000000000 +result host=h1,job=j2,zone=z2 ; 0:0000000000000000 1:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 +result host=h2,job=j2,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 5:0000000000000000 +end +case cmp >= filter left 7ff8000000000001 +expr NaN >= a +grid 55557369582 1 10 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:fd82a03cbfd4cb3c 1:7ff8000000000001 2:000fffffffffffff 3:7ff8000000000001 4:000000000b6aa540 5:c128ae5c00000000 6:7ff8000000000001 8:7ff8000000000001 9:40eee0b000000000 +series __name__=a,job=j2,zone=z2 ; 0:402ef33333333334 3:7ff0000000000000 4:7ff8000000000001 5:7ff8000000000001 6:7dc4eedf673cecda 7:4037166666666667 9:c02078f5c28f5c29 +series __name__=a,job=j1,zone=z1 ; 1:7ff8000000000001 2:402288f5c28f5c29 4:c08e060000000000 5:ffe1ccf385ebc8a0 7:7ff8000000000001 +end +case cmp >= filter right 7ff8000000000001 +expr a >= NaN +grid 1060809016530 1000 4 +series __name__=a,job=j1,zone=z2 ; 0:80000086dae0f54b 2:c008000000000000 3:c022fb851eb851ec +series __name__=a ; 0:ffefffffffffffff 1:bff0000000000000 2:c0788c0000000000 +end +case cmp >= bool left 0000000000000001 +expr 5e-324 >= bool a +grid 1055532031509 1000 4 +series __name__=a,host=h1,job=j1 ; 0:0000000000000001 1:0000000000000001 2:8000000000000001 3:800000026d09e249 +result host=h1,job=j1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +end +case cmp >= bool right 40c02c0000000000 +expr a >= bool 8280 +grid -2329134184927 15000 7 +series __name__=a ; 0:40c02c0000000000 1:40c02c0000000000 4:4074ee0000000000 5:fff0000000000000 6:7a4751f6bd96e6a6 +result - ; 0:3ff0000000000000 1:3ff0000000000000 4:0000000000000000 5:0000000000000000 6:3ff0000000000000 +end +case cmp >= filter left c03bb9999999999a +expr (-27.725) >= a +grid 3378213445381 1000 6 +series __name__=a,host=h1 ; 2:40f82d1000000000 3:0000000000003495 4:c00d23d70a3d70a4 5:40b4078000000000 +end +case cmp >= filter right bfd15e353f7ced92 +expr a >= (-0.27137500000000003) +grid 1651254700203 1 10 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:bfd15e353f7ced92 1:0000000000000001 2:bfd15e353f7ced92 3:bfd15e353f7ced92 4:0000000000000001 5:c01c000000000000 6:410ddc8800000000 7:bfd15e353f7ced92 8:408aad0000000000 9:41132c3400000000 +result __name__=a,host=h1,job=j2,zone=z1 ; 0:bfd15e353f7ced92 1:0000000000000001 2:bfd15e353f7ced92 3:bfd15e353f7ced92 4:0000000000000001 6:410ddc8800000000 7:bfd15e353f7ced92 8:408aad0000000000 9:41132c3400000000 +end +case cmp >= bool left 7e16d617a7224a88 +expr 2.389579131542088e+299 >= bool a +grid -489236008246 15000 7 +series __name__=a,job=j1 ; 0:7e16d617a7224a88 1:7e16d617a7224a88 2:3fea9ba5e353f7cf 3:7fefffffffffffff 4:0000000000000001 6:0000005cf4ea9749 +series __name__=a,job=j2,zone=z1 ; 0:bfe0000000000000 1:c11c32c000000000 2:7e16d617a7224a88 3:c01c000000000000 4:000001b6a0b03f0d 5:7e16d617a7224a88 6:c014000000000000 +series __name__=a,host=h1,job=j1 ; 1:c087ac0000000000 2:409aea0000000000 3:4128047000000000 4:8000000000000000 5:7e16d617a7224a88 6:7e16d617a7224a88 +result host=h1,job=j1 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +result job=j1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 6:3ff0000000000000 +result job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case cmp >= bool right c119e10000000000 +expr a >= bool (-424000) +grid 1800536149449 60000 10 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4045b4cccccccccd 1:8000000000000000 2:c119e10000000000 3:fff0000000000000 4:401dfeb851eb851f 5:411fe9ec00000000 6:c119e10000000000 7:c01c000000000000 8:40c2976000000000 +series __name__=a,host=h1,job=j2 ; 0:c119e10000000000 1:c119e10000000000 2:4010000000000000 3:c0c329a000000000 5:c119e10000000000 7:000000d59484630f 8:c119e10000000000 9:c119e10000000000 +result host=h1,job=j2 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +result host=h1,job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 +end +case cmp <= filter left 7ff8000000000001 +expr NaN <= a +grid 2059935558888 15000 4 +series __name__=a,host=h1,job=j2 ; 0:7ff8000000000001 1:7ff8000000000001 3:4024800000000000 +end +case cmp <= filter right 7ff8000000000001 +expr a <= NaN +grid -2394417970900 1000 3 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 +series __name__=a,host=h2,zone=z2 ; 0:3fd96872b020c49c +end +case cmp <= bool left 0045c82e99a33220 +expr 2.4233236072821488e-307 <= bool a +grid 2184005940049 1 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:000fffffffffffff 1:0045c82e99a33220 2:0045c82e99a33220 3:0045c82e99a33220 5:00000000285a8e7c 8:fca4501b88389d78 +result host=h2,job=j1,zone=z1 ; 0:0000000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 5:0000000000000000 8:0000000000000000 +end +case cmp <= bool right 7fefffffffffffff +expr a <= bool 1.7976931348623157e+308 +grid 14239713026 1000 3 +series __name__=a,job=j1,zone=z2 ; 0:7fefffffffffffff 1:fc2bba8173700c5c +series __name__=a,job=j2,zone=z2 ; 0:7ca3c7cf667a37a4 2:7fefffffffffffff +result job=j1,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 +result job=j2,zone=z2 ; 0:3ff0000000000000 2:3ff0000000000000 +end +case cmp <= filter left c0a9c80000000000 +expr (-3300) <= a +grid 2329493238780 60000 9 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:8000000000000000 3:c006000000000000 5:c341c37937e08000 6:c0a8358000000000 +series __name__=a,job=j2,zone=z2 ; 0:78d5241a1be4c240 5:c0a9c80000000000 6:c0a9c80000000000 8:c0a9c80000000000 +series __name__=a,host=h2 ; 1:feb0052e2edf31b8 5:c0a9c80000000000 6:c0a9c80000000000 +result __name__=a,host=h2 ; 5:c0a9c80000000000 6:c0a9c80000000000 +result __name__=a,host=h2,job=j2,zone=z1 ; 0:8000000000000000 3:c006000000000000 6:c0a8358000000000 +result __name__=a,job=j2,zone=z2 ; 0:78d5241a1be4c240 5:c0a9c80000000000 6:c0a9c80000000000 8:c0a9c80000000000 +end +case cmp <= filter right 401743d70a3d70a4 +expr a <= 5.81625 +grid -2052589648311 60000 7 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:401743d70a3d70a4 1:401743d70a3d70a4 4:401743d70a3d70a4 5:c010000000000000 6:bfe2e147ae147ae1 +series __name__=a,host=h2,zone=z2 ; 2:ffe1ccf385ebc8a0 3:40b610c000000000 4:401743d70a3d70a4 5:401743d70a3d70a4 6:bfd5fdf3b645a1cb +result __name__=a,host=h2,job=j2,zone=z1 ; 0:401743d70a3d70a4 1:401743d70a3d70a4 4:401743d70a3d70a4 5:c010000000000000 6:bfe2e147ae147ae1 +result __name__=a,host=h2,zone=z2 ; 2:ffe1ccf385ebc8a0 4:401743d70a3d70a4 5:401743d70a3d70a4 6:bfd5fdf3b645a1cb +end +case cmp <= bool left c08bdc0000000000 +expr (-891.5) <= bool a +grid 1162310438644 1000 8 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c08bdc0000000000 1:3fe0000000000000 2:c0d3a42000000000 3:7960e5e614040500 4:c08bdc0000000000 5:40c059a000000000 6:0000000000000007 7:c075980000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:c08bdc0000000000 1:c08bdc0000000000 5:c008000000000000 6:c0765e0000000000 +result host=h1,job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +result host=h2,job=j1,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:0000000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case cmp <= bool right 0000000000066ed5 +expr a <= bool 2.082926e-318 +grid -1798551507594 60000 4 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:0000000000066ed5 1:00000000e76e3a4a 2:40e580b000000000 3:fc4dad033802efa2 +series __name__=a,job=j2,zone=z2 ; 2:3ff0000000000000 3:0000000000066ed5 +result host=h1,job=j2,zone=z2 ; 0:3ff0000000000000 1:0000000000000000 2:0000000000000000 3:3ff0000000000000 +result job=j2,zone=z2 ; 2:0000000000000000 3:3ff0000000000000 +end +case arith_series + left +expr scalar(s) + a +grid -2215872107650 15000 7 +series __name__=a,job=j1,zone=z2 ; 0:405ed00000000000 1:c05321999999999a 2:bf90c49ba5e353f8 3:c01cef5c28f5c290 5:4008000000000000 +series __name__=a,host=h2,job=j2 ; 0:80000000128c749e 1:c03e733333333334 2:40adbc8000000000 4:80000003859300dc 5:408ab10000000000 6:7ff0000000000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 1:40ea01d000000000 2:4060d40000000000 4:410bf82800000000 5:bfbfc6a7ef9db22d 6:c0793c0000000000 +scalar ; 0:7fe1ccf385ebc8a0 1:7ff8000000000001 2:4114205800000000 3:c08cac0000000000 4:c01c000000000000 5:ffe1ccf385ebc8a0 6:0000000000000000 +result host=h2,job=j1,zone=z2 ; 1:7ff8000000000001 2:4114227280000000 4:410bf7f000000000 5:ffe1ccf385ebc8a0 6:c0793c0000000000 +result host=h2,job=j2 ; 0:7fe1ccf385ebc8a0 1:7ff8000000000001 2:41145bd100000000 4:c01c000000000000 5:ffe1ccf385ebc8a0 6:7ff0000000000000 +result job=j1,zone=z2 ; 0:7fe1ccf385ebc8a0 1:7ff8000000000001 2:41142057ef3b645a 3:c08ce5deb851eb85 5:ffe1ccf385ebc8a0 +end +case arith_series + right +expr a + scalar(s) +grid 1976844666437 1000 3 +series __name__=a,job=j2 ; 0:4083450000000000 1:c000000000000000 2:40ed0bf000000000 +series __name__=a,job=j1,zone=z2 ; 0:4008000000000000 1:4007051eb851eb85 2:40964e0000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:408aed0000000000 2:000fffffffffffff +scalar ; 0:7ff8000000000001 1:bfdf24dd2f1a9fbf 2:7ff8000000000001 +result host=h1,job=j2,zone=z1 ; 0:7ff8000000000001 2:7ff8000000000001 +result job=j1,zone=z2 ; 0:7ff8000000000001 1:40032083126e978d 2:7ff8000000000001 +result job=j2 ; 0:7ff8000000000001 1:c003e49ba5e353f8 2:7ff8000000000001 +end +case arith_series + left +expr scalar(s) + a +grid 2617436237274 15000 5 +series __name__=a,host=h1,job=j1 ; 0:c0bfbd0000000000 1:c12aee8800000000 2:7ff0000000000000 3:c04fb00000000000 4:4000000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:802c43b44568e99c 1:4013800000000000 2:401c000000000000 3:4014000000000000 4:c129640000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 1:8000001186b5de73 2:fa2f1c97ff219a80 3:406d540000000000 4:4066300000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:401c6f5c28f5c290 3:0000000000000001 4:7ff8000000000001 +result host=h1,job=j1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff0000000000000 3:c04fb00000000000 4:7ff8000000000001 +result host=h1,job=j1,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:402c37ae147ae148 3:4014000000000000 4:7ff8000000000001 +result host=h2,job=j1,zone=z1 ; 1:7ff8000000000001 2:fa2f1c97ff219a80 3:406d540000000000 4:7ff8000000000001 +end +case arith_series + right +expr a + scalar(s) +grid 201044568707 1000 9 +series __name__=a,host=h2,job=j2 ; 0:c0bce44000000000 1:40a61c0000000000 2:4341c37937e08000 4:f9935e76306d2eb0 5:3fd7e978d4fdf3b6 6:4051a0cccccccccd 8:40b8768000000000 +scalar ; 0:407fe80000000000 1:4008000000000000 2:7ff8000000000001 3:7ff8000000000001 4:c075b60000000000 5:bfe0000000000000 6:7ff8000000000001 7:0000000000000000 8:bfbdcac083126e98 +result host=h2,job=j2 ; 0:c0bae5c000000000 1:40a6220000000000 2:7ff8000000000001 4:f9935e76306d2eb0 5:bfc02d0e56041894 6:7ff8000000000001 8:40b87662353f7cee +end +case arith_series + left +expr scalar(s) + a +grid 3794901463824 15000 10 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4025600000000000 1:bff0000000000000 2:c02819999999999a 3:3fe88b4395810625 4:bfd3872b020c49ba 6:4039333333333334 8:4341c37937e08000 9:785ad92e0faeeb84 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:c341c37937e08000 2:40eaa2c000000000 4:c018000000000000 6:0000000aa99b4026 7:c113f17800000000 9:fff0000000000000 +scalar ; 0:c04e3e6666666667 1:7ff8000000000001 2:7ff8000000000001 3:8000000000000000 4:7ff8000000000001 5:7ff8000000000001 6:3ff0000000000000 7:7ff8000000000001 8:40b43ac000000000 9:3ff0000000000000 +result host=h1,job=j2,zone=z1 ; 0:c048e66666666667 1:7ff8000000000001 2:7ff8000000000001 3:3fe88b4395810625 4:7ff8000000000001 6:403a333333333334 8:4341c37937e08a1d 9:785ad92e0faeeb84 +result host=h1,job=j2,zone=z2 ; 1:7ff8000000000001 2:7ff8000000000001 4:7ff8000000000001 6:3ff0000000000000 7:7ff8000000000001 9:fff0000000000000 +end +case arith_series + right +expr a + scalar(s) +grid -3100721266739 1000 6 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c12bfa1c00000000 2:4014000000000000 3:ffa9146a040d8dec 5:c0f704f800000000 +series __name__=a ; 0:4119db2400000000 1:c341c37937e08000 2:c046f33333333334 3:fa95cf9efb76ce90 4:fd681415171f6b98 +series __name__=a,job=j2,zone=z2 ; 0:7ff0000000000000 1:7921076fe5ab100c 2:7fe1ccf385ebc8a0 3:c05ce00000000000 4:f8552695412bbdcc 5:4000000000000000 +scalar ; 0:410a4e6000000000 1:fff0000000000000 2:7ff8000000000001 3:0000000000000000 4:7ff8000000000001 5:7ff8000000000001 +result - ; 0:4123812a00000000 1:fff0000000000000 2:7ff8000000000001 3:fa95cf9efb76ce90 4:7ff8000000000001 +result host=h1,job=j1,zone=z1 ; 0:c125668400000000 2:7ff8000000000001 3:ffa9146a040d8dec 5:7ff8000000000001 +result job=j2,zone=z2 ; 0:7ff0000000000000 1:fff0000000000000 2:7ff8000000000001 3:c05ce00000000000 4:7ff8000000000001 5:7ff8000000000001 +end +case arith_series - left +expr scalar(s) - a +grid 3664471537383 1000 6 +series __name__=a,job=j1 ; 0:000fffffffffffff 2:8000000d01b2cd6d 5:c1222e4c00000000 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:40eb6de000000000 1:000000000000007f 2:00000000028fadb3 4:40b1544000000000 5:7ff8000000000001 +series __name__=a,host=h2,zone=z2 ; 2:c0bb1fc000000000 4:bfda020c49ba5e35 +scalar ; 0:800000000000007e 1:7ff8000000000001 2:c01c30a3d70a3d71 3:4000000000000000 4:4000000000000000 5:ffefffffffffffff +result host=h2,job=j1,zone=z2 ; 0:c0eb6de000000000 1:7ff8000000000001 2:c01c30a3d70a3d71 4:c0b1524000000000 5:7ff8000000000001 +result host=h2,zone=z2 ; 2:40bb18b3d70a3d71 4:4003404189374bc7 +result job=j1 ; 0:801000000000007d 2:c01c30a3d70a3d71 5:ffefffffffffffff +end +case arith_series - right +expr a - scalar(s) +grid -1654564600599 15000 7 +series __name__=a,host=h2,zone=z2 ; 0:4017b851eb851eb8 1:c01c000000000000 2:000000057e0ea168 3:40b5f68000000000 4:80000000000015d3 5:80000055b3763b52 6:3fddef9db22d0e56 +series __name__=a,host=h1,job=j2 ; 0:41232d2e00000000 1:c0b3e34000000000 2:40b0338000000000 3:00000000001af53b 4:c0b5c98000000000 5:7d29c56ef5f23afc 6:c0c8e0c000000000 +scalar ; 0:fa1b5e447f4d16b0 1:40dde20000000000 2:7ff8000000000001 3:c01c000000000000 4:c0168f5c28f5c28f 5:401dfc28f5c28f5c 6:7ff8000000000001 +result host=h1,job=j2 ; 0:7a1b5e447f4d16b0 1:c0e16d6800000000 2:7ff8000000000001 3:401c000000000000 4:c0b5c3dc28f5c28f 5:7d29c56ef5f23afc 6:7ff8000000000001 +result host=h2,zone=z2 ; 0:7a1b5e447f4d16b0 1:c0dde3c000000000 2:7ff8000000000001 3:40b5fd8000000000 4:40168f5c28f5c28f 5:c01dfc28f5c28f5c 6:7ff8000000000001 +end +case arith_series - left +expr scalar(s) - a +grid 3763345783836 1 6 +series __name__=a,host=h2,job=j2 ; 0:7ff0000000000000 1:4008000000000000 2:c008000000000000 4:c043433333333334 5:3fefea7ef9db22d1 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:405804cccccccccd 1:3f9851eb851eb852 2:c018000000000000 3:7fefffffffffffff +series __name__=a,host=h1,job=j1,zone=z2 ; 1:c12212f400000000 2:bfcab851eb851eb8 3:7fefffffffffffff 5:c341c37937e08000 +scalar ; 0:c008000000000000 1:7fefffffffffffff 2:4008000000000000 3:c0bb24c000000000 4:4000000000000000 5:7ff8000000000001 +result host=h1,job=j1,zone=z1 ; 0:c058c4cccccccccd 1:7fefffffffffffff 2:4022000000000000 3:ffefffffffffffff +result host=h1,job=j1,zone=z2 ; 1:7fefffffffffffff 2:4009ab851eb851ec 3:ffefffffffffffff 5:7ff8000000000001 +result host=h2,job=j2 ; 0:fff0000000000000 1:7fefffffffffffff 2:4018000000000000 4:4044433333333334 5:7ff8000000000001 +end +case arith_series - right +expr a - scalar(s) +grid -3153022677480 1000 7 +series __name__=a ; 0:40de816000000000 1:ffe1ccf385ebc8a0 2:fcb803e306dd7988 3:3fbd78d4fdf3b646 4:7f30ddd775654cfe 5:c01c000000000000 6:c0450b3333333334 +series __name__=a,host=h2,job=j1 ; 0:000000001e002461 1:408af40000000000 4:4000000000000000 5:40eb968000000000 6:c341c37937e08000 +scalar ; 0:bfe0000000000000 1:3ff0000000000000 2:7ff8000000000001 3:3ff0000000000000 4:3fbbef9db22d0e56 5:7fefffffffffffff 6:4008000000000000 +result - ; 0:40de818000000000 1:ffe1ccf385ebc8a0 2:7ff8000000000001 3:bfec50e560418937 4:7f30ddd775654cfe 5:ffefffffffffffff 6:c0468b3333333334 +result host=h2,job=j1 ; 0:3fe0000000000000 1:408aec0000000000 4:3ffe410624dd2f1b 5:ffefffffffffffff 6:c341c37937e08002 +end +case arith_series - left +expr scalar(s) - a +grid -2876331180695 15000 8 +series __name__=a,host=h2,zone=z1 ; 0:401c000000000000 1:4008000000000000 3:79866527962f34e8 4:402d800000000000 5:40f17c9000000000 6:ffefffffffffffff 7:bfee0a3d70a3d70a +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:3fe0000000000000 3:bff0000000000000 4:7ff8000000000001 5:bff2000000000000 6:40bbbe8000000000 7:00000002a63ff05a +result host=h2,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 3:f9866527962f34e8 4:7ff8000000000001 5:c0f17ca200000000 6:7fefffffffffffff 7:3fee0a3d70a3d70a +end +case arith_series - right +expr a - scalar(s) +grid 2100964957468 1 10 +series __name__=a,job=j1 ; 2:c0acae8000000000 4:40f477d800000000 5:bfecf4bc6a7ef9db 6:c0814e0000000000 7:c077880000000000 9:c126e93c00000000 +scalar ; 0:4008000000000000 1:c12a004000000000 2:ffe1ccf385ebc8a0 3:bff0000000000000 4:bfc9c28f5c28f5c3 5:8000000000000001 6:7ff8000000000001 7:c0551f3333333334 8:c024000000000000 9:7ff8000000000001 +result job=j1 ; 2:7fe1ccf385ebc8a0 4:40f477db3851eb85 5:bfecf4bc6a7ef9db 6:7ff8000000000001 7:c072403333333333 9:7ff8000000000001 +end +case arith_series * left +expr scalar(s) * a +grid -2608267730070 15000 3 +series __name__=a,job=j2 ; 0:3ff0000000000000 2:ff1dc5b349b52bbe +scalar ; 0:7ff8000000000001 1:4008000000000000 2:8000000000000002 +result job=j2 ; 0:7ff8000000000001 2:3c0dc5b349b52bbe +end +case arith_series * right +expr a * scalar(s) +grid 2483608586215 1 4 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:40b9a00000000000 1:fec2489f3732022a 2:bfe54395810624dd +series __name__=a,host=h2,job=j1,zone=z2 ; 0:0000000012ceb9e2 1:c0d52ac000000000 3:c052000000000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:40446e6666666667 +scalar ; 0:7ff8000000000001 1:7fe1ccf385ebc8a0 2:7ff8000000000001 3:c0051c28f5c28f5c +result host=h1,job=j2,zone=z2 ; 0:7ff8000000000001 +result host=h2,job=j1,zone=z1 ; 0:7ff8000000000001 1:fff0000000000000 2:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 0:7ff8000000000001 1:fff0000000000000 3:4067bfae147ae148 +end +case arith_series * left +expr scalar(s) * a +grid 2311304443187 1000 9 +series __name__=a,host=h1,zone=z2 ; 0:7d3d51b5732a6fa0 1:3fe0f5c28f5c28f6 2:4000000000000000 3:4083a90000000000 4:c01dee147ae147ae 5:c0acfc0000000000 6:c0b73e0000000000 7:fad39da9d951d558 8:4062e00000000000 +series __name__=a,zone=z1 ; 0:ff2b052f690c20a4 2:78a9b0ee0883b7b8 4:40ea068000000000 6:7ed244be0c76aafc 8:c01f2b851eb851ec +scalar ; 0:8000000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7fefffffffffffff 4:41121cb800000000 5:40bcee4000000000 6:3fe0000000000000 7:7ff8000000000001 8:c0b5f40000000000 +result host=h1,zone=z2 ; 0:ba1d51b5732a6fa0 1:7ff8000000000001 2:7ff8000000000001 3:7ff0000000000000 4:c140f0c7f0000000 5:c17a344c38000000 6:c0a73e0000000000 7:7ff8000000000001 8:c129e5d800000000 +result zone=z1 ; 0:3c0b052f690c20a4 2:7ff8000000000001 4:420d7606aac00000 6:7ec244be0c76aafc 8:40e5623b33333334 +end +case arith_series * right +expr a * scalar(s) +grid 641572308231 15000 4 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:7fe1ccf385ebc8a0 1:4024000000000000 2:c033000000000000 +series __name__=a,host=h1,job=j2 ; 0:c116973400000000 1:4000000000000000 2:c1132e2800000000 3:c0c009a000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 1:c010000000000000 2:c0c0fd6000000000 3:c07a180000000000 +scalar ; 0:7ff8000000000001 1:8000000000000001 2:7ff8000000000001 3:408aa00000000000 +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 1:800000000000000a 2:7ff8000000000001 +result host=h1,job=j1,zone=z2 ; 1:0000000000000004 2:7ff8000000000001 3:c115b5f800000000 +result host=h1,job=j2 ; 0:7ff8000000000001 1:8000000000000002 2:7ff8000000000001 3:c15ab00440000000 +end +case arith_series * left +expr scalar(s) * a +grid 1191303079944 15000 6 +series __name__=a,job=j2 ; 0:401f19999999999a 2:782ff45048fd3de8 3:400768f5c28f5c29 4:8000000000000000 5:c008000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:4000000000000000 1:3fdba9fbe76c8b44 2:3fe0000000000000 5:806e7b9911be3128 +series __name__=a,job=j1,zone=z2 ; 2:408d3d0000000000 3:bfec6b851eb851ec 5:400f4ccccccccccd +scalar ; 0:3fefe5604189374c 1:c022ec28f5c28f5c 2:00216dcf460697e0 3:c01c000000000000 4:7ff8000000000001 5:c0b9028000000000 +result host=h1,job=j2,zone=z1 ; 0:3fffe5604189374c 1:c0105bc6bce8533b 2:00116dcf460697e0 5:0137d2f13dd1f943 +result job=j1,zone=z2 ; 2:00bfd97a5526ec69 3:4018de147ae147ae 5:c0d8767200000000 +result job=j2 ; 0:401effb98c7e2825 2:38616771d29384bc 3:c0347bd70a3d70a4 4:7ff8000000000001 5:40d2c1e000000000 +end +case arith_series * right +expr a * scalar(s) +grid 36125870026 1000 3 +series __name__=a,host=h2,job=j2 ; 0:4341c37937e08000 1:80009080b162d240 2:c0b34ac000000000 +series __name__=a,host=h1,job=j1 ; 0:fef8f597968c9420 2:c0b4780000000000 +series __name__=a,host=h1,job=j2,zone=z2 ; 2:ffefffffffffffff +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:4107356800000000 +result host=h1,job=j1 ; 0:7ff8000000000001 2:c1cdb0d28c000000 +result host=h1,job=j2,zone=z2 ; 2:fff0000000000000 +result host=h2,job=j2 ; 0:7ff8000000000001 1:7ff8000000000001 2:c1cbfbd901e00000 +end +case arith_series / left +expr scalar(s) / a +grid -3518241124583 15000 6 +series __name__=a,host=h1,job=j1 ; 0:7fe1ccf385ebc8a0 2:0069f05b8065e9d0 4:f819c388ce5d8518 5:40bcbc4000000000 +scalar ; 0:7a7460a9c65af022 1:79cfb80049977e94 2:c056573333333334 3:0000000000000000 4:4087830000000000 5:ffefffffffffffff +result host=h1,job=j1 ; 0:3a8250fad3df1f7c 2:ffdb8f98d9750b7b 4:885d33e9fc665857 5:ff21d159a310d138 +end +case arith_series / right +expr a / scalar(s) +grid 109903331375 15000 5 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:3ff0000000000000 2:7f00339c4d9bbc60 3:7ff8000000000001 +scalar ; 0:7ff8000000000001 1:c0c1fc6000000000 2:bffebd70a3d70a3e 3:7ff8000000000001 4:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 0:7ff8000000000001 2:fef0dd9de132068d 3:7ff8000000000001 +end +case arith_series / left +expr scalar(s) / a +grid -2074555697969 1 6 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c023d33333333333 1:40c0400000000000 2:79e14ecde1670850 3:c0ea3ba000000000 4:c016cb851eb851ec 5:7d5aa11d0c332a36 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:4001570a3d70a3d7 1:c010000000000000 3:8000000000000062 4:800000000000017c 5:40f1758800000000 +series __name__=a,host=h2,job=j1 ; 1:7ff8000000000001 2:c045600000000000 3:c042200000000000 5:c0b62d8000000000 +scalar ; 0:7ff8000000000001 1:40c72b4000000000 2:7fe1ccf385ebc8a0 3:7ff0000000000000 4:fd0ce2fcc74dee9a 5:7ff8000000000001 +result host=h1,job=j2,zone=z2 ; 0:7ff8000000000001 1:c0a72b4000000000 3:fff0000000000000 4:7ff0000000000000 5:7ff8000000000001 +result host=h2,job=j1 ; 1:7ff8000000000001 2:ff8aa61a3bc3cb0a 3:fff0000000000000 5:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 0:7ff8000000000001 1:3ff6d00000000000 2:45f0749d715a6f2c 3:fff0000000000000 4:7ce4469a679e6a45 5:7ff8000000000001 +end +case arith_series / right +expr a / scalar(s) +grid -2530741273105 60000 4 +series __name__=a,job=j1,zone=z2 ; 0:406d8c0000000000 1:c08ba80000000000 2:4127b07400000000 3:8000000000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:40c01d0000000000 1:c01c000000000000 2:c020000000000000 3:40d2e8a000000000 +series __name__=a,host=h2,job=j2 ; 0:4008000000000000 2:c020000000000000 +scalar ; 0:c05368cccccccccd 1:7fefffffffffffff 2:7ff8000000000001 3:7aeb38a9afa89fc0 +result host=h2,job=j1,zone=z1 ; 0:c05a90d6545493e3 1:801c000000000001 2:7ff8000000000001 3:05d63a637f674353 +result host=h2,job=j2 ; 0:bfa3c8c4da737d97 2:7ff8000000000001 +result job=j1,zone=z2 ; 0:c0085b56599b2ec8 1:808ba80000000001 2:7ff8000000000001 3:8000000000000000 +end +case arith_series / left +expr scalar(s) / a +grid 3151462790291 15000 5 +series __name__=a,host=h1,zone=z1 ; 0:4020000000000000 2:0000000000000000 3:bfbb3b645a1cac08 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:c0f6834800000000 1:40b8484000000000 2:fd5c1b2975f7f9f0 3:fff0000000000000 +series __name__=a,zone=z1 ; 1:0000000000000033 2:803e10c551cefbec 4:40cb51c000000000 +scalar ; 0:0000000000000000 1:80005ff01754cebe 2:7ff8000000000001 3:fff0000000000000 4:0000000000000001 +result host=h1,job=j2,zone=z2 ; 0:8000000000000000 1:80000003f37170b3 2:7ff8000000000001 3:fff8000000000000 +result host=h1,zone=z1 ; 0:0000000000000000 2:7ff8000000000001 3:7ff0000000000000 +result zone=z1 ; 1:c27e19206aeb86e7 2:7ff8000000000001 4:0000000000000000 +end +case arith_series / right +expr a / scalar(s) +grid 2592095795255 60000 5 +series __name__=a,job=j1,zone=z1 ; 0:bfc245a1cac08313 3:40ae730000000000 4:40f4bd6000000000 +series __name__=a,host=h1,zone=z2 ; 0:402359999999999a 1:c0f5cbb000000000 3:c024000000000000 4:78f75ec5faff383a +scalar ; 0:7ff8000000000001 1:4341c37937e08000 2:40f80c4000000000 3:f9a38a476d71097c 4:c007c7ae147ae148 +result host=h1,zone=z2 ; 0:7ff8000000000001 1:bda3a1bc576fa334 3:06706064a1ec32b6 4:f8df72d496df4cbd +result job=j1,zone=z1 ; 0:7ff8000000000001 3:86f8eec135855a34 4:c0dbe8a8ccf8e516 +end +case arith_series % left +expr scalar(s) % a +grid 3096339346394 1 3 +series __name__=a,job=j2,zone=z2 ; 0:fed8068ce58ee540 1:bfe74ed916872b02 2:407b6c0000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c0d8aba000000000 2:000fffffffffffff +series __name__=a,zone=z1 ; 0:c0b29d0000000000 1:3fef83126e978d50 2:7fefffffffffffff +scalar ; 0:0000000000001705 1:7ff8000000000001 2:c04e133333333334 +result host=h2,job=j1,zone=z1 ; 0:0000000000001705 2:80099af099999999 +result job=j2,zone=z2 ; 0:0000000000001705 1:7ff8000000000001 2:c04e133333333334 +result zone=z1 ; 0:0000000000001705 1:7ff8000000000001 2:c04e133333333334 +end +case arith_series % right +expr a % scalar(s) +grid -1653019877815 60000 8 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c01c000000000000 1:3fe81cac083126ea 2:c04e2ccccccccccd 3:40823b0000000000 4:c055c80000000000 5:79ad498689a633dc 6:c050b80000000000 +series __name__=a ; 1:8000000000031445 4:0000000000000001 5:40f40b4000000000 6:4067a40000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:0000000000000001 3:7a54a94606aa9bbc 4:c014000000000000 5:8000000000000001 6:c099910000000000 7:ffefffffffffffff +result - ; 1:7ff8000000000001 4:0000000000000001 5:0000000000000000 6:4067a40000000000 +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:8000000000000000 3:40823b0000000000 4:c001000000000000 5:0000000000000000 6:c050b80000000000 +end +case arith_series % left +expr scalar(s) % a +grid 2985347062504 1 8 +series __name__=a,host=h2,job=j1 ; 1:ffefffffffffffff 2:7ff0000000000000 3:8000000000000001 4:40ad088000000000 5:40f157d800000000 7:8000000000035cea +scalar ; 0:4000000000000000 1:7ff8000000000001 2:3fe45b22d0e56042 3:0000000000021b67 4:000fffffffffffff 5:c01c000000000000 6:00008b4fb24c9d8a 7:7ff8000000000001 +result host=h2,job=j1 ; 1:7ff8000000000001 2:3fe45b22d0e56042 3:0000000000000000 4:000fffffffffffff 5:c01c000000000000 7:7ff8000000000001 +end +case arith_series % right +expr a % scalar(s) +grid 3495648823067 15000 9 +series __name__=a,job=j2,zone=z2 ; 0:c022000000000000 1:0000011cc37b74fb 3:7acc4a2bd5348a64 4:bfdc24dd2f1a9fbf 5:c053940000000000 6:0000000008434bff 7:4039000000000000 +scalar ; 0:c120654400000000 1:7d2b62b0031b4060 2:7ff8000000000001 3:7ff8000000000001 4:7ff0000000000000 5:7ff8000000000001 6:c0520d999999999a 7:7ff8000000000001 8:3fd683126e978d50 +result job=j2,zone=z2 ; 0:c022000000000000 1:0000011cc37b74fb 3:7ff8000000000001 4:bfdc24dd2f1a9fbf 5:7ff8000000000001 6:0000000008434bff 7:7ff8000000000001 +end +case arith_series % left +expr scalar(s) % a +grid -1593309055559 60000 8 +series __name__=a,host=h1,job=j1 ; 0:bfe0000000000000 1:c01c000000000000 2:0000000000408717 3:000fffffffffffff 4:fcb8966675c4a4a8 5:3fed47ae147ae148 7:c049000000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:3fe16353f7ced917 1:40dccbe000000000 2:c0429b3333333333 3:c022000000000000 4:000fffffffffffff 6:40d3948000000000 7:c036800000000000 +series __name__=a,host=h2,job=j1 ; 1:c06d900000000000 2:bff0000000000000 3:c053d9999999999a 5:3fd974bc6a7ef9db 7:40680c0000000000 +scalar ; 0:8000000000000000 1:7fefffffffffffff 2:8000000000000000 3:7ff8000000000001 4:7ff8000000000001 5:000fffffffffffff 6:7ff8000000000001 7:c1124d8c00000000 +result host=h1,job=j1 ; 0:8000000000000000 1:4014000000000000 2:8000000000000000 3:7ff8000000000001 4:7ff8000000000001 5:000fffffffffffff 7:c039000000000000 +result host=h2,job=j1 ; 1:404d000000000000 2:8000000000000000 3:7ff8000000000001 5:000fffffffffffff 7:c063580000000000 +result host=h2,job=j2,zone=z2 ; 0:8000000000000000 1:40d9f52000000000 2:8000000000000000 3:7ff8000000000001 4:7ff8000000000001 6:7ff8000000000001 7:c031800000000000 +end +case arith_series % right +expr a % scalar(s) +grid 1232515580564 60000 10 +series __name__=a,host=h1,zone=z1 ; 0:c0e9dac000000000 1:bfedd3f7ced91687 2:c0da3ba000000000 4:7ec886e6bf115c9c 6:4341c37937e08000 7:bff0000000000000 8:fb70476f584b128c 9:40a8e98000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:3ff0000000000000 1:7f24daf0cd34b240 3:4008000000000000 4:facd7a2f86c542e8 5:c02348f5c28f5c29 7:3ff0000000000000 8:c000000000000000 9:c0bb51c000000000 +scalar ; 0:7fefffffffffffff 1:c0885e0000000000 2:7ff8000000000001 3:c01c000000000000 4:8000000000000000 5:400a2b851eb851ec 6:7ff8000000000001 7:7ff8000000000001 8:c03579999999999a 9:8000000000019280 +result host=h1,job=j1,zone=z2 ; 0:3ff0000000000000 1:40785c0000000000 3:4008000000000000 4:7ff8000000000001 5:c008cccccccccccc 7:7ff8000000000001 8:c000000000000000 9:8000000000014000 +result host=h1,zone=z1 ; 0:c0e9dac000000000 1:bfedd3f7ced91687 2:7ff8000000000001 4:7ff8000000000001 6:7ff8000000000001 7:7ff8000000000001 8:c033658daabe9c18 9:000000000000c800 +end +case arith_series ^ left +expr scalar(s) ^ a +grid -421052401678 1 10 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:4341c37937e08000 1:c02e133333333334 3:c020000000000000 4:0000000000000001 5:4010d33333333333 6:4021eeb851eb851f 7:00000336ccaeaea2 8:c062c00000000000 9:4008000000000000 +series __name__=a,job=j2,zone=z2 ; 0:401695c28f5c28f6 2:c04d9ccccccccccd 4:c08da50000000000 6:8000000000000016 7:c0e2dc2000000000 9:c048266666666667 +series __name__=a ; 1:c08d540000000000 2:3ff0000000000000 3:c01c000000000000 4:401c000000000000 5:3fd428f5c28f5c29 6:bff0000000000000 8:c076a00000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:4008000000000000 3:c01c19999999999a 4:7fa7006514591dec 5:3fffbd70a3d70a3e 6:403119999999999a 7:000fffffffffffff 8:7fefffffffffffff 9:c0da9c8000000000 +result - ; 1:7ff8000000000001 2:4008000000000000 3:beb3deb1828bf4b4 4:7ff0000000000000 5:3ff3da64e08923d4 6:3fadf1077c41df10 8:0000000000000000 +result host=h1,job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 3:3e86a0acfe5851e2 4:3ff0000000000000 5:4031d616dfb6cc25 6:423a72aad9619edc 7:3ff0000000000000 8:0000000000000000 9:c2b26749be134800 +result job=j2,zone=z2 ; 0:7ff8000000000001 2:3a11841427eeb438 4:0000000000000000 6:3ff0000000000000 7:7ff0000000000000 9:7ff8000000000001 +end +case arith_series ^ right +expr a ^ scalar(s) +grid -2468995769424 15000 10 +series __name__=a,host=h1,zone=z1 ; 0:4058780000000000 1:c014000000000000 2:41164ef000000000 4:4022000000000000 5:ff518f6f74bcb9c0 6:800000000000000d 7:40b025c000000000 8:4010000000000000 9:40a5e00000000000 +series __name__=a,host=h2,job=j1 ; 0:c0c0662000000000 1:fc2c41bd031e2e30 2:7fe1ccf385ebc8a0 3:7ff0000000000000 5:7bf8556bdb530908 6:404fc00000000000 7:0000000000000000 8:7f0c0255e8186f60 +series __name__=a,zone=z1 ; 2:000fff082e4324a2 3:8000000840aeaf68 4:3fcc0c49ba5e3540 5:4023d0a3d70a3d71 6:c0e984d000000000 7:3ff0000000000000 +scalar ; 0:40e8c31000000000 1:3fecb645a1cac083 2:fd9154f64791685a 3:40230147ae147ae1 4:0000000000000002 5:0000000000000002 6:c014000000000000 7:ffefffffffffffff 8:7ff8000000000001 9:bfef10624dd2f1aa +result host=h1,zone=z1 ; 0:7ff0000000000000 1:7ff8000000000001 2:0000000000000000 4:3ff0000000000000 5:7ff8000000000001 6:fff0000000000000 7:0000000000000000 8:7ff8000000000001 9:3f3d85ba468c82ac +result host=h2,job=j1 ; 0:7ff8000000000001 1:7ff8000000000001 2:0000000000000000 3:7ff0000000000000 5:3ff0000000000000 6:3e10a3d1c6ff526f 7:7ff0000000000000 8:7ff8000000000001 +result zone=z1 ; 2:7ff0000000000000 3:7ff8000000000001 4:3ff0000000000000 5:3ff0000000000000 6:bb08ce12a1751065 7:3ff0000000000000 +end +case arith_series ^ left +expr scalar(s) ^ a +grid -434586394138 1 8 +series __name__=a,job=j1,zone=z2 ; 0:7fefffffffffffff 2:c10a9c8000000000 4:c0ed42a000000000 5:40cf914000000000 6:c002451eb851eb85 +scalar ; 0:7ff0000000000000 1:0000000000000000 2:0000000000000000 3:7ff8000000000001 4:0000000000000001 5:7fe1ccf385ebc8a0 6:4126ef1800000000 7:ffe1ccf385ebc8a0 +result job=j1,zone=z2 ; 0:7ff0000000000000 2:7ff0000000000000 4:7ff0000000000000 5:7ff0000000000000 6:3d2571ce210010e7 +end +case arith_series ^ right +expr a ^ scalar(s) +grid 1150201874780 15000 4 +series __name__=a,host=h2 ; 1:4062140000000000 2:8000000000000001 3:c0c430c000000000 +scalar ; 0:c0689c0000000000 1:f8f69298da9f7bee 2:8000000000000125 3:7ff8000000000001 +result host=h2 ; 1:0000000000000000 2:7ff8000000000001 3:7ff8000000000001 +end +case arith_series ^ left +expr scalar(s) ^ a +grid 3996678247582 60000 7 +series __name__=a,host=h2,job=j2 ; 0:4028f9999999999a 1:401c000000000000 2:fc698529331362e8 3:80002f70eede35aa 4:c004b851eb851eb8 5:c124188800000000 +series __name__=a,job=j2 ; 0:407a200000000000 2:40395ccccccccccd 3:0000000000219fed 4:c018000000000000 +scalar ; 0:c070120000000000 1:4341c37937e08000 2:4341c37937e08000 3:7fe1ccf385ebc8a0 4:4083af0000000000 5:ffefffffffffffff 6:c108279800000000 +result host=h2,job=j2 ; 0:7ff8000000000001 1:5730a1f5b8132467 2:0000000000000000 3:3ff0000000000000 4:3e6e2f8920dcf66c 5:0000000000000000 +result job=j2 ; 0:7ff0000000000000 2:7ff0000000000000 3:3ff0000000000000 4:3c7276370c345632 +end +case arith_series ^ right +expr a ^ scalar(s) +grid -2192136983552 15000 5 +series __name__=a ; 1:404abe6666666667 4:407da20000000000 +scalar ; 0:3ff0000000000000 1:7bd72fe609f55de0 2:bfb10e5604189375 3:7fefffffffffffff 4:c014000000000000 +result - ; 1:7ff0000000000000 4:3d277f22e6043a1d +end +case arith_series atan2 left +expr scalar(s) atan2 a +grid -1677250300487 60000 5 +series __name__=a,job=j2 ; 0:4024200000000000 1:bff0000000000000 2:3fdd5c28f5c28f5c 3:40a86a0000000000 4:000fffffffffffff +series __name__=a,host=h2,job=j2,zone=z1 ; 0:3ff0000000000000 1:c119584800000000 2:3fdf851eb851eb85 3:407a8c0000000000 4:7c8b2536de8976b6 +series __name__=a,job=j1,zone=z1 ; 2:3fef04189374bc6b 4:40c9bb8000000000 +scalar ; 0:c341c37937e08000 1:c341c37937e08000 2:800000000000639c 3:bfdfdd2f1a9fbe77 4:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 0:bff921fb54442d18 1:bff921fb5447079c 2:800000000000ca41 3:bf533464bdb9de05 4:7ff8000000000001 +result job=j1,zone=z1 ; 2:80000000000066c5 4:7ff8000000000001 +result job=j2 ; 0:bff921fb54442d13 1:bff921fb54442d18 2:800000000000d922 3:bf24e1e45e1c3a34 4:7ff8000000000001 +end +case arith_series atan2 right +expr a atan2 scalar(s) +grid -786398996319 1000 10 +series __name__=a,zone=z2 ; 0:4054c33333333334 1:c01ac28f5c28f5c3 2:c014000000000000 3:4063dc0000000000 5:4118911000000000 6:3ff6cccccccccccd 7:fff0000000000000 9:4085280000000000 +series __name__=a,host=h2,job=j2 ; 0:8000000000e83772 2:409aef0000000000 3:4014000000000000 4:3ff0000000000000 5:00000000000d75c6 6:401c000000000000 7:7fe1ccf385ebc8a0 9:3fb5eb851eb851ec +series __name__=a,host=h2,job=j2,zone=z2 ; 2:c01c000000000000 3:fc85c800c78a06ee 5:fc281494ffaf3008 6:405894cccccccccd 7:4045a00000000000 8:403ab66666666667 9:401c000000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:c0d1f1c000000000 3:ffe1ccf385ebc8a0 4:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:c000000000000000 8:7ff8000000000001 9:7ff8000000000001 +result host=h2,job=j2 ; 0:7ff8000000000001 2:4008626ba393c193 3:400921fb54442d18 4:7ff8000000000001 5:7ff8000000000001 6:7ff8000000000001 7:3ff921fb54442d18 9:7ff8000000000001 +result host=h2,job=j2,zone=z2 ; 2:c009213399b4ab4e 3:c00921fb54442d18 5:7ff8000000000001 6:7ff8000000000001 7:3ff9df41dfc6140a 8:7ff8000000000001 9:7ff8000000000001 +result zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 2:c009216caa6fbc3f 3:400921fb54442d18 5:7ff8000000000001 6:7ff8000000000001 7:bff921fb54442d18 9:7ff8000000000001 +end +case arith_series atan2 left +expr scalar(s) atan2 a +grid -1168433571125 1000 10 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:c0c17f6000000000 1:00000000000051e6 3:0000000000006c99 4:403a633333333334 5:4008000000000000 6:c08ba40000000000 7:f8512e903ff181d8 8:3ff0000000000000 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c0e8768000000000 1:0000000000000001 2:411ad90c00000000 5:c048480000000000 6:4077dc0000000000 8:412c9f2600000000 9:7ff0000000000000 +series __name__=a,host=h2 ; 0:c01c000000000000 1:ff272af4b7aced90 2:7fefffffffffffff 3:40503e6666666667 4:c010000000000000 6:3feccac083126e98 7:fd4e394990265fdc 8:c03ab00000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:3ff0000000000000 4:bff0000000000000 5:7ff8000000000001 6:3ff0000000000000 7:bff6b851eb851eb8 8:fd37a4a312a5336a 9:7d820074effe1364 +result host=h1,job=j1,zone=z2 ; 0:7ff8000000000001 1:7ff8000000000001 3:3ff921fb54442d18 4:bfa364d314015a71 5:7ff8000000000001 6:40091faa94266b3d 7:c00921fb54442d18 8:bff921fb54442d18 +result host=h2 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:3f8f846f8a8859c6 4:c0072c43f4b1650a 6:3fead1dfb32b2d3c 7:c00921fb54442d18 8:bff921fb54442d18 +result host=h2,job=j1,zone=z1 ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 5:7ff8000000000001 6:3f6575826648bd0a 8:bff921fb54442d18 9:0000000000000000 +end +case arith_series atan2 right +expr a atan2 scalar(s) +grid 1719480213232 60000 10 +series __name__=a,host=h2,job=j1,zone=z2 ; 1:3ff0000000000000 2:80239e240f0134d8 3:c02b666666666667 4:403be33333333334 6:3fcf9db22d0e5604 7:c0abe40000000000 8:0000000000000007 +scalar ; 0:7ff8000000000001 1:ffefffffffffffff 2:8000000000000001 3:4066e40000000000 4:4341c37937e08000 5:7ff8000000000001 6:7ff8000000000001 7:fff0000000000000 8:ffe1ccf385ebc8a0 9:7ff8000000000001 +result host=h2,job=j1,zone=z2 ; 1:400921fb54442d18 2:bff921fb54442d18 3:bfb31dc819977b6e 4:3ce91e6b70ee68d6 6:7ff8000000000001 7:c00921fb54442d18 8:400921fb54442d18 +end +case arith_series atan2 left +expr scalar(s) atan2 a +grid -3297450346153 1 7 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:404cde6666666667 2:c0d2304000000000 4:c0859f0000000000 5:8032856d4b20d2d6 6:c341c37937e08000 +scalar ; 0:4008000000000000 1:7ff8000000000001 2:fe6fb3db9f211948 3:7ff8000000000001 4:fff0000000000000 5:800000000000000c 6:7ff8000000000001 +result host=h2,job=j2,zone=z1 ; 0:3faa944a4d7ff958 2:bff921fb54442d18 4:bff921fb54442d18 5:c00921fb54442d17 6:7ff8000000000001 +end +case arith_series atan2 right +expr a atan2 scalar(s) +grid -155752938526 15000 3 +series __name__=a,host=h2,zone=z2 ; 0:401e2147ae147ae1 1:c014000000000000 2:3fe0851eb851eb85 +series __name__=a,host=h1,job=j2 ; 0:c014000000000000 1:7ff8000000000001 +scalar ; 0:3fd43d70a3d70a3e 1:7ff8000000000001 2:4008000000000000 +result host=h1,job=j2 ; 0:bff81f4120b907ef 1:7ff8000000000001 +result host=h2,zone=z2 ; 0:3ff8761cfc6d0e63 1:7ff8000000000001 2:3fc5d0228a59988a +end +case cmp_series == filter left +expr scalar(s) == a +grid 3958645265160 15000 5 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c0d973a000000000 2:4008000000000000 3:c0b44b0000000000 4:bfe0000000000000 +scalar ; 0:c022000000000000 1:ffe1ccf385ebc8a0 2:7fefffffffffffff 3:7ff8000000000001 4:7ff8000000000001 +end +case cmp_series == filter right +expr a == scalar(s) +grid -1458456106606 15000 7 +series __name__=a,job=j2,zone=z2 ; 0:40b9050000000000 1:4008000000000000 2:bff0000000000000 4:c0bfc98000000000 5:00000000002a6d09 6:fef2b99436d728f8 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c0e06b2000000000 2:c0c31aa000000000 4:4341c37937e08000 6:fef2b99436d728f8 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:c063600000000000 1:bfe38a3d70a3d70a 2:4083070000000000 3:3fe5f4bc6a7ef9db 4:c0bfc98000000000 5:c036733333333334 6:fef2b99436d728f8 +scalar ; 0:7ff8000000000001 1:bfe38a3d70a3d70a 2:7ff8000000000001 3:7ff8000000000001 4:c0bfc98000000000 5:7ff8000000000001 6:fef2b99436d728f8 +result __name__=a,host=h1,job=j1,zone=z1 ; 1:bfe38a3d70a3d70a 4:c0bfc98000000000 6:fef2b99436d728f8 +result __name__=a,host=h2,job=j2,zone=z1 ; 6:fef2b99436d728f8 +result __name__=a,job=j2,zone=z2 ; 4:c0bfc98000000000 6:fef2b99436d728f8 +end +case cmp_series == bool left +expr scalar(s) == bool a +grid 3920060616079 15000 9 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:fd9bca2e0db1c9a4 1:c01c000000000000 2:c008000000000000 3:c0dcc28000000000 4:7fe1ccf385ebc8a0 5:4038f9999999999a 7:c106db9000000000 8:c020000000000000 +series __name__=a,host=h2,job=j2,zone=z2 ; 0:bff0000000000000 2:412d174400000000 3:8000000000001335 4:7fe1ccf385ebc8a0 5:401a19999999999a 8:80590191f99b8fa6 +series __name__=a,zone=z2 ; 0:c10f056800000000 1:c054b00000000000 2:3fed46a7ef9db22d 4:fbfa68ad634b8c40 5:4000000000000000 6:ffefffffffffffff 7:4008000000000000 +scalar ; 0:c10f056800000000 1:7ff8000000000001 2:410febe000000000 3:7ff8000000000001 4:7fe1ccf385ebc8a0 5:7fefffffffffffff 6:ffefffffffffffff 7:4008000000000000 8:3fed7ced916872b0 +result host=h1,job=j2,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:3ff0000000000000 5:0000000000000000 7:0000000000000000 8:0000000000000000 +result host=h2,job=j2,zone=z2 ; 0:0000000000000000 2:0000000000000000 3:0000000000000000 4:3ff0000000000000 5:0000000000000000 8:0000000000000000 +result zone=z2 ; 0:3ff0000000000000 1:0000000000000000 2:0000000000000000 4:0000000000000000 5:0000000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case cmp_series == bool right +expr a == bool scalar(s) +grid -752605535025 1 4 +series __name__=a,host=h1,job=j1,zone=z2 ; 0:8000000000000002 1:c078d60000000000 +series __name__=a,job=j2 ; 0:7ff0000000000000 1:7ff8000000000001 3:0000000000000001 +series __name__=a,zone=z2 ; 0:8000000000000002 1:c01c000000000000 2:c010000000000000 3:0000000000000001 +scalar ; 0:8000000000000002 1:7ff8000000000001 2:401c48f5c28f5c29 3:0000000000000001 +result host=h1,job=j1,zone=z2 ; 0:3ff0000000000000 1:0000000000000000 +result job=j2 ; 0:0000000000000000 1:0000000000000000 3:3ff0000000000000 +result zone=z2 ; 0:3ff0000000000000 1:0000000000000000 2:0000000000000000 3:3ff0000000000000 +end +case cmp_series == filter left +expr scalar(s) == a +grid 1016037136791 15000 3 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:8000000000000001 +series __name__=a,host=h2,job=j2,zone=z2 ; 1:bfe0000000000000 2:c018000000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:0000000000000000 +end +case cmp_series == filter right +expr a == scalar(s) +grid 1748454173995 60000 8 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:000fffffffffffff 1:3fe0000000000000 2:00000eddc91d762a 4:4010000000000000 6:c066d00000000000 7:c003c28f5c28f5c3 +series __name__=a,host=h2,zone=z2 ; 0:000fffffffffffff 1:7ff8000000000001 2:00000eddc91d762a 3:3ff0000000000000 4:40e64a4000000000 5:40cf6bc000000000 7:4008000000000000 +series __name__=a,host=h1,job=j1,zone=z1 ; 1:4341c37937e08000 2:c0f3585800000000 3:8000000000000000 4:0000000000000000 5:401ae7ae147ae148 +scalar ; 0:000fffffffffffff 1:3fe0000000000000 2:00000eddc91d762a 3:c01c91eb851eb852 4:0000000000000000 5:800000000019f5fc 6:7ff8000000000001 7:4008000000000000 +result __name__=a,host=h1,job=j1,zone=z1 ; 4:0000000000000000 +result __name__=a,host=h2,job=j1,zone=z1 ; 0:000fffffffffffff 1:3fe0000000000000 2:00000eddc91d762a +result __name__=a,host=h2,zone=z2 ; 0:000fffffffffffff 2:00000eddc91d762a 7:4008000000000000 +end +case cmp_series != filter left +expr scalar(s) != a +grid 3944062687830 15000 6 +series __name__=a,job=j2,zone=z1 ; 0:c020000000000000 1:4341c37937e08000 2:799085f0af3baefc 5:4000000000000000 +series __name__=a,job=j1,zone=z1 ; 0:412290ee00000000 1:c341c37937e08000 4:c0a3768000000000 +scalar ; 0:7ff8000000000001 1:c341c37937e08000 2:4022000000000000 3:7ff8000000000001 4:7ff8000000000001 5:4000000000000000 +result __name__=a,job=j1,zone=z1 ; 0:412290ee00000000 4:c0a3768000000000 +result __name__=a,job=j2,zone=z1 ; 0:c020000000000000 1:4341c37937e08000 2:799085f0af3baefc +end +case cmp_series != filter right +expr a != scalar(s) +grid 1718785814050 15000 4 +series __name__=a,host=h1,zone=z2 ; 0:40f4ba4000000000 2:bfe0000000000000 +series __name__=a,host=h1,zone=z1 ; 0:000000014f2bbb6d 1:000000042addda45 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:fff0000000000000 3:7ff8000000000001 +result __name__=a,host=h1,zone=z1 ; 0:000000014f2bbb6d 1:000000042addda45 +result __name__=a,host=h1,zone=z2 ; 0:40f4ba4000000000 2:bfe0000000000000 +end +case cmp_series != bool left +expr scalar(s) != bool a +grid -3370042752947 1 7 +series __name__=a,zone=z2 ; 0:c341c37937e08000 1:00406c866a03f65e 2:7d7e0c9d7f8e5fc0 3:782f9c389d0c97a0 4:c00a7ae147ae147b 6:4018000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:800000383e6fce0d 1:4008000000000000 2:7d7e0c9d7f8e5fc0 3:40c3308000000000 4:fc98bf69375b43f6 5:78e83dc8a0eea200 6:fda1f617fa6cf160 +series __name__=a,host=h2,zone=z1 ; 0:40bf2e8000000000 1:412a60ee00000000 3:40c3308000000000 4:411942cc00000000 +scalar ; 0:c341c37937e08000 1:fe1215060086b290 2:7d7e0c9d7f8e5fc0 3:40c3308000000000 4:c00a7ae147ae147b 5:bfe0000000000000 6:c052aa6666666667 +result host=h1,job=j2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 2:0000000000000000 3:0000000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +result host=h2,zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 +result zone=z2 ; 0:0000000000000000 1:3ff0000000000000 2:0000000000000000 3:3ff0000000000000 4:0000000000000000 6:3ff0000000000000 +end +case cmp_series != bool right +expr a != bool scalar(s) +grid -3513728913590 60000 4 +series __name__=a,zone=z1 ; 0:401e8e147ae147ae 1:f8c131a48f9ecba8 3:4022000000000000 +series __name__=a,host=h1,job=j2 ; 1:401628f5c28f5c29 2:8003803b041ecd79 3:4014000000000000 +series __name__=a,host=h1,job=j1 ; 3:bfd61eb851eb851f +scalar ; 0:7ff8000000000001 1:fe2294e1a6aa7f6c 2:3fe0000000000000 3:7ff8000000000001 +result host=h1,job=j1 ; 3:3ff0000000000000 +result host=h1,job=j2 ; 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +result zone=z1 ; 0:3ff0000000000000 1:3ff0000000000000 3:3ff0000000000000 +end +case cmp_series != filter left +expr scalar(s) != a +grid 2166555175190 15000 6 +series __name__=a,host=h1,job=j2,zone=z2 ; 1:bff0000000000000 2:c081db0000000000 3:c0e260b000000000 4:0000000000000001 5:4054226666666667 +scalar ; 0:7ff8000000000001 1:c054a80000000000 2:c341c37937e08000 3:3fe11cac083126ea 4:7ff8000000000001 5:7ff8000000000001 +result __name__=a,host=h1,job=j2,zone=z2 ; 1:bff0000000000000 2:c081db0000000000 3:c0e260b000000000 4:0000000000000001 5:4054226666666667 +end +case cmp_series != filter right +expr a != scalar(s) +grid 382236859121 1 4 +series __name__=a,job=j2,zone=z1 ; 1:40d5ec8000000000 2:ffefffffffffffff 3:c0f3d94000000000 +scalar ; 0:7ff0000000000000 1:7ff0000000000000 2:ffefffffffffffff 3:bff0000000000000 +result __name__=a,job=j2,zone=z1 ; 1:40d5ec8000000000 3:c0f3d94000000000 +end +case cmp_series > filter left +expr scalar(s) > a +grid -3847587411332 1 3 +series __name__=a,host=h1,zone=z2 ; 0:40e81be000000000 1:bff0000000000000 2:40ea6da000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 0:408ea90000000000 1:40a0a68000000000 2:7daa47008c1a4580 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 +end +case cmp_series > filter right +expr a > scalar(s) +grid -762237126636 60000 9 +series __name__=a,host=h1,zone=z1 ; 0:c0856d0000000000 1:bfe3d1eb851eb852 3:4021333333333333 5:3fe0000000000000 7:c02f000000000000 +series __name__=a,zone=z2 ; 1:c1242b1600000000 3:bfed051eb851eb85 4:783e34cd9be4cda4 6:404d6b3333333334 7:c020000000000000 8:c018000000000000 +scalar ; 0:000fffffffffffff 1:0000000000000000 2:7ff8000000000001 3:7ff8000000000001 4:7ff8000000000001 5:c018000000000000 6:4123227000000000 7:4018000000000000 8:c042366666666667 +result __name__=a,host=h1,zone=z1 ; 5:3fe0000000000000 +result __name__=a,zone=z2 ; 8:c018000000000000 +end +case cmp_series > bool left +expr scalar(s) > bool a +grid -2407027856865 15000 4 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:bfe174bc6a7ef9db 1:bfe0000000000000 2:7d191eb879a20060 3:792c9977a3717cec +series __name__=a,host=h1,job=j2 ; 0:c1210a4e00000000 1:fb7f853820b3df40 3:c008000000000000 +series __name__=a,host=h1,job=j2,zone=z1 ; 1:bff0000000000000 3:bfe0000000000000 +scalar ; 0:c1210a4e00000000 1:bff0000000000000 2:7ff8000000000001 3:7ff8000000000001 +result host=h1,job=j1,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +result host=h1,job=j2 ; 0:0000000000000000 1:3ff0000000000000 3:0000000000000000 +result host=h1,job=j2,zone=z1 ; 1:0000000000000000 3:0000000000000000 +end +case cmp_series > bool right +expr a > bool scalar(s) +grid -1969544095013 1000 9 +series __name__=a,job=j2,zone=z1 ; 0:40832d0000000000 2:40ec80e000000000 3:c00d000000000000 4:bff0000000000000 7:c024000000000000 8:4048cccccccccccd +series __name__=a,host=h2,job=j2,zone=z1 ; 0:401c000000000000 1:0000000000000000 2:4000000000000000 3:80000000000000a5 4:c1166a4800000000 7:0001389181ab2320 8:3ffb2e147ae147ae +series __name__=a,zone=z2 ; 2:fff0000000000000 4:c01c000000000000 5:4022770a3d70a3d7 6:4020000000000000 7:0001389181ab2320 +scalar ; 0:401c000000000000 1:4341c37937e08000 2:fff0000000000000 3:c00d000000000000 4:7ff8000000000001 5:fff0000000000000 6:3ff0000000000000 7:0001389181ab2320 8:4000000000000000 +result host=h2,job=j2,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:3ff0000000000000 3:3ff0000000000000 4:0000000000000000 7:0000000000000000 8:0000000000000000 +result job=j2,zone=z1 ; 0:3ff0000000000000 2:3ff0000000000000 3:0000000000000000 4:0000000000000000 7:0000000000000000 8:3ff0000000000000 +result zone=z2 ; 2:0000000000000000 4:0000000000000000 5:3ff0000000000000 6:3ff0000000000000 7:0000000000000000 +end +case cmp_series > filter left +expr scalar(s) > a +grid -2005499114994 15000 3 +series __name__=a,host=h1,job=j1 ; 1:c11f70d400000000 +scalar ; 0:bfd0c083126e978d 1:7ff8000000000001 2:0000000000000001 +end +case cmp_series > filter right +expr a > scalar(s) +grid -315861847005 1 4 +series __name__=a,job=j2,zone=z2 ; 0:c0e688c000000000 1:8000000000000001 2:c0f2ed5000000000 3:c018000000000000 +series __name__=a,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 1:bff2b851eb851eb8 2:c050c00000000000 3:4010000000000000 +scalar ; 0:ffe1ccf385ebc8a0 1:0000000000000b16 2:c0bee24000000000 3:4010000000000000 +result __name__=a,job=j1,zone=z2 ; 2:c050c00000000000 +result __name__=a,job=j2,zone=z2 ; 0:c0e688c000000000 +end +case cmp_series < filter left +expr scalar(s) < a +grid -1976241462123 1000 10 +series __name__=a,job=j2,zone=z2 ; 0:8000000000000a00 2:40e8f6a000000000 3:c011400000000000 6:fd7cee20bab01e70 7:c061400000000000 9:000fffffffffffff +series __name__=a,host=h2,zone=z2 ; 0:fa12304fb6bcbf88 1:408eb40000000000 2:0000000000000000 4:ffefffffffffffff 5:4054fccccccccccd 7:7fe1ccf385ebc8a0 8:c1149d5800000000 9:7f1ad55e04c7ed78 +scalar ; 0:7ff8000000000001 1:411c658800000000 2:ffe1ccf385ebc8a0 3:4341c37937e08000 4:7ff8000000000001 5:4054fccccccccccd 6:fd7cee20bab01e70 7:7fe1ccf385ebc8a0 8:ffefffffffffffff 9:7f1ad55e04c7ed78 +result __name__=a,host=h2,zone=z2 ; 2:0000000000000000 8:c1149d5800000000 +result __name__=a,job=j2,zone=z2 ; 2:40e8f6a000000000 +end +case cmp_series < filter right +expr a < scalar(s) +grid -906615239018 15000 4 +series __name__=a,host=h1 ; 0:7ff8000000000001 1:40bd524000000000 2:fff0000000000000 3:bfe1b126e978d4fe +series __name__=a,job=j2,zone=z2 ; 0:bfc08f5c28f5c28f 1:c001c51eb851eb85 2:fff0000000000000 3:8000000000000004 +series __name__=a,host=h1,job=j2 ; 0:bff0000000000000 1:8000000000000000 2:c0c019e000000000 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:c020000000000000 3:8000000000000004 +result __name__=a,host=h1 ; 2:fff0000000000000 3:bfe1b126e978d4fe +result __name__=a,host=h1,job=j2 ; 2:c0c019e000000000 +result __name__=a,job=j2,zone=z2 ; 2:fff0000000000000 +end +case cmp_series < bool left +expr scalar(s) < bool a +grid -990273715727 1 5 +series __name__=a,host=h2,zone=z1 ; 0:4010000000000000 2:40df626000000000 4:8002f3fc197b6a7c +series __name__=a,host=h2,job=j2,zone=z2 ; 1:3fcf26e978d4fdf4 2:0000000000000000 +scalar ; 0:4010000000000000 1:4000000000000000 2:0000000000000000 3:7ff8000000000001 4:8002f3fc197b6a7c +result host=h2,job=j2,zone=z2 ; 1:0000000000000000 2:0000000000000000 +result host=h2,zone=z1 ; 0:0000000000000000 2:3ff0000000000000 4:0000000000000000 +end +case cmp_series < bool right +expr a < bool scalar(s) +grid 2148241185924 60000 10 +series __name__=a,host=h1,job=j2 ; 0:79a6c9ca582f3ce8 1:c000000000000000 2:8000000000000000 6:400f147ae147ae15 7:4030666666666667 8:3fe0000000000000 9:3fe0000000000000 +series __name__=a,host=h1,job=j1,zone=z2 ; 1:40e1bb1000000000 2:fff0000000000000 3:f8026de98c83ff80 4:c0025c28f5c28f5c 6:c0212147ae147ae1 8:c085b70000000000 9:408cd00000000000 +scalar ; 0:c020c147ae147ae1 1:40e1bb1000000000 2:fff0000000000000 3:4024000000000000 4:f94a6b3550ce1db8 5:7ff8000000000001 6:400f147ae147ae15 7:7ff8000000000001 8:c085b70000000000 9:4000000000000000 +result host=h1,job=j1,zone=z2 ; 1:0000000000000000 2:0000000000000000 3:3ff0000000000000 4:0000000000000000 6:3ff0000000000000 8:0000000000000000 9:0000000000000000 +result host=h1,job=j2 ; 0:0000000000000000 1:3ff0000000000000 2:0000000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 9:3ff0000000000000 +end +case cmp_series < filter left +expr scalar(s) < a +grid -370142605627 1000 6 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:406a940000000000 1:7923741e11a506a0 2:0000000000001824 4:3fe4cccccccccccd 5:40a9f00000000000 +series __name__=a,host=h1,job=j1 ; 0:3fe8000000000000 1:ffefffffffffffff 2:4014600000000000 4:ff3943f8d6e1caa8 5:4010000000000000 +series __name__=a,host=h2,zone=z1 ; 1:3ffdc7ae147ae148 2:c0857c0000000000 3:4014000000000000 4:ff3943f8d6e1caa8 5:410410b800000000 +scalar ; 0:c125455000000000 1:7ff8000000000001 2:4014600000000000 3:8021a76142ef65b0 4:ff3943f8d6e1caa8 5:bfa8c49ba5e353f8 +result __name__=a,host=h1,job=j1 ; 0:3fe8000000000000 5:4010000000000000 +result __name__=a,host=h1,job=j1,zone=z1 ; 0:406a940000000000 4:3fe4cccccccccccd 5:40a9f00000000000 +result __name__=a,host=h2,zone=z1 ; 3:4014000000000000 5:410410b800000000 +end +case cmp_series < filter right +expr a < scalar(s) +grid -465959318403 60000 8 +series __name__=a,zone=z1 ; 0:4040e1999999999a 1:c01fa00000000000 2:80000000000000f5 3:4020000000000000 5:4341c37937e08000 7:40c3286000000000 +series __name__=a,job=j1,zone=z2 ; 0:00048c3d42df2ec4 1:4114c46800000000 2:0000000000000001 3:fbe3a1d2a4f32aae 4:4056a00000000000 5:4341c37937e08000 7:c078420000000000 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:c047666666666667 1:40a1418000000000 2:4128671200000000 4:0025f0075e8d36d8 5:4020000000000000 7:3ff0000000000000 +scalar ; 0:4040e1999999999a 1:7ff8000000000001 2:bfeed2f1a9fbe76d 3:3fcbf3b645a1cac1 4:7ff8000000000001 5:4341c37937e08000 6:7ff8000000000001 7:3ff0000000000000 +result __name__=a,host=h2,job=j2,zone=z1 ; 0:c047666666666667 5:4020000000000000 +result __name__=a,job=j1,zone=z2 ; 0:00048c3d42df2ec4 3:fbe3a1d2a4f32aae 7:c078420000000000 +end +case cmp_series >= filter left +expr scalar(s) >= a +grid -2216436038566 15000 7 +series __name__=a,host=h1,zone=z1 ; 0:4081bd0000000000 1:412d973200000000 3:4014000000000000 5:4000000000000000 6:c0f6eb3000000000 +series __name__=a,job=j1,zone=z2 ; 0:3ff36b851eb851ec 1:40b0824000000000 2:40138e147ae147ae 3:000000000048e4df 4:40f66ca000000000 5:c124234600000000 6:7fa81abce11c8f10 +scalar ; 0:7ff8000000000001 1:7ff8000000000001 2:c0b7778000000000 3:4014000000000000 4:40f66ca000000000 5:c01fb33333333334 6:c0f6eb3000000000 +result __name__=a,host=h1,zone=z1 ; 3:4014000000000000 6:c0f6eb3000000000 +result __name__=a,job=j1,zone=z2 ; 3:000000000048e4df 4:40f66ca000000000 5:c124234600000000 +end +case cmp_series >= filter right +expr a >= scalar(s) +grid -2877408404732 1 8 +series __name__=a,host=h1 ; 0:fcd51327b678bc42 3:c0b2854000000000 4:fff0000000000000 5:7da089c838b80ee6 6:bff0000000000000 7:8000000031fe45f1 +series __name__=a,job=j2,zone=z1 ; 0:fcd51327b678bc42 1:c0f8542000000000 3:c121e70200000000 4:ffe1ccf385ebc8a0 5:c0e1e86000000000 7:800000000000192d +scalar ; 0:fcd51327b678bc42 1:c0486b3333333334 2:bfed3020c49ba5e3 3:c0b2854000000000 4:ffe1ccf385ebc8a0 5:0000000000000001 6:7ff8000000000001 7:7ff8000000000001 +result __name__=a,host=h1 ; 0:fcd51327b678bc42 3:c0b2854000000000 5:7da089c838b80ee6 +result __name__=a,job=j2,zone=z1 ; 0:fcd51327b678bc42 4:ffe1ccf385ebc8a0 +end +case cmp_series >= bool left +expr scalar(s) >= bool a +grid -2605803025859 1 8 +series __name__=a,job=j1,zone=z1 ; 0:3ff0000000000000 1:403b1ccccccccccd 2:0000000000000001 3:3ff0000000000000 4:c0f3fd3000000000 5:c032700000000000 7:c0f3184800000000 +scalar ; 0:3fe0000000000000 1:7ff8000000000001 2:0000000000000001 3:3ff0000000000000 4:3fea3645a1cac083 5:4008000000000000 6:8000000000000000 7:7ff8000000000001 +result job=j1,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 7:0000000000000000 +end +case cmp_series >= bool right +expr a >= bool scalar(s) +grid 1573535946418 60000 3 +series __name__=a,host=h1,zone=z2 ; 0:ffefffffffffffff 1:7ff0000000000000 2:7fe1ccf385ebc8a0 +series __name__=a,host=h1,job=j2 ; 0:40292ccccccccccd 1:f8cfe15ea9e4f280 +series __name__=a,host=h2,job=j1,zone=z1 ; 1:c0f1d66800000000 2:800000137f0fee95 +scalar ; 0:ffefffffffffffff 1:bffb8a3d70a3d70a 2:7ff8000000000001 +result host=h1,job=j2 ; 0:3ff0000000000000 1:0000000000000000 +result host=h1,zone=z2 ; 0:3ff0000000000000 1:3ff0000000000000 2:0000000000000000 +result host=h2,job=j1,zone=z1 ; 1:0000000000000000 2:0000000000000000 +end +case cmp_series >= filter left +expr scalar(s) >= a +grid -818464231766 1 3 +series __name__=a,host=h2,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 1:c102287000000000 2:4010000000000000 +series __name__=a,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 1:4000000000000000 2:c089980000000000 +scalar ; 0:ffe1ccf385ebc8a0 1:8000000000000001 2:40f028b800000000 +result __name__=a,host=h2,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 1:c102287000000000 2:4010000000000000 +result __name__=a,job=j1,zone=z2 ; 0:ffe1ccf385ebc8a0 2:c089980000000000 +end +case cmp_series >= filter right +expr a >= scalar(s) +grid 2940312906416 60000 4 +series __name__=a,host=h2,zone=z2 ; 0:3fe0000000000000 2:7fe1ccf385ebc8a0 3:c1084ac000000000 +series __name__=a,host=h1,job=j1 ; 0:3fe0000000000000 1:c01810a3d70a3d71 2:c341c37937e08000 3:800000000003ba29 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:3fe3f6c8b4395811 1:405b500000000000 2:c000000000000000 3:bfe8ed916872b021 +scalar ; 0:3fe0000000000000 1:7fe1ccf385ebc8a0 2:7fe1ccf385ebc8a0 3:c1084ac000000000 +result __name__=a,host=h1,job=j1 ; 0:3fe0000000000000 3:800000000003ba29 +result __name__=a,host=h2,job=j2,zone=z1 ; 0:3fe3f6c8b4395811 3:bfe8ed916872b021 +result __name__=a,host=h2,zone=z2 ; 0:3fe0000000000000 2:7fe1ccf385ebc8a0 3:c1084ac000000000 +end +case cmp_series <= filter left +expr scalar(s) <= a +grid -1116929044391 1000 9 +series __name__=a,host=h2,job=j1,zone=z1 ; 0:fc363bc7206a8ada 1:c0225851eb851eb8 2:8000000009b9577f 3:bfe73c6a7ef9db23 4:fff0000000000000 5:c066300000000000 6:408e880000000000 7:411fc4d000000000 +series __name__=a,host=h1,zone=z1 ; 0:c0b0c84000000000 3:c014466666666667 6:c005947ae147ae15 7:4024000000000000 8:c01b333333333333 +scalar ; 0:3feb9374bc6a7efa 1:4000000000000000 2:7ff8000000000001 3:7ff8000000000001 4:ffefffffffffffff 5:800000000280d70f 6:bfe0000000000000 7:411fc4d000000000 8:ffefffffffffffff +result __name__=a,host=h1,zone=z1 ; 8:c01b333333333333 +result __name__=a,host=h2,job=j1,zone=z1 ; 6:408e880000000000 7:411fc4d000000000 +end +case cmp_series <= filter right +expr a <= scalar(s) +grid 585246945979 1 10 +series __name__=a,host=h2,job=j2,zone=z1 ; 0:7ff0000000000000 1:7b293605b7246f50 2:800001cec9614dd8 3:40a2b38000000000 4:c0f2a57000000000 5:4028b9999999999a 6:bfe0000000000000 8:bfecb020c49ba5e3 9:fc3ed04d56464080 +series __name__=a,host=h1 ; 0:c01c000000000000 1:40ba7d4000000000 2:8000000000000001 4:401cb0a3d70a3d71 6:bfe0000000000000 7:4123a54c00000000 8:80000000000001ea 9:8000000000000001 +scalar ; 0:c01c000000000000 1:40ba7d4000000000 2:8000000000000001 3:c341c37937e08000 4:c0f2a57000000000 5:bfe0000000000000 6:bfe0000000000000 7:7ff8000000000001 8:80000000000001ea 9:000fffffffffffff +result __name__=a,host=h1 ; 0:c01c000000000000 1:40ba7d4000000000 2:8000000000000001 6:bfe0000000000000 8:80000000000001ea 9:8000000000000001 +result __name__=a,host=h2,job=j2,zone=z1 ; 2:800001cec9614dd8 4:c0f2a57000000000 6:bfe0000000000000 8:bfecb020c49ba5e3 9:fc3ed04d56464080 +end +case cmp_series <= bool left +expr scalar(s) <= bool a +grid 1452710421096 1 10 +series __name__=a,host=h2,zone=z1 ; 0:0000000000000001 1:401827ae147ae148 2:8000000000000001 3:c121c6c800000000 4:80000081103790aa 5:c0b7570000000000 6:c0d4ba4000000000 7:c01b4a3d70a3d70a 8:00075f7e449ee7ca +scalar ; 0:3fed051eb851eb85 1:7ff8000000000001 2:7ff8000000000001 3:7fefffffffffffff 4:80000081103790aa 5:fbef539d002184d8 6:7b0d503e4afd3fba 7:7ff8000000000001 8:7ff8000000000001 9:7fe1ccf385ebc8a0 +result host=h2,zone=z1 ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:3ff0000000000000 5:3ff0000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 +end +case cmp_series <= bool right +expr a <= bool scalar(s) +grid -431764880618 15000 7 +series __name__=a,host=h2,zone=z1 ; 0:8000000000000000 1:408a9f0000000000 5:4081ca0000000000 6:bfdf5810624dd2f2 +series __name__=a,host=h1,job=j2,zone=z2 ; 0:4129d06600000000 1:4043c00000000000 2:fe9390a01771b004 4:4000000000000000 5:f92c6b82ddbff24a 6:40889a0000000000 +series __name__=a,host=h1,zone=z1 ; 2:7fe1ccf385ebc8a0 3:000fffffffffffff 4:4000000000000000 +scalar ; 0:7ff8000000000001 1:4043c00000000000 2:7fe1ccf385ebc8a0 3:ff72ab6bd4c95554 4:4000000000000000 5:4081ca0000000000 6:c0741e0000000000 +result host=h1,job=j2,zone=z2 ; 0:0000000000000000 1:3ff0000000000000 2:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:0000000000000000 +result host=h1,zone=z1 ; 2:3ff0000000000000 3:0000000000000000 4:3ff0000000000000 +result host=h2,zone=z1 ; 0:0000000000000000 1:0000000000000000 5:3ff0000000000000 6:0000000000000000 +end +case cmp_series <= filter left +expr scalar(s) <= a +grid 3800189426750 1 9 +series __name__=a,job=j1,zone=z2 ; 0:40e3867000000000 1:8000000299b3dc5c 2:41213e1000000000 3:bfcfa5e353f7ced9 6:7fe1ccf385ebc8a0 7:c078b00000000000 8:bfe665604189374c +series __name__=a,host=h2,job=j1,zone=z1 ; 0:c03aaccccccccccd 1:8000000299b3dc5c 2:8000000000000001 3:c048a33333333334 4:401c000000000000 5:404b49999999999a 6:c0f7c14000000000 7:00000000000396b3 8:bff0000000000000 +series __name__=a,zone=z2 ; 1:3fda8f5c28f5c290 3:bff0000000000000 4:c048066666666667 5:7f6a22cc65294062 6:c0d239a000000000 7:40877d0000000000 8:f8ad3b190d7d1748 +scalar ; 0:bfb3be76c8b43958 1:8000000299b3dc5c 2:8000000000000001 3:7ff8000000000001 4:7ff8000000000001 5:7f6a22cc65294062 6:7ff8000000000001 7:c0536ccccccccccd 8:bff0000000000000 +result __name__=a,host=h2,job=j1,zone=z1 ; 1:8000000299b3dc5c 2:8000000000000001 7:00000000000396b3 8:bff0000000000000 +result __name__=a,job=j1,zone=z2 ; 0:40e3867000000000 1:8000000299b3dc5c 2:41213e1000000000 8:bfe665604189374c +result __name__=a,zone=z2 ; 1:3fda8f5c28f5c290 5:7f6a22cc65294062 7:40877d0000000000 +end +case cmp_series <= filter right +expr a <= scalar(s) +grid -3501166042161 1000 6 +series __name__=a,host=h1,job=j1,zone=z1 ; 0:7ff0000000000000 1:c008000000000000 +scalar ; 0:7ff8000000000001 1:c08ad40000000000 2:4000000000000000 3:7ff8000000000001 4:0000000000000c3f 5:fff0000000000000 +end +case scalar_arith + ff150c6793dae47a fff0000000000000 +expr (-1.443430476932391e+304) + (-Inf) +grid -1562468048424 1000 3 +result - ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 +end +case scalar_arith + c01c000000000000 4116397400000000 +expr (-7) + 364125 +grid -3453892195395 1 4 +result - ; 0:4116395800000000 1:4116395800000000 2:4116395800000000 3:4116395800000000 +end +case scalar_arith + 3f97ef9db22d0e56 fff0000000000000 +expr 0.023375 + (-Inf) +grid 3213211193605 15000 7 +result - ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 3:fff0000000000000 4:fff0000000000000 5:fff0000000000000 6:fff0000000000000 +end +case scalar_arith + 4008000000000000 feb72a34cced1572 +expr 3 + (-2.482135563018227e+302) +grid 3859525012264 1 5 +result - ; 0:feb72a34cced1572 1:feb72a34cced1572 2:feb72a34cced1572 3:feb72a34cced1572 4:feb72a34cced1572 +end +case scalar_arith + bffa000000000000 000fffffffffffff +expr (-1.625) + 2.225073858507201e-308 +grid -699289816674 1000 3 +result - ; 0:bffa000000000000 1:bffa000000000000 2:bffa000000000000 +end +case scalar_arith + c01c000000000000 7ff0000000000000 +expr (-7) + Inf +grid 1844045044498 1 4 +result - ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:7ff0000000000000 +end +case scalar_arith - ffe1ccf385ebc8a0 bfe247ae147ae148 +expr (-1e+308) - (-0.57125) +grid 3595962814817 60000 7 +result - ; 0:ffe1ccf385ebc8a0 1:ffe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:ffe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 6:ffe1ccf385ebc8a0 +end +case scalar_arith - bfe0000000000000 8000000000012999 +expr (-0.5) - (-3.76404e-319) +grid 627070088333 1000 3 +result - ; 0:bfe0000000000000 1:bfe0000000000000 2:bfe0000000000000 +end +case scalar_arith - 785b5e9a03269a08 7fe1ccf385ebc8a0 +expr 5.7836708011160664e+271 - 1e+308 +grid -1550761407026 1000 8 +result - ; 0:ffe1ccf385ebc8a0 1:ffe1ccf385ebc8a0 2:ffe1ccf385ebc8a0 3:ffe1ccf385ebc8a0 4:ffe1ccf385ebc8a0 5:ffe1ccf385ebc8a0 6:ffe1ccf385ebc8a0 7:ffe1ccf385ebc8a0 +end +case scalar_arith - c0c2868000000000 0000000000000001 +expr (-9485) - 5e-324 +grid -2334412849559 15000 6 +result - ; 0:c0c2868000000000 1:c0c2868000000000 2:c0c2868000000000 3:c0c2868000000000 4:c0c2868000000000 5:c0c2868000000000 +end +case scalar_arith - 0000000000000001 c0f489d000000000 +expr 5e-324 - (-84125) +grid -795628985409 1000 4 +result - ; 0:40f489d000000000 1:40f489d000000000 2:40f489d000000000 3:40f489d000000000 +end +case scalar_arith - 7ff0000000000000 c0e7250000000000 +expr Inf - (-47400) +grid 825586362718 15000 7 +result - ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:7ff0000000000000 4:7ff0000000000000 5:7ff0000000000000 6:7ff0000000000000 +end +case scalar_arith * 80000002967888d9 ffefffffffffffff +expr (-5.4912512896e-314) * (-1.7976931348623157e+308) +grid -2110897578847 1 10 +result - ; 0:3ee4b3c446c7ffff 1:3ee4b3c446c7ffff 2:3ee4b3c446c7ffff 3:3ee4b3c446c7ffff 4:3ee4b3c446c7ffff 5:3ee4b3c446c7ffff 6:3ee4b3c446c7ffff 7:3ee4b3c446c7ffff 8:3ee4b3c446c7ffff 9:3ee4b3c446c7ffff +end +case scalar_arith * bfe4c5a1cac08313 3fe0000000000000 +expr (-0.6491250000000001) * 0.5 +grid 3213943729581 15000 8 +result - ; 0:bfd4c5a1cac08313 1:bfd4c5a1cac08313 2:bfd4c5a1cac08313 3:bfd4c5a1cac08313 4:bfd4c5a1cac08313 5:bfd4c5a1cac08313 6:bfd4c5a1cac08313 7:bfd4c5a1cac08313 +end +case scalar_arith * c089710000000000 40c58ec000000000 +expr (-814.125) * 11037.5 +grid 478523406195 15000 10 +result - ; 0:c16123a616000000 1:c16123a616000000 2:c16123a616000000 3:c16123a616000000 4:c16123a616000000 5:c16123a616000000 6:c16123a616000000 7:c16123a616000000 8:c16123a616000000 9:c16123a616000000 +end +case scalar_arith * 3fd8e76c8b439581 3fd099999999999a +expr 0.389125 * 0.259375 +grid -600010871673 60000 7 +result - ; 0:3fb9d6809d495183 1:3fb9d6809d495183 2:3fb9d6809d495183 3:3fb9d6809d495183 4:3fb9d6809d495183 5:3fb9d6809d495183 6:3fb9d6809d495183 +end +case scalar_arith * bfdf20c49ba5e354 4020000000000000 +expr (-0.486375) * 8 +grid -1217738984243 1000 10 +result - ; 0:c00f20c49ba5e354 1:c00f20c49ba5e354 2:c00f20c49ba5e354 3:c00f20c49ba5e354 4:c00f20c49ba5e354 5:c00f20c49ba5e354 6:c00f20c49ba5e354 7:c00f20c49ba5e354 8:c00f20c49ba5e354 9:c00f20c49ba5e354 +end +case scalar_arith * ffe1ccf385ebc8a0 ffefffffffffffff +expr (-1e+308) * (-1.7976931348623157e+308) +grid -1508438064201 15000 7 +result - ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:7ff0000000000000 4:7ff0000000000000 5:7ff0000000000000 6:7ff0000000000000 +end +case scalar_arith / 8000000000000001 000fffffffffffff +expr (-5e-324) / 2.225073858507201e-308 +grid -1285207330527 1000 9 +result - ; 0:bcb0000000000001 1:bcb0000000000001 2:bcb0000000000001 3:bcb0000000000001 4:bcb0000000000001 5:bcb0000000000001 6:bcb0000000000001 7:bcb0000000000001 8:bcb0000000000001 +end +case scalar_arith / 4063c00000000000 000fffffffffffff +expr 158 / 2.225073858507201e-308 +grid 1958769436276 1 6 +result - ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 3:7ff0000000000000 4:7ff0000000000000 5:7ff0000000000000 +end +case scalar_arith / c020000000000000 0000000000000001 +expr (-8) / 5e-324 +grid 1893914483562 60000 3 +result - ; 0:fff0000000000000 1:fff0000000000000 2:fff0000000000000 +end +case scalar_arith / c08f0b0000000000 bff0000000000000 +expr (-993.375) / (-1) +grid 3265801028497 60000 9 +result - ; 0:408f0b0000000000 1:408f0b0000000000 2:408f0b0000000000 3:408f0b0000000000 4:408f0b0000000000 5:408f0b0000000000 6:408f0b0000000000 7:408f0b0000000000 8:408f0b0000000000 +end +case scalar_arith / bfe2ed916872b021 40bf9b4000000000 +expr (-0.5915) / 8091.25 +grid -686188868973 15000 7 +result - ; 0:bf1329e756cdfcab 1:bf1329e756cdfcab 2:bf1329e756cdfcab 3:bf1329e756cdfcab 4:bf1329e756cdfcab 5:bf1329e756cdfcab 6:bf1329e756cdfcab +end +case scalar_arith / 80000000000013b6 bff0000000000000 +expr (-2.493e-320) / (-1) +grid 969398011007 15000 8 +result - ; 0:00000000000013b6 1:00000000000013b6 2:00000000000013b6 3:00000000000013b6 4:00000000000013b6 5:00000000000013b6 6:00000000000013b6 7:00000000000013b6 +end +case scalar_arith % 0000000000000000 8000000000000000 +expr 0 % (-0) +grid -1791724298771 60000 4 +result - ; 0:7ff8000000000001 1:7ff8000000000001 2:7ff8000000000001 3:7ff8000000000001 +end +case scalar_arith % 0000000000000000 7fefffffffffffff +expr 0 % 1.7976931348623157e+308 +grid 2319915577229 60000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_arith % c000000000000000 8000009011599ef1 +expr (-2) % (-3.057112095237e-312) +grid -1552356080703 15000 5 +result - ; 0:80000049e98310ea 1:80000049e98310ea 2:80000049e98310ea 3:80000049e98310ea 4:80000049e98310ea +end +case scalar_arith % 4341c37937e08000 7fefffffffffffff +expr 1e+16 % 1.7976931348623157e+308 +grid -1829887519186 60000 8 +result - ; 0:4341c37937e08000 1:4341c37937e08000 2:4341c37937e08000 3:4341c37937e08000 4:4341c37937e08000 5:4341c37937e08000 6:4341c37937e08000 7:4341c37937e08000 +end +case scalar_arith % 80000000000000ce 4000000000000000 +expr (-1.02e-321) % 2 +grid -2242162762410 15000 10 +result - ; 0:80000000000000ce 1:80000000000000ce 2:80000000000000ce 3:80000000000000ce 4:80000000000000ce 5:80000000000000ce 6:80000000000000ce 7:80000000000000ce 8:80000000000000ce 9:80000000000000ce +end +case scalar_arith % 400ffd70a3d70a3e 78f79da21c727790 +expr 3.9987500000000002 % 5.110199970262858e+274 +grid -1375567499571 1000 6 +result - ; 0:400ffd70a3d70a3e 1:400ffd70a3d70a3e 2:400ffd70a3d70a3e 3:400ffd70a3d70a3e 4:400ffd70a3d70a3e 5:400ffd70a3d70a3e +end +case scalar_arith ^ c341c37937e08000 bff0000000000000 +expr (-1e+16) ^ (-1) +grid 3178290779731 1000 3 +result - ; 0:bc9cd2b297d889bc 1:bc9cd2b297d889bc 2:bc9cd2b297d889bc +end +case scalar_arith ^ 40e94e2000000000 fff0000000000000 +expr 51825 ^ (-Inf) +grid 3290818772905 1000 10 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 9:0000000000000000 +end +case scalar_arith ^ c0885b0000000000 0000000000000000 +expr (-779.375) ^ 0 +grid -3157545724852 1000 7 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case scalar_arith ^ c08bbe0000000000 0000000000000000 +expr (-887.75) ^ 0 +grid -1617617858584 1 4 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 +end +case scalar_arith ^ 4008000000000000 8000000000000001 +expr 3 ^ (-5e-324) +grid 2671042050645 1 8 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case scalar_arith ^ 41200f5400000000 40bab94000000000 +expr 526250 ^ 6841.25 +grid -3129082266419 1000 3 +result - ; 0:7ff0000000000000 1:7ff0000000000000 2:7ff0000000000000 +end +case scalar_arith atan2 4010000000000000 c341c37937e08000 +expr 4 atan2 (-1e+16) +grid -3272431324230 1000 8 +result - ; 0:400921fb54442d17 1:400921fb54442d17 2:400921fb54442d17 3:400921fb54442d17 4:400921fb54442d17 5:400921fb54442d17 6:400921fb54442d17 7:400921fb54442d17 +end +case scalar_arith atan2 c10f76b000000000 000fffffffffffff +expr (-257750) atan2 2.225073858507201e-308 +grid 1256790531919 15000 8 +result - ; 0:bff921fb54442d18 1:bff921fb54442d18 2:bff921fb54442d18 3:bff921fb54442d18 4:bff921fb54442d18 5:bff921fb54442d18 6:bff921fb54442d18 7:bff921fb54442d18 +end +case scalar_arith atan2 3ff0000000000000 c12a3dc600000000 +expr 1 atan2 (-859875) +grid -3430674286899 15000 7 +result - ; 0:400921fab82d2f1b 1:400921fab82d2f1b 2:400921fab82d2f1b 3:400921fab82d2f1b 4:400921fab82d2f1b 5:400921fab82d2f1b 6:400921fab82d2f1b +end +case scalar_arith atan2 4018000000000000 3ff0000000000000 +expr 6 atan2 1 +grid 1197376066024 15000 9 +result - ; 0:3ff67d8863bc99bc 1:3ff67d8863bc99bc 2:3ff67d8863bc99bc 3:3ff67d8863bc99bc 4:3ff67d8863bc99bc 5:3ff67d8863bc99bc 6:3ff67d8863bc99bc 7:3ff67d8863bc99bc 8:3ff67d8863bc99bc +end +case scalar_arith atan2 807b584ab2d0b7e6 4000000000000000 +expr (-2.4337759790762287e-306) atan2 2 +grid 1955453744460 15000 9 +result - ; 0:806b584ab2d0b7e6 1:806b584ab2d0b7e6 2:806b584ab2d0b7e6 3:806b584ab2d0b7e6 4:806b584ab2d0b7e6 5:806b584ab2d0b7e6 6:806b584ab2d0b7e6 7:806b584ab2d0b7e6 8:806b584ab2d0b7e6 +end +case scalar_arith atan2 c036200000000000 8000000000000000 +expr (-22.125) atan2 (-0) +grid 230181552877 1 9 +result - ; 0:bff921fb54442d18 1:bff921fb54442d18 2:bff921fb54442d18 3:bff921fb54442d18 4:bff921fb54442d18 5:bff921fb54442d18 6:bff921fb54442d18 7:bff921fb54442d18 8:bff921fb54442d18 +end +case scalar_cmp == 0000000000000001 0000000000000001 +expr 5e-324 == bool 5e-324 +grid 2078401290336 60000 8 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case scalar_cmp == 0000000000000001 00078ea33ef9ebaa +expr 5e-324 == bool 1.0509550114170526e-308 +grid -43511179112 60000 4 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case scalar_cmp == 4000000000000000 40f5e00000000000 +expr 2 == bool 89600 +grid -194531932377 1000 4 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case scalar_cmp == 407dc20000000000 3fe5e978d4fdf3b6 +expr 476.125 == bool 0.68475 +grid 1010846265599 15000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_cmp != c0b3ad8000000000 c0b3ad8000000000 +expr (-5037.5) != bool (-5037.5) +grid 2702951525091 1 4 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case scalar_cmp != 4008000000000000 c0e4d1b000000000 +expr 3 != bool (-42637.5) +grid 3825348733663 1000 3 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 +end +case scalar_cmp != 4058866666666667 4341c37937e08000 +expr 98.10000000000001 != bool 1e+16 +grid -1034498543894 1000 5 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 +end +case scalar_cmp != c02aa66666666667 7d283b6e697ba898 +expr (-13.325000000000001) != bool 7.738161400042888e+294 +grid -3175525860380 60000 7 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case scalar_cmp > c0b8614000000000 c0b8614000000000 +expr (-6241.25) > bool (-6241.25) +grid -936825591991 60000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_cmp > 4018000000000000 fff0000000000000 +expr 6 > bool (-Inf) +grid 3718274773028 15000 7 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case scalar_cmp > fc8f92d0edda1752 c0afab8000000000 +expr (-9.846197659593935e+291) > bool (-4053.75) +grid 526569778292 15000 10 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 9:0000000000000000 +end +case scalar_cmp > f807beedbd2ed440 3fce10624dd2f1aa +expr (-1.5680980324428948e+270) > bool 0.234875 +grid -657540422291 60000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_cmp < 0000000000000000 0000000000000000 +expr 0 < bool 0 +grid -2665382998343 60000 7 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 +end +case scalar_cmp < 8000000000000001 c051b9999999999a +expr (-5e-324) < bool (-70.9) +grid 641360277663 1 4 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case scalar_cmp < 3ff0000000000000 8000000000000000 +expr 1 < bool (-0) +grid -1755667622751 1000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_cmp < 4050266666666667 0000000000000000 +expr 64.60000000000001 < bool 0 +grid -2078660940787 15000 8 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 +end +case scalar_cmp >= 7fefffffffffffff 7fefffffffffffff +expr 1.7976931348623157e+308 >= bool 1.7976931348623157e+308 +grid -1704116167437 1 10 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 8:3ff0000000000000 9:3ff0000000000000 +end +case scalar_cmp >= c00f51eb851eb852 3fde7ced916872b0 +expr (-3.915) >= bool 0.476375 +grid 733523360552 15000 9 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 7:0000000000000000 8:0000000000000000 +end +case scalar_cmp >= 3ff0000000000000 4021ef5c28f5c28f +expr 1 >= bool 8.9675 +grid -1290881388408 60000 7 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 5:0000000000000000 6:0000000000000000 +end +case scalar_cmp >= 4000000000000000 bfe0000000000000 +expr 2 >= bool (-0.5) +grid -1520239489497 60000 8 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 7:3ff0000000000000 +end +case scalar_cmp <= c0b9938000000000 c0b9938000000000 +expr (-6547.5) <= bool (-6547.5) +grid 3676343854707 60000 7 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 3:3ff0000000000000 4:3ff0000000000000 5:3ff0000000000000 6:3ff0000000000000 +end +case scalar_cmp <= 405755999999999a 3fe0000000000000 +expr 93.3375 <= bool 0.5 +grid 3797793989908 15000 4 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 +end +case scalar_cmp <= 7fe1ccf385ebc8a0 c024000000000000 +expr 1e+308 <= bool (-10) +grid 1884035451639 15000 5 +result - ; 0:0000000000000000 1:0000000000000000 2:0000000000000000 3:0000000000000000 4:0000000000000000 +end +case scalar_cmp <= 00064c35be575116 4008000000000000 +expr 8.758022905721294e-309 <= bool 3 +grid -2763522819369 60000 3 +result - ; 0:3ff0000000000000 1:3ff0000000000000 2:3ff0000000000000 end diff --git a/src/promql/src/map/tests.rs b/src/promql/src/map/tests.rs index a7746a0a283..a1e6769adb9 100644 --- a/src/promql/src/map/tests.rs +++ b/src/promql/src/map/tests.rs @@ -12,6 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +mod arithmetic; +mod broadcast; +mod comparison; +mod math_functions; +mod prometheus; + use std::sync::Arc; use common_query::prometheus::PROMETHEUS_STALE_NAN_BITS; @@ -31,8 +37,6 @@ use datatypes::series::{Label, MetricName}; use super::*; use crate::functions::IeeeSqrt; -mod prometheus; - fn schema(names: &[&str]) -> SeriesSchema { SeriesSchema { fields: names @@ -181,7 +185,7 @@ fn math_preserves_missing_and_uses_ieee_float_semantics() { ), ]; for (op, expected) in cases { - let output = map_math(&schema, &input, op).unwrap(); + let output = map_math(&schema, &input, op).unwrap().unwrap(); let expected = expected .into_iter() .map(Some) @@ -206,7 +210,7 @@ fn short_multifield_slices_keep_absolute_grid_and_labels() { .unwrap(), ]; let input = series(&schema, 7, fields); - let output = map_math(&schema, &input, MathOp::Floor).unwrap(); + let output = map_math(&schema, &input, MathOp::Floor).unwrap().unwrap(); let TimeAxis::Grid(range) = &output.time else { panic!("lost grid axis") }; @@ -262,7 +266,7 @@ fn empty_and_all_missing_ranges_are_not_expanded() { MathOp::Sqrt, MathOp::Round { nearest: 0.0 }, ] { - let output = map_math(&schema, &input, op).unwrap(); + let output = map_math(&schema, &input, op).unwrap().unwrap(); let TimeAxis::Grid(range) = &output.time else { panic!("lost grid axis") }; @@ -285,7 +289,7 @@ fn evaluated_missingness_depends_on_validity_not_nan_payloads() { Some(NullBuffer::from(vec![false, true, true])), ))], ); - let output = map_math(&schema, &input, MathOp::Abs).unwrap(); + let output = map_math(&schema, &input, MathOp::Abs).unwrap().unwrap(); assert_floats( output.fields.get(0).unwrap(), &[None, Some(ordinary_nan), Some(1.0)], @@ -299,12 +303,12 @@ fn evaluated_missingness_depends_on_validity_not_nan_payloads() { // must not reinterpret that computed value as a missing sample or reject the evaluated input. let negative_nan = f64::from_bits(PROMETHEUS_STALE_NAN_BITS | (1_u64 << 63)); let input = series(&schema, 1, vec![floats(&[Some(negative_nan)])]); - let absolute = map_math(&schema, &input, MathOp::Abs).unwrap(); + let absolute = map_math(&schema, &input, MathOp::Abs).unwrap().unwrap(); let SampleRef::Float(computed_nan) = absolute.fields.get(0).unwrap().sample(0) else { panic!("lost computed NaN") }; assert_eq!(computed_nan.to_bits(), PROMETHEUS_STALE_NAN_BITS); - let rounded = map_math(&schema, &absolute, MathOp::Ceil).unwrap(); + let rounded = map_math(&schema, &absolute, MathOp::Ceil).unwrap().unwrap(); assert_floats(rounded.fields.get(0).unwrap(), &[Some(f64::NAN)]); } @@ -347,10 +351,12 @@ fn histogram_and_mixed_fields_are_rejected_without_partial_success() { for unsupported in [histogram, mixed, null_histogram, chunks] { let prefix = floats(&vec![Some(-2.0); unsupported.len()]); let input = series(&schema, 2, vec![prefix, unsupported]); - assert!(matches!( - map_math(&schema, &input, MathOp::Abs), - Err(DataFusionError::NotImplemented(_)) - )); + for op in [MathOp::Abs, MathOp::Clamp { min: 2.0, max: 1.0 }] { + assert!(matches!( + map_math(&schema, &input, op), + Err(DataFusionError::NotImplemented(_)) + )); + } assert_floats( input.fields.get(0).unwrap(), &vec![Some(-2.0); input.time.len()], @@ -402,7 +408,7 @@ fn ordinary_math(op: MathOp, input: Float64Array) -> Float64Array { MathOp::Ceil => math::ceil(), MathOp::Floor => math::floor(), MathOp::Sqrt => Arc::new(IeeeSqrt::scalar_udf()), - MathOp::Round { .. } => unreachable!("round is checked against Prometheus fixtures"), + _ => unreachable!("main agrees with Prometheus only for abs, ceil, floor and sqrt"), }; let arg_fields = args .iter() @@ -471,7 +477,7 @@ fn math_matches_main_udfs_across_float_boundaries() { // Round shares its calculation with the UDF; the Prometheus fixtures check it instead. let cases = [MathOp::Abs, MathOp::Ceil, MathOp::Floor, MathOp::Sqrt]; for op in cases { - let output = map_math(&schema, &series, op).unwrap(); + let output = map_math(&schema, &series, op).unwrap().unwrap(); let expected = ordinary_math(op, input.clone()).iter().collect::>(); for field in output.fields.iter() { assert_floats(field, &expected); @@ -492,7 +498,7 @@ fn math_drops_reserved_metadata_and_empty_labels_with_the_name() { for label in ["__type__", "__unit__", "__other__"] { input.metric.set(label, "x".into()).unwrap(); } - let output = map_math(&schema, &input, MathOp::Abs).unwrap(); + let output = map_math(&schema, &input, MathOp::Abs).unwrap().unwrap(); let names = output .metric .tags() diff --git a/src/promql/src/map/tests/arithmetic.rs b/src/promql/src/map/tests/arithmetic.rs new file mode 100644 index 00000000000..abcf7b405b2 --- /dev/null +++ b/src/promql/src/map/tests/arithmetic.rs @@ -0,0 +1,200 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::*; + +const OPERATIONS: [ArithmeticOp; 7] = [ + ArithmeticOp::Add, + ArithmeticOp::Subtract, + ArithmeticOp::Multiply, + ArithmeticOp::Divide, + ArithmeticOp::Modulo, + ArithmeticOp::Power, + ArithmeticOp::Atan2, +]; + +#[test] +fn unary_negation_drops_name_and_keeps_missing_positions_and_payloads() { + let schema = schema(&["value"]); + let stale = f64::from_bits(PROMETHEUS_STALE_NAN_BITS); + let input = series( + &schema, + 6, + vec![floats(&[Some(-0.0), Some(2.5), Some(-stale), None])], + ); + let mut typed = input.clone(); + typed.metric.set("__type__", "gauge".into()).unwrap(); + let output = map_negate(&schema, &typed).unwrap(); + let field = output.fields.get(0).unwrap(); + assert_floats(field, &[Some(0.0), Some(-2.5), Some(stale), None]); + let SampleRef::Float(negated) = field.iter().nth(2).unwrap() else { + panic!("missing negated NaN"); + }; + assert_eq!(negated.to_bits(), PROMETHEUS_STALE_NAN_BITS); + assert_eq!(output.metric.name(), None); + assert_eq!(output.metric.tags(), &input.metric.tags()[1..]); + assert_eq!(output.time.timestamp(0), Some(4000)); +} + +#[test] +fn noncommutative_arithmetic_keeps_operand_order_across_multifield_slices() { + let schema = schema(&["first", "second"]); + let first = floats(&[Some(99.0), Some(2.0), None, Some(4.0), Some(99.0)]); + let second = floats(&[Some(99.0), None, Some(8.0), Some(-2.0), Some(99.0)]); + let input = series( + &schema, + 9, + vec![ + Samples::try_from_chunks(vec![first.slice(1, 1).unwrap(), first.slice(2, 2).unwrap()]) + .unwrap(), + Samples::try_from_chunks(vec![ + second.slice(1, 2).unwrap(), + second.slice(3, 1).unwrap(), + ]) + .unwrap(), + ], + ); + let left = map_arithmetic( + &schema, + &input, + ArithmeticOp::Divide, + ScalarOperand::Left(8.0), + ) + .unwrap(); + let right = map_arithmetic( + &schema, + &input, + ArithmeticOp::Divide, + ScalarOperand::Right(8.0), + ) + .unwrap(); + assert_floats(left.fields.get(0).unwrap(), &[Some(4.0), None, Some(2.0)]); + assert_floats(left.fields.get(1).unwrap(), &[None, Some(1.0), Some(-4.0)]); + assert_floats(right.fields.get(0).unwrap(), &[Some(0.25), None, Some(0.5)]); + assert_floats( + right.fields.get(1).unwrap(), + &[None, Some(1.0), Some(-0.25)], + ); + for (actual, source) in left.fields.iter().zip(input.fields.iter()) { + let lengths = |samples: &Samples| { + samples + .segments() + .iter() + .map(Samples::len) + .collect::>() + }; + assert_eq!(lengths(actual), lengths(source)); + } + assert_eq!(left.time.timestamp(0), Some(5500)); + assert_eq!(left.time.timestamp(2), Some(6500)); +} + +#[test] +fn power_and_modulo_follow_go_special_cases() { + let schema = schema(&["value"]); + let input = series( + &schema, + 0, + vec![floats(&[ + Some(0.0), + Some(-0.0), + Some(f64::NAN), + Some(-7.0), + None, + ])], + ); + let field = |op, scalar| { + map_arithmetic(&schema, &input, op, scalar) + .unwrap() + .fields + .get(0) + .unwrap() + .clone() + }; + // Main's DataFusion power fails on a zero base with a negative exponent. + assert_floats( + &field(ArithmeticOp::Power, ScalarOperand::Right(-1.0)), + &[ + Some(f64::INFINITY), + Some(f64::NEG_INFINITY), + Some(f64::NAN), + Some(-1.0 / 7.0), + None, + ], + ); + assert_floats( + &field(ArithmeticOp::Power, ScalarOperand::Right(0.0)), + &[Some(1.0), Some(1.0), Some(1.0), Some(1.0), None], + ); + assert_floats( + &field(ArithmeticOp::Power, ScalarOperand::Left(1.0)), + &[Some(1.0), Some(1.0), Some(1.0), Some(1.0), None], + ); + assert_floats( + &field(ArithmeticOp::Modulo, ScalarOperand::Right(3.0)), + &[Some(0.0), Some(-0.0), Some(f64::NAN), Some(-1.0), None], + ); + assert_floats( + &field(ArithmeticOp::Modulo, ScalarOperand::Left(5.0)), + &[ + Some(f64::NAN), + Some(f64::NAN), + Some(f64::NAN), + Some(5.0), + None, + ], + ); +} + +#[test] +fn arithmetic_rejects_unevaluated_and_histogram_inputs() { + let schema = schema(&["value"]); + let histogram = + Samples::try_from_histogram(UInt32Array::from(vec![0]), histogram_batch()).unwrap(); + let input = series(&schema, 2, vec![histogram]); + assert!(matches!( + map_negate(&schema, &input), + Err(DataFusionError::NotImplemented(_)) + )); + for op in OPERATIONS { + assert!(matches!( + map_arithmetic(&schema, &input, op, ScalarOperand::Right(2.0)), + Err(DataFusionError::NotImplemented(_)) + )); + } + let raw_schema = SeriesSchema { + eval_grid: None, + ..schema + }; + let raw = Series::try_new( + &raw_schema, + input.metric, + TimeAxis::try_new(vec![2000].into()).unwrap(), + SeriesFields::one(floats(&[Some(1.0)])), + ) + .unwrap(); + assert!(matches!( + map_negate(&raw_schema, &raw), + Err(DataFusionError::Execution(_)) + )); + assert!(matches!( + map_arithmetic( + &raw_schema, + &raw, + ArithmeticOp::Add, + ScalarOperand::Left(1.0) + ), + Err(DataFusionError::Execution(_)) + )); +} diff --git a/src/promql/src/map/tests/broadcast.rs b/src/promql/src/map/tests/broadcast.rs new file mode 100644 index 00000000000..dd1c4ec415f --- /dev/null +++ b/src/promql/src/map/tests/broadcast.rs @@ -0,0 +1,313 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::*; + +fn scalar(schema: &SeriesSchema, start: usize, samples: Samples) -> Series { + let scalar_schema = SeriesSchema { + fields: vec![FieldSpec { + name: "scalar".into(), + }] + .into(), + eval_grid: schema.eval_grid.clone(), + }; + Series::try_new( + &scalar_schema, + MetricName::try_new(None, vec![]).unwrap(), + TimeAxis::Grid( + GridRange::try_new(schema.eval_grid.clone().unwrap(), start, samples.len()).unwrap(), + ), + SeriesFields::one(samples), + ) + .unwrap() +} + +fn grid_range(series: &Series) -> (usize, usize) { + let TimeAxis::Grid(range) = &series.time else { + panic!("lost grid axis") + }; + (range.start(), range.len()) +} + +#[test] +fn time_varying_scalar_aligns_absolute_indices_across_independent_chunks() { + // The vector covers 7..15 and the scalar 5..16, each chunked at different offsets. + let schema = Arc::new(schema(&["a", "b"])); + let first = Float64Array::from(vec![ + Some(1.0), + Some(2.0), + None, + Some(4.0), + Some(5.0), + Some(6.0), + Some(7.0), + Some(8.0), + ]); + let second = Float64Array::from(vec![ + None, + Some(20.0), + Some(30.0), + Some(40.0), + Some(50.0), + Some(60.0), + Some(70.0), + None, + ]); + let input = series( + &schema, + 7, + vec![ + Samples::try_from_chunks(vec![ + Samples::from_float(first.slice(0, 2)), + Samples::from_float(first.slice(2, 6)), + ]) + .unwrap(), + Samples::try_from_chunks(vec![ + Samples::from_float(second.slice(0, 5)), + Samples::from_float(second.slice(5, 3)), + ]) + .unwrap(), + ], + ); + let scalar_samples = Float64Array::from(vec![ + Some(-1.0), + Some(-2.0), + Some(100.0), + Some(200.0), + Some(300.0), + None, + Some(500.0), + Some(600.0), + Some(700.0), + Some(800.0), + Some(-3.0), + ]); + let scalar = scalar( + &schema, + 5, + Samples::try_from_chunks(vec![ + Samples::from_float(scalar_samples.slice(0, 3)), + Samples::from_float(scalar_samples.slice(3, 3)), + Samples::from_float(scalar_samples.slice(6, 5)), + ]) + .unwrap(), + ); + let output = map_arithmetic_series( + &schema, + &input, + ArithmeticOp::Subtract, + ScalarSeriesOperand::Left(&scalar), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (7, 8)); + assert_floats( + output.fields.get(0).unwrap(), + &[ + Some(99.0), + Some(198.0), + None, + None, + Some(495.0), + Some(594.0), + Some(693.0), + Some(792.0), + ], + ); + assert_floats( + output.fields.get(1).unwrap(), + &[ + None, + Some(180.0), + Some(270.0), + None, + Some(450.0), + Some(540.0), + Some(630.0), + None, + ], + ); + assert_eq!(output.metric.name(), None); + assert_eq!(output.metric.tags(), &input.metric.tags()[1..]); + let output = map_arithmetic_series( + &schema, + &input, + ArithmeticOp::Subtract, + ScalarSeriesOperand::Right(&scalar), + ) + .unwrap() + .unwrap(); + assert_floats( + output.fields.get(0).unwrap(), + &[ + Some(-99.0), + Some(-198.0), + None, + None, + Some(-495.0), + Some(-594.0), + Some(-693.0), + Some(-792.0), + ], + ); +} + +#[test] +fn time_varying_comparison_keeps_vector_values_and_trims() { + let schema = Arc::new(schema(&["value"])); + let input = series( + &schema, + 6, + vec![floats(&[ + Some(-0.0), + Some(2.0), + None, + Some(f64::NAN), + Some(4.0), + Some(1.0), + ])], + ); + let scalar = scalar( + &schema, + 6, + floats(&[ + Some(0.0), + None, + Some(5.0), + Some(f64::NAN), + Some(2.0), + Some(9.0), + ]), + ); + let output = map_compare_series( + &schema, + &input, + Comparison::Filter(ComparisonOp::Less), + ScalarSeriesOperand::Left(&scalar), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (10, 1)); + assert_floats(output.fields.get(0).unwrap(), &[Some(4.0)]); + assert_eq!(output.metric, input.metric); + let output = map_compare_series( + &schema, + &input, + Comparison::Bool(ComparisonOp::Equal), + ScalarSeriesOperand::Right(&scalar), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (6, 6)); + assert_floats( + output.fields.get(0).unwrap(), + &[Some(1.0), None, None, Some(0.0), Some(0.0), Some(0.0)], + ); + assert_eq!(output.metric.name(), None); +} + +#[test] +fn disjoint_or_missing_overlap_produces_no_series() { + let schema = Arc::new(schema(&["value"])); + let input = series( + &schema, + 5, + vec![floats(&[Some(10.0), Some(20.0), Some(30.0)])], + ); + for (start, samples, expected) in [ + ( + 3, + vec![Some(1.0), Some(2.0), Some(3.0)], + Some(((5, 1), vec![Some(7.0)])), + ), + ( + 7, + vec![Some(3.0), Some(4.0)], + Some(((7, 1), vec![Some(27.0)])), + ), + ( + 4, + vec![None, Some(1.0), None, None], + Some(((5, 1), vec![Some(9.0)])), + ), + (5, vec![None, None, None], None), + (8, vec![Some(1.0)], None), + (2, vec![], None), + (64, vec![], None), + ] { + let scalar = scalar(&schema, start, floats(&samples)); + let output = map_arithmetic_series( + &schema, + &input, + ArithmeticOp::Subtract, + ScalarSeriesOperand::Right(&scalar), + ) + .unwrap(); + match (output, expected) { + (None, None) => {} + (Some(output), Some((range, values))) => { + assert_eq!(grid_range(&output), range); + assert_floats(output.fields.get(0).unwrap(), &values); + } + (output, expected) => panic!("{start}: {output:?} != {expected:?}"), + } + } +} + +#[test] +fn time_varying_scalar_preflight_rejects_unsupported_data_even_outside_overlap() { + let schema = Arc::new(schema(&["value"])); + let input = series(&schema, 5, vec![floats(&[Some(2.0)])]); + let mut named = scalar(&schema, 5, floats(&[Some(1.0)])); + named.metric.set("host", "a".into()).unwrap(); + let mut multi = scalar(&schema, 5, floats(&[Some(1.0)])); + multi.fields = + SeriesFields::try_from_vec(vec![floats(&[Some(1.0)]), floats(&[Some(1.0)])]).unwrap(); + let mut other_grid = scalar(&schema, 5, floats(&[Some(1.0)])); + other_grid.time = TimeAxis::Grid( + GridRange::try_new( + Arc::new(EvalGrid::try_new(GridSpec::try_new(0, 500, 64).unwrap()).unwrap()), + 5, + 1, + ) + .unwrap(), + ); + let histogram = scalar( + &schema, + 20, + Samples::try_from_histogram(UInt32Array::from(vec![0]), histogram_batch()).unwrap(), + ); + let mut raw = scalar(&schema, 5, floats(&[Some(1.0)])); + raw.time = TimeAxis::try_new(vec![3500].into()).unwrap(); + for scalar in [named, multi, other_grid, histogram, raw] { + assert!( + map_arithmetic_series( + &schema, + &input, + ArithmeticOp::Add, + ScalarSeriesOperand::Right(&scalar) + ) + .is_err() + ); + assert!( + map_compare_series( + &schema, + &input, + Comparison::Bool(ComparisonOp::Equal), + ScalarSeriesOperand::Right(&scalar) + ) + .is_err() + ); + } +} diff --git a/src/promql/src/map/tests/comparison.rs b/src/promql/src/map/tests/comparison.rs new file mode 100644 index 00000000000..ec7d0eaea2d --- /dev/null +++ b/src/promql/src/map/tests/comparison.rs @@ -0,0 +1,176 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::*; + +fn grid_range(series: &Series) -> (usize, usize) { + let TimeAxis::Grid(range) = &series.time else { + panic!("lost grid axis") + }; + (range.start(), range.len()) +} + +#[test] +fn filter_compares_fields_independently_and_trims_the_output() { + let schema = Arc::new(schema(&["a", "b"])); + let input = series( + &schema, + 4, + vec![ + floats(&[Some(1.0), Some(1.0), Some(5.0), None, Some(7.0), Some(1.0)]), + Samples::try_from_chunks(vec![ + floats(&[None, Some(9.0)]), + floats(&[None, Some(0.0), None, Some(f64::NAN)]), + ]) + .unwrap(), + ], + ); + let output = map_compare( + &schema, + &input, + Comparison::Filter(ComparisonOp::Greater), + ScalarOperand::Right(4.0), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (5, 4)); + assert_floats( + output.fields.get(0).unwrap(), + &[None, Some(5.0), None, Some(7.0)], + ); + assert_floats( + output.fields.get(1).unwrap(), + &[Some(9.0), None, None, None], + ); + assert_eq!(output.metric, input.metric); + for scalar in [ScalarOperand::Right(100.0), ScalarOperand::Right(f64::NAN)] { + let filter = Comparison::Filter(ComparisonOp::Greater); + assert!( + map_compare(&schema, &input, filter, scalar) + .unwrap() + .is_none() + ); + } +} + +#[test] +fn filter_with_left_scalar_keeps_the_vector_value() { + let schema = Arc::new(schema(&["value"])); + let input = series( + &schema, + 5, + vec![floats(&[Some(1.0), Some(3.0), None, Some(4.0)])], + ); + let output = map_compare( + &schema, + &input, + Comparison::Filter(ComparisonOp::Less), + ScalarOperand::Left(2.0), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (6, 3)); + assert_floats(output.fields.get(0).unwrap(), &[Some(3.0), None, Some(4.0)]); +} + +#[test] +fn bool_emits_every_present_field_and_drops_the_name() { + let schema = Arc::new(schema(&["a", "b"])); + let input = series( + &schema, + 4, + vec![ + floats(&[Some(-0.0), None, Some(2.0)]), + Samples::try_from_chunks(vec![floats(&[Some(0.0)]), floats(&[Some(f64::NAN), None])]) + .unwrap(), + ], + ); + let output = map_compare( + &schema, + &input, + Comparison::Bool(ComparisonOp::Equal), + ScalarOperand::Right(0.0), + ) + .unwrap() + .unwrap(); + assert_eq!(grid_range(&output), (4, 3)); + assert_floats(output.fields.get(0).unwrap(), &[Some(1.0), None, Some(0.0)]); + assert_floats(output.fields.get(1).unwrap(), &[Some(1.0), Some(0.0), None]); + assert_eq!(output.metric.name(), None); + assert_eq!(output.metric.tags(), &input.metric.tags()[1..]); +} + +#[test] +fn scalar_operations_produce_unlabelled_short_ranges() { + let schema = schema(&["value"]); + let range = GridRange::try_new(schema.eval_grid.clone().unwrap(), 8, 3).unwrap(); + let output = + scalar_arithmetic(&schema, range.clone(), ArithmeticOp::Power, [0.0, -1.0]).unwrap(); + assert_floats(output.fields.get(0).unwrap(), &[Some(f64::INFINITY); 3]); + assert!(output.metric.name().is_none() && output.metric.tags().is_empty()); + assert!(matches!(&output.time, TimeAxis::Grid(actual) if actual == &range)); + let output = scalar_compare( + &schema, + range.clone(), + ComparisonOp::NotEqual, + [f64::NAN, f64::NAN], + ) + .unwrap(); + assert_floats(output.fields.get(0).unwrap(), &[Some(1.0); 3]); + assert!(output.metric.name().is_none() && output.metric.tags().is_empty()); + assert!(matches!(&output.time, TimeAxis::Grid(actual) if actual == &range)); +} + +#[test] +fn comparisons_reject_raw_axes_and_late_histogram_chunks() { + let schema = Arc::new(schema(&["value"])); + let unsupported = Samples::try_from_chunks(vec![ + floats(&[Some(1.0)]), + Samples::try_from_histogram(UInt32Array::from(vec![0]), histogram_batch()).unwrap(), + ]) + .unwrap(); + let input = series(&schema, 3, vec![unsupported]); + // A segment of another type is rejected even when it holds no present sample. + let all_missing = Samples::try_from_chunks(vec![ + floats(&[Some(1.0)]), + Samples::try_from_histogram(UInt32Array::from(vec![None]), histogram_batch()).unwrap(), + ]) + .unwrap(); + let all_missing = series(&schema, 3, vec![all_missing]); + let mut raw_schema = schema.as_ref().clone(); + raw_schema.eval_grid = None; + let raw_schema = Arc::new(raw_schema); + let raw = Series::try_new( + &raw_schema, + input.metric.clone(), + TimeAxis::try_new(vec![2500, 3000].into()).unwrap(), + SeriesFields::one(floats(&[Some(1.0), None])), + ) + .unwrap(); + for comparison in [ + Comparison::Bool(ComparisonOp::Equal), + Comparison::Filter(ComparisonOp::Equal), + ] { + for input in [&input, &all_missing] { + assert!(matches!( + map_compare(&schema, input, comparison, ScalarOperand::Right(1.0)), + Err(DataFusionError::NotImplemented(_)) + )); + } + assert!(matches!( + map_compare(&raw_schema, &raw, comparison, ScalarOperand::Right(1.0)), + Err(DataFusionError::Execution(_)) + )); + } +} diff --git a/src/promql/src/map/tests/math_functions.rs b/src/promql/src/map/tests/math_functions.rs new file mode 100644 index 00000000000..a54a1da84d6 --- /dev/null +++ b/src/promql/src/map/tests/math_functions.rs @@ -0,0 +1,171 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::*; + +#[test] +fn clamp_follows_go_min_max_and_empties_reversed_bounds() { + let schema = schema(&["value"]); + let input = series( + &schema, + 7, + vec![floats(&[ + Some(f64::INFINITY), + Some(f64::NEG_INFINITY), + Some(-0.0), + Some(0.0), + Some(f64::NAN), + None, + ])], + ); + let output = |op| { + map_math(&schema, &input, op) + .unwrap() + .map(|series| series.fields.get(0).unwrap().clone()) + }; + // Go's Max lets +Inf win over NaN and Min lets -Inf win; +0/-0 are ordered. + let infinite = output(MathOp::ClampMin { min: f64::NAN }).unwrap(); + assert_floats( + &infinite, + &[ + Some(f64::INFINITY), + Some(f64::NAN), + Some(f64::NAN), + Some(f64::NAN), + Some(f64::NAN), + None, + ], + ); + let infinite = output(MathOp::ClampMax { max: f64::NAN }).unwrap(); + assert_floats( + &infinite, + &[ + Some(f64::NAN), + Some(f64::NEG_INFINITY), + Some(f64::NAN), + Some(f64::NAN), + Some(f64::NAN), + None, + ], + ); + let zero = output(MathOp::Clamp { min: 0.0, max: 0.0 }).unwrap(); + assert_floats( + &zero, + &[ + Some(0.0), + Some(0.0), + Some(0.0), + Some(0.0), + Some(f64::NAN), + None, + ], + ); + let zero = output(MathOp::Clamp { + min: -0.0, + max: -0.0, + }) + .unwrap(); + assert_floats( + &zero, + &[ + Some(-0.0), + Some(-0.0), + Some(-0.0), + Some(-0.0), + Some(f64::NAN), + None, + ], + ); + // Either zero can win in Go's Max; the sign shows through a later `1 / x`. + let zero = output(MathOp::ClampMin { min: -0.0 }).unwrap(); + assert_floats( + &zero, + &[ + Some(f64::INFINITY), + Some(-0.0), + Some(-0.0), + Some(0.0), + Some(f64::NAN), + None, + ], + ); + assert!(output(MathOp::Clamp { min: 2.0, max: 1.0 }).is_none()); + assert!( + output(MathOp::Clamp { + min: f64::NAN, + max: 1.0 + }) + .is_some() + ); +} + +#[test] +fn sgn_deg_and_rad_keep_prometheus_operation_order() { + let schema = schema(&["value"]); + let input = series( + &schema, + 0, + vec![floats(&[Some(-0.0), Some(f64::NAN), Some(11.0), Some(3.0)])], + ); + let field = |op| { + map_math(&schema, &input, op) + .unwrap() + .unwrap() + .fields + .get(0) + .unwrap() + .clone() + }; + assert_floats( + &field(MathOp::Sgn), + &[Some(-0.0), Some(f64::NAN), Some(1.0), Some(1.0)], + ); + // Bits from Go on amd64; 11 and 3 round differently under to_degrees/to_radians. + assert_floats( + &field(MathOp::Deg), + &[ + Some(-0.0), + Some(f64::NAN), + Some(f64::from_bits(0x4083b2075224955b)), + Some(f64::from_bits(0x40657c6513cad17a)), + ], + ); + assert_ne!(11.0 * 180.0 / PI, 11.0_f64.to_degrees()); + assert_floats( + &field(MathOp::Rad), + &[ + Some(-0.0), + Some(f64::NAN), + Some(f64::from_bits(0x3fc893011f31982e)), + Some(f64::from_bits(0x3faacee9f37bebd5)), + ], + ); + assert_ne!(3.0 * PI / 180.0, 3.0_f64.to_radians()); +} + +#[test] +fn pi_produces_an_unlabelled_scalar_only_on_the_requested_range() { + let schema = schema(&["value"]); + for len in [0, 1, 7] { + let range = GridRange::try_new(schema.eval_grid.clone().unwrap(), 13, len).unwrap(); + let output = map_pi(&schema, range.clone()).unwrap(); + assert!(matches!(&output.time, TimeAxis::Grid(actual) if actual == &range)); + assert!(output.metric.name().is_none()); + assert!(output.metric.tags().is_empty()); + assert_floats(output.fields.get(0).unwrap(), &vec![Some(PI); len]); + } + let invalid = super::schema(&["a", "b"]); + let range = GridRange::try_new(invalid.eval_grid.clone().unwrap(), 0, 1).unwrap(); + assert!(map_pi(&invalid, range).is_err()); +} diff --git a/src/promql/src/map/tests/prometheus.rs b/src/promql/src/map/tests/prometheus.rs index 05aada80070..fedeb845cbf 100644 --- a/src/promql/src/map/tests/prometheus.rs +++ b/src/promql/src/map/tests/prometheus.rs @@ -12,223 +12,213 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Golden cases evaluated by the Prometheus engine; see the header of `prometheus_cases.txt`. +//! Map kernels against `prometheus_cases.txt`, evaluated by the Prometheus engine. -use std::sync::Arc; +use std::collections::BTreeMap; -use datatypes::arrow::array::Float64Array; -use datatypes::series::samples::{ - FieldSpec, SampleRef, Samples, Series, SeriesFields, SeriesSchema, +use datatypes::series::samples::Series; +use datatypes::series::time::GridRange; + +use crate::golden::{Case, assert_result, cases, hex}; +use crate::map::{ + ArithmeticOp, Comparison, ComparisonOp, MathOp, ScalarOperand, ScalarSeriesOperand, + map_arithmetic, map_arithmetic_series, map_compare, map_compare_series, map_math, map_negate, + scalar_arithmetic, scalar_compare, }; -use datatypes::series::time::{EvalGrid, GridRange, GridSpec, TimeAxis}; -use datatypes::series::{Label, MetricName}; - -use crate::map::{MathOp, map_math}; const CASES: &str = include_str!("../prometheus_cases.txt"); -type Points = Vec<(usize, f64)>; - -pub(super) struct Case { - pub(super) header: Vec, - pub(super) expr: String, - pub(super) schema: SeriesSchema, - pub(super) series: Vec, - pub(super) scalar: Option, - pub(super) result: Vec<(MetricName, Points)>, -} - -pub(super) fn cases() -> Vec { - let mut cases = Vec::new(); - let mut lines = CASES.lines().filter(|line| !line.starts_with('#')); - while let Some(line) = lines.next() { - let header = line.strip_prefix("case ").expect("case line"); - let expr = lines - .next() - .unwrap() - .strip_prefix("expr ") - .unwrap() - .to_string(); - let grid: Vec = lines.next().unwrap()["grid ".len()..] - .split(' ') - .map(|v| v.parse().unwrap()) - .collect(); - let schema = SeriesSchema { - fields: vec![FieldSpec { - name: "value".into(), - }] - .into(), - eval_grid: Some(Arc::new( - EvalGrid::try_new(GridSpec::try_new(grid[0], grid[1], grid[2] as u64).unwrap()) - .unwrap(), - )), - }; - let mut case = Case { - header: header.split(' ').map(String::from).collect(), - expr, - series: Vec::new(), - scalar: None, - result: Vec::new(), - schema, - }; - for line in lines.by_ref() { - if line == "end" { - break; - } - let (kind, rest) = line.split_once(' ').unwrap(); - let (labels, points) = rest.split_once(" ;").unwrap(); - let (metric, points) = (parse_metric(labels), parse_points(points)); - match kind { - "series" => { - if let Some(series) = grid_series(&case.schema, metric, &points) { - case.series.push(series); - } - } - "scalar" => case.scalar = grid_series(&case.schema, metric, &points), - "result" => case.result.push((metric, points)), - _ => panic!("unknown line {line}"), - } - } - cases.push(case); - } - cases -} - -fn parse_metric(labels: &str) -> MetricName { - let mut name = None; - let mut tags = Vec::new(); - for label in labels - .split(',') - .filter(|label| *label != "-" && !label.is_empty()) - { - let (key, value) = label.split_once('=').unwrap(); - if key == "__name__" { - name = Some(Arc::from(value)); - } else { - tags.push(Label { - name: key.into(), - value: value.into(), - }); - } - } - MetricName::try_new(name, tags).unwrap() -} - -fn parse_points(points: &str) -> Points { - points - .split_whitespace() - .map(|point| { - let (index, bits) = point.split_once(':').unwrap(); - ( - index.parse().unwrap(), - f64::from_bits(u64::from_str_radix(bits, 16).unwrap()), - ) - }) - .collect() -} - -pub(super) fn hex(bits: &str) -> f64 { - f64::from_bits(u64::from_str_radix(bits, 16).unwrap()) -} - -/// Builds the trimmed series Eval produces: from the first to the last point, nulls between. -fn grid_series(schema: &SeriesSchema, metric: MetricName, points: &Points) -> Option { - let (&(start, _), &(last, _)) = points.first().zip(points.last())?; - let mut values = vec![None; last - start + 1]; - for &(index, value) in points { - values[index - start] = Some(value); - } - let range = GridRange::try_new(schema.eval_grid.clone().unwrap(), start, values.len()).unwrap(); - Some( - Series::try_new( - schema, - metric, - TimeAxis::Grid(range), - SeriesFields::one(Samples::from_float(Float64Array::from(values))), - ) - .unwrap(), - ) -} - -/// Compares labels, the trimmed absolute range and value bits; any NaN matches any NaN. -pub(super) fn assert_result(case: &Case, mut actual: Vec) { - actual.sort_by_key(|series| label_key(&series.metric)); - let mut expected = case.result.iter().collect::>(); - expected.sort_by_key(|(metric, _)| label_key(metric)); - let context = || format!("{} ({})", case.expr, case.header.join(" ")); - assert_eq!(actual.len(), expected.len(), "{}", context()); - for (actual, (metric, points)) in actual.iter().zip(expected) { - assert_eq!(&actual.metric, metric, "{}", context()); - let TimeAxis::Grid(range) = &actual.time else { - panic!("{}: lost grid axis", context()); - }; - let mut present = Vec::new(); - for field in actual.fields.iter() { - for (offset, sample) in field.iter().enumerate() { - match sample { - SampleRef::Float(value) => present.push((range.start() + offset, value)), - SampleRef::Missing => {} - _ => panic!("{}: non-float output", context()), - } - } - } - assert_eq!( - (range.start(), range.start() + range.len()), - (points[0].0, points.last().unwrap().0 + 1), - "{}: untrimmed range", - context() - ); - assert_eq!(present.len(), points.len(), "{}", context()); - for (&(index, actual), &(expected_index, expected)) in present.iter().zip(points) { - assert_eq!(index, expected_index, "{}", context()); - assert!( - actual.to_bits() == expected.to_bits() || (actual.is_nan() && expected.is_nan()), - "{} at {index}: {actual:e} ({:016x}) != {expected:e} ({:016x})", - context(), - actual.to_bits(), - expected.to_bits(), - ); - } - } -} - -fn label_key(metric: &MetricName) -> Vec<(String, String)> { - let mut key = metric - .tags() - .iter() - .map(|label| (label.name.to_string(), label.value.to_string())) - .collect::>(); - if let Some(name) = metric.name() { - key.insert(0, ("__name__".into(), name.into())); - } - key -} - -fn math_op(header: &[String]) -> Option { - Some(match header[1].as_str() { +fn math_op(header: &[String]) -> MathOp { + let arg = |index: usize| hex(&header[index]); + match header[1].as_str() { "abs" => MathOp::Abs, "ceil" => MathOp::Ceil, "floor" => MathOp::Floor, "sqrt" => MathOp::Sqrt, - "round" => MathOp::Round { - nearest: hex(&header[2]), + "exp" => MathOp::Exp, + "ln" => MathOp::Ln, + "log2" => MathOp::Log2, + "log10" => MathOp::Log10, + "sin" => MathOp::Sin, + "cos" => MathOp::Cos, + "tan" => MathOp::Tan, + "asin" => MathOp::Asin, + "acos" => MathOp::Acos, + "atan" => MathOp::Atan, + "sinh" => MathOp::Sinh, + "cosh" => MathOp::Cosh, + "tanh" => MathOp::Tanh, + "asinh" => MathOp::Asinh, + "acosh" => MathOp::Acosh, + "atanh" => MathOp::Atanh, + "deg" => MathOp::Deg, + "rad" => MathOp::Rad, + "sgn" => MathOp::Sgn, + "round" => MathOp::Round { nearest: arg(2) }, + "clamp" => MathOp::Clamp { + min: arg(2), + max: arg(3), }, - _ => return None, - }) + "clamp_min" => MathOp::ClampMin { min: arg(2) }, + "clamp_max" => MathOp::ClampMax { max: arg(2) }, + other => panic!("unmapped math function {other}"), + } +} + +fn arithmetic_op(op: &str) -> ArithmeticOp { + match op { + "+" => ArithmeticOp::Add, + "-" => ArithmeticOp::Subtract, + "*" => ArithmeticOp::Multiply, + "/" => ArithmeticOp::Divide, + "%" => ArithmeticOp::Modulo, + "^" => ArithmeticOp::Power, + "atan2" => ArithmeticOp::Atan2, + other => panic!("unmapped arithmetic {other}"), + } +} + +fn comparison(op: &str, mode: &str) -> Comparison { + let op = match op { + "==" => ComparisonOp::Equal, + "!=" => ComparisonOp::NotEqual, + ">" => ComparisonOp::Greater, + "<" => ComparisonOp::Less, + ">=" => ComparisonOp::GreaterEqual, + "<=" => ComparisonOp::LessEqual, + other => panic!("unmapped comparison {other}"), + }; + match mode { + "filter" => Comparison::Filter(op), + "bool" => Comparison::Bool(op), + other => panic!("unmapped comparison mode {other}"), + } +} + +fn scalar_operand(side: &str, value: f64) -> ScalarOperand { + match side { + "left" => ScalarOperand::Left(value), + _ => ScalarOperand::Right(value), + } +} + +fn evaluate(case: &Case) -> Vec { + let h = &case.header; + let schema = &case.schema; + let full_grid = + || GridRange::try_new(schema.eval_grid.clone().unwrap(), 0, grid_len(case)).unwrap(); + let each = |f: &dyn Fn(&Series) -> Option| case.series.iter().filter_map(f).collect(); + let scalar_series = || { + let scalar = case.scalar.as_ref().expect("scalar operand"); + match h[h.len() - 1].as_str() { + "left" => ScalarSeriesOperand::Left(scalar), + _ => ScalarSeriesOperand::Right(scalar), + } + }; + match h[0].as_str() { + "math" => each(&|s| map_math(schema, s, math_op(h)).unwrap()), + "neg" => each(&|s| Some(map_negate(schema, s).unwrap())), + "arith" => { + let operand = scalar_operand(&h[2], hex(&h[3])); + each(&|s| Some(map_arithmetic(schema, s, arithmetic_op(&h[1]), operand).unwrap())) + } + "cmp" => { + let operand = scalar_operand(&h[3], hex(&h[4])); + each(&|s| map_compare(schema, s, comparison(&h[1], &h[2]), operand).unwrap()) + } + "arith_series" => each(&|s| { + map_arithmetic_series(schema, s, arithmetic_op(&h[1]), scalar_series()).unwrap() + }), + "cmp_series" => each(&|s| { + map_compare_series(schema, s, comparison(&h[1], &h[2]), scalar_series()).unwrap() + }), + "scalar_arith" => vec![ + scalar_arithmetic( + schema, + full_grid(), + arithmetic_op(&h[1]), + [hex(&h[2]), hex(&h[3])], + ) + .unwrap(), + ], + "scalar_cmp" => vec![ + scalar_compare( + schema, + full_grid(), + match comparison(&h[1], "bool") { + Comparison::Bool(op) | Comparison::Filter(op) => op, + }, + [hex(&h[2]), hex(&h[3])], + ) + .unwrap(), + ], + other => panic!("unmapped case kind {other}"), + } +} + +fn grid_len(case: &Case) -> usize { + case.schema.eval_grid.as_ref().unwrap().timestamps().len() } #[test] -fn math_matches_prometheus() { - let mut matched = 0; - for case in cases().iter().filter(|case| case.header[0] == "math") { - let op = math_op(&case.header).unwrap_or_else(|| panic!("unmapped {}", case.expr)); - let output = case - .series - .iter() - .map(|series| map_math(&case.schema, series, op).unwrap()) - .collect(); - assert_result(case, output); - matched += 1; +fn map_kernels_match_prometheus() { + let mut matched = BTreeMap::::new(); + for case in cases(CASES) { + assert_result(&case, evaluate(&case)); + *matched.entry(case.header[0].clone()).or_default() += 1; + if case.header[0] == "math" { + *matched + .entry(format!("math {}", case.header[1])) + .or_default() += 1; + } + } + // Floors keep coverage from shrinking silently when the fixture is regenerated. + for (kind, floor) in [ + ("math", 180), + ("neg", 10), + ("arith", 70), + ("cmp", 48), + ("arith_series", 42), + ("cmp_series", 36), + ("scalar_arith", 42), + ("scalar_cmp", 24), + ] { + let count = matched.get(kind).copied().unwrap_or_default(); + assert!(count >= floor, "{kind}: {count} < {floor}"); + } + for function in [ + "abs", + "ceil", + "floor", + "sqrt", + "exp", + "ln", + "log2", + "log10", + "sin", + "cos", + "tan", + "asin", + "acos", + "atan", + "sinh", + "cosh", + "tanh", + "asinh", + "acosh", + "atanh", + "deg", + "rad", + "sgn", + "round", + "clamp", + "clamp_min", + "clamp_max", + ] { + let count = matched + .get(&format!("math {function}")) + .copied() + .unwrap_or_default(); + assert!(count >= 4, "math {function}: {count}"); } - assert!(matched >= 48, "only {matched} math cases"); }