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
2169 def AN(m,z=0,field=false,pr=nil)
2170     if m.is_a? RingElem
2171         m = m.elem;
2172     end
2173     if z.is_a? RingElem
2174         z = z.elem;
2175     end
2176     if z != 0 and ( z == true or z == false )
2177         field = z;
2178         z = 0;
2179     end
2180     #puts "m.getClass() = " + str(m.getClass().getName());
2181     #puts "field = " + str(field);
2182     if m.is_a? AlgebraicNumber
2183         mf = AlgebraicNumberRing.new(m.factory().modul,m.factory().isField());
2184     else
2185         if field
2186             mf = AlgebraicNumberRing.new(m,field);
2187         else
2188             mf = AlgebraicNumberRing.new(m);
2189         end
2190     end
2191     #puts "mf = " + mf.toString();
2192     if z == 0
2193         r = AlgebraicNumber.new(mf);
2194     else
2195         r = AlgebraicNumber.new(mf,z);
2196     end
2197     return RingElem.new(r);
2198 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
2210 def FF(p,n,z=0)
2211     if p.is_a? RingElem
2212         p = p.elem;
2213     end
2214     if n.is_a? RingElem
2215         n = n.elem;
2216     end
2217     if z.is_a? RingElem
2218         z = z.elem;
2219     end
2220     if z.is_a? AlgebraicNumber
2221         z = z.val;
2222         #puts "z = " + z.ring.toScript();
2223     end
2224     if p == 0
2225       raise ArgumentError, "No finite ring."
2226     end
2227     if n == 0
2228       raise ArgumentError, "No finite ring."
2229     end
2230     field = true;
2231     if !PrimeInteger.isPrime(p)
2232       field = false;
2233       #raise ArgumentError, "{p} not prime."
2234     end
2235     mf = $finiteFields[ [p,n] ];
2236     if mf == nil 
2237        cf = GF(p).ring;
2238        mf = PolyUfdUtil.algebraicNumberField(cf,n);
2239        $finiteFields[ [p,n] ] = mf;
2240        #puts "mf = " + mf.toScript();
2241     end
2242     if z == 0
2243         r = AlgebraicNumber.new(mf);
2244     else
2245         r = AlgebraicNumber.new(mf,z);
2246         #puts "r = " + r.toScript();
2247     end
2248     return RingElem.new(r);
2249 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
2444 def LC(ideal,d=0,n=1)
2445     if ideal == nil
2446         raise ArgumentError, "No ideal given."
2447     end
2448     if ideal.is_a? SimIdeal
2449         ideal = Ideal.new(ideal.pset);
2450         #ideal.doGB();
2451     end
2452     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
2453     if ideal.getList().get(0).ring.is_a? LocalRing
2454         lc = LocalRing.new( ideal.getList().get(0).ring.ideal );
2455     else
2456         lc = LocalRing.new(ideal);
2457     end
2458     if d.is_a? Array
2459         if n != 1
2460             puts "#{n} ignored\n";
2461         end
2462         if d.size > 1
2463             n = d[1];
2464         end
2465         d = d[0];
2466     end
2467     if d.is_a? RingElem
2468         d = d.elem;
2469     end
2470     if n.is_a? RingElem
2471         n = n.elem;
2472     end
2473     if d == 0
2474         r = Local.new(lc);
2475     else
2476         if n == 1
2477             r = Local.new(lc,d);
2478         else
2479             r = Local.new(lc,d,n);
2480         end
2481     end
2482     return RingElem.new(r);
2483 end
MPS(cofac,names,truncate=nil,&f) click to toggle source

Create JAS MultiVarPowerSeries as ring element.

     # File examples/jas.rb
5479 def MPS(cofac,names,truncate=nil,&f)
5480     cf = cofac;
5481     if cofac.is_a? RingElem
5482         cf = cofac.elem.factory();
5483     elsif cofac.is_a? Ring
5484         cf = cofac.ring;
5485     end
5486     vars = names;
5487     if vars.is_a? String
5488        vars = GenPolynomialTokenizer.variableList(vars);
5489     end
5490     nv = vars.size;
5491     if truncate.is_a? RingElem
5492         truncate = truncate.elem;
5493     end
5494     if truncate == nil
5495         ps = MultiVarPowerSeriesRing.new(cf,nv,vars);
5496     else
5497         ps = MultiVarPowerSeriesRing.new(cf,nv,vars,truncate);
5498     end
5499     if f == nil
5500         r = ps.getZERO();
5501     else
5502         r = MultiVarPowerSeries.new(ps,MCoeff.new(ps,&f));
5503         #puts "r = " + str(r);
5504     end
5505     return RingElem.new(r);
5506 
5507 end
Mat(cofac,n,m,v=nil) click to toggle source

