os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/valarray_test.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include <valarray>
sl@0
    17
sl@0
    18
#include "cppunit/cppunit_proxy.h"
sl@0
    19
sl@0
    20
#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
sl@0
    21
using namespace std;
sl@0
    22
#endif
sl@0
    23
sl@0
    24
//
sl@0
    25
// TestCase class
sl@0
    26
//
sl@0
    27
class ValarrayTest : public CPPUNIT_NS::TestCase
sl@0
    28
{
sl@0
    29
  CPPUNIT_TEST_SUITE(ValarrayTest);
sl@0
    30
  CPPUNIT_TEST(transcendentals);
sl@0
    31
  CPPUNIT_TEST(valarray_cov1);
sl@0
    32
  CPPUNIT_TEST(valarray_cov2);
sl@0
    33
  CPPUNIT_TEST(valarray_cov3);
sl@0
    34
  CPPUNIT_TEST(valarray_cov4);
sl@0
    35
  CPPUNIT_TEST(valarray_cov5);
sl@0
    36
  CPPUNIT_TEST(valarray_cov6);
sl@0
    37
  CPPUNIT_TEST(valarray_cov7);
sl@0
    38
  CPPUNIT_TEST(valarray_cov8);
sl@0
    39
  CPPUNIT_TEST(valarray_cov9);
sl@0
    40
  CPPUNIT_TEST(valarray_cov10);
sl@0
    41
  CPPUNIT_TEST(valarray_cov11);
sl@0
    42
  CPPUNIT_TEST(valarray_cov12);
sl@0
    43
  CPPUNIT_TEST_SUITE_END();
sl@0
    44
sl@0
    45
protected:
sl@0
    46
  void transcendentals();
sl@0
    47
  void valarray_cov1();
sl@0
    48
  void valarray_cov2();
sl@0
    49
  void valarray_cov3();
sl@0
    50
  void valarray_cov4();
sl@0
    51
  void valarray_cov5();
sl@0
    52
  void valarray_cov6();
sl@0
    53
  void valarray_cov7();
sl@0
    54
  void valarray_cov8();
sl@0
    55
  void valarray_cov9();
sl@0
    56
  void valarray_cov10();
sl@0
    57
  void valarray_cov11();
sl@0
    58
  void valarray_cov12();
sl@0
    59
};
sl@0
    60
sl@0
    61
CPPUNIT_TEST_SUITE_REGISTRATION(ValarrayTest);
sl@0
    62
sl@0
    63
int MyApplyFunc( int n )
sl@0
    64
	{
sl@0
    65
	   return n*2;
sl@0
    66
	}
sl@0
    67
sl@0
    68
sl@0
    69
//
sl@0
    70
// tests implementation
sl@0
    71
//
sl@0
    72
// For the moment this test is just a complitation test
sl@0
    73
// everyone is welcome to do a real good unit test for
sl@0
    74
// valarray functionality.
sl@0
    75
void ValarrayTest::transcendentals()
sl@0
    76
{
sl@0
    77
#ifdef __SUNPRO_CC
sl@0
    78
  using std::abs;
sl@0
    79
#endif
sl@0
    80
  {
sl@0
    81
    valarray<double> darray;
sl@0
    82
    valarray<double> tmp;
sl@0
    83
    tmp = abs(darray);
sl@0
    84
    tmp = acos(darray);
sl@0
    85
    tmp = asin(darray);
sl@0
    86
    tmp = atan(darray);
sl@0
    87
    tmp = atan2(darray, tmp);
sl@0
    88
    tmp = atan2(1.0, darray);
sl@0
    89
    tmp = atan2(darray, 1.0);
sl@0
    90
    tmp = cos(darray);
sl@0
    91
    tmp = cosh(darray);
sl@0
    92
    tmp = sin(darray);
sl@0
    93
    tmp = sinh(darray);
sl@0
    94
    tmp = tan(darray);
sl@0
    95
#if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
sl@0
    96
    tmp = tanh(darray);
sl@0
    97
#endif
sl@0
    98
    tmp = exp(darray);
sl@0
    99
    tmp = log(darray);
sl@0
   100
    tmp = log10(darray);
sl@0
   101
    tmp = pow(darray, tmp);
sl@0
   102
    tmp = pow(1.0, darray);
sl@0
   103
    tmp = pow(darray, 1.0);
sl@0
   104
    tmp = sqrt(darray);
sl@0
   105
  }
sl@0
   106
  {
sl@0
   107
    valarray<float> farray;
sl@0
   108
    valarray<float> tmp;
sl@0
   109
    tmp = abs(farray);
sl@0
   110
    tmp = acos(farray);
sl@0
   111
    tmp = asin(farray);
sl@0
   112
    tmp = atan(farray);
sl@0
   113
    tmp = atan2(farray, tmp);
sl@0
   114
    tmp = atan2(1.0f, farray);
sl@0
   115
    tmp = atan2(farray, 1.0f);
sl@0
   116
    tmp = cos(farray);
sl@0
   117
    tmp = cosh(farray);
sl@0
   118
    tmp = sin(farray);
sl@0
   119
    tmp = sinh(farray);
sl@0
   120
    tmp = tan(farray);
sl@0
   121
#if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
sl@0
   122
    tmp = tanh(farray);
sl@0
   123
#endif
sl@0
   124
    tmp = exp(farray);
sl@0
   125
    tmp = log(farray);
sl@0
   126
    tmp = log10(farray);
sl@0
   127
    tmp = pow(farray, tmp);
sl@0
   128
    tmp = pow(1.0f, farray);
sl@0
   129
    tmp = pow(farray, 1.0f);
sl@0
   130
    tmp = sqrt(farray);
sl@0
   131
  }
sl@0
   132
#if !defined (STLPORT) || !defined (_STLP_NO_LONG_DOUBLE)
sl@0
   133
  {
sl@0
   134
    valarray<long double> ldarray;
sl@0
   135
    valarray<long double> tmp;
sl@0
   136
    tmp = abs(ldarray);
sl@0
   137
    tmp = acos(ldarray);
sl@0
   138
    tmp = asin(ldarray);
sl@0
   139
    tmp = atan(ldarray);
sl@0
   140
    tmp = atan2(ldarray, tmp);
sl@0
   141
    tmp = atan2(1.0l, ldarray);
sl@0
   142
    tmp = atan2(ldarray, 1.0l);
sl@0
   143
    tmp = cos(ldarray);
sl@0
   144
    tmp = cosh(ldarray);
sl@0
   145
    tmp = sin(ldarray);
sl@0
   146
    tmp = sinh(ldarray);
sl@0
   147
    tmp = tan(ldarray);
sl@0
   148
#  if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
sl@0
   149
    tmp = tanh(ldarray);
sl@0
   150
#  endif
sl@0
   151
    tmp = exp(ldarray);
sl@0
   152
    tmp = log(ldarray);
sl@0
   153
    tmp = log10(ldarray);
sl@0
   154
    tmp = pow(ldarray, tmp);
sl@0
   155
    tmp = pow(1.0l, ldarray);
sl@0
   156
    tmp = pow(ldarray, 1.0l);
sl@0
   157
    tmp = sqrt(ldarray);
sl@0
   158
  }
sl@0
   159
#endif
sl@0
   160
}
sl@0
   161
