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__ |