*
* $Id: sinv.inc,v 1.1.1.1 1996/02/15 17:48:13 mclareni Exp $
*
* $Log: sinv.inc,v $
* Revision 1.1.1.1  1996/02/15 17:48:13  mclareni
* Kernlib
*
*
*
* sinv.inc
*
*CALL     BASIC
*CALL     SFACT
*CALL     SCL
*CALL     MPY
*CALL     SCA
*CALL     SFINV
*CALL     UTL
*CALL     CPY
*CALL     TMPRNT
 MAIN     MACRO     TYPE,N,IA,JA,I,J,K,L
          SETYPE    TYPE
 GNAME    MICRO     1,,*INV*
 NAME     MICRO     1,,*"P"S"GNAME"*
          HEADER    "NAME",SAVEA0
 LOCIFAIL BSS       1                   (IFAIL)
 SAVEA    BSS       1                   (A)
 TEMP5    BSS       5
          EXIT      "NAME"              (N,A,IDIM,IFAIL)
          PROLOG    ERROR,SAVEA,LOCIFAIL,N,JA,J      X1=(A)
          TSFACT    SAVEA,N,JA,TEMP5,IA,I,J,K,L       X5=IFAIL
          SA1       SAVEA               X1=(A)
          NZ        X5,[1]              IF NOT POSITIVE DEFINITE
          TSFINV    TYPE,SAVEA,N,JA,TEMP5,IA,I,J,K,L        X1=(A)
          SX5       B0                  X5=IFAIL=0
 [1]      SA2       LOCIFAIL            X2=(IFAIL)
          BX6       X5                  X6=IFAIL
          SA6       X2                  STORE IFAIL
          EPILOG
 HMPRNT   VFD       60/10H_"P"S_"GNAME"
 ERROR    TMPRNT    HMPRNT,X0,X4,B0
          ENDM
 PROLOG   MACRO     ERROR,SAVEA,LOCIFAIL,NN,JA,ONE        X1=(A)
          BSS       0                   X1=(N)    A1=((N))
          SA2       A1+2                X2=(IDIM) A2=((IDIM))
          S_ONE     1                                       ONE=1
          SA4       X1                  X4=N      A4=(N)
          SA1       A1+ONE              X1=(A)    A1=((A))
          SX7       A0                  X7=OLD A0
          NO
          SA7       SAVEA0              SAVEA0=OLD A0
          S_NN      X4                                      NN=N
          SA4       X2                  X4=IDIM   A4=(IDIM)
          SX0       NN                  X0=N
          SA2       A2+ONE              X2=(IFAIL) A2=((IFAIL))
          LT        NN,ONE,ERROR        IF N<1
          S_JA      X4                                      JA=IDIM
          NO
          LT        JA,NN,ERROR         IF IDIM<N
          BX6       X1                  X6=(A)
          SA6       SAVEA               SAVEA=(A)
          BX6       X2                  X6=(IFAIL)
          SA6       LOCIFAIL            LOCIFAIL=((IFAIL))
 TAU      IFEQ      LENGTH,2
          S_JA      JA+JA                              JA=LENGTH*IDIM
 TAU      ENDIF
 PROLOG   ENDM