<p dir="auto">Here's an example:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; A = sprand(5,5,1/5);
julia&gt; A = max.(A,A');
julia&gt; A = spones(A);
julia&gt; full(A)
5×5 Array{Float64,2}:
 0.0  1.0  0.0  0.0  1.0
 1.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  1.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  0.0  1.0  0.0  0.0
julia&gt; issymmetric(A)
true
julia&gt; B = A[5:-1:1,5:-1:1];
julia&gt; full(B)
5×5 Array{Float64,2}:
 0.0  0.0  1.0  0.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  1.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  1.0
 1.0  0.0  0.0  1.0  0.0
julia&gt; issymmetric(B)
false"><pre class="notranslate"><code class="notranslate">julia&gt; A = sprand(5,5,1/5);
julia&gt; A = max.(A,A');
julia&gt; A = spones(A);
julia&gt; full(A)
5×5 Array{Float64,2}:
 0.0  1.0  0.0  0.0  1.0
 1.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  1.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  0.0  1.0  0.0  0.0
julia&gt; issymmetric(A)
true
julia&gt; B = A[5:-1:1,5:-1:1];
julia&gt; full(B)
5×5 Array{Float64,2}:
 0.0  0.0  1.0  0.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  1.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  1.0
 1.0  0.0  0.0  1.0  0.0
julia&gt; issymmetric(B)
false
</code></pre></div>
<p dir="auto">Here, <code class="notranslate">issymmetric(B)</code> should return true but it returns false. The issue is not with the <code class="notranslate">issymmetric</code> function. Take a look at the following:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; isequal(A,A')
true
julia&gt; isequal(B,B')
false
julia&gt; issymmetric(full(B))
true
julia&gt; issymmetric(sparse(full(B)))
true
julia&gt; for i = 1:5
       for j = 1:5
       if B[i,j] != 0
       println(&quot;[i,j] = [$i,$j] and B[i,j] is $(B[i,j])&quot;)
       end
       end
       end
[i,j] = [2,3] and B[i,j] is 1.0
[i,j] = [3,2] and B[i,j] is 1.0
[i,j] = [4,5] and B[i,j] is 1.0
[i,j] = [5,1] and B[i,j] is 1.0
[i,j] = [5,4] and B[i,j] is 1.0
julia&gt; nnz(B)
8
julia&gt; B[1,5]
0.0
julia&gt; full(B)[1,5]
1.0"><pre class="notranslate"><code class="notranslate">julia&gt; isequal(A,A')
true
julia&gt; isequal(B,B')
false
julia&gt; issymmetric(full(B))
true
julia&gt; issymmetric(sparse(full(B)))
true
julia&gt; for i = 1:5
       for j = 1:5
       if B[i,j] != 0
       println("[i,j] = [$i,$j] and B[i,j] is $(B[i,j])")
       end
       end
       end
[i,j] = [2,3] and B[i,j] is 1.0
[i,j] = [3,2] and B[i,j] is 1.0
[i,j] = [4,5] and B[i,j] is 1.0
[i,j] = [5,1] and B[i,j] is 1.0
[i,j] = [5,4] and B[i,j] is 1.0
julia&gt; nnz(B)
8
julia&gt; B[1,5]
0.0
julia&gt; full(B)[1,5]
1.0
</code></pre></div>
<p dir="auto">if we use <code class="notranslate">collect(5:-1:1)</code> instead, everything seems to work fine.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; B = A[collect(5:-1:1),collect(5:-1:1)];
julia&gt; full(B)
5×5 Array{Float64,2}:
 0.0  0.0  1.0  0.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  1.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  1.0
 1.0  0.0  0.0  1.0  0.0
julia&gt; issymmetric(B)
true

julia&gt; for i = 1:5
       for j = 1:5
       if B[i,j] != 0
       println(&quot;[i,j] = [$i,$j] and B[i,j] is $(B[i,j])&quot;)
       end
       end
       end
[i,j] = [1,3] and B[i,j] is 1.0
[i,j] = [1,5] and B[i,j] is 1.0
[i,j] = [2,3] and B[i,j] is 1.0
[i,j] = [3,1] and B[i,j] is 1.0
[i,j] = [3,2] and B[i,j] is 1.0
[i,j] = [4,5] and B[i,j] is 1.0
[i,j] = [5,1] and B[i,j] is 1.0
[i,j] = [5,4] and B[i,j] is 1.0
julia&gt; nnz(B)
8"><pre class="notranslate"><code class="notranslate">julia&gt; B = A[collect(5:-1:1),collect(5:-1:1)];
julia&gt; full(B)
5×5 Array{Float64,2}:
 0.0  0.0  1.0  0.0  1.0
 0.0  0.0  1.0  0.0  0.0
 1.0  1.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  1.0
 1.0  0.0  0.0  1.0  0.0
julia&gt; issymmetric(B)
true

julia&gt; for i = 1:5
       for j = 1:5
       if B[i,j] != 0
       println("[i,j] = [$i,$j] and B[i,j] is $(B[i,j])")
       end
       end
       end
[i,j] = [1,3] and B[i,j] is 1.0
[i,j] = [1,5] and B[i,j] is 1.0
[i,j] = [2,3] and B[i,j] is 1.0
[i,j] = [3,1] and B[i,j] is 1.0
[i,j] = [3,2] and B[i,j] is 1.0
[i,j] = [4,5] and B[i,j] is 1.0
[i,j] = [5,1] and B[i,j] is 1.0
[i,j] = [5,4] and B[i,j] is 1.0
julia&gt; nnz(B)
8
</code></pre></div>
<p dir="auto">versioninfo for reference:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; versioninfo()
Julia Version 0.6.0-pre.alpha.146
Commit c399558 (2017-03-15 15:20 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin13.4.0)
  CPU: Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, sandybridge)"><pre class="notranslate"><code class="notranslate">julia&gt; versioninfo()
Julia Version 0.6.0-pre.alpha.146
Commit c399558 (2017-03-15 15:20 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin13.4.0)
  CPU: Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, sandybridge)
</code></pre></div>
<p dir="auto">P.S. I looked for this bug elsewhere -- didn't find anything, I hope it's not a duplicate bug</p>
<p dir="auto">For user written short functions that have a huge overhead from bounds checking, it would be nice if it was possible to hook into the <code class="notranslate">boundscheck</code> system with <code class="notranslate">@inbounds</code> in order to let the user be able to disable manual bounds checking inside the function.</p>
<p dir="auto">This might be beneficial for <code class="notranslate">SubString</code>, <code class="notranslate">SubArray</code>, and many wrapping types that have to check bounds before forwarding to the internal storage.</p>
<p dir="auto">One suggestion is to have a <code class="notranslate">@bounds</code> macro that you can wrap the optional checking code in, but that seems somewhat brittle.</p>