void ValarrayTest::valarray_cov1()
sl@0
   162
	{
sl@0
   163
		{/*
sl@0
   164
		int i;
sl@0
   165
		valarray<int> va ( 10 );
sl@0
   166
		
sl@0
   167
		for ( i = 0 ; i < 10 ; i += 1 )
sl@0
   168
		      va [ i ] =  2 * ( i + 1 );
sl@0
   169
		CPPUNIT_ASSERT(va.size()==10);
sl@0
   170
		
sl@0
   171
		float af1 [] = {0, 1, 2, 3};
sl@0
   172
		valarray <float> vf1 (af1, 4); 
sl@0
   173
		CPPUNIT_ASSERT(vf1.size()==4);
sl@0
   174
		
sl@0
   175
		valarray <float> vf2 (10, 3.0f); 		
sl@0
   176
		CPPUNIT_ASSERT(vf2.size()==10);
sl@0
   177
		
sl@0
   178
		valarray <float> vf3 (vf2); 		
sl@0
   179
		CPPUNIT_ASSERT(vf3.size()==10);
sl@0
   180
		
sl@0
   181
		slice Slice ( 2 , 4 , 3 );
sl@0
   182
		
sl@0
   183
		valarray<int> vaSlice = va [ Slice ];
sl@0
   184
sl@0
   185
		CPPUNIT_ASSERT(vaSlice [ 0 ] == 6);
sl@0
   186
		CPPUNIT_ASSERT(vaSlice [ 1 ] == 12);
sl@0
   187
		CPPUNIT_ASSERT(vaSlice [ 2 ] == 18);*/
sl@0
   188
		}
sl@0
   189
		{/*
sl@0
   190
		int i;
sl@0
   191
sl@0
   192
		valarray<int> va ( 20 ), vaResult;
sl@0
   193
		for ( i = 0 ; i < 20 ; i+=1 ) 
sl@0
   194
		      va [ i ] =  i;
sl@0
   195
		valarray<size_t> Len ( 2 ), Stride ( 2 );
sl@0
   196
		Len [0] = 4;
sl@0
   197
		Len [1] = 4;
sl@0
   198
		Stride [0] = 7;
sl@0
   199
		Stride [1] = 4;
sl@0
   200
sl@0
   201
		gslice vaGSlice ( 0, Len, Stride );
sl@0
   202
		vaResult = va [ vaGSlice ];
sl@0
   203
		CPPUNIT_ASSERT(vaResult [ 0 ] == 0);
sl@0
   204
		CPPUNIT_ASSERT(vaResult [ 1 ] == 4);
sl@0
   205
		CPPUNIT_ASSERT(vaResult [ 2 ] == 8);
sl@0
   206
		CPPUNIT_ASSERT(vaResult [ 3 ] == 12);
sl@0
   207
		CPPUNIT_ASSERT(vaResult [ 4 ] == 7);
sl@0
   208
		CPPUNIT_ASSERT(vaResult [ 5 ] == 11);
sl@0
   209
		CPPUNIT_ASSERT(vaResult [ 6 ] == 15);
sl@0
   210
		CPPUNIT_ASSERT(vaResult [ 7 ] == 19);*/
sl@0
   211
		}
sl@0
   212
		{
sl@0
   213
		int i;
sl@0
   214
sl@0
   215
		valarray<int> va ( 10 );
sl@0
   216
		for ( i = 0 ; i < 10 ; i += 2 )
sl@0
   217
		      va [ i ] =  i;
sl@0
   218
		for ( i = 1 ; i < 10 ; i += 2 )
sl@0
   219
		      va [ i ] =  -1;
sl@0
   220
		// Use masked subsets to assign a value of 10
sl@0
   221
		// to all elements grrater than 3 in value
sl@0
   222
		va [va > 3 ] = 10;
sl@0
   223
		CPPUNIT_ASSERT(va [ 0 ] == 0);
sl@0
   224
		CPPUNIT_ASSERT(va [ 1 ] == -1);
sl@0
   225
		CPPUNIT_ASSERT(va [ 2 ] == 2);
sl@0
   226
		CPPUNIT_ASSERT(va [ 3 ] == -1);
sl@0
   227
		CPPUNIT_ASSERT(va [ 4 ] == 10);
sl@0
   228
		CPPUNIT_ASSERT(va [ 5 ] == -1);
sl@0
   229
		CPPUNIT_ASSERT(va [ 6 ] == 10);
sl@0
   230
		CPPUNIT_ASSERT(va [ 7 ] == -1);
sl@0
   231
		CPPUNIT_ASSERT(va [ 8 ] == 10);
sl@0
   232
		CPPUNIT_ASSERT(va [ 9 ] == -1);
sl@0
   233
		}
sl@0
   234
		{
sl@0
   235
		int i;
sl@0
   236
sl@0
   237
		valarray<int> va ( 10 );
sl@0
   238
		for ( i = 0 ; i < 10 ; i += 2 )
sl@0
   239
		      va [ i ] =  i;
sl@0
   240
		for ( i = 1 ; i < 10 ; i += 2 )
sl@0
   241
		      va [ i ] =  -1;
sl@0
   242
		// Select 2nd, 4th & 6th elements
sl@0
   243
		// and assign a value of 10 to them
sl@0
   244
		valarray<size_t> indx ( 3 );
sl@0
   245
		indx [0] = 2;
sl@0
   246
		indx [1] = 4;
sl@0
   247
		indx [2] = 6;
sl@0
   248
		va[indx] = 10;
sl@0
   249
		CPPUNIT_ASSERT(va [ 0 ] == 0);
sl@0
   250
		CPPUNIT_ASSERT(va [ 1 ] == -1);
sl@0
   251
		CPPUNIT_ASSERT(va [ 2 ] == 10);
sl@0
   252
		CPPUNIT_ASSERT(va [ 3 ] == -1);
sl@0
   253
		CPPUNIT_ASSERT(va [ 4 ] == 10);
sl@0
   254
		CPPUNIT_ASSERT(va [ 5 ] == -1);
sl@0
   255
		CPPUNIT_ASSERT(va [ 6 ] == 10);
sl@0
   256
		CPPUNIT_ASSERT(va [ 7 ] == -1);
sl@0
   257
		CPPUNIT_ASSERT(va [ 8 ] == 8);
sl@0
   258
		CPPUNIT_ASSERT(va [ 9 ] == -1);
sl@0
   259
		}
sl@0
   260
	}
