module paul {
  use quantile_mod
  real, private :: p = 2.0
contains
  subroutine paul_init( p_in) {
    integer  p_in;  p = p_in
  }
  integer function l1 (res, weight) {
    real, dimension (:)  :: res, weight
    real                 :: rbar
    rbar = quantile (int(0.5*size(res)), abs (res)) 		# median
	rbar=rbar+(rbar-minval(abs(res)))
	weight =sqrt(p) * sqrt (1. + (res/rbar)**p)**(1/p-1); l1 = 0
  }
  integer function cauchy (res, weight) {
    real, dimension (:)  :: res, weight
    real                 :: rbar
    rbar = quantile (int(0.5*size(res)), abs (res)) 		# median
	rbar=rbar+(rbar-minval(abs(res)))
	weight =p * (1. + (res/rbar)**p)**(1/p-1);             cauchy = 0 
  }
}
