A toy package designed to showcase and serve as a reference/tutorial for S7 development. To be used in conjunction with the S7 package webs
1rmpfr_test_multiplication <- function(string_num_1, string_num_2) {
2 # using Rmpfr to verify big_num's accuracy
3 num <- Rmpfr::mpfr(string_num_1, 200) * Rmpfr::mpfr(string_num_2, 200)
4 string_num_solution <- as(num, "character")
5
6 expect_equal(big_num(string_num_1) * big_num(string_num_2), big_num(string_num_solution))
7}
8
9
10test_that("multiplication commutes", {
11 expect_equal((big_num(2) * big_num(2)), big_num(4))
12
13 expect_equal(big_num(2) * big_num(5), big_num(10))
14 expect_equal(big_num(5) * big_num(2), big_num(10))
15
16 expect_equal(big_num(148) * big_num(997), big_num(147556))
17 expect_equal(big_num(997) * big_num(148), big_num(147556))
18
19 rmpfr_test_multiplication("11111111", "122333444455555")
20 rmpfr_test_multiplication("122333444455555", "11111111")
21})
22
23test_that("multiplication big", {
24 string_1 <- "321474836474"
25 string_2 <- "46548999646551237776"
26 string_3 <- "21471047128412996458887978163"
27
28 rmpfr_test_multiplication(string_1, string_2)
29 rmpfr_test_multiplication(string_3, string_2)
30})
31
32
33test_that("multiplication zero", {
34 string_1 <- "321474836474"
35 string_2 <- "46548999646551237776"
36 string_3 <- "21471047128412996458887978163"
37
38 rmpfr_test_multiplication(string_1, "0")
39 rmpfr_test_multiplication(string_2, "0")
40 rmpfr_test_multiplication(string_3, "0")
41})
42
43
44test_that("multiplication one", {
45 string_1 <- "321474836474"
46 string_2 <- "46548999646551237776"
47 string_3 <- "21471047128412996458887978163"
48
49 rmpfr_test_multiplication(string_1, "1")
50 rmpfr_test_multiplication(string_2, "1")
51 rmpfr_test_multiplication(string_3, "1")
52})
53
54
55test_that("exponentiation works", {
56 expect_equal(big_num(2)^0, big_num(1))
57 expect_equal(big_num(2)^1, big_num(2))
58 expect_equal(big_num(2)^2, big_num(4))
59
60 expect_equal(big_num(11)^20, big_num("61159090448414546291"))
61})