tests/arithmetic.r

suppressPackageStartupMessages(library(float))
set.seed(1234)
tol = 1e-6

same = function(test, truth) stopifnot(all.equal(test, truth, tol=tol))

x1 = matrix(stats::rnorm(30), 10)
x2 = matrix(stats::rnorm(30), 10)
x3 = matrix(1:30, 10)

s1 = fl(x1)
s2 = fl(x2)



### Addition
test = dbl(s1 + s2)
truth = x1 + x2
same(test, truth)
test = s1 + x2
same(test, truth)
test = x2 + s1
same(test, truth)

test = dbl(s1 + x3)
truth = x1 + x3
same(test, truth)
test = dbl(x3 + s1)
same(test, truth)

test = dbl(s1 + 1L)
truth = x1 + 1
same(test, truth)
test = s1 + 1.0
same(test, truth)



### Multiplication
test = dbl(s1 * s2)
truth = x1 * x2
same(test, truth)
test = s1 * x2
same(test, truth)
test = x2 * s1
same(test, truth)

test = dbl(s1 * x3)
truth = x1 * x3
same(test, truth)
test = dbl(x3 * s1)
same(test, truth)

test = dbl(s1 * 1L)
truth = x1 * 1L
same(test, truth)
test = s1 * 1.0
same(test, truth)



### Subtraction
test = dbl(s1 - s2)
truth = x1 - x2
same(test, truth)
test = s1 - x2
same(test, truth)

truth = x2 - x1
test = x2 - s1
same(test, truth)

test = dbl(s1 - x3)
truth = x1 - x3
same(test, truth)

truth = x3 - x1
test = dbl(x3 - s1)
same(test, truth)

test = dbl(s1 - 1L)
truth = x1 - 1L
same(test, truth)
test = s1 - 1.0
same(test, truth)



### Division
test = dbl(s1 / s2)
truth = x1 / x2
same(test, truth)
test = s1 / x2
same(test, truth)

truth = x2 / x1
test = x2 / s1
same(test, truth)

test = dbl(s1 / x3)
truth = x1 / x3
same(test, truth)

truth = x3 / x1
test = dbl(x3 / s1)
same(test, truth)

test = dbl(s1 / 1L)
truth = x1 / 1L
same(test, truth)
test = s1 / 1.0
same(test, truth)



### Power
test = dbl(s1 ^ s2)
truth = x1 ^ x2
same(test, truth)
test = s1 ^ x2
same(test, truth)

truth = x2 ^ x1
test = x2 ^ s1
same(test, truth)

test = dbl(s1 ^ x3)
truth = x1 ^ x3
same(test, truth)

truth = x3 ^ x1
test = dbl(x3 ^ s1)
same(test, truth)

test = dbl(s1 ^ 1L)
truth = x1 ^ 1L
same(test, truth)
test = s1 ^ 1.0
same(test, truth)

Try the float package in your browser

Any scripts or data that you put into this service are public.

float documentation built on Feb. 16, 2023, 6:43 p.m.