Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread Prof Brian Ripley

On 16/06/2017 20:37, Jim Hester wrote:

The relevant sections of the C standard are
http://c0x.coding-guidelines.com/5.2.4.2.1.html, which specifies that C


There is more than one C standard, but that is none of them.


ints are only guaranteed to be 16 bits, C long ints at least 32 bits in
size, as Peter mentioned. Also http://c0x.coding-guidelines.com/6.4.4.1.html
specifies l or L as the suffix for a long int constants.

However R does define integers as `int` in it's source code, so use of L is
not strictly correct if a compiler uses 16 bit int types. I guess this
ambiguity is why the `int32_t` typedef exists.


However, R checks that the compiler uses 32-bit ints in its build 
(configure and src/main/arithmetic.c) and documents that in R-admin . 
In any case, the C standard does not apply to the R language.


Also, int32_t

- postdates R (it was introduced in C99, a few OSes having it earlier)
- is optional in the C99 and C11 standards (§7.20.1.1 in C11).




On Fri, Jun 16, 2017 at 3:01 PM, William Dunlap via R-devel <
r-devel@r-project.org> wrote:


"Writing R Extensions" says "int":

R storage mode  C type  FORTRAN type
logical  int*  INTEGER
integer  int*  INTEGER
double  double*  DOUBLE PRECISION
complex  Rcomplex*  DOUBLE COMPLEX
character  char**  CHARACTER*255
raw  unsigned char*  none

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Fri, Jun 16, 2017 at 11:53 AM, peter dalgaard  wrote:


Wikipedia claims that C ints are still only guaranteed to be at least 16

bits, and longs are at least 32 bits. So no, R's integers are long.


-pd


On 16 Jun 2017, at 20:20 , William Dunlap via R-devel <

r-devel@r-project.org> wrote:


But R "integers" are C "ints", as opposed to S "integers", which are C
"long ints".  (I suppose R never had to run on ancient hardware with 16

bit

ints.)

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie  wrote:


Yeah, that was what I heard from our instructor when I was a graduate
student: L stands for Long (integer).

Regards,
Yihui
--
https://yihui.name


On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol <

so...@insa-toulouse.fr



wrote:

Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :


I'm just curious (no complaints), what was the reason for choosing

the

letter 'L' as a suffix for integer constants?  Does it stand for
something (literal?), is it because it visually stands out, ..., or

no

specific reason at all?


My guess is that it is inherited form C "long integer" type (contrary

to

"short integer" or simply "integer")
https://en.wikipedia.org/wiki/C_data_types


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


   [[alternative HTML version deleted]]

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


--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd@cbs.dk  Priv: pda...@gmail.com











 [[alternative HTML version deleted]]

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



[[alternative HTML version deleted]]

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




--
Brian D. Ripley,  rip...@stats.ox.ac.uk
Emeritus Professor of Applied Statistics, University of Oxford

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread Jim Hester
The relevant sections of the C standard are
http://c0x.coding-guidelines.com/5.2.4.2.1.html, which specifies that C
ints are only guaranteed to be 16 bits, C long ints at least 32 bits in
size, as Peter mentioned. Also http://c0x.coding-guidelines.com/6.4.4.1.html
specifies l or L as the suffix for a long int constants.

However R does define integers as `int` in it's source code, so use of L is
not strictly correct if a compiler uses 16 bit int types. I guess this
ambiguity is why the `int32_t` typedef exists.

On Fri, Jun 16, 2017 at 3:01 PM, William Dunlap via R-devel <
r-devel@r-project.org> wrote:

> "Writing R Extensions" says "int":
>
> R storage mode  C type  FORTRAN type
> logical  int*  INTEGER
> integer  int*  INTEGER
> double  double*  DOUBLE PRECISION
> complex  Rcomplex*  DOUBLE COMPLEX
> character  char**  CHARACTER*255
> raw  unsigned char*  none
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
> On Fri, Jun 16, 2017 at 11:53 AM, peter dalgaard  wrote:
> >
> > Wikipedia claims that C ints are still only guaranteed to be at least 16
> bits, and longs are at least 32 bits. So no, R's integers are long.
> >
> > -pd
> >
> > > On 16 Jun 2017, at 20:20 , William Dunlap via R-devel <
> r-devel@r-project.org> wrote:
> > >
> > > But R "integers" are C "ints", as opposed to S "integers", which are C
> > > "long ints".  (I suppose R never had to run on ancient hardware with 16
> bit
> > > ints.)
> > >
> > > Bill Dunlap
> > > TIBCO Software
> > > wdunlap tibco.com
> > >
> > > On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie  wrote:
> > >
> > >> Yeah, that was what I heard from our instructor when I was a graduate
> > >> student: L stands for Long (integer).
> > >>
> > >> Regards,
> > >> Yihui
> > >> --
> > >> https://yihui.name
> > >>
> > >>
> > >> On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol <
> so...@insa-toulouse.fr
> >
> > >> wrote:
> > >>> Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :
> > 
> >  I'm just curious (no complaints), what was the reason for choosing
> the
> >  letter 'L' as a suffix for integer constants?  Does it stand for
> >  something (literal?), is it because it visually stands out, ..., or
> no
> >  specific reason at all?
> > >>>
> > >>> My guess is that it is inherited form C "long integer" type (contrary
> to
> > >>> "short integer" or simply "integer")
> > >>> https://en.wikipedia.org/wiki/C_data_types
> > >>
> > >> __
> > >> R-devel@r-project.org mailing list
> > >> https://stat.ethz.ch/mailman/listinfo/r-devel
> > >
> > >   [[alternative HTML version deleted]]
> > >
> > > __
> > > R-devel@r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> > --
> > Peter Dalgaard, Professor,
> > Center for Statistics, Copenhagen Business School
> > Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> > Phone: (+45)38153501
> > Office: A 4.23
> > Email: pd@cbs.dk  Priv: pda...@gmail.com
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
> [[alternative HTML version deleted]]
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

