Changeset 94894c73 in tol
- Timestamp:
- Oct 12, 2009, 5:02:45 PM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 5d790bd
- Parents:
- 98a619e
- Location:
- tol
- Files:
-
- 5 edited
-
btol/vmatrix_type/tol_bvmat_bsr_impl.h (modified) (8 diffs)
-
btol/vmatrix_type/vmat_bsr.cpp (modified) (2 diffs)
-
btol/vmatrix_type/vmat_bsr_joint.cpp (modified) (6 diffs)
-
btol/vmatrix_type/vmat_bsr_primary.cpp (modified) (6 diffs)
-
stdlib/math/stat/models/bayesian/bysMcmc/bsr/_import.tol (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/btol/vmatrix_type/tol_bvmat_bsr_impl.h
r98a619e r94894c73 552 552 553 553 /////////////////////////////////////////////////////////////////////////////// 554 class assign_reg_matrix 555 /////////////////////////////////////////////////////////////////////////////// 556 { 557 public: 558 BText& desc_; 559 BText& expr_; 560 BVMat& vmat_; 561 562 assign_reg_matrix(BText& desc, BText& expr, BVMat& vmat) 563 : desc_(desc), 564 expr_(expr), 565 vmat_(vmat) 566 {} 567 void action(const std::string& str) const 568 { 569 assign_reg_matrix& t = *((assign_reg_matrix*)this); 570 t.expr_.Copy(str.c_str()+2, str.size()-4); 571 //Std(BSR()+" assign_reg_matrix\n desc_ = "+desc_+"\n expr_="+t.expr_); 572 BSyntaxObject* obj = GraAnything()->EvaluateExpr(t.expr_); 573 if(!obj) 574 { 575 Error(BText("Cannot create ")+desc_+" from TOL expression \n"+expr_); 576 } 577 else if(obj->Grammar()==GraVMatrix()) 578 { 579 t.vmat_ = VMat(obj); 580 } 581 else if(obj->Grammar()==GraMatrix()) 582 { 583 BMat& M = Mat(obj); 584 t.vmat_.DMat2VMat((BMatrix<double>&)M, false, .50, 0.0); 585 } 586 else 587 { 588 Error(BText("Cannot create ")+desc_+" from TOL expression \n"+expr_+"\n" 589 " This expression is returning a "+obj->Grammar()->Name()+ 590 " instead of a Matrix or VMatrix"); 591 } 592 } 593 void operator()(const std::string& str) const 594 { 595 action(str); 596 } 597 598 template<typename IteratorT> 599 void operator()(IteratorT first, IteratorT last) const 600 { 601 std::string str; 602 str.assign(first, last); 603 action(str); 604 } 605 606 }; 607 608 609 /////////////////////////////////////////////////////////////////////////////// 610 class assign_const_sigma_to_res 611 /////////////////////////////////////////////////////////////////////////////// 612 { 613 public: 614 noise_info* noise_info_; 615 assign_const_sigma_to_res( noise_info& noise_inf) 616 : noise_info_(&noise_inf) 617 {} 618 void action(const double d) const 619 { 620 noise_info* noise_inf = noise_info_; 621 //Std(BText("\nassign_const_sigma_to_res(")+d+")"); 622 noise_inf->sigmaName = ""; 623 noise_inf->sigmaIdx = -1; 624 noise_inf->sigmaCte = d; 625 noise_inf->sigPriExpr = ""; 626 noise_inf->cov.Eye(noise_inf->size,noise_inf->size,0,d); 627 noise_inf->L.Eye(noise_inf->size,noise_inf->size,0,sqrt(d)); 628 noise_inf->Li.Eye(noise_inf->size,noise_inf->size,0,1/sqrt(d)); 629 noise_inf->arimaExpr= ""; 630 //Std(BText(" sigmaIdx=-1")); 631 //Std(BText(" sigmaCte=")+noise_info_->sigmaCte); 632 } 633 void operator()(const double d) const 634 { 635 action(d); 636 } 637 void action(const std::string& str) const 638 { 639 action(atof(str.c_str())); 640 } 641 template<typename IteratorT> 642 void operator()(IteratorT first, IteratorT last) const 643 { 644 std::string str; 645 str.assign(first, last); 646 action(str); 647 } 648 }; 649 650 /////////////////////////////////////////////////////////////////////////////// 554 651 class assign_sigma_to_noise 555 652 /////////////////////////////////////////////////////////////////////////////// … … 577 674 //Std(BText("\nassign_sigma_to_noise(")+str.c_str()+")"); 578 675 //Std(BText("sigmaIdx=")+sigInf->index); 579 t->noise_info_->sigmaName = sigInf.name;580 t->noise_info_->sigmaIdx = sigInf.index;581 t->noise_info_->sigmaCte = BDat::Nan();582 t->noise_info_-> covExpr= "";676 t->noise_info_->sigmaName = sigInf.name; 677 t->noise_info_->sigmaIdx = sigInf.index; 678 t->noise_info_->sigmaCte = BDat::Nan(); 679 t->noise_info_->sigPriExpr = ""; 583 680 t->noise_info_->cov.Eye(noise_info_->size,noise_info_->size,0,1); 584 t->noise_info_->covIsDiag=true; 681 t->noise_info_->L = t->noise_info_->cov; 682 t->noise_info_->Li = t->noise_info_->cov; 683 t->noise_info_->arimaExpr= ""; 585 684 } 586 685 void operator()(const boost::reference_wrapper<int>& pos) const … … 648 747 649 748 /////////////////////////////////////////////////////////////////////////////// 650 class assign_reg_matrix 651 /////////////////////////////////////////////////////////////////////////////// 652 { 653 public: 654 BText& desc_; 655 BText& expr_; 656 BVMat& vmat_; 657 658 assign_reg_matrix(BText& desc, BText& expr, BVMat& vmat) 659 : desc_(desc), 660 expr_(expr), 661 vmat_(vmat) 749 class assign_cov_to_res 750 /////////////////////////////////////////////////////////////////////////////// 751 { 752 public: 753 noise_info* noise_info_; 754 assign_cov_to_res(noise_info& noise_inf) 755 : noise_info_(&noise_inf) 662 756 {} 663 757 void action(const std::string& str) const 664 758 { 665 assign_reg_matrix& t = *((assign_reg_matrix*)this); 666 t.expr_.Copy(str.c_str()+2, str.size()-4); 667 //Std(BSR()+" assign_reg_matrix\n desc_ = "+desc_+"\n expr_="+t.expr_); 668 BSyntaxObject* obj = GraAnything()->EvaluateExpr(t.expr_); 669 if(!obj) 670 { 671 Error(BText("Cannot create ")+desc_+" from TOL expression \n"+expr_); 672 } 673 else if(obj->Grammar()==GraVMatrix()) 674 { 675 t.vmat_ = VMat(obj); 676 } 677 else if(obj->Grammar()==GraMatrix()) 678 { 679 BMat& M = Mat(obj); 680 t.vmat_.DMat2VMat((BMatrix<double>&)M, false, .50, 0.0); 681 } 759 noise_info* noise_inf = noise_info_; 760 //Std(BText("\nassign_covariance_to_res(")+str.c_str()+")"); 761 BText expr(str.c_str()+2, str.size()-4); 762 BUserVMat* u = (BUserVMat*)GraVMatrix()->EvaluateExpr(expr); 763 double s2 = 1; 764 if(noise_inf->sigmaName.size()) 765 { 766 s2 = noise_inf->sigmaCte; 767 } 768 int err = 0; 769 if(!u) 770 { 771 err = -999999; 772 Error(BSR()+"A valid VMatrix expression was expected as covariance " 773 "instead of "+expr+" for noise "+noise_inf->name.c_str()); 774 } 682 775 else 683 776 { 684 Error(BText("Cannot create ")+desc_+" from TOL expression \n"+expr_+"\n" 685 " This expression is returning a "+obj->Grammar()->Name()+ 686 " instead of a Matrix or VMatrix"); 687 } 688 } 689 void operator()(const std::string& str) const 690 { 691 action(str); 777 BVMat &cov=noise_inf->cov; 778 BVMat &L=noise_inf->L; 779 BVMat &Li=noise_inf->Li; 780 BVMat Lf, D; 781 cov = u->Contens(); 782 int r = cov.Rows(); 783 int c = cov.Columns(); 784 int n = noise_inf->size; 785 if((r!=n)||(c!=n)) 786 { 787 err = -999998; 788 Error(BSR()+"An square ("+n+"x"+n+") VMatrix expression was expected as " 789 "covariance instead of ("+r+"x"+c+") "+expr+ 790 " for noise "+noise_inf->name.c_str()); 791 } 792 else 793 { 794 err = BVMat::CholeskiFactor(cov,Lf,BVMat::ECFO_XtX,true,true,true); 795 if(err) 796 { 797 Error(BSR()+"Non symmetric positive definite covariance matrix "+expr+ 798 " for noise "+noise_inf->name.c_str()); 799 } 800 else 801 { 802 D.Eye(n); 803 L.Convert(Lf,BVMat::ESC_chlmRsparse); 804 err = BVMat::CholeskiSolve(Lf, D, Li, BVMat::ECSS_L); 805 if(err) 806 { 807 Error(BSR()+"Cannot inverse Choleski Factor of covariance matrix"+ 808 " for noise "+noise_inf->name.c_str()); 809 } 810 } 811 } 812 } 692 813 } 693 814 … … 699 820 action(str); 700 821 } 701 702 }; 703 704 705 /////////////////////////////////////////////////////////////////////////////// 706 class assign_const_sigma_to_res 822 }; 823 824 /////////////////////////////////////////////////////////////////////////////// 825 class assign_covinv_to_res 707 826 /////////////////////////////////////////////////////////////////////////////// 708 827 { 709 828 public: 710 829 noise_info* noise_info_; 711 assign_co nst_sigma_to_res( noise_info& noise_inf)830 assign_covinv_to_res(noise_info& noise_inf) 712 831 : noise_info_(&noise_inf) 713 832 {} 714 void action(const double d) const715 {716 noise_info* noise_inf = noise_info_;717 //Std(BText("\nassign_const_sigma_to_res(")+d+")");718 noise_inf->sigmaName = "";719 noise_inf->sigmaIdx = -1;720 noise_inf->sigmaCte = d;721 noise_inf->covExpr = "";722 noise_inf->cov.Eye(noise_inf->size,noise_inf->size,0,noise_inf->sigmaCte);723 noise_inf->covIsDiag=true;724 //Std(BText(" sigmaIdx=-1"));725 //Std(BText(" sigmaCte=")+noise_info_->sigmaCte);726 }727 void operator()(const double d) const728 {729 action(d);730 }731 833 void action(const std::string& str) const 732 834 { 733 action(atof(str.c_str())); 734 } 835 noise_info* noise_inf = noise_info_; 836 //Std(BText("\nassign_covariance_to_res(")+str.c_str()+")"); 837 BText expr(str.c_str()+2, str.size()-4); 838 BUserVMat* u = (BUserVMat*)GraVMatrix()->EvaluateExpr(expr); 839 int err = 0; 840 if(!u) 841 { 842 err = -999999; 843 Error(BSR()+"A valid VMatrix expression was expected as inverse covariance " 844 "instead of "+expr+" for noise "+noise_inf->name.c_str()); 845 } 846 else 847 { 848 BVMat &cov=noise_inf->cov; 849 BVMat &L=noise_inf->L; 850 BVMat &Li=noise_inf->Li; 851 BVMat Litf, Lit, D, covi; 852 covi = u->Contens(); 853 int r = covi.Rows(); 854 int c = covi.Columns(); 855 int n = noise_inf->size; 856 if((r!=n)||(c!=n)) 857 { 858 err = -999998; 859 Error(BSR()+"An square ("+n+"x"+n+") VMatrix expression was expected as " 860 "inverse covariance instead of ("+r+"x"+c+") "+expr+ 861 " for noise "+noise_inf->name.c_str()); 862 } 863 else 864 { 865 err = BVMat::CholeskiFactor(covi,Litf,BVMat::ECFO_XtX,true,true,true); 866 if(err) 867 { 868 Error(BSR()+"Non symmetric positive definite inverse covariance matrix "+expr+ 869 " for noise "+noise_inf->name.c_str()); 870 } 871 else 872 { 873 D.Eye(n); 874 Lit.Convert(Litf,BVMat::ESC_chlmRsparse); 875 Li = Lit.T(); 876 err = BVMat::CholeskiSolve(L, D, Litf, BVMat::ECSS_Lt); 877 if(err) 878 { 879 Error(BSR()+"Cannot inverse Choleski Factor of inverse covariance matrix"+ 880 " for noise "+noise_inf->name.c_str()); 881 } 882 } 883 } 884 } 885 } 886 735 887 template<typename IteratorT> 736 888 void operator()(IteratorT first, IteratorT last) const … … 742 894 }; 743 895 744 745 /////////////////////////////////////////////////////////////////////////////// 746 class assign_covariance_to_res 896 /////////////////////////////////////////////////////////////////////////////// 897 class assign_covl_to_res 747 898 /////////////////////////////////////////////////////////////////////////////// 748 899 { 749 900 public: 750 901 noise_info* noise_info_; 751 assign_cov ariance_to_res(noise_info& noise_inf)902 assign_covl_to_res(noise_info& noise_inf) 752 903 : noise_info_(&noise_inf) 753 904 {} … … 756 907 noise_info* noise_inf = noise_info_; 757 908 //Std(BText("\nassign_covariance_to_res(")+str.c_str()+")"); 758 noise_inf->sigmaName = ""; 759 noise_inf->sigmaIdx = -2; 760 noise_inf->sigmaCte = 1; 761 noise_inf->covExpr = str; 762 BUserVMat* u = (BUserVMat*)GraVMatrix()->EvaluateExpr(str.c_str()); 909 BText expr(str.c_str()+2, str.size()-4); 910 BUserVMat* u = (BUserVMat*)GraVMatrix()->EvaluateExpr(expr); 763 911 int err = 0; 764 912 if(!u) 765 913 { 766 914 err = -999999; 915 Error(BSR()+"A valid VMatrix expression was expected as " 916 "Choleski decomposition of covariance instead of "+expr+ 917 " for noise "+noise_inf->name.c_str()); 767 918 } 768 919 else 769 920 { 770 noise_inf->cov = u->Contens(); 771 noise_inf->covIsDiag=noise_inf->cov.IsDiagonal(); 772 } 773 if(err) 774 { 775 Error(BText("Not valid covariance definition ")+str.c_str()); 776 } 777 //Std(BText(" sigmaIdx=-1")); 778 //Std(BText(" sigmaCte=")+noise_info_->sigmaCte); 779 } 921 BVMat &cov=noise_inf->cov; 922 BVMat &L=noise_inf->L; 923 BVMat &Li=noise_inf->Li; 924 BVMat Lf, D; 925 Lf = u->Contens(); 926 int r = Lf.Rows(); 927 int c = Lf.Columns(); 928 int n = noise_inf->size; 929 if((r!=n)||(c!=n)) 930 { 931 err = -999998; 932 Error(BSR()+"An square ("+n+"x"+n+") VMatrix expression was expected as " 933 "Choleski decomposition of covariance instead of " 934 "("+r+"x"+c+") "+expr+" for noise "+noise_inf->name.c_str()); 935 } 936 else 937 { 938 if(Lf.code_==BVMat::ESC_chlmRfactor) 939 { 940 L.Convert(Lf,BVMat::ESC_chlmRsparse); 941 } 942 else 943 { 944 L = Lf; 945 err = BVMat::CholeskiFactor(L,Lf,BVMat::ECFO_X,true,true,true); 946 if(err) 947 { 948 Error(BSR()+"Non valid Choleski decomposition covariance matrix "+expr+ 949 " for noise "+noise_inf->name.c_str()); 950 } 951 } 952 if(!err) 953 { 954 D.Eye(n); 955 L.Convert(Lf,BVMat::ESC_chlmRsparse); 956 err = BVMat::CholeskiSolve(Lf, D, Li, BVMat::ECSS_L); 957 if(err) 958 { 959 Error(BSR()+"Cannot inverse Choleski factor of covariance matrix"+ 960 " for noise "+noise_inf->name.c_str()); 961 } 962 } 963 } 964 } 965 } 966 780 967 template<typename IteratorT> 781 968 void operator()(IteratorT first, IteratorT last) const … … 786 973 } 787 974 }; 975 976 /////////////////////////////////////////////////////////////////////////////// 977 class assign_covlinv_to_res 978 /////////////////////////////////////////////////////////////////////////////// 979 { 980 public: 981 noise_info* noise_info_; 982 assign_covlinv_to_res(noise_info& noise_inf) 983 : noise_info_(&noise_inf) 984 {} 985 void action(const std::string& str) const 986 { 987 noise_info* noise_inf = noise_info_; 988 //Std(BText("\nassign_covariance_to_res(")+str.c_str()+")"); 989 BText expr(str.c_str()+2, str.size()-4); 990 BUserVMat* u = (BUserVMat*)GraVMatrix()->EvaluateExpr(expr); 991 int err = 0; 992 if(!u) 993 { 994 err = -999999; 995 Error(BSR()+"A valid VMatrix expression was expected as " 996 "Choleski inverse decomposition of covariance instead of "+expr+ 997 " for noise "+noise_inf->name.c_str()); 998 } 999 else 1000 { 1001 BVMat &cov=noise_inf->cov; 1002 BVMat &L=noise_inf->L; 1003 BVMat &Li=noise_inf->Li; 1004 BVMat Lit, Litf, D; 1005 Litf = u->Contens(); 1006 int r = Litf.Rows(); 1007 int c = Litf.Columns(); 1008 int n = noise_inf->size; 1009 if((r!=n)||(c!=n)) 1010 { 1011 err = -999998; 1012 Error(BSR()+"An square ("+n+"x"+n+") VMatrix expression was expected as " 1013 "Choleski inverse decomposition of covariance instead of " 1014 "("+r+"x"+c+") "+expr+" for noise "+noise_inf->name.c_str()); 1015 } 1016 else 1017 { 1018 if(Litf.code_==BVMat::ESC_chlmRfactor) 1019 { 1020 Lit.Convert(Litf,BVMat::ESC_chlmRsparse); 1021 Li = Li.T(); 1022 } 1023 else 1024 { 1025 Lit = Litf; 1026 Li = Li.T(); 1027 err = BVMat::CholeskiFactor(Lit,Litf,BVMat::ECFO_X,true,true,true); 1028 if(err) 1029 { 1030 Error(BSR()+"Non valid Choleski inverse decomposition covariance matrix "+expr+ 1031 " for noise "+noise_inf->name.c_str()); 1032 } 1033 } 1034 if(!err) 1035 { 1036 D.Eye(n); 1037 err = BVMat::CholeskiSolve(L, D, Litf, BVMat::ECSS_Lt); 1038 if(err) 1039 { 1040 Error(BSR()+"Cannot inverse Choleski Factor of inverse covariance matrix"+ 1041 " for noise "+noise_inf->name.c_str()); 1042 } 1043 } 1044 } 1045 } 1046 } 1047 1048 template<typename IteratorT> 1049 void operator()(IteratorT first, IteratorT last) const 1050 { 1051 std::string str; 1052 str.assign(first, last); 1053 action(str); 1054 } 1055 }; 1056 788 1057 789 1058 /////////////////////////////////////////////////////////////////////////////// … … 1480 1749 1481 1750 protected: 1482 int expand2AllEqu(noise_info& resInfo, 1483 const BVMat& A, BVMat& A_); 1751 int expand2AllEqu(noise_info& resInfo, BVMat& A_); 1484 1752 1485 1753 int expand2AllEqu_covAndFactors(noise_info& resInfo); -
tol/btol/vmatrix_type/vmat_bsr.cpp
r98a619e r94894c73 70 70 71 71 ///////////////////////////////////////////////////////////////////////////// 72 int bys_sparse_reg::expand2AllEqu( 73 noise_info& resInfo, 74 const BVMat& A, 75 BVMat& A_) 76 ///////////////////////////////////////////////////////////////////////////// 77 { 72 int bys_sparse_reg::expand2AllEqu(noise_info& resInfo, BVMat& A_) 73 ///////////////////////////////////////////////////////////////////////////// 74 { 75 BVMat A = A_; 78 76 //Std(BText("\nTRACE bys_sparse_reg::expand2AllEqu 1")); 79 77 int s = resInfo.equIdx.size(); … … 130 128 ///////////////////////////////////////////////////////////////////////////// 131 129 { 132 //Std(BText("\nTRACE bys_sparse_reg::expand2AllEqu_covAndFactors 1")); 133 int k, n, err; 134 BVMat cov, L, Ls, Li, D; 135 cov = resInfo.cov; 136 n = cov.Rows(); 137 if(resInfo.covIsDiag) 138 { 139 //Std(BText("\nTRACE bys_sparse_reg::expand2AllEqu_covAndFactors 2")); 140 L = cov; 141 Li = cov; 142 double* xCov, *xL, * xLi; 143 int nzmax; 144 cov.StoredData(xCov, nzmax); 145 L .StoredData(xL, nzmax); 146 Li .StoredData(xLi, nzmax); 147 for(k=0; k<nzmax; k++) 148 { 149 xL [k] = sqrt(xCov[k]); 150 xLi[k] = 1.0/xL[k]; 151 } 152 if(err = expand2AllEqu(resInfo, cov, resInfo.cov)) { return(err); } 153 if(err = expand2AllEqu(resInfo, L, resInfo.L )) { return(err); } 154 if(err = expand2AllEqu(resInfo, Li, resInfo.Li )) { return(err); } 155 } 156 else 157 { 158 //Std(BText("\nTRACE bys_sparse_reg::expand2AllEqu_covAndFactors 3")); 159 err = BVMat::CholeskiFactor(cov,L,BVMat::ECFO_XtX,true,true,true); 160 if(err) 161 { 162 Error(BSR()+"Non symmetric definite positive covariance matrix for noise "+ 163 resInfo.name.c_str()); 164 return(err); 165 } 166 D.Eye(n); 167 err = BVMat::CholeskiSolve(L, D, Li, BVMat::ECSS_L); 168 if(err) 169 { 170 Error(BSR()+"Cannot inverse Choleski Factor of covariance matrix for noise "+ 171 resInfo.name.c_str()); 172 return(err); 173 } 174 Ls.Convert(L,BVMat::ESC_chlmRsparse); 175 if(err = expand2AllEqu(resInfo, cov, resInfo.cov)) { return(err); } 176 if(err = expand2AllEqu(resInfo, Ls, resInfo.L )) { return(err); } 177 if(err = expand2AllEqu(resInfo, Li, resInfo.Li )) { return(err); } 178 } 179 //Std(BText("\nTRACE bys_sparse_reg::expand2AllEqu_covAndFactors END")); 130 int err = 0; 131 if(err = expand2AllEqu(resInfo, resInfo.cov)) { return(err); } 132 if(err = expand2AllEqu(resInfo, resInfo.L )) { return(err); } 133 if(err = expand2AllEqu(resInfo, resInfo.Li )) { return(err); } 180 134 return(err); 181 135 }; -
tol/btol/vmatrix_type/vmat_bsr_joint.cpp
r98a619e r94894c73 63 63 posSign, negSign, unknown, product, 64 64 initValue, like, power2, member, nonLinearFilters, 65 noiseSize, normalDist, normalNu, eq, le, ge, 65 noiseSize, normalDist, normalNu, eq, le, ge, tolExpression, 66 66 argumentSeparator, endOfSentence, 67 67 openParenthesys, closeParenthesys, … … 98 98 assign_sig_pri assign_sig_pri_(s.noise.info); 99 99 assign_const_sigma_to_res assign_const_sigma_to_res_(s.noise.info); 100 assign_covariance_to_res assign_covariance_to_res_ (s.noise.info); 100 assign_cov_to_res assign_cov_to_res_ (s.noise.info); 101 assign_covinv_to_res assign_covinv_to_res_ (s.noise.info); 102 assign_covl_to_res assign_covl_to_res_ (s.noise.info); 103 assign_covlinv_to_res assign_covlinv_to_res_ (s.noise.info); 101 104 assign_non_lin_flt_to_noise assign_non_lin_flt_to_noise_(s.noise.info); 102 105 assign_pos_sign_to_equ_term assign_pos_sign_to_equ_term_(s.equ_var_term_info); … … 160 163 ge = str_p(">=") 161 164 ; 165 tolExpression = confix_p(str_p("{$"), (*(anychar_p)), "$}") 166 ; 162 167 // TOL identifiers 163 168 identifier_simple = … … 192 197 ureal_p[assign_const_sigma_to_res_] 193 198 ; 194 covariance = 195 ( 196 ( 197 str_p("SetDiag") >> 198 confix_p("([[", (*(anychar_p)), "]])") 199 ) 200 | 201 ( 202 str_p("Diag") >> 203 confix_p("(", (*(anychar_p)), ")") 204 ) 205 ) 206 [assign_covariance_to_res_] 199 covariance = 200 (str_p("Cov") >>str_p("=")>>tolExpression[assign_cov_to_res_] ) | 201 (str_p("CovInv") >>str_p("=")>>tolExpression[assign_covinv_to_res_] ) | 202 (str_p("CovChol") >>str_p("=")>>tolExpression[assign_covl_to_res_] ) | 203 (str_p("CovInvChol")>>str_p("=")>>tolExpression[assign_covlinv_to_res_]) 207 204 ; 208 205 arima = 209 206 ( 210 ( 211 str_p("*") >> 212 str_p("ARIMA.COV") >> 213 confix_p("([[", (*(anychar_p)), "]])")[assign_a(s.noise.info.arimaExpr)] 214 ) 215 | 216 eps_p[assign_a(s.noise.info.arimaExpr,"")] 207 (str_p("ARIMA.COV") | (str_p("Cov") >>str_p("=")>> str_p("ArimaCovariance"))) >> 208 confix_p("([[", (*(anychar_p)), "]])")[assign_a(s.noise.info.arimaExpr)] 217 209 ) 218 210 ; 219 211 resSigmaDef = 220 212 ( 221 covariance |222 213 constantSigma | 223 214 variantSigma | 224 215 error_sigmaExpected 225 216 ) >> 226 arima 217 ( 218 (str_p("*") >> (arima | covariance) ) 219 | eps_p 220 ) 227 221 ; 228 222 noiseName= … … 338 332 nonLinearFilters = ( 339 333 str_p("with") >> str_p("non") >> str_p("linear") >> str_p("filters") >> 340 (confix_p("{$", (*(anychar_p)), "$}")[assign_non_lin_flt_to_noise_])334 tolExpression[assign_non_lin_flt_to_noise_] 341 335 ) | ( 342 336 eps_p[assign_non_lin_flt_to_noise_] … … 354 348 normalDist >> 355 349 openParenthesys >> 356 normalNu >> 357 argumentSeparator >> 358 resSigmaDef >> 359 //power2 >> 350 normalNu >> 351 argumentSeparator >> 352 resSigmaDef >> 360 353 closeParenthesys 361 354 ) | error_noiseDistribDeclareExpected) >> -
tol/btol/vmatrix_type/vmat_bsr_primary.cpp
r98a619e r94894c73 63 63 posSign, negSign, unknown, product, 64 64 initValue, like, power2, member, nonLinearFilters, 65 noiseSize, normalDist, normalNu, eq, le, ge, 65 noiseSize, normalDist, normalNu, eq, le, ge, tolExpression, 66 66 argumentSeparator, endOfSentence, 67 67 openParenthesys, closeParenthesys, … … 96 96 assign_sig_pri assign_sig_pri_(s.noise.info); 97 97 assign_const_sigma_to_res assign_const_sigma_to_res_(s.noise.info); 98 assign_covariance_to_res assign_covariance_to_res_ (s.noise.info); 98 assign_cov_to_res assign_cov_to_res_ (s.noise.info); 99 assign_covinv_to_res assign_covinv_to_res_ (s.noise.info); 100 assign_covl_to_res assign_covl_to_res_ (s.noise.info); 101 assign_covlinv_to_res assign_covlinv_to_res_ (s.noise.info); 99 102 assign_non_lin_flt_to_noise assign_non_lin_flt_to_noise_(s.noise.info); 100 103 assign_reg_matrix assign_output_(s.descY_, s.exprY_, s.Y_); … … 155 158 ; 156 159 ge = str_p(">=") 160 ; 161 tolExpression = confix_p(str_p("{$"), (*(anychar_p)), "$}") 157 162 ; 158 163 // TOL identifiers … … 186 191 ureal_p[assign_const_sigma_to_res_] 187 192 ; 188 covariance = 189 ( 190 ( 191 str_p("SetDiag") >> 192 confix_p("([[", (*(anychar_p)), "]])") 193 ) 194 | 195 ( 196 str_p("Diag") >> 197 confix_p("(", (*(anychar_p)), ")") 198 ) 193 covariance = 194 (str_p("Cov") >>str_p("=")>>tolExpression[assign_cov_to_res_] ) | 195 (str_p("CovInv") >>str_p("=")>>tolExpression[assign_covinv_to_res_] ) | 196 (str_p("CovChol") >>str_p("=")>>tolExpression[assign_covl_to_res_] ) | 197 (str_p("CovInvChol")>>str_p("=")>>tolExpression[assign_covlinv_to_res_]) 198 ; 199 arima = 200 ( 201 (str_p("ARIMA.COV") | (str_p("Cov") >>str_p("=")>> str_p("Arima"))) >> 202 confix_p("([[", (*(anychar_p)), "]])")[assign_a(s.noise.info.arimaExpr)] 199 203 ) 200 [assign_covariance_to_res_]201 ;202 arima =203 (204 (205 str_p("*") >>206 str_p("ARIMA.COV") >>207 confix_p("([[", (*(anychar_p)), "]])")[assign_a(s.noise.info.arimaExpr)]208 )209 |210 eps_p[assign_a(s.noise.info.arimaExpr,"")]211 )212 204 ; 213 205 resSigmaDef = 214 206 ( 215 covariance |216 207 constantSigma | 217 208 variantSigma | 218 209 error_sigmaExpected 219 210 ) >> 220 arima 211 ( 212 (str_p("*") >> (arima | covariance) ) 213 | eps_p 214 ) 221 215 ; 222 216 knownReal = … … 311 305 nonLinearFilters = ( 312 306 str_p("with") >> str_p("non") >> str_p("linear") >> str_p("filters") >> 313 (confix_p("{$", (*(anychar_p)), "$}")[assign_non_lin_flt_to_noise_])307 tolExpression[assign_non_lin_flt_to_noise_] 314 308 ) | ( 315 309 eps_p[assign_non_lin_flt_to_noise_] … … 336 330 endOfSentence[add_res] 337 331 ; 338 output = str_p("Output") >> ch_p('=') >> 339 //str_p("{$") >> (((*(anychar_p)) - str_p("$}"))[assign_output_]) >> str_p("$}") 340 confix_p("{$", (*(anychar_p)), "$}") [assign_output_] 332 output = str_p("Output") >> ch_p('=') >> tolExpression[assign_output_] 341 333 >> endOfSentence; 342 input = str_p("Input") >> ch_p('=') >> 343 //str_p("{$") >> (((*(anychar_p)) - str_p("$}"))[assign_input_ ]) >> str_p("$}") 344 confix_p("{$", (*(anychar_p)), "$}") [assign_input_] 334 input = str_p("Input") >> ch_p('=') >> tolExpression [assign_input_] 345 335 >> endOfSentence; 346 336 -
tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/_import.tol
r98a619e r94894c73 295 295 "["+IntText(segment::Get.Equation.Size(0))+timeExpr+"]"+ 296 296 "\n ~ Normal(0,"<<s2+s2Prior); 297 Real arima.size = segment::Get.ARIMA.Size(0); 298 If(arima.size, 299 { 300 FPutText(fileHandler, "*ARIMA.COV([["); 297 Real arima.size = If(!FunctionExist("Text","segment::Get.ARIMA.Size"),0, 298 segment::Get.ARIMA.Size(0)); 299 Case( 300 arima.size, 301 { 302 FPutText(fileHandler, " * Cov = ArimaCovariance([["); 301 303 Set For(1, arima.size, Real(Real af) 302 304 { … … 309 311 }); 310 312 FPutText(fileHandler, "]])") 313 }, 314 FunctionExist("Text","segment::Get.Cov"), 315 { 316 FPutText(fileHandler, " * Cov = {$ "+segment::Get.Cov(0)+" $}") 317 }, 318 FunctionExist("Text","segment::Get.CovInv"), 319 { 320 FPutText(fileHandler, " * CovInv = {$ "+segment::Get.CovInv(0)+" $}") 321 }, 322 FunctionExist("Text","segment::Get.CovChol"), 323 { 324 FPutText(fileHandler, " * CovChol = {$ "+segment::Get.CovChol(0)+" $}") 325 }, 326 FunctionExist("Text","segment::Get.CovInvChol"), 327 { 328 FPutText(fileHandler, " * CovInvChol = {$ "+segment::Get.CovInvChol(0)+" $}") 311 329 }); 312 330 FPutText(fileHandler, ")");
Note: See TracChangeset
for help on using the changeset viewer.
