rval = rval * rval return rval @gradient(4.0, 5.0, 2.0) def test_while_2(x, y, z): rval = 0 # Cannot compare to 0 or finite diff is unstable while x > -0.1: rval = rval + y x = x - z return rval @gradient([1.0, 2.0, 3.0, 4.0], pipeline=standard_debug_pipeline.configure(validate=False)) def test_list_while(xs): y = 1.0 index = 0 while index < len(xs): y = y * xs[index] index = index + 1 return y @gradient([1.0, 2.0, 3.0, 4.0], pipeline=standard_pipeline, backend=backend_all) def test_list_for(xs): y = 1 for x in xs:
return rval @gradient(4.0, 5.0, 2.0, backend=backend_all) def test_while_2(x, y, z): rval = 0 # Cannot compare to 0 or finite diff is unstable while x > -0.1: rval = rval + y x = x - z return rval @gradient( [1.0, 2.0, 3.0, 4.0], pipeline=standard_debug_pipeline.configure(validator=None), backend=backend_except("relay"), ) def test_list_while(xs): # Fail with relay: # myia.pipeline.ressources.default_convert receives # a tvm.runtime.ADT and then fails because it cannot # look for attribute __to_myia__ # TypeError: runtime.ADT is not registered via TVM_REGISTER_NODE_TYPE y = 1.0 index = 0 while index < len(xs): y = y * xs[index] index = index + 1 return y
@grad_test( 2.0, ) def test_pow10(x): v = x j = 0 while j < 3: i = 0 while i < 3: v = v * x i = i + 1 j = j + 1 return v @grad_test(([1.0, 2.0, 3.0, 4.0], ), pipeline=standard_debug_pipeline.configure(validate=False)) def test_list_while(xs): y = 1.0 index = 0 while index < len(xs): y = y * xs[index] index = index + 1 return y @grad_test(([1.0, 2.0, 3.0, 4.0], ), pipeline=standard_pipeline) def test_list_for(xs): y = 1 for x in xs: y = y * x return y
@mt( infer_scalar(i32, result=i32), infer_scalar(1, result=i64), infer_scalar(-1, result=InferenceError(_msg)), ) def test_assert_msg(x): assert x >= 0, "x must be positive" return x ** 0.5 @mt( infer_scalar(i32, result=i32), run_debug(4.5, result=4.5 ** 0.5), run_debug(-5, result=Exception), gradient(4.5, pipeline=standard_debug_pipeline.configure(validator=None)), ) def test_raise(x): if x >= 0: return x ** 0.5 else: raise Exception("sqrt of negative number") @infer_scalar(i32, result=InferenceError(_msg)) def test_raise_unconditional(x): raise Exception("I don't like your face") @infer_scalar(i32, result=i32) def test_raise_multiple(x):
@mt( infer_scalar(i32, result=i32), infer_scalar(1, result=i64), infer_scalar(-1, result=InferenceError(_msg)), ) def test_assert_msg(x): assert x >= 0, 'x must be positive' return x**0.5 @mt( infer_scalar(i32, result=i32), run_debug(4.5, result=4.5**0.5), run_debug(-5, result=Exception), gradient(4.5, pipeline=standard_debug_pipeline.configure(validate=False)), ) def test_raise(x): if x >= 0: return x**0.5 else: raise Exception("sqrt of negative number") @infer_scalar(i32, result=InferenceError(_msg)) def test_raise_unconditional(x): raise Exception("I don't like your face") @infer_scalar(i32, result=i32) def test_raise_multiple(x):