| Type: | Package | 
| Title: | Fast Implementation of the Iterative Proportional Fitting Procedure in C | 
| Version: | 1.0.2 | 
| Author: | Alexander W Blocker | 
| Maintainer: | Alexander W Blocker <ablocker@gmail.com> | 
| Description: | A fast (C) implementation of the iterative proportional fitting procedure. | 
| License: | Apache License (== 2.0) | 
| LazyLoad: | yes | 
| URL: | https://github.com/awblocker/ipfp | 
| RoxygenNote: | 7.1.2 | 
| NeedsCompilation: | yes | 
| Packaged: | 2022-05-04 18:34:18 UTC; rstudio | 
| Repository: | CRAN | 
| Date/Publication: | 2022-05-05 06:50:05 UTC | 
Function to run IPFP (iterative proportional fitting procedure)
Description
Use IPFP starting from x0 to produce vector x s.t. Ax = y within tolerance. Need to ensure that x0 > 0.
Usage
ipfp(
  y,
  A,
  x0,
  tol = sqrt(.Machine$double.eps),
  maxit = 1000,
  verbose = FALSE,
  full = FALSE
)
Arguments
y | 
 numeric constraint vector (length nrow)  | 
A | 
 constraint matrix (nrow x ncol)  | 
x0 | 
 numeric initial vector (length ncol)  | 
tol | 
 numeric tolerance for IPFP; defaults to
  | 
maxit | 
 integer maximum number of iterations for IPFP; defaults to 1e3  | 
verbose | 
 logical parameter to select verbose output from C function  | 
full | 
 logical parameter to select full return (with diagnostic info)  | 
Value
if not full, a vector of length ncol containing solution obtained by IPFP. If full, a list containing solution (as x), the number of iterations (as iter), and the L2 norm of Ax - y (as errNorm)
Examples
A <- matrix(c(1,0,0, 1,0,0, 0,1,0, 0,1,0, 0,0,1), nrow=3)
x <- rgamma(ncol(A), 10, 1/100)
y <- A %*% x
x0 <- x * rgamma(length(x), 10, 10)
ans <- ipfp(y, A, x0, full=TRUE)
print(ans)
print(x)