]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/e/dlsqp1.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / e / dlsqp1.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/04/01 15:02:24 mclareni
6* Mathlib gen
7*
8*
9#include "gen/pilot.h"
10 SUBROUTINE DLSQP1(N,X,Y,A0,A1,SD,IFAIL)
11#if !defined(CERNLIB_DOUBLE)
12 CHARACTER*6 NAME
13 NAME = 'DLSQP1'
14 CALL MTLPRT(NAME,'E201',
15 +'not available on this machine - see documentation')
16 RETURN
17 END
18#endif
19#if defined(CERNLIB_DOUBLE)
20 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
21
22 DIMENSION X(*),Y(*)
23
24 PARAMETER (R0 = 0)
25
26 A0=0
27 A1=0
28 SD=0
29 IF(N .LE. 1) THEN
30 IFAIL=1
31 ELSE
32 FN=N
33 XM=0
34 DO 1 K = 1,N
35 XM=XM+X(K)
36 1 CONTINUE
37 XM=XM/FN
38 SX=0
39 SY=0
40 SXX=0
41 SYY=0
42 SXY=0
43 DO 2 K = 1,N
44 XK=X(K)-XM
45 YK=Y(K)
46 SX=SX+XK
47 SY=SY+YK
48 SXX=SXX+XK**2
49 SYY=SYY+YK**2
50 SXY=SXY+XK*YK
51 2 CONTINUE
52 DET=FN*SXX-SX**2
53 IF(DET .GT. 0) THEN
54 A0=(SY*SXX-SXY*SX)/DET
55 A1=(FN*SXY-SX*SY)/DET
56 IFAIL=0
57 ELSE
58 IFAIL=-1
59 ENDIF
60 ENDIF
61 IF(IFAIL .EQ. 0 .AND. N .GT. 2)
62 1 SD=SQRT(MAX(R0,SYY-A0*SY-A1*SXY)/(N-2))
63 A0=A0-A1*XM
64 RETURN
65 END
66#endif