| 1 | Set triplet = {Set Include( "triplet.oza" )[1]}; |
|---|
| 2 | |
|---|
| 3 | Set uniqueTriple = Classify( triplet, Real( Set a, Set b ) { |
|---|
| 4 | Real cmp1 = Compare(a[1],b[1]); |
|---|
| 5 | If( cmp1, cmp1, Compare( a[2],b[2] ) ) |
|---|
| 6 | } ); |
|---|
| 7 | |
|---|
| 8 | Real check_r = 284; |
|---|
| 9 | Real check_c = 137; |
|---|
| 10 | |
|---|
| 11 | Set EvalSet( triplet, Real( Set cell ) { |
|---|
| 12 | Real If( cell[1] == check_r & cell[2] == check_c, { |
|---|
| 13 | WriteLn( "check cell in triplet = " << cell[ 3 ] ); |
|---|
| 14 | 0 |
|---|
| 15 | }, 0 ) |
|---|
| 16 | } ); |
|---|
| 17 | |
|---|
| 18 | Real M = SetMax( EvalSet( triplet, Real( Set t ) { t[1] } ) ); |
|---|
| 19 | Real N = SetMax( EvalSet( triplet, Real( Set t ) { t[2] } ) ); |
|---|
| 20 | |
|---|
| 21 | Real check1 = Eq( Card( uniqueTriple ), Card( triplet ) ); |
|---|
| 22 | |
|---|
| 23 | Real check2 = If( check1, { |
|---|
| 24 | VMatrix A1 = Convert( Triplet( triplet, M, N ), "Cholmod.R.Sparse" ); |
|---|
| 25 | Real cell1 = VMatDat( A1, check_r, check_c ); |
|---|
| 26 | WriteLn( "check cell in A1 = " << cell1 ); |
|---|
| 27 | VMatrix A2 = Convert( TripletUnique( SetMat(triplet), M, N ), "Cholmod.R.Sparse" ); |
|---|
| 28 | Real cell2 = VMatDat( A2, check_r, check_c ); |
|---|
| 29 | WriteLn( "check cell in A2 = " << cell2 ); |
|---|
| 30 | VMatrix diff = A2 - A1; |
|---|
| 31 | Real VMatMax( Abs( diff ) ) |
|---|
| 32 | }, 0 ); |
|---|
| 33 | |
|---|
| 34 | WriteLn( "Max(Abs(diff)) = " << check2 ); |
|---|
| 35 | |
|---|