module JAS
jruby interface to JAS.
Constants
- CC
complex big rational numbers
- CR
generic complex numbers
- DD
big decimal numbers
big rational numbers
- ZZ
define some shortcuts big integers
Public Instance Methods
Create JAS AlgebraicNumber as ring element.
# File examples/jas.rb 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
Create JAS BigComplex as ring element.
# File examples/jas.rb 329 def CC(re=BigRational.new(),im=BigRational.new()) 330 if re == 0 331 re = BigRational.new(); 332 end 333 if im == 0 334 im = BigRational.new(); 335 end 336 if re.is_a? Array 337 if re[0].is_a? Array 338 if re.size > 1 339 im = QQ( re[1] ); 340 end 341 re = QQ( re[0] ); 342 else 343 re = QQ(re); 344 # re = makeJasArith( re ); 345 end 346 end 347 if im.is_a? Array 348 im = QQ( im ); 349 # im = makeJasArith( im ); 350 end 351 if re.is_a? Numeric 352 re = QQ(re); 353 end 354 if im.is_a? Numeric 355 im = QQ(im); 356 end 357 if re.is_a? RingElem 358 re = re.elem; 359 end 360 if im.is_a? RingElem 361 im = im.elem; 362 end 363 if im.isZERO() 364 if re.isZERO() 365 c = BigComplex.new(); 366 else 367 c = BigComplex.new(re); 368 end 369 else 370 c = BigComplex.new(re,im); 371 end 372 return RingElem.new(c); 373 end
Create JAS generic Complex as ring element.
# File examples/jas.rb 379 def CR(re=BigRational.new(),im=BigRational.new(),ring=nil) 380 if re == 0 381 re = BigRational.new(); 382 end 383 if im == 0 384 im = BigRational.new(); 385 end 386 if re.is_a? Array 387 if re[0].is_a? Array 388 if re.size > 1 389 im = QQ( re[1] ); 390 end 391 re = QQ( re[0] ); 392 else 393 re = QQ(re); 394 # re = makeJasArith( re ); 395 end 396 end 397 if im.is_a? Array 398 im = QQ( im ); 399 # im = makeJasArith( im ); 400 end 401 if re.is_a? RingElem 402 re = re.elem; 403 end 404 if im.is_a? RingElem 405 im = im.elem; 406 end 407 if ring == nil 408 ring = re.factory(); 409 end 410 r = ComplexRing.new(ring); 411 if im.isZERO() 412 if re.isZERO() 413 c = Complex.new(r); 414 else 415 c = Complex.new(r,re); 416 end 417 else 418 c = Complex.new(r,re,im); 419 end 420 return RingElem.new(c); 421 end
Create JAS BigDecimal as ring element.
# File examples/jas.rb 427 def DD(d=0) 428 if d.is_a? RingElem 429 d = d.elem; 430 end 431 if d.is_a? Float 432 d = d.to_s; 433 end 434 #puts "d type(#{d}) = #{d.class}"; 435 if d == 0 436 r = BigDecimal.new(); 437 else 438 r = BigDecimal.new(d); 439 end 440 return RingElem.new(r); 441 end
Create JAS Finite Field element as ring element. FF has p<sup>n</sup> elements.
# File examples/jas.rb 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
Create JAS ModInteger as field element.
# File examples/jas.rb 275 def GF(m,z=0) 276 return ZM(m,z,true); 277 end
Create JAS ModInt as field element.
# File examples/jas.rb 289 def GFI(m,z=0) 290 return ZM(m,z,true); 291 end
Create JAS ModLong as field element.
# File examples/jas.rb 282 def GFL(m,z=0) 283 return ZM(m,z,true); 284 end
Create JAS polynomial Local as ring element.
# File examples/jas.rb 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
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
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
Create JAS BigOctonion as ring element.
# File examples/jas.rb 495 def Oct(ro=0,io=0) 496 cf = BigQuaternionRing.new(); 497 if ro == 0 498 ro = BigQuaternion.new(cf); 499 end 500 if io == 0 501 io = BigQuaternion.new(cf); 502 end 503 if ro.is_a? Array 504 if ro[0].is_a? Array 505 if ro.size > 1 506 io = QQ( ro[1] ); 507 end 508 ro = QQ( ro[0] ); 509 else 510 ro = QQ(ro); 511 # re = makeJasArith( re ); 512 end 513 end 514 if io.is_a? Array 515 io = QQ( io ); 516 # im = makeJasArith( im ); 517 end 518 if ro.is_a? RingElem 519 ro = ro.elem; 520 end 521 if io.is_a? RingElem 522 io = io.elem; 523 end 524 c = BigOctonion.new(ro,io); 525 return RingElem.new(c); 526 end
Create JAS UnivPowerSeries as ring element.
# File examples/jas.rb 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
Create JAS BigRational as ring element.
# File examples/jas.rb 296 def QQ(d=0,n=1) 297 if d.is_a? Rational 298 if n != 1 299 puts "#{n} ignored\n"; 300 end 301 if d.denominator != 1 302 n = d.denominator; 303 end 304 d = d.numerator; 305 end 306 if d.is_a? RingElem 307 d = d.elem; 308 end 309 if n.is_a? RingElem 310 n = n.elem; 311 end 312 if n == 1 313 if d == 0 314 r = BigRational.new(); 315 else 316 r = BigRational.new(d); 317 end 318 else 319 d = BigRational.new(d); 320 n = BigRational.new(n); 321 r = d.divide(n); # BigRational.new(d,n); only for short integers 322 end 323 return RingElem.new(r); 324 end
Create JAS BigQuaternion as ring element.
# File examples/jas.rb 447 def Quat(re=BigRational.new(),im=BigRational.new(),jm=BigRational.new(),km=BigRational.new()) 448 if re == 0 449 re = BigRational.new(); 450 end 451 if im == 0 452 im = BigRational.new(); 453 end 454 if jm == 0 455 jm = BigRational.new(); 456 end 457 if km == 0 458 km = BigRational.new(); 459 end 460 if re.is_a? Numeric 461 re = QQ(re); 462 # re = makeJasArith( re ); 463 end 464 if im.is_a? Numeric 465 im = QQ( im ); 466 end 467 if jm.is_a? Numeric 468 jm = QQ( jm ); 469 end 470 if km.is_a? Numeric 471 kim = QQ( km ); 472 # im = makeJasArith( im ); 473 end 474 if re.is_a? RingElem 475 re = re.elem; 476 end 477 if im.is_a? RingElem 478 im = im.elem; 479 end 480 if jm.is_a? RingElem 481 jm = jm.elem; 482 end 483 if km.is_a? RingElem 484 km = km.elem; 485 end 486 cf = BigQuaternionRing.new(); 487 c = BigQuaternion.new(cf, re,im,jm,km); 488 return RingElem.new(c); 489 end
Create JAS polynomial Residue as ring element.
# File examples/jas.rb 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
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
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
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
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
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
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
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
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
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
Create JAS ModInteger as ring element.
# File examples/jas.rb 220 def ZM(m,z=0,field=false) 221 if m.is_a? RingElem 222 m = m.elem; 223 end 224 if z.is_a? RingElem 225 z = z.elem; 226 end 227 if z != 0 and ( z == true or z == false ) 228 field = z; 229 z = 0; 230 end 231 if m < ModLongRing::MAX_LONG 232 if m < ModIntRing::MAX_INT 233 if field 234 mf = ModIntRing.new(m,field); 235 else 236 mf = ModIntRing.new(m); 237 end 238 r = ModInt.new(mf,z); 239 else 240 if field 241 mf = ModLongRing.new(m,field); 242 else 243 mf = ModLongRing.new(m); 244 end 245 r = ModLong.new(mf,z); 246 end 247 else 248 if field 249 mf = ModIntegerRing.new(m,field); 250 else 251 mf = ModIntegerRing.new(m); 252 end 253 r = ModInteger.new(mf,z); 254 end 255 return RingElem.new(r); 256 end
Create JAS ModInt as ring element.
# File examples/jas.rb 268 def ZMI(m,z=0,field=false) 269 return ZM(m,z,field); 270 end
Create JAS ModLong as ring element.
# File examples/jas.rb 261 def ZML(m,z=0,field=false) 262 return ZM(m,z,field); 263 end
Create JAS BigInteger as ring element.
# File examples/jas.rb 203 def ZZ(z=0) 204 if z.is_a? RingElem 205 z = z.elem; 206 end 207 if z == 0 208 r = Java::EduJasArith::BigInteger.new(); 209 else 210 #puts "z = #{z} : #{z.class} " 211 r = Java::EduJasArith::BigInteger.new(z); 212 end 213 return RingElem.new(r); 214 end
Inject variables for generators in given environment.
# File examples/jas.rb 80 def inject_gens(env) 81 env.class.instance_eval( "attr_accessor :generators;" ) 82 if env.generators == nil 83 env.generators = {}; 84 end 85 #puts "existing generators: " + env.generators.keys().join(", "); 86 redef = [] 87 for i in self.gens() 88 begin 89 ivs = nameFromValue(i); 90 if ivs == nil 91 next 92 end; 93 #puts "string2: #{ivs} = " + ivs.class.to_s; 94 #puts "string3: #{ivs} = " + (env.instance_eval( "#{ivs};" )); 95 if env.generators[ ivs ] != nil 96 #puts "redefining global variable #{ivs}"; 97 redef << ivs; 98 end 99 env.generators[ ivs ] = i; 100 env.instance_eval( "def #{ivs}; @generators[ '#{ivs}' ]; end" ) 101 #puts "def #{ivs}; @generators[ '#{ivs}' ]; end" 102 if self.class.auto_lowervar 103 first = ivs.slice(0,1); 104 if first.count('A-Z') > 0 105 first = first.downcase 106 ivl = first + ivs.slice(1,ivs.length); 107 puts "warning: '" + str(ivs) + "' additionaly renamed to '" + str(ivl) + "' to avoid constant semantics" 108 if env.generators[ ivl ] != nil 109 #puts "redefining global variable #{ivl}"; 110 redef << ivl; 111 end 112 env.instance_eval( "def #{ivl}; @generators[ '#{ivs}' ]; end" ) 113 end 114 end 115 rescue => e 116 #puts "error: #{ivs} = " + i.to_s + ", class = " + i.class.to_s; 117 puts "error: #{ivs} = " + i.to_s + ", e = " + e.to_s; 118 end 119 end 120 puts "globally defined variables: " + env.generators.keys().join(", "); 121 if redef.size > 0 122 puts "WARN: redefined variables: " + redef.join(", "); 123 end 124 end
Construct a jas.arith object.
If item is an ruby array then a BigComplex is constructed. If item is a ruby float then a BigDecimal is constructed.
# File examples/jas.rb 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
Get a meaningful name from a value.
i ist the given value.
# File examples/jas.rb 131 def nameFromValue(i) 132 ivs = i.to_s 133 #puts "string1: #{ivs} = " + ivs.class.to_s; 134 ivs = ivs.gsub(" ",""); 135 ivs = ivs.gsub("\n",""); 136 ivs = ivs.gsub(",",""); 137 ivs = ivs.gsub("(",""); 138 ivs = ivs.gsub(")",""); 139 ivs = ivs.gsub("+",""); 140 #ivs = ivs.gsub("*",""); 141 ivs = ivs.gsub("/","div"); 142 #ivs = ivs.gsub("|","div"); 143 ivs = ivs.gsub("{",""); 144 ivs = ivs.gsub("}",""); 145 ivs = ivs.gsub("[",""); 146 ivs = ivs.gsub("]",""); 147 i = ivs.index("BigO"); 148 if i #and i > 0 149 ivs = ivs[0,i]; 150 #puts "BigO index = #{i}"; 151 end 152 if ivs == "1" 153 ivs = "one" 154 end 155 if ivs[0] == "1"[0] and not ivs.match(/\A[0-9].*/) 156 r = ivs[1,ivs.size-1].to_s; 157 ivs = "one" 158 if r != nil 159 ivs = ivs + r 160 end 161 end 162 #if ivs[0,2] == "0i1"[0,2] or ivs[0,2] == "0I1"[0,2] 163 if ivs == "0i1" or ivs == "0I1" 164 ivs = "i" 165 end 166 #puts "string: #{ivs} of " + i.to_s; 167 if ivs.include?("|") or ivs.match(/\A[0-9].*/) 168 #puts "string2: #{ivs} = " + ivs.class.to_s; 169 ivs = nil 170 end 171 return ivs 172 end
Turn off automatic parallel threads usage.
# File examples/jas.rb 70 def noThreads() 71 puts "nt = ", ComputerThreads.NO_THREADS; 72 ComputerThreads.setNoThreads(); #NO_THREADS = #0; #1; #true; 73 puts "\nnt = ", ComputerThreads.NO_THREADS; 74 puts 75 end
Convert a Ruby array to a Java ArrayList.
If list is a Ruby array, it is converted, else list is left unchanged.
# File examples/jas.rb 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
Configure the log4j system and start logging.
BasicConfigurator from log4j version 1 is no more supported, please use log4j2 configuration.
# File examples/jas.rb 43 def startLog() 44 #puts "BasicConfigurator from log4j version 1 is no more supported, please use log4j2 configuration"; 45 end
Mimic Python str() function.
# File examples/jas.rb 52 def str(s) 53 return s.to_s; 54 end
Terminate the running thread pools.
# File examples/jas.rb 61 def terminate() 62 ComputerThreads.terminate(); 63 end