diff --git a/docs/src/interactive.ipynb b/docs/src/interactive.ipynb index 343ebc89a..0422141b8 100644 --- a/docs/src/interactive.ipynb +++ b/docs/src/interactive.ipynb @@ -2,80 +2,26 @@ "cells": [ { "cell_type": "markdown", - "metadata": {}, "source": [ "An example generating sparse code with Finch, make some changes and give it a try!\n", "\n", "A note to visitors using Binder: it may take a minute or\n", "two to compile the first kernel, perhaps enjoy a nice little coffee break ^.^" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, "outputs": [ { + "output_type": "execute_result", "data": { - "text/plain": [ - "quote\n", - " y = ex.body.body.lhs.tns.bind\n", - " A_lvl = (ex.body.body.rhs.args[1]).tns.bind.lvl\n", - " A_lvl_2 = A_lvl.lvl\n", - " A_lvl_ptr = A_lvl_2.ptr\n", - " A_lvl_idx = A_lvl_2.idx\n", - " A_lvl_2_val = A_lvl_2.lvl.val\n", - " x = (ex.body.body.rhs.args[2]).tns.bind\n", - " sugar_1 = size(y)\n", - " y_mode1_stop = sugar_1[1]\n", - " A_lvl_2.shape == y_mode1_stop || throw(DimensionMismatch(\"mismatched dimension limits ($(A_lvl_2.shape) != $(y_mode1_stop))\"))\n", - " sugar_2 = size(x)\n", - " x_mode1_stop = sugar_2[1]\n", - " x_mode1_stop == A_lvl.shape || throw(DimensionMismatch(\"mismatched dimension limits ($(x_mode1_stop) != $(A_lvl.shape))\"))\n", - " for j_4 = 1:x_mode1_stop\n", - " sugar_3 = size(x)\n", - " x_mode1_stop = sugar_3[1]\n", - " val = x[j_4]\n", - " A_lvl_q = (1 - 1) * A_lvl.shape + j_4\n", - " A_lvl_2_q = A_lvl_ptr[A_lvl_q]\n", - " A_lvl_2_q_stop = A_lvl_ptr[A_lvl_q + 1]\n", - " if A_lvl_2_q < A_lvl_2_q_stop\n", - " A_lvl_2_i1 = A_lvl_idx[A_lvl_2_q_stop - 1]\n", - " else\n", - " A_lvl_2_i1 = 0\n", - " end\n", - " phase_stop = min(A_lvl_2.shape, A_lvl_2_i1)\n", - " if phase_stop >= 1\n", - " if A_lvl_idx[A_lvl_2_q] < 1\n", - " A_lvl_2_q = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q, A_lvl_2_q_stop - 1)\n", - " end\n", - " while true\n", - " A_lvl_2_i = A_lvl_idx[A_lvl_2_q]\n", - " if A_lvl_2_i < phase_stop\n", - " A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]\n", - " y[A_lvl_2_i] = val * A_lvl_3_val + y[A_lvl_2_i]\n", - " A_lvl_2_q += 1\n", - " else\n", - " phase_stop_3 = min(A_lvl_2_i, phase_stop)\n", - " if A_lvl_2_i == phase_stop_3\n", - " A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]\n", - " y[phase_stop_3] = val * A_lvl_3_val + y[phase_stop_3]\n", - " A_lvl_2_q += 1\n", - " end\n", - " break\n", - " end\n", - " end\n", - " end\n", - " end\n", - " (y = y,)\n", - "end" - ] + "text/plain": "quote\n y = ex.body.body.lhs.tns.bind\n A_lvl = (ex.body.body.rhs.args[1]).tns.bind.lvl\n A_lvl_2 = A_lvl.lvl\n A_lvl_ptr = A_lvl_2.ptr\n A_lvl_idx = A_lvl_2.idx\n A_lvl_2_val = A_lvl_2.lvl.val\n x = (ex.body.body.rhs.args[2]).tns.bind\n sugar_1 = size(y)\n y_mode1_stop = sugar_1[1]\n A_lvl_2.shape == y_mode1_stop || throw(DimensionMismatch(\"mismatched dimension limits ($(A_lvl_2.shape) != $(y_mode1_stop))\"))\n sugar_2 = size(x)\n x_mode1_stop = sugar_2[1]\n x_mode1_stop == A_lvl.shape || throw(DimensionMismatch(\"mismatched dimension limits ($(x_mode1_stop) != $(A_lvl.shape))\"))\n for j_4 = 1:x_mode1_stop\n sugar_3 = size(x)\n x_mode1_stop = sugar_3[1]\n val = x[j_4]\n A_lvl_q = (1 - 1) * A_lvl.shape + j_4\n A_lvl_2_q = A_lvl_ptr[A_lvl_q]\n A_lvl_2_q_stop = A_lvl_ptr[A_lvl_q + 1]\n if A_lvl_2_q < A_lvl_2_q_stop\n A_lvl_2_i1 = A_lvl_idx[A_lvl_2_q_stop - 1]\n else\n A_lvl_2_i1 = 0\n end\n phase_stop = min(A_lvl_2.shape, A_lvl_2_i1)\n if phase_stop >= 1\n if A_lvl_idx[A_lvl_2_q] < 1\n A_lvl_2_q = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q, A_lvl_2_q_stop - 1)\n end\n while true\n A_lvl_2_i = A_lvl_idx[A_lvl_2_q]\n if A_lvl_2_i < phase_stop\n A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]\n y[A_lvl_2_i] = val * A_lvl_3_val + y[A_lvl_2_i]\n A_lvl_2_q += 1\n else\n phase_stop_3 = min(phase_stop, A_lvl_2_i)\n if A_lvl_2_i == phase_stop_3\n A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]\n y[phase_stop_3] = val * A_lvl_3_val + y[phase_stop_3]\n A_lvl_2_q += 1\n end\n break\n end\n end\n end\n end\n (y = y,)\nend" }, - "execution_count": 1, "metadata": {}, - "output_type": "execute_result" + "execution_count": 1 } ], + "cell_type": "code", "source": [ "using Finch\n", "\n", @@ -92,22 +38,24 @@ " y[i] += A[i, j] * x[j]\n", " end\n", "end" - ] + ], + "metadata": {}, + "execution_count": 1 } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.6.7", - "language": "julia", - "name": "julia-1.6" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.6.7" + }, + "kernelspec": { + "name": "julia-1.6", + "display_name": "Julia 1.6.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 + "nbformat": 4 } diff --git a/docs/src/internals.md b/docs/src/internals.md index 88a4803c2..ea13c89f0 100644 --- a/docs/src/internals.md +++ b/docs/src/internals.md @@ -211,7 +211,7 @@ quote s_val = A_lvl_2_val + s_val A_lvl_q += 1 else - phase_stop_3 = min(A_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_i) if A_lvl_i == phase_stop_3 A_lvl_2_val = A_lvl_val[A_lvl_q] s_val = s_val + A_lvl_2_val diff --git a/docs/src/performance.md b/docs/src/performance.md index 1f7dd998a..e3ffd0e1f 100644 --- a/docs/src/performance.md +++ b/docs/src/performance.md @@ -65,7 +65,7 @@ quote s_val = A_lvl_3_val + s_val A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] s_val = s_val + A_lvl_3_val @@ -127,7 +127,7 @@ quote s_val = A_lvl_3_val + s_val A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] s_val = s_val + A_lvl_3_val @@ -278,7 +278,7 @@ quote A_lvl_2_q += 1 i = A_lvl_2_i + 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 for i_8 = i:phase_stop_3 - 1 val = B[i_8, j_4] @@ -305,9 +305,9 @@ quote end end end - phase_start_3 = max(1, 1 + A_lvl_2_i1) - if B_mode1_stop >= phase_start_3 - for i_12 = phase_start_3:B_mode1_stop + phase_start = max(1, 1 + A_lvl_2_i1) + if B_mode1_stop >= phase_start + for i_12 = phase_start:B_mode1_stop sugar_8 = size(B) B_mode1_stop = sugar_8[1] B_mode2_stop = sugar_8[2] diff --git a/src/dimensions.jl b/src/dimensions.jl index 2ac5f2602..d06249e4b 100644 --- a/src/dimensions.jl +++ b/src/dimensions.jl @@ -232,8 +232,8 @@ virtual_intersect(ctx, a::Dimensionless, b::Dimensionless) = b function virtual_intersect(ctx, a::Extent, b::Extent) Extent( - start = @f(max($(getstart(a)), $(getstart(b)))), - stop = @f(min($(getstop(a)), $(getstop(b)))) + start = simplify(@f(max($(getstart(a)), $(getstart(b)))), ctx), + stop = simplify(@f(min($(getstop(a)), $(getstop(b)))), ctx) ) end @@ -244,8 +244,8 @@ virtual_union(ctx, a::Dimensionless, b::Dimensionless) = b #virtual_union(ctx, a, b) = virtual_union(ctx, promote(a, b)...) function virtual_union(ctx, a::Extent, b::Extent) Extent( - start = @f(min($(getstart(a)), $(getstart(b)))), - stop = @f(max($(getstop(a)), $(getstop(b)))) + start = simplify(@f(min($(getstart(a)), $(getstart(b)))), ctx), + stop = simplify(@f(max($(getstop(a)), $(getstop(b)))), ctx) ) end @@ -299,14 +299,14 @@ is_continuous_extent(x::ParallelDimension) = is_continuous_extent(x.dim) function virtual_intersect(ctx, a::ContinuousExtent, b::ContinuousExtent) ContinuousExtent( - start = @f(max($(getstart(a)), $(getstart(b)))), - stop = @f(min($(getstop(a)), $(getstop(b)))) + start = simplify(@f(max($(getstart(a)), $(getstart(b)))), ctx), + stop = simplify(@f(min($(getstop(a)), $(getstop(b)))), ctx) ) end function virtual_union(ctx, a::ContinuousExtent, b::ContinuousExtent) ContinuousExtent( - start = @f(min($(getstart(a)), $(getstart(b)))), - stop = @f(max($(getstop(a)), $(getstop(b)))) + start = simplify(@f(min($(getstart(a)), $(getstart(b)))), ctx), + stop = simplify(@f(max($(getstop(a)), $(getstop(b)))), ctx) ) end diff --git a/src/util/limits.jl b/src/util/limits.jl index 337b725f0..291b33cc4 100644 --- a/src/util/limits.jl +++ b/src/util/limits.jl @@ -166,32 +166,30 @@ Base.:(+)(x::Limit)::Limit = x Base.:(-)(x::Limit)::Limit = limit(-x.val, -x.sign) #Crazy julia multiple dispatch stuff don't worry about it -limit_types = [Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, BigInt, Float32, Float64] -for S in limit_types - @eval begin - @inline Base.promote_rule(::Type{Limit{T}}, ::Type{$S}) where {T} = Limit{promote_type(T, $S)} - Base.convert(::Type{Limit{T}}, i::$S) where {T} = limit(convert(T, i)) - Limit(i::$S) = Limit{$S}(i, tiny_zero()) - (::Type{$S})(i::Limit{T}) where {T} = convert($S, i.val) - Base.convert(::Type{$S}, i::Limit) = convert($S, i.val) - Base.:(+)(x::Limit, y::$S)::Limit = x + limit(y) - Base.:(+)(x::$S, y::Limit)::Limit = limit(x) + y - Base.:(-)(x::Limit, y::$S)::Limit = x - limit(y) - Base.:(-)(x::$S, y::Limit)::Limit = limit(x) - y - Base.:(<)(x::Limit, y::$S) = x < limit(y) - Base.:(<)(x::$S, y::Limit) = limit(x) < y - Base.:(<=)(x::Limit, y::$S) = x <= limit(y) - Base.:(<=)(x::$S, y::Limit) = limit(x) <= y - Base.:(==)(x::Limit, y::$S) = x == limit(y) - Base.:(==)(x::$S, y::Limit) = limit(x) == y - Base.isless(x::Limit, y::$S) = x < limit(y) - Base.isless(x::$S, y::Limit) = limit(x) < y - Base.max(x::$S, y::Limit)::Limit = max(limit(x), y) - Base.max(x::Limit, y::$S)::Limit = max(x, limit(y)) - Base.min(x::$S, y::Limit)::Limit = min(limit(x), y) - Base.min(x::Limit, y::$S)::Limit = min(x, limit(y)) - end -end +Base.promote_rule(::Type{Limit{T}}, ::Type{S}) where {T, S<:Real} = Limit{promote_type(T, S)} +Base.convert(::Type{Limit{T}}, i::Real) where {T} = limit(convert(T, i)) +Limit(i::S) where {S<:Real} = Limit{S}(i, tiny_zero()) +(::Type{S})(i::Limit{T}) where {T, S<:Real} = convert(S, i.val) +Base.convert(::Type{S}, i::Limit) where {S<:Real} = convert(S, i.val) +Base.:(+)(x::Limit, y::Real)::Limit = x + limit(y) +Base.:(+)(x::Real, y::Limit)::Limit = limit(x) + y +Base.:(-)(x::Limit, y::Real)::Limit = x - limit(y) +Base.:(-)(x::Real, y::Limit)::Limit = limit(x) - y +Base.:(<)(x::Limit, y::Real) = x < limit(y) +Base.:(<)(x::Real, y::Limit) = limit(x) < y +Base.:(<=)(x::Limit, y::Real) = x <= limit(y) +Base.:(<=)(x::Real, y::Limit) = limit(x) <= y +Base.:(==)(x::Limit, y::Real) = x == limit(y) +Base.:(==)(x::Real, y::Limit) = limit(x) == y +Base.isless(x::Limit, y::Real) = x < limit(y) +Base.isless(x::Real, y::Limit) = limit(x) < y +Base.max(x::Real, y::Limit)::Limit = max(limit(x), y) +Base.max(x::Limit, y::Real)::Limit = max(x, limit(y)) +Base.min(x::Real, y::Limit)::Limit = min(limit(x), y) +Base.min(x::Limit, y::Real)::Limit = min(x, limit(y)) + + + Base.promote_rule(::Type{Limit{T}}, ::Type{Limit{S}}) where {T, S} = Limit(promote_type(T, S)) Base.convert(::Type{Limit{T}}, i::Limit) where {T} = Limit{T}(convert(T, i.val), i.sign) diff --git a/test/reference32/concat_offset_permit.jl b/test/reference32/concat_offset_permit.jl index 9babf0058..35d6b5885 100644 --- a/test/reference32/concat_offset_permit.jl +++ b/test/reference32/concat_offset_permit.jl @@ -60,7 +60,7 @@ begin C_lvl_qos += 1 A_lvl_q += 1 else - phase_stop_5 = min(A_lvl_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_i) if A_lvl_i == phase_stop_5 A_lvl_2_val = A_lvl_val[A_lvl_q] if C_lvl_qos > C_lvl_qos_stop @@ -79,10 +79,10 @@ begin end end end - phase_start_6 = max(1, 1 + A_lvl.shape) + phase_start_2 = max(1, 1 + A_lvl.shape) phase_stop_7 = min(C_lvl.shape, 10) - if phase_stop_7 >= phase_start_6 - for i_14 = phase_start_6:phase_stop_7 + if phase_stop_7 >= phase_start_2 + for i_14 = phase_start_2:phase_stop_7 if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) @@ -204,11 +204,11 @@ begin i = phase_stop_15 + 1 end end - phase_start_16 = max(11 + B_lvl_i1, 11) + phase_start_6 = max(11, 11 + B_lvl_i1) phase_stop_17 = min(A_lvl_i1, phase_stop_13) - if phase_stop_17 >= phase_start_16 - if A_lvl_idx[A_lvl_q] < phase_start_16 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_16, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_17 >= phase_start_6 + if A_lvl_idx[A_lvl_q] < phase_start_6 + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_6, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -244,9 +244,9 @@ begin end end end - phase_start_19 = max(11, 1 + A_lvl.shape) + phase_start_8 = max(11, 1 + A_lvl.shape) phase_stop_21 = min(C_lvl.shape, 10 + B_lvl.shape) - if phase_stop_21 >= phase_start_19 + if phase_stop_21 >= phase_start_8 B_lvl_q = B_lvl_ptr[1] B_lvl_q_stop = B_lvl_ptr[1 + 1] if B_lvl_q < B_lvl_q_stop @@ -255,9 +255,9 @@ begin B_lvl_i1 = 0 end phase_stop_22 = min(10 + B_lvl_i1, phase_stop_21) - if phase_stop_22 >= phase_start_19 - if B_lvl_idx[B_lvl_q] < phase_start_19 + -10 - B_lvl_q = Finch.scansearch(B_lvl_idx, phase_start_19 + -10, B_lvl_q, B_lvl_q_stop - 1) + if phase_stop_22 >= phase_start_8 + if B_lvl_idx[B_lvl_q] < phase_start_8 + -10 + B_lvl_q = Finch.scansearch(B_lvl_idx, phase_start_8 + -10, B_lvl_q, B_lvl_q_stop - 1) end while true B_lvl_i = B_lvl_idx[B_lvl_q] @@ -294,10 +294,10 @@ begin end end end - phase_start_24 = max(1, 11 + B_lvl.shape) + phase_start_12 = max(1, 11 + B_lvl.shape) phase_stop_26 = min(C_lvl.shape, 0) - if phase_stop_26 >= phase_start_24 - for i_39 = phase_start_24:phase_stop_26 + if phase_stop_26 >= phase_start_12 + for i_39 = phase_start_12:phase_stop_26 if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) @@ -309,9 +309,9 @@ begin C_lvl_qos += 1 end end - phase_start_25 = max(1, 11 + B_lvl.shape) + phase_start_13 = max(1, 11 + B_lvl.shape) phase_stop_27 = min(C_lvl.shape, A_lvl.shape) - if phase_stop_27 >= phase_start_25 + if phase_stop_27 >= phase_start_13 A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -320,9 +320,9 @@ begin A_lvl_i1 = 0 end phase_stop_28 = min(A_lvl_i1, phase_stop_27) - if phase_stop_28 >= phase_start_25 - if A_lvl_idx[A_lvl_q] < phase_start_25 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_25, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_28 >= phase_start_13 + if A_lvl_idx[A_lvl_q] < phase_start_13 + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_13, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -358,10 +358,9 @@ begin end end end - phase_start_29 = max(1, 1 + A_lvl.shape, 11 + B_lvl.shape) - phase_stop_32 = C_lvl.shape - if phase_stop_32 >= phase_start_29 - for i_47 = phase_start_29:phase_stop_32 + phase_start_16 = max(1, 1 + A_lvl.shape, 11 + B_lvl.shape) + if C_lvl.shape >= phase_start_16 + for i_47 = phase_start_16:C_lvl.shape if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) diff --git a/test/reference32/continuous_2d_intersect.txt b/test/reference32/continuous_2d_intersect.txt index f41c5a5c4..9e4ecb138 100644 --- a/test/reference32/continuous_2d_intersect.txt +++ b/test/reference32/continuous_2d_intersect.txt @@ -57,7 +57,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -67,88 +67,92 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(y_lvl_2_i_stop_2, phase_stop_7, x_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_8 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = z_lvl_2_val[z_lvl_2_qos] + x_lvl_3_val_2 * y_lvl_3_val_2 + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_6 + z_lvl_right_2[z_lvl_2_qos] = phase_stop_8 + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) end - z_lvl_2_val[z_lvl_2_qos] = z_lvl_2_val[z_lvl_2_qos] + x_lvl_3_val_2 * y_lvl_3_val_2 - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_12 - z_lvl_right_2[z_lvl_2_qos] = phase_stop_8 - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) + end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 - end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end z_lvl_ptr[1 + 1] = (z_lvl_qos - 0) - 1 diff --git a/test/reference32/continuous_2d_intersect_counting.txt b/test/reference32/continuous_2d_intersect_counting.txt index b95aa600b..62895555c 100644 --- a/test/reference32/continuous_2d_intersect_counting.txt +++ b/test/reference32/continuous_2d_intersect_counting.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,65 +51,69 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - cond = -phase_start_6 + phase_stop_2 == 0 - if cond - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + cond = -phase_start_3 + phase_stop_2 == 0 + if cond + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(y_lvl_2_i_stop_2, phase_stop_7, x_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - cond_2 = -phase_start_12 + phase_stop_8 == 0 - if cond_2 - s_val = s_val + x_lvl_3_val_2 * y_lvl_3_val_2 + phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_8 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + cond_2 = -phase_start_6 + phase_stop_8 == 0 + if cond_2 + s_val = s_val + x_lvl_3_val_2 * y_lvl_3_val_2 + end + end + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) end end - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int32}(s_val),) diff --git a/test/reference32/continuous_2d_intersect_lebesgue.txt b/test/reference32/continuous_2d_intersect_lebesgue.txt index a83060161..a5f2ac329 100644 --- a/test/reference32/continuous_2d_intersect_lebesgue.txt +++ b/test/reference32/continuous_2d_intersect_lebesgue.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,59 +51,63 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(x_lvl_2_i_stop_2, phase_stop_7, y_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, y_lvl_2_i_start_2, x_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * drop_eps(-phase_start_12 + phase_stop_8) * y_lvl_3_val_2 * x_lvl_3_val_2 + phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + phase_stop_8 = min(y_lvl_2_i_stop_2, x_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, x_lvl_2_i_start_2, y_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * drop_eps(-phase_start_6 + phase_stop_8) * y_lvl_3_val_2 * x_lvl_3_val_2 + end + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) + end end - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int32}(s_val),) diff --git a/test/reference32/continuous_2d_itvl_sum_rle.txt b/test/reference32/continuous_2d_itvl_sum_rle.txt index 4b8e82ada..24f98cec5 100644 --- a/test/reference32/continuous_2d_itvl_sum_rle.txt +++ b/test/reference32/continuous_2d_itvl_sum_rle.txt @@ -50,7 +50,7 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_3 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) + phase_stop_3 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) if phase_stop_3 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -60,27 +60,29 @@ quote x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end while j <= phase_stop_3 + j_start_2 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_3 = j - phase_stop_4 = min(x1_lvl_2_i_stop, phase_stop_3, y_lvl_i_stop) - phase_start_7 = max(phase_start_3, y_lvl_i_start, x1_lvl_2_i_start) - if phase_stop_4 >= phase_start_7 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] - s2_val = s2_val + drop_eps(-phase_start_7 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + phase_stop_4 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_3) + if phase_stop_4 >= j + phase_start_3 = max(j_start_2, x1_lvl_2_i_start, y_lvl_i_start) + if phase_stop_4 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] + s2_val = s2_val + drop_eps(-phase_start_3 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_4 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop + j = phase_stop_4 + limit(0+ϵ) end - y_lvl_q += phase_stop_4 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop - j = phase_stop_4 + limit(0+ϵ) end end x1_lvl_q += 1 else - phase_stop_12 = min(x1_lvl_i, phase_stop) - if x1_lvl_i == phase_stop_12 + phase_stop_11 = min(phase_stop, x1_lvl_i) + if x1_lvl_i == phase_stop_11 y_lvl_q = y_lvl_ptr[1] y_lvl_q_stop = y_lvl_ptr[1 + 1] if y_lvl_q < y_lvl_q_stop @@ -95,8 +97,8 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_13 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) - if phase_stop_13 >= limit(1.0) + phase_stop_12 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) + if phase_stop_12 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) y_lvl_q = Finch.scansearch(y_lvl_right, limit(1.0), y_lvl_q, y_lvl_q_stop - 1) @@ -104,22 +106,24 @@ quote if x1_lvl_right[x1_lvl_2_q] < limit(1.0) x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end - while j <= phase_stop_13 + while j <= phase_stop_12 + j_start_5 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_13 = j - phase_stop_14 = min(x1_lvl_2_i_stop, y_lvl_i_stop, phase_stop_13) - phase_start_17 = max(y_lvl_i_start, x1_lvl_2_i_start, phase_start_13) - if phase_stop_14 >= phase_start_17 - y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] - s2_val = s2_val + drop_eps(-phase_start_17 + phase_stop_14) * x1_lvl_3_val_4 * y_lvl_2_val_4 + phase_stop_13 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_12) + if phase_stop_13 >= j + phase_start_9 = max(x1_lvl_2_i_start, y_lvl_i_start, j_start_5) + if phase_stop_13 >= phase_start_9 + y_lvl_2_val_4 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] + s2_val = s2_val + drop_eps(-phase_start_9 + phase_stop_13) * x1_lvl_3_val_4 * y_lvl_2_val_4 + end + y_lvl_q += phase_stop_13 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_13 == x1_lvl_2_i_stop + j = phase_stop_13 + limit(0+ϵ) end - y_lvl_q += phase_stop_14 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_14 == x1_lvl_2_i_stop - j = phase_stop_14 + limit(0+ϵ) end end x1_lvl_q += 1 diff --git a/test/reference32/continuous_2d_itvl_sum_sl.txt b/test/reference32/continuous_2d_itvl_sum_sl.txt index 08c180257..51c19b1d7 100644 --- a/test/reference32/continuous_2d_itvl_sum_sl.txt +++ b/test/reference32/continuous_2d_itvl_sum_sl.txt @@ -50,7 +50,7 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_3 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) + phase_stop_3 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) if phase_stop_3 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -60,27 +60,29 @@ quote x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end while j <= phase_stop_3 + j_start_2 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_3 = j - phase_stop_4 = min(x1_lvl_2_i_stop, phase_stop_3, y_lvl_i_stop) - phase_start_7 = max(phase_start_3, y_lvl_i_start, x1_lvl_2_i_start) - if phase_stop_4 >= phase_start_7 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] - s1_val = s1_val + drop_eps(-phase_start_7 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + phase_stop_4 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_3) + if phase_stop_4 >= j + phase_start_3 = max(j_start_2, x1_lvl_2_i_start, y_lvl_i_start) + if phase_stop_4 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] + s1_val = s1_val + drop_eps(-phase_start_3 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_4 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop + j = phase_stop_4 + limit(0+ϵ) end - y_lvl_q += phase_stop_4 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop - j = phase_stop_4 + limit(0+ϵ) end end x1_lvl_q += 1 else - phase_stop_12 = min(x1_lvl_i, phase_stop) - if x1_lvl_i == phase_stop_12 + phase_stop_11 = min(phase_stop, x1_lvl_i) + if x1_lvl_i == phase_stop_11 y_lvl_q = y_lvl_ptr[1] y_lvl_q_stop = y_lvl_ptr[1 + 1] if y_lvl_q < y_lvl_q_stop @@ -95,8 +97,8 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_13 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) - if phase_stop_13 >= limit(1.0) + phase_stop_12 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) + if phase_stop_12 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) y_lvl_q = Finch.scansearch(y_lvl_right, limit(1.0), y_lvl_q, y_lvl_q_stop - 1) @@ -104,22 +106,24 @@ quote if x1_lvl_right[x1_lvl_2_q] < limit(1.0) x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end - while j <= phase_stop_13 + while j <= phase_stop_12 + j_start_5 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_13 = j - phase_stop_14 = min(x1_lvl_2_i_stop, y_lvl_i_stop, phase_stop_13) - phase_start_17 = max(y_lvl_i_start, x1_lvl_2_i_start, phase_start_13) - if phase_stop_14 >= phase_start_17 - y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] - s1_val = s1_val + drop_eps(-phase_start_17 + phase_stop_14) * x1_lvl_3_val_4 * y_lvl_2_val_4 + phase_stop_13 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_12) + if phase_stop_13 >= j + phase_start_9 = max(x1_lvl_2_i_start, y_lvl_i_start, j_start_5) + if phase_stop_13 >= phase_start_9 + y_lvl_2_val_4 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] + s1_val = s1_val + drop_eps(-phase_start_9 + phase_stop_13) * x1_lvl_3_val_4 * y_lvl_2_val_4 + end + y_lvl_q += phase_stop_13 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_13 == x1_lvl_2_i_stop + j = phase_stop_13 + limit(0+ϵ) end - y_lvl_q += phase_stop_14 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_14 == x1_lvl_2_i_stop - j = phase_stop_14 + limit(0+ϵ) end end x1_lvl_q += 1 diff --git a/test/reference32/continuous_2d_union.txt b/test/reference32/continuous_2d_union.txt index 5f65c4762..9eed05c9b 100644 --- a/test/reference32/continuous_2d_union.txt +++ b/test/reference32/continuous_2d_union.txt @@ -57,7 +57,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -67,422 +67,422 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + z_lvldirty = false + z_lvl_2_qos = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 + end + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val + z_lvl_2_val[z_lvl_2_qos] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_2 + z_lvl_right_2[z_lvl_2_qos] = y_lvl_2_i_stop + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val + z_lvl_2_val[z_lvl_2_qos] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_7 - z_lvl_right_2[z_lvl_2_qos] = y_lvl_2_i_stop - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_3 + z_lvl_right_2[z_lvl_2_qos] = phase_stop_9 + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_10 - z_lvl_right_2[z_lvl_2_qos] = phase_stop_9 - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start + z_lvl_right[z_lvl_qos] = phase_stop_4 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_4 - z_lvl_right[z_lvl_qos] = phase_stop_4 - z_lvl_qos += 1 - end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos_2 = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos_2 = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - if z_lvl_2_qos_2 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + if z_lvl_2_qos_2 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val + z_lvl_2_val[z_lvl_2_qos_2] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_2] = phase_start_6 + z_lvl_right_2[z_lvl_2_qos_2] = x_lvl_2_i_stop + z_lvl_2_qos_2 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val + z_lvl_2_val[z_lvl_2_qos_2] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_2] = phase_start_15 - z_lvl_right_2[z_lvl_2_qos_2] = x_lvl_2_i_stop - z_lvl_2_qos_2 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - if z_lvl_2_qos_2 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + if z_lvl_2_qos_2 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos_2] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_2] = phase_start_7 + z_lvl_right_2[z_lvl_2_qos_2] = phase_stop_17 + z_lvl_2_qos_2 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos_2] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_2] = phase_start_18 - z_lvl_right_2[z_lvl_2_qos_2] = phase_stop_18 - z_lvl_2_qos_2 += 1 - z_lvl_2_prev_pos = z_lvl_qos + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_2 - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos_2 - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_5 + z_lvl_right[z_lvl_qos] = phase_stop_12 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_2 - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos_2 - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_12 - z_lvl_right[z_lvl_qos] = phase_stop_13 - z_lvl_qos += 1 - end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos_3 = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos_3 = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) - end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_24 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_26 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) - end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_25 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_27 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_10 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_24 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_11 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_25 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_4 + z_lvl_2_val[z_lvl_2_qos_3] + x_lvl_3_val_4 + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_12 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_22 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_4 + z_lvl_2_val[z_lvl_2_qos_3] + x_lvl_3_val_4 - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_26 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_24 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) - end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_14 + z_lvl_right_2[z_lvl_2_qos_3] = y_lvl_2_i_stop_2 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_29 - z_lvl_right_2[z_lvl_2_qos_3] = y_lvl_2_i_stop_2 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_15 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_31 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_32 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_33 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_17 + z_lvl_right_2[z_lvl_2_qos_3] = x_lvl_2_i_stop_2 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_35 - z_lvl_right_2[z_lvl_2_qos_3] = x_lvl_2_i_stop_2 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_18 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_38 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_38 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_40 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_3 - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos_3 - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_9 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_3 - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos_3 - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_20 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 - end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -500,8 +500,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -510,9 +510,9 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] if z_lvl_2_qos_4 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -523,7 +523,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_4] = x_lvl_3_val_7 + z_lvl_2_val[z_lvl_2_qos_4] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_4] = phase_start_45 + z_lvl_left_2[z_lvl_2_qos_4] = phase_start_22 z_lvl_right_2[z_lvl_2_qos_4] = x_lvl_2_i_stop_3 z_lvl_2_qos_4 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -531,10 +531,9 @@ quote x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] if z_lvl_2_qos_4 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -545,13 +544,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_4] = x_lvl_3_val_8 + z_lvl_2_val[z_lvl_2_qos_4] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_4] = phase_start_48 - z_lvl_right_2[z_lvl_2_qos_4] = phase_stop_52 + z_lvl_left_2[z_lvl_2_qos_4] = phase_start_23 + z_lvl_right_2[z_lvl_2_qos_4] = phase_stop_49 z_lvl_2_qos_4 += 1 z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -559,7 +558,7 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_4 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_4 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_42 + z_lvl_left[z_lvl_qos] = phase_start_21 z_lvl_right[z_lvl_qos] = x_lvl_i_stop z_lvl_qos += 1 end @@ -567,10 +566,9 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -588,8 +586,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -598,9 +596,9 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] if z_lvl_2_qos_5 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -611,7 +609,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_5] = x_lvl_3_val_9 + z_lvl_2_val[z_lvl_2_qos_5] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_5] = phase_start_55 + z_lvl_left_2[z_lvl_2_qos_5] = phase_start_26 z_lvl_right_2[z_lvl_2_qos_5] = x_lvl_2_i_stop_4 z_lvl_2_qos_5 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -619,10 +617,9 @@ quote x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] if z_lvl_2_qos_5 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -633,13 +630,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_5] = x_lvl_3_val_10 + z_lvl_2_val[z_lvl_2_qos_5] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_5] = phase_start_58 - z_lvl_right_2[z_lvl_2_qos_5] = phase_stop_63 + z_lvl_left_2[z_lvl_2_qos_5] = phase_start_27 + z_lvl_right_2[z_lvl_2_qos_5] = phase_stop_59 z_lvl_2_qos_5 += 1 z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end @@ -647,31 +644,31 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_5 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_5 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_52 - z_lvl_right[z_lvl_qos] = phase_stop_56 + z_lvl_left[z_lvl_qos] = phase_start_25 + z_lvl_right[z_lvl_qos] = phase_stop_52 z_lvl_qos += 1 end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -689,8 +686,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -699,9 +696,9 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] if z_lvl_2_qos_6 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -712,7 +709,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_6] = y_lvl_3_val_7 + z_lvl_2_val[z_lvl_2_qos_6] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_6] = phase_start_65 + z_lvl_left_2[z_lvl_2_qos_6] = phase_start_31 z_lvl_right_2[z_lvl_2_qos_6] = y_lvl_2_i_stop_3 z_lvl_2_qos_6 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -720,10 +717,9 @@ quote y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] if z_lvl_2_qos_6 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -734,13 +730,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_6] = y_lvl_3_val_8 + z_lvl_2_val[z_lvl_2_qos_6] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_6] = phase_start_68 - z_lvl_right_2[z_lvl_2_qos_6] = phase_stop_75 + z_lvl_left_2[z_lvl_2_qos_6] = phase_start_32 + z_lvl_right_2[z_lvl_2_qos_6] = phase_stop_70 z_lvl_2_qos_6 += 1 z_lvl_2_prev_pos = z_lvl_qos end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -748,7 +744,7 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_6 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_6 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_62 + z_lvl_left[z_lvl_qos] = phase_start_30 z_lvl_right[z_lvl_qos] = y_lvl_i_stop z_lvl_qos += 1 end @@ -756,10 +752,9 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -777,8 +772,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -787,9 +782,9 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] if z_lvl_2_qos_7 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -800,7 +795,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_7] = y_lvl_3_val_9 + z_lvl_2_val[z_lvl_2_qos_7] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_7] = phase_start_75 + z_lvl_left_2[z_lvl_2_qos_7] = phase_start_35 z_lvl_right_2[z_lvl_2_qos_7] = y_lvl_2_i_stop_4 z_lvl_2_qos_7 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -808,10 +803,9 @@ quote y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] if z_lvl_2_qos_7 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -822,13 +816,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_7] = y_lvl_3_val_10 + z_lvl_2_val[z_lvl_2_qos_7] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_7] = phase_start_78 - z_lvl_right_2[z_lvl_2_qos_7] = phase_stop_86 + z_lvl_left_2[z_lvl_2_qos_7] = phase_start_36 + z_lvl_right_2[z_lvl_2_qos_7] = phase_stop_80 z_lvl_2_qos_7 += 1 z_lvl_2_prev_pos = z_lvl_qos end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end @@ -836,13 +830,13 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_7 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_7 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_72 - z_lvl_right[z_lvl_qos] = phase_stop_79 + z_lvl_left[z_lvl_qos] = phase_start_34 + z_lvl_right[z_lvl_qos] = phase_stop_73 z_lvl_qos += 1 end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference32/continuous_2d_union_counting.txt b/test/reference32/continuous_2d_union_counting.txt index ddd4120f6..64ab12ad3 100644 --- a/test/reference32/continuous_2d_union_counting.txt +++ b/test/reference32/continuous_2d_union_counting.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,282 +51,282 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - cond = -phase_start_4 + phase_stop_4 == 0 - if cond - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + cond = -phase_start + phase_stop_4 == 0 + if cond + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - cond_2 = -phase_start_7 + y_lvl_2_i_stop == 0 - if cond_2 - s_val = y_lvl_3_val + s_val + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + cond_2 = -phase_start_2 + y_lvl_2_i_stop == 0 + if cond_2 + s_val = y_lvl_3_val + s_val + end end - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - cond_3 = -phase_start_10 + phase_stop_9 == 0 - if cond_3 - s_val = s_val + y_lvl_3_val_2 + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + cond_3 = -phase_start_3 + phase_stop_9 == 0 + if cond_3 + s_val = s_val + y_lvl_3_val_2 + end end + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end end end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - cond_4 = -phase_start_12 + phase_stop_13 == 0 - if cond_4 - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + cond_4 = -phase_start_5 + phase_stop_12 == 0 + if cond_4 + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - cond_5 = -phase_start_15 + x_lvl_2_i_stop == 0 - if cond_5 - s_val = s_val + x_lvl_3_val + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + cond_5 = -phase_start_6 + x_lvl_2_i_stop == 0 + if cond_5 + s_val = s_val + x_lvl_3_val + end end - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - cond_6 = -phase_start_18 + phase_stop_18 == 0 - if cond_6 - s_val = s_val + x_lvl_3_val_2 + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + cond_6 = -phase_start_7 + phase_stop_17 == 0 + if cond_6 + s_val = s_val + x_lvl_3_val_2 + end end + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end end end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - cond_7 = -phase_start_20 + phase_stop_2 == 0 - if cond_7 - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + cond_7 = -phase_start_9 + phase_stop_2 == 0 + if cond_7 + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - cond_8 = -phase_start_24 + phase_stop_26 == 0 - if cond_8 - s_val = s_val + x_lvl_3_val_3 - end + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - cond_9 = -phase_start_25 + phase_stop_27 == 0 - if cond_9 - s_val = s_val + y_lvl_3_val_3 - end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - cond_10 = -phase_start_26 + phase_stop_24 == 0 - if cond_10 - s_val = s_val + y_lvl_3_val_4 + x_lvl_3_val_4 + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + cond_8 = -phase_start_10 + phase_stop_24 == 0 + if cond_8 + s_val = s_val + x_lvl_3_val_3 + end + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + cond_9 = -phase_start_11 + phase_stop_25 == 0 + if cond_9 + s_val = s_val + y_lvl_3_val_3 + end + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + cond_10 = -phase_start_12 + phase_stop_22 == 0 + if cond_10 + s_val = s_val + y_lvl_3_val_4 + x_lvl_3_val_4 + end + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) end end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) - end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - cond_11 = -phase_start_29 + y_lvl_2_i_stop_2 == 0 - if cond_11 - s_val = s_val + y_lvl_3_val_5 + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + cond_11 = -phase_start_14 + y_lvl_2_i_stop_2 == 0 + if cond_11 + s_val = s_val + y_lvl_3_val_5 + end end - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - cond_12 = -phase_start_32 + phase_stop_33 == 0 - if cond_12 - s_val = s_val + y_lvl_3_val_6 + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + cond_12 = -phase_start_15 + phase_stop_31 == 0 + if cond_12 + s_val = s_val + y_lvl_3_val_6 + end end + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - cond_13 = -phase_start_35 + x_lvl_2_i_stop_2 == 0 - if cond_13 - s_val = s_val + x_lvl_3_val_5 + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + cond_13 = -phase_start_17 + x_lvl_2_i_stop_2 == 0 + if cond_13 + s_val = s_val + x_lvl_3_val_5 + end end - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - cond_14 = -phase_start_38 + phase_stop_40 == 0 - if cond_14 - s_val = s_val + x_lvl_3_val_6 + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + cond_14 = -phase_start_18 + phase_stop_38 == 0 + if cond_14 + s_val = s_val + x_lvl_3_val_6 + end end + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 - cond_15 = -phase_start_42 + x_lvl_i_stop == 0 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 + cond_15 = -phase_start_21 + x_lvl_i_stop == 0 if cond_15 x_lvl_2_q_3 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_3 = x_lvl_ptr_2[x_lvl_q + 1] @@ -335,8 +335,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -345,11 +345,11 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] - cond_16 = -phase_start_45 + x_lvl_2_i_stop_3 == 0 + cond_16 = -phase_start_22 + x_lvl_2_i_stop_3 == 0 if cond_16 s_val = s_val + x_lvl_3_val_7 end @@ -357,18 +357,17 @@ quote x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] - cond_17 = -phase_start_48 + phase_stop_52 == 0 + cond_17 = -phase_start_23 + phase_stop_49 == 0 if cond_17 s_val = s_val + x_lvl_3_val_8 end end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -378,11 +377,10 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 - cond_18 = -phase_start_52 + phase_stop_56 == 0 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 + cond_18 = -phase_start_25 + phase_stop_52 == 0 if cond_18 x_lvl_2_q_4 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_4 = x_lvl_ptr_2[x_lvl_q + 1] @@ -391,8 +389,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -401,11 +399,11 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] - cond_19 = -phase_start_55 + x_lvl_2_i_stop_4 == 0 + cond_19 = -phase_start_26 + x_lvl_2_i_stop_4 == 0 if cond_19 s_val = s_val + x_lvl_3_val_9 end @@ -413,45 +411,44 @@ quote x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] - cond_20 = -phase_start_58 + phase_stop_63 == 0 + cond_20 = -phase_start_27 + phase_stop_59 == 0 if cond_20 s_val = s_val + x_lvl_3_val_10 end end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end end end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 - cond_21 = -phase_start_62 + y_lvl_i_stop == 0 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 + cond_21 = -phase_start_30 + y_lvl_i_stop == 0 if cond_21 y_lvl_2_q_3 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_3 = y_lvl_ptr_2[y_lvl_q + 1] @@ -460,8 +457,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -470,11 +467,11 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] - cond_22 = -phase_start_65 + y_lvl_2_i_stop_3 == 0 + cond_22 = -phase_start_31 + y_lvl_2_i_stop_3 == 0 if cond_22 s_val = s_val + y_lvl_3_val_7 end @@ -482,18 +479,17 @@ quote y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] - cond_23 = -phase_start_68 + phase_stop_75 == 0 + cond_23 = -phase_start_32 + phase_stop_70 == 0 if cond_23 s_val = s_val + y_lvl_3_val_8 end end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -503,11 +499,10 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 - cond_24 = -phase_start_72 + phase_stop_79 == 0 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 + cond_24 = -phase_start_34 + phase_stop_73 == 0 if cond_24 y_lvl_2_q_4 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_4 = y_lvl_ptr_2[y_lvl_q + 1] @@ -516,8 +511,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -526,11 +521,11 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] - cond_25 = -phase_start_75 + y_lvl_2_i_stop_4 == 0 + cond_25 = -phase_start_35 + y_lvl_2_i_stop_4 == 0 if cond_25 s_val = s_val + y_lvl_3_val_9 end @@ -538,26 +533,25 @@ quote y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] - cond_26 = -phase_start_78 + phase_stop_86 == 0 + cond_26 = -phase_start_36 + phase_stop_80 == 0 if cond_26 s_val = s_val + y_lvl_3_val_10 end end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end end end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference32/continuous_2d_union_lebesgue.txt b/test/reference32/continuous_2d_union_lebesgue.txt index f741fbb85..389cdc00e 100644 --- a/test/reference32/continuous_2d_union_lebesgue.txt +++ b/test/reference32/continuous_2d_union_lebesgue.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,239 +51,239 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_4 + phase_stop_4) * drop_eps(-phase_start_7 + y_lvl_2_i_stop) * y_lvl_3_val - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_4 + phase_stop_4) * drop_eps(-phase_start_10 + phase_stop_9) * y_lvl_3_val_2 + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + s_val = s_val + drop_eps(-phase_start + phase_stop_4) * drop_eps(-phase_start_2 + y_lvl_2_i_stop) * y_lvl_3_val + end + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + s_val = s_val + drop_eps(-phase_start + phase_stop_4) * drop_eps(-phase_start_3 + phase_stop_9) * y_lvl_3_val_2 + end + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_13) * drop_eps(-phase_start_15 + x_lvl_2_i_stop) * x_lvl_3_val - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_13) * drop_eps(-phase_start_18 + phase_stop_18) * x_lvl_3_val_2 + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + s_val = s_val + drop_eps(-phase_start_5 + phase_stop_12) * drop_eps(-phase_start_6 + x_lvl_2_i_stop) * x_lvl_3_val + end + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + s_val = s_val + drop_eps(-phase_start_5 + phase_stop_12) * drop_eps(-phase_start_7 + phase_stop_17) * x_lvl_3_val_2 + end + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_24 + phase_stop_26) * x_lvl_3_val_3 + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_25 + phase_stop_27) * y_lvl_3_val_3 + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_26 + phase_stop_24) * (x_lvl_3_val_4 + y_lvl_3_val_4) + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_10 + phase_stop_24) * x_lvl_3_val_3 + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_11 + phase_stop_25) * y_lvl_3_val_3 + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_12 + phase_stop_22) * (x_lvl_3_val_4 + y_lvl_3_val_4) + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) + end end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) - end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_29 + y_lvl_2_i_stop_2) * y_lvl_3_val_5 - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_32 + phase_stop_33) * y_lvl_3_val_6 + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_14 + y_lvl_2_i_stop_2) * y_lvl_3_val_5 + end + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_15 + phase_stop_31) * y_lvl_3_val_6 + end + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_35 + x_lvl_2_i_stop_2) * x_lvl_3_val_5 - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_38 + phase_stop_40) * x_lvl_3_val_6 + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_17 + x_lvl_2_i_stop_2) * x_lvl_3_val_5 + end + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_18 + phase_stop_38) * x_lvl_3_val_6 + end + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 x_lvl_2_q_3 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_3 = x_lvl_ptr_2[x_lvl_q + 1] if x_lvl_2_q_3 < x_lvl_2_q_stop_3 @@ -291,8 +291,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -301,24 +301,23 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_42 + x_lvl_i_stop) * drop_eps(-phase_start_45 + x_lvl_2_i_stop_3) * x_lvl_3_val_7 + s_val = s_val + drop_eps(-phase_start_21 + x_lvl_i_stop) * drop_eps(-phase_start_22 + x_lvl_2_i_stop_3) * x_lvl_3_val_7 end x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_42 + x_lvl_i_stop) * drop_eps(-phase_start_48 + phase_stop_52) * x_lvl_3_val_8 + s_val = s_val + drop_eps(-phase_start_21 + x_lvl_i_stop) * drop_eps(-phase_start_23 + phase_stop_49) * x_lvl_3_val_8 end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -327,10 +326,9 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 x_lvl_2_q_4 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_4 = x_lvl_ptr_2[x_lvl_q + 1] if x_lvl_2_q_4 < x_lvl_2_q_stop_4 @@ -338,8 +336,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -348,49 +346,48 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_52 + phase_stop_56) * drop_eps(-phase_start_55 + x_lvl_2_i_stop_4) * x_lvl_3_val_9 + s_val = s_val + drop_eps(-phase_start_25 + phase_stop_52) * drop_eps(-phase_start_26 + x_lvl_2_i_stop_4) * x_lvl_3_val_9 end x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_52 + phase_stop_56) * drop_eps(-phase_start_58 + phase_stop_63) * x_lvl_3_val_10 + s_val = s_val + drop_eps(-phase_start_25 + phase_stop_52) * drop_eps(-phase_start_27 + phase_stop_59) * x_lvl_3_val_10 end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 y_lvl_2_q_3 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_3 = y_lvl_ptr_2[y_lvl_q + 1] if y_lvl_2_q_3 < y_lvl_2_q_stop_3 @@ -398,8 +395,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -408,24 +405,23 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_62 + y_lvl_i_stop) * drop_eps(-phase_start_65 + y_lvl_2_i_stop_3) * y_lvl_3_val_7 + s_val = s_val + drop_eps(-phase_start_30 + y_lvl_i_stop) * drop_eps(-phase_start_31 + y_lvl_2_i_stop_3) * y_lvl_3_val_7 end y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_62 + y_lvl_i_stop) * drop_eps(-phase_start_68 + phase_stop_75) * y_lvl_3_val_8 + s_val = s_val + drop_eps(-phase_start_30 + y_lvl_i_stop) * drop_eps(-phase_start_32 + phase_stop_70) * y_lvl_3_val_8 end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -434,10 +430,9 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 y_lvl_2_q_4 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_4 = y_lvl_ptr_2[y_lvl_q + 1] if y_lvl_2_q_4 < y_lvl_2_q_stop_4 @@ -445,8 +440,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -455,31 +450,30 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_72 + phase_stop_79) * drop_eps(-phase_start_75 + y_lvl_2_i_stop_4) * y_lvl_3_val_9 + s_val = s_val + drop_eps(-phase_start_34 + phase_stop_73) * drop_eps(-phase_start_35 + y_lvl_2_i_stop_4) * y_lvl_3_val_9 end y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_72 + phase_stop_79) * drop_eps(-phase_start_78 + phase_stop_86) * y_lvl_3_val_10 + s_val = s_val + drop_eps(-phase_start_34 + phase_stop_73) * drop_eps(-phase_start_36 + phase_stop_80) * y_lvl_3_val_10 end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference32/continuous_affine_rle.txt b/test/reference32/continuous_affine_rle.txt index ca657a77b..393e28293 100644 --- a/test/reference32/continuous_affine_rle.txt +++ b/test/reference32/continuous_affine_rle.txt @@ -28,6 +28,7 @@ quote y_lvl_q = Finch.scansearch(y_lvl_right, -4.5f0 * 2 + 10, y_lvl_q, y_lvl_q_stop - 1) end while true + i_start_3 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] phase_start_2 = i @@ -44,13 +45,12 @@ quote y_lvl_q += ((y_lvl_i_stop + -10) * (1.0f0 / 2)) * 2 + 10 == y_lvl_i_stop i = phase_stop_2 + limit(0+ϵ) else - phase_start_5 = i phase_stop_5 = min(phase_stop, 0.5f0 * (-10 + y_lvl_i_stop)) if phase_stop_5 >= i - phase_start_7 = max(0.5f0 * (y_lvl_i_start + limit(-10)), phase_start_5) - if phase_stop_5 >= phase_start_7 + phase_start_5 = max(i_start_3, 0.5f0 * (y_lvl_i_start + limit(-10))) + if phase_stop_5 >= phase_start_5 y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_2 = -phase_start_7 + phase_stop_5 == 0 + cond_2 = -phase_start_5 + phase_stop_5 == 0 if cond_2 z2_val = z2_val + y_lvl_2_val_2 end diff --git a/test/reference32/continuous_intersect.txt b/test/reference32/continuous_intersect.txt index 1e43d488a..d74f2d4f8 100644 --- a/test/reference32/continuous_intersect.txt +++ b/test/reference32/continuous_intersect.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,31 +51,33 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 * x_lvl_2_val_2 + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 * x_lvl_2_val_2 - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end z_lvl_ptr[1 + 1] = (z_lvl_qos - 0) - 1 diff --git a/test/reference32/continuous_intersect_counting.txt b/test/reference32/continuous_intersect_counting.txt index ea42261da..b686441a2 100644 --- a/test/reference32/continuous_intersect_counting.txt +++ b/test/reference32/continuous_intersect_counting.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,24 +42,26 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond = -phase_start_6 + phase_stop_2 == 0 - if cond - s_val = s_val + y_lvl_2_val_2 * x_lvl_2_val_2 + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + cond = -phase_start_3 + phase_stop_2 == 0 + if cond + s_val = s_val + y_lvl_2_val_2 * x_lvl_2_val_2 + end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int32}(s_val),) diff --git a/test/reference32/continuous_intersect_lebesgue.txt b/test/reference32/continuous_intersect_lebesgue.txt index af040c169..62605ff6a 100644 --- a/test/reference32/continuous_intersect_lebesgue.txt +++ b/test/reference32/continuous_intersect_lebesgue.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,21 +42,23 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * x_lvl_2_val_2 * y_lvl_2_val_2 + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * x_lvl_2_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int32}(s_val),) diff --git a/test/reference32/continuous_pinpoint_rle.txt b/test/reference32/continuous_pinpoint_rle.txt index e0d14b714..328e88783 100644 --- a/test/reference32/continuous_pinpoint_rle.txt +++ b/test/reference32/continuous_pinpoint_rle.txt @@ -30,10 +30,10 @@ quote y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop - phase_start_3 = max(i_start_2, y_lvl_i_start) - if y_lvl_i_stop >= phase_start_3 + phase_start = max(i_start_2, y_lvl_i_start) + if y_lvl_i_stop >= phase_start y_lvl_2_val = y_lvl_val[y_lvl_q] - cond = -phase_start_3 + y_lvl_i_stop == 0 + cond = -phase_start + y_lvl_i_stop == 0 if cond z2_val = y_lvl_2_val + z2_val end @@ -41,12 +41,11 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_4 = i - phase_stop_5 = min(y_lvl_i_stop, phase_stop) - phase_start_6 = max(y_lvl_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, y_lvl_i_stop) + phase_start_2 = max(i_start_2, y_lvl_i_start) + if phase_stop_5 >= phase_start_2 y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_2 = -phase_start_6 + phase_stop_5 == 0 + cond_2 = -phase_start_2 + phase_stop_5 == 0 if cond_2 z2_val = z2_val + y_lvl_2_val_2 end diff --git a/test/reference32/continuous_pinpoint_sl.txt b/test/reference32/continuous_pinpoint_sl.txt index bd9fe21e5..33ea74d42 100644 --- a/test/reference32/continuous_pinpoint_sl.txt +++ b/test/reference32/continuous_pinpoint_sl.txt @@ -30,7 +30,7 @@ quote z1_val = x_lvl_2_val + z1_val x_lvl_q += 1 else - phase_stop_3 = min(x_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, x_lvl_i) if x_lvl_i == phase_stop_3 x_lvl_2_val = x_lvl_val[x_lvl_q] z1_val = z1_val + x_lvl_2_val diff --git a/test/reference32/continuous_union.txt b/test/reference32/continuous_union.txt index f1fe2d712..807c61065 100644 --- a/test/reference32/continuous_union.txt +++ b/test/reference32/continuous_union.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,79 +51,81 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = y_lvl_2_val + z_lvl_val[z_lvl_qos] + z_lvl_left[z_lvl_qos] = phase_start + z_lvl_right[z_lvl_qos] = phase_stop_4 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = y_lvl_2_val + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_4 - z_lvl_right[z_lvl_qos] = phase_stop_4 - z_lvl_qos += 1 - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = x_lvl_2_val + z_lvl_val[z_lvl_qos] + z_lvl_left[z_lvl_qos] = phase_start_2 + z_lvl_right[z_lvl_qos] = phase_stop_5 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = x_lvl_2_val + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_5 - z_lvl_right[z_lvl_qos] = phase_stop_5 - z_lvl_qos += 1 - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = x_lvl_2_val_2 + z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = x_lvl_2_val_2 + z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -133,17 +135,16 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = x_lvl_2_val_3 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_9 + z_lvl_left[z_lvl_qos] = phase_start_5 z_lvl_right[z_lvl_qos] = x_lvl_i_stop z_lvl_qos += 1 end x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -153,7 +154,7 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = x_lvl_2_val_4 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_12 + z_lvl_left[z_lvl_qos] = phase_start_6 z_lvl_right[z_lvl_qos] = phase_stop_11 z_lvl_qos += 1 end @@ -163,20 +164,20 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -186,17 +187,16 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = y_lvl_2_val_3 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_15 + z_lvl_left[z_lvl_qos] = phase_start_8 z_lvl_right[z_lvl_qos] = y_lvl_i_stop z_lvl_qos += 1 end y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -206,7 +206,7 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = y_lvl_2_val_4 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_18 + z_lvl_left[z_lvl_qos] = phase_start_9 z_lvl_right[z_lvl_qos] = phase_stop_18 z_lvl_qos += 1 end diff --git a/test/reference32/continuous_union_counting.txt b/test/reference32/continuous_union_counting.txt index 3375dff98..d1cc36f79 100644 --- a/test/reference32/continuous_union_counting.txt +++ b/test/reference32/continuous_union_counting.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,60 +42,62 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - cond = -phase_start_4 + phase_stop_4 == 0 - if cond - s_val = y_lvl_2_val + s_val + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + cond = -phase_start + phase_stop_4 == 0 + if cond + s_val = y_lvl_2_val + s_val + end end - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - cond_2 = -phase_start_5 + phase_stop_5 == 0 - if cond_2 - s_val = s_val + x_lvl_2_val + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + cond_2 = -phase_start_2 + phase_stop_5 == 0 + if cond_2 + s_val = s_val + x_lvl_2_val + end end - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_3 = -phase_start_6 + phase_stop_2 == 0 - if cond_3 - s_val = s_val + x_lvl_2_val_2 + y_lvl_2_val_2 + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + cond_3 = -phase_start_3 + phase_stop_2 == 0 + if cond_3 + s_val = s_val + x_lvl_2_val_2 + y_lvl_2_val_2 + end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] - cond_4 = -phase_start_9 + x_lvl_i_stop == 0 + cond_4 = -phase_start_5 + x_lvl_i_stop == 0 if cond_4 s_val = s_val + x_lvl_2_val_3 end @@ -103,12 +105,11 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] - cond_5 = -phase_start_12 + phase_stop_11 == 0 + cond_5 = -phase_start_6 + phase_stop_11 == 0 if cond_5 s_val = s_val + x_lvl_2_val_4 end @@ -119,22 +120,22 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] - cond_6 = -phase_start_15 + y_lvl_i_stop == 0 + cond_6 = -phase_start_8 + y_lvl_i_stop == 0 if cond_6 s_val = s_val + y_lvl_2_val_3 end @@ -142,12 +143,11 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - cond_7 = -phase_start_18 + phase_stop_18 == 0 + cond_7 = -phase_start_9 + phase_stop_18 == 0 if cond_7 s_val = s_val + y_lvl_2_val_4 end diff --git a/test/reference32/continuous_union_lebesgue.txt b/test/reference32/continuous_union_lebesgue.txt index 87a6d53bd..9bd587993 100644 --- a/test/reference32/continuous_union_lebesgue.txt +++ b/test/reference32/continuous_union_lebesgue.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,61 +42,62 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - s_val = drop_eps(-phase_start_4 + phase_stop_4) * y_lvl_2_val + s_val - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_5 + phase_stop_5) * x_lvl_2_val - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * (y_lvl_2_val_2 + x_lvl_2_val_2) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + s_val = drop_eps(-phase_start + phase_stop_4) * y_lvl_2_val + s_val + end + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + s_val = s_val + drop_eps(-phase_start_2 + phase_stop_5) * x_lvl_2_val + end + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * (y_lvl_2_val_2 + x_lvl_2_val_2) + end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_9 + x_lvl_i_stop) * x_lvl_2_val_3 + s_val = s_val + drop_eps(-phase_start_5 + x_lvl_i_stop) * x_lvl_2_val_3 end x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_11) * x_lvl_2_val_4 + s_val = s_val + drop_eps(-phase_start_6 + phase_stop_11) * x_lvl_2_val_4 end x_lvl_q += phase_stop_11 == x_lvl_i_stop i = phase_stop_11 + limit(0+ϵ) @@ -104,32 +105,31 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_15 + y_lvl_i_stop) * y_lvl_2_val_3 + s_val = s_val + drop_eps(-phase_start_8 + y_lvl_i_stop) * y_lvl_2_val_3 end y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_18 + phase_stop_18) * y_lvl_2_val_4 + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_18) * y_lvl_2_val_4 end y_lvl_q += phase_stop_18 == y_lvl_i_stop i = phase_stop_18 + limit(0+ϵ) diff --git a/test/reference32/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl index 2c6b2c3a6..77c833082 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl @@ -41,7 +41,7 @@ begin res_lvl_qos += 1 tmp_lvl_r += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_q = (1 - 1) * tmp_lvl.shape + tmp_lvl_i tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q] diff --git a/test/reference32/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl index acd02944e..a20dc3135 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference32/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl index 343467b03..006c0c93e 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q])[2]] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference32/convert_from_0 Fiber!(SparseList(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseList(Element(false))).jl index 9de86bfee..9fbb95fa2 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseList(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseList(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference32/convert_from_0 Fiber!(SparseRLE(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseRLE(Element(false))).jl index 5909563da..53897f447 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseRLE(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseRLE(Element(false))).jl @@ -32,10 +32,10 @@ begin tmp_lvl_i_start = tmp_lvl_left[tmp_lvl_q] tmp_lvl_i_stop = tmp_lvl_right[tmp_lvl_q] if tmp_lvl_i_stop < phase_stop - phase_start_3 = max(i_start_2, tmp_lvl_i_start) - if tmp_lvl_i_stop >= phase_start_3 + phase_start = max(i_start_2, tmp_lvl_i_start) + if tmp_lvl_i_stop >= phase_start tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] - for i_8 = phase_start_3:tmp_lvl_i_stop + for i_8 = phase_start:tmp_lvl_i_stop if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -50,12 +50,11 @@ begin tmp_lvl_q += tmp_lvl_i_stop == tmp_lvl_i_stop i = tmp_lvl_i_stop + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_i_stop, phase_stop) - phase_start_6 = max(tmp_lvl_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, tmp_lvl_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_i_start) + if phase_stop_5 >= phase_start_2 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q] - for i_11 = phase_start_6:phase_stop_5 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git a/test/reference32/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl index fcf514c5b..b873a2f5e 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl @@ -12,9 +12,8 @@ begin Finch.fill_range!(res_lvl_ptr, 0, 1 + 1, 1 + 1) res_lvl_qos = 0 + 1 0 < 1 || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl.shape - if phase_stop >= 1 - for i_5 = 1:phase_stop + if tmp_lvl.shape >= 1 + for i_5 = 1:tmp_lvl.shape if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git a/test/reference32/convert_from_0 Fiber!(SparseVBL(Element(false))).jl b/test/reference32/convert_from_0 Fiber!(SparseVBL(Element(false))).jl index b88de9b3a..d433beb1c 100644 --- a/test/reference32/convert_from_0 Fiber!(SparseVBL(Element(false))).jl +++ b/test/reference32/convert_from_0 Fiber!(SparseVBL(Element(false))).jl @@ -34,9 +34,9 @@ begin tmp_lvl_i_2 = tmp_lvl_i - (tmp_lvl_q_stop - tmp_lvl_ofs[tmp_lvl_r]) tmp_lvl_q_ofs = (tmp_lvl_q_stop - tmp_lvl_i) - 1 if tmp_lvl_i < phase_stop - phase_start_3 = max(i_start_2, 1 + tmp_lvl_i_2) - if tmp_lvl_i >= phase_start_3 - for i_8 = phase_start_3:tmp_lvl_i + phase_start = max(i_start_2, 1 + tmp_lvl_i_2) + if tmp_lvl_i >= phase_start + for i_8 = phase_start:tmp_lvl_i if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -53,11 +53,10 @@ begin tmp_lvl_r += tmp_lvl_i == tmp_lvl_i i = tmp_lvl_i + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_i, phase_stop) - phase_start_6 = max(1 + tmp_lvl_i_2, phase_start_4) - if phase_stop_5 >= phase_start_6 - for i_11 = phase_start_6:phase_stop_5 + phase_stop_5 = min(phase_stop, tmp_lvl_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_i_2) + if phase_stop_5 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" index 5f6b500c6..7df2d4498 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" @@ -61,7 +61,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" index 4c98a2690..3f85555b1 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" index be4b8a01a..2939d5c91 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" index bb35937a2..b902804fe 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" index 7383bbddb..7c246e05d 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" @@ -50,10 +50,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop - phase_start_3 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_3 + phase_start = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_3:tmp_lvl_2_i_stop + for i_8 = phase_start:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -70,12 +70,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_2_i_stop, phase_stop) - phase_start_6 = max(tmp_lvl_2_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, tmp_lvl_2_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_5 >= phase_start_2 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_6:phase_stop_5 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" index 89f11b934..e618ee62e 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" @@ -30,9 +30,8 @@ begin tmp_lvl_2_q = (tmp_lvl_q - 1) * fld(tmp_lvl_2.shape, 1) + 1 res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl_2.shape - if phase_stop >= 1 - for i_5 = 1:phase_stop + if tmp_lvl_2.shape >= 1 + for i_5 = 1:tmp_lvl_2.shape if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" index 8b377ca1f..d0161a162 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" @@ -52,9 +52,9 @@ begin tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 if tmp_lvl_2_i < phase_stop - phase_start_3 = max(i_start_2, 1 + tmp_lvl_2_i_2) - if tmp_lvl_2_i >= phase_start_3 - for i_8 = phase_start_3:tmp_lvl_2_i + phase_start = max(i_start_2, 1 + tmp_lvl_2_i_2) + if tmp_lvl_2_i >= phase_start + for i_8 = phase_start:tmp_lvl_2_i if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -73,11 +73,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_2_i, phase_stop) - phase_start_6 = max(1 + tmp_lvl_2_i_2, phase_start_4) - if phase_stop_5 >= phase_start_6 - for i_11 = phase_start_6:phase_stop_5 + phase_stop_5 = min(phase_stop, tmp_lvl_2_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_2_i_2) + if phase_stop_5 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" index 1e538afbc..6c69bf9f8 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" @@ -76,7 +76,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_5 = min(tmp_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_i_2) if tmp_lvl_i_2 == phase_stop_5 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -104,8 +104,8 @@ begin end tmp_lvl_q = tmp_lvl_q_step else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_i_stop_2 = 0 end - phase_stop_8 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) + if phase_stop_7 >= 1 if tmp_lvl_tbl1[tmp_lvl_q] < 1 tmp_lvl_q_2 = Finch.scansearch(tmp_lvl_tbl1, 1, tmp_lvl_q, tmp_lvl_q_step - 1) end while true tmp_lvl_i_2 = tmp_lvl_tbl1[tmp_lvl_q_2] - if tmp_lvl_i_2 < phase_stop_8 + if tmp_lvl_i_2 < phase_stop_7 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_10 = min(tmp_lvl_i_2, phase_stop_8) - if tmp_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(tmp_lvl_i_2, phase_stop_7) + if tmp_lvl_i_2 == phase_stop_9 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_2_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q = tmp_lvl_q_step diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" index 4366a339e..147fda213 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_5 = min(tmp_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_i_2) if tmp_lvl_i_2 == phase_stop_5 tmp_lvl_2_val = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q = tmp_lvl_q_step else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -120,14 +120,14 @@ begin else tmp_lvl_i_stop_2 = 0 end - phase_stop_8 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) + if phase_stop_7 >= 1 while tmp_lvl_q_2 + 1 < tmp_lvl_q_step && (((tmp_lvl_srt[tmp_lvl_q_2])[1])[2])[1] < 1 tmp_lvl_q_2 += 1 end while true tmp_lvl_i_2 = (((tmp_lvl_srt[tmp_lvl_q_2])[1])[2])[1] - if tmp_lvl_i_2 < phase_stop_8 + if tmp_lvl_i_2 < phase_stop_7 tmp_lvl_2_val_2 = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -142,8 +142,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_10 = min(tmp_lvl_i_2, phase_stop_8) - if tmp_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(tmp_lvl_i_2, phase_stop_7) + if tmp_lvl_i_2 == phase_stop_9 tmp_lvl_2_val_2 = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -153,7 +153,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_2_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 @@ -165,7 +165,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q = tmp_lvl_q_step diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" index 10093309e..f4cec53d7 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" @@ -76,7 +76,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] @@ -105,8 +105,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -123,14 +123,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape) + if phase_stop_7 >= 1 while tmp_lvl_2_r + 1 < tmp_lvl_2_r_stop && last(tmp_lvl_srt[tmp_lvl_2_r]) < 1 tmp_lvl_2_r += 1 end while true tmp_lvl_2_i = last(tmp_lvl_srt[tmp_lvl_2_r]) - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop @@ -146,8 +146,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop @@ -158,7 +158,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_4 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 @@ -170,7 +170,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" index 15dc399ef..56d6d1024 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) + if phase_stop_7 >= 1 if tmp_lvl_tbl1[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_tbl1, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) end while true tmp_lvl_2_i = tmp_lvl_tbl1[tmp_lvl_2_q] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" index 38395e8bd..091f71174 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) + if phase_stop_7 >= 1 while tmp_lvl_2_q + 1 < tmp_lvl_2_q_stop && (((tmp_lvl_srt[tmp_lvl_2_q])[1])[2])[1] < 1 tmp_lvl_2_q += 1 end while true tmp_lvl_2_i = (((tmp_lvl_srt[tmp_lvl_2_q])[1])[2])[1] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" index 3ec23391a..a6999c236 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i1 = 0 end - phase_stop_8 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) + if phase_stop_7 >= 1 if tmp_lvl_idx_2[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_idx_2, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) end while true tmp_lvl_2_i = tmp_lvl_idx_2[tmp_lvl_2_q] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" index 10022c7c9..b642d5a53 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" @@ -65,10 +65,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop_3 - phase_start_4 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_4 + phase_start = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_4:tmp_lvl_2_i_stop + for i_8 = phase_start:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -85,12 +85,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_5 = i - phase_stop_7 = min(tmp_lvl_2_i_stop, phase_stop_3) - phase_start_7 = max(tmp_lvl_2_i_start, phase_start_5) - if phase_stop_7 >= phase_start_7 + phase_stop_7 = min(phase_stop_3, tmp_lvl_2_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_7 >= phase_start_2 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_7:phase_stop_7 + for i_11 = phase_start_2:phase_stop_7 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -118,8 +117,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_11 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_11 + phase_stop_10 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_10 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -136,8 +135,8 @@ begin else tmp_lvl_2_i_end = 0 end - phase_stop_12 = min(tmp_lvl_2_i_end, tmp_lvl_2.shape) - if phase_stop_12 >= 1 + phase_stop_11 = min(tmp_lvl_2_i_end, tmp_lvl_2.shape) + if phase_stop_11 >= 1 i = 1 if tmp_lvl_right[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_right, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) @@ -146,11 +145,11 @@ begin i_start_6 = i tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] - if tmp_lvl_2_i_stop < phase_stop_12 - phase_start_12 = max(tmp_lvl_2_i_start, i_start_6) - if tmp_lvl_2_i_stop >= phase_start_12 + if tmp_lvl_2_i_stop < phase_stop_11 + phase_start_4 = max(tmp_lvl_2_i_start, i_start_6) + if tmp_lvl_2_i_stop >= phase_start_4 tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_17 = phase_start_12:tmp_lvl_2_i_stop + for i_17 = phase_start_4:tmp_lvl_2_i_stop if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -167,12 +166,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_13 = i - phase_stop_16 = min(tmp_lvl_2_i_stop, phase_stop_12) - phase_start_15 = max(tmp_lvl_2_i_start, phase_start_13) - if phase_stop_16 >= phase_start_15 + phase_stop_15 = min(tmp_lvl_2_i_stop, phase_stop_11) + phase_start_5 = max(tmp_lvl_2_i_start, i_start_6) + if phase_stop_15 >= phase_start_5 tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_20 = phase_start_15:phase_stop_16 + for i_20 = phase_start_5:phase_stop_15 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -186,8 +184,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_q += phase_stop_16 == tmp_lvl_2_i_stop - i = phase_stop_16 + 1 + tmp_lvl_2_q += phase_stop_15 == tmp_lvl_2_i_stop + i = phase_stop_15 + 1 break end end @@ -195,7 +193,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_11 + res_lvl_idx[res_lvl_qos] = phase_stop_10 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" index 9c37e3c56..1d2deddb7 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" @@ -45,9 +45,8 @@ begin res_lvldirty = false res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_3 = tmp_lvl_2.shape - if phase_stop_3 >= 1 - for i_5 = 1:phase_stop_3 + if tmp_lvl_2.shape >= 1 + for i_5 = 1:tmp_lvl_2.shape if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -70,8 +69,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_5 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_5 + phase_stop_3 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_3 tmp_lvl_2_q = (tmp_lvl_q - 1) * fld(tmp_lvl_2.shape, 1) + 1 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) @@ -82,9 +81,8 @@ begin res_lvldirty = false res_lvl_2_qos_2 = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_6 = tmp_lvl_2.shape - if phase_stop_6 >= 1 - for i_8 = 1:phase_stop_6 + if tmp_lvl_2.shape >= 1 + for i_8 = 1:tmp_lvl_2.shape if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -102,7 +100,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_5 + res_lvl_idx[res_lvl_qos] = phase_stop_3 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" index 1f10d37de..fdac16ab3 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" @@ -67,9 +67,9 @@ begin tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 if tmp_lvl_2_i < phase_stop_3 - phase_start_4 = max(i_start_2, 1 + tmp_lvl_2_i_2) - if tmp_lvl_2_i >= phase_start_4 - for i_8 = phase_start_4:tmp_lvl_2_i + phase_start = max(i_start_2, 1 + tmp_lvl_2_i_2) + if tmp_lvl_2_i >= phase_start + for i_8 = phase_start:tmp_lvl_2_i if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -88,11 +88,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_5 = i - phase_stop_7 = min(tmp_lvl_2_i, phase_stop_3) - phase_start_7 = max(1 + tmp_lvl_2_i_2, phase_start_5) - if phase_stop_7 >= phase_start_7 - for i_11 = phase_start_7:phase_stop_7 + phase_stop_7 = min(phase_stop_3, tmp_lvl_2_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_2_i_2) + if phase_stop_7 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_7 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -122,8 +121,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_11 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_11 + phase_stop_10 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_10 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -140,8 +139,8 @@ begin else tmp_lvl_2_i1 = 0 end - phase_stop_12 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) - if phase_stop_12 >= 1 + phase_stop_11 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) + if phase_stop_11 >= 1 i = 1 if tmp_lvl_idx_2[tmp_lvl_2_r] < 1 tmp_lvl_2_r = Finch.scansearch(tmp_lvl_idx_2, 1, tmp_lvl_2_r, tmp_lvl_2_r_stop - 1) @@ -152,10 +151,10 @@ begin tmp_lvl_2_q_stop = tmp_lvl_ofs[tmp_lvl_2_r + 1] tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 - if tmp_lvl_2_i < phase_stop_12 - phase_start_12 = max(1 + tmp_lvl_2_i_2, i_start_6) - if tmp_lvl_2_i >= phase_start_12 - for i_17 = phase_start_12:tmp_lvl_2_i + if tmp_lvl_2_i < phase_stop_11 + phase_start_4 = max(1 + tmp_lvl_2_i_2, i_start_6) + if tmp_lvl_2_i >= phase_start_4 + for i_17 = phase_start_4:tmp_lvl_2_i if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -174,11 +173,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_13 = i - phase_stop_16 = min(tmp_lvl_2_i, phase_stop_12) - phase_start_15 = max(1 + tmp_lvl_2_i_2, phase_start_13) - if phase_stop_16 >= phase_start_15 - for i_20 = phase_start_15:phase_stop_16 + phase_stop_15 = min(tmp_lvl_2_i, phase_stop_11) + phase_start_5 = max(1 + tmp_lvl_2_i_2, i_start_6) + if phase_stop_15 >= phase_start_5 + for i_20 = phase_start_5:phase_stop_15 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -194,8 +192,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_r += phase_stop_16 == tmp_lvl_2_i - i = phase_stop_16 + 1 + tmp_lvl_2_r += phase_stop_15 == tmp_lvl_2_i + i = phase_stop_15 + 1 break end end @@ -203,7 +201,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_11 + res_lvl_idx[res_lvl_qos] = phase_stop_10 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" index c300ddaab..055cbb757 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" @@ -42,9 +42,9 @@ begin tmp_lvl_i_start = tmp_lvl_left[tmp_lvl_q] tmp_lvl_i_stop = tmp_lvl_right[tmp_lvl_q] if tmp_lvl_i_stop < phase_stop - phase_start_3 = max(j_start_2, tmp_lvl_i_start) - if tmp_lvl_i_stop >= phase_start_3 - for j_8 = phase_start_3:tmp_lvl_i_stop + phase_start = max(j_start_2, tmp_lvl_i_start) + if tmp_lvl_i_stop >= phase_start + for j_8 = phase_start:tmp_lvl_i_stop if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -72,10 +72,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left_2[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right_2[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop_5 - phase_start_6 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_6 + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start_2 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_6:tmp_lvl_2_i_stop + for i_8 = phase_start_2:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -92,12 +92,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_7 = i - phase_stop_9 = min(tmp_lvl_2_i_stop, phase_stop_5) - phase_start_9 = max(tmp_lvl_2_i_start, phase_start_7) - if phase_stop_9 >= phase_start_9 + phase_stop_9 = min(phase_stop_5, tmp_lvl_2_i_stop) + phase_start_3 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_9:phase_stop_9 + for i_11 = phase_start_3:phase_stop_9 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -128,11 +127,10 @@ begin tmp_lvl_q += tmp_lvl_i_stop == tmp_lvl_i_stop j = tmp_lvl_i_stop + 1 else - phase_start_11 = j - phase_stop_13 = min(tmp_lvl_i_stop, phase_stop) - phase_start_13 = max(tmp_lvl_i_start, phase_start_11) - if phase_stop_13 >= phase_start_13 - for j_11 = phase_start_13:phase_stop_13 + phase_stop_12 = min(phase_stop, tmp_lvl_i_stop) + phase_start_5 = max(j_start_2, tmp_lvl_i_start) + if phase_stop_12 >= phase_start_5 + for j_11 = phase_start_5:phase_stop_12 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -149,8 +147,8 @@ begin else tmp_lvl_2_i_end_2 = 0 end - phase_stop_16 = min(tmp_lvl_2.shape, tmp_lvl_2_i_end_2) - if phase_stop_16 >= 1 + phase_stop_15 = min(tmp_lvl_2.shape, tmp_lvl_2_i_end_2) + if phase_stop_15 >= 1 i = 1 if tmp_lvl_right_2[tmp_lvl_2_q_2] < 1 tmp_lvl_2_q_2 = Finch.scansearch(tmp_lvl_right_2, 1, tmp_lvl_2_q_2, tmp_lvl_2_q_stop_2 - 1) @@ -159,11 +157,11 @@ begin i_start_6 = i tmp_lvl_2_i_start_2 = tmp_lvl_left_2[tmp_lvl_2_q_2] tmp_lvl_2_i_stop_2 = tmp_lvl_right_2[tmp_lvl_2_q_2] - if tmp_lvl_2_i_stop_2 < phase_stop_16 - phase_start_16 = max(i_start_6, tmp_lvl_2_i_start_2) - if tmp_lvl_2_i_stop_2 >= phase_start_16 + if tmp_lvl_2_i_stop_2 < phase_stop_15 + phase_start_6 = max(i_start_6, tmp_lvl_2_i_start_2) + if tmp_lvl_2_i_stop_2 >= phase_start_6 tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q_2] - for i_17 = phase_start_16:tmp_lvl_2_i_stop_2 + for i_17 = phase_start_6:tmp_lvl_2_i_stop_2 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -180,12 +178,11 @@ begin tmp_lvl_2_q_2 += tmp_lvl_2_i_stop_2 == tmp_lvl_2_i_stop_2 i = tmp_lvl_2_i_stop_2 + 1 else - phase_start_17 = i - phase_stop_20 = min(tmp_lvl_2_i_stop_2, phase_stop_16) - phase_start_19 = max(tmp_lvl_2_i_start_2, phase_start_17) - if phase_stop_20 >= phase_start_19 + phase_stop_19 = min(phase_stop_15, tmp_lvl_2_i_stop_2) + phase_start_7 = max(i_start_6, tmp_lvl_2_i_start_2) + if phase_stop_19 >= phase_start_7 tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q_2] - for i_20 = phase_start_19:phase_stop_20 + for i_20 = phase_start_7:phase_stop_19 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -199,8 +196,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_q_2 += phase_stop_20 == tmp_lvl_2_i_stop_2 - i = phase_stop_20 + 1 + tmp_lvl_2_q_2 += phase_stop_19 == tmp_lvl_2_i_stop_2 + i = phase_stop_19 + 1 break end end @@ -213,8 +210,8 @@ begin end end end - tmp_lvl_q += phase_stop_13 == tmp_lvl_i_stop - j = phase_stop_13 + 1 + tmp_lvl_q += phase_stop_12 == tmp_lvl_i_stop + j = phase_stop_12 + 1 break end end diff --git "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" index 6c89afd78..5af31f7da 100644 --- "a/test/reference32/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" +++ "b/test/reference32/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" @@ -18,9 +18,8 @@ begin Finch.fill_range!(res_lvl_ptr, 0, 1 + 1, 1 + 1) res_lvl_qos = 0 + 1 0 < 1 || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl.shape - if phase_stop >= 1 - for j_5 = 1:phase_stop + if tmp_lvl.shape >= 1 + for j_5 = 1:tmp_lvl.shape if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -31,9 +30,9 @@ begin tmp_lvl_s = tmp_lvl_q + fld(j_5 * (j_5 + -1), 2) res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_2 = min(tmp_lvl.shape, j_5) - if phase_stop_2 >= 1 - for i_5 = 1:phase_stop_2 + phase_stop = min(tmp_lvl.shape, j_5) + if phase_stop >= 1 + for i_5 = 1:phase_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git a/test/reference32/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl index 04a6c0ca5..2a56f184e 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl @@ -59,7 +59,7 @@ begin end ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_q_2 = (1 - 1) * ref_lvl.shape + phase_stop_3 diff --git a/test/reference32/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl index 6807cd510..ea6cffb8d 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl @@ -43,7 +43,7 @@ begin tmp_lvl_q += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_q > tmp_lvl_qos_stop diff --git a/test/reference32/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl index da97a76ec..c31bc5293 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl @@ -46,7 +46,7 @@ begin end ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_key = (1, (phase_stop_3,)) diff --git a/test/reference32/convert_to_0 Fiber!(SparseList(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseList(Element(false))).jl index ef890e2d3..767b3f436 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseList(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseList(Element(false))).jl @@ -40,7 +40,7 @@ begin tmp_lvl_qos += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git a/test/reference32/convert_to_0 Fiber!(SparseRLE(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseRLE(Element(false))).jl index c66133084..94e9367c0 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseRLE(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseRLE(Element(false))).jl @@ -43,7 +43,7 @@ begin tmp_lvl_qos += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git a/test/reference32/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl index 279add285..01dd91cce 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl @@ -29,7 +29,7 @@ begin tmp_lvl_val[tmp_lvl_q + -1 + ref_lvl_i] = ref_lvl_2_val ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_val[tmp_lvl_q + -1 + phase_stop_3] = ref_lvl_2_val diff --git a/test/reference32/convert_to_0 Fiber!(SparseVBL(Element(false))).jl b/test/reference32/convert_to_0 Fiber!(SparseVBL(Element(false))).jl index 6fd65cd49..c07dd1a5f 100644 --- a/test/reference32/convert_to_0 Fiber!(SparseVBL(Element(false))).jl +++ b/test/reference32/convert_to_0 Fiber!(SparseVBL(Element(false))).jl @@ -54,7 +54,7 @@ begin tmp_lvl_ofs[tmp_lvl_ros + 1] = tmp_lvl_qos ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" index a55b951da..29750256d 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" @@ -80,7 +80,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_2 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_5 @@ -102,9 +102,9 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -112,14 +112,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + ref_lvl_2_i tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 @@ -134,10 +134,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_10 + tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_9 tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 if !(tmp_lvl_tbl[tmp_lvl_2_q_3]) tmp_lvl_tbl[tmp_lvl_2_q_3] = true @@ -146,7 +146,7 @@ begin tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_srt, tmp_lvl_2_qos_stop) end - tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_q, phase_stop_10) + tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_q, phase_stop_9) end ref_lvl_2_q += 1 end diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" index 6d364e2f8..c3109cc6d 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" @@ -66,7 +66,7 @@ begin tmp_lvl_2_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q > tmp_lvl_2_qos_stop @@ -93,9 +93,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_q - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_q_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) tmp_lvl_2_prev_coord_3 = () @@ -106,14 +106,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -128,8 +128,8 @@ begin tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -138,9 +138,9 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_q_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_q_2] = ref_lvl_3_val_2 - tmp_lvl_2_prev_coord_3 < (phase_stop_10,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_2_prev_coord_3 = (phase_stop_10,) - tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_10 + tmp_lvl_2_prev_coord_3 < (phase_stop_9,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_2_prev_coord_3 = (phase_stop_9,) + tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_9 tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 end diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" index 08a5d4a00..51823d045 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" @@ -67,7 +67,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key = (tmp_lvl_q, (phase_stop_5,)) @@ -91,9 +91,9 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -101,14 +101,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key_2 = (tmp_lvl_q, (ref_lvl_2_i,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) @@ -125,10 +125,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_key_2 = (tmp_lvl_q, (phase_stop_10,)) + tmp_lvl_2_key_2 = (tmp_lvl_q, (phase_stop_9,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" index 17a87c5d9..ada856f97 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" @@ -64,7 +64,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -87,9 +87,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] @@ -99,14 +99,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -120,8 +120,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -130,7 +130,7 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - tmp_lvl_idx[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_idx[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" index 065d1f4a2..07b0a355a 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" @@ -67,7 +67,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -92,9 +92,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] @@ -104,14 +104,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -127,8 +127,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -138,8 +138,8 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" index b0373b2c4..acc19fe11 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" @@ -49,7 +49,7 @@ begin tmp_lvl_2_val[tmp_lvl_2_q + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_val[tmp_lvl_2_q + -1 + phase_stop_5] = ref_lvl_3_val @@ -61,9 +61,9 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_9 + phase_stop_7 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_7 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 tmp_lvl_2_q_2 = (tmp_lvl_q - 1) * fld(ref_lvl_2.shape, 1) + 1 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] @@ -72,22 +72,22 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1) - if phase_stop_10 >= 1 + phase_stop_8 = min(ref_lvl_2.shape, ref_lvl_2_i1) + if phase_stop_8 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_8 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) + if ref_lvl_2_i == phase_stop_10 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_10] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" index 324c2055c..8d6a81c57 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" @@ -79,7 +79,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -111,9 +111,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_ros_2 = tmp_lvl_2_ros_fill tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_i_prev_2 = -1 @@ -125,14 +125,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,8 +154,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -163,7 +163,7 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - if phase_stop_10 > tmp_lvl_2_i_prev_2 + 1 + if phase_stop_9 > tmp_lvl_2_i_prev_2 + 1 tmp_lvl_2_ros_2 += 1 if tmp_lvl_2_ros_2 > tmp_lvl_2_ros_stop tmp_lvl_2_ros_stop = max(tmp_lvl_2_ros_stop << 1, 1) @@ -171,7 +171,7 @@ begin Finch.resize_if_smaller!(tmp_lvl_ofs, tmp_lvl_2_ros_stop + 1) end end - tmp_lvl_idx[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_10) + tmp_lvl_idx[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_9) tmp_lvl_2_qos_2 += 1 tmp_lvl_ofs[tmp_lvl_2_ros_2 + 1] = tmp_lvl_2_qos_2 tmp_lvl_2_prev_pos = tmp_lvl_q diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" index d374527fc..d430e2328 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" @@ -64,7 +64,7 @@ begin tmp_lvl_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop @@ -88,8 +88,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -97,14 +97,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -114,15 +114,15 @@ begin Finch.fill_range!(tmp_lvl_val, false, tmp_lvl_q, tmp_lvl_qos_stop) end tmp_lvl_val[tmp_lvl_q] = ref_lvl_3_val_2 - tmp_lvl_prev_coord_3 < (phase_stop_7, ref_lvl_2_i) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_prev_coord_3 = (phase_stop_7, ref_lvl_2_i) + tmp_lvl_prev_coord_3 < (phase_stop_6, ref_lvl_2_i) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_prev_coord_3 = (phase_stop_6, ref_lvl_2_i) tmp_lvl_tbl1[tmp_lvl_q] = ref_lvl_2_i - tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_7 + tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_6 tmp_lvl_q += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -132,10 +132,10 @@ begin Finch.fill_range!(tmp_lvl_val, false, tmp_lvl_q, tmp_lvl_qos_stop) end tmp_lvl_val[tmp_lvl_q] = ref_lvl_3_val_2 - tmp_lvl_prev_coord_3 < (phase_stop_7, phase_stop_10) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_prev_coord_3 = (phase_stop_7, phase_stop_10) - tmp_lvl_tbl1[tmp_lvl_q] = phase_stop_10 - tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_7 + tmp_lvl_prev_coord_3 < (phase_stop_6, phase_stop_9) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_prev_coord_3 = (phase_stop_6, phase_stop_9) + tmp_lvl_tbl1[tmp_lvl_q] = phase_stop_9 + tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_6 tmp_lvl_q += 1 ref_lvl_2_q += 1 end diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" index f77c7e1b2..d99800c3b 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" @@ -64,7 +64,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_key_2 = (1, (phase_stop_5, ref_lvl_i)) @@ -88,8 +88,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -97,16 +97,16 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_key_3 = (1, (ref_lvl_2_i, phase_stop_7)) + tmp_lvl_key_3 = (1, (ref_lvl_2_i, phase_stop_6)) tmp_lvl_q_3 = get(tmp_lvl_tbl, tmp_lvl_key_3, tmp_lvl_qos_fill + 1) if tmp_lvl_q_3 > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -121,10 +121,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_key_3 = (1, (phase_stop_10, phase_stop_7)) + tmp_lvl_key_3 = (1, (phase_stop_9, phase_stop_6)) tmp_lvl_q_3 = get(tmp_lvl_tbl, tmp_lvl_key_3, tmp_lvl_qos_fill + 1) if tmp_lvl_q_3 > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" index 92c138101..9e33de0bb 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" @@ -91,7 +91,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_2 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_5 @@ -118,8 +118,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -140,14 +140,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + ref_lvl_2_i tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 @@ -163,10 +163,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_10 + tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_9 tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 tmp_lvldirty = true if !(tmp_lvl_tbl[tmp_lvl_2_q_3]) @@ -176,7 +176,7 @@ begin tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_srt, tmp_lvl_2_qos_stop) end - tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_qos, phase_stop_10) + tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_qos, phase_stop_9) end ref_lvl_2_q += 1 end @@ -185,7 +185,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" index 9f2296f3b..95c4d8516 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" @@ -77,7 +77,7 @@ begin tmp_lvl_2_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q > tmp_lvl_2_qos_stop @@ -109,8 +109,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -128,14 +128,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -151,8 +151,8 @@ begin tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -161,10 +161,10 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_q_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_q_2] = ref_lvl_3_val_2 - tmp_lvl_2_prev_coord_3 < (phase_stop_10,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_2_prev_coord_3 = (phase_stop_10,) + tmp_lvl_2_prev_coord_3 < (phase_stop_9,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_2_prev_coord_3 = (phase_stop_9,) tmp_lvldirty = true - tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_10 + tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_9 tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 end @@ -178,7 +178,7 @@ begin end tmp_lvl_2_qos_fill = tmp_lvl_2_q_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" index 1e6d18101..3870c51e6 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" @@ -78,7 +78,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key = (tmp_lvl_qos, (phase_stop_5,)) @@ -107,8 +107,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -123,14 +123,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key_2 = (tmp_lvl_qos, (ref_lvl_2_i,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) @@ -148,10 +148,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_key_2 = (tmp_lvl_qos, (phase_stop_10,)) + tmp_lvl_2_key_2 = (tmp_lvl_qos, (phase_stop_9,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -172,7 +172,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" index 364826890..00788e499 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" @@ -75,7 +75,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_idx_2[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_idx_2[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] += (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" index 41064018e..818adc31f 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" @@ -78,7 +78,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -108,8 +108,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -126,14 +126,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -150,8 +150,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -162,8 +162,8 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -175,7 +175,7 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] = (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" index 02d5bdd99..ce511673d 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" @@ -62,7 +62,7 @@ begin tmp_lvl_2_val[tmp_lvl_2_q + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true @@ -79,8 +79,8 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 + phase_stop_7 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_7 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -98,24 +98,24 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1) - if phase_stop_10 >= 1 + phase_stop_8 = min(ref_lvl_2.shape, ref_lvl_2_i1) + if phase_stop_8 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_8 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) + if ref_lvl_2_i == phase_stop_10 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true - tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_10] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break @@ -123,7 +123,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_9 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" index 22d76ec93..9f391f583 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" @@ -90,7 +90,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -127,8 +127,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -147,14 +147,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -177,8 +177,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -187,7 +187,7 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - if phase_stop_10 > tmp_lvl_2_i_prev_2 + 1 + if phase_stop_9 > tmp_lvl_2_i_prev_2 + 1 tmp_lvl_2_ros_2 += 1 if tmp_lvl_2_ros_2 > tmp_lvl_2_ros_stop tmp_lvl_2_ros_stop = max(tmp_lvl_2_ros_stop << 1, 1) @@ -195,7 +195,7 @@ begin Finch.resize_if_smaller!(tmp_lvl_ofs, tmp_lvl_2_ros_stop + 1) end end - tmp_lvl_idx_2[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_10) + tmp_lvl_idx_2[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_9) tmp_lvl_2_qos_2 += 1 tmp_lvl_ofs[tmp_lvl_2_ros_2 + 1] = tmp_lvl_2_qos_2 tmp_lvl_2_prev_pos = tmp_lvl_qos @@ -209,7 +209,7 @@ begin tmp_lvl_2_ros_fill = tmp_lvl_2_ros_2 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" index 7e8f50337..a927b702a 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" @@ -80,7 +80,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -111,8 +111,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_left, tmp_lvl_qos_stop) @@ -130,14 +130,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,8 +154,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -166,8 +166,8 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_left_2[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right_2[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left_2[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right_2[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -179,8 +179,8 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] = (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_left[tmp_lvl_qos] = phase_stop_7 - tmp_lvl_right[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_left[tmp_lvl_qos] = phase_stop_6 + tmp_lvl_right[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" index f634aa13b..8e5c0b9cc 100644 --- "a/test/reference32/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" +++ "b/test/reference32/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" @@ -36,7 +36,7 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_3 = min(ref_lvl_i, ref_lvl_2.shape, ref_lvl_2_i1) + phase_stop_3 = min(ref_lvl_i, ref_lvl_2_i1, ref_lvl_2.shape) if phase_stop_3 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) @@ -48,7 +48,7 @@ begin tmp_lvl_val[tmp_lvl_s + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_5] = ref_lvl_3_val @@ -60,9 +60,9 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 - tmp_lvl_s = tmp_lvl_q + fld(phase_stop_9 * (-1 + phase_stop_9), 2) + phase_stop_8 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_8 + tmp_lvl_s = tmp_lvl_q + fld(phase_stop_8 * (-1 + phase_stop_8), 2) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -70,22 +70,22 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1, phase_stop_9) - if phase_stop_10 >= 1 + phase_stop_9 = min(ref_lvl_2_i1, ref_lvl_2.shape, phase_stop_8) + if phase_stop_9 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_9 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_val[tmp_lvl_s + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_11 = min(ref_lvl_2_i, phase_stop_9) + if ref_lvl_2_i == phase_stop_11 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_11] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break diff --git a/test/reference32/debug_parallel_spmv.txt b/test/reference32/debug_parallel_spmv.txt index 645097a49..115ec6d7e 100644 --- a/test/reference32/debug_parallel_spmv.txt +++ b/test/reference32/debug_parallel_spmv.txt @@ -27,10 +27,10 @@ quote A_lvl_2_val = moveto(A_lvl_2_val, CPU(Threads.nthreads())) x_lvl_val = moveto(x_lvl_val, CPU(Threads.nthreads())) Threads.@threads for i_4 = 1:Threads.nthreads() - phase_start_2 = max(1, 1 + fld(A_lvl.shape * (i_4 + -1), Threads.nthreads())) + phase_start = max(1, 1 + fld(A_lvl.shape * (i_4 + -1), Threads.nthreads())) phase_stop_2 = min(A_lvl.shape, fld(A_lvl.shape * i_4, Threads.nthreads())) - if phase_stop_2 >= phase_start_2 - for j_6 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for j_6 = phase_start:phase_stop_2 y_lvl_q = (1 - 1) * A_lvl.shape + j_6 A_lvl_q = (1 - 1) * A_lvl.shape + j_6 A_lvl_2_q = A_lvl_ptr[A_lvl_q] @@ -54,7 +54,7 @@ quote y_lvl_val[y_lvl_q] = y_lvl_val[y_lvl_q] + A_lvl_3_val * x_lvl_2_val A_lvl_2_q += 1 else - phase_stop_5 = min(A_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_2_i) if A_lvl_2_i == phase_stop_5 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] x_lvl_q = (1 - 1) * x_lvl.shape + phase_stop_5 diff --git a/test/reference32/gather_hl.jl b/test/reference32/gather_hl.jl index d27279565..226f93261 100644 --- a/test/reference32/gather_hl.jl +++ b/test/reference32/gather_hl.jl @@ -24,7 +24,7 @@ begin B_val = A_lvl_2_val + B_val A_lvl_q += 1 else - phase_stop_3 = min(A_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_i) if A_lvl_i == phase_stop_3 A_lvl_2_val = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val diff --git a/test/reference32/gustavsons.jl b/test/reference32/gustavsons.jl index 72295cf8c..036342c63 100644 --- a/test/reference32/gustavsons.jl +++ b/test/reference32/gustavsons.jl @@ -92,7 +92,7 @@ begin end A_lvl_2_q_2 += 1 else - phase_stop_5 = min(A_lvl_2_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_2_i_2) if A_lvl_2_i_2 == phase_stop_5 A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_5 @@ -114,10 +114,10 @@ begin end A_lvl_2_q += 1 else - phase_stop_7 = min(A_lvl_2_i, phase_stop) - if A_lvl_2_i == phase_stop_7 + phase_stop_6 = min(phase_stop, A_lvl_2_i) + if A_lvl_2_i == phase_stop_6 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] - A_lvl_q_2 = (1 - 1) * A_lvl.shape + phase_stop_7 + A_lvl_q_2 = (1 - 1) * A_lvl.shape + phase_stop_6 A_lvl_2_q_3 = A_lvl_ptr[A_lvl_q_2] A_lvl_2_q_stop_3 = A_lvl_ptr[A_lvl_q_2 + 1] if A_lvl_2_q_3 < A_lvl_2_q_stop_3 @@ -125,14 +125,14 @@ begin else A_lvl_2_i1_3 = 0 end - phase_stop_8 = min(A_lvl_2.shape, A_lvl_2_i1_3) - if phase_stop_8 >= 1 + phase_stop_7 = min(A_lvl_2.shape, A_lvl_2_i1_3) + if phase_stop_7 >= 1 if A_lvl_idx[A_lvl_2_q_3] < 1 A_lvl_2_q_3 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_3, A_lvl_2_q_stop_3 - 1) end while true A_lvl_2_i_3 = A_lvl_idx[A_lvl_2_q_3] - if A_lvl_2_i_3 < phase_stop_8 + if A_lvl_2_i_3 < phase_stop_7 A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + A_lvl_2_i_3 w_lvl_val[w_lvl_q_2] = A_lvl_3_val * A_lvl_3_val_3 + w_lvl_val[w_lvl_q_2] @@ -147,10 +147,10 @@ begin end A_lvl_2_q_3 += 1 else - phase_stop_10 = min(A_lvl_2_i_3, phase_stop_8) - if A_lvl_2_i_3 == phase_stop_10 + phase_stop_9 = min(phase_stop_7, A_lvl_2_i_3) + if A_lvl_2_i_3 == phase_stop_9 A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] - w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_10 + w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_9 w_lvl_val[w_lvl_q_2] = A_lvl_3_val * A_lvl_3_val_3 + w_lvl_val[w_lvl_q_2] if !(w_lvl_tbl[w_lvl_q_2]) w_lvl_tbl[w_lvl_q_2] = true @@ -159,7 +159,7 @@ begin w_lvl_qos_stop = max(w_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(w_lvl_srt, w_lvl_qos_stop) end - w_lvl_srt[w_lvl_qos_fill] = (1, phase_stop_10) + w_lvl_srt[w_lvl_qos_fill] = (1, phase_stop_9) end A_lvl_2_q_3 += 1 end @@ -193,14 +193,14 @@ begin else w_lvl_i_stop = 0 end - phase_stop_13 = min(A_lvl_2.shape, w_lvl_i_stop) - if phase_stop_13 >= 1 + phase_stop_10 = min(A_lvl_2.shape, w_lvl_i_stop) + if phase_stop_10 >= 1 while w_lvl_r_3 + 1 < w_lvl_r_stop && last(w_lvl_srt[w_lvl_r_3]) < 1 w_lvl_r_3 += 1 end while true w_lvl_i_2 = last(w_lvl_srt[w_lvl_r_3]) - if w_lvl_i_2 < phase_stop_13 + if w_lvl_i_2 < phase_stop_10 w_lvl_q_3 = (1 - 1) * A_lvl_2.shape + w_lvl_i_2 w_lvl_2_val = w_lvl_val[w_lvl_q_3] if B_lvl_2_qos > B_lvl_2_qos_stop @@ -215,8 +215,8 @@ begin B_lvl_2_prev_pos = B_lvl_q w_lvl_r_3 += 1 else - phase_stop_15 = min(w_lvl_i_2, phase_stop_13) - if w_lvl_i_2 == phase_stop_15 + phase_stop_12 = min(phase_stop_10, w_lvl_i_2) + if w_lvl_i_2 == phase_stop_12 w_lvl_q_3 = (1 - 1) * A_lvl_2.shape + w_lvl_i_2 w_lvl_2_val_2 = w_lvl_val[w_lvl_q_3] if B_lvl_2_qos > B_lvl_2_qos_stop @@ -226,7 +226,7 @@ begin Finch.fill_range!(B_lvl_2_val, 0.0, B_lvl_2_qos, B_lvl_2_qos_stop) end B_lvl_2_val[B_lvl_2_qos] = w_lvl_2_val_2 - B_lvl_idx[B_lvl_2_qos] = phase_stop_15 + B_lvl_idx[B_lvl_2_qos] = phase_stop_12 B_lvl_2_qos += 1 B_lvl_2_prev_pos = B_lvl_q w_lvl_r_3 += 1 diff --git "a/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" "b/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" index 16e03a7b2..a55139596 100644 --- "a/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" +++ "b/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" @@ -62,7 +62,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_q = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_5 @@ -84,23 +84,23 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 - fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 + fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + arr_2_lvl_i_2 fmt_lvl_2_val[fmt_lvl_2_q_2] = arr_2_lvl_2_val_2 + fmt_lvl_2_val[fmt_lvl_2_q_2] @@ -115,10 +115,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_10 + fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_9 fmt_lvl_2_val[fmt_lvl_2_q_2] = arr_2_lvl_2_val_2 + fmt_lvl_2_val[fmt_lvl_2_q_2] if !(fmt_lvl_tbl[fmt_lvl_2_q_2]) fmt_lvl_tbl[fmt_lvl_2_q_2] = true @@ -127,7 +127,7 @@ begin fmt_lvl_2_qos_stop = max(fmt_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(fmt_lvl_srt, fmt_lvl_2_qos_stop) end - fmt_lvl_srt[fmt_lvl_2_qos_fill] = (fmt_lvl_q, phase_stop_10) + fmt_lvl_srt[fmt_lvl_2_qos_fill] = (fmt_lvl_q, phase_stop_9) end arr_2_lvl_q_2 += 1 end diff --git "a/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" "b/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" index 2f41fea42..691fc2a48 100644 --- "a/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" +++ "b/test/reference32/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" @@ -70,7 +70,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_key = (fmt_lvl_q, (phase_stop_5,)) @@ -94,23 +94,23 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 - fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 + fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_key_2 = (fmt_lvl_q, (arr_2_lvl_i_2,)) fmt_lvl_2_q_2 = get(fmt_lvl_tbl, fmt_lvl_2_key_2, fmt_lvl_2_qos_fill + 1) @@ -127,10 +127,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_2_key_2 = (fmt_lvl_q, (phase_stop_10,)) + fmt_lvl_2_key_2 = (fmt_lvl_q, (phase_stop_9,)) fmt_lvl_2_q_2 = get(fmt_lvl_tbl, fmt_lvl_2_key_2, fmt_lvl_2_qos_fill + 1) if fmt_lvl_2_q_2 > fmt_lvl_2_qos_stop fmt_lvl_2_qos_stop = max(fmt_lvl_2_qos_stop << 1, 1) diff --git "a/test/reference32/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" "b/test/reference32/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" index b42cee615..a8c643ba6 100644 --- "a/test/reference32/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" +++ "b/test/reference32/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" @@ -68,7 +68,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_key_2 = (1, (phase_stop_5, arr_2_lvl_i)) @@ -92,24 +92,24 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_key_3 = (1, (arr_2_lvl_i_2, phase_stop_7)) + fmt_lvl_key_3 = (1, (arr_2_lvl_i_2, phase_stop_6)) fmt_lvl_q_3 = get(fmt_lvl_tbl, fmt_lvl_key_3, fmt_lvl_qos_fill + 1) if fmt_lvl_q_3 > fmt_lvl_qos_stop fmt_lvl_qos_stop = max(fmt_lvl_qos_stop << 1, 1) @@ -124,10 +124,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_key_3 = (1, (phase_stop_10, phase_stop_7)) + fmt_lvl_key_3 = (1, (phase_stop_9, phase_stop_6)) fmt_lvl_q_3 = get(fmt_lvl_tbl, fmt_lvl_key_3, fmt_lvl_qos_fill + 1) if fmt_lvl_q_3 > fmt_lvl_qos_stop fmt_lvl_qos_stop = max(fmt_lvl_qos_stop << 1, 1) diff --git a/test/reference32/innerprod.jl b/test/reference32/innerprod.jl index 07526bd2d..a7637d577 100644 --- a/test/reference32/innerprod.jl +++ b/test/reference32/innerprod.jl @@ -44,7 +44,7 @@ begin else A_lvl_2_i1_2 = 0 end - phase_stop = min(A_lvl_2.shape, A_lvl_2_i1, A_lvl_2_i1_2) + phase_stop = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1) if phase_stop >= 1 k = 1 if A_lvl_idx[A_lvl_2_q] < 1 @@ -56,7 +56,7 @@ begin while k <= phase_stop A_lvl_2_i = A_lvl_idx[A_lvl_2_q] A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] - phase_stop_2 = min(A_lvl_2_i_2, phase_stop, A_lvl_2_i) + phase_stop_2 = min(A_lvl_2_i, A_lvl_2_i_2, phase_stop) if A_lvl_2_i == phase_stop_2 && A_lvl_2_i_2 == phase_stop_2 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] diff --git a/test/reference32/parallel_blur.jl b/test/reference32/parallel_blur.jl index 2fa8e2d46..e1114b496 100644 --- a/test/reference32/parallel_blur.jl +++ b/test/reference32/parallel_blur.jl @@ -23,10 +23,10 @@ begin output_lvl_2_val = moveto(output_lvl_2_val, cpu) Threads.@threads for i = 1:cpu.n tmp_lvl_val = moveto(val_3, CPUThread(i, cpu, Serial())) - phase_start_2 = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) + phase_start = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) phase_stop_2 = min(y_stop, fld(y_stop * i, cpu.n)) - if phase_stop_2 >= phase_start_2 - for y_8 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for y_8 = phase_start:phase_stop_2 input_lvl_q_2 = (1 - 1) * input_lvl.shape + (y_8 + 0) input_lvl_q = (1 - 1) * input_lvl.shape + y_8 input_lvl_q_3 = (1 - 1) * input_lvl.shape + (y_8 + 0) diff --git a/test/reference32/parallel_blur_sparse.jl b/test/reference32/parallel_blur_sparse.jl index 7b5ade1e4..af7512a1f 100644 --- a/test/reference32/parallel_blur_sparse.jl +++ b/test/reference32/parallel_blur_sparse.jl @@ -27,10 +27,10 @@ begin output_lvl_2_val = moveto(output_lvl_2_val, cpu) Threads.@threads for i = 1:cpu.n tmp_lvl_val = moveto(val_3, CPUThread(i, cpu, Serial())) - phase_start_2 = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) + phase_start = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) phase_stop_2 = min(y_stop, fld(y_stop * i, cpu.n)) - if phase_stop_2 >= phase_start_2 - for y_8 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for y_8 = phase_start:phase_stop_2 input_lvl_q_2 = (1 - 1) * input_lvl.shape + (y_8 + 0) input_lvl_q = (1 - 1) * input_lvl.shape + y_8 input_lvl_q_3 = (1 - 1) * input_lvl.shape + (y_8 + 0) @@ -58,7 +58,7 @@ begin else input_lvl_2_i1_3 = 0 end - phase_stop_3 = min(input_lvl_2.shape, input_lvl_2_i1_2, -1 + input_lvl_2_i1_3, 1 + input_lvl_2_i1) + phase_stop_3 = min(input_lvl_2.shape, input_lvl_2_i1_2, 1 + input_lvl_2_i1, -1 + input_lvl_2_i1_3) if phase_stop_3 >= 1 x = 1 if input_lvl_idx[input_lvl_2_q] < 1 + -1 @@ -74,7 +74,7 @@ begin input_lvl_2_i = input_lvl_idx[input_lvl_2_q] input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] - phase_stop_4 = min(phase_stop_3, input_lvl_2_i_2, -1 + input_lvl_2_i_3, 1 + input_lvl_2_i) + phase_stop_4 = min(input_lvl_2_i_2, 1 + input_lvl_2_i, -1 + input_lvl_2_i_3, phase_stop_3) if (input_lvl_2_i == phase_stop_4 + -1 && input_lvl_2_i_2 == phase_stop_4) && input_lvl_2_i_3 == phase_stop_4 + 1 input_lvl_3_val_2 = input_lvl_2_val[input_lvl_2_q_2] input_lvl_3_val = input_lvl_2_val[input_lvl_2_q] @@ -124,15 +124,15 @@ begin x = phase_stop_4 + 1 end end - phase_start_5 = max(1, 2 + input_lvl_2_i1) + phase_start_2 = max(1, input_lvl_2_i1 + 2) phase_stop_5 = min(input_lvl_2.shape, input_lvl_2_i1_2, -1 + input_lvl_2_i1_3) - if phase_stop_5 >= phase_start_5 - x = phase_start_5 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_5 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_5, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_5 >= phase_start_2 + x = phase_start_2 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_2 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_2, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end - if input_lvl_idx[input_lvl_2_q_3] < phase_start_5 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_5 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if input_lvl_idx[input_lvl_2_q_3] < phase_start_2 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_2 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while x <= phase_stop_5 input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -159,20 +159,20 @@ begin x = phase_stop_6 + 1 end end - phase_start_7 = max(1, 1 + input_lvl_2_i1_2) - phase_stop_7 = min(input_lvl_2.shape, -1 + input_lvl_2_i1_3, 1 + input_lvl_2_i1) - if phase_stop_7 >= phase_start_7 - x = phase_start_7 - if input_lvl_idx[input_lvl_2_q] < phase_start_7 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_7 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + phase_start_3 = max(1, 1 + input_lvl_2_i1_2) + phase_stop_7 = min(input_lvl_2.shape, 1 + input_lvl_2_i1, -1 + input_lvl_2_i1_3) + if phase_stop_7 >= phase_start_3 + x = phase_start_3 + if input_lvl_idx[input_lvl_2_q] < phase_start_3 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_3 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end - if input_lvl_idx[input_lvl_2_q_3] < phase_start_7 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_7 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if input_lvl_idx[input_lvl_2_q_3] < phase_start_3 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_3 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while x <= phase_stop_7 input_lvl_2_i = input_lvl_idx[input_lvl_2_q] input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] - phase_stop_8 = min(-1 + input_lvl_2_i_3, 1 + input_lvl_2_i, phase_stop_7) + phase_stop_8 = min(1 + input_lvl_2_i, -1 + input_lvl_2_i_3, phase_stop_7) if input_lvl_2_i == phase_stop_8 + -1 && input_lvl_2_i_3 == phase_stop_8 + 1 input_lvl_3_val_7 = input_lvl_2_val[input_lvl_2_q_3] input_lvl_3_val_6 = input_lvl_2_val[input_lvl_2_q] @@ -194,11 +194,11 @@ begin x = phase_stop_8 + 1 end end - phase_start_9 = max(1, 1 + input_lvl_2_i1_2, 2 + input_lvl_2_i1) + phase_start_4 = max(1, 1 + input_lvl_2_i1_2, input_lvl_2_i1 + 2) phase_stop_9 = min(input_lvl_2.shape, -1 + input_lvl_2_i1_3) - if phase_stop_9 >= phase_start_9 - if input_lvl_idx[input_lvl_2_q_3] < phase_start_9 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_9 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if phase_stop_9 >= phase_start_4 + if input_lvl_idx[input_lvl_2_q_3] < phase_start_4 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_4 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while true input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] @@ -220,15 +220,15 @@ begin end end end - phase_start_12 = max(1, input_lvl_2_i1_3) + phase_start_6 = max(1, input_lvl_2_i1_3) phase_stop_12 = min(input_lvl_2.shape, input_lvl_2_i1_2, 1 + input_lvl_2_i1) - if phase_stop_12 >= phase_start_12 - x = phase_start_12 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_12 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_12, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_12 >= phase_start_6 + x = phase_start_6 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_6 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_6, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end - if input_lvl_idx[input_lvl_2_q] < phase_start_12 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_12 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + if input_lvl_idx[input_lvl_2_q] < phase_start_6 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_6 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end while x <= phase_stop_12 input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -255,11 +255,11 @@ begin x = phase_stop_13 + 1 end end - phase_start_14 = max(1, input_lvl_2_i1_3, 2 + input_lvl_2_i1) + phase_start_7 = max(1, input_lvl_2_i1_3, input_lvl_2_i1 + 2) phase_stop_14 = min(input_lvl_2.shape, input_lvl_2_i1_2) - if phase_stop_14 >= phase_start_14 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_14 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_14, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_14 >= phase_start_7 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_7 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_7, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end while true input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -280,11 +280,11 @@ begin end end end - phase_start_16 = max(1, input_lvl_2_i1_3, 1 + input_lvl_2_i1_2) + phase_start_8 = max(1, input_lvl_2_i1_3, 1 + input_lvl_2_i1_2) phase_stop_17 = min(input_lvl_2.shape, 1 + input_lvl_2_i1) - if phase_stop_17 >= phase_start_16 - if input_lvl_idx[input_lvl_2_q] < phase_start_16 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_16 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + if phase_stop_17 >= phase_start_8 + if input_lvl_idx[input_lvl_2_q] < phase_start_8 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_8 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end while true input_lvl_2_i = input_lvl_idx[input_lvl_2_q] diff --git a/test/reference32/short_circuit.jl b/test/reference32/short_circuit.jl index ee7c5fa32..8bd640b53 100644 --- a/test/reference32/short_circuit.jl +++ b/test/reference32/short_circuit.jl @@ -24,7 +24,7 @@ begin else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -39,7 +39,7 @@ begin end y_lvl_i = y_lvl_idx[y_lvl_q] x_lvl_i = x_lvl_idx[x_lvl_q] - phase_stop_2 = min(x_lvl_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, x_lvl_i, phase_stop) if y_lvl_i == phase_stop_2 && x_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] diff --git a/test/reference32/short_circuit_bfs.jl b/test/reference32/short_circuit_bfs.jl index b18f0fc80..f22ffbefe 100644 --- a/test/reference32/short_circuit_bfs.jl +++ b/test/reference32/short_circuit_bfs.jl @@ -44,7 +44,7 @@ begin else A_lvl_2_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, A_lvl_2_i1) + phase_stop = min(y_lvl.shape, A_lvl_2_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -59,7 +59,7 @@ begin end y_lvl_i = y_lvl_idx[y_lvl_q] A_lvl_2_i = A_lvl_idx[A_lvl_2_q] - phase_stop_2 = min(A_lvl_2_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, A_lvl_2_i, phase_stop) if y_lvl_i == phase_stop_2 && A_lvl_2_i == phase_stop_2 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] y_lvl_2_val = y_lvl_val[y_lvl_q] diff --git a/test/reference32/short_circuit_sum.jl b/test/reference32/short_circuit_sum.jl index 4b1d06544..9e79cb4ce 100644 --- a/test/reference32/short_circuit_sum.jl +++ b/test/reference32/short_circuit_sum.jl @@ -26,7 +26,7 @@ begin else y_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) + phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) if phase_stop >= 1 i = 1 if x_lvl_idx[x_lvl_q] < 1 @@ -49,7 +49,7 @@ begin end x_lvl_q += 1 else - phase_stop_4 = min(phase_stop, x_lvl_i) + phase_stop_4 = min(x_lvl_i, phase_stop) if x_lvl_i == phase_stop_4 x_lvl_2_val = x_lvl_val[x_lvl_q] for i_11 = 1:phase_stop @@ -64,7 +64,7 @@ begin end x_lvl_i = x_lvl_idx[x_lvl_q] y_lvl_i = y_lvl_idx[y_lvl_q] - phase_stop_2 = min(y_lvl_i, phase_stop, x_lvl_i) + phase_stop_2 = min(x_lvl_i, y_lvl_i, phase_stop) if x_lvl_i == phase_stop_2 && y_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] @@ -82,11 +82,11 @@ begin i = phase_stop_2 + 1 end end - phase_start_5 = max(1, 1 + y_lvl_i1) + phase_start_2 = max(1, 1 + y_lvl_i1) phase_stop_6 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_6 >= phase_start_5 - if x_lvl_idx[x_lvl_q] < phase_start_5 - x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_5, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_6 >= phase_start_2 + if x_lvl_idx[x_lvl_q] < phase_start_2 + x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_2, x_lvl_q, x_lvl_q_stop - 1) end while true x_lvl_i = x_lvl_idx[x_lvl_q] diff --git a/test/reference32/sieve_hl_cond.jl b/test/reference32/sieve_hl_cond.jl index 5e59139e3..b2242f9b5 100644 --- a/test/reference32/sieve_hl_cond.jl +++ b/test/reference32/sieve_hl_cond.jl @@ -12,11 +12,11 @@ begin else A_lvl_i1 = 0 end - phase_start_2 = max(1, 1 + (1 - 1)) - phase_stop_2 = min(A_lvl.shape, A_lvl_i1, 1) - if phase_stop_2 >= phase_start_2 - if A_lvl_idx[A_lvl_q] < phase_start_2 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_2, A_lvl_q, A_lvl_q_stop - 1) + phase_start = max(1, 1 + (1 - 1)) + phase_stop_2 = min(A_lvl_i1, A_lvl.shape, 1) + if phase_stop_2 >= phase_start + if A_lvl_idx[A_lvl_q] < phase_start + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -25,7 +25,7 @@ begin B_val = A_lvl_2_val_2 + B_val A_lvl_q += 1 else - phase_stop_4 = min(A_lvl_i, phase_stop_2) + phase_stop_4 = min(phase_stop_2, A_lvl_i) if A_lvl_i == phase_stop_4 A_lvl_2_val_2 = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val_2 diff --git a/test/reference32/sieve_hl_select.jl b/test/reference32/sieve_hl_select.jl index 034809e4a..5397a69d0 100644 --- a/test/reference32/sieve_hl_select.jl +++ b/test/reference32/sieve_hl_select.jl @@ -12,11 +12,11 @@ begin else A_lvl_i1 = 0 end - phase_start_2 = max(1, 1 + (3 - 1)) - phase_stop_2 = min(A_lvl.shape, A_lvl_i1, 3) - if phase_stop_2 >= phase_start_2 - if A_lvl_idx[A_lvl_q] < phase_start_2 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_2, A_lvl_q, A_lvl_q_stop - 1) + phase_start = max(1, 1 + (3 - 1)) + phase_stop_2 = min(A_lvl_i1, A_lvl.shape, 3) + if phase_stop_2 >= phase_start + if A_lvl_idx[A_lvl_q] < phase_start + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -25,7 +25,7 @@ begin B_val = A_lvl_2_val_2 + B_val A_lvl_q += 1 else - phase_stop_4 = min(A_lvl_i, phase_stop_2) + phase_stop_4 = min(phase_stop_2, A_lvl_i) if A_lvl_i == phase_stop_4 A_lvl_2_val_2 = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val_2 diff --git a/test/reference32/sparse_conv.jl b/test/reference32/sparse_conv.jl index 21ca4b918..70963d9d1 100644 --- a/test/reference32/sparse_conv.jl +++ b/test/reference32/sparse_conv.jl @@ -39,9 +39,9 @@ begin end C_lvldirty = false v_3 = -A_lvl_i_2 - phase_start_3 = max(1, -v_3 + -2) + phase_start = max(1, -v_3 + -2) phase_stop_4 = min(F_lvl.shape, A_lvl.shape + -v_3 + -3) - if phase_stop_4 >= phase_start_3 + if phase_stop_4 >= phase_start A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -50,9 +50,9 @@ begin A_lvl_i1 = 0 end phase_stop_5 = min(phase_stop_4, -v_3 + -3 + A_lvl_i1) - if phase_stop_5 >= phase_start_3 - if A_lvl_idx[A_lvl_q] < (phase_start_3 + v_3) + 3 - A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_3 + v_3) + 3, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_5 >= phase_start + if A_lvl_idx[A_lvl_q] < (phase_start + v_3) + 3 + A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start + v_3) + 3, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -85,8 +85,8 @@ begin end A_lvl_q_2 += 1 else - phase_stop_10 = min(A_lvl_i_2, phase_stop) - if A_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(phase_stop, A_lvl_i_2) + if A_lvl_i_2 == phase_stop_9 A_lvl_2_val = A_lvl_val[A_lvl_q_2] if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) @@ -95,10 +95,10 @@ begin Finch.fill_range!(C_lvl_val, 0.0, C_lvl_qos, C_lvl_qos_stop) end C_lvldirty = false - v_5 = -phase_stop_10 - phase_start_11 = max(1, -2 + -v_5) - phase_stop_12 = min(F_lvl.shape, A_lvl.shape + -3 + -v_5) - if phase_stop_12 >= phase_start_11 + v_5 = -phase_stop_9 + phase_start_6 = max(1, -2 + -v_5) + phase_stop_11 = min(F_lvl.shape, A_lvl.shape + -3 + -v_5) + if phase_stop_11 >= phase_start_6 A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -106,26 +106,26 @@ begin else A_lvl_i1 = 0 end - phase_stop_13 = min(phase_stop_12, -3 + A_lvl_i1 + -v_5) - if phase_stop_13 >= phase_start_11 - if A_lvl_idx[A_lvl_q] < (phase_start_11 + v_5) + 3 - A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_11 + v_5) + 3, A_lvl_q, A_lvl_q_stop - 1) + phase_stop_12 = min(phase_stop_11, -3 + A_lvl_i1 + -v_5) + if phase_stop_12 >= phase_start_6 + if A_lvl_idx[A_lvl_q] < (phase_start_6 + v_5) + 3 + A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_6 + v_5) + 3, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] - phase_stop_14 = -3 + A_lvl_i + -v_5 - if phase_stop_14 < phase_stop_13 + phase_stop_13 = -3 + A_lvl_i + -v_5 + if phase_stop_13 < phase_stop_12 A_lvl_2_val_3 = A_lvl_val[A_lvl_q] - F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_14 + F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_13 F_lvl_2_val_3 = F_lvl_val[F_lvl_q] C_lvldirty = true C_lvl_val[C_lvl_qos] = C_lvl_val[C_lvl_qos] + (A_lvl_2_val != 0) * F_lvl_2_val_3 * coalesce(A_lvl_2_val_3, 0) A_lvl_q += 1 else - phase_stop_15 = min(phase_stop_13, -3 + A_lvl_i + -v_5) - if A_lvl_i == (phase_stop_15 + v_5) + 3 + phase_stop_14 = min(phase_stop_12, -3 + A_lvl_i + -v_5) + if A_lvl_i == (phase_stop_14 + v_5) + 3 A_lvl_2_val_3 = A_lvl_val[A_lvl_q] - F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_15 + F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_14 F_lvl_2_val_4 = F_lvl_val[F_lvl_q] C_lvldirty = true C_lvl_val[C_lvl_qos] = C_lvl_val[C_lvl_qos] + (A_lvl_2_val != 0) * F_lvl_2_val_4 * coalesce(A_lvl_2_val_3, 0) @@ -137,7 +137,7 @@ begin end end if C_lvldirty - C_lvl_idx[C_lvl_qos] = phase_stop_10 + C_lvl_idx[C_lvl_qos] = phase_stop_9 C_lvl_qos += 1 end A_lvl_q_2 += 1 diff --git a/test/reference32/specialvals_minimum_inf.jl b/test/reference32/specialvals_minimum_inf.jl index 947094a5a..2b893bcdf 100644 --- a/test/reference32/specialvals_minimum_inf.jl +++ b/test/reference32/specialvals_minimum_inf.jl @@ -24,7 +24,7 @@ begin x_val = min(yf_lvl_2_val, x_val) yf_lvl_q += 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 yf_lvl_2_val = yf_lvl_val[yf_lvl_q] x_val = min(x_val, yf_lvl_2_val) diff --git a/test/reference32/specialvals_minimum_missing.jl b/test/reference32/specialvals_minimum_missing.jl index 0f11f2219..03551f153 100644 --- a/test/reference32/specialvals_minimum_missing.jl +++ b/test/reference32/specialvals_minimum_missing.jl @@ -30,7 +30,7 @@ begin yf_lvl_q += 1 i = yf_lvl_i + 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 cond_3 = 0 < -i + phase_stop_3 if cond_3 @@ -50,10 +50,9 @@ begin end end end - phase_start_3 = max(1, 1 + yf_lvl_i1) - phase_stop_4 = yf_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_6 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + yf_lvl_i1) + if yf_lvl.shape >= phase_start + cond_6 = 0 < 1 + yf_lvl.shape + -phase_start if cond_6 x_val = missing end diff --git a/test/reference32/specialvals_minimum_nan.jl b/test/reference32/specialvals_minimum_nan.jl index 6b2fc91c9..ce1074558 100644 --- a/test/reference32/specialvals_minimum_nan.jl +++ b/test/reference32/specialvals_minimum_nan.jl @@ -30,7 +30,7 @@ begin yf_lvl_q += 1 i = yf_lvl_i + 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 cond_3 = 0 < -i + phase_stop_3 if cond_3 @@ -50,10 +50,9 @@ begin end end end - phase_start_3 = max(1, 1 + yf_lvl_i1) - phase_stop_4 = yf_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_6 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + yf_lvl_i1) + if yf_lvl.shape >= phase_start + cond_6 = 0 < 1 + yf_lvl.shape + -phase_start if cond_6 x_val = min(NaN, x_val) end diff --git a/test/reference32/specialvals_minimum_nothing.jl b/test/reference32/specialvals_minimum_nothing.jl index cebb8737d..0c5914c57 100644 --- a/test/reference32/specialvals_minimum_nothing.jl +++ b/test/reference32/specialvals_minimum_nothing.jl @@ -24,7 +24,7 @@ begin x_val = min(something(yf_lvl_2_val, Inf), x_val) yf_lvl_q += 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 yf_lvl_2_val = yf_lvl_val[yf_lvl_q] x_val = min(x_val, something(yf_lvl_2_val, Inf)) diff --git a/test/reference32/triangle.jl b/test/reference32/triangle.jl index 98c8049ea..394da6ea4 100644 --- a/test/reference32/triangle.jl +++ b/test/reference32/triangle.jl @@ -41,7 +41,7 @@ begin else A_lvl_2_i1_3 = 0 end - phase_stop_3 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_3) + phase_stop_3 = min(A_lvl_2.shape, A_lvl_2_i1_3, A_lvl_2_i1_2) if phase_stop_3 >= 1 k = 1 if A_lvl_idx[A_lvl_2_q_2] < 1 @@ -53,7 +53,7 @@ begin while k <= phase_stop_3 A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] A_lvl_2_i_3 = A_lvl_idx[A_lvl_2_q_3] - phase_stop_4 = min(A_lvl_2_i_3, phase_stop_3, A_lvl_2_i_2) + phase_stop_4 = min(A_lvl_2_i_2, A_lvl_2_i_3, phase_stop_3) if A_lvl_2_i_2 == phase_stop_4 && A_lvl_2_i_3 == phase_stop_4 A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] @@ -70,10 +70,10 @@ begin end A_lvl_2_q += 1 else - phase_stop_8 = min(A_lvl_2_i, phase_stop) - if A_lvl_2_i == phase_stop_8 + phase_stop_7 = min(phase_stop, A_lvl_2_i) + if A_lvl_2_i == phase_stop_7 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] - A_lvl_q_3 = (1 - 1) * A_lvl.shape + phase_stop_8 + A_lvl_q_3 = (1 - 1) * A_lvl.shape + phase_stop_7 A_lvl_2_q_2 = A_lvl_ptr[A_lvl_q_2] A_lvl_2_q_stop_2 = A_lvl_ptr[A_lvl_q_2 + 1] if A_lvl_2_q_2 < A_lvl_2_q_stop_2 @@ -88,8 +88,8 @@ begin else A_lvl_2_i1_4 = 0 end - phase_stop_9 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_4) - if phase_stop_9 >= 1 + phase_stop_8 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_4) + if phase_stop_8 >= 1 k = 1 if A_lvl_idx[A_lvl_2_q_2] < 1 A_lvl_2_q_2 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_2, A_lvl_2_q_stop_2 - 1) @@ -97,22 +97,22 @@ begin if A_lvl_idx[A_lvl_2_q_4] < 1 A_lvl_2_q_4 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_4, A_lvl_2_q_stop_4 - 1) end - while k <= phase_stop_9 + while k <= phase_stop_8 A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] A_lvl_2_i_4 = A_lvl_idx[A_lvl_2_q_4] - phase_stop_10 = min(A_lvl_2_i_2, A_lvl_2_i_4, phase_stop_9) - if A_lvl_2_i_2 == phase_stop_10 && A_lvl_2_i_4 == phase_stop_10 + phase_stop_9 = min(A_lvl_2_i_2, A_lvl_2_i_4, phase_stop_8) + if A_lvl_2_i_2 == phase_stop_9 && A_lvl_2_i_4 == phase_stop_9 A_lvl_3_val_6 = A_lvl_2_val[A_lvl_2_q_2] A_lvl_3_val_7 = A_lvl_2_val[A_lvl_2_q_4] B_val = B_val + A_lvl_3_val * A_lvl_3_val_6 * A_lvl_3_val_7 A_lvl_2_q_2 += 1 A_lvl_2_q_4 += 1 - elseif A_lvl_2_i_4 == phase_stop_10 + elseif A_lvl_2_i_4 == phase_stop_9 A_lvl_2_q_4 += 1 - elseif A_lvl_2_i_2 == phase_stop_10 + elseif A_lvl_2_i_2 == phase_stop_9 A_lvl_2_q_2 += 1 end - k = phase_stop_10 + 1 + k = phase_stop_9 + 1 end end A_lvl_2_q += 1 diff --git a/test/reference32/typical_inplace_sparse_add.txt b/test/reference32/typical_inplace_sparse_add.txt index f21502ff8..230830080 100644 --- a/test/reference32/typical_inplace_sparse_add.txt +++ b/test/reference32/typical_inplace_sparse_add.txt @@ -44,7 +44,7 @@ quote B_lvl_val[B_lvl_q] = A_lvl_2_val + B_lvl_val[B_lvl_q] A_lvl_q += 1 else - phase_stop_3 = min(A_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_i) if A_lvl_i == phase_stop_3 A_lvl_2_val = A_lvl_val[A_lvl_q] B_lvl_q = (1 - 1) * B_lvl.shape + phase_stop_3 diff --git a/test/reference32/typical_merge_gallop.txt b/test/reference32/typical_merge_gallop.txt index d02e27f62..b20bba2f6 100644 --- a/test/reference32/typical_merge_gallop.txt +++ b/test/reference32/typical_merge_gallop.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 while i <= phase_stop @@ -333,10 +333,10 @@ quote i = phase_stop_2 + 1 end end - phase_start_8 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_12 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_12 >= phase_start_8 - i = phase_start_8 + if phase_stop_12 >= phase_start + i = phase_start while i <= phase_stop_12 if x_lvl_idx[x_lvl_q] < i x_lvl_q = Finch.scansearch(x_lvl_idx, i, x_lvl_q, x_lvl_q_stop - 1) @@ -395,10 +395,10 @@ quote i = phase_stop_13 + 1 end end - phase_start_11 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_16 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_16 >= phase_start_11 - i = phase_start_11 + if phase_stop_16 >= phase_start_2 + i = phase_start_2 while i <= phase_stop_16 if y_lvl_idx[y_lvl_q] < i y_lvl_q = Finch.scansearch(y_lvl_idx, i, y_lvl_q, y_lvl_q_stop - 1) diff --git a/test/reference32/typical_merge_leadfollow.txt b/test/reference32/typical_merge_leadfollow.txt index 6686e2525..f55c10af1 100644 --- a/test/reference32/typical_merge_leadfollow.txt +++ b/test/reference32/typical_merge_leadfollow.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 while i <= phase_stop @@ -207,10 +207,10 @@ quote i = phase_stop_2 + 1 end end - phase_start_6 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_8 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_8 >= phase_start_6 - i = phase_start_6 + if phase_stop_8 >= phase_start + i = phase_start while i <= phase_stop_8 if x_lvl_idx[x_lvl_q] < i x_lvl_q = Finch.scansearch(x_lvl_idx, i, x_lvl_q, x_lvl_q_stop - 1) @@ -269,11 +269,11 @@ quote i = phase_stop_9 + 1 end end - phase_start_9 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_12 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_12 >= phase_start_9 - if y_lvl_idx[y_lvl_q] < phase_start_9 - y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_9, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_12 >= phase_start_2 + if y_lvl_idx[y_lvl_q] < phase_start_2 + y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_2, y_lvl_q, y_lvl_q_stop - 1) end while true y_lvl_i = y_lvl_idx[y_lvl_q] diff --git a/test/reference32/typical_merge_twofinger.txt b/test/reference32/typical_merge_twofinger.txt index 49829a464..dada3581e 100644 --- a/test/reference32/typical_merge_twofinger.txt +++ b/test/reference32/typical_merge_twofinger.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -50,7 +50,7 @@ quote while i <= phase_stop y_lvl_i = y_lvl_idx[y_lvl_q] x_lvl_i = x_lvl_idx[x_lvl_q] - phase_stop_2 = min(x_lvl_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, x_lvl_i, phase_stop) if y_lvl_i == phase_stop_2 && x_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] @@ -93,11 +93,11 @@ quote i = phase_stop_2 + 1 end end - phase_start_3 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_3 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_3 >= phase_start_3 - if x_lvl_idx[x_lvl_q] < phase_start_3 - x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_3, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_3 >= phase_start + if x_lvl_idx[x_lvl_q] < phase_start + x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start, x_lvl_q, x_lvl_q_stop - 1) end while true x_lvl_i = x_lvl_idx[x_lvl_q] @@ -132,11 +132,11 @@ quote end end end - phase_start_5 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_6 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_6 >= phase_start_5 - if y_lvl_idx[y_lvl_q] < phase_start_5 - y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_5, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_6 >= phase_start_2 + if y_lvl_idx[y_lvl_q] < phase_start_2 + y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_2, y_lvl_q, y_lvl_q_stop - 1) end while true y_lvl_i = y_lvl_idx[y_lvl_q] diff --git a/test/reference32/typical_spmv_csc.txt b/test/reference32/typical_spmv_csc.txt index b7e3638db..bb82c4719 100644 --- a/test/reference32/typical_spmv_csc.txt +++ b/test/reference32/typical_spmv_csc.txt @@ -65,7 +65,7 @@ quote y_lvl_val[y_lvl_q] = x_lvl_2_val * A_lvl_3_val + y_lvl_val[y_lvl_q] A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] y_lvl_q = (1 - 1) * A_lvl_2.shape + phase_stop_3 diff --git a/test/reference32/typical_spmv_sparsematrixcsc.txt b/test/reference32/typical_spmv_sparsematrixcsc.txt index 65318059c..f1d4d0110 100644 --- a/test/reference32/typical_spmv_sparsematrixcsc.txt +++ b/test/reference32/typical_spmv_sparsematrixcsc.txt @@ -58,7 +58,7 @@ quote y[A_i] = val * A_val + y[A_i] A_q += 1 else - phase_stop_3 = min(A_i, phase_stop) + phase_stop_3 = min(phase_stop, A_i) if A_i == phase_stop_3 A_val = A.nzval[A_q] y[phase_stop_3] = val * A_val + y[phase_stop_3] diff --git a/test/reference32/typical_stats_example.txt b/test/reference32/typical_stats_example.txt index 68dc12ecf..94a18e6dc 100644 --- a/test/reference32/typical_stats_example.txt +++ b/test/reference32/typical_stats_example.txt @@ -63,7 +63,7 @@ quote X_lvl_q += 1 i = X_lvl_i + 1 else - phase_stop_3 = min(X_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, X_lvl_i) if X_lvl_i == phase_stop_3 cond_2 = 0 < -i + phase_stop_3 if cond_2 @@ -88,10 +88,9 @@ quote end end end - phase_start_3 = max(1, 1 + X_lvl_i1) - phase_stop_4 = X_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_4 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + X_lvl_i1) + if X_lvl.shape >= phase_start + cond_4 = 0 < 1 + X_lvl.shape + -phase_start if cond_4 x_min_val = min(0.0, x_min_val) x_max_val = max(0.0, x_max_val) diff --git a/test/reference32/typical_transpose_csc_to_coo.txt b/test/reference32/typical_transpose_csc_to_coo.txt index 6364d0b5b..bb9a7a5ca 100644 --- a/test/reference32/typical_transpose_csc_to_coo.txt +++ b/test/reference32/typical_transpose_csc_to_coo.txt @@ -69,7 +69,7 @@ quote end A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] B_lvl_key_3 = (1, (j_4, phase_stop_3)) diff --git a/test/reference64/concat_offset_permit.jl b/test/reference64/concat_offset_permit.jl index 9babf0058..35d6b5885 100644 --- a/test/reference64/concat_offset_permit.jl +++ b/test/reference64/concat_offset_permit.jl @@ -60,7 +60,7 @@ begin C_lvl_qos += 1 A_lvl_q += 1 else - phase_stop_5 = min(A_lvl_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_i) if A_lvl_i == phase_stop_5 A_lvl_2_val = A_lvl_val[A_lvl_q] if C_lvl_qos > C_lvl_qos_stop @@ -79,10 +79,10 @@ begin end end end - phase_start_6 = max(1, 1 + A_lvl.shape) + phase_start_2 = max(1, 1 + A_lvl.shape) phase_stop_7 = min(C_lvl.shape, 10) - if phase_stop_7 >= phase_start_6 - for i_14 = phase_start_6:phase_stop_7 + if phase_stop_7 >= phase_start_2 + for i_14 = phase_start_2:phase_stop_7 if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) @@ -204,11 +204,11 @@ begin i = phase_stop_15 + 1 end end - phase_start_16 = max(11 + B_lvl_i1, 11) + phase_start_6 = max(11, 11 + B_lvl_i1) phase_stop_17 = min(A_lvl_i1, phase_stop_13) - if phase_stop_17 >= phase_start_16 - if A_lvl_idx[A_lvl_q] < phase_start_16 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_16, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_17 >= phase_start_6 + if A_lvl_idx[A_lvl_q] < phase_start_6 + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_6, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -244,9 +244,9 @@ begin end end end - phase_start_19 = max(11, 1 + A_lvl.shape) + phase_start_8 = max(11, 1 + A_lvl.shape) phase_stop_21 = min(C_lvl.shape, 10 + B_lvl.shape) - if phase_stop_21 >= phase_start_19 + if phase_stop_21 >= phase_start_8 B_lvl_q = B_lvl_ptr[1] B_lvl_q_stop = B_lvl_ptr[1 + 1] if B_lvl_q < B_lvl_q_stop @@ -255,9 +255,9 @@ begin B_lvl_i1 = 0 end phase_stop_22 = min(10 + B_lvl_i1, phase_stop_21) - if phase_stop_22 >= phase_start_19 - if B_lvl_idx[B_lvl_q] < phase_start_19 + -10 - B_lvl_q = Finch.scansearch(B_lvl_idx, phase_start_19 + -10, B_lvl_q, B_lvl_q_stop - 1) + if phase_stop_22 >= phase_start_8 + if B_lvl_idx[B_lvl_q] < phase_start_8 + -10 + B_lvl_q = Finch.scansearch(B_lvl_idx, phase_start_8 + -10, B_lvl_q, B_lvl_q_stop - 1) end while true B_lvl_i = B_lvl_idx[B_lvl_q] @@ -294,10 +294,10 @@ begin end end end - phase_start_24 = max(1, 11 + B_lvl.shape) + phase_start_12 = max(1, 11 + B_lvl.shape) phase_stop_26 = min(C_lvl.shape, 0) - if phase_stop_26 >= phase_start_24 - for i_39 = phase_start_24:phase_stop_26 + if phase_stop_26 >= phase_start_12 + for i_39 = phase_start_12:phase_stop_26 if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) @@ -309,9 +309,9 @@ begin C_lvl_qos += 1 end end - phase_start_25 = max(1, 11 + B_lvl.shape) + phase_start_13 = max(1, 11 + B_lvl.shape) phase_stop_27 = min(C_lvl.shape, A_lvl.shape) - if phase_stop_27 >= phase_start_25 + if phase_stop_27 >= phase_start_13 A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -320,9 +320,9 @@ begin A_lvl_i1 = 0 end phase_stop_28 = min(A_lvl_i1, phase_stop_27) - if phase_stop_28 >= phase_start_25 - if A_lvl_idx[A_lvl_q] < phase_start_25 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_25, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_28 >= phase_start_13 + if A_lvl_idx[A_lvl_q] < phase_start_13 + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_13, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -358,10 +358,9 @@ begin end end end - phase_start_29 = max(1, 1 + A_lvl.shape, 11 + B_lvl.shape) - phase_stop_32 = C_lvl.shape - if phase_stop_32 >= phase_start_29 - for i_47 = phase_start_29:phase_stop_32 + phase_start_16 = max(1, 1 + A_lvl.shape, 11 + B_lvl.shape) + if C_lvl.shape >= phase_start_16 + for i_47 = phase_start_16:C_lvl.shape if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(C_lvl_idx, C_lvl_qos_stop) diff --git a/test/reference64/continuous_2d_intersect.txt b/test/reference64/continuous_2d_intersect.txt index ae995327c..541781b01 100644 --- a/test/reference64/continuous_2d_intersect.txt +++ b/test/reference64/continuous_2d_intersect.txt @@ -57,7 +57,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -67,88 +67,92 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(y_lvl_2_i_stop_2, phase_stop_7, x_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_8 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = z_lvl_2_val[z_lvl_2_qos] + x_lvl_3_val_2 * y_lvl_3_val_2 + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_6 + z_lvl_right_2[z_lvl_2_qos] = phase_stop_8 + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) end - z_lvl_2_val[z_lvl_2_qos] = z_lvl_2_val[z_lvl_2_qos] + x_lvl_3_val_2 * y_lvl_3_val_2 - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_12 - z_lvl_right_2[z_lvl_2_qos] = phase_stop_8 - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) + end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 - end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end z_lvl_ptr[1 + 1] = (z_lvl_qos - 0) - 1 diff --git a/test/reference64/continuous_2d_intersect_counting.txt b/test/reference64/continuous_2d_intersect_counting.txt index c814b7334..ee13698e4 100644 --- a/test/reference64/continuous_2d_intersect_counting.txt +++ b/test/reference64/continuous_2d_intersect_counting.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,65 +51,69 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - cond = -phase_start_6 + phase_stop_2 == 0 - if cond - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + cond = -phase_start_3 + phase_stop_2 == 0 + if cond + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(y_lvl_2_i_stop_2, phase_stop_7, x_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - cond_2 = -phase_start_12 + phase_stop_8 == 0 - if cond_2 - s_val = s_val + x_lvl_3_val_2 * y_lvl_3_val_2 + phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_8 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + cond_2 = -phase_start_6 + phase_stop_8 == 0 + if cond_2 + s_val = s_val + x_lvl_3_val_2 * y_lvl_3_val_2 + end + end + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) end end - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int64}(s_val),) diff --git a/test/reference64/continuous_2d_intersect_lebesgue.txt b/test/reference64/continuous_2d_intersect_lebesgue.txt index d8cd4376f..8cbeb7e16 100644 --- a/test/reference64/continuous_2d_intersect_lebesgue.txt +++ b/test/reference64/continuous_2d_intersect_lebesgue.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,59 +51,63 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_7 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) - if phase_stop_7 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_7 - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - phase_start_8 = j - phase_stop_8 = min(x_lvl_2_i_stop_2, phase_stop_7, y_lvl_2_i_stop_2) - phase_start_12 = max(phase_start_8, y_lvl_2_i_start_2, x_lvl_2_i_start_2) - if phase_stop_8 >= phase_start_12 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * drop_eps(-phase_start_12 + phase_stop_8) * y_lvl_3_val_2 * x_lvl_3_val_2 + phase_stop_7 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) + if phase_stop_7 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while j <= phase_stop_7 + j_start_2 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + phase_stop_8 = min(y_lvl_2_i_stop_2, x_lvl_2_i_stop_2, phase_stop_7) + if phase_stop_8 >= j + phase_start_6 = max(j_start_2, x_lvl_2_i_start_2, y_lvl_2_i_start_2) + if phase_stop_8 >= phase_start_6 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * drop_eps(-phase_start_6 + phase_stop_8) * y_lvl_3_val_2 * x_lvl_3_val_2 + end + y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 + x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 + j = phase_stop_8 + limit(0+ϵ) + end end - y_lvl_2_q_2 += phase_stop_8 == y_lvl_2_i_stop_2 - x_lvl_2_q_2 += phase_stop_8 == x_lvl_2_i_stop_2 - j = phase_stop_8 + limit(0+ϵ) end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int64}(s_val),) diff --git a/test/reference64/continuous_2d_itvl_sum_rle.txt b/test/reference64/continuous_2d_itvl_sum_rle.txt index 4ba747cef..bfc846dc0 100644 --- a/test/reference64/continuous_2d_itvl_sum_rle.txt +++ b/test/reference64/continuous_2d_itvl_sum_rle.txt @@ -50,7 +50,7 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_3 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) + phase_stop_3 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) if phase_stop_3 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -60,27 +60,29 @@ quote x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end while j <= phase_stop_3 + j_start_2 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_3 = j - phase_stop_4 = min(x1_lvl_2_i_stop, phase_stop_3, y_lvl_i_stop) - phase_start_7 = max(phase_start_3, y_lvl_i_start, x1_lvl_2_i_start) - if phase_stop_4 >= phase_start_7 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] - s2_val = s2_val + drop_eps(-phase_start_7 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + phase_stop_4 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_3) + if phase_stop_4 >= j + phase_start_3 = max(j_start_2, x1_lvl_2_i_start, y_lvl_i_start) + if phase_stop_4 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] + s2_val = s2_val + drop_eps(-phase_start_3 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_4 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop + j = phase_stop_4 + limit(0+ϵ) end - y_lvl_q += phase_stop_4 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop - j = phase_stop_4 + limit(0+ϵ) end end x1_lvl_q += 1 else - phase_stop_12 = min(x1_lvl_i, phase_stop) - if x1_lvl_i == phase_stop_12 + phase_stop_11 = min(phase_stop, x1_lvl_i) + if x1_lvl_i == phase_stop_11 y_lvl_q = y_lvl_ptr[1] y_lvl_q_stop = y_lvl_ptr[1 + 1] if y_lvl_q < y_lvl_q_stop @@ -95,8 +97,8 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_13 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) - if phase_stop_13 >= limit(1.0) + phase_stop_12 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) + if phase_stop_12 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) y_lvl_q = Finch.scansearch(y_lvl_right, limit(1.0), y_lvl_q, y_lvl_q_stop - 1) @@ -104,22 +106,24 @@ quote if x1_lvl_right[x1_lvl_2_q] < limit(1.0) x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end - while j <= phase_stop_13 + while j <= phase_stop_12 + j_start_5 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_13 = j - phase_stop_14 = min(x1_lvl_2_i_stop, y_lvl_i_stop, phase_stop_13) - phase_start_17 = max(y_lvl_i_start, x1_lvl_2_i_start, phase_start_13) - if phase_stop_14 >= phase_start_17 - y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] - s2_val = s2_val + drop_eps(-phase_start_17 + phase_stop_14) * x1_lvl_3_val_4 * y_lvl_2_val_4 + phase_stop_13 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_12) + if phase_stop_13 >= j + phase_start_9 = max(x1_lvl_2_i_start, y_lvl_i_start, j_start_5) + if phase_stop_13 >= phase_start_9 + y_lvl_2_val_4 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] + s2_val = s2_val + drop_eps(-phase_start_9 + phase_stop_13) * x1_lvl_3_val_4 * y_lvl_2_val_4 + end + y_lvl_q += phase_stop_13 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_13 == x1_lvl_2_i_stop + j = phase_stop_13 + limit(0+ϵ) end - y_lvl_q += phase_stop_14 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_14 == x1_lvl_2_i_stop - j = phase_stop_14 + limit(0+ϵ) end end x1_lvl_q += 1 diff --git a/test/reference64/continuous_2d_itvl_sum_sl.txt b/test/reference64/continuous_2d_itvl_sum_sl.txt index f1ecfd5c1..1d91251a8 100644 --- a/test/reference64/continuous_2d_itvl_sum_sl.txt +++ b/test/reference64/continuous_2d_itvl_sum_sl.txt @@ -50,7 +50,7 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_3 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) + phase_stop_3 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) if phase_stop_3 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -60,27 +60,29 @@ quote x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end while j <= phase_stop_3 + j_start_2 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_3 = j - phase_stop_4 = min(x1_lvl_2_i_stop, phase_stop_3, y_lvl_i_stop) - phase_start_7 = max(phase_start_3, y_lvl_i_start, x1_lvl_2_i_start) - if phase_stop_4 >= phase_start_7 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] - s1_val = s1_val + drop_eps(-phase_start_7 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + phase_stop_4 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_3) + if phase_stop_4 >= j + phase_start_3 = max(j_start_2, x1_lvl_2_i_start, y_lvl_i_start) + if phase_stop_4 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_2 = x1_lvl_2_val[x1_lvl_2_q] + s1_val = s1_val + drop_eps(-phase_start_3 + phase_stop_4) * x1_lvl_3_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_4 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop + j = phase_stop_4 + limit(0+ϵ) end - y_lvl_q += phase_stop_4 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_4 == x1_lvl_2_i_stop - j = phase_stop_4 + limit(0+ϵ) end end x1_lvl_q += 1 else - phase_stop_12 = min(x1_lvl_i, phase_stop) - if x1_lvl_i == phase_stop_12 + phase_stop_11 = min(phase_stop, x1_lvl_i) + if x1_lvl_i == phase_stop_11 y_lvl_q = y_lvl_ptr[1] y_lvl_q_stop = y_lvl_ptr[1 + 1] if y_lvl_q < y_lvl_q_stop @@ -95,8 +97,8 @@ quote else x1_lvl_2_i_end = 0.0f0 end - phase_stop_13 = min(y_lvl.shape, y_lvl_i_end, x1_lvl_2_i_end) - if phase_stop_13 >= limit(1.0) + phase_stop_12 = min(y_lvl.shape, x1_lvl_2_i_end, y_lvl_i_end) + if phase_stop_12 >= limit(1.0) j = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) y_lvl_q = Finch.scansearch(y_lvl_right, limit(1.0), y_lvl_q, y_lvl_q_stop - 1) @@ -104,22 +106,24 @@ quote if x1_lvl_right[x1_lvl_2_q] < limit(1.0) x1_lvl_2_q = Finch.scansearch(x1_lvl_right, limit(1.0), x1_lvl_2_q, x1_lvl_2_q_stop - 1) end - while j <= phase_stop_13 + while j <= phase_stop_12 + j_start_5 = j y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x1_lvl_2_i_start = x1_lvl_left[x1_lvl_2_q] x1_lvl_2_i_stop = x1_lvl_right[x1_lvl_2_q] - phase_start_13 = j - phase_stop_14 = min(x1_lvl_2_i_stop, y_lvl_i_stop, phase_stop_13) - phase_start_17 = max(y_lvl_i_start, x1_lvl_2_i_start, phase_start_13) - if phase_stop_14 >= phase_start_17 - y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] - s1_val = s1_val + drop_eps(-phase_start_17 + phase_stop_14) * x1_lvl_3_val_4 * y_lvl_2_val_4 + phase_stop_13 = min(y_lvl_i_stop, x1_lvl_2_i_stop, phase_stop_12) + if phase_stop_13 >= j + phase_start_9 = max(x1_lvl_2_i_start, y_lvl_i_start, j_start_5) + if phase_stop_13 >= phase_start_9 + y_lvl_2_val_4 = y_lvl_val[y_lvl_q] + x1_lvl_3_val_4 = x1_lvl_2_val[x1_lvl_2_q] + s1_val = s1_val + drop_eps(-phase_start_9 + phase_stop_13) * x1_lvl_3_val_4 * y_lvl_2_val_4 + end + y_lvl_q += phase_stop_13 == y_lvl_i_stop + x1_lvl_2_q += phase_stop_13 == x1_lvl_2_i_stop + j = phase_stop_13 + limit(0+ϵ) end - y_lvl_q += phase_stop_14 == y_lvl_i_stop - x1_lvl_2_q += phase_stop_14 == x1_lvl_2_i_stop - j = phase_stop_14 + limit(0+ϵ) end end x1_lvl_q += 1 diff --git a/test/reference64/continuous_2d_union.txt b/test/reference64/continuous_2d_union.txt index cf1afb151..fd645ed47 100644 --- a/test/reference64/continuous_2d_union.txt +++ b/test/reference64/continuous_2d_union.txt @@ -57,7 +57,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -67,422 +67,422 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + z_lvldirty = false + z_lvl_2_qos = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 + end + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val + z_lvl_2_val[z_lvl_2_qos] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_2 + z_lvl_right_2[z_lvl_2_qos] = y_lvl_2_i_stop + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val + z_lvl_2_val[z_lvl_2_qos] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_7 - z_lvl_right_2[z_lvl_2_qos] = y_lvl_2_i_stop - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - if z_lvl_2_qos > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + if z_lvl_2_qos > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos] = phase_start_3 + z_lvl_right_2[z_lvl_2_qos] = phase_stop_9 + z_lvl_2_qos += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos] = y_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos] = phase_start_10 - z_lvl_right_2[z_lvl_2_qos] = phase_stop_9 - z_lvl_2_qos += 1 - z_lvl_2_prev_pos = z_lvl_qos + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start + z_lvl_right[z_lvl_qos] = phase_stop_4 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_4 - z_lvl_right[z_lvl_qos] = phase_stop_4 - z_lvl_qos += 1 - end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos_2 = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos_2 = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - if z_lvl_2_qos_2 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + if z_lvl_2_qos_2 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val + z_lvl_2_val[z_lvl_2_qos_2] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_2] = phase_start_6 + z_lvl_right_2[z_lvl_2_qos_2] = x_lvl_2_i_stop + z_lvl_2_qos_2 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val + z_lvl_2_val[z_lvl_2_qos_2] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_2] = phase_start_15 - z_lvl_right_2[z_lvl_2_qos_2] = x_lvl_2_i_stop - z_lvl_2_qos_2 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - if z_lvl_2_qos_2 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + if z_lvl_2_qos_2 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_2, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos_2] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_2] = phase_start_7 + z_lvl_right_2[z_lvl_2_qos_2] = phase_stop_17 + z_lvl_2_qos_2 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_2] = x_lvl_3_val_2 + z_lvl_2_val[z_lvl_2_qos_2] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_2] = phase_start_18 - z_lvl_right_2[z_lvl_2_qos_2] = phase_stop_18 - z_lvl_2_qos_2 += 1 - z_lvl_2_prev_pos = z_lvl_qos + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_2 - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos_2 - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_5 + z_lvl_right[z_lvl_qos] = phase_stop_12 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_2 - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos_2 - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_12 - z_lvl_right[z_lvl_qos] = phase_stop_13 - z_lvl_qos += 1 - end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) - Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) - end - z_lvldirty = false - z_lvl_2_qos_3 = z_lvl_2_qos_fill + 1 - z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_ptr_2, z_lvl_qos_stop + 1) + Finch.fill_range!(z_lvl_ptr_2, 0, z_lvl_qos + 1, z_lvl_qos_stop + 1) + end + z_lvldirty = false + z_lvl_2_qos_3 = z_lvl_2_qos_fill + 1 + z_lvl_2_prev_pos < z_lvl_qos || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) - end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_24 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_26 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) - end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_25 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_27 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_10 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_24 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_3 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_11 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_25 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_4 + z_lvl_2_val[z_lvl_2_qos_3] + x_lvl_3_val_4 + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_12 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_22 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_4 + z_lvl_2_val[z_lvl_2_qos_3] + x_lvl_3_val_4 - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_26 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_24 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) - end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_14 + z_lvl_right_2[z_lvl_2_qos_3] = y_lvl_2_i_stop_2 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_29 - z_lvl_right_2[z_lvl_2_qos_3] = y_lvl_2_i_stop_2 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_15 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_31 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = y_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_32 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_33 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_17 + z_lvl_right_2[z_lvl_2_qos_3] = x_lvl_2_i_stop_2 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_5 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_35 - z_lvl_right_2[z_lvl_2_qos_3] = x_lvl_2_i_stop_2 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - if z_lvl_2_qos_3 > z_lvl_2_qos_stop - z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) - Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) - Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + if z_lvl_2_qos_3 > z_lvl_2_qos_stop + z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_right_2, z_lvl_2_qos_stop) + Finch.resize_if_smaller!(z_lvl_2_val, z_lvl_2_qos_stop) + Finch.fill_range!(z_lvl_2_val, 0, z_lvl_2_qos_3, z_lvl_2_qos_stop) + end + z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] + z_lvldirty = true + z_lvl_left_2[z_lvl_2_qos_3] = phase_start_18 + z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_38 + z_lvl_2_qos_3 += 1 + z_lvl_2_prev_pos = z_lvl_qos end - z_lvl_2_val[z_lvl_2_qos_3] = x_lvl_3_val_6 + z_lvl_2_val[z_lvl_2_qos_3] - z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_3] = phase_start_38 - z_lvl_right_2[z_lvl_2_qos_3] = phase_stop_40 - z_lvl_2_qos_3 += 1 - z_lvl_2_prev_pos = z_lvl_qos + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end + z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_3 - z_lvl_2_qos_fill) - 1 + z_lvl_2_qos_fill = z_lvl_2_qos_3 - 1 + if z_lvldirty + z_lvl_left[z_lvl_qos] = phase_start_9 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 + end end - z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_3 - z_lvl_2_qos_fill) - 1 - z_lvl_2_qos_fill = z_lvl_2_qos_3 - 1 - if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_20 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 - end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -500,8 +500,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -510,9 +510,9 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] if z_lvl_2_qos_4 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -523,7 +523,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_4] = x_lvl_3_val_7 + z_lvl_2_val[z_lvl_2_qos_4] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_4] = phase_start_45 + z_lvl_left_2[z_lvl_2_qos_4] = phase_start_22 z_lvl_right_2[z_lvl_2_qos_4] = x_lvl_2_i_stop_3 z_lvl_2_qos_4 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -531,10 +531,9 @@ quote x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] if z_lvl_2_qos_4 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -545,13 +544,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_4] = x_lvl_3_val_8 + z_lvl_2_val[z_lvl_2_qos_4] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_4] = phase_start_48 - z_lvl_right_2[z_lvl_2_qos_4] = phase_stop_52 + z_lvl_left_2[z_lvl_2_qos_4] = phase_start_23 + z_lvl_right_2[z_lvl_2_qos_4] = phase_stop_49 z_lvl_2_qos_4 += 1 z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -559,7 +558,7 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_4 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_4 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_42 + z_lvl_left[z_lvl_qos] = phase_start_21 z_lvl_right[z_lvl_qos] = x_lvl_i_stop z_lvl_qos += 1 end @@ -567,10 +566,9 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -588,8 +586,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -598,9 +596,9 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] if z_lvl_2_qos_5 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -611,7 +609,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_5] = x_lvl_3_val_9 + z_lvl_2_val[z_lvl_2_qos_5] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_5] = phase_start_55 + z_lvl_left_2[z_lvl_2_qos_5] = phase_start_26 z_lvl_right_2[z_lvl_2_qos_5] = x_lvl_2_i_stop_4 z_lvl_2_qos_5 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -619,10 +617,9 @@ quote x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] if z_lvl_2_qos_5 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -633,13 +630,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_5] = x_lvl_3_val_10 + z_lvl_2_val[z_lvl_2_qos_5] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_5] = phase_start_58 - z_lvl_right_2[z_lvl_2_qos_5] = phase_stop_63 + z_lvl_left_2[z_lvl_2_qos_5] = phase_start_27 + z_lvl_right_2[z_lvl_2_qos_5] = phase_stop_59 z_lvl_2_qos_5 += 1 z_lvl_2_prev_pos = z_lvl_qos end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end @@ -647,31 +644,31 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_5 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_5 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_52 - z_lvl_right[z_lvl_qos] = phase_stop_56 + z_lvl_left[z_lvl_qos] = phase_start_25 + z_lvl_right[z_lvl_qos] = phase_stop_52 z_lvl_qos += 1 end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -689,8 +686,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -699,9 +696,9 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] if z_lvl_2_qos_6 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -712,7 +709,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_6] = y_lvl_3_val_7 + z_lvl_2_val[z_lvl_2_qos_6] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_6] = phase_start_65 + z_lvl_left_2[z_lvl_2_qos_6] = phase_start_31 z_lvl_right_2[z_lvl_2_qos_6] = y_lvl_2_i_stop_3 z_lvl_2_qos_6 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -720,10 +717,9 @@ quote y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] if z_lvl_2_qos_6 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -734,13 +730,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_6] = y_lvl_3_val_8 + z_lvl_2_val[z_lvl_2_qos_6] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_6] = phase_start_68 - z_lvl_right_2[z_lvl_2_qos_6] = phase_stop_75 + z_lvl_left_2[z_lvl_2_qos_6] = phase_start_32 + z_lvl_right_2[z_lvl_2_qos_6] = phase_stop_70 z_lvl_2_qos_6 += 1 z_lvl_2_prev_pos = z_lvl_qos end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -748,7 +744,7 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_6 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_6 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_62 + z_lvl_left[z_lvl_qos] = phase_start_30 z_lvl_right[z_lvl_qos] = y_lvl_i_stop z_lvl_qos += 1 end @@ -756,10 +752,9 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) @@ -777,8 +772,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -787,9 +782,9 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] if z_lvl_2_qos_7 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -800,7 +795,7 @@ quote end z_lvl_2_val[z_lvl_2_qos_7] = y_lvl_3_val_9 + z_lvl_2_val[z_lvl_2_qos_7] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_7] = phase_start_75 + z_lvl_left_2[z_lvl_2_qos_7] = phase_start_35 z_lvl_right_2[z_lvl_2_qos_7] = y_lvl_2_i_stop_4 z_lvl_2_qos_7 += 1 z_lvl_2_prev_pos = z_lvl_qos @@ -808,10 +803,9 @@ quote y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] if z_lvl_2_qos_7 > z_lvl_2_qos_stop z_lvl_2_qos_stop = max(z_lvl_2_qos_stop << 1, 1) @@ -822,13 +816,13 @@ quote end z_lvl_2_val[z_lvl_2_qos_7] = y_lvl_3_val_10 + z_lvl_2_val[z_lvl_2_qos_7] z_lvldirty = true - z_lvl_left_2[z_lvl_2_qos_7] = phase_start_78 - z_lvl_right_2[z_lvl_2_qos_7] = phase_stop_86 + z_lvl_left_2[z_lvl_2_qos_7] = phase_start_36 + z_lvl_right_2[z_lvl_2_qos_7] = phase_stop_80 z_lvl_2_qos_7 += 1 z_lvl_2_prev_pos = z_lvl_qos end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end @@ -836,13 +830,13 @@ quote z_lvl_ptr_2[z_lvl_qos + 1] = (z_lvl_2_qos_7 - z_lvl_2_qos_fill) - 1 z_lvl_2_qos_fill = z_lvl_2_qos_7 - 1 if z_lvldirty - z_lvl_left[z_lvl_qos] = phase_start_72 - z_lvl_right[z_lvl_qos] = phase_stop_79 + z_lvl_left[z_lvl_qos] = phase_start_34 + z_lvl_right[z_lvl_qos] = phase_stop_73 z_lvl_qos += 1 end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference64/continuous_2d_union_counting.txt b/test/reference64/continuous_2d_union_counting.txt index bc6076068..b241c78f4 100644 --- a/test/reference64/continuous_2d_union_counting.txt +++ b/test/reference64/continuous_2d_union_counting.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,282 +51,282 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - cond = -phase_start_4 + phase_stop_4 == 0 - if cond - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + cond = -phase_start + phase_stop_4 == 0 + if cond + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - cond_2 = -phase_start_7 + y_lvl_2_i_stop == 0 - if cond_2 - s_val = y_lvl_3_val + s_val + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + cond_2 = -phase_start_2 + y_lvl_2_i_stop == 0 + if cond_2 + s_val = y_lvl_3_val + s_val + end end - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - cond_3 = -phase_start_10 + phase_stop_9 == 0 - if cond_3 - s_val = s_val + y_lvl_3_val_2 + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + cond_3 = -phase_start_3 + phase_stop_9 == 0 + if cond_3 + s_val = s_val + y_lvl_3_val_2 + end end + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end end end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - cond_4 = -phase_start_12 + phase_stop_13 == 0 - if cond_4 - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + cond_4 = -phase_start_5 + phase_stop_12 == 0 + if cond_4 + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - cond_5 = -phase_start_15 + x_lvl_2_i_stop == 0 - if cond_5 - s_val = s_val + x_lvl_3_val + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + cond_5 = -phase_start_6 + x_lvl_2_i_stop == 0 + if cond_5 + s_val = s_val + x_lvl_3_val + end end - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - cond_6 = -phase_start_18 + phase_stop_18 == 0 - if cond_6 - s_val = s_val + x_lvl_3_val_2 + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + cond_6 = -phase_start_7 + phase_stop_17 == 0 + if cond_6 + s_val = s_val + x_lvl_3_val_2 + end end + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end end end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - cond_7 = -phase_start_20 + phase_stop_2 == 0 - if cond_7 - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + cond_7 = -phase_start_9 + phase_stop_2 == 0 + if cond_7 + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - cond_8 = -phase_start_24 + phase_stop_26 == 0 - if cond_8 - s_val = s_val + x_lvl_3_val_3 - end + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - cond_9 = -phase_start_25 + phase_stop_27 == 0 - if cond_9 - s_val = s_val + y_lvl_3_val_3 - end + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - cond_10 = -phase_start_26 + phase_stop_24 == 0 - if cond_10 - s_val = s_val + y_lvl_3_val_4 + x_lvl_3_val_4 + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + cond_8 = -phase_start_10 + phase_stop_24 == 0 + if cond_8 + s_val = s_val + x_lvl_3_val_3 + end + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + cond_9 = -phase_start_11 + phase_stop_25 == 0 + if cond_9 + s_val = s_val + y_lvl_3_val_3 + end + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + cond_10 = -phase_start_12 + phase_stop_22 == 0 + if cond_10 + s_val = s_val + y_lvl_3_val_4 + x_lvl_3_val_4 + end + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) end end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) - end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - cond_11 = -phase_start_29 + y_lvl_2_i_stop_2 == 0 - if cond_11 - s_val = s_val + y_lvl_3_val_5 + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + cond_11 = -phase_start_14 + y_lvl_2_i_stop_2 == 0 + if cond_11 + s_val = s_val + y_lvl_3_val_5 + end end - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - cond_12 = -phase_start_32 + phase_stop_33 == 0 - if cond_12 - s_val = s_val + y_lvl_3_val_6 + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + cond_12 = -phase_start_15 + phase_stop_31 == 0 + if cond_12 + s_val = s_val + y_lvl_3_val_6 + end end + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - cond_13 = -phase_start_35 + x_lvl_2_i_stop_2 == 0 - if cond_13 - s_val = s_val + x_lvl_3_val_5 + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + cond_13 = -phase_start_17 + x_lvl_2_i_stop_2 == 0 + if cond_13 + s_val = s_val + x_lvl_3_val_5 + end end - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - cond_14 = -phase_start_38 + phase_stop_40 == 0 - if cond_14 - s_val = s_val + x_lvl_3_val_6 + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + cond_14 = -phase_start_18 + phase_stop_38 == 0 + if cond_14 + s_val = s_val + x_lvl_3_val_6 + end end + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 - cond_15 = -phase_start_42 + x_lvl_i_stop == 0 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 + cond_15 = -phase_start_21 + x_lvl_i_stop == 0 if cond_15 x_lvl_2_q_3 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_3 = x_lvl_ptr_2[x_lvl_q + 1] @@ -335,8 +335,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -345,11 +345,11 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] - cond_16 = -phase_start_45 + x_lvl_2_i_stop_3 == 0 + cond_16 = -phase_start_22 + x_lvl_2_i_stop_3 == 0 if cond_16 s_val = s_val + x_lvl_3_val_7 end @@ -357,18 +357,17 @@ quote x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] - cond_17 = -phase_start_48 + phase_stop_52 == 0 + cond_17 = -phase_start_23 + phase_stop_49 == 0 if cond_17 s_val = s_val + x_lvl_3_val_8 end end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -378,11 +377,10 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 - cond_18 = -phase_start_52 + phase_stop_56 == 0 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 + cond_18 = -phase_start_25 + phase_stop_52 == 0 if cond_18 x_lvl_2_q_4 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_4 = x_lvl_ptr_2[x_lvl_q + 1] @@ -391,8 +389,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -401,11 +399,11 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] - cond_19 = -phase_start_55 + x_lvl_2_i_stop_4 == 0 + cond_19 = -phase_start_26 + x_lvl_2_i_stop_4 == 0 if cond_19 s_val = s_val + x_lvl_3_val_9 end @@ -413,45 +411,44 @@ quote x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] - cond_20 = -phase_start_58 + phase_stop_63 == 0 + cond_20 = -phase_start_27 + phase_stop_59 == 0 if cond_20 s_val = s_val + x_lvl_3_val_10 end end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end end end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 - cond_21 = -phase_start_62 + y_lvl_i_stop == 0 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 + cond_21 = -phase_start_30 + y_lvl_i_stop == 0 if cond_21 y_lvl_2_q_3 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_3 = y_lvl_ptr_2[y_lvl_q + 1] @@ -460,8 +457,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -470,11 +467,11 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] - cond_22 = -phase_start_65 + y_lvl_2_i_stop_3 == 0 + cond_22 = -phase_start_31 + y_lvl_2_i_stop_3 == 0 if cond_22 s_val = s_val + y_lvl_3_val_7 end @@ -482,18 +479,17 @@ quote y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] - cond_23 = -phase_start_68 + phase_stop_75 == 0 + cond_23 = -phase_start_32 + phase_stop_70 == 0 if cond_23 s_val = s_val + y_lvl_3_val_8 end end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -503,11 +499,10 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 - cond_24 = -phase_start_72 + phase_stop_79 == 0 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 + cond_24 = -phase_start_34 + phase_stop_73 == 0 if cond_24 y_lvl_2_q_4 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_4 = y_lvl_ptr_2[y_lvl_q + 1] @@ -516,8 +511,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -526,11 +521,11 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] - cond_25 = -phase_start_75 + y_lvl_2_i_stop_4 == 0 + cond_25 = -phase_start_35 + y_lvl_2_i_stop_4 == 0 if cond_25 s_val = s_val + y_lvl_3_val_9 end @@ -538,26 +533,25 @@ quote y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] - cond_26 = -phase_start_78 + phase_stop_86 == 0 + cond_26 = -phase_start_36 + phase_stop_80 == 0 if cond_26 s_val = s_val + y_lvl_3_val_10 end end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end end end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference64/continuous_2d_union_lebesgue.txt b/test/reference64/continuous_2d_union_lebesgue.txt index 26d762010..2b4d48960 100644 --- a/test/reference64/continuous_2d_union_lebesgue.txt +++ b/test/reference64/continuous_2d_union_lebesgue.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,239 +51,239 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q < y_lvl_2_q_stop - y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] - else - y_lvl_2_i_end = 0.0f0 - end - phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) - if phase_stop_5 >= limit(1.0) - j = limit(1.0) - if y_lvl_right_2[y_lvl_2_q] < limit(1.0) - y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_q = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q < y_lvl_2_q_stop + y_lvl_2_i_end = y_lvl_right_2[y_lvl_2_q_stop - 1] + else + y_lvl_2_i_end = 0.0f0 end - while true - j_start_2 = j - y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] - y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] - if y_lvl_2_i_stop < phase_stop_5 - phase_start_7 = max(j_start_2, y_lvl_2_i_start) - if y_lvl_2_i_stop >= phase_start_7 - y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_4 + phase_stop_4) * drop_eps(-phase_start_7 + y_lvl_2_i_stop) * y_lvl_3_val - end - y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop - j = y_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_8 = j - phase_stop_9 = min(y_lvl_2_i_stop, phase_stop_5) - phase_start_10 = max(y_lvl_2_i_start, phase_start_8) - if phase_stop_9 >= phase_start_10 - y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_4 + phase_stop_4) * drop_eps(-phase_start_10 + phase_stop_9) * y_lvl_3_val_2 + phase_stop_5 = min(y_lvl_2.shape, y_lvl_2_i_end) + if phase_stop_5 >= limit(1.0) + j = limit(1.0) + if y_lvl_right_2[y_lvl_2_q] < limit(1.0) + y_lvl_2_q = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q, y_lvl_2_q_stop - 1) + end + while true + j_start_2 = j + y_lvl_2_i_start = y_lvl_left_2[y_lvl_2_q] + y_lvl_2_i_stop = y_lvl_right_2[y_lvl_2_q] + if y_lvl_2_i_stop < phase_stop_5 + phase_start_2 = max(j_start_2, y_lvl_2_i_start) + if y_lvl_2_i_stop >= phase_start_2 + y_lvl_3_val = y_lvl_2_val[y_lvl_2_q] + s_val = s_val + drop_eps(-phase_start + phase_stop_4) * drop_eps(-phase_start_2 + y_lvl_2_i_stop) * y_lvl_3_val + end + y_lvl_2_q += y_lvl_2_i_stop == y_lvl_2_i_stop + j = y_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_9 = min(phase_stop_5, y_lvl_2_i_stop) + phase_start_3 = max(j_start_2, y_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 + y_lvl_3_val_2 = y_lvl_2_val[y_lvl_2_q] + s_val = s_val + drop_eps(-phase_start + phase_stop_4) * drop_eps(-phase_start_3 + phase_stop_9) * y_lvl_3_val_2 + end + y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop + j = phase_stop_9 + limit(0+ϵ) + break end - y_lvl_2_q += phase_stop_9 == y_lvl_2_i_stop - j = phase_stop_9 + limit(0+ϵ) - break end end end - end - phase_start_12 = max(phase_start_2, x_lvl_i_start) - phase_stop_13 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_13 >= phase_start_12 - x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q < x_lvl_2_q_stop - x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] - else - x_lvl_2_i_end = 0.0f0 - end - phase_stop_14 = min(y_lvl_2.shape, x_lvl_2_i_end) - if phase_stop_14 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q] < limit(1.0) - x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + phase_start_5 = max(i_start_2, x_lvl_i_start) + phase_stop_12 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_12 >= phase_start_5 + x_lvl_2_q = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q < x_lvl_2_q_stop + x_lvl_2_i_end = x_lvl_right_2[x_lvl_2_q_stop - 1] + else + x_lvl_2_i_end = 0.0f0 end - while true - j_start_6 = j - x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] - x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] - if x_lvl_2_i_stop < phase_stop_14 - phase_start_15 = max(j_start_6, x_lvl_2_i_start) - if x_lvl_2_i_stop >= phase_start_15 - x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_13) * drop_eps(-phase_start_15 + x_lvl_2_i_stop) * x_lvl_3_val - end - x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop - j = x_lvl_2_i_stop + limit(0+ϵ) - else - phase_start_16 = j - phase_stop_18 = min(x_lvl_2_i_stop, phase_stop_14) - phase_start_18 = max(x_lvl_2_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 - x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_13) * drop_eps(-phase_start_18 + phase_stop_18) * x_lvl_3_val_2 + phase_stop_13 = min(y_lvl_2.shape, x_lvl_2_i_end) + if phase_stop_13 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q] < limit(1.0) + x_lvl_2_q = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q, x_lvl_2_q_stop - 1) + end + while true + j_start_6 = j + x_lvl_2_i_start = x_lvl_left_2[x_lvl_2_q] + x_lvl_2_i_stop = x_lvl_right_2[x_lvl_2_q] + if x_lvl_2_i_stop < phase_stop_13 + phase_start_6 = max(j_start_6, x_lvl_2_i_start) + if x_lvl_2_i_stop >= phase_start_6 + x_lvl_3_val = x_lvl_2_val[x_lvl_2_q] + s_val = s_val + drop_eps(-phase_start_5 + phase_stop_12) * drop_eps(-phase_start_6 + x_lvl_2_i_stop) * x_lvl_3_val + end + x_lvl_2_q += x_lvl_2_i_stop == x_lvl_2_i_stop + j = x_lvl_2_i_stop + limit(0+ϵ) + else + phase_stop_17 = min(phase_stop_13, x_lvl_2_i_stop) + phase_start_7 = max(j_start_6, x_lvl_2_i_start) + if phase_stop_17 >= phase_start_7 + x_lvl_3_val_2 = x_lvl_2_val[x_lvl_2_q] + s_val = s_val + drop_eps(-phase_start_5 + phase_stop_12) * drop_eps(-phase_start_7 + phase_stop_17) * x_lvl_3_val_2 + end + x_lvl_2_q += phase_stop_17 == x_lvl_2_i_stop + j = phase_stop_17 + limit(0+ϵ) + break end - x_lvl_2_q += phase_stop_18 == x_lvl_2_i_stop - j = phase_stop_18 + limit(0+ϵ) - break end end end - end - phase_start_20 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_20 - x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] - x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] - if x_lvl_2_q_2 < x_lvl_2_q_stop_2 - x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] - else - x_lvl_2_i_end_2 = 0.0f0 - end - y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] - y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] - if y_lvl_2_q_2 < y_lvl_2_q_stop_2 - y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] - else - y_lvl_2_i_end_2 = 0.0f0 - end - phase_stop_23 = min(y_lvl_2.shape, x_lvl_2_i_end_2, y_lvl_2_i_end_2) - if phase_stop_23 >= limit(1.0) - j = limit(1.0) - if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + phase_start_9 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_9 + x_lvl_2_q_2 = x_lvl_ptr_2[x_lvl_q] + x_lvl_2_q_stop_2 = x_lvl_ptr_2[x_lvl_q + 1] + if x_lvl_2_q_2 < x_lvl_2_q_stop_2 + x_lvl_2_i_end_2 = x_lvl_right_2[x_lvl_2_q_stop_2 - 1] + else + x_lvl_2_i_end_2 = 0.0f0 end - if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + y_lvl_2_q_2 = y_lvl_ptr_2[y_lvl_q] + y_lvl_2_q_stop_2 = y_lvl_ptr_2[y_lvl_q + 1] + if y_lvl_2_q_2 < y_lvl_2_q_stop_2 + y_lvl_2_i_end_2 = y_lvl_right_2[y_lvl_2_q_stop_2 - 1] + else + y_lvl_2_i_end_2 = 0.0f0 end - while j <= phase_stop_23 - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - phase_start_22 = j - phase_stop_24 = min(y_lvl_2_i_stop_2, phase_stop_23, x_lvl_2_i_stop_2) - phase_start_24 = max(phase_start_22, x_lvl_2_i_start_2) - phase_stop_26 = min(phase_stop_24, limit(0-ϵ) + y_lvl_2_i_start_2) - if phase_stop_26 >= phase_start_24 - x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_24 + phase_stop_26) * x_lvl_3_val_3 + phase_stop_21 = min(y_lvl_2.shape, y_lvl_2_i_end_2, x_lvl_2_i_end_2) + if phase_stop_21 >= limit(1.0) + j = limit(1.0) + if x_lvl_right_2[x_lvl_2_q_2] < limit(1.0) + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) end - phase_start_25 = max(phase_start_22, y_lvl_2_i_start_2) - phase_stop_27 = min(phase_stop_24, limit(0-ϵ) + x_lvl_2_i_start_2) - if phase_stop_27 >= phase_start_25 - y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_25 + phase_stop_27) * y_lvl_3_val_3 + if y_lvl_right_2[y_lvl_2_q_2] < limit(1.0) + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) end - phase_start_26 = max(phase_start_22, x_lvl_2_i_start_2, y_lvl_2_i_start_2) - if phase_stop_24 >= phase_start_26 - y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] - x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_26 + phase_stop_24) * (x_lvl_3_val_4 + y_lvl_3_val_4) + while j <= phase_stop_21 + j_start_10 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + phase_stop_22 = min(x_lvl_2_i_stop_2, y_lvl_2_i_stop_2, phase_stop_21) + if phase_stop_22 >= j + phase_start_10 = max(j_start_10, x_lvl_2_i_start_2) + phase_stop_24 = min(limit(0-ϵ) + y_lvl_2_i_start_2, phase_stop_22) + if phase_stop_24 >= phase_start_10 + x_lvl_3_val_3 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_10 + phase_stop_24) * x_lvl_3_val_3 + end + phase_start_11 = max(j_start_10, y_lvl_2_i_start_2) + phase_stop_25 = min(limit(0-ϵ) + x_lvl_2_i_start_2, phase_stop_22) + if phase_stop_25 >= phase_start_11 + y_lvl_3_val_3 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_11 + phase_stop_25) * y_lvl_3_val_3 + end + phase_start_12 = max(j_start_10, y_lvl_2_i_start_2, x_lvl_2_i_start_2) + if phase_stop_22 >= phase_start_12 + y_lvl_3_val_4 = y_lvl_2_val[y_lvl_2_q_2] + x_lvl_3_val_4 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_12 + phase_stop_22) * (x_lvl_3_val_4 + y_lvl_3_val_4) + end + x_lvl_2_q_2 += phase_stop_22 == x_lvl_2_i_stop_2 + y_lvl_2_q_2 += phase_stop_22 == y_lvl_2_i_stop_2 + j = phase_stop_22 + limit(0+ϵ) + end end - x_lvl_2_q_2 += phase_stop_24 == x_lvl_2_i_stop_2 - y_lvl_2_q_2 += phase_stop_24 == y_lvl_2_i_stop_2 - j = phase_stop_24 + limit(0+ϵ) end - end - phase_start_27 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) - phase_stop_29 = min(y_lvl_2.shape, y_lvl_2_i_end_2) - if phase_stop_29 >= phase_start_27 - j = phase_start_27 - if y_lvl_right_2[y_lvl_2_q_2] < phase_start_27 - y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_27, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) - end - while true - j_start_12 = j - y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] - y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] - if y_lvl_2_i_stop_2 < phase_stop_29 - phase_start_29 = max(y_lvl_2_i_start_2, j_start_12) - if y_lvl_2_i_stop_2 >= phase_start_29 - y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_29 + y_lvl_2_i_stop_2) * y_lvl_3_val_5 - end - y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 - j = y_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_30 = j - phase_stop_33 = min(y_lvl_2_i_stop_2, phase_stop_29) - phase_start_32 = max(y_lvl_2_i_start_2, phase_start_30) - if phase_stop_33 >= phase_start_32 - y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_32 + phase_stop_33) * y_lvl_3_val_6 + phase_start_13 = max(limit(0+ϵ) + x_lvl_2_i_end_2, limit(1.0)) + phase_stop_27 = min(y_lvl_2.shape, y_lvl_2_i_end_2) + if phase_stop_27 >= phase_start_13 + j = phase_start_13 + if y_lvl_right_2[y_lvl_2_q_2] < phase_start_13 + y_lvl_2_q_2 = Finch.scansearch(y_lvl_right_2, phase_start_13, y_lvl_2_q_2, y_lvl_2_q_stop_2 - 1) + end + while true + j_start_12 = j + y_lvl_2_i_start_2 = y_lvl_left_2[y_lvl_2_q_2] + y_lvl_2_i_stop_2 = y_lvl_right_2[y_lvl_2_q_2] + if y_lvl_2_i_stop_2 < phase_stop_27 + phase_start_14 = max(y_lvl_2_i_start_2, j_start_12) + if y_lvl_2_i_stop_2 >= phase_start_14 + y_lvl_3_val_5 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_14 + y_lvl_2_i_stop_2) * y_lvl_3_val_5 + end + y_lvl_2_q_2 += y_lvl_2_i_stop_2 == y_lvl_2_i_stop_2 + j = y_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_31 = min(y_lvl_2_i_stop_2, phase_stop_27) + phase_start_15 = max(y_lvl_2_i_start_2, j_start_12) + if phase_stop_31 >= phase_start_15 + y_lvl_3_val_6 = y_lvl_2_val[y_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_15 + phase_stop_31) * y_lvl_3_val_6 + end + y_lvl_2_q_2 += phase_stop_31 == y_lvl_2_i_stop_2 + j = phase_stop_31 + limit(0+ϵ) + break end - y_lvl_2_q_2 += phase_stop_33 == y_lvl_2_i_stop_2 - j = phase_stop_33 + limit(0+ϵ) - break end end - end - phase_start_33 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) - phase_stop_36 = min(y_lvl_2.shape, x_lvl_2_i_end_2) - if phase_stop_36 >= phase_start_33 - j = phase_start_33 - if x_lvl_right_2[x_lvl_2_q_2] < phase_start_33 - x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_33, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) - end - while true - j_start_15 = j - x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] - x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] - if x_lvl_2_i_stop_2 < phase_stop_36 - phase_start_35 = max(x_lvl_2_i_start_2, j_start_15) - if x_lvl_2_i_stop_2 >= phase_start_35 - x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_35 + x_lvl_2_i_stop_2) * x_lvl_3_val_5 - end - x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 - j = x_lvl_2_i_stop_2 + limit(0+ϵ) - else - phase_start_36 = j - phase_stop_40 = min(x_lvl_2_i_stop_2, phase_stop_36) - phase_start_38 = max(x_lvl_2_i_start_2, phase_start_36) - if phase_stop_40 >= phase_start_38 - x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] - s_val = s_val + drop_eps(-phase_start_20 + phase_stop_2) * drop_eps(-phase_start_38 + phase_stop_40) * x_lvl_3_val_6 + phase_start_16 = max(limit(1.0), limit(0+ϵ) + y_lvl_2_i_end_2) + phase_stop_34 = min(y_lvl_2.shape, x_lvl_2_i_end_2) + if phase_stop_34 >= phase_start_16 + j = phase_start_16 + if x_lvl_right_2[x_lvl_2_q_2] < phase_start_16 + x_lvl_2_q_2 = Finch.scansearch(x_lvl_right_2, phase_start_16, x_lvl_2_q_2, x_lvl_2_q_stop_2 - 1) + end + while true + j_start_15 = j + x_lvl_2_i_start_2 = x_lvl_left_2[x_lvl_2_q_2] + x_lvl_2_i_stop_2 = x_lvl_right_2[x_lvl_2_q_2] + if x_lvl_2_i_stop_2 < phase_stop_34 + phase_start_17 = max(x_lvl_2_i_start_2, j_start_15) + if x_lvl_2_i_stop_2 >= phase_start_17 + x_lvl_3_val_5 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_17 + x_lvl_2_i_stop_2) * x_lvl_3_val_5 + end + x_lvl_2_q_2 += x_lvl_2_i_stop_2 == x_lvl_2_i_stop_2 + j = x_lvl_2_i_stop_2 + limit(0+ϵ) + else + phase_stop_38 = min(x_lvl_2_i_stop_2, phase_stop_34) + phase_start_18 = max(x_lvl_2_i_start_2, j_start_15) + if phase_stop_38 >= phase_start_18 + x_lvl_3_val_6 = x_lvl_2_val[x_lvl_2_q_2] + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_2) * drop_eps(-phase_start_18 + phase_stop_38) * x_lvl_3_val_6 + end + x_lvl_2_q_2 += phase_stop_38 == x_lvl_2_i_stop_2 + j = phase_stop_38 + limit(0+ϵ) + break end - x_lvl_2_q_2 += phase_stop_40 == x_lvl_2_i_stop_2 - j = phase_stop_40 + limit(0+ϵ) - break end end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_40 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) - phase_stop_44 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_44 >= phase_start_40 - i = phase_start_40 - if x_lvl_right[x_lvl_q] < phase_start_40 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_40, x_lvl_q, x_lvl_q_stop - 1) + phase_start_20 = max(limit(1.0), limit(0+ϵ) + y_lvl_i_end) + phase_stop_41 = min(y_lvl.shape, x_lvl_i_end) + if phase_stop_41 >= phase_start_20 + i = phase_start_20 + if x_lvl_right[x_lvl_q] < phase_start_20 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_20, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - if x_lvl_i_stop < phase_stop_44 - phase_start_42 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_42 + if x_lvl_i_stop < phase_stop_41 + phase_start_21 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_21 x_lvl_2_q_3 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_3 = x_lvl_ptr_2[x_lvl_q + 1] if x_lvl_2_q_3 < x_lvl_2_q_stop_3 @@ -291,8 +291,8 @@ quote else x_lvl_2_i_end_3 = 0.0f0 end - phase_stop_48 = min(y_lvl_2.shape, x_lvl_2_i_end_3) - if phase_stop_48 >= limit(1.0) + phase_stop_45 = min(y_lvl_2.shape, x_lvl_2_i_end_3) + if phase_stop_45 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_3] < limit(1.0) x_lvl_2_q_3 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_3, x_lvl_2_q_stop_3 - 1) @@ -301,24 +301,23 @@ quote j_start_19 = j x_lvl_2_i_start_3 = x_lvl_left_2[x_lvl_2_q_3] x_lvl_2_i_stop_3 = x_lvl_right_2[x_lvl_2_q_3] - if x_lvl_2_i_stop_3 < phase_stop_48 - phase_start_45 = max(j_start_19, x_lvl_2_i_start_3) - if x_lvl_2_i_stop_3 >= phase_start_45 + if x_lvl_2_i_stop_3 < phase_stop_45 + phase_start_22 = max(j_start_19, x_lvl_2_i_start_3) + if x_lvl_2_i_stop_3 >= phase_start_22 x_lvl_3_val_7 = x_lvl_2_val[x_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_42 + x_lvl_i_stop) * drop_eps(-phase_start_45 + x_lvl_2_i_stop_3) * x_lvl_3_val_7 + s_val = s_val + drop_eps(-phase_start_21 + x_lvl_i_stop) * drop_eps(-phase_start_22 + x_lvl_2_i_stop_3) * x_lvl_3_val_7 end x_lvl_2_q_3 += x_lvl_2_i_stop_3 == x_lvl_2_i_stop_3 j = x_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_46 = j - phase_stop_52 = min(x_lvl_2_i_stop_3, phase_stop_48) - phase_start_48 = max(x_lvl_2_i_start_3, phase_start_46) - if phase_stop_52 >= phase_start_48 + phase_stop_49 = min(phase_stop_45, x_lvl_2_i_stop_3) + phase_start_23 = max(j_start_19, x_lvl_2_i_start_3) + if phase_stop_49 >= phase_start_23 x_lvl_3_val_8 = x_lvl_2_val[x_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_42 + x_lvl_i_stop) * drop_eps(-phase_start_48 + phase_stop_52) * x_lvl_3_val_8 + s_val = s_val + drop_eps(-phase_start_21 + x_lvl_i_stop) * drop_eps(-phase_start_23 + phase_stop_49) * x_lvl_3_val_8 end - x_lvl_2_q_3 += phase_stop_52 == x_lvl_2_i_stop_3 - j = phase_stop_52 + limit(0+ϵ) + x_lvl_2_q_3 += phase_stop_49 == x_lvl_2_i_stop_3 + j = phase_stop_49 + limit(0+ϵ) break end end @@ -327,10 +326,9 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_50 = i - phase_stop_56 = min(x_lvl_i_stop, phase_stop_44) - phase_start_52 = max(x_lvl_i_start, phase_start_50) - if phase_stop_56 >= phase_start_52 + phase_stop_52 = min(x_lvl_i_stop, phase_stop_41) + phase_start_25 = max(x_lvl_i_start, i_start_4) + if phase_stop_52 >= phase_start_25 x_lvl_2_q_4 = x_lvl_ptr_2[x_lvl_q] x_lvl_2_q_stop_4 = x_lvl_ptr_2[x_lvl_q + 1] if x_lvl_2_q_4 < x_lvl_2_q_stop_4 @@ -338,8 +336,8 @@ quote else x_lvl_2_i_end_4 = 0.0f0 end - phase_stop_59 = min(y_lvl_2.shape, x_lvl_2_i_end_4) - if phase_stop_59 >= limit(1.0) + phase_stop_55 = min(y_lvl_2.shape, x_lvl_2_i_end_4) + if phase_stop_55 >= limit(1.0) j = limit(1.0) if x_lvl_right_2[x_lvl_2_q_4] < limit(1.0) x_lvl_2_q_4 = Finch.scansearch(x_lvl_right_2, limit(1.0), x_lvl_2_q_4, x_lvl_2_q_stop_4 - 1) @@ -348,49 +346,48 @@ quote j_start_23 = j x_lvl_2_i_start_4 = x_lvl_left_2[x_lvl_2_q_4] x_lvl_2_i_stop_4 = x_lvl_right_2[x_lvl_2_q_4] - if x_lvl_2_i_stop_4 < phase_stop_59 - phase_start_55 = max(j_start_23, x_lvl_2_i_start_4) - if x_lvl_2_i_stop_4 >= phase_start_55 + if x_lvl_2_i_stop_4 < phase_stop_55 + phase_start_26 = max(j_start_23, x_lvl_2_i_start_4) + if x_lvl_2_i_stop_4 >= phase_start_26 x_lvl_3_val_9 = x_lvl_2_val[x_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_52 + phase_stop_56) * drop_eps(-phase_start_55 + x_lvl_2_i_stop_4) * x_lvl_3_val_9 + s_val = s_val + drop_eps(-phase_start_25 + phase_stop_52) * drop_eps(-phase_start_26 + x_lvl_2_i_stop_4) * x_lvl_3_val_9 end x_lvl_2_q_4 += x_lvl_2_i_stop_4 == x_lvl_2_i_stop_4 j = x_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_56 = j - phase_stop_63 = min(x_lvl_2_i_stop_4, phase_stop_59) - phase_start_58 = max(x_lvl_2_i_start_4, phase_start_56) - if phase_stop_63 >= phase_start_58 + phase_stop_59 = min(phase_stop_55, x_lvl_2_i_stop_4) + phase_start_27 = max(j_start_23, x_lvl_2_i_start_4) + if phase_stop_59 >= phase_start_27 x_lvl_3_val_10 = x_lvl_2_val[x_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_52 + phase_stop_56) * drop_eps(-phase_start_58 + phase_stop_63) * x_lvl_3_val_10 + s_val = s_val + drop_eps(-phase_start_25 + phase_stop_52) * drop_eps(-phase_start_27 + phase_stop_59) * x_lvl_3_val_10 end - x_lvl_2_q_4 += phase_stop_63 == x_lvl_2_i_stop_4 - j = phase_stop_63 + limit(0+ϵ) + x_lvl_2_q_4 += phase_stop_59 == x_lvl_2_i_stop_4 + j = phase_stop_59 + limit(0+ϵ) break end end end end - x_lvl_q += phase_stop_56 == x_lvl_i_stop - i = phase_stop_56 + limit(0+ϵ) + x_lvl_q += phase_stop_52 == x_lvl_i_stop + i = phase_stop_52 + limit(0+ϵ) break end end end - phase_start_60 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) - phase_stop_67 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_67 >= phase_start_60 - i = phase_start_60 - if y_lvl_right[y_lvl_q] < phase_start_60 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_60, y_lvl_q, y_lvl_q_stop - 1) + phase_start_29 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_stop_62 = min(y_lvl.shape, y_lvl_i_end) + if phase_stop_62 >= phase_start_29 + i = phase_start_29 + if y_lvl_right[y_lvl_q] < phase_start_29 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_29, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] - if y_lvl_i_stop < phase_stop_67 - phase_start_62 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_62 + if y_lvl_i_stop < phase_stop_62 + phase_start_30 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_30 y_lvl_2_q_3 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_3 = y_lvl_ptr_2[y_lvl_q + 1] if y_lvl_2_q_3 < y_lvl_2_q_stop_3 @@ -398,8 +395,8 @@ quote else y_lvl_2_i_end_3 = 0.0f0 end - phase_stop_71 = min(y_lvl_2.shape, y_lvl_2_i_end_3) - if phase_stop_71 >= limit(1.0) + phase_stop_66 = min(y_lvl_2.shape, y_lvl_2_i_end_3) + if phase_stop_66 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_3] < limit(1.0) y_lvl_2_q_3 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_3, y_lvl_2_q_stop_3 - 1) @@ -408,24 +405,23 @@ quote j_start_27 = j y_lvl_2_i_start_3 = y_lvl_left_2[y_lvl_2_q_3] y_lvl_2_i_stop_3 = y_lvl_right_2[y_lvl_2_q_3] - if y_lvl_2_i_stop_3 < phase_stop_71 - phase_start_65 = max(j_start_27, y_lvl_2_i_start_3) - if y_lvl_2_i_stop_3 >= phase_start_65 + if y_lvl_2_i_stop_3 < phase_stop_66 + phase_start_31 = max(j_start_27, y_lvl_2_i_start_3) + if y_lvl_2_i_stop_3 >= phase_start_31 y_lvl_3_val_7 = y_lvl_2_val[y_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_62 + y_lvl_i_stop) * drop_eps(-phase_start_65 + y_lvl_2_i_stop_3) * y_lvl_3_val_7 + s_val = s_val + drop_eps(-phase_start_30 + y_lvl_i_stop) * drop_eps(-phase_start_31 + y_lvl_2_i_stop_3) * y_lvl_3_val_7 end y_lvl_2_q_3 += y_lvl_2_i_stop_3 == y_lvl_2_i_stop_3 j = y_lvl_2_i_stop_3 + limit(0+ϵ) else - phase_start_66 = j - phase_stop_75 = min(y_lvl_2_i_stop_3, phase_stop_71) - phase_start_68 = max(y_lvl_2_i_start_3, phase_start_66) - if phase_stop_75 >= phase_start_68 + phase_stop_70 = min(phase_stop_66, y_lvl_2_i_stop_3) + phase_start_32 = max(j_start_27, y_lvl_2_i_start_3) + if phase_stop_70 >= phase_start_32 y_lvl_3_val_8 = y_lvl_2_val[y_lvl_2_q_3] - s_val = s_val + drop_eps(-phase_start_62 + y_lvl_i_stop) * drop_eps(-phase_start_68 + phase_stop_75) * y_lvl_3_val_8 + s_val = s_val + drop_eps(-phase_start_30 + y_lvl_i_stop) * drop_eps(-phase_start_32 + phase_stop_70) * y_lvl_3_val_8 end - y_lvl_2_q_3 += phase_stop_75 == y_lvl_2_i_stop_3 - j = phase_stop_75 + limit(0+ϵ) + y_lvl_2_q_3 += phase_stop_70 == y_lvl_2_i_stop_3 + j = phase_stop_70 + limit(0+ϵ) break end end @@ -434,10 +430,9 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_70 = i - phase_stop_79 = min(y_lvl_i_stop, phase_stop_67) - phase_start_72 = max(y_lvl_i_start, phase_start_70) - if phase_stop_79 >= phase_start_72 + phase_stop_73 = min(y_lvl_i_stop, phase_stop_62) + phase_start_34 = max(y_lvl_i_start, i_start_7) + if phase_stop_73 >= phase_start_34 y_lvl_2_q_4 = y_lvl_ptr_2[y_lvl_q] y_lvl_2_q_stop_4 = y_lvl_ptr_2[y_lvl_q + 1] if y_lvl_2_q_4 < y_lvl_2_q_stop_4 @@ -445,8 +440,8 @@ quote else y_lvl_2_i_end_4 = 0.0f0 end - phase_stop_82 = min(y_lvl_2.shape, y_lvl_2_i_end_4) - if phase_stop_82 >= limit(1.0) + phase_stop_76 = min(y_lvl_2.shape, y_lvl_2_i_end_4) + if phase_stop_76 >= limit(1.0) j = limit(1.0) if y_lvl_right_2[y_lvl_2_q_4] < limit(1.0) y_lvl_2_q_4 = Finch.scansearch(y_lvl_right_2, limit(1.0), y_lvl_2_q_4, y_lvl_2_q_stop_4 - 1) @@ -455,31 +450,30 @@ quote j_start_31 = j y_lvl_2_i_start_4 = y_lvl_left_2[y_lvl_2_q_4] y_lvl_2_i_stop_4 = y_lvl_right_2[y_lvl_2_q_4] - if y_lvl_2_i_stop_4 < phase_stop_82 - phase_start_75 = max(j_start_31, y_lvl_2_i_start_4) - if y_lvl_2_i_stop_4 >= phase_start_75 + if y_lvl_2_i_stop_4 < phase_stop_76 + phase_start_35 = max(j_start_31, y_lvl_2_i_start_4) + if y_lvl_2_i_stop_4 >= phase_start_35 y_lvl_3_val_9 = y_lvl_2_val[y_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_72 + phase_stop_79) * drop_eps(-phase_start_75 + y_lvl_2_i_stop_4) * y_lvl_3_val_9 + s_val = s_val + drop_eps(-phase_start_34 + phase_stop_73) * drop_eps(-phase_start_35 + y_lvl_2_i_stop_4) * y_lvl_3_val_9 end y_lvl_2_q_4 += y_lvl_2_i_stop_4 == y_lvl_2_i_stop_4 j = y_lvl_2_i_stop_4 + limit(0+ϵ) else - phase_start_76 = j - phase_stop_86 = min(y_lvl_2_i_stop_4, phase_stop_82) - phase_start_78 = max(y_lvl_2_i_start_4, phase_start_76) - if phase_stop_86 >= phase_start_78 + phase_stop_80 = min(phase_stop_76, y_lvl_2_i_stop_4) + phase_start_36 = max(j_start_31, y_lvl_2_i_start_4) + if phase_stop_80 >= phase_start_36 y_lvl_3_val_10 = y_lvl_2_val[y_lvl_2_q_4] - s_val = s_val + drop_eps(-phase_start_72 + phase_stop_79) * drop_eps(-phase_start_78 + phase_stop_86) * y_lvl_3_val_10 + s_val = s_val + drop_eps(-phase_start_34 + phase_stop_73) * drop_eps(-phase_start_36 + phase_stop_80) * y_lvl_3_val_10 end - y_lvl_2_q_4 += phase_stop_86 == y_lvl_2_i_stop_4 - j = phase_stop_86 + limit(0+ϵ) + y_lvl_2_q_4 += phase_stop_80 == y_lvl_2_i_stop_4 + j = phase_stop_80 + limit(0+ϵ) break end end end end - y_lvl_q += phase_stop_79 == y_lvl_i_stop - i = phase_stop_79 + limit(0+ϵ) + y_lvl_q += phase_stop_73 == y_lvl_i_stop + i = phase_stop_73 + limit(0+ϵ) break end end diff --git a/test/reference64/continuous_affine_rle.txt b/test/reference64/continuous_affine_rle.txt index be59a2e85..caa9defe3 100644 --- a/test/reference64/continuous_affine_rle.txt +++ b/test/reference64/continuous_affine_rle.txt @@ -28,6 +28,7 @@ quote y_lvl_q = Finch.scansearch(y_lvl_right, -4.5f0 * 2 + 10, y_lvl_q, y_lvl_q_stop - 1) end while true + i_start_3 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] phase_start_2 = i @@ -44,13 +45,12 @@ quote y_lvl_q += ((y_lvl_i_stop + -10) * (1.0f0 / 2)) * 2 + 10 == y_lvl_i_stop i = phase_stop_2 + limit(0+ϵ) else - phase_start_5 = i phase_stop_5 = min(phase_stop, 0.5f0 * (-10 + y_lvl_i_stop)) if phase_stop_5 >= i - phase_start_7 = max(0.5f0 * (y_lvl_i_start + limit(-10)), phase_start_5) - if phase_stop_5 >= phase_start_7 + phase_start_5 = max(i_start_3, 0.5f0 * (y_lvl_i_start + limit(-10))) + if phase_stop_5 >= phase_start_5 y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_2 = -phase_start_7 + phase_stop_5 == 0 + cond_2 = -phase_start_5 + phase_stop_5 == 0 if cond_2 z2_val = z2_val + y_lvl_2_val_2 end diff --git a/test/reference64/continuous_intersect.txt b/test/reference64/continuous_intersect.txt index 9e2c4bf32..3bf84af59 100644 --- a/test/reference64/continuous_intersect.txt +++ b/test/reference64/continuous_intersect.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,31 +51,33 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 * x_lvl_2_val_2 + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 * x_lvl_2_val_2 - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end z_lvl_ptr[1 + 1] = (z_lvl_qos - 0) - 1 diff --git a/test/reference64/continuous_intersect_counting.txt b/test/reference64/continuous_intersect_counting.txt index 9dbcf932d..45b804c3a 100644 --- a/test/reference64/continuous_intersect_counting.txt +++ b/test/reference64/continuous_intersect_counting.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,24 +42,26 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond = -phase_start_6 + phase_stop_2 == 0 - if cond - s_val = s_val + y_lvl_2_val_2 * x_lvl_2_val_2 + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + cond = -phase_start_3 + phase_stop_2 == 0 + if cond + s_val = s_val + y_lvl_2_val_2 * x_lvl_2_val_2 + end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int64}(s_val),) diff --git a/test/reference64/continuous_intersect_lebesgue.txt b/test/reference64/continuous_intersect_lebesgue.txt index 13ee7a8ae..a02ea7cac 100644 --- a/test/reference64/continuous_intersect_lebesgue.txt +++ b/test/reference64/continuous_intersect_lebesgue.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,21 +42,23 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * x_lvl_2_val_2 * y_lvl_2_val_2 + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * x_lvl_2_val_2 * y_lvl_2_val_2 + end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end (s = (Scalar){0, Int64}(s_val),) diff --git a/test/reference64/continuous_pinpoint_rle.txt b/test/reference64/continuous_pinpoint_rle.txt index dc3957095..a0087545a 100644 --- a/test/reference64/continuous_pinpoint_rle.txt +++ b/test/reference64/continuous_pinpoint_rle.txt @@ -30,10 +30,10 @@ quote y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop - phase_start_3 = max(i_start_2, y_lvl_i_start) - if y_lvl_i_stop >= phase_start_3 + phase_start = max(i_start_2, y_lvl_i_start) + if y_lvl_i_stop >= phase_start y_lvl_2_val = y_lvl_val[y_lvl_q] - cond = -phase_start_3 + y_lvl_i_stop == 0 + cond = -phase_start + y_lvl_i_stop == 0 if cond z2_val = y_lvl_2_val + z2_val end @@ -41,12 +41,11 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_4 = i - phase_stop_5 = min(y_lvl_i_stop, phase_stop) - phase_start_6 = max(y_lvl_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, y_lvl_i_stop) + phase_start_2 = max(i_start_2, y_lvl_i_start) + if phase_stop_5 >= phase_start_2 y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_2 = -phase_start_6 + phase_stop_5 == 0 + cond_2 = -phase_start_2 + phase_stop_5 == 0 if cond_2 z2_val = z2_val + y_lvl_2_val_2 end diff --git a/test/reference64/continuous_pinpoint_sl.txt b/test/reference64/continuous_pinpoint_sl.txt index 3283412f7..746c92f90 100644 --- a/test/reference64/continuous_pinpoint_sl.txt +++ b/test/reference64/continuous_pinpoint_sl.txt @@ -30,7 +30,7 @@ quote z1_val = x_lvl_2_val + z1_val x_lvl_q += 1 else - phase_stop_3 = min(x_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, x_lvl_i) if x_lvl_i == phase_stop_3 x_lvl_2_val = x_lvl_val[x_lvl_q] z1_val = z1_val + x_lvl_2_val diff --git a/test/reference64/continuous_union.txt b/test/reference64/continuous_union.txt index 2c708681a..0984eacd0 100644 --- a/test/reference64/continuous_union.txt +++ b/test/reference64/continuous_union.txt @@ -41,7 +41,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -51,79 +51,81 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = y_lvl_2_val + z_lvl_val[z_lvl_qos] + z_lvl_left[z_lvl_qos] = phase_start + z_lvl_right[z_lvl_qos] = phase_stop_4 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = y_lvl_2_val + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_4 - z_lvl_right[z_lvl_qos] = phase_stop_4 - z_lvl_qos += 1 - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = x_lvl_2_val + z_lvl_val[z_lvl_qos] + z_lvl_left[z_lvl_qos] = phase_start_2 + z_lvl_right[z_lvl_qos] = phase_stop_5 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = x_lvl_2_val + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_5 - z_lvl_right[z_lvl_qos] = phase_stop_5 - z_lvl_qos += 1 - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - if z_lvl_qos > z_lvl_qos_stop - z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) - Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) - Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) - Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + if z_lvl_qos > z_lvl_qos_stop + z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) + Finch.resize_if_smaller!(z_lvl_left, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_right, z_lvl_qos_stop) + Finch.resize_if_smaller!(z_lvl_val, z_lvl_qos_stop) + Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) + end + z_lvl_val[z_lvl_qos] = x_lvl_2_val_2 + z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 + z_lvl_left[z_lvl_qos] = phase_start_3 + z_lvl_right[z_lvl_qos] = phase_stop_2 + z_lvl_qos += 1 end - z_lvl_val[z_lvl_qos] = x_lvl_2_val_2 + z_lvl_val[z_lvl_qos] + y_lvl_2_val_2 - z_lvl_left[z_lvl_qos] = phase_start_6 - z_lvl_right[z_lvl_qos] = phase_stop_2 - z_lvl_qos += 1 + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -133,17 +135,16 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = x_lvl_2_val_3 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_9 + z_lvl_left[z_lvl_qos] = phase_start_5 z_lvl_right[z_lvl_qos] = x_lvl_i_stop z_lvl_qos += 1 end x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -153,7 +154,7 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = x_lvl_2_val_4 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_12 + z_lvl_left[z_lvl_qos] = phase_start_6 z_lvl_right[z_lvl_qos] = phase_stop_11 z_lvl_qos += 1 end @@ -163,20 +164,20 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -186,17 +187,16 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = y_lvl_2_val_3 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_15 + z_lvl_left[z_lvl_qos] = phase_start_8 z_lvl_right[z_lvl_qos] = y_lvl_i_stop z_lvl_qos += 1 end y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] if z_lvl_qos > z_lvl_qos_stop z_lvl_qos_stop = max(z_lvl_qos_stop << 1, 1) @@ -206,7 +206,7 @@ quote Finch.fill_range!(z_lvl_val, 0, z_lvl_qos, z_lvl_qos_stop) end z_lvl_val[z_lvl_qos] = y_lvl_2_val_4 + z_lvl_val[z_lvl_qos] - z_lvl_left[z_lvl_qos] = phase_start_18 + z_lvl_left[z_lvl_qos] = phase_start_9 z_lvl_right[z_lvl_qos] = phase_stop_18 z_lvl_qos += 1 end diff --git a/test/reference64/continuous_union_counting.txt b/test/reference64/continuous_union_counting.txt index 0a723444b..47f5a1161 100644 --- a/test/reference64/continuous_union_counting.txt +++ b/test/reference64/continuous_union_counting.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,60 +42,62 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - cond = -phase_start_4 + phase_stop_4 == 0 - if cond - s_val = y_lvl_2_val + s_val + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + cond = -phase_start + phase_stop_4 == 0 + if cond + s_val = y_lvl_2_val + s_val + end end - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - cond_2 = -phase_start_5 + phase_stop_5 == 0 - if cond_2 - s_val = s_val + x_lvl_2_val + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + cond_2 = -phase_start_2 + phase_stop_5 == 0 + if cond_2 + s_val = s_val + x_lvl_2_val + end end - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - cond_3 = -phase_start_6 + phase_stop_2 == 0 - if cond_3 - s_val = s_val + x_lvl_2_val_2 + y_lvl_2_val_2 + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + cond_3 = -phase_start_3 + phase_stop_2 == 0 + if cond_3 + s_val = s_val + x_lvl_2_val_2 + y_lvl_2_val_2 + end end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] - cond_4 = -phase_start_9 + x_lvl_i_stop == 0 + cond_4 = -phase_start_5 + x_lvl_i_stop == 0 if cond_4 s_val = s_val + x_lvl_2_val_3 end @@ -103,12 +105,11 @@ quote x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] - cond_5 = -phase_start_12 + phase_stop_11 == 0 + cond_5 = -phase_start_6 + phase_stop_11 == 0 if cond_5 s_val = s_val + x_lvl_2_val_4 end @@ -119,22 +120,22 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] - cond_6 = -phase_start_15 + y_lvl_i_stop == 0 + cond_6 = -phase_start_8 + y_lvl_i_stop == 0 if cond_6 s_val = s_val + y_lvl_2_val_3 end @@ -142,12 +143,11 @@ quote y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - cond_7 = -phase_start_18 + phase_stop_18 == 0 + cond_7 = -phase_start_9 + phase_stop_18 == 0 if cond_7 s_val = s_val + y_lvl_2_val_4 end diff --git a/test/reference64/continuous_union_lebesgue.txt b/test/reference64/continuous_union_lebesgue.txt index 85ec2f190..ffea7d880 100644 --- a/test/reference64/continuous_union_lebesgue.txt +++ b/test/reference64/continuous_union_lebesgue.txt @@ -32,7 +32,7 @@ quote else x_lvl_i_end = 0.0f0 end - phase_stop = min(y_lvl.shape, y_lvl_i_end, x_lvl_i_end) + phase_stop = min(y_lvl.shape, x_lvl_i_end, y_lvl_i_end) if phase_stop >= limit(1.0) i = limit(1.0) if y_lvl_right[y_lvl_q] < limit(1.0) @@ -42,61 +42,62 @@ quote x_lvl_q = Finch.scansearch(x_lvl_right, limit(1.0), x_lvl_q, x_lvl_q_stop - 1) end while i <= phase_stop + i_start_2 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] - phase_start_2 = i - phase_stop_2 = min(x_lvl_i_stop, phase_stop, y_lvl_i_stop) - phase_start_4 = max(phase_start_2, y_lvl_i_start) - phase_stop_4 = min(phase_stop_2, limit(0-ϵ) + x_lvl_i_start) - if phase_stop_4 >= phase_start_4 - y_lvl_2_val = y_lvl_val[y_lvl_q] - s_val = drop_eps(-phase_start_4 + phase_stop_4) * y_lvl_2_val + s_val - end - phase_start_5 = max(phase_start_2, x_lvl_i_start) - phase_stop_5 = min(phase_stop_2, limit(0-ϵ) + y_lvl_i_start) - if phase_stop_5 >= phase_start_5 - x_lvl_2_val = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_5 + phase_stop_5) * x_lvl_2_val - end - phase_start_6 = max(phase_start_2, y_lvl_i_start, x_lvl_i_start) - if phase_stop_2 >= phase_start_6 - x_lvl_2_val_2 = x_lvl_val[x_lvl_q] - y_lvl_2_val_2 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_6 + phase_stop_2) * (y_lvl_2_val_2 + x_lvl_2_val_2) + phase_stop_2 = min(y_lvl_i_stop, x_lvl_i_stop, phase_stop) + if phase_stop_2 >= i + phase_start = max(i_start_2, y_lvl_i_start) + phase_stop_4 = min(limit(0-ϵ) + x_lvl_i_start, phase_stop_2) + if phase_stop_4 >= phase_start + y_lvl_2_val = y_lvl_val[y_lvl_q] + s_val = drop_eps(-phase_start + phase_stop_4) * y_lvl_2_val + s_val + end + phase_start_2 = max(i_start_2, x_lvl_i_start) + phase_stop_5 = min(limit(0-ϵ) + y_lvl_i_start, phase_stop_2) + if phase_stop_5 >= phase_start_2 + x_lvl_2_val = x_lvl_val[x_lvl_q] + s_val = s_val + drop_eps(-phase_start_2 + phase_stop_5) * x_lvl_2_val + end + phase_start_3 = max(i_start_2, x_lvl_i_start, y_lvl_i_start) + if phase_stop_2 >= phase_start_3 + x_lvl_2_val_2 = x_lvl_val[x_lvl_q] + y_lvl_2_val_2 = y_lvl_val[y_lvl_q] + s_val = s_val + drop_eps(-phase_start_3 + phase_stop_2) * (y_lvl_2_val_2 + x_lvl_2_val_2) + end + y_lvl_q += phase_stop_2 == y_lvl_i_stop + x_lvl_q += phase_stop_2 == x_lvl_i_stop + i = phase_stop_2 + limit(0+ϵ) end - y_lvl_q += phase_stop_2 == y_lvl_i_stop - x_lvl_q += phase_stop_2 == x_lvl_i_stop - i = phase_stop_2 + limit(0+ϵ) end end - phase_start_7 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) + phase_start_4 = max(limit(0+ϵ) + y_lvl_i_end, limit(1.0)) phase_stop_7 = min(y_lvl.shape, x_lvl_i_end) - if phase_stop_7 >= phase_start_7 - i = phase_start_7 - if x_lvl_right[x_lvl_q] < phase_start_7 - x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_7, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_7 >= phase_start_4 + i = phase_start_4 + if x_lvl_right[x_lvl_q] < phase_start_4 + x_lvl_q = Finch.scansearch(x_lvl_right, phase_start_4, x_lvl_q, x_lvl_q_stop - 1) end while true i_start_4 = i x_lvl_i_start = x_lvl_left[x_lvl_q] x_lvl_i_stop = x_lvl_right[x_lvl_q] if x_lvl_i_stop < phase_stop_7 - phase_start_9 = max(x_lvl_i_start, i_start_4) - if x_lvl_i_stop >= phase_start_9 + phase_start_5 = max(x_lvl_i_start, i_start_4) + if x_lvl_i_stop >= phase_start_5 x_lvl_2_val_3 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_9 + x_lvl_i_stop) * x_lvl_2_val_3 + s_val = s_val + drop_eps(-phase_start_5 + x_lvl_i_stop) * x_lvl_2_val_3 end x_lvl_q += x_lvl_i_stop == x_lvl_i_stop i = x_lvl_i_stop + limit(0+ϵ) else - phase_start_10 = i phase_stop_11 = min(x_lvl_i_stop, phase_stop_7) - phase_start_12 = max(x_lvl_i_start, phase_start_10) - if phase_stop_11 >= phase_start_12 + phase_start_6 = max(x_lvl_i_start, i_start_4) + if phase_stop_11 >= phase_start_6 x_lvl_2_val_4 = x_lvl_val[x_lvl_q] - s_val = s_val + drop_eps(-phase_start_12 + phase_stop_11) * x_lvl_2_val_4 + s_val = s_val + drop_eps(-phase_start_6 + phase_stop_11) * x_lvl_2_val_4 end x_lvl_q += phase_stop_11 == x_lvl_i_stop i = phase_stop_11 + limit(0+ϵ) @@ -104,32 +105,31 @@ quote end end end - phase_start_13 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) + phase_start_7 = max(limit(1.0), limit(0+ϵ) + x_lvl_i_end) phase_stop_14 = min(y_lvl.shape, y_lvl_i_end) - if phase_stop_14 >= phase_start_13 - i = phase_start_13 - if y_lvl_right[y_lvl_q] < phase_start_13 - y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_13, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_14 >= phase_start_7 + i = phase_start_7 + if y_lvl_right[y_lvl_q] < phase_start_7 + y_lvl_q = Finch.scansearch(y_lvl_right, phase_start_7, y_lvl_q, y_lvl_q_stop - 1) end while true i_start_7 = i y_lvl_i_start = y_lvl_left[y_lvl_q] y_lvl_i_stop = y_lvl_right[y_lvl_q] if y_lvl_i_stop < phase_stop_14 - phase_start_15 = max(y_lvl_i_start, i_start_7) - if y_lvl_i_stop >= phase_start_15 + phase_start_8 = max(y_lvl_i_start, i_start_7) + if y_lvl_i_stop >= phase_start_8 y_lvl_2_val_3 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_15 + y_lvl_i_stop) * y_lvl_2_val_3 + s_val = s_val + drop_eps(-phase_start_8 + y_lvl_i_stop) * y_lvl_2_val_3 end y_lvl_q += y_lvl_i_stop == y_lvl_i_stop i = y_lvl_i_stop + limit(0+ϵ) else - phase_start_16 = i phase_stop_18 = min(y_lvl_i_stop, phase_stop_14) - phase_start_18 = max(y_lvl_i_start, phase_start_16) - if phase_stop_18 >= phase_start_18 + phase_start_9 = max(y_lvl_i_start, i_start_7) + if phase_stop_18 >= phase_start_9 y_lvl_2_val_4 = y_lvl_val[y_lvl_q] - s_val = s_val + drop_eps(-phase_start_18 + phase_stop_18) * y_lvl_2_val_4 + s_val = s_val + drop_eps(-phase_start_9 + phase_stop_18) * y_lvl_2_val_4 end y_lvl_q += phase_stop_18 == y_lvl_i_stop i = phase_stop_18 + limit(0+ϵ) diff --git a/test/reference64/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl index 7548e8403..2405eec10 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseByteMap(Element(false))).jl @@ -41,7 +41,7 @@ begin res_lvl_qos += 1 tmp_lvl_r += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_q = (1 - 1) * tmp_lvl.shape + tmp_lvl_i tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q] diff --git a/test/reference64/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl index 399bcb51f..6644b85a8 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseCOO{1}(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference64/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl index 8664089c4..f6f7d3776 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseHash{1}(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q])[2]] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference64/convert_from_0 Fiber!(SparseList(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseList(Element(false))).jl index 6a8902ec6..2808dd4c3 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseList(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseList(Element(false))).jl @@ -40,7 +40,7 @@ begin res_lvl_qos += 1 tmp_lvl_q += 1 else - phase_stop_3 = min(tmp_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_i) if tmp_lvl_i == phase_stop_3 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] if res_lvl_qos > res_lvl_qos_stop diff --git a/test/reference64/convert_from_0 Fiber!(SparseRLE(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseRLE(Element(false))).jl index f8f48f033..5fce6ecd5 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseRLE(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseRLE(Element(false))).jl @@ -32,10 +32,10 @@ begin tmp_lvl_i_start = tmp_lvl_left[tmp_lvl_q] tmp_lvl_i_stop = tmp_lvl_right[tmp_lvl_q] if tmp_lvl_i_stop < phase_stop - phase_start_3 = max(i_start_2, tmp_lvl_i_start) - if tmp_lvl_i_stop >= phase_start_3 + phase_start = max(i_start_2, tmp_lvl_i_start) + if tmp_lvl_i_stop >= phase_start tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q] - for i_8 = phase_start_3:tmp_lvl_i_stop + for i_8 = phase_start:tmp_lvl_i_stop if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -50,12 +50,11 @@ begin tmp_lvl_q += tmp_lvl_i_stop == tmp_lvl_i_stop i = tmp_lvl_i_stop + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_i_stop, phase_stop) - phase_start_6 = max(tmp_lvl_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, tmp_lvl_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_i_start) + if phase_stop_5 >= phase_start_2 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q] - for i_11 = phase_start_6:phase_stop_5 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git a/test/reference64/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl index 6947f7ce7..cefb8328d 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseTriangle{1}(Element(false))).jl @@ -12,9 +12,8 @@ begin Finch.fill_range!(res_lvl_ptr, 0, 1 + 1, 1 + 1) res_lvl_qos = 0 + 1 0 < 1 || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl.shape - if phase_stop >= 1 - for i_5 = 1:phase_stop + if tmp_lvl.shape >= 1 + for i_5 = 1:tmp_lvl.shape if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git a/test/reference64/convert_from_0 Fiber!(SparseVBL(Element(false))).jl b/test/reference64/convert_from_0 Fiber!(SparseVBL(Element(false))).jl index d448859d2..1e1d2e7c8 100644 --- a/test/reference64/convert_from_0 Fiber!(SparseVBL(Element(false))).jl +++ b/test/reference64/convert_from_0 Fiber!(SparseVBL(Element(false))).jl @@ -34,9 +34,9 @@ begin tmp_lvl_i_2 = tmp_lvl_i - (tmp_lvl_q_stop - tmp_lvl_ofs[tmp_lvl_r]) tmp_lvl_q_ofs = (tmp_lvl_q_stop - tmp_lvl_i) - 1 if tmp_lvl_i < phase_stop - phase_start_3 = max(i_start_2, 1 + tmp_lvl_i_2) - if tmp_lvl_i >= phase_start_3 - for i_8 = phase_start_3:tmp_lvl_i + phase_start = max(i_start_2, 1 + tmp_lvl_i_2) + if tmp_lvl_i >= phase_start + for i_8 = phase_start:tmp_lvl_i if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -53,11 +53,10 @@ begin tmp_lvl_r += tmp_lvl_i == tmp_lvl_i i = tmp_lvl_i + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_i, phase_stop) - phase_start_6 = max(1 + tmp_lvl_i_2, phase_start_4) - if phase_stop_5 >= phase_start_6 - for i_11 = phase_start_6:phase_stop_5 + phase_stop_5 = min(phase_stop, tmp_lvl_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_i_2) + if phase_stop_5 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" index a6636b39f..bc9c58f4f 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" @@ -61,7 +61,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" index 31224537a..038a046a9 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" index f6d412472..48cabfcbb 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" index 926854c36..1950d0522 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" @@ -60,7 +60,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_3 = min(tmp_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_3 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" index 901074bc0..0fec5a715 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" @@ -50,10 +50,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop - phase_start_3 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_3 + phase_start = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_3:tmp_lvl_2_i_stop + for i_8 = phase_start:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -70,12 +70,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_2_i_stop, phase_stop) - phase_start_6 = max(tmp_lvl_2_i_start, phase_start_4) - if phase_stop_5 >= phase_start_6 + phase_stop_5 = min(phase_stop, tmp_lvl_2_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_5 >= phase_start_2 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_6:phase_stop_5 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" index 2df973401..1e3968337 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" @@ -30,9 +30,8 @@ begin tmp_lvl_2_q = (tmp_lvl_q - 1) * fld(tmp_lvl_2.shape, 1) + 1 res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl_2.shape - if phase_stop >= 1 - for i_5 = 1:phase_stop + if tmp_lvl_2.shape >= 1 + for i_5 = 1:tmp_lvl_2.shape if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" index 50d918001..5c5dbebcf 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" @@ -52,9 +52,9 @@ begin tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 if tmp_lvl_2_i < phase_stop - phase_start_3 = max(i_start_2, 1 + tmp_lvl_2_i_2) - if tmp_lvl_2_i >= phase_start_3 - for i_8 = phase_start_3:tmp_lvl_2_i + phase_start = max(i_start_2, 1 + tmp_lvl_2_i_2) + if tmp_lvl_2_i >= phase_start + for i_8 = phase_start:tmp_lvl_2_i if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -73,11 +73,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_4 = i - phase_stop_5 = min(tmp_lvl_2_i, phase_stop) - phase_start_6 = max(1 + tmp_lvl_2_i_2, phase_start_4) - if phase_stop_5 >= phase_start_6 - for i_11 = phase_start_6:phase_stop_5 + phase_stop_5 = min(phase_stop, tmp_lvl_2_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_2_i_2) + if phase_stop_5 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_5 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" index c62549c39..cdb1461cf 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" @@ -76,7 +76,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_5 = min(tmp_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_i_2) if tmp_lvl_i_2 == phase_stop_5 tmp_lvl_2_val = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -104,8 +104,8 @@ begin end tmp_lvl_q = tmp_lvl_q_step else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_i_stop_2 = 0 end - phase_stop_8 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) + if phase_stop_7 >= 1 if tmp_lvl_tbl1[tmp_lvl_q] < 1 tmp_lvl_q_2 = Finch.scansearch(tmp_lvl_tbl1, 1, tmp_lvl_q, tmp_lvl_q_step - 1) end while true tmp_lvl_i_2 = tmp_lvl_tbl1[tmp_lvl_q_2] - if tmp_lvl_i_2 < phase_stop_8 + if tmp_lvl_i_2 < phase_stop_7 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_10 = min(tmp_lvl_i_2, phase_stop_8) - if tmp_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(tmp_lvl_i_2, phase_stop_7) + if tmp_lvl_i_2 == phase_stop_9 tmp_lvl_2_val_2 = tmp_lvl_val[tmp_lvl_q_2] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_2_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q = tmp_lvl_q_step diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" index 0b01d9263..66db1f640 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_5 = min(tmp_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_i_2) if tmp_lvl_i_2 == phase_stop_5 tmp_lvl_2_val = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q = tmp_lvl_q_step else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -120,14 +120,14 @@ begin else tmp_lvl_i_stop_2 = 0 end - phase_stop_8 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_i_stop_2, tmp_lvl.shape[1]) + if phase_stop_7 >= 1 while tmp_lvl_q_2 + 1 < tmp_lvl_q_step && (((tmp_lvl_srt[tmp_lvl_q_2])[1])[2])[1] < 1 tmp_lvl_q_2 += 1 end while true tmp_lvl_i_2 = (((tmp_lvl_srt[tmp_lvl_q_2])[1])[2])[1] - if tmp_lvl_i_2 < phase_stop_8 + if tmp_lvl_i_2 < phase_stop_7 tmp_lvl_2_val_2 = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -142,8 +142,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 else - phase_stop_10 = min(tmp_lvl_i_2, phase_stop_8) - if tmp_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(tmp_lvl_i_2, phase_stop_7) + if tmp_lvl_i_2 == phase_stop_9 tmp_lvl_2_val_2 = tmp_lvl_val[(tmp_lvl.srt[tmp_lvl_q_2])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -153,7 +153,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_2_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_q_2 += 1 @@ -165,7 +165,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q = tmp_lvl_q_step diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" index 8db5d65ac..4a7b1a3c4 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" @@ -76,7 +76,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] @@ -105,8 +105,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -123,14 +123,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape) + if phase_stop_7 >= 1 while tmp_lvl_2_r + 1 < tmp_lvl_2_r_stop && last(tmp_lvl_srt[tmp_lvl_2_r]) < 1 tmp_lvl_2_r += 1 end while true tmp_lvl_2_i = last(tmp_lvl_srt[tmp_lvl_2_r]) - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop @@ -146,8 +146,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_2_q = (tmp_lvl_q - 1) * tmp_lvl_2.shape + tmp_lvl_2_i tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop @@ -158,7 +158,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_4 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_r += 1 @@ -170,7 +170,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" index 5510d2cb6..32e98e4a0 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) + if phase_stop_7 >= 1 if tmp_lvl_tbl1[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_tbl1, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) end while true tmp_lvl_2_i = tmp_lvl_tbl1[tmp_lvl_2_q] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" index 2e8b5fafe..5a2774a5f 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i_stop = 0 end - phase_stop_8 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i_stop, tmp_lvl_2.shape[1]) + if phase_stop_7 >= 1 while tmp_lvl_2_q + 1 < tmp_lvl_2_q_stop && (((tmp_lvl_srt[tmp_lvl_2_q])[1])[2])[1] < 1 tmp_lvl_2_q += 1 end while true tmp_lvl_2_i = (((tmp_lvl_srt[tmp_lvl_2_q])[1])[2])[1] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[(tmp_lvl_2.srt[tmp_lvl_2_q])[2]] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" index de5385406..4791c0b38 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" @@ -75,7 +75,7 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_5 = min(tmp_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, tmp_lvl_2_i) if tmp_lvl_2_i == phase_stop_5 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos > res_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_7 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_6 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else tmp_lvl_2_i1 = 0 end - phase_stop_8 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) + if phase_stop_7 >= 1 if tmp_lvl_idx_2[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_idx_2, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) end while true tmp_lvl_2_i = tmp_lvl_idx_2[tmp_lvl_2_q] - if tmp_lvl_2_i < phase_stop_8 + if tmp_lvl_2_i < phase_stop_7 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 else - phase_stop_10 = min(tmp_lvl_2_i, phase_stop_8) - if tmp_lvl_2_i == phase_stop_10 + phase_stop_9 = min(tmp_lvl_2_i, phase_stop_7) + if tmp_lvl_2_i == phase_stop_9 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end res_lvl_2_val[res_lvl_2_qos_2] = tmp_lvl_3_val_2 res_lvldirty = true - res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_10 + res_lvl_idx_2[res_lvl_2_qos_2] = phase_stop_9 res_lvl_2_qos_2 += 1 res_lvl_2_prev_pos = res_lvl_qos tmp_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_7 + res_lvl_idx[res_lvl_qos] = phase_stop_6 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" index 3bbfdc428..349ab515e 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" @@ -65,10 +65,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop_3 - phase_start_4 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_4 + phase_start = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_4:tmp_lvl_2_i_stop + for i_8 = phase_start:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -85,12 +85,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_5 = i - phase_stop_7 = min(tmp_lvl_2_i_stop, phase_stop_3) - phase_start_7 = max(tmp_lvl_2_i_start, phase_start_5) - if phase_stop_7 >= phase_start_7 + phase_stop_7 = min(phase_stop_3, tmp_lvl_2_i_stop) + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_7 >= phase_start_2 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_7:phase_stop_7 + for i_11 = phase_start_2:phase_stop_7 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -118,8 +117,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_11 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_11 + phase_stop_10 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_10 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -136,8 +135,8 @@ begin else tmp_lvl_2_i_end = 0 end - phase_stop_12 = min(tmp_lvl_2_i_end, tmp_lvl_2.shape) - if phase_stop_12 >= 1 + phase_stop_11 = min(tmp_lvl_2_i_end, tmp_lvl_2.shape) + if phase_stop_11 >= 1 i = 1 if tmp_lvl_right[tmp_lvl_2_q] < 1 tmp_lvl_2_q = Finch.scansearch(tmp_lvl_right, 1, tmp_lvl_2_q, tmp_lvl_2_q_stop - 1) @@ -146,11 +145,11 @@ begin i_start_6 = i tmp_lvl_2_i_start = tmp_lvl_left[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right[tmp_lvl_2_q] - if tmp_lvl_2_i_stop < phase_stop_12 - phase_start_12 = max(tmp_lvl_2_i_start, i_start_6) - if tmp_lvl_2_i_stop >= phase_start_12 + if tmp_lvl_2_i_stop < phase_stop_11 + phase_start_4 = max(tmp_lvl_2_i_start, i_start_6) + if tmp_lvl_2_i_stop >= phase_start_4 tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_17 = phase_start_12:tmp_lvl_2_i_stop + for i_17 = phase_start_4:tmp_lvl_2_i_stop if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -167,12 +166,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_13 = i - phase_stop_16 = min(tmp_lvl_2_i_stop, phase_stop_12) - phase_start_15 = max(tmp_lvl_2_i_start, phase_start_13) - if phase_stop_16 >= phase_start_15 + phase_stop_15 = min(tmp_lvl_2_i_stop, phase_stop_11) + phase_start_5 = max(tmp_lvl_2_i_start, i_start_6) + if phase_stop_15 >= phase_start_5 tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_20 = phase_start_15:phase_stop_16 + for i_20 = phase_start_5:phase_stop_15 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -186,8 +184,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_q += phase_stop_16 == tmp_lvl_2_i_stop - i = phase_stop_16 + 1 + tmp_lvl_2_q += phase_stop_15 == tmp_lvl_2_i_stop + i = phase_stop_15 + 1 break end end @@ -195,7 +193,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_11 + res_lvl_idx[res_lvl_qos] = phase_stop_10 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" index ca1918dd8..606bc9f5d 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" @@ -45,9 +45,8 @@ begin res_lvldirty = false res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_3 = tmp_lvl_2.shape - if phase_stop_3 >= 1 - for i_5 = 1:phase_stop_3 + if tmp_lvl_2.shape >= 1 + for i_5 = 1:tmp_lvl_2.shape if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -70,8 +69,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_5 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_5 + phase_stop_3 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_3 tmp_lvl_2_q = (tmp_lvl_q - 1) * fld(tmp_lvl_2.shape, 1) + 1 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) @@ -82,9 +81,8 @@ begin res_lvldirty = false res_lvl_2_qos_2 = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_6 = tmp_lvl_2.shape - if phase_stop_6 >= 1 - for i_8 = 1:phase_stop_6 + if tmp_lvl_2.shape >= 1 + for i_8 = 1:tmp_lvl_2.shape if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -102,7 +100,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_5 + res_lvl_idx[res_lvl_qos] = phase_stop_3 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" index b7313e60f..f52c61088 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" @@ -67,9 +67,9 @@ begin tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 if tmp_lvl_2_i < phase_stop_3 - phase_start_4 = max(i_start_2, 1 + tmp_lvl_2_i_2) - if tmp_lvl_2_i >= phase_start_4 - for i_8 = phase_start_4:tmp_lvl_2_i + phase_start = max(i_start_2, 1 + tmp_lvl_2_i_2) + if tmp_lvl_2_i >= phase_start + for i_8 = phase_start:tmp_lvl_2_i if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -88,11 +88,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_5 = i - phase_stop_7 = min(tmp_lvl_2_i, phase_stop_3) - phase_start_7 = max(1 + tmp_lvl_2_i_2, phase_start_5) - if phase_stop_7 >= phase_start_7 - for i_11 = phase_start_7:phase_stop_7 + phase_stop_7 = min(phase_stop_3, tmp_lvl_2_i) + phase_start_2 = max(i_start_2, 1 + tmp_lvl_2_i_2) + if phase_stop_7 >= phase_start_2 + for i_11 = phase_start_2:phase_stop_7 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -122,8 +121,8 @@ begin end tmp_lvl_q += 1 else - phase_stop_11 = min(tmp_lvl_i, phase_stop) - if tmp_lvl_i == phase_stop_11 + phase_stop_10 = min(phase_stop, tmp_lvl_i) + if tmp_lvl_i == phase_stop_10 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -140,8 +139,8 @@ begin else tmp_lvl_2_i1 = 0 end - phase_stop_12 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) - if phase_stop_12 >= 1 + phase_stop_11 = min(tmp_lvl_2_i1, tmp_lvl_2.shape) + if phase_stop_11 >= 1 i = 1 if tmp_lvl_idx_2[tmp_lvl_2_r] < 1 tmp_lvl_2_r = Finch.scansearch(tmp_lvl_idx_2, 1, tmp_lvl_2_r, tmp_lvl_2_r_stop - 1) @@ -152,10 +151,10 @@ begin tmp_lvl_2_q_stop = tmp_lvl_ofs[tmp_lvl_2_r + 1] tmp_lvl_2_i_2 = tmp_lvl_2_i - (tmp_lvl_2_q_stop - tmp_lvl_ofs[tmp_lvl_2_r]) tmp_lvl_2_q_ofs = (tmp_lvl_2_q_stop - tmp_lvl_2_i) - 1 - if tmp_lvl_2_i < phase_stop_12 - phase_start_12 = max(1 + tmp_lvl_2_i_2, i_start_6) - if tmp_lvl_2_i >= phase_start_12 - for i_17 = phase_start_12:tmp_lvl_2_i + if tmp_lvl_2_i < phase_stop_11 + phase_start_4 = max(1 + tmp_lvl_2_i_2, i_start_6) + if tmp_lvl_2_i >= phase_start_4 + for i_17 = phase_start_4:tmp_lvl_2_i if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -174,11 +173,10 @@ begin tmp_lvl_2_r += tmp_lvl_2_i == tmp_lvl_2_i i = tmp_lvl_2_i + 1 else - phase_start_13 = i - phase_stop_16 = min(tmp_lvl_2_i, phase_stop_12) - phase_start_15 = max(1 + tmp_lvl_2_i_2, phase_start_13) - if phase_stop_16 >= phase_start_15 - for i_20 = phase_start_15:phase_stop_16 + phase_stop_15 = min(tmp_lvl_2_i, phase_stop_11) + phase_start_5 = max(1 + tmp_lvl_2_i_2, i_start_6) + if phase_stop_15 >= phase_start_5 + for i_20 = phase_start_5:phase_stop_15 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -194,8 +192,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_r += phase_stop_16 == tmp_lvl_2_i - i = phase_stop_16 + 1 + tmp_lvl_2_r += phase_stop_15 == tmp_lvl_2_i + i = phase_stop_15 + 1 break end end @@ -203,7 +201,7 @@ begin res_lvl_ptr_2[res_lvl_qos + 1] += (res_lvl_2_qos_2 - res_lvl_2_qos_fill) - 1 res_lvl_2_qos_fill = res_lvl_2_qos_2 - 1 if res_lvldirty - res_lvl_idx[res_lvl_qos] = phase_stop_11 + res_lvl_idx[res_lvl_qos] = phase_stop_10 res_lvl_qos += 1 end tmp_lvl_q += 1 diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" index 5bb5c6c6b..fabf0f658 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" @@ -42,9 +42,9 @@ begin tmp_lvl_i_start = tmp_lvl_left[tmp_lvl_q] tmp_lvl_i_stop = tmp_lvl_right[tmp_lvl_q] if tmp_lvl_i_stop < phase_stop - phase_start_3 = max(j_start_2, tmp_lvl_i_start) - if tmp_lvl_i_stop >= phase_start_3 - for j_8 = phase_start_3:tmp_lvl_i_stop + phase_start = max(j_start_2, tmp_lvl_i_start) + if tmp_lvl_i_stop >= phase_start + for j_8 = phase_start:tmp_lvl_i_stop if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -72,10 +72,10 @@ begin tmp_lvl_2_i_start = tmp_lvl_left_2[tmp_lvl_2_q] tmp_lvl_2_i_stop = tmp_lvl_right_2[tmp_lvl_2_q] if tmp_lvl_2_i_stop < phase_stop_5 - phase_start_6 = max(i_start_2, tmp_lvl_2_i_start) - if tmp_lvl_2_i_stop >= phase_start_6 + phase_start_2 = max(i_start_2, tmp_lvl_2_i_start) + if tmp_lvl_2_i_stop >= phase_start_2 tmp_lvl_3_val = tmp_lvl_2_val[tmp_lvl_2_q] - for i_8 = phase_start_6:tmp_lvl_2_i_stop + for i_8 = phase_start_2:tmp_lvl_2_i_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -92,12 +92,11 @@ begin tmp_lvl_2_q += tmp_lvl_2_i_stop == tmp_lvl_2_i_stop i = tmp_lvl_2_i_stop + 1 else - phase_start_7 = i - phase_stop_9 = min(tmp_lvl_2_i_stop, phase_stop_5) - phase_start_9 = max(tmp_lvl_2_i_start, phase_start_7) - if phase_stop_9 >= phase_start_9 + phase_stop_9 = min(phase_stop_5, tmp_lvl_2_i_stop) + phase_start_3 = max(i_start_2, tmp_lvl_2_i_start) + if phase_stop_9 >= phase_start_3 tmp_lvl_3_val_2 = tmp_lvl_2_val[tmp_lvl_2_q] - for i_11 = phase_start_9:phase_stop_9 + for i_11 = phase_start_3:phase_stop_9 if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -128,11 +127,10 @@ begin tmp_lvl_q += tmp_lvl_i_stop == tmp_lvl_i_stop j = tmp_lvl_i_stop + 1 else - phase_start_11 = j - phase_stop_13 = min(tmp_lvl_i_stop, phase_stop) - phase_start_13 = max(tmp_lvl_i_start, phase_start_11) - if phase_stop_13 >= phase_start_13 - for j_11 = phase_start_13:phase_stop_13 + phase_stop_12 = min(phase_stop, tmp_lvl_i_stop) + phase_start_5 = max(j_start_2, tmp_lvl_i_start) + if phase_stop_12 >= phase_start_5 + for j_11 = phase_start_5:phase_stop_12 if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -149,8 +147,8 @@ begin else tmp_lvl_2_i_end_2 = 0 end - phase_stop_16 = min(tmp_lvl_2.shape, tmp_lvl_2_i_end_2) - if phase_stop_16 >= 1 + phase_stop_15 = min(tmp_lvl_2.shape, tmp_lvl_2_i_end_2) + if phase_stop_15 >= 1 i = 1 if tmp_lvl_right_2[tmp_lvl_2_q_2] < 1 tmp_lvl_2_q_2 = Finch.scansearch(tmp_lvl_right_2, 1, tmp_lvl_2_q_2, tmp_lvl_2_q_stop_2 - 1) @@ -159,11 +157,11 @@ begin i_start_6 = i tmp_lvl_2_i_start_2 = tmp_lvl_left_2[tmp_lvl_2_q_2] tmp_lvl_2_i_stop_2 = tmp_lvl_right_2[tmp_lvl_2_q_2] - if tmp_lvl_2_i_stop_2 < phase_stop_16 - phase_start_16 = max(i_start_6, tmp_lvl_2_i_start_2) - if tmp_lvl_2_i_stop_2 >= phase_start_16 + if tmp_lvl_2_i_stop_2 < phase_stop_15 + phase_start_6 = max(i_start_6, tmp_lvl_2_i_start_2) + if tmp_lvl_2_i_stop_2 >= phase_start_6 tmp_lvl_3_val_3 = tmp_lvl_2_val[tmp_lvl_2_q_2] - for i_17 = phase_start_16:tmp_lvl_2_i_stop_2 + for i_17 = phase_start_6:tmp_lvl_2_i_stop_2 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -180,12 +178,11 @@ begin tmp_lvl_2_q_2 += tmp_lvl_2_i_stop_2 == tmp_lvl_2_i_stop_2 i = tmp_lvl_2_i_stop_2 + 1 else - phase_start_17 = i - phase_stop_20 = min(tmp_lvl_2_i_stop_2, phase_stop_16) - phase_start_19 = max(tmp_lvl_2_i_start_2, phase_start_17) - if phase_stop_20 >= phase_start_19 + phase_stop_19 = min(phase_stop_15, tmp_lvl_2_i_stop_2) + phase_start_7 = max(i_start_6, tmp_lvl_2_i_start_2) + if phase_stop_19 >= phase_start_7 tmp_lvl_3_val_4 = tmp_lvl_2_val[tmp_lvl_2_q_2] - for i_20 = phase_start_19:phase_stop_20 + for i_20 = phase_start_7:phase_stop_19 if res_lvl_2_qos_2 > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) @@ -199,8 +196,8 @@ begin res_lvl_2_prev_pos = res_lvl_qos end end - tmp_lvl_2_q_2 += phase_stop_20 == tmp_lvl_2_i_stop_2 - i = phase_stop_20 + 1 + tmp_lvl_2_q_2 += phase_stop_19 == tmp_lvl_2_i_stop_2 + i = phase_stop_19 + 1 break end end @@ -213,8 +210,8 @@ begin end end end - tmp_lvl_q += phase_stop_13 == tmp_lvl_i_stop - j = phase_stop_13 + 1 + tmp_lvl_q += phase_stop_12 == tmp_lvl_i_stop + j = phase_stop_12 + 1 break end end diff --git "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" index 8e3c10870..e87563c59 100644 --- "a/test/reference64/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" +++ "b/test/reference64/convert_from_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" @@ -18,9 +18,8 @@ begin Finch.fill_range!(res_lvl_ptr, 0, 1 + 1, 1 + 1) res_lvl_qos = 0 + 1 0 < 1 || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop = tmp_lvl.shape - if phase_stop >= 1 - for j_5 = 1:phase_stop + if tmp_lvl.shape >= 1 + for j_5 = 1:tmp_lvl.shape if res_lvl_qos > res_lvl_qos_stop res_lvl_qos_stop = max(res_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx, res_lvl_qos_stop) @@ -31,9 +30,9 @@ begin tmp_lvl_s = tmp_lvl_q + fld(j_5 * (j_5 + -1), 2) res_lvl_2_qos = res_lvl_2_qos_fill + 1 res_lvl_2_prev_pos < res_lvl_qos || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) - phase_stop_2 = min(tmp_lvl.shape, j_5) - if phase_stop_2 >= 1 - for i_5 = 1:phase_stop_2 + phase_stop = min(tmp_lvl.shape, j_5) + if phase_stop >= 1 + for i_5 = 1:phase_stop if res_lvl_2_qos > res_lvl_2_qos_stop res_lvl_2_qos_stop = max(res_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(res_lvl_idx_2, res_lvl_2_qos_stop) diff --git a/test/reference64/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl index cab1b3b03..40c917c46 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseByteMap(Element(false))).jl @@ -59,7 +59,7 @@ begin end ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_q_2 = (1 - 1) * ref_lvl.shape + phase_stop_3 diff --git a/test/reference64/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl index 5ca7312a1..29f9de63c 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseCOO{1}(Element(false))).jl @@ -43,7 +43,7 @@ begin tmp_lvl_q += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_q > tmp_lvl_qos_stop diff --git a/test/reference64/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl index 1cd80215b..8822c6569 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseHash{1}(Element(false))).jl @@ -46,7 +46,7 @@ begin end ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_key = (1, (phase_stop_3,)) diff --git a/test/reference64/convert_to_0 Fiber!(SparseList(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseList(Element(false))).jl index 612ce3811..47e1b0bf9 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseList(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseList(Element(false))).jl @@ -40,7 +40,7 @@ begin tmp_lvl_qos += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git a/test/reference64/convert_to_0 Fiber!(SparseRLE(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseRLE(Element(false))).jl index 342c2498a..fa6dac03f 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseRLE(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseRLE(Element(false))).jl @@ -43,7 +43,7 @@ begin tmp_lvl_qos += 1 ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git a/test/reference64/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl index 78263b8ee..60670425c 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseTriangle{1}(Element(false))).jl @@ -29,7 +29,7 @@ begin tmp_lvl_val[tmp_lvl_q + -1 + ref_lvl_i] = ref_lvl_2_val ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] tmp_lvl_val[tmp_lvl_q + -1 + phase_stop_3] = ref_lvl_2_val diff --git a/test/reference64/convert_to_0 Fiber!(SparseVBL(Element(false))).jl b/test/reference64/convert_to_0 Fiber!(SparseVBL(Element(false))).jl index de78ff4b4..bcdcc7f7f 100644 --- a/test/reference64/convert_to_0 Fiber!(SparseVBL(Element(false))).jl +++ b/test/reference64/convert_to_0 Fiber!(SparseVBL(Element(false))).jl @@ -54,7 +54,7 @@ begin tmp_lvl_ofs[tmp_lvl_ros + 1] = tmp_lvl_qos ref_lvl_q += 1 else - phase_stop_3 = min(ref_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, ref_lvl_i) if ref_lvl_i == phase_stop_3 ref_lvl_2_val = ref_lvl_val[ref_lvl_q] if tmp_lvl_qos > tmp_lvl_qos_stop diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" index 1a1b4b461..410ca1744 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseByteMap(Element(false)))).jl" @@ -80,7 +80,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_2 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_5 @@ -102,9 +102,9 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -112,14 +112,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + ref_lvl_2_i tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 @@ -134,10 +134,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_10 + tmp_lvl_2_q_3 = (tmp_lvl_q - 1) * ref_lvl_2.shape + phase_stop_9 tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 if !(tmp_lvl_tbl[tmp_lvl_2_q_3]) tmp_lvl_tbl[tmp_lvl_2_q_3] = true @@ -146,7 +146,7 @@ begin tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_srt, tmp_lvl_2_qos_stop) end - tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_q, phase_stop_10) + tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_q, phase_stop_9) end ref_lvl_2_q += 1 end diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" index 8c11b40dd..893a42bef 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseCOO{1}(Element(false)))).jl" @@ -66,7 +66,7 @@ begin tmp_lvl_2_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q > tmp_lvl_2_qos_stop @@ -93,9 +93,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_q - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_q_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) tmp_lvl_2_prev_coord_3 = () @@ -106,14 +106,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -128,8 +128,8 @@ begin tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -138,9 +138,9 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_q_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_q_2] = ref_lvl_3_val_2 - tmp_lvl_2_prev_coord_3 < (phase_stop_10,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_2_prev_coord_3 = (phase_stop_10,) - tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_10 + tmp_lvl_2_prev_coord_3 < (phase_stop_9,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_2_prev_coord_3 = (phase_stop_9,) + tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_9 tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 end diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" index 74f94563d..cc3d34e8a 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseHash{1}(Element(false)))).jl" @@ -67,7 +67,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key = (tmp_lvl_q, (phase_stop_5,)) @@ -91,9 +91,9 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -101,14 +101,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key_2 = (tmp_lvl_q, (ref_lvl_2_i,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) @@ -125,10 +125,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_key_2 = (tmp_lvl_q, (phase_stop_10,)) + tmp_lvl_2_key_2 = (tmp_lvl_q, (phase_stop_9,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" index c063b8419..e57dc9ae6 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseList(Element(false)))).jl" @@ -64,7 +64,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -87,9 +87,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseListLevels cannot be updated multiple times")) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] @@ -99,14 +99,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -120,8 +120,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -130,7 +130,7 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - tmp_lvl_idx[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_idx[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" index 30a008974..fe81e8378 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseRLE(Element(false)))).jl" @@ -67,7 +67,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -92,9 +92,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_prev_pos < tmp_lvl_q || throw(FinchProtocolError("SparseRLELevels cannot be updated multiple times")) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] @@ -104,14 +104,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -127,8 +127,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -138,8 +138,8 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" index 6db34ed99..ff851cda6 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseTriangle{1}(Element(false)))).jl" @@ -49,7 +49,7 @@ begin tmp_lvl_2_val[tmp_lvl_2_q + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_val[tmp_lvl_2_q + -1 + phase_stop_5] = ref_lvl_3_val @@ -61,9 +61,9 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_9 + phase_stop_7 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_7 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 tmp_lvl_2_q_2 = (tmp_lvl_q - 1) * fld(ref_lvl_2.shape, 1) + 1 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] @@ -72,22 +72,22 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1) - if phase_stop_10 >= 1 + phase_stop_8 = min(ref_lvl_2.shape, ref_lvl_2_i1) + if phase_stop_8 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_8 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) + if ref_lvl_2_i == phase_stop_10 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_10] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" index 2e5e2a920..6af4a81ec 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(Dense(SparseVBL(Element(false)))).jl" @@ -79,7 +79,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -111,9 +111,9 @@ begin tmp_lvl_2_qos_fill = tmp_lvl_2_qos - 1 ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 - tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 + tmp_lvl_q = (1 - 1) * ref_lvl.shape + phase_stop_6 tmp_lvl_2_ros_2 = tmp_lvl_2_ros_fill tmp_lvl_2_qos_2 = tmp_lvl_2_qos_fill + 1 tmp_lvl_2_i_prev_2 = -1 @@ -125,14 +125,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,8 +154,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_q ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -163,7 +163,7 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_qos_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 - if phase_stop_10 > tmp_lvl_2_i_prev_2 + 1 + if phase_stop_9 > tmp_lvl_2_i_prev_2 + 1 tmp_lvl_2_ros_2 += 1 if tmp_lvl_2_ros_2 > tmp_lvl_2_ros_stop tmp_lvl_2_ros_stop = max(tmp_lvl_2_ros_stop << 1, 1) @@ -171,7 +171,7 @@ begin Finch.resize_if_smaller!(tmp_lvl_ofs, tmp_lvl_2_ros_stop + 1) end end - tmp_lvl_idx[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_10) + tmp_lvl_idx[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_9) tmp_lvl_2_qos_2 += 1 tmp_lvl_ofs[tmp_lvl_2_ros_2 + 1] = tmp_lvl_2_qos_2 tmp_lvl_2_prev_pos = tmp_lvl_q diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" index 6818feb47..e0132cafd 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseCOO{2}(Element(false))).jl" @@ -64,7 +64,7 @@ begin tmp_lvl_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop @@ -88,8 +88,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -97,14 +97,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -114,15 +114,15 @@ begin Finch.fill_range!(tmp_lvl_val, false, tmp_lvl_q, tmp_lvl_qos_stop) end tmp_lvl_val[tmp_lvl_q] = ref_lvl_3_val_2 - tmp_lvl_prev_coord_3 < (phase_stop_7, ref_lvl_2_i) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_prev_coord_3 = (phase_stop_7, ref_lvl_2_i) + tmp_lvl_prev_coord_3 < (phase_stop_6, ref_lvl_2_i) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_prev_coord_3 = (phase_stop_6, ref_lvl_2_i) tmp_lvl_tbl1[tmp_lvl_q] = ref_lvl_2_i - tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_7 + tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_6 tmp_lvl_q += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_q > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -132,10 +132,10 @@ begin Finch.fill_range!(tmp_lvl_val, false, tmp_lvl_q, tmp_lvl_qos_stop) end tmp_lvl_val[tmp_lvl_q] = ref_lvl_3_val_2 - tmp_lvl_prev_coord_3 < (phase_stop_7, phase_stop_10) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_prev_coord_3 = (phase_stop_7, phase_stop_10) - tmp_lvl_tbl1[tmp_lvl_q] = phase_stop_10 - tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_7 + tmp_lvl_prev_coord_3 < (phase_stop_6, phase_stop_9) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_prev_coord_3 = (phase_stop_6, phase_stop_9) + tmp_lvl_tbl1[tmp_lvl_q] = phase_stop_9 + tmp_lvl_tbl2[tmp_lvl_q] = phase_stop_6 tmp_lvl_q += 1 ref_lvl_2_q += 1 end diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" index 543e1ba6b..3d997f122 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseHash{2}(Element(false))).jl" @@ -64,7 +64,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_key_2 = (1, (phase_stop_5, ref_lvl_i)) @@ -88,8 +88,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -97,16 +97,16 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_key_3 = (1, (ref_lvl_2_i, phase_stop_7)) + tmp_lvl_key_3 = (1, (ref_lvl_2_i, phase_stop_6)) tmp_lvl_q_3 = get(tmp_lvl_tbl, tmp_lvl_key_3, tmp_lvl_qos_fill + 1) if tmp_lvl_q_3 > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) @@ -121,10 +121,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_key_3 = (1, (phase_stop_10, phase_stop_7)) + tmp_lvl_key_3 = (1, (phase_stop_9, phase_stop_6)) tmp_lvl_q_3 = get(tmp_lvl_tbl, tmp_lvl_key_3, tmp_lvl_qos_fill + 1) if tmp_lvl_q_3 > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" index 0c7ea23af..a1582fd6a 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseByteMap(Element(false)))).jl" @@ -91,7 +91,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_2 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_5 @@ -118,8 +118,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -140,14 +140,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + ref_lvl_2_i tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 @@ -163,10 +163,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_10 + tmp_lvl_2_q_3 = (tmp_lvl_qos - 1) * ref_lvl_2.shape + phase_stop_9 tmp_lvl_2_val[tmp_lvl_2_q_3] = ref_lvl_3_val_2 tmp_lvldirty = true if !(tmp_lvl_tbl[tmp_lvl_2_q_3]) @@ -176,7 +176,7 @@ begin tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_srt, tmp_lvl_2_qos_stop) end - tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_qos, phase_stop_10) + tmp_lvl_srt[tmp_lvl_2_qos_fill] = (tmp_lvl_qos, phase_stop_9) end ref_lvl_2_q += 1 end @@ -185,7 +185,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" index 1c4a00022..76a534e5e 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseCOO{1}(Element(false)))).jl" @@ -77,7 +77,7 @@ begin tmp_lvl_2_q += 1 ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q > tmp_lvl_2_qos_stop @@ -109,8 +109,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -128,14 +128,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -151,8 +151,8 @@ begin tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -161,10 +161,10 @@ begin Finch.fill_range!(tmp_lvl_2_val, false, tmp_lvl_2_q_2, tmp_lvl_2_qos_stop) end tmp_lvl_2_val[tmp_lvl_2_q_2] = ref_lvl_3_val_2 - tmp_lvl_2_prev_coord_3 < (phase_stop_10,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) - tmp_lvl_2_prev_coord_3 = (phase_stop_10,) + tmp_lvl_2_prev_coord_3 < (phase_stop_9,) || throw(FinchProtocolError("SparseCOOLevels cannot be updated multiple times")) + tmp_lvl_2_prev_coord_3 = (phase_stop_9,) tmp_lvldirty = true - tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_10 + tmp_lvl_tbl1[tmp_lvl_2_q_2] = phase_stop_9 tmp_lvl_2_q_2 += 1 ref_lvl_2_q += 1 end @@ -178,7 +178,7 @@ begin end tmp_lvl_2_qos_fill = tmp_lvl_2_q_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" index ea16eadcb..0574470e9 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseHash{1}(Element(false)))).jl" @@ -78,7 +78,7 @@ begin end ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key = (tmp_lvl_qos, (phase_stop_5,)) @@ -107,8 +107,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -123,14 +123,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_2_key_2 = (tmp_lvl_qos, (ref_lvl_2_i,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) @@ -148,10 +148,10 @@ begin end ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_2_key_2 = (tmp_lvl_qos, (phase_stop_10,)) + tmp_lvl_2_key_2 = (tmp_lvl_qos, (phase_stop_9,)) tmp_lvl_2_q_2 = get(tmp_lvl_tbl, tmp_lvl_2_key_2, tmp_lvl_2_qos_fill + 1) if tmp_lvl_2_q_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -172,7 +172,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" index a27b57426..b8a9b814c 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseList(Element(false)))).jl" @@ -75,7 +75,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -103,8 +103,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -121,14 +121,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -143,8 +143,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,7 +154,7 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_idx_2[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_idx_2[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -166,7 +166,7 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] += (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" index cf45a4d60..6889d5b20 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseRLE(Element(false)))).jl" @@ -78,7 +78,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -108,8 +108,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -126,14 +126,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -150,8 +150,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -162,8 +162,8 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -175,7 +175,7 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] = (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" index 203d0d904..7007203bd 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseTriangle{1}(Element(false)))).jl" @@ -62,7 +62,7 @@ begin tmp_lvl_2_val[tmp_lvl_2_q + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true @@ -79,8 +79,8 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 + phase_stop_7 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_7 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -98,24 +98,24 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1) - if phase_stop_10 >= 1 + phase_stop_8 = min(ref_lvl_2.shape, ref_lvl_2_i1) + if phase_stop_8 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_8 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) + if ref_lvl_2_i == phase_stop_10 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvldirty = true - tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_2_val[tmp_lvl_2_q_2 + -1 + phase_stop_10] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break @@ -123,7 +123,7 @@ begin end end if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_9 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" index 3f334dec2..57bc1e6e9 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseList(SparseVBL(Element(false)))).jl" @@ -90,7 +90,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -127,8 +127,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_idx, tmp_lvl_qos_stop) @@ -147,14 +147,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -177,8 +177,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -187,7 +187,7 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - if phase_stop_10 > tmp_lvl_2_i_prev_2 + 1 + if phase_stop_9 > tmp_lvl_2_i_prev_2 + 1 tmp_lvl_2_ros_2 += 1 if tmp_lvl_2_ros_2 > tmp_lvl_2_ros_stop tmp_lvl_2_ros_stop = max(tmp_lvl_2_ros_stop << 1, 1) @@ -195,7 +195,7 @@ begin Finch.resize_if_smaller!(tmp_lvl_ofs, tmp_lvl_2_ros_stop + 1) end end - tmp_lvl_idx_2[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_10) + tmp_lvl_idx_2[tmp_lvl_2_ros_2] = (tmp_lvl_2_i_prev_2 = phase_stop_9) tmp_lvl_2_qos_2 += 1 tmp_lvl_ofs[tmp_lvl_2_ros_2 + 1] = tmp_lvl_2_qos_2 tmp_lvl_2_prev_pos = tmp_lvl_qos @@ -209,7 +209,7 @@ begin tmp_lvl_2_ros_fill = tmp_lvl_2_ros_2 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_idx[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_idx[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" index f6951cb5d..f548af518 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseRLE(SparseRLE(Element(false)))).jl" @@ -80,7 +80,7 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos > tmp_lvl_2_qos_stop @@ -111,8 +111,8 @@ begin end ref_lvl_q += 1 else - phase_stop_7 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_6 if tmp_lvl_qos > tmp_lvl_qos_stop tmp_lvl_qos_stop = max(tmp_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(tmp_lvl_left, tmp_lvl_qos_stop) @@ -130,14 +130,14 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_8 = min(ref_lvl_2_i1, ref_lvl_2.shape) - if phase_stop_8 >= 1 + phase_stop_7 = min(ref_lvl_2_i1, ref_lvl_2.shape) + if phase_stop_7 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_8 + if ref_lvl_2_i < phase_stop_7 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -154,8 +154,8 @@ begin tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 else - phase_stop_10 = min(ref_lvl_2_i, phase_stop_8) - if ref_lvl_2_i == phase_stop_10 + phase_stop_9 = min(ref_lvl_2_i, phase_stop_7) + if ref_lvl_2_i == phase_stop_9 ref_lvl_3_val_2 = ref_lvl_2_val[ref_lvl_2_q] if tmp_lvl_2_qos_2 > tmp_lvl_2_qos_stop tmp_lvl_2_qos_stop = max(tmp_lvl_2_qos_stop << 1, 1) @@ -166,8 +166,8 @@ begin end tmp_lvl_2_val[tmp_lvl_2_qos_2] = ref_lvl_3_val_2 tmp_lvldirty = true - tmp_lvl_left_2[tmp_lvl_2_qos_2] = phase_stop_10 - tmp_lvl_right_2[tmp_lvl_2_qos_2] = phase_stop_10 + tmp_lvl_left_2[tmp_lvl_2_qos_2] = phase_stop_9 + tmp_lvl_right_2[tmp_lvl_2_qos_2] = phase_stop_9 tmp_lvl_2_qos_2 += 1 tmp_lvl_2_prev_pos = tmp_lvl_qos ref_lvl_2_q += 1 @@ -179,8 +179,8 @@ begin tmp_lvl_ptr_2[tmp_lvl_qos + 1] = (tmp_lvl_2_qos_2 - tmp_lvl_2_qos_fill) - 1 tmp_lvl_2_qos_fill = tmp_lvl_2_qos_2 - 1 if tmp_lvldirty - tmp_lvl_left[tmp_lvl_qos] = phase_stop_7 - tmp_lvl_right[tmp_lvl_qos] = phase_stop_7 + tmp_lvl_left[tmp_lvl_qos] = phase_stop_6 + tmp_lvl_right[tmp_lvl_qos] = phase_stop_6 tmp_lvl_qos += 1 end ref_lvl_q += 1 diff --git "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" index 6832192e3..8ed248dfa 100644 --- "a/test/reference64/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" +++ "b/test/reference64/convert_to_0\303\2270 Fiber!(SparseTriangle{2}(Element(false))).jl" @@ -36,7 +36,7 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_3 = min(ref_lvl_i, ref_lvl_2.shape, ref_lvl_2_i1) + phase_stop_3 = min(ref_lvl_i, ref_lvl_2_i1, ref_lvl_2.shape) if phase_stop_3 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) @@ -48,7 +48,7 @@ begin tmp_lvl_val[tmp_lvl_s + -1 + ref_lvl_2_i] = ref_lvl_3_val ref_lvl_2_q += 1 else - phase_stop_5 = min(ref_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, ref_lvl_2_i) if ref_lvl_2_i == phase_stop_5 ref_lvl_3_val = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_5] = ref_lvl_3_val @@ -60,9 +60,9 @@ begin end ref_lvl_q += 1 else - phase_stop_9 = min(ref_lvl_i, phase_stop) - if ref_lvl_i == phase_stop_9 - tmp_lvl_s = tmp_lvl_q + fld(phase_stop_9 * (-1 + phase_stop_9), 2) + phase_stop_8 = min(phase_stop, ref_lvl_i) + if ref_lvl_i == phase_stop_8 + tmp_lvl_s = tmp_lvl_q + fld(phase_stop_8 * (-1 + phase_stop_8), 2) ref_lvl_2_q = ref_lvl_ptr_2[ref_lvl_q] ref_lvl_2_q_stop = ref_lvl_ptr_2[ref_lvl_q + 1] if ref_lvl_2_q < ref_lvl_2_q_stop @@ -70,22 +70,22 @@ begin else ref_lvl_2_i1 = 0 end - phase_stop_10 = min(ref_lvl_2.shape, ref_lvl_2_i1, phase_stop_9) - if phase_stop_10 >= 1 + phase_stop_9 = min(ref_lvl_2_i1, ref_lvl_2.shape, phase_stop_8) + if phase_stop_9 >= 1 if ref_lvl_idx_2[ref_lvl_2_q] < 1 ref_lvl_2_q = Finch.scansearch(ref_lvl_idx_2, 1, ref_lvl_2_q, ref_lvl_2_q_stop - 1) end while true ref_lvl_2_i = ref_lvl_idx_2[ref_lvl_2_q] - if ref_lvl_2_i < phase_stop_10 + if ref_lvl_2_i < phase_stop_9 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] tmp_lvl_val[tmp_lvl_s + -1 + ref_lvl_2_i] = ref_lvl_3_val_3 ref_lvl_2_q += 1 else - phase_stop_12 = min(ref_lvl_2_i, phase_stop_10) - if ref_lvl_2_i == phase_stop_12 + phase_stop_11 = min(ref_lvl_2_i, phase_stop_9) + if ref_lvl_2_i == phase_stop_11 ref_lvl_3_val_3 = ref_lvl_2_val[ref_lvl_2_q] - tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_12] = ref_lvl_3_val_3 + tmp_lvl_val[tmp_lvl_s + -1 + phase_stop_11] = ref_lvl_3_val_3 ref_lvl_2_q += 1 end break diff --git a/test/reference64/debug_parallel_spmv.txt b/test/reference64/debug_parallel_spmv.txt index 2dec775ab..9bddfe1aa 100644 --- a/test/reference64/debug_parallel_spmv.txt +++ b/test/reference64/debug_parallel_spmv.txt @@ -27,10 +27,10 @@ quote A_lvl_2_val = moveto(A_lvl_2_val, CPU(Threads.nthreads())) x_lvl_val = moveto(x_lvl_val, CPU(Threads.nthreads())) Threads.@threads for i_4 = 1:Threads.nthreads() - phase_start_2 = max(1, 1 + fld(A_lvl.shape * (i_4 + -1), Threads.nthreads())) + phase_start = max(1, 1 + fld(A_lvl.shape * (i_4 + -1), Threads.nthreads())) phase_stop_2 = min(A_lvl.shape, fld(A_lvl.shape * i_4, Threads.nthreads())) - if phase_stop_2 >= phase_start_2 - for j_6 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for j_6 = phase_start:phase_stop_2 y_lvl_q = (1 - 1) * A_lvl.shape + j_6 A_lvl_q = (1 - 1) * A_lvl.shape + j_6 A_lvl_2_q = A_lvl_ptr[A_lvl_q] @@ -54,7 +54,7 @@ quote y_lvl_val[y_lvl_q] = y_lvl_val[y_lvl_q] + A_lvl_3_val * x_lvl_2_val A_lvl_2_q += 1 else - phase_stop_5 = min(A_lvl_2_i, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_2_i) if A_lvl_2_i == phase_stop_5 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] x_lvl_q = (1 - 1) * x_lvl.shape + phase_stop_5 diff --git a/test/reference64/gather_hl.jl b/test/reference64/gather_hl.jl index d27279565..226f93261 100644 --- a/test/reference64/gather_hl.jl +++ b/test/reference64/gather_hl.jl @@ -24,7 +24,7 @@ begin B_val = A_lvl_2_val + B_val A_lvl_q += 1 else - phase_stop_3 = min(A_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_i) if A_lvl_i == phase_stop_3 A_lvl_2_val = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val diff --git a/test/reference64/gustavsons.jl b/test/reference64/gustavsons.jl index a2a574edf..e85629467 100644 --- a/test/reference64/gustavsons.jl +++ b/test/reference64/gustavsons.jl @@ -92,7 +92,7 @@ begin end A_lvl_2_q_2 += 1 else - phase_stop_5 = min(A_lvl_2_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, A_lvl_2_i_2) if A_lvl_2_i_2 == phase_stop_5 A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_5 @@ -114,10 +114,10 @@ begin end A_lvl_2_q += 1 else - phase_stop_7 = min(A_lvl_2_i, phase_stop) - if A_lvl_2_i == phase_stop_7 + phase_stop_6 = min(phase_stop, A_lvl_2_i) + if A_lvl_2_i == phase_stop_6 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] - A_lvl_q_2 = (1 - 1) * A_lvl.shape + phase_stop_7 + A_lvl_q_2 = (1 - 1) * A_lvl.shape + phase_stop_6 A_lvl_2_q_3 = A_lvl_ptr[A_lvl_q_2] A_lvl_2_q_stop_3 = A_lvl_ptr[A_lvl_q_2 + 1] if A_lvl_2_q_3 < A_lvl_2_q_stop_3 @@ -125,14 +125,14 @@ begin else A_lvl_2_i1_3 = 0 end - phase_stop_8 = min(A_lvl_2.shape, A_lvl_2_i1_3) - if phase_stop_8 >= 1 + phase_stop_7 = min(A_lvl_2.shape, A_lvl_2_i1_3) + if phase_stop_7 >= 1 if A_lvl_idx[A_lvl_2_q_3] < 1 A_lvl_2_q_3 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_3, A_lvl_2_q_stop_3 - 1) end while true A_lvl_2_i_3 = A_lvl_idx[A_lvl_2_q_3] - if A_lvl_2_i_3 < phase_stop_8 + if A_lvl_2_i_3 < phase_stop_7 A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + A_lvl_2_i_3 w_lvl_val[w_lvl_q_2] = A_lvl_3_val * A_lvl_3_val_3 + w_lvl_val[w_lvl_q_2] @@ -147,10 +147,10 @@ begin end A_lvl_2_q_3 += 1 else - phase_stop_10 = min(A_lvl_2_i_3, phase_stop_8) - if A_lvl_2_i_3 == phase_stop_10 + phase_stop_9 = min(phase_stop_7, A_lvl_2_i_3) + if A_lvl_2_i_3 == phase_stop_9 A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] - w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_10 + w_lvl_q_2 = (1 - 1) * A_lvl_2.shape + phase_stop_9 w_lvl_val[w_lvl_q_2] = A_lvl_3_val * A_lvl_3_val_3 + w_lvl_val[w_lvl_q_2] if !(w_lvl_tbl[w_lvl_q_2]) w_lvl_tbl[w_lvl_q_2] = true @@ -159,7 +159,7 @@ begin w_lvl_qos_stop = max(w_lvl_qos_stop << 1, 1) Finch.resize_if_smaller!(w_lvl_srt, w_lvl_qos_stop) end - w_lvl_srt[w_lvl_qos_fill] = (1, phase_stop_10) + w_lvl_srt[w_lvl_qos_fill] = (1, phase_stop_9) end A_lvl_2_q_3 += 1 end @@ -193,14 +193,14 @@ begin else w_lvl_i_stop = 0 end - phase_stop_13 = min(A_lvl_2.shape, w_lvl_i_stop) - if phase_stop_13 >= 1 + phase_stop_10 = min(A_lvl_2.shape, w_lvl_i_stop) + if phase_stop_10 >= 1 while w_lvl_r_3 + 1 < w_lvl_r_stop && last(w_lvl_srt[w_lvl_r_3]) < 1 w_lvl_r_3 += 1 end while true w_lvl_i_2 = last(w_lvl_srt[w_lvl_r_3]) - if w_lvl_i_2 < phase_stop_13 + if w_lvl_i_2 < phase_stop_10 w_lvl_q_3 = (1 - 1) * A_lvl_2.shape + w_lvl_i_2 w_lvl_2_val = w_lvl_val[w_lvl_q_3] if B_lvl_2_qos > B_lvl_2_qos_stop @@ -215,8 +215,8 @@ begin B_lvl_2_prev_pos = B_lvl_q w_lvl_r_3 += 1 else - phase_stop_15 = min(w_lvl_i_2, phase_stop_13) - if w_lvl_i_2 == phase_stop_15 + phase_stop_12 = min(phase_stop_10, w_lvl_i_2) + if w_lvl_i_2 == phase_stop_12 w_lvl_q_3 = (1 - 1) * A_lvl_2.shape + w_lvl_i_2 w_lvl_2_val_2 = w_lvl_val[w_lvl_q_3] if B_lvl_2_qos > B_lvl_2_qos_stop @@ -226,7 +226,7 @@ begin Finch.fill_range!(B_lvl_2_val, 0.0, B_lvl_2_qos, B_lvl_2_qos_stop) end B_lvl_2_val[B_lvl_2_qos] = w_lvl_2_val_2 - B_lvl_idx[B_lvl_2_qos] = phase_stop_15 + B_lvl_idx[B_lvl_2_qos] = phase_stop_12 B_lvl_2_qos += 1 B_lvl_2_prev_pos = B_lvl_q w_lvl_r_3 += 1 diff --git "a/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" "b/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" index caac14cbc..2f5990eb4 100644 --- "a/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" +++ "b/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseByteMap(Element(0.0)))).jl" @@ -62,7 +62,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_q = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_5 @@ -84,23 +84,23 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 - fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 + fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + arr_2_lvl_i_2 fmt_lvl_2_val[fmt_lvl_2_q_2] = arr_2_lvl_2_val_2 + fmt_lvl_2_val[fmt_lvl_2_q_2] @@ -115,10 +115,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_10 + fmt_lvl_2_q_2 = (fmt_lvl_q - 1) * fmt_lvl_2.shape + phase_stop_9 fmt_lvl_2_val[fmt_lvl_2_q_2] = arr_2_lvl_2_val_2 + fmt_lvl_2_val[fmt_lvl_2_q_2] if !(fmt_lvl_tbl[fmt_lvl_2_q_2]) fmt_lvl_tbl[fmt_lvl_2_q_2] = true @@ -127,7 +127,7 @@ begin fmt_lvl_2_qos_stop = max(fmt_lvl_2_qos_stop << 1, 1) Finch.resize_if_smaller!(fmt_lvl_srt, fmt_lvl_2_qos_stop) end - fmt_lvl_srt[fmt_lvl_2_qos_fill] = (fmt_lvl_q, phase_stop_10) + fmt_lvl_srt[fmt_lvl_2_qos_fill] = (fmt_lvl_q, phase_stop_9) end arr_2_lvl_q_2 += 1 end diff --git "a/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" "b/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" index 529f9f5ca..af650d163 100644 --- "a/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" +++ "b/test/reference64/increment_to_10\303\22710 Fiber!(Dense(SparseHash{1}(Element(0.0)))).jl" @@ -70,7 +70,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_key = (fmt_lvl_q, (phase_stop_5,)) @@ -94,23 +94,23 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 - fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 + fmt_lvl_q = (1 - 1) * fmt_lvl.shape + phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_2_key_2 = (fmt_lvl_q, (arr_2_lvl_i_2,)) fmt_lvl_2_q_2 = get(fmt_lvl_tbl, fmt_lvl_2_key_2, fmt_lvl_2_qos_fill + 1) @@ -127,10 +127,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_2_key_2 = (fmt_lvl_q, (phase_stop_10,)) + fmt_lvl_2_key_2 = (fmt_lvl_q, (phase_stop_9,)) fmt_lvl_2_q_2 = get(fmt_lvl_tbl, fmt_lvl_2_key_2, fmt_lvl_2_qos_fill + 1) if fmt_lvl_2_q_2 > fmt_lvl_2_qos_stop fmt_lvl_2_qos_stop = max(fmt_lvl_2_qos_stop << 1, 1) diff --git "a/test/reference64/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" "b/test/reference64/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" index 54172d96b..50f2923c1 100644 --- "a/test/reference64/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" +++ "b/test/reference64/increment_to_10\303\22710 Fiber!(SparseHash{2}(Element(0.0))).jl" @@ -68,7 +68,7 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_5 = min(arr_2_lvl_i_2, phase_stop_3) + phase_stop_5 = min(phase_stop_3, arr_2_lvl_i_2) if arr_2_lvl_i_2 == phase_stop_5 arr_2_lvl_2_val = arr_2_lvl_val[arr_2_lvl_q_2] fmt_lvl_key_2 = (1, (phase_stop_5, arr_2_lvl_i)) @@ -92,24 +92,24 @@ begin end arr_2_lvl_q = arr_2_lvl_q_step else - phase_stop_7 = min(arr_2_lvl_i, phase_stop) - if arr_2_lvl_i == phase_stop_7 + phase_stop_6 = min(phase_stop, arr_2_lvl_i) + if arr_2_lvl_i == phase_stop_6 arr_2_lvl_q_2 = arr_2_lvl_q if arr_2_lvl_q < arr_2_lvl_q_step arr_2_lvl_i_stop_2 = arr_2_lvl_tbl1[arr_2_lvl_q_step - 1] else arr_2_lvl_i_stop_2 = 0 end - phase_stop_8 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) - if phase_stop_8 >= 1 + phase_stop_7 = min(arr_2_lvl.shape[1], arr_2_lvl_i_stop_2) + if phase_stop_7 >= 1 if arr_2_lvl_tbl1[arr_2_lvl_q] < 1 arr_2_lvl_q_2 = Finch.scansearch(arr_2_lvl_tbl1, 1, arr_2_lvl_q, arr_2_lvl_q_step - 1) end while true arr_2_lvl_i_2 = arr_2_lvl_tbl1[arr_2_lvl_q_2] - if arr_2_lvl_i_2 < phase_stop_8 + if arr_2_lvl_i_2 < phase_stop_7 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_key_3 = (1, (arr_2_lvl_i_2, phase_stop_7)) + fmt_lvl_key_3 = (1, (arr_2_lvl_i_2, phase_stop_6)) fmt_lvl_q_3 = get(fmt_lvl_tbl, fmt_lvl_key_3, fmt_lvl_qos_fill + 1) if fmt_lvl_q_3 > fmt_lvl_qos_stop fmt_lvl_qos_stop = max(fmt_lvl_qos_stop << 1, 1) @@ -124,10 +124,10 @@ begin end arr_2_lvl_q_2 += 1 else - phase_stop_10 = min(arr_2_lvl_i_2, phase_stop_8) - if arr_2_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(arr_2_lvl_i_2, phase_stop_7) + if arr_2_lvl_i_2 == phase_stop_9 arr_2_lvl_2_val_2 = arr_2_lvl_val[arr_2_lvl_q_2] - fmt_lvl_key_3 = (1, (phase_stop_10, phase_stop_7)) + fmt_lvl_key_3 = (1, (phase_stop_9, phase_stop_6)) fmt_lvl_q_3 = get(fmt_lvl_tbl, fmt_lvl_key_3, fmt_lvl_qos_fill + 1) if fmt_lvl_q_3 > fmt_lvl_qos_stop fmt_lvl_qos_stop = max(fmt_lvl_qos_stop << 1, 1) diff --git a/test/reference64/innerprod.jl b/test/reference64/innerprod.jl index 36a0f0d29..39669d1db 100644 --- a/test/reference64/innerprod.jl +++ b/test/reference64/innerprod.jl @@ -44,7 +44,7 @@ begin else A_lvl_2_i1_2 = 0 end - phase_stop = min(A_lvl_2.shape, A_lvl_2_i1, A_lvl_2_i1_2) + phase_stop = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1) if phase_stop >= 1 k = 1 if A_lvl_idx[A_lvl_2_q] < 1 @@ -56,7 +56,7 @@ begin while k <= phase_stop A_lvl_2_i = A_lvl_idx[A_lvl_2_q] A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] - phase_stop_2 = min(A_lvl_2_i_2, phase_stop, A_lvl_2_i) + phase_stop_2 = min(A_lvl_2_i, A_lvl_2_i_2, phase_stop) if A_lvl_2_i == phase_stop_2 && A_lvl_2_i_2 == phase_stop_2 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] diff --git a/test/reference64/parallel_blur.jl b/test/reference64/parallel_blur.jl index e6d11f7d2..9c336a2dd 100644 --- a/test/reference64/parallel_blur.jl +++ b/test/reference64/parallel_blur.jl @@ -23,10 +23,10 @@ begin output_lvl_2_val = moveto(output_lvl_2_val, cpu) Threads.@threads for i = 1:cpu.n tmp_lvl_val = moveto(val_3, CPUThread(i, cpu, Serial())) - phase_start_2 = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) + phase_start = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) phase_stop_2 = min(y_stop, fld(y_stop * i, cpu.n)) - if phase_stop_2 >= phase_start_2 - for y_8 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for y_8 = phase_start:phase_stop_2 input_lvl_q_2 = (1 - 1) * input_lvl.shape + (y_8 + 0) input_lvl_q = (1 - 1) * input_lvl.shape + y_8 input_lvl_q_3 = (1 - 1) * input_lvl.shape + (y_8 + 0) diff --git a/test/reference64/parallel_blur_sparse.jl b/test/reference64/parallel_blur_sparse.jl index 4ce78e8f9..2be0fc294 100644 --- a/test/reference64/parallel_blur_sparse.jl +++ b/test/reference64/parallel_blur_sparse.jl @@ -27,10 +27,10 @@ begin output_lvl_2_val = moveto(output_lvl_2_val, cpu) Threads.@threads for i = 1:cpu.n tmp_lvl_val = moveto(val_3, CPUThread(i, cpu, Serial())) - phase_start_2 = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) + phase_start = max(1, 1 + fld(y_stop * (i + -1), cpu.n)) phase_stop_2 = min(y_stop, fld(y_stop * i, cpu.n)) - if phase_stop_2 >= phase_start_2 - for y_8 = phase_start_2:phase_stop_2 + if phase_stop_2 >= phase_start + for y_8 = phase_start:phase_stop_2 input_lvl_q_2 = (1 - 1) * input_lvl.shape + (y_8 + 0) input_lvl_q = (1 - 1) * input_lvl.shape + y_8 input_lvl_q_3 = (1 - 1) * input_lvl.shape + (y_8 + 0) @@ -58,7 +58,7 @@ begin else input_lvl_2_i1_3 = 0 end - phase_stop_3 = min(input_lvl_2.shape, input_lvl_2_i1_2, -1 + input_lvl_2_i1_3, 1 + input_lvl_2_i1) + phase_stop_3 = min(input_lvl_2.shape, input_lvl_2_i1_2, 1 + input_lvl_2_i1, -1 + input_lvl_2_i1_3) if phase_stop_3 >= 1 x = 1 if input_lvl_idx[input_lvl_2_q] < 1 + -1 @@ -74,7 +74,7 @@ begin input_lvl_2_i = input_lvl_idx[input_lvl_2_q] input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] - phase_stop_4 = min(phase_stop_3, input_lvl_2_i_2, -1 + input_lvl_2_i_3, 1 + input_lvl_2_i) + phase_stop_4 = min(input_lvl_2_i_2, 1 + input_lvl_2_i, -1 + input_lvl_2_i_3, phase_stop_3) if (input_lvl_2_i == phase_stop_4 + -1 && input_lvl_2_i_2 == phase_stop_4) && input_lvl_2_i_3 == phase_stop_4 + 1 input_lvl_3_val_2 = input_lvl_2_val[input_lvl_2_q_2] input_lvl_3_val = input_lvl_2_val[input_lvl_2_q] @@ -124,15 +124,15 @@ begin x = phase_stop_4 + 1 end end - phase_start_5 = max(1, 2 + input_lvl_2_i1) + phase_start_2 = max(1, input_lvl_2_i1 + 2) phase_stop_5 = min(input_lvl_2.shape, input_lvl_2_i1_2, -1 + input_lvl_2_i1_3) - if phase_stop_5 >= phase_start_5 - x = phase_start_5 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_5 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_5, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_5 >= phase_start_2 + x = phase_start_2 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_2 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_2, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end - if input_lvl_idx[input_lvl_2_q_3] < phase_start_5 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_5 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if input_lvl_idx[input_lvl_2_q_3] < phase_start_2 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_2 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while x <= phase_stop_5 input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -159,20 +159,20 @@ begin x = phase_stop_6 + 1 end end - phase_start_7 = max(1, 1 + input_lvl_2_i1_2) - phase_stop_7 = min(input_lvl_2.shape, -1 + input_lvl_2_i1_3, 1 + input_lvl_2_i1) - if phase_stop_7 >= phase_start_7 - x = phase_start_7 - if input_lvl_idx[input_lvl_2_q] < phase_start_7 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_7 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + phase_start_3 = max(1, 1 + input_lvl_2_i1_2) + phase_stop_7 = min(input_lvl_2.shape, 1 + input_lvl_2_i1, -1 + input_lvl_2_i1_3) + if phase_stop_7 >= phase_start_3 + x = phase_start_3 + if input_lvl_idx[input_lvl_2_q] < phase_start_3 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_3 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end - if input_lvl_idx[input_lvl_2_q_3] < phase_start_7 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_7 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if input_lvl_idx[input_lvl_2_q_3] < phase_start_3 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_3 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while x <= phase_stop_7 input_lvl_2_i = input_lvl_idx[input_lvl_2_q] input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] - phase_stop_8 = min(-1 + input_lvl_2_i_3, 1 + input_lvl_2_i, phase_stop_7) + phase_stop_8 = min(1 + input_lvl_2_i, -1 + input_lvl_2_i_3, phase_stop_7) if input_lvl_2_i == phase_stop_8 + -1 && input_lvl_2_i_3 == phase_stop_8 + 1 input_lvl_3_val_7 = input_lvl_2_val[input_lvl_2_q_3] input_lvl_3_val_6 = input_lvl_2_val[input_lvl_2_q] @@ -194,11 +194,11 @@ begin x = phase_stop_8 + 1 end end - phase_start_9 = max(1, 1 + input_lvl_2_i1_2, 2 + input_lvl_2_i1) + phase_start_4 = max(1, 1 + input_lvl_2_i1_2, input_lvl_2_i1 + 2) phase_stop_9 = min(input_lvl_2.shape, -1 + input_lvl_2_i1_3) - if phase_stop_9 >= phase_start_9 - if input_lvl_idx[input_lvl_2_q_3] < phase_start_9 + 1 - input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_9 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) + if phase_stop_9 >= phase_start_4 + if input_lvl_idx[input_lvl_2_q_3] < phase_start_4 + 1 + input_lvl_2_q_3 = Finch.scansearch(input_lvl_idx, phase_start_4 + 1, input_lvl_2_q_3, input_lvl_2_q_stop_3 - 1) end while true input_lvl_2_i_3 = input_lvl_idx[input_lvl_2_q_3] @@ -220,15 +220,15 @@ begin end end end - phase_start_12 = max(1, input_lvl_2_i1_3) + phase_start_6 = max(1, input_lvl_2_i1_3) phase_stop_12 = min(input_lvl_2.shape, input_lvl_2_i1_2, 1 + input_lvl_2_i1) - if phase_stop_12 >= phase_start_12 - x = phase_start_12 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_12 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_12, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_12 >= phase_start_6 + x = phase_start_6 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_6 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_6, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end - if input_lvl_idx[input_lvl_2_q] < phase_start_12 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_12 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + if input_lvl_idx[input_lvl_2_q] < phase_start_6 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_6 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end while x <= phase_stop_12 input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -255,11 +255,11 @@ begin x = phase_stop_13 + 1 end end - phase_start_14 = max(1, input_lvl_2_i1_3, 2 + input_lvl_2_i1) + phase_start_7 = max(1, input_lvl_2_i1_3, input_lvl_2_i1 + 2) phase_stop_14 = min(input_lvl_2.shape, input_lvl_2_i1_2) - if phase_stop_14 >= phase_start_14 - if input_lvl_idx[input_lvl_2_q_2] < phase_start_14 - input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_14, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) + if phase_stop_14 >= phase_start_7 + if input_lvl_idx[input_lvl_2_q_2] < phase_start_7 + input_lvl_2_q_2 = Finch.scansearch(input_lvl_idx, phase_start_7, input_lvl_2_q_2, input_lvl_2_q_stop_2 - 1) end while true input_lvl_2_i_2 = input_lvl_idx[input_lvl_2_q_2] @@ -280,11 +280,11 @@ begin end end end - phase_start_16 = max(1, input_lvl_2_i1_3, 1 + input_lvl_2_i1_2) + phase_start_8 = max(1, input_lvl_2_i1_3, 1 + input_lvl_2_i1_2) phase_stop_17 = min(input_lvl_2.shape, 1 + input_lvl_2_i1) - if phase_stop_17 >= phase_start_16 - if input_lvl_idx[input_lvl_2_q] < phase_start_16 + -1 - input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_16 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) + if phase_stop_17 >= phase_start_8 + if input_lvl_idx[input_lvl_2_q] < phase_start_8 + -1 + input_lvl_2_q = Finch.scansearch(input_lvl_idx, phase_start_8 + -1, input_lvl_2_q, input_lvl_2_q_stop - 1) end while true input_lvl_2_i = input_lvl_idx[input_lvl_2_q] diff --git a/test/reference64/short_circuit.jl b/test/reference64/short_circuit.jl index ee7c5fa32..8bd640b53 100644 --- a/test/reference64/short_circuit.jl +++ b/test/reference64/short_circuit.jl @@ -24,7 +24,7 @@ begin else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -39,7 +39,7 @@ begin end y_lvl_i = y_lvl_idx[y_lvl_q] x_lvl_i = x_lvl_idx[x_lvl_q] - phase_stop_2 = min(x_lvl_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, x_lvl_i, phase_stop) if y_lvl_i == phase_stop_2 && x_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] diff --git a/test/reference64/short_circuit_bfs.jl b/test/reference64/short_circuit_bfs.jl index 0630cc791..4fca49988 100644 --- a/test/reference64/short_circuit_bfs.jl +++ b/test/reference64/short_circuit_bfs.jl @@ -44,7 +44,7 @@ begin else A_lvl_2_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, A_lvl_2_i1) + phase_stop = min(y_lvl.shape, A_lvl_2_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -59,7 +59,7 @@ begin end y_lvl_i = y_lvl_idx[y_lvl_q] A_lvl_2_i = A_lvl_idx[A_lvl_2_q] - phase_stop_2 = min(A_lvl_2_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, A_lvl_2_i, phase_stop) if y_lvl_i == phase_stop_2 && A_lvl_2_i == phase_stop_2 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] y_lvl_2_val = y_lvl_val[y_lvl_q] diff --git a/test/reference64/short_circuit_sum.jl b/test/reference64/short_circuit_sum.jl index 648c62914..e97fbe812 100644 --- a/test/reference64/short_circuit_sum.jl +++ b/test/reference64/short_circuit_sum.jl @@ -26,7 +26,7 @@ begin else y_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) + phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) if phase_stop >= 1 i = 1 if x_lvl_idx[x_lvl_q] < 1 @@ -49,7 +49,7 @@ begin end x_lvl_q += 1 else - phase_stop_4 = min(phase_stop, x_lvl_i) + phase_stop_4 = min(x_lvl_i, phase_stop) if x_lvl_i == phase_stop_4 x_lvl_2_val = x_lvl_val[x_lvl_q] for i_11 = 1:phase_stop @@ -64,7 +64,7 @@ begin end x_lvl_i = x_lvl_idx[x_lvl_q] y_lvl_i = y_lvl_idx[y_lvl_q] - phase_stop_2 = min(y_lvl_i, phase_stop, x_lvl_i) + phase_stop_2 = min(x_lvl_i, y_lvl_i, phase_stop) if x_lvl_i == phase_stop_2 && y_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] @@ -82,11 +82,11 @@ begin i = phase_stop_2 + 1 end end - phase_start_5 = max(1, 1 + y_lvl_i1) + phase_start_2 = max(1, 1 + y_lvl_i1) phase_stop_6 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_6 >= phase_start_5 - if x_lvl_idx[x_lvl_q] < phase_start_5 - x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_5, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_6 >= phase_start_2 + if x_lvl_idx[x_lvl_q] < phase_start_2 + x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_2, x_lvl_q, x_lvl_q_stop - 1) end while true x_lvl_i = x_lvl_idx[x_lvl_q] diff --git a/test/reference64/sieve_hl_cond.jl b/test/reference64/sieve_hl_cond.jl index 5e59139e3..b2242f9b5 100644 --- a/test/reference64/sieve_hl_cond.jl +++ b/test/reference64/sieve_hl_cond.jl @@ -12,11 +12,11 @@ begin else A_lvl_i1 = 0 end - phase_start_2 = max(1, 1 + (1 - 1)) - phase_stop_2 = min(A_lvl.shape, A_lvl_i1, 1) - if phase_stop_2 >= phase_start_2 - if A_lvl_idx[A_lvl_q] < phase_start_2 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_2, A_lvl_q, A_lvl_q_stop - 1) + phase_start = max(1, 1 + (1 - 1)) + phase_stop_2 = min(A_lvl_i1, A_lvl.shape, 1) + if phase_stop_2 >= phase_start + if A_lvl_idx[A_lvl_q] < phase_start + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -25,7 +25,7 @@ begin B_val = A_lvl_2_val_2 + B_val A_lvl_q += 1 else - phase_stop_4 = min(A_lvl_i, phase_stop_2) + phase_stop_4 = min(phase_stop_2, A_lvl_i) if A_lvl_i == phase_stop_4 A_lvl_2_val_2 = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val_2 diff --git a/test/reference64/sieve_hl_select.jl b/test/reference64/sieve_hl_select.jl index 034809e4a..5397a69d0 100644 --- a/test/reference64/sieve_hl_select.jl +++ b/test/reference64/sieve_hl_select.jl @@ -12,11 +12,11 @@ begin else A_lvl_i1 = 0 end - phase_start_2 = max(1, 1 + (3 - 1)) - phase_stop_2 = min(A_lvl.shape, A_lvl_i1, 3) - if phase_stop_2 >= phase_start_2 - if A_lvl_idx[A_lvl_q] < phase_start_2 - A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start_2, A_lvl_q, A_lvl_q_stop - 1) + phase_start = max(1, 1 + (3 - 1)) + phase_stop_2 = min(A_lvl_i1, A_lvl.shape, 3) + if phase_stop_2 >= phase_start + if A_lvl_idx[A_lvl_q] < phase_start + A_lvl_q = Finch.scansearch(A_lvl_idx, phase_start, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -25,7 +25,7 @@ begin B_val = A_lvl_2_val_2 + B_val A_lvl_q += 1 else - phase_stop_4 = min(A_lvl_i, phase_stop_2) + phase_stop_4 = min(phase_stop_2, A_lvl_i) if A_lvl_i == phase_stop_4 A_lvl_2_val_2 = A_lvl_val[A_lvl_q] B_val = B_val + A_lvl_2_val_2 diff --git a/test/reference64/sparse_conv.jl b/test/reference64/sparse_conv.jl index 21ca4b918..70963d9d1 100644 --- a/test/reference64/sparse_conv.jl +++ b/test/reference64/sparse_conv.jl @@ -39,9 +39,9 @@ begin end C_lvldirty = false v_3 = -A_lvl_i_2 - phase_start_3 = max(1, -v_3 + -2) + phase_start = max(1, -v_3 + -2) phase_stop_4 = min(F_lvl.shape, A_lvl.shape + -v_3 + -3) - if phase_stop_4 >= phase_start_3 + if phase_stop_4 >= phase_start A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -50,9 +50,9 @@ begin A_lvl_i1 = 0 end phase_stop_5 = min(phase_stop_4, -v_3 + -3 + A_lvl_i1) - if phase_stop_5 >= phase_start_3 - if A_lvl_idx[A_lvl_q] < (phase_start_3 + v_3) + 3 - A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_3 + v_3) + 3, A_lvl_q, A_lvl_q_stop - 1) + if phase_stop_5 >= phase_start + if A_lvl_idx[A_lvl_q] < (phase_start + v_3) + 3 + A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start + v_3) + 3, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] @@ -85,8 +85,8 @@ begin end A_lvl_q_2 += 1 else - phase_stop_10 = min(A_lvl_i_2, phase_stop) - if A_lvl_i_2 == phase_stop_10 + phase_stop_9 = min(phase_stop, A_lvl_i_2) + if A_lvl_i_2 == phase_stop_9 A_lvl_2_val = A_lvl_val[A_lvl_q_2] if C_lvl_qos > C_lvl_qos_stop C_lvl_qos_stop = max(C_lvl_qos_stop << 1, 1) @@ -95,10 +95,10 @@ begin Finch.fill_range!(C_lvl_val, 0.0, C_lvl_qos, C_lvl_qos_stop) end C_lvldirty = false - v_5 = -phase_stop_10 - phase_start_11 = max(1, -2 + -v_5) - phase_stop_12 = min(F_lvl.shape, A_lvl.shape + -3 + -v_5) - if phase_stop_12 >= phase_start_11 + v_5 = -phase_stop_9 + phase_start_6 = max(1, -2 + -v_5) + phase_stop_11 = min(F_lvl.shape, A_lvl.shape + -3 + -v_5) + if phase_stop_11 >= phase_start_6 A_lvl_q = A_lvl_ptr[1] A_lvl_q_stop = A_lvl_ptr[1 + 1] if A_lvl_q < A_lvl_q_stop @@ -106,26 +106,26 @@ begin else A_lvl_i1 = 0 end - phase_stop_13 = min(phase_stop_12, -3 + A_lvl_i1 + -v_5) - if phase_stop_13 >= phase_start_11 - if A_lvl_idx[A_lvl_q] < (phase_start_11 + v_5) + 3 - A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_11 + v_5) + 3, A_lvl_q, A_lvl_q_stop - 1) + phase_stop_12 = min(phase_stop_11, -3 + A_lvl_i1 + -v_5) + if phase_stop_12 >= phase_start_6 + if A_lvl_idx[A_lvl_q] < (phase_start_6 + v_5) + 3 + A_lvl_q = Finch.scansearch(A_lvl_idx, (phase_start_6 + v_5) + 3, A_lvl_q, A_lvl_q_stop - 1) end while true A_lvl_i = A_lvl_idx[A_lvl_q] - phase_stop_14 = -3 + A_lvl_i + -v_5 - if phase_stop_14 < phase_stop_13 + phase_stop_13 = -3 + A_lvl_i + -v_5 + if phase_stop_13 < phase_stop_12 A_lvl_2_val_3 = A_lvl_val[A_lvl_q] - F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_14 + F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_13 F_lvl_2_val_3 = F_lvl_val[F_lvl_q] C_lvldirty = true C_lvl_val[C_lvl_qos] = C_lvl_val[C_lvl_qos] + (A_lvl_2_val != 0) * F_lvl_2_val_3 * coalesce(A_lvl_2_val_3, 0) A_lvl_q += 1 else - phase_stop_15 = min(phase_stop_13, -3 + A_lvl_i + -v_5) - if A_lvl_i == (phase_stop_15 + v_5) + 3 + phase_stop_14 = min(phase_stop_12, -3 + A_lvl_i + -v_5) + if A_lvl_i == (phase_stop_14 + v_5) + 3 A_lvl_2_val_3 = A_lvl_val[A_lvl_q] - F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_15 + F_lvl_q = (1 - 1) * F_lvl.shape + phase_stop_14 F_lvl_2_val_4 = F_lvl_val[F_lvl_q] C_lvldirty = true C_lvl_val[C_lvl_qos] = C_lvl_val[C_lvl_qos] + (A_lvl_2_val != 0) * F_lvl_2_val_4 * coalesce(A_lvl_2_val_3, 0) @@ -137,7 +137,7 @@ begin end end if C_lvldirty - C_lvl_idx[C_lvl_qos] = phase_stop_10 + C_lvl_idx[C_lvl_qos] = phase_stop_9 C_lvl_qos += 1 end A_lvl_q_2 += 1 diff --git a/test/reference64/specialvals_minimum_inf.jl b/test/reference64/specialvals_minimum_inf.jl index 947094a5a..2b893bcdf 100644 --- a/test/reference64/specialvals_minimum_inf.jl +++ b/test/reference64/specialvals_minimum_inf.jl @@ -24,7 +24,7 @@ begin x_val = min(yf_lvl_2_val, x_val) yf_lvl_q += 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 yf_lvl_2_val = yf_lvl_val[yf_lvl_q] x_val = min(x_val, yf_lvl_2_val) diff --git a/test/reference64/specialvals_minimum_missing.jl b/test/reference64/specialvals_minimum_missing.jl index 0f11f2219..03551f153 100644 --- a/test/reference64/specialvals_minimum_missing.jl +++ b/test/reference64/specialvals_minimum_missing.jl @@ -30,7 +30,7 @@ begin yf_lvl_q += 1 i = yf_lvl_i + 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 cond_3 = 0 < -i + phase_stop_3 if cond_3 @@ -50,10 +50,9 @@ begin end end end - phase_start_3 = max(1, 1 + yf_lvl_i1) - phase_stop_4 = yf_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_6 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + yf_lvl_i1) + if yf_lvl.shape >= phase_start + cond_6 = 0 < 1 + yf_lvl.shape + -phase_start if cond_6 x_val = missing end diff --git a/test/reference64/specialvals_minimum_nan.jl b/test/reference64/specialvals_minimum_nan.jl index 6b2fc91c9..ce1074558 100644 --- a/test/reference64/specialvals_minimum_nan.jl +++ b/test/reference64/specialvals_minimum_nan.jl @@ -30,7 +30,7 @@ begin yf_lvl_q += 1 i = yf_lvl_i + 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 cond_3 = 0 < -i + phase_stop_3 if cond_3 @@ -50,10 +50,9 @@ begin end end end - phase_start_3 = max(1, 1 + yf_lvl_i1) - phase_stop_4 = yf_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_6 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + yf_lvl_i1) + if yf_lvl.shape >= phase_start + cond_6 = 0 < 1 + yf_lvl.shape + -phase_start if cond_6 x_val = min(NaN, x_val) end diff --git a/test/reference64/specialvals_minimum_nothing.jl b/test/reference64/specialvals_minimum_nothing.jl index cebb8737d..0c5914c57 100644 --- a/test/reference64/specialvals_minimum_nothing.jl +++ b/test/reference64/specialvals_minimum_nothing.jl @@ -24,7 +24,7 @@ begin x_val = min(something(yf_lvl_2_val, Inf), x_val) yf_lvl_q += 1 else - phase_stop_3 = min(yf_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, yf_lvl_i) if yf_lvl_i == phase_stop_3 yf_lvl_2_val = yf_lvl_val[yf_lvl_q] x_val = min(x_val, something(yf_lvl_2_val, Inf)) diff --git a/test/reference64/triangle.jl b/test/reference64/triangle.jl index 98c8049ea..394da6ea4 100644 --- a/test/reference64/triangle.jl +++ b/test/reference64/triangle.jl @@ -41,7 +41,7 @@ begin else A_lvl_2_i1_3 = 0 end - phase_stop_3 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_3) + phase_stop_3 = min(A_lvl_2.shape, A_lvl_2_i1_3, A_lvl_2_i1_2) if phase_stop_3 >= 1 k = 1 if A_lvl_idx[A_lvl_2_q_2] < 1 @@ -53,7 +53,7 @@ begin while k <= phase_stop_3 A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] A_lvl_2_i_3 = A_lvl_idx[A_lvl_2_q_3] - phase_stop_4 = min(A_lvl_2_i_3, phase_stop_3, A_lvl_2_i_2) + phase_stop_4 = min(A_lvl_2_i_2, A_lvl_2_i_3, phase_stop_3) if A_lvl_2_i_2 == phase_stop_4 && A_lvl_2_i_3 == phase_stop_4 A_lvl_3_val_2 = A_lvl_2_val[A_lvl_2_q_2] A_lvl_3_val_3 = A_lvl_2_val[A_lvl_2_q_3] @@ -70,10 +70,10 @@ begin end A_lvl_2_q += 1 else - phase_stop_8 = min(A_lvl_2_i, phase_stop) - if A_lvl_2_i == phase_stop_8 + phase_stop_7 = min(phase_stop, A_lvl_2_i) + if A_lvl_2_i == phase_stop_7 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] - A_lvl_q_3 = (1 - 1) * A_lvl.shape + phase_stop_8 + A_lvl_q_3 = (1 - 1) * A_lvl.shape + phase_stop_7 A_lvl_2_q_2 = A_lvl_ptr[A_lvl_q_2] A_lvl_2_q_stop_2 = A_lvl_ptr[A_lvl_q_2 + 1] if A_lvl_2_q_2 < A_lvl_2_q_stop_2 @@ -88,8 +88,8 @@ begin else A_lvl_2_i1_4 = 0 end - phase_stop_9 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_4) - if phase_stop_9 >= 1 + phase_stop_8 = min(A_lvl_2.shape, A_lvl_2_i1_2, A_lvl_2_i1_4) + if phase_stop_8 >= 1 k = 1 if A_lvl_idx[A_lvl_2_q_2] < 1 A_lvl_2_q_2 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_2, A_lvl_2_q_stop_2 - 1) @@ -97,22 +97,22 @@ begin if A_lvl_idx[A_lvl_2_q_4] < 1 A_lvl_2_q_4 = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q_4, A_lvl_2_q_stop_4 - 1) end - while k <= phase_stop_9 + while k <= phase_stop_8 A_lvl_2_i_2 = A_lvl_idx[A_lvl_2_q_2] A_lvl_2_i_4 = A_lvl_idx[A_lvl_2_q_4] - phase_stop_10 = min(A_lvl_2_i_2, A_lvl_2_i_4, phase_stop_9) - if A_lvl_2_i_2 == phase_stop_10 && A_lvl_2_i_4 == phase_stop_10 + phase_stop_9 = min(A_lvl_2_i_2, A_lvl_2_i_4, phase_stop_8) + if A_lvl_2_i_2 == phase_stop_9 && A_lvl_2_i_4 == phase_stop_9 A_lvl_3_val_6 = A_lvl_2_val[A_lvl_2_q_2] A_lvl_3_val_7 = A_lvl_2_val[A_lvl_2_q_4] B_val = B_val + A_lvl_3_val * A_lvl_3_val_6 * A_lvl_3_val_7 A_lvl_2_q_2 += 1 A_lvl_2_q_4 += 1 - elseif A_lvl_2_i_4 == phase_stop_10 + elseif A_lvl_2_i_4 == phase_stop_9 A_lvl_2_q_4 += 1 - elseif A_lvl_2_i_2 == phase_stop_10 + elseif A_lvl_2_i_2 == phase_stop_9 A_lvl_2_q_2 += 1 end - k = phase_stop_10 + 1 + k = phase_stop_9 + 1 end end A_lvl_2_q += 1 diff --git a/test/reference64/typical_inplace_sparse_add.txt b/test/reference64/typical_inplace_sparse_add.txt index 56cce586d..d05f78375 100644 --- a/test/reference64/typical_inplace_sparse_add.txt +++ b/test/reference64/typical_inplace_sparse_add.txt @@ -44,7 +44,7 @@ quote B_lvl_val[B_lvl_q] = A_lvl_2_val + B_lvl_val[B_lvl_q] A_lvl_q += 1 else - phase_stop_3 = min(A_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_i) if A_lvl_i == phase_stop_3 A_lvl_2_val = A_lvl_val[A_lvl_q] B_lvl_q = (1 - 1) * B_lvl.shape + phase_stop_3 diff --git a/test/reference64/typical_merge_gallop.txt b/test/reference64/typical_merge_gallop.txt index 0633addd8..b6c2a27ab 100644 --- a/test/reference64/typical_merge_gallop.txt +++ b/test/reference64/typical_merge_gallop.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 while i <= phase_stop @@ -333,10 +333,10 @@ quote i = phase_stop_2 + 1 end end - phase_start_8 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_12 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_12 >= phase_start_8 - i = phase_start_8 + if phase_stop_12 >= phase_start + i = phase_start while i <= phase_stop_12 if x_lvl_idx[x_lvl_q] < i x_lvl_q = Finch.scansearch(x_lvl_idx, i, x_lvl_q, x_lvl_q_stop - 1) @@ -395,10 +395,10 @@ quote i = phase_stop_13 + 1 end end - phase_start_11 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_16 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_16 >= phase_start_11 - i = phase_start_11 + if phase_stop_16 >= phase_start_2 + i = phase_start_2 while i <= phase_stop_16 if y_lvl_idx[y_lvl_q] < i y_lvl_q = Finch.scansearch(y_lvl_idx, i, y_lvl_q, y_lvl_q_stop - 1) diff --git a/test/reference64/typical_merge_leadfollow.txt b/test/reference64/typical_merge_leadfollow.txt index 80633ea39..90471408f 100644 --- a/test/reference64/typical_merge_leadfollow.txt +++ b/test/reference64/typical_merge_leadfollow.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 while i <= phase_stop @@ -207,10 +207,10 @@ quote i = phase_stop_2 + 1 end end - phase_start_6 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_8 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_8 >= phase_start_6 - i = phase_start_6 + if phase_stop_8 >= phase_start + i = phase_start while i <= phase_stop_8 if x_lvl_idx[x_lvl_q] < i x_lvl_q = Finch.scansearch(x_lvl_idx, i, x_lvl_q, x_lvl_q_stop - 1) @@ -269,11 +269,11 @@ quote i = phase_stop_9 + 1 end end - phase_start_9 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_12 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_12 >= phase_start_9 - if y_lvl_idx[y_lvl_q] < phase_start_9 - y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_9, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_12 >= phase_start_2 + if y_lvl_idx[y_lvl_q] < phase_start_2 + y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_2, y_lvl_q, y_lvl_q_stop - 1) end while true y_lvl_i = y_lvl_idx[y_lvl_q] diff --git a/test/reference64/typical_merge_twofinger.txt b/test/reference64/typical_merge_twofinger.txt index a6dbcea31..4cd5098c8 100644 --- a/test/reference64/typical_merge_twofinger.txt +++ b/test/reference64/typical_merge_twofinger.txt @@ -38,7 +38,7 @@ quote else x_lvl_i1 = 0 end - phase_stop = min(y_lvl.shape, y_lvl_i1, x_lvl_i1) + phase_stop = min(y_lvl.shape, x_lvl_i1, y_lvl_i1) if phase_stop >= 1 i = 1 if y_lvl_idx[y_lvl_q] < 1 @@ -50,7 +50,7 @@ quote while i <= phase_stop y_lvl_i = y_lvl_idx[y_lvl_q] x_lvl_i = x_lvl_idx[x_lvl_q] - phase_stop_2 = min(x_lvl_i, phase_stop, y_lvl_i) + phase_stop_2 = min(y_lvl_i, x_lvl_i, phase_stop) if y_lvl_i == phase_stop_2 && x_lvl_i == phase_stop_2 x_lvl_2_val = x_lvl_val[x_lvl_q] y_lvl_2_val = y_lvl_val[y_lvl_q] @@ -93,11 +93,11 @@ quote i = phase_stop_2 + 1 end end - phase_start_3 = max(1, 1 + y_lvl_i1) + phase_start = max(1, 1 + y_lvl_i1) phase_stop_3 = min(y_lvl.shape, x_lvl_i1) - if phase_stop_3 >= phase_start_3 - if x_lvl_idx[x_lvl_q] < phase_start_3 - x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start_3, x_lvl_q, x_lvl_q_stop - 1) + if phase_stop_3 >= phase_start + if x_lvl_idx[x_lvl_q] < phase_start + x_lvl_q = Finch.scansearch(x_lvl_idx, phase_start, x_lvl_q, x_lvl_q_stop - 1) end while true x_lvl_i = x_lvl_idx[x_lvl_q] @@ -132,11 +132,11 @@ quote end end end - phase_start_5 = max(1, 1 + x_lvl_i1) + phase_start_2 = max(1, 1 + x_lvl_i1) phase_stop_6 = min(y_lvl.shape, y_lvl_i1) - if phase_stop_6 >= phase_start_5 - if y_lvl_idx[y_lvl_q] < phase_start_5 - y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_5, y_lvl_q, y_lvl_q_stop - 1) + if phase_stop_6 >= phase_start_2 + if y_lvl_idx[y_lvl_q] < phase_start_2 + y_lvl_q = Finch.scansearch(y_lvl_idx, phase_start_2, y_lvl_q, y_lvl_q_stop - 1) end while true y_lvl_i = y_lvl_idx[y_lvl_q] diff --git a/test/reference64/typical_spmv_csc.txt b/test/reference64/typical_spmv_csc.txt index 28bb44228..eb3edba1e 100644 --- a/test/reference64/typical_spmv_csc.txt +++ b/test/reference64/typical_spmv_csc.txt @@ -65,7 +65,7 @@ quote y_lvl_val[y_lvl_q] = x_lvl_2_val * A_lvl_3_val + y_lvl_val[y_lvl_q] A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] y_lvl_q = (1 - 1) * A_lvl_2.shape + phase_stop_3 diff --git a/test/reference64/typical_spmv_sparsematrixcsc.txt b/test/reference64/typical_spmv_sparsematrixcsc.txt index c45c5d6e7..ae66d6c6e 100644 --- a/test/reference64/typical_spmv_sparsematrixcsc.txt +++ b/test/reference64/typical_spmv_sparsematrixcsc.txt @@ -58,7 +58,7 @@ quote y[A_i] = val * A_val + y[A_i] A_q += 1 else - phase_stop_3 = min(A_i, phase_stop) + phase_stop_3 = min(phase_stop, A_i) if A_i == phase_stop_3 A_val = A.nzval[A_q] y[phase_stop_3] = val * A_val + y[phase_stop_3] diff --git a/test/reference64/typical_stats_example.txt b/test/reference64/typical_stats_example.txt index 68dc12ecf..94a18e6dc 100644 --- a/test/reference64/typical_stats_example.txt +++ b/test/reference64/typical_stats_example.txt @@ -63,7 +63,7 @@ quote X_lvl_q += 1 i = X_lvl_i + 1 else - phase_stop_3 = min(X_lvl_i, phase_stop) + phase_stop_3 = min(phase_stop, X_lvl_i) if X_lvl_i == phase_stop_3 cond_2 = 0 < -i + phase_stop_3 if cond_2 @@ -88,10 +88,9 @@ quote end end end - phase_start_3 = max(1, 1 + X_lvl_i1) - phase_stop_4 = X_lvl.shape - if phase_stop_4 >= phase_start_3 - cond_4 = 0 < 1 + -phase_start_3 + phase_stop_4 + phase_start = max(1, 1 + X_lvl_i1) + if X_lvl.shape >= phase_start + cond_4 = 0 < 1 + X_lvl.shape + -phase_start if cond_4 x_min_val = min(0.0, x_min_val) x_max_val = max(0.0, x_max_val) diff --git a/test/reference64/typical_transpose_csc_to_coo.txt b/test/reference64/typical_transpose_csc_to_coo.txt index c79ae8b49..c00c93c79 100644 --- a/test/reference64/typical_transpose_csc_to_coo.txt +++ b/test/reference64/typical_transpose_csc_to_coo.txt @@ -69,7 +69,7 @@ quote end A_lvl_2_q += 1 else - phase_stop_3 = min(A_lvl_2_i, phase_stop) + phase_stop_3 = min(phase_stop, A_lvl_2_i) if A_lvl_2_i == phase_stop_3 A_lvl_3_val = A_lvl_2_val[A_lvl_2_q] B_lvl_key_3 = (1, (j_4, phase_stop_3))