Understanding and predict round-off errors sign on simple functions
I am certainly no expert, but I would assume that: 1. Roundoff errors depend on the exact numerical libraries and versions that are used, and so general language comparisons are impossible without that information; 2. Roundoff errors depend on the exact calculations being done and machine precision and are very complicated to determine So I would say the answer to your questions is no. But you should probably address such a question to a numerical analyst for an authoritative answer. Maybe try stats.stackexchange.com . -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
On Wed, Jun 29, 2016 at 2:55 AM, Sirhc via R-help <r-help at r-project.org> wrote:
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]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.