module JAS

jruby interface to JAS.

Constants

CC

complex big rational numbers

CR

generic complex numbers

DD

big decimal numbers

QQ

big rational numbers

ZZ

define some shortcuts big integers

Public Instance Methods

AN(m,z=0,field=false,pr=nil) click to toggle source

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
CC(re=BigRational.new(),im=BigRational.new()) click to toggle source

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
CR(re=BigRational.new(),im=BigRational.new(),ring=nil) click to toggle source

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
DD(d=0) click to toggle source

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
FF(p,n,z=0) click to toggle source

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
GF(m,z=0) click to toggle source

Create JAS ModInteger as field element.

    # File examples/jas.rb
276 def GF(m,z=0)
277     return ZM(m,z,true);
278 end
GFI(m,z=0) click to toggle source

Create JAS ModInt as field element.

    # File examples/jas.rb
290 def GFI(m,z=0)
291     return ZM(m,z,true);
292 end
GFL(m,z=0) click to toggle source

Create JAS ModLong as field element.

    # File examples/jas.rb
283 def GFL(m,z=0)
284     return ZM(m,z,true);
285 end
LC(ideal,d=0,n=1) click to toggle source

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
MPS(cofac,names,truncate=nil,&f) click to toggle source

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
Mat(cofac,n,m,v=nil) click to toggle source

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
Oct(ro=0,io=0) click to toggle source

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
PS(cofac,name,truncate=nil,&f) click to toggle source

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
QQ(d=0,n=1) click to toggle source

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
Quat(re=BigRational.new(),im=BigRational.new(),jm=BigRational.new(),km=BigRational.new()) click to toggle source

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
RC(ideal,r=0) click to toggle source

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
RF(pr,d=0,n=1) click to toggle source

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
RR(flist,n=1,r=0) click to toggle source

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
RealN(m,i,r=0) click to toggle source

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
SLC(ideal,d=0,n=1) click to toggle source

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
SLR(ideal,d=0,n=1) click to toggle source

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
SRC(ideal,r=0) click to toggle source

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
SRF(pr,d=0,n=1) click to toggle source

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
Vec(cofac,n,v=nil) click to toggle source

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
WRC(ideal,r=0) click to toggle source

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
ZM(m,z=0,field=false) click to toggle source

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
ZMI(m,z=0,field=false) click to toggle source

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
ZML(m,z=0,field=false) click to toggle source

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
ZZ(z=0) click to toggle source

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_gens(env) click to toggle source

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
makeJasArith(item) click to toggle source

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
nameFromValue(i) click to toggle source

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
noThreads() click to toggle source

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
rbarray2arraylist(list,fac=nil,rec=1) click to toggle source

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
startLog() click to toggle source

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
str(s) click to toggle source

Mimic Python str() function.

   # File examples/jas.rb
52 def str(s)
53     return s.to_s;
54 end
terminate() click to toggle source

Terminate the running thread pools.

   # File examples/jas.rb
61 def terminate()
62     ComputerThreads.terminate();
63 end