]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/e/dspvd1.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / e / dspvd1.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:02:26  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10       SUBROUTINE DSPVD1(F,K,M,T,C,NERR)
11
12 #include "gen/imp64.inc"
13       DIMENSION T(*),C(*)
14       CHARACTER NAME*(*)
15       CHARACTER*80 ERRTXT
16       PARAMETER (NAME = 'DSPVD1')
17
18 ************************************************************************
19 *   NORBAS, VERSION: 15.03.1993
20 ************************************************************************
21 *
22 *   DSPVD1 COMPUTES THE COEFFICIENTS  C(1),...,C(M-K-1)  OF A POLYNOMIAL
23 *   VARIATION DIMINISHING SPLINE APPROXIMATION  S(X)  IN B-SPLINE
24 *   REPRESENTATION
25 *
26 *          S(X) =  SUMME(I=1,...,M-K-1)  C(I) * B(I,K)(X)
27 *
28 *   TO A USER SUPPLIED FUNCTION  Y=F(X).
29 *
30 *   THE FUNCTIONS  B(I,K)(X)  ARE NORMALIZED B-SPLINES OF DEGREE  K
31 *   (0<= K <= 25)  WITH INDEX  I  (1 <= I <= M-K-1) OVER A SET OF
32 *   SPLINE-KNOTS
33 *              T(1),T(2), ... ,T(M)    ( M >= 2*K+2 )
34 *   (KNOTS IN ASCENDING ORDER, WITH MULTIPLICITIES NOT GREATER
35 *   THAN  K+1).
36 *   THE FUNCTION VALUE OF THE NORMALIZED B-SPLINE  B(I,K)(X)  IS
37 *   IDENTICALLY ZERO OUTSIDE THE INTERVAL  T(I) <= X < T(I+K+1).
38 *   THE NORMALIZATION OF  N(X) = B(I,K)(X)  IS SUCH THAT THE INTGRAL OF
39 *   N(X)  OVER THE WHOLE X-RANGE EQUALS
40 *                  ( T(I+K+1) - T(I) ) / (K+1)  .
41 *
42 *   PARAMETERS:
43 *
44 *   F     (DOUBLE PRECISION) USER SUPPLIED FUNCTION  F(X)  FOR WHICH
45 *         THE CORRESPONDING SPLINE APPROXIMATION HAS TO BE COMPUTED.
46 *   K     (INTEGER) DEGREE (= ORDER - 1) OF B-SPLINES.
47 *   M     (INTEGER) NUMBER OF KNOTS FOR THE B-SPLINES.
48 *   T     (DOUBLE PRECISION) ARRAY OF AT LEAST ORDER M CONTAINING THE
49 *         KNOTS, ON ENTRY.
50 *   C     (DOUBLE PRECISION) ARRAY OF AT LEAST ORDER  M-K-1. ON EXIT
51 *         C(1),...,C(M-K-1)  CONTAIN THE COEFFICIENTS OF THE B-SPLINE
52 *         REPRESENTATION OF  S(X).
53 *   NERR  (INTEGER) ERROR INDICATOR. ON EXIT:
54 *         = 0: NO ERROR DETECTED
55 *         = 1: AT LEAST ONE OF THE CONSTANTS  K , M  IS ILLEGAL
56 *
57 *   ERROR MESSAGES:
58 *
59 *   IF ONE OF THE FOLLOWING RELATION IS SATISFIED BY THE CHOSEN INPUT-
60 *   PARAMETERS THE PROGRAM RETURNS, AND AN ERROR MESSAGE IS PRINTED:
61 *     K < 1      OR    K > 25    OR
62 *     M < 2*K+2  .
63 *
64 ************************************************************************
65
66       PARAMETER (Z1 = 1)
67
68       NERR=1
69       IF(K .LT. 1 .OR. K .GT. 25) THEN
70        WRITE(ERRTXT,101) 'K',K
71        CALL MTLPRT(NAME,'E210.1',ERRTXT)
72       ELSEIF(M .LT. 2*K+2) THEN
73        WRITE(ERRTXT,101) 'M',M
74        CALL MTLPRT(NAME,'E210.2',ERRTXT)
75       ELSE
76        NERR=0
77        R=Z1/K
78        DO 10 I = 1,M-K-1
79    10  C(I)=F(R*DVSUM(K,T(I+1),T(I+2)))
80       ENDIF
81
82       RETURN
83
84   101 FORMAT(1X,A5,' =',I6,'   NOT IN RANGE')
85       END
86
87
88