9 #ifndef MI_MATH_SPECTRUM_H
10 #define MI_MATH_SPECTRUM_H
92 #if defined(DEBUG) || (defined(_MSC_VER) && _MSC_VER <= 1310)
100 Float32 v = (Traits::has_signaling_NaN)
107 #if (__cplusplus >= 201103L)
327 return Spectrum( lhs[0] + rhs[0], lhs[1] + rhs[1], lhs[2] + rhs[2]);
335 return Spectrum( lhs[0] - rhs[0], lhs[1] - rhs[1], lhs[2] - rhs[2]);
343 return Spectrum( lhs[0] * rhs[0], lhs[1] * rhs[1], lhs[2] * rhs[2]);
351 return Spectrum( lhs[0] / rhs[0], lhs[1] / rhs[1], lhs[2] / rhs[2]);
358 return Spectrum( -c[0], -c[1], -c[2]);
391 return Spectrum( c[0] * s, c[1] * s, c[2] * s);
398 return Spectrum( s * c[0], s * c[1], s* c[2]);
406 return Spectrum( c[0] * f, c[1] * f, c[2] * f);
431 return (c[0] != 0.0f) && (c[1] != 0.0f) && (c[2] != 0.0f);
438 return (c[0] != 0.0f) || (c[1] != 0.0f) || (c[2] != 0.0f);
479 clamp( c[1], low[1], high[1]),
480 clamp( c[2], low[2], high[2]));
489 clamp( c[1], low[1], high),
490 clamp( c[2], low[2], high));
499 clamp( c[1], low, high[1]),
500 clamp( c[2], low, high[2]));
508 clamp( c[1], low, high),
509 clamp( c[2], low, high));
639 lerp( c1[1], c2[1], t[1]),
640 lerp( c1[2], c2[2], t[2]));
654 lerp( c1[1], c2[1], t),
655 lerp( c1[2], c2[2], t));
757 sincos( a[0], s[0], c[0]);
758 sincos( a[1], s[1], c[1]);
759 sincos( a[2], s[2], c[2]);
874 #endif // MI_MATH_SPECTRUM_H