---
name: "Float"
section: "3poc"
platform: "linux"
package: "objc-poc"
version: "3.1.26-2"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/Float/3poc"
---

# Float(3poc)

Portable Object Compiler Float class

## NAME

Float - Portable Object Compiler Float class

## CLASS

**Float**

## SUPERCLASS

CAObject

## MATURITY INDEX

Immature

## 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\
 newFloatValue:\
 newStrValue:\

**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:\

**Expression Object**

asExpression\
 expression:\

**Printing**

printsLeadingSign\
 printToFile:\

## METHODS

**new**

\+ **new**

Creates an floating-point object equal to zero.

**newFloatValue:**

\+ **newFloatValue:** (float) *floatValue*

Creates an object with value equal to  *floatValue.*

**newStrValue:**

\+ **newStrValue:** (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.

**asExpression**

\- **asExpression**

Returns a new expression object, containing a copy of the receiving object.

**expression:**

\- **expression:** *anExpression*

Try to evaluate  *anExpression*  as a floating-point number or return  **nil**  otherwise (when  *anExpression*  is symbolic, for example).

**printsLeadingSign**

\- (BOOL) **printsLeadingSign**

Returns YES if the number is negative.

**printToFile:**

\- **printToFile:** (FILE \*) *aFile*

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