5 * Revision 1.1.1.1 1996/04/01 15:02:25 mclareni
10 SUBROUTINE DSPKN1(K,M,A,B,T,NERR)
12 #include "gen/imp64.inc"
16 PARAMETER (NAME = 'DSPKN1')
18 ************************************************************************
19 * NORBAS, VERSION: 15.03.1993
20 ************************************************************************
22 * DSPKN1 COMPUTES M ( M >= 2*K+2 ) KNOTS IN THE INTERVAL A <= X <= B
23 * AS KNOTS FOR NORMALIZED B-SPLINES OF DEGREE K ( 0 <= K <= 25 ).
24 * THE FIRST (K+1) KNOTS ARE EQUAL TO A, THE LAST (K+1) KNOTS ARE EQUAL
25 * TO B, AND THE OTHER KNOTS ARE EQUIDISTANT.
29 * K (INTEGER) DEGREE OF B-SPLINES
30 * M (INTEGER) NUMBER OF KNOTS IN THE INTERVAL A <= X <= B
31 * A (DOUBLE PRECISION) LEFT ENDPOINT OF INTERVAL
32 * B (DOUBLE PRECISION) RIGHT ENDPOINT OF INTERVAL
33 * T (DOUBLE RECISION) ARRAY OF AT LEAST ORDER M CONTAINING THE
35 * NERR (INTEGER) ERROR INDICATOR. ON EXIT:
36 * = 0: NO ERROR DETECTED
37 * = 1: AT LEAST ONE OF THE CONSTANTS K , M IS ILLEGAL
41 * THE USER HAS TO PROVIDE K, M, A, AND B.
42 * ON RETURN THE ARRAY T CONTAINS THE DESIRED KNOTS IN ASCENDING
47 * IF ONE OF THE FOLLOWING RELATION IS SATISFIED BY THE CHOSEN INPUT-
48 * PARAMETERS THE PROGRAM RETURNS, AND AN ERROR MESSAGE IS PRINTED:
53 * ********************************************************************
56 IF(K .LT. 0 .OR. K .GT. 25) THEN
57 WRITE(ERRTXT,101) 'K',K
58 CALL MTLPRT(NAME,'E210.1',ERRTXT)
59 ELSEIF(M .LT. 2*K+2) THEN
60 WRITE(ERRTXT,101) 'M',M
61 CALL MTLPRT(NAME,'E210.2',ERRTXT)
63 WRITE(ERRTXT,103) 'A',A,'B',B
64 CALL MTLPRT(NAME,'E210.7',ERRTXT)
67 CALL DVSET(K+1,A,T(1),T(2))
68 CALL DVSET(K+1,B,T(M-K),T(M-K+1))
75 101 FORMAT(1X,A5,' =',I6,' NOT IN RANGE')
76 103 FORMAT(1X,A5,' =',1PD15.8,A7,' =',1PD15.8,' INCONSISTENT')