# Array equal

**URL:** <https://discourse.julialang.org/t/array-equal/61121>\
**Category:** General Usage\
**Created:** [May 14, 2021, 5:16am UTC](https://discourse.julialang.org/t/array-equal/61121 "2021-05-14T05:16:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cristian\_Suciava](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cristian_suciava/32/14433_2.png) [@Cristian\_Suciava](https://discourse.julialang.org/u/Cristian_Suciava)\
**Post date:** [May 14, 2021, 5:16am UTC](https://discourse.julialang.org/t/array-equal/61121/1 "2021-05-14T05:16:35Z")

</div>

I have a function where I evaluate two arrays. For some reason, I got wrong not equal. Even when I evaluate element by element.  
What is wrong?  
Here is my code:

```julia
    Number = 3
    n = 15
    U = [1,3,5,7]
  
    ab = Vector{Int64}()
    
    for i=0:20
        temp = mod(Number^i,n)
        
        positionArray = findfirst(isequal(temp),ab)
        
        if positionArray .== nothing 
            push!(ab,temp)
        end
        x = sort(ab)
        
        if x == U 
            println(true)
            break
        end

        for j=1:size(x,1)
            println(U[j])
            if x[j]==U[j]
                println(true)
            else
                println(false)
            end
        end
    end

```

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 14, 2021, 5:37am UTC](https://discourse.julialang.org/t/array-equal/61121/2 "2021-05-14T05:37:08Z")

</div>

How can you tell if you are getting a wrong equal? Your function doesn’t return any information about whether `x` and `U` are equal. It just returns `sort(aa)`, and `aa` isn’t defined anywhere. Is that a typo?

---

<div class="post-metadata">

**Author:** ![Cristian\_Suciava](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cristian_suciava/32/14433_2.png) [@Cristian\_Suciava](https://discourse.julialang.org/u/Cristian_Suciava)\
**Post date:** [May 14, 2021, 5:47am UTC](https://discourse.julialang.org/t/array-equal/61121/3 "2021-05-14T05:47:08Z")

</div>

ok, remove function. I just tried to make that function work.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 14, 2021, 6:04am UTC](https://discourse.julialang.org/t/array-equal/61121/4 "2021-05-14T06:04:00Z")

</div>

U has the numbers 1, 3, 5, 7, but `mod(3^n, 15)` contains the numbers 1, 3, 6, 9, 12. So they are not equal:

```julia
jl> sort(mod.(3 .^(0:20), 15))
21-element Vector{Int64}:
  1
  3
  3
  3
  3
  3
  6
  6
  6
  6
  6
  9
  9
  9
  9
  9
 12
 12
 12
 12
 12

```

---

<div class="post-metadata">

**Author:** ![Cristian\_Suciava](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cristian_suciava/32/14433_2.png) [@Cristian\_Suciava](https://discourse.julialang.org/u/Cristian_Suciava)\
**Post date:** [May 14, 2021, 6:06am UTC](https://discourse.julialang.org/t/array-equal/61121/5 "2021-05-14T06:06:04Z")

</div>

And the loop how is working ? Evaluating as it should?

---

<div class="post-metadata">

**Author:** ![gustaphe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gustaphe/32/18174_2.png) [@gustaphe](https://discourse.julialang.org/u/gustaphe)\
**Post date:** [May 14, 2021, 6:19am UTC](https://discourse.julialang.org/t/array-equal/61121/6 "2021-05-14T06:19:59Z")

</div>

There is a couple of things that are strange here.

Don’t name a variable `Number`. That’s a basic type. It shouldn’t cause any problems, but it will be confusing to read.

`positionArray` will be a scalar, so don’t use `.==` to compare it (Again, this is just for clarity for anyone reading your code). `isnothing(positionArray)` is a good way to check for nothingness.

There will be an overflow error every time you input a vector that isn’t equal. But you know how long the vector should be.

Instead of adding the `j` loop (which I assume is an afterthought when you didn’t get the result you expected), you could have added a couple of `println(x);println(U)`s.

If this snippet does what I think it does, you could replace it by

```julia
number = 3
n = 15
U = [1,3,5,7]
U == sort(mod.(number.^(0:(length(U)-1)), n))

```

---

<div class="post-metadata">

**Author:** ![Cristian\_Suciava](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cristian_suciava/32/14433_2.png) [@Cristian\_Suciava](https://discourse.julialang.org/u/Cristian_Suciava)\
**Post date:** [May 14, 2021, 6:58am UTC](https://discourse.julialang.org/t/array-equal/61121/7 "2021-05-14T06:58:23Z")

</div>

Nice syntax!

---

<div class="post-metadata">

**Author:** ![Cristian\_Suciava](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cristian_suciava/32/14433_2.png) [@Cristian\_Suciava](https://discourse.julialang.org/u/Cristian_Suciava)\
**Post date:** [May 14, 2021, 7:07am UTC](https://discourse.julialang.org/t/array-equal/61121/8 "2021-05-14T07:07:01Z")

</div>

My mistake was that in the original function I didn’t use return, just true and false.  
Thank you for your help!
