]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blobdiff - lib/Sub/Nary.pm
Rewrite scale in XS
[perl/modules/Sub-Nary.git] / lib / Sub / Nary.pm
index aa2fc87359590e8ba275516f0f084291d8b90d4f..d5a96452a1418f7a0e3382d3e9c32d7ae33151f9 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use warnings;
 
 use Carp qw/croak/;
-use List::Util qw/reduce sum/;
+use List::Util qw/reduce/;
 
 use B qw/class ppname svref_2object OPf_KIDS/;
 
@@ -178,62 +178,6 @@ sub name ($) {
  $n eq 'null' ? substr(ppname($_[0]->targ), 3) : $n
 }
 
-sub zero ($) {
- my $r = $_[0];
- return 1 unless defined $r;
- return $r eq '0' unless ref $r;
- return $r->{0} and 1 == scalar keys %$r;
-}
-
-sub list ($) {
- my $r = $_[0];
- return 0 unless defined $r;
- return $r eq 'list' unless ref $r;
- return $r->{list} and 1 == scalar keys %$r;
-}
-
-sub count ($) {
- my $r = $_[0];
- return 0 unless defined $r;
- return 1 unless ref $r;
- sum values %$r;
-}
-
-sub normalize ($) {
- my $r = $_[0];
- return unless defined $r;
- return { 0 => 1 } unless keys %$r;
- my $total = count $r;
- return { map { $_ => $r->{$_} / $total } keys %$r };
-}
-
-sub scale {
- my ($c, $r) = @_;
- return unless defined $r;
- return (ref $r) ? { map { $_ => $r->{$_} * $c } keys %$r } : { $r => $c };
-}
-
-sub combine {
- reduce {{
-  my %res;
-  my $la = delete $a->{list};
-  my $lb = delete $b->{list};
-  if (defined $la || defined $lb) {
-   $la ||= 0;
-   $lb ||= 0;
-   $res{list} = $la + $lb - $la * $lb;
-  }
-  while (my ($ka, $va) = each %$a) {
-   $ka = int $ka;
-   while (my ($kb, $vb) = each %$b) {
-    my $key = $ka + int $kb;
-    $res{$key} += $va * $vb;
-   }
-  }
-  \%res
- }} map { (ref) ? $_ : { $_ => 1 } } grep defined, @_;
-}
-
 sub power {
  my ($p, $n, $c) = @_;
  return unless defined $p;