--- ray/src/util/rmatrix.c 2015/05/04 20:53:21 2.13 +++ ray/src/util/rmatrix.c 2015/07/22 04:29:56 2.16 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rmatrix.c,v 2.13 2015/05/04 20:53:21 greg Exp $"; +static const char RCSid[] = "$Id: rmatrix.c,v 2.16 2015/07/22 04:29:56 greg Exp $"; #endif /* * General matrix operations. @@ -10,6 +10,7 @@ static const char RCSid[] = "$Id: rmatrix.c,v 2.13 201 #include #include #include "resolu.h" +#include "rtprocess.h" #include "rmatrix.h" static char rmx_mismatch_warn[] = "WARNING: data type mismatch\n"; @@ -46,7 +47,9 @@ rmx_free(RMATRIX *rm) int rmx_newtype(int dtyp1, int dtyp2) { - if ((dtyp1==DTxyze) | (dtyp1==DTrgbe) && dtyp1 != dtyp2) + if ((dtyp1==DTxyze) | (dtyp1==DTrgbe) | + (dtyp2==DTxyze) | (dtyp2==DTrgbe) + && dtyp1 != dtyp2) return(0); if (dtyp1 < dtyp2) return(dtyp1); @@ -511,8 +514,7 @@ rmx_multiply(const RMATRIX *m1, const RMATRIX *m2) for (k = mres->ncomp; k--; ) { long double d = 0; for (h = m1->ncols; h--; ) - d += (long double)rmx_lval(m1,i,h,k) * - (long double)rmx_lval(m2,h,j,k); + d += rmx_lval(m1,i,h,k) * rmx_lval(m2,h,j,k); rmx_lval(mres,i,j,k) = (double)d; } return(mres);