      SUBROUTINE BP (N,B,X)
C
C       Computes values (at X) of the N+1 Bernstein basis functions 
C         of degree N on [0,1]
C
C       Input:  N (integer)        .GE. 0
C               X (real)            Abscissa for evaluation of polynomials
C       Output: B(0:N) (real array)
C                       B(I)= N!/(I!*(N-I)!) * (1.-X)**(N-I) * X**I
C                                       I=0,1,...,N
C
      INTEGER  N,C,R
      REAL B(0:N),X
C
      IF (N .EQ. 0) THEN
        B(0) = 1.0
      ELSE IF (N .GT. 0) THEN
        DO 2 C=1,N
           IF (C .EQ. 1) THEN
                B(1) = X
           ELSE
                B(C) = X*B(C-1)
           END IF
C
           DO 1 R=C-1,1,-1
                B(R) = X*B(R-1) + (1.0-X)*B(R)
    1      CONTINUE
C
           IF (C .EQ. 1) THEN
                B(0) = 1.0-X
           ELSE
                B(0) = (1.0-X)*B(0)
           END IF
    2   CONTINUE
      END IF
      RETURN
      END
