|
|
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) ;
}