Allow the user to provide a function to compute the inner product
argument needs to be specified explicitly
use the user specified inner product everywhere