sl@0
   261
void ValarrayTest::valarray_cov2()
sl@0
   262
	{
sl@0
   263
		{
sl@0
   264
		int i;
sl@0
   265
sl@0
   266
		valarray<int> va ( 10 );
sl@0
   267
		for ( i = 0 ; i < 10 ; i+=1 )
sl@0
   268
		      va [ i ] =  i;
sl@0
   269
		CPPUNIT_ASSERT(va.sum ( ) == 45);
sl@0
   270
		CPPUNIT_ASSERT(va.min ( ) == 0);
sl@0
   271
		CPPUNIT_ASSERT(va.max ( ) == 9);
sl@0
   272
		}
sl@0
   273
		{
sl@0
   274
		int i;
sl@0
   275
	    valarray<int> va1 ( 3 );
sl@0
   276
		for ( i = 0 ; i < 3 ; i+=1 )
sl@0
   277
		      va1 [ i ] =  i;
sl@0
   278
		va1.resize(5, 10);
sl@0
   279
		
sl@0
   280
		CPPUNIT_ASSERT(va1 [ 0 ] == 10);
sl@0
   281
		CPPUNIT_ASSERT(va1 [ 1 ] == 10);
sl@0
   282
		CPPUNIT_ASSERT(va1 [ 2 ] == 10);
sl@0
   283
		CPPUNIT_ASSERT(va1 [ 3 ] == 10);
sl@0
   284
		CPPUNIT_ASSERT(va1 [ 4 ] == 10);
sl@0
   285
		CPPUNIT_ASSERT(va1.size ( ) == 5);
sl@0
   286
		}
sl@0
   287
		{
sl@0
   288
		int i;
sl@0
   289
sl@0
   290
		valarray<int> vaR ( 3 ),vaApplied(3);
sl@0
   291
		for ( i = 0 ; i < 3 ; i+=1 )
sl@0
   292
		      vaR [ i ] =  i;
sl@0
   293
		
sl@0
   294
		vaApplied = vaR.apply( MyApplyFunc );
sl@0
   295
		CPPUNIT_ASSERT(vaApplied [ 0 ] == 0);
sl@0
   296
		CPPUNIT_ASSERT(vaApplied [ 1 ] == 2);
sl@0
   297
		CPPUNIT_ASSERT(vaApplied [ 2 ] == 4);
sl@0
   298
		}
sl@0
   299
		{
sl@0
   300
		int i;
sl@0
   301
sl@0
   302
		valarray<int> vaL2 ( 4 );
sl@0
   303
		valarray<int> vaNOT2 ( 4 );
sl@0
   304
		for ( i = 0 ; i < 3 ; i += 2 )
sl@0
   305
		      vaL2 [ i ] =  i;
sl@0
   306
		for ( i = 1 ; i < 3 ; i += 2 )
sl@0
   307
		      vaL2 [ i ] =  -2 * i;	
sl@0
   308
		vaNOT2 = ~vaL2;
sl@0
   309
		CPPUNIT_ASSERT(vaNOT2 [ 0 ] == -1);
sl@0
   310
		CPPUNIT_ASSERT(vaNOT2 [ 1 ] == 1);
sl@0
   311
		CPPUNIT_ASSERT(vaNOT2 [ 2 ] == -3);
sl@0
   312
		}
sl@0
   313
	}
sl@0
   314
