📄 array_tlp.hpp
字号:
TheOperators->Add("<-", new OneOperator2_<KN<K> *,KN<K> *,Z>(&set_init), new InitArrayfromArray<K,true>, new OneOperator2_<KN<K> *,KN<K> *,KN<K> >(&set_init), new OneOperator2_<KN<K> *,KN<K> *,KN_<K> >(&set_init) // new OneOperator2_<KN<K> *,KN<K> *,KN<K> * >(&set_initp) ); TheOperators->Add("<-", new OneOperator3_<KNM<K> *,KNM<K> *,Z,Z>(&set_init2), new InitMatfromAArray<K,true> ); Add<KN<K> *>("<-","(",new OneOperator2_<KN<K> *,KN<K> *,Z>(&set_init)); // Add<KN<K> *>("<-","(",new OneOperator2_<KN<K> *,KN<K> *,KN<K> >(&set_init)); //Add<KN<K> *>("<-","(",new OneOperator2_<KN<K> *,KN<K> *,KN_<K> >(&set_init)); // Add<KN<K> *>("<-","(",new OneOperator2_<KN<K> *,KN<K> *,KN<K> * >(&set_initp)); Add<KNM<K> *>("<-","(",new OneOperator3_<KNM<K> *,KNM<K> *,Z,Z>(&set_init2)); Add<KN<K> *>("<-","(",new InitArrayfromArray<K,true>); Add<KNM<K> *>("<-","(",new InitMatfromAArray<K,true>); Add<KN<K> *>("n",".",new OneOperator1<Z,KN<K> *>(get_n)); Add<KNM<K> *>("n",".",new OneOperator1<Z,KNM<K> *>(get_n)); Add<KNM<K> *>("m",".",new OneOperator1<Z,KNM<K> *>(get_m)); // AddOpeqarray<set_eqarray,KN,K>("="); TheOperators->Add("=", new InitArrayfromArray<K,false> ); TheOperators->Add("=", new InitMatfromAArray<K,false> ); TheOperators->Add("=", new SetArrayofKNfromKN<K> ); TheOperators->Add("=", new OneBinaryOperator<set_eqarray<KN<K> ,K > > , new OneBinaryOperator<set_eqarray<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eqarray<KN<K> ,KN_<K> > > , // Add FH juin 2005 new OneBinaryOperator<set_eqarraypd<KN<K> ,Add_Mulc_KN_<K>* > > , // Add FH aug 2005 new OneBinaryOperator<set_eqarraypd<KN<K> ,if_arth_KN_<K>* > > , new OneBinaryOperator<set_eqarrayp<KN<K> ,KN<K>* > > ); // add august 2007 TheOperators->Add("<-", // new OneBinaryOperator<set_eqarray<KN<K> ,K > > , new OneBinaryOperator<init_eqarray<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<init_eqarray<KN<K> ,KN_<K> > > , // Add FH juin 2005 new OneBinaryOperator<init_eqarraypd<KN<K> ,Add_Mulc_KN_<K>* > > , // Add FH aug 2005 new OneBinaryOperator<init_eqarraypd<KN<K> ,if_arth_KN_<K>* > > // new OneBinaryOperator<init_eqarrayp<KN<K> ,KN<K>* > > ); TheOperators->Add("=", new OneBinaryOperator<set_eqarray<KNM<K> ,K > > , new OneBinaryOperator<set_eqarrayp<KNM<K> , KNM<K> * > > ); TheOperators->Add("=", new OneBinaryOperator<set_eq_array<KN_<K> ,K > > , new OneBinaryOperator<set_eq_array<KN_<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eq_array<KN_<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eq_array<KN_<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eq_array<KN_<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eq_array<KN_<K> ,KN_<K> > > , // add FH juin 2005 new OneBinaryOperator<set_eq_array<KN_<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eq_array<KN_<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eq_arraypd<KN_<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eq_arraypd<KN_<K> ,Add_Mulc_KN_<K>* > > , // Add FH aug 2005 new OneBinaryOperator<set_eq_arrayp<KN_<K> ,KN<K>* > > ); TheOperators->Add("+=", new OneBinaryOperator<set_eqarray_add<KN<K> ,K > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eqarraypd_add<KN<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eqarraypd_add<KN<K> ,if_arth_KN_<K>* > > , new OneBinaryOperator<set_eqarray_add<KN<K> ,KN_<K> > > , // Add FH juin 2005 new OneBinaryOperator<set_eqarrayp_add<KN<K> ,KN<K>* > > ); TheOperators->Add("+=", new OneBinaryOperator<set_eq_array_add<KN_<K> ,K > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eq_array_add<KN_<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eq_arraypd_add<KN_<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eq_arraypd_add<KN_<K> ,if_arth_KN_<K>* > > , new OneBinaryOperator<set_eq_arrayp_add<KN_<K> ,KN<K>* > > ); TheOperators->Add("-=", new OneBinaryOperator<set_eqarray_sub<KN<K> ,K > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eqarraypd_sub<KN<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eqarraypd_sub<KN<K> ,if_arth_KN_<K>* > > , new OneBinaryOperator<set_eqarray_sub<KN<K> ,KN_<K> > > , // Add FH juin 2005 new OneBinaryOperator<set_eqarrayp_sub<KN<K> ,KN<K>* > > ); TheOperators->Add("-=", new OneBinaryOperator<set_eq_array_sub<KN_<K> ,K > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,DotStar_KN_<K> > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,DotSlash_KN_<K> > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eq_arraypd_sub<KN_<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eq_arraypd_sub<KN_<K> ,if_arth_KN_<K>* > > , new OneBinaryOperator<set_eq_arrayp_sub<KN_<K> ,KN<K>* > > ); TheOperators->Add("*=", new OneBinaryOperator<set_eqarray_mul<KN<K> ,K > > , new OneBinaryOperator<set_eqarray_mul<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eqarray_mul<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eqarray_mul<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eqarray_mul<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eqarraypd_mul<KN<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eqarrayp_mul<KN<K> ,KN<K>* > > ); TheOperators->Add("*=", new OneBinaryOperator<set_eq_array_mul<KN_<K> ,K > > , new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eq_arraypd_mul<KN_<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eq_arrayp_mul<KN_<K> ,KN<K>* > > );// FH correction 01 nov 2005 FH copy paste mistake eq_ exchange ok v2.0-3 TheOperators->Add("/=", new OneBinaryOperator<set_eqarray_div<KN<K> ,K > > , new OneBinaryOperator<set_eqarray_div<KN<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eqarray_div<KN<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eqarray_div<KN<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eqarray_div<KN<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eqarraypd_div<KN<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eqarrayp_div<KN<K> ,KN<K>* > > ); TheOperators->Add("/=", new OneBinaryOperator<set_eq_array_div<KN_<K> ,K > > , new OneBinaryOperator<set_eq_array_div<KN_<K> ,Add_KN_<K> > > , new OneBinaryOperator<set_eq_array_div<KN_<K> ,Sub_KN_<K> > > , new OneBinaryOperator<set_eq_array_div<KN_<K> ,Mulc_KN_<K> > > , new OneBinaryOperator<set_eq_array_div<KN_<K> ,Mul_KNM_KN_<K> > > , new OneBinaryOperator<set_eq_arraypd_div<KN_<K> ,Add_Mulc_KN_<K>* > > , new OneBinaryOperator<set_eq_arrayp_div<KN_<K> ,KN<K>* > > );// end correction TheOperators->Add("+", new OneBinaryOperator<Op2_add0<Add_KN_<K>,KN_<K>,KN_<K> > >, new OneBinaryOperator<Op2_add0<Add_KN_<K>,KN_<K>,KN_<K> > >(knrp,knrp), new OneBinaryOperator<Op2_add__n<Add_Mulc_KN_<K>,Mulc_KN_<K>,Mulc_KN_<K> > >, new OneBinaryOperator<Op2_addp_n<Add_Mulc_KN_<K>,KN<K>*,Mulc_KN_<K> > >, new OneBinaryOperator<Op2_add_pn<Add_Mulc_KN_<K>,Mulc_KN_<K> ,KN<K>* > > ); TheOperators->Add("-", new OneBinaryOperator<Op2_sub0<Sub_KN_<K>,KN_<K> ,KN_<K> > >, new OneBinaryOperator<Op2_sub0<Sub_KN_<K>,KN_<K> ,KN_<K> > >(knrp,knrp), new OneUnaryOperator<Op1_subp<Mulc_KN_<K>,KN<K>*> >, new OneBinaryOperator<Op2_sub__n<Add_Mulc_KN_<K>,Mulc_KN_<K>,Mulc_KN_<K> > >, new OneBinaryOperator<Op2_subp_n<Add_Mulc_KN_<K>,KN<K>*,Mulc_KN_<K> > >, new OneBinaryOperator<Op2_sub_pn<Add_Mulc_KN_<K>,Mulc_KN_<K> ,KN<K>* > > ); TheOperators->Add("*", new OneBinaryOperator<Op2_mulpc<Mulc_KN_<K>,KN<K>*,K> >, new OneBinaryOperator<Op2_mulcp<Mulc_KN_<K>,K,KN<K>*> >, new OneBinaryOperator<Op2_mulc<Mulc_KN_<K>,KN_<K>,K> >, new OneBinaryOperator<Op2_mulc<Mulc_KN_<K>,K,KN_<K> > >, new OneBinaryOperator<Op2_mulpcp<Mul_KNM_KN_<K>,KNM<K>*,KN<K>*> >, new OneBinaryOperator<Op2_dotproduct<K> >, new OneBinaryOperator<Op2_dotproduct_<K> > ,new OneBinaryOperator<Op2_pbuild<outProduct_KN_<K>,KN<K>*,Transpose<KN_<K> > > > ,new OneBinaryOperator<Op2_pbuild<outProduct_KN_<K>,KN_<K>,Transpose<KN_<K> > > > ,new OneBinaryOperator<Op2_pbuild<outProduct_KN_<K>,Mulc_KN_<K>,Transpose<KN_<K> > > > );// nouvel operateur TheOperators->Add("+=", new OneBinaryOperator<set_eqarraypd_add<KNM<K> ,outProduct_KN_<K>* > > ); TheOperators->Add("-=", new OneBinaryOperator<set_eqarraypd_sub<KNM<K> ,outProduct_KN_<K>* > > ); TheOperators->Add("=", new OneBinaryOperator<set_eqarraypd<KNM<K> ,outProduct_KN_<K>* > > );// not tested TheOperators->Add("?:", new OneTernaryOperator3<Op3_p<if_arth_KN_<K>, KN_<K> > > , new OneTernaryOperator3<Op3_paac<K > > , new OneTernaryOperator3<Op3_pacc<K > > , new OneTernaryOperator3<Op3_paca<K > > );// end ...// add mars 2006 // atype<KN_<K> >()->Add("(","",new OneOperator2_< pair<KN_<K>,KN_<long> > * ,KN_<K> , KN_<long> >(pBuild< KN_<K> , KN_<long> >)); atype<KN_<K> >()->Add("(","",new OneOperator2_< pair<KN_<K>,KN_<long> > * ,KN_<K> , KN_<long> >(pBuild< KN_<K> , KN_<long> >,atype<KN_<K> >(), atype<KN_<long> >() )); atype<KN<K> *>()->Add("(","",new OneOperator2_< pair<KN_<K>,KN_<long> > * ,KN_<K> , KN_<long> >(pBuild< KN_<K> , KN_<long> >,atype<KN<K> * >(), atype<KN_<long> >() )); atype<KN_<K> >()->Add("(","",new OneOperator2_< pair<KN_<K>,KN_<long> > * ,KN_<K> , KN_<long> >(pBuild< KN_<K> , KN_<long> >,atype<KN_<K> >(), knlp )); atype<KN<K> *>()->Add("(","",new OneOperator2_< pair<KN_<K>,KN_<long> > * ,KN_<K> , KN_<long> >(pBuild< KN_<K> , KN_<long> >,atype<KN<K> * >(), knlp )); TheOperators->Add("=", new OneBinaryOperator<set_A_BI< K,Z,affectation<K> > > , new OneBinaryOperator<set_AI_B< K,Z,affectation<K> > > ); TheOperators->Add("+=", new OneBinaryOperator<set_A_BI< K,Z,affectation_add<K> > > , new OneBinaryOperator<set_AI_B< K,Z,affectation_add<K> > > ); TheOperators->Add("-=", new OneBinaryOperator<set_A_BI< K,Z,affectation_sub<K> > > , new OneBinaryOperator<set_AI_B< K,Z,affectation_sub<K> > > );// fin TheOperators->Add("\'", new OneOperator1<Transpose<KN_<K> >,KN<K> *>(&Build<Transpose<KN_<K> >,KN<K> *>), new OneOperator1<Transpose<KN_<K> >,KN_<K> >(&Build<Transpose<KN_<K> >,KN_<K> >), new OneOperator1<Transpose<KNM<K> * >, KNM<K> * >(&Build<Transpose<KNM<K> * >,KNM<K> * >) ); TheOperators->Add(".*", new OneBinaryOperator<Op2_build<DotStar_KN_<K>,KN_<K>,KN_<K> > >, new OneBinaryOperator<Op2_build<DotStar_KN_<K>,KN_<K>,KN_<K> > >(knrp,knrp), new OneBinaryOperator<Op2_build<DotStar_KN_<K>,KN_<K>,KN_<K> > >(knr_,knrp), new OneBinaryOperator<Op2_build<DotStar_KN_<K>,KN_<K>,KN_<K> > >(knrp,knr_) ); TheOperators->Add("./", new OneBinaryOperator<Op2_build<DotSlash_KN_<K>,KN_<K>,KN_<K> > >, new OneBinaryOperator<Op2_build<DotSlash_KN_<K>,KN_<K>,KN_<K> > >(knrp,knrp), new OneBinaryOperator<Op2_build<DotSlash_KN_<K>,KN_<K>,KN_<K> > >(knr_,knrp), new OneBinaryOperator<Op2_build<DotSlash_KN_<K>,KN_<K>,KN_<K> > >(knrp,knr_) ); TheOperators->Add("<<", new OneBinaryOperator<PrintPnd<KN<K>*> >, new OneBinaryOperator<PrintPnd<KNM<K>*> >, new OneBinaryOperator<Print<KN_<K> > > ); TheOperators->Add(">>", new OneBinaryOperator<Op_ReadKN<K> > ); map_type[typeid(MyMap<String,K>*).name()] = new ForEachType<MyMap<String,K>*>(Initialize<MyMap<String,K> >,Delete<MyMap<String,K> >) ; map_type_of_map[make_pair(atype<string*>(),atype<K>())]=atype<MyMap<String,K>*>(); atype<MyMap<String,K>*>()->Add("[","",new OneOperator2_<K*,MyMap<String,K>*,string*>(get_element<K>));}template<class R,class A,class B=A,class BB=B>class OneOperator1F_KN_ : public OneOperator { aType r; // return type typedef A (*func)( B ) ; func f; public: E_F0 * code(const basicAC_F0 & args) const { return new Op(f,t[0]->CastTo(args[0]));} OneOperator1F_KN_(func ff): OneOperator(map_type[typeid(R).name()],map_type[typeid(BB).name()]),f(ff){} class Op :public E_F0 { public: typedef A (*func)(B ) ; func f; Expression a; Op(func ff,Expression aa) : f(ff),a(aa) {} AnyType operator()(Stack s) const {return SetAny<R>( R(f, GetAny<BB>( (*a)(s)) ) );} bool EvaluableWithOutStack() const {return a->EvaluableWithOutStack() ;} // bool MeshIndependent() const {return a->MeshIndependent();} // }; };template<class K,class KK>void ArrayOperatorF(){ Dcl_Type<F_KN_<K,K,KK> >(); Global.Add("exp","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(exp)); Global.Add("log","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(log)); Global.Add("log10","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(log10)); Global.Add("sqrt","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(sqrt)); Global.Add("sin","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(sin)); Global.Add("cos","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(cos)); Global.Add("tan","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(tan)); Global.Add("cosh","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(cosh)); Global.Add("sinh","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(sinh)); Global.Add("tanh","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(tanh)); // Global.Add("acos","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(acos)); // Global.Add("asin","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(asin)); // Global.Add("atan","(",new OneOperator1F_KN_<F_KN_<K,K,KK>,K,KK,KN_<K> >(atan)); TheOperators->Add("=",new OneBinaryOperator<set_eq_array<KN_<K> ,F_KN_<K,K,KK> > > ); // add FH juin 2005 TheOperators->Add("+=",new OneBinaryOperator<set_eq_array_add<KN_<K> ,F_KN_<K,K,KK> > > ); // add FH juin 2005 TheOperators->Add("-=",new OneBinaryOperator<set_eq_array_sub<KN_<K> ,F_KN_<K,K,KK> > > ); // add FH juin 2005 TheOperators->Add("/=",new OneBinaryOperator<set_eq_array_div<KN_<K> ,F_KN_<K,K,KK> > > ); // add FH juin 2005 TheOperators->Add("*=",new OneBinaryOperator<set_eq_array_mul<KN_<K> ,F_KN_<K,K,KK> > > ); // add FH juin 2005 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -