rational-operators: Rational Number Arithmetic

rational-operatorsR Documentation

Rational Number Arithmetic

Description

Rational Number Arithmetic

Usage

## S4 method for signature 'rationalS4,rationalS4'
e1 + e2

## S4 method for signature 'integer,rationalS4'
e1 + e2

## S4 method for signature 'rationalS4,integer'
e1 + e2

## S4 method for signature 'numeric,rationalS4'
e1 + e2

## S4 method for signature 'rationalS4,numeric'
e1 + e2

## S3 method for class 'rationalS3'
e1 + e2

## S3 method for class 'rationalR6'
e1 + e2

## S4 method for signature 'rationalS4,rationalS4'
e1 * e2

## S4 method for signature 'integer,rationalS4'
e1 * e2

## S4 method for signature 'rationalS4,integer'
e1 * e2

## S4 method for signature 'numeric,rationalS4'
e1 * e2

## S4 method for signature 'rationalS4,numeric'
e1 * e2

## S3 method for class 'rationalS3'
e1 * e2

## S3 method for class 'rationalR6'
e1 * e2

## S4 method for signature 'rationalS4,rationalS4'
e1 / e2

## S4 method for signature 'integer,rationalS4'
e1 / e2

## S4 method for signature 'rationalS4,integer'
e1 / e2

## S4 method for signature 'numeric,rationalS4'
e1 / e2

## S4 method for signature 'rationalS4,numeric'
e1 / e2

## S3 method for class 'rationalS3'
e1 / e2

## S3 method for class 'rationalR6'
e1 / e2

## S4 method for signature 'rationalS4,rationalS4'
e1 ^ e2

## S4 method for signature 'rationalS4,integer'
e1 ^ e2

## S4 method for signature 'integer,rationalS4'
e1 ^ e2

## S4 method for signature 'rationalS4,numeric'
e1 ^ e2

## S4 method for signature 'numeric,rationalS4'
e1 ^ e2

## S3 method for class 'rationalS3'
e1 ^ e2

## S3 method for class 'rationalR6'
e1 ^ e2

## S4 method for signature 'rationalS4,rationalS4'
e1 %/% e2

## S4 method for signature 'integer,rationalS4'
e1 %/% e2

## S4 method for signature 'rationalS4,integer'
e1 %/% e2

## S4 method for signature 'numeric,rationalS4'
e1 %/% e2

## S4 method for signature 'rationalS4,numeric'
e1 %/% e2

## S3 method for class 'rationalS3'
e1 %/% e2

## S3 method for class 'rationalR6'
e1 %/% e2

## S4 method for signature 'rationalS4,rationalS4'
e1 - e2

## S4 method for signature 'integer,rationalS4'
e1 - e2

## S4 method for signature 'rationalS4,integer'
e1 - e2

## S4 method for signature 'numeric,rationalS4'
e1 - e2

## S4 method for signature 'rationalS4,numeric'
e1 - e2

## S3 method for class 'rationalS3'
e1 - e2

## S3 method for class 'rationalR6'
e1 - e2

## S4 method for signature 'rationalS4,rationalS4'
e1 %% e2

## S4 method for signature 'integer,rationalS4'
e1 %% e2

## S4 method for signature 'rationalS4,integer'
e1 %% e2

## S4 method for signature 'numeric,rationalS4'
e1 %% e2

## S4 method for signature 'rationalS4,numeric'
e1 %% e2

## S3 method for class 'rationalS3'
e1 %% e2

## S3 method for class 'rationalR6'
e1 %% e2

Arguments

e1

rational numbers, integers, or numerics

e2

rational numbers, integers, or numerics

Fields

add

for R6 classes, using the $add(e1) to do addition is the fastest method

Examples

  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)
  stopifnot(a$getNumerator() == 11)
  stopifnot(a$getDenominator() == 10)
  a <- rational(1L,2L,"R6")
  b <- 7L
  a$add(b)
  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)
  stopifnot(a$getNumerator() == 3)
  stopifnot(a$getDenominator() == 10)
  a <- rational(1L,2L,"R6")
  b <- 7L
  a$multiply(b)
  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)
  stopifnot(a$getNumerator() == 5)
  stopifnot(a$getDenominator() == 6)
  a <- rational(1L,2L,"R6")
  b <- 7L
  a$divide(b)
  stopifnot(a$getNumerator() == 1)
  stopifnot(a$getDenominator() == 14)
  a <- rational(1L,2L,"S4")
  b <- rational(3L,5L,"S4")
  a ^ b
  a <- rational(1L,2L,"S4")
  b <- 3L
  a ^ b
  a <- 2L
  b <- rational(3L,5L,"S4")
  a ^ b
  a <- rational(1L,2L,"S4")
  b <- 1.5
  a ^ b
  a <- 3.1
  b <- rational(3L,5L,"S4")
  a ^ b
  a <- rational(1L,2L,"S3")
  b <- rational(3L,5L,"S3")
  d <- 3L
  e <- 1.5
  a ^ b
  d ^ b
  a ^ d
  e ^ b
  d ^ e
  a <- rational(1L,2L,"R6")
  b <- rational(3L,5L,"R6")
  d <- 3L
  e <- 1.5
  a ^ b
  d ^ b
  a ^ d
  e ^ b
  d ^ e
  a <- rational(3L,1L,"S4")
  b <- rational(2L,1L,"S4")
  a %/% b
  a <- 3L
  b <- rational(2L,1L,"S4")
  a %/% b
  a <- rational(3L,1L,"S4")
  b <- 2L
  a %/% b
  a <- 3.5
  b <- rational(2L,1L,"S4")
  a %/% b
  a <- rational(3L,1L,"S4")
  b <- 2.1
  a %/% b
  a <- rational(1L,2L,"S3")
  b <- rational(3L,5L,"S3")
  d <- 3L
  e <- 1.5
  a %/% b
  d %/% b
  a %/% d
  e %/% b
  d %/% e
  a <- rational(1L,2L,"R6")
  b <- rational(3L,5L,"R6")
  d <- 3L
  e <- 1.5
  a %/% b
  d %/% b
  a %/% d
  e %/% b
  d %/% e
  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)
  stopifnot(a$getNumerator() == -1)
  stopifnot(a$getDenominator() == 10)
  a <- rational(1L,2L,"R6")
  b <- 7L
  a$subtract(b)
  stopifnot(a$getNumerator() == -13)
  stopifnot(a$getDenominator() == 2)
a <- 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)

bertcarnell/rational documentation built on Aug. 1, 2024, 8:14 p.m.