[Rd] slots of type "double"
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?
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?
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?
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?
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"
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?
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?
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?
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"
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?
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?
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?
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"
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"
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?
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
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
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
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
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-