ASMB,L,R,C
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS      * 
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
*   NAME: PART OF MATH LIBRARY
*   SOURCE:  24998-18XXX  SEE NAM FOR LAST THREE DIGITS 
*   RELOC: PART OF 24998-12001
*   PGMR: BG & JTS
* 
      HED ".NGL" - CONVERT TRIPLE TO SINGLE WITH ROUNDING.
      NAM .NGL,7 24998-1X126 REV.2001 780424
* 
      ENT .NGL
      EXT SNGL,.CFER
* 
A     EQU 0 
B     EQU 1 
* 
*     .NGL CONVERTS A TRIPLE-PRECISION NUMBER TO A SINGLE-PRECISION 
*     NUMBER WITH ROUNDING. 
* 
*     CALLING SEQUENCE: 
* 
*                   JSB .NGL
*                   DEF *+2 
*                   DEF <ARG> 
*                   <RETURN>    RESULT IN (A,B), OVERFLOW AS PER SNGL.
* 
*     METHOD:  AFTER THE FIRST 25 BITS, THE ONLY EFFECT MANTISSA BITS 
*     HAVE ON THE RESULT IS FOR ROUNDING NEGATIVE NUMBERS.  FOR THESE,
*     IT ONLY MATTERS WHETHER THE REMAINING BITS ARE ALL ZERO OR NOT. 
*     THE TRIPLE NUMBER IS CONVERTED TO DOUBLE BY DELETING THE THIRD
*     WORD AND EXPLICITLY SETTING THE NEXT BIT IF ANY DELETED BIT WAS 
*     SET.  THE RESULT IS ROUNDED USING ".NGL" .
      SPC 4 
TEMP  BSS 4 
.NGL  NOP 
      STA TEMP      SAVE A-REG. 
      ISZ .NGL      SKIP RETURN ADDR. 
      LDA .NGL,I    COPY ARG ADDR.
      ISZ .NGL
      STA ARG 
      LDA TEMP      RESTORE A-REG.
      JSB .CFER     COPY ARG. 
      DEF TEMP
ARG   DEF *-* 
      LDA TEMP+2    THIRD WORD. 
      LDB TEMP+3    FOURTH WORD.
      CCE,SZA       THIRD WORD NONZERO ?
      RBL,ERB       YES, SET TOP BIT IN FOURTH WORD 
      STB TEMP+2    DELETE THIRD WORD 
      JSB SNGL      USE "SNGL" TO ROUND 
      DEF *+2 
      DEF TEMP
      JMP .NGL,I
* 
      END 
                                                                                                                                                                                                                                      