| 1 | 	FPI *fpi, fpi1; |
| 2 | 	int Rounding; |
| 3 | #ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */ |
| 4 | 	Rounding = Flt_Rounds; |
| 5 | #else /*}{*/ |
| 6 | 	Rounding = 1; |
| 7 | 	switch(fegetround()) { |
| 8 | 	 case FE_TOWARDZERO:	Rounding = 0; break; |
| 9 | 	 case FE_UPWARD:	Rounding = 2; break; |
| 10 | 	 case FE_DOWNWARD:	Rounding = 3; |
| 11 | 	} |
| 12 | #endif /*}}*/ |
| 13 | 	fpi = &fpi0; |
| 14 | 	if (Rounding != 1) { |
| 15 | 		fpi1 = fpi0; |
| 16 | 		fpi = &fpi1; |
| 17 | 		fpi1.rounding = Rounding; |
| 18 | 	} |