Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Casting to int inside loop yields numpy array indexing error #2753

Open
Rik-de-Kort opened this issue Feb 15, 2018 · 2 comments
Open

Casting to int inside loop yields numpy array indexing error #2753

Rik-de-Kort opened this issue Feb 15, 2018 · 2 comments
Labels
bug SSA Problem due to SSA (or lack of)

Comments

@Rik-de-Kort
Copy link
Contributor

Rik-de-Kort commented Feb 15, 2018

Float indexing for numpy arrays is deprecated, and as such it's not supported by numba.
When initiating a variable as a float, and casting it to an integer, and the using it to index a numpy array, this works fine. However, when we cast it to integer inside a loop, numba will throw an error saying float indexing is not supported.

MWE without error:

import numpy as np
from numba import njit

@njit()
def literally_can_(even):
    w = 0.0
    w = int(w)
    few = even[w]
    return 0

odd = np.array([0 for _ in range(1)], dtype="float64")
literally_can_(odd)

Adding a loop makes it throw an error:

@njit()
def literally_cant_(even):
    w = 0.0
    for _ in range(1):
        w = int(w)

    few = even[w]
    return 0

odd = np.array([0 for _ in range(1)], dtype="float64")
literally_cant_(odd)

Error produced

Traceback (most recent call last):
  File "C:/Users/user/Documents/ManagedDC/test.py", line 25, in <module>
    print(literally_cant_(odd))
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\dispatcher.py", line 330, in _compile_for_args
    raise e
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\dispatcher.py", line 307, in _compile_for_args
    return self.compile(tuple(argtypes))
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\dispatcher.py", line 579, in compile
    cres = self._compiler.compile(args, return_type)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\dispatcher.py", line 80, in compile
    flags=flags, locals=self.locals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 766, in compile_extra
    return pipeline.compile_extra(func)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 362, in compile_extra
    return self._compile_bytecode()
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 725, in _compile_bytecode
    return self._compile_core()
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 712, in _compile_core
    res = pm.run(self.status)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 248, in run
    raise patched_exception
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 240, in run
    stage()
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 454, in stage_nopython_frontend
    self.locals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\compiler.py", line 868, in type_inference_stage
    infer.propagate()
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 844, in propagate
    raise errors[0]
numba.errors.TypingError: Failed at nopython (nopython frontend)
Internal error at <numba.typeinfer.IntrinsicCallConstraint object at 0x0000019D931991D0>:
--%<-----------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\errors.py", line 259, in new_error_context
    yield
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 501, in __call__
    self.resolve(typeinfer, typeinfer.typevars, fnty=self.func)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 441, in resolve
    sig = typeinfer.resolve_call(fnty, pos_args, kw_args, literals=literals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 1113, in resolve_call
    literals=literals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\context.py", line 189, in resolve_function_type
    res = defn.apply(args, kws)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\templates.py", line 207, in apply
    sig = generic(args, kws)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\arraydecl.py", line 165, in generic
    out = get_array_index_type(ary, idx)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\arraydecl.py", line 71, in get_array_index_type
    % (ty, idx))
TypeError: unsupported array index type float64 in [float64]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 137, in propagate
    constraint(typeinfer)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 501, in __call__
    self.resolve(typeinfer, typeinfer.typevars, fnty=self.func)
  File "C:\Users\user\Anaconda3\lib\contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\errors.py", line 265, in new_error_context
    six.reraise(type(newerr), newerr, sys.exc_info()[2])
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\six.py", line 658, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\errors.py", line 259, in new_error_context
    yield
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 501, in __call__
    self.resolve(typeinfer, typeinfer.typevars, fnty=self.func)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 441, in resolve
    sig = typeinfer.resolve_call(fnty, pos_args, kw_args, literals=literals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typeinfer.py", line 1113, in resolve_call
    literals=literals)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\context.py", line 189, in resolve_function_type
    res = defn.apply(args, kws)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\templates.py", line 207, in apply
    sig = generic(args, kws)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\arraydecl.py", line 165, in generic
    out = get_array_index_type(ary, idx)
  File "C:\Users\user\Anaconda3\lib\site-packages\numba\typing\arraydecl.py", line 71, in get_array_index_type
    % (ty, idx))
numba.errors.InternalError: unsupported array index type float64 in [float64]
[1] During: typing of intrinsic-call at C:/Users/user/Documents/ManagedDC/test.py (11)
--%<-----------------------------------------------------------------

File "test.py", line 11
@sklam
Copy link
Member

sklam commented Feb 15, 2018

Related to #2719

@stuartarchibald stuartarchibald added the SSA Problem due to SSA (or lack of) label Sep 11, 2019
@stuartarchibald
Copy link
Contributor

This won't be fixed by SSA alone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug SSA Problem due to SSA (or lack of)
Projects
None yet
Development

No branches or pull requests

3 participants