Thanks.

Here is a simplified version:

library(compiler)
zero <- 0
one <- 1
expr <- quote((z <- zero + one) + (z <- z + 1))
eval(compiler::compile(expr))

Sill fix shortly.

Best,

luke

On Thu, 24 Aug 2017, Lukas Stadler wrote:

Hi!

We’ve seen a problem with the compiler in specific cases of matrix updates:

{ m <- matrix(1:4, 2) ; z <- 0; for(i in 1) { m[z <- z + 1,z <- z + 1] <- 99; } 
; m }
    [,1] [,2]
[1,]    1    3
[2,]    2   99

Here, it modifies element [2,2], which is unexpected.
It behaves correct without the loop:

{ m <- matrix(1:4, 2) ; z <- 0; m[z <- z + 1,z <- z + 1] <- 99 ; m }
    [,1] [,2]
[1,]    1   99
[2,]    2    4

… and without the jit:

enableJIT(0)
[1] 3
{ m <- matrix(1:4, 2) ; z <- 0; for(i in 1) { m[z <- z + 1,z <- z + 1] <- 99; } 
; m }
    [,1] [,2]
[1,]    1   99
[2,]    2    4

I checked with "R Under development (unstable) (2017-08-23 r73116)”, and the 
problem is still there.

- Lukas
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
   Actuarial Science
241 Schaeffer Hall                  email:   luke-tier...@uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to