extprc - nicolob/pep-full GitHub Wiki

extprc

Type: subroutine

Defined in: extprc.f

Definition: SUBROUTINE EXTPRC

Description

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

Included Files

None.

Arguments

  • Not available.

Calls

  • stornd
  • to
  • xadd
  • xdiv
  • xload
  • xmul
  • xstore
  • xsub

Called By

  • ...

Notes

  • ...
⚠️ **GitHub.com Fallback** ⚠️