1 | ONCOSCOM ;WASH ISC/SRR-COMPUTATIONAL SUBROUTINES ;4/16/92 18:25
|
---|
2 | ;;2.11;ONCOLOGY;;Mar 07, 1995
|
---|
3 | ;This module contains entry points for the following computations:
|
---|
4 | ; EXP - compute the exponential
|
---|
5 | ; LOG10 - compute log to base 10
|
---|
6 | ; LOG2 - compute log to base 2
|
---|
7 | ; SQ - compute the square root
|
---|
8 | ;
|
---|
9 | ;
|
---|
10 | EXP ;compute the exponential EXP(X)
|
---|
11 | ;in: X = argument must be less than 55.26
|
---|
12 | ;out: Y = EXP(X)
|
---|
13 | ; Z = 1 for any problem in evaluations, 0 otherwise
|
---|
14 | N F,I,LE,LZ,S
|
---|
15 | S LE=.434294482,LZ=X,X=LE*X
|
---|
16 | S Z=0,S=0 I X=0 S Y=1 G QEXP
|
---|
17 | I +X'=X S Z=1 G QEXP
|
---|
18 | I X<0 S S=1,X=-X
|
---|
19 | S F=X#1,I=X\1,I="1E"_$E("-",S&I)_I
|
---|
20 | S Y=.00093264267*F+0.00255491796*F+0.01742111988*F+0.07295173666*F+0.25439357484*F+0.66273088429*F+1.15129277603*F+1
|
---|
21 | S Y=Y*Y
|
---|
22 | QEXP S:S Y=1/Y S Y=+$J(Y+0.000000005,0,8),Y=Y*I,X=LZ
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | LOGE ;compute log to base E
|
---|
26 | ;arguments same as LOG10
|
---|
27 | D LOG2 I 'Z S Y=+$J(Y/1.44269504,0,8)
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | LOG10 ;compute log to base 10
|
---|
31 | ;in: X = argument
|
---|
32 | ;out: Y = LOG10(X)
|
---|
33 | ; Z = 1 if Y not evaluated, 0 otherwise
|
---|
34 | D LOG2 I 'Z S Y=+$J(Y/3.321928096,0,8)
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | LOG2 ;compute log to base 2
|
---|
38 | ;arguments are as above
|
---|
39 | N LU,LV,LZ
|
---|
40 | I X'>0!(+X'=X) S Z=1 Q
|
---|
41 | S LZ=$L($P(X,".",1))
|
---|
42 | I LZ S X="."_$E(X,1,LZ)_$E(X,LZ+2,255),X=+X
|
---|
43 | E F LZ=LZ:-1 Q:X'<.1 S X=X*10
|
---|
44 | F Y=0:1:3 Q:X'<.5 S X=X*2
|
---|
45 | S LU=X-.707106781/(X+.707106781),LV=LU*LU
|
---|
46 | S LU=.434259751292*LV+.576584342056*LV+.961800762286*LV+2.885390072738*LU
|
---|
47 | S Y=+$J(LZ*3.321928096+LU-Y-.5,0,8),Z=0
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | SQ ;compute square root
|
---|
51 | ;in: X = argument for square root
|
---|
52 | ;out: Y = sq root of X if X'<0, of -X if X<0
|
---|
53 | ; Z = 1 if X<0, 0 otherwise
|
---|
54 | S Z=(X<0) I X=0 S Y=0 Q
|
---|
55 | I Z S X=-X
|
---|
56 | I X>1 S Y=X\1
|
---|
57 | E S Y=1/X
|
---|
58 | S Y=$E(Y,1,$L(Y)+1\2)
|
---|
59 | E S Y=1/Y
|
---|
60 | F %=1:1:6 S Y=X/Y+Y*.5
|
---|
61 | Q
|
---|
62 | ;
|
---|
63 | TEST ;test LOGE & EXP
|
---|
64 | N I
|
---|
65 | F I=1:1:20 W !,I,?10 S X=I*1.33333 W X D LOGE W ?25,Y S X=Y D EXP W ?40,Y,?60,Z
|
---|
66 | Q
|
---|