sub add {
my ($self, $delta) = @_;
if (ref $delta) {
if (UNIVERSAL::isa($delta,
ref $self)) {
$self->{num} = $self->{num}
* $delta->{den}
+ $delta->{num}
* $self->{den};
$self->{den} = $self->{den}
* $delta->{den};
} else {
croak "Can't add a ",
ref $l, " to a ", ref $l;
}
} else {
if ($delta =~ m|(\d+)/(\d+)|) {
$self->add(Number::Fraction->new($1, $2));
} elsif ($delta !~ /\D/) {
$self->add(Number::Fraction->new($delta, 1));
} else {
croak "Can't add $delta to a ", ref $1;
}
}
$self->normalise;
}
[Title Page]
[TOC]
[Prev]
[Next]
Page 14 of 31