# NAME

Math::GrahamFunction::SqFacts - a squaring factors vector.

# WARNING!

This is a module for Math::GrahamFunction's internal use only.

# CONSTRUCTION

## Math::GrahamFunction::SqFacts->new({n => $n})

Initializes a squaring factors object from a number.

## Math::GrahamFunction::SqFacts->new({factors => \@factors})

Initializes a squaring factors object from a list of factors.

# METHODS

## $facts->clone()

Creates a clone of the object and returns it.

## $n_facts->mult_by($m_facts)

Calculates the results of the multiplication of the number represented by `$n_facts`

and `$m_facts`

and stores it in $n_facts (destructively).

This is actually addition in vector space.

## my $result = $n->mult($m);

Non destructively calculates the multiplication and returns it.

## $facts->is_square()

A predicate that returns whether the factors represent a square number.

## $facts->exists($myfactor)

Checks whether `$myfactor`

exists in `$facts`

.

## my $last_factor = $factors->last()

Returns the last (and greatest factor).

## $facts->product()

Returns the product of the factors.

## $facts->first()

Returns the first (and smallest) factor.

# AUTHOR

Shlomi Fish, `<shlomif at cpan.org>`

# ACKNOWLEDGEMENTS

# COPYRIGHT & LICENSE

Copyright 2007 Shlomi Fish, all rights reserved.

This program is released under the following license: MIT X11.

**Note:** the module meta-data says this module is released under the BSD license. However, MIT X11 is the more accurate license, and "bsd" is the closest option for the CPAN meta-data.