[R] Understanding and predict round-off errors sign on simple functions
c.jallet at laposte.net
c.jallet at laposte.net
Wed Jun 29 11:55:55 CEST 2016
Hi,
May be it is a basic thing but I would like to know if we can anticipate
round-off errors sign.
Here is an example :
# numerical matrix
m <- matrix(data=cbind(rnorm(10, 0), rnorm(10, 2), rnorm(10, 5)), nrow=10,
ncol=3)
> m
[,1] [,2] [,3]
[1,] 0.4816247 1.1973502 3.855641
[2,] -1.2174937 0.7356427 4.393279
[3,] 0.8504074 2.5286509 2.689196
[4,] 1.8048642 1.8580804 6.665237
[5,] -0.6749397 1.0944277 4.838608
[6,] 0.8252034 1.5595268 3.681695
[7,] 1.3002208 0.9582693 4.561577
[8,] 1.6950923 3.5677921 6.005078
[9,] 0.6509285 0.9025964 5.082288
[10,] -0.5676040 1.3281102 4.446451
#weird moving average of period 1 !
mma <- apply(m, 2, SMA, n=1)
> mma
[,1] [,2] [,3]
[1,] NA NA NA
[2,] -1.2174937 0.7356427 4.393279
[3,] 0.8504074 2.5286509 2.689196
[4,] 1.8048642 1.8580804 6.665237
[5,] -0.6749397 1.0944277 4.838608
[6,] 0.8252034 1.5595268 3.681695
[7,] 1.3002208 0.9582693 4.561577
[8,] 1.6950923 3.5677921 6.005078
[9,] 0.6509285 0.9025964 5.082288
[10,] -0.5676040 1.3281102 4.446451
#difference should be 0 but here is the result
> m - mma
[,1] [,2] [,3]
[1,] NA NA NA
[2,] 0.000000e+00 0.000000e+00 -8.881784e-16
[3,] 0.000000e+00 0.000000e+00 -8.881784e-16
[4,] 0.000000e+00 4.440892e-16 -8.881784e-16
[5,] -1.110223e-16 4.440892e-16 -8.881784e-16
[6,] -1.110223e-16 2.220446e-16 -4.440892e-16
[7,] -2.220446e-16 2.220446e-16 0.000000e+00
[8,] -2.220446e-16 0.000000e+00 0.000000e+00
[9,] -3.330669e-16 2.220446e-16 -8.881784e-16
[10,] -3.330669e-16 4.440892e-16 -8.881784e-16
SMA function use runMean
# TTR / R / MovingAverages.R
"SMA" <- function(x, n=10, ...) { # Simple Moving Average
ma <- runMean( x, n )
if(!is.null(dim(ma))) {
colnames(ma) <- "SMA"
}
return(ma)
}
Can anyone explain me that round error type?
Is it possible to reproduce this same error generation in another language
like C++ or C# ?
Thanks in advance for your answers
Regards
Chris
[[alternative HTML version deleted]]
More information about the R-help
mailing list