Macaulay2 Engine
Loading...
Searching...
No Matches

◆ lift() [8/8]

template<typename RingType>
bool M2::ConcreteRing< RingType >::lift ( const Ring * S,
const ring_elem f,
ring_elem & result ) const
virtual

Implements Ring.

Definition at line 814 of file aring-glue.hpp.

817{
818 const Ring *S = this;
819
820 namespace RP = RingPromoter;
821 if (R == S)
822 {
823 result_gR = gS;
824 return true;
825 }
826 if (R == globalZZ)
827 {
828 printf("error!! lift called with no ZZ lifting method\n");
829 // MES:TODO!! WRITE ME
830 return true;
831 }
832 switch (R->ringID())
833 {
834 case M2::ring_ZZp:
835 switch (S->ringID())
836 {
837 case M2::ring_ZZp:
838 return false;
841 default:
842 return false;
843 }
844 break;
846 switch (S->ringID())
847 {
848 case M2::ring_ZZp:
852 R, S, result_gR, gS);
853 default:
854 return false;
855 }
856 case M2::ring_RR:
857 switch (S->ringID())
858 {
859 case M2::ring_RR:
861 case M2::ring_RRR:
863 case M2::ring_RRi:
865 case M2::ring_CC:
867 case M2::ring_CCC:
869 default:
870 return false;
871 }
872 case M2::ring_RRR:
873 switch (S->ringID())
874 {
875 case M2::ring_RR:
877 case M2::ring_RRR:
879 case M2::ring_RRi:
881 case M2::ring_CC:
883 case M2::ring_CCC:
885 default:
886 return false;
887 }
888 case M2::ring_CC:
889 switch (S->ringID())
890 {
891 case M2::ring_CC:
893 case M2::ring_CCC:
895 default:
896 return false;
897 }
898 case M2::ring_CCC:
899 switch (S->ringID())
900 {
901 case M2::ring_CC:
903 case M2::ring_CCC:
905 default:
906 return false;
907 }
908 default:
909#ifndef NDEBUG
911 "oh no: rings not in list\n, R->ringID()=%d S->ringID()=%d\n",
912 R->ringID(),
913 S->ringID());
914#endif
915 break;
916 };
917 return false;
918}
std::unique_ptr< RingType > R
virtual M2::RingID ringID() const
Ring()
Definition ring.hpp:136

References globalZZ, R, Ring::Ring(), M2::ring_CC, M2::ring_CCC, M2::ring_RR, M2::ring_RRi, M2::ring_RRR, M2::ring_ZZp, M2::ring_ZZpFfpack, and Ring::ringID().