From mikefc @ending from coolbutu@ele@@@com  Tue Sep 25 14:59:33 2018
From: mikefc @ending from coolbutu@ele@@@com (mikefc)
Date: Tue, 25 Sep 2018 22:59:33 +1000
Subject: [Rd] 
 Fwd: Bug report: cbind with numeric and raw gives incorrect result
In-Reply-To: <676088014.2066943.1537879936696@mail.yahoo.com>
References: <CABtA9mEaP5mgixWdby4_jbi8gNTP7ns+XkbtK16-D+zASSJUFw@mail.gmail.com>
 <CABtA9mFtAY1Qsj2BKyS2X9-hyVERXr97O3FvEWuMPEOTxiRiVQ@mail.gmail.com>
 <676088014.2066943.1537879936696@mail.yahoo.com>
Message-ID: <CABtA9mF7iDri64mgH6kybTriTi3Ds_Srg8xjhbuo7nyMHzAe_g@mail.gmail.com>

Thanks Brodie, that's some nice detective work.

If someone wanted to grant me access to Bugzilla, I'll be happy to post the
bug and patch there (with your permission Brodie?) and help this bug get
fixed.

Mike.

On Tue., 25 Sep. 2018, 10:53 pm brodie gaslam, <brodie.gaslam at yahoo.com>
wrote:

>
>
> For what it's worth the following patch fixes that particular problem on
> my system.  I have not checked very carefully to make sure this does not
> cause other problems, but at a high level it seems to make sense.  In this
> particular part of the code I believe `mode` is taken to be the highest
> type of "column" encountered by `ctype` and based on conditionals it can (I
> think) be up to REALSXP here.  This leads to a `INTEGER(REALSXP)` call,
> which presumably messes up the underlying double bit representation.
>
> Again, I looked at this very quickly so I could be completely wrong, but I
> did at least build R with this patch and then no longer observed the odd
> behavior reported by mikefc.
>
> Index: src/main/bind.c
> ===================================================================
> --- src/main/bind.c    (revision 75340)
> +++ src/main/bind.c    (working copy)
> @@ -1381,11 +1381,16 @@
>              MOD_ITERATE1(idx, k, i, i1, {
>                  LOGICAL(result)[n++] = RAW(u)[i1] ? TRUE : FALSE;
>              });
> -            } else {
> +            } else if (mode == INTSXP) {
>              R_xlen_t i, i1;
>              MOD_ITERATE1(idx, k, i, i1, {
>                  INTEGER(result)[n++] = (unsigned char) RAW(u)[i1];
>              });
> +            } else {
> +            R_xlen_t i, i1;
> +            MOD_ITERATE1(idx, k, i, i1, {
> +                REAL(result)[n++] = (unsigned char) RAW(u)[i1];
> +            });
>              }
>          }
>          }
>
>
>
>
>
>
> On Tuesday, September 25, 2018, 7:58:31 AM EDT, mikefc <
> mikefc at coolbutuseless.com> wrote:
>
>
>
>
>
> Hi there,
>
> using cbind with a numeric and raw argument produces an incorrect result.
>
> I've posted some details below,
>
> kind regards,
> Mike.
>
>
>
> e.g.
> > cbind(0, as.raw(0))
>     [,1]          [,2]
> [1,]    0 6.950136e-310
>
>
>
> A longer example shows that the result is not a rounding error, is not
> consistent, and repeated applications get different results.
>
> > cbind(0, as.raw(1:10))
>               [,1]          [,2]
> [1,]  0.000000e+00  0.000000e+00
> [2,]  0.000000e+00  0.000000e+00
> [3,]  0.000000e+00  0.000000e+00
> [4,]  0.000000e+00  0.000000e+00
> [5,]  0.000000e+00  6.950135e-310
> [6,] 4.243992e-314  6.950135e-310
> [7,] 8.487983e-314  6.324040e-322
> [8,] 1.273197e-313  0.000000e+00
> [9,] 1.697597e-313 -4.343725e-311
> [10,] 2.121996e-313  1.812216e-308
>
>
> This bug occurs on
> * mac os (with R 3.5.1)
> * linux (with R 3.4.4)
> * Windows (with R 3.5.0)
>
>
>
>
> My Session Info
> R version 3.5.1 (2018-07-02)
> Platform: x86_64-apple-darwin15.6.0 (64-bit)
> Running under: macOS High Sierra 10.13.6
>
> Matrix products: default
> BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/
> A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
> LAPACK: /Library/Frameworks/R.framework/Versions/3.5/
> Resources/lib/libRlapack.dylib
>
> locale:
> [1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
>
> attached base packages:
> [1] stats    graphics  grDevices utils    datasets  methods  base
>
> other attached packages:
> [1] memoise_1.1.0  ggplot2_3.0.0  nonogramp_0.1.0 purrr_0.2.5
> dplyr_0.7.6
>
> loaded via a namespace (and not attached):
> [1] Rcpp_0.12.18    rstudioapi_0.7  bindr_0.1.1      magrittr_1.5
> tidyselect_0.2.4 munsell_0.5.0    colorspace_1.3-2 R6_2.2.2
> rlang_0.2.1.9000 stringr_1.3.1    plyr_1.8.4      tools_3.5.1
> grid_3.5.1
> [14] packrat_0.4.9-3  gtable_0.2.0    withr_2.1.2      digest_0.6.15
> lazyeval_0.2.1  assertthat_0.2.0 tibble_1.4.2    crayon_1.3.4
> bindrcpp_0.2.2  pryr_0.1.4      codetools_0.2-15 glue_1.3.0
> labeling_0.3
> [27] stringi_1.2.4    compiler_3.5.1  pillar_1.3.0    scales_0.5.0
> pkgconfig_2.0.1
>
>     [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



[Rd] Fwd: Bug report: cbind with numeric and raw gives incorrect result
mikefc