[Rd] slots of type "double"

2007-11-13 Thread hpages
Hi,

Any idea why S4 doesn't allow slots of type "double"?

  > setClass("A", representation(a="double"))
  Error in makePrototypeFromClassDef(properties, ClassDef, immediate, where) : 
in making the prototype for class "A" elements of the prototype failed to
match the corresponding slot class: a (class “double” )

"numeric", "integer", "character", "complex", "raw", etc... they all work
but "double" doesn't. Any reason for this strange exception?

Thanks!
H.

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


[Rd] How to overload the assignment operator?

2007-11-13 Thread Jens Oehlschlägel
Dear all,

what is the proper way to make the assignment operator generic and define 
methods depending on the class of the assigned value?

Best regards


Jens Oehlschlägel

P.S. I vaguely remember that this was possible in S+. In R I tried to no avail: 

  # using this like h<-1:3 gives Error: in `<-.default`(h, 1:3) : invalid 
(do_set) left-hand side to assignment
  "<-.default" <- get("<-") 

  # using this does fail on subassignments like: h <- 1:3 ; h[1] <- 7 (h still 
is 1:3)
  "<-.default" <- function(x, value){
assign(deparse(substitute(x)), value, parent.frame())
invisible(x)
  }

  # this seems to work
  "<-" <- function(x, value){
UseMethod("<-", value)
  }

  # whenever the assigned value has class 'ff' I want to do execute something 
like
  "<-.ff" <- function(x, value){
y <- clone(value)
assign(deparse(substitute(x)), y, parent.frame())
y
  }


> version
   _   
platform   i386-pc-mingw32 
arch   i386
os mingw32 
system i386, mingw32   
status 
major  2   
minor  6.0 
year   2007
month  10  
day03  
svn rev43063   
language   R   
version.string R version 2.6.0 (2007-10-03)

--

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Matthias Kohl
are you looking for "setReplaceMethod"?
hth
Matthias

Jens Oehlschlägel wrote:
> Dear all,
>
> what is the proper way to make the assignment operator generic and define 
> methods depending on the class of the assigned value?
>
> Best regards
>
>
> Jens Oehlschlägel
>
> P.S. I vaguely remember that this was possible in S+. In R I tried to no 
> avail: 
>
>   # using this like h<-1:3 gives Error: in `<-.default`(h, 1:3) : invalid 
> (do_set) left-hand side to assignment
>   "<-.default" <- get("<-") 
>
>   # using this does fail on subassignments like: h <- 1:3 ; h[1] <- 7 (h 
> still is 1:3)
>   "<-.default" <- function(x, value){
> assign(deparse(substitute(x)), value, parent.frame())
> invisible(x)
>   }
>
>   # this seems to work
>   "<-" <- function(x, value){
> UseMethod("<-", value)
>   }
>
>   # whenever the assigned value has class 'ff' I want to do execute something 
> like
>   "<-.ff" <- function(x, value){
> y <- clone(value)
> assign(deparse(substitute(x)), y, parent.frame())
> y
>   }
>
>
>   
>> version
>> 
>_   
> platform   i386-pc-mingw32 
> arch   i386
> os mingw32 
> system i386, mingw32   
> status 
> major  2   
> minor  6.0 
> year   2007
> month  10  
> day03  
> svn rev43063   
> language   R   
> version.string R version 2.6.0 (2007-10-03)
>
> --
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Oleg Sklyar
I think the question is not about setReplaceMethod, here is the idea:

## setReplaceMethod-like situation:

> names(x) <- c("a","b")

## the question of interest

> class(x)
[1] myClass
> y <- x ## this to run a user-defined clone method for class 'myClass'

Why is this important - if x contains data that actually needs to be
duplicated this would come handy. I'd like to know the solution as well.
Maybe it's my ignorance that I don't know the answer and the response
will be RTFM - fine, just point out where :)

Best,
Oleg



On Tue, 2007-11-13 at 14:52 +0100, Matthias Kohl wrote:
> are you looking for "setReplaceMethod"?
> hth
> Matthias
> 
> Jens Oehlschlägel wrote:
> > Dear all,
> >
> > what is the proper way to make the assignment operator generic and define 
> > methods depending on the class of the assigned value?
> >
> > Best regards
> >
> >
> > Jens Oehlschlägel
> >
> > P.S. I vaguely remember that this was possible in S+. In R I tried to no 
> > avail: 
> >
> >   # using this like h<-1:3 gives Error: in `<-.default`(h, 1:3) : invalid 
> > (do_set) left-hand side to assignment
> >   "<-.default" <- get("<-") 
> >
> >   # using this does fail on subassignments like: h <- 1:3 ; h[1] <- 7 (h 
> > still is 1:3)
> >   "<-.default" <- function(x, value){
> > assign(deparse(substitute(x)), value, parent.frame())
> > invisible(x)
> >   }
> >
> >   # this seems to work
> >   "<-" <- function(x, value){
> > UseMethod("<-", value)
> >   }
> >
> >   # whenever the assigned value has class 'ff' I want to do execute 
> > something like
> >   "<-.ff" <- function(x, value){
> > y <- clone(value)
> > assign(deparse(substitute(x)), y, parent.frame())
> > y
> >   }
> >
> >
> >   
> >> version
> >> 
> >_   
> > platform   i386-pc-mingw32 
> > arch   i386
> > os mingw32 
> > system i386, mingw32   
> > status 
> > major  2   
> > minor  6.0 
> > year   2007
> > month  10  
> > day03  
> > svn rev43063   
> > language   R   
> > version.string R version 2.6.0 (2007-10-03)
> >
> > --
> >
> > __
> > R-devel@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> 
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
-- 
Dr Oleg Sklyar * EBI-EMBL, Cambridge CB10 1SD, UK * +44-1223-494466

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Jens Oehlschlägel
Thanks Matthias,

> are you looking for "setReplaceMethod"?

So far the package I m writing has avoided using anything from S4 and the 
implications of touching S4 are not clear to me. The package aims on providing 
an alternative to 'atomic' data stored in ram, i.e. large atomic data stored on 
disk. I need some advice how to do this maximally performant, which probably 
means pure S3!?

Best regards


Jens Oehlschlägel
--

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


Re: [Rd] slots of type "double"

