/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 11:10:07 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: ScaledImpl, module: ScaledImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [1463625265,2617748339] ScaledImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; #define SOURCE(p, l) /* source p, l */ #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) static double fc15 = 0.5; static void NoName←Q1056(); static void ScaledImpl←P0(); static word TIMES←P120(); static word DIVIDE←P180(); static word FromReal←P240(); static word Float←P300(); static word Halve←P360(); static word Scale←P420(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\127\075\046\061\300\234\007\253\163\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\325\357\120\064\300\204\001\046\072\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\346\312\312\137\300\332\074\046\072\100\150\000\000"}; static struct { word f0[4]; word f4; word f5; word f6; word f7; word f8; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17[4]; } globalframe = { {0}, (word) Scale←P420, 0, (word) Halve←P360, 0, (word) Float←P300, 0, (word) FromReal←P240, 0, (word) DIVIDE←P180, 0, (word) TIMES←P120, 0, (word) ScaledImpl←P0, {0} }; static void NoName←Q1056() { register ptr gf←c051 = (ptr) &globalframe; word var←c7124; (void) XR←DeclareGlobalFrame((word) "ScaledImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c051)+64) /* var←c6484 */ ); var←c7124 = (word) XR←ImportInterface((word) "DReal", (word) XR←GetTypeIndexS((word) (&string2)), 7); (* (( (ptr) gf←c051)+19)/* var←c6996 */ ) = var←c7124; (void) XR←ImportProcS(var←c7124, 135004162); (void) XR←ImportProcS(var←c7124, 134742529); var←c7124 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string3)), 11); (* (( (ptr) gf←c051)+18)/* var←c6868 */ ) = var←c7124; (void) XR←ImportProcS(var←c7124, 67633154); (void) XR←ImportProcS(var←c7124, 67371521); var←c7124 = (word) XR←ExportInterface((word) "Scaled", (word) XR←GetTypeIndexS((word) (&string4)), 19); (* (( (ptr) gf←c051)+20)/* var←c7156 */ ) = var←c7124; (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+40)/* var←c6388 */ , 67371777); (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+56)/* var←c6452 */ , 67634946); (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+48)/* var←c6420 */ , 67635202); (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+32)/* var←c6356 */ , 67375105); (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+16)/* var←c6292 */ , 67637506); (void) XR←ExportProcS(var←c7124, (word) (( (bPt) gf←c051)+24)/* var←c6324 */ , 67375617); } static void ScaledImpl←P0(formal←c013, formal←c012) word formal←c013; word formal←c012; { /* ScaledImpl: */ } static word TIMES←P120(a←v2988, b←v3016) word a←v2988; word b←v3016; { word var←c3060; word pos←v3664; word prod←v3692 = 0; word var←c6612; word n←v5996; /* TIMES: */ SOURCE(299, 401) SOURCE(352, 40) pos←v3664 = (( (int)a←v2988 < (int)0) == ( (int)b←v3016 < (int)0)); SOURCE(407, 33) if (( (int)a←v2988 < (int)0)) { SOURCE(427, 13) { word var←c6548; word i←v4636; i←v4636 = INEG(a←v2988); var←c6548 = i←v4636; a←v2988 = var←c6548; }; }; SOURCE(442, 33) if (( (int)b←v3016 < (int)0)) { SOURCE(462, 13) { word var←c6580; word i←v6232; i←v6232 = INEG(b←v3016); var←c6580 = i←v6232; b←v3016 = var←c6580; }; }; SOURCE(477, 70) n←v5996 = ((( (((unsigned)a←v2988 << 16) >> 16) ) * ( (((unsigned)b←v3016 << 16) >> 16) )) + 32768); var←c6612 = (n←v5996 >> 16); prod←v3692 = (prod←v3692 & 4294901760) | (( (((unsigned)var←c6612 << 16) >> 16) )); SOURCE(549, 21) { word idx5; prod←v3692 = (prod←v3692 & 65535) | ((( idx5 = (word) (((unsigned)a←v2988 >> 16) * ((unsigned)b←v3016 >> 16)), BCK(idx5, 65536) )) << 16); }; SOURCE(572, 84) prod←v3692 = ((prod←v3692 + (((unsigned)a←v2988 >> 16) * ( (((unsigned)b←v3016 << 16) >> 16) ))) + (((unsigned)a←v2988 >> 16) * ( (((unsigned)b←v3016 << 16) >> 16) ))); SOURCE(658, 42) if ((0 != pos←v3664)) { return(prod←v3692); } else { { word var←c6676; word i←v6188; i←v6188 = INEG(prod←v3692); var←c6676 = i←v6188; return(var←c6676); }; }; } static word DIVIDE←P180(a←v3120, b←v3148) word a←v3120; word b←v3148; { word var←c3192; /* DIVIDE: */ SOURCE(706, 89) SOURCE(760, 35) { word var←c6740; { word x6; word x7; *(float*)&var←c6740 = ( x6 = (word) Float←P300(a←v3120), *(float*)&x6 ) / ( x7 = (word) Float←P300(b←v3148), *(float*)&x7 ); }; return((word) FromReal←P240(var←c6740)); }; } static word FromReal←P240(real←v3252) word real←v3252; { register ptr gf←c7188 = (ptr) &globalframe; word var←c3296; /* FromReal: */ SOURCE(801, 115) SOURCE(856, 60) { word var←c6804; word var←c6836; word i←v6140; { word pd9; { word pd8; pd8 = (* (( (ptr) (* (( (ptr) gf←c7188)+18)/* var←c6868 */ ))+4) ); var←c6836 = (word) ( *( (fPt) ((* (ptr) pd8 ))))(real←v3252, 16, pd8); }; pd9 = (* (( (ptr) (* (( (ptr) gf←c7188)+18)/* var←c6868 */ ))+6) ); i←v6140 = (word) ( *( (fPt) ((* (ptr) pd9 ))))(var←c6836, pd9); }; var←c6804 = i←v6140; return(var←c6804); }; } static word Float←P300(a←v3356) word a←v3356; { register ptr gf←c7220 = (ptr) &globalframe; word var←c3400; /* Float: */ SOURCE(920, 95) SOURCE(969, 46) { word pd10; float tf11; pd10 = (* (( (ptr) (* (( (ptr) gf←c7220)+18)/* var←c6868 */ ))+4) ); return((word) ( *( (fPt) ((* (ptr) pd10 ))))(( tf11 = (float)(int)a←v3356, *(word*)&tf11 ), (word) -16, pd10)); }; } static word Halve←P360(a←v3460) word a←v3460; { register ptr gf←c7252 = (ptr) &globalframe; word var←c3504; /* Halve: */ SOURCE(1019, 107) SOURCE(1069, 57) { word var←c6964; W2 var←c042; word i←v6092; { word pd12; W2 x13; W2 D14; pd12 = (* (( (ptr) (* (( (ptr) gf←c7252)+19)/* var←c6996 */ ))+6) ); XR←DFloatInt(&D14, a←v3460); XR←DRealMulI(&x13, &D14, &fc15); (void) ( *( (fPt) ((* (ptr) pd12 ))))((word) &var←c042, x13, pd12); }; i←v6092 = XR←IntDIntI(&var←c042); var←c6964 = i←v6092; return(var←c6964); }; } static word Scale←P420(a←v3564, scale←v3592) word a←v3564; word scale←v3592; { register ptr gf←c7284 = (ptr) &globalframe; word var←c3636; /* Scale: */ SOURCE(1132, 133) SOURCE(1198, 67) { word var←c7060; W2 var←c7092; W2 var←c049; W2 var←c050; word i←v6044; { word pd16; W2 D17; pd16 = (* (( (ptr) (* (( (ptr) gf←c7284)+19)/* var←c6996 */ ))+4) ); XR←DFloatInt(&D17, a←v3564); (void) ( *( (fPt) ((* (ptr) pd16 ))))((word) &var←c049, D17, scale←v3592, pd16); }; var←c7092 = var←c049; { word pd18; pd18 = (* (( (ptr) (* (( (ptr) gf←c7284)+19)/* var←c6996 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd18 ))))((word) &var←c050, var←c7092, pd18); }; i←v6044 = XR←IntDIntI(&var←c050); var←c7060 = i←v6044; return(var←c7060); }; } /* file: ScaledImpl, module: ScaledImpl, compiled at: February 21, 1992 11:10:07 pm PST */ extern void XR←install←ScaledImpl() { NoName←Q1056(); } extern void XR←run←ScaledImpl() { XR←Start(&globalframe); }