Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include <fvar.hpp>
00012
00013 #ifdef __TURBOC__
00014 #pragma hdrstop
00015 #include <iostream.h>
00016 #endif
00017
00018 #ifdef __ZTC__
00019 #include <iostream.hpp>
00020 #endif
00021
00022 #include <math.h>
00023
00024 double auto_rand(long int& idum, int reset);
00025 void reinitialize_auto_rand();
00026 double randn(long int& n);
00027
00032 void dvar_vector::fill_randu(long int& n)
00033 {
00034 long int nn;
00035 RETURN_ARRAYS_INCREMENT();
00036 nn=n;
00037 for (int i=indexmin(); i<=indexmax(); i++)
00038 {
00039 elem(i)=auto_rand(nn,1);
00040 }
00041 reinitialize_auto_rand();
00042 RETURN_ARRAYS_DECREMENT();
00043 }
00044
00049 void dvar_vector::fill_randbi(long int& n, double p)
00050 {
00051 if ( p<0 || p>1)
00052 {
00053 cerr << "Error in dvar_vector::fill_randbi proportions of"
00054 " successes must lie between 0 and 1\n";
00055 ad_exit(1);
00056 }
00057 long int nn;
00058 RETURN_ARRAYS_INCREMENT();
00059 nn=n;
00060 for (int i=indexmin(); i<=indexmax(); i++)
00061 {
00062 if (auto_rand(nn,1)<=p)
00063 {
00064 elem(i)=1.;
00065 }
00066 else
00067 {
00068 elem(i)=0.;
00069 }
00070 }
00071 reinitialize_auto_rand();
00072 RETURN_ARRAYS_DECREMENT();
00073 }
00074
00079 void dvar_matrix::colfill_randu(const int &j, long int &n)
00080 {
00081 long int nn;
00082 RETURN_ARRAYS_INCREMENT();
00083 nn=n;
00084 for (int i=rowmin(); i<=rowmax(); i++)
00085 {
00086 elem(i,j)=auto_rand(nn,1);
00087 }
00088 reinitialize_auto_rand();
00089 RETURN_ARRAYS_DECREMENT();
00090 }
00091
00096 void dvar_matrix::rowfill_randu(const int& i, long int& n)
00097 {
00098 long int nn;
00099 RETURN_ARRAYS_INCREMENT();
00100 nn=n;
00101 for (int j=colmin(); j<=colmax(); j++)
00102 {
00103 elem(i,j)=auto_rand(nn,1);
00104 }
00105 RETURN_ARRAYS_DECREMENT();
00106 reinitialize_auto_rand();
00107 }
00108
00113 void dvar_vector::fill_randn(long int& n)
00114 {
00115 long int nn;
00116 RETURN_ARRAYS_INCREMENT();
00117 nn=n;
00118 for (int i=indexmin(); i<=indexmax(); i++)
00119 {
00120 elem(i)=randn(nn);
00121 }
00122 reinitialize_auto_rand();
00123 RETURN_ARRAYS_DECREMENT();
00124 }
00125
00130 void dvar_matrix::colfill_randn(const int &j, long int &n)
00131 {
00132 long int nn;
00133 RETURN_ARRAYS_INCREMENT();
00134 nn=n;
00135 for (int i=rowmin(); i<=rowmax(); i++)
00136 {
00137 elem(i,j)=randn(nn);
00138 }
00139 reinitialize_auto_rand();
00140 RETURN_ARRAYS_DECREMENT();
00141 }
00142
00147 void dvar_matrix::rowfill_randn(const int& i, long int& n)
00148 {
00149 long int nn;
00150 RETURN_ARRAYS_INCREMENT();
00151 nn=n;
00152 for (int j=colmin(); j<=colmax(); j++)
00153 {
00154 elem(i,j)=randn(nn);
00155 }
00156 reinitialize_auto_rand();
00157 RETURN_ARRAYS_DECREMENT();
00158 }
00159
00164 void dvar_matrix::fill_randn(long int& n)
00165 {
00166 long int nn=n;
00167 RETURN_ARRAYS_INCREMENT();
00168 for (int i=rowmin(); i<=rowmax(); i++)
00169 {
00170 elem(i).fill_randn_ni(nn);
00171 nn+=2;
00172 }
00173 reinitialize_auto_rand();
00174 RETURN_ARRAYS_DECREMENT();
00175 }
00176
00181 void dvar_matrix::fill_randu(long int& n)
00182 {
00183 long int nn=n;
00184 RETURN_ARRAYS_INCREMENT();
00185 for (int i=rowmin(); i<=rowmax(); i++)
00186 {
00187 elem(i).fill_randn_ni(nn);
00188 nn+=2;
00189 }
00190 reinitialize_auto_rand();
00191 RETURN_ARRAYS_DECREMENT();
00192 }
00193
00198 void dvar3_array::fill_randn(long int& n)
00199 {
00200 long int nn;
00201 nn=n;
00202 for (int i=slicemin(); i<=slicemax(); i++)
00203 {
00204 elem(i).fill_randn_ni(nn);
00205 nn+=2;
00206 }
00207 reinitialize_auto_rand();
00208 }
00209
00214 void dvar3_array::fill_randu(long int& n)
00215 {
00216 long int nn;
00217 nn=n;
00218 for (int i=slicemin(); i<=slicemax(); i++)
00219 {
00220 elem(i).fill_randu_ni(nn);
00221 nn+=2;
00222 }
00223 reinitialize_auto_rand();
00224 }