2007-11-13 Thread Simon Urbanek

On Nov 13, 2007, at 3:36 AM, [EMAIL PROTECTED] wrote:

> Any idea why S4 doesn't allow slots of type "double"?
>

Type (as in storage type and "double" is a storage type) has nothing  
to do with classes. You cannot create slots for types, only for classes.


>> setClass("A", representation(a="double"))
>  Error in makePrototypeFromClassDef(properties, ClassDef, immediate,  
> where) :
>in making the prototype for class "A" elements of the prototype  
> failed to
> match the corresponding slot class: a (class “double” )
>
> "numeric", "integer", "character", "complex", "raw", etc... they all  
> work but "double" doesn't. Any reason for this strange exception?
>

AFAICS there is no way to create an object of the class "double" (save  
for 'faking' it by creating an informal S3 object), so such definition  
is useless. And given this fact, even the internal code is unable to  
create it, so it doesn't match the signature. Note:

 > a=new("double")
 > class(a)
[1] "numeric"
 > is(a,"double")
[1] FALSE

I think it comes from the fact that there is an S4 definition for the  
class "double" which is not valid. That is probably a bug and the  
class definition should be removed.

Cheers,
Simon

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Simon Urbanek

On Nov 13, 2007, at 9:19 AM, Jens Oehlschlägel wrote:

> Thanks Matthias,
>
>> are you looking for "setReplaceMethod"?
>
> So far the package I m writing has avoided using anything from S4  
> and the implications of touching S4 are not clear to me. The package  
> aims on providing an alternative to 'atomic' data stored in ram,  
> i.e. large atomic data stored on disk. I need some advice how to do  
> this maximally performant, which probably means pure S3!?
>

You cannot use S3 here, because you want to dispatch on the *second*  
argument.

I don't think you want to do what you described - you would slow down  
everything in R considerably just by making `<-` a generic (and in  
fact you cannot do that for a good reason).

Why don't you take the external pointer approach that many others take  
to provide proxy objects to external data? (DB access, mem-mapped  
files, cross-language objects, etc.) That allows you to define your  
storage semantics very efficiently in C. You can still choose to  
define any syntactic sugar you want in either S3 or S4.

Cheers,
Simon

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Prof Brian Ripley

On Tue, 13 Nov 2007, "Jens Oehlschlägel" wrote:


Thanks Matthias,


are you looking for "setReplaceMethod"?


So far the package I m writing has avoided using anything from S4 and 
the implications of touching S4 are not clear to me. The package aims on 
providing an alternative to 'atomic' data stored in ram, i.e. large 
atomic data stored on disk. I need some advice how to do this maximally 
performant, which probably means pure S3!?


setReplaceMethod() is just syntactic sugar for setting an S4 method on a 
replacement function (read the function definition to see so).  You can 
set S3 replacement methods, and the S4 mechanism just piggy-backs on that.


I think the conceptual problem is that the assignment operator does not 
actually do any copying: it creates a binding of a symbol to a value. 
Any copying which occurs happens when the value is (potentially) changed. 
There is no provision for that to depend on the class (rather than the 
type) of the object.  Since external pointers are never duplicated, you 
ought to be able to take advantage of that to design the copying semantics 
you want.


--
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Gabor Grothendieck
Check out the g.data package in case that's what you are looking for.  It
uses promises until the data is actually used.

On Nov 13, 2007 9:19 AM, "Jens Oehlschlägel" <[EMAIL PROTECTED]> wrote:
> Thanks Matthias,
>
> > are you looking for "setReplaceMethod"?
>
> So far the package I m writing has avoided using anything from S4 and the 
> implications of touching S4 are not clear to me. The package aims on 
> providing an alternative to 'atomic' data stored in ram, i.e. large atomic 
> data stored on disk. I need some advice how to do this maximally performant, 
> which probably means pure S3!?
>
> Best regards
>
>
> Jens Oehlschlägel
>
> --
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

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


Re: [Rd] slots of type "double"

2007-11-13 Thread Prof Brian Ripley
On Tue, 13 Nov 2007, Simon Urbanek wrote:

>
> On Nov 13, 2007, at 3:36 AM, [EMAIL PROTECTED] wrote:
>
>> Any idea why S4 doesn't allow slots of type "double"?
>>
>
> Type (as in storage type and "double" is a storage type) has nothing
> to do with classes. You cannot create slots for types, only for classes.

Unfortunately not in the world of the 'methods' package (which seems to 
differ here from the Green Book and S-PLUS).  There's a basic class 
"double" (and also "single") defined in BasicClasses.R.  It say:

> getClass("double")

No Slots, prototype of class "numeric"

Extends: "vector", "numeric"

> getClass("numeric")

No Slots, prototype of class "numeric"

Extends: "vector"

Known Subclasses: "double", "integer"

So it is an otherwise unspecified subclass of "numeric".

Now when you do

> a <- new("numeric", pi)
> a
[1] 3.141593
> class(a)
[1] "numeric"

you are in fact calling class() on a REALSXP, and that is set up to report 
"numeric" (the implicit class comes from mode not type, except for 
"integer").

Anther area of confusion is that as.numeric, as.double and as.real are 
three names for the same thing, but is.numeric and is.double are not the 
same.  So we end up with

> x <- 1:3
> is.numeric(x)
[1] TRUE
> identical(x, as.numeric(x))
[1] FALSE
> x <- pi
> is.numeric(x)
[1] TRUE
> identical(x, as.numeric(x))
[1] TRUE

Basically I think class() is wrong (it should use "double"), but it was 
not my choice and it was presumably done to agree with the Green Book.

I agree that it would be best to remove the "double" and "single" S4 
classes.  At least in the version of S-PLUS I have left, "double" does not 
exist -- "single" does but is a distinct storage type.


>
>
>>> setClass("A", representation(a="double"))
>>  Error in makePrototypeFromClassDef(properties, ClassDef, immediate,
>> where) :
>>in making the prototype for class "A" elements of the prototype
>> failed to
>> match the corresponding slot class: a (class ?double? )
>>
>> "numeric", "integer", "character", "complex", "raw", etc... they all
>> work but "double" doesn't. Any reason for this strange exception?
>>
>
> AFAICS there is no way to create an object of the class "double" (save
> for 'faking' it by creating an informal S3 object), so such definition
> is useless. And given this fact, even the internal code is unable to
> create it, so it doesn't match the signature. Note:
>
> > a=new("double")
> > class(a)
> [1] "numeric"
> > is(a,"double")
> [1] FALSE
>
> I think it comes from the fact that there is an S4 definition for the
> class "double" which is not valid. That is probably a bug and the
> class definition should be removed.
>
> Cheers,
> Simon
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Jens Oehlschlägel
Thank you Brian,

