extprc - nicolob/pep-full GitHub Wiki
Type: subroutine
Defined in: extprc.f
Definition: SUBROUTINE EXTPRC
THE CALL TO EXTPRC SETS A FLAG: -1 MEANS USE DOUBLE PRECISION
0 MEANS USE HARDWARE EXTENDED
+1 SOFTWARE EXTENDED PRECISION
+2 USE SOFTWARE EXTENDED PRECISION
FOR DIVIDE, HARDWARE EXTENDED
PRECISION FOR THE OTHER OPERATIONS
CALL STORND(B) THE 128-BIT EXTENDED PRECISION NUMBER
IN LOCAL FLOATING POINT STORAGE IS COPIED
TO A 64-BIT VALUE AT LOCATION "B". THE
LOCAL STORAGE IS UNCHANGED.
E = STORNE(B) THE DOUBLE PRECISION NUMBER B IS ROUNDED
TO SINGLE PRECISION AND RETURNED AS THE
FUNCTION VALUE.
WITH CALLING PROGRAM CODED AS ILLUSTRATED,
ROUNDED RESULT IS STORED IN THE SINGLE
PRECISION NUMBER E. MUST SPECIFY
REAL*4 STORNE IN CALLING PROGRAM.
EXAMPLE 1:
G = (A*B-C)/D+E*F
real*10 A(2),B(2),C(2),D(2),E(2),F(2),G(2)
CALL XLOAD(A)
CALL XMUL(B)
CALL XSUB(C)
CALL XDIV(D)
CALL XSTORE(G)
CALL XLOAD(E)
CALL XMUL(F)
CALL XADD(G)
CALL XSTORE(G)
EXAMPLE 2:
Y = A(1)+A(2)*X+A(3)*X**2+. . .+A(N+1)*X**N
WE EMPLOY THE USUAL TRICK FOR EVALUATING POLYNOMIALS AND WRITE THIS
IN THE FORM
Y = A(1)+X*(A(2)+X*(A(3)+. . .+X*(A(N)+X*A(N+1))). . . )
real*10 A(2,N+1),X(2),Y(2)
CALL XLOAD(A(1,N+1))
DO 11 I=1,N
J = N+1-I
CALL XMUL(X)
CALL XADD(A(1,J))
11 CONTINUE
CALL XSTORE(Y)
EXAMPLE 3:
MATRIX MULTIPLICATION C=A*B
real*10 A(2,N,N),B(2,N,N),C(2,N,N),SUM(2)
DO 15 I=1,N
DO 13 J=1,N
SUM(1) = 0.0_10
SUM(2) = 0.0_10
DO 11 K=1,N
CALL XLOAD(A(1,I,K))
CALL XMUL(B(1,K,J))
CALL XADD(SUM)
CALL XSTORE(SUM)
11 CONTINUE
C(1,I,J) = SUM(1)
C(2,I,J) = SUM(2)
13 CONTINUE
15 CONTINUE
None.
- Not available.
- stornd
- to
- xadd
- xdiv
- xload
- xmul
- xstore
- xsub
- ...
- ...