Create JAS GenMatrix ring element.

     # File examples/jas.rb
5543 def Mat(cofac,n,m,v=nil)
5544     cf = cofac;
5545     if cofac.is_a? RingElem
5546         cf = cofac.elem.factory();
5547     elsif cofac.is_a? Ring
5548         cf = cofac.ring;
5549     end
5550     if n.is_a? RingElem
5551         n = n.elem;
5552     end
5553     if m.is_a? RingElem
5554         m = m.elem;
5555     end
5556     if v.is_a? RingElem
5557         v = v.elem;
5558     end
5559     #puts "cf type(#{cf}) = #{cf.class}";
5560     if v.is_a? Array
5561         v = rbarray2arraylist(v,cf,rec=2);
5562     end
5563     mr = GenMatrixRing.new(cf,n,m);
5564     if v == nil
5565         r = GenMatrix.new(mr);
5566     else
5567         r = GenMatrix.new(mr,v);
5568     end
5569     return RingElem.new(r);
5570 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
5413 def PS(cofac,name,truncate=nil,&f) #=nil,truncate=nil)
5414     cf = cofac;
5415     if cofac.is_a? RingElem
5416         cf = cofac.elem.factory();
5417     end
5418     if cofac.is_a? Ring
5419         cf = cofac.ring;
5420     end
5421     if truncate.is_a? RingElem
5422         truncate = truncate.elem;
5423     end
5424     if truncate == nil
5425         ps = UnivPowerSeriesRing.new(cf,name);
5426     else
5427         ps = UnivPowerSeriesRing.new(cf,truncate,name);
5428     end
5429     #puts "ps type(#{ps}) = #{ps.class}\n";
5430     #puts "f  type(#{f}) = #{f.class}\n";
5431     if f == nil
5432         r = ps.getZERO();
5433     else
5434         #Bug in JRuby 1.5.6? move outside method
5435         r = UnivPowerSeries.new(ps,Coeff.new(cf,&f));
5436     end
5437     return RingElem.new(r);
5438 
5439 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
2413 def RC(ideal,r=0)
2414     if ideal == nil
2415         raise ArgumentError, "No ideal given."
2416     end
2417     if ideal.is_a? SimIdeal
2418         #puts "ideal.pset = " + str(ideal.pset) + "\n";
2419         #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list);
2420         ideal = Ideal.new(ideal.pset);
2421         #ideal.doGB();
2422     end
2423     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
2424     if ideal.getList().get(0).ring.is_a? ResidueRing
2425         rc = ResidueRing.new( ideal.getList().get(0).ring.ideal );
2426     else
2427         rc = ResidueRing.new(ideal);
2428     end
2429     if r.is_a? RingElem
2430         r = r.elem;
2431     end
2432     if r == 0
2433         r = Residue.new(rc);
2434     else
2435         r = Residue.new(rc,r);
2436     end
2437     return RingElem.new(r);
2438 end
RF(pr,d=0,n=1) click to toggle source

Create JAS rational function Quotient as ring element.

     # File examples/jas.rb
2311 def RF(pr,d=0,n=1)
2312     if d.is_a? Array
2313         if n != 1
2314             puts "#{} ignored\n";
2315         end
2316         if d.size > 1
2317             n = d[1];
2318         end
2319         d = d[0];
2320     end
2321     if d.is_a? RingElem
2322         d = d.elem;
2323     end
2324     if n.is_a? RingElem
2325         n = n.elem;
2326     end
2327     if pr.is_a? RingElem
2328         pr = pr.elem;
2329     end
2330     if pr.is_a? Ring
2331         pr = pr.ring;
2332     end
2333     qr = QuotientRing.new(pr);
2334     if d == 0
2335         r = Quotient.new(qr);
2336     else
2337         if n == 1
2338             r = Quotient.new(qr,d);
2339         else
2340             r = Quotient.new(qr,d,n);
2341         end
2342     end
2343     return RingElem.new(r);
2344 end
RR(flist,n=1,r=0) click to toggle source

