]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/e/dspkn1.F
Changes needed by ICC/IFC compiler (Intel)
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / e / dspkn1.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/04/01 15:02:25 mclareni
6* Mathlib gen
7*
8*
9#include "gen/pilot.h"
10 SUBROUTINE DSPKN1(K,M,A,B,T,NERR)
11
12#include "gen/imp64.inc"
13 DIMENSION T(*)
14 CHARACTER NAME*(*)
15 CHARACTER*80 ERRTXT
16 PARAMETER (NAME = 'DSPKN1')
17
18************************************************************************
19* NORBAS, VERSION: 15.03.1993
20************************************************************************
21*
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.
26*
27* PARAMETERS:
28*
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
34* KNOTS, ON EXIT.
35* NERR (INTEGER) ERROR INDICATOR. ON EXIT:
36* = 0: NO ERROR DETECTED
37* = 1: AT LEAST ONE OF THE CONSTANTS K , M IS ILLEGAL
38*
39* USAGE:
40*
41* THE USER HAS TO PROVIDE K, M, A, AND B.
42* ON RETURN THE ARRAY T CONTAINS THE DESIRED KNOTS IN ASCENDING
43* ORDER.
44*
45* ERROR MESSAGES:
46*
47* IF ONE OF THE FOLLOWING RELATION IS SATISFIED BY THE CHOSEN INPUT-
48* PARAMETERS THE PROGRAM RETURNS, AND AN ERROR MESSAGE IS PRINTED:
49* K < 0 OR K > 25 OR
50* M < 2*K+2 OR
51* B <= A .
52*
53* ********************************************************************
54
55 NERR=1
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)
62 ELSEIF(B .LE. A) THEN
63 WRITE(ERRTXT,103) 'A',A,'B',B
64 CALL MTLPRT(NAME,'E210.7',ERRTXT)
65 ELSE
66 NERR=0
67 CALL DVSET(K+1,A,T(1),T(2))
68 CALL DVSET(K+1,B,T(M-K),T(M-K+1))
69 D=(B-A)/(M-2*K-1)
70 DO 10 I = K+2,M-K-1
71 10 T(I)=A+D*(I-K-1)
72 ENDIF
73 RETURN
74
75 101 FORMAT(1X,A5,' =',I6,' NOT IN RANGE')
76 103 FORMAT(1X,A5,' =',1PD15.8,A7,' =',1PD15.8,' INCONSISTENT')
77 END
78
79