001/* 002 * $Id: ExpVectorTest.java 3789 2011-10-01 18:54:43Z kredel $ 003 */ 004 005package edu.jas.poly; 006 007 008import java.util.Arrays; 009import java.util.List; 010import java.util.ArrayList; 011 012import junit.framework.Test; 013import junit.framework.TestCase; 014import junit.framework.TestSuite; 015 016import org.apache.log4j.BasicConfigurator; 017 018import edu.jas.arith.BigInteger; 019 020 021/** 022 * ExpVector tests with JUnit. 023 * Tests arithmetic operations, for comparison tests @see TermOrderTest.java 024 * @author Heinz Kredel. 025 */ 026 027public class ExpVectorTest extends TestCase { 028 029 /** 030 * main 031 */ 032 public static void main (String[] args) { 033 BasicConfigurator.configure(); 034 junit.textui.TestRunner.run( suite() ); 035 } 036 037 /** 038 * Constructs a <CODE>ExpVectorTest</CODE> object. 039 * @param name String. 040 */ 041 public ExpVectorTest(String name) { 042 super(name); 043 } 044 045 /** 046 */ 047 public static Test suite() { 048 TestSuite suite= new TestSuite(ExpVectorTest.class); 049 return suite; 050 } 051 052 //private final static int bitlen = 100; 053 054 ExpVector a; 055 ExpVector b; 056 ExpVector c; 057 ExpVector d; 058 059 protected void setUp() { 060 a = b = c = d = null; 061 } 062 063 protected void tearDown() { 064 a = b = c = d = null; 065 } 066 067 068 /** 069 * Test constructor and toString. 070 * 071 */ 072 public void testConstructor() { 073 a = ExpVector.create( 0 ); 074 b = ExpVector.create( 0 ); 075 assertEquals("() = ()",a,b); 076 assertEquals("length( () ) = 0",a.length(),0); 077 assertTrue("isZERO( () )",a.isZERO()); 078 079 a = ExpVector.create( 10 ); 080 b = ExpVector.create( 10 ); 081 assertEquals("10e = 10e",a,b); 082 assertEquals("length( 10e ) = 10",a.length(),10); 083 assertTrue("isZERO( ( 10e ) )",a.isZERO()); 084 085 String s = "(0,0,0,0,0,0,0,0,0,0)"; 086 a = ExpVector.create( s ); 087 String t = a.toString().substring(0,s.length()); 088 089 assertEquals("stringConstr = toString",s,t); 090 assertTrue("isZERO( ( 10e ) )",a.isZERO()); 091 } 092 093 094 /** 095 * Test random integer. 096 * 097 */ 098 public void testRandom() { 099 float q = (float) 0.2; 100 101 a = ExpVector.EVRAND(5,10,q); 102 String s = a.toString(); 103 if ( s.indexOf(":") >= 0 ) { 104 s = s.substring(0,s.indexOf(":")); 105 } 106 b = ExpVector.create( s ); 107 108 assertEquals("a == b", true, a.equals(b) ); 109 110 c = ExpVector.EVDIF(b,a); 111 112 assertTrue("a-b = 0",c.isZERO()); 113 } 114 115 116 /** 117 * Test addition. 118 * 119 */ 120 public void testAddition() { 121 float q = (float) 0.2; 122 123 a = ExpVector.EVRAND(5,10,q); 124 125 b = ExpVector.EVSUM(a,a); 126 c = ExpVector.EVDIF(b,a); 127 128 assertEquals("a+a-a = a",c,a); 129 assertTrue("a+a-a = a", c.equals(a) ); 130 131 boolean t; 132 t = ExpVector.EVMT(b,a); 133 assertTrue("a | a+a", t ); 134 135 a = ExpVector.EVRAND(5,10,q); 136 b = ExpVector.EVRAND(5,10,q); 137 138 c = ExpVector.EVSUM(a,b); 139 d = ExpVector.EVSUM(b,a); 140 assertTrue("a+b = b+a", c.equals(d) ); 141 } 142 143 144 /** 145 * Test lcm. 146 * 147 */ 148 public void testLcm() { 149 float q = (float) 0.2; 150 151 a = ExpVector.EVRAND(5,10,q); 152 b = ExpVector.EVRAND(5,10,q); 153 c = ExpVector.EVLCM(a,b); 154 d = ExpVector.EVLCM(b,a); 155 156 assertTrue("lcm(a,b) = lcm(b,a)", c.equals(d) ); 157 158 assertTrue("a | lcm(a,b)", ExpVector.EVMT(c,a) ); 159 assertTrue("b | lcm(a,b)", ExpVector.EVMT(c,b) ); 160 161 d = ExpVector.EVDIF(c,a); 162 assertTrue("sign(lcm(a,b)-a) >= 0", ExpVector.EVSIGN(d) >= 0 ); 163 d = ExpVector.EVDIF(c,b); 164 assertTrue("sign(lcm(a,b)-b) >= 0", ExpVector.EVSIGN(d) >= 0 ); 165 } 166 167 /** 168 * Test tdeg. 169 * 170 */ 171 public void testTdeg() { 172 a = ExpVector.create( 100 ); 173 assertTrue("tdeg(a) = 0", ExpVector.EVTDEG(a) == 0 ); 174 175 float q = (float) 0.2; 176 177 a = ExpVector.EVRAND(5,10,q); 178 b = ExpVector.EVRAND(5,10,q); 179 180 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 181 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 182 183 c = ExpVector.EVSUM(a,b); 184 assertTrue("tdeg(a+b) >= tdeg(a)", 185 ExpVector.EVTDEG(c) >= 186 ExpVector.EVTDEG(a) ); 187 assertTrue("tdeg(a+b) >= tdeg(b)", 188 ExpVector.EVTDEG(c) >= 189 ExpVector.EVTDEG(b) ); 190 191 c = ExpVector.EVLCM(a,b); 192 assertTrue("tdeg(lcm(a,b)) >= tdeg(a)", 193 ExpVector.EVTDEG(c) >= 194 ExpVector.EVTDEG(a) ); 195 assertTrue("tdeg(lcm(a,b)) >= tdeg(b)", 196 ExpVector.EVTDEG(c) >= 197 ExpVector.EVTDEG(b) ); 198 } 199 200 /** 201 * Test weighted. 202 * 203 */ 204 public void testWeightdeg() { 205 a = ExpVector.create( 100 ); 206 assertTrue("tdeg(a) = 0", ExpVector.EVTDEG(a) == 0 ); 207 assertTrue("wdeg(a) = 0", ExpVector.EVWDEG(null,a) == 0 ); 208 209 float q = (float) 0.2; 210 211 a = ExpVector.EVRAND(5,10,q); 212 b = ExpVector.EVRAND(5,10,q); 213 long [][] w = new long [][] { new long[] { 1l, 1l, 1l, 1l, 1l } }; 214 215 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 216 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 217 218 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 219 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 220 221 assertEquals("tdeg(a) == wdeg(a)", ExpVector.EVTDEG(a), ExpVector.EVWDEG(w,a) ); 222 assertEquals("tdeg(b) == wdeg(b)", ExpVector.EVTDEG(b), ExpVector.EVWDEG(w,b) ); 223 224 c = ExpVector.EVSUM(a,b); 225 assertTrue("wdeg(a+b) >= wdeg(a)", 226 ExpVector.EVWDEG(w,c) >= 227 ExpVector.EVWDEG(w,a) ); 228 assertTrue("wdeg(a+b) >= wdeg(b)", 229 ExpVector.EVWDEG(w,c) >= 230 ExpVector.EVWDEG(w,b) ); 231 232 c = ExpVector.EVLCM(a,b); 233 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 234 ExpVector.EVWDEG(w,c) >= 235 ExpVector.EVWDEG(w,a) ); 236 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 237 ExpVector.EVWDEG(w,c) >= 238 ExpVector.EVWDEG(w,b) ); 239 240 241 w = new long [][] { new long[] { 10l, 1l, 3l, 9l, 100l } }; 242 243 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 244 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 245 246 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 247 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 248 249 assertTrue("tdeg(a) <= wdeg(a)", ExpVector.EVTDEG(a) <= ExpVector.EVWDEG(w,a) ); 250 assertTrue("tdeg(b) <= wdeg(b)", ExpVector.EVTDEG(b) <= ExpVector.EVWDEG(w,b) ); 251 252 c = ExpVector.EVSUM(a,b); 253 assertTrue("wdeg(a+b) >= wdeg(a)", 254 ExpVector.EVWDEG(w,c) >= 255 ExpVector.EVWDEG(w,a) ); 256 assertTrue("wdeg(a+b) >= wdeg(b)", 257 ExpVector.EVWDEG(w,c) >= 258 ExpVector.EVWDEG(w,b) ); 259 260 c = ExpVector.EVLCM(a,b); 261 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 262 ExpVector.EVWDEG(w,c) >= 263 ExpVector.EVWDEG(w,a) ); 264 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 265 ExpVector.EVWDEG(w,c) >= 266 ExpVector.EVWDEG(w,b) ); 267 268 269 w = new long [][] { new long[] { 10l, 1l, 3l, 9l, 100l }, 270 new long[] { 1l, 1l, 1l, 1l, 1l } }; 271 272 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 273 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 274 275 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 276 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 277 278 assertTrue("tdeg(a) <= wdeg(a)", ExpVector.EVTDEG(a) <= ExpVector.EVWDEG(w,a) ); 279 assertTrue("tdeg(b) <= wdeg(b)", ExpVector.EVTDEG(b) <= ExpVector.EVWDEG(w,b) ); 280 281 c = ExpVector.EVSUM(a,b); 282 assertTrue("wdeg(a+b) >= wdeg(a)", 283 ExpVector.EVWDEG(w,c) >= 284 ExpVector.EVWDEG(w,a) ); 285 assertTrue("wdeg(a+b) >= wdeg(b)", 286 ExpVector.EVWDEG(w,c) >= 287 ExpVector.EVWDEG(w,b) ); 288 289 c = ExpVector.EVLCM(a,b); 290 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 291 ExpVector.EVWDEG(w,c) >= 292 ExpVector.EVWDEG(w,a) ); 293 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 294 ExpVector.EVWDEG(w,c) >= 295 ExpVector.EVWDEG(w,b) ); 296 297 } 298 299 300 /** 301 * Test dependency on variables. 302 * 303 */ 304 public void testDependency() { 305 int[] exp; 306 int[] dep; 307 308 a = ExpVector.create(10,5,2l); 309 exp = new int[] { 5 }; 310 dep = ExpVector.EVDOV(a); 311 assertTrue("[5] = [5]",Arrays.equals(exp,dep)); 312 313 b = ExpVector.create(10,3,9l); 314 exp = new int[] { 3 }; 315 dep = ExpVector.EVDOV(b); 316 assertTrue("[3] = [3]",Arrays.equals(exp,dep)); 317 318 c = ExpVector.EVSUM(a,b); 319 exp = new int[] { 3, 5 }; 320 dep = ExpVector.EVDOV(c); 321 assertTrue("[3,5] = [3,5] "+Arrays.toString(exp)+","+Arrays.toString(dep),Arrays.equals(exp,dep)); 322 323 b = ExpVector.create(10); 324 exp = new int[] { }; 325 dep = ExpVector.EVDOV(b); 326 assertTrue("[] = []",Arrays.equals(exp,dep)); 327 328 b = ExpVector.create(0); 329 exp = new int[] { }; 330 dep = ExpVector.EVDOV(b); 331 assertTrue("[] = []",Arrays.equals(exp,dep)); 332 333 b = ExpVector.create(1,0,1l); 334 exp = new int[] { 0 }; 335 dep = ExpVector.EVDOV(b); 336 assertTrue("[0] = [0]",Arrays.equals(exp,dep)); 337 } 338 339 340 /** 341 * Test random exp vector 2. 342 * 343 */ 344 public void testRandom2() { 345 float q = (float) 0.2; 346 347 a = ExpVector.EVRAND(5,10,q); 348 b = ExpVector.create( "" + a ); 349 350 assertEquals("a == b", true, a.equals(b) ); 351 352 c = b.subtract(a); 353 354 assertTrue("a-b = 0",c.isZERO()); 355 } 356 357 358 /** 359 * Test addition. 360 * 361 */ 362 public void testAddition2() { 363 float q = (float) 0.2; 364 365 a = ExpVector.EVRAND(5,10,q); 366 367 b = a.sum(a); 368 c = b.subtract(a); 369 370 assertEquals("a+a-a = a",c,a); 371 assertTrue("a+a-a = a", c.equals(a) ); 372 373 boolean t; 374 t = b.multipleOf(a); 375 assertTrue("a | a+a", t ); 376 377 a = ExpVector.EVRAND(5,10,q); 378 b = ExpVector.EVRAND(5,10,q); 379 380 c = a.sum(b); 381 d = b.sum(a); 382 assertTrue("a+b = b+a", c.equals(d) ); 383 } 384 385 386 /** 387 * Test lcm. 388 * 389 */ 390 public void testLcm2() { 391 float q = (float) 0.2; 392 393 a = ExpVector.EVRAND(5,10,q); 394 b = ExpVector.EVRAND(5,10,q); 395 c = a.lcm(b); 396 d = b.lcm(a); 397 398 assertTrue("lcm(a,b) = lcm(b,a)", c.equals(d) ); 399 400 assertTrue("a | lcm(a,b)", c.multipleOf(a) ); 401 assertTrue("b | lcm(a,b)", c.multipleOf(b) ); 402 403 d = c.subtract(a); 404 assertTrue("sign(lcm(a,b)-a) >= 0", d.signum() >= 0 ); 405 d = c.subtract(b); 406 assertTrue("sign(lcm(a,b)-b) >= 0", d.signum() >= 0 ); 407 } 408 409 /** 410 * Test tdeg. 411 * 412 */ 413 public void testTdeg2() { 414 a = ExpVector.create( 100 ); 415 assertTrue("tdeg(a) = 0", ExpVector.EVTDEG(a) == 0 ); 416 417 float q = (float) 0.2; 418 419 a = ExpVector.EVRAND(5,10,q); 420 b = ExpVector.EVRAND(5,10,q); 421 422 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 423 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 424 425 c = a.sum(b); 426 assertTrue("tdeg(a+b) >= tdeg(a)", 427 ExpVector.EVTDEG(c) >= 428 ExpVector.EVTDEG(a) ); 429 assertTrue("tdeg(a+b) >= tdeg(b)", 430 ExpVector.EVTDEG(c) >= 431 ExpVector.EVTDEG(b) ); 432 433 c = a.lcm(b); 434 assertTrue("tdeg(lcm(a,b)) >= tdeg(a)", 435 ExpVector.EVTDEG(c) >= 436 ExpVector.EVTDEG(a) ); 437 assertTrue("tdeg(lcm(a,b)) >= tdeg(b)", 438 ExpVector.EVTDEG(c) >= 439 ExpVector.EVTDEG(b) ); 440 } 441 442 /** 443 * Test weighted. 444 * 445 */ 446 public void testWeightdeg2() { 447 a = ExpVector.create( 100 ); 448 assertTrue("tdeg(a) = 0", ExpVector.EVTDEG(a) == 0 ); 449 assertTrue("wdeg(a) = 0", ExpVector.EVWDEG(null,a) == 0 ); 450 451 float q = (float) 0.2; 452 453 a = ExpVector.EVRAND(5,10,q); 454 b = ExpVector.EVRAND(5,10,q); 455 long [][] w = new long [][] { new long[] { 1l, 1l, 1l, 1l, 1l } }; 456 457 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 458 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 459 460 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 461 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 462 463 assertEquals("tdeg(a) == wdeg(a)", ExpVector.EVTDEG(a), ExpVector.EVWDEG(w,a) ); 464 assertEquals("tdeg(b) == wdeg(b)", ExpVector.EVTDEG(b), ExpVector.EVWDEG(w,b) ); 465 466 c = a.sum(b); 467 assertTrue("wdeg(a+b) >= wdeg(a)", 468 ExpVector.EVWDEG(w,c) >= 469 ExpVector.EVWDEG(w,a) ); 470 assertTrue("wdeg(a+b) >= wdeg(b)", 471 ExpVector.EVWDEG(w,c) >= 472 ExpVector.EVWDEG(w,b) ); 473 474 c = a.lcm(b); 475 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 476 ExpVector.EVWDEG(w,c) >= 477 ExpVector.EVWDEG(w,a) ); 478 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 479 ExpVector.EVWDEG(w,c) >= 480 ExpVector.EVWDEG(w,b) ); 481 482 483 w = new long [][] { new long[] { 10l, 1l, 3l, 9l, 100l } }; 484 485 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 486 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 487 488 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 489 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 490 491 assertTrue("tdeg(a) <= wdeg(a)", ExpVector.EVTDEG(a) <= ExpVector.EVWDEG(w,a) ); 492 assertTrue("tdeg(b) <= wdeg(b)", ExpVector.EVTDEG(b) <= ExpVector.EVWDEG(w,b) ); 493 494 c = a.sum(b); 495 assertTrue("wdeg(a+b) >= wdeg(a)", 496 ExpVector.EVWDEG(w,c) >= 497 ExpVector.EVWDEG(w,a) ); 498 assertTrue("wdeg(a+b) >= wdeg(b)", 499 ExpVector.EVWDEG(w,c) >= 500 ExpVector.EVWDEG(w,b) ); 501 502 c = a.lcm(b); 503 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 504 ExpVector.EVWDEG(w,c) >= 505 ExpVector.EVWDEG(w,a) ); 506 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 507 ExpVector.EVWDEG(w,c) >= 508 ExpVector.EVWDEG(w,b) ); 509 510 511 w = new long [][] { new long[] { 10l, 1l, 3l, 9l, 100l }, 512 new long[] { 1l, 1l, 1l, 1l, 1l } }; 513 514 assertTrue("tdeg(a) >= 0", ExpVector.EVTDEG(a) >= 0 ); 515 assertTrue("tdeg(b) >= 0", ExpVector.EVTDEG(b) >= 0 ); 516 517 assertTrue("wdeg(a) >= 0", ExpVector.EVWDEG(w,a) >= 0 ); 518 assertTrue("wdeg(b) >= 0", ExpVector.EVWDEG(w,b) >= 0 ); 519 520 assertTrue("tdeg(a) <= wdeg(a)", ExpVector.EVTDEG(a) <= ExpVector.EVWDEG(w,a) ); 521 assertTrue("tdeg(b) <= wdeg(b)", ExpVector.EVTDEG(b) <= ExpVector.EVWDEG(w,b) ); 522 523 c = a.sum(b); 524 assertTrue("wdeg(a+b) >= wdeg(a)", 525 ExpVector.EVWDEG(w,c) >= 526 ExpVector.EVWDEG(w,a) ); 527 assertTrue("wdeg(a+b) >= wdeg(b)", 528 ExpVector.EVWDEG(w,c) >= 529 ExpVector.EVWDEG(w,b) ); 530 531 c = a.lcm(b); 532 assertTrue("wdeg(lcm(a,b)) >= wdeg(a)", 533 ExpVector.EVWDEG(w,c) >= 534 ExpVector.EVWDEG(w,a) ); 535 assertTrue("wdeg(lcm(a,b)) >= wdeg(b)", 536 ExpVector.EVWDEG(w,c) >= 537 ExpVector.EVWDEG(w,b) ); 538 539 } 540 541 542 /** 543 * Test dependency on variables. 544 * 545 */ 546 public void testDependency2() { 547 int[] exp; 548 int[] dep; 549 550 a = ExpVector.create(10,5,2l); 551 exp = new int[] { 5 }; 552 dep = a.dependencyOnVariables(); 553 assertTrue("[5] = [5]",Arrays.equals(exp,dep)); 554 555 b = ExpVector.create(10,3,9l); 556 exp = new int[] { 3 }; 557 dep = b.dependencyOnVariables(); 558 assertTrue("[3] = [3]",Arrays.equals(exp,dep)); 559 560 c = a.sum(b); 561 exp = new int[] { 3, 5 }; 562 dep = c.dependencyOnVariables(); 563 assertTrue("[3,5] = [3,5] "+Arrays.toString(exp)+","+Arrays.toString(dep),Arrays.equals(exp,dep)); 564 565 b = ExpVector.create(10); 566 exp = new int[] { }; 567 dep = b.dependencyOnVariables(); 568 assertTrue("[] = []",Arrays.equals(exp,dep)); 569 570 b = ExpVector.create(0); 571 exp = new int[] { }; 572 dep = b.dependencyOnVariables(); 573 assertTrue("[] = []",Arrays.equals(exp,dep)); 574 575 b = ExpVector.create(1,0,1l); 576 exp = new int[] { 0 }; 577 dep = b.dependencyOnVariables(); 578 assertTrue("[0] = [0]",Arrays.equals(exp,dep)); 579 } 580 581 582 /** 583 * Test evaluation. 584 * 585 */ 586 public void testEvaluation() { 587 float q = (float) 0.2; 588 int rl = 5; 589 590 a = ExpVector.EVRAND(rl,10,q); 591 b = ExpVector.EVRAND(rl,10,q); 592 BigInteger fv = new BigInteger(0); 593 List<BigInteger> v = new ArrayList<BigInteger>(a.length()); 594 for ( int i = 0; i < a.length(); i++ ) { 595 v.add( fv.random(4) ); 596 } 597 598 BigInteger av = a.evaluate(fv,v); 599 BigInteger bv = b.evaluate(fv,v); 600 601 c = a.sum(b); 602 BigInteger cv = c.evaluate(fv,v); 603 BigInteger dv = av.multiply(bv); 604 605 assertEquals("a(v)*b(v) = (a+b)(v) ", cv, dv); 606 607 c = ExpVector.create(rl); 608 cv = c.evaluate(fv,v); 609 dv = fv.getONE(); 610 assertEquals("0(v) = 1 ", cv, dv); 611 612 v.clear(); 613 for ( int i = 0; i < a.length(); i++ ) { 614 v.add( fv.getZERO() ); 615 } 616 cv = c.evaluate(fv,v); 617 dv = fv.getONE(); 618 assertEquals("0(0) = 1 ", cv, dv); 619 620 av = a.evaluate(fv,v); 621 if ( a.isZERO() ) { 622 dv = fv.getONE(); 623 assertEquals("0(0) = 1 ", av, dv); 624 } else { 625 dv = fv.getZERO(); 626 assertEquals("a(0) = 0 ", av, dv); 627 } 628 } 629 630}