Create JAS regular ring Product as ring element.

     # File examples/jas.rb
2615 def RR(flist,n=1,r=0)
2616     if not n.is_a? Integer
2617         r = n;
2618         n = 1;
2619     end
2620     if flist == nil
2621         raise ArgumentError, "No list given."
2622     end
2623     if flist.is_a? Array
2624         flist = rbarray2arraylist( flist.map { |x| x.factory() }, rec=1);
2625         ncop = 0;
2626     else
2627         ncop = n;
2628     end
2629     if flist.is_a? RingElem
2630         flist = flist.elem;
2631         flist = flist.factory();
2632         ncop = n;
2633     end
2634     #puts "flist = " + str(flist);
2635     #puts "ncop  = " + str(ncop);
2636     if ncop == 0
2637         pr = ProductRing.new(flist);
2638     else
2639         pr = ProductRing.new(flist,ncop);
2640     end
2641     #puts "r type(#{r}) = #{r.class}\n";
2642     if r.is_a? RingElem
2643         r = r.elem;
2644     end
2645     begin
2646         #puts "r.class() = #{r.class}\n";
2647         if r.is_a? Product
2648             #puts "r.val = #{r.val}\n";
2649             r = r.val;
2650         end
2651     rescue
2652         #pass;
2653     end
2654     #puts "r = " + r.to_s;
2655     if r == 0
2656         r = Product.new(pr);
2657     else
2658         r = Product.new(pr,r);
2659     end
2660     return RingElem.new(r);
2661 end
RealN(m,i,r=0) click to toggle source

Create JAS RealAlgebraicNumber as ring element.

     # File examples/jas.rb
2267 def RealN(m,i,r=0)
2268     if m.is_a? RingElem
2269         m = m.elem;
2270     end
2271     if r.is_a? RingElem
2272         r = r.elem;
2273     end
2274     if i.is_a? Array
2275         il = BigRational.new(i[0]);
2276         ir = BigRational.new(i[1]);
2277         i = Interval.new(il,ir);
2278     end
2279     #puts "m.getClass() = " + m.getClass().getName().to_s;
2280     if m.is_a? RealAlgebraicNumber
2281         mf = RealAlgebraicRing.new(m.factory().algebraic.modul,i);
2282     else
2283         mf = RealAlgebraicRing.new(m,i);
2284     end
2285     if r == 0
2286         rr = RealAlgebraicNumber.new(mf);
2287     else
2288         rr = RealAlgebraicNumber.new(mf,r);
2289     end
2290     return RingElem.new(rr);
2291 end
SLC(ideal,d=0,n=1) click to toggle source

Create JAS polynomial SolvableLocal as ring element.

     # File examples/jas.rb
2520 def SLC(ideal,d=0,n=1)
2521     if ideal == nil
2522         raise ArgumentError, "No ideal given."
2523     end
2524     if ideal.is_a? SolvIdeal
2525         ideal = SolvableIdeal.new(ideal.pset);
2526         #ideal.doGB();
2527     end
2528     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
2529     if ideal.getList().get(0).ring.is_a? SolvableLocalRing
2530         lc = SolvableLocalRing.new( ideal.getList().get(0).ring.ideal );
2531     else
2532         lc = SolvableLocalRing.new(ideal);
2533     end
2534     if d.is_a? Array
2535         if n != 1
2536             puts "#{n} ignored\n";
2537         end
2538         if d.size > 1
2539             n = d[1];
2540         end
2541         d = d[0];
2542     end
2543     if d.is_a? RingElem
2544         d = d.elem;
2545     end
2546     if n.is_a? RingElem
2547         n = n.elem;
2548     end
2549     if d == 0
2550         r = SolvableLocal.new(lc);
2551     else
2552         if n == 1
2553             r = SolvableLocal.new(lc,d);
2554         else
2555             r = SolvableLocal.new(lc,d,n);
2556         end
2557     end
2558     return RingElem.new(r);
2559 end
SLR(ideal,d=0,n=1) click to toggle source

