ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
f1b2vc4.cpp
Go to the documentation of this file.
1 /*
2  * $Id$
3  *
4  * Author: David Fournier
5  * Copyright (c) 2008-2012 Regents of the University of California
6  */
11 #include <df1b2fun.h>
12 
18 {
21  int rmin=M.indexmin();
22  int rmax=M.indexmax();
23  df1b2matrix tmp(rmin,rmax);
24  for (int i=rmin;i<=rmax;i++)
25  {
26  int cmin=M(i).indexmin();
27  int cmax=M(i).indexmax();
28  tmp(i).allocate(cmin,cmax);
29  for (int j=cmin;j<=cmax;j++)
30  tmp(i,j)=M(i,j)+x;
31  }
32  return tmp;
33 }
34 
40 {
41  int rmin=indexmin();
42  int rmax=indexmax();
43  for (int i=rmin;i<=rmax;i++)
44  {
45  (*this)(i)/=x;
46  }
47  return (*this);
48 }
49 
55 {
56  int rmin=indexmin();
57  int rmax=indexmax();
58  for (int i=rmin;i<=rmax;i++)
59  {
60  (*this)(i)*=x;
61  }
62  return (*this);
63 }
64 
70 {
72  int rmin=indexmin();
73  int rmax=indexmax();
74  for (int i=rmin;i<=rmax;i++)
75  {
76  (*this)(i)/=x;
77  }
78  return (*this);
79 }
80 
86 {
88  int rmin=indexmin();
89  int rmax=indexmax();
90  for (int i=rmin;i<=rmax;i++)
91  {
92  (*this)(i)*=x;
93  }
94  return (*this);
95 }
96 
102 {
104  int rmin=M.indexmin();
105  int rmax=M.indexmax();
106  if (rmin != M.indexmin() || rmax != M.indexmax())
107  {
108  cerr << "Unequal shapes in"
109  " df1b2matrix& df1b2matrix::operator += (const df1b2matrix& _M)"
110  << endl;
111  ad_exit(1);
112  }
113  for (int i=rmin;i<=rmax;i++)
114  {
115  int cmin=(*this)(i).indexmin();
116  int cmax=(*this)(i).indexmax();
117  for (int j=cmin;j<=cmax;j++)
118  (*this)(i,j)+=M(i,j);
119  }
120  return (*this);
121 }
122 
128 {
130  int rmin=M.indexmin();
131  int rmax=M.indexmax();
132  if (rmin != M.indexmin() || rmax != M.indexmax())
133  {
134  cerr << "Unequal shapes in"
135  " df1b2matrix& df1b2matrix::operator -= (const df1b2matrix& _M)"
136  << endl;
137  ad_exit(1);
138  }
139  for (int i=rmin;i<=rmax;i++)
140  {
141  int cmin=(*this)(i).indexmin();
142  int cmax=(*this)(i).indexmax();
143  for (int j=cmin;j<=cmax;j++)
144  (*this)(i,j)-=M(i,j);
145  }
146  return (*this);
147 }
148 
153 df1b2matrix operator + (const df1b2matrix& _M,const double x)
154 {
156  int rmin=M.indexmin();
157  int rmax=M.indexmax();
158  df1b2matrix tmp(rmin,rmax);
159  for (int i=rmin;i<=rmax;i++)
160  {
161  int cmin=M(i).indexmin();
162  int cmax=M(i).indexmax();
163  tmp(i).allocate(cmin,cmax);
164  for (int j=cmin;j<=cmax;j++)
165  tmp(i,j)=M(i,j)+x;
166  }
167  return tmp;
168 }
169 
175 {
178  int rmin=M.indexmin();
179  int rmax=M.indexmax();
180  df1b2matrix tmp(rmin,rmax);
181  for (int i=rmin;i<=rmax;i++)
182  {
183  int cmin=M(i).indexmin();
184  int cmax=M(i).indexmax();
185  tmp(i).allocate(cmin,cmax);
186  for (int j=cmin;j<=cmax;j++)
187  tmp(i,j)=M(i,j)+x;
188  }
189  return tmp;
190 }
191 
196 df1b2matrix operator + (const double x,const df1b2matrix& _M)
197 {
199  int rmin=M.indexmin();
200  int rmax=M.indexmax();
201  df1b2matrix tmp(rmin,rmax);
202  for (int i=rmin;i<=rmax;i++)
203  {
204  int cmin=M(i).indexmin();
205  int cmax=M(i).indexmax();
206  tmp(i).allocate(cmin,cmax);
207  for (int j=cmin;j<=cmax;j++)
208  tmp(i,j)=M(i,j)+x;
209  }
210  return tmp;
211 }
212 
218 {
221  int rmin=M.indexmin();
222  int rmax=M.indexmax();
223  df1b2matrix tmp(rmin,rmax);
224  for (int i=rmin;i<=rmax;i++)
225  {
226  int cmin=M(i).indexmin();
227  int cmax=M(i).indexmax();
228  tmp(i).allocate(cmin,cmax);
229  for (int j=cmin;j<=cmax;j++)
230  tmp(i,j)=M(i,j)*x;
231  }
232  return tmp;
233 }
234 
240 {
243  int rmin=M.indexmin();
244  int rmax=M.indexmax();
245  df1b2matrix tmp(rmin,rmax);
246  for (int i=rmin;i<=rmax;i++)
247  {
248  int cmin=M(i).indexmin();
249  int cmax=M(i).indexmax();
250  tmp(i).allocate(cmin,cmax);
251  for (int j=cmin;j<=cmax;j++)
252  tmp(i,j)=M(i,j)*x;
253  }
254  return tmp;
255 }
256 
262 {
265  int rmin=M.indexmin();
266  int rmax=M.indexmax();
267  df1b2matrix tmp(rmin,rmax);
268  for (int i=rmin;i<=rmax;i++)
269  {
270  int cmin=M(i).indexmin();
271  int cmax=M(i).indexmax();
272  tmp(i).allocate(cmin,cmax);
273  for (int j=cmin;j<=cmax;j++)
274  tmp(i,j)=M(i,j)*x;
275  }
276  return tmp;
277 }
278 
284 {
287  int rmin=M.indexmin();
288  int rmax=M.indexmax();
289  df1b2matrix tmp(rmin,rmax);
290  for (int i=rmin;i<=rmax;i++)
291  {
292  int cmin=M(i).indexmin();
293  int cmax=M(i).indexmax();
294  tmp(i).allocate(cmin,cmax);
295  for (int j=cmin;j<=cmax;j++)
296  tmp(i,j)=M(i,j)*x;
297  }
298  return tmp;
299 }
300 
305 df1b2matrix operator * (const df1b2matrix& _M,const double x)
306 {
307  return x*_M;
308 }
309 
314 df1b2matrix operator * (const double x,const df1b2matrix& _M)
315 {
317  int rmin=M.indexmin();
318  int rmax=M.indexmax();
319  df1b2matrix tmp(rmin,rmax);
320  for (int i=rmin;i<=rmax;i++)
321  {
322  int cmin=M(i).indexmin();
323  int cmax=M(i).indexmax();
324  tmp(i).allocate(cmin,cmax);
325  for (int j=cmin;j<=cmax;j++)
326  tmp(i,j)=M(i,j)*x;
327  }
328  return tmp;
329 }
330 
336 {
339  int rmin=M.indexmin();
340  int rmax=M.indexmax();
341  df1b2matrix tmp(rmin,rmax);
342  for (int i=rmin;i<=rmax;i++)
343  {
344  int cmin=M(i).indexmin();
345  int cmax=M(i).indexmax();
346  tmp(i).allocate(cmin,cmax);
347  for (int j=cmin;j<=cmax;j++)
348  tmp(i,j)=x-M(i,j);
349  }
350  return tmp;
351 }
352 
357 df1b2matrix operator - (const double x,const df1b2matrix& _M)
358 {
360  int rmin=M.indexmin();
361  int rmax=M.indexmax();
362  df1b2matrix tmp(rmin,rmax);
363  for (int i=rmin;i<=rmax;i++)
364  {
365  int cmin=M(i).indexmin();
366  int cmax=M(i).indexmax();
367  tmp(i).allocate(cmin,cmax);
368  for (int j=cmin;j<=cmax;j++)
369  tmp(i,j)=x-M(i,j);
370  }
371  return tmp;
372 }
373 
379 {
380  df1b2matrix& M = (df1b2matrix&)_MM;
381  df1b2matrix& N = (df1b2matrix&)_NN;
382  int rmin=M.indexmin();
383  int rmax=M.indexmax();
384  df1b2matrix tmp(rmin,rmax);
385  for (int i=rmin;i<=rmax;i++)
386  {
387  int cmin=M(i).indexmin();
388  int cmax=M(i).indexmax();
389  tmp(i).allocate(cmin,cmax);
390  for (int j=cmin;j<=cmax;j++)
391  {
392  tmp(i,j)=M(i,j)+N(i,j);
393  }
394  }
395  return tmp;
396 }
397 
403 {
405  int rmin=M.indexmin();
406  int rmax=M.indexmax();
407  df1b2matrix tmp(rmin,rmax);
408  for (int i=rmin;i<=rmax;i++)
409  {
410  int cmin=M(i).indexmin();
411  int cmax=M(i).indexmax();
412  tmp(i).allocate(cmin,cmax);
413  for (int j=cmin;j<=cmax;j++)
414  {
415  tmp(i,j)=M(i,j)+N(i,j);
416  }
417  }
418  return tmp;
419 }
420 
426 {
427  df1b2matrix& N = (df1b2matrix&)_NN;
428  int rmin=M.indexmin();
429  int rmax=M.indexmax();
430  df1b2matrix tmp(rmin,rmax);
431  for (int i=rmin;i<=rmax;i++)
432  {
433  int cmin=M(i).indexmin();
434  int cmax=M(i).indexmax();
435  tmp(i).allocate(cmin,cmax);
436  for (int j=cmin;j<=cmax;j++)
437  {
438  tmp(i,j)=M(i,j)+N(i,j);
439  }
440  }
441  return tmp;
442 }
443 
449 {
450  df1b2matrix& M = (df1b2matrix&)_MM;
451  df1b2matrix& N = (df1b2matrix&)_NN;
452  int rmin=M.indexmin();
453  int rmax=M.indexmax();
454  df1b2matrix tmp(rmin,rmax);
455  for (int i=rmin;i<=rmax;i++)
456  {
457  int cmin=M(i).indexmin();
458  int cmax=M(i).indexmax();
459  tmp(i).allocate(cmin,cmax);
460  for (int j=cmin;j<=cmax;j++)
461  {
462  tmp(i,j)=M(i,j)-N(i,j);
463  }
464  }
465  return tmp;
466 }
467 
473 {
475  int rmin=M.indexmin();
476  int rmax=M.indexmax();
477  df1b2matrix tmp(rmin,rmax);
478  for (int i=rmin;i<=rmax;i++)
479  {
480  int cmin=M(i).indexmin();
481  int cmax=M(i).indexmax();
482  tmp(i).allocate(cmin,cmax);
483  for (int j=cmin;j<=cmax;j++)
484  {
485  tmp(i,j)=M(i,j)-N(i,j);
486  }
487  }
488  return tmp;
489 }
490 
496 {
497  df1b2matrix& N = (df1b2matrix&)_NN;
498  int rmin=M.indexmin();
499  int rmax=M.indexmax();
500  df1b2matrix tmp(rmin,rmax);
501  for (int i=rmin;i<=rmax;i++)
502  {
503  int cmin=M(i).indexmin();
504  int cmax=M(i).indexmax();
505  tmp(i).allocate(cmin,cmax);
506  for (int j=cmin;j<=cmax;j++)
507  {
508  tmp(i,j)=M(i,j)-N(i,j);
509  }
510  }
511  return tmp;
512 }
df1b2matrix & operator+=(const df1b2matrix &M)
Description not yet available.
Definition: f1b2vc4.cpp:101
#define N
Definition: rngen.cpp:56
d3_array operator-(const d3_array &a, const d3_array &b)
Returns d3_array results with computed elements addition of a(i, j, k) + b(i, j, k).
Definition: d3arr2a.cpp:152
#define x
#define ADUNCONST(type, obj)
Creates a shallow copy of obj that is not CONST.
Definition: fvar.hpp:140
int indexmin(void) const
Definition: df1b2fun.h:1054
int indexmin() const
Definition: fvar.hpp:2917
void allocate(int nrl, int nrh, int ncl, int nch)
Description not yet available.
Definition: f1b2vc5.cpp:663
d3_array operator+(const d3_array &a, const d3_array &b)
Returns d3_array results with computed elements addition of a(i, j, k) + b(i, j, k).
Definition: d3arr2a.cpp:132
exitptr ad_exit
Definition: gradstrc.cpp:53
Description not yet available.
Definition: df1b2fun.h:266
dmatrix operator*(const d3_array &t, const dvector &v)
Description not yet available.
Definition: d3arr12.cpp:17
prnstream & endl(prnstream &)
#define M
Definition: rngen.cpp:57
df1b2matrix & operator*=(const df1b2variable &x)
Description not yet available.
Definition: f1b2vc4.cpp:85
df1b2matrix & operator-=(const df1b2matrix &M)
Description not yet available.
Definition: f1b2vc4.cpp:127
Description not yet available.
Definition: fvar.hpp:2819
int indexmax() const
Definition: fvar.hpp:2921
Description not yet available.
Definition: df1b2fun.h:1042
int indexmax(void) const
Definition: df1b2fun.h:1055
Description not yet available.
df1b2matrix & operator/=(const df1b2variable &x)
Description not yet available.
Definition: f1b2vc4.cpp:69