- Timestamp:
- Oct 22, 2008, 2:56:57 PM (18 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 898821f
- Parents:
- 53020ad
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tol_tests/tol/LinearAlgebra/vmatrix/test_0009/test.tol
r53020ad rffb545d 17 17 NameBlock check.data.01 = 18 18 [[ 19 Text _.name = "check.data.01"; 19 20 Real n = 1; 20 21 Real r = 2; … … 28 29 NameBlock check.data.02 = 29 30 [[ 31 Text _.name = "check.data.02"; 30 32 Real n = 1; 31 33 Real r = 2; … … 39 41 NameBlock rand.check.data(Real unused) 40 42 {[[ 43 Real seed = 44 { 45 Real aux = IntRand(1, 999999999); 46 Real PutRandomSeed(aux); 47 GetRandomSeed(0) 48 }; 49 Text _.name = "rand.check.data."+IntText(seed); 41 50 Real n = IntRand(1,3); 42 51 Real r = IntRand(1,5); … … 50 59 51 60 NameBlock Checker(NameBlock data) 52 {[[ 61 { 62 NameBlock aux = [[ 53 63 NameBlock _.data = data; 54 Real ok. 1= LE(VMatMax(_.data::D*_.data::z-_.data::d),0);64 Real ok.0 = LE(VMatMax(_.data::D*_.data::z-_.data::d),0); 55 65 Set bounds = GetBoundsInPolytope(_.data::D,_.data::d,_.data::z,_.data::j); 56 Real tol = data::r * data::n;66 Real tol = 100*(data::r * data::n); 57 67 //Real trc.1={WriteLn("bounds=["<<bounds::Lower+","<<bounds::Upper+"]"),0}; 58 Real checkBounds(Real zj) 59 { 60 VMatrix z_ = Copy(data::z); 61 Real PutVMatDat(z_,_.data::j,1,zj); 68 NameBlock checkBounds(Real zj_) 69 {[[ 70 Real zj = zj_; 71 VMatrix z_ = 72 { 73 VMatrix aux = Copy(data::z); 74 Real PutVMatDat(aux,_.data::j,1,zj); 75 aux 76 }; 62 77 VMatrix g = _.data::D*z_-_.data::d; 63 78 Real g.max = (VMatMax(g)+tol)-tol; … … 70 85 /* */ 71 86 ok 72 };87 ]]}; 73 88 74 89 Real lower = Max(bounds::Lower,-100000); 75 90 Real upper = Min(bounds::Upper,+100000); 76 91 77 Real ok.2 = checkBounds(lower); 78 Real ok.3 = checkBounds(upper); 92 NameBlock cb.1 = checkBounds(lower); 93 Real ok.1 = cb.1::ok; 94 NameBlock cb.2 = checkBounds(upper); 95 Real ok.2 = cb.2::ok; 96 NameBlock cb.3 = checkBounds((lower+upper)/2); 97 Real ok.3 = cb.3::ok; 98 NameBlock cb.4 = checkBounds(lower-0.00001); 99 Real ok.4 = If(bounds::Lower>-1/0, Not(cb.4::ok), cb.4::ok); 100 NameBlock cb.5 = checkBounds(upper+0.00001); 101 Real ok.5 = If(bounds::Upper<+1/0, Not(cb.5::ok), cb.5::ok); 79 102 80 Real ok.4 = 81 { 82 Real aux = checkBounds(lower-0.00001); 83 If(bounds::Lower>-1/0, !aux, aux) 84 }; 85 Real ok.5 = 86 { 87 Real aux = checkBounds(upper+0.00001); 88 If(bounds::Upper<+1/0, !aux, aux) 89 }; 90 Real ok = And(ok.1,ok.2,ok.3,ok.4,ok.5) 91 92 ]]}; 103 Real ok = And(ok.0,ok.1,ok.2,ok.3,ok.4,ok.5) ]]; 104 Eval(data::_.name+"=aux") 105 }; 93 106 94 107 Set check.all = … … 97 110 NameBlock check.02 = Checker(check.data.02) 98 111 ]] << 99 For(1,1000,NameBlock(Real iter) { Checker(rand.check.data(0)) }); 112 For(1,10000,NameBlock(Real iter) 113 { 114 NameBlock aux = Checker(rand.check.data(0)); 115 Real If(Not(aux::ok), 116 { 117 Text path = "fail/"+aux::_.data::_.name; 118 WriteLn("Case "+path+" has failed and will be stored.","E"); 119 Real Ois.Store([[aux]],path); 120 0 121 }); 122 Eval(aux::_.data::_.name+"=aux") 123 }); 100 124 125 Set failed = Select(check.all, Real(NameBlock chk) { Not(chk::ok)} ); 101 126 Set ok.all = EvalSet(check.all, Real(NameBlock chk) { chk::ok} ); 102 127 Real ok = SetMin(ok.all);
Note: See TracChangeset
for help on using the changeset viewer.