[[alternative HTML version deleted]]

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread William Dunlap via R-devel
"Writing R Extensions" says "int":

R storage mode  C type  FORTRAN type
logical  int*  INTEGER
integer  int*  INTEGER
double  double*  DOUBLE PRECISION
complex  Rcomplex*  DOUBLE COMPLEX
character  char**  CHARACTER*255
raw  unsigned char*  none

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Fri, Jun 16, 2017 at 11:53 AM, peter dalgaard  wrote:
>
> Wikipedia claims that C ints are still only guaranteed to be at least 16
bits, and longs are at least 32 bits. So no, R's integers are long.
>
> -pd
>
> > On 16 Jun 2017, at 20:20 , William Dunlap via R-devel <
r-devel@r-project.org> wrote:
> >
> > But R "integers" are C "ints", as opposed to S "integers", which are C
> > "long ints".  (I suppose R never had to run on ancient hardware with 16
bit
> > ints.)
> >
> > Bill Dunlap
> > TIBCO Software
> > wdunlap tibco.com
> >
> > On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie  wrote:
> >
> >> Yeah, that was what I heard from our instructor when I was a graduate
> >> student: L stands for Long (integer).
> >>
> >> Regards,
> >> Yihui
> >> --
> >> https://yihui.name
> >>
> >>
> >> On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol 
> >> wrote:
> >>> Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :
> 
>  I'm just curious (no complaints), what was the reason for choosing
the
>  letter 'L' as a suffix for integer constants?  Does it stand for
>  something (literal?), is it because it visually stands out, ..., or
no
>  specific reason at all?
> >>>
> >>> My guess is that it is inherited form C "long integer" type (contrary
to
> >>> "short integer" or simply "integer")
> >>> https://en.wikipedia.org/wiki/C_data_types
> >>
> >> __
> >> R-devel@r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >   [[alternative HTML version deleted]]
> >
> > __
> > R-devel@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Office: A 4.23
> Email: pd@cbs.dk  Priv: pda...@gmail.com
>
>
>
>
>
>
>
>
>

[[alternative HTML version deleted]]

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread peter dalgaard
Wikipedia claims that C ints are still only guaranteed to be at least 16 bits, 
and longs are at least 32 bits. So no, R's integers are long.

-pd

> On 16 Jun 2017, at 20:20 , William Dunlap via R-devel  
> wrote:
> 
> But R "integers" are C "ints", as opposed to S "integers", which are C
> "long ints".  (I suppose R never had to run on ancient hardware with 16 bit
> ints.)
> 
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
> 
> On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie  wrote:
> 
>> Yeah, that was what I heard from our instructor when I was a graduate
>> student: L stands for Long (integer).
>> 
>> Regards,
>> Yihui
>> --
>> https://yihui.name
>> 
>> 
>> On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol 
>> wrote:
>>> Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :
 
 I'm just curious (no complaints), what was the reason for choosing the
 letter 'L' as a suffix for integer constants?  Does it stand for
 something (literal?), is it because it visually stands out, ..., or no
 specific reason at all?
>>> 
>>> My guess is that it is inherited form C "long integer" type (contrary to
>>> "short integer" or simply "integer")
>>> https://en.wikipedia.org/wiki/C_data_types
>> 
>> __
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>   [[alternative HTML version deleted]]
> 
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd@cbs.dk  Priv: pda...@gmail.com

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread William Dunlap via R-devel
But R "integers" are C "ints", as opposed to S "integers", which are C
"long ints".  (I suppose R never had to run on ancient hardware with 16 bit
ints.)

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie  wrote:

> Yeah, that was what I heard from our instructor when I was a graduate
> student: L stands for Long (integer).
>
> Regards,
> Yihui
> --
> https://yihui.name
>
>
> On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol 
> wrote:
> > Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :
> >>
> >> I'm just curious (no complaints), what was the reason for choosing the
> >> letter 'L' as a suffix for integer constants?  Does it stand for
> >> something (literal?), is it because it visually stands out, ..., or no
> >> specific reason at all?
> >
> > My guess is that it is inherited form C "long integer" type (contrary to
> > "short integer" or simply "integer")
> > https://en.wikipedia.org/wiki/C_data_types
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

[[alternative HTML version deleted]]

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread Yihui Xie
Yeah, that was what I heard from our instructor when I was a graduate
student: L stands for Long (integer).

Regards,
Yihui
--
https://yihui.name


On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol  wrote:
> Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :
>>
>> I'm just curious (no complaints), what was the reason for choosing the
>> letter 'L' as a suffix for integer constants?  Does it stand for
>> something (literal?), is it because it visually stands out, ..., or no
>> specific reason at all?
>
> My guess is that it is inherited form C "long integer" type (contrary to
> "short integer" or simply "integer")
> https://en.wikipedia.org/wiki/C_data_types

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

Re: [Rd] R history: Why 'L; in suffix character ‘L’ for integer constants?

2017-06-16 Thread Serguei Sokol

Le 16/06/2017 à 17:54, Henrik Bengtsson a écrit :

I'm just curious (no complaints), what was the reason for choosing the
letter 'L' as a suffix for integer constants?  Does it stand for
something (literal?), is it because it visually stands out, ..., or no
specific reason at all?

My guess is that it is inherited form C "long integer" type (contrary to "short integer" 
or simply "integer")
https://en.wikipedia.org/wiki/C_data_types

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