void ValarrayTest::valarray_cov3()
sl@0
   315
	{
sl@0
   316
		{
sl@0
   317
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   318
		vaL[0] = 1;vaR[0] = 1;
sl@0
   319
		vaL[1] = 0;vaR[1] = 2;
sl@0
   320
		vaL[2] = 1;vaR[2] = 3;
sl@0
   321
		vaL1 = vaL;
sl@0
   322
		
sl@0
   323
		vaL |= vaR;
sl@0
   324
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   325
		CPPUNIT_ASSERT(vaL [ 1 ] == 2);
sl@0
   326
		CPPUNIT_ASSERT(vaL [ 2 ] == 3);
sl@0
   327
		
sl@0
   328
		vaL1 |= 3;
sl@0
   329
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 3);
sl@0
   330
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 3);
sl@0
   331
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 3);
sl@0
   332
		}
sl@0
   333
		{
sl@0
   334
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   335
		vaL[0] = 1;vaR[0] = 0;
sl@0
   336
		vaL[1] = 0;vaR[1] = 0;
sl@0
   337
		vaL[2] = 1;vaR[2] = 1;
sl@0
   338
		vaL1 = vaL;
sl@0
   339
		
sl@0
   340
		vaL ^= vaR;
sl@0
   341
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   342
		CPPUNIT_ASSERT(vaL [ 1 ] == 0);
sl@0
   343
		CPPUNIT_ASSERT(vaL [ 2 ] == 0);
sl@0
   344
		
sl@0
   345
		vaL1 ^= 0;
sl@0
   346
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 1);
sl@0
   347
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 0);
sl@0
   348
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 1);
sl@0
   349
		}
sl@0
   350
		{
sl@0
   351
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   352
		vaL[0] = 64;vaR[0] = 0;
sl@0
   353
		vaL[1] = -64;vaR[1] = 1;
sl@0
   354
		vaL[2] = 64;vaR[2] = 2;
sl@0
   355
		vaL1 = vaL;
sl@0
   356
		
sl@0
   357
		vaL >>= vaR;
sl@0
   358
		CPPUNIT_ASSERT(vaL [ 0 ] == 64);
sl@0
   359
		CPPUNIT_ASSERT(vaL [ 1 ] == -32);
sl@0
   360
		CPPUNIT_ASSERT(vaL [ 2 ] == 16);
sl@0
   361
		
sl@0
   362
		vaL1 >>= 0;
sl@0
   363
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 64);
sl@0
   364
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -64);
sl@0
   365
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 64);
sl@0
   366
		}
sl@0
   367
	}
sl@0
   368
void ValarrayTest::valarray_cov4()
sl@0
   369
	{
sl@0
   370
		{
sl@0
   371
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   372
		vaL[0] = 1;vaR[0] = 0;
sl@0
   373
		vaL[1] = -1;vaR[1] = 1;
sl@0
   374
		vaL[2] = 1;vaR[2] = 2;
sl@0
   375
		vaL1 = vaL;
sl@0
   376
		
sl@0
   377
		vaL <<= vaR;
sl@0
   378
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   379
		CPPUNIT_ASSERT(vaL [ 1 ] == -2);
sl@0
   380
		CPPUNIT_ASSERT(vaL [ 2 ] == 4);
sl@0
   381
		
sl@0
   382
		vaL1 <<= 2;
sl@0
   383
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 4);
sl@0
   384
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -4);
sl@0
   385
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 4);
sl@0
   386
		}
sl@0
   387
		{
sl@0
   388
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   389
		vaL[0] = 100;vaR[0] = 2;
sl@0
   390
		vaL[1] = -100;vaR[1] = 4;
sl@0
   391
		vaL[2] = 100;vaR[2] = 10;
sl@0
   392
		vaL1 = vaL;
sl@0
   393
		
sl@0
   394
		vaL /= vaR;
sl@0
   395
		CPPUNIT_ASSERT(vaL [ 0 ] == 50);
sl@0
   396
		CPPUNIT_ASSERT(vaL [ 1 ] == -25);
sl@0
   397
		CPPUNIT_ASSERT(vaL [ 2 ] == 10);
sl@0
   398
		
sl@0
   399
		vaL1 /= 2;
sl@0
   400
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 50);
sl@0
   401
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -50);
sl@0
   402
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 50);
sl@0
   403
		}
sl@0
   404
		{
sl@0
   405
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   406
		vaL[0] = 10;vaR[0] = 0;
sl@0
   407
		vaL[1] = -10;vaR[1] = 1;
sl@0
   408
		vaL[2] = 10;vaR[2] = 2;
sl@0
   409
		vaL1 = vaL;
sl@0
   410
		
sl@0
   411
		vaL -= vaR;
sl@0
   412
		CPPUNIT_ASSERT(vaL [ 0 ] == 10);
sl@0
   413
		CPPUNIT_ASSERT(vaL [ 1 ] == -11);
sl@0
   414
		CPPUNIT_ASSERT(vaL [ 2 ] == 8);
sl@0
   415
		
sl@0
   416
		vaL1 -= 2;
sl@0
   417
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 8);
sl@0
   418
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -12);
sl@0
   419
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 8);
sl@0
   420
		}
sl@0
   421
	}
sl@0
   422
