## ----setup, include=FALSE-----------------------------------------------------
set.seed(0)
library("permutations")
library("stokes")
options(rmarkdown.html_vignette.check_title = FALSE)
options(polyform = FALSE)
knitr::opts_chunk$set(echo = TRUE)
knit_print.function <- function(x, ...){dput(x)}
registerS3method(
  "knit_print", "function", knit_print.function,
  envir = asNamespace("knitr")
)

## ----out.width='20%', out.extra='style="float:right; padding:10px"',echo=FALSE----
knitr::include_graphics(system.file("help/figures/stokes.png", package = "stokes"))

## ----label=showhodge,comment=""-----------------------------------------------
hodge

## ----label=setsymbprint,include = FALSE---------------------------------------
options(kform_symbolic_print = NULL)

## ----label=simpexamp----------------------------------------------------------
(a <- d(2) ^ d(6) ^ d(7))
hodge(a,9)

## ----label=useperm------------------------------------------------------------
p <- c(2,6,7,  1,3,4,5,8,9)
(pw <- as.word(p))
print_word(pw)
sgn(pw)

## ----label=shorthodge---------------------------------------------------------
hodge(d(c(2,6,7)),9)

## ----label=defaulthodge-------------------------------------------------------
hodge(d(c(2,6,7)))

## ----defineo------------------------------------------------------------------
(o <- rform())
hodge(o)

## ----verifyhodgeo-------------------------------------------------------------
o ^ hodge(o)
kinner(o,o)*volume(dovs(o))

## ----defdif-------------------------------------------------------------------
diff <- function(a,b){a^hodge(b) ==  kinner(a,b)*volume(dovs(a))}

## ----calldefdif---------------------------------------------------------------
diff(rform(),rform())

## ----alldefdif----------------------------------------------------------------
all(replicate(10,diff(rform(),rform())))

## -----------------------------------------------------------------------------
options(kform_symbolic_print = "dx")
hodge(dx,3)

## ----showvcp------------------------------------------------------------------
vcp3

## -----------------------------------------------------------------------------
u <- c(1,4,2)
v <- c(2,1,5)
w <- c(1,-3,2)
x <- c(-6,5,7)
c(
  hodge(as.1form(u) ^ vcp3(v,w))        == as.1form(v*sum(w*u) - w*sum(u*v)),
  hodge(vcp3(u,v) ^ as.1form(w))        == as.1form(v*sum(w*u) - u*sum(v*w)),
  as.1form(as.function(vcp3(v,w))(u)*u) == hodge(vcp3(u,v) ^ vcp3(u,w))     ,
  hodge(hodge(vcp3(u,v)) ^ vcp3(w,x))   == sum(u*w)*sum(v*x) - sum(u*x)*sum(v*w)
)		  

## -----------------------------------------------------------------------------
options(kform_symbolic_print = NULL)  # default print method
(o <- kform_general(4,2,1:6))

## -----------------------------------------------------------------------------
options(kform_symbolic_print = "txyz")
o

## -----------------------------------------------------------------------------
hodge(o)
hodge(o,g=c(-1,1,1,1))
hodge(o)-hodge(o,g=c(-1,1,1,1))

## ----reset_default_print_method, include=FALSE--------------------------------
options(kform_symbolic_print = NULL)