--- ray/src/util/rmatrix.c 2016/08/18 00:52:48 2.21 +++ ray/src/util/rmatrix.c 2016/08/30 14:54:08 2.23 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rmatrix.c,v 2.21 2016/08/18 00:52:48 greg Exp $"; +static const char RCSid[] = "$Id: rmatrix.c,v 2.23 2016/08/30 14:54:08 greg Exp $"; #endif /* * General matrix operations. @@ -195,15 +195,11 @@ rmx_load(const char *inspec) if (inspec == NULL) { /* reading from stdin? */ inspec = ""; -#if defined(_WIN32) || defined(_WIN64) - _setmode(fileno(stdin), _O_BINARY); -#endif + SET_FILE_BINARY(stdin); } else if (inspec[0] == '!') { if ((fp = popen(inspec+1, "r")) == NULL) return(NULL); -#if defined(_WIN32) || defined(_WIN64) - _setmode(fileno(fp), _O_BINARY); -#endif + SET_FILE_BINARY(stdin); } else { const char *sp = inspec; /* check suffix */ while (*sp) @@ -254,9 +250,7 @@ rmx_load(const char *inspec) dnew->info = dinfo.info; switch (dinfo.dtype) { case DTascii: -#if defined(_WIN32) || defined(_WIN64) - _setmode(fileno(fp), _O_TEXT); -#endif + SET_FILE_TEXT(stdin); if (!rmx_load_ascii(dnew, fp)) goto loaderr; dnew->dtype = DTascii; /* should leave double? */ @@ -522,7 +516,8 @@ rmx_multiply(const RMATRIX *m1, const RMATRIX *m2) for (k = mres->ncomp; k--; ) { long double d = 0; for (h = m1->ncols; h--; ) - d += rmx_lval(m1,i,h,k) * rmx_lval(m2,h,j,k); + d += (long double)rmx_lval(m1,i,h,k) * + (long double)rmx_lval(m2,h,j,k); rmx_lval(mres,i,j,k) = (double)d; } return(mres);