chicken-users
[Top][All Lists]

## [Chicken-users] mathematical oddities

 From: Shawn Rutledge Subject: [Chicken-users] mathematical oddities Date: Wed, 14 Jul 2010 23:04:38 -0700

```Sorry for resurrecting such an old thread but I also noticed division
by zero doesn't return infinity, and I sortof wish it did, or that it
could be an option.

On Mon, Jun 19, 2006 at 11:53 PM, felix winkelmann <address@hidden> wrote:
> On 6/20/06, Thomas Chust <address@hidden> wrote:
>>
>> Maybe something like that could be included in the library for
>> completeness' sake. Or we should create an IEEE arithmetic egg (are there
>> more functions than / in CHICKEN that are not IEEE compliant?). But I
>> would really vote against modifying the behaviour of /.
>>
>
> Additionally, you can of course do
>
> (condition-case (/ 1 0) (exn (exn arithmetic) "doh!"))

Can you detect the actual divide-by-zero error though as opposed to
just a general arithmetic error?

I'm messing around with finding the angles between vectors (trying to
simplify a sequence of connected line segments when it's possible to
replace them with fewer and longer ones, within a tolerance).
Fortunately atan takes two numbers so division by zero won't come up
in that case.  (Otherwise if you try to take the slope of a line
segment you'll get infinity sometimes, and that should be normal, not
an error.)  Then I was testing modulo and found this:

#;1> (remainder 7.3 1.2)
0.100000000000001
#;2> (quotient 7.3 1.2)
6.0
#;3> (/ 7.3 1.2)
6.08333333333333
#;4> (- (/ 7.3 1.2) (quotient 7.3 1.2))
0.083333333333333

#;7> (use numbers)
#;8> (abs (- (/ 7.3 -1.2) (quotient 7.3 -1.2)))

Error: (quotient) bad argument type - not an integer: 7.3

Seems like at least a couple of bugs there: why does loading numbers
break floating-point stuff that worked before, and, why doesn't modulo
return the actual remainder?  Or I'm missing some reason why this
should be considered correct...

There's a nice comparison of scheme impl's with regard to calculations
involving infinity here:

http://people.csail.mit.edu/jaffer/III/RAWI

```