You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Jorge (Jira)" <ji...@apache.org> on 2020/09/11 14:02:00 UTC

[jira] [Updated] (ARROW-9975) [Rust] min and max aggregate kernels are inconsistent for floating point types.

     [ https://issues.apache.org/jira/browse/ARROW-9975?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jorge updated ARROW-9975:
-------------------------
    Summary: [Rust] min and max aggregate kernels are inconsistent for floating point types.   (was: min and max aggregate kernels are inconsistent for floating point types. )

> [Rust] min and max aggregate kernels are inconsistent for floating point types. 
> --------------------------------------------------------------------------------
>
>                 Key: ARROW-9975
>                 URL: https://issues.apache.org/jira/browse/ARROW-9975
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Rust
>    Affects Versions: 1.0.1
>            Reporter: Ritchie
>            Priority: Major
>
> The aggregation kernels min and max yield inconsistent results if there are NaN values in the arrays.
> Related issue: [https://github.com/ritchie46/polars/issues/71]
> {code:c++}
>         use arrow::{
>             datatypes::Float64Type,
>             compute::kernels::aggregate::min,
>             array::{
>                 PrimitiveBuilder
>             }
>         };
>         let mut builder_1 = PrimitiveBuilder::<Float64Type>::new(2);
>         builder_1.append_value(1.0).unwrap();
>         builder_1.append_value(f64::NAN).unwrap();
>         let array_1 = builder_1.finish();
>         let mut builder_2 = PrimitiveBuilder::<Float64Type>::new(2);
>         builder_2.append_value(f64::NAN).unwrap();
>         builder_2.append_value(1.0).unwrap();
>         let array_2 = builder_2.finish();
>  
>         // expect both nan, or both 1.0
>         assert_eq!(min(&array_1), min(&array_2));
> {code}
> Outputs:
> {code:bash}
> Left:  Some(1.0)
> Right: Some(NaN)
> <Click to see difference>
> thread 'frame::ser::csv::test::test_' panicked at 'assertion failed: `(left == right)`
>   left: `Some(1.0)`,
>  right: `Some(NaN)`', polars/src/frame/ser/csv.rs:328:9
> stack backtrace:
>    0: rust_begin_unwind
>              at /rustc/73dc675b9437c2a51a975a9f58cc66f05463c351/library/std/src/panicking.rs:483
>    1: std::panicking::begin_panic_fmt
>              at /rustc/73dc675b9437c2a51a975a9f58cc66f05463c351/library/std/src/panicking.rs:437
>    2: polars::frame::ser::csv::test::test_
>              at ./src/frame/ser/csv.rs:328
>    3: polars::frame::ser::csv::test::test_::{{closure}}
>              at ./src/frame/ser/csv.rs:310
>    4: core::ops::function::FnOnce::call_once
>              at /home/ritchie46/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227
>    5: core::ops::function::FnOnce::call_once
>              at /rustc/73dc675b9437c2a51a975a9f58cc66f05463c351/library/core/src/ops/function.rs:227
> note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
> error: test failed, to rerun pass '-p polars --lib'
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)