Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
enabling gras_stub_generator to take more than one deployment file as an
[simgrid.git] / tools / platform_generation / AlvinMisc.pm
1 #!/usr/bin/perl -w
2 package AlvinMisc;
3 use strict;
4 #require 5.005_64;
5 #our($VERSION, @EXPORT_OK, @ISA);
6 use Carp;
7 use Symbol;
8 use SelectSaver;
9 use IO ();      # Load the XS module
10 use IO::Handle;
11 use English;
12 require Exporter;
13 use vars qw($VERSION @ISA @EXPORT_OK);
14 @ISA = qw(Exporter);
15
16 $VERSION = "1.21";
17
18 @EXPORT_OK = qw(
19    host
20    sys_arch   
21
22    min
23    max
24    beep
25    approx
26
27    melange
28    alea_gaussien
29    random
30    canonical_name
31 );
32
33 our($canonical_name);
34 sub set_canonical_name {
35     $canonical_name=$PROCESS_ID.host();
36 #    $canonical_name="4279moby";
37 }
38
39 ############# 
40 # These subroutines determine hostnames, archs, ...
41 #
42 sub host() {
43     my($un);
44     $un=`uname -n`; chomp($un);
45     return $un;
46 }
47
48 sub sys_arch() {
49     my($us,$ur,$up);
50     $us = `uname -s`; chomp($us);
51     $ur = `uname -r`; chomp($ur);
52     $up = `uname -p`; chomp($up);
53     return $us."-".$ur."-".$up;
54 }
55
56 sub moyenne {
57     my($moy)=0;
58
59     if(scalar(@_)==0) {return $moy;}
60     foreach (@_) {
61         $moy+=$_;
62     }
63     $moy/=scalar(@_);
64     return $moy;
65 }
66
67 #############
68 # min
69 #
70 sub min {
71     my $min = shift;
72     foreach (@_) { $min = $_ if $_ < $min; }
73     $min;
74 }
75
76 #############
77 # max   
78 #
79 sub max {
80     my $max = shift;
81     foreach (@_) { $max = $_ if $_ > $max; }
82     $max;
83 }
84
85
86 #############
87 # beep !!
88 #
89 sub beep{
90   print STDOUT "\a";
91   return;
92 }
93
94 #############
95 # approx
96 #
97 sub approx{
98   my($number) = shift;
99   my($e);
100
101   $e = int($number);
102   if (($number-$e) < 0.5) {
103     return $e;
104   } else {
105     return ($e+1);
106   }
107 }
108
109 ######################## fonctions alĂ©atoires diverses #############################
110
111 sub melange {
112     my $tableau=shift;
113     my($i,$j);
114     
115     for($i = @$tableau ; --$i; ) {
116         $j = int rand ($i+1);
117         next if $i==$j;
118         @$tableau[$i,$j] = @$tableau[$j,$i];
119     }
120 }
121
122 sub alea_gaussien {
123     my($u1,$u2);
124     my $w;
125     my($g1, $g2);
126
127     do {
128         $u1 = 2*rand() -1;
129         $u2 = 2*rand() -1;
130         $w = $u1*$u1 + $u2*$u2 ;
131     } while ( $w >=1 || $w==0 );
132
133     $w = sqrt ( (-2*log($w))/$w );
134     $g2 = $u1 * $w;
135     $g1 = $u2 * $w;
136     return($g1);    
137 }
138
139 sub random {
140     my($min,$max)=@_;
141     return ($min+rand($max-$min));
142 }
143
144
145 srand;
146
147 set_canonical_name;
148   
149 1;