Create JAS polynomial SolvableLocalResidue as ring element.

     # File examples/jas.rb
2565 def SLR(ideal,d=0,n=1)
2566     if ideal == nil
2567         raise ArgumentError, "No ideal given."
2568     end
2569     if ideal.is_a? SolvIdeal
2570         ideal = SolvableIdeal.new(ideal.pset);
2571         #ideal.doGB();
2572     end
2573     cfr = ideal.getList().get(0).ring;
2574     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
2575     if n == true
2576        isfield = true;
2577        n = 1;
2578     end
2579     if cfr.is_a? SolvableLocalResidueRing
2580         lc = SolvableLocalResidueRing.new( cfr.ideal );
2581     else
2582         lc = SolvableLocalResidueRing.new(ideal);
2583     end
2584     if d.is_a? Array
2585         if n != 1
2586             puts "#{n} ignored\n";
2587         end
2588         if d.size > 1
2589             n = d[1];
2590         end
2591         d = d[0];
2592     end
2593     if d.is_a? RingElem
2594         d = d.elem;
2595     end
2596     if n.is_a? RingElem
2597         n = n.elem;
2598     end
2599     if d == 0
2600         r = SolvableLocalResidue.new(lc);
2601     else
2602         if n == 1
2603             r = SolvableLocalResidue.new(lc,d);
2604         else
2605             r = SolvableLocalResidue.new(lc,d,n);
2606         end
2607     end
2608     return RingElem.new(r);
2609 end
SRC(ideal,r=0) click to toggle source

Create JAS polynomial SolvableResidue as ring element.

     # File examples/jas.rb
2489 def SRC(ideal,r=0)
2490     if ideal == nil
2491         raise ArgumentError, "No ideal given."
2492     end
2493     if ideal.is_a? SolvIdeal
2494         #puts "ideal.pset = " + str(ideal.pset) + "\n";
2495         #ideal = Java::EduJasApplication::Ideal.new(ideal.ring,ideal.list);
2496         ideal = SolvableIdeal.new(ideal.pset);
2497         #ideal.doGB();
2498     end
2499     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
2500     if ideal.getList().get(0).ring.is_a? SolvableResidueRing
2501         rc = SolvableResidueRing.new( ideal.getList().get(0).ring.ideal );
2502     else
2503         rc = SolvableResidueRing.new(ideal);
2504     end
2505     if r.is_a? RingElem
2506         r = r.elem;
2507     end
2508     if r == 0
2509         r = SolvableResidue.new(rc);
2510     else
2511         r = SolvableResidue.new(rc,r);
2512     end
2513     return RingElem.new(r);
2514 end
SRF(pr,d=0,n=1) click to toggle source

Create JAS rational function SolvableQuotient as ring element.

     # File examples/jas.rb
2350 def SRF(pr,d=0,n=1)
2351     if d.is_a? Array
2352         if n != 1
2353             puts "#{} ignored\n";
2354         end
2355         if d.size > 1
2356             n = d[1];
2357         end
2358         d = d[0];
2359     end
2360     if d.is_a? RingElem
2361         d = d.elem;
2362     end
2363     if n.is_a? RingElem
2364         n = n.elem;
2365     end
2366     if pr.is_a? RingElem
2367         pr = pr.elem;
2368     end
2369     if pr.is_a? Ring
2370         pr = pr.ring;
2371     end
2372     qr = SolvableQuotientRing.new(pr);
2373     #puts "qr is associative: " + qr.isAssociative().to_s;
2374     #if not qr.isAssociative()
2375     #   puts "warning: qr is not associative";
2376     #end
2377     if d == 0
2378         r = SolvableQuotient.new(qr);
2379     else
2380         if n == 1
2381             r = SolvableQuotient.new(qr,d);
2382         else
2383             r = SolvableQuotient.new(qr,d,n);
2384         end
2385     end
2386     return RingElem.new(r);
2387 end
Vec(cofac,n,v=nil) click to toggle source

Create JAS GenVector ring element.

     # File examples/jas.rb
