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 2409 def AN(m,z=0,field=false,pr=nil) 2410 if m.is_a? RingElem 2411 m = m.elem; 2412 end 2413 if z.is_a? RingElem 2414 z = z.elem; 2415 end 2416 if z != 0 and ( z == true or z == false ) 2417 field = z; 2418 z = 0; 2419 end 2420 #puts "m.getClass() = " + str(m.getClass().getName()); 2421 #puts "field = " + str(field); 2422 if m.is_a? AlgebraicNumber 2423 mf = AlgebraicNumberRing.new(m.factory().modul,m.factory().isField()); 2424 else 2425 if field 2426 mf = AlgebraicNumberRing.new(m,field); 2427 else 2428 mf = AlgebraicNumberRing.new(m); 2429 end 2430 end 2431 #puts "mf = " + mf.toString(); 2432 if z == 0 2433 r = AlgebraicNumber.new(mf); 2434 else 2435 r = AlgebraicNumber.new(mf,z); 2436 end 2437 return RingElem.new(r); 2438 end
Create JAS BigComplex as ring element.
# File examples/jas.rb 330 def CC(re=BigRational.new(),im=BigRational.new()) 331 if re == 0 332 re = BigRational.new(); 333 end 334 if im == 0 335 im = BigRational.new(); 336 end 337 if re.is_a? Array 338 if re[0].is_a? Array 339 if re.size > 1 340 im = QQ( re[1] ); 341 end 342 re = QQ( re[0] ); 343 else 344 re = QQ(re); 345 # re = makeJasArith( re ); 346 end 347 end 348 if im.is_a? Array 349 im = QQ( im ); 350 # im = makeJasArith( im ); 351 end 352 if re.is_a? Numeric 353 re = QQ(re); 354 end 355 if im.is_a? Numeric 356 im = QQ(im); 357 end 358 if re.is_a? RingElem 359 re = re.elem; 360 end 361 if im.is_a? RingElem 362 im = im.elem; 363 end 364 if im.isZERO() 365 if re.isZERO() 366 c = BigComplex.new(); 367 else 368 c = BigComplex.new(re); 369 end 370 else 371 c = BigComplex.new(re,im); 372 end 373 return RingElem.new(c); 374 end
Create JAS generic Complex as ring element.
# File examples/jas.rb 380 def CR(re=BigRational.new(),im=BigRational.new(),ring=nil) 381 if re == 0 382 re = BigRational.new(); 383 end 384 if im == 0 385 im = BigRational.new(); 386 end 387 if re.is_a? Array 388 if re[0].is_a? Array 389 if re.size > 1 390 im = QQ( re[1] ); 391 end 392 re = QQ( re[0] ); 393 else 394 re = QQ(re); 395 # re = makeJasArith( re ); 396 end 397 end 398 if im.is_a? Array 399 im = QQ( im ); 400 # im = makeJasArith( im ); 401 end 402 if re.is_a? RingElem 403 re = re.elem; 404 end 405 if im.is_a? RingElem 406 im = im.elem; 407 end 408 if ring == nil 409 ring = re.factory(); 410 end 411 r = ComplexRing.new(ring); 412 if im.isZERO() 413 if re.isZERO() 414 c = Complex.new(r); 415 else 416 c = Complex.new(r,re); 417 end 418 else 419 c = Complex.new(r,re,im); 420 end 421 return RingElem.new(c); 422 end
Create JAS BigDecimal as ring element.
# File examples/jas.rb 428 def DD(d=0) 429 if d.is_a? RingElem 430 d = d.elem; 431 end 432 if d.is_a? Float 433 d = d.to_s; 434 end 435 #puts "d type(#{d}) = #{d.class}"; 436 if d == 0 437 r = BigDecimal.new(); 438 else 439 r = BigDecimal.new(d); 440 end 441 return RingElem.new(r); 442 end
Create JAS Finite Field element as ring element. FF has p<sup>n</sup> elements.
# File examples/jas.rb 2450 def FF(p,n,z=0) 2451 if p.is_a? RingElem 2452 p = p.elem; 2453 end 2454 if n.is_a? RingElem 2455 n = n.elem; 2456 end 2457 if z.is_a? RingElem 2458 z = z.elem; 2459 end 2460 if z.is_a? AlgebraicNumber 2461 z = z.val; 2462 #puts "z = " + z.ring.toScript(); 2463 end 2464 if p == 0 2465 raise ArgumentError, "No finite ring." 2466 end 2467 if n == 0 2468 raise ArgumentError, "No finite ring." 2469 end 2470 field = true; 2471 if !PrimeInteger.isPrime(p) 2472 field = false; 2473 #raise ArgumentError, "{p} not prime." 2474 end 2475 mf = $finiteFields[ [p,n] ]; 2476 if mf == nil 2477 cf = GF(p).ring; 2478 mf = PolyUfdUtil.algebraicNumberField(cf,n); 2479 $finiteFields[ [p,n] ] = mf; 2480 #puts "mf = " + mf.toScript(); 2481 end 2482 if z == 0 2483 r = AlgebraicNumber.new(mf); 2484 else 2485 r = AlgebraicNumber.new(mf,z); 2486 #puts "r = " + r.toScript(); 2487 end 2488 return RingElem.new(r); 2489 end
Create JAS ModInteger as field element.
# File examples/jas.rb 276 def GF(m,z=0) 277 return ZM(m,z,true); 278 end
Create JAS ModInt as field element.
# File examples/jas.rb 290 def GFI(m,z=0) 291 return ZM(m,z,true); 292 end
Create JAS ModLong as field element.
# File examples/jas.rb 283 def GFL(m,z=0) 284 return ZM(m,z,true); 285 end
Create JAS polynomial Local as ring element.
# File examples/jas.rb 2684 def LC(ideal,d=0,n=1) 2685 if ideal == nil 2686 raise ArgumentError, "No ideal given." 2687 end 2688 if ideal.is_a? SimIdeal 2689 ideal = Ideal.new(ideal.pset); 2690 #ideal.doGB(); 2691 end 2692 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2693 if ideal.getList().get(0).ring.is_a? LocalRing 2694 lc = LocalRing.new( ideal.getList().get(0).ring.ideal ); 2695 else 2696 lc = LocalRing.new(ideal); 2697 end 2698 if d.is_a? Array 2699 if n != 1 2700 puts "#{n} ignored\n"; 2701 end 2702 if d.size > 1 2703 n = d[1]; 2704 end 2705 d = d[0]; 2706 end 2707 if d.is_a? RingElem 2708 d = d.elem; 2709 end 2710 if n.is_a? RingElem 2711 n = n.elem; 2712 end 2713 if d == 0 2714 r = Local.new(lc); 2715 else 2716 if n == 1 2717 r = Local.new(lc,d); 2718 else 2719 r = Local.new(lc,d,n); 2720 end 2721 end 2722 return RingElem.new(r); 2723 end
Create JAS MultiVarPowerSeries as ring element.
# File examples/jas.rb 5696 def MPS(cofac,names,truncate=nil,&f) 5697 cf = cofac; 5698 if cofac.is_a? RingElem 5699 cf = cofac.elem.factory(); 5700 elsif cofac.is_a? Ring 5701 cf = cofac.ring; 5702 end 5703 vars = names; 5704 if vars.is_a? String 5705 vars = GenPolynomialTokenizer.variableList(vars); 5706 end 5707 nv = vars.size; 5708 if truncate.is_a? RingElem 5709 truncate = truncate.elem; 5710 end 5711 if truncate == nil 5712 ps = MultiVarPowerSeriesRing.new(cf,nv,vars); 5713 else 5714 ps = MultiVarPowerSeriesRing.new(cf,nv,vars,truncate); 5715 end 5716 if f == nil 5717 r = ps.getZERO(); 5718 else 5719 r = MultiVarPowerSeries.new(ps,MCoeff.new(ps,&f)); 5720 #puts "r = " + str(r); 5721 end 5722 return RingElem.new(r); 5723 5724 end
Create JAS GenMatrix ring element.
# File examples/jas.rb 5765 def Mat(cofac,n,m,v=nil) 5766 cf = cofac; 5767 if cofac.is_a? RingElem 5768 cf = cofac.elem.factory(); 5769 elsif cofac.is_a? Ring 5770 cf = cofac.ring; 5771 end 5772 if n.is_a? RingElem 5773 n = n.elem; 5774 end 5775 if m.is_a? RingElem 5776 m = m.elem; 5777 end 5778 if v.is_a? RingElem 5779 v = v.elem; 5780 end 5781 #puts "cf type(#{cf}) = #{cf.class}"; 5782 if v.is_a? Array 5783 v = rbarray2arraylist(v,cf,rec=2); 5784 end 5785 mr = GenMatrixRing.new(cf,n,m); 5786 if v == nil 5787 r = GenMatrix.new(mr); 5788 else 5789 r = GenMatrix.new(mr,v); 5790 end 5791 return RingElem.new(r); 5792 end
Create JAS BigOctonion as ring element.
# File examples/jas.rb 496 def Oct(ro=0,io=0) 497 cf = BigQuaternionRing.new(); 498 if ro == 0 499 ro = BigQuaternion.new(cf); 500 end 501 if io == 0 502 io = BigQuaternion.new(cf); 503 end 504 if ro.is_a? Array 505 if ro[0].is_a? Array 506 if ro.size > 1 507 io = QQ( ro[1] ); 508 end 509 ro = QQ( ro[0] ); 510 else 511 ro = QQ(ro); 512 # re = makeJasArith( re ); 513 end 514 end 515 if io.is_a? Array 516 io = QQ( io ); 517 # im = makeJasArith( im ); 518 end 519 if ro.is_a? RingElem 520 ro = ro.elem; 521 end 522 if io.is_a? RingElem 523 io = io.elem; 524 end 525 c = BigOctonion.new(ro,io); 526 return RingElem.new(c); 527 end
Create JAS UnivPowerSeries as ring element.
# File examples/jas.rb 5630 def PS(cofac,name,truncate=nil,&f) #=nil,truncate=nil) 5631 cf = cofac; 5632 if cofac.is_a? RingElem 5633 cf = cofac.elem.factory(); 5634 end 5635 if cofac.is_a? Ring 5636 cf = cofac.ring; 5637 end 5638 if truncate.is_a? RingElem 5639 truncate = truncate.elem; 5640 end 5641 if truncate == nil 5642 ps = UnivPowerSeriesRing.new(cf,name); 5643 else 5644 ps = UnivPowerSeriesRing.new(cf,truncate,name); 5645 end 5646 #puts "ps type(#{ps}) = #{ps.class}\n"; 5647 #puts "f type(#{f}) = #{f.class}\n"; 5648 if f == nil 5649 r = ps.getZERO(); 5650 else 5651 #Bug in JRuby 1.5.6? move outside method 5652 r = UnivPowerSeries.new(ps,Coeff.new(cf,&f)); 5653 end 5654 return RingElem.new(r); 5655 5656 end
Create JAS BigRational as ring element.
# File examples/jas.rb 297 def QQ(d=0,n=1) 298 if d.is_a? Rational 299 if n != 1 300 puts "#{n} ignored\n"; 301 end 302 if d.denominator != 1 303 n = d.denominator; 304 end 305 d = d.numerator; 306 end 307 if d.is_a? RingElem 308 d = d.elem; 309 end 310 if n.is_a? RingElem 311 n = n.elem; 312 end 313 if n == 1 314 if d == 0 315 r = BigRational.new(); 316 else 317 r = BigRational.new(d); 318 end 319 else 320 d = BigRational.new(d); 321 n = BigRational.new(n); 322 r = d.divide(n); # BigRational.new(d,n); only for short integers 323 end 324 return RingElem.new(r); 325 end
Create JAS BigQuaternion as ring element.
# File examples/jas.rb 448 def Quat(re=BigRational.new(),im=BigRational.new(),jm=BigRational.new(),km=BigRational.new()) 449 if re == 0 450 re = BigRational.new(); 451 end 452 if im == 0 453 im = BigRational.new(); 454 end 455 if jm == 0 456 jm = BigRational.new(); 457 end 458 if km == 0 459 km = BigRational.new(); 460 end 461 if re.is_a? Numeric 462 re = QQ(re); 463 # re = makeJasArith( re ); 464 end 465 if im.is_a? Numeric 466 im = QQ( im ); 467 end 468 if jm.is_a? Numeric 469 jm = QQ( jm ); 470 end 471 if km.is_a? Numeric 472 kim = QQ( km ); 473 # im = makeJasArith( im ); 474 end 475 if re.is_a? RingElem 476 re = re.elem; 477 end 478 if im.is_a? RingElem 479 im = im.elem; 480 end 481 if jm.is_a? RingElem 482 jm = jm.elem; 483 end 484 if km.is_a? RingElem 485 km = km.elem; 486 end 487 cf = BigQuaternionRing.new(); 488 c = BigQuaternion.new(cf, re,im,jm,km); 489 return RingElem.new(c); 490 end
Create JAS polynomial Residue as ring element.
# File examples/jas.rb 2653 def RC(ideal,r=0) 2654 if ideal == nil 2655 raise ArgumentError, "No ideal given." 2656 end 2657 if ideal.is_a? SimIdeal 2658 #puts "ideal.pset = " + str(ideal.pset) + "\n"; 2659 #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list); 2660 ideal = Ideal.new(ideal.pset); 2661 #ideal.doGB(); 2662 end 2663 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2664 if ideal.getList().get(0).ring.is_a? ResidueRing 2665 rc = ResidueRing.new( ideal.getList().get(0).ring.ideal ); 2666 else 2667 rc = ResidueRing.new(ideal); 2668 end 2669 if r.is_a? RingElem 2670 r = r.elem; 2671 end 2672 if r == 0 2673 r = Residue.new(rc); 2674 else 2675 r = Residue.new(rc,r); 2676 end 2677 return RingElem.new(r); 2678 end
Create JAS rational function Quotient as ring element.
# File examples/jas.rb 2551 def RF(pr,d=0,n=1) 2552 if d.is_a? Array 2553 if n != 1 2554 puts "#{} ignored\n"; 2555 end 2556 if d.size > 1 2557 n = d[1]; 2558 end 2559 d = d[0]; 2560 end 2561 if d.is_a? RingElem 2562 d = d.elem; 2563 end 2564 if n.is_a? RingElem 2565 n = n.elem; 2566 end 2567 if pr.is_a? RingElem 2568 pr = pr.elem; 2569 end 2570 if pr.is_a? Ring 2571 pr = pr.ring; 2572 end 2573 qr = QuotientRing.new(pr); 2574 if d == 0 2575 r = Quotient.new(qr); 2576 else 2577 if n == 1 2578 r = Quotient.new(qr,d); 2579 else 2580 r = Quotient.new(qr,d,n); 2581 end 2582 end 2583 return RingElem.new(r); 2584 end
Create JAS regular ring Product as ring element.
# File examples/jas.rb 2855 def RR(flist,n=1,r=0) 2856 if not n.is_a? Integer 2857 r = n; 2858 n = 1; 2859 end 2860 if flist == nil 2861 raise ArgumentError, "No list given." 2862 end 2863 if flist.is_a? Array 2864 flist = rbarray2arraylist( flist.map { |x| x.factory() }, rec=1); 2865 ncop = 0; 2866 else 2867 ncop = n; 2868 end 2869 if flist.is_a? RingElem 2870 flist = flist.elem; 2871 flist = flist.factory(); 2872 ncop = n; 2873 end 2874 #puts "flist = " + str(flist); 2875 #puts "ncop = " + str(ncop); 2876 if ncop == 0 2877 pr = ProductRing.new(flist); 2878 else 2879 pr = ProductRing.new(flist,ncop); 2880 end 2881 #puts "r type(#{r}) = #{r.class}\n"; 2882 if r.is_a? RingElem 2883 r = r.elem; 2884 end 2885 begin 2886 #puts "r.class() = #{r.class}\n"; 2887 if r.is_a? Product 2888 #puts "r.val = #{r.val}\n"; 2889 r = r.val; 2890 end 2891 rescue 2892 #pass; 2893 end 2894 #puts "r = " + r.to_s; 2895 if r == 0 2896 r = Product.new(pr); 2897 else 2898 r = Product.new(pr,r); 2899 end 2900 return RingElem.new(r); 2901 end
Create JAS RealAlgebraicNumber as ring element.
# File examples/jas.rb 2508 def RealN(m,i,r=0) 2509 if m.is_a? RingElem 2510 m = m.elem; 2511 end 2512 if r.is_a? RingElem 2513 r = r.elem; 2514 end 2515 if i.is_a? Array 2516 i = rbarray2arraylist(i,BigRational.new(0),1); 2517 i = Interval.new(i[0],i[1]); 2518 end 2519 #puts "m.getClass() = " + m.getClass().getName().to_s; 2520 if m.is_a? RealAlgebraicNumber 2521 mf = RealAlgebraicRing.new(m.factory().algebraic.modul,i); 2522 else 2523 mf = RealAlgebraicRing.new(m,i); 2524 end 2525 if r == 0 2526 rr = RealAlgebraicNumber.new(mf); 2527 else 2528 rr = RealAlgebraicNumber.new(mf,r); 2529 end 2530 return RingElem.new(rr); 2531 end
Create JAS polynomial SolvableLocal as ring element.
# File examples/jas.rb 2760 def SLC(ideal,d=0,n=1) 2761 if ideal == nil 2762 raise ArgumentError, "No ideal given." 2763 end 2764 if ideal.is_a? SolvIdeal 2765 ideal = SolvableIdeal.new(ideal.pset); 2766 #ideal.doGB(); 2767 end 2768 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2769 if ideal.getList().get(0).ring.is_a? SolvableLocalRing 2770 lc = SolvableLocalRing.new( ideal.getList().get(0).ring.ideal ); 2771 else 2772 lc = SolvableLocalRing.new(ideal); 2773 end 2774 if d.is_a? Array 2775 if n != 1 2776 puts "#{n} ignored\n"; 2777 end 2778 if d.size > 1 2779 n = d[1]; 2780 end 2781 d = d[0]; 2782 end 2783 if d.is_a? RingElem 2784 d = d.elem; 2785 end 2786 if n.is_a? RingElem 2787 n = n.elem; 2788 end 2789 if d == 0 2790 r = SolvableLocal.new(lc); 2791 else 2792 if n == 1 2793 r = SolvableLocal.new(lc,d); 2794 else 2795 r = SolvableLocal.new(lc,d,n); 2796 end 2797 end 2798 return RingElem.new(r); 2799 end
Create JAS polynomial SolvableLocalResidue as ring element.
# File examples/jas.rb 2805 def SLR(ideal,d=0,n=1) 2806 if ideal == nil 2807 raise ArgumentError, "No ideal given." 2808 end 2809 if ideal.is_a? SolvIdeal 2810 ideal = SolvableIdeal.new(ideal.pset); 2811 #ideal.doGB(); 2812 end 2813 cfr = ideal.getList().get(0).ring; 2814 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2815 if n == true 2816 isfield = true; 2817 n = 1; 2818 end 2819 if cfr.is_a? SolvableLocalResidueRing 2820 lc = SolvableLocalResidueRing.new( cfr.ideal ); 2821 else 2822 lc = SolvableLocalResidueRing.new(ideal); 2823 end 2824 if d.is_a? Array 2825 if n != 1 2826 puts "#{n} ignored\n"; 2827 end 2828 if d.size > 1 2829 n = d[1]; 2830 end 2831 d = d[0]; 2832 end 2833 if d.is_a? RingElem 2834 d = d.elem; 2835 end 2836 if n.is_a? RingElem 2837 n = n.elem; 2838 end 2839 if d == 0 2840 r = SolvableLocalResidue.new(lc); 2841 else 2842 if n == 1 2843 r = SolvableLocalResidue.new(lc,d); 2844 else 2845 r = SolvableLocalResidue.new(lc,d,n); 2846 end 2847 end 2848 return RingElem.new(r); 2849 end
Create JAS polynomial SolvableResidue as ring element.
# File examples/jas.rb 2729 def SRC(ideal,r=0) 2730 if ideal == nil 2731 raise ArgumentError, "No ideal given." 2732 end 2733 if ideal.is_a? SolvIdeal 2734 #puts "ideal.pset = " + str(ideal.pset) + "\n"; 2735 #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list); 2736 ideal = SolvableIdeal.new(ideal.pset); 2737 #ideal.doGB(); 2738 end 2739 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 2740 if ideal.getList().get(0).ring.is_a? SolvableResidueRing 2741 rc = SolvableResidueRing.new( ideal.getList().get(0).ring.ideal ); 2742 else 2743 rc = SolvableResidueRing.new(ideal); 2744 end 2745 if r.is_a? RingElem 2746 r = r.elem; 2747 end 2748 if r == 0 2749 r = SolvableResidue.new(rc); 2750 else 2751 r = SolvableResidue.new(rc,r); 2752 end 2753 return RingElem.new(r); 2754 end
Create JAS rational function SolvableQuotient as ring element.
# File examples/jas.rb 2590 def SRF(pr,d=0,n=1) 2591 if d.is_a? Array 2592 if n != 1 2593 puts "#{} ignored\n"; 2594 end 2595 if d.size > 1 2596 n = d[1]; 2597 end 2598 d = d[0]; 2599 end 2600 if d.is_a? RingElem 2601 d = d.elem; 2602 end 2603 if n.is_a? RingElem 2604 n = n.elem; 2605 end 2606 if pr.is_a? RingElem 2607 pr = pr.elem; 2608 end 2609 if pr.is_a? Ring 2610 pr = pr.ring; 2611 end 2612 qr = SolvableQuotientRing.new(pr); 2613 #puts "qr is associative: " + qr.isAssociative().to_s; 2614 #if not qr.isAssociative() 2615 # puts "warning: qr is not associative"; 2616 #end 2617 if d == 0 2618 r = SolvableQuotient.new(qr); 2619 else 2620 if n == 1 2621 r = SolvableQuotient.new(qr,d); 2622 else 2623 r = SolvableQuotient.new(qr,d,n); 2624 end 2625 end 2626 return RingElem.new(r); 2627 end
Create JAS GenVector ring element.
# File examples/jas.rb 5737 def Vec(cofac,n,v=nil) 5738 cf = cofac; 5739 if cofac.is_a? RingElem 5740 cf = cofac.elem.factory(); 5741 elsif cofac.is_a? Ring 5742 cf = cofac.ring; 5743 end 5744 if n.is_a? RingElem 5745 n = n.elem; 5746 end 5747 if v.is_a? RingElem 5748 v = v.elem; 5749 end 5750 if v.is_a? Array 5751 v = rbarray2arraylist(v,cf,rec=1); 5752 end 5753 vr = GenVectorModul.new(cf,n); 5754 if v == nil 5755 r = GenVector.new(vr); 5756 else 5757 r = GenVector.new(vr,v); 5758 end 5759 return RingElem.new(r); 5760 end
Create JAS polynomial WordResidue as ring element.
# File examples/jas.rb 6200 def WRC(ideal,r=0) 6201 if ideal == nil 6202 raise ArgumentError, "No ideal given." 6203 end 6204 if ideal.is_a? WordPolyIdeal 6205 #puts "ideal = " + str(ideal) + "\n"; 6206 #ideal = Java::EduJasApplication::WordIdeal.new(ideal.ring,ideal.list); 6207 ideal = ideal.ideal; 6208 #ideal.doGB(); 6209 end 6210 if not ideal.is_a? WordIdeal 6211 raise ArgumentError, "No word ideal given." 6212 end 6213 #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n"; 6214 if ideal.getList().get(0).ring.is_a? WordResidueRing 6215 rc = WordResidueRing.new( ideal.getList().get(0).ring.ideal ); 6216 else 6217 rc = WordResidueRing.new(ideal); 6218 end 6219 if r.is_a? RingElem 6220 r = r.elem; 6221 end 6222 if r == 0 6223 r = WordResidue.new(rc); 6224 else 6225 r = WordResidue.new(rc,r); 6226 end 6227 return RingElem.new(r); 6228 end
Create JAS ModInteger as ring element.
# File examples/jas.rb 221 def ZM(m,z=0,field=false) 222 if m.is_a? RingElem 223 m = m.elem; 224 end 225 if z.is_a? RingElem 226 z = z.elem; 227 end 228 if z != 0 and ( z == true or z == false ) 229 field = z; 230 z = 0; 231 end 232 if m < ModLongRing::MAX_LONG 233 if m < ModIntRing::MAX_INT 234 if field 235 mf = ModIntRing.new(m,field); 236 else 237 mf = ModIntRing.new(m); 238 end 239 r = ModInt.new(mf,z); 240 else 241 if field 242 mf = ModLongRing.new(m,field); 243 else 244 mf = ModLongRing.new(m); 245 end 246 r = ModLong.new(mf,z); 247 end 248 else 249 if field 250 mf = ModIntegerRing.new(m,field); 251 else 252 mf = ModIntegerRing.new(m); 253 end 254 r = ModInteger.new(mf,z); 255 end 256 return RingElem.new(r); 257 end
Create JAS ModInt as ring element.
# File examples/jas.rb 269 def ZMI(m,z=0,field=false) 270 return ZM(m,z,field); 271 end
Create JAS ModLong as ring element.
# File examples/jas.rb 262 def ZML(m,z=0,field=false) 263 return ZM(m,z,field); 264 end
Create JAS BigInteger as ring element.
# File examples/jas.rb 204 def ZZ(z=0) 205 if z.is_a? RingElem 206 z = z.elem; 207 end 208 if z == 0 209 r = Java::EduJasArith::BigInteger.new(); 210 else 211 #puts "z = #{z} : #{z.class} " 212 r = Java::EduJasArith::BigInteger.new(z); 213 end 214 return RingElem.new(r); 215 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. Otherwise, item is returned unchanged.
# File examples/jas.rb 2955 def makeJasArith(item) 2956 #puts "item type(#{item}) = #{item.class}\n"; 2957 if item.is_a? Integer 2958 return BigInteger.new( item ); 2959 end 2960 if item.is_a? Rational 2961 return BigRational.new( item.numerator ).divide( BigRational.new( item.denominator ) ); 2962 end 2963 if item.is_a? Float # ?? what to do ?? 2964 return BigDecimal.new( item.to_s ); 2965 end 2966 if item.is_a? Array 2967 if item.size > 2 2968 puts "len(item) > 2, remaining items ignored\n"; 2969 end 2970 puts "item[0] type(#{item[0]}) = #{item[0].class}\n"; 2971 if item.size > 1 2972 re = makeJasArith( item[0] ); 2973 if not re.isField() 2974 re = BigRational.new( re.val ); 2975 end 2976 im = makeJasArith( item[1] ); 2977 if not im.isField() 2978 im = BigRational.new( im.val ); 2979 end 2980 jasArith = BigComplex.new( re, im ); 2981 else 2982 re = makeJasArith( item[0] ); 2983 if not re.isField() 2984 re = BigRational.new( re.val ); 2985 end 2986 jasArith = BigComplex.new( re ); 2987 end 2988 return jasArith; 2989 end 2990 puts "unknown item type(#{item}) = #{item.class}\n"; 2991 return item; 2992 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 2909 def rbarray2arraylist(list,fac=nil,rec=1) 2910 #puts "list type(#{list}) = #{list.class}\n"; 2911 if list.is_a? Array 2912 ll = ArrayList.new(); 2913 for e in list 2914 t = true; 2915 if e.is_a? RingElem 2916 t = false; 2917 e = e.elem; 2918 end 2919 if e.is_a? Array 2920 if rec <= 1 2921 e = makeJasArith(e); 2922 else 2923 t = false; 2924 e = rbarray2arraylist(e,fac,rec-1); 2925 end 2926 end 2927 begin 2928 #n = e.getClass().getSimpleName(); 2929 if e.is_a? ArrayList 2930 t = false; 2931 end 2932 rescue 2933 #pass; 2934 end 2935 if t and fac != nil 2936 #puts "e.p(#{e}) = #{e.class}, #{fac.toScriptFactory()}\n"; 2937 e = fac.parse( str(e) ); #or makeJasArith(e) ? 2938 end 2939 ll.add(e); 2940 end 2941 list = ll; 2942 end 2943 #puts "list type(#{list}) = #{list.class}\n"; 2944 return list 2945 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