/* This is a convenient wrapper for testing examples of the supnorm algorithm */ #include "supnorm.sollya"; #include "sos.sollya"; PRODUCESOS = true; DISPLAYSOSINSTANCES = false; procedure testSupnorm(p, f, I, quality, mode) { var timeTotal, sosInstances, timeSos, sosResultOkay, sosInstancesResult; /* Verbosity settings: we only print timings */ verb[ABSOLUTEINFAUX] = 0; verb[SHOWPOSITIVITY] = 1; verb[FINDPOLYWITHGIVENERROR] = 1; verb[SUPNORMABSOLUTE] = 1; verb[SUPNORMRELATIVENOPOLE] = 1; /* Actual computation */ timeTotal = time(norm = supnorm(p, f, I, quality, mode)); print("Total time : ", floor(timeTotal*1000),"ms"); midpointmode=on!; print("\n"); print("Computed norm: ", norm[0]); if (PRODUCESOS) then { /* Decomposition as a Sum-of-squares */ print("Producing SOS rewrites"); autosimplify = off!; sosInstances = norm[1]; timeSOS = time(sosResult = sos(sosInstances)); sosResultOkay = sosResult[0]; sosInstancesResult = sosResult[1]; autosimplify = on!; if (sosResultOkay) then print("SOS rewriting was successful!") else print("Did not manage to rewrite some polynomial as a sum of squares."); print("Time for SOS : ", floor(timeSOS * 1000), "ms"); if (DISPLAYSOSINSTANCES) then { display = dyadic!; write("SOS instances: ", sosInstancesResult, "\n"); display = default!; }; }; };