np.arange ignores dtype
arange ignores the passed dtype and is always `int*`
```python
a = np.arange(4, dtype=np.complex64)
print(a.dtype)
assert a.dtype == np.complex64
```
Results in:
```
int64
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-12-5b101f76f4c3> in <module>()
      1 a = np.arange(4, dtype=np.complex64)
      2 print(a.dtype)
----> 3 assert a.dtype is np.complex64

AssertionError: 
```
diff --git a/jax/numpy/lax_numpy.py b/jax/numpy/lax_numpy.py
index 4efb257f1..2c433da8d 100644
--- a/jax/numpy/lax_numpy.py
+++ b/jax/numpy/lax_numpy.py
@@ -1379,7 +1379,7 @@ def identity(n, dtype=None):
 
 @_wraps(onp.arange)
 def arange(*args, **kwargs):
-  dtype = kwargs.pop("dtype", None)
+  dtype = kwargs.get("dtype", None)
   if not args:
     raise TypeError("Required argument 'start' (pos 1) not found")  # same as numpy error
 
diff --git a/tests/lax_numpy_test.py b/tests/lax_numpy_test.py
index 67273f5a4..bdc834deb 100644
--- a/tests/lax_numpy_test.py
+++ b/tests/lax_numpy_test.py
@@ -1493,7 +1493,6 @@ class LaxBackedNumpyTests(jtu.JaxTestCase):
     expected = onp.reshape(a, (3, 2), order='F')
     self.assertAllClose(ans, expected, check_dtypes=True)
 
-
   @parameterized.named_parameters(jtu.cases_from_list(
       {"testcase_name": "_op={}_dtype={}".format(
           op, {bool: "bool", int: "int", float: "float"}[dtype]),
@@ -1538,6 +1537,10 @@ class LaxBackedNumpyTests(jtu.JaxTestCase):
     self.assertFalse(type(lnp.arange(77)) == type(onp.arange(77)))
     self.assertTrue(type(lnp.arange(77)) == type(lax.iota(onp.int32, 77)))
 
+  def testIssue830(self):
+    a = lnp.arange(4, dtype=lnp.complex64)
+    self.assertEqual(a.dtype, lnp.complex64)
+
   def testIssue728(self):
     assert lnp.allclose(lnp.eye(5000), onp.eye(5000))
     self.assertEqual(0, onp.sum(lnp.eye(1050) - onp.eye(1050)))
['jax/numpy/lax_numpy.py', 'tests/lax_numpy_test.py']