home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l460 / 2.ddi / SPECFUN.DI$ / BETACORE.M < prev    next >
Encoding:
Text File  |  1993-03-07  |  859 b   |  41 lines

  1. function y = betacore(x, a, b)
  2. %BETACORE Core algorithm for the incomplete beta function.
  3. %    BETACORE(x,a,b) is used twice by BETAINC(X,A,B).
  4. %
  5. %    See also BETAINC.
  6.  
  7. %    Copyright (c) 1984-93 by The MathWorks, Inc.
  8.  
  9. y = x;
  10. qab = a + b;
  11. qap = a + 1;
  12. qam = a - 1;
  13. am = ones(size(x));
  14. bm = am;
  15. y = am;
  16. bz = 1 - qab * x / qap;   
  17. d = zeros(size(x));
  18. app = d;
  19. ap = d;
  20. bpp = d;
  21. bp = d;
  22. yold = d;
  23. m = 1;
  24. while any(any(abs(y-yold) > 4*eps*abs(y)))
  25.    tem = 2 * m;
  26.    d = m * (b - m) * x / ((qam + tem) * (a + tem));
  27.    ap = y + d .* am;
  28.    bp = bz + d .* bm;
  29.    d = -(a + m) * (qab + m) * x / ((a + tem) * (qap + tem));
  30.    app = ap + d .* y;
  31.    bpp = bp + d .* bz;
  32.    yold = y;
  33.    am = ap ./ bpp;
  34.    bm = bp ./ bpp;
  35.    y = app ./ bpp;
  36.    if m == 1
  37.       bz = 1;   % only need to do this first time through
  38.    end
  39.    m = m + 1;
  40. end
  41.