]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/divon/rlen.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / divon / rlen.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:03:28  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10       SUBROUTINE RLEN (LEN,VEC,VLEN)
11       INTEGER   LEN
12       DOUBLE PRECISION   VEC(LEN), VLEN
13       INTEGER  I
14       DOUBLE PRECISION   ABSV, RATIO, RMIN, TOL, TVMX, VMAX
15       DATA TOL / 1.0D-20 /
16 #if defined(CERNLIB_IBM)||defined(CERNLIB_SINGLE)
17       DATA RMIN / 1.0D-58 /
18 #endif
19 #if (!defined(CERNLIB_IBM))&&(defined(CERNLIB_DOUBLE))
20       DATA RMIN / 1.0D-34/
21 #endif
22       VMAX=0.0D+0
23       DO 10 I=1,LEN
24       ABSV=ABS(VEC(I))
25       IF(ABSV.GT.VMAX) VMAX=ABSV
26  10   CONTINUE
27       VLEN=0.0D+0
28       IF(VMAX.EQ.0.0D+0) RETURN
29       TVMX=0.0D+0
30       IF(VMAX.GT.RMIN) TVMX=TOL*VMAX
31       DO 20 I=1,LEN
32       IF(ABS(VEC(I)).LE.TVMX) GOTO 20
33       RATIO=VEC(I)/VMAX
34       VLEN=VLEN+RATIO*RATIO
35  20   CONTINUE
36       VLEN=VMAX*SQRT(VLEN)
37       RETURN
38       END