|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 813 (0x32d) Types: TextFile Names: »scalewidth.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦8d3183c2b⟧ »utils/dvips541.tar.Z« └─⟦008d6ff64⟧ └─⟦this⟧ »./dvips/scalewidth.c«
/* * Code to scale dimensions. Takes two thirty-two bit integers, multiplies * them, divides them by 2^20, and returns the thirty-two bit result. * The first integer, the width in FIXes, can lie between -2^24 and 2^24-1. * The second integer, the scale factor, can lie between 0 and 2^27-1. The * arithmetic must be exact. The answer is truncated to an integer. * * Since this math is special, we put it in its own file. It is the only * place in the program where such accuracy is required. */ #include "structures.h" /* The copyright notice in that file is included too! */ integer scalewidth(a, b) register integer a, b ; { register integer al, bl ; al = a & 32767 ; bl = b & 32767 ; a >>= 15 ; b >>= 15 ; return ( ((al*bl/32768) + a*bl+al*b)/32 + a*b*1024) ; }