10 #ifndef FADUNITTESTS2_HPP
11 #define FADUNITTESTS2_HPP
23 template <
typename FadType>
51 for (
int i=0;
i<
n_;
i++) {
70 template <
typename FadType>
82 typedef decltype(this->a_fad_)
FadType;
84 auto a_fad = this->a_fad_;
85 auto b_fad = this->b_fad_;
86 auto c_fad = this->c_fad_;
89 c_fad = a_fad + b_fad;
90 FadType t1(
n, a_fad.val()+b_fad.val());
91 for (
int i=0;
i<
n;
i++)
92 t1.fastAccessDx(
i) = a_fad.dx(
i) + b_fad.dx(
i);
95 ScalarType
val = this->urand.number();
97 FadType t2(n, a_fad.val()+
val);
98 for (
int i=0;
i<n;
i++)
99 t2.fastAccessDx(
i) = a_fad.dx(
i);
103 FadType t3(n, val+b_fad.val());
104 for (
int i=0;
i<n;
i++)
105 t3.fastAccessDx(
i) = b_fad.dx(
i);
110 typedef decltype(this->a_fad_)
FadType;
112 auto a_fad = this->a_fad_;
113 auto b_fad = this->b_fad_;
114 auto c_fad = this->c_fad_;
117 c_fad = a_fad - b_fad;
118 FadType t1(
n, a_fad.val()-b_fad.val());
119 for (
int i=0;
i<
n;
i++)
120 t1.fastAccessDx(
i) = a_fad.dx(
i) - b_fad.dx(
i);
123 ScalarType
val = this->urand.number();
125 FadType t2(n, a_fad.val()-
val);
126 for (
int i=0;
i<n;
i++)
127 t2.fastAccessDx(
i) = a_fad.dx(
i);
131 FadType t3(n, val-b_fad.val());
132 for (
int i=0;
i<n;
i++)
133 t3.fastAccessDx(
i) = -b_fad.dx(
i);
138 typedef decltype(this->a_fad_)
FadType;
140 auto a_fad = this->a_fad_;
141 auto b_fad = this->b_fad_;
142 auto c_fad = this->c_fad_;
145 c_fad = a_fad * b_fad;
146 FadType t1(
n, a_fad.val()*b_fad.val());
147 for (
int i=0;
i<
n;
i++)
148 t1.fastAccessDx(
i) = a_fad.dx(
i)*b_fad.val() + a_fad.val()*b_fad.dx(
i);
151 ScalarType
val = this->urand.number();
153 FadType t2(n, a_fad.val()*
val);
154 for (
int i=0;
i<n;
i++)
155 t2.fastAccessDx(
i) = a_fad.dx(
i)*
val;
159 FadType t3(n, val*b_fad.val());
160 for (
int i=0;
i<n;
i++)
161 t3.fastAccessDx(
i) = val*b_fad.dx(
i);
166 typedef decltype(this->a_fad_)
FadType;
168 auto a_fad = this->a_fad_;
169 auto b_fad = this->b_fad_;
170 auto c_fad = this->c_fad_;
173 c_fad = a_fad / b_fad;
174 FadType t1(
n, a_fad.val()/b_fad.val());
175 for (
int i=0;
i<
n;
i++)
177 (a_fad.dx(
i)*b_fad.val() - a_fad.val()*b_fad.dx(
i)) /
178 (b_fad.val()*b_fad.val());
181 ScalarType
val = this->urand.number();
183 FadType t2(n, a_fad.val()/
val);
184 for (
int i=0;
i<n;
i++)
185 t2.fastAccessDx(
i) = a_fad.dx(
i)/
val;
189 FadType t3(n, val/b_fad.val());
190 for (
int i=0;
i<n;
i++)
191 t3.fastAccessDx(
i) = -val*b_fad.dx(
i)/(b_fad.val()*b_fad.val());
196 typedef decltype(this->a_fad_)
FadType;
198 auto a_fad = this->a_fad_;
199 auto b_fad = this->b_fad_;
200 auto c_fad = this->c_fad_;
202 bool r1 = a_fad == b_fad;
203 bool r2 = a_fad.val() == b_fad.val();
206 ScalarType
val = this->urand.number();
208 r2 = a_fad.val() ==
val;
212 r2 = val == b_fad.val();
217 typedef decltype(this->a_fad_)
FadType;
219 auto a_fad = this->a_fad_;
220 auto b_fad = this->b_fad_;
221 auto c_fad = this->c_fad_;
223 bool r1 = a_fad != b_fad;
224 bool r2 = a_fad.val() != b_fad.val();
227 ScalarType
val = this->urand.number();
229 r2 = a_fad.val() !=
val;
233 r2 = val != b_fad.val();
238 typedef decltype(this->a_fad_)
FadType;
239 auto a_fad = this->a_fad_;
240 auto c_fad = this->c_fad_;
244 FadType t1(
n, a_fad.val());
245 for (
int i=0;
i<
n;
i++)
246 t1.fastAccessDx(
i) = a_fad.dx(
i);
251 typedef decltype(this->a_fad_)
FadType;
252 auto a_fad = this->a_fad_;
253 auto c_fad = this->c_fad_;
257 FadType t1(
n, -a_fad.val());
258 for (
int i=0;
i<
n;
i++)
259 t1.fastAccessDx(
i) = -a_fad.dx(
i);
264 typedef decltype(this->a_fad_)
FadType;
265 auto a_fad = this->a_fad_;
266 auto c_fad = this->c_fad_;
271 for (
int i=0;
i<
n;
i++)
272 t1.fastAccessDx(
i) =
std::exp(a_fad.val())*a_fad.dx(
i);
277 typedef decltype(this->a_fad_)
FadType;
278 auto a_fad = this->a_fad_;
279 auto c_fad = this->c_fad_;
284 for (
int i=0;
i<
n;
i++)
285 t1.fastAccessDx(
i) = a_fad.dx(
i)/a_fad.val();
290 typedef decltype(this->a_fad_)
FadType;
291 auto a_fad = this->a_fad_;
292 auto c_fad = this->c_fad_;
297 for (
int i=0;
i<
n;
i++)
298 t1.fastAccessDx(
i) = a_fad.dx(
i)/(a_fad.val()*
std::log(10));
303 typedef decltype(this->a_fad_)
FadType;
304 auto a_fad = this->a_fad_;
305 auto c_fad = this->c_fad_;
310 for (
int i=0;
i<
n;
i++)
311 t1.fastAccessDx(
i) = a_fad.dx(
i)/(2.*
std::sqrt(a_fad.val()));
316 typedef decltype(this->a_fad_)
FadType;
317 auto a_fad = this->a_fad_;
318 auto c_fad = this->c_fad_;
323 for (
int i=0;
i<
n;
i++)
324 t1.fastAccessDx(
i) = -
std::sin(a_fad.val())*a_fad.dx(
i);
329 typedef decltype(this->a_fad_)
FadType;
330 auto a_fad = this->a_fad_;
331 auto c_fad = this->c_fad_;
336 for (
int i=0;
i<
n;
i++)
337 t1.fastAccessDx(
i) =
std::cos(a_fad.val())*a_fad.dx(
i);
342 typedef decltype(this->a_fad_)
FadType;
343 auto a_fad = this->a_fad_;
344 auto c_fad = this->c_fad_;
349 for (
int i=0;
i<
n;
i++)
356 typedef decltype(this->a_fad_)
FadType;
357 auto a_fad = this->a_fad_;
358 auto c_fad = this->c_fad_;
363 for (
int i=0;
i<
n;
i++)
364 t1.fastAccessDx(
i) =
std::sinh(a_fad.val())*a_fad.dx(
i);
369 typedef decltype(this->a_fad_)
FadType;
370 auto a_fad = this->a_fad_;
371 auto c_fad = this->c_fad_;
376 for (
int i=0;
i<
n;
i++)
377 t1.fastAccessDx(
i) =
std::cosh(a_fad.val())*a_fad.dx(
i);
382 typedef decltype(this->a_fad_)
FadType;
383 auto a_fad = this->a_fad_;
384 auto c_fad = this->c_fad_;
389 for (
int i=0;
i<
n;
i++)
396 typedef decltype(this->a_fad_)
FadType;
398 auto a_fad = this->a_fad_;
399 auto c_fad = this->c_fad_;
402 FadType t1(
n, c_fad.val()+a_fad.val());
403 for (
int i=0;
i<
n;
i++)
404 t1.fastAccessDx(
i) = c_fad.dx(
i) + a_fad.dx(
i);
408 ScalarType
val = this->urand.number();
409 FadType t2(n, c_fad.val()+
val);
410 for (
int i=0;
i<n;
i++)
411 t2.fastAccessDx(
i) = c_fad.dx(
i);
417 typedef decltype(this->a_fad_)
FadType;
419 auto a_fad = this->a_fad_;
420 auto c_fad = this->c_fad_;
423 FadType t1(
n, c_fad.val()-a_fad.val());
424 for (
int i=0;
i<
n;
i++)
425 t1.fastAccessDx(
i) = c_fad.dx(
i) - a_fad.dx(
i);
429 ScalarType
val = this->urand.number();
430 FadType t2(n, c_fad.val()-
val);
431 for (
int i=0;
i<n;
i++)
432 t2.fastAccessDx(
i) = c_fad.dx(
i);
438 typedef decltype(this->a_fad_)
FadType;
440 auto a_fad = this->a_fad_;
441 auto c_fad = this->c_fad_;
444 FadType t1(
n, c_fad.val()*a_fad.val());
445 for (
int i=0;
i<
n;
i++)
446 t1.fastAccessDx(
i) = c_fad.dx(
i)*a_fad.val() + a_fad.dx(
i)*c_fad.val();
450 ScalarType
val = this->urand.number();
451 FadType t2(n, c_fad.val()*
val);
452 for (
int i=0;
i<n;
i++)
453 t2.fastAccessDx(
i) = c_fad.dx(
i)*
val;
459 typedef decltype(this->a_fad_)
FadType;
461 auto a_fad = this->a_fad_;
462 auto b_fad = this->b_fad_;
463 auto c_fad = this->c_fad_;
466 FadType t1(
n, c_fad.val()/a_fad.val());
467 for (
int i=0;
i<
n;
i++)
469 (a_fad.dx(
i)*c_fad.val() - c_fad.dx(
i)*a_fad.val()) /
470 (a_fad.val()*a_fad.val());
474 ScalarType
val = this->urand.number();
475 FadType t2(n, c_fad.val()/
val);
476 for (
int i=0;
i<n;
i++)
477 t2.fastAccessDx(
i) = c_fad.dx(
i)/
val;
483 typedef decltype(this->a_fad_)
FadType;
485 auto a_fad = this->a_fad_;
486 auto b_fad = this->b_fad_;
487 auto c_fad = this->c_fad_;
491 FadType t1(
n,
std::pow(a_fad.val(),b_fad.val()));
492 for (
int i=0;
i<
n;
i++)
494 std::pow(a_fad.val(),b_fad.val())*(b_fad.val()*a_fad.dx(
i)/a_fad.val() +
498 ScalarType
val = this->urand.number();
501 for (
int i=0;
i<n;
i++)
503 std::pow(a_fad.val(),
val)*(val*a_fad.dx(
i)/a_fad.val());
507 FadType t3(n,
std::pow(val, b_fad.val()));
508 for (
int i=0;
i<n;
i++)
516 for (
int i=0;
i<n;
i++)
517 t4.fastAccessDx(
i) = 0.0;
521 FadType t5(n,
std::pow(val, b_fad.val()));
522 for (
int i=0;
i<n;
i++)
523 t5.fastAccessDx(
i) = 0.0;
526 FadType aa_fad = a_fad;
529 FadType t6(n,
std::pow(aa_fad.val(),b_fad.val()));
530 for (
int i=0;
i<n;
i++)
531 t6.fastAccessDx(
i) = 0.0;
534 FadType bb_fad = b_fad;
537 FadType t7(n,
std::pow(a_fad.val(),bb_fad.val()));
538 for (
int i=0;
i<n;
i++)
540 std::pow(a_fad.val(),bb_fad.val())*(bb_fad.val()*a_fad.dx(
i)/a_fad.val()
546 typedef decltype(this->a_fad_)
FadType;
547 auto a_fad = this->a_fad_;
548 auto b_fad = this->b_fad_;
549 auto c_fad = this->c_fad_;
551 FadType aa_fad = a_fad;
553 aa_fad = aa_fad + b_fad;
559 typedef decltype(this->a_fad_)
FadType;
560 auto a_fad = this->a_fad_;
561 auto b_fad = this->b_fad_;
562 auto c_fad = this->c_fad_;
564 FadType aa_fad = a_fad;
566 aa_fad += aa_fad + b_fad;
567 c_fad = 1.0 + 1.0 + b_fad;
572 typedef decltype(this->a_fad_)
FadType;
573 auto a_fad = this->a_fad_;
574 auto b_fad = this->b_fad_;
575 auto c_fad = this->c_fad_;
577 FadType aa_fad = a_fad;
579 aa_fad -= aa_fad + b_fad;
580 c_fad = 1.0 - 1.0 - b_fad;
585 typedef decltype(this->a_fad_)
FadType;
586 auto a_fad = this->a_fad_;
587 auto b_fad = this->b_fad_;
588 auto c_fad = this->c_fad_;
590 FadType aa_fad = a_fad;
592 aa_fad *= aa_fad + b_fad;
593 c_fad = 2.0 * (2.0 + b_fad);
598 typedef decltype(this->a_fad_)
FadType;
599 auto a_fad = this->a_fad_;
600 auto b_fad = this->b_fad_;
601 auto c_fad = this->c_fad_;
603 FadType aa_fad = a_fad;
605 aa_fad /= aa_fad + b_fad;
606 c_fad = 2.0 / (2.0 + b_fad);
611 typedef decltype(this->a_fad_)
FadType;
613 auto a_fad = this->a_fad_;
614 auto c_fad = this->c_fad_;
616 FadType d_fad = ScalarType(1.0);
617 d_fad = d_fad + a_fad;
623 typedef decltype(this->a_fad_)
FadType;
624 auto a_fad = this->a_fad_;
625 auto b_fad = this->b_fad_;
626 auto c_fad = this->c_fad_;
628 FadType aa_fad = a_fad;
629 FadType bb_fad = b_fad;
633 if (aa_fad == bb_fad*bb_fad)
640 typedef decltype(this->a_fad_)
FadType;
642 auto a_fad = this->a_fad_;
643 auto b_fad = this->b_fad_;
644 auto c_fad = this->c_fad_;
646 FadType bb_fad = b_fad;
649 if (ScalarType(9.0) == bb_fad*bb_fad)
656 typedef decltype(this->a_fad_)
FadType;
658 auto a_fad = this->a_fad_;
659 auto b_fad = this->b_fad_;
660 auto c_fad = this->c_fad_;
662 FadType bb_fad = b_fad;
665 if (bb_fad*bb_fad == ScalarType(9.0))
672 typedef decltype(this->a_fad_)
FadType;
674 auto a_fad = this->a_fad_;
675 auto b_fad = this->b_fad_;
677 bool r1 = a_fad <= b_fad;
678 bool r2 = a_fad.val() <= b_fad.val();
681 ScalarType
val = this->urand.number();
683 r2 = a_fad.val() <=
val;
687 r2 = val <= b_fad.val();
692 typedef decltype(this->a_fad_)
FadType;
694 auto a_fad = this->a_fad_;
695 auto b_fad = this->b_fad_;
697 bool r1 = a_fad >= b_fad;
698 bool r2 = a_fad.val() >= b_fad.val();
701 ScalarType
val = this->urand.number();
703 r2 = a_fad.val() >=
val;
707 r2 = val >= b_fad.val();
712 typedef decltype(this->a_fad_)
FadType;
714 auto a_fad = this->a_fad_;
715 auto b_fad = this->b_fad_;
717 bool r1 = a_fad < b_fad;
718 bool r2 = a_fad.val() < b_fad.val();
721 ScalarType
val = this->urand.number();
723 r2 = a_fad.val() <
val;
727 r2 = val < b_fad.val();
732 typedef decltype(this->a_fad_)
FadType;
734 auto a_fad = this->a_fad_;
735 auto b_fad = this->b_fad_;
737 bool r1 = a_fad > b_fad;
738 bool r2 = a_fad.val() > b_fad.val();
741 ScalarType
val = this->urand.number();
743 r2 = a_fad.val() >
val;
747 r2 = val > b_fad.val();
752 typedef decltype(this->a_fad_)
FadType;
753 auto a_fad = this->a_fad_;
754 auto c_fad = this->c_fad_;
759 for (
int i=0;
i<
n;
i++)
760 t1.fastAccessDx(
i) = -a_fad.dx(
i)/
std::sqrt(1.0 - a_fad.val()*a_fad.val());
765 typedef decltype(this->a_fad_)
FadType;
766 auto a_fad = this->a_fad_;
767 auto c_fad = this->c_fad_;
772 for (
int i=0;
i<
n;
i++)
773 t1.fastAccessDx(
i) = a_fad.dx(
i)/
std::sqrt(1.0 - a_fad.val()*a_fad.val());
778 typedef decltype(this->a_fad_)
FadType;
779 auto a_fad = this->a_fad_;
780 auto c_fad = this->c_fad_;
785 for (
int i=0;
i<
n;
i++)
786 t1.fastAccessDx(
i) = a_fad.dx(
i)/(1.0 + a_fad.val()*a_fad.val());
791 typedef decltype(this->a_fad_)
FadType;
792 auto a_fad = this->a_fad_;
793 auto c_fad = this->c_fad_;
796 FadType aa_fad = a_fad;
797 if (a_fad.val() < 1.0)
798 aa_fad.val() = 1.0 / a_fad.val();
801 for (
int i=0;
i<
n;
i++)
802 t1.fastAccessDx(
i) = aa_fad.dx(
i)/
std::sqrt(aa_fad.val()*aa_fad.val()-1.0);
807 typedef decltype(this->a_fad_)
FadType;
808 auto a_fad = this->a_fad_;
809 auto c_fad = this->c_fad_;
814 for (
int i=0;
i<
n;
i++)
815 t1.fastAccessDx(
i) = a_fad.dx(
i)/
std::sqrt(a_fad.val()*a_fad.val()+1.0);
820 typedef decltype(this->a_fad_)
FadType;
821 auto a_fad = this->a_fad_;
822 auto c_fad = this->c_fad_;
827 for (
int i=0;
i<
n;
i++)
828 t1.fastAccessDx(
i) = a_fad.dx(
i)/(1.0 - a_fad.val()*a_fad.val());
833 typedef decltype(this->a_fad_)
FadType;
834 auto a_fad = this->a_fad_;
835 auto c_fad = this->c_fad_;
840 for (
int i=0;
i<
n;
i++) {
841 if (a_fad.val() >= 0)
842 t1.fastAccessDx(
i) = a_fad.dx(
i);
844 t1.fastAccessDx(
i) = -a_fad.dx(
i);
850 typedef decltype(this->a_fad_)
FadType;
851 auto a_fad = this->a_fad_;
852 auto c_fad = this->c_fad_;
857 for (
int i=0;
i<
n;
i++) {
858 if (a_fad.val() >= 0)
859 t1.fastAccessDx(
i) = a_fad.dx(
i);
861 t1.fastAccessDx(
i) = -a_fad.dx(
i);
867 typedef decltype(this->a_fad_)
FadType;
868 auto a_fad = this->a_fad_;
869 auto c_fad = this->c_fad_;
874 for (
int i=0;
i<
n;
i++)
876 a_fad.dx(
i)/(3.*
std::cbrt(a_fad.val()*a_fad.val()));
881 typedef decltype(this->a_fad_)
FadType;
883 auto a_fad = this->a_fad_;
884 auto b_fad = this->b_fad_;
885 auto c_fad = this->c_fad_;
889 FadType t1(
n,
std::atan2(a_fad.val(),b_fad.val()));
890 ScalarType t = a_fad.val()*a_fad.val() +
891 b_fad.val()*b_fad.val();
892 for (
int i=0;
i<
n;
i++)
893 t1.fastAccessDx(
i) = (b_fad.val()*a_fad.dx(
i) -
894 a_fad.val()*b_fad.dx(
i))/t;
897 ScalarType
val = this->urand.number();
900 t = a_fad.val()*a_fad.val() + val*
val;
901 for (
int i=0;
i<n;
i++)
902 t2.fastAccessDx(
i) = val*a_fad.dx(
i)/t;
907 t = val*val + b_fad.val()*b_fad.val();
908 for (
int i=0;
i<n;
i++)
909 t3.fastAccessDx(
i) = -val*b_fad.dx(
i)/t;
914 typedef decltype(this->a_fad_)
FadType;
916 auto a_fad = this->a_fad_;
917 auto b_fad = this->b_fad_;
918 auto c_fad = this->c_fad_;
924 FadType aa_fad = a_fad + 1.0;
925 c_fad =
max(aa_fad, a_fad);
927 c_fad =
max(a_fad, aa_fad);
931 c_fad =
max(a_fad+1.0, a_fad);
933 c_fad =
max(a_fad, a_fad+1.0);
937 c_fad =
max(a_fad+1.0, a_fad+1.0);
941 c_fad =
max(a_fad+1.0, a_fad-1.0);
943 c_fad =
max(a_fad-1.0, a_fad+1.0);
947 val = a_fad.val() + 1;
948 c_fad =
max(a_fad, val);
950 for (
int i=0;
i<
n;
i++)
952 val = a_fad.val() - 1;
953 c_fad =
max(a_fad, val);
955 val = b_fad.val() + 1;
956 c_fad =
max(val, b_fad);
958 for (
int i=0;
i<n;
i++)
960 val = b_fad.val() - 1;
961 c_fad =
max(val, b_fad);
966 c_fad =
max(a_fad+1.0, val);
968 c_fad =
max(val, a_fad+1.0);
973 typedef decltype(this->a_fad_)
FadType;
975 auto a_fad = this->a_fad_;
976 auto b_fad = this->b_fad_;
977 auto c_fad = this->c_fad_;
983 FadType aa_fad = a_fad - 1.0;
984 c_fad =
min(aa_fad, a_fad);
986 c_fad =
min(a_fad, aa_fad);
990 c_fad =
min(a_fad-1.0, a_fad);
992 c_fad =
min(a_fad, a_fad-1.0);
996 c_fad =
min(a_fad-1.0, a_fad-1.0);
1000 c_fad =
min(a_fad+1.0, a_fad-1.0);
1002 c_fad =
min(a_fad-1.0, a_fad+1.0);
1006 val = a_fad.val() - 1;
1007 c_fad =
min(a_fad, val);
1009 for (
int i=0;
i<
n;
i++)
1011 val = a_fad.val() + 1;
1012 c_fad =
min(a_fad, val);
1014 val = b_fad.val() - 1;
1015 c_fad =
min(val, b_fad);
1017 for (
int i=0;
i<n;
i++)
1019 val = b_fad.val() + 1;
1020 c_fad =
min(val, b_fad);
1025 c_fad =
min(a_fad-1.0, val);
1027 c_fad =
min(val, a_fad-1.0);
1064 testEqualityConstR);
1068 testLessThanOrEquals,
1069 testGreaterThanOrEquals,
1086 #endif // FADUNITTESTS2_HPP
REGISTER_TYPED_TEST_SUITE_P(FadBLASUnitTests, testSCAL1, testSCAL2, testSCAL3, testSCAL4, testCOPY1, testCOPY2, testCOPY3, testCOPY4, testAXPY1, testAXPY2, testAXPY3, testAXPY4, testDOT1, testDOT2, testDOT3, testDOT4, testNRM21, testNRM22, testGEMV1, testGEMV2, testGEMV3, testGEMV4, testGEMV5, testGEMV6, testGEMV7, testGEMV8, testGEMV9, testTRMV1, testTRMV2, testTRMV3, testTRMV4, testGER1, testGER2, testGER3, testGER4, testGER5, testGER6, testGER7, testGEMM1, testGEMM2, testGEMM3, testGEMM4, testGEMM5, testGEMM6, testGEMM7, testGEMM8, testGEMM9, testGEMM10, testSYMM1, testSYMM2, testSYMM3, testSYMM4, testSYMM5, testSYMM6, testSYMM7, testSYMM8, testSYMM9, testTRMM1, testTRMM2, testTRMM3, testTRMM4, testTRMM5, testTRMM6, testTRMM7, testTRSM1, testTRSM2, testTRSM3, testTRSM4, testTRSM5, testTRSM6, testTRSM7)
TYPED_TEST_P(FadBLASUnitTests, testSCAL1)
#define COMPARE_VALUES(a, b)
Sacado::Fad::DFad< double > FadType
Sacado::ScalarType< FadType >::type ScalarType
#define ASSERT_TRUE(condition)
SimpleFad< ValueT > min(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
Sacado::Random< ScalarType > urand
atan2(expr1.val(), expr2.val())
TYPED_TEST_SUITE_P(FadBLASUnitTests)
SimpleFad< ValueT > max(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
SACADO_INLINE_FUNCTION mpl::enable_if_c< ExprLevel< Expr< T1 > >::value==ExprLevel< Expr< T2 > >::value, Expr< PowerOp< Expr< T1 >, Expr< T2 > > > >::type pow(const Expr< T1 > &expr1, const Expr< T2 > &expr2)
A random number generator that generates random numbers uniformly distributed in the interval (a...
#define COMPARE_FADS(a, b)