00001 #ifndef _SW_MAKER_H_ 00002 #define _SW_MAKER_H_ 00003 00004 #include "exp_classes.H" 00005 #include "ftwo.H" 00006 #include "my_gmp.H" 00007 #include "repring.H" 00008 #include "algebras.H" 00009 using namespace std; 00010 00012 00033 class SW_Maker : public Exponentiator<F_2> { 00034 private: 00035 //silly thing to extract "xx" from "toto(xx)" 00036 string name_of_rep(const string& name_chern); 00037 //silly thing to extract i from "toto_i(xx)" 00038 long index_of_chern_class(const string& name_chern); 00039 // this returns n! / i!(n-i)! mod 2, even if n < 0. 00040 F_2 comb(long n, long i);//used in Wu's formula ! 00041 00042 public: 00044 GradedAlgebra<F_2> *chern_ring; 00046 AbstractHomomorphism<F_2> chern_sw; 00048 void start(RealRepresentationRing *thesource, 00049 GradedAlgebra<F_2> *thetarget, 00050 GradedAlgebra<F_2> *the_chern_ring=0); 00052 00059 virtual void create_regular_variables(string prefix); 00061 00071 void add_complex_relations(); 00073 00088 AffineHomomorphism<F_2> translate_homomorphism(const AffineHomomorphism<QQ>& r, 00089 SW_Maker& sw); 00090 }; 00091 00092 00093 00094 #endif 00095 00096