AI-Fuzzy
view release on metacpan or search on metacpan
lib/AI/Fuzzy/Set.pm view on Meta::CPAN
}
sub core {
# returns the core set.
# defined as the set of all elements in our set with full membership
my $self = shift;
my (%core);
foreach my $member ($self->members) {
$core{$member}++ if ($self->membership($member) == 1);
}
return new AI::Fuzzy::Set(%core);
}
sub height {
# returns the height of the set
# defined as the maximal membership value in our set
my $self = shift;
my ($max) = 0;
foreach my $member ($self->members) {
$max = $self->membership($member) if ($self->membership($member) > $max);
}
return $max;
}
sub is_normal {
# Logical return
# normal is defined as a set with a height of 1
my $self = shift;
return 1 if ($self->height == 1);
return 0;
}
sub is_subnormal {
# Logical return
# normal is defined as a set with a height less than 1
my $self = shift;
return 1 if ($self->height < 1);
return 0;
}
sub as_string {
my $self = shift;
my @members;
foreach my $member ($self->members) {
push (@members, "$member/" . $self->membership($member) );
}
return join(', ', @members);
}
sub float_equal {
my ($A, $B, $dp) = @_;
# print sprintf("%.${dp}g", $A). " eq " . sprintf("%.${dp}g", $B) . "\n";
return sprintf("%.${dp}g", $A) eq sprintf("%.${dp}g", $B);
}
1;
( run in 1.002 second using v1.01-cache-2.11-cpan-39bf76dae61 )