> setReplaceMethod() is just syntactic sugar for setting an S4 method on a 
> replacement function (read the function definition to see so).  You can 
> set S3 replacement methods, and the S4 mechanism just piggy-backs on that.

So I understand that setReplaceMethod will not help.

> I think the conceptual problem is that the assignment operator does not 
> actually do any copying: it creates a binding of a symbol to a value. 
> Any copying which occurs happens when the value is (potentially) changed. 

I would be even happier if the cloning would only occur on any attempt to 
change the external pointer / proxy-object. 

> There is no provision for that to depend on the class (rather than the 
> type) of the object.  

Mh, unless the internal copying mechanism would call a clone generic for 
non-atomic objects

> Since external pointers are never duplicated, you 
> ought to be able to take advantage of that to design the copying semantics 
> you want.

How that? How do I know that any user has assigned/modified the external 
pointer (or a proxy object containing the external pointer) such that I can 
invoke the cloning?

Best regards


Jens Oehlschlägel
--

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Jens Oehlschlägel
Thanks Simon,

> You cannot use S3 here, because you want to dispatch on the *second*  
> argument.

"<-" <- function(x, value)UseMethod("<-", value)
DOES dispatch on the second argument (see the dispatchsecond example below)

> Why don't you take the external pointer approach that many others take  
> to provide proxy objects to external data? (DB access, mem-mapped  
> files, cross-language objects, etc.) That allows you to define your  
> storage semantics very efficiently in C. You can still choose to  
> define any syntactic sugar you want in either S3 or S4.

I AM using the external pointer approach and this works verly well - if one 
tolerates that the external data is not duplicated when the proxy object is 
copied. I was wondering however, if it is possible to perfectly mimic R's 
copying semantics: duplicate external object (and the external pointer) on 
assignment (or even better only on modify after assignment).

Best regards

Jens Oehlschlägel

> dispatchsecond <- function(first, second)
+ UseMethod("dispatchsecond", second)
> 
> dispatchsecond.default <- function(first, second){
+ cat("here default\n")
+ }
> 
> dispatchsecond.ff <- function(first, second){
+ cat("here ff\n")
+ }
> 
> default <- 1
> ff <- 1
> class(ff) <- "ff"
> 
> dispatchsecond(1,default)
here default
> dispatchsecond(1,ff)
here ff
> 
--

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Jens Oehlschlägel
Thanks Simon,

> You cannot use S3 here, because you want to dispatch on the *second*  
> argument.

"<-" <- function(x, value)UseMethod("<-", value)
DOES dispatch on the second argument (see the dispatchsecond example below)

> Why don't you take the external pointer approach that many others take  
> to provide proxy objects to external data? (DB access, mem-mapped  
> files, cross-language objects, etc.) That allows you to define your  
> storage semantics very efficiently in C. You can still choose to  
> define any syntactic sugar you want in either S3 or S4.

I AM using the external pointer approach and this works verly well - if one 
tolerates that the external data is not duplicated when the proxy object is 
copied. I was wondering however, if it is possible to perfectly mimic R's 
copying semantics: duplicate external object (and the external pointer) on 
assignment (or even better only on modify after assignment).

Best regards

Jens Oehlschlägel

> dispatchsecond <- function(first, second)
+ UseMethod("dispatchsecond", second)
> 
> dispatchsecond.default <- function(first, second){
+ cat("here default\n")
+ }
> 
> dispatchsecond.ff <- function(first, second){
+ cat("here ff\n")
+ }
> 
> default <- 1
> ff <- 1
> class(ff) <- "ff"
> 
> dispatchsecond(1,default)
here default
> dispatchsecond(1,ff)
here ff
> 
--

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


Re: [Rd] slots of type "double"

2007-11-13 Thread John Chambers
What's the proposal here?  To eliminate "double" as a class?  No 
objection from this corner.  As I remember, it was put in early in the 
implementation of methods, when I was confused about what R intended in 
this area (well, I'm not totally unconfused even now).

If this is the proposal, we could implement it in r-devel and see if 
there are complaints.

Prof Brian Ripley wrote:
> On Tue, 13 Nov 2007, Simon Urbanek wrote:
>
>   
>> On Nov 13, 2007, at 3:36 AM, [EMAIL PROTECTED] wrote:
>>
>> 
>>> Any idea why S4 doesn't allow slots of type "double"?
>>>
>>>   
>> Type (as in storage type and "double" is a storage type) has nothing
>> to do with classes. You cannot create slots for types, only for classes.
>> 
>
> Unfortunately not in the world of the 'methods' package (which seems to 
> differ here from the Green Book and S-PLUS).  There's a basic class 
> "double" (and also "single") defined in BasicClasses.R.  It say:
>
>   
>> getClass("double")
>> 
>
> No Slots, prototype of class "numeric"
>
> Extends: "vector", "numeric"
>
>   
>> getClass("numeric")
>> 
>
> No Slots, prototype of class "numeric"
>
> Extends: "vector"
>
> Known Subclasses: "double", "integer"
>
> So it is an otherwise unspecified subclass of "numeric".
>
> Now when you do
>
>   
>> a <- new("numeric", pi)
>> a
>> 
> [1] 3.141593
>   
>> class(a)
>> 
> [1] "numeric"
>
> you are in fact calling class() on a REALSXP, and that is set up to report 
> "numeric" (the implicit class comes from mode not type, except for 
> "integer").
>
> Anther area of confusion is that as.numeric, as.double and as.real are 
> three names for the same thing, but is.numeric and is.double are not the 
> same.  So we end up with
>
>   
>> x <- 1:3
>> is.numeric(x)
>> 
> [1] TRUE
>   
>> identical(x, as.numeric(x))
>> 
> [1] FALSE
>   
>> x <- pi
>> is.numeric(x)
>> 
> [1] TRUE
>   
>> identical(x, as.numeric(x))
>> 
> [1] TRUE
>
> Basically I think class() is wrong (it should use "double"), but it was 
> not my choice and it was presumably done to agree with the Green Book.
>
> I agree that it would be best to remove the "double" and "single" S4 
> classes.  At least in the version of S-PLUS I have left, "double" does not 
> exist -- "single" does but is a distinct storage type.
>
>
>   
>> 
 setClass("A", representation(a="double"))
 
>>>  Error in makePrototypeFromClassDef(properties, ClassDef, immediate,
>>> where) :
>>>in making the prototype for class "A" elements of the prototype
>>> failed to
>>> match the corresponding slot class: a (class ?double? )
>>>
>>> "numeric", "integer", "character", "complex", "raw", etc... they all
>>> work but "double" doesn't. Any reason for this strange exception?
>>>
>>>   
>> AFAICS there is no way to create an object of the class "double" (save
>> for 'faking' it by creating an informal S3 object), so such definition
>> is useless. And given this fact, even the internal code is unable to
>> create it, so it doesn't match the signature. Note:
>>
>> 
>>> a=new("double")
>>> class(a)
>>>   
>> [1] "numeric"
>> 
>>> is(a,"double")
>>>   
>> [1] FALSE
>>
>> I think it comes from the fact that there is an S4 definition for the
>> class "double" which is not valid. That is probably a bug and the
>> class definition should be removed.
>>
>> Cheers,
>> Simon
>>
>> __
>> 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] slots of type "double"