void ValarrayTest::valarray_cov5()
sl@0
   423
	{
sl@0
   424
		{
sl@0
   425
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   426
		vaL[0] = 0;
sl@0
   427
		vaL[1] = -10;
sl@0
   428
		vaL[2] = 10;
sl@0
   429
		
sl@0
   430
		vaR = -vaL;
sl@0
   431
		CPPUNIT_ASSERT(vaR [ 0 ] == 0);
sl@0
   432
		CPPUNIT_ASSERT(vaR [ 1 ] == 10);
sl@0
   433
		CPPUNIT_ASSERT(vaR [ 2 ] == -10);
sl@0
   434
		}
sl@0
   435
		{
sl@0
   436
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   437
		vaL[0] = 10;vaR[0] = 0;
sl@0
   438
		vaL[1] = -10;vaR[1] = 1;
sl@0
   439
		vaL[2] = 10;vaR[2] = 2;
sl@0
   440
		vaL1 = vaL;
sl@0
   441
		
sl@0
   442
		vaL += vaR;
sl@0
   443
		CPPUNIT_ASSERT(vaL [ 0 ] == 10);
sl@0
   444
		CPPUNIT_ASSERT(vaL [ 1 ] == -9);
sl@0
   445
		CPPUNIT_ASSERT(vaL [ 2 ] == 12);
sl@0
   446
		
sl@0
   447
		vaL1 += 2;
sl@0
   448
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 12);
sl@0
   449
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -8);
sl@0
   450
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 12);
sl@0
   451
		}
sl@0
   452
		{
sl@0
   453
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   454
		vaL[0] = 2;vaR[0] = 0;
sl@0
   455
		vaL[1] = -1;vaR[1] = 1;
sl@0
   456
		vaL[2] = 2;vaR[2] = 2;
sl@0
   457
		vaL1 = vaL;
sl@0
   458
		
sl@0
   459
		vaL *= vaR;
sl@0
   460
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   461
		CPPUNIT_ASSERT(vaL [ 1 ] == -1);
sl@0
   462
		CPPUNIT_ASSERT(vaL [ 2 ] == 4);
sl@0
   463
		
sl@0
   464
		vaL1 *= 2;
sl@0
   465
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 4);
sl@0
   466
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -2);
sl@0
   467
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 4);
sl@0
   468
		}
sl@0
   469
		{
sl@0
   470
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   471
		vaL[0] = 0;vaR[0] = 0;
sl@0
   472
		vaL[1] = 1;vaR[1] = 1;
sl@0
   473
		vaL[2] = 2;vaR[2] = 2;
sl@0
   474
		vaL1 = vaL;
sl@0
   475
		
sl@0
   476
		vaL &= vaR;
sl@0
   477
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   478
		CPPUNIT_ASSERT(vaL [ 1 ] == 1);
sl@0
   479
		CPPUNIT_ASSERT(vaL [ 2 ] == 2);
sl@0
   480
		
sl@0
   481
		vaL1 &= 0;
sl@0
   482
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 0);
sl@0
   483
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 0);
sl@0
   484
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 0);
sl@0
   485
		}
sl@0
   486
	}
sl@0
   487
void ValarrayTest::valarray_cov6()
sl@0
   488
	{
sl@0
   489
		{
sl@0
   490
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3);
sl@0
   491
		vaL[0] = 53;vaR[0] = 1;
sl@0
   492
		vaL[1] = -67;vaR[1] = 4;
sl@0
   493
		vaL[2] = 53;vaR[2] = 7;
sl@0
   494
		vaL1 = vaL;
sl@0
   495
		
sl@0
   496
		vaL %= vaR;
sl@0
   497
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   498
		CPPUNIT_ASSERT(vaL [ 1 ] == -3);
sl@0
   499
		CPPUNIT_ASSERT(vaL [ 2 ] == 4);
sl@0
   500
		
sl@0
   501
		vaL1 %= 53;
sl@0
   502
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 0);
sl@0
   503
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -14);
sl@0
   504
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 0);
sl@0
   505
		}
sl@0
   506
		{
sl@0
   507
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   508
		vaL[0] = 1;vaR[0] = 1;
sl@0
   509
		vaL[1] = 0;vaR[1] = 2;
sl@0
   510
		vaL[2] = 1;vaR[2] = 3;
sl@0
   511
		vaL1 = vaL;
sl@0
   512
		vaL2 = vaL;		
sl@0
   513
		
sl@0
   514
		vaL = vaL | vaR;
sl@0
   515
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   516
		CPPUNIT_ASSERT(vaL [ 1 ] == 2);
sl@0
   517
		CPPUNIT_ASSERT(vaL [ 2 ] == 3);
sl@0
   518
		
sl@0
   519
		vaL1 = vaL1 | 3;
sl@0
   520
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 3);
sl@0
   521
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 3);
sl@0
   522
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 3);
sl@0
   523
		vaL2 = 3 | vaL2;
sl@0
   524
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 3);
sl@0
   525
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 3);
sl@0
   526
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 3);
sl@0
   527
		}
sl@0
   528
		{
sl@0
   529
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   530
		vaL[0] = 1;vaR[0] = 0;
sl@0
   531
		vaL[1] = 0;vaR[1] = 0;
sl@0
   532
		vaL[2] = 1;vaR[2] = 1;
sl@0
   533
		vaL1 = vaL;
sl@0
   534
		vaL2 = vaL;
sl@0
   535
		
sl@0
   536
		vaL = vaL ^ vaR;
sl@0
   537
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   538
		CPPUNIT_ASSERT(vaL [ 1 ] == 0);
sl@0
   539
		CPPUNIT_ASSERT(vaL [ 2 ] == 0);
sl@0
   540
		
sl@0
   541
		vaL1 = vaL1 ^ 0;
sl@0
   542
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 1);
sl@0
   543
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 0);
sl@0
   544
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 1);
sl@0
   545
		vaL2 = 0 ^ vaL2;
sl@0
   546
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 1);
sl@0
   547
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 0);
sl@0
   548
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 1);
sl@0
   549
		}
sl@0
   550
	}
sl@0
   551
