*Comment made by: slipset*

So, I guess some division by zero is somewhat undefined.

If one removes

```

```
if(yops.isZero((Number)y))
throw new ArithmeticException("Divide by zero");
```

```

then

` (/ (identity 5.0) (identity 0.0))`

returns infinity as the unboxed versions.

Although doing so, also causes a change to

`(/ 5 0)`

which then becomes `1/0`

, whereas it previously threw Divide by zero.

From Numbers.java we see that unboxed math does not protect against division by zero:

```

static public double divide(double x, double y){

```
return x / y;
```

}

```

whereas boxed versions do:

```

static public Number divide(Object x, Object y){

```
if (isNaN(x)){
return (Number)x;
} else if(isNaN(y)){
return (Number)y;
}
Ops yops = ops(y);
if(yops.isZero((Number)y))
throw new ArithmeticException("Divide by zero");
return ops(x).combine(yops).divide((Number)x, (Number)y);
```

}

```

This inconsistency is also reproducible with clojure 1.8:

```

Clojure 1.8.0

Java HotSpot(TM) 64-Bit Server VM 1.8.0_144-b01

```
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
```

Source: (source function-name-here)

Javadoc: (javadoc java-object-or-class-here)

```
Exit: Control+D or (exit) or (quit)
```

Results: Stored in vars *1, *2, *3, an exception in *e

user=> (/ 5.0 0.0)

Infinity

user=> (/ (identity 5.0) (identity 0.0))

ArithmeticException Divide by zero clojure.lang.Numbers.divide (Numbers.java:158)

user=>

```