view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/QuineMcCluskey.pm view on Meta::CPAN
return [ reverse sort @prefix ] unless (keys %primes);
#
# Find a term (there may be more than one) that has the least
# number of prime implicants covering it, and a list of those
# prime implicants. Use that list to figure out the best set
# to cover the rest of the terms.
#
##### recurse_solve() Primes after loop
##### primes: "\n" . chart(\%primes, $self->width)
#
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/RabinKarp.pm view on Meta::CPAN
The results of this hash encodes information about the next k values in
the stream (hense k-gram.) This means for any given stream of length n
integer values (or characters), you will get back n - k + 1 hash
values.
For best results, you will want to create a code generator that filters
your data to remove all unnecessary information. For example, in a large
english document, you should probably remove all white space, as well
as removing all capitalization.
=head1 INTENT
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/RectanglesContainingDot.pm view on Meta::CPAN
$div = $div->[(($dir eq 'x') ? ($x <= $div->[3]) : ($y <= $div->[3])) ? 1 : 2];
}
}
sub _find_best_div {
my ($dr, $rects, $off) = @_;
my @v0 = map { @{$rects}[$_*4+$off] } @$dr;
my @v1 = map { @{$rects}[$_*4+2+$off] } @$dr;
@v0 = sort { $a <=> $b } @v0;
@v1 = sort { $a <=> $b } @v1;
my $med = 0.5 * @$dr;
my $op = 0;
my $cl = 0;
my $best = @$dr * @$dr;
my $bestv;
# my ($bestop, $bestcl);
while (@v0 and @v1) {
my $v = ($v0[0] <= $v1[0]) ? $v0[0] : $v1[0];
while (@v0 and $v0[0] == $v) {
$op++;
shift @v0;
lib/Algorithm/RectanglesContainingDot.pm view on Meta::CPAN
my $l = $op - $med;
my $r = @$dr - $cl - $med;
my $good = $l * $l + $r * $r;
#{ no warnings; print STDERR "med: $med, op: $op, cl: $cl, good: $good, best: $best, bestv: $bestv\n"; }
if ($good < $best) {
$best = $good;
$bestv = $v;
# $bestop = $op;
# $bestcl = $cl;
}
}
# print "off: $off, best: $best, bestv: $bestv, bestop: $bestop, bestcl: $bestcl, size-bestcl: ".(@$dr-$bestcl)."\n";
return ($best, $bestv);
}
sub _divide_rects {
my ($div, $rects) = @_;
my $dr = $div->[4];
return $div->[0] = 'n' if (@$dr <= $MIN_DIV);
my $bestreq = 0.24 * @$dr * @$dr;
my ($bestx, $bestxx) = _find_best_div($dr, $rects, 0);
my ($besty, $bestyy) = ($bestx == 0) ? 1 : _find_best_div($dr, $rects, 1);
# print "bestx: $bestx, bestxx: $bestxx, besty: $besty, bestyy: $bestyy, bestreq: $bestreq\n";
if ($bestx < $besty) {
if ($bestx < $bestreq) {
@{$div}[1,2] = _part_rects($dr, $rects, $bestxx, 0);
$div->[3] = $bestxx;
pop @$div;
return $div->[0] = 'x';
}
}
else {
if ($besty < $bestreq) {
@{$div}[1,2] = _part_rects($dr, $rects, $bestyy, 1);
$div->[3] = $bestyy;
pop @$div;
return $div->[0] = 'y';
}
}
return $div->[0] = 'n';
}
sub _part_rects {
my ($dr, $rects, $bestv, $off) = @_;
my (@l, @r);
for (@$dr) {
push @l, $_ if ($bestv >= $rects->[$_ * 4 + $off]);
push @r, $_ if ($bestv < $rects->[$_ * 4 + $off + 2]);
}
# print "off: $off, left: ".scalar(@l).", right: ".scalar(@r)."\n";
return ([undef, undef, undef, undef, \@l],
[undef, undef, undef, undef, \@r])
}
view all matches for this distribution
view release on metacpan or search on metacpan
RectanglesContainingDot_XS.xs view on Meta::CPAN
return algo->div = div;
}
double
find_best_cut(pTHX_ struct rectangle **rects, int size, int dir,
double *bestv, int *sizel, int *sizer) {
double **v0, **v1, **vc0, **vc1;
double v, med, best;
int op, cl;
int i;
my_assert(bestv);
my_assert(sizel);
my_assert(sizer);
Newy(v0, size + 1, double *);
Newy(v1, size + 1, double *);
RectanglesContainingDot_XS.xs view on Meta::CPAN
sort_inplace(aTHX_ v0, size);
sort_inplace(aTHX_ v1, size);
op = cl = 0;
med = 0.5 * size;
best = (double)size * (double)size;
my_assert(best >= 0);
while (*v0 && *v1) {
double v, good;
double l, r;
RectanglesContainingDot_XS.xs view on Meta::CPAN
r = size - cl - med;
good = (double)l * (double)l + (double)r * (double)r;
my_assert(good >= 0);
if (good < best) {
best = good;
*bestv = v;
*sizel = op;
*sizer = size - cl;
}
}
Safefry(vc0);
Safefry(vc1);
return best;
}
void
part_division(pTHX_ struct rectangle **rects, int size,
double cut, int dir,
RectanglesContainingDot_XS.xs view on Meta::CPAN
my_assert(div);
size = div->size;
if (size > MIN_DIVISION) {
struct rectangle **rects = div->rects;
double bestreq = 0.24 * size * size;
double bestx, bestxx, besty, bestyy;
int sizelx, sizerx, sizely, sizery;
bestx = find_best_cut(aTHX_ rects, size, 'x', &bestxx, &sizelx, &sizerx);
if (bestx > 0)
besty = find_best_cut(aTHX_ rects, size, 'y', &bestyy, &sizely, &sizery);
else
besty = 1;
if (bestx < besty) {
if (bestx < bestreq) {
// fprintf(stderr, "bestx: %f, bestreq: %f\n", bestx, bestreq);
part_division(aTHX_ rects, size, bestxx, 'x', &(div->left), sizelx, &(div->right), sizerx);
div->cut = bestxx;
Safefry(div->rects);
div->rects = NULL;
return div->dir = 'x';
}
}
else {
if (besty < bestreq) {
// fprintf(stderr, "besty: %f, bestreq: %f\n", besty, bestreq);
part_division(aTHX_ rects, size, bestyy, 'y', &(div->left), sizely, &(div->right), sizery);
div->cut = bestyy;
Safefry(div->rects);
div->rects = NULL;
return div->dir = 'y';
}
}
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
-------
If you find a bug, please report it to the author along with the
following information:
* version of Perl (output of 'perl -V' is best)
* version of Algorithm::SVM
* operating system type and version
* exact text of error message or description of problem
* example model files/data being classified
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/SVMLight.pm view on Meta::CPAN
-- http://svmlight.joachims.org/
=back
Support Vector Machines in general, and SVMLight specifically,
represent some of the best-performing Machine Learning approaches in
domains such as text categorization, image recognition, bioinformatics
string processing, and others.
For efficiency reasons, the underlying SVMLight engine indexes features by integers, not
strings. Since features are commonly thought of by name (e.g. the
lib/Algorithm/SVMLight.pm view on Meta::CPAN
=item predict(attributes => \%y)
After C<train()> has been called, the model may be applied to
previously-unseen combinations of attributes. The C<predict()> method
accepts an C<attributes> parameter just like C<add_instance()>, and
returns its best prediction of the label that would apply to the given
attributes. The sign of the returned label (positive or negative)
indicates whether the new instance is considered a positive or
negative instance, and the magnitude of the label corresponds in some
way to the confidence with which the model is making that assertion.
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/SpatialIndex/Strategy/MedianQuadTree.pm view on Meta::CPAN
tree if the distribution of data is very different from uniformity. If in doubt,
benchmark.
=item *
If the data is uniform but inserted in random order, the MQT will at best be
equal in performance to a quad tree.
=item *
Filling a dynamically growing MQT has slightly more overhead than filling a dynamically
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/SpiralSearch.pm view on Meta::CPAN
my $y_inc = $grad_y[1] - $grad_y[0];
my $maximize = $max_or_min =~ /^\s*MIN\s*$/i ? -1 : 1;
my $ret_val = 0;
my $new_ret_val = 0;
my $theta = 0;
my $best_x = 0;
my $best_y = 0;
my $out_of_bounds = 0;
# Increase the radius of the search by the following factor
# if a better function evaluation is not found.
my $rad_inc = 1.2;
lib/Algorithm/SpiralSearch.pm view on Meta::CPAN
} else {
$nrv_ary[$t-1] = 0;
}
}
# Find the best return value and its corresponding input coordinates.
{
my $m = 0;
for (my $i = 0; $i < @nrv_ary; $i++) {
if ($maximize * $nrv_ary[$i] >= $maximize * $m) {
$best_x = $x[$i];
$best_y = $y[$i];
$m = $nrv_ary[$i];
}
}
}
return($best_x, $best_y);
}
1;
__END__
view all matches for this distribution
view release on metacpan or search on metacpan
#ifndef IVSIZE
# ifdef LONGSIZE
# define IVSIZE LONGSIZE
# else
# define IVSIZE 4 /* A bold guess, but the best we can make. */
# endif
#endif
#ifndef UVTYPE
# define UVTYPE unsigned IVTYPE
#endif
#ifndef PERL_MAGIC_ext
# define PERL_MAGIC_ext '~'
#endif
/* That's the best we can do... */
#ifndef sv_catpvn_nomg
# define sv_catpvn_nomg sv_catpvn
#endif
#ifndef sv_catsv_nomg
view all matches for this distribution
view release on metacpan or search on metacpan
#ifndef IVSIZE
# ifdef LONGSIZE
# define IVSIZE LONGSIZE
# else
# define IVSIZE 4 /* A bold guess, but the best we can make. */
# endif
#endif
#ifndef UVTYPE
# define UVTYPE unsigned IVTYPE
#endif
#ifndef PERL_MAGIC_ext
# define PERL_MAGIC_ext '~'
#endif
/* That's the best we can do... */
#ifndef sv_catpvn_nomg
# define sv_catpvn_nomg sv_catpvn
#endif
#ifndef sv_catsv_nomg
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/TicketClusterer.pm view on Meta::CPAN
When this parameter is set, the module prints out information regarding what columns
of the spreadsheet it is extracting information from, the headers for those columns,
the index of the column that contains the textual content of the tickets, and of the
column that contains the unique integer identifier for each ticket. If you are
dealing with spreadsheets with a large number of tickets, it is best to pipe the
output of the module into a file to see the debugging information.
=item I<debug2:>
When this parameter is set, you will see how WordNet is being utilized to generate
lib/Algorithm/TicketClusterer.pm view on Meta::CPAN
=back
=head1 HOW THE MATCHING TICKETS ARE RETRIEVED
It is the method C<retrieve_similar_tickets_with_vsm()> that returns the best ticket
matches for a given query ticket. What this method returns is a hash reference; the
keys in this hash are the integer IDs of the matching tickets and the values the
cosine similarity distance between the query ticket and the matching tickets. The
number of matching tickets returned by C<retrieve_similar_tickets_with_vsm()> is set
by the constructor parameter C<how_many_retrievals>. Note that
lib/Algorithm/TicketClusterer.pm view on Meta::CPAN
By a production-quality tool, I mean a software package that you can I<actually> use
in a production environment for automated or semi-automated ticket routing in your
organization. I am assuming you already have the tools in place that insert in
real-time the new tickets in an Excel spreadsheet.
Turning this module into a production tool will require that you find the best values
to use for the following three parameters that are needed by the constructor: (1)
C<min_idf_threshold> for the minimum C<idf> value for the words in a query ticket in
order for them to be considered for matching with the other tickets; (2)
C<min_word_length> for discarding words that are too short; and (3)
C<max_num_syn_words> for how many synonyms to retain for a word if the number of
synonyms returned by WordNet is too large. In addition, you must also come up with a
misspelled-words file that is appropriate to your application domain and a stop-words
file.
In order to find the best values to use for the parameters that are mentioned above,
I suggest creating a graphical front-end for this module that would allow for
altering the values of the three parameters listed above in response to the
prevailing mis-routing rates for the tickets. The front-end will display to an
operator the latest ticket that needs to be routed and a small set of the
best-matching previously routed tickets as returned by this module. Used either in a
fully-automated mode or a semi-automated mode, this front-end would contain a
feedback recorder that would keep track of mis-routed tickets --- the mis-routed
tickets would presumably bounce back to the central operator monitoring the
front-end. The front-end display could be equipped with slider controls for altering
the values used for the three parameters. Obviously, as a parameter is changed, some
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/Toy/HashSC.pm view on Meta::CPAN
=head1 BUGS
=head2 Reporting Bugs
Bugs, patches, and whatnot might best be applied towards:
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Toy-HashSC>
L<https://github.com/thrig/Algorithm-Toy-HashSC>
view all matches for this distribution
view release on metacpan or search on metacpan
Algorithm/TrunkClassifier/ppport.h view on Meta::CPAN
#ifndef IVSIZE
# ifdef LONGSIZE
# define IVSIZE LONGSIZE
# else
# define IVSIZE 4 /* A bold guess, but the best we can make. */
# endif
#endif
#ifndef UVTYPE
# define UVTYPE unsigned IVTYPE
#endif
Algorithm/TrunkClassifier/ppport.h view on Meta::CPAN
#ifndef PERL_MAGIC_ext
# define PERL_MAGIC_ext '~'
#endif
/* That's the best we can do... */
#ifndef sv_catpvn_nomg
# define sv_catpvn_nomg sv_catpvn
#endif
#ifndef sv_catsv_nomg
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/VSM.pm view on Meta::CPAN
## in order for the latter to be considered relevant is
## determined by the relevancy_threshold parameter in the VSM
## constructor. (See the relevancy and precision-recall related
## scripts in the 'examples' directory.) The reason for why the
## function shown below is not for serious work is because
## ultimately it is the humans who are the best judges of the
## relevancies of documents to queries. The humans bring to
## bear semantic considerations on the relevancy determination
## problem that are beyond the scope of this module.
sub estimate_doc_relevancies {
lib/Algorithm/VSM.pm view on Meta::CPAN
vector will be C<V> and size of the term-frequency matrix for the entire corpus will
be C<V>xC<M>. So if you were to duplicate the bug localization experiments in
L<http://portal.acm.org/citation.cfm?id=1985451> you would be dealing with vectors of
size 7553 and a term-frequency matrix of size 7553x6546. Extrapolating these numbers
to really large libraries/corpora, we are obviously talking about very large matrices
for SVD decomposition. For large libraries/corpora, it would be best to store away
the model in a disk file and to base all subsequent retrievals on the disk-stored
models. The 'examples' directory contains scripts that carry out retrievals on the
basis of disk-based models. Further speedup in retrieval can be achieved by using
LSA to create reduced-dimensionality representations for the documents and by basing
retrievals on the stored versions of such reduced-dimensionality representations.
lib/Algorithm/VSM.pm view on Meta::CPAN
This module includes methods that allow you to carry out these retrieval accuracy
measurements using the relevancy judgments supplied through a disk file. If
human-supplied relevancy judgments are not available, the module will be happy to
estimate relevancies for you just by determining the number of query words that exist
in a document. Note, however, that relevancy judgments estimated in this manner
cannot be trusted. That is because ultimately it is the humans who are the best
judges of the relevancies of documents to queries. The humans bring to bear semantic
considerations on the relevancy determination problem that are beyond the scope of
this module.
lib/Algorithm/VSM.pm view on Meta::CPAN
contains several of the query words. As to the minimum number of query words that
must exist in a document in order for the latter to be considered relevant, that is
determined by the C<relevancy_threshold> parameter in the VSM constructor.
But note that this estimation of document relevancies to queries is NOT for serious
work. The reason for that is because ultimately it is the humans who are the best
judges of the relevancies of documents to queries. The humans bring to bear semantic
considerations on the relevancy determination problem that are beyond the scope of
this module.
The generated relevancies are deposited in a file named by the constructor parameter
lib/Algorithm/VSM.pm view on Meta::CPAN
which in most cases would not be a safe thing to do.
=item B<For Precision and Recall Calculations for VSM with
Human-Supplied Relevancies:>
Precision and recall calculations for retrieval accuracy determination are best
carried out with human-supplied judgments of relevancies of the documents to queries.
If such judgments are available, run the script:
calculate_precision_and_recall_from_file_based_relevancies_for_VSM.pl
view all matches for this distribution
view release on metacpan or search on metacpan
t/Relativity.test view on Meta::CPAN
direction according to the theory of relativity. The question now
arises as to which of these two theorems is the better in accord with
experience. On this point we axe enlightened by a most important
experiment which the brilliant physicist Fizeau performed more than
half a century ago, and which has been repeated since then by some of
the best experimental physicists, so that there can be no doubt about
its result. The experiment is concerned with the following question.
Light travels in a motionless liquid with a particular velocity w. How
quickly does it travel in the direction of the arrow in the tube T
(see the accompanying diagram, Fig. 3) when the liquid above
mentioned is flowing through the tube with a velocity v ?
t/Relativity.test view on Meta::CPAN
But if rods of every kind (i.e. of every material) were to behave in
the same way as regards the influence of temperature when they are on
the variably heated marble slab, and if we had no other means of
detecting the effect of temperature than the geometrical behaviour of
our rods in experiments analogous to the one described above, then our
best plan would be to assign the distance one to two points on the
slab, provided that the ends of one of our rods could be made to
coincide with these two points ; for how else should we define the
distance without our proceeding being in the highest measure grossly
arbitrary ? The method of Cartesian coordinates must then be
discarded, and replaced by another which does not assume the validity
t/Relativity.test view on Meta::CPAN
COSMOLOGICAL DIFFICULTIES OF NEWTON'S THEORY
Part from the difficulty discussed in Section 21, there is a second
fundamental difficulty attending classical celestial mechanics, which,
to the best of my knowledge, was first discussed in detail by the
astronomer Seeliger. If we ponder over the question as to how the
universe, considered as a whole, is to be regarded, the first answer
that suggests itself to us is surely this: As regards space (and time)
the universe is infinite. There are stars everywhere, so that the
density of matter, although very variable in detail, is nevertheless
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution
view release on metacpan or search on metacpan
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
view all matches for this distribution