npzigloc 0.11
Zig for Numpy
License: MIT
Keywords: Zig, Numpy


# Some Zig functions for Numpy

### Tested against Windows 10 / Python 3.11 / Anaconda / C++ 20 - MSVC

### pip install npzigloc

### Cython and a C++ compiler must be installed!

```PY
from npzigloc import *
import numpy as np
import timeit

array_shape = (256, 256, 256)
flatindex = npzigwhere.flatten_np_index(
    array_shape,
    no_gil=True,
    transpose=False,
    npfunction=b"flatten_index",
    flip_array=True,
)
print(flatindex)
# %timeit flatindex=npzigwhere.flatten_np_index(array_shape, no_gil=True,transpose=False, npfunction=b'flatten_index',flip_array=True )
flatindex = npzigwhere.flatten_np_index(
    array_shape,
    no_gil=True,
    transpose=False,
    npfunction=b"flatten_index",
    flip_array=False,
)
# %timeit flatindex=npzigwhere.flatten_np_index(array_shape, no_gil=True,transpose=False, npfunction=b'flatten_index',flip_array=False, )

rng = np.random.default_rng()

c = (
    np.random.randint(-127, 127, np.prod(s := (140, 140, 140)), dtype="q")
    .reshape(s)
    .astype("q")
)

dtypes = [
    "i",
    "l",
    "L",
    "I",
    "b",
    "B",
    "h",
    "H",
    "q",
    "Q",
    "f",
    "d",
]
img = None
timeitnumber = 25
results = []
for dtype in dtypes:
    img = c.astype(dtype)
    results.append(img.dtype)
    results.append("-----------------ARGWHERE COMPARE <= --------")
    eq = np_argwhere_values(
        img, search_for=20, operation="<=", no_gil=False, flip_array=True
    )
    eq2 = np.argwhere(img <= 20)
    result1 = timeit.timeit(
        'np_argwhere_values(img, search_for=20, operation="<=", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_argwhere_values(img, search_for=20, operation="<=", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere(img<=20)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------ARGWHERE COMPARE >= --------")
    eq = np_argwhere_values(
        img, search_for=100, operation=">=", no_gil=False, flip_array=True
    )
    eq2 = np.argwhere(img >= 100)
    result1 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation=">=", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation=">=", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere(img>=100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )

    results.append("-----------------ARGWHERE COMPARE < --------")
    eq = np_argwhere_values(
        img, search_for=20, operation="<", no_gil=False, flip_array=True
    )
    eq2 = np.argwhere(img < 20)
    result1 = timeit.timeit(
        'np_argwhere_values(img, search_for=20, operation="<", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_argwhere_values(img, search_for=20, operation="<", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere(img<20)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------ARGWHERE COMPARE > --------")
    eq = np_argwhere_values(
        img, search_for=100, operation=">", no_gil=False, flip_array=True
    )
    eq2 = np.argwhere(img > 100)
    result1 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation=">", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation=">", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere(img>100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------ARGWHERE COMPARE == --------")
    eq = np_argwhere_values(
        img, search_for=100, operation="==", no_gil=False, flip_array=True
    )
    eq2 = np.argwhere(img == 100)
    result1 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation="==", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_argwhere_values(img, search_for=100, operation="==", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere(img==100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------where where - BOOL == --------------------")
    eq = np_where_bool(
        (img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100),
        no_gil=False,
        flip_array=True,
    )
    eq2 = np.where((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100))
    result1 = timeit.timeit(
        "np_where_bool(((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100)), no_gil=False,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        "np_where_bool(((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100)), no_gil=True,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100))",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))

    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n------------"
    )

    results.append("-----------------where ARGWHERE - BOOL >= --------")
    eq = np_argwhere_bool(
        (img[..., 0] >= 100) & (img[..., 1] >= 100) & (img[..., 2] >= 100),
        no_gil=False,
        flip_array=True,
    )
    eq2 = np.argwhere(
        (img[..., 0] >= 100) & (img[..., 1] >= 100) & (img[..., 2] >= 100)
    )
    result1 = timeit.timeit(
        "np_argwhere_bool(((img[..., 0] >= 100) & (img[..., 1] >= 100) & (img[..., 2] >= 100)), no_gil=False,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        "np_argwhere_bool(((img[..., 0] >= 100) & (img[..., 1] >= 100) & (img[..., 2] >= 100)), no_gil=True,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere((img[..., 0] >= 100) & (img[..., 1] >= 100) & (img[..., 2] >= 100))",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) >= np.asarray(eq2))

    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )

    results.append("-----------------where ARGWHERE - BOOL == --------")
    eq = np_argwhere_bool(
        (img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100),
        no_gil=False,
        flip_array=True,
    )
    eq2 = np.argwhere(
        (img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100)
    )
    result1 = timeit.timeit(
        "np_argwhere_bool(((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100)), no_gil=False,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        "np_argwhere_bool(((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100)), no_gil=True,flip_array=True)",
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.argwhere((img[..., 0] == 100) & (img[..., 1] == 100) & (img[..., 2] == 100))",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))

    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )

    results.append("-----------------where COMPARE <= --------")
    eq = np_where_values(
        img, search_for=20, operation="<=", no_gil=False, flip_array=True
    )
    eq2 = np.where(img <= 20)
    result1 = timeit.timeit(
        'np_where_values(img, search_for=20, operation="<=", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_where_values(img, search_for=20, operation="<=", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where(img<=20)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))

    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------where COMPARE >= --------")
    eq = np_where_values(
        img, search_for=100, operation=">=", no_gil=False, flip_array=True
    )
    eq2 = np.where(img >= 100)
    result1 = timeit.timeit(
        'np_where_values(img, search_for=100, operation=">=", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_where_values(img, search_for=100, operation=">=", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where(img>=100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )

    results.append("-----------------where COMPARE < --------")
    eq = np_where_values(
        img, search_for=20, operation="<", no_gil=False, flip_array=True
    )
    eq2 = np.where(img < 20)
    result1 = timeit.timeit(
        'np_where_values(img, search_for=20, operation="<", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_where_values(img, search_for=20, operation="<", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where(img<20)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------where COMPARE > --------")
    eq = np_where_values(
        img, search_for=100, operation=">", no_gil=False, flip_array=True
    )
    eq2 = np.where(img > 100)
    result1 = timeit.timeit(
        'np_where_values(img, search_for=100, operation=">", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_where_values(img, search_for=100, operation=">", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where(img>100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )
    results.append("-----------------where COMPARE == --------")
    eq = np_where_values(
        img, search_for=100, operation="==", no_gil=False, flip_array=True
    )
    eq2 = np.where(img == 100)
    result1 = timeit.timeit(
        'np_where_values(img, search_for=100, operation="==", no_gil=False, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'np_where_values(img, search_for=100, operation="==", no_gil=True, flip_array=True)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "np.where(img==100)",
        number=timeitnumber,
        globals=globals(),
    )

    match = np.all(np.asarray(eq) == np.asarray(eq2))
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )

    results.append("-----------------BOOL COMPARE--------")
    eq = npwhere_bool_compare(img, search_for=100, operation="==", no_gil=False)
    eq2 = img == 100
    result1 = timeit.timeit(
        'npwhere_bool_compare(img, search_for=100, operation="==", no_gil=False,)',
        number=timeitnumber,
        globals=globals(),
    )
    result2 = timeit.timeit(
        'npwhere_bool_compare(img, search_for=100, operation="==", no_gil=True,)',
        number=timeitnumber,
        globals=globals(),
    )
    result3 = timeit.timeit(
        "img==100",
        number=timeitnumber,
        globals=globals(),
    )
    match = np.all(eq == eq2)
    results.append(
        f"zig gil:{result1}\nzig nogil: {result2}\nnp: {result3}\nmatch:{match}\nshape:{np.asarray(eq).shape}\ndtype:{img.dtype}\n"
    )


with open("c:\\testzig.txt", mode="w", encoding="utf-8") as f:
    f.write("\n".join([str(q) for q in results]))
    
    


int32
-----------------ARGWHERE COMPARE <= --------
zig gil:1.0453643000000739
zig nogil: 1.0393527000051108
np: 1.0445317999983672
match:True
shape:(1598124, 3)
dtype:int32

-----------------ARGWHERE COMPARE >= --------
zig gil:0.24228240000229562
zig nogil: 0.2643610000013723
np: 0.40769609999551903
match:True
shape:(292205, 3)
dtype:int32

-----------------ARGWHERE COMPARE < --------
zig gil:1.1265876999968896
zig nogil: 1.0275963000021875
np: 1.047081500000786
match:True
shape:(1587310, 3)
dtype:int32

-----------------ARGWHERE COMPARE > --------
zig gil:0.23478349999641068
zig nogil: 0.2322511000020313
np: 0.36827120000089053
match:True
shape:(281390, 3)
dtype:int32

-----------------ARGWHERE COMPARE == --------
zig gil:0.03906589999678545
zig nogil: 0.04275030000280822
np: 0.2073759999984759
match:True
shape:(10815, 3)
dtype:int32

-----------------where where - BOOL == --------------------
zig gil:0.005037599999923259
zig nogil: 0.004561000001558568
np: 0.005418699998699594
match:True
shape:(2, 0)
dtype:int32
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.004978300006769132
zig nogil: 0.004731600005470682
np: 0.006458099996962119
match:True
shape:(27, 2)
dtype:int32

-----------------where ARGWHERE - BOOL == --------
zig gil:0.004904999994323589
zig nogil: 0.004452599998330697
np: 0.005015900002035778
match:True
shape:(0, 2)
dtype:int32

-----------------where COMPARE <= --------
zig gil:1.0521731999979238
zig nogil: 1.0631141000048956
np: 0.6707173000031617
match:True
shape:(3, 1598124)
dtype:int32

-----------------where COMPARE >= --------
zig gil:0.2441543000022648
zig nogil: 0.24308600000222214
np: 0.3046978999991552
match:True
shape:(3, 292205)
dtype:int32

-----------------where COMPARE < --------
zig gil:1.0931373999992502
zig nogil: 1.1720722000027308
np: 0.7051255000042147
match:True
shape:(3, 1587310)
dtype:int32

-----------------where COMPARE > --------
zig gil:0.3539267999949516
zig nogil: 0.27942780000012135
np: 0.30127879999781726
match:True
shape:(3, 281390)
dtype:int32

-----------------where COMPARE == --------
zig gil:0.040829200006555766
zig nogil: 0.03826119999575894
np: 0.20059480000054464
match:True
shape:(3, 10815)
dtype:int32

-----------------BOOL COMPARE--------
zig gil:0.05405780000000959
zig nogil: 0.050152099996921606
np: 0.037745000001450535
match:True
shape:(140, 140, 140)
dtype:int32

int32
-----------------ARGWHERE COMPARE <= --------
zig gil:1.0762249000035808
zig nogil: 1.0890843000015593
np: 1.077813600000809
match:True
shape:(1598124, 3)
dtype:int32

-----------------ARGWHERE COMPARE >= --------
zig gil:0.2510666999951354
zig nogil: 0.2522596999988309
np: 0.4065296000044327
match:True
shape:(292205, 3)
dtype:int32

-----------------ARGWHERE COMPARE < --------
zig gil:1.1278104999946663
zig nogil: 1.2096862999969744
np: 1.1818012000003364
match:True
shape:(1587310, 3)
dtype:int32

-----------------ARGWHERE COMPARE > --------
zig gil:0.24403650000022026
zig nogil: 0.24818120000418276
np: 0.3742421999995713
match:True
shape:(281390, 3)
dtype:int32

-----------------ARGWHERE COMPARE == --------
zig gil:0.03759559999889461
zig nogil: 0.03813069999887375
np: 0.20157189999736147
match:True
shape:(10815, 3)
dtype:int32

-----------------where where - BOOL == --------------------
zig gil:0.005644299999403302
zig nogil: 0.004658300000301097
np: 0.0042245000004186295
match:True
shape:(2, 0)
dtype:int32
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.006674700001894962
zig nogil: 0.004357899997557979
np: 0.0042458999960217625
match:True
shape:(27, 2)
dtype:int32

-----------------where ARGWHERE - BOOL == --------
zig gil:0.004734499998448882
zig nogil: 0.004520599999523256
np: 0.004316799997468479
match:True
shape:(0, 2)
dtype:int32

-----------------where COMPARE <= --------
zig gil:1.108021899999585
zig nogil: 1.1879577999934554
np: 0.705058800005645
match:True
shape:(3, 1598124)
dtype:int32

-----------------where COMPARE >= --------
zig gil:0.26749820000259206
zig nogil: 0.2739512999978615
np: 0.324334999997518
match:True
shape:(3, 292205)
dtype:int32

-----------------where COMPARE < --------
zig gil:1.2806244999956107
zig nogil: 1.1645591000051354
np: 0.7103519000011147
match:True
shape:(3, 1587310)
dtype:int32

-----------------where COMPARE > --------
zig gil:0.24668299999757437
zig nogil: 0.24255669999547536
np: 0.30934260000503855
match:True
shape:(3, 281390)
dtype:int32

-----------------where COMPARE == --------
zig gil:0.040019699998083524
zig nogil: 0.04294820000359323
np: 0.19780349999928148
match:True
shape:(3, 10815)
dtype:int32

-----------------BOOL COMPARE--------
zig gil:0.04581770000368124
zig nogil: 0.05184490000101505
np: 0.031176899996353313
match:True
shape:(140, 140, 140)
dtype:int32

uint32
-----------------ARGWHERE COMPARE <= --------
zig gil:0.1964540000044508
zig nogil: 0.1941627000051085
np: 0.3488498000006075
match:True
shape:(226903, 3)
dtype:uint32

-----------------ARGWHERE COMPARE >= --------
zig gil:1.1061921000000439
zig nogil: 1.1069925999981933
np: 1.093210300001374
match:True
shape:(1663426, 3)
dtype:uint32

-----------------ARGWHERE COMPARE < --------
zig gil:0.18653590000030817
zig nogil: 0.1908155999990413
np: 0.32847530000435654
match:True
shape:(216089, 3)
dtype:uint32

-----------------ARGWHERE COMPARE > --------
zig gil:1.1222268999990774
zig nogil: 1.1503158999985317
np: 1.1948583999983384
match:True
shape:(1652611, 3)
dtype:uint32

-----------------ARGWHERE COMPARE == --------
zig gil:0.053662899998016655
zig nogil: 0.040343500004382804
np: 0.19921169999724953
match:True
shape:(10815, 3)
dtype:uint32

-----------------where where - BOOL == --------------------
zig gil:0.004857699997955933
zig nogil: 0.0046355000013136305
np: 0.0061847999968449585
match:True
shape:(2, 0)
dtype:uint32
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.007213299999420997
zig nogil: 0.009092500004044268
np: 0.005732899997383356
match:True
shape:(4322, 2)
dtype:uint32

-----------------where ARGWHERE - BOOL == --------
zig gil:0.004360200000519399
zig nogil: 0.005485599998792168
np: 0.004490599996643141
match:True
shape:(0, 2)
dtype:uint32

-----------------where COMPARE <= --------
zig gil:0.2235962000049767
zig nogil: 0.21312630000466015
np: 0.27629609999712557
match:True
shape:(3, 226903)
dtype:uint32

-----------------where COMPARE >= --------
zig gil:1.1485383999970509
zig nogil: 1.1657611999980872
np: 0.6966458999959286
match:True
shape:(3, 1663426)
dtype:uint32

-----------------where COMPARE < --------
zig gil:0.19705070000054548
zig nogil: 0.20952780000516213
np: 0.27919209999527084
match:True
shape:(3, 216089)
dtype:uint32

-----------------where COMPARE > --------
zig gil:1.124366000003647
zig nogil: 1.1337993999986793
np: 0.6802123000015854
match:True
shape:(3, 1652611)
dtype:uint32

-----------------where COMPARE == --------
zig gil:0.04778169999917736
zig nogil: 0.03732649999437854
np: 0.19193559999985155
match:True
shape:(3, 10815)
dtype:uint32

-----------------BOOL COMPARE--------
zig gil:0.04572869999537943
zig nogil: 0.04543019999982789
np: 0.030963299999712035
match:True
shape:(140, 140, 140)
dtype:uint32

uint32
-----------------ARGWHERE COMPARE <= --------
zig gil:0.19627439999749186
zig nogil: 0.19589229999837698
np: 0.3332848999998532
match:True
shape:(226903, 3)
dtype:uint32

-----------------ARGWHERE COMPARE >= --------
zig gil:1.0832141999999294
zig nogil: 1.0849001999959
np: 1.081186000003072
match:True
shape:(1663426, 3)
dtype:uint32

-----------------ARGWHERE COMPARE < --------
zig gil:0.18808019999414682
zig nogil: 0.19334499999968102
np: 0.3290424000006169
match:True
shape:(216089, 3)
dtype:uint32

-----------------ARGWHERE COMPARE > --------
zig gil:1.1011921000026632
zig nogil: 1.1097324000002118
np: 1.0838006999983918
match:True
shape:(1652611, 3)
dtype:uint32

-----------------ARGWHERE COMPARE == --------
zig gil:0.03672519999963697
zig nogil: 0.03830019999440992
np: 0.20361289999709697
match:True
shape:(10815, 3)
dtype:uint32

-----------------where where - BOOL == --------------------
zig gil:0.004443900004844181
zig nogil: 0.0061150999972596765
np: 0.005197799997404218
match:True
shape:(2, 0)
dtype:uint32
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.006627000002481509
zig nogil: 0.0082336999985273
np: 0.006118099998275284
match:True
shape:(4322, 2)
dtype:uint32

-----------------where ARGWHERE - BOOL == --------
zig gil:0.00517519999993965
zig nogil: 0.0042538999987300485
np: 0.00521380000282079
match:True
shape:(0, 2)
dtype:uint32

-----------------where COMPARE <= --------
zig gil:0.2075191000039922
zig nogil: 0.2090083999937633
np: 0.2759799999985262
match:True
shape:(3, 226903)
dtype:uint32

-----------------where COMPARE >= --------
zig gil:1.1299867999987327
zig nogil: 1.121614400006365
np: 0.6980842000048142
match:True
shape:(3, 1663426)
dtype:uint32

-----------------where COMPARE < --------
zig gil:0.19274900000164052
zig nogil: 0.19373300000006566
np: 0.2737632999997004
match:True
shape:(3, 216089)
dtype:uint32

-----------------where COMPARE > --------
zig gil:1.1311681000006502
zig nogil: 1.1230463000028976
np: 0.7220444999984466
match:True
shape:(3, 1652611)
dtype:uint32

-----------------where COMPARE == --------
zig gil:0.04169489999912912
zig nogil: 0.040411899994069245
np: 0.21216659999481635
match:True
shape:(3, 10815)
dtype:uint32

-----------------BOOL COMPARE--------
zig gil:0.060149699995236006
zig nogil: 0.049082600002293475
np: 0.036286399998061825
match:True
shape:(140, 140, 140)
dtype:uint32

int8
-----------------ARGWHERE COMPARE <= --------
zig gil:1.1552793999944697
zig nogil: 1.136502000001201
np: 1.131550199999765
match:True
shape:(1598124, 3)
dtype:int8

-----------------ARGWHERE COMPARE >= --------
zig gil:0.23353389999829233
zig nogil: 0.22887740000442136
np: 0.35271730000386015
match:True
shape:(292205, 3)
dtype:int8

-----------------ARGWHERE COMPARE < --------
zig gil:1.045492599994759
zig nogil: 1.0624449999959324
np: 1.0365001000027405
match:True
shape:(1587310, 3)
dtype:int8

-----------------ARGWHERE COMPARE > --------
zig gil:0.22238500000094064
zig nogil: 0.2210274999961257
np: 0.34771630000614095
match:True
shape:(281390, 3)
dtype:int8

-----------------ARGWHERE COMPARE == --------
zig gil:0.03402199999982258
zig nogil: 0.0346715999985463
np: 0.1815255999972578
match:True
shape:(10815, 3)
dtype:int8

-----------------where where - BOOL == --------------------
zig gil:0.0036173999978927895
zig nogil: 0.0035343999988981523
np: 0.004212699997879099
match:True
shape:(2, 0)
dtype:int8
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.004141199999139644
zig nogil: 0.0032799999971757643
np: 0.003482599997369107
match:True
shape:(27, 2)
dtype:int8

-----------------where ARGWHERE - BOOL == --------
zig gil:0.003966500000387896
zig nogil: 0.0035234999959357083
np: 0.0036605999994208105
match:True
shape:(0, 2)
dtype:int8

-----------------where COMPARE <= --------
zig gil:1.0750041999999667
zig nogil: 1.1085418000002392
np: 0.6818615999945905
match:True
shape:(3, 1598124)
dtype:int8

-----------------where COMPARE >= --------
zig gil:0.28743199999735225
zig nogil: 0.29690140000457177
np: 0.3008990999951493
match:True
shape:(3, 292205)
dtype:int8

-----------------where COMPARE < --------
zig gil:1.192170599999372
zig nogil: 1.1204495999991195
np: 0.6612194000044838
match:True
shape:(3, 1587310)
dtype:int8

-----------------where COMPARE > --------
zig gil:0.2413481999974465
zig nogil: 0.24648419999721227
np: 0.2772222999992664
match:True
shape:(3, 281390)
dtype:int8

-----------------where COMPARE == --------
zig gil:0.033440899998822715
zig nogil: 0.03384809999988647
np: 0.18103819999669213
match:True
shape:(3, 10815)
dtype:int8

-----------------BOOL COMPARE--------
zig gil:0.036112000001594424
zig nogil: 0.03489059999992605
np: 0.017571399999724235
match:True
shape:(140, 140, 140)
dtype:int8

uint8
-----------------ARGWHERE COMPARE <= --------
zig gil:0.1841375000003609
zig nogil: 0.17526969999744324
np: 0.32225569999718573
match:True
shape:(226903, 3)
dtype:uint8

-----------------ARGWHERE COMPARE >= --------
zig gil:1.1261682999975164
zig nogil: 1.102965400001267
np: 1.0529635999992024
match:True
shape:(1663426, 3)
dtype:uint8

-----------------ARGWHERE COMPARE < --------
zig gil:0.17155259999708505
zig nogil: 0.1772997000007308
np: 0.30076009999902453
match:True
shape:(216089, 3)
dtype:uint8

-----------------ARGWHERE COMPARE > --------
zig gil:1.0456674999950337
zig nogil: 1.0428499000045122
np: 1.0483550999997533
match:True
shape:(1652611, 3)
dtype:uint8

-----------------ARGWHERE COMPARE == --------
zig gil:0.03318550000403775
zig nogil: 0.03296289999707369
np: 0.1813481999997748
match:True
shape:(10815, 3)
dtype:uint8

-----------------where where - BOOL == --------------------
zig gil:0.004021299995656591
zig nogil: 0.005225500004598871
np: 0.003259999997681007
match:True
shape:(2, 0)
dtype:uint8
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.0053369000015663914
zig nogil: 0.005747600000177044
np: 0.004954799995175563
match:True
shape:(4322, 2)
dtype:uint8

-----------------where ARGWHERE - BOOL == --------
zig gil:0.0032759000023361295
zig nogil: 0.0032291999959852546
np: 0.0048240999967674725
match:True
shape:(0, 2)
dtype:uint8

-----------------where COMPARE <= --------
zig gil:0.17913739999494283
zig nogil: 0.185414600004151
np: 0.2567559000017354
match:True
shape:(3, 226903)
dtype:uint8

-----------------where COMPARE >= --------
zig gil:1.0847398000041721
zig nogil: 1.0835549999974319
np: 0.6494327999971574
match:True
shape:(3, 1663426)
dtype:uint8

-----------------where COMPARE < --------
zig gil:0.1874753000010969
zig nogil: 0.18116120000195224
np: 0.25421160000405507
match:True
shape:(3, 216089)
dtype:uint8

-----------------where COMPARE > --------
zig gil:1.0855102999994415
zig nogil: 1.0863974000021699
np: 0.6495221000004676
match:True
shape:(3, 1652611)
dtype:uint8

-----------------where COMPARE == --------
zig gil:0.03325779999431688
zig nogil: 0.03255599999829428
np: 0.17988780000450788
match:True
shape:(3, 10815)
dtype:uint8

-----------------BOOL COMPARE--------
zig gil:0.035717500002647284
zig nogil: 0.03531300000031479
np: 0.016562900003918912
match:True
shape:(140, 140, 140)
dtype:uint8

int16
-----------------ARGWHERE COMPARE <= --------
zig gil:1.02951299999404
zig nogil: 1.0302740999977686
np: 1.038085799998953
match:True
shape:(1598124, 3)
dtype:int16

-----------------ARGWHERE COMPARE >= --------
zig gil:0.22520589999476215
zig nogil: 0.2262964000037755
np: 0.35299749999830965
match:True
shape:(292205, 3)
dtype:int16

-----------------ARGWHERE COMPARE < --------
zig gil:1.0235202000039862
zig nogil: 1.0141824000020279
np: 1.0226949999996577
match:True
shape:(1587310, 3)
dtype:int16

-----------------ARGWHERE COMPARE > --------
zig gil:0.2226516000009724
zig nogil: 0.21719869999651564
np: 0.34484990000055404
match:True
shape:(281390, 3)
dtype:int16

-----------------ARGWHERE COMPARE == --------
zig gil:0.035233599999628495
zig nogil: 0.03535639999608975
np: 0.18344020000222372
match:True
shape:(10815, 3)
dtype:int16

-----------------where where - BOOL == --------------------
zig gil:0.0040972999995574355
zig nogil: 0.003868300002068281
np: 0.004501799994613975
match:True
shape:(2, 0)
dtype:int16
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.003886200000124518
zig nogil: 0.0037716000006184913
np: 0.0039558999997098
match:True
shape:(27, 2)
dtype:int16

-----------------where ARGWHERE - BOOL == --------
zig gil:0.004257799999322742
zig nogil: 0.00396329999784939
np: 0.0039020000040181912
match:True
shape:(0, 2)
dtype:int16

-----------------where COMPARE <= --------
zig gil:1.060442999994848
zig nogil: 1.0666022999939742
np: 0.6628538000004482
match:True
shape:(3, 1598124)
dtype:int16

-----------------where COMPARE >= --------
zig gil:0.2330872000020463
zig nogil: 0.23378719999891473
np: 0.28169049999996787
match:True
shape:(3, 292205)
dtype:int16

-----------------where COMPARE < --------
zig gil:1.1094128000040655
zig nogil: 1.0764696999976877
np: 0.674441700000898
match:True
shape:(3, 1587310)
dtype:int16

-----------------where COMPARE > --------
zig gil:0.23369199999433476
zig nogil: 0.2704968999969424
np: 0.28823389999888605
match:True
shape:(3, 281390)
dtype:int16

-----------------where COMPARE == --------
zig gil:0.03506990000460064
zig nogil: 0.035451299998385366
np: 0.1834231999964686
match:True
shape:(3, 10815)
dtype:int16

-----------------BOOL COMPARE--------
zig gil:0.03780659999756608
zig nogil: 0.03744340000412194
np: 0.0210466999997152
match:True
shape:(140, 140, 140)
dtype:int16

uint16
-----------------ARGWHERE COMPARE <= --------
zig gil:0.19080509999912465
zig nogil: 0.1812366000012844
np: 0.3136149000056321
match:True
shape:(226903, 3)
dtype:uint16

-----------------ARGWHERE COMPARE >= --------
zig gil:1.065713299998606
zig nogil: 1.067334799998207
np: 1.3791226999965147
match:True
shape:(1663426, 3)
dtype:uint16

-----------------ARGWHERE COMPARE < --------
zig gil:0.19583959999727085
zig nogil: 0.20060609999927692
np: 0.33810860000085086
match:True
shape:(216089, 3)
dtype:uint16

-----------------ARGWHERE COMPARE > --------
zig gil:1.1081005000014557
zig nogil: 1.4316662999990513
np: 1.1140935000003083
match:True
shape:(1652611, 3)
dtype:uint16

-----------------ARGWHERE COMPARE == --------
zig gil:0.03786680000484921
zig nogil: 0.0359284000005573
np: 0.18754949999856763
match:True
shape:(10815, 3)
dtype:uint16

-----------------where where - BOOL == --------------------
zig gil:0.004376500000944361
zig nogil: 0.004639999999199063
np: 0.004106899999896996
match:True
shape:(2, 0)
dtype:uint16
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.007890200002293568
zig nogil: 0.005994499995722435
np: 0.005285499995807186
match:True
shape:(4322, 2)
dtype:uint16

-----------------where ARGWHERE - BOOL == --------
zig gil:0.005163199995877221
zig nogil: 0.004107199994905386
np: 0.0043836999975610524
match:True
shape:(0, 2)
dtype:uint16

-----------------where COMPARE <= --------
zig gil:0.21251679999841144
zig nogil: 0.19768759999715257
np: 0.3138230000040494
match:True
shape:(3, 226903)
dtype:uint16

-----------------where COMPARE >= --------
zig gil:1.1643614999993588
zig nogil: 1.1388255999991088
np: 0.6697007000038866
match:True
shape:(3, 1663426)
dtype:uint16

-----------------where COMPARE < --------
zig gil:0.1991718999997829
zig nogil: 0.1961643999966327
np: 0.26244629999564495
match:True
shape:(3, 216089)
dtype:uint16

-----------------where COMPARE > --------
zig gil:1.1065361000000848
zig nogil: 1.1319065999996383
np: 0.6972595999977784
match:True
shape:(3, 1652611)
dtype:uint16

-----------------where COMPARE == --------
zig gil:0.03863629999978002
zig nogil: 0.03757469999982277
np: 0.18571700000029523
match:True
shape:(3, 10815)
dtype:uint16

-----------------BOOL COMPARE--------
zig gil:0.04184079999686219
zig nogil: 0.03974190000008093
np: 0.02256430000124965
match:True
shape:(140, 140, 140)
dtype:uint16

int64
-----------------ARGWHERE COMPARE <= --------
zig gil:1.0644711999993888
zig nogil: 1.0812933999986853
np: 1.1308467000053497
match:True
shape:(1598124, 3)
dtype:int64

-----------------ARGWHERE COMPARE >= --------
zig gil:0.2517588999980944
zig nogil: 0.24914490000082878
np: 0.4183365000062622
match:True
shape:(292205, 3)
dtype:int64

-----------------ARGWHERE COMPARE < --------
zig gil:1.0517617000004975
zig nogil: 1.053249800002959
np: 1.0915187999999034
match:True
shape:(1587310, 3)
dtype:int64

-----------------ARGWHERE COMPARE > --------
zig gil:0.2447424999991199
zig nogil: 0.25284259999898495
np: 0.40370160000020405
match:True
shape:(281390, 3)
dtype:int64

-----------------ARGWHERE COMPARE == --------
zig gil:0.04647990000376012
zig nogil: 0.04556880000018282
np: 0.21837200000300072
match:True
shape:(10815, 3)
dtype:int64

-----------------where where - BOOL == --------------------
zig gil:0.005038000002969056
zig nogil: 0.006453299996792339
np: 0.004466200000024401
match:True
shape:(2, 0)
dtype:int64
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.0046072000041021965
zig nogil: 0.006313799996860325
np: 0.005172299999685492
match:True
shape:(27, 2)
dtype:int64

-----------------where ARGWHERE - BOOL == --------
zig gil:0.005666999997629318
zig nogil: 0.005621099997370038
np: 0.004639600003429223
match:True
shape:(0, 2)
dtype:int64

-----------------where COMPARE <= --------
zig gil:1.214637600001879
zig nogil: 1.2273935999983223
np: 0.7188212999972166
match:True
shape:(3, 1598124)
dtype:int64

-----------------where COMPARE >= --------
zig gil:0.2549092999979621
zig nogil: 0.25533720000385074
np: 0.3293273999952362
match:True
shape:(3, 292205)
dtype:int64

-----------------where COMPARE < --------
zig gil:1.0980450000060955
zig nogil: 1.1495428000052925
np: 0.6986237999954028
match:True
shape:(3, 1587310)
dtype:int64

-----------------where COMPARE > --------
zig gil:0.2518443000008119
zig nogil: 0.24268490000395104
np: 0.3220748999956413
match:True
shape:(3, 281390)
dtype:int64

-----------------where COMPARE == --------
zig gil:0.04951040000014473
zig nogil: 0.04426010000315728
np: 0.21088589999999385
match:True
shape:(3, 10815)
dtype:int64

-----------------BOOL COMPARE--------
zig gil:0.06031230000371579
zig nogil: 0.06050829999730922
np: 0.05139799999597017
match:True
shape:(140, 140, 140)
dtype:int64

uint64
-----------------ARGWHERE COMPARE <= --------
zig gil:0.20893680000153836
zig nogil: 0.2036004999972647
np: 0.3594602999946801
match:True
shape:(226903, 3)
dtype:uint64

-----------------ARGWHERE COMPARE >= --------
zig gil:1.0828016000014031
zig nogil: 1.0631242000017664
np: 1.0808288999978686
match:True
shape:(1663426, 3)
dtype:uint64

-----------------ARGWHERE COMPARE < --------
zig gil:0.1978582000010647
zig nogil: 0.1927542000048561
np: 0.35142899999482324
match:True
shape:(216089, 3)
dtype:uint64

-----------------ARGWHERE COMPARE > --------
zig gil:1.0459884000010788
zig nogil: 1.0498370999994222
np: 1.0780140000060783
match:True
shape:(1652611, 3)
dtype:uint64

-----------------ARGWHERE COMPARE == --------
zig gil:0.0439057000039611
zig nogil: 0.04253980000066804
np: 0.2099106000023312
match:True
shape:(10815, 3)
dtype:uint64

-----------------where where - BOOL == --------------------
zig gil:0.004622400003427174
zig nogil: 0.005763400004070718
np: 0.004409799999848474
match:True
shape:(2, 0)
dtype:uint64
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.007892699999501929
zig nogil: 0.0066026999993482605
np: 0.005884800004423596
match:True
shape:(4322, 2)
dtype:uint64

-----------------where ARGWHERE - BOOL == --------
zig gil:0.005972199993266258
zig nogil: 0.0049336000010953285
np: 0.004871200006164145
match:True
shape:(0, 2)
dtype:uint64

-----------------where COMPARE <= --------
zig gil:0.21246489999612095
zig nogil: 0.20566459999827202
np: 0.3349847999998019
match:True
shape:(3, 226903)
dtype:uint64

-----------------where COMPARE >= --------
zig gil:1.0974528000006103
zig nogil: 1.1057868999996572
np: 0.6933072000028915
match:True
shape:(3, 1663426)
dtype:uint64

-----------------where COMPARE < --------
zig gil:0.19585250000091037
zig nogil: 0.2244661000004271
np: 0.2922921999997925
match:True
shape:(3, 216089)
dtype:uint64

-----------------where COMPARE > --------
zig gil:1.099598100001458
zig nogil: 1.1080314999999246
np: 0.7005652000007103
match:True
shape:(3, 1652611)
dtype:uint64

-----------------where COMPARE == --------
zig gil:0.043576699994446244
zig nogil: 0.042915600002743304
np: 0.21026359999814304
match:True
shape:(3, 10815)
dtype:uint64

-----------------BOOL COMPARE--------
zig gil:0.06685860000288812
zig nogil: 0.07007519999751821
np: 0.05363699999725213
match:True
shape:(140, 140, 140)
dtype:uint64

float32
-----------------ARGWHERE COMPARE <= --------
zig gil:1.0293850000016391
zig nogil: 1.0510993999996572
np: 1.0392023000022164
match:True
shape:(1598124, 3)
dtype:float32

-----------------ARGWHERE COMPARE >= --------
zig gil:0.23745529999723658
zig nogil: 0.24302510000416078
np: 0.3576503000003868
match:True
shape:(292205, 3)
dtype:float32

-----------------ARGWHERE COMPARE < --------
zig gil:1.0341159999952652
zig nogil: 1.0376395000057528
np: 1.0435389000049327
match:True
shape:(1587310, 3)
dtype:float32

-----------------ARGWHERE COMPARE > --------
zig gil:0.23462470000231406
zig nogil: 0.23231859999941662
np: 0.3542373000018415
match:True
shape:(281390, 3)
dtype:float32

-----------------ARGWHERE COMPARE == --------
zig gil:0.03314200000022538
zig nogil: 0.03299859999970067
np: 0.19556089999969117
match:True
shape:(10815, 3)
dtype:float32

-----------------where where - BOOL == --------------------
zig gil:0.005372899999201763
zig nogil: 0.005764900000940543
np: 0.005703800001356285
match:True
shape:(2, 0)
dtype:float32
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.0052397000035853125
zig nogil: 0.007302000005438458
np: 0.005217300000367686
match:True
shape:(27, 2)
dtype:float32

-----------------where ARGWHERE - BOOL == --------
zig gil:0.006024000002071261
zig nogil: 0.0053046000030008145
np: 0.004995399998733774
match:True
shape:(0, 2)
dtype:float32

-----------------where COMPARE <= --------
zig gil:1.0465098999993643
zig nogil: 1.0979698000010103
np: 0.6823720000029425
match:True
shape:(3, 1598124)
dtype:float32

-----------------where COMPARE >= --------
zig gil:0.24625799999921583
zig nogil: 0.24437179999949876
np: 0.30550200000288896
match:True
shape:(3, 292205)
dtype:float32

-----------------where COMPARE < --------
zig gil:1.0567613000021083
zig nogil: 1.0672071000008145
np: 0.6560558000055607
match:True
shape:(3, 1587310)
dtype:float32

-----------------where COMPARE > --------
zig gil:0.23791450000135228
zig nogil: 0.23916550000285497
np: 0.29138899999816203
match:True
shape:(3, 281390)
dtype:float32

-----------------where COMPARE == --------
zig gil:0.0328423999962979
zig nogil: 0.032826999995450024
np: 0.19034929999907035
match:True
shape:(3, 10815)
dtype:float32

-----------------BOOL COMPARE--------
zig gil:0.04899730000033742
zig nogil: 0.0499880999996094
np: 0.027367599999706727
match:True
shape:(140, 140, 140)
dtype:float32

float64
-----------------ARGWHERE COMPARE <= --------
zig gil:1.0527567000026465
zig nogil: 1.0702018000010867
np: 1.0655105000041658
match:True
shape:(1598124, 3)
dtype:float64

-----------------ARGWHERE COMPARE >= --------
zig gil:0.24714550000499003
zig nogil: 0.2622479999990901
np: 0.3725200999979279
match:True
shape:(292205, 3)
dtype:float64

-----------------ARGWHERE COMPARE < --------
zig gil:1.0441196999963722
zig nogil: 1.0507036000053631
np: 1.0560502000007546
match:True
shape:(1587310, 3)
dtype:float64

-----------------ARGWHERE COMPARE > --------
zig gil:0.24077240000042366
zig nogil: 0.26215989999764133
np: 0.3696628000034252
match:True
shape:(281390, 3)
dtype:float64

-----------------ARGWHERE COMPARE == --------
zig gil:0.04775909999443684
zig nogil: 0.04949290000513429
np: 0.20534539999789558
match:True
shape:(10815, 3)
dtype:float64

-----------------where where - BOOL == --------------------
zig gil:0.005014900001697242
zig nogil: 0.004667700006393716
np: 0.00470849999692291
match:True
shape:(2, 0)
dtype:float64
------------
-----------------where ARGWHERE - BOOL >= --------
zig gil:0.0049082000041380525
zig nogil: 0.00476860000344459
np: 0.0046531999978469685
match:True
shape:(27, 2)
dtype:float64

-----------------where ARGWHERE - BOOL == --------
zig gil:0.005391400001826696
zig nogil: 0.005714799997804221
np: 0.005357599999115337
match:True
shape:(0, 2)
dtype:float64

-----------------where COMPARE <= --------
zig gil:1.1030351000008523
zig nogil: 1.0995989000002737
np: 0.6731149999977788
match:True
shape:(3, 1598124)
dtype:float64

-----------------where COMPARE >= --------
zig gil:0.27416749999974854
zig nogil: 0.2519438999952399
np: 0.3041400000001886
match:True
shape:(3, 292205)
dtype:float64

-----------------where COMPARE < --------
zig gil:1.0691622000013012
zig nogil: 1.10280739999871
np: 0.7120320000030915
match:True
shape:(3, 1587310)
dtype:float64

-----------------where COMPARE > --------
zig gil:0.24791349999577506
zig nogil: 0.2429545999984839
np: 0.3003030000036233
match:True
shape:(3, 281390)
dtype:float64

-----------------where COMPARE == --------
zig gil:0.05101190000277711
zig nogil: 0.05927199999860022
np: 0.21094230000016978
match:True
shape:(3, 10815)
dtype:float64

-----------------BOOL COMPARE--------
zig gil:0.059391800001321826
zig nogil: 0.06431609999708598
np: 0.042864600000029895
match:True
shape:(140, 140, 140)
dtype:float64

```