## Some specific algebraic identities (here Euler's four-square
## identity and the Brahmagupta-Fibonacci identity), which are usually
## applied to real numbers but work for any commutative ring (such as
## multivariate polynomials).
test_that("Test suite aab.R",{
## Brahmagupta-Fibonacci:
bf <- function(a1,a2,a3,a4,n){
LHS <- (a1^2 + n*a2^2)*(a3^2 + n*a4^2)
RHS <- (a1*a3-n*a2*a4)^2 + n*(a1*a4 +a2*a3)^2
return(LHS == RHS)
}
for(i in 1:10){
a1 <- rmvp(2,3,2,4)
a2 <- rmvp(2,3,2,4)
a3 <- rmvp(2,3,2,4)
a4 <- rmvp(2,3,2,4)
n <- rpois(1,lambda=5)
expect_true(bf(a1,a2,a3,a4,n),info=list(dput(a1),dput(a2),dput(a3),dput(a4),n))
}
# Euler's four-square identity:
checker8 <- function(a1,a2,a3,a4,b1,b2,b3,b4){
LHS <-
(a1^2 + a2^2 + a3^2 + a4^2)*
(b1^2 + b2^2 + b3^2 + b4^2)
RHS <- (
+(a1*b1 - a2*b2 - a3*b3 - a4*b4)^2
+(a1*b2 + a2*b1 + a3*b4 - a4*b3)^2
+(a1*b3 - a2*b4 + a3*b1 + a4*b2)^2
+(a1*b4 + a2*b3 - a3*b2 + a4*b1)^2
)
return(RHS==RHS)
}
a1 <- rmvp(2,3,2,4)
a2 <- rmvp(2,3,2,4)
a3 <- rmvp(2,3,2,4)
a4 <- rmvp(2,3,2,4)
b1 <- rmvp(2,3,2,4)
b2 <- rmvp(2,3,2,4)
b3 <- rmvp(2,3,2,4)
b4 <- rmvp(2,3,2,4)
expect_true(checker8(a1,a2,a3,a4,b1,b2,b3,b4),
info=list(dput(a1),dput(a2),dput(a3),dput(a4),
dput(b1),dput(b2),dput(b3),dput(b4))
)
## misc checks:
expect_true(constant(0) == as.mvp(0))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.