21#ifndef _libint2_src_bin_libint_vrr11twoprep11_h_
22#define _libint2_src_bin_libint_vrr11twoprep11_h_
24#include <generic_rr.h>
25#include <twoprep_11_11.h>
33template <
class BFSet,
int part, FunctionPosition where>
35 VRR_11_TwoPRep_11<BFSet, part, where>, BFSet,
36 GenIntegralSet_11_11<BFSet, TwoPRep, mType> > {
43 static const unsigned int max_nchildren = 26;
52 using ParentType::target_;
53 using ParentType::RecurrenceRelation::expr_;
54 using ParentType::RecurrenceRelation::nflops_;
60 static std::string descr() {
return "OSVRR"; }
65 std::string generate_label()
const override {
66 typedef typename TargetType::AuxIndexType
mType;
67 static std::shared_ptr<mType> aux0(
new mType(0u));
68 std::ostringstream os;
69 os << descr() <<
"P" << part <<
to_string(where)
70 << genintegralset_label(target_->bra(), target_->ket(), aux0,
75#if LIBINT_ENABLE_GENERIC_CODE
78 const std::shared_ptr<CompilationParameters>& cparams)
const override;
80 std::string generic_header()
const override;
82 std::string generic_instance(
83 const std::shared_ptr<CodeContext>& context,
84 const std::shared_ptr<CodeSymbols>& args)
const override;
88template <
class F,
int part, FunctionPosition where>
89VRR_11_TwoPRep_11<F, part, where>::VRR_11_TwoPRep_11(
90 const std::shared_ptr<TargetType>& Tint,
unsigned int dir)
91 : ParentType(Tint, dir) {
92 using namespace libint2::algebra;
93 using namespace libint2::prefactor;
95 const unsigned int m = Tint->aux()->elem(0);
96 const F& _1 = unit<F>(dir);
100 F b(Tint->ket(0, 0));
101 F c(Tint->bra(1, 0));
102 F d(Tint->ket(1, 0));
103 if (a.contracted() || b.contracted() || c.contracted() || d.contracted())
117#if LIBINT_ENABLE_GENERIC_CODE
119 F sh_a(target_->bra(0, 0));
120 F sh_b(target_->ket(0, 0));
121 F sh_c(target_->bra(1, 0));
122 F sh_d(target_->ket(1, 0));
126 if (sh_b.zero() && sh_d.zero() &&
132 if (sh_a.zero() && sh_c.zero() && (sh_b.norm() > 1u && sh_d.norm() > 1u)) {
139 typedef TargetType ChildType;
142 bool part0_has_unit =
false, part1_has_unit =
false;
145 if (part == 0 && where == InBra) {
146 F a(Tint->bra(0, 0) - _1);
148 F b(Tint->ket(0, 0));
149 const bool unit_b = (b == F::unit());
150 part0_has_unit |= unit_b;
151 F c(Tint->bra(1, 0));
152 F d(Tint->ket(1, 0));
154 std::shared_ptr<DGVertex> ABCD_m;
155 if (not unit_b) ABCD_m = factory.make_child(a, b, c, d, m);
156 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
159 expr_ = Vector(
"PA")[dir] * ABCD_m + Vector(
"WP")[dir] * ABCD_mp1;
162 expr_ = Vector(
"WP")[dir] * ABCD_mp1;
168 const bool ahlrichs_simplification = a.pure_sh() && unit_b;
170 if (
exists(am1) && not ahlrichs_simplification) {
171 auto Am1BCD_m = factory.make_child(am1, b, c, d, m);
172 auto Am1BCD_mp1 = factory.make_child(am1, b, c, d, m + 1);
173#if LIBINT_GENERATE_FMA
176 expr_ -= Scalar(a[dir]) * Scalar(
"oo2z") *
177 (Scalar(
"roz") * Am1BCD_mp1 - Am1BCD_m);
182 expr_ += Scalar(a[dir]) * Scalar(
"oo2z") *
183 (Am1BCD_m - Scalar(
"roz") * Am1BCD_mp1);
188 const F& bm1 = b - _1;
190 auto ABm1CD_m = factory.make_child(a, bm1, c, d, m);
191 auto ABm1CD_mp1 = factory.make_child(a, bm1, c, d, m + 1);
192#if LIBINT_GENERATE_FMA
195 expr_ -= Scalar(b[dir]) * Scalar(
"oo2z") *
196 (Scalar(
"roz") * ABm1CD_mp1 - ABm1CD_m);
201 expr_ += Scalar(b[dir]) * Scalar(
"oo2z") *
202 (ABm1CD_m - Scalar(
"roz") * ABm1CD_mp1);
207 const F& cm1 = c - _1;
209 auto ABCm1D_mp1 = factory.make_child(a, b, cm1, d, m + 1);
211 expr_ += Scalar(c[dir]) * Scalar(
"oo2ze") * ABCm1D_mp1;
215 const F& dm1 = d - _1;
217 auto ABCDm1_mp1 = factory.make_child(a, b, c, dm1, m + 1);
219 expr_ += Scalar(d[dir]) * Scalar(
"oo2ze") * ABCDm1_mp1;
225 if (part == 0 && where == InKet) {
226 F a(Tint->bra(0, 0));
227 const bool unit_a = (a == F::unit());
228 part0_has_unit |= unit_a;
229 F b(Tint->ket(0, 0) - _1);
231 F c(Tint->bra(1, 0));
232 F d(Tint->ket(1, 0));
234 std::shared_ptr<DGVertex> ABCD_m;
235 if (not unit_a) ABCD_m = factory.make_child(a, b, c, d, m);
236 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
239 expr_ = Vector(
"PB")[dir] * ABCD_m + Vector(
"WP")[dir] * ABCD_mp1;
242 expr_ = Vector(
"WP")[dir] * ABCD_mp1;
247 const F& am1 = a - _1;
249 auto Am1BCD_m = factory.make_child(am1, b, c, d, m);
250 auto Am1BCD_mp1 = factory.make_child(am1, b, c, d, m + 1);
251#if LIBINT_GENERATE_FMA
254 expr_ -= Scalar(a[dir]) * Scalar(
"oo2z") *
255 (Scalar(
"roz") * Am1BCD_mp1 - Am1BCD_m);
260 expr_ += Scalar(a[dir]) * Scalar(
"oo2z") *
261 (Am1BCD_m - Scalar(
"roz") * Am1BCD_mp1);
267 const bool ahlrichs_simplification = b.pure_sh() && unit_a;
268 const F& bm1 = b - _1;
269 if (
exists(bm1) && not ahlrichs_simplification) {
270 auto ABm1CD_m = factory.make_child(a, bm1, c, d, m);
271 auto ABm1CD_mp1 = factory.make_child(a, bm1, c, d, m + 1);
272#if LIBINT_GENERATE_FMA
275 expr_ -= Scalar(b[dir]) * Scalar(
"oo2z") *
276 (Scalar(
"roz") * ABm1CD_mp1 - ABm1CD_m);
281 expr_ += Scalar(b[dir]) * Scalar(
"oo2z") *
282 (ABm1CD_m - Scalar(
"roz") * ABm1CD_mp1);
287 const F& cm1 = c - _1;
289 auto ABCm1D_mp1 = factory.make_child(a, b, cm1, d, m + 1);
291 expr_ += Scalar(c[dir]) * Scalar(
"oo2ze") * ABCm1D_mp1;
295 const F& dm1 = d - _1;
297 auto ABCDm1_mp1 = factory.make_child(a, b, c, dm1, m + 1);
299 expr_ += Scalar(d[dir]) * Scalar(
"oo2ze") * ABCDm1_mp1;
305 if (part == 1 && where == InBra) {
306 F a(Tint->bra(0, 0));
307 F b(Tint->ket(0, 0));
308 F c(Tint->bra(1, 0) - _1);
310 F d(Tint->ket(1, 0));
311 const bool unit_d = (d == F::unit());
312 part1_has_unit |= unit_d;
314 std::shared_ptr<DGVertex> ABCD_m;
315 if (not unit_d) ABCD_m = factory.make_child(a, b, c, d, m);
316 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
319 expr_ = Vector(
"QC")[dir] * ABCD_m + Vector(
"WQ")[dir] * ABCD_mp1;
322 expr_ = Vector(
"WQ")[dir] * ABCD_mp1;
328 const bool ahlrichs_simplification = c.pure_sh() && unit_d;
329 const F& cm1 = c - _1;
330 if (
exists(cm1) && not ahlrichs_simplification) {
331 auto ABCm1D_m = factory.make_child(a, b, cm1, d, m);
332 auto ABCm1D_mp1 = factory.make_child(a, b, cm1, d, m + 1);
333#if LIBINT_GENERATE_FMA
336 expr_ -= Scalar(c[dir]) * Scalar(
"oo2e") *
337 (Scalar(
"roe") * ABCm1D_mp1 - ABCm1D_m);
342 expr_ += Scalar(c[dir]) * Scalar(
"oo2e") *
343 (ABCm1D_m - Scalar(
"roe") * ABCm1D_mp1);
348 const F& dm1 = d - _1;
350 auto ABCDm1_m = factory.make_child(a, b, c, dm1, m);
351 auto ABCDm1_mp1 = factory.make_child(a, b, c, dm1, m + 1);
352#if LIBINT_GENERATE_FMA
355 expr_ -= Scalar(d[dir]) * Scalar(
"oo2e") *
356 (Scalar(
"roe") * ABCDm1_mp1 - ABCDm1_m);
361 expr_ += Scalar(d[dir]) * Scalar(
"oo2e") *
362 (ABCDm1_m - Scalar(
"roe") * ABCDm1_mp1);
367 const F& am1 = a - _1;
369 auto Am1BCD_mp1 = factory.make_child(am1, b, c, d, m + 1);
371 expr_ += Scalar(a[dir]) * Scalar(
"oo2ze") * Am1BCD_mp1;
375 const F& bm1 = b - _1;
377 auto ABm1CD_mp1 = factory.make_child(a, bm1, c, d, m + 1);
379 expr_ += Scalar(b[dir]) * Scalar(
"oo2ze") * ABm1CD_mp1;
385 if (part == 1 && where == InKet) {
386 F a(Tint->bra(0, 0));
387 F b(Tint->ket(0, 0));
388 F c(Tint->bra(1, 0));
389 const bool unit_c = (c == F::unit());
390 part1_has_unit |= unit_c;
391 F d(Tint->ket(1, 0) - _1);
394 std::shared_ptr<DGVertex> ABCD_m;
395 if (not unit_c) ABCD_m = factory.make_child(a, b, c, d, m);
396 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
399 expr_ = Vector(
"QD")[dir] * ABCD_m + Vector(
"WQ")[dir] * ABCD_mp1;
402 expr_ = Vector(
"WQ")[dir] * ABCD_mp1;
407 const F& cm1 = c - _1;
409 auto ABCm1D_m = factory.make_child(a, b, cm1, d, m);
410 auto ABCm1D_mp1 = factory.make_child(a, b, cm1, d, m + 1);
411#if LIBINT_GENERATE_FMA
414 expr_ -= Scalar(c[dir]) * Scalar(
"oo2e") *
415 (Scalar(
"roe") * ABCm1D_mp1 - ABCm1D_m);
420 expr_ += Scalar(c[dir]) * Scalar(
"oo2e") *
421 (ABCm1D_m - Scalar(
"roe") * ABCm1D_mp1);
427 const bool ahlrichs_simplification = d.pure_sh() && unit_c;
428 const F& dm1 = d - _1;
429 if (
exists(dm1) && not ahlrichs_simplification) {
430 auto ABCDm1_m = factory.make_child(a, b, c, dm1, m);
431 auto ABCDm1_mp1 = factory.make_child(a, b, c, dm1, m + 1);
432#if LIBINT_GENERATE_FMA
435 expr_ -= Scalar(d[dir]) * Scalar(
"oo2e") *
436 (Scalar(
"roe") * ABCDm1_mp1 - ABCDm1_m);
441 expr_ += Scalar(d[dir]) * Scalar(
"oo2e") *
442 (ABCDm1_m - Scalar(
"roe") * ABCDm1_mp1);
447 const F& am1 = a - _1;
449 auto Am1BCD_mp1 = factory.make_child(am1, b, c, d, m + 1);
451 expr_ += Scalar(a[dir]) * Scalar(
"oo2ze") * Am1BCD_mp1;
455 const F& bm1 = b - _1;
457 auto ABm1CD_mp1 = factory.make_child(a, bm1, c, d, m + 1);
459 expr_ += Scalar(b[dir]) * Scalar(
"oo2ze") * ABm1CD_mp1;
469 F a(part == 0 && where == InBra ? Tint->bra(0, 0) - _1 : Tint->bra(0, 0));
470 F b(part == 0 && where == InKet ? Tint->ket(0, 0) - _1 : Tint->ket(0, 0));
471 F c(part == 1 && where == InBra ? Tint->bra(1, 0) - _1 : Tint->bra(1, 0));
472 F d(part == 1 && where == InKet ? Tint->ket(1, 0) - _1 : Tint->ket(1, 0));
477 for (
unsigned int dxyz = 0; dxyz < 3; ++dxyz) {
478 if (is_simple() && dxyz != dir)
485 std::shared_ptr<DGVertex> _nullptr;
492 auto ABCD_m = (part == 0 && not part0_has_unit)
493 ? factory.make_child(a, b, c, d, m)
495 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
497 if (part == 0 && where == InBra) {
498 if (not part0_has_unit) {
499 expr_ -= Vector(dA)[dxyz] *
500 (Scalar(
"rho12_over_alpha1") * ABCD_m +
501 Scalar(
"alpha1_rho_over_zeta2") * ABCD_mp1);
504 expr_ -= Vector(dA)[dxyz] *
505 (Scalar(
"alpha1_rho_over_zeta2") * ABCD_mp1);
509 if (part == 0 && where == InKet) {
510 if (not part0_has_unit) {
511 expr_ += Vector(dA)[dxyz] *
512 (Scalar(
"rho12_over_alpha2") * ABCD_m -
513 Scalar(
"alpha1_rho_over_zeta2") * ABCD_mp1);
516 expr_ -= Vector(dA)[dxyz] *
517 (Scalar(
"alpha1_rho_over_zeta2") * ABCD_mp1);
522 expr_ += Vector(dA)[dxyz] * Scalar(
"alpha1_over_zetapluseta") *
536 auto ABCD_m = (part == 0 && not part0_has_unit)
537 ? factory.make_child(a, b, c, d, m)
539 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
541 if (part == 0 && where == InBra) {
542 if (not part0_has_unit) {
543 expr_ += Vector(dB)[dxyz] *
544 (Scalar(
"rho12_over_alpha1") * ABCD_m -
545 Scalar(
"alpha2_rho_over_zeta2") * ABCD_mp1);
548 expr_ -= Vector(dB)[dxyz] *
549 (Scalar(
"alpha2_rho_over_zeta2") * ABCD_mp1);
553 if (part == 0 && where == InKet) {
554 if (not part0_has_unit) {
555 expr_ -= Vector(dB)[dxyz] *
556 (Scalar(
"rho12_over_alpha2") * ABCD_m +
557 Scalar(
"alpha2_rho_over_zeta2") * ABCD_mp1);
560 expr_ -= Vector(dB)[dxyz] *
561 (Scalar(
"alpha2_rho_over_zeta2") * ABCD_mp1);
566 expr_ += Vector(dB)[dxyz] * Scalar(
"alpha2_over_zetapluseta") *
580 auto ABCD_m = (part == 1 && not part1_has_unit)
581 ? factory.make_child(a, b, c, d, m)
583 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
586 expr_ += Vector(dC)[dxyz] * Scalar(
"alpha3_over_zetapluseta") *
590 if (part == 1 && where == InBra) {
591 if (not part1_has_unit) {
592 expr_ -= Vector(dC)[dxyz] *
593 (Scalar(
"rho34_over_alpha3") * ABCD_m +
594 Scalar(
"alpha3_rho_over_eta2") * ABCD_mp1);
597 expr_ -= Vector(dC)[dxyz] *
598 (Scalar(
"alpha3_rho_over_eta2") * ABCD_mp1);
602 if (part == 1 && where == InKet) {
603 if (not part1_has_unit) {
604 expr_ += Vector(dC)[dxyz] *
605 (Scalar(
"rho34_over_alpha4") * ABCD_m -
606 Scalar(
"alpha3_rho_over_eta2") * ABCD_mp1);
609 expr_ -= Vector(dC)[dxyz] *
610 (Scalar(
"alpha3_rho_over_eta2") * ABCD_mp1);
624 auto ABCD_m = (part == 1 && not part1_has_unit)
625 ? factory.make_child(a, b, c, d, m)
627 auto ABCD_mp1 = factory.make_child(a, b, c, d, m + 1);
630 expr_ += Vector(dD)[dxyz] * Scalar(
"alpha4_over_zetapluseta") *
634 if (part == 1 && where == InBra) {
635 if (not part1_has_unit) {
636 expr_ += Vector(dD)[dxyz] *
637 (Scalar(
"rho34_over_alpha3") * ABCD_m -
638 Scalar(
"alpha4_rho_over_eta2") * ABCD_mp1);
641 expr_ -= Vector(dD)[dxyz] *
642 (Scalar(
"alpha4_rho_over_eta2") * ABCD_mp1);
646 if (part == 1 && where == InKet) {
647 if (not part1_has_unit) {
648 expr_ -= Vector(dD)[dxyz] *
649 (Scalar(
"rho34_over_alpha4") * ABCD_m +
650 Scalar(
"alpha4_rho_over_eta2") * ABCD_mp1);
653 expr_ -= Vector(dD)[dxyz] *
654 (Scalar(
"alpha4_rho_over_eta2") * ABCD_mp1);
668#if LIBINT_ENABLE_GENERIC_CODE
669template <
class F,
int part, FunctionPosition where>
671 const std::shared_ptr<CompilationParameters>& cparams)
const {
674 F sh_a(target_->bra(0, 0));
675 F sh_b(target_->ket(0, 0));
676 F sh_c(target_->bra(1, 0));
677 F sh_d(target_->ket(1, 0));
678 const unsigned int max_opt_am = cparams->max_am_opt();
682 if (sh_b.zero() && sh_d.zero() &&
683 (sh_a.norm() > std::max(2 * max_opt_am, 1u) ||
684 sh_c.norm() > std::max(2 * max_opt_am, 1u)) &&
685 (sh_a.norm() > 1u && sh_c.norm() > 1u)) {
689 if (sh_a.zero() && sh_c.zero() &&
690 (sh_b.norm() > std::max(2 * max_opt_am, 1u) ||
691 sh_d.norm() > std::max(2 * max_opt_am, 1u)) &&
692 (sh_b.norm() > 1u && sh_d.norm() > 1u)) {
699template <
class F,
int part, FunctionPosition where>
701 F sh_a(target_->bra(0, 0));
702 F sh_b(target_->ket(0, 0));
703 F sh_c(target_->bra(1, 0));
704 F sh_d(target_->ket(1, 0));
705 const bool xsxs = sh_b.zero() && sh_d.zero();
706 const bool sxsx = sh_a.zero() && sh_c.zero();
715 if (xsxs)
return std::string(
"OSVRR_xs_xs.h");
716 if (sxsx)
return std::string(
"OSVRR_sx_sx.h");
718 if (xsxs)
return std::string(
"OSVRR_xs_xs_deriv.h");
719 if (sxsx)
return std::string(
"OSVRR_sx_sx_deriv.h");
724template <
class F,
int part, FunctionPosition where>
726 const std::shared_ptr<CodeContext>& context,
727 const std::shared_ptr<CodeSymbols>& args)
const {
728 std::ostringstream oss;
729 F sh_a(target_->bra(0, 0));
730 F sh_b(target_->ket(0, 0));
731 F sh_c(target_->bra(1, 0));
732 F sh_d(target_->ket(1, 0));
733 const bool xsxs = sh_b.zero() && sh_d.zero();
734 const bool sxsx = sh_a.zero() && sh_c.zero();
735 bool ahlrichs_simplification =
false;
737 bool part0_has_unit =
false;
738 bool part1_has_unit =
false;
740 ahlrichs_simplification = (sh_a.pure_sh() && sh_b.is_unit()) ||
741 (sh_c.pure_sh() && sh_d.is_unit());
742 unit_s = sh_b.is_unit();
743 part0_has_unit = sh_b.is_unit();
744 part1_has_unit = sh_d.is_unit();
747 ahlrichs_simplification = (sh_b.pure_sh() && sh_a.is_unit()) ||
748 (sh_d.pure_sh() && sh_c.is_unit());
749 unit_s = sh_a.is_unit();
750 part0_has_unit = sh_a.is_unit();
751 part1_has_unit = sh_c.is_unit();
760 oss <<
"using namespace libint2;" << std::endl;
765 oss <<
"libint2::OS" << (ahlrichs_simplification ?
"A" :
"")
766 <<
"VRR_xs_xs<" << part <<
"," << sh_a.norm() <<
"," << sh_c.norm()
770 oss <<
"libint2::OS" << (ahlrichs_simplification ?
"A" :
"")
771 <<
"VRR_sx_sx<" << part <<
"," << sh_b.norm() <<
"," << sh_d.norm()
774 if (not ahlrichs_simplification) oss << (unit_s ?
"true," :
"false,");
775 oss << ((context->cparams()->max_vector_length() == 1) ?
"false" :
"true");
776 oss <<
">::compute(inteval";
778 oss <<
"," << args->symbol(0);
779 if (not ahlrichs_simplification &&
783 const unsigned int nargs = args->n();
784 for (
unsigned int a = 1; a < nargs; a++) {
785 oss <<
"," << args->symbol(a);
790 oss <<
"libint2::OS" << (ahlrichs_simplification ?
"A" :
"")
791 <<
"VRR_xs_xs_deriv<" << part <<
"," << sh_a.norm() <<
","
792 << sh_c.norm() <<
",";
795 oss <<
"libint2::OS" << (ahlrichs_simplification ?
"A" :
"")
796 <<
"VRR_sx_sx_deriv<" << part <<
"," << sh_b.norm() <<
","
797 << sh_d.norm() <<
",";
800 for (
unsigned int xyz = 0; xyz < 3; ++xyz)
801 oss << sh_a.deriv().d(xyz) <<
",";
802 for (
unsigned int xyz = 0; xyz < 3; ++xyz)
803 oss << sh_b.deriv().d(xyz) <<
",";
804 for (
unsigned int xyz = 0; xyz < 3; ++xyz)
805 oss << sh_c.deriv().d(xyz) <<
",";
806 for (
unsigned int xyz = 0; xyz < 3; ++xyz)
807 oss << sh_d.deriv().d(xyz) <<
",";
808 if (not ahlrichs_simplification) oss << (unit_s ?
"true," :
"false,");
809 oss << ((context->cparams()->max_vector_length() == 1) ?
"false" :
"true");
810 oss <<
">::compute(inteval";
816 oss <<
"," << args->symbol(0);
817 if (not ahlrichs_simplification &&
822 unsigned int arg = 1;
825 (ahlrichs_simplification ? 3 : (unit_s ? 5 : 6));
827 oss <<
"," << args->symbol(arg);
829 for (
unsigned int xyz = 0; xyz < 3; ++xyz) {
830 if (sh_a.deriv().d(xyz) > 0) {
833 << (part0_has_unit ? std::to_string(0) : args->symbol(arg++));
834 oss <<
"," << args->symbol(arg++);
837 if (sh_b.deriv().d(xyz) > 0) {
840 << (part0_has_unit ? std::to_string(0) : args->symbol(arg++));
841 oss <<
"," << args->symbol(arg++);
844 if (sh_c.deriv().d(xyz) > 0) {
845 oss <<
"," << args->symbol(arg++);
848 if (sh_d.deriv().d(xyz) > 0) {
849 oss <<
"," << args->symbol(arg++);
Set of basis functions.
Definition bfset.h:43
Helps GenericRecurrenceRelation to work around the compiler problem with make_child.
Definition generic_rr.h:150
Generic integral over a two-body operator with one bfs for each particle in bra and ket.
Definition integral_11_11.h:36
RRImpl must inherit GenericRecurrenceRelation<RRImpl>
Definition generic_rr.h:47
bool is_simple() const override
Implementation of RecurrenceRelation::is_simple()
Definition generic_rr.h:81
static bool default_directional()
is this recurrence relation parameterized by a direction (x, y, or z).
Definition generic_rr.h:101
static std::shared_ptr< RRImpl > Instance(const std::shared_ptr< TargetType > &Tint, unsigned int dir)
Return an instance if applicable, or a null pointer otherwise.
Definition generic_rr.h:55
Represents cartesian derivatives of atom-centered basis functions.
Definition bfset.h:101
bool zero() const
norm() == 0
Definition bfset.h:158
void inc(unsigned int xyz, unsigned int c=1u)
Add c quanta along xyz.
Definition bfset.h:140
VRR Recurrence Relation for 2-e ERI.
Definition vrr_11_twoprep_11.h:36
static bool directional()
Default directionality.
Definition vrr_11_twoprep_11.h:48
these objects help to construct BraketPairs
Definition src/bin/libint/braket.h:275
Defaults definitions for various parameters assumed by Libint.
Definition algebra.cc:24
bool exists(const IncableBFSet &A)
Return true if A is valid.
Definition bfset.h:96
DefaultQuantumNumbers< unsignedint, 1 >::Result mType
mType is the type that describes the auxiliary index of standard 2-body repulsion integrals
Definition quanta.h:395
std::string to_string(const T &x)
Converts x to its string representation.
Definition entity.h:121
TrivialBFSet<T> defines static member result, which is true if T is a basis function set consisting o...
Definition bfset.h:906