From 478a0045968703c1b2b1ffca512ad927a2d2ba29 Mon Sep 17 00:00:00 2001 From: Larry Gritz Date: Thu, 12 Feb 2026 22:15:33 -0800 Subject: [PATCH] build: Remove support for deprecated Intel icc compiler Intel icc is deprecated and hasn't had a release for a few years. It's holding us back, both by making us work around an ever growing number of icc bugs and limitation that will never be fixed, as well as not allowing us to upgrade minimum versions of certain dependencies, because icc can't correctly compile newer versions (as an example, it cannot use a 'fmt' library newer than the oldest we support, 7.0). So it's time to thank icc for its service and put it on the ice floe for the polar bears to eat. This is of course in main (future OSL 1.16), and will not be backported to release branches, since we never stop support of a dependency or toolchain of existing releases. People requiring icc for whatever reason may keep using OSL 1.15 or older. We will continue to support and test icx, the fully supported Intel LLVM-based compiler. This PR also removes some test reference output that was only needed for icc. Signed-off-by: Larry Gritz --- .github/workflows/ci.yml | 27 +- src/include/OSL/Imathx/Imathx.h | 2 - src/include/OSL/mask.h | 13 - src/include/OSL/oslnoise.h | 37 +- src/include/OSL/sfmath.h | 18 +- src/include/OSL/wide.h | 5 +- src/liboslexec/opcolor_impl.h | 3 +- src/liboslexec/wide/wide_opcolor.cpp | 2 +- ...ide_opnoise_periodic_perlin_deriv_Vec3.cpp | 10 - ...de_opnoise_periodic_uperlin_deriv_Vec3.cpp | 10 - .../wide/wide_opnoise_perlin_deriv_Vec3.cpp | 10 - .../wide/wide_opnoise_uperlin_deriv_Vec3.cpp | 10 - src/liboslexec/wide/wide_opstring.cpp | 2 +- src/liboslnoise/sfm_gabornoise.h | 14 +- src/testshade/batched_simplerend.cpp | 10 - .../ref/{out.icc.exr => out.alt.exr} | Bin testsuite/derivs/ref/out.icc.txt | 430 ------------------ testsuite/exponential/ref/out.alt-icc.txt | 67 --- testsuite/geomath/ref/out.icc.txt | 90 ---- testsuite/trig/ref/out.alt-icc.txt | 141 ------ testsuite/vector/ref/out-icc.txt | 33 -- 21 files changed, 9 insertions(+), 925 deletions(-) rename testsuite/blackbody/ref/{out.icc.exr => out.alt.exr} (100%) delete mode 100644 testsuite/derivs/ref/out.icc.txt delete mode 100644 testsuite/exponential/ref/out.alt-icc.txt delete mode 100644 testsuite/geomath/ref/out.icc.txt delete mode 100644 testsuite/trig/ref/out.alt-icc.txt delete mode 100644 testsuite/vector/ref/out-icc.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f929e080c..dbaf534f60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -343,31 +343,6 @@ jobs: OPENIMAGEIO_CMAKE_FLAGS="-DUSE_PYTHON=0" CMAKE_BUILD_TYPE=RelWithDebInfo - - desc: icc/C++17 llvm14 py3.9 oiio-2.5 avx2 - nametag: linux-icc - runner: ubuntu-latest - container: aswf/ci-osl:2023-clang15 - cc_compiler: icc - cxx_compiler: icpc - cxx_std: 17 - fmt_ver: 7.1.3 - opencolorio_ver: v2.3.2 - openimageio_ver: v2.5.17.0 - # Changes to OIIO's simd.h starting in commit 68666db9 (from PR - # #4187) seem to trigger compiler bugs in icc and generate wrong - # SIMD code. It's probably not worth tracking down for just this - # obsolete compiler. Just lock down to OIIO 2.5 for icc builds to - # avoid the problem. - # openimageio_ver: e41ac03c0b21 # works - # openimageio_ver: 68666db994d5 # broken - python_ver: "3.10" - pybind11_ver: v2.10.0 - # simd: avx2,f16c - batched: b8_AVX2_noFMA - setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF -DEXTRA_CPP_ARGS=-fp-model=consistent" - OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=7.1.3 - USE_OPENVDB=0 - OPENCOLORIO_CMAKE_FLAGS="-DCMAKE_CXX_COMPILER=g++" - desc: icx/C++17 llvm14 py3.10 oiio-3.0 avx2 nametag: linux-icx runner: ubuntu-latest @@ -380,7 +355,7 @@ jobs: cxx_std: 17 fmt_ver: 7.1.3 opencolorio_ver: v2.3.2 - openimageio_ver: v3.0.11.0 + openimageio_ver: v3.0.15.0 python_ver: "3.10" pybind11_ver: v2.10.0 simd: avx2,f16c diff --git a/src/include/OSL/Imathx/Imathx.h b/src/include/OSL/Imathx/Imathx.h index 85f89238b8..2b89ab0de5 100644 --- a/src/include/OSL/Imathx/Imathx.h +++ b/src/include/OSL/Imathx/Imathx.h @@ -248,9 +248,7 @@ affineInverse(const Matrix44 &m) // differently than the LLVM IR version. // NOTE: only using "inline" to get ODR (One Definition Rule) behavior static inline OSL_HOSTDEVICE Matrix44 -#if !OSL_INTEL_CLASSIC_COMPILER_VERSION OSL_GNUC_ATTRIBUTE(optimize("fp-contract=off")) -#endif nonAffineInverse(const Matrix44 &source); Matrix44 OSL_HOSTDEVICE nonAffineInverse(const Matrix44 &source) diff --git a/src/include/OSL/mask.h b/src/include/OSL/mask.h index e4b2fa2e0d..5a0c5cff08 100644 --- a/src/include/OSL/mask.h +++ b/src/include/OSL/mask.h @@ -20,19 +20,6 @@ OSL_NAMESPACE_BEGIN using std::popcount; using std::countr_zero; -#elif OSL_INTEL_CLASSIC_COMPILER_VERSION - -#include - -OSL_FORCEINLINE int popcount(uint32_t x) noexcept { return _mm_popcnt_u32(x);} -OSL_FORCEINLINE int popcount(uint64_t x) noexcept { return _mm_popcnt_u64(x); } -OSL_FORCEINLINE int countr_zero(uint32_t x) noexcept { return _bit_scan_forward(x); } -OSL_FORCEINLINE int countr_zero(uint64_t x) noexcept { - unsigned __int32 index; - _BitScanForward64(&index, x); - return static_cast(index); -} - #elif defined(__GNUC__) || defined(__clang__) OSL_FORCEINLINE int popcount(uint32_t x) noexcept { return __builtin_popcount(x); } diff --git a/src/include/OSL/oslnoise.h b/src/include/OSL/oslnoise.h index 3b027a1ce4..0d5d43a6a3 100644 --- a/src/include/OSL/oslnoise.h +++ b/src/include/OSL/oslnoise.h @@ -647,7 +647,7 @@ OSL_FORCEINLINE OSL_HOSTDEVICE Dual2 select(const bool b, const Dual2 ( @@ -2254,7 +2254,6 @@ OSL_FORCEINLINE OSL_HOSTDEVICE void perlin (Dual2 &result, const H &hash, // With Dual2 data types, a lot of code is generated below // which caused some runaway compiler memory consumption when vectorizing -#if !OSL_INTEL_CLASSIC_COMPILER_VERSION auto l_result = OIIO::lerp ( OIIO::trilerp (grad (hash (X , Y , Z , W ), fx , fy , fz , fw ), grad (hash (X+1, Y , Z , W ), fx-1.0f, fy , fz , fw ), @@ -2275,40 +2274,6 @@ OSL_FORCEINLINE OSL_HOSTDEVICE void perlin (Dual2 &result, const H &hash, grad (hash (X+1, Y+1, Z+1, W+1), fx-1.0f, fy-1.0f, fz-1.0f, fw-1.0f), u, v, t), s); -#else - // Use a loop to avoid repeating code gen twice - Dual2 v0, v1; - // GCC emits -Wmaybe-uninitialized errors for v0,v1. - // To avoid, GCC uses reference version above - - // Clang doesn't want to vectorize with the vIndex loop - // To enable vectorization, Clang uses reference version above - OSL_INTEL_PRAGMA(nounroll_and_jam) - for(int vIndex=0; vIndex < 2;++vIndex) { - int vW = W + vIndex; - Dual2 vfw = fw - float(vIndex); - - Dual2 vResult = OIIO::trilerp ( - grad (hash (X , Y , Z , vW ), fx , fy , fz , vfw ), - grad (hash (X+1, Y , Z , vW ), fx-1.0f, fy , fz , vfw ), - grad (hash (X , Y+1, Z , vW ), fx , fy-1.0f, fz , vfw ), - grad (hash (X+1, Y+1, Z , vW ), fx-1.0f, fy-1.0f, fz , vfw ), - grad (hash (X , Y , Z+1, vW ), fx , fy , fz-1.0f, vfw ), - grad (hash (X+1, Y , Z+1, vW ), fx-1.0f, fy , fz-1.0f, vfw ), - grad (hash (X , Y+1, Z+1, vW ), fx , fy-1.0f, fz-1.0f, vfw ), - grad (hash (X+1, Y+1, Z+1, vW ), fx-1.0f, fy-1.0f, fz-1.0f, vfw ), - u, v, t); - // Rather than dynamic indexing array, - // use masking to store outputs, - // to better enable SROA (Scalar Replacement of Aggregates) optimizations - if (vIndex == 0) { - v0 = vResult; - } else { - v1 = vResult; - } - } - auto l_result = OIIO::lerp (v0, v1, s); -#endif result = scale4 (l_result); } diff --git a/src/include/OSL/sfmath.h b/src/include/OSL/sfmath.h index b9a281d77f..10cf19991c 100644 --- a/src/include/OSL/sfmath.h +++ b/src/include/OSL/sfmath.h @@ -68,23 +68,7 @@ namespace sfm OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#if OSL_INTEL_CLASSIC_COMPILER_VERSION - // std::isinf wasn't vectorizing and was branchy. This slightly - // perturbed version fairs better and is branch free when vectorized - // with the Intel compiler. - OSL_FORCEINLINE OSL_HOSTDEVICE int isinf (float x) { - int r = 0; - // NOTE: using bitwise | to avoid branches - if (!(std::isfinite(x)|std::isnan(x))) { - r = static_cast(copysignf(1.0f,x)); - } - return r; - } -#else - // Other compilers don't seem to vectorize well no matter what, so just - // use the standard version. using std::isinf; -#endif template OSL_FORCEINLINE OSL_HOSTDEVICE T @@ -191,7 +175,7 @@ namespace sfm } } -#if OSL_ANY_CLANG && !OSL_INTEL_CLASSIC_COMPILER_VERSION && !OSL_INTEL_LLVM_COMPILER_VERSION +#if OSL_ANY_CLANG && !OSL_INTEL_LLVM_COMPILER_VERSION // To make clang's loop vectorizor happy // we need to make sure result of min and max diff --git a/src/include/OSL/wide.h b/src/include/OSL/wide.h index 0487193579..0182ed6032 100644 --- a/src/include/OSL/wide.h +++ b/src/include/OSL/wide.h @@ -1904,7 +1904,7 @@ struct WideImpl[], WidthT, true /*IsConstT */> { } // namespace pvt -#if OSL_INTEL_CLASSIC_COMPILER_VERSION || OSL_GNUC_VERSION +#if OSL_GNUC_VERSION // Workaround for error #3466: inheriting constructors must be inherited from a direct base class # define __OSL_INHERIT_BASE_CTORS(DERIVED, BASE) \ using Base = typename DERIVED::BASE; \ @@ -3210,8 +3210,7 @@ template OSL_FORCEINLINE bool testIfAnyLaneIsNonZero(const Wide& wvalues) { -#if OSL_ANY_CLANG && !OSL_INTEL_CLASSIC_COMPILER_VERSION \ - && !OSL_INTEL_LLVM_COMPILER_VERSION +#if OSL_ANY_CLANG && !OSL_INTEL_LLVM_COMPILER_VERSION int anyLaneIsOn = 0; OSL_OMP_PRAGMA(omp simd simdlen(WidthT) reduction(max : anyLaneIsOn)) for (int i = 0; i < WidthT; ++i) { diff --git a/src/liboslexec/opcolor_impl.h b/src/liboslexec/opcolor_impl.h index ea32f98737..7f6cdef8ac 100644 --- a/src/liboslexec/opcolor_impl.h +++ b/src/liboslexec/opcolor_impl.h @@ -266,8 +266,7 @@ hsv_to_rgb(const COLOR3& hsv) // Avoid switch statement vectorizor doesn't like // Also avoid if/else nest which some optimizers might // convert back into a switch statement -# if OSL_ANY_CLANG && !OSL_INTEL_CLASSIC_COMPILER_VERSION \ - && !OSL_INTEL_LLVM_COMPILER_VERSION +# if OSL_ANY_CLANG && !OSL_INTEL_LLVM_COMPILER_VERSION // Clang was still transforming series of if's back into a switch. // Alternate between == and <= comparisons to avoid # define __OSL_ASC_EQ <= diff --git a/src/liboslexec/wide/wide_opcolor.cpp b/src/liboslexec/wide/wide_opcolor.cpp index f0c8246e58..569da22667 100644 --- a/src/liboslexec/wide/wide_opcolor.cpp +++ b/src/liboslexec/wide/wide_opcolor.cpp @@ -302,7 +302,7 @@ namespace { // Note: Clang 14 seems to no longer allow vectorizing these loops #if ((OSL_CLANG_VERSION && OSL_CLANG_VERSION < 140000) \ - || OSL_INTEL_CLASSIC_COMPILER_VERSION || OSL_INTEL_LLVM_COMPILER_VERSION) + || OSL_INTEL_LLVM_COMPILER_VERSION) # define WIDE_TRANSFORMC_OMP_SIMD_LOOP(...) OSL_OMP_SIMD_LOOP(__VA_ARGS__) #else # define WIDE_TRANSFORMC_OMP_SIMD_LOOP(...) diff --git a/src/liboslexec/wide/wide_opnoise_periodic_perlin_deriv_Vec3.cpp b/src/liboslexec/wide/wide_opnoise_periodic_perlin_deriv_Vec3.cpp index f4e74de1dd..1dea0219dd 100644 --- a/src/liboslexec/wide/wide_opnoise_periodic_perlin_deriv_Vec3.cpp +++ b/src/liboslexec/wide/wide_opnoise_periodic_perlin_deriv_Vec3.cpp @@ -24,17 +24,7 @@ template<> struct BatchedCGPolicy { }; template<> struct BatchedCGPolicy { -#if ((defined(_WIN32) || defined(_WIN64)) && defined(__INTEL_COMPILER)) - // Avoid stack overflow on windows build because compiler has hard coded stack limit. - // By not forcing everything to recursively inline and not explicitly vectorizing, - // the compiler uses less stack space at the cost of NOT creating a properly SIMD optimized function. - // Linux & OSX can increase stacksize before building - - static constexpr int simd_threshold - = __OSL_WIDTH + 1; // Make SIMD code path unreachable -#else static constexpr int simd_threshold = 6; -#endif }; } // namespace diff --git a/src/liboslexec/wide/wide_opnoise_periodic_uperlin_deriv_Vec3.cpp b/src/liboslexec/wide/wide_opnoise_periodic_uperlin_deriv_Vec3.cpp index 1c9890544d..08f96eb095 100644 --- a/src/liboslexec/wide/wide_opnoise_periodic_uperlin_deriv_Vec3.cpp +++ b/src/liboslexec/wide/wide_opnoise_periodic_uperlin_deriv_Vec3.cpp @@ -24,17 +24,7 @@ template<> struct BatchedCGPolicy { }; template<> struct BatchedCGPolicy { -#if ((defined(_WIN32) || defined(_WIN64)) && defined(__INTEL_COMPILER)) - // Avoid stack overflow on windows build because compiler has hard coded stack limit. - // By not forcing everything to recursively inline and not explicitly vectorizing, - // the compiler uses less stack space at the cost of NOT creating a properly SIMD optimized function. - // Linux & OSX can increase stacksize before building - - static constexpr int simd_threshold - = __OSL_WIDTH + 1; // Make SIMD code path unreachable -#else static constexpr int simd_threshold = 6; -#endif }; } // namespace diff --git a/src/liboslexec/wide/wide_opnoise_perlin_deriv_Vec3.cpp b/src/liboslexec/wide/wide_opnoise_perlin_deriv_Vec3.cpp index 063ff31ff8..91b2d9bce3 100644 --- a/src/liboslexec/wide/wide_opnoise_perlin_deriv_Vec3.cpp +++ b/src/liboslexec/wide/wide_opnoise_perlin_deriv_Vec3.cpp @@ -22,17 +22,7 @@ template<> struct BatchedCGPolicy { static constexpr int simd_threshold = 5; }; template<> struct BatchedCGPolicy { -#if ((defined(_WIN32) || defined(_WIN64)) && defined(__INTEL_COMPILER)) - // Avoid stack overflow on windows build because compiler has hard coded stack limit. - // By not forcing everything to recursively inline and not explicitly vectorizing, - // the compiler uses less stack space at the cost of NOT creating a properly SIMD optimized function. - // Linux & OSX can increase stacksize before building - - static constexpr int simd_threshold - = __OSL_WIDTH + 1; // Make SIMD code path unreachable -#else static constexpr int simd_threshold = 6; -#endif }; } // namespace diff --git a/src/liboslexec/wide/wide_opnoise_uperlin_deriv_Vec3.cpp b/src/liboslexec/wide/wide_opnoise_uperlin_deriv_Vec3.cpp index 04d9c8f72e..d636d555c8 100644 --- a/src/liboslexec/wide/wide_opnoise_uperlin_deriv_Vec3.cpp +++ b/src/liboslexec/wide/wide_opnoise_uperlin_deriv_Vec3.cpp @@ -22,17 +22,7 @@ template<> struct BatchedCGPolicy { static constexpr int simd_threshold = 5; }; template<> struct BatchedCGPolicy { -#if ((defined(_WIN32) || defined(_WIN64)) && defined(__INTEL_COMPILER)) - // Avoid stack overflow on windows build because compiler has hard coded stack limit. - // By not forcing everything to recursively inline and not explicitly vectorizing, - // the compiler uses less stack space at the cost of NOT creating a properly SIMD optimized function. - // Linux & OSX can increase stacksize before building - - static constexpr int simd_threshold - = __OSL_WIDTH + 1; // Make SIMD code path unreachable -#else static constexpr int simd_threshold = 6; -#endif }; } // namespace diff --git a/src/liboslexec/wide/wide_opstring.cpp b/src/liboslexec/wide/wide_opstring.cpp index ac82e4ebb6..656e4c0e83 100644 --- a/src/liboslexec/wide/wide_opstring.cpp +++ b/src/liboslexec/wide/wide_opstring.cpp @@ -75,7 +75,7 @@ __OSL_MASKED_OP2(strlen, Wi, Ws)(void* wr_, void* ws_, unsigned int mask_value) OSL_FORCEINLINE_BLOCK { -#if (!OSL_CLANG_VERSION || OSL_INTEL_CLASSIC_COMPILER_VERSION) +#if !OSL_CLANG_VERSION // Clang 11 generated SIMD crashes at runtime // TODO: investigate clang crash when vectorizing OSL_OMP_PRAGMA(omp simd simdlen(__OSL_WIDTH)) diff --git a/src/liboslnoise/sfm_gabornoise.h b/src/liboslnoise/sfm_gabornoise.h index 3d3cc17ce8..4e9d867dad 100644 --- a/src/liboslnoise/sfm_gabornoise.h +++ b/src/liboslnoise/sfm_gabornoise.h @@ -356,19 +356,7 @@ gabor_cell(const sfm::GaborUniformParams& gup, const sfm::GaborParams& gp, Dual2 gk = gabor_kernel(w_i_t_s_f, omega_i_t_s_f, phi_i_t_s_f, a_i_t_s_f, x_k_i_t); // 2D -#if defined(__AVX512F__) && defined(__INTEL_COMPILER) \ - && (__INTEL_COMPILER < 1800) - // icc17 with AVX512 had some incorrect results - // due to the not_finite code path executing even - // when the value was finite. Workaround: using isnan | isinf - // instead of isfinite avoided the issue. - // icc18u3 doesn't exhibit the problem - // NOTE: tried using bitwise | to avoid branches and got internal compiler error - //bool not_finite = std::isnan(gk.val()) | std::isinf(gk.val()); - bool not_finite = std::isnan(gk.val()) || std::isinf(gk.val()); -#else - bool not_finite = !std::isfinite(gk.val()); -#endif + bool not_finite = !std::isfinite(gk.val()); if (OSL_UNLIKELY(not_finite)) { // Numeric failure of the filtered version. Fall // back on the unfiltered. diff --git a/src/testshade/batched_simplerend.cpp b/src/testshade/batched_simplerend.cpp index d575939e6c..c4414ae229 100644 --- a/src/testshade/batched_simplerend.cpp +++ b/src/testshade/batched_simplerend.cpp @@ -180,17 +180,7 @@ BatchedSimpleRenderer::get_matrix(BatchedShaderGlobals* bsg, OSL_OMP_PRAGMA(omp simd simdlen(WidthT)) for (int lane = 0; lane < WidthT; ++lane) { -# if __INTEL_COMPILER >= 1900 - // Used load + blend + store instead of masked store to temporarily work around - // an icc19u5 issue when automatic ISA dispatch is used causing scatters to be generated - Matrix44 m = result[lane]; - if (result.mask()[lane]) { - m = uniformTransform; - } - result[ActiveLane(lane)] = m; -# else result[lane] = uniformTransform; -# endif } #endif } diff --git a/testsuite/blackbody/ref/out.icc.exr b/testsuite/blackbody/ref/out.alt.exr similarity index 100% rename from testsuite/blackbody/ref/out.icc.exr rename to testsuite/blackbody/ref/out.alt.exr diff --git a/testsuite/derivs/ref/out.icc.txt b/testsuite/derivs/ref/out.icc.txt deleted file mode 100644 index 95574ece92..0000000000 --- a/testsuite/derivs/ref/out.icc.txt +++ /dev/null @@ -1,430 +0,0 @@ -Compiled test.osl -> test.oso -Test derivatives - -u = 0, Dx(u) = 1, Dy(u) = 0 -v = 0, Dx(v) = 0, Dy(v) = 1 -P = 0 0 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - -Assign: a = u; a = 0, Dx(a) = 1, Dy(a) = 0 - -Add: a = u+v; a = 0, Dx(a) = 1, Dy(a) = 1 -Add constant: a = u+0.5; a = 0.5, Dx(a) = 1, Dy(a) = 0 - -Sub: a = u-v; a = 0, Dx(a) = 1, Dy(a) = -1 -Sub constant: a = u-0.5; a = -0.5, Dx(a) = 1, Dy(a) = 0 - -Negate: a = -u; a = 0, Dx(a) = -1, Dy(a) = 0 - -Mul: a = u*v; a = 0, Dx(a) = 0, Dy(a) = 0 - -Div: a = u/(v+1); a = 0, Dx(a) = 1, Dy(a) = 0 - -cos: a = cos(u); a = 1, Dx(a) = 0, Dy(a) = 0 - -sin: a = sin(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -tan: a = tan(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -cosh: a = cosh(u); a = 1, Dx(a) = 0, Dy(a) = 0 - -sinh: a = sinh(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -tanh: a = tanh(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -acos: a = acos(u); a = 1.571, Dx(a) = -1, Dy(a) = 0 - -asin: a = asin(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -atan: a = atan(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -atan2: a = atan2(u,v) at (0,0); a = 0, Dx(a) = 0, Dy(a) = 0 - -degrees: a = degrees(u); a = 0, Dx(a) = 57.3, Dy(a) = 0 - -radians: a = radians(u); a = 0, Dx(a) = 0.01745, Dy(a) = 0 - -log: a = log(u); a = -87.34, Dx(a) = 0, Dy(a) = 0 - -log2: a = log2(u); a = -126, Dx(a) = 0, Dy(a) = 0 - -log10: a = log10(u); a = -37.93, Dx(a) = 0, Dy(a) = 0 - -exp: a = exp(u); a = 1, Dx(a) = 1, Dy(a) = 0 - -exp2: a = exp2(u); a = 1, Dx(a) = 0.6931, Dy(a) = 0 - -expm1: a = expm1(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -erf: a = erf(u); a = 0, Dx(a) = 1.128, Dy(a) = 0 - -erfc: a = erfc(u); a = 1, Dx(a) = -1.128, Dy(a) = 0 - -sqrt: a = sqrt(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -inversesqrt: a = inversesqrt(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -pow: a = pow(u, 3); a = 0, Dx(a) = 0, Dy(a) = 0 - -pow: a = pow(u, v) at (0,0); a = 0, Dx(a) = 0, Dy(a) = 0 - -log: a = log(u,10); a = -37.93, Dx(a) = 0, Dy(a) = 0 - -log: a = log(u,v) at (0,0); a = 1, Dx(a) = 0, Dy(a) = 0 - -clamp: a = clamp(sin(u),u,v) is clamp(0,0,0); a = 0, Dx(a) = 1, Dy(a) = 0 - -min: a = min(u,v) at (0,0); a = 0, Dx(a) = 1, Dy(a) = 0 - -max: a = max(u,v) at (0,0); a = 0, Dx(a) = 0, Dy(a) = 1 - -mix: a = mix(u,v,sin(u)) at (0,0); a = 0, Dx(a) = 1, Dy(a) = 0 - -hypot: a = hypot(u,v) at (0,0); a = 0, Dx(a) = 0, Dy(a) = 0 - -hypot: a = hypot(u,v,3) at (0,0); a = 3, Dx(a) = 0, Dy(a) = 0 - -smoothstep: a = smoothstep(v,3,u) = (smoothstep(0,3,0)); a = 0, Dx(a) = 0, Dy(a) = 0 - -comp ref: P = 0 0 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - P[0] = 0, Dx(P[0]) = 1, Dy(P[0]) = 0 - P[1] = 0, Dx(P[1]) = 0, Dy(P[1]) = 1 - -dot product: d = dot(0 -0 0, 0 0 0) = 0 Dx(d) = 0 Dy(d) = 0 - -cross product: c = cross(0 -0 0, 0 0 0) = -0 0 0 Dx(c) = -0 0 0 Dy(c) = -0 0 0 - -comp assign: C[0]=u, C[1]=v: now C = 0 0 0, Dx(C) = 1 0 0, Dy(C) = 0 1 0 - -normalize: n = normalize(0 0 0) = 0 0 0 Dx(n) = 0 0 0 Dy(n) = 0 0 0 - -length: l = length(0 0 0) = 0 Dx(l) = 0 Dy(l) = 0 - -distance: d = distance(0 -0 0, 0 0 0) = 0 Dx(d) = 0 Dy(d) = 0 - -Triple construction: - color(u,v,0) = 0 0 0, Dx = 1 0 0, Dy = 0 1 0 - point (0,0,0) = 0 0 0, Dx = 1 0 0, Dy = 0 1 0 - point ("shader",0,0,0) = 1 0 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 - vector ("shader",0,0,0) = 0 0 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 -Test derivatives - -u = 1, Dx(u) = 1, Dy(u) = 0 -v = 0, Dx(v) = 0, Dy(v) = 1 -P = 1 0 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - -Assign: a = u; a = 1, Dx(a) = 1, Dy(a) = 0 - -Add: a = u+v; a = 1, Dx(a) = 1, Dy(a) = 1 -Add constant: a = u+0.5; a = 1.5, Dx(a) = 1, Dy(a) = 0 - -Sub: a = u-v; a = 1, Dx(a) = 1, Dy(a) = -1 -Sub constant: a = u-0.5; a = 0.5, Dx(a) = 1, Dy(a) = 0 - -Negate: a = -u; a = -1, Dx(a) = -1, Dy(a) = 0 - -Mul: a = u*v; a = 0, Dx(a) = 0, Dy(a) = 1 - -Div: a = u/(v+1); a = 1, Dx(a) = 1, Dy(a) = -1 - -cos: a = cos(u); a = 0.5403, Dx(a) = -0.8415, Dy(a) = 0 - -sin: a = sin(u); a = 0.8415, Dx(a) = 0.5403, Dy(a) = 0 - -tan: a = tan(u); a = 1.557, Dx(a) = 3.426, Dy(a) = 0 - -cosh: a = cosh(u); a = 1.543, Dx(a) = 1.175, Dy(a) = 0 - -sinh: a = sinh(u); a = 1.175, Dx(a) = 1.543, Dy(a) = 0 - -tanh: a = tanh(u); a = 0.7616, Dx(a) = 0.42, Dy(a) = 0 - -acos: a = acos(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -asin: a = asin(u); a = 1.571, Dx(a) = 0, Dy(a) = 0 - -atan: a = atan(u); a = 0.7854, Dx(a) = 0.5, Dy(a) = 0 - -atan2: a = atan2(u,v) at (1,0); a = 1.571, Dx(a) = 0, Dy(a) = 1 - -degrees: a = degrees(u); a = 57.3, Dx(a) = 57.3, Dy(a) = 0 - -radians: a = radians(u); a = 0.01745, Dx(a) = 0.01745, Dy(a) = 0 - -log: a = log(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -log2: a = log2(u); a = 0, Dx(a) = 1.443, Dy(a) = 0 - -log10: a = log10(u); a = 0, Dx(a) = 0.4343, Dy(a) = 0 - -exp: a = exp(u); a = 2.718, Dx(a) = 2.718, Dy(a) = 0 - -exp2: a = exp2(u); a = 2, Dx(a) = 1.386, Dy(a) = 0 - -expm1: a = expm1(u); a = 1.718, Dx(a) = 2.718, Dy(a) = 0 - -erf: a = erf(u); a = 0.8427, Dx(a) = 0.4151, Dy(a) = 0 - -erfc: a = erfc(u); a = 0.1573, Dx(a) = -0.4151, Dy(a) = 0 - -sqrt: a = sqrt(u); a = 1, Dx(a) = 0.5, Dy(a) = 0 - -inversesqrt: a = inversesqrt(u); a = 1, Dx(a) = -0.5, Dy(a) = 0 - -pow: a = pow(u, 3); a = 1, Dx(a) = 3, Dy(a) = 0 - -pow: a = pow(u, v) at (1,0); a = 1, Dx(a) = 0, Dy(a) = 0 - -log: a = log(u,10); a = 0, Dx(a) = 0.4343, Dy(a) = 0 - -log: a = log(u,v) at (1,0); a = 0, Dx(a) = -0.01145, Dy(a) = 0 - -clamp: a = clamp(sin(u),u,v) is clamp(0.8415,1,0); a = 1, Dx(a) = 1, Dy(a) = 0 - -min: a = min(u,v) at (1,0); a = 0, Dx(a) = 0, Dy(a) = 1 - -max: a = max(u,v) at (1,0); a = 1, Dx(a) = 1, Dy(a) = 0 - -mix: a = mix(u,v,sin(u)) at (1,0); a = 0.1585, Dx(a) = -0.3818, Dy(a) = 0.8415 - -hypot: a = hypot(u,v) at (1,0); a = 1, Dx(a) = 1, Dy(a) = 0 - -hypot: a = hypot(u,v,3) at (1,0); a = 3.162, Dx(a) = 0.3162, Dy(a) = 0 - -smoothstep: a = smoothstep(v,3,u) = (smoothstep(0,3,1)); a = 0.2593, Dx(a) = 0.4444, Dy(a) = -0.2963 - -comp ref: P = 1 0 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - P[0] = 1, Dx(P[0]) = 1, Dy(P[0]) = 0 - P[1] = 0, Dx(P[1]) = 0, Dy(P[1]) = 1 - -dot product: d = dot(1 -1 1, 1 1 1) = 1 Dx(d) = 2 Dy(d) = 2 - -cross product: c = cross(1 -1 1, 1 1 1) = -2 0 2 Dx(c) = -4 0 4 Dy(c) = -4 0 4 - -comp assign: C[0]=u, C[1]=v: now C = 1 0 0, Dx(C) = 1 0 0, Dy(C) = 0 1 0 - -normalize: n = normalize(1 1 1) = 0.5774 0.5774 0.5774 Dx(n) = 5.96e-08 5.96e-08 5.96e-08 Dy(n) = 0.3849 -0.7698 0.3849 - -length: l = length(1 1 1) = 1.732 Dx(l) = 1.732 Dy(l) = 0.5774 - -distance: d = distance(1 -1 1, 1 1 1) = 2 Dx(d) = 2 Dy(d) = 2 - -Triple construction: - color(u,v,0) = 1 0 0, Dx = 1 0 0, Dy = 0 1 0 - point (1,0,0) = 1 0 0, Dx = 1 0 0, Dy = 0 1 0 - point ("shader",1,0,0) = 1.707 0.7071 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 - vector ("shader",1,0,0) = 0.7071 0.7071 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 -Test derivatives - -u = 0, Dx(u) = 1, Dy(u) = 0 -v = 1, Dx(v) = 0, Dy(v) = 1 -P = 0 1 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - -Assign: a = u; a = 0, Dx(a) = 1, Dy(a) = 0 - -Add: a = u+v; a = 1, Dx(a) = 1, Dy(a) = 1 -Add constant: a = u+0.5; a = 0.5, Dx(a) = 1, Dy(a) = 0 - -Sub: a = u-v; a = -1, Dx(a) = 1, Dy(a) = -1 -Sub constant: a = u-0.5; a = -0.5, Dx(a) = 1, Dy(a) = 0 - -Negate: a = -u; a = 0, Dx(a) = -1, Dy(a) = 0 - -Mul: a = u*v; a = 0, Dx(a) = 1, Dy(a) = 0 - -Div: a = u/(v+1); a = 0, Dx(a) = 0.5, Dy(a) = 0 - -cos: a = cos(u); a = 1, Dx(a) = 0, Dy(a) = 0 - -sin: a = sin(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -tan: a = tan(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -cosh: a = cosh(u); a = 1, Dx(a) = 0, Dy(a) = 0 - -sinh: a = sinh(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -tanh: a = tanh(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -acos: a = acos(u); a = 1.571, Dx(a) = -1, Dy(a) = 0 - -asin: a = asin(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -atan: a = atan(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -atan2: a = atan2(u,v) at (0,1); a = 0, Dx(a) = -1, Dy(a) = 0 - -degrees: a = degrees(u); a = 0, Dx(a) = 57.3, Dy(a) = 0 - -radians: a = radians(u); a = 0, Dx(a) = 0.01745, Dy(a) = 0 - -log: a = log(u); a = -87.34, Dx(a) = 0, Dy(a) = 0 - -log2: a = log2(u); a = -126, Dx(a) = 0, Dy(a) = 0 - -log10: a = log10(u); a = -37.93, Dx(a) = 0, Dy(a) = 0 - -exp: a = exp(u); a = 1, Dx(a) = 1, Dy(a) = 0 - -exp2: a = exp2(u); a = 1, Dx(a) = 0.6931, Dy(a) = 0 - -expm1: a = expm1(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -erf: a = erf(u); a = 0, Dx(a) = 1.128, Dy(a) = 0 - -erfc: a = erfc(u); a = 1, Dx(a) = -1.128, Dy(a) = 0 - -sqrt: a = sqrt(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -inversesqrt: a = inversesqrt(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -pow: a = pow(u, 3); a = 0, Dx(a) = 0, Dy(a) = 0 - -pow: a = pow(u, v) at (0,1); a = 0, Dx(a) = 1, Dy(a) = 0 - -log: a = log(u,10); a = -37.93, Dx(a) = 0, Dy(a) = 0 - -log: a = log(u,v) at (0,1); a = 0, Dx(a) = 0, Dy(a) = 0 - -clamp: a = clamp(sin(u),u,v) is clamp(0,0,1); a = 0, Dx(a) = 1, Dy(a) = 0 - -min: a = min(u,v) at (0,1); a = 0, Dx(a) = 1, Dy(a) = 0 - -max: a = max(u,v) at (0,1); a = 1, Dx(a) = 0, Dy(a) = 1 - -mix: a = mix(u,v,sin(u)) at (0,1); a = 0, Dx(a) = 2, Dy(a) = 0 - -hypot: a = hypot(u,v) at (0,1); a = 1, Dx(a) = 0, Dy(a) = 1 - -hypot: a = hypot(u,v,3) at (0,1); a = 3.162, Dx(a) = 0, Dy(a) = 0.3162 - -smoothstep: a = smoothstep(v,3,u) = (smoothstep(1,3,0)); a = 0, Dx(a) = 0, Dy(a) = 0 - -comp ref: P = 0 1 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - P[0] = 0, Dx(P[0]) = 1, Dy(P[0]) = 0 - P[1] = 1, Dx(P[1]) = 0, Dy(P[1]) = 1 - -dot product: d = dot(1 -1 1, 1 1 1) = 1 Dx(d) = 2 Dy(d) = 2 - -cross product: c = cross(1 -1 1, 1 1 1) = -2 0 2 Dx(c) = -4 0 4 Dy(c) = -4 0 4 - -comp assign: C[0]=u, C[1]=v: now C = 0 1 0, Dx(C) = 1 0 0, Dy(C) = 0 1 0 - -normalize: n = normalize(1 -1 1) = 0.5774 -0.5774 0.5774 Dx(n) = 0.3849 0.7698 0.3849 Dy(n) = 5.96e-08 -5.96e-08 5.96e-08 - -length: l = length(1 -1 1) = 1.732 Dx(l) = 0.5774 Dy(l) = 1.732 - -distance: d = distance(1 -1 1, 1 1 1) = 2 Dx(d) = 2 Dy(d) = 2 - -Triple construction: - color(u,v,0) = 0 1 0, Dx = 1 0 0, Dy = 0 1 0 - point (0,1,0) = 0 1 0, Dx = 1 0 0, Dy = 0 1 0 - point ("shader",0,1,0) = 0.2929 0.7071 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 - vector ("shader",0,1,0) = -0.7071 0.7071 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 -Test derivatives - -u = 1, Dx(u) = 1, Dy(u) = 0 -v = 1, Dx(v) = 0, Dy(v) = 1 -P = 1 1 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - -Assign: a = u; a = 1, Dx(a) = 1, Dy(a) = 0 - -Add: a = u+v; a = 2, Dx(a) = 1, Dy(a) = 1 -Add constant: a = u+0.5; a = 1.5, Dx(a) = 1, Dy(a) = 0 - -Sub: a = u-v; a = 0, Dx(a) = 1, Dy(a) = -1 -Sub constant: a = u-0.5; a = 0.5, Dx(a) = 1, Dy(a) = 0 - -Negate: a = -u; a = -1, Dx(a) = -1, Dy(a) = 0 - -Mul: a = u*v; a = 1, Dx(a) = 1, Dy(a) = 1 - -Div: a = u/(v+1); a = 0.5, Dx(a) = 0.5, Dy(a) = -0.25 - -cos: a = cos(u); a = 0.5403, Dx(a) = -0.8415, Dy(a) = 0 - -sin: a = sin(u); a = 0.8415, Dx(a) = 0.5403, Dy(a) = 0 - -tan: a = tan(u); a = 1.557, Dx(a) = 3.426, Dy(a) = 0 - -cosh: a = cosh(u); a = 1.543, Dx(a) = 1.175, Dy(a) = 0 - -sinh: a = sinh(u); a = 1.175, Dx(a) = 1.543, Dy(a) = 0 - -tanh: a = tanh(u); a = 0.7616, Dx(a) = 0.42, Dy(a) = 0 - -acos: a = acos(u); a = 0, Dx(a) = 0, Dy(a) = 0 - -asin: a = asin(u); a = 1.571, Dx(a) = 0, Dy(a) = 0 - -atan: a = atan(u); a = 0.7854, Dx(a) = 0.5, Dy(a) = 0 - -atan2: a = atan2(u,v) at (1,1); a = 0.7854, Dx(a) = -0.5, Dy(a) = 0.5 - -degrees: a = degrees(u); a = 57.3, Dx(a) = 57.3, Dy(a) = 0 - -radians: a = radians(u); a = 0.01745, Dx(a) = 0.01745, Dy(a) = 0 - -log: a = log(u); a = 0, Dx(a) = 1, Dy(a) = 0 - -log2: a = log2(u); a = 0, Dx(a) = 1.443, Dy(a) = 0 - -log10: a = log10(u); a = 0, Dx(a) = 0.4343, Dy(a) = 0 - -exp: a = exp(u); a = 2.718, Dx(a) = 2.718, Dy(a) = 0 - -exp2: a = exp2(u); a = 2, Dx(a) = 1.386, Dy(a) = 0 - -expm1: a = expm1(u); a = 1.718, Dx(a) = 2.718, Dy(a) = 0 - -erf: a = erf(u); a = 0.8427, Dx(a) = 0.4151, Dy(a) = 0 - -erfc: a = erfc(u); a = 0.1573, Dx(a) = -0.4151, Dy(a) = 0 - -sqrt: a = sqrt(u); a = 1, Dx(a) = 0.5, Dy(a) = 0 - -inversesqrt: a = inversesqrt(u); a = 1, Dx(a) = -0.5, Dy(a) = 0 - -pow: a = pow(u, 3); a = 1, Dx(a) = 3, Dy(a) = 0 - -pow: a = pow(u, v) at (1,1); a = 1, Dx(a) = 1, Dy(a) = 0 - -log: a = log(u,10); a = 0, Dx(a) = 0.4343, Dy(a) = 0 - -log: a = log(u,v) at (1,1); a = 0, Dx(a) = 0, Dy(a) = 0 - -clamp: a = clamp(sin(u),u,v) is clamp(0.8415,1,1); a = 1, Dx(a) = 1, Dy(a) = 0 - -min: a = min(u,v) at (1,1); a = 1, Dx(a) = 1, Dy(a) = 0 - -max: a = max(u,v) at (1,1); a = 1, Dx(a) = 0, Dy(a) = 1 - -mix: a = mix(u,v,sin(u)) at (1,1); a = 1, Dx(a) = 0.1585, Dy(a) = 0.8415 - -hypot: a = hypot(u,v) at (1,1); a = 1.414, Dx(a) = 0.7071, Dy(a) = 0.7071 - -hypot: a = hypot(u,v,3) at (1,1); a = 3.317, Dx(a) = 0.3015, Dy(a) = 0.3015 - -smoothstep: a = smoothstep(v,3,u) = (smoothstep(1,3,1)); a = 0, Dx(a) = 0, Dy(a) = 0 - -comp ref: P = 1 1 1, Dx(P) = 1 0 0, Dy(P) = 0 1 0 - P[0] = 1, Dx(P[0]) = 1, Dy(P[0]) = 0 - P[1] = 1, Dx(P[1]) = 0, Dy(P[1]) = 1 - -dot product: d = dot(2 -2 2, 2 2 2) = 4 Dx(d) = 4 Dy(d) = 4 - -cross product: c = cross(2 -2 2, 2 2 2) = -8 0 8 Dx(c) = -8 0 8 Dy(c) = -8 0 8 - -comp assign: C[0]=u, C[1]=v: now C = 1 1 0, Dx(C) = 1 0 0, Dy(C) = 0 1 0 - -normalize: n = normalize(2 0 2) = 0.7071 0 0.7071 Dx(n) = -2.98e-08 0.3536 -2.98e-08 Dy(n) = -2.98e-08 -0.3536 -2.98e-08 - -length: l = length(2 0 2) = 2.828 Dx(l) = 1.414 Dy(l) = 1.414 - -distance: d = distance(2 -2 2, 2 2 2) = 4 Dx(d) = 2 Dy(d) = 2 - -Triple construction: - color(u,v,0) = 1 1 0, Dx = 1 0 0, Dy = 0 1 0 - point (1,1,0) = 1 1 0, Dx = 1 0 0, Dy = 0 1 0 - point ("shader",1,1,0) = 1 1.414 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 - vector ("shader",1,1,0) = 0 1.414 0, Dx = 0.7071 0.7071 0, Dy = -0.7071 0.7071 0 - diff --git a/testsuite/exponential/ref/out.alt-icc.txt b/testsuite/exponential/ref/out.alt-icc.txt deleted file mode 100644 index 9452fb0430..0000000000 --- a/testsuite/exponential/ref/out.alt-icc.txt +++ /dev/null @@ -1,67 +0,0 @@ -Compiled test.osl -> test.oso - log (2.71828) = 1 - log (2.71828, 27) = 0.303413 - log2 (2.71828) = 1.4427 - log10 (2.71828) = 0.434295 - logb (2.71828) = 1 - exp (2.71828) = 15.1543 - exp2 (2.71828) = 6.58092 - expm1 (2.71828) = 14.1543 - erf (2.71828) = 0.999879 - erfc (2.71828) = 0.000121176 - log (27.1828) = 3.30259 - log (27.1828, 27) = 1.00205 - log2 (27.1828) = 4.76462 - log10 (27.1828) = 1.43429 - logb (27.1828) = 4 - exp (27.1828) = 6.38773e+11 - exp2 (27.1828) = 1.5235e+08 - expm1 (27.1828) = 6.38773e+11 - erf (27.1828) = 1 - erfc (27.1828) = 0 - log (2, 2) = 1 - log (10, 10) = 1 - pow (2, 1.5) = 2.82842 - pow (-2, 1.5) = 0 - pow (-2, 0) = 1 - pow (-2, 3) = -8 - pow (0, 3) = 0 - pow (0, -3) = 0 - pow (0, 0) = 1 - pow (2.2, 2) = 4.84 - pow (-2.2, 2) = 4.84 - pow (1e+20, 2) = 3.40282e+38 [should be clamped, not inf!] - pow (2.5, 1) = 2.5 - log (2.71828 2.71828 2.71828) = 1 1 1 - log (2.71828 2.71828 2.71828, 27) = 0.303413 0.303413 0.303413 - log2 (2.71828 2.71828 2.71828) = 1.4427 1.4427 1.4427 - log10 (2.71828 2.71828 2.71828) = 0.434295 0.434295 0.434295 - logb (2.71828 2.71828 2.71828) = 1 1 1 - exp (2.71828 2.71828 2.71828) = 15.1543 15.1543 15.1543 - exp2 (2.71828 2.71828 2.71828) = 6.58092 6.58092 6.58092 - expm1 (2.71828 2.71828 2.71828) = 14.1543 14.1543 14.1543 - log (27.1828 27.1828 27.1828) = 3.30259 3.30259 3.30259 - log (27.1828 27.1828 27.1828, 27) = 1.00205 1.00205 1.00205 - log2 (27.1828 27.1828 27.1828) = 4.76462 4.76462 4.76462 - log10 (27.1828 27.1828 27.1828) = 1.43429 1.43429 1.43429 - logb (27.1828 27.1828 27.1828) = 4 4 4 - exp (27.1828 27.1828 27.1828) = 6.38773e+11 6.38773e+11 6.38773e+11 - exp2 (27.1828 27.1828 27.1828) = 1.5235e+08 1.5235e+08 1.5235e+08 - expm1 (27.1828 27.1828 27.1828) = 6.38773e+11 6.38773e+11 6.38773e+11 - log (2 2 2, 2) = 1 1 1 - log (10 10 10, 10) = 1 1 1 - pow (2 2 2, 1.5) = 2.82842 2.82842 2.82842 - pow (-2 -2 -2, 1.5) = 0 0 0 - pow (-2 -2 -2, 0) = 1 1 1 - pow (-2 -2 -2, 3) = -8 -8 -8 - pow (0 0 0, 3) = 0 0 0 - pow (0 0 0, -3) = 0 0 0 - pow (0 0 0, 0) = 1 1 1 - pow (2 2 2, 1.5 1.5 1.5) = 2.82842 2.82842 2.82842 - pow (-2 -2 -2, 1.5 1.5 1.5) = 0 0 0 - pow (-2 -2 -2, 0 0 0) = 1 1 1 - pow (-2 -2 -2, 3 3 3) = -8 -8 -8 - pow (0 0 0, 3 3 3) = 0 0 0 - pow (0 0 0, -3 -3 -3) = 0 0 0 - pow (0 0 0, 0 0 0) = 1 1 1 - diff --git a/testsuite/geomath/ref/out.icc.txt b/testsuite/geomath/ref/out.icc.txt deleted file mode 100644 index 783045d13b..0000000000 --- a/testsuite/geomath/ref/out.icc.txt +++ /dev/null @@ -1,90 +0,0 @@ -Compiled test.osl -> test.oso - hypot (3, 4) = 5 - hypot (3, 4, 5) = 7.07107 - reflect (0.447214 -0.894427 0, 0 1 0) = 0.447214 0.894427 0 - reflect (0.447214 -0.894427 0, -1 0 0) = -0.447214 -0.894427 0 - faceforward (0 0 1, 0 -0.707107 -0.707107) = 0 0 1 - faceforward (0 0 1, 0 -0.707107 -0.707107, 0 0 -1) = 0 0 -1 - testing total-internal reflection: - refract (0.707107 -0.707107 0, 0 1 0, 1.42) = 0 0 0 - frensel: Kr= 1 Kt = 0 R = 0.707107 0.707107 0 T = 0 0 0 - testing regular refraction: - refract (-0.436436 -0.218218 -0.872872, 0.267261 0.534522 0.801784, 0.862069) = -0.415346 -0.266336 -0.869801 - --> verify refract(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - fresnel: Kr= 0.00557254 Kt = 0.739022 R = 0.0623479 0.779349 0.623479 T = -0.415346 -0.266336 -0.869801 - --> verify fresnel(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - Varying: - hypot (0, 0) = 0 - hypot (0, 0, 0) = 0 - reflect (0 -1 0, 0 1 0) = 0 1 0 - refract (0.408248 -0.408248 -0.816497, 0 0 1, 0.75188) = 0.306954 -0.306954 -0.900866 - --> verify refract(): 1/1.33 = sin(25.7301)/sin(35.2637) => 0.75188 ?= 0.75188 - fresnel() -> Kr= 0.0222824 Kt = 0.552726 R = 0.408248 -0.408248 0.816497 T = 0.306954 -0.306954 -0.900866 - --> verify fresnel(): 1/1.33 = sin(25.7301)/sin(35.2637) => 0.75188 ?= 0.75188 - hypot (3, 4) = 5 - hypot (3, 4, 5) = 7.07107 - reflect (0.447214 -0.894427 0, 0 1 0) = 0.447214 0.894427 0 - reflect (0.447214 -0.894427 0, -1 0 0) = -0.447214 -0.894427 0 - faceforward (0 0 1, 0 -0.707107 -0.707107) = 0 0 1 - faceforward (0 0 1, 0 -0.707107 -0.707107, 0 0 -1) = 0 0 -1 - testing total-internal reflection: - refract (0.707107 -0.707107 0, 0 1 0, 1.42) = 0 0 0 - frensel: Kr= 1 Kt = 0 R = 0.707107 0.707107 0 T = 0 0 0 - testing regular refraction: - refract (-0.436436 -0.218218 -0.872872, 0.267261 0.534522 0.801784, 0.862069) = -0.415346 -0.266336 -0.869801 - --> verify refract(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - fresnel: Kr= 0.00557254 Kt = 0.739022 R = 0.0623479 0.779349 0.623479 T = -0.415346 -0.266336 -0.869801 - --> verify fresnel(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - Varying: - hypot (1, 0) = 1 - hypot (1, 0, 1) = 1.41421 - reflect (0.447214 -0.894427 0, 0 1 0) = 0.447214 0.894428 0 - refract (0.801784 -0.267261 -0.534522, 0 0 1, 0.75188) = 0.602845 -0.200948 -0.772138 - --> verify refract(): 1/1.33 = sin(39.4519)/sin(57.6878) => 0.75188 ?= 0.75188 - fresnel() -> Kr= 0.0505776 Kt = 0.53673 R = 0.801784 -0.267261 0.534522 T = 0.602845 -0.200948 -0.772138 - --> verify fresnel(): 1/1.33 = sin(39.4519)/sin(57.6878) => 0.75188 ?= 0.75188 - hypot (3, 4) = 5 - hypot (3, 4, 5) = 7.07107 - reflect (0.447214 -0.894427 0, 0 1 0) = 0.447214 0.894427 0 - reflect (0.447214 -0.894427 0, -1 0 0) = -0.447214 -0.894427 0 - faceforward (0 0 1, 0 -0.707107 -0.707107) = 0 0 1 - faceforward (0 0 1, 0 -0.707107 -0.707107, 0 0 -1) = 0 0 -1 - testing total-internal reflection: - refract (0.707107 -0.707107 0, 0 1 0, 1.42) = 0 0 0 - frensel: Kr= 1 Kt = 0 R = 0.707107 0.707107 0 T = 0 0 0 - testing regular refraction: - refract (-0.436436 -0.218218 -0.872872, 0.267261 0.534522 0.801784, 0.862069) = -0.415346 -0.266336 -0.869801 - --> verify refract(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - fresnel: Kr= 0.00557254 Kt = 0.739022 R = 0.0623479 0.779349 0.623479 T = -0.415346 -0.266336 -0.869801 - --> verify fresnel(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - Varying: - hypot (0, 1) = 1 - hypot (0, 1, 1) = 1.41421 - reflect (0 -1 0, 0.707107 0.707107 0) = 1 0 0 - refract (0.408248 0.408248 -0.816497, 0 0 1, 0.75188) = 0.306954 0.306954 -0.900866 - --> verify refract(): 1/1.33 = sin(25.7301)/sin(35.2637) => 0.75188 ?= 0.75188 - fresnel() -> Kr= 0.0222824 Kt = 0.552726 R = 0.408248 0.408248 0.816497 T = 0.306954 0.306954 -0.900866 - --> verify fresnel(): 1/1.33 = sin(25.7301)/sin(35.2637) => 0.75188 ?= 0.75188 - hypot (3, 4) = 5 - hypot (3, 4, 5) = 7.07107 - reflect (0.447214 -0.894427 0, 0 1 0) = 0.447214 0.894427 0 - reflect (0.447214 -0.894427 0, -1 0 0) = -0.447214 -0.894427 0 - faceforward (0 0 1, 0 -0.707107 -0.707107) = 0 0 1 - faceforward (0 0 1, 0 -0.707107 -0.707107, 0 0 -1) = 0 0 -1 - testing total-internal reflection: - refract (0.707107 -0.707107 0, 0 1 0, 1.42) = 0 0 0 - frensel: Kr= 1 Kt = 0 R = 0.707107 0.707107 0 T = 0 0 0 - testing regular refraction: - refract (-0.436436 -0.218218 -0.872872, 0.267261 0.534522 0.801784, 0.862069) = -0.415346 -0.266336 -0.869801 - --> verify refract(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - fresnel: Kr= 0.00557254 Kt = 0.739022 R = 0.0623479 0.779349 0.623479 T = -0.415346 -0.266336 -0.869801 - --> verify fresnel(): 1/1.16 = sin(18.0571)/sin(21.0731) => 0.862069 ?= 0.862068 - Varying: - hypot (1, 1) = 1.41421 - hypot (1, 1, 2) = 2.44949 - reflect (0.447214 -0.894427 0, 0.707107 0.707107 0) = 0.894427 -0.447214 0 - refract (0.801784 0.267261 -0.534522, 0 0 1, 0.75188) = 0.602845 0.200948 -0.772138 - --> verify refract(): 1/1.33 = sin(39.4519)/sin(57.6878) => 0.75188 ?= 0.75188 - fresnel() -> Kr= 0.0505776 Kt = 0.53673 R = 0.801784 0.267261 0.534522 T = 0.602845 0.200948 -0.772138 - --> verify fresnel(): 1/1.33 = sin(39.4519)/sin(57.6878) => 0.75188 ?= 0.75188 - diff --git a/testsuite/trig/ref/out.alt-icc.txt b/testsuite/trig/ref/out.alt-icc.txt deleted file mode 100644 index 264afb280d..0000000000 --- a/testsuite/trig/ref/out.alt-icc.txt +++ /dev/null @@ -1,141 +0,0 @@ -Compiled test.osl -> test.oso - cos (-3.14159) = -1 - sin (-3.14159) = 0 - sincos (-3.14159) = 0 -1 - tan (-3.14159) = -5.96046e-08 - acos (-3.14159) = 3.14159 - asin (-3.14159) = -1.5708 - atan (-3.14159) = -1.26262 - atan2 (-3.14159, -6.28319) = -2.67794 - degrees (-3.14159) = -180 - radians (-3.14159) = -0.0548311 - cos (-1.5708) = 2.38419e-07 - sin (-1.5708) = -1 - sincos (-1.5708) = -1 2.38419e-07 - tan (-1.5708) = 2.28773e+07 - acos (-1.5708) = 3.14159 - asin (-1.5708) = -1.5708 - atan (-1.5708) = -1.00389 - atan2 (-1.5708, -3.14159) = -2.67794 - degrees (-1.5708) = -90 - radians (-1.5708) = -0.0274156 - cos (-0.785398) = 0.707107 - sin (-0.785398) = -0.707107 - sincos (-0.785398) = -0.707107 0.707107 - tan (-0.785398) = -1 - acos (-0.785398) = 2.4741 - asin (-0.785398) = -0.903303 - atan (-0.785398) = -0.665772 - atan2 (-0.785398, -1.5708) = -2.67794 - degrees (-0.785398) = -45 - radians (-0.785398) = -0.0137078 - cos (0) = 1 - sin (0) = 0 - sincos (0) = 0 1 - tan (0) = 0 - acos (0) = 1.5708 - asin (0) = 0 - atan (0) = 0 - atan2 (0, 0) = 0 - degrees (0) = 0 - radians (0) = 0 - cos (0.785398) = 0.707107 - sin (0.785398) = 0.707107 - tan (0.785398) = 1 - acos (0.785398) = 0.667493 - asin (0.785398) = 0.903303 - atan (0.785398) = 0.665772 - atan2 (0.785398, 1.5708) = 0.46365 - degrees (0.785398) = 45 - radians (0.785398) = 0.0137078 - cos (1.5708) = 2.38419e-07 - sin (1.5708) = 1 - sincos (1.5708) = 1 2.38419e-07 - tan (1.5708) = -2.28773e+07 - acos (1.5708) = 0 - asin (1.5708) = 1.5708 - atan (1.5708) = 1.00389 - atan2 (1.5708, 3.14159) = 0.46365 - degrees (1.5708) = 90 - radians (1.5708) = 0.0274156 - cos (3.14159) = -1 - sin (3.14159) = 0 - sincos (3.14159) = 0 -1 - tan (3.14159) = 5.96046e-08 - acos (3.14159) = 0 - asin (3.14159) = 1.5708 - atan (3.14159) = 1.26262 - atan2 (3.14159, 6.28319) = 0.46365 - degrees (3.14159) = 180 - radians (3.14159) = 0.0548311 - cos (-3.14159 -3.14159 -3.14159) = -1 -1 -1 - sin (-3.14159 -3.14159 -3.14159) = 0 0 0 - sincos (-3.14159 -3.14159 -3.14159) = 0 0 0 -1 -1 -1 - tan (-3.14159 -3.14159 -3.14159) = -5.96046e-08 -5.96046e-08 -5.96046e-08 - acos (-3.14159 -3.14159 -3.14159) = 3.14159 3.14159 3.14159 - asin (-3.14159 -3.14159 -3.14159) = -1.5708 -1.5708 -1.5708 - atan (-3.14159 -3.14159 -3.14159) = -1.26262 -1.26262 -1.26262 - atan2 (-3.14159 -3.14159 -3.14159, -6.28319 -6.28319 -6.28319) = -2.67794 -2.67794 -2.67794 - degrees (-3.14159 -3.14159 -3.14159) = -180 -180 -180 - radians (-3.14159 -3.14159 -3.14159) = -0.0548311 -0.0548311 -0.0548311 - cos (-1.5708 -1.5708 -1.5708) = 2.38419e-07 2.38419e-07 2.38419e-07 - sin (-1.5708 -1.5708 -1.5708) = -1 -1 -1 - sincos (-1.5708 -1.5708 -1.5708) = -1 -1 -1 2.38419e-07 2.38419e-07 2.38419e-07 - tan (-1.5708 -1.5708 -1.5708) = 2.28773e+07 2.28773e+07 2.28773e+07 - acos (-1.5708 -1.5708 -1.5708) = 3.14159 3.14159 3.14159 - asin (-1.5708 -1.5708 -1.5708) = -1.5708 -1.5708 -1.5708 - atan (-1.5708 -1.5708 -1.5708) = -1.00389 -1.00389 -1.00389 - atan2 (-1.5708 -1.5708 -1.5708, -3.14159 -3.14159 -3.14159) = -2.67794 -2.67794 -2.67794 - degrees (-1.5708 -1.5708 -1.5708) = -90 -90 -90 - radians (-1.5708 -1.5708 -1.5708) = -0.0274156 -0.0274156 -0.0274156 - cos (-0.785398 -0.785398 -0.785398) = 0.707107 0.707107 0.707107 - sin (-0.785398 -0.785398 -0.785398) = -0.707107 -0.707107 -0.707107 - sincos (-0.785398 -0.785398 -0.785398) = -0.707107 -0.707107 -0.707107 0.707107 0.707107 0.707107 - tan (-0.785398 -0.785398 -0.785398) = -1 -1 -1 - acos (-0.785398 -0.785398 -0.785398) = 2.4741 2.4741 2.4741 - asin (-0.785398 -0.785398 -0.785398) = -0.903303 -0.903303 -0.903303 - atan (-0.785398 -0.785398 -0.785398) = -0.665772 -0.665772 -0.665772 - atan2 (-0.785398 -0.785398 -0.785398, -1.5708 -1.5708 -1.5708) = -2.67794 -2.67794 -2.67794 - degrees (-0.785398 -0.785398 -0.785398) = -45 -45 -45 - radians (-0.785398 -0.785398 -0.785398) = -0.0137078 -0.0137078 -0.0137078 - cos (0 0 0) = 1 1 1 - sin (0 0 0) = 0 0 0 - sincos (0 0 0) = 0 0 0 1 1 1 - tan (0 0 0) = 0 0 0 - acos (0 0 0) = 1.5708 1.5708 1.5708 - asin (0 0 0) = 0 0 0 - atan (0 0 0) = 0 0 0 - atan2 (0 0 0, 0 0 0) = 0 0 0 - degrees (0 0 0) = 0 0 0 - radians (0 0 0) = 0 0 0 - cos (0.785398 0.785398 0.785398) = 0.707107 0.707107 0.707107 - sin (0.785398 0.785398 0.785398) = 0.707107 0.707107 0.707107 - sincos (0.785398 0.785398 0.785398) = 0.707107 0.707107 0.707107 0.707107 0.707107 0.707107 - tan (0.785398 0.785398 0.785398) = 1 1 1 - acos (0.785398 0.785398 0.785398) = 0.667493 0.667493 0.667493 - asin (0.785398 0.785398 0.785398) = 0.903303 0.903303 0.903303 - atan (0.785398 0.785398 0.785398) = 0.665772 0.665772 0.665772 - atan2 (0.785398 0.785398 0.785398, 1.5708 1.5708 1.5708) = 0.46365 0.46365 0.46365 - degrees (0.785398 0.785398 0.785398) = 45 45 45 - radians (0.785398 0.785398 0.785398) = 0.0137078 0.0137078 0.0137078 - cos (1.5708 1.5708 1.5708) = 2.38419e-07 2.38419e-07 2.38419e-07 - sin (1.5708 1.5708 1.5708) = 1 1 1 - sincos (1.5708 1.5708 1.5708) = 1 1 1 2.38419e-07 2.38419e-07 2.38419e-07 - tan (1.5708 1.5708 1.5708) = -2.28773e+07 -2.28773e+07 -2.28773e+07 - acos (1.5708 1.5708 1.5708) = 0 0 0 - asin (1.5708 1.5708 1.5708) = 1.5708 1.5708 1.5708 - atan (1.5708 1.5708 1.5708) = 1.00389 1.00389 1.00389 - atan2 (1.5708 1.5708 1.5708, 3.14159 3.14159 3.14159) = 0.46365 0.46365 0.46365 - degrees (1.5708 1.5708 1.5708) = 90 90 90 - radians (1.5708 1.5708 1.5708) = 0.0274156 0.0274156 0.0274156 - cos (3.14159 3.14159 3.14159) = -1 -1 -1 - sin (3.14159 3.14159 3.14159) = 0 0 0 - sincos (3.14159 3.14159 3.14159) = 0 0 0 -1 -1 -1 - tan (3.14159 3.14159 3.14159) = 5.96046e-08 5.96046e-08 5.96046e-08 - acos (3.14159 3.14159 3.14159) = 0 0 0 - asin (3.14159 3.14159 3.14159) = 1.5708 1.5708 1.5708 - atan (3.14159 3.14159 3.14159) = 1.26262 1.26262 1.26262 - atan2 (3.14159 3.14159 3.14159, 6.28319 6.28319 6.28319) = 0.46365 0.46365 0.46365 - degrees (3.14159 3.14159 3.14159) = 180 180 180 - radians (3.14159 3.14159 3.14159) = 0.0548311 0.0548311 0.0548311 - diff --git a/testsuite/vector/ref/out-icc.txt b/testsuite/vector/ref/out-icc.txt deleted file mode 100644 index f026dc32f4..0000000000 --- a/testsuite/vector/ref/out-icc.txt +++ /dev/null @@ -1,33 +0,0 @@ -Compiled test.osl -> test.oso - parameter initialization test: vparam = 0.1 0.7 0.2 - parameter initialization test2: vparam2 = 0.1 0.1 0.1 - -Test vector functions - - vector (0.1) = 0.1 0.1 0.1 - vector (0.1, 0.2, 0.5) = 0.1 0.2 0.5 - V = vector (0 1 2) has components 0, 1, 2 - After V[1] = 8, V = (0 8 2) - After V[2] = 0.5, V = (0 8 0.5) - V = vector (0 8 0.5) has xyz components 0, 8, 0.5 - After V.x = 14.5, V = (14.5 8 0.5) - After V.y = 15.5, V = (14.5 15.5 0.5) - After V.z = 16.5, V = (14.5 15.5 16.5) - V = 0 8 0.5 - dot ((0 8 0.5), (0 8 0.5)) = 64.25 - dot ((0 8 0.5), (0 1 0)) = 8 - cross ((1 0 0), (0 1 0)) = 0 0 1 - length (0 1 0) = 1 - length (1 1 0) = 1.41421 - distance ((1 0 0), (0 1 0)) = 1.41421 - distance ((1 0 0), (1 1 0)) = 1 - distance ((1 0 0), (0 1 0), (1 0 0)) = 0 - distance ((1 0 0), (0 1 0), (0 1 0)) = 0 - distance ((1 0 0), (0 1 0), (0.5 0.5 0)) = 0 - distance ((1 0 0), (0 1 0), (0.5 0.5 0.5)) = 0.5 - distance ((1 0 0), (0 1 0), (2 1 0)) = 1.41421 - normalize (1 1 0) = 0.707107 0.707107 0 - normalize (0 8 0.5) = 0 0.998053 0.0623783 - normalize (0 0 0) = 0 0 0 - rotate(1 0 0, PI/2, (0,0,0), (0,0,1)) = 2.38419e-07 1 0 -