14bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	FPI *fpi, fpi1;
24bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	int Rounding;
34bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes#ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */
44bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	Rounding = Flt_Rounds;
54bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes#else /*}{*/
64bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	Rounding = 1;
74bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	switch(fegetround()) {
84bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	  case FE_TOWARDZERO:	Rounding = 0; break;
94bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	  case FE_UPWARD:	Rounding = 2; break;
104bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	  case FE_DOWNWARD:	Rounding = 3;
114bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	  }
124bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes#endif /*}}*/
134bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	fpi = &fpi0;
144bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes	if (Rounding != 1) {
154bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes		fpi1 = fpi0;
164bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes		fpi = &fpi1;
174bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes		fpi1.rounding = Rounding;
184bd97cee28dd815fff54fc97560be60d566c1fa5Elliott Hughes		}
19