30#ifndef FADUNITTESTS2_HPP
31#define FADUNITTESTS2_HPP
43template <
typename FadType>
71 for (
int i=0;
i<
n_;
i++) {
90template <
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();
118 for (
int i=0;
i<n;
i++)
119 t2.fastAccessDx(
i) = a_fad.dx(
i);
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();
146 for (
int i=0;
i<n;
i++)
147 t2.fastAccessDx(
i) = a_fad.dx(
i);
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();
174 for (
int i=0;
i<n;
i++)
175 t2.fastAccessDx(
i) = a_fad.dx(
i)*
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();
204 for (
int i=0;
i<n;
i++)
205 t2.fastAccessDx(
i) = a_fad.dx(
i)/
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_;
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_;
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_;
289 c_fad = std::exp(a_fad);
290 FadType t1(n, std::exp(a_fad.val()));
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_;
302 c_fad = std::log(a_fad);
303 FadType t1(n, std::log(a_fad.val()));
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_;
315 c_fad = std::log10(a_fad);
316 FadType t1(n, std::log10(a_fad.val()));
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_;
328 c_fad = std::sqrt(a_fad);
329 FadType t1(n, std::sqrt(a_fad.val()));
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_;
341 c_fad = std::cos(a_fad);
342 FadType t1(n, std::cos(a_fad.val()));
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_;
354 c_fad = std::sin(a_fad);
355 FadType t1(n, std::sin(a_fad.val()));
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_;
367 c_fad = std::tan(a_fad);
368 FadType t1(n, std::tan(a_fad.val()));
369 for (
int i=0;
i<n;
i++)
371 a_fad.dx(
i)/(std::cos(a_fad.val())*std::cos(a_fad.val()));;
376 typedef decltype(this->a_fad_)
FadType;
377 auto a_fad = this->a_fad_;
378 auto c_fad = this->c_fad_;
381 c_fad = std::cosh(a_fad);
382 FadType t1(n, std::cosh(a_fad.val()));
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_;
394 c_fad = std::sinh(a_fad);
395 FadType t1(n, std::sinh(a_fad.val()));
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_;
407 c_fad = std::tanh(a_fad);
408 FadType t1(n, std::tanh(a_fad.val()));
409 for (
int i=0;
i<n;
i++)
411 a_fad.dx(
i)/(std::cosh(a_fad.val())*std::cosh(a_fad.val()));
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();
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();
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();
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();
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_;
510 c_fad = std::pow(a_fad, b_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() +
515 std::log(a_fad.val())*b_fad.dx(
i));
518 ScalarType
val = this->urand.number();
519 c_fad = std::pow(a_fad,
val);
521 for (
int i=0;
i<n;
i++)
523 std::pow(a_fad.val(),
val)*(
val*a_fad.dx(
i)/a_fad.val());
526 c_fad = std::pow(
val, b_fad);
528 for (
int i=0;
i<n;
i++)
530 std::pow(
val, b_fad.val())*std::log(
val)*b_fad.dx(
i);
534 c_fad = std::pow(a_fad,
val);
536 for (
int i=0;
i<n;
i++)
537 t4.fastAccessDx(
i) = 0.0;
540 c_fad = std::pow(
val, b_fad);
542 for (
int i=0;
i<n;
i++)
543 t5.fastAccessDx(
i) = 0.0;
548 c_fad = std::pow(aa_fad, b_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;
556 c_fad = std::pow(a_fad, bb_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()
561 + std::log(a_fad.val())*b_fad.dx(
i));
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_;
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_;
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_;
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_;
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_;
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_;
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_;
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_;
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_;
777 c_fad = std::acos(a_fad);
778 FadType t1(n, std::acos(a_fad.val()));
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_;
790 c_fad = std::asin(a_fad);
791 FadType t1(n, std::asin(a_fad.val()));
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_;
803 c_fad = std::atan(a_fad);
804 FadType t1(n, std::atan(a_fad.val()));
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_;
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_;
858 c_fad = std::abs(a_fad);
859 FadType t1(n, std::abs(a_fad.val()));
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_;
875 c_fad = std::fabs(a_fad);
876 FadType t1(n, std::fabs(a_fad.val()));
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_;
892 c_fad = std::cbrt(a_fad);
893 FadType t1(n, std::cbrt(a_fad.val()));
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_;
908 c_fad = std::atan2(a_fad, b_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();
918 c_fad = std::atan2(a_fad,
val);
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;
925 c_fad = std::atan2(
val, b_fad);
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_;
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_;
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,
TYPED_TEST_SUITE_P(FadOpsUnitTest2)
REGISTER_TYPED_TEST_SUITE_P(FadOpsUnitTest2, testAddition, testSubtraction, testMultiplication, testDivision, testEquals, testNotEquals, testUnaryPlus, testUnaryMinus, testExp, testLog, testLog10, testSqrt, testCos, testSin, testTan, testCosh, testSinh, testTanh, testPlusEquals, testMinusEquals, testTimesEquals, testDivideEquals, testPow, testEqualsLR, testPlusEqualsLR, testMinusEqualsLR, testTimesEqualsLR, testDivideEqualsLR, testResizeBug6135, testEquality, testEqualityConstL, testEqualityConstR)
TYPED_TEST_P(FadOpsUnitTest2, testAddition)
#define COMPARE_VALUES(a, b)
#define COMPARE_FADS(a, b)
Sacado::Fad::DFad< double > FadType
Sacado::ScalarType< FadType >::type ScalarType
Sacado::Random< ScalarType > urand
A random number generator that generates random numbers uniformly distributed in the interval (a,...
#define ASSERT_TRUE(condition)