Statistiques
| Branche: | Révision :

meplib / binaries / bin / createVandermonde.pl @ master

Historique | Voir | Annoter | Télécharger (4,52 ko)

1 08aa5d9e Serge Torres
#! /usr/bin/perl
2 08aa5d9e Serge Torres
3 08aa5d9e Serge Torres
# createVandermonde.pl - ST - 2005-06-21
4 08aa5d9e Serge Torres
5 08aa5d9e Serge Torres
# COMMAND LINE SYNTAX:
6 08aa5d9e Serge Torres
# createVandermonde.pl lowerBound upperBound degree
7 08aa5d9e Serge Torres
8 08aa5d9e Serge Torres
# NOTE(S):
9 08aa5d9e Serge Torres
# 
10 08aa5d9e Serge Torres
# This program emulates the behaviour of the vander function of Matlab.
11 08aa5d9e Serge Torres
12 08aa5d9e Serge Torres
##############################################################################
13 08aa5d9e Serge Torres
# PROGRAM DECLARATIONS
14 08aa5d9e Serge Torres
##############################################################################
15 08aa5d9e Serge Torres
16 08aa5d9e Serge Torres
BEGIN
17 08aa5d9e Serge Torres
{
18 08aa5d9e Serge Torres
  # Modify @INC here if necessary
19 08aa5d9e Serge Torres
  push(@INC,"../utils");
20 08aa5d9e Serge Torres
  push(@INC,"../utils/vandermonde");
21 08aa5d9e Serge Torres
	
22 08aa5d9e Serge Torres
};
23 08aa5d9e Serge Torres
24 08aa5d9e Serge Torres
# core modules
25 08aa5d9e Serge Torres
use strict; # must be first to force strict in all others
26 08aa5d9e Serge Torres
use Carp;
27 08aa5d9e Serge Torres
use Getopt::Long;
28 08aa5d9e Serge Torres
use Math::BigFloat;
29 08aa5d9e Serge Torres
use Math::BigRat;
30 08aa5d9e Serge Torres
31 08aa5d9e Serge Torres
# custom modules
32 08aa5d9e Serge Torres
# Uncomment if you want to use standard exit error codes.
33 08aa5d9e Serge Torres
# the stdExitErrors.pm file must be available around.
34 08aa5d9e Serge Torres
use stdExitErrors;
35 08aa5d9e Serge Torres
use Vandermonde qw(:BASIC);
36 08aa5d9e Serge Torres
use Matrix qw(:BASIC);
37 08aa5d9e Serge Torres
38 08aa5d9e Serge Torres
##############################################################################
39 08aa5d9e Serge Torres
# PROGRAM CONSTANT DECLARATIONS
40 08aa5d9e Serge Torres
##############################################################################
41 08aa5d9e Serge Torres
my @test = (1,2,10);
42 08aa5d9e Serge Torres
43 08aa5d9e Serge Torres
##############################################################################
44 08aa5d9e Serge Torres
# PROGRAM VARIABLE DECLARATIONS
45 08aa5d9e Serge Torres
##############################################################################
46 08aa5d9e Serge Torres
my $stringVectorRef = [];
47 08aa5d9e Serge Torres
my $generatorVectorRef;
48 08aa5d9e Serge Torres
my $matrixRef;
49 08aa5d9e Serge Torres
50 08aa5d9e Serge Torres
##############################################################################
51 08aa5d9e Serge Torres
# TEST ENVIRONMENT AND CONFIGURATION VARIABLES
52 08aa5d9e Serge Torres
##############################################################################
53 08aa5d9e Serge Torres
54 08aa5d9e Serge Torres
##############################################################################
55 08aa5d9e Serge Torres
# INITIALIZE DEBUG FILE
56 08aa5d9e Serge Torres
##############################################################################
57 08aa5d9e Serge Torres
58 08aa5d9e Serge Torres
##############################################################################
59 08aa5d9e Serge Torres
# INITIALIZE LOG FILE
60 08aa5d9e Serge Torres
##############################################################################
61 08aa5d9e Serge Torres
62 08aa5d9e Serge Torres
##############################################################################
63 08aa5d9e Serge Torres
# GET COMMAND LINE ARGUMENTS
64 08aa5d9e Serge Torres
##############################################################################
65 08aa5d9e Serge Torres
66 08aa5d9e Serge Torres
##############################################################################
67 08aa5d9e Serge Torres
# PROGRAM MAIN
68 08aa5d9e Serge Torres
##############################################################################
69 08aa5d9e Serge Torres
&usage();
70 08aa5d9e Serge Torres
$generatorVectorRef = &generatorVectorFromBoundsAndDegreeRat($stringVectorRef);
71 08aa5d9e Serge Torres
$matrixRef = createVanderMatrixRat($generatorVectorRef);
72 08aa5d9e Serge Torres
print STDERR "\n";
73 08aa5d9e Serge Torres
printMatrix($matrixRef, *STDOUT);
74 08aa5d9e Serge Torres
print STDERR "\n";
75 08aa5d9e Serge Torres
print STDERR "\n";
76 08aa5d9e Serge Torres
# Uncomment this line and remove the next one if using stdExitErrors.
77 08aa5d9e Serge Torres
exit($EX_OK); # exit main program
78 08aa5d9e Serge Torres
79 08aa5d9e Serge Torres
##############################################################################
80 08aa5d9e Serge Torres
# PROGRAM SUBS
81 08aa5d9e Serge Torres
##############################################################################
82 08aa5d9e Serge Torres
##############################################################################
83 08aa5d9e Serge Torres
# sub mySub
84 08aa5d9e Serge Torres
##############################################################################
85 08aa5d9e Serge Torres
# Performed task:
86 08aa5d9e Serge Torres
#
87 08aa5d9e Serge Torres
# input   :
88 08aa5d9e Serge Torres
# output  :
89 08aa5d9e Serge Torres
# globals :
90 08aa5d9e Serge Torres
#
91 08aa5d9e Serge Torres
sub mySub {
92 08aa5d9e Serge Torres
  my ($someParameter) = @_;
93 08aa5d9e Serge Torres
  if (! defined($someParameter))
94 08aa5d9e Serge Torres
  {
95 08aa5d9e Serge Torres
    my @call_info = caller(0);
96 08aa5d9e Serge Torres
    print "\n\n", $call_info[3], " missing parameter. Aborting program!\n\n";
97 08aa5d9e Serge Torres
    # Uncomment this line and remove the next one if using stdExitErrors.
98 08aa5d9e Serge Torres
    #exit($EX_SOFTWARE);
99 08aa5d9e Serge Torres
    exit(1);
100 08aa5d9e Serge Torres
  }
101 08aa5d9e Serge Torres
} # End mySub
102 08aa5d9e Serge Torres
##############################################################################
103 08aa5d9e Serge Torres
# sub $retv = _privateSubName($argv)
104 08aa5d9e Serge Torres
##############################################################################
105 08aa5d9e Serge Torres
106 08aa5d9e Serge Torres
sub _privateSubName
107 08aa5d9e Serge Torres
{
108 08aa5d9e Serge Torres
	my $argv = shift();
109 08aa5d9e Serge Torres
	my $retv = undef;
110 08aa5d9e Serge Torres
	return($retv);
111 08aa5d9e Serge Torres
};
112 08aa5d9e Serge Torres
#
113 08aa5d9e Serge Torres
##############################################################################
114 08aa5d9e Serge Torres
# sub usage
115 08aa5d9e Serge Torres
##############################################################################
116 08aa5d9e Serge Torres
# Performed task: checks the command line parameters
117 08aa5d9e Serge Torres
#
118 08aa5d9e Serge Torres
# input   : none
119 08aa5d9e Serge Torres
# output  : none
120 08aa5d9e Serge Torres
# globals : $ARGV,others...
121 08aa5d9e Serge Torres
#
122 08aa5d9e Serge Torres
sub usage {
123 08aa5d9e Serge Torres
  if (! defined($ARGV[2]))
124 08aa5d9e Serge Torres
  {
125 08aa5d9e Serge Torres
    my $scriptName = `basename $0`;
126 08aa5d9e Serge Torres
    chomp $scriptName;
127 08aa5d9e Serge Torres
    print STDERR "\n\nUsage : $scriptName lowerBound upperBound degree\n\n";
128 08aa5d9e Serge Torres
    print STDERR "  - lowerBound: the lower bound for the Vandermonde matrix;\n";
129 08aa5d9e Serge Torres
    print STDERR "  - upperBound: the upper bound for the Vandermonde matrix;\n";
130 08aa5d9e Serge Torres
    print STDERR "  - degree    : the degree for the Vandermonde matrix.\n\n";
131 08aa5d9e Serge Torres
    # Uncomment this line and remove the next one if using stdExitErrors.
132 08aa5d9e Serge Torres
    exit($EX_USAGE);
133 08aa5d9e Serge Torres
  } # End if
134 08aa5d9e Serge Torres
# Some initializations 
135 08aa5d9e Serge Torres
$ARGV[0] =~ s/"//g;
136 08aa5d9e Serge Torres
push(@$stringVectorRef, $ARGV[0]);
137 08aa5d9e Serge Torres
$ARGV[1] =~ s/"//g;
138 08aa5d9e Serge Torres
push(@$stringVectorRef, $ARGV[1]);
139 08aa5d9e Serge Torres
$ARGV[2] =~ s/"//g;
140 08aa5d9e Serge Torres
push(@$stringVectorRef, $ARGV[2]);
141 08aa5d9e Serge Torres
} # End usage
142 08aa5d9e Serge Torres
143 08aa5d9e Serge Torres
144 08aa5d9e Serge Torres
__END__