From ee5387031f49247614271ef5369309ebd0edb451 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Fri, 2 Sep 2016 09:31:14 +1000 Subject: implement signed results --- R/pmt.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/pmt.R b/R/pmt.R index 25dc6ab..9466b31 100644 --- a/R/pmt.R +++ b/R/pmt.R @@ -12,7 +12,7 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -pmt <- function(a, b, two.sided=T) { +pmt <- function(a, b, two.sided=T, signed=F) { if(any(a == 0) | any(b == 0)) stop("cannot handle 0 counts") @@ -53,6 +53,7 @@ pmt <- function(a, b, two.sided=T) { t2 <- mapply(function(xb, mu, rho) { j <- xb:(xb*100); logsumexp(j * log(2 * mu * rho) - lfactorial(j) - j * log(1 + rho))}, b, mu, rho) ps <- (2*mu-t1-t2) / log(10) - if(!two.sided)ps[msk] <- NA + if(!two.sided) ps[msk] <- NA + else if(signed) ps <- ps * (1-2*msk) ps } -- cgit v1.2.3