30 #ifndef FADUNITTESTS2_HPP
31 #define FADUNITTESTS2_HPP
43 template <
typename FadType>
71 for (
int i=0;
i<
n_;
i++) {
90 template <
typename FadType>
102 typedef decltype(this->a_fad_)
FadType;
104 auto a_fad = this->a_fad_;
105 auto b_fad = this->b_fad_;
106 auto c_fad = this->c_fad_;
109 c_fad = a_fad + b_fad;
110 FadType t1(
n, a_fad.val()+b_fad.val());
111 for (
int i=0;
i<
n;
i++)
112 t1.fastAccessDx(
i) = a_fad.dx(
i) + b_fad.dx(
i);
115 ScalarType
val = this->urand.number();
117 FadType t2(n, a_fad.val()+
val);
118 for (
int i=0;
i<n;
i++)
119 t2.fastAccessDx(
i) = a_fad.dx(
i);
123 FadType t3(n, val+b_fad.val());
124 for (
int i=0;
i<n;
i++)
125 t3.fastAccessDx(
i) = b_fad.dx(
i);
130 typedef decltype(this->a_fad_)
FadType;
132 auto a_fad = this->a_fad_;
133 auto b_fad = this->b_fad_;
134 auto c_fad = this->c_fad_;
137 c_fad = a_fad - b_fad;
138 FadType t1(
n, a_fad.val()-b_fad.val());
139 for (
int i=0;
i<
n;
i++)
140 t1.fastAccessDx(
i) = a_fad.dx(
i) - b_fad.dx(
i);
143 ScalarType
val = this->urand.number();
145 FadType t2(n, a_fad.val()-
val);
146 for (
int i=0;
i<n;
i++)
147 t2.fastAccessDx(
i) = a_fad.dx(
i);
151 FadType t3(n, val-b_fad.val());
152 for (
int i=0;
i<n;
i++)
153 t3.fastAccessDx(
i) = -b_fad.dx(
i);
158 typedef decltype(this->a_fad_)
FadType;
160 auto a_fad = this->a_fad_;
161 auto b_fad = this->b_fad_;
162 auto c_fad = this->c_fad_;
165 c_fad = a_fad * b_fad;
166 FadType t1(
n, a_fad.val()*b_fad.val());
167 for (
int i=0;
i<
n;
i++)
168 t1.fastAccessDx(
i) = a_fad.dx(
i)*b_fad.val() + a_fad.val()*b_fad.dx(
i);
171 ScalarType
val = this->urand.number();
173 FadType t2(n, a_fad.val()*
val);
174 for (
int i=0;
i<n;
i++)
175 t2.fastAccessDx(
i) = a_fad.dx(
i)*
val;
179 FadType t3(n, val*b_fad.val());
180 for (
int i=0;
i<n;
i++)
181 t3.fastAccessDx(
i) = val*b_fad.dx(
i);
186 typedef decltype(this->a_fad_)
FadType;
188 auto a_fad = this->a_fad_;
189 auto b_fad = this->b_fad_;
190 auto c_fad = this->c_fad_;
193 c_fad = a_fad / b_fad;
194 FadType t1(
n, a_fad.val()/b_fad.val());
195 for (
int i=0;
i<
n;
i++)
197 (a_fad.dx(
i)*b_fad.val() - a_fad.val()*b_fad.dx(
i)) /
198 (b_fad.val()*b_fad.val());
201 ScalarType
val = this->urand.number();
203 FadType t2(n, a_fad.val()/
val);
204 for (
int i=0;
i<n;
i++)
205 t2.fastAccessDx(
i) = a_fad.dx(
i)/
val;
209 FadType t3(n, val/b_fad.val());
210 for (
int i=0;
i<n;
i++)
211 t3.fastAccessDx(
i) = -val*b_fad.dx(
i)/(b_fad.val()*b_fad.val());
216 typedef decltype(this->a_fad_)
FadType;
218 auto a_fad = this->a_fad_;
219 auto b_fad = this->b_fad_;
220 auto c_fad = this->c_fad_;
222 bool r1 = a_fad == b_fad;
223 bool r2 = a_fad.val() == b_fad.val();
226 ScalarType
val = this->urand.number();
228 r2 = a_fad.val() ==
val;
232 r2 = val == b_fad.val();
237 typedef decltype(this->a_fad_)
FadType;
239 auto a_fad = this->a_fad_;
240 auto b_fad = this->b_fad_;
241 auto c_fad = this->c_fad_;
243 bool r1 = a_fad != b_fad;
244 bool r2 = a_fad.val() != b_fad.val();
247 ScalarType
val = this->urand.number();
249 r2 = a_fad.val() !=
val;
253 r2 = val != b_fad.val();
258 typedef decltype(this->a_fad_)
FadType;
259 auto a_fad = this->a_fad_;
260 auto c_fad = this->c_fad_;
264 FadType t1(
n, a_fad.val());
265 for (
int i=0;
i<
n;
i++)
266 t1.fastAccessDx(
i) = a_fad.dx(
i);
271 typedef decltype(this->a_fad_)
FadType;
272 auto a_fad = this->a_fad_;
273 auto c_fad = this->c_fad_;
277 FadType t1(
n, -a_fad.val());
278 for (
int i=0;
i<
n;
i++)
279 t1.fastAccessDx(
i) = -a_fad.dx(
i);
284 typedef decltype(this->a_fad_)
FadType;
285 auto a_fad = this->a_fad_;
286 auto c_fad = this->c_fad_;
291 for (
int i=0;
i<
n;
i++)
292 t1.fastAccessDx(
i) =
std::exp(a_fad.val())*a_fad.dx(
i);
297 typedef decltype(this->a_fad_)
FadType;
298 auto a_fad = this->a_fad_;
299 auto c_fad = this->c_fad_;
304 for (
int i=0;
i<
n;
i++)
305 t1.fastAccessDx(
i) = a_fad.dx(
i)/a_fad.val();
310 typedef decltype(this->a_fad_)
FadType;
311 auto a_fad = this->a_fad_;
312 auto c_fad = this->c_fad_;
317 for (
int i=0;
i<
n;
i++)
318 t1.fastAccessDx(
i) = a_fad.dx(
i)/(a_fad.val()*
std::log(10));
323 typedef decltype(this->a_fad_)
FadType;
324 auto a_fad = this->a_fad_;
325 auto c_fad = this->c_fad_;
330 for (
int i=0;
i<
n;
i++)
331 t1.fastAccessDx(
i) = a_fad.dx(
i)/(2.*
std::sqrt(a_fad.val()));
336 typedef decltype(this->a_fad_)
FadType;
337 auto a_fad = this->a_fad_;
338 auto c_fad = this->c_fad_;
343 for (
int i=0;
i<
n;
i++)
344 t1.fastAccessDx(
i) = -
std::sin(a_fad.val())*a_fad.dx(
i);
349 typedef decltype(this->a_fad_)
FadType;
350 auto a_fad = this->a_fad_;
351 auto c_fad = this->c_fad_;
356 for (
int i=0;
i<
n;
i++)
357 t1.fastAccessDx(
i) =
std::cos(a_fad.val())*a_fad.dx(
i);
362 typedef decltype(this->a_fad_)
FadType;
363 auto a_fad = this->a_fad_;
364 auto c_fad = this->c_fad_;
369 for (
int i=0;
i<
n;
i++)
376 typedef decltype(this->a_fad_)
FadType;
377 auto a_fad = this->a_fad_;
378 auto c_fad = this->c_fad_;
383 for (
int i=0;
i<
n;
i++)
384 t1.fastAccessDx(
i) =
std::sinh(a_fad.val())*a_fad.dx(
i);
389 typedef decltype(this->a_fad_)
FadType;
390 auto a_fad = this->a_fad_;
391 auto c_fad = this->c_fad_;
396 for (
int i=0;
i<
n;
i++)
397 t1.fastAccessDx(
i) =
std::cosh(a_fad.val())*a_fad.dx(
i);
402 typedef decltype(this->a_fad_)
FadType;
403 auto a_fad = this->a_fad_;
404 auto c_fad = this->c_fad_;
409 for (
int i=0;
i<
n;
i++)
416 typedef decltype(this->a_fad_)
FadType;
418 auto a_fad = this->a_fad_;
419 auto c_fad = this->c_fad_;
422 FadType t1(
n, c_fad.val()+a_fad.val());
423 for (
int i=0;
i<
n;
i++)
424 t1.fastAccessDx(
i) = c_fad.dx(
i) + a_fad.dx(
i);
428 ScalarType
val = this->urand.number();
429 FadType t2(n, c_fad.val()+
val);
430 for (
int i=0;
i<n;
i++)
431 t2.fastAccessDx(
i) = c_fad.dx(
i);
437 typedef decltype(this->a_fad_)
FadType;
439 auto a_fad = this->a_fad_;
440 auto c_fad = this->c_fad_;
443 FadType t1(
n, c_fad.val()-a_fad.val());
444 for (
int i=0;
i<
n;
i++)
445 t1.fastAccessDx(
i) = c_fad.dx(
i) - a_fad.dx(
i);
449 ScalarType
val = this->urand.number();
450 FadType t2(n, c_fad.val()-
val);
451 for (
int i=0;
i<n;
i++)
452 t2.fastAccessDx(
i) = c_fad.dx(
i);
458 typedef decltype(this->a_fad_)
FadType;
460 auto a_fad = this->a_fad_;
461 auto c_fad = this->c_fad_;
464 FadType t1(
n, c_fad.val()*a_fad.val());
465 for (
int i=0;
i<
n;
i++)
466 t1.fastAccessDx(
i) = c_fad.dx(
i)*a_fad.val() + a_fad.dx(
i)*c_fad.val();
470 ScalarType
val = this->urand.number();
471 FadType t2(n, c_fad.val()*
val);
472 for (
int i=0;
i<n;
i++)
473 t2.fastAccessDx(
i) = c_fad.dx(
i)*
val;
479 typedef decltype(this->a_fad_)
FadType;
481 auto a_fad = this->a_fad_;
482 auto b_fad = this->b_fad_;
483 auto c_fad = this->c_fad_;
486 FadType t1(
n, c_fad.val()/a_fad.val());
487 for (
int i=0;
i<
n;
i++)
489 (a_fad.dx(
i)*c_fad.val() - c_fad.dx(
i)*a_fad.val()) /
490 (a_fad.val()*a_fad.val());
494 ScalarType
val = this->urand.number();
495 FadType t2(n, c_fad.val()/
val);
496 for (
int i=0;
i<n;
i++)
497 t2.fastAccessDx(
i) = c_fad.dx(
i)/
val;
503 typedef decltype(this->a_fad_)
FadType;
505 auto a_fad = this->a_fad_;
506 auto b_fad = this->b_fad_;
507 auto c_fad = this->c_fad_;
511 FadType t1(
n,
std::pow(a_fad.val(),b_fad.val()));
512 for (
int i=0;
i<
n;
i++)
514 std::pow(a_fad.val(),b_fad.val())*(b_fad.val()*a_fad.dx(
i)/a_fad.val() +
518 ScalarType
val = this->urand.number();
521 for (
int i=0;
i<n;
i++)
523 std::pow(a_fad.val(),
val)*(val*a_fad.dx(
i)/a_fad.val());
527 FadType t3(n,
std::pow(val, b_fad.val()));
528 for (
int i=0;
i<n;
i++)
536 for (
int i=0;
i<n;
i++)
537 t4.fastAccessDx(
i) = 0.0;
541 FadType t5(n,
std::pow(val, b_fad.val()));
542 for (
int i=0;
i<n;
i++)
543 t5.fastAccessDx(
i) = 0.0;
546 FadType aa_fad = a_fad;
549 FadType t6(n,
std::pow(aa_fad.val(),b_fad.val()));
550 for (
int i=0;
i<n;
i++)
551 t6.fastAccessDx(
i) = 0.0;
554 FadType bb_fad = b_fad;
557 FadType t7(n,
std::pow(a_fad.val(),bb_fad.val()));
558 for (
int i=0;
i<n;
i++)
560 std::pow(a_fad.val(),bb_fad.val())*(bb_fad.val()*a_fad.dx(
i)/a_fad.val()
566 typedef decltype(this->a_fad_)
FadType;
567 auto a_fad = this->a_fad_;
568 auto b_fad = this->b_fad_;
569 auto c_fad = this->c_fad_;
571 FadType aa_fad = a_fad;
573 aa_fad = aa_fad + b_fad;
579 typedef decltype(this->a_fad_)
FadType;
580 auto a_fad = this->a_fad_;
581 auto b_fad = this->b_fad_;
582 auto c_fad = this->c_fad_;
584 FadType aa_fad = a_fad;
586 aa_fad += aa_fad + b_fad;
587 c_fad = 1.0 + 1.0 + b_fad;
592 typedef decltype(this->a_fad_)
FadType;
593 auto a_fad = this->a_fad_;
594 auto b_fad = this->b_fad_;
595 auto c_fad = this->c_fad_;
597 FadType aa_fad = a_fad;
599 aa_fad -= aa_fad + b_fad;
600 c_fad = 1.0 - 1.0 - b_fad;
605 typedef decltype(this->a_fad_)
FadType;
606 auto a_fad = this->a_fad_;
607 auto b_fad = this->b_fad_;
608 auto c_fad = this->c_fad_;
610 FadType aa_fad = a_fad;
612 aa_fad *= aa_fad + b_fad;
613 c_fad = 2.0 * (2.0 + b_fad);
618 typedef decltype(this->a_fad_)
FadType;
619 auto a_fad = this->a_fad_;
620 auto b_fad = this->b_fad_;
621 auto c_fad = this->c_fad_;
623 FadType aa_fad = a_fad;
625 aa_fad /= aa_fad + b_fad;
626 c_fad = 2.0 / (2.0 + b_fad);
631 typedef decltype(this->a_fad_)
FadType;
633 auto a_fad = this->a_fad_;
634 auto c_fad = this->c_fad_;
636 FadType d_fad = ScalarType(1.0);
637 d_fad = d_fad + a_fad;
643 typedef decltype(this->a_fad_)
FadType;
644 auto a_fad = this->a_fad_;
645 auto b_fad = this->b_fad_;
646 auto c_fad = this->c_fad_;
648 FadType aa_fad = a_fad;
649 FadType bb_fad = b_fad;
653 if (aa_fad == bb_fad*bb_fad)
660 typedef decltype(this->a_fad_)
FadType;
662 auto a_fad = this->a_fad_;
663 auto b_fad = this->b_fad_;
664 auto c_fad = this->c_fad_;
666 FadType bb_fad = b_fad;
669 if (ScalarType(9.0) == bb_fad*bb_fad)
676 typedef decltype(this->a_fad_)
FadType;
678 auto a_fad = this->a_fad_;
679 auto b_fad = this->b_fad_;
680 auto c_fad = this->c_fad_;
682 FadType bb_fad = b_fad;
685 if (bb_fad*bb_fad == ScalarType(9.0))
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;
754 auto a_fad = this->a_fad_;
755 auto b_fad = this->b_fad_;
757 bool r1 = a_fad > b_fad;
758 bool r2 = a_fad.val() > b_fad.val();
761 ScalarType
val = this->urand.number();
763 r2 = a_fad.val() >
val;
767 r2 = val > b_fad.val();
772 typedef decltype(this->a_fad_)
FadType;
773 auto a_fad = this->a_fad_;
774 auto c_fad = this->c_fad_;
779 for (
int i=0;
i<
n;
i++)
780 t1.fastAccessDx(
i) = -a_fad.dx(
i)/
std::sqrt(1.0 - a_fad.val()*a_fad.val());
785 typedef decltype(this->a_fad_)
FadType;
786 auto a_fad = this->a_fad_;
787 auto c_fad = this->c_fad_;
792 for (
int i=0;
i<
n;
i++)
793 t1.fastAccessDx(
i) = a_fad.dx(
i)/
std::sqrt(1.0 - a_fad.val()*a_fad.val());
798 typedef decltype(this->a_fad_)
FadType;
799 auto a_fad = this->a_fad_;
800 auto c_fad = this->c_fad_;
805 for (
int i=0;
i<
n;
i++)
806 t1.fastAccessDx(
i) = a_fad.dx(
i)/(1.0 + a_fad.val()*a_fad.val());
811 typedef decltype(this->a_fad_)
FadType;
812 auto a_fad = this->a_fad_;
813 auto c_fad = this->c_fad_;
816 FadType aa_fad = a_fad;
817 if (a_fad.val() < 1.0)
818 aa_fad.val() = 1.0 / a_fad.val();
821 for (
int i=0;
i<
n;
i++)
822 t1.fastAccessDx(
i) = aa_fad.dx(
i)/
std::sqrt(aa_fad.val()*aa_fad.val()-1.0);
827 typedef decltype(this->a_fad_)
FadType;
828 auto a_fad = this->a_fad_;
829 auto c_fad = this->c_fad_;
834 for (
int i=0;
i<
n;
i++)
835 t1.fastAccessDx(
i) = a_fad.dx(
i)/
std::sqrt(a_fad.val()*a_fad.val()+1.0);
840 typedef decltype(this->a_fad_)
FadType;
841 auto a_fad = this->a_fad_;
842 auto c_fad = this->c_fad_;
847 for (
int i=0;
i<
n;
i++)
848 t1.fastAccessDx(
i) = a_fad.dx(
i)/(1.0 - a_fad.val()*a_fad.val());
853 typedef decltype(this->a_fad_)
FadType;
854 auto a_fad = this->a_fad_;
855 auto c_fad = this->c_fad_;
860 for (
int i=0;
i<
n;
i++) {
861 if (a_fad.val() >= 0)
862 t1.fastAccessDx(
i) = a_fad.dx(
i);
864 t1.fastAccessDx(
i) = -a_fad.dx(
i);
870 typedef decltype(this->a_fad_)
FadType;
871 auto a_fad = this->a_fad_;
872 auto c_fad = this->c_fad_;
877 for (
int i=0;
i<
n;
i++) {
878 if (a_fad.val() >= 0)
879 t1.fastAccessDx(
i) = a_fad.dx(
i);
881 t1.fastAccessDx(
i) = -a_fad.dx(
i);
887 typedef decltype(this->a_fad_)
FadType;
888 auto a_fad = this->a_fad_;
889 auto c_fad = this->c_fad_;
894 for (
int i=0;
i<
n;
i++)
896 a_fad.dx(
i)/(3.*
std::cbrt(a_fad.val()*a_fad.val()));
901 typedef decltype(this->a_fad_)
FadType;
903 auto a_fad = this->a_fad_;
904 auto b_fad = this->b_fad_;
905 auto c_fad = this->c_fad_;
909 FadType t1(
n,
std::atan2(a_fad.val(),b_fad.val()));
910 ScalarType t = a_fad.val()*a_fad.val() +
911 b_fad.val()*b_fad.val();
912 for (
int i=0;
i<
n;
i++)
913 t1.fastAccessDx(
i) = (b_fad.val()*a_fad.dx(
i) -
914 a_fad.val()*b_fad.dx(
i))/t;
917 ScalarType
val = this->urand.number();
920 t = a_fad.val()*a_fad.val() + val*
val;
921 for (
int i=0;
i<n;
i++)
922 t2.fastAccessDx(
i) = val*a_fad.dx(
i)/t;
927 t = val*val + b_fad.val()*b_fad.val();
928 for (
int i=0;
i<n;
i++)
929 t3.fastAccessDx(
i) = -val*b_fad.dx(
i)/t;
934 typedef decltype(this->a_fad_)
FadType;
936 auto a_fad = this->a_fad_;
937 auto b_fad = this->b_fad_;
938 auto c_fad = this->c_fad_;
944 FadType aa_fad = a_fad + 1.0;
945 c_fad =
max(aa_fad, a_fad);
947 c_fad =
max(a_fad, aa_fad);
951 c_fad =
max(a_fad+1.0, a_fad);
953 c_fad =
max(a_fad, a_fad+1.0);
957 c_fad =
max(a_fad+1.0, a_fad+1.0);
961 c_fad =
max(a_fad+1.0, a_fad-1.0);
963 c_fad =
max(a_fad-1.0, a_fad+1.0);
967 val = a_fad.val() + 1;
968 c_fad =
max(a_fad, val);
970 for (
int i=0;
i<
n;
i++)
972 val = a_fad.val() - 1;
973 c_fad =
max(a_fad, val);
975 val = b_fad.val() + 1;
976 c_fad =
max(val, b_fad);
978 for (
int i=0;
i<n;
i++)
980 val = b_fad.val() - 1;
981 c_fad =
max(val, b_fad);
986 c_fad =
max(a_fad+1.0, val);
988 c_fad =
max(val, a_fad+1.0);
993 typedef decltype(this->a_fad_)
FadType;
995 auto a_fad = this->a_fad_;
996 auto b_fad = this->b_fad_;
997 auto c_fad = this->c_fad_;
1003 FadType aa_fad = a_fad - 1.0;
1004 c_fad =
min(aa_fad, a_fad);
1006 c_fad =
min(a_fad, aa_fad);
1010 c_fad =
min(a_fad-1.0, a_fad);
1012 c_fad =
min(a_fad, a_fad-1.0);
1016 c_fad =
min(a_fad-1.0, a_fad-1.0);
1020 c_fad =
min(a_fad+1.0, a_fad-1.0);
1022 c_fad =
min(a_fad-1.0, a_fad+1.0);
1026 val = a_fad.val() - 1;
1027 c_fad =
min(a_fad, val);
1029 for (
int i=0;
i<
n;
i++)
1031 val = a_fad.val() + 1;
1032 c_fad =
min(a_fad, val);
1034 val = b_fad.val() - 1;
1035 c_fad =
min(val, b_fad);
1037 for (
int i=0;
i<n;
i++)
1039 val = b_fad.val() + 1;
1040 c_fad =
min(val, b_fad);
1045 c_fad =
min(a_fad-1.0, val);
1047 c_fad =
min(val, a_fad-1.0);
1084 testEqualityConstR);
1088 testLessThanOrEquals,
1089 testGreaterThanOrEquals,
1106 #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)