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

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

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

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

Create JAS ModInteger as field element.

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

Create JAS ModInt as field element.

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

Create JAS ModLong as field element.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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_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.

     # 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
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
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
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