module JAS
jruby interface to JAS.
Constants
- CC
complex big rational numbers
- CR
generic complex numbers
- DD
big decimal numbers
big rational numbers
- ZZ
define some shortcuts big integers
Public Instance Methods
Create JAS AlgebraicNumber as ring element.
# File examples/jas.rb 2222 def AN(m,z=0,field=false,pr=nil) 2223 if m.is_a? RingElem 2224 m = m.elem; 2225 end 2226 if z.is_a? RingElem 2227 z = z.elem; 2228 end 2229 if z != 0 and ( z == true or z == false ) 2230 field = z; 2231 z = 0; 2232 end 2233 #puts "m.getClass() = " + str(m.getClass().getName()); 2234 #puts "field = " + str(field); 2235 if m.is_a? AlgebraicNumber 2236 mf = AlgebraicNumberRing.new(m.factory().modul,m.factory().isField()); 2237 else 2238 if field 2239 mf = AlgebraicNumberRing.new(m,field); 2240 else 2241 mf = AlgebraicNumberRing.new(m); 2242 end 2243 end 2244 #puts "mf = " + mf.toString(); 2245 if z == 0 2246 r = AlgebraicNumber.new(mf); 2247 else 2248 r = AlgebraicNumber.new(mf,z); 2249 end 2250 return RingElem.new(r); 2251 end
Create JAS BigComplex as ring element.
# File examples/jas.rb 329 def CC(re=BigRational.new(),im=BigRational.new()) 330 if re == 0 331 re = BigRational.new(); 332 end 333 if im == 0 334 im = BigRational.new(); 335 end 336 if re.is_a? Array 337 if re[0].is_a? Array 338 if re.size > 1 339 im = QQ( re[1] ); 340 end 341 re = QQ( re[0] ); 342 else 343 re = QQ(re); 344 # re = makeJasArith( re ); 345 end 346 end 347 if im.is_a? Array 348 im = QQ( im ); 349 # im = makeJasArith( im ); 350 end 351 if re.is_a? Numeric 352 re = QQ(re); 353 end 354 if im.is_a? Numeric 355 im = QQ(im); 356 end 357 if re.is_a? RingElem 358 re = re.elem; 359 end 360 if im.is_a? RingElem 361 im = im.elem; 362 end 363 if im.isZERO() 364 if re.isZERO() 365 c = BigComplex.new(); 366 else 367 c = BigComplex.new(re); 368 end 369 else 370 c = BigComplex.new(re,im); 371 end 372 return RingElem.new(c); 373 end
Create JAS generic Complex as ring element.
# File examples/jas.rb 379 def CR(re=BigRational.new(),im=BigRational.new(),ring=nil) 380 if re == 0 381 re = BigRational.new(); 382 end 383 if im == 0 384 im = BigRational.new(); 385 end 386 if re.is_a? Array 387 if re[0].is_a? Array 388 if re.size > 1 389 im = QQ( re[1] ); 390 end 391 re = QQ( re[0] ); 392 else 393 re = QQ(re); 394 # re = makeJasArith( re ); 395 end 396 end 397 if im.is_a? Array 398 im = QQ( im ); 399 # im = makeJasArith( im ); 400 end 401 if re.is_a? RingElem 402 re = re.elem; 403 end 404 if im.is_a? RingElem 405 im = im.elem; 406 end 407 if ring == nil 408 ring = re.factory(); 409 end 410 r = ComplexRing.new(ring); 411 if im.isZERO() 412 if re.isZERO() 413 c = Complex.new(r); 414 else 415 c = Complex.new(r,re); 416 end 417 else 418 c = Complex.new(r,re,im); 419 end 420 return RingElem.new(c); 421 end
Create JAS BigDecimal as ring element.
# File examples/jas.rb 427 def DD(d=0) 428 if d.is_a? RingElem 429 d = d.elem; 430 end 431 if d.is_a? Float 432 d = d.to_s; 433 end 434 #puts "d type(#{d}) = #{d.class}"; 435 if d == 0 436 r = BigDecimal.new(); 437 else 438 r = BigDecimal.new(d); 439 end 440 return RingElem.new(r); 441 end
Create JAS Finite Field element as ring element. FF has p<sup>n</sup> elements.
# File examples/jas.rb 2263 def FF(p,n,z=0) 2264 if p.is_a? RingElem 2265 p = p.elem; 2266 end 2267 if n.is_a? RingElem 2268 n = n.elem; 2269 end 2270 if z.is_a? RingElem 2271 z = z.elem; 2272 end 2273 if z.is_a? AlgebraicNumber 2274 z = z.val; 2275 #puts "z = " + z.ring.toScript(); 2276 end 2277 if p == 0 2278 raise ArgumentError, "No finite ring." 2279 end 2280 if n == 0 2281 raise ArgumentError, "No finite ring." 2282 end 2283 field = true; 2284 if !PrimeInteger.isPrime(p) 2285 field = false; 2286 #raise ArgumentError, "{p} not prime." 2287 end 2288 mf = $finiteFields[ [p,n] ]; 2289 if mf == nil 2290 cf = GF(p).ring; 2291 mf = PolyUfdUtil.algebraicNumberField(cf,n); 2292 $finiteFields[ [p,n] ] = mf; 2293 #puts "mf = " + mf.toScript(); 2294 end 2295 if z == 0 2296 r = AlgebraicNumber.new(mf); 2297 else 2298 r = AlgebraicNumber.new(mf,z); 2299 #puts "r = " + r.toScript(); 2300 end 2301 return RingElem.new(r); 2302 end
Create JAS ModInteger as field element.
# File examples/jas.rb 275 def GF(m,z=0) 276 return ZM(m,z,true); 277 end
Create JAS ModInt as field element.
# File examples/jas.rb 289 def GFI(m,z=0) 290 return ZM(m,z,true); 291 end
Create JAS ModLong as field element.
# File examples/jas.rb 282 def GFL(m,z=0) 283 return ZM(m,z,true); 284 end
Create JAS polynomial Local as ring element.
# File examples/jas.rb 2497 def LC(ideal,d=0,n=1) 2498 if ideal == nil 2499 raise ArgumentError, "No ideal given." 2500 end 2501 if ideal.is_a? SimIdeal 2502 ideal = Ideal.new(ideal.pset); 2503 #ideal.doGB(); 2504 end 2505 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2506 if ideal.getList().get(0).ring.is_a? LocalRing 2507 lc = LocalRing.new( ideal.getList().get(0).ring.ideal ); 2508 else 2509 lc = LocalRing.new(ideal); 2510 end 2511 if d.is_a? Array 2512 if n != 1 2513 puts "#{n} ignored\n"; 2514 end 2515 if d.size > 1 2516 n = d[1]; 2517 end 2518 d = d[0]; 2519 end 2520 if d.is_a? RingElem 2521 d = d.elem; 2522 end 2523 if n.is_a? RingElem 2524 n = n.elem; 2525 end 2526 if d == 0 2527 r = Local.new(lc); 2528 else 2529 if n == 1 2530 r = Local.new(lc,d); 2531 else 2532 r = Local.new(lc,d,n); 2533 end 2534 end 2535 return RingElem.new(r); 2536 end
Create JAS MultiVarPowerSeries as ring element.
# File examples/jas.rb 5532 def MPS(cofac,names,truncate=nil,&f) 5533 cf = cofac; 5534 if cofac.is_a? RingElem 5535 cf = cofac.elem.factory(); 5536 elsif cofac.is_a? Ring 5537 cf = cofac.ring; 5538 end 5539 vars = names; 5540 if vars.is_a? String 5541 vars = GenPolynomialTokenizer.variableList(vars); 5542 end 5543 nv = vars.size; 5544 if truncate.is_a? RingElem 5545 truncate = truncate.elem; 5546 end 5547 if truncate == nil 5548 ps = MultiVarPowerSeriesRing.new(cf,nv,vars); 5549 else 5550 ps = MultiVarPowerSeriesRing.new(cf,nv,vars,truncate); 5551 end 5552 if f == nil 5553 r = ps.getZERO(); 5554 else 5555 r = MultiVarPowerSeries.new(ps,MCoeff.new(ps,&f)); 5556 #puts "r = " + str(r); 5557 end 5558 return RingElem.new(r); 5559 5560 end
Create JAS GenMatrix ring element.
# File examples/jas.rb 5596 def Mat(cofac,n,m,v=nil) 5597 cf = cofac; 5598 if cofac.is_a? RingElem 5599 cf = cofac.elem.factory(); 5600 elsif cofac.is_a? Ring 5601 cf = cofac.ring; 5602 end 5603 if n.is_a? RingElem 5604 n = n.elem; 5605 end 5606 if m.is_a? RingElem 5607 m = m.elem; 5608 end 5609 if v.is_a? RingElem 5610 v = v.elem; 5611 end 5612 #puts "cf type(#{cf}) = #{cf.class}"; 5613 if v.is_a? Array 5614 v = rbarray2arraylist(v,cf,rec=2); 5615 end 5616 mr = GenMatrixRing.new(cf,n,m); 5617 if v == nil 5618 r = GenMatrix.new(mr); 5619 else 5620 r = GenMatrix.new(mr,v); 5621 end 5622 return RingElem.new(r); 5623 end
Create JAS BigOctonion as ring element.
# File examples/jas.rb 495 def Oct(ro=0,io=0) 496 cf = BigQuaternionRing.new(); 497 if ro == 0 498 ro = BigQuaternion.new(cf); 499 end 500 if io == 0 501 io = BigQuaternion.new(cf); 502 end 503 if ro.is_a? Array 504 if ro[0].is_a? Array 505 if ro.size > 1 506 io = QQ( ro[1] ); 507 end 508 ro = QQ( ro[0] ); 509 else 510 ro = QQ(ro); 511 # re = makeJasArith( re ); 512 end 513 end 514 if io.is_a? Array 515 io = QQ( io ); 516 # im = makeJasArith( im ); 517 end 518 if ro.is_a? RingElem 519 ro = ro.elem; 520 end 521 if io.is_a? RingElem 522 io = io.elem; 523 end 524 c = BigOctonion.new(ro,io); 525 return RingElem.new(c); 526 end
Create JAS UnivPowerSeries as ring element.
# File examples/jas.rb 5466 def PS(cofac,name,truncate=nil,&f) #=nil,truncate=nil) 5467 cf = cofac; 5468 if cofac.is_a? RingElem 5469 cf = cofac.elem.factory(); 5470 end 5471 if cofac.is_a? Ring 5472 cf = cofac.ring; 5473 end 5474 if truncate.is_a? RingElem 5475 truncate = truncate.elem; 5476 end 5477 if truncate == nil 5478 ps = UnivPowerSeriesRing.new(cf,name); 5479 else 5480 ps = UnivPowerSeriesRing.new(cf,truncate,name); 5481 end 5482 #puts "ps type(#{ps}) = #{ps.class}\n"; 5483 #puts "f type(#{f}) = #{f.class}\n"; 5484 if f == nil 5485 r = ps.getZERO(); 5486 else 5487 #Bug in JRuby 1.5.6? move outside method 5488 r = UnivPowerSeries.new(ps,Coeff.new(cf,&f)); 5489 end 5490 return RingElem.new(r); 5491 5492 end
Create JAS BigRational as ring element.
# File examples/jas.rb 296 def QQ(d=0,n=1) 297 if d.is_a? Rational 298 if n != 1 299 puts "#{n} ignored\n"; 300 end 301 if d.denominator != 1 302 n = d.denominator; 303 end 304 d = d.numerator; 305 end 306 if d.is_a? RingElem 307 d = d.elem; 308 end 309 if n.is_a? RingElem 310 n = n.elem; 311 end 312 if n == 1 313 if d == 0 314 r = BigRational.new(); 315 else 316 r = BigRational.new(d); 317 end 318 else 319 d = BigRational.new(d); 320 n = BigRational.new(n); 321 r = d.divide(n); # BigRational.new(d,n); only for short integers 322 end 323 return RingElem.new(r); 324 end
Create JAS BigQuaternion as ring element.
# File examples/jas.rb 447 def Quat(re=BigRational.new(),im=BigRational.new(),jm=BigRational.new(),km=BigRational.new()) 448 if re == 0 449 re = BigRational.new(); 450 end 451 if im == 0 452 im = BigRational.new(); 453 end 454 if jm == 0 455 jm = BigRational.new(); 456 end 457 if km == 0 458 km = BigRational.new(); 459 end 460 if re.is_a? Numeric 461 re = QQ(re); 462 # re = makeJasArith( re ); 463 end 464 if im.is_a? Numeric 465 im = QQ( im ); 466 end 467 if jm.is_a? Numeric 468 jm = QQ( jm ); 469 end 470 if km.is_a? Numeric 471 kim = QQ( km ); 472 # im = makeJasArith( im ); 473 end 474 if re.is_a? RingElem 475 re = re.elem; 476 end 477 if im.is_a? RingElem 478 im = im.elem; 479 end 480 if jm.is_a? RingElem 481 jm = jm.elem; 482 end 483 if km.is_a? RingElem 484 km = km.elem; 485 end 486 cf = BigQuaternionRing.new(); 487 c = BigQuaternion.new(cf, re,im,jm,km); 488 return RingElem.new(c); 489 end
Create JAS polynomial Residue as ring element.
# File examples/jas.rb 2466 def RC(ideal,r=0) 2467 if ideal == nil 2468 raise ArgumentError, "No ideal given." 2469 end 2470 if ideal.is_a? SimIdeal 2471 #puts "ideal.pset = " + str(ideal.pset) + "\n"; 2472 #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list); 2473 ideal = Ideal.new(ideal.pset); 2474 #ideal.doGB(); 2475 end 2476 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2477 if ideal.getList().get(0).ring.is_a? ResidueRing 2478 rc = ResidueRing.new( ideal.getList().get(0).ring.ideal ); 2479 else 2480 rc = ResidueRing.new(ideal); 2481 end 2482 if r.is_a? RingElem 2483 r = r.elem; 2484 end 2485 if r == 0 2486 r = Residue.new(rc); 2487 else 2488 r = Residue.new(rc,r); 2489 end 2490 return RingElem.new(r); 2491 end
Create JAS rational function Quotient as ring element.
# File examples/jas.rb 2364 def RF(pr,d=0,n=1) 2365 if d.is_a? Array 2366 if n != 1 2367 puts "#{} ignored\n"; 2368 end 2369 if d.size > 1 2370 n = d[1]; 2371 end 2372 d = d[0]; 2373 end 2374 if d.is_a? RingElem 2375 d = d.elem; 2376 end 2377 if n.is_a? RingElem 2378 n = n.elem; 2379 end 2380 if pr.is_a? RingElem 2381 pr = pr.elem; 2382 end 2383 if pr.is_a? Ring 2384 pr = pr.ring; 2385 end 2386 qr = QuotientRing.new(pr); 2387 if d == 0 2388 r = Quotient.new(qr); 2389 else 2390 if n == 1 2391 r = Quotient.new(qr,d); 2392 else 2393 r = Quotient.new(qr,d,n); 2394 end 2395 end 2396 return RingElem.new(r); 2397 end
Create JAS regular ring Product as ring element.
# File examples/jas.rb 2668 def RR(flist,n=1,r=0) 2669 if not n.is_a? Integer 2670 r = n; 2671 n = 1; 2672 end 2673 if flist == nil 2674 raise ArgumentError, "No list given." 2675 end 2676 if flist.is_a? Array 2677 flist = rbarray2arraylist( flist.map { |x| x.factory() }, rec=1); 2678 ncop = 0; 2679 else 2680 ncop = n; 2681 end 2682 if flist.is_a? RingElem 2683 flist = flist.elem; 2684 flist = flist.factory(); 2685 ncop = n; 2686 end 2687 #puts "flist = " + str(flist); 2688 #puts "ncop = " + str(ncop); 2689 if ncop == 0 2690 pr = ProductRing.new(flist); 2691 else 2692 pr = ProductRing.new(flist,ncop); 2693 end 2694 #puts "r type(#{r}) = #{r.class}\n"; 2695 if r.is_a? RingElem 2696 r = r.elem; 2697 end 2698 begin 2699 #puts "r.class() = #{r.class}\n"; 2700 if r.is_a? Product 2701 #puts "r.val = #{r.val}\n"; 2702 r = r.val; 2703 end 2704 rescue 2705 #pass; 2706 end 2707 #puts "r = " + r.to_s; 2708 if r == 0 2709 r = Product.new(pr); 2710 else 2711 r = Product.new(pr,r); 2712 end 2713 return RingElem.new(r); 2714 end
Create JAS RealAlgebraicNumber as ring element.
# File examples/jas.rb 2320 def RealN(m,i,r=0) 2321 if m.is_a? RingElem 2322 m = m.elem; 2323 end 2324 if r.is_a? RingElem 2325 r = r.elem; 2326 end 2327 if i.is_a? Array 2328 il = BigRational.new(i[0]); 2329 ir = BigRational.new(i[1]); 2330 i = Interval.new(il,ir); 2331 end 2332 #puts "m.getClass() = " + m.getClass().getName().to_s; 2333 if m.is_a? RealAlgebraicNumber 2334 mf = RealAlgebraicRing.new(m.factory().algebraic.modul,i); 2335 else 2336 mf = RealAlgebraicRing.new(m,i); 2337 end 2338 if r == 0 2339 rr = RealAlgebraicNumber.new(mf); 2340 else 2341 rr = RealAlgebraicNumber.new(mf,r); 2342 end 2343 return RingElem.new(rr); 2344 end
Create JAS polynomial SolvableLocal as ring element.
# File examples/jas.rb 2573 def SLC(ideal,d=0,n=1) 2574 if ideal == nil 2575 raise ArgumentError, "No ideal given." 2576 end 2577 if ideal.is_a? SolvIdeal 2578 ideal = SolvableIdeal.new(ideal.pset); 2579 #ideal.doGB(); 2580 end 2581 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2582 if ideal.getList().get(0).ring.is_a? SolvableLocalRing 2583 lc = SolvableLocalRing.new( ideal.getList().get(0).ring.ideal ); 2584 else 2585 lc = SolvableLocalRing.new(ideal); 2586 end 2587 if d.is_a? Array 2588 if n != 1 2589 puts "#{n} ignored\n"; 2590 end 2591 if d.size > 1 2592 n = d[1]; 2593 end 2594 d = d[0]; 2595 end 2596 if d.is_a? RingElem 2597 d = d.elem; 2598 end 2599 if n.is_a? RingElem 2600 n = n.elem; 2601 end 2602 if d == 0 2603 r = SolvableLocal.new(lc); 2604 else 2605 if n == 1 2606 r = SolvableLocal.new(lc,d); 2607 else 2608 r = SolvableLocal.new(lc,d,n); 2609 end 2610 end 2611 return RingElem.new(r); 2612 end
Create JAS polynomial SolvableLocalResidue as ring element.
# File examples/jas.rb 2618 def SLR(ideal,d=0,n=1) 2619 if ideal == nil 2620 raise ArgumentError, "No ideal given." 2621 end 2622 if ideal.is_a? SolvIdeal 2623 ideal = SolvableIdeal.new(ideal.pset); 2624 #ideal.doGB(); 2625 end 2626 cfr = ideal.getList().get(0).ring; 2627 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2628 if n == true 2629 isfield = true; 2630 n = 1; 2631 end 2632 if cfr.is_a? SolvableLocalResidueRing 2633 lc = SolvableLocalResidueRing.new( cfr.ideal ); 2634 else 2635 lc = SolvableLocalResidueRing.new(ideal); 2636 end 2637 if d.is_a? Array 2638 if n != 1 2639 puts "#{n} ignored\n"; 2640 end 2641 if d.size > 1 2642 n = d[1]; 2643 end 2644 d = d[0]; 2645 end 2646 if d.is_a? RingElem 2647 d = d.elem; 2648 end 2649 if n.is_a? RingElem 2650 n = n.elem; 2651 end 2652 if d == 0 2653 r = SolvableLocalResidue.new(lc); 2654 else 2655 if n == 1 2656 r = SolvableLocalResidue.new(lc,d); 2657 else 2658 r = SolvableLocalResidue.new(lc,d,n); 2659 end 2660 end 2661 return RingElem.new(r); 2662 end
Create JAS polynomial SolvableResidue as ring element.
# File examples/jas.rb 2542 def SRC(ideal,r=0) 2543 if ideal == nil 2544 raise ArgumentError, "No ideal given." 2545 end 2546 if ideal.is_a? SolvIdeal 2547 #puts "ideal.pset = " + str(ideal.pset) + "\n"; 2548 #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list); 2549 ideal = SolvableIdeal.new(ideal.pset); 2550 #ideal.doGB(); 2551 end 2552 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2553 if ideal.getList().get(0).ring.is_a? SolvableResidueRing 2554 rc = SolvableResidueRing.new( ideal.getList().get(0).ring.ideal ); 2555 else 2556 rc = SolvableResidueRing.new(ideal); 2557 end 2558 if r.is_a? RingElem 2559 r = r.elem; 2560 end 2561 if r == 0 2562 r = SolvableResidue.new(rc); 2563 else 2564 r = SolvableResidue.new(rc,r); 2565 end 2566 return RingElem.new(r); 2567 end
Create JAS rational function SolvableQuotient as ring element.
# File examples/jas.rb 2403 def SRF(pr,d=0,n=1) 2404 if d.is_a? Array 2405 if n != 1 2406 puts "#{} ignored\n"; 2407 end 2408 if d.size > 1 2409 n = d[1]; 2410 end 2411 d = d[0]; 2412 end 2413 if d.is_a? RingElem 2414 d = d.elem; 2415 end 2416 if n.is_a? RingElem 2417 n = n.elem; 2418 end 2419 if pr.is_a? RingElem 2420 pr = pr.elem; 2421 end 2422 if pr.is_a? Ring 2423 pr = pr.ring; 2424 end 2425 qr = SolvableQuotientRing.new(pr); 2426 #puts "qr is associative: " + qr.isAssociative().to_s; 2427 #if not qr.isAssociative() 2428 # puts "warning: qr is not associative"; 2429 #end 2430 if d == 0 2431 r = SolvableQuotient.new(qr); 2432 else 2433 if n == 1 2434 r = SolvableQuotient.new(qr,d); 2435 else 2436 r = SolvableQuotient.new(qr,d,n); 2437 end 2438 end 2439 return RingElem.new(r); 2440 end
Create JAS GenVector ring element.
# File examples/jas.rb 5571 def Vec(cofac,n,v=nil) 5572 cf = cofac; 5573 if cofac.is_a? RingElem 5574 cf = cofac.elem.factory(); 5575 elsif cofac.is_a? Ring 5576 cf = cofac.ring; 5577 end 5578 if n.is_a? RingElem 5579 n = n.elem; 5580 end 5581 if v.is_a? RingElem 5582 v = v.elem; 5583 end 5584 vr = GenVectorModul.new(cf,n); 5585 if v == nil 5586 r = GenVector.new(vr); 5587 else 5588 r = GenVector.new(vr,v); 5589 end 5590 return RingElem.new(r); 5591 end
Create JAS polynomial WordResidue as ring element.
# File examples/jas.rb 6020 def WRC(ideal,r=0) 6021 if ideal == nil 6022 raise ArgumentError, "No ideal given." 6023 end 6024 if ideal.is_a? WordPolyIdeal 6025 #puts "ideal = " + str(ideal) + "\n"; 6026 #ideal = Java::EduJasApplication::WordIdeal.new(ideal.ring,ideal.list); 6027 ideal = ideal.ideal; 6028 #ideal.doGB(); 6029 end 6030 if not ideal.is_a? WordIdeal 6031 raise ArgumentError, "No word ideal given." 6032 end 6033 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 6034 if ideal.getList().get(0).ring.is_a? WordResidueRing 6035 rc = WordResidueRing.new( ideal.getList().get(0).ring.ideal ); 6036 else 6037 rc = WordResidueRing.new(ideal); 6038 end 6039 if r.is_a? RingElem 6040 r = r.elem; 6041 end 6042 if r == 0 6043 r = WordResidue.new(rc); 6044 else 6045 r = WordResidue.new(rc,r); 6046 end 6047 return RingElem.new(r); 6048 end
Create JAS ModInteger as ring element.
# File examples/jas.rb 220 def ZM(m,z=0,field=false) 221 if m.is_a? RingElem 222 m = m.elem; 223 end 224 if z.is_a? RingElem 225 z = z.elem; 226 end 227 if z != 0 and ( z == true or z == false ) 228 field = z; 229 z = 0; 230 end 231 if m < ModLongRing::MAX_LONG 232 if m < ModIntRing::MAX_INT 233 if field 234 mf = ModIntRing.new(m,field); 235 else 236 mf = ModIntRing.new(m); 237 end 238 r = ModInt.new(mf,z); 239 else 240 if field 241 mf = ModLongRing.new(m,field); 242 else 243 mf = ModLongRing.new(m); 244 end 245 r = ModLong.new(mf,z); 246 end 247 else 248 if field 249 mf = ModIntegerRing.new(m,field); 250 else 251 mf = ModIntegerRing.new(m); 252 end 253 r = ModInteger.new(mf,z); 254 end 255 return RingElem.new(r); 256 end
Create JAS ModInt as ring element.
# File examples/jas.rb 268 def ZMI(m,z=0,field=false) 269 return ZM(m,z,field); 270 end
Create JAS ModLong as ring element.
# File examples/jas.rb 261 def ZML(m,z=0,field=false) 262 return ZM(m,z,field); 263 end
Create JAS BigInteger as ring element.
# File examples/jas.rb 203 def ZZ(z=0) 204 if z.is_a? RingElem 205 z = z.elem; 206 end 207 if z == 0 208 r = Java::EduJasArith::BigInteger.new(); 209 else 210 #puts "z = #{z} : #{z.class} " 211 r = Java::EduJasArith::BigInteger.new(z); 212 end 213 return RingElem.new(r); 214 end
Inject variables for generators in given environment.
# File examples/jas.rb 80 def inject_gens(env) 81 env.class.instance_eval( "attr_accessor :generators;" ) 82 if env.generators == nil 83 env.generators = {}; 84 end 85 #puts "existing generators: " + env.generators.keys().join(", "); 86 redef = [] 87 for i in self.gens() 88 begin 89 ivs = nameFromValue(i); 90 if ivs == nil 91 next 92 end; 93 #puts "string2: #{ivs} = " + ivs.class.to_s; 94 #puts "string3: #{ivs} = " + (env.instance_eval( "#{ivs};" )); 95 if env.generators[ ivs ] != nil 96 #puts "redefining global variable #{ivs}"; 97 redef << ivs; 98 end 99 env.generators[ ivs ] = i; 100 env.instance_eval( "def #{ivs}; @generators[ '#{ivs}' ]; end" ) 101 #puts "def #{ivs}; @generators[ '#{ivs}' ]; end" 102 if self.class.auto_lowervar 103 first = ivs.slice(0,1); 104 if first.count('A-Z') > 0 105 first = first.downcase 106 ivl = first + ivs.slice(1,ivs.length); 107 puts "warning: '" + str(ivs) + "' additionaly renamed to '" + str(ivl) + "' to avoid constant semantics" 108 if env.generators[ ivl ] != nil 109 #puts "redefining global variable #{ivl}"; 110 redef << ivl; 111 end 112 env.instance_eval( "def #{ivl}; @generators[ '#{ivs}' ]; end" ) 113 end 114 end 115 rescue => e 116 #puts "error: #{ivs} = " + i.to_s + ", class = " + i.class.to_s; 117 puts "error: #{ivs} = " + i.to_s + ", e = " + e.to_s; 118 end 119 end 120 puts "globally defined variables: " + env.generators.keys().join(", "); 121 if redef.size > 0 122 puts "WARN: redefined variables: " + redef.join(", "); 123 end 124 end
Construct a jas.arith object.
If item is an ruby array then a BigComplex is constructed. If item is a ruby float then a BigDecimal is constructed.
# File examples/jas.rb 2767 def makeJasArith(item) 2768 #puts "item type(#{item}) = #{item.class}\n"; 2769 if item.is_a? Integer 2770 return BigInteger.new( item ); 2771 end 2772 if item.is_a? Rational 2773 return BigRational.new( item.numerator ).divide( BigRational.new( item.denominator ) ); 2774 end 2775 if item.is_a? Float # ?? what to do ?? 2776 return BigDecimal.new( item.to_s ); 2777 end 2778 if item.is_a? Array 2779 if item.size > 2 2780 puts "len(item) > 2, remaining items ignored\n"; 2781 end 2782 puts "item[0] type(#{item[0]}) = #{item[0].class}\n"; 2783 if item.size > 1 2784 re = makeJasArith( item[0] ); 2785 if not re.isField() 2786 re = BigRational.new( re.val ); 2787 end 2788 im = makeJasArith( item[1] ); 2789 if not im.isField() 2790 im = BigRational.new( im.val ); 2791 end 2792 jasArith = BigComplex.new( re, im ); 2793 else 2794 re = makeJasArith( item[0] ); 2795 if not re.isField() 2796 re = BigRational.new( re.val ); 2797 end 2798 jasArith = BigComplex.new( re ); 2799 end 2800 return jasArith; 2801 end 2802 puts "unknown item type(#{item}) = #{item.class}\n"; 2803 return item; 2804 end
Get a meaningful name from a value.
i ist the given value.
# File examples/jas.rb 131 def nameFromValue(i) 132 ivs = i.to_s 133 #puts "string1: #{ivs} = " + ivs.class.to_s; 134 ivs = ivs.gsub(" ",""); 135 ivs = ivs.gsub("\n",""); 136 ivs = ivs.gsub(",",""); 137 ivs = ivs.gsub("(",""); 138 ivs = ivs.gsub(")",""); 139 ivs = ivs.gsub("+",""); 140 #ivs = ivs.gsub("*",""); 141 ivs = ivs.gsub("/","div"); 142 #ivs = ivs.gsub("|","div"); 143 ivs = ivs.gsub("{",""); 144 ivs = ivs.gsub("}",""); 145 ivs = ivs.gsub("[",""); 146 ivs = ivs.gsub("]",""); 147 i = ivs.index("BigO"); 148 if i #and i > 0 149 ivs = ivs[0,i]; 150 #puts "BigO index = #{i}"; 151 end 152 if ivs == "1" 153 ivs = "one" 154 end 155 if ivs[0] == "1"[0] and not ivs.match(/\A[0-9].*/) 156 r = ivs[1,ivs.size-1].to_s; 157 ivs = "one" 158 if r != nil 159 ivs = ivs + r 160 end 161 end 162 #if ivs[0,2] == "0i1"[0,2] or ivs[0,2] == "0I1"[0,2] 163 if ivs == "0i1" or ivs == "0I1" 164 ivs = "i" 165 end 166 #puts "string: #{ivs} of " + i.to_s; 167 if ivs.include?("|") or ivs.match(/\A[0-9].*/) 168 #puts "string2: #{ivs} = " + ivs.class.to_s; 169 ivs = nil 170 end 171 return ivs 172 end
Turn off automatic parallel threads usage.
# File examples/jas.rb 70 def noThreads() 71 puts "nt = ", ComputerThreads.NO_THREADS; 72 ComputerThreads.setNoThreads(); #NO_THREADS = #0; #1; #true; 73 puts "\nnt = ", ComputerThreads.NO_THREADS; 74 puts 75 end
Convert a Ruby array to a Java ArrayList.
If list is a Ruby array, it is converted, else list is left unchanged.
# File examples/jas.rb 2722 def rbarray2arraylist(list,fac=nil,rec=1) 2723 #puts "list type(#{list}) = #{list.class}\n"; 2724 if list.is_a? Array 2725 ll = ArrayList.new(); 2726 for e in list 2727 t = true; 2728 if e.is_a? RingElem 2729 t = false; 2730 e = e.elem; 2731 end 2732 if e.is_a? Array 2733 if rec <= 1 2734 e = makeJasArith(e); 2735 else 2736 t = false; 2737 e = rbarray2arraylist(e,fac,rec-1); 2738 end 2739 end 2740 begin 2741 #n = e.getClass().getSimpleName(); 2742 if e.is_a? ArrayList 2743 t = false; 2744 end 2745 rescue 2746 #pass; 2747 end 2748 if t and fac != nil 2749 #puts "e.p(#{e}) = #{e.class}\n"; 2750 e = fac.parse( str(e) ); #or makeJasArith(e) ? 2751 end 2752 ll.add(e); 2753 end 2754 list = ll; 2755 end 2756 #puts "list type(#{list}) = #{list.class}\n"; 2757 return list 2758 end
Configure the log4j system and start logging.
BasicConfigurator from log4j version 1 is no more supported, please use log4j2 configuration.
# File examples/jas.rb 43 def startLog() 44 #puts "BasicConfigurator from log4j version 1 is no more supported, please use log4j2 configuration"; 45 end
Mimic Python str() function.
# File examples/jas.rb 52 def str(s) 53 return s.to_s; 54 end
Terminate the running thread pools.
# File examples/jas.rb 61 def terminate() 62 ComputerThreads.terminate(); 63 end