From r@||@@tubner @end|ng |rom d@q@n@@com  Fri Mar  1 13:52:43 2019
From: r@||@@tubner @end|ng |rom d@q@n@@com (Ralf Stubner)
Date: Fri, 1 Mar 2019 13:52:43 +0100
Subject: [Rd] Surprising results from INTEGER_GET_REGION with ALTREP object
Message-ID: <e2a61102-ac26-8b55-47da-f66eb334d899@daqana.com>

Dear Listmembers,

wanting to learn more about ALTREP I wrote the following function to
extract a subsequence from an integer vector:

#include <Rinternals.h>

SEXP integer_get_region(SEXP _x, SEXP _i, SEXP _n) {
  int i = INTEGER(_i)[0];
  int n = INTEGER(_n)[0];
  SEXP result = PROTECT(Rf_allocVector(INTSXP, n));
  INTEGER_GET_REGION(_x, i, n, INTEGER(result));
  UNPROTECT(1);
  return result;
}

For "shorter" vectors, the result is as expected:

> dyn.load("altrep_int_region.so")
> .Call("integer_get_region", 1:1e9, 0L, 10L)
 [1]  1  2  3  4  5  6  7  8  9 10

But not for "longer" vectors:

> .Call("integer_get_region", 1:1e10, 0L, 10L)
 [1]          0 1072693248          0 1073741824          0 1074266112
 [7]          0 1074790400          0 1075052544


Am I doing something wrong or is this a bug? I am using

> R.version.string
[1] "R version 3.5.2 (2018-12-20)"

Thanks
Ralf

-- 
Ralf Stubner
Senior Software Engineer / Trainer

daqana GmbH
Dortustra?e 48
14467 Potsdam

T: +49 331 23 61 93 11
F: +49 331 23 61 93 90
M: +49 162 20 91 196
Mail: ralf.stubner at daqana.com

Sitz: Potsdam
Register: AG Potsdam HRB 27966
Ust.-IdNr.: DE300072622
Gesch?ftsf?hrer: Dr.-Ing. Stefan Knirsch, Prof. Dr. Dr. Karl-Kuno Kunze


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20190301/c60d0a1a/attachment.sig>


[Rd] Surprising results from INTEGER_GET_REGION with ALTREP object
Ralf Stubner