|\^/| Maple 18 (X86 64 LINUX) ._|\| |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2014 \ MAPLE / All rights reserved. Maple is a trademark of <____ ____> Waterloo Maple Inc. | Type ? for help. [&x, *, +, -, ., <,>, <|>, About, AddCoordinates, ArcLength, BasisFormat, Binormal, Compatibility, ConvertVector, CrossProduct, Curl, Curvature, D, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoordinates, GetNames, GetPVDescription, GetRootPoint, GetSpace, Gradient, Hessian, IsPositionVector, IsRootedVector, IsVectorField, Jacobian, Laplacian, LineInt, MapToBasis, Nabla, Norm, Normalize, PathInt, PlotPositionVector, PlotVector, PositionVector, PrincipalNormal, RadiusOfCurvature, RootedVector, ScalarPotential, SetCoordinateParameters, SetCoordinates, SpaceCurve, SurfaceInt, TNBFrame, Tangent, TangentLine, TangentPlane, TangentVector, Torsion, Vector, VectorField, VectorPotential, VectorSpace, Wronskian, diff, eval, evalVF, int, limit, series] Path set to /dsk/l1/fgb/13379/FGblib/../libfgbunid.so FGb/Maple interface package Version 1.63 JC Faugere (Jean-Charles.Faugere@inria.fr) Type ?FGb for documentation Warning, `n` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `EQUS` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `linear` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `var` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `S` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `par` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `ls` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `myrand1` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `myrand` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `myprime` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `gb` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `rr1` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `DEG` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `boo` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `i` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `NEWVARS` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `LS` is implicitly declared local to procedure `FGbRationalParametrization` Warning, `param` is implicitly declared local to procedure `FGbRationalParametrization` FGbRationalParametrization := proc(EQUATIONS, VARS) local n, EQUS, linear, var, S, par, ls, myrand1, myrand, myprime, gb, rr1, DEG, boo, i, NEWVARS, LS, param; n := nops(VARS); EQUS := expand(EQUATIONS); if indets(VARS) <> indets(EQUS) then print(indets(EQUS) <> indets(VARS)); error "Variables do not match" end if; if n = 1 then error "Univariate Case" end if; if member(1, map(degree, EQUS)) then linear := map(_pol -> if degree(_pol) = 1 then _pol end if, EQUS); var := indets(linear[1])[1]; S := solve(linear[1], var); par, ls := FGbRationalParametrization(subs(var = S, EQUATIONS), remove(member, VARS, [var])); return par, {op(ls), var = S} end if; myrand1 := rand(1 .. 10); myrand := rand(9000 .. 65519); myprime := nextprime(myrand()); gb := FGb:-fgb_gbasis_lm([VectorCalculus:-`+`( add(VectorCalculus:-`*`(myrand(), VARS[i]), i = 1 .. n), myrand()), op(EQUS)], myprime, [], VARS, {"index" = 99886600, "verb" = 0}); if gb[1] <> [1] then printf("\t\n\n Positive dimension \n\n"); error "Positive dimension" end if; gb := FGb:-fgb_gbasis(EQUS, myprime, [], VARS, {"index" = 99886600, "verb" = 0}); if member(1, map(degree, gb)) then FGb:-fgb_gbasis(EQUS, 0, [], VARS, {"index" = 99886600, "verb" = 0}) ; return [1], {}; error "There is a linear polynomial in the Gb" end if; if gb = [1] then return [seq(1, i = 1 .. nops(vars))], {} end if; rr1 := FGb:-fgb_matrixn(subs(VARS[n] = VectorCalculus:-`+`(add( VectorCalculus:-`*`(myrand(), VARS[i]), i = 1 .. VectorCalculus:-`+`(n, -1)), VARS[n]), gb), myprime, VARS, {"index" = 99886600, "verb" = 0}); if 1 <= nops(map(_sqr -> if 1 < _sqr[2] then _sqr[2] end if, (Sqrfree(rr1[nops(rr1)]) mod myprime)[2])) then printf("Non radical case\n", degree(rr1[nops(rr1)]), add( degree(_pol[1]), _pol in (Sqrfree(rr1[nops(rr1)]) mod myprime)[2])); error "Non radical case" end if; DEG := degree(rr1[nops(rr1)]); printf("\n\nDegree is %d\n\n", DEG); boo := false; for i from nops(VARS) by -1 to 1 do NEWVARS := [op(remove(member, VARS, VARS[i .. i])), VARS[i]]; try rr1 := FGb:-fgb_matrixn(gb, myprime, NEWVARS, {"index" = 99886600, "verb" = 0}); if 0 < nops(rr1) then boo := true; break end if catch: end try end do; if boo then LS := {}; if 0 = 0 then param := FGb:-fgb_matrixn(EQUS, 0, NEWVARS, {"index" = 99886600, "verb" = 0}) else param := FGb:-fgb_matrixn(EQUS, 65521, NEWVARS, {"index" = 99886600, "verb" = 0}) end if else printf("\n\nChange of variables requested\n\n"); LS := {VARS[n] = VectorCalculus:-`+`(VARS[n], add(VectorCalculus:-`*`(myrand1(), VARS[i]), i = 1 .. n))}; if 0 = 0 then param := FGb:-fgb_matrixn( map(expand, subs(LS, EQUS)), 0, VARS, {"index" = 99886600, "verb" = 0}) else param := FGb:-fgb_matrixn(map(expand, subs(LS, EQUS)), 65521, VARS, {"index" = 99886600, "verb" = 0}) end if end if; return param, LS end proc MyIsolation := proc(rrform) local newrr, elimvars, othervars, reg, SOLS, vars, DEG; elimvars := indets(rrform[1])[1]; othervars := map(_eqs -> indets(_eqs) minus {elimvars}, rrform[2 .. nops(rrform)]); othervars := map(_v -> _v[1], othervars); DEG := degree(rrform[1]); newrr := [rrform[1], VectorCalculus:-diff(rrform[1], elimvars), [rem( VectorCalculus:-`*`(VectorCalculus:-diff(rrform[1], elimvars), elimvars), rrform[1], elimvars), seq(VectorCalculus:-`-`( VectorCalculus:-`*`( coeff(rrform[i], othervars[VectorCalculus:-`+`(i, -1)], 0), DEG)), i = 2 .. nops(rrform))]]; reg := lcm(op(map(denom, newrr[3])), denom(newrr[2])); newrr := [numer(newrr[1]), expand(VectorCalculus:-`*`(reg, newrr[2])), map(_eqs -> expand(VectorCalculus:-`*`(_eqs, reg)), newrr[3])]; SOLS := fgbrs:-rs_isolate_rur(newrr[1], newrr[2], newrr[3], elimvars, verbose = 0); vars := [elimvars, op(othervars)]; SOLS := map(_point -> [seq(vars[i] = VectorCalculus:-`*`( VectorCalculus:-`+`(_point[i][1], _point[i][2]), 1/2), i = 1 .. nops(vars))], SOLS); return SOLS end proc my_rs_rur_sys := proc( sys::depends(list(polynom(integer, vars))), vars::list(name), v::name := _Z , {constraints := [], fulloutput::boolean := false, noresult::boolean := false, sepvector::list(integer) := [], useblockingerror::boolean := FAIL, verbose::nonnegint := 0}, $) fgbrs:-rs_rur_gb( fgbrs:-rs_gbasis(sys, vars, ':-useblockingerror' = useblockingerror), vars, v, ':-constraints' = constraints, ':-verbose' = verbose, ':-noresult' = noresult, ':-sepvector' = sepvector, ':-fulloutput' = fulloutput, ':-useblockingerror' = useblockingerror) end proc > with(RAG): RAGlib release 3.23 (April 2014) Mohab Safey El Din (Mohab.Safey@lip6.fr) > > st:=time():PointsPerComponents(map(_pol->_pol=0, [-556189256*X1^4+857328500*X1^3*X2-27275058*X1^3*X3+394511118*X1^2*X2^2-201402926*X1^2*X2*X3-241651056*X1^2*X3^2-613334030*X1*X2^3+1016983740*X1*X2^2*X3-1163000250*X1*X2*X3^2+261560706*X1*X3^3+493294302*X2^4-432334336*X2^3*X3+643580023*X2^2*X3^2+306603433*X2*X3^3-193433548*X3^4+1159017900*X1^3-64981246*X1^2*X2-1599148243*X1^2*X3+382221015*X1*X2^2+1354375359*X1*X2*X3+379921503*X1*X3^2+984488621*X2^3+917718194*X2^2*X3+253899606*X2*X3^2-334969634*X3^3-739553476*X1^2+848283298*X1*X2+911984223*X1*X3+484884481*X2^2+87874151*X2*X3-863438690*X3^2+777712570*X1-355307324*X2-1062179106*X3-364471748])):lprint(time()-st): open simulation 1.015 > quit memory used=8.7MB, alloc=40.3MB, time=1.08