void ValarrayTest::valarray_cov7()
sl@0
   552
	{
sl@0
   553
		{
sl@0
   554
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   555
		vaL[0] = 64;vaR[0] = 0;
sl@0
   556
		vaL[1] = -64;vaR[1] = 1;
sl@0
   557
		vaL[2] = 64;vaR[2] = 2;
sl@0
   558
		vaL1 = vaL;
sl@0
   559
		vaL2 = vaL;
sl@0
   560
		
sl@0
   561
		vaL = vaL >> vaR;
sl@0
   562
		CPPUNIT_ASSERT(vaL [ 0 ] == 64);
sl@0
   563
		CPPUNIT_ASSERT(vaL [ 1 ] == -32);
sl@0
   564
		CPPUNIT_ASSERT(vaL [ 2 ] == 16);
sl@0
   565
		
sl@0
   566
		vaL1 = vaL1 >> 0;
sl@0
   567
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 64);
sl@0
   568
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -64);
sl@0
   569
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 64);
sl@0
   570
		vaL2 = 0 >> vaL2;
sl@0
   571
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 0);
sl@0
   572
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 0);
sl@0
   573
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 0);
sl@0
   574
		}
sl@0
   575
		{
sl@0
   576
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   577
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   578
		vaL[0] = 1;vaR[0] = 0;
sl@0
   579
		vaL[1] = 0;vaR[1] = 0;
sl@0
   580
		vaL[2] = 1;vaR[2] = 2;
sl@0
   581
		
sl@0
   582
		vaLb1 = (vaL >= vaR);
sl@0
   583
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == true);
sl@0
   584
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == true);
sl@0
   585
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == false);
sl@0
   586
		
sl@0
   587
		vaLb2 = (vaL >= 0);
sl@0
   588
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == true);
sl@0
   589
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == true);
sl@0
   590
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == true);
sl@0
   591
		vaLb3 = (0 >= vaL);
sl@0
   592
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == false);
sl@0
   593
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == true);
sl@0
   594
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == false);
sl@0
   595
		}
sl@0
   596
		{
sl@0
   597
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   598
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   599
		vaL[0] = 1;vaR[0] = 0;
sl@0
   600
		vaL[1] = 0;vaR[1] = 0;
sl@0
   601
		vaL[2] = 1;vaR[2] = 2;
sl@0
   602
		
sl@0
   603
		vaLb1 = (vaL > vaR);
sl@0
   604
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == true);
sl@0
   605
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == false);
sl@0
   606
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == false);
sl@0
   607
		
sl@0
   608
		vaLb2 = (vaL > 0);
sl@0
   609
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == true);
sl@0
   610
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == false);
sl@0
   611
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == true);
sl@0
   612
		vaLb3 = (0 > vaL);
sl@0
   613
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == false);
sl@0
   614
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == false);
sl@0
   615
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == false);
sl@0
   616
		}
sl@0
   617
	}
sl@0
   618
void ValarrayTest::valarray_cov8()
sl@0
   619
	{
sl@0
   620
		{
sl@0
   621
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   622
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   623
		vaL[0] = 1;vaR[0] = 0;
sl@0
   624
		vaL[1] = 0;vaR[1] = 0;
sl@0
   625
		vaL[2] = 1;vaR[2] = 2;
sl@0
   626
		
sl@0
   627
		vaLb1 = (vaL == vaR);
sl@0
   628
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == false);
sl@0
   629
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == true);
sl@0
   630
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == false);
sl@0
   631
		
sl@0
   632
		vaLb2 = (vaL == 0);
sl@0
   633
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == false);
sl@0
   634
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == true);
sl@0
   635
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == false);
sl@0
   636
		vaLb3 = (0 == vaL);
sl@0
   637
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == false);
sl@0
   638
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == true);
sl@0
   639
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == false);
sl@0
   640
		}
sl@0
   641
		{
sl@0
   642
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   643
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   644
		vaL[0] = 1;vaR[0] = 0;
sl@0
   645
		vaL[1] = 0;vaR[1] = 0;
sl@0
   646
		vaL[2] = 1;vaR[2] = 2;
sl@0
   647
		
sl@0
   648
		vaLb1 = (vaL <= vaR);
sl@0
   649
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == false);
sl@0
   650
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == true);
sl@0
   651
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == true);
sl@0
   652
		
sl@0
   653
		vaLb2 = (vaL <= 0);
sl@0
   654
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == false);
sl@0
   655
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == true);
sl@0
   656
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == false);
sl@0
   657
		vaLb3 = (0 <= vaL);
sl@0
   658
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == true);
sl@0
   659
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == true);
sl@0
   660
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == true);
sl@0
   661
		}
sl@0
   662
		{
sl@0
   663
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   664
		vaL[0] = 1;vaR[0] = 0;
sl@0
   665
		vaL[1] = -1;vaR[1] = 1;
sl@0
   666
		vaL[2] = 1;vaR[2] = 2;
sl@0
   667
		vaL1 = vaL;
sl@0
   668
		vaL2 = vaL;
sl@0
   669
		
sl@0
   670
		vaL = vaL << vaR;
sl@0
   671
		CPPUNIT_ASSERT(vaL [ 0 ] == 1);
sl@0
   672
		CPPUNIT_ASSERT(vaL [ 1 ] == -2);
sl@0
   673
		CPPUNIT_ASSERT(vaL [ 2 ] == 4);
sl@0
   674
		
sl@0
   675
		vaL1 = vaL1 << 2;
sl@0
   676
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 4);
sl@0
   677
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -4);
sl@0
   678
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 4);
sl@0
   679
		vaL2 = 2 << vaL2;
sl@0
   680
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 4);
sl@0
   681
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 0);
sl@0
   682
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 4);
sl@0
   683
		}
sl@0
   684
	}
sl@0
   685
