# cfloat Specification Sheet

Computer Algebra Kit (c) 1993,00 by Comp.Alg.Objects. All Rights Reserved.

# Float

Inherits from: CAObject

Maturity Index: Immature

## Class Description

It is planned to make this class evolve into an Objective C class for arbitrary precision floating-point arithmetic. Currently, Float is merely a Computer Algebra Kit compatible interface to plain C floating-point arithmetic. Instances are object wrappers around the float datatype; arithmetic is subject to the same limitations, round-off errors etc. as in C.

Support for floating-point arithmetic is minimal in the Computer Algebra Kit; it is possible to convert results that are obtained by exact arithmetic to a numerical approximation (see the method asNumerical of Integer, Matrix, Polynomial etc.) for further processing by numerical analysis software.

## Method types

### Creation

- new
- floatValue:
- str:

### Identity

- hash
- isEqual:
- floatValue
- floatValue:

### Comparing

- sign
- compare:

### Addition

- zero
- isZero
- isOpposite:
- negate
- double
- add:
- subtract:

### Multiplication

- one
- minusOne
- isOne
- isMinusOne
- square
- multiply:
- inverse
- divide:

### Printing

- printsLeadingSign
- printOn:

## Methods

### new

> +new

Creates an floating-point object equal to zero.

### floatValue:

> +floatValue:(float)floatValue

Creates an object with value equal to floatValue.

### str:

> +str:(STR)aString

Returns a new float object given a string aString, or returns nil if the method can't parse aString. This method acts like the ANSI function atof().

### hash

> - (unsigned)hash

Returns a small integer that is the same for objects that are equal (in the sense of isEqual:).

### isEqual:

> - (BOOL)isEqual:b

### floatValue

> - (float)floatValue

Returns the value of the object.

### floatValue:

> -floatValue:(float)f

Creates an object with value f.

### sign

> - (int)sign

Returns plus one if the object is positive (greater than zero), zero if zero and minus one if negative (less than zero).

### compare:

> - (int)compare:b

Returns -1, 0, or +1 if the object is respectively less than, equal to, or greater than b. Returns 0 for pointer equal objects.

### zero

> -zero

Returns a new reference to a shared float instance with value equal to zero.

### isZero

> - (BOOL)isZero

Whether the object is equal to zero.

### isOpposite:

> - (BOOL)isOpposite:b

Whether the object is the opposite of b.

### negate

> -negate

Returns the opposite of the object.

### double

> -double

Returns a new object, equal to the object multiplied by two i.e., added to itself.

### add:

> -add:b

Adds b to the object. Returns a new object.

### subtract:

> -subtract:b

Subtracts b from the object. Returns a new object.

### one

> -one

Returns a new reference to a shared float instance with value equal to one.

### minusOne

> -minusOne

Returns a new reference to the float minus one.

### isOne

> - (BOOL)isOne

Whether the object is equal to one.

### isMinusOne

> - (BOOL)isMinusOne

Whether the object is equal to minus one.

### square

> -square

Returns the square of the object i.e., a new object equal to the original object multiplied by itself.

### multiply:

> -multiply:b

Returns a new object, the product of the object multiplied (to the right) by b. If the objects are pointer equal, this method is equivalent to square.

### inverse

> -inverse

Returns the multiplicative inverse of the object (returns a new object). Returns nil if the object is equal to zero or cannot be inverted.

### divide:

> -divide:b

Returns a new object, the exact quotient of the object divided by b. Returns nil if b is equal to zero or if the division is not exact.

### printsLeadingSign

> - (BOOL)printsLeadingSign

Returns YES if the number is negative.

### printOn:

> -printOn:(IOD)aFile

Prints the floating-point number to aFile according to the '%g' format of the ANSI function printf().