5518 def Vec(cofac,n,v=nil)
5519     cf = cofac;
5520     if cofac.is_a? RingElem
5521         cf = cofac.elem.factory();
5522     elsif cofac.is_a? Ring
5523         cf = cofac.ring;
5524     end
5525     if n.is_a? RingElem
5526         n = n.elem;
5527     end
5528     if v.is_a? RingElem
5529         v = v.elem;
5530     end
5531     vr = GenVectorModul.new(cf,n);
5532     if v == nil
5533         r = GenVector.new(vr);
5534     else
5535         r = GenVector.new(vr,v);
5536     end
5537     return RingElem.new(r);
5538 end
WRC(ideal,r=0) click to toggle source

Create JAS polynomial WordResidue as ring element.

     # File examples/jas.rb
5967 def WRC(ideal,r=0)
5968     if ideal == nil
5969         raise ArgumentError, "No ideal given."
5970     end
5971     if ideal.is_a? WordPolyIdeal
5972         #puts "ideal = " + str(ideal) + "\n";
5973         #ideal = Java::EduJasApplication::WordIdeal.new(ideal.ring,ideal.list);
5974         ideal = ideal.ideal;
5975         #ideal.doGB();
5976     end
5977     if not ideal.is_a? WordIdeal
5978         raise ArgumentError, "No word ideal given."
5979     end
5980     #puts "ideal.getList().get(0).ring.ideal = #{ideal.getList().get(0).ring.ideal}\n";
5981     if ideal.getList().get(0).ring.is_a? WordResidueRing
5982         rc = WordResidueRing.new( ideal.getList().get(0).ring.ideal );
5983     else
5984         rc = WordResidueRing.new(ideal);
5985     end
5986     if r.is_a? RingElem
5987         r = r.elem;
5988     end
5989     if r == 0
5990         r = WordResidue.new(rc);
5991     else
5992         r = WordResidue.new(rc,r);
5993     end
5994     return RingElem.new(r);
5995 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
2714 def makeJasArith(item)
2715     #puts "item type(#{item}) = #{item.class}\n";
2716     if item.is_a? Integer
2717         return BigInteger.new( item );
2718     end
2719     if item.is_a? Rational
2720         return BigRational.new( item.numerator ).divide( BigRational.new( item.denominator ) );
2721     end
2722     if item.is_a? Float  # ?? what to do ??
2723         return BigDecimal.new( item.to_s );
2724     end
2725     if item.is_a? Array
2726         if item.size > 2
2727             puts "len(item) > 2, remaining items ignored\n";
2728         end
2729         puts "item[0] type(#{item[0]}) = #{item[0].class}\n";
2730         if item.size > 1
2731             re = makeJasArith( item[0] );
2732             if not re.isField()
2733                 re = BigRational.new( re.val );
2734             end
2735             im = makeJasArith( item[1] );
2736             if not im.isField()
2737                 im = BigRational.new( im.val );
2738             end
2739             jasArith = BigComplex.new( re, im );
2740         else
2741             re = makeJasArith( item[0] );
2742             if not re.isField()
2743                 re = BigRational.new( re.val );
2744             end
2745             jasArith = BigComplex.new( re );
2746         end
2747         return jasArith;
2748     end
2749     puts "unknown item type(#{item}) = #{item.class}\n";
2750     return item;
2751 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
2669 def rbarray2arraylist(list,fac=nil,rec=1)
2670     #puts "list type(#{list}) = #{list.class}\n";
2671     if list.is_a? Array
2672        ll = ArrayList.new();
2673        for e in list
2674            t = true;
2675            if e.is_a? RingElem
2676                t = false;
2677                e = e.elem;
2678            end
2679            if e.is_a? Array
2680                if rec <= 1
2681                    e = makeJasArith(e);
2682                else
2683                    t = false;
2684                    e = rbarray2arraylist(e,fac,rec-1);
2685                end
2686            end
2687            begin
2688                #n = e.getClass().getSimpleName();
2689                if e.is_a? ArrayList
2690                    t = false;
2691                end
2692            rescue
2693                #pass;
2694            end
2695            if t and fac != nil
2696                #puts "e.p(#{e}) = #{e.class}\n";
2697                e = fac.parse( str(e) ); #or makeJasArith(e) ?
2698            end
2699            ll.add(e);
2700        end
2701        list = ll;
2702     end
2703     #puts "list type(#{list}) = #{list.class}\n";
2704     return list
2705 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