void ValarrayTest::valarray_cov9()
sl@0
   686
	{
sl@0
   687
		{
sl@0
   688
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   689
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   690
		vaL[0] = 1;vaR[0] = 0;
sl@0
   691
		vaL[1] = 0;vaR[1] = 0;
sl@0
   692
		vaL[2] = 1;vaR[2] = 2;
sl@0
   693
		
sl@0
   694
		vaLb1 = (vaL < vaR);
sl@0
   695
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == false);
sl@0
   696
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == false);
sl@0
   697
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == true);
sl@0
   698
		
sl@0
   699
		vaLb2 = (vaL < 0);
sl@0
   700
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == false);
sl@0
   701
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == false);
sl@0
   702
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == false);
sl@0
   703
		vaLb3 = (0 < vaL);
sl@0
   704
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == true);
sl@0
   705
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == false);
sl@0
   706
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == true);
sl@0
   707
		}
sl@0
   708
		{
sl@0
   709
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   710
		vaL[0] = 100;vaR[0] = 2;
sl@0
   711
		vaL[1] = -100;vaR[1] = 4;
sl@0
   712
		vaL[2] = 100;vaR[2] = 10;
sl@0
   713
		vaL1 = vaL;
sl@0
   714
		vaL2 = vaL;
sl@0
   715
		
sl@0
   716
		vaL = vaL / vaR;
sl@0
   717
		CPPUNIT_ASSERT(vaL [ 0 ] == 50);
sl@0
   718
		CPPUNIT_ASSERT(vaL [ 1 ] == -25);
sl@0
   719
		CPPUNIT_ASSERT(vaL [ 2 ] == 10);
sl@0
   720
		
sl@0
   721
		vaL1 = vaL1 / 2;
sl@0
   722
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 50);
sl@0
   723
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -50);
sl@0
   724
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 50);
sl@0
   725
		vaL2 = 1000 / vaL2 ;
sl@0
   726
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 10);
sl@0
   727
		CPPUNIT_ASSERT(vaL2 [ 1 ] == -10);
sl@0
   728
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 10);
sl@0
   729
		}
sl@0
   730
		{
sl@0
   731
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   732
		vaL[0] = 10;vaR[0] = 0;
sl@0
   733
		vaL[1] = -10;vaR[1] = 1;
sl@0
   734
		vaL[2] = 10;vaR[2] = 2;
sl@0
   735
		vaL1 = vaL;
sl@0
   736
		vaL2 = vaL;
sl@0
   737
		
sl@0
   738
		vaL = vaL - vaR;
sl@0
   739
		CPPUNIT_ASSERT(vaL [ 0 ] == 10);
sl@0
   740
		CPPUNIT_ASSERT(vaL [ 1 ] == -11);
sl@0
   741
		CPPUNIT_ASSERT(vaL [ 2 ] == 8);
sl@0
   742
		
sl@0
   743
		vaL1 = vaL1 - 2;
sl@0
   744
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 8);
sl@0
   745
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -12);
sl@0
   746
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 8);
sl@0
   747
		vaL2 = 2 - vaL2;
sl@0
   748
		CPPUNIT_ASSERT(vaL2 [ 0 ] == -8);
sl@0
   749
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 12);
sl@0
   750
		CPPUNIT_ASSERT(vaL2 [ 2 ] == -8);
sl@0
   751
		}
sl@0
   752
	}
sl@0
   753
void ValarrayTest::valarray_cov10()
sl@0
   754
	{
sl@0
   755
		{
sl@0
   756
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   757
		vaL[0] = 10;vaR[0] = 0;
sl@0
   758
		vaL[1] = -10;vaR[1] = 1;
sl@0
   759
		vaL[2] = 10;vaR[2] = 2;
sl@0
   760
		vaL1 = vaL;
sl@0
   761
		vaL2 = vaL;
sl@0
   762
		
sl@0
   763
		vaL = vaL + vaR;
sl@0
   764
		CPPUNIT_ASSERT(vaL [ 0 ] == 10);
sl@0
   765
		CPPUNIT_ASSERT(vaL [ 1 ] == -9);
sl@0
   766
		CPPUNIT_ASSERT(vaL [ 2 ] == 12);
sl@0
   767
		
sl@0
   768
		vaL1 = vaL1 + 2;
sl@0
   769
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 12);
sl@0
   770
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -8);
sl@0
   771
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 12);
sl@0
   772
		vaL2 = 2 + vaL2;
sl@0
   773
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 12);
sl@0
   774
		CPPUNIT_ASSERT(vaL2 [ 1 ] == -8);
sl@0
   775
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 12);
sl@0
   776
		}
sl@0
   777
		{
sl@0
   778
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   779
		vaL[0] = 10;vaR[0] = 0;
sl@0
   780
		vaL[1] = -10;vaR[1] = 1;
sl@0
   781
		vaL[2] = 10;vaR[2] = 2;
sl@0
   782
		vaL1 = vaL;
sl@0
   783
		vaL2 = vaL;
sl@0
   784
		
sl@0
   785
		vaL = vaL * vaR;
sl@0
   786
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   787
		CPPUNIT_ASSERT(vaL [ 1 ] == -10);
sl@0
   788
		CPPUNIT_ASSERT(vaL [ 2 ] == 20);
sl@0
   789
		
sl@0
   790
		vaL1 = vaL1 * 2;
sl@0
   791
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 20);
sl@0
   792
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -20);
sl@0
   793
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 20);
sl@0
   794
		vaL2 = 2 * vaL2;
sl@0
   795
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 20);
sl@0
   796
		CPPUNIT_ASSERT(vaL2 [ 1 ] == -20);
sl@0
   797
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 20);
sl@0
   798
		}
