diff --git a/.gitignore b/.gitignore
index 62320b39c291edb6566079d8cd19798ff9e1f137..88717818866b233ab49b644f24d116aa61efea91 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,4 +13,5 @@ MANIFEST
 *.dat
 *.version
 *.ipynb_checkpoints
-outdir/*
\ No newline at end of file
+outdir/*
+.idea/*
diff --git a/bilby/core/prior.py b/bilby/core/prior.py
index 48cdd527d1fa59cf6030abd391e80962951658e4..c1a11013e1e86b76bafcc86de649f41e82ccf5f0 100644
--- a/bilby/core/prior.py
+++ b/bilby/core/prior.py
@@ -1237,12 +1237,19 @@ class SymmetricLogUniform(Prior):
         Union[float, array_like]: Rescaled probability
         """
         self.test_valid_for_rescaling(val)
-        if val < 0.5:
-            return -self.maximum * np.exp(-2 * val * np.log(self.maximum / self.minimum))
-        elif val > 0.5:
-            return self.minimum * np.exp(np.log(self.maximum / self.minimum) * (2 * val - 1))
+        if isinstance(val, (float, int)):
+            if val < 0.5:
+                return -self.maximum * np.exp(-2 * val * np.log(self.maximum / self.minimum))
+            else:
+                return self.minimum * np.exp(np.log(self.maximum / self.minimum) * (2 * val - 1))
         else:
-            raise ValueError("Rescale not valid for val=0.5")
+            vals_less_than_5 = val < 0.5
+            rescaled = np.empty_like(val)
+            rescaled[vals_less_than_5] = -self.maximum * np.exp(-2 * val[vals_less_than_5] *
+                                                                np.log(self.maximum / self.minimum))
+            rescaled[~vals_less_than_5] = self.minimum * np.exp(np.log(self.maximum / self.minimum) *
+                                                                (2 * val[~vals_less_than_5] - 1))
+            return rescaled
 
     def prob(self, val):
         """Return the prior probability of val
diff --git a/test/prior_test.py b/test/prior_test.py
index a0123982de0e92ee0f07f0c7f92e8fba54d72e6e..8f58d41e57fcea98a6d19ec9f5cc386e756fdd98 100644
--- a/test/prior_test.py
+++ b/test/prior_test.py
@@ -274,6 +274,16 @@ class TestPriorClasses(unittest.TestCase):
                 # the prob and ln_prob functions, it must be ignored in this test.
                 self.assertAlmostEqual(np.log(prior.prob(sample)), prior.ln_prob(sample), 12)
 
+    def test_many_prob_and_many_ln_prob(self):
+        for prior in self.priors:
+            samples = prior.sample(10)
+            if not isinstance(prior, bilby.core.prior.MultivariateGaussian):
+                ln_probs = prior.ln_prob(samples)
+                probs = prior.prob(samples)
+                for sample, logp, p in zip(samples, ln_probs, probs):
+                    self.assertAlmostEqual(prior.ln_prob(sample), logp)
+                    self.assertAlmostEqual(prior.prob(sample), p)
+
     def test_cdf_is_inverse_of_rescaling(self):
         domain = np.linspace(0, 1, 100)
         threshold = 1e-9