2007-11-13 Thread Prof Brian Ripley
On Tue, 13 Nov 2007, John Chambers wrote:

> What's the proposal here?  To eliminate "double" as a class?  No objection

Eliminate "double" and "single".

> from this corner.  As I remember, it was put in early in the implementation 
> of methods, when I was confused about what R intended in this area (well, I'm 
> not totally unconfused even now).
>
> If this is the proposal, we could implement it in r-devel and see if there 
> are complaints.

I was going to propose so after running some tests over CRAN/BioC (which 
will take a few hours).

Brian

> Prof Brian Ripley wrote:
>> On Tue, 13 Nov 2007, Simon Urbanek wrote:
>>
>> 
>>> On Nov 13, 2007, at 3:36 AM, [EMAIL PROTECTED] wrote:
>>>
>>> 
 Any idea why S4 doesn't allow slots of type "double"?

 
>>> Type (as in storage type and "double" is a storage type) has nothing
>>> to do with classes. You cannot create slots for types, only for classes.
>>> 
>> 
>> Unfortunately not in the world of the 'methods' package (which seems to 
>> differ here from the Green Book and S-PLUS).  There's a basic class 
>> "double" (and also "single") defined in BasicClasses.R.  It say:
>>
>> 
>>> getClass("double")
>>> 
>> 
>> No Slots, prototype of class "numeric"
>> 
>> Extends: "vector", "numeric"
>>
>> 
>>> getClass("numeric")
>>> 
>> 
>> No Slots, prototype of class "numeric"
>> 
>> Extends: "vector"
>> 
>> Known Subclasses: "double", "integer"
>> 
>> So it is an otherwise unspecified subclass of "numeric".
>> 
>> Now when you do
>>
>> 
>>> a <- new("numeric", pi)
>>> a
>>> 
>> [1] 3.141593
>> 
>>> class(a)
>>> 
>> [1] "numeric"
>> 
>> you are in fact calling class() on a REALSXP, and that is set up to report 
>> "numeric" (the implicit class comes from mode not type, except for 
>> "integer").
>> 
>> Anther area of confusion is that as.numeric, as.double and as.real are 
>> three names for the same thing, but is.numeric and is.double are not the 
>> same.  So we end up with
>>
>> 
>>> x <- 1:3
>>> is.numeric(x)
>>> 
>> [1] TRUE
>> 
>>> identical(x, as.numeric(x))
>>> 
>> [1] FALSE
>> 
>>> x <- pi
>>> is.numeric(x)
>>> 
>> [1] TRUE
>> 
>>> identical(x, as.numeric(x))
>>> 
>> [1] TRUE
>> 
>> Basically I think class() is wrong (it should use "double"), but it was not 
>> my choice and it was presumably done to agree with the Green Book.
>> 
>> I agree that it would be best to remove the "double" and "single" S4 
>> classes.  At least in the version of S-PLUS I have left, "double" does not 
>> exist -- "single" does but is a distinct storage type.
>> 
>>
>>
>>> 
> setClass("A", representation(a="double"))
>
  Error in makePrototypeFromClassDef(properties, ClassDef, immediate,
 where) :
in making the prototype for class "A" elements of the prototype
 failed to
 match the corresponding slot class: a (class ?double? )
 
 "numeric", "integer", "character", "complex", "raw", etc... they all
 work but "double" doesn't. Any reason for this strange exception?

 
>>> AFAICS there is no way to create an object of the class "double" (save
>>> for 'faking' it by creating an informal S3 object), so such definition
>>> is useless. And given this fact, even the internal code is unable to
>>> create it, so it doesn't match the signature. Note:
>>>
>>> 
 a=new("double")
 class(a)
 
>>> [1] "numeric"
>>> 
 is(a,"double")
 
>>> [1] FALSE
>>> 
>>> I think it comes from the fact that there is an S4 definition for the
>>> class "double" which is not valid. That is probably a bug and the
>>> class definition should be removed.
>>> 
>>> Cheers,
>>> Simon
>>> 
>>> __
>>> R-devel@r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>> 
>>
>>

-- 
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595

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


Re: [Rd] How to overload the assignment operator?

2007-11-13 Thread Prof Brian Ripley

On Tue, 13 Nov 2007, "Jens Oehlschlägel" wrote:


Thank you Brian,


setReplaceMethod() is just syntactic sugar for setting an S4 method on a
replacement function (read the function definition to see so).  You can
set S3 replacement methods, and the S4 mechanism just piggy-backs on that.


So I understand that setReplaceMethod will not help.


I think the conceptual problem is that the assignment operator does not
actually do any copying: it creates a binding of a symbol to a value.
Any copying which occurs happens when the value is (potentially) changed.


I would be even happier if the cloning would only occur on any attempt to 
change the external pointer / proxy-object.