sl@0
   799
		{
sl@0
   800
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   801
		vaL[0] = 0;vaR[0] = 0;
sl@0
   802
		vaL[1] = 1;vaR[1] = 1;
sl@0
   803
		vaL[2] = 2;vaR[2] = 2;
sl@0
   804
		vaL1 = vaL;
sl@0
   805
		vaL2 = vaL;
sl@0
   806
		
sl@0
   807
		vaL = vaL & vaR;
sl@0
   808
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   809
		CPPUNIT_ASSERT(vaL [ 1 ] == 1);
sl@0
   810
		CPPUNIT_ASSERT(vaL [ 2 ] == 2);
sl@0
   811
		
sl@0
   812
		vaL1 = vaL1 & 0;
sl@0
   813
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 0);
sl@0
   814
		CPPUNIT_ASSERT(vaL1 [ 1 ] == 0);
sl@0
   815
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 0);
sl@0
   816
		vaL2 = 0 & vaL2;
sl@0
   817
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 0);
sl@0
   818
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 0);
sl@0
   819
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 0);
sl@0
   820
		}
sl@0
   821
	}
sl@0
   822
void ValarrayTest::valarray_cov11()
sl@0
   823
	{
sl@0
   824
		{
sl@0
   825
		valarray<int> vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3);
sl@0
   826
		vaL[0] = 53;vaR[0] = 1;
sl@0
   827
		vaL[1] = -67;vaR[1] = 4;
sl@0
   828
		vaL[2] = 53;vaR[2] = 7;
sl@0
   829
		vaL1 = vaL;
sl@0
   830
		vaL2 = vaL;
sl@0
   831
		
sl@0
   832
		vaL = vaL % vaR;
sl@0
   833
		CPPUNIT_ASSERT(vaL [ 0 ] == 0);
sl@0
   834
		CPPUNIT_ASSERT(vaL [ 1 ] == -3);
sl@0
   835
		CPPUNIT_ASSERT(vaL [ 2 ] == 4);
sl@0
   836
		
sl@0
   837
		vaL1 = vaL1 % 53;
sl@0
   838
		CPPUNIT_ASSERT(vaL1 [ 0 ] == 0);
sl@0
   839
		CPPUNIT_ASSERT(vaL1 [ 1 ] == -14);
sl@0
   840
		CPPUNIT_ASSERT(vaL1 [ 2 ] == 0);
sl@0
   841
		
sl@0
   842
		vaL2 = 67 % vaL2;
sl@0
   843
		CPPUNIT_ASSERT(vaL2 [ 0 ] == 14);
sl@0
   844
		CPPUNIT_ASSERT(vaL2 [ 1 ] == 0);
sl@0
   845
		CPPUNIT_ASSERT(vaL2 [ 2 ] == 14);
sl@0
   846
		}
sl@0
   847
		{
sl@0
   848
		valarray<int> vaL ( 3 ), vaR ( 3 );
sl@0
   849
		valarray<bool> vaLb1(3),vaLb2(3),vaLb3(3);
sl@0
   850
		vaL[0] = 1;vaR[0] = 0;
sl@0
   851
		vaL[1] = 0;vaR[1] = 0;
sl@0
   852
		vaL[2] = 1;vaR[2] = 2;
sl@0
   853
		
sl@0
   854
		vaLb1 = (vaL != vaR);
sl@0
   855
		CPPUNIT_ASSERT(vaLb1 [ 0 ] == true);
sl@0
   856
		CPPUNIT_ASSERT(vaLb1 [ 1 ] == false);
sl@0
   857
		CPPUNIT_ASSERT(vaLb1 [ 2 ] == true);
sl@0
   858
		
sl@0
   859
		vaLb2 = (vaL != 0);
sl@0
   860
		CPPUNIT_ASSERT(vaLb2 [ 0 ] == true);
sl@0
   861
		CPPUNIT_ASSERT(vaLb2 [ 1 ] == false);
sl@0
   862
		CPPUNIT_ASSERT(vaLb2 [ 2 ] == true);
sl@0
   863
		vaLb3 = (1 != vaL);
sl@0
   864
		CPPUNIT_ASSERT(vaLb3 [ 0 ] == false);
sl@0
   865
		CPPUNIT_ASSERT(vaLb3 [ 1 ] == true);
sl@0
   866
		CPPUNIT_ASSERT(vaLb3 [ 2 ] == false);
sl@0
   867
		}
sl@0
   868
	}
sl@0
   869
void ValarrayTest::valarray_cov12()
sl@0
   870
	{
sl@0
   871
		{
sl@0
   872
		valarray<int> vaL ( 4 ), vaL1(4),vaR ( 4 ) , vaR1 ( 4 );
sl@0
   873
sl@0
   874
		vaL[0] = 0;vaL1[0] = 7;
sl@0
   875
		vaL[1] = 1;vaL1[1] = 6;
sl@0
   876
		vaL[2] = 2;vaL1[2] = 5;
sl@0
   877
		vaL[3] = 3;vaL1[3] = 4;
sl@0
   878
		
sl@0
   879
		vaR = vaL.shift(3);
sl@0
   880
		CPPUNIT_ASSERT(vaR [ 0 ] == 3);
sl@0
   881
		CPPUNIT_ASSERT(vaR [ 1 ] == 0);
sl@0
   882
		CPPUNIT_ASSERT(vaR [ 2 ] == 0);
sl@0
   883
		CPPUNIT_ASSERT(vaR [ 3 ] == 0);
sl@0
   884
		vaR1 = vaL1.shift(-4);
sl@0
   885
		CPPUNIT_ASSERT(vaR1 [ 0 ] == 0);
sl@0
   886
		CPPUNIT_ASSERT(vaR1 [ 1 ] == 0);
sl@0
   887
		CPPUNIT_ASSERT(vaR1 [ 2 ] == 0);
sl@0
   888
		CPPUNIT_ASSERT(vaR1 [ 3 ] == 0);
sl@0
   889
		}
sl@0
   890
	}