R/rational-add.R
, R/rational-multiply.R
, R/rational-divide.R
, and 5 more
rational-operators.Rd
Rational Number Arithmetic
# S4 method for rationalS4,rationalS4 +(e1, e2) # S4 method for integer,rationalS4 +(e1, e2) # S4 method for rationalS4,integer +(e1, e2) # S4 method for numeric,rationalS4 +(e1, e2) # S4 method for rationalS4,numeric +(e1, e2) # S3 method for rationalS3 +(e1, e2) # S3 method for rationalR6 +(e1, e2) # S4 method for rationalS4,rationalS4 *(e1, e2) # S4 method for integer,rationalS4 *(e1, e2) # S4 method for rationalS4,integer *(e1, e2) # S4 method for numeric,rationalS4 *(e1, e2) # S4 method for rationalS4,numeric *(e1, e2) # S3 method for rationalS3 *(e1, e2) # S3 method for rationalR6 *(e1, e2) # S4 method for rationalS4,rationalS4 /(e1, e2) # S4 method for integer,rationalS4 /(e1, e2) # S4 method for rationalS4,integer /(e1, e2) # S4 method for numeric,rationalS4 /(e1, e2) # S4 method for rationalS4,numeric /(e1, e2) # S3 method for rationalS3 /(e1, e2) # S3 method for rationalR6 /(e1, e2) # S4 method for rationalS4,rationalS4 ^(e1, e2) # S4 method for rationalS4,integer ^(e1, e2) # S4 method for integer,rationalS4 ^(e1, e2) # S4 method for rationalS4,numeric ^(e1, e2) # S4 method for numeric,rationalS4 ^(e1, e2) # S3 method for rationalS3 ^(e1, e2) # S3 method for rationalR6 ^(e1, e2) # S4 method for rationalS4,rationalS4 %/%(e1, e2) # S4 method for integer,rationalS4 %/%(e1, e2) # S4 method for rationalS4,integer %/%(e1, e2) # S4 method for numeric,rationalS4 %/%(e1, e2) # S4 method for rationalS4,numeric %/%(e1, e2) # S3 method for rationalS3 %/%(e1, e2) # S3 method for rationalR6 %/%(e1, e2) # S4 method for rationalS4,rationalS4 %%(e1, e2) # S4 method for integer,rationalS4 %%(e1, e2) # S4 method for rationalS4,integer %%(e1, e2) # S4 method for numeric,rationalS4 %%(e1, e2) # S4 method for rationalS4,numeric %%(e1, e2) # S3 method for rationalS3 %%(e1, e2) # S3 method for rationalR6 %%(e1, e2) # S4 method for rationalS4,rationalS4 -(e1, e2) # S4 method for integer,rationalS4 -(e1, e2) # S4 method for rationalS4,integer -(e1, e2) # S4 method for numeric,rationalS4 -(e1, e2) # S4 method for rationalS4,numeric -(e1, e2) # S3 method for rationalS3 -(e1, e2) # S3 method for rationalR6 -(e1, e2)
e1 | rational numbers, integers, or numerics |
---|---|
e2 | rational numbers, integers, or numerics |
add
for R6 classes, using the $add(e1)
to do addition is the fastest method
a <- rational(1L,2L,"S4") b <- rational(3L,5L,"S4") d <- a + b stopifnot(d@n == 11) stopifnot(d@d == 10) a <- 7L b <- rational(3L,5L,"S4") d <- a + b stopifnot(d@n == 38) stopifnot(d@d == 5) a <- rational(1L,2L,"S4") b <- 7L d <- a + b stopifnot(d@n == 15) stopifnot(d@d == 2) a <- 7 b <- rational(3L,5L,"S4") d <- a + b stopifnot(abs(d - 7.6) < 1E-12) a <- rational(1L,2L,"S4") b <- 7 d <- a + b stopifnot(abs(d - 7.5) < 1E-12) a <- rational(1L,2L,"S3") b <- rational(3L,5L,"S3") d <- a + b stopifnot(d$n == 11) stopifnot(d$d == 10) a <- 7L b <- rational(3L,5L,"S3") d <- a + b stopifnot(d$n == 38) stopifnot(d$d == 5) a <- rational(1L,2L,"S3") b <- 7L d <- a + b stopifnot(d$n == 15) stopifnot(d$d == 2) a <- 7 b <- rational(3L,5L,"S3") d <- a + b stopifnot(abs(d - 7.6) < 1E-12) a <- rational(1L,2L,"S3") b <- 7 d <- a + b stopifnot(abs(d - 7.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") d <- a + b stopifnot(d$getNumerator() == 11) stopifnot(d$getDenominator() == 10) a <- 7L b <- rational(3L,5L,"R6") d <- a + b stopifnot(d$getNumerator() == 38) stopifnot(d$getDenominator() == 5) a <- rational(1L,2L,"R6") b <- 7L d <- a + b stopifnot(d$getNumerator() == 15) stopifnot(d$getDenominator() == 2) a <- 7 b <- rational(3L,5L,"R6") d <- a + b stopifnot(abs(d - 7.6) < 1E-12) a <- rational(1L,2L,"R6") b <- 7 d <- a + b stopifnot(abs(d - 7.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") a$add(b)#> [1] "(11 / 10) = 1.1"stopifnot(a$getNumerator() == 11) stopifnot(a$getDenominator() == 10) a <- rational(1L,2L,"R6") b <- 7L a$add(b)#> [1] "(15 / 2) = 7.5"stopifnot(a$getNumerator() == 15) stopifnot(a$getDenominator() == 2) a <- rational(1L,2L,"S4") b <- rational(3L,5L,"S4") d <- a * b stopifnot(d@n == 3) stopifnot(d@d == 10) a <- 7L b <- rational(3L,5L,"S4") d <- a * b stopifnot(d@n == 21) stopifnot(d@d == 5) a <- rational(1L,2L,"S4") b <- 7L d <- a * b stopifnot(d@n == 7) stopifnot(d@d == 2) a <- 7 b <- rational(3L,5L,"S4") d <- a * b stopifnot(abs(d - 4.2) < 1E-12) a <- rational(1L,2L,"S4") b <- 7 d <- a * b stopifnot(abs(d - 3.5) < 1E-12) a <- rational(1L,2L,"S3") b <- rational(3L,5L,"S3") d <- a * b stopifnot(d$n == 3) stopifnot(d$d == 10) a <- 7L b <- rational(3L,5L,"S3") d <- a * b stopifnot(d$n == 21) stopifnot(d$d == 5) a <- rational(1L,2L,"S3") b <- 7L d <- a * b stopifnot(d$n == 7) stopifnot(d$d == 2) a <- 7 b <- rational(3L,5L,"S3") d <- a * b stopifnot(abs(d - 4.2) < 1E-12) a <- rational(1L,2L,"S3") b <- 7 d <- a * b stopifnot(abs(d - 3.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") d <- a * b stopifnot(d$getNumerator() == 3) stopifnot(d$getDenominator() == 10) a <- 7L b <- rational(3L,5L,"R6") d <- a * b stopifnot(d$getNumerator() == 21) stopifnot(d$getDenominator() == 5) a <- rational(1L,2L,"R6") b <- 7L d <- a * b stopifnot(d$getNumerator() == 7) stopifnot(d$getDenominator() == 2) a <- 7 b <- rational(3L,5L,"R6") d <- a * b stopifnot(abs(d - 4.2) < 1E-12) a <- rational(1L,2L,"R6") b <- 7 d <- a * b stopifnot(abs(d - 3.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") a$multiply(b)#> [1] "(3 / 10) = 0.3"stopifnot(a$getNumerator() == 3) stopifnot(a$getDenominator() == 10) a <- rational(1L,2L,"R6") b <- 7L a$multiply(b)#> [1] "(7 / 2) = 3.5"stopifnot(a$getNumerator() == 7) stopifnot(a$getDenominator() == 2) a <- rational(1L,2L,"S4") b <- rational(3L,5L,"S4") d <- a / b stopifnot(d@n == 5) stopifnot(d@d == 6) a <- 7L b <- rational(3L,5L,"S4") d <- a / b stopifnot(d@n == 35) stopifnot(d@d == 3) a <- rational(1L,2L,"S4") b <- 7L d <- a / b stopifnot(d@n == 1) stopifnot(d@d == 14) a <- 7 b <- rational(3L,5L,"S4") d <- a / b stopifnot(abs(d - 7*5/3) < 1E-12) a <- rational(1L,2L,"S4") b <- 7 d <- a / b stopifnot(abs(d - 1/14) < 1E-12) a <- rational(1L,2L,"S3") b <- rational(3L,5L,"S3") d <- a / b stopifnot(d$n == 5) stopifnot(d$d == 6) a <- 7L b <- rational(3L,5L,"S3") d <- a / b stopifnot(d$n == 35) stopifnot(d$d == 3) a <- rational(1L,2L,"S3") b <- 7L d <- a / b stopifnot(d$n == 1) stopifnot(d$d == 14) a <- 7 b <- rational(3L,5L,"S3") d <- a / b stopifnot(abs(d - 7*5/3) < 1E-12) a <- rational(1L,2L,"S3") b <- 7 d <- a / b stopifnot(abs(d - 1/14) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") d <- a / b stopifnot(d$getNumerator() == 5) stopifnot(d$getDenominator() == 6) a <- 7L b <- rational(3L,5L,"R6") d <- a / b stopifnot(d$getNumerator() == 35) stopifnot(d$getDenominator() == 3) a <- rational(1L,2L,"R6") b <- 7L d <- a / b stopifnot(d$getNumerator() == 1) stopifnot(d$getDenominator() == 14) a <- 7 b <- rational(3L,5L,"R6") d <- a / b stopifnot(abs(d - 7*5/3) < 1E-12) a <- rational(1L,2L,"R6") b <- 7 d <- a / b stopifnot(abs(d - 1/14) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") a$divide(b)#> [1] "(5 / 6) = 0.833333333333333"stopifnot(a$getNumerator() == 5) stopifnot(a$getDenominator() == 6) a <- rational(1L,2L,"R6") b <- 7L a$divide(b)#> [1] "(1 / 14) = 0.0714285714285714"stopifnot(a$getNumerator() == 1) stopifnot(a$getDenominator() == 14) a <- rational(1L,2L,"S4") b <- rational(3L,5L,"S4") a ^ b#> [1] 0.659754#> (1 / 8) = 0.125#> [1] 1.515717#> [1] 0.3535534#> [1] 1.971592#> [1] 0.659754d ^ b#> [1] 1.933182a ^ d#> [1] "(1 / 8) = 0.125"e ^ b#> [1] 1.275425d ^ e#> [1] 5.196152#> [1] 0.659754d ^ b#> [1] 1.933182a ^ d#> [1] "(1 / 8) = 0.125"e ^ b#> [1] 1.275425d ^ e#> [1] 5.196152#> [1] 1#> [1] 1#> [1] 1#> [1] 1#> [1] 1#> [1] 0d %/% b#> [1] 5a %/% d#> [1] 0e %/% b#> [1] 2d %/% e#> [1] 2#> [1] 0d %/% b#> [1] 5a %/% d#> [1] 0e %/% b#> [1] 2d %/% e#> [1] 2a <- rational(5L, 1L, "S4") b <- rational(2L, 1L, "S4") d <- rational(3L, 2L, "S4") e <- rational(1L, 2L, "S4") stopifnot(rational(1L, 1L, "S4") == a %% b) stopifnot(rational(0L, 1L, "S4") == d %% e) stopifnot(rational(1L, 1L, "S4") == 5L %% b) stopifnot(rational(1L, 1L, "S4") == a %% 2L) stopifnot(rational(0L, 1L, "S4") == 2L %% e) stopifnot(1 == 5 %% b) stopifnot(1 == a %% 2) a <- rational(5L, 1L, "S3") b <- rational(2L, 1L, "S3") d <- rational(3L, 2L, "S3") e <- rational(1L, 2L, "S3") stopifnot(rational(1L, 1L, "S3") == a %% b) stopifnot(rational(0L, 1L, "S3") == d %% e) stopifnot(rational(1L, 1L, "S3") == 5L %% b) stopifnot(rational(1L, 1L, "S3") == a %% 2L) stopifnot(rational(0L, 1L, "S3") == 2L %% e) stopifnot(1 == 5 %% b) stopifnot(1 == a %% 2) a <- rational(5L, 1L, "R6") b <- rational(2L, 1L, "R6") d <- rational(3L, 2L, "R6") e <- rational(1L, 2L, "R6") stopifnot(rational(1L, 1L, "R6") == a %% b) stopifnot(rational(0L, 1L, "R6") == d %% e) stopifnot(rational(1L, 1L, "R6") == 5L %% b) stopifnot(rational(1L, 1L, "R6") == a %% 2L) stopifnot(rational(0L, 1L, "R6") == 2L %% e) stopifnot(1 == 5 %% b) stopifnot(1 == a %% 2) a <- rational(1L,2L,"S4") b <- rational(3L,5L,"S4") d <- a - b stopifnot(d@n == -1) stopifnot(d@d == 10) a <- 7L b <- rational(3L,5L,"S4") d <- a - b stopifnot(d@n == 32) stopifnot(d@d == 5) a <- rational(1L,2L,"S4") b <- 7L d <- a - b stopifnot(d@n == -13) stopifnot(d@d == 2) a <- 7 b <- rational(3L,5L,"S4") d <- a - b stopifnot(abs(d - 6.4) < 1E-12) a <- rational(1L,2L,"S4") b <- 7 d <- a - b stopifnot(abs(d - -6.5) < 1E-12) a <- rational(1L,2L,"S3") b <- rational(3L,5L,"S3") d <- a - b stopifnot(d$n == -1) stopifnot(d$d == 10) a <- 7L b <- rational(3L,5L,"S3") d <- a - b stopifnot(d$n == 32) stopifnot(d$d == 5) a <- rational(1L,2L,"S3") b <- 7L d <- a - b stopifnot(d$n == -13) stopifnot(d$d == 2) a <- 7 b <- rational(3L,5L,"S3") d <- a - b stopifnot(abs(d - 6.4) < 1E-12) a <- rational(1L,2L,"S3") b <- 7 d <- a - b stopifnot(abs(d - -6.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") d <- a - b stopifnot(d$getNumerator() == -1) stopifnot(d$getDenominator() == 10) a <- 7L b <- rational(3L,5L,"R6") d <- a - b stopifnot(d$getNumerator() == 32) stopifnot(d$getDenominator() == 5) a <- rational(1L,2L,"R6") b <- 7L d <- a - b stopifnot(d$getNumerator() == -13) stopifnot(d$getDenominator() == 2) a <- 7 b <- rational(3L,5L,"R6") d <- a - b stopifnot(abs(d - 6.4) < 1E-12) a <- rational(1L,2L,"R6") b <- 7 d <- a - b stopifnot(abs(d - -6.5) < 1E-12) a <- rational(1L,2L,"R6") b <- rational(3L,5L,"R6") a$subtract(b)#> [1] "(-1 / 10) = -0.1"stopifnot(a$getNumerator() == -1) stopifnot(a$getDenominator() == 10) a <- rational(1L,2L,"R6") b <- 7L a$subtract(b)#> [1] "(-13 / 2) = -6.5"