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"); }