There is no provision for that to depend on the class (rather than the
type) of the object.


Mh, unless the internal copying mechanism would call a clone generic for 
non-atomic objects


But as I said, there is no provision for that.  Nor is there going to be. 
One reason is performance, as Simon has hinted.  Another is consistency: 
duplication might well be called from places where class is being ignored.



Since external pointers are never duplicated, you
ought to be able to take advantage of that to design the copying semantics
you want.


How that? How do I know that any user has assigned/modified the external 
pointer (or a proxy object containing the external pointer) such that I can 
invoke the cloning?


I don't even know what you want to do.  But I don't think copying is the 
place to find out if a user changed an object: presumably it was done via 
your interface.



--
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] R 2.6.0 make check fails on SGI origin 350 and

2007-11-13 Thread kamil Marcinkowski
Hello list

Thank you for your help with the d-p-q-r-tests on Irix.

After patching d-p-q-r-tests.R, and d-p-q-r-tests.Rout.save file to  
reflect the
change, d-p-q-r tests succeed but  make check still fails:

> comparing 'complex.Rout' to './complex.Rout.save' ...188c188
> < [1] 0+0i
> ---
> > [1] 1.6789e-308+0i
>  OK
> running code in 'print-tests.R' ... OK
> comparing 'print-tests.Rout' to './print-tests.Rout.save' ...256c256
> < [1] 9
> ---
> > [1] 11
> 260c260
> < [1]  0.00e+00 2.225074e-308 2.225074e-308 2.227299e-308  
> 2.447581e-308
> ---
> > [1] 2.002566e-308 2.222849e-308 2.225074e-308 2.225074e-308  
> 2.225074e-308 2.227299e-308 2.447581e-308
> 266c266
> < [1]  0.00e+00  0.00e+00  0.00e+00 2.447581e-308  
> 1.566452e-306 1.253162e-305
> ---
> > [1] 2.002566e-308 2.447581e-308 1.281643e-306 1.566452e-306  
> 1.025314e-305 1.253162e-305
> 269,273c269,273
> < [1,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00   
> 0.0e+00
> < [2,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00   
> 0.0e+00
> < [3,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00   
> 0.0e+00
> < [4,]  0e+00  0e+00 2.4e-308 2.45e-308 2.448e-308 2.4476e-308  
> 2.44758e-308
> < [5,] 2e-306 2e-306 1.6e-306 1.57e-306 1.566e-306 1.5665e-306  
> 1.56645e-306
> ---
> > [1,] 2e-308 2e-308 2.0e-308 2.00e-308 2.003e-308 2.0026e-308  
> 2.00257e-308
> > [2,] 2e-308 2e-308 2.4e-308 2.45e-308 2.448e-308 2.4476e-308  
> 2.44758e-308
> > [3,] 1e-306 1e-306 1.3e-306 1.28e-306 1.282e-306 1.2816e-306  
> 1.28164e-306
> > [4,] 2e-306 2e-306 1.6e-306 1.57e-306 1.566e-306 1.5665e-306  
> 1.56645e-306
> > [5,] 1e-305 1e-305 1.0e-305 1.03e-305 1.025e-305 1.0253e-305  
> 1.02531e-305
> 355c355
> < 4.141593+  1i 4.341593+ 10i  NaN+NaNi  Inf+  0i -Inf 
> +NaNi  NaN+Infi
> ---
> > 4.141593+  1i 4.341593+ 10iNA  Inf+  0i -Inf 
> +NaNi  NaN+Infi
> 358c358
> < [1,] 4.141593+ 1i NaN+NaNi -Inf+NaNi
> ---
> > [1,] 4.141593+ 1i NA -Inf+NaNi
> 364c364
> < [3,] NaN+  NaNi  NaN+ Infi
> ---
> > [3,] NA  NaN+ Infi
>  OK
> running code in 'datasets.R' ... OK
> comparing 'datasets.Rout' to './datasets.Rout.save' ... OK
> running code in 'lapack.R' ... OK
> comparing 'lapack.Rout' to './lapack.Rout.save' ... OK
> gmake[3]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> gmake[2]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> gmake[2]: Entering directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> running regression tests
> gmake[3]: Entering directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> running code in 'reg-tests-1.R' ...gmake[3]: *** [reg-tests-1.Rout]  
> Error 1
> gmake[3]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> gmake[2]: *** [test-Reg] Error 2
> gmake[2]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> gmake[1]: *** [test-all-basics] Error 1
> gmake[1]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/tests'
> gmake: *** [check] Error 2
>


Also since we are using perl 5.6 on the system; the documentation  
system did not build.

> [EMAIL PROTECTED]:104#perl -v
> This is perl, v5.6.1 built for irix-n32


configure output:
> checking for perl... /usr/sbin/perl
> checking whether perl version is at least 5.8.0... Perl v5.8.0  
> required--this is only v5.6.1, stopped at -e line 1.
> no
> configure: WARNING: you cannot build the object documentation system


The following errors occurred during gmake check:

> gmake[5]: Entering directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> you need Perl version 5 to build the R object docs
> gmake[5]: *** [Rdfiles] Error 1
> gmake[5]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> file ../../library/base/R-ex cannot be opened at ../../share/perl/ 
> massage-Examples.pl line 129.
> running code in 'base-Ex.R' ... OK
> collecting examples for package 'tools' ...
> gmake[5]: Entering directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> you need Perl version 5 to build the R object docs
> gmake[5]: *** [Rdfiles] Error 1
> gmake[5]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> file ../../library/tools/R-ex cannot be opened at ../../share/perl/ 
> massage-Examples.pl line 129.
> running code in 'tools-Ex.R' ... OK
> collecting examples for package 'utils' ...
> gmake[5]: Entering directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> you need Perl version 5 to build the R object docs
> gmake[5]: *** [Rdfiles] Error 1
> gmake[5]: Leaving directory `/usr/global/R-build/R-2.6.0- 
> patched-11-08-07/src/library'
> file ../../library/utils/R-ex cannot be opened at ../../share/perl/ 
> massage-Examples.pl line 129.
> running code in 'utils-Ex.R' ... OK
> collecting examples for package 'grDevice

Re: [Rd] R 2.6.0 make check fails on SGI origin 350 and

2007-11-13 Thread Prof Brian Ripley
The perl-related warnings have gone in R-devel: we now take the view that 
since we need perl to make the test suite, perl >= 5.8.0 is compulsory. 
(5.6.1 is now over 7 years' old, and 5.8.0 is more than 5.)

The make check failure is in reg-tests-1.R and so will show up in 
reg-tests-1.Rout.fail.  What is at the bottom of that file?

The rest seem to indicate infelicities in how IEC60559 arithmetic is 
handled, e.g the particular NaN that represents NA not being propagated 
correctly and non-use of denormalized numbers.

On Tue, 13 Nov 2007, kamil Marcinkowski wrote:

> Hello list
>
> Thank you for your help with the d-p-q-r-tests on Irix.
>
> After patching d-p-q-r-tests.R, and d-p-q-r-tests.Rout.save file to
> reflect the
> change, d-p-q-r tests succeed but  make check still fails:
>
>> comparing 'complex.Rout' to './complex.Rout.save' ...188c188
>> < [1] 0+0i
>> ---
>>> [1] 1.6789e-308+0i
>>  OK
>> running code in 'print-tests.R' ... OK
>> comparing 'print-tests.Rout' to './print-tests.Rout.save' ...256c256
>> < [1] 9
>> ---
>>> [1] 11
>> 260c260
>> < [1]  0.00e+00 2.225074e-308 2.225074e-308 2.227299e-308
>> 2.447581e-308
>> ---
>>> [1] 2.002566e-308 2.222849e-308 2.225074e-308 2.225074e-308
>> 2.225074e-308 2.227299e-308 2.447581e-308
>> 266c266
>> < [1]  0.00e+00  0.00e+00  0.00e+00 2.447581e-308
>> 1.566452e-306 1.253162e-305
>> ---
>>> [1] 2.002566e-308 2.447581e-308 1.281643e-306 1.566452e-306
>> 1.025314e-305 1.253162e-305
>> 269,273c269,273
>> < [1,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>> 0.0e+00
>> < [2,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>> 0.0e+00
>> < [3,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>> 0.0e+00
>> < [4,]  0e+00  0e+00 2.4e-308 2.45e-308 2.448e-308 2.4476e-308
>> 2.44758e-308
>> < [5,] 2e-306 2e-306 1.6e-306 1.57e-306 1.566e-306 1.5665e-306
>> 1.56645e-306
>> ---
>>> [1,] 2e-308 2e-308 2.0e-308 2.00e-308 2.003e-308 2.0026e-308
>> 2.00257e-308
>>> [2,] 2e-308 2e-308 2.4e-308 2.45e-308 2.448e-308 2.4476e-308
>> 2.44758e-308
>>> [3,] 1e-306 1e-306 1.3e-306 1.28e-306 1.282e-306 1.2816e-306
>> 1.28164e-306
>>> [4,] 2e-306 2e-306 1.6e-306 1.57e-306 1.566e-306 1.5665e-306
>> 1.56645e-306
>>> [5,] 1e-305 1e-305 1.0e-305 1.03e-305 1.025e-305 1.0253e-305
>> 1.02531e-305
>> 355c355
>> < 4.141593+  1i 4.341593+ 10i  NaN+NaNi  Inf+  0i -Inf
>> +NaNi  NaN+Infi
>> ---
>>> 4.141593+  1i 4.341593+ 10iNA  Inf+  0i -Inf
>> +NaNi  NaN+Infi
>> 358c358
>> < [1,] 4.141593+ 1i NaN+NaNi -Inf+NaNi
>> ---
>>> [1,] 4.141593+ 1i NA -Inf+NaNi
>> 364c364
>> < [3,] NaN+  NaNi  NaN+ Infi
>> ---
>>> [3,] NA  NaN+ Infi
>>  OK
>> running code in 'datasets.R' ... OK
>> comparing 'datasets.Rout' to './datasets.Rout.save' ... OK
>> running code in 'lapack.R' ... OK
>> comparing 'lapack.Rout' to './lapack.Rout.save' ... OK
>> gmake[3]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> gmake[2]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> gmake[2]: Entering directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> running regression tests
>> gmake[3]: Entering directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> running code in 'reg-tests-1.R' ...gmake[3]: *** [reg-tests-1.Rout]
>> Error 1
>> gmake[3]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> gmake[2]: *** [test-Reg] Error 2
>> gmake[2]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> gmake[1]: *** [test-all-basics] Error 1
>> gmake[1]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/tests'
>> gmake: *** [check] Error 2
>>
>
>
> Also since we are using perl 5.6 on the system; the documentation
> system did not build.
>
>> [EMAIL PROTECTED]:104#   perl -v
>> This is perl, v5.6.1 built for irix-n32
>
>
> configure output:
>> checking for perl... /usr/sbin/perl
>> checking whether perl version is at least 5.8.0... Perl v5.8.0
>> required--this is only v5.6.1, stopped at -e line 1.
>> no
>> configure: WARNING: you cannot build the object documentation system
>
>
> The following errors occurred during gmake check:
>
>> gmake[5]: Entering directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/src/library'
>> you need Perl version 5 to build the R object docs
>> gmake[5]: *** [Rdfiles] Error 1
>> gmake[5]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/src/library'
>> file ../../library/base/R-ex cannot be opened at ../../share/perl/
>> massage-Examples.pl line 129.
>> running code in 'base-Ex.R' ... OK
>> collecting examples for package 'tools' ...
>> gmake[5]: Entering directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/src/library'
>> you need Perl version 5 to build the R object docs
>> gmake[5]: *** [Rdfiles] Error 1
>> gmake[5]: Leaving directory `/usr/global/R-build/R-2.6.0-
>> patched-11-08-07/src/library'

Re: [Rd] R 2.6.0 make check fails on SGI origin 350 and

2007-11-13 Thread kamil Marcinkowski
Hello List, Prof Brian Ripley

How would the inefficiencies in IEC60559 arithmetic handling affect a  
user,
Slow computations or compromised data and calculations?

Here are the last 50 lines of the reg-tests-1.Rout.fail file.

> [EMAIL PROTECTED]:70# tail -50 reg-tests-1.Rout.fail
> > ## first two gave error in 1.8.1
> >
> >
> > ## PR#4558 part 2
> > x <- seq(as.POSIXct("2004-03-25"), as.POSIXct("2004-03-31"),  
> by="DSTdays")
> > stopifnot(length(x) == 7)
> > ## was length 6 in the UK time zone.
> >
> >
> > ## PR#6702 c/rbind on list matrices
> > A <- matrix(as.list(1:4), 2, 2)
> > (res <- cbind(A, A))
>  [,1] [,2] [,3] [,4]
> [1,] 1313
> [2,] 2424
> > stopifnot(typeof(res) == "list")
> > (res <- rbind(A, A))
>  [,1] [,2]
> [1,] 13
> [2,] 24
> [3,] 13
> [4,] 24
> > stopifnot(typeof(res) == "list")
> > ## were not implemented in 1.8.1
> >
> >
> > ## Date objects with NA's
> > (t1 <- strptime(c("6. Aug. 1930", "3. Nov. 1925", "28. Mar. 1959",
> +  NA, paste(1:29," Feb. 1960", sep=".")),
> +format = "%d. %b. %Y"))
>  [1] "1930-08-06 MST7MDT" "1925-11-03 MST7MDT" "1959-03-28 MST7MDT"
>  [4] NA   "1960-02-01 MST7MDT" "1960-02-02 MST7MDT"
>  [7] "1960-02-03 MST7MDT" "1960-02-04 MST7MDT" "1960-02-05 MST7MDT"
> [10] "1960-02-06 MST7MDT" "1960-02-07 MST7MDT" "1960-02-08 MST7MDT"
> [13] "1960-02-09 MST7MDT" "1960-02-10 MST7MDT" "1960-02-11 MST7MDT"
> [16] "1960-02-12 MST7MDT" "1960-02-13 MST7MDT" "1960-02-14 MST7MDT"
> [19] "1960-02-15 MST7MDT" "1960-02-16 MST7MDT" "1960-02-17 MST7MDT"
> [22] "1960-02-18 MST7MDT" "1960-02-19 MST7MDT" "1960-02-20 MST7MDT"
> [25] "1960-02-21 MST7MDT" "1960-02-22 MST7MDT" "1960-02-23 MST7MDT"
> [28] "1960-02-24 MST7MDT" "1960-02-25 MST7MDT" "1960-02-26 MST7MDT"
> [31] "1960-02-27 MST7MDT" "1960-02-28 MST7MDT" "1960-02-29 MST7MDT"
> > stopifnot(6 == length(print(s1 <- summary(t1))),
> +   s1== summary(as.POSIXct(t1)),
> +   6 == length(print(format(as.Date(s1 )
>Min. 1st Qu.  MedianMean 3rd Qu.Max.
>  NA  NA  NA  NA  NA  NA
>Min. 1st Qu.  MedianMean 3rd Qu.Max.
>  NA  NA  NA  NA  NA  NA
> Error: s1 == summary(as.POSIXct(t1)) is not all TRUE
> Execution halted
>



Cheers,

Kamil

Kamil Marcinkowski   Westgrid System Administrator
[EMAIL PROTECTED] University of Alberta site
  Tel.780 492-0354 Research Computing Support
Fax.780 492-1729 Academic ICT
Edmonton, Alberta, CANADAUniversity of Alberta


"This communication is intended for the use of the recipient to which  
it is
addressed, and may contain confidential, personal, and/or privileged
information.  Please contact us immediately if you are not the intended
recipient of this communication.  If you are not the intended  
recipient of
this communication, do not copy, distribute, or take action on it. Any
communication received in error, or subsequent reply, should be  
deleted or
destroyed."



On 13-Nov-07, at 4:06 PM, Prof Brian Ripley wrote:

> The perl-related warnings have gone in R-devel: we now take the view  
> that since we need perl to make the test suite, perl >= 5.8.0 is  
> compulsory. (5.6.1 is now over 7 years' old, and 5.8.0 is more than  
> 5.)
>
> The make check failure is in reg-tests-1.R and so will show up in  
> reg-tests-1.Rout.fail.  What is at the bottom of that file?
>
> The rest seem to indicate infelicities in how IEC60559 arithmetic is  
> handled, e.g the particular NaN that represents NA not being  
> propagated correctly and non-use of denormalized numbers.
>
> On Tue, 13 Nov 2007, kamil Marcinkowski wrote:
>
>> Hello list
>>
>> Thank you for your help with the d-p-q-r-tests on Irix.
>>
>> After patching d-p-q-r-tests.R, and d-p-q-r-tests.Rout.save file to
>> reflect the
>> change, d-p-q-r tests succeed but  make check still fails:
>>
>>> comparing 'complex.Rout' to './complex.Rout.save' ...188c188
>>> < [1] 0+0i
>>> ---
 [1] 1.6789e-308+0i
>>> OK
>>> running code in 'print-tests.R' ... OK
>>> comparing 'print-tests.Rout' to './print-tests.Rout.save' ...256c256
>>> < [1] 9
>>> ---
 [1] 11
>>> 260c260
>>> < [1]  0.00e+00 2.225074e-308 2.225074e-308 2.227299e-308
>>> 2.447581e-308
>>> ---
 [1] 2.002566e-308 2.222849e-308 2.225074e-308 2.225074e-308
>>> 2.225074e-308 2.227299e-308 2.447581e-308
>>> 266c266
>>> < [1]  0.00e+00  0.00e+00  0.00e+00 2.447581e-308
>>> 1.566452e-306 1.253162e-305
>>> ---
 [1] 2.002566e-308 2.447581e-308 1.281643e-306 1.566452e-306
>>> 1.025314e-305 1.253162e-305
>>> 269,273c269,273
>>> < [1,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>>> 0.0e+00
>>> < [2,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>>> 0.0e+00
>>> < [3,]  0e+00  0e+00  0.0e+00  0.00e+00  0.000e+00  0.e+00
>>> 0.0e+00
>>> < [4,]  0e+00  0e+00 2.4e-308 2.45e-308 2.448e-308 

Re: [Rd] R 2.6.0 make check fails on SGI origin 350 and

2007-11-13 Thread Prof Brian Ripley
On Tue, 13 Nov 2007, kamil Marcinkowski wrote:

> Hello List, Prof Brian Ripley
>
> How would the inefficiencies in IEC60559 arithmetic handling affect a user,
> Slow computations or compromised data and calculations?

Just a loss of accuracy.  There have been systems in which using extreme 
values causes a large loss of speed, but you are unlikely to encounter 
one.

> Here are the last 50 lines of the reg-tests-1.Rout.fail file.

This shows a bug in the systems' strptime.  This looks like the bug 
mentioned (with a fix) in the R-admin manual under IRIX.


>
>> [EMAIL PROTECTED]:70# tail -50 reg-tests-1.Rout.fail
>>> ## first two gave error in 1.8.1
>>> 
>>> 
>>> ## PR#4558 part 2
>>> x <- seq(as.POSIXct("2004-03-25"), as.POSIXct("2004-03-31"), by="DSTdays")
>>> stopifnot(length(x) == 7)
>>> ## was length 6 in the UK time zone.
>>> 
>>> 
>>> ## PR#6702 c/rbind on list matrices
>>> A <- matrix(as.list(1:4), 2, 2)
>>> (res <- cbind(A, A))
>> [,1] [,2] [,3] [,4]
>> [1,] 1313
>> [2,] 2424
>>> stopifnot(typeof(res) == "list")
>>> (res <- rbind(A, A))
>> [,1] [,2]
>> [1,] 13
>> [2,] 24
>> [3,] 13
>> [4,] 24
>>> stopifnot(typeof(res) == "list")
>>> ## were not implemented in 1.8.1
>>> 
>>> 
>>> ## Date objects with NA's
>>> (t1 <- strptime(c("6. Aug. 1930", "3. Nov. 1925", "28. Mar. 1959",
>> +  NA, paste(1:29," Feb. 1960", sep=".")),
>> +format = "%d. %b. %Y"))
>> [1] "1930-08-06 MST7MDT" "1925-11-03 MST7MDT" "1959-03-28 MST7MDT"
>> [4] NA   "1960-02-01 MST7MDT" "1960-02-02 MST7MDT"
>> [7] "1960-02-03 MST7MDT" "1960-02-04 MST7MDT" "1960-02-05 MST7MDT"
>> [10] "1960-02-06 MST7MDT" "1960-02-07 MST7MDT" "1960-02-08 MST7MDT"
>> [13] "1960-02-09 MST7MDT" "1960-02-10 MST7MDT" "1960-02-11 MST7MDT"
>> [16] "1960-02-12 MST7MDT" "1960-02-13 MST7MDT" "1960-02-14 MST7MDT"
>> [19] "1960-02-15 MST7MDT" "1960-02-16 MST7MDT" "1960-02-17 MST7MDT"
>> [22] "1960-02-18 MST7MDT" "1960-02-19 MST7MDT" "1960-02-20 MST7MDT"
>> [25] "1960-02-21 MST7MDT" "1960-02-22 MST7MDT" "1960-02-23 MST7MDT"
>> [28] "1960-02-24 MST7MDT" "1960-02-25 MST7MDT" "1960-02-26 MST7MDT"
>> [31] "1960-02-27 MST7MDT" "1960-02-28 MST7MDT" "1960-02-29 MST7MDT"
>>> stopifnot(6 == length(print(s1 <- summary(t1))),
>> +   s1== summary(as.POSIXct(t1)),
>> +   6 == length(print(format(as.Date(s1 )
>>   Min. 1st Qu.  MedianMean 3rd Qu.Max.
>> NA  NA  NA  NA  NA  NA
>>   Min. 1st Qu.  MedianMean 3rd Qu.Max.
>> NA  NA  NA  NA  NA  NA
>> Error: s1 == summary(as.POSIXct(t1)) is not all TRUE
>> Execution halted
>> 
>
>
>
> Cheers,
>
> Kamil
>
> Kamil Marcinkowski   Westgrid System Administrator
> [EMAIL PROTECTED] University of Alberta site
> Tel.780 492-0354 Research Computing Support
> Fax.780 492-1729 Academic ICT
> Edmonton, Alberta, CANADAUniversity of Alberta
>
>
> "This communication is intended for the use of the recipient to which it is
> addressed, and may contain confidential, personal, and/or privileged
> information.  Please contact us immediately if you are not the intended
> recipient of this communication.  If you are not the intended recipient of
> this communication, do not copy, distribute, or take action on it. Any
> communication received in error, or subsequent reply, should be deleted or
> destroyed."
>
>
>
> On 13-Nov-07, at 4:06 PM, Prof Brian Ripley wrote:
>
>> The perl-related warnings have gone in R-devel: we now take the view that 
>> since we need perl to make the test suite, perl >= 5.8.0 is compulsory. 
>> (5.6.1 is now over 7 years' old, and 5.8.0 is more than 5.)
>> 
>> The make check failure is in reg-tests-1.R and so will show up in 
>> reg-tests-1.Rout.fail.  What is at the bottom of that file?
>> 
>> The rest seem to indicate infelicities in how IEC60559 arithmetic is 
>> handled, e.g the particular NaN that represents NA not being propagated 
>> correctly and non-use of denormalized numbers.
>> 
>> On Tue, 13 Nov 2007, kamil Marcinkowski wrote:
>> 
>>> Hello list
>>> 
>>> Thank you for your help with the d-p-q-r-tests on Irix.
>>> 
>>> After patching d-p-q-r-tests.R, and d-p-q-r-tests.Rout.save file to
>>> reflect the
>>> change, d-p-q-r tests succeed but  make check still fails:
>>> 
 comparing 'complex.Rout' to './complex.Rout.save' ...188c188
 < [1] 0+0i
 ---
> [1] 1.6789e-308+0i
 OK
 running code in 'print-tests.R' ... OK
 comparing 'print-tests.Rout' to './print-tests.Rout.save' ...256c256
 < [1] 9
 ---
> [1] 11
 260c260
 < [1]  0.00e+00 2.225074e-308 2.225074e-308 2.227299e-308
 2.447581e-308
 ---
> [1] 2.002566e-308 2.222849e-308 2.225074e-308 2.225074e-308
 2.225074e-308 2.227299e-308 2.447581e-308
 266c266
 < [1]  0.00e+00  0.00e+00  0.00e+00 2.447581e-308
 1